ページ 11

charに文字列を

Posted: 2008年8月31日(日) 20:03
by array
charに数字の0~100を入れたいのですがうまくいかないのでアドバイスをもらいたいです。
#include <stdio.h>

int main(){
	char *str[100];
	int i;
	for(i=0; i<100; i++)
		str = "i";

	for(i=0; i<100; i++)
		printf("%s",str);
}

イメージとしては、iの値を文字列としてfor文を使い代入していきたいと思ってるのですが。

他にもiをchar型で対応させたり、やったのですがコンパイルが通ってもエラーでプログラムが終了してしまったり、一応まともに動作したプログラムがこれで、アドバイスをもらえたら嬉しいです。

一応
str = "i";
これでiを文字列として代入して、既知外なことをしている事は理解しています・・・。
今はアスキーコードで代入していけばいいのかと思い試行錯誤してるところです><

Re:charに文字列を

Posted: 2008年8月31日(日) 20:18
by 管理人
こういうことでしょうか?

#include <stdio.h>

int main(){
	int i;
	char str[10][3];
	for(i=0;i<10;i++){
		sprintf(str,"%d",i);//数値のiをstrに文字列として格納
	}
	for(i=0;i<10;i++){
		printf("%s\n",str);//表示
	}
}

実行結果

0
1
2
3
4
5
6
7
8
9
 

Re:charに文字列を

Posted: 2008年8月31日(日) 20:21
by 管理人
sprintfを使えばint型、doouble型、char型などいろんな型のデータをprintfで表示するような使い方で
指定した配列に代入する事が出来ます。

なので、こんな複雑な代入も簡単に出来ます。
#include <stdio.h>

int main(){
	int a=2,b=3;
	char s[32]="なんですよねぇ。";
	char str[128];
	sprintf(str,"%d/%d=%.3f%s",a,b,(double)a/(double)b,s);
	printf("%s\n",str);//表示
}

実行結果

2/3=0.667なんですよねぇ。
 

詳しい関数の仕様はググって確認して見て下さい。
http://www.google.co.jp/search?hl=ja&q= ... =&aq=f&oq=

一方逆に、
文字列をint型にするときはatoi関数、
文字列をdouble型にするときはatof関数を使うと変換出来ます。

Re:charに文字列を

Posted: 2008年8月31日(日) 20:29
by array
(。 ̄□ ̄)オぉ~ 期待以上の短さで期待通りの実行結果が得られました。

strcpy()を使ったり領域確保できてるのかなと思いつつもポインタ使ったり・・・。

sprintf()という便利なやつがあるんですね。ありがとうございます(^▽^)。♪

Re:charに文字列を

Posted: 2008年8月31日(日) 20:34
by 管理人
先ほど↑3番目の記事にサンプルを追加しておきましたm(_ _)m

後、こんなサイトをお気に入りに入れておくと何かと参考になるかもしれません。

http://always-pg.com/c/runtime_rd/

昔よく重宝しました。
「こんな関数無いかな~」と思った時大抵ここで解決してました。

Re:charに文字列を

Posted: 2008年8月31日(日) 20:42
by array
書いてる途中にsprintf()を調べてました(^^ゞ

応用例まで書いてもらって有難うございます

atoiなどは一応エクセル読み込みなどで使ってるので大丈夫だと思います♪


あまり内容見てませんが、サイトお気に入り追加させてもらいました。私は関数探す時でも入門サイトをまわっていたので助かります^^