99の表をそのままCSVファイルに保存したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
saya

99の表をそのままCSVファイルに保存したい

#1

投稿記事 by saya » 6年前

コード:

#include<stdio.h>
#include<math.h>
main()
{
int i,j;
	printf("   ");
	for(i=0;i<10;i++)printf("%3d",i);
	printf("\n");


	for(i=0;i<10;i++){
		printf("%3d",i);
		for(j=0;j<10;j++){
			printf("%3d",i*j);

		}
		printf("\n");
	}

return 0;
}
この出力されたデータをそのままCSVに保存するのはどうしたらいいでしょうか?

Rittai_3D
記事: 524
登録日時: 7年前

Re: 99の表をそのままCSVファイルに保存したい

#2

投稿記事 by Rittai_3D » 6年前

fprintfを使えばいいと思います。

参考→http://www9.plala.or.jp/sgwr-t/c/sec17.html

あとは、バッチファイルでも出来たと思いますが、fprintfを使った方がいいと思います。
初心者です

saya

Re: 99の表をそのままCSVファイルに保存したい

#3

投稿記事 by saya » 6年前

ありがとうございます
fprintf関数を使ってやってみたのですが
エクセルで見たとき
一セルに一つの結果が入っていません
これを改善するのはどうしたらいいでしょうか?

コード:

#include<stdio.h>
#include<math.h>
main()
{
	int i,j;
	FILE *fp;
	fp = fopen("s.csv", "w");
	fprintf(fp,"   ");
	for(i=0;i<10;i++){fprintf(fp, "%3d", i);}
	for(i=0;i<10;i++){
		fprintf(fp,"%3d",i);
		for(j=0;j<10;j++){
			fprintf(fp,"%3d",i*j);
		}
		fprintf(fp,"\n");
	}

	fclose(fp);
	return 0;
}

saya

Re: 99の表をそのままCSVファイルに保存したい

#4

投稿記事 by saya » 6年前

下がコードになります
codeタグを使ってもうまくできなかったので普通に書き込みました

#include<stdio.h>
#include<math.h>
main()
{
int i,j;
FILE *fp;
fp = fopen("s.csv", "w");
fprintf(fp," ");
for(i=0;i<10;i++){fprintf(fp, "%3d", i);}
for(i=0;i<10;i++){
fprintf(fp,"%3d",i);
for(j=0;j<10;j++){
fprintf(fp,"%3d",i*j);
}
fprintf(fp,"\n");
}

fclose(fp);
return 0;
}

アバター
みけCAT
記事: 6252
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 99の表をそのままCSVファイルに保存したい

#5

投稿記事 by みけCAT » 6年前

最初のコードをコンパイルした実行ファイル名をhoge.exeと仮定します。
「そのまま」csvファイルに保存するには、素直に

コード:

hoge.exe > hoge.csv
というコマンドでできると思います。
「そのまま」という条件からは外れますが、1個のセルに1個の数値を格納したいならば、

コード:

hoge.exe | perl -ne "$_=~s/ +/,/g;print $_;" > fuga.csv
というコマンドでできると思います。(Perlがインストールされ、パスが通っていると仮定しています)
saya さんが書きました:codeタグを使ってもうまくできなかったので普通に書き込みました
何がうまくできなかったのですか?
コードが改行されない件でしたら、FirefoxなどのIE10以外のブラウザを使ってください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
沖 滉均
記事: 237
登録日時: 9年前
住所: K県F市

Re: 99の表をそのままCSVファイルに保存したい

#6

投稿記事 by 沖 滉均 » 6年前

とりあえず、ファイルの拡張子をcsvにしただけではcsvファイルにはなりません。
各出力の後ろに , を追加するだけでいいのではないでしょうか?
現状の"%3d"の部分を"%3d,"とすれば少なくともExcelでは表示してくれるでしょう。
厳密にCSVの規格通りにということだとちょっと面倒ですけども…
オフトピック
みけCAT さんが書きました:「そのまま」という条件からは外れますが、1個のセルに1個の数値を格納したいならば、

コード:

hoge.exe | perl -ne "$_=~s/ +/,/g;print $_;" > fuga.csv
というコマンドでできると思います。(Perlがインストールされ、パスが通っていると仮定しています)
どうしてここでperlを使う方に行ってしまうのか私には理解できませんが、、、
There is no royal road to learning.
codeタグで指定できる言語
画像

初級者
記事: 200
登録日時: 9年前

Re: 99の表をそのままCSVファイルに保存したい

#7

投稿記事 by 初級者 » 6年前

CSV とは
comma separated value
のことですので、
数値の後ろにカンマを付ければ
よいと思います。


以下は余談:
どういう回答をすれば
質問者さんにとって最も
有益であるか、を考えたとき、
(もしかしたら質問者さんがご存じではないかもしれない)
言語のコードを示すことが
本当にいいのかなあ?
などと思ってしまいます。

まあ、「俺って Perl を知ってるんだぜ。
すごいだろう」と、技術力を誇示したい
気持ちはわからなくはないですが、
自重すべきところは自重する方が
いいような気がします。

初級者
記事: 200
登録日時: 9年前

Re: 99の表をそのままCSVファイルに保存したい

#8

投稿記事 by 初級者 » 6年前

あと、九九には0の段はないはずです。
for文は、九九の定義どおり
1から9まで(10未満、と書く必要性は
あまりないように思います)
回せばいいと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る