以下代码示例不打印字符串test1
-test5
包含array
在main() function
但是它在内部工作make() function
我确信答案很简单,我将如何产生预期的结果?
#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�
���
我的预期结果是test1 - test5
打印了两次,一次在里面,make() function
一次在里面main() function
作为旁注,这只是我对stackoverflow的第二篇文章,这是我的第一个问题Passing a string array to a function in C中的修改代码