1拷贝文件
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "用法: %s 源文件 目标文件\n", argv[0]);
exit(EXIT_FAILURE);
}
FILE *src = fopen(argv[1], "r+");
if (!src) {
perror("无法打开源文件");
exit(EXIT_FAILURE);
}
FILE *dst = fopen(argv[2], "w+");
if (!dst) {
perror("无法打开目标文件");
fclose(src);
exit(EXIT_FAILURE);
}
char buffer[128];
size_t n;
while ((n = fread(buffer, 1, sizeof(buffer), src)) > 0) {
fwrite(buffer, 1, n, dst);
}
fclose(src);
fclose(dst);
printf("文件拷贝完成!\n");
return 0;
}
2打印程序
#include <stdio.h>
#include <stdlib.h>
int main() {
char filename[128];
printf("请输入文件名: ");
scanf("%s",filename); // 注意:gets存在缓冲区溢出风险
FILE *fp = fopen(filename, "r");
if (!fp) {
perror("无法打开文件");
exit(EXIT_FAILURE);
}
char line[128];
while (fgets(line, sizeof(line), fp)) {
printf("%s", line);
}
fclose(fp);
return 0;
}
3打印文件行数
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "用法: %s 文件名\n", argv[0]);
exit(EXIT_FAILURE);
}
FILE *fp = fopen(argv[1], "r");
if (!fp) {
perror("无法打开文件");
exit(EXIT_FAILURE);
}
int line = 0;
char buffer[128];
while (fgets(buffer, sizeof(buffer), fp)) {
line++;
}
fclose(fp);
printf("文件行数: %d\n", line);
return 0;
}