将输入文件、二进制和 ASCII 文件复制到新文件

标签 c

我刚开始学习 C 语言,需要有关特定程序的帮助。我需要从一个文件中读取行(一次大约 50 个字节)并将它们复制到一个新文件中,包括二进制文件。这很简单,但我不知道应该怎么做。到目前为止我有

 while ( ) {
    read (infile, buffer, 50);
    if (r< 0) {
            perror("cannot read infile");
            exit (-1);
    }
    if (r==0) {
            break;
    }
    write (outfile, buffer, r);
    }

虽然我已经打开和关闭了我需要的文件。循环应该一次读取文件 50 个字节并将它们写入一个新文件,但我不确定 while 循环的条件应该是什么。我当时在想,也许可以获取文件中的字节数并制作它,这样只要还有更多字节,它就会循环遍历文件。但是,我不完全确定该怎么做。对正确方向有帮助吗?

最佳答案

需要捕获read的返回值:

r = read (infile, buffer, 50);

考虑到循环的设置方式,您可以使用始终为真的条件:while(1)(因为您已经在到达文件末尾时中断)

关于将输入文件、二进制和 ASCII 文件复制到新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285469/

相关文章:

从指针转换为整数。到底发生了什么?

c - STM32F0使用GCC编程arm-none-eabi : hardfault in __libc_init_array

c - 为什么在将 calloc 与 unsigned int 一起使用时 coverity 会提示

c - 单精度 float 在零附近时的近似分辨率是多少

c - 为什么我不能使用此代码覆盖字符串?

在 C 中不使用 strcmp 比较 Char 数组

c - 多重处理

c - 重写 C 中的函数调用

c - `fgetc` 、 `fputc` 、 `fgets` 和 `fputs` 需要以文本模式打开的文件,而 `fread` 和 `fwrite` 需要以二进制模式打开的文件吗?

c - 在结构不是全局的情况下访问结构