adcnanke 2024-04-24 12:25 采纳率: 71.4%
浏览 1

这个代码里为什么老输出段错误,复制文件不成功

为什么老是输出段错误呀?应该是后面复制地方的错误,一直段错误好烦,搞了好久了都没搞得好,有人能帮我看看吗?

img

  • 写回答

6条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-24 12:25
    关注

    中午好🌞🌞🌞
    本答案参考ChatGPT-3.5

    从代码中可以看出,可能会出现以下问题导致程序段错误:

    1.第二行的 #include<stdlib.h≥ 应该是 #include<stdlib.h>,这个符号有误导致程序出现问题。

    2.第4行应该是 int main(int argc,char* argv[]),而不是 int main(int argc,char argv),漏写了函数原型的中括号,导致后续代码中使用argv会出错。

    3.第8行缺少一个右括号,应该是 return -1; }

    4.第9行fd这个文件指针没有初始化为NULL。

    5.第19行,应该是 fd = fopen("rnm.txt","wb+");,而不是 fd fopen("rnm.txt","wb+");,漏写了文件指针的初始化赋值符号。

    6.第21行缺少一个分号,应该是 const char *s = "hello";

    7.第25行应该是 if(fd == NULL),而不是 if(fd = NULL),漏写了等号,将判断条件变成了赋值操作。

    8.第28行缺少一个右括号,应该是 }

    9.第31行应该是 fclose(fz);,而不是 fclose(fd);,因为要关闭的是打开的文件指针fz而不是fd。

    10.第35行应该是 while((length=fread(buffer,1,BUFFER_SIZE,fz))>0),而不是 while((Length=fread(buffer,1,BUFFER_SIZE,fz))>0),大小写不一致导致变量未定义。

    11.第37行应该是 fwrite(buffer,1,length,ft);,而不是 fwrite(buffer,1,BUFFER_SIZE,ft);,因为每次读入的buffer大小可能小于等于BUFFER_SIZE,要用实际读入的长度length。

    修改后的代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #define BUFFER_SIZE 1024
    
    int main(int argc,char* argv[]) {
        if(argc < 3) {
            printf("cmd filename\n");
            return -1;
        }
        FILE *ft = NULL, *fd = NULL, *fz = NULL;
        char buffer[BUFFER_SIZE] = {0};
        fd = fopen("rnm.txt","wb+");
        if(fd == NULL) {
            printf("Open File %s Failed\n", argv[1]);
            return 0;
        }
        const char *s = "hello";
        fputs(s, fd);
        fclose(fd);
        ft = fopen(argv[2],"wb+");
        fz = fopen(argv[1],"rb+");
        if(ft == NULL || fz == NULL) {
            printf("Open File %s Failed\n", argv[1]);
            return 0;
        }
        int length = 0;
        while((length = fread(buffer, 1, BUFFER_SIZE, fz)) > 0) {
            printf("%s\n", buffer);
            fwrite(buffer, 1, length, ft);
        }
        fclose(ft);
        fclose(fz);
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月24日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算