• ベストアンサー

ファイル名を変数で書きこむfwriteの仕方

higeGの回答

  • higeG
  • ベストアンサー率22% (4/18)
回答No.2

> 例えばiとjと言う変数があった場合、i_j.csvをファイル名としたいです。(iとjを変数とします。) iとjが変数の値に置き換わるイメージでしょうか?それとも変数名そのものをファイル名にしたいのでしょうか? 前者であれば、#1の方のやり方になりますし、後者であれば、 #define FNAME(a, b) #a "_" #b ".csv" と言うマクロを作っておいて fopen(FNAME(i,j), "w"); でしょうか。

saterain20
質問者

お礼

なるほど、こういうやりかたもあるんですね

関連するQ&A

  • ファイル名を変数として読み込みたい(行列言語)

    はじめまして。プログラミングの初心者です。 今、「ox」という行列言語を使ってプログラムを書いています。 csvファイルからデータを読み込み処理させたいのですが、ファイル数が200程あり、一つ一つファイル名を書くのはとても面倒です。 なので、ファイル名を変数にして、繰り返しファイルを読み込めば早いかと思いましたが、やり方がわかりませんでした。。 読み込むコマンドはloadmatを使い、下記の様にすると、読み込めました。(ファイル名が000.csvの場合 ) mx = loadmat("/Users/home/Desktop/000.csv"); ここでファイル名を 001.csv 002.csv 003.csv ・・・・200.csvとして、iを変数とし、命令を mx = loadmat("/Users/home/Desktop/i.csv"); のようにして、for()やwhileの命令で繰り返しファイルを読み込みたいのですが、ここから先に進めません。 どなたか、良い解決案をご存知の方がおられましたら、ご教授下さい。よろしくお願いします。

  • fopenの引数の中に変数と文字をいれる方法は?

    fopenの引数の中に変数と文字を入れた場合、エラーが発生しました。 fa = fopen(a[g]".csv", "w" ); 例えば、上記の式にはfopenの引数に変数a[g]と文字列.csvを入れた場合にエラーが発生しました。 エラーの内容は (1)error C2143: 構文エラー : ')' が '文字列' の前にありません。 (2)error C2661: 'fopen' : 1 個の引数を伴うオーバーロードされた関数はありません。 (3)error C2059: 構文エラー : ')' です。 できなくて困っています。 もしわかる方がいたら教えていただけないでしょうか? よろしくお願いいたします。

  • VB6で、変数の値を別ファイルの変数に引き継ぎたい

    AというVBのソースファイル(.frm)内に関数の呼び元があり、 その関数がBというファイルにあります。 その関数内で値が設定される変数を、Bファイルのグローバル変数とし、 また、Aファイルのグローバル変数として同じ名前の変数を宣言したとしても、 やはりB内で関数の実行が終了し、Aに戻った際には、変数は別のものとみなされている ようで、B内関数で設定された値がAファイル内での同名変数に引き継がれません。 どのようにすればよろしいでしょうか? ご存知の方、お願いします。

  • VC++のfopenのファイル名の指定方法について

    下記のようなcsvファイルを間引くプログラムを改変したいと思っています。 環境はVS2008 C++ コンソールアプリケーションです。 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { FILE *fp,*fp1; int i, j, retu, ch, cnt=0; char data[100]; char a=0; fp=fopen("data.csv","r"); fp1=fopen("kekka.csv","w"); cnt=0; retu=0; while (1){ ch=fgetc(fp); if (ch=='\n') break; } while((ch=fgetc(fp))!=EOF){ data[retu]=ch; retu++; if (ch=='\n'){ cnt++; if (cnt>=10){ cnt=0; for(i=0;i<retu;i++){ printf("%c",data[i]); fputc(data[i], fp1); } } retu=0; } } return 0; } ただ毎回csvファイルの名前をdata.csvに書き換え、さらにkekka.csvを別名にして保存しなければいけないためとても手間です。 そこでその部分を実行時にscanfなどを用いて変更したいと思ったのですがうまくいきません。 fopenでファイル名を実行時(ビルド時)に変更するにはどうすればよいのでしょうか。 ご教授お願いします。

  • 変数名をプログラムで変える

    変数名$keyにある数字を一文字ずつ$w1、$w2・・・に入れていきたいと考えています。 if (isset($key)){ for($i=1;$i<strlen($key);$i++){ $w[$i]=substr($key,$i-1,1); } 変数w1、w2をfor文の中で変化させていきたいのですが、どのようにすればいいのでしょうか。 上記の$w[$i]ではだめでした。(配列になっちゃうのかな) 例えば$key=5432の場合、 $w1=5; $w2=4; $w3=3; $w4=2; としたいのです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • バッチファイルにおける環境変数分の繰り返し処理

    こんにちは。 現在、CSVから読み込んだ値(ファイル名)を環境変数に格納し、その環境変数に合致したファイルの移動を行う。というバッチファイルを作成しています。 作成にあたってCSVからのファイル名の読み込み及び、環境変数に全てのファイル名を1個ずつ格納する事(a1=AAやa2=BBなど)には成功したのですが、その後のファイルを移動するコマンドが上手く書けません。 ちなみに move "*%a1%*.txt" "C:\" move "*%a2%*.txt" "C:\" 上記のように1個ずつ手動で環境変数を指定しての移動は出来るのですが、その日によって 取得するファイル名(環境変数の数)が異なってくる為、可能であれば自動で環境変数の数を取得し環境変数分、1個ずつ環境変数からファイル名を読み込み、そのファイルを移動させる。と言ったバッチを組みたいのです。 よろしくお願い致します。 ------------------------------------------------------------------ set count=1 for /f %%i in (test.csv) do @call :add %%i goto PROCESS1 :add set a%count%=%1 set /A count+=1 goto :EOF :PROCESS1 ※移動するコマンド ------------------------------------------------------------------

  • 関数のファイル名指定で変数を使用したい

    C言語を使ってゲームプログラムを作成中で、ステージを読み込む際にC言語のファイル入出力関数を 使用していて、テキストファイルからデータを読み込みステージを描画しています。 ステージをクリアした時に次のステージに移行する際、変数でステージ番号を 保持しておきファイル名の一番後ろにマップの番号を付ければ良いのでは ないかと思いました。しかしfopen関数で読み込む際に変数をどのように ファイル名として読ませるかが判りません。この方法ではダメなのでしょうか?

  • fwriteでの書き込み

    16進の数値をバイナリとしてファイルに書き込みたいのですが、 以下のようなプログラムで書き込んで、できたファイルを16進に 直して見てみると、  ff ff 00 00 aa ff 00 00 となっていて、途中に0000が入ってしまうのです。 16進に直して見たときに  ff ff aa ff cc 55 22 22 となるようにしたいのですが、どこがまちがっているのでしょうか? int main(void){ long *i; FILE *fp1; fp1=fopen("test.dat","w"); i[0]=0xffff; i[1]=0xffaa; i[2]=0x55cc; i[3]=0x2222; fwrite(i,2,4,fp1)); fclose(fp1); return 0; }

  • fopenでファイル名に、変数を使いたい

    カレントディレクトリにある「1.txt」を扱う場合は fp = fopen("./1.txt", "r"); 上記で出来るのですが、扱いたいファイルが複数あり、 「./x.txt」 として、「x」の値を変えながら複数のファイルを取り扱いと考えております。 char namae[2]={'1','2'}; for(x=0;x<2;x++) fp = fopen("./%c.txt",name[x], "r"); とやってみたのですが、 「fopenの呼び出しに余分なパラメータがある」と出てしまいます。 どのようにしたら、よろしいでしょうか?

  • fwrite文について

    char型で宣言した配列の方はうまくいきましたが、構造体を用いたfwrite文がうまく出力されません。 どうしてでしょうか? #include <stdio.h> #include <string.h> #include <stdlib.h> struct ll{ char name[20]; int ten[3]; }list[3] = { {"aaa", 11}, {"bbb",22}, {"ccc",33} }; FILE *fpbin, *fpcsv; /*FILE構造体(グローバル変数)*/ void main(void) { char i[] = {'a','b'}; fpbin = fopen("data.txt","w"); //fwrite(&i,sizeof(char),2,fpbin); fwrite(&list[0].name,sizeof(struct ll),2,fpbin); fclose(fpbin); }