dポイントプレゼントキャンペーン実施中!

char型の配列(文字列)の各要素ににそれぞれ数字が一つ入れました。
str[0] = '0'
str[1] = '1'

str[5] = '5'

これをfor文を使ってint型変数に入れたい代入するにはどうれればいいですか?

str[0] → dat1
str[1] → dat2
:
str[5] → dat5

A 回答 (4件)

>atoi関数を使って


atoi は、引数に (char *)を受け取りますからchar を渡すのはうまくありません。

dat1=str[0]-'0';
とか
dat[i] = str[i]-'0';
のようにすればいいです。
    • good
    • 0

for文を使うには2段階に分ける必要があります。



for(i=0; i=<5; i++){
int dat[i] = atoi(str[i]);
}

dat1 = dat[0];
dat2 = dat[1];
:
dat5 = dat[5];

といった感じがオーソドックスな手法です.
    • good
    • 1

char型からint型へのキャストが??というよりは


char型配列からint型変数への上手な代入方法はないか?
ということですね。

もともとdat1~dat5を配列で準備しておくのが一番だとは思うのですが、そうできない事情があるんでしょう。

根本的な解決策はないと思うのですが(?)、
int型のポインタ配列を作ってそれがdat1~dat5をさすようにすれば、以降はポインタ配列を使って
for文でint型変数に代入できますが、
結局、始めに
p_Dat[0] = &dat1;
:
が5行必要なわけで、
for文を使ってchar型配列→int型変数が1行でできたとしても意味がないですかね。。

"for文を使って"という部分に対しては、回答になっていると思うのですが、
結局うまい方法はない、というのが結論です。。

この回答への補足

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);
}

本当は全て別の要素を入れたいのですが…

こちらでも調査はしていますが助けてください。><

補足日時:2006/03/04 23:34
    • good
    • 0

実行結果は


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]);
}
}
}
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています