こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語 fopen

初心者の質問になります。現在ファイルがオープンできるかどうかを確認したいのですが、指定したディレクトリの中のファイルを指定しているのですが、オープンできませんという結果が返ってきます。同じ場所にファイルを置いてファイル名だけでしていするとオープンが出来ます。
何卒よろしくおねがいします。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
FILE *fp;
char *filename = "/file/d20151001.csv";
fp = fopen(filename,"r");
if (fp == NULL) {
printf("\aファイルをオープンできません\n");
}
else {
printf("ファイルがオープンできました\n");
fclose(fp);
}
return (0);
}


ディレクトリ(わかりにくくてすいません汗)
file------d20151001.csv
data.c

環境 VisualStudio

投稿日時 - 2016-08-15 19:37:10

QNo.9215706

困ってます

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

たぶん、相対パスにしたいのかと。
パスの先頭にピリオドを追加してみたらどうでしょうか。
"./file/d20151001.csv"
ピリオドひとつはカレントディレクトリ、ピリオド二つ(..)なら一改装上のディレクトリを指します。

投稿日時 - 2016-08-16 09:35:36

お礼

ピリオド一つでカレントディレクトリになるのですね、知らなかったです。
ありがとうございます。

投稿日時 - 2016-08-16 10:09:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

もしくは、C++11からサポートされた文字列リテラルを使うとか。
char *filename = R"(/file/d20151001.csv)";

投稿日時 - 2016-08-16 07:48:37

ANo.2

パスの区切り文字は'/'でも大丈夫ですが、
パスあってます?

>char *filename = "/file/d20151001.csv";

だと実行時のカレントドライブの \file\d20151001.csv の事になりますが(カレントドライブがCドライブなら C:\file\d20151001.csv ですし、Dドライブなら D:\file\d20151001.csv になります)、そこにファイルありますか?

投稿日時 - 2016-08-15 20:11:21

ANo.1

"/file/d20151001.csv"
ディレクトリーはバックスラッシュか円マーク(この場合は2個)ですね。

投稿日時 - 2016-08-15 19:49:17

あなたにオススメの質問