電子書籍の厳選無料作品が豊富!

c言語初心者です。
10文字以上入力すると警告してくれるプログラムを考えています。
一応文字数を制限するにあたりstrlenを使おうとしてるのですが
思ったように機能してくれません。
以下が私の書いたプログラムです。
void main()

{

char name[10]={0};

memset( name, '\0', sizeof(name) );
loop:
puts("*****登録*****");
printf(" 名前 :");
fgets(name,10,stdin);
//バッファクリア**//
if(strchr(name,'\n') == NULL)
{
while(getchar() != '\n');
}

if(strlen(name)>10)
{
puts("<<文字入力数が多すぎです>>");
fgets(name,10,stdin);
//バッファクリア**//
if(strchr(name,'\n') == NULL)
{
while(getchar() != '\n');
}
system("cls");
goto loop;
}
else
{
puts("OK");
}
}
よろしくお願いします。

A 回答 (1件)

入力バッファ name のサイズが足りてない。


10文字入力するなら最低11バイト必要だし、10文字以上検知するためには11文字以上入力出来なきゃ判断のしようが無い。
    • good
    • 0
この回答へのお礼

ありがとうございます。

できました。

お礼日時:2009/12/15 15:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!