c - 在编译下面的代码时出现段错误,你能帮我找出错误吗

标签 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);
}

编译此代码时遇到段错误,你能帮我找出错误吗 错误类似于“第 2 行:段错误 ”

最佳答案

您需要学习如何调试。要么学习如何使用调试器,要么如果您没有耐心,只需在代码中添加一些调试打印即可看看它进展到什么程度。例如:

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

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

我的猜测是:

  1. 您的文件超过 100 个字符。
  2. b 应该是一个 int,并且不应将其存储在数组中。
  3. 第二个循环不应查找文件结尾,而应使用您读取的字符数。
  4. 您正在关闭 fp3,但尚未打开它。

但是,这又是基本的东西。您需要学习进行基本的调试。

关于c - 在编译下面的代码时出现段错误,你能帮我找出错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46141393/

相关文章:

c - 使用C语言从Arduino串口获取数据时出错

c - 指定给定的 Shortopt 可以接受可选参数 C

c++ - 在 Linux 中以 C/C++ 编程方式更改文件的创建时间戳

c++ - 我是否正确实现了时钟漂移?

c - 在C中写入文件多线程

c++ - ibmemcached 链接错误 : undefined reference to `memcached_exist'

c - 在 C 中对整数数组进行冒泡函数排序

c - 如何让字符串数组的值不变?

c - 为什么这段代码会阻塞?

c - 进程名称来自其在 linux 中的 pid