• 締切済み

fprintfで出力するファイルのパス指定について

cで以下のコードを書いています。 file.txtを任意の場所に作りたいのですが どうすればいいのでしょうか。 fopen("c:\file.txt", "r"))と書くとエラーになって しまいました。 void main(void) { FILE *fp; if ((fp = fopen("file.txt", "r")) == NULL) { fprintf ( stderr, "err\n" ); exit (2); } fprintf(fp,"%s\n",a);; fclose(fp); }

みんなの回答

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.3

>c:\\filenameと書いてみました が不明なエスケープシーケンスですとエラーになってしまいました。 どんなコンパイラ使ってる?

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

#1の方に補足ですが、"...." の中では改行を\nと書いたりできるのはご存知と思います。\f だとFormFeed(0x0c …画面クリアを意味することもある)になります。 "...." 内で \ 自信を表すためには \\ と書く必要があります。他にも、\t \a \r 等の制御文字があります。 "r" についても#1の方のお書きの通り。

415
質問者

補足

回答ありがとうございます。 #1のかたに補足したとおりの状況です。 何か気になる点があればご教示いただけないでしょうか。 よろしくお願いします。

  • elttac
  • ベストアンサー率70% (592/839)
回答No.1

 まず,fopen() でファイルを「書き込みモード」で開かないといけませんので,モードは "r" ではなく "w" になります。現在の状態ですと「存在しないファイル」を開こうとして NULL が戻っています。  それから,ファイル名中に「\」が含まれますので,これは「\\」とエスケープしなければなりません。

415
質問者

補足

ありがとうございます。さっそくc:\\filenameと書いてみました が不明なエスケープシーケンスですとエラーになってしまいました。 他に気になる点があればご指導いただけないでしょうか。よろしくお願いします。 ちなみに実際に書いているコードは以下です。 opnmode = 1; strcpy(filename,"log.txt"); if ((fp = fopen(filename,"a")) == NULL){ opnmode = 0; } if (opnmode == 1) { _strtime( tbuffer ); fprintf( fp,"%s", tbuffer ); strcpy(s,"メッセージ\n"); fprintf( fp, "%s", s, c ); fclose(fp); }

関連するQ&A