我正在嘗試編寫一個調用另一個函數getword()的分析函數,它將給定的字符串分解爲單詞。調用getword()會將給予getword的字符串提前到由空格分隔的下一個單詞。有沒有辦法打印字符串指針指向C中的數組?
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中字符指針指向的字符串。這是可能嗎?
我想:
printf("%s\n", (**p));
在調用程序,但只打印出 「(空)」。
編輯:
我嘗試使用下面的循環輸入字符串 「Hello World」 之後:
for(i=0; i< MAXITEM; i++)
printf("%s\n", p[i]);
但程序返回:
「
( null)
(null)
(null)...「
兩個空白換行符然後是98(空)的。單詞「你好」和「世界」實際上是存儲在這兩個空白的換行符中,還是實際上沒有存儲在** p中?
是的,這是可能的。寫一個循環。 –
所以你有一個字符串像''foo \ nbar&baz「',你想把它變成'{」foo「,」bar「,」baz「}?試試'strtok_r()'。我不明白你爲什麼要檢查當前字符對'-1'。 – 2013-10-13 05:03:05
@ n.m。我添加了一個for循環來循環和打印元素,但是當在提示符下輸入「Hello World」時,它會返回2個換行符,然後返回98(空)。 (MAXITEM = 100)是p [0] =「你好」和p [1] =「世界」還是他們都持有空白? – trawww