IO入门day1

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值