いつもお世話になっております。
下記のプログラムを実行したところ、
Line: 55
Expression : (str !=NULL)
とエラーが表示されました。
ファイル名もデレィクトリにあります。
使っているソフトは、Visual studio 2010です。
すいませんが、教えてください。本当に些細なことでも大丈夫です。
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PMAX 200
#define MAG 1
struct point {
double x;
double y;
};
int main(void){
FILE *fp, *out;
struct point p[PMAX];
int index, i, point_num, start;
double distance;
if( (fp = fopen( "zahyou1.csv", "r")) == NULL ) {
printf( "can not open the file.\n" );
}
if( (out = fopen( "out.csv", "w")) == NULL ) {
printf( "can not open the file.\n" );
}
i = 1;
while( fscanf(fp,"%d,%lf,%lf", &index, &p[i].x, &p[i].y) != EOF){
i++;
}
point_num = i;
// which point to start
//printf("from which point? : ");
//scanf("%d",&start);
for(start=1;start<point_num;start++) {
printf("start point : %d\n", start);
fprintf(out,"start,%d\n", start);
for(i=1;i<point_num;i++) {
distance = sqrt(pow(p[start].x - p[i].x, 2) + pow(p[start].y - p[i].y, 2));
distance *= MAG;
printf("%3d %f\n", i, distance);
fprintf(out,"%d,%f\n", i, distance);
}
printf("------------------------------------------\n");
}
return 0;
}
No.1ベストアンサー
- 回答日時:
Expression : (str !=NULL)
で検索すると
http://oshiete.goo.ne.jp/qa/459729.html
等が見つかります。
そう考えてプログラムを見ると
if( (fp = fopen( "zahyou1.csv", "r")) == NULL ) {
printf( "can not open the file.\n" );
}
if( (out = fopen( "out.csv", "w")) == NULL ) {
printf( "can not open the file.\n" );
}
いずれも、fopenの戻り値がNULLかどうかのチェックはしていますが、NULLであるとき(=fopenに失敗したとき)にはメッセージを出力するだけで、そのまま実行を続けています。
このままでは、実際にfpやoutを使おうとしたときに、問題となります。
エラーの場合は、後の処理をしないような工夫をしましょう。(exitやreturnで終了させるなど)
また、Visual Studioを使った場合の、よくある話なのですが。
fopen( "zahyou1.csv", "r")
このようにファイル名だけ指定すると、カレントディレクトリにあるディレクトリから探します。
このあたりの詳細は、「作業ディレクトリ」「カレントディレクトリ」等で検索してください。
VisualStudioからデバッグ実行した場合は、プロパティの中にある「デバッグ時の実行ディレクトリ」になっています。
初期では、 bin\Debug やbin\Relase 等の、実行ファイルのあるディレクトリになっています。
ソースコード(~.c)と同じディレクトリに zahyou1.csv があっても、bin\Debug に無ければ fopenは成功しません。
・ファイルの置き場所を変える
・作業ディレクトリをzahyou1.csvのあるディレクトリに指定する
・ファイル名だけではなく、ディレクトリの場所もフルパスまたは相対パスで指定する
といった対策が必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
CFileDialogの最初のディレクト...
-
VB2008でFTPでのディ...
-
visualstudioでc#のdllができない
-
Subversionのリポジトリの削除
-
図に示す階層構造で,現在のデ...
-
/usr/local/lib/phpとはどうい...
-
rmdirでフォルダが消せません
-
FTPコマンドでディレクトリごと...
-
変数のなかみを辿る方法(Python)
-
includeが出来ない訳とは?
-
makefile でファイルをコピーす...
-
$_SERVER["HTTP_HOST"]と、$_SE...
-
fopenでファイルが開かない場合...
-
ファイル・ディレクトリ削除を...
-
上位ディレクトリ名(フォルダ...
-
SHGetSpecialFolderLocation
-
VB.NET 最下位のディレクトリ名...
-
ファイルアップロードに関して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
現在位置より2つ上のディレク...
-
Subversionのリポジトリの削除
-
fopenでファイルが開かない場合...
-
makefile でファイルをコピーす...
-
VB.NET 最下位のディレクトリ名...
-
rmdirでフォルダが消せません
-
visualstudioでc#のdllができない
-
ファイルアップロードに関して...
-
絶対パス?絶対アドレス?意味...
-
MkDir関数
-
拡張子を隠すのは良い事なので...
-
Subversionで、ファイルをリネ...
-
powershell で書いたプログラム...
-
コマンドプロンプトを指定のデ...
-
ファイル選択ダイアログで選択...
-
aspのページが表示できません
-
JAVA内で複数のファイルを削除...
おすすめ情報