利用标准I/O操作中的fopen、fread、fwrite、fseek、fclose等函数实现文件显示命令cat,读文件结束是用函数feof(fpr)返回文件指针为fpr的文件结束符
时间: 2024-05-14 07:12:12 浏览: 90
如下是利用标准I/O操作中的fopen、fread、fwrite、fseek、fclose等函数实现文件显示命令cat的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <filename>\n", argv[0]);
return 1;
}
FILE *fp = fopen(argv[1], "rb");
if (!fp) {
printf("Failed to open file %s\n", argv[1]);
return 1;
}
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
char *buffer = (char *)malloc(size);
if (!buffer) {
printf("Failed to allocate memory\n");
fclose(fp);
return 1;
}
size_t result = fread(buffer, 1, size, fp);
if (result != size) {
printf("Failed to read file %s\n", argv[1]);
fclose(fp);
free(buffer);
return 1;
}
fwrite(buffer, 1, size, stdout);
fclose(fp);
free(buffer);
return 0;
}
说明:
首先检查命令行参数是否正确,如果不正确则退出程序。
使用fopen函数打开文件,如果失败则退出程序。
使用fseek函数将文件指针移到文件末尾,然后使用ftell函数获取文件大小,最后使用fseek函数将文件指针移到文件开头。
使用malloc函数分配文件大小的内存空间,如果失败则退出程序。
使用fread函数读取文件内容到内存中,如果读取失败则退出程序。
使用fwrite函数将内存中的文件内容输出到标准输出中。
关闭文件和释放内存空间,然后退出程序。
注意事项:
代码中使用了二进制读取模式,因此可以正确读取包含二进制数据的文件。
代码中使用了标准输出,因此可以将文件内容输出到终端。
代码中没有处理文件结束符,因此可能会将文件结束符输出到终端。
相关推荐


















