• ベストアンサー

fgetsで配列に数字を入れる。

C言語についての質問です。 配列の中にひとつずつ数字を入れたいと思っています。 char suuzi[16]; fgets(suuzi, sizeof(suuzi), stdin); のような感じで読み込ませてるのですが、数字で読み込まれず文字として読み込まれてるみたいです。 数字として配列にひとつずついれるにはどのようにしたらよいかどなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.1

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にした方が何かと都合が良いかもしれません。

daisen1222
質問者

お礼

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

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

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

daisen1222
質問者

お礼

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

関連するQ&A

専門家に質問してみよう