下面的代碼示例內部字符串數組,不打印test1
琴絃 - 包含在array
在main() function
修改功能
test5
但它的作品裏面的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
您仍在使您的陣列太小。 – 2013-04-05 15:26:59