プロが教える店舗&オフィスのセキュリティ対策術

C言語についての質問です。
配列の中にひとつずつ数字を入れたいと思っています。
char suuzi[16];
fgets(suuzi, sizeof(suuzi), stdin);

のような感じで読み込ませてるのですが、数字で読み込まれず文字として読み込まれてるみたいです。
数字として配列にひとつずついれるにはどのようにしたらよいかどなたか教えてください。

A 回答 (2件)

16桁の数を要素数16の配列に1つずつ入れたい、と言うことでしょうか?


ループでgetc()を回しながら数値化したらいいんじゃないかなぁ、と言うわけでやっつけですがこんな感じではどうでしょう?

int i, c;
char suuzi[16];

for (i = 0; i < 16; i++)
{
c = getc(stdin);
suuzi[i] = (char)(c - '0');
}


文字の「0」(0x30) を引くことで数値化してます。
# fgetsで取得したあとにatoiとかで数値化しても良いですが、1文字単位ならこっちの方が楽かな、と思った次第です。

なお、入れ物のsuuzi[16]はcharのままにしてありますが、支障がなければintにした方が何かと都合が良いかもしれません。
    • good
    • 0
この回答へのお礼

解決しましたー。
ありがとうございます。
C言語は難しいです。

お礼日時:2008/06/12 14:37

>数字で読み込まれず文字として読み込まれてるみたいです。


fgets() はそういうものですから。

読み込んだ文字列がどのように区切られているか(スペースで区切られていたり、
CSVのようにカンマで区切られていたり)は読み込むデータによるので、
その後、strtok()などで「トークンに分けて」各々の文字列("234"のような)を
strtol() で数値に変換するのが一般的だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
お恥ずかしいとこお見せしました。

お礼日時:2008/06/12 14:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A