• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:下のコードの修正をお願いします。)

C言語のプログラムで入力数が上限の桁数をオーバーした場合のエラー処理の修正

このQ&Aのポイント
  • C言語のプログラムで、入力数が上限の桁数をオーバーした場合に正常処理で最大値が出力されてしまう問題があります。
  • 現在のプログラムでは、サブ関数でのエラー処理がmain関数で実行されていないため、エラーが表示されない状態です。
  • 修正方法としては、サブ関数でエラーチェックを行い、エラーがある場合はエラーメッセージを表示するようにします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> a_len = strlen(a) ; > b_len = strlen(b) ; > c_len = strlen(c) ; としてから > sscanf(input , "%[^,], %[^,], %s" , a , b , c) ; としたのでは、このsscanfで代入されたa,b,cの長さにはならないですよね? strlenの前に、a,b,cの文字列をゼロクリアしているので、a_len,b_len,c_lenは0です。よって > if(a_len > LIMIT || b_len > LIMIT || c_len > LIMIT) > { > disp_error(a_len , b_len , c_len) ; > } このif文の条件は真にはなりません。 他はゴチャゴチャしすぎで、ちょっと読む気がしないので気付いたとこだけ > if(a[0] != NULLB && b[0] != NULLB && c[0] != NULLB) から >number_c = strtol(c , NULL , 10) ; までの処理、 > sscanf(input , "%[^,], %[^,], %s" , a , b , c) ; の書式と戻り値を活用すれば、もっと簡単にかけるはずです。

ytytowngogo
質問者

お礼

すいません、おかげでできました。 ありがとうございます。 確かに、戻り値を活用した方がいいかもしれません。 整理してみることにします。

関連するQ&A