への呼び出しfgets()
はおそらく間違っています。
char line[4096];
char student_no[7];
printf(">>\t\tStudent No. (13XXXX): ");
if (fgets(line, sizeof(line), stdin) == 0)
...deal with EOF...
if (sscanf(line, "%6s", line) != 1)
...deal with oddball input...
if (strlen(student_no) != 6 || strncmp(student_no, "13", 2) != 0)
...too short or not starting 13...
必要に応じて、さらに条件を適用できます。たとえば、XXXX は数字にする必要がありますか。その場合、文字列を に変換できますint
。おそらくstrtol()
since を使用すると、変換されていない最初の文字が表示されます。これは、文字列の終端の null にする必要があります。また、10,000 で除算し、結果が 13 であることを確認することで、数値が 13XXXX であることを検証することもできます。また、最初の 6 つの非空白文字の後に続くもの ( に残っているものline
) などを確認することもできます。