- 締切済み
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); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kacchann
- ベストアンサー率58% (347/594)
>c:\\filenameと書いてみました が不明なエスケープシーケンスですとエラーになってしまいました。 どんなコンパイラ使ってる?
- notnot
- ベストアンサー率47% (4900/10358)
#1の方に補足ですが、"...." の中では改行を\nと書いたりできるのはご存知と思います。\f だとFormFeed(0x0c …画面クリアを意味することもある)になります。 "...." 内で \ 自信を表すためには \\ と書く必要があります。他にも、\t \a \r 等の制御文字があります。 "r" についても#1の方のお書きの通り。
- elttac
- ベストアンサー率70% (592/839)
まず,fopen() でファイルを「書き込みモード」で開かないといけませんので,モードは "r" ではなく "w" になります。現在の状態ですと「存在しないファイル」を開こうとして NULL が戻っています。 それから,ファイル名中に「\」が含まれますので,これは「\\」とエスケープしなければなりません。
補足
ありがとうございます。さっそく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); }
補足
回答ありがとうございます。 #1のかたに補足したとおりの状況です。 何か気になる点があればご教示いただけないでしょうか。 よろしくお願いします。