2017-09-10 22 views
-1
#include<stdio.h> 
#include<ctype.h> 
void main() 
{ 
    FILE *fp1,*fp2,*fp3; 
    char a[100],b; 
    int i=0,j=0; 
    fp1=fopen("names.txt","r"); 
    fp2=fopen("names.txt","w"); 
    i=0; 
    do 
    { 
     b=fgetc(fp1); 
     b=toupper(b); 
     a[i]=b; 
     i++; 
    } while(b!=EOF); 
    i=0; 
    do 
    { 
     fputc(a[i],fp2); 
     i++; 
    }while(a[i]!=EOF); 
    fclose(fp1); 
    fclose(fp2); 
    fclose(fp3); 
} 

我得到分段錯誤而編譯的代碼ü可以plzz幫我察覺錯誤 錯誤是像「2號線:分段故障 「在編譯下面的代碼我得到段錯誤,你可以發現我的錯誤,我

+1

首先通過使用調試器來解決崩潰問題,它可以幫助您找到代碼發生的位置。然後,您還可以檢查所有涉及變量的值。 –

+3

順便說一句,['fgetc'](http://en.cppreference.com/w/c/io/fgetc)返回一個'int'。這對於'EOF'檢查非常重要。 –

+1

正如@Someprogrammerdude所建議的那樣,在發佈SO之前,您的調試器錯誤沒有通過。 –

回答

1

你需要學習如何調試。無論是學習如何使用調試器,或者如果您沒有耐心,只需在代碼中添加一些調試打印,以查看它到底有多遠。例如:

fprintf(stderr, "%d\n", i); 

這會告訴你一些事情。你會很快發現錯誤。

我的猜測是:

  1. 文件超過100個字符更大。
  2. b應該是一個int,你不應該把它存儲在數組中。
  3. 第二個循環不應該查找文件結束,但應該使用您讀取的字符數的計數。
  4. 您正在關閉fp3,但您尚未打開它。

但是,這是基本的東西。你需要學習做基本的調試。

相關問題