char型からint型への変換の仕方

解決


jin  2002-02-26 15:48:43  No: 50083  IP: [192.*.*.*]

初心者なのでくだらない質問かもしれないのですが、
getsで数字を入力してatoiでint型に変換するソースを書きたいのですが、
数字以外の文字列の入力があった場合はその文字列は無視して(break、exit等)
数字の文字列の入力の場合にはint型に変換させたいのですが、
どうすればいいのでしょうか。

できればソースを書いてくれるとわかりやすいのですが、よろしくお願いします。

編集 削除
Kya-  2002-03-03 08:03:16  No: 50084  IP: [192.*.*.*]

こんな感じでしょうか?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void main()
{
  char  buf[10];  // 入力された文字列を格納する変数
  int    num = 0;  // 入力された文字列を数値として保存する変数
  int    flag = 0;  // 入力された文字列が文字列か数値かの判別をする変数
  int    i;      // 入力された文字列分まわす変数

  while( 1 )
  {
    gets( buf );        // 入力された文字列を格納する
    num = strlen(buf);      // 入力された文字列の長さを得る
    // 入力された文字列分ループ
    for( i=0; i<num; i++ )
    {
      if( isalpha(buf[i]) )
      {  // 文字列の中に一文字でも数値以外の文字があった場合
        flag = 1;
      }
    }

    // 全て数値の場合
    if( flag == 0 )
    {
      num = atoi(buf);
      printf("入力された数字は %d です。\n",num);
    }
    // 文字列の中に一文字でも数値以外の文字があった場合
    else
    {
      printf("数字のみを入力してください。\n");
      flag = 0;
    }
  }
}

編集 削除
Kya-  2002-03-03 08:03:54  No: 50085  IP: [192.*.*.*]

タブが効かなかった・・・

編集 削除
jin  2002-03-04 13:02:08  No: 50086  IP: [192.*.*.*]

Kya-さん、有難うございます。
非常にわかり易かったです。

編集 削除