さて、私は私がここに欠けている何かがあると確信しているが、私はそれが何であるか見当がつかないと私は誰かが私はそれを把握助けることができる願っています。読みの入力()とのprintfと印刷()
私は、コマンドラインから入力して読んでいるとfgetc関数を使用する関数を書いていた()そうします。しかし、機能の表面上の見た目の変化は、それが完全に異なった振る舞いをする原因となります。
これは、main()関数です:
while(1)
{
char* cmd = malloc(sizeof(char) * 80);
printf("Enter command: ");
read_flush(cmd, 80);
printf("%s\n", cmd);
free(cmd);
}
そして、これがread_flushのバージョン()のいずれかです。
int read_flush(char* buffer, int count)
{
int i, c;
for(i = 0; i < count; i++)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
}
return i;
}
この1つは正常に動作します。あなたは入力を入力し、それはそれを吐き出すでしょう。 しかし、この次のバージョンでは、入力を入力する機会をユーザーに与えずに、メインに "Enter command:"を何度も何度も印刷します。
int read_flush(char* buffer, int count)
{
int i, c;
while(i < count)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
i++;
}
return i;
}
fgetc()で微妙なことは何ですか?
Wow、whoops。ええ、そうだった。 – user1227489
特にポインタを使って作業するときは、常に変数を初期化するという習慣を覚えておくとよいでしょう。それはあなたに多くの頭痛を軽減します。 –