2

我想通过使用 strtok 和 strncat 为每个单词添加字符串“ay”。但似乎在我找不到的地方发生了冲突。它只给了我输出的第一个单词“Computeray”。帮助?

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "Computer science is hard";
    char* Token;
    char* work = "ay";
    Token = strtok(str, " ");

    while (Token != NULL)
    {
        strncat(Token, work, 2);
        printf("%s", Token);
        Token = strtok(NULL, " ");
    }
    return 0;
}
4

1 回答 1

3

您正在修改字符串(使用strcat)并期望strtok仍能正常运行 - 这是行不通的。而不是使用strcat,只需单独打印"ay"

while (Token != NULL)
{
    printf("%say ", Token);
    Token = strtok(NULL, " ");
}

即使它以您想要的方式工作,您也会在此过程中覆盖大量输入。可能不是你想要的——如果你需要建立一个全新的字符串,你应该在一个新的缓冲区中做,而不是覆盖输入。

于 2013-02-27T21:45:21.373 回答