一次读写一行字符(fgets fputs)

一次读写一行字符(fgets fputs)

#include "stdafx.h"
#include <string.h>


#if 0

文本操作:

----写入(字符串)一行字符:

int fputs(char* str,FILE* fp)
//str:指向字符串的指针 fp:指向文件流结构的指针
//成功则返回0 失败返回EOF


----读取(字符串)一行字符:

char *fgets(char *str, int len, FILE* fp); 

//正常返回str的指针 出错或者遇到文件结尾返回空指针NULL

1.最多读len - 1个字符,
2.中途遇到'\n'(会被读取)或者 EOF 结束本次读取。
3.读取结束后,自动追加'\0'。

从fp所指向的文件中,至多读 length-1 个字符, 送入字符数组 str
中,如果在读入length-1 个字符结束前遇\n 或 EOF,读入即结束,字
符串读入后在最后加一个‘\0’ 字符。


----安全输入数据

char buf[10];  //stdin(键盘输入) stdout和stderr(往屏幕上输入)

fgets(buf, 10, stdin);

fputs("ssofnsfn", stdout);

printf("%s", buf);

#endif


int _tmain(int argc, _TCHAR* argv[])
{
	FILE* fp = fopen("ascill.txt", "w+");//注意指令为w+,fgets需要进行读取操作
	if (NULL == fp)
		return -1;

	printf("ret = %d\n", fputs("aaaaaa\n", fp));
	printf("ret = %d\n", fputs("bbbbbb\n", fp));
	printf("ret = %d\n", fputs("cccccc\n", fp));
	printf("ret = %d\n", fputs("dddddd\n", fp));
	printf("ret = %d\n", fputs("eeeeee", fp));
	//windows系统在数据结尾(eeeeee)不会自动+\n
	//linux系统在数据结尾会自动+\n

	rewind(fp);//重置文件的指针使其指向文件数据的头

	char buf[1024];

	//读到 buf 内的字符串,可含有格式控制字符,比如 '\n' '\r' '\n' '\t'等,
	//如果直接用作比较等用途,可能得不到正确的结果
	while (fgets(buf, 1024, fp) != NULL)//为了读出每一行的数据
	{
		//读一次buf就被覆盖一次
		printf("buf len = %d  ", strlen(buf));//有\n的话也包括在内
		printf("%s\n", buf);
	}
	
	fclose(fp);

	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值