一次读写一行字符(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;
}