ページ 11

atoi関数のこと

Posted: 2010年11月09日(火) 18:03
by ぐー
下を実行して、数字を入力するとちゃんと動くのですが、文字を入力しても0になってしまうんです。
char型なので、文字もいけると思うのですが、何故動かないんでしょうか?
(ちなみに本にも文字列を入れると動かないとありました)

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char num_str[20];
int val;
printf("数字を入力してください ");
scanf("%19s", num_str);
val = atoi(num_str);
printf("入力文字列は %s で、数値は %d です \n",
num_str, val);
return 0;
}

Re:atoi関数のこと

Posted: 2010年11月09日(火) 18:17
by みけCAT
>文字を入力しても0になってしまうんです。
具体的にどんな文字を入力しましたか?

Re:atoi関数のこと

Posted: 2010年11月09日(火) 18:27
by Dixq (管理人)
どのような実行結果を期待していますか?
文字は数値に変換できませんから0が返ってくるのは正常です。
例えば「a」と入力したら、何の数値に変換されることを期待しています?

文字が入力される可能性があり、エラー処理をする時は
http://www9.plala.or.jp/sgwr-t/lib/strtol.html
こちらの関数を使用して下さい。

Re:atoi関数のこと

Posted: 2010年11月09日(火) 19:39
by ぐー
すいません、情報不足でした。

「abc」と入れたらそれに対応する文字コードが出てくると思ったんです。
数字の場合は出て、説明文の中にアルファベットも対応して出てくる、という記述があったのですが、別の項目で「Hello」では出ないと書かれていて、わからなくなったんです。

という事は、数字の文字列のみ変換できるもので、アルファベットは出来ないものなんですか?

Re:atoi関数のこと

Posted: 2010年11月09日(火) 19:46
by 初級者
そういうことです。

なお、
123abc45
なんていう入力を与えると、数値に変換できたところまでの
結果(百二十三)を返すことでしょう。

Re:atoi関数のこと

Posted: 2010年11月09日(火) 20:48
by ぐー
そうだったんですか。
丁寧にどうもありがとうございました。