구조체 함수를 실행후 리턴 했을때 값이 저장되어있지 않습니다.
시윤
질문 제목 :command에 예를들어 find add 를 쳤을 시 add 값을 구조체 인자로 받아 사용하는 함수를 만들었습니다. 근데 메인함수에서 함수를 불러낸 다음, 그 구조체의 인자로 값이 들어와 있지 않습니다.. 빨간색 줄 친부분을 예로서 실행한 부분입니다. 함수 안에서는 값이 제대로 출력되어집니다.
이렇게 되는 이유에 대해서도 설명해 주시면 감사하겠습니다...
질문 내용 :
#include stdio.h
#include stdlib.h
#include string.htypedef struct com_data{ // command관련 구조체
int linenum; // 라인번호
char *str1; // 첫번째 문자열
char *str2; // 두번째 문자열
} com_data;com_data* input_data(com_data *input); // command 명령어 파싱작업int main()
{
com_data* input = (com_data*)malloc(sizeof(com_data));input_data(input); // 입력창을 불러내어 find add를 쳤을 때, input-str1 의 값은 add가 되어서 return되어집니다.printf(word:%s \n,input-str1); // %s 값이 공백으로 나옵니다..
}
com_data* input_data(com_data *input)
{
char str[100];
char *token,*inputtoken; printf(명령 입력 );
fgets(str,sizeof(str),stdin);
token = strtok(str, );
inputtoken = token;
if(strcmp(token,find) == 0){
token = strtok(null, );
input-str1 = token; // find 이후에 오는 문자열을 str1에 저장
return input;
}
if(strcmp(token,replace) == 0){
token = strtok(null, ); if(strcmp(token,at) == 0){
token = strtok(null, );
input-linenum = atoi(token); // replace at 다음 오는 문자형 숫자를 숫자형으로 바꾸어서 linenum에 저장
token = strtok(null, );
input-str1 = token; // 첫번째 문자열을 str1에 저장
token = strtok(null, );
input-str2 = token; // 두번째 문자열을 str2에 저장
return input;
} if(strcmp(token,all) == 0){
token = strtok(null, );
input-str1 = token;
token = strtok(null, );
input-str2 = token;
return input;
}
}
if(strcmp(token,sort) == 0){
token = strtok(null, );
input-str1 = token; // sort 다음 문자열을 str1에 저장(파일이름)
return input;
}
return;
}
-
파라미 2026-05-24
com_data* input = (com_data*)malloc(sizeof(com_data)); 에서 input자체를 포인터로 지정한것같은데.. 제가 잘못 알고 사용하고있는건지..
main 함수에서 input = input_data(input); 로 받아도 같은 결과더라구요.. -
두빛나래 2026-05-24
음...코드 자세히 보지않았는데
일단 data함수에 입력을 그냥 input으로.주면 call by value 되지 않나요?
그리고 return 하셔도 main함수에서 그 리턴값 받는 변수가 없는 것 같아요
| 번호 | 제 목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 2752085 | 문자열을 랜덤하게 출력해서 대체,삽입,삭제 횟수를 각가 표시하고 그걸 표 형태로 출력 | 슬아s | 2026-10-20 |
| 2752056 | 포인터 && 배열 질문요~ (2) | 해찬나래 | 2026-10-20 |
| 2752031 | x^n 구하는 코드 짜봤는데 값이 틀려요 ㅠㅠ | 세실 | 2026-10-20 |
| 2752000 | 나 정말 미치겠어요..ㅠㅜ (4) | 다이 | 2026-10-20 |
| 2751978 | 문자열 질문이요.. | 초시계 | 2026-10-19 |
| 2751945 | 숫자 맞추는 프로그램이요 ㅠㅠ (1) | 동은 | 2026-10-19 |
| 2751917 | C언어 이중 연결 관련 질문합니다. | 유우 | 2026-10-19 |
| 2751888 | return의 정확한 의미좀 알려주세요 (3) | 올해1살 | 2026-10-19 |
| 2751857 | 포인터 배열 (2) | 터큰 | 2026-10-18 |
| 2751831 | 연산자? 질문입니다 (2) | 진주 | 2026-10-18 |
| 2751800 | C언어 기초질문입니다.. (3) | 핫블랙 | 2026-10-18 |
| 2751739 | 파일 출력을 구조체로 받을 때, 파일의 끝을 판별하는 방법을 알려주세요. (2) | 얼 | 2026-10-17 |
| 2751715 | unresolved external symbol 에러... | 이룩 | 2026-10-17 |
| 2751686 | 변수 설정에 관한 질문입니다. | 꽃달 | 2026-10-17 |
| 2751655 | 자료구조 연습문제 | 한무릎 | 2026-10-17 |
| 2751631 | gets 함수 질문이요. (4) | 해늘 | 2026-10-16 |
| 2751553 | 퀵정렬 소스인데 주석좀 달아주세요 (1) | 싴흐한세여니 | 2026-10-16 |
| 2751528 | 저기 이거하는법좀 질문.. (2) | 가람슬기 | 2026-10-15 |
| 2751445 | 도저히 풀 수가 없네요.... (2) | 신당 | 2026-10-15 |
| 2751412 | 어제부터 계속 해도.........안되는.... (1) | 족장 | 2026-10-14 |
