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 に答える