假设文件a.txt有960个字节,写一个程序,打开文件a.txt,和文件b.txt,循环读出a.txt文件的内容,每次读出100个字节,立即写入文件b.txt,循环结束后关闭打开的两个文件。要求用C语言,Unix标准函数 open, close, read, write。
时间: 2024-09-28 20:05:03 浏览: 33
在C语言中,你可以使用`unistd.h`库中的`open`, `close`, `read`, 和 `write` 函数来实现这个功能。下面是一个简单的示例程序:
```c
#include <fcntl.h> // 包含文件描述符相关的函数
#include <stdio.h>
#include <unistd.h>
#define BUFFER_SIZE 100
int main() {
char a[] = "a.txt"; // 文件a.txt的路径
char b[] = "b.txt"; // 文件b.txt的路径
int file_a = open(a, O_RDONLY); // 打开a.txt以只读模式
int file_b = open(b, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); // 打开b.txt以写入模式,并创建新文件
if (file_a == -1 || file_b == -1) { // 检查文件操作是否成功
perror("Error opening files");
return 1;
}
off_t bytes_read = 0; // 用于跟踪已读取的字节数
char buffer[BUFFER_SIZE]; // 存储读取内容的缓冲区
while ((bytes_read = read(file_a, buffer, BUFFER_SIZE)) > 0) { // 循环读取a.txt直到文件结束
write(file_b, buffer, bytes_read); // 写入b.txt
}
if (bytes_read == 0) { // 如果读到的是EOF,则文件已经完全读取
printf("End of file reached.\n");
} else if (bytes_read == -1) { // 检查是否有错误发生
perror("Error reading from file");
}
close(file_a); // 关闭a.txt
close(file_b); // 关闭b.txt
return 0;
}
```
注意:此程序假设`a.txt`文件大小小于等于100字节的倍数。如果实际大小不是这种情况,可能需要适当调整读取和写入的大小。
阅读全文