所以这是我的代码:
#include <stdio.h>
typedef struct dat{
int broj;
int sir;
}sir;
int main() {
sir sir;
FILE* fordat;
int i=0;
fordat = fopen("dattk.txt","w+");
while(i<100) {
i++;
sir.broj = i;
sir.sir=-i;
fprintf(fordat,"%d %d", sir.broj, sir.sir);
}
// fseek(fordat,0,SEEK_SET);
//rewind(fordat);
// fscanf(fordat,"%d %d",sir.broj,sir.sir);
printf("%d% %d",sir.broj,c);
fclose(fordat);
return 0;
}
我正在C学习,并制作了这个简单的文件编写和阅读程序......
如果我从fseek
或rewind
或fscanf
删除评论,程序就会运行。
但是,如果我从fseek
AND fscanf
删除了该程序编译的注释,但在运行时崩溃。
无法弄清楚为什么......
答案 0 :(得分:3)
您的fscanf
来电已被破坏 - 更改:
fscanf(fordat,"%d %d",sir.broj,sir.sir);
为:
fscanf(fordat,"%d %d",&sir.broj,&sir.sir);
重要提示:如果您已经编译并启用了警告(例如gcc -Wall ...
),那么编译器会帮助您指出这个错误,从而节省您的时间和精力。始终启用编译器警告并注意它们。
还有一件事:您的代码中绝对没有错误检查 - 您应该在fopen
之后检查失败以及可能会失败的所有其他调用。