0

ユーザーがパイプ「|」を入力するたびに、いくつかの問題が発生します 文字出力がすべて壊れてしまいます。私はすでにバッファを無駄にフラッシュしようとしました。

#include <stdio.h>

int main(int argc, char **argv)
{
    char userInput[2000];
    while(1)
    {
        printf("Please Enter Your Input:");
        scanf("%s", userInput);
        printf("%s\n", userInput);
    }
    return 0;
}
4

1 に答える 1

2

これをデバッグするためにできることがいくつかあります。First - 最初の単語ではなく、入力行全体を読み取ります。これを行う安全な方法はgetline()、入力バッファに対して行が長すぎるかどうかを認識し、調整します (Elchonon Edelson のおかげで更新されました)。

char *myString;
int stringLength;
size_t bufLength=0;
myString = NULL; // let getline() adjust the string
stringLength = getline(&myString, &bufLength, stdin)

次に、入力した行を印刷します。

printf("The line is <<%s>>\n", myString);

<<文字列の開始位置と終了位置を示すためにとを使用していることに注意して>>ください。空白などを参照してください。

最後に、16 進コードを含め、文字列を一度に 1 文字ずつ出力します。

for(ii = 0; ii < stringLength; ii++) {
  char ch;
  ch = myString[ii];
  printf("myString[%d]: character '%c', hex code %02x\n", ii, ch, ch);
}

これは、問題を特定するのに役立ちます。

于 2013-10-16T02:12:54.640 に答える