ページ 11

利用は初めてなんですが どうしでもエラー表示がうまくできません

Posted: 2008年2月10日(日) 16:36
by 初心者
問題は~~~scanf関数を利用して、文字列を10回入力し、最もおおきな文字列を表示する
*未入力の比較はstrcmpを使用し
*未入力の場合はエラーとし、もう一度入力するようにする事。
よろしくお願いします

ソース

#include <stdio.h>
#include <string.h>
#define MAXN 10


void main(void) {
char str[100];
int i;
char max[256];
for(i=0; i<MAXN; i++)
{
Loop:
printf("文字列入力:\n");
scanf("%s",&str);
if (strlen(str)==0)
{
printf("入力エラー");
goto Loop;
}
if (strcmp(max,str)<0 )
{
strcpy(max,str);
}
}
printf("%s\n",max);
}

Re:利用は初めてなんですが どうしでもエラー表示がうまくできません

Posted: 2008年2月10日(日) 17:29
by 組木紙織
最初はmaxには何が入っていますか?

問題文で気になることが、

>最もおおきな文字列を表示する
 最も大きな文字列とはどのような文字列ですか?
 strcmpを使っているということは辞書順を想定してあると思いますが。

>*未入力の比較はstrcmpを使用し
 未入力の比較とあるのですが、未入力と比較する必要はあるのですか?

あと、好みの問題に近いですが、gotoはできるだけ利用しないほうが良い、というのが
最近のプログラミングの常識となっています。


最後に、一つの文字列がchar[100]を超えるような場合はどうなりますか?
といった問題もあります。