Linux软件编程 IO输入输出

利用fgets和fputs实现文件内容复制

头文件:

#ifndef __COPY_H__
#define __COPY_H__

extern int CopyFile(const char *pfile1, const char *pfile2);

#endif

功能函数:

#include <stdio.h>
#include "copy.h"

int CopyFile(const char *pfile1, const char *pfile2)
{
    FILE *fp1 = NULL;
    FILE *fp2 = NULL;
    char temp[4096] = {0};
    char *ptemp = NULL;

    fp1 = fopen(pfile1, "w");
    if (fp1 == NULL)
    {
        goto error2;
    } 

    fp2 = fopen(pfile2, "r");
    if (fp2 == NULL)
    {
        goto error1;
    }

    while (1)
    {
        ptemp = fgets(temp, sizeof(temp), fp2);
        if (ptemp == NULL)
        {
            break;
        }
        fputs(temp, fp1);
    }

    fclose(fp1);
    fclose(fp2);

    return 0;

error1:
    fclose(fp1);
error2:
    return -1;

}

主函数:

#include <stdio.h>
#include "copy.h"

int main(void)
{
    char filename1[256] = {0};
    char filename2[256] = {0};
    int ret = 0;

    printf("输入目的文件\n");
    gets(filename1);
    printf("输入源文件\n");
    gets(filename2);

    ret = CopyFile(filename1, filename2);
    if (-1 == ret)
    {
        printf("拷贝失败\n");
    }

    printf("拷贝成功\n");

    return 0;
}

利用fprintf和fscanf读取写入csv文件

#include <stdio.h>

int main(void)
{
    FILE *fscore = NULL;
    FILE *favg = NULL;   
    int ret = 0;
    int score1 = 0;
    int score2 = 0;
    int score3 = 0;
    double avg = 0;

    fscore = fopen("score.csv", "r");
    if (fscore == NULL)
    {
        goto err2;
    }

    favg = fopen("avg.csv", "w");
    if (favg == NULL)
    {
        goto err1;
    }

    while (1)
    {
        ret = fscanf(fscore,"%d,%d,%d", &score1, &score2, &score3);
        avg = (score1 + score2 + score3) / 3.0;

        if (EOF == ret)
        {
            break;
        }

        fprintf(favg, "%.2lf\n", avg);
    }

    fclose(fscore);
    fclose(favg);

    return 0;

err1:
    fclose(fscore);
err2:
    return -1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值