0
我寫了從文件中讀取代碼,它具有以下含量的不同:此代碼 76 -1217454080 77 -1217458176 78 -1217462272
:讀取文件錯誤
FILE* fp;
if((fp = fopen("test" , "r")) < 0)
printf("ERROR in FILE \n") ;
int old_fp = fp ;
int shm , key ;
fp = fscanf(fp , " %d%d" , &key , &shm) ;
if(fp < 0)
printf("ERROR in fscanf \n ");
printf("%d , %d \n " , key , shm) ;
while(fp != EOF)
{
if(key == 5)
break ;
fp = fscanf(fp , "%d" , &key) ;
fp = fscanf(fp , "%d" , &shm) ;
printf("%d , %d\n" , key , shm) ;
}
,但是當到達環路(進入循環)的程序給我segmentation fault
,所以我已經試過ny這個代碼(這是使第一條語句同時讀取4個整數),它適用於同時讀取4個整數,但它再次進入循環時,它想要做的fscanf
,程序崩潰!
FILE* fp;
if((fp = fopen("test" , "r")) < 0)
printf("ERROR in FILE \n") ;
int old_fp = fp ;
int shm , key ;
int ss , kk ;
fp = fscanf(fp , "%d%d%d%d" , &key , &shm,&ss,&kk) ;
printf("the result is %d %d " , ss , kk);
if(fp < 0)
printf("ERROR in fscanf \n ");
printf("%d , %d \n " , key , shm) ;
while(fp != EOF)
{
if(key == 5)
break ;
// it's crash here
fp = fscanf(fp , "%d" , &key) ;
fp = fscanf(fp , "%d" , &shm) ;
printf("%d , %d \n " , key , shm) ;
}
你似乎試圖在同一時間爲兩個完全不同的目的使用'fp' –
你的代碼有很多問題。 fp是一個FILE指針,而不是一個整數。你用你擁有的第一個fscanf(實際上是所有這些)的返回來覆蓋fp。你在循環中獲得segfault,因爲fscanf試圖解引用fp,這並不指向有效的內存位置。這是一個糟糕的問題。 RTFM –