|
> 文字型配列を扱っているプログラムなのですが、最初にmemsen()で配列内を
> 全て'\0'で初期化します。
この初期化に何か意味があるのでしょうか?
> それから配列にscanf()で入力するのですが、何も入力しない場合にエラーメッ
> セージを表示させて終了するプログラムを作るにはどうしたらいいでしょうか?
> (つまり、scanf()中にEnterを押すと入力待ちではなく終了するプログラムです)
scanf 以外に ungetc を使えばできそうですが、だめですか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void no_input(void)
{
puts("no input");
exit(1);
}
int main(void)
{
char buf[256]; int n;
memset(buf, 0, sizeof buf);
n = scanf("%c", buf);
if (n != 1 || buf[0] == '\n') no_input();
ungetc(buf[0], stdin);
n = scanf("%s", buf);
if (n != 1) no_input();
printf("buf='%s'\n", buf);
return 0;
}
|