dポイントプレゼントキャンペーン実施中!

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);
}

A 回答 (3件)

>c:\\filenameと書いてみました


が不明なエスケープシーケンスですとエラーになってしまいました。

どんなコンパイラ使ってる?
    • good
    • 2

#1の方に補足ですが、"...." の中では改行を\nと書いたりできるのはご存知と思います。

\f だとFormFeed(0x0c …画面クリアを意味することもある)になります。
"...." 内で \ 自信を表すためには \\ と書く必要があります。他にも、\t \a \r 等の制御文字があります。

"r" についても#1の方のお書きの通り。

この回答への補足

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

補足日時:2004/06/24 00:43
    • good
    • 0

 まず,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);
}

補足日時:2004/06/24 00:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!