2017-09-10 20 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,但您尚未打开它。

但是,这是基本的东西。你需要学习做基本的调试。

相关问题