2

このコードをデバッグモードで実行する場合:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    printf("Values entered: %d %d %d\n", a, b, c);
    return EXIT_SUCCESS;
}

プログラムはユーザー入力を要求せず、出力するだけです。

入力された値:18 78 2130026496

4

2 に答える 2

3

問題は、実行前に次の行にGDB書き込んだことが原因のようです。stdinscanf

18-list-thread-groups--available

そしてscanf("%d%d%d", &a, &b, &c);、その行をユーザー入力を待つのではなく、intとして解釈していました。

stdin私が使用している現在の解決策は、プログラムの開始時に以下を使用してクリアすることです。

int ch;
while ((ch = getchar()) != '\n' && ch != EOF);

それが一種のハックであることは知っていますが、1時間以上かけて解決策を探しましたが、見つかりませんでした。これが誰かに役立つことを願っています。

于 2012-08-26T00:13:59.937 に答える