質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2326閲覧

作ったプログラムがdatファイルを読み込まない

yamamoto99

総合スコア9

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2020/10/02 11:27

私は今C言語の勉強中です。そこで下記のようなコードでdatファイルを読み込むプログラムを製作しましたが、 fopen("..\input1.dat", "r")) == NULLとなりファイルは読み込まれません。datファイルのパスはvisual studio 2019 で確認しパスを載せています。表示されている相対パスと絶対パスのどちらを入力しても同じくファイルは読み込まれませんでした。

#include<stdio.h> #include<stdlib.h> int main() { FILE *fp; double a = 10.0; if ((fp = fopen("..\input1.dat", "r")) == NULL) { printf("ファイルが見つかりません : input1.dat\n "); exit(1); } while (a>0) { fscanf(fp, "%lf", &a); printf("a=%f\n", a); } fclose(fp); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cやc++では文字列内の\は特別な意味を持ちます。検索ワード「C言語 エスケープシーケンス」で検索するといろいろなサイトがヒットしますので、詳しくはそちらを参照してみてください。

で、今回の問題点はWindowsのパス区切りの\もC言語の文字列内ではそのままで使用できないということです。\そのものを文字列内で使用するためには\と書いてやる必要があります。

c

1if ((fp = fopen("..\input1.dat", "r")) == NULL) 2{ 3 printf("ファイルが見つかりません : input1.dat\n "); 4 exit(1); 5}

としてみてください。

投稿2020/10/02 11:49

編集2020/10/02 11:50
KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamamoto99

2020/10/02 12:16

なるほど!そうだったのですね大変参考になりました。回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問