• 締切済み

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

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

  • nVIDIA
  • お礼率46% (520/1121)

みんなの回答

  • 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

  • char型のポインタ配列に変数の値の代入できる?

    c言語でchar型のポインタ配列に変数の値を代入できるのでしょうか? 例えば int A[10]={1,2,3,4,5,6,7,8,9,10}; char *C[10]; のCに配列Aの中のデータを文字列として入れたいのです。 C[0]="A[0]"としてもA[0]という文字列が代入されてしまうだけなので… よろしくお願いします。

  • char型にint型の数値を代入する。

    たとえば、 int num; char box;  numに何らかの整数値が入っているときに、そのnumの中に入っている値をchar型に文字列として代入したいときはどのようにすればいいのでしょうか?

  • c言語 int型の数字をchar型の配列に

    c言語についてです。 int型の数字をchar型の配列に入れたいです。 関数に対してint型の数字を文字列として渡し、 関数内でchar型の配列に格納したいです。 例として、 a(char a[]){  ~~  ~~ } int main(void){ int x = 5678;  ~~  a(x); } とできるようにしたいです。 しかしこれだと5678という値がそのままchar型の一つの配列に入る?ため正しくないです。 欲しい結果としてはちゃんとa関数内で、 a[1] = '5' a[2] = '6' a[3] = '7' a[4] = '8' となってほしいです。 もともと渡す値が”5678”となっていれば結果は正しく出るのですが、 渡す値がint型と決まっているためどうにかして5678を”5678”とすればいいのではないかと考えています。 つまり5678を単純に文字列に変換すればいいのでしょうか? またプログラム内ではsprintfやatolを使用しないで実現させたいです。 難しいかもしれませんがお願いします。 なんだか説明が下手ですみません。 お願いいたします。

  • int型のchar型への代入について

    VC++6.0のfgetcのヘルプに以下のようなコードが有りました。 int型のchをcharのbuffer[i]に代入するということに違和感を感じたのですが、 1.このようにする必要性とは何なのでしょうか? 2.このような代入により具体的には何が行われているのでしょうか? 3.そもそも1文字とりだすfgetcの戻り値がcharでなくintなのはなぜ? 質問が漠然としていて申し訳ありませんが、お願いします。  FILE *stream; char buffer[81]; int ch; 省略   stream = fopen( "fgetc.c", "r" )) 省略 ch = fgetc( stream ); 省略 buffer[i] = ch;

  • char形配列の整数を抜き出したい

    char str="今週,23位"; int a; という配列の数字の部分(23)を抜き出してaに放り込みたいのですが、便利な関数とかあれば教えて頂けないでしょうか。お願いします。 

  • int型変数をchar型変数に格納する方法

    int型数値をchar型変数に格納したいのですが、 sprintf()とatoi()を用いてやりましたが、 うまくいきません。 考えたコードを下記します。 int get_y(){ int y=2005; return y; } int main(){ char year; char str[5]; //intをcharに変換して格納している sprintf(str,"%d",get_y()); //数値として代入 year=atoi(str); //yearには2005が格納されていない! cout<<year<<endl; char ans; //このchar型変数に数値を代入する。 ans=year; cout<<ans<<endl; return 0; } お手数をお掛けしますが、 よろしくお願い致します。

  • 配列で混乱しています

    c言語を勉強中のものです。文字列を配列で扱う場合とポインタで扱う場合の違いにこんらんしています。 たとえば char str[] = "hello"; str = "goodby"; のように文字列の再格納はダメですが、 char *str = "helllo"; str = "goodby" は大丈夫です。 また char[100]; scanf("%s",str) は大丈夫ですが char *str; scanf("%s",str) はいけません。この2つの違いは何によるのでしょうか? またポインタはそもそも int a; int *pa; pa = &a; のように、宣言したあとはアドレスを入れる専用のハコのように考えていたのですが、 char *str = "helllo"; str = "goodby" のようにいきなりアドレスでない文字列を代入するのも納得がいきません。誰か解説をお願いします。

  • メモリ上に配置されていないバイト配列を代入

    memcpyでメモリ上に配置されていないバイト配列を代入する方法を教えて下さい。 #include<iostream.h> int main() { char str[3]; memcpy(str,"aa",3); printf("%s",str); return 0; } これは分かるんですが、バイト配列では"aa"のところに何を書けばいいんですか? memcpy(str, (char *){0x61,0x61,0x0}, 3);ではコンパイルできませんでした。 str[0]=0x61;のように1つずつなら代入できるんですが、配列ごとの方法が分かりません。

  • プログラミングの問題なのですが、

    プログラミングの問題なのですが、 文字列[black]と[dog]を異なった2つの配列に初期化して与え、 別の配列をさらに定義、その中に1つの文字列 [blackdog]として データを代入⇒表示する(出力例: black + dog = blackdog) というプログラムはどんなのになるか教えて下さい。 ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 始めは char str1[6]={'black'}; char str2[4]={'dog'}; char str3[9]; int i, ……; という感じでお願いします。

  • char型全角数字から、int型半角数字への変換方法

    char型全角数字から、int型半角数字への変換するためには どのような方法があるのかを探しています。 同カテゴリ内でも色々と検索を掛けて見たのですが 適当なものが見当たらなかったため、質問させていただきます。 chara kazu[]="8";(全角数字) を int kazu2=8;(半角数字) に変換するためにはどうすればよいでしょうか? 変数に代入してfor文で使用が目的です。 宜しくお願い致します。

専門家に質問してみよう