指定領域ですますには

解決


9番  2004-02-11 00:20:19  No: 53153

はじめて書き込みします。よろしくお願いします。

  int cnt = 0;
  char moji[27];
  int p = 0;
  int mojisu;

  printf("文字を入力して下さい=>");
  scanf("%s",moji);

  mojisu = strlen(moji);

  if (mojisu < 27 ){
  }
  else{
    printf("27文字以上入力されました。\n");
  }
上記の様にmoji配列にscanfで文字列を入力し27文字以上だったらエラー表示を出す処理を作っています。
現在の状況で実行すると、27〜32文字を入力する時にはエラー表示が出るのですが、33文字以上になると処理が強制終了されてしまいます。
僕の見解では
  char moji[27];
のさいにメモリ上のmojiの領域が32バイト用意されたので、33バイト以上だと止まってしまうのではないでしょうか?
mojiの領域を増やすことなく、32バイト以上入力されても止まらないようにするにはどうしたら良いでしょうか?


RiSK  2004-02-11 00:40:03  No: 53154

> mojiの領域を増やすことなく、32バイト以上入力されても止まらないようにするにはどうしたら良いでしょうか?

こわいよー。たまたま32バイトまで大丈夫だっただけで、そもそも27バイトを越える入力を受け付ける事に問題があります。

  scanf("%27s",moji);
  moji[26] = '\0';

こんな感じ?


9番  2004-02-11 00:56:02  No: 53155

解決しました。どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加