コンパイルエラーや警告なしで次のコードを書いています。しかし、私のプログラムは毎回クラッシュしますか?どうして私はその問題を解決できますか?fscanfでファイルを読み取れません
コード
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fp;
int vertexIndex=0;
float vertexTable[][2000]={0};
int faceIndex = 0;
int faceTable[][2000]={0};
char lineHeader[128]={0};
fp = fopen("C://Users//matt//Desktop//mannekeCoord.txt","r");
if(fp == NULL)
{
perror("Error in opening file");
return(-1);
}
do
{
int res = fscanf(fp, "%s", lineHeader);
if(res ==EOF)
{break;}
//vertex
if (strcmp(lineHeader, "v") == 0){
fscanf(fp, "%f %f %f\n", &vertexTable[vertexIndex][0], &vertexTable[vertexIndex][1], &vertexTable[vertexIndex][2]);
vertexIndex++;
}
//face
if (strcmp(lineHeader, "f") == 0){
fscanf(fp, "%d//%d %d//%d %d//%d %d//%d\n", &faceTable[faceIndex][0], &faceTable[faceIndex][1], &faceTable[faceIndex][2], &faceTable[faceIndex][3], &faceTable[faceIndex][4], &faceTable[faceIndex][5], &faceTable[faceIndex][6], &faceTable[faceIndex][7]);
faceIndex++;
}
} while(1);
fclose(fp);
return 0;
}
これはそれを読むために持っていたファイルの内容の短いバージョンです:
v -0.999718 -1.004708 0.999546
v -0.932863 -2.122097 -1.108066
v -1.000000 1.000000 1.000000
v -0.980325 0.671164 -1.031669
v 0.094571 -2.805363 -1.376969
v -0.437903 -2.617016 -1.306834
f 728//48 782//48 785//48 751//48
f 758//48 788//48 789//48 759//48
f 727//48 783//48 782//48 728//48
f 793//402 797//402 796//402 792//402
f 790//48 794//48 797//48 793//48
f 791//403 795//403 794//403 790//403
f 783//404 791//404 790//404 782//404
f 784//405 792//405 796//405 788//405
f 789//48 797//48 794//48 786//48
f 786//406 794//406 795//406 787//406
私はこのウェブサイトを使用してコンパイルします。http://www.onlinecompiler.net/
オンラインデバッガもありますか? –
**もし 'scanf'を使わないと**このプログラムをデバッグするほうが簡単でしょう。冗談じゃない。 ( 'scanf'を使わない理由はたくさんありますが、今は重要なのはデバッグです。)(テキストを機械番号に変換するには、整数に' strtol'、浮動小数点に 'strtod'を使用してください) – zwol
ちょうど'faceTable'を見て、サイズが正しいかどうか、正確に宣言されているかどうか、正確に宣言されているかどうかを確かめてください... –