我想使用 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;
}
最佳答案
您正在修改字符串(使用 strcat
)并期望 strtok
仍然正常工作 - 这是行不通的。不使用 strcat
,只需单独打印 "ay"
:
while (Token != NULL)
{
printf("%say ", Token);
Token = strtok(NULL, " ");
}
即使它按照您希望的方式工作,您也会在此过程中覆盖大量输入。可能不是您想要的 - 如果您需要构建一个全新的字符串,您应该将其放入新的缓冲区中,而不是覆盖输入。
关于c - strtok 和 strncat 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122990/