次のコード例では、文字列を出力しませ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
2 回印刷されることでしmake() function
た。main() function
補足として、これはstackoverflowへの2回目の投稿にすぎません。これは、最初の質問Passing a string array to a function in Cから変更されたコードです