atoi関数のこと

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぐー

atoi関数のこと

#1

投稿記事 by ぐー » 14年前

下を実行して、数字を入力するとちゃんと動くのですが、文字を入力しても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;
}

みけCAT

Re:atoi関数のこと

#2

投稿記事 by みけCAT » 14年前

>文字を入力しても0になってしまうんです。
具体的にどんな文字を入力しましたか?

Dixq (管理人)

Re:atoi関数のこと

#3

投稿記事 by Dixq (管理人) » 14年前

どのような実行結果を期待していますか?
文字は数値に変換できませんから0が返ってくるのは正常です。
例えば「a」と入力したら、何の数値に変換されることを期待しています?

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

ぐー

Re:atoi関数のこと

#4

投稿記事 by ぐー » 14年前

すいません、情報不足でした。

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

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

初級者

Re:atoi関数のこと

#5

投稿記事 by 初級者 » 14年前

そういうことです。

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

ぐー

Re:atoi関数のこと

#6

投稿記事 by ぐー » 14年前

そうだったんですか。
丁寧にどうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る