使用しないでくださいscanf
。を使用fgets
して入力行をとして取得すると、文字としてchar*
個々の数字を引き出して、自分char*
で数字に変換できint
ます。scanf("%d", ...)
ユーザーが数字として解析できない入力を入力すると、問題が発生します。
char *inputLine = malloc(sizeof(char) * (MAX_DIGITS + 1);
fgets(inputLine, MAX_DIGITS, stdin); // or replace stdin with a FILE *
fgets
改行までの入力行全体を消費するか、引数2で指定された文字数で停止します。
数字ごとに読み続けたい場合は、を使用getchar()
して個々の文字を読み取るかfgetc(FILE *)
、ファイルから個々の文字を読み取ります。
char *inputLine = malloc(sizof(char) * (MAX_DIGITS + 1));
char ch = getchar();
int i = 0;
while ((ch != '\n') && (ch != EOF) && (i < MAX_DIGITS))
{
inputLine[i++] = ch;
ch = getchar();
}