gpt4 book ai didi

c - 段错误,基本文件输入/输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:16:54 24 4
gpt4 key购买 nike

我正在将源文件 source.txt 复制到另一个文件 destination.txt。在运行代码之前,这两个 .txt 文件都存在于目录中,每个文件只包含一个句子。但是我在终端输出中看到了 error: Segmentation fault。这是 C 代码:

#include<stdio.h>
#include<stdlib.h>
int main(void) {
FILE* sptr = NULL;
FILE* dptr = NULL;
int ch = 0;
if((sptr = fopen("source.txt", "r")) == NULL) {
printf("Error in opening source file.\n");
exit(1);
}
if((sptr = fopen("destination.txt", "w")) == NULL) {
printf("Error in opening destination file.\n");
exit(1);
}
while((ch = fgetc(sptr)) != EOF)
fputc(ch, dptr);
fclose(sptr);
fclose(dptr);
return 0;
}

最佳答案

看来您已经上了复制粘贴的当!

if((sptr = fopen("source.txt", "r")) == NULL) {
printf("Error in opening source file.\n");
exit(1);
}
if((sptr = fopen("destination.txt", "w")) == NULL) {
printf("Error in opening destination file.\n");
exit(1);
}

sptr 重复,所以文件只为写入而打开。尝试从中读取可能会导致段错误。

此外,为什么要使变量初始化复杂化?这可以写成:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
FILE* sptr = fopen("source.txt", "r");
FILE* dptr = fopen("destination.txt", "w");
int ch = 0;

if(sptr == NULL) {
printf("Error in opening source file.\n");
exit(1);
}

if(dptr == NULL) {
printf("Error in opening destination file.\n");
exit(1);
}

while((ch = fgetc(sptr)) != EOF)
fputc(ch, dptr);

fclose(sptr);
fclose(dptr);
return 0;
}

关于c - 段错误,基本文件输入/输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43556443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com