• ベストアンサー

double型の値を、一桁ずつint型に格納したい

Trick--o--の回答

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.3

atoi()は「文字列」を数値に変える関数です。 この場合したいことは「文字」を数値に変えることですから、使えません。 char c = '1'; int n = 1; printf("%d %d\n",(int)c,n); がヒントになるかと思います。

penkoko
質問者

お礼

丁寧にありがとうございます。 キャストですね。わかりました。

関連するQ&A

  • 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 main(int argc, char* argv[]) についての質問

    こんにちは.つね日ごろ思っている質問させてください. Cの参考書には, (1) void main(void) { } (2) int main(int argc, char* argv[]) { return 0; } の2つのパターンが記載されていますが, どういう違いがあるのでしょうか? (1)の場合main関数は,型を持たず,引数も持たない. ※Turbo Cなどのコンパイラーでは, return文がないと警告出ます. (2)の場合は,int 型をかえし,引数はint型 変数と char型ポインタ配列(?) を指定している. といったくらいしか分かりません. (2)に関してもう少し述べれば, コマンドラインからファイルを指定し,実行することが できると勉強した記憶があるのですが, 理解があいまいです. 特に(2)の場合のmain関数の意味と,その使い方について アドバイスお願い致します.

  • C言語のint型の配列が分かりません

    #include<stdio.h> int main(void) { int str[ ]={0,1,2} printf("%s\n", str); return 0; } というプログラムをC言語でつくってみましたが動きません.(012と表示されて欲しかったのですが) int str[ ]={1,2,3}の部分をchar str[ ]={'0','1','2'}とすれば動きます. そこで質問なのですが, printf("~%s~", (配列名));  はchar型の配列にしか適応できないのですか? ※追記 puts関数の定義は int puts (const char *str); であるそうなので char型の仮引数にはchar型のアドレスを渡さなければいけません. ではprintf関数の定義は一体どんなものなのですか?

  • C言語の配列について質問です。

    配列の添え字に別の配列を指定するような以下の処理について 質問です。 #include <stdio.h> int main(void) {    int k = 0;    int kn = 0;    char str[256];    char key[] = "ABCD";    kn = strlen(key);    for(k=0; k<kn-1; k++) {    str[key[k]] = kn-k-1;    } } 上記についてですが、for文の中で "str[key[k]]"とありますが、 ループ処理にともなって配列str[] の添え字は、str[A], str[B], str[C] となるのでしょうか?? その場合、結果的に配列str[]の各要素にはどのような値が格納され るのでしょうか? そもそも、配列の添え字に対して別の配列を指定した場合の動きが よくわかりません。 どなたか教えて頂けますか??

  • 2次元配列への格納方法について

    こんにちは。 FILE *fp; SIZE 1024; int n; char Buf[1025]; while((n = fread(Buf,1,SIZE,fp)) != 0){ } というように、fread関数を用いて1024バイトずつ配列Bufへ格納しています。 以下に示すようなことを行う場合、どのように記述すればよいのでしょうか? B:バイナリデータ T:数値 TBBBBBBBBB・・・・・・B←1024バイト目 TBBBBBBBBB・・・・・・B ・ ・ ・ ・ TBBBBBBBBB・・・・・・B というように、配列内に格納したいと思っています。 Tは、テキストデータで1,2,3・・・・100という整数型を格納。Bは、バイナリデータでfread関数から取得したバイナリデータを格納します。 なぜ、Tを格納したいかといいますと、どのバイナリデータを指しているか?を判別するためです。 上記のようなことを行うためには、2次元配列を使用すればよいのでしょうか? 例:char Buffer[100][1025]

  • 関数に配列を渡して値を変える

    関数に配列を渡して値を書き換えたいのですが、文字配列である char b[10]="abc"; の書き換えが綺麗にできません。 どのように書いたら綺麗にできますか? void hen(int *a, char *b,char **c){ *a=7; b[0]='d'; b[1]='e'; b[2]='f'; //こういう書き方なら渡せるけれどb[10]="def"; 見たいな書き方で一行で値を渡す方法はないものかな? *c="jkl"; } void main (void){ int a=5; char b[10]="abc"; char *c="ghi"; hen(&a,b,&c); printf("%d %s %s\n",a,b,c); }

  • int なぜ

    int balance[ ]={10.0,120,1.24}; は正しいらしいのですが, double balance[ ]={10.0,120,1.24}; と書くべきですよね? また int balance[ ]={10.0,120,1.24}; の場合は整数に直されて格納されるということでいいですか?

  • 文字を整数(int)に変換

    char型の数字文字を、int型に変換したいのですが、どんな方法があるでしょうか? 具体的には、 char s[6] = "12345"; int line[5]; のようなchar配列の文字を、int型のline配列に移したいのです。(line[0]=1,line[1]=2,...,line[4]=5となるように。) "文字 int 変換"などで検索でも調べたのですが、 int→文字のsprintfしか見つかりませんでした。 感覚的にはこの逆のような操作をしたいです。 何か関数を用いる方法でも、そうでない方法でもよいので、 教えてください。よろしくお願いします。

  • int main(void)

    C言語の問題集をやっているのですが、 本にはmain関数の最初にint main(void)のような書き方が してあります。 学校ではmain() と習ったのですが、本には上のようにかいてあります。 どのように違うのでしょうか? というかmain関数のところに引数が入っている意味がわかりません。 どういうことがというと(void)ってなんですか? またint mainというのはint型の関数だと思うのですが、 なかではdouble型とかも使えます。 お願いします。

  • 関数が呼び出されるごとに文字列(IPアドレス)を格納したいのですが・・・

    こんばんは。 関数が呼び出されるごとに文字列(IPアドレス)を格納したいと思っているのですが、どのように記述すればよいか分かりません。 以下にプログラムを示します。 以下のプログラムは、int UDPReceive_IPaddr関数のwhileループ内のIPaddrstorage関数が呼び出されるたびに、IPaddrstorage関数内にて配列を用いて他の端末のIPアドレスを格納したいと考えています。 しかし、関数が毎回呼び出されるため、配列の記述の仕方に困っています。なにか解決方法はありますでしょうか? [プログラム] int UDPReceive_IPaddr(u_short portNo) { char IPaddr[16]; int size; //他の端末からIPアドレスをHELLO文字列(パケット)を受信することで知る。 while(1){ if(size == 5){ if(memcmp(recv_Buf,"HELLO",5) == 0){ strcpy(IPaddr,inet_ntoa(from.sin_addr)); IPaddrstorage(IPaddr); } } } int IPaddrstorage(char *IPaddr){ //配列を用いて、他の端末のIPアドレスを格納したいと考えています。 return 0; } よろしくお願いします。