这是我的代码:
#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
和fscanf
中删除注释,程序将编译,但在运行时会崩溃。不明白为什么。。。
最佳答案
您的呼叫已中断-更改:
fscanf(fordat,"%d %d",sir.broj,sir.sir);
致:
fscanf(fordat,"%d %d",&sir.broj,&sir.sir);
重要提示:如果您在编译时启用了警告(例如
fscanf
),那么编译器将帮助您指出此错误,从而节省您的时间和精力。始终启用编译器警告并注意它们。还有一件事:在代码中检查绝对没有错误——应该在
gcc -Wall ...
和所有其他可能失败的调用之后检查失败。关于c - 同时使用fseek和fscanf会使程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29753621/