【问题标题】:strtok and strncat errorstrtok 和 strncat 错误
【发布时间】:2013-02-13 21:40:57
【问题描述】:

我想通过使用 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;
}

【问题讨论】:

    标签: c string strtok strcat


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。但是,如何在不使用 strncat/strcat 的情况下在每个单词的末尾打印“ay”呢?
    • @ProgrammingNerd Carl 提供了一个很好的例子,printf("%say ", Token)。
    • @cnicutar 哦,nvm 没有先发现它。谢谢你
    猜你喜欢
    • 2011-08-16
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多