fopenの引数に変数と文字を入れた場合に発生するエラーと解決方法

このQ&Aのポイント
  • fopenの引数に変数と文字を入れる場合、エラーが発生することがあります。
  • 具体的には、構文エラーや関数の引数のオーバーロードエラーなどが発生します。
  • このエラーを解決するためには、引数に変数と文字を結合する方法を使用する必要があります。
回答を見る
  • ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.1

sprintf() あたりを使って、 a[g] と ".csv" を結合した文字列を組み立てます。 組み立てた文字列を、fopen() の第1引数とします。

saterain20
質問者

お礼

ありがとうございます。うまくいきました。

関連するQ&A

  • Drawstringで変数内の文字を表示する方法について

    Drawstringで変数内の文字を表示する方法について c言語初心者です。 ウィンドウに文字を表示するDrawstringという命令で変数内の文字を表示したいです。 たとえば、 char *a="a" DrawString(0,0,a,65535); でコンパイルすると、 宣言の構文エラー というエラーが出ます。 改善点がどうしてもわかりません。 ご指摘お願いします。 あと、c言語では変数に文字を一文字ずつしか入れられないので、文字列を変数に保存して表示したい場合にはforなどでループして表示するしかないんでしょうか? 合わせてお願いします。

  • 引数を変数で渡す方法

    いつもお世話になります・。 function tst(a,b){  alert("a="+a+" b="+b) } として、 tst(1,'bbb'); とすれば a=1  b=bbb となります。 ところが、 Param="1,'bbbb'"; tst(Param); とすると、 a=1,bbb b=undefined となってしまいます。 また、 tst(eval(Param)); とすると、 a=bbb b=undefined と、なってしまいます。 また、 var Param=new array(1,'bbbb') tst(Param); とすると、何も表示されません。 引数 1,'bbb' を変数として関数に渡すにはどうしたらよいのでしょうか。 目的は、JSONで引数文字列を取得して関数に渡したいのです。 JSONで、関数に渡す引数をどのように定義したらよいものかと いうことでの質問です。 が、JSONの記載が長くなるので、 ここで質問した方法がわかれば何とか後は自分でできると思うのですが、 よろしくご教示お願いいたします。

  • printfの引数指定でなぜ文字列ポインタがOK?

    C言語初心者です。現在入門的書籍の1冊目を読んで勉強中です。VBAは経験あります。 printf関数について質問です。 引数の指定で通常  printf("書式文字列", 変数で値) のようにしていしますよね。  char a = 'A';  printf("%c", a); ←ここで変数aの値の「A」を渡している と理解しています。 上の例で、書式文字列を省略し、  printf(a); だとエラーがでます。 しかし、文字列の場合  char a[] = "ABC";  printf(a); はエラーにならず、「ABC」と出力されます。 さらに、ポインタを使用して  char a[] = "ABC";  char *b = a;  printf(b); もエラーにならず、上と同様に「ABC」と出力されます。 まず、この2つの例で、エラーとならず、書式文字列が省略できているのが不思議です。 これが書式文字列を省略しているわけではないとするならば、 「printf(a)」=「printf(b)」=「printf("ABC")」ということになりますが、 「printf(a)」のaも「printf(b)」のbも"ABC"の先頭のアドレスを示しているんですよね。 ということは、printf関数の引数の指定方法は  printf(書式文字列 または 文字列の先頭アドレス, 変数) というように考えられるのですが、認識があっているでしょうか? そもそも文字列について、VBAでは文字と文字列の区別はなにも意識せずに扱えたのでやや戸惑っているのですが、C言語では文字列の場合は宣言時に  char a[] のように宣言し、あとは先頭のアドレスで文字列を使っていくという感じなのでしょうか? 初心者なもので何が理解できていないのかもよくわからない状況で、質問がわかりづらいかもわかりませんが、よろしくお願いします。

  • 変数を文字列として扱う方法

    VB初心者なのですが、 変数を、その変数のまま文字列で扱う方法がないかと悩んでいます。具体的に言うと、 たとえば、 Dim Bef(i,j) As String と宣言しておいて、 Bef(1,1)に、SCATTERBRAiN11 Bef(1,2)に、SCATTERBRAiN12 Bef(1,3)に、SCATTERBRAiN13 …… Bef(i,j)に、SCATTERBRAiNij という「文字列」を入れたいのです。 (最後の2文字i,jが、そのときの変数i,jの値。) これをFor構文を使って、 Bef(i,j)="SCATTERBRAiN" + i + j と書いたら、エラーになってしまいました。 iやjを、その変数に入っている数字の文字列として扱うには、どうすればいいのでしょうか。 よろしくお願いします。

  • 引数を含む変数を参照するには

    下記のような変数があります cd_01="a"; cd_02="b"; cd_03="c"; … で、引数で受け取った値を含む変数を参照したい場合、 例えば、引数で01を受け取った場合は、 cd_01の"a"を 02を受け取った場合は"b"を参照したいのです。 変数名「cd_xx」は可変です。 よろしくお願いします。

  • 変数の中の文字列から””を取り除く方法

    javascriptに関する質問です。 タイトル通りですが、 変数の中の文字列からダブルクォーテーションを取り除く方法はありますか? 以下は私がやりたいことの例です。 var a = "hello", b = "hi"; var greet = "a, b"; var c = greet.split(","); この結果は c = ["a", "b"] こうですが ここからダブルクォーテーションを除去して、 c = [a, b] と変数名にすることは可能ですか? 可能でしたらどのような方法があるでしょうか?

  • 変数→文字列変数【ParaFla!】

    現在ParaFla!初心者ですが、数字で表された変数を文字列変数に変換するにはどうすればよいでしょうか。 例えば_root.a = 6、_root.b = 7(この時点では両者は文字列変数ではないことに注意)という二つの変数を用いて _root.c = 13ではなく、_root.c ="67"または_root.c ="76"と表すにはどうすればいいかといった具合です。

  • Perlコマンドの引数の中で変数を使う方法

    教えてGooやGoogleで検索してみましたが、ピンポイントでヒットするものが見当たらなかったので、質問させていただきます。 シェル(Cシェル)の中で、以下のコマンドを記述しているのですが、置換前文字列、置換後文字列にシェル内で定義した変数を使いたいです。 --- perl -i -pe 's/置換前文字列/置換後文字列/g' ファイル名 具体的には、テキストファイルの中に 10/24 AAAAAAAAAA 10/25 AAAAAAAAAA //10/26 AAAAAAAAAA //10/27 AAAAAAAAAA //10/28 AAAAAAAAAA //10/29 AAAAAAAAAA //10/30 AAAAAAAAAA というように、日別のスケジュールを記載しています。 未来日については、上記のように//でコメントアウトしています。 日次でシェルを実行して、翌日分のコメントアウトを外すような処理を実施するのが目的です。 setenv DATE1 `date -v +1d +%m/%d` で翌日日付を変数に入れており、DATE1変数を使用して実現したいと思っています。 どうしてもシェルの変数がうまく読み込めず、うまくいきません。 解決方法、ご存知の方がいらっしゃれば、ご教授ください。 よろしくお願いします。

  • エクセルのマクロについて 文字列操作について

    文字列操作で困っています。 A3セル以下、A列に、04/、03/、99/。。。と文字列が入力されており、それぞれ、最初の2文字を取り出して数字に変換し、それぞれを変数 qwe1 qwe2 qwe3 ... に代入したいのです。 そのための構文が知りたいのです。 また、文字列のまま、たとえば上記の/を、変数 asd に代入するにはどうしたらよいのでしょうか? ちなみに、 Range("B3").Select ActiveCell.FormulaR1C1 = "=VALUE(MID(R[-2]C[1],1,2))" という形の構文で、一旦エクセルのセルに代入して、再度、変数に放り込む形だとうまくいくのですが、数列、数十行同じ作業を繰り返すために、for next 構文を使わないと、不便で使い物になりません。 そこで、R[-2]C[1] の部分に cells(qwe,1)を使ってもエラーが出てうまく作動しませんでした。 なお、エクセル2003、OS=XPです。 再度要約しますと、 1.文字列の一部を取り出して数字に変換し、それを変数に代入したい。 2.文字列の一部の文字を取り出して、それを変数に代入したい。 3.上記1,2を繰り返すので、その繰り返すことが出来る構文が知りたい。 以上です。 どなたか教えてください。

  • fopenしてくれない。。。

    こんにちは。PHP初級者です。 postgresqlに入れたデータをCSVファイルに書き込んで、出力してみたいと思って以下のプログラムを作ってみました。 $file_name ="insatu.csv"; //データベースから呼び出し以下の$arrayへいれるデータは省略します。 //今回は1行のみのデータを入力プログラムになってますが、本当は何行もやるプログラムとなってます。 $array = compact("a","b","c","d","e","f","g","h","i","j","k","l"); $string = implode("," , $array); $file = fopen($file_name, "a") or die ("openエラー $file_name"); flock($file, LOCK_EX); fputs($file, $string."\n"); flock($file, LOCK_UN); fclose($file); $file = fopen($file_name, "r"); while($array = fgetcsv($file, 1000, ",")){ echo "<hr> \n"; for($i=0; $i< count($array); $i++){ echo $array[$i]."<br>"; } } fclose($file); なぜか最初の fopenで dieの方へ行って OPENエラーメッセージが出てきます。 この作業をするためには何かあらかじめ入れなくてはいけない構文とかあるんでしょうか?何か間違っていますでしょうか? それともphp.iniを設定するとかしなくてはいけないんでしょうか? php5を使用してますが、php.iniやphp.ini-distはともに見つからず。 困り果ててます。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう