• 締切済み

char型配列をint型に代入するには

char型の配列(文字列)の各要素ににそれぞれ数字が一つ入れました。 str[0] = '0' str[1] = '1' : str[5] = '5' これをfor文を使ってint型変数に入れたい代入するにはどうれればいいですか? str[0] → dat1 str[1] → dat2 : str[5] → dat5

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>atoi関数を使って atoi は、引数に (char *)を受け取りますからchar を渡すのはうまくありません。 dat1=str[0]-'0'; とか dat[i] = str[i]-'0'; のようにすればいいです。

すると、全ての回答が全文表示されます。
  • TRICKS
  • ベストアンサー率20% (1/5)
回答No.3

for文を使うには2段階に分ける必要があります。 for(i=0; i=<5; i++){ int dat[i] = atoi(str[i]); } dat1 = dat[0]; dat2 = dat[1]; : dat5 = dat[5]; といった感じがオーソドックスな手法です.

すると、全ての回答が全文表示されます。
  • sire
  • ベストアンサー率62% (22/35)
回答No.2

char型からint型へのキャストが??というよりは char型配列からint型変数への上手な代入方法はないか? ということですね。 もともとdat1~dat5を配列で準備しておくのが一番だとは思うのですが、そうできない事情があるんでしょう。 根本的な解決策はないと思うのですが(?)、 int型のポインタ配列を作ってそれがdat1~dat5をさすようにすれば、以降はポインタ配列を使って for文でint型変数に代入できますが、 結局、始めに p_Dat[0] = &dat1; : が5行必要なわけで、 for文を使ってchar型配列→int型変数が1行でできたとしても意味がないですかね。。 "for文を使って"という部分に対しては、回答になっていると思うのですが、 結局うまい方法はない、というのが結論です。。

nVIDIA
質問者

補足

atoi関数を使ってint型配列からchar型配列に使用としたのですがうまく受け付けてくれません。つまり… int i; int dat[10]; char str[10]; for(i=0; i<10 ; i++){ dat[i] = atoi(str[i]); //文法エラーとなる }atoi関数でint文に変換しようと考えてみましたが、 char 以下でやると文法エラーにはなりませんが配列datすべてに配列str[0]の要素が代入されてしまいます。 for(i=0; i<10 ; i++){ dat[i] = atoi(str); } 本当は全て別の要素を入れたいのですが… こちらでも調査はしていますが助けてください。><

すると、全ての回答が全文表示されます。
  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.1

実行結果は C:\java>java StrHello 48 49 50 51 52 となります。参考になりましたか? class StrHello { public static void main(String args[]){ char[] str ={ '0', '1', '2', '3', '4', '5'}; for(int i = 0; i < 5;i++){ System.out.println((int)str[i]); } } }

すると、全ての回答が全文表示されます。

関連するQ&A