c - strtok 和 strncat 错误

标签 c string strtok strcat

我想使用 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/

相关文章:

c - 标记多个字符串 C

编译gcc错误 undefined reference `aes256_init'

c - 下次调用函数后,上次调用的字符串 "remembered"

java - 在 Java 中对插入数组的字符串进行排序

c - C中获取字符串第一个元素的第一个元素

C - 不能将 strcpy 与 strtok 一起使用

c++ - 读取文件时如何将字符串转换为字符数组?

c - 从单链表中删除节点C编程

c - 将 3d 数组发送到 CUDA 内核

objective-c - 使用吗? : to do an assignment produce faster assembly than using if()?