特定の文字列を単語に分割する別の関数 getword() を呼び出す解析関数を作成しようとしています。getword() を呼び出すと、getword に指定された文字列が、スペースで区切られた次の単語に進みます。
void parse(char *s, char **p) {
int i = 0;
while(*s != -1 && *s != '&' && *s != '\n' && *s != ';' && *s != '\0') {
p[i] = s;
i++;
getword(s);
}
}
呼び出しプログラムを実行した後、配列 p の char ポインターが指す文字列を出力したいと考えています。これはまったく可能ですか?
私は試した :
printf("%s\n", (**p));
呼び出しプログラムでは、「(null)」のみが出力されます。
編集:
文字列「Hello World」を入力した後、次のループを使用しようとしました。
for(i=0; i< MAXITEM; i++)
printf("%s\n", p[i]);
しかし、プログラムは次のように返します。
"
(ヌル)
(ヌル)
(ヌル)...」
2 つの空白の改行と 98 (null) の改行。「Hello」と「World」という単語は実際にこれらの 2 つの空白の改行に格納されていますか、それとも実際には **p に格納されていませんか?