0

我正在尝试编写一个解析函数,该函数调用另一个函数 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]);

但程序返回:

"

(空)
(空)
(空)..."

两个空白换行符,然后是 98(空)。“Hello”和“World”这两个词实际上是否存储在这两个空白换行符中,或者它们实际上没有存储在 **p 中?

4

1 回答 1

0
#define getword(s)  while (*s && *s != ' ') ++s; while (*s == ' ') *s++ = '\0'
于 2014-09-23T11:10:00.133 回答