
工学系大学一年生のものです。
VistaPC上で「Microsoft Visual C++ 2008 Exress Edition」を使っているのですが、
あるプログラムをビルドすると
'fopen'の宣言を確認してください
'fscanf'の宣言を確認してください
というエラーが出てしまいます。
ネットで調べたら「fopen」などの記述は古いからこのようなエラーが出るらしいのですが、実際に使用できないのでしょうか。
学校のPCでは使えました。
上記のエラーは出るものの、一応実行ファイルは作成されるのですが、それを実行すると
下記の画像のようなエラーが出て実行されません。
http://www.dejavu.jp/~webmaster/upbbs/users/test …
必要であればソースも記述します。
なぜこのようなエラーが出るのかご教授お願いします。
冬休み中の課題に響くので、出来るだけ早い回答をお願いいたします。
事情があって明日は返信できないので、先にお詫びさせていただきます。
No.5ベストアンサー
- 回答日時:
> しかしそのフォルダに、呼び出すテキストファイルを入れても
> 先ほど私が書いたプログラムでは、また画像で示したのと同じ
> エラーが起きてしまいました。
"ファイル名が間違っている"くらいしか思い当たりません。
#include <stdio.h>
int main() {
int a;
FILE* fp = fopen("test.txt","w");
fprintf(fp,"123\n");
fclose(fp);
fp = fopen("test.txt","r");
fscanf(fp,"%d",&a);
printf("%d\n",a);
fclose(fp);
return 0;
}
だとするとこれ↑もダメですか?
できました!
デバッグの時のカレントディレクトリと、
作成されたexeファイルのカレントディレクトリが違うことに
気づかなくて、先ほど間違えてしまっていたようです。
私の早とちりでした。
ご丁寧に最後まで付き合っていただきありがとうございました。
とてもわかりやすい説明でした。
Wr5さんもご指導ありがとうございました。
No.4
- 回答日時:
> ソースファイルと同じフォルダにちゃんと入れているのですが…
実行時のディレクトリ(フォルダ)が"そこ"であるかを確認しなければなりませんね。
#include <stdio.h>
int main() {
FILE* fp = fopen("test.txt","w");
fprintf(fp,"test\n");
fclose(fp);
return 0;
}
を実行し、"test.txt"が"そこ"にできていますか?
"test.txt"が作られたフォルダに入力ファイルを置いてください。
この回答への補足
返信遅れてすみません。
提示されたプログラムで書き出してみると、ひとつ違う階層にできていました。
しかしそのフォルダに、呼び出すテキストファイルを入れても
先ほど私が書いたプログラムでは、また画像で示したのと同じエラーが
起きてしまいました。
カレントディレクトリに対象のファイルがあるのに開くことができず、
あのエラーが出るのは何故なんでしょうか…
またご回答お願いします。
No.3
- 回答日時:
簡単にプロジェクト作って試しました。
下記のソースファイルは、
C:\Documents and Settings\xxxxx\My Documents\Visual Studio 2008\Projects\fopen_test\fopen_test
に保存されています。(当方、XPです。)
// fopen_test.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;
int a;
fp = fopen("test.txt","r");
fscanf(fp, "%d", &a);
fclose(fp);
return 0;
}
「Microsoft Visual C++ 2008 Exress Edition」でビルドし、そのまま実行したら提示されているのと同じエラーになりました。
# test.txtを作成していないので当たり前ですが。
ソースと同じディレクトリに数字を書き込んだtest.txtを置き、
「Microsoft Visual C++ 2008 Exress Edition」からF5キーで起動さした場合はエラーなしでした。
C:\Documents and Settings\xxxxx\My Documents\Visual Studio 2008\Projects\fopen_test\Debug
に作成されたexeをダブルクリックで実行の場合はエラーになることは確定しているので試すまでもなく…。
ご回答ありがとうございます。
プロジェクト作成でできたフォルダにソースファイルも呼び出すファイルも入れています。
作っていただいたプログラムをコピペしてビルドしてみたらエラーがいくつか出たので、少し変えてビルドしました。
test.txtには数字を並べ、ソースファイルと同じフォルダに入れました。
#include<stdio.h>
int main(){
FILE *fp;
int a;
fp = fopen("test.txt","r");
fscanf(fp, "%d", &a);
printf("%d",&a);
fclose(fp);
return 0;
}
F5で起動してみると、コンパイルは出来るのですが、デバッグのところでやはり同じエラーがでてしまいます
何かまだ参照できていない要因があるのでしょうか。
No.2
- 回答日時:
>「fopen」などの記述は古いからこのようなエラーが出るらしい
> のですが、実際に使用できないのでしょうか。
errorじゃなく、warningですよね?
使えないわけじゃありません。気になるならコードの先頭に
#define _CRT_SECURE_NO_WARNINGS
を入れておくとwarningが消えます。
> 一応実行ファイルは作成されるのですが、それを実行すると
> 下記の画像のようなエラーが出て実行されません。
fopenに失敗しています。openしようとするファイルが存在しない
などの理由が考えられます。
ご回答ありがとうございます。
warningでした。
無視できるなら無視します。
プログラミングを始めたばかりなので、あまり難しいことを書くと頭がこんがらかってしまいそうです。
ソースファイルと同じフォルダにちゃんと入れているのですが…
ただ入れるだけではいけないのでしょうか。
No.1
- 回答日時:
>VistaPC上で「Microsoft Visual C++ 2008 Exress Edition」を使っているのですが、
>あるプログラムをビルドすると
>'fopen'の宣言を確認してください
>'fscanf'の宣言を確認してください
fopen_sやfscanf_sを使用した方がよい。
という警告でしょう。
fopenで正しくオープン出来ていますか?
戻り値は確認していますか?
fopen("test.txt", "r")等のようにオープンした場合、
「カレントディレクトリ」に対象ファイルがない場合はオープンに失敗します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
Borland C++ Bu...
-
VBScriptのエラーの見つけ方及...
-
エクセルのエラーメッセージ「4...
-
atlstr.hのインクルードによる...
-
1つのDLLにソースを1500個ほど...
-
Arduinoに関する質問
-
C言語で数当てゲーム
-
このエラーの意味は何でしょう...
-
配列の初期化時に出たエラーの...
-
Microsoft Visual Studio Profe...
-
visual C++ でビルドの中止がで...
-
複素数complex.hがおかしいので...
-
ANSIと非ANISIの違いを教えてく...
-
SQLServerについて
-
VisualC++2005 「C2039 SetWin...
-
VC++6.0のコンパイル
-
glVertexAttribPointerがない
-
IEの終了作業でアプリケーショ...
-
VC++6.0からVC++2010への移行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
RightとLeft関数のライブ...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
キーの自動入力
-
Visual Studioのstrcpy_sについて
-
コンパイルできません。
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報