なぜコードがdev C++のクラッシュを引き起こすのか教えてください。fscanfがループ内で呼び出された後にDev C++がクラッシュする
FILE* input;
int k=0;
char filename[]="";
int* Tab=NULL;
printf("Please specify the filename you want to open and read\n");
scanf("%s",&filename);
//strcat(filename,".txt");
input=fopen(filename,"r");
if(input==NULL)
{
printf("File open error");
}
fscanf(input,"%d",&total);
Tab=malloc(total);
for(k=0;k<total;k++)// here is my problem
{
fscanf(input,"%d",&Tab[k]);
}
ファイルが正常に開かれ、最初のatemptで読み込みが正しく行われた後、クラッシュが開始されました。変数total
も読み取ることができ、次のforループが問題になります。
お願いします。
'' char型のファイル名[] =「」; ''あなたは、入力されたファイル名は、この変数に収まるどう思いますか? – BitTickler
ファイル名が正常に動作し、デバッグでSIGSEGV信号が発生し、セグメンテーションの問題が発生します。だから問題はファイル名ではないと思う。 –
メモリをオーバーウィート(スタック)した後、コード内で次に起こることの賭けはすべてオフになります。あなたのファイル名はメモリを上書きします。 – BitTickler