【IO】Day1 fgets和fputs的使用

1.使用fgets完成统计文件行号:

fgets.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//argc:执行文件时传入文件的个数
//argv:文件数组

int main(int argc, const char *argv[])
{
		//判断文件个数是否为2
		if(argc!=2)
		{
			printf("输入的文件错误\n");
			printf("usage:./a.out srcfile dstfile\n");
			return -1;
		}

		FILE *fp=fopen(argv[1],"r"); //定义文件指针
		if(fp==NULL)  //以只读形式打开文件1
		{
			perror("fopen error");
			return -1;
		}

		char buf[100]; //定义一个容器存放读取的字符,最多100个
		int count=0;  //定义行计数变量
		while((fgets(buf,sizeof(buf),fp)) != NULL)  //读取内容到buf
		{	
			if(buf[strlen(buf)-1]=='\n')
			{
				count++;  //读取倒数第二个字符是换行时+1
			}			
		}
		fclose(fp);  //关闭文件
		printf("该文件共计:%d行\n",count);

		return 0;
}

运行结果如下:

ubuntu@ubuntu:day1$ ./a.out  01fopen.c
该文件共计:27行

2. 使用fgets,fputs实现2个文件拷贝:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//argc:执行文件时传入文件的个数
//argv:文件数组

int main(int argc, const char *argv[])
{
		//判断文件个数是否为3
		if(argc!=3)
		{
			printf("输入的文件错误\n");
			printf("usage:./a.out srcfile dstfile\n");
			return -1;
		}

		FILE *fp1=fopen(argv[1],"r"); //定义文件指针以只读形式打开
		FILE *fp2=fopen(argv[2],"w"); //定义文件指针以只写形式打开
		if(fp1==NULL || fp2==NULL)  
		{
			perror("fopen error");
			return -1;
		}

		char buf[100];      //定义一个容器存放读取的字
		while((fgets(buf,sizeof(buf),fp1)) != NULL)  //从fp1文件中读取内容到buf,NULL为读取到文件末尾或读取失败
		{	
			fputs(buf,fp2); //将buf输出到fp2中
		}
		fclose(fp1);
		fclose(fp2);
		printf("拷贝成功\n");

		return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值