为什么老是输出段错误呀?应该是后面复制地方的错误,一直段错误好烦,搞了好久了都没搞得好,有人能帮我看看吗?
这个代码里为什么老输出段错误,复制文件不成功
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
关注 中午好🌞🌞🌞
本答案参考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; }
解决 1无用
悬赏问题
- ¥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-桌布的计算