C言語コードレビュー:バッファに残った文字を読み飛ばす。文字数以上の入力がされてもバグりたくない。

テーマ、知りたいこと

記事に載せましたコードのレビューをお願いしたいです。
また改善策などありましたら、コメントのほどお願いします。

ソースコード説明

ソースコードの内容としまして、
入力文字列を上限10文字で受け取るというものです。
入力はgetcharで行います。

10文字以下の入力の場合は、そのままプリントされます。
10文字以上の入力の場合は、10番目以降の文字を読み捨てられる。

バッファに残っていないことを確認するために、scanfを置いておき、
・何もせずに入力を受け取っていたら、バッファに文字が残っており、
・入力待ち状態になったら、バッファに文字が残っていないことがわかるようになっています。

ソースコード

C

1#include <stdio.h>2 3int main(){4 char name[10];5 int c;6 int i;7 int flag = 0;8 9 for(i = 0; i < 10; i++){10 c = getchar();11 12 if(c == '\n'){13 name[i] = '\0';14 break;15 }16 17 name[i] = c;18 19 if(i == 9 && c != '\n'){20 name[i + 1] = '\0';21 flag = 1;22 break;23 }24 }25 26 if(flag == 1){27 name[i] == '\0';28 while(getchar() != '\n');29 }30 31 int num;32 scanf("%d", &num);33 34 printf("%s", name);35 36 return 0;37}

コメントを投稿

0 コメント