在编译下面的代码我得到分段错误你能发现我的错误

时间:2017-09-10 13:46:43

标签: c

#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);
}

在编译此代码时出现分段错误,可以帮助我发现错误 错误就像&#34;第2行:分段错误 &#34;

1 个答案:

答案 0 :(得分:1)

您需要学习如何调试。要么学习如何使用调试器,要么你没有耐心,只需在代码中加入一些调试打印,看看它有多远。例如:

MessageBox.Show(msg, errType, MessageBoxButton.OK, 
    MessageBoxImage.Asterisk, reply, MessageBoxOptions.ServiceNotification);

那会告诉你一些事情。你很快就会发现错误。

我的猜测是:

  1. 您的文件超过100个字符。
  2. b应该是一个int,你不应该将它存储在数组中。
  3. 第二个循环不应该查找文件结尾,而应该使用您读取的字符数。
  4. 您正在关闭fp3,但尚未打开它。
  5. 但同样,这是基本的东西。你需要学习基本的调试。