• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の配列の入れ方について質問です。)

C言語の配列の入れ方について質問です

このQ&Aのポイント
  • C言語で連続した数字を別々の配列に入れる方法について質問です。
  • プログラム内で1234という連続した数字を入力した際に、配列val[0]~[3]にそれぞれ1, 2, 3, 4を入れる方法を教えてください。
  • 具体的な方法やコードの例などを教えていただけると助かります。

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

  • ベストアンサー
回答No.1

#include<stdio.h> int main(void) { char num[10]; int val[4]; int i; printf("式:"); scanf("%s",num); for(i=0;i<4;i++){ val[i] = 0; } for(i=0; i<4; i++){ if((num[i] >= '1') && (num[i] <= '9')){/*1から9の数値が入ったならば*/ val[i] = num[i] - '0'; } } for(i=0; i<4; i++){ printf("答え%d:%d\n",i,val[i]); } return 0; }

dezaemon1120
質問者

補足

ありがとうございます。 なぜval[i] = num[i] - '0';で-0をしなければならないんでしょうか? ご指導お願いします。

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

桁数は4で固定ですか?

dezaemon1120
質問者

補足

一応、4で行ってますが、できれば100にも対応できるようにしたいです。 よろしくお願いします。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>int num[10]; >scanf("%d",num); たまたま上手く動いただけで、num[0]に数値が入るだけですが…そういう意図になっていますか? mun[0]に1桁目、num[1]に2桁目…と入ることを期待されているように見えますが、もちろんそんな動作はしません。 scanf("%d",num);はscanf("%d",&num[0]);と同義ですし、受け取ったscanf()にしてみればはnumが配列なのか、またその個数がいくつあるのかなんて知ったこっちゃありません。 # "%d"で指定された書式の結果を入れて欲しい。というアドレスしか受け取っていないのですから。 val[4]の配列に一桁ずつ…であれば、演算で求まるでしょう。 val[0] = num / 1000; val[1] = (num / 100) - (val[0] * 10); val[2] = (num / 10) - (val[0] * 100) - (val[1] * 10) val[3] = num % 10; とか。

関連するQ&A

専門家に質問してみよう