다음 코드 예제의 내부 문자열 배열을 수정 간단합니다, 어떻게하면 원하는 결과를 얻을 수 있습니까?은 <code>test1</code>이 문자열을 인쇄하지 않고, 함수
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ELEMENTS 4
void make(char ***array) {
char p2[] = "test1 test2 test3 test4 test5";
char* token = strtok(p2, " ");
int i = 0;
while (token)
{
(*array)[i]= token;
token = strtok(NULL, " ");
i++;
}
printf("%s\n",(*array)[0]);
printf("%s\n",(*array)[1]);
printf("%s\n",(*array)[2]);
printf("%s\n",(*array)[3]);
printf("%s\n",(*array)[4]);
}
int main(int argc, char **argv) {
char **array;
make(&array);
int i;
for (i = 0; i < ELEMENTS; ++i) {
printf("%s\n", array[i]);
}
return 0;
}
이 코드는 오류 또는 경고없이 컴파일 다음과 같은 출력을 생성합니다
test1
test2
test3
test4
test5
yf�
���
내 예상 된 결과가 한 번 make() function
내부에 한번 main() function
을에, test1 - test5
두 번 인쇄 된 것이 었습니다 참고로,이 stackoverflow 두 번째 게시물, 내 첫 번째 질문에서 수정 된 코드입니다 Passing a string array to a function in C
당신은 아직도 당신의 배열이 너무 작하고 있습니다에 할당 된 메모리를 해제 작업을 수 있습니다. –