2015-04-20 46 views
0

所以这里使用时FSCANF程序崩溃的是我的代码:FSEEK,并在同一时间

#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研究并提出书面的这个简单的例子程序,并从文件中读取...

如果我删除fseekrewindfscanf的评论,程序将运行。
但是,如果我删除fseekfscanf的注释,程序将编译,但运行时会崩溃。
想不通为什么...

回答

3

fscanf呼叫被打破 - 变化:

fscanf(fordat,"%d %d",sir.broj,sir.sir); 

到:

fscanf(fordat,"%d %d",&sir.broj,&sir.sir); 

重要提示:如果您有打开了警告编译(例如gcc -Wall ...),那么编译器会帮你指出这个错误,从而为你节省时间和精力。始终启用编译器警告并注意它们。

还有一件事:在代码中检查绝对没有错误 - 您应该检查fopen以及可能失败的所有其他调用之后的失败。

+0

是的,我刚刚添加了一个关于错误检查的句子。 –

+0

谢谢,这使它工作。 我知道这很简单 –