2016-10-29 2 views

답변

0

사실상 문자열 배열이 필요 없습니다. C에서는 배열을 함수에 보낼 수 없으며 함수에서 배열을 반환 할 수도 없습니다. 해결책? "the"배열의 시작점과 길이를 보낼 수 있습니다. 그러면 수신기 쪽에서 "the"배열을 이해할 수 있습니다. 귀하의 질문에 대해서는 배열의 시작 위치를 첫 번째 인수로, 배열의 길이를 두 번째 인수로 보내야합니다.

+0

혼동을 피하기 위해 I 대신 시작 "의"포인터 "를 사용하려는 단순히 첫 번째 요소의 주소 위치". 그 포인터 대신 0을 보내는 그를 이끌 수 있습니다 :) – SenselessCoder

-1

char *result[]char에 대한 포인터의 배열을 의미합니다. 그러나 질문은 매개 변수 len의 의미는 무엇입니까?

일반적으로 write_file()과 같은 함수를 사용하면이 함수는 문자열을 출력에 쓰고 len 매개 변수는 쓸 문자 수입니다. 같은

char *myStrings[] = { 
    "string 0", 
    "string 1" 
}; 

write_file (myStrings, 0); // passing zero as len as unsure what it is. 

또는 뭔가 :

같은 것을 의미 기능의 모습으로이 기능을 사용하려면

char *myStrings[20]; // array of pointers to chars 
int iLoop; 

for (iLoop = 0; iLoop < 20; iLoop++) { 
    myStrings[iLoop] = malloc(1000); // allocate a large buffer for each string 
    read_string (myStrings[iLoop], 1000); // some made up function to read a string 
} 

write_file (myStrings, 20); 

내가 의심 것은 함수는 실제로 void write_file(char *result, int len)해야하거나이되어야한다고 void write_file(char result[], int len) 그래서 char 배열에 대한 포인터의 배열 (C에서 문자열이 일반적으로 사용되는 방법)을 받아들이는 대신 char 배열에 대한 포인터를 받아 들여야합니다.

따라서 write_file()의 아이디어는 여러 문자열이 아닌 파일에 단일 문자열을 쓰는 것입니다.

0
char result[10]; 
write_file(&(result[0]), 10); 

또는 배열 식별자로서, 동일

char result[10]; 
write_file(result, 10); 

+0

당신을 위해 도움이되었다 대답을 받아 upvote 고려하십시오. – MarianD

관련 문제