ページ 1 / 1
99の表をそのままCSVファイルに保存したい
Posted: 2013年12月01日(日) 05:31
by saya
コード:
#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に保存するのはどうしたらいいでしょうか?
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月01日(日) 08:05
by Rittai_3D
fprintfを使えばいいと思います。
参考→
http://www9.plala.or.jp/sgwr-t/c/sec17.html
あとは、バッチファイルでも出来たと思いますが、fprintfを使った方がいいと思います。
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月01日(日) 14:21
by saya
ありがとうございます
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;
}
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月01日(日) 14:23
by saya
下がコードになります
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;
}
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月01日(日) 15:24
by みけCAT
最初のコードをコンパイルした実行ファイル名をhoge.exeと仮定します。
「そのまま」csvファイルに保存するには、素直に
というコマンドでできると思います。
「そのまま」という条件からは外れますが、1個のセルに1個の数値を格納したいならば、
コード:
hoge.exe | perl -ne "$_=~s/ +/,/g;print $_;" > fuga.csv
というコマンドでできると思います。(Perlがインストールされ、パスが通っていると仮定しています)
saya さんが書きました:codeタグを使ってもうまくできなかったので普通に書き込みました
何がうまくできなかったのですか?
コードが改行されない件でしたら、FirefoxなどのIE10以外のブラウザを使ってください。
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月02日(月) 16:59
by 沖 滉均
とりあえず、ファイルの拡張子をcsvにしただけではcsvファイルにはなりません。
各出力の後ろに , を追加するだけでいいのではないでしょうか?
現状の"%3d"の部分を"%3d,"とすれば少なくともExcelでは表示してくれるでしょう。
厳密にCSVの規格通りにということだとちょっと面倒ですけども…
オフトピック
みけCAT さんが書きました:「そのまま」という条件からは外れますが、1個のセルに1個の数値を格納したいならば、
コード:
hoge.exe | perl -ne "$_=~s/ +/,/g;print $_;" > fuga.csv
というコマンドでできると思います。(Perlがインストールされ、パスが通っていると仮定しています)
どうしてここでperlを使う方に行ってしまうのか私には理解できませんが、、、
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月02日(月) 18:00
by 初級者
CSV とは
comma separated value
のことですので、
数値の後ろにカンマを付ければ
よいと思います。
以下は余談:
どういう回答をすれば
質問者さんにとって最も
有益であるか、を考えたとき、
(もしかしたら質問者さんがご存じではないかもしれない)
言語のコードを示すことが
本当にいいのかなあ?
などと思ってしまいます。
まあ、「俺って Perl を知ってるんだぜ。
すごいだろう」と、技術力を誇示したい
気持ちはわからなくはないですが、
自重すべきところは自重する方が
いいような気がします。
Re: 99の表をそのままCSVファイルに保存したい
Posted: 2013年12月02日(月) 18:14
by 初級者
あと、九九には0の段はないはずです。
for文は、九九の定義どおり
1から9まで(10未満、と書く必要性は
あまりないように思います)
回せばいいと思います。