4. 利用标准I/O操作中的fopen、fread、fwrite、fseek、fclose等函数实现文件显示命令cat和cp的功能。
时间: 2024-05-15 17:19:40 浏览: 11
1. cat命令实现:
```c++
#include <iostream>
#include <cstdio>
int main(int argc, char* argv[]) {
FILE* fp;
char buffer[1024];
if (argc < 2) {
std::cout << "Usage: cat <filename>" << std::endl;
return 1;
}
fp = fopen(argv[1], "r");
if (fp == nullptr) {
std::cout << "Error opening file" << std::endl;
return 1;
}
while (fgets(buffer, 1024, fp)) {
std::cout << buffer;
}
fclose(fp);
return 0;
}
```
2. cp命令实现:
```c++
#include <cstdio>
int main(int argc, char* argv[]) {
FILE* source;
FILE* destination;
char buffer[1024];
size_t count;
if (argc < 3) {
printf("Usage: cp <source> <destination>\n");
return 1;
}
source = fopen(argv[1], "rb");
if (source == nullptr) {
printf("Error opening source file\n");
return 1;
}
destination = fopen(argv[2], "wb");
if (destination == nullptr) {
printf("Error opening destination file\n");
fclose(source);
return 1;
}
while ((count = fread(buffer, 1, 1024, source))) {
fwrite(buffer, 1, count, destination);
}
fclose(source);
fclose(destination);
return 0;
}
```