c语言fput函数 fgets和fputs函数的用法

C语言对文件操作,用fputs函数不能把字符串写入文件?读写一个字符数据
经过前面c语言fput函数的学习c语言fput函数,c语言fput函数我们学习了fread()、fwrite()函数的操作,这两个函数都是对一段“内存块”进行读写操作 。那么,C语言还提供了fgetc()、fputc()函数 , 对文件中的一个字符进行读写操作 。这些函数的定义如下c语言fput函数:
int fgetc(FILE *stream);
函数说明:从stream文件指针所指向的文件读取1个字符,通过函数的返回值返回 。例如:
char c = fgetc(fp);
就是从fp指向的文件,读取1个字符的数据,通过函数返回值 , 设置给字符变量c 。
int fputc(int c, FILE *stream);
函数说明:把参数c表示的字符,写入stream文件指针所指向的文件 。例如:
char c = 'M';
fputc(c, fp);
就是把参数c表示的字符变量,写入文件指针fp指向的文件 。如下是一个程序测试例子:
可以看到,新建一个test.txt文件,调用fputc()函数,把一个字符写入到文件中 。然后,再重新打开文件 , 读取文件的数据,调用fgetc()函数读取一个字符,得到的数据是刚刚写入的字符 。所以,通过这个例子,c语言fput函数我们学习了fgetc()、fputc()函数的操作,对文件进行一个字符的读写操作 。
3.5 读写一行字符数据
C语言提供了fgets()、fputs()函数对文件进行读写“一行”的数据 , 字符串以'\n'字符换行,注意,所谓的“一行”数据,它的最后一个有效字符是’\n’,表示换行符号 。字符串的结束符 , 还是以’\0’为结尾,表示字符串结束符 。其中fgets()函数的定义如下:
char *fgets(char *buf, int size, FILE *stream);
函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为 , buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串 。
当读取到换行符时,或者到达文件末尾时,结束文件的读取操作 。
返回值:读取数据成功 , 返回存储数据的缓存地址,就是参数buf的地址 。如果读取数据失败,返回NULL 。例如,读取文件完,没有数据可以再读?。?则返回NULL 。
int fputs(const char *buf, FILE *stream);
函数说明:把参数buf指针指向的字符串,写入到stream指向的文件 。参数buf是一个字符串指针,必须指向一个合法的字符串 。合法的字符串是以字符串结束符'\0'结束,表示一个字符串的结尾 。
返回值:写入数据成功,返回成功写入的字符个数 。失败返回EOF标记 。
如下是一个程序测试例子:
程序运行结果如下:
可以看到 , 程序调用fputs()函数,往打开的test.txt文件写入数据 。直接写入一个字符串 。然后,关闭文件,再重新打开文件 。调用fgets()函数读取数据,读取数据的时候,遇到回车换行的字符'\n',表示一行数据 , 那么,就返回读取到的一行数据 。
在实际的项目开发过程中,fgets()函数非常有用 。例如 , 我们定义一个config.txt文件,里面存放一些系统的配置信息,文件的格式如下:
cat /etc/config.txt
sys_pwd=123456
ApCliAuthMode=WPA2PSK
ApCliEncrypType=AES
ApCliChannel=1
ApCliDefaultKeyID=1
那么,文件的配置信息是一行一行数据,所以,可以用fgets()函数,快速读取出每一行系统配置信息 。
c语言问题,是不是fgets和fputs函数无法读取和写入回车字符//用函数fputs写入时,可以通过写入\n或\r\n来写入换行符,但fputs不会自动在字符串的末尾追加换行符 。
//函数fgets的原型是:char* fgets(char *str,int num,FILE *stream) 。

推荐阅读