1. fputs
函数名: fputs
功 能: 送一个字符到一个流中
用 法: int fputs(char *string, FILE *stream);
说明:
fputs是一种函数,具有的功能是向指定的文件写入一个字符串(不自动写入字符串结束标记符‘\0’)。成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为非负整数;否则返回EOF(符号常量,其值为-1)。
缓冲区string中保存的是以'/0'结尾的字符串,fputs将该字符串写入文件stream,但并不写入结尾的'/0'。与fgets不同的是,fputs并不关心的字符串中的'/n'字符,字符串中可以有'/n'也可以没有'/n'
程序例:
#include
int main(void)
{
/* write a string to standardoutput */
fputs("Hello world\n", stdout);
return 0;
}
也可以输出到一个文件流
2. fgets
函数名: fgets
功 能: fgets
从指定的文件中读一行字符到调用者提供的缓冲区中
用 法: char *fgets(char *string, int size,FILE *stream);
说明:
现在说说fgets函数,参数string是缓冲区的首地址,size是缓冲区的长度,该函数从stream所指的文件中读取以'/n'结尾的一行(包括'/n'在内)存到缓冲区string中,并且在该行末尾添加一个'/0'组成完整的字符串。
如果文件中的一行太长,fgets从文件中读了size-1个字符还没有读到'/n',就把已经读到的size-1个字符和一个'/0'字符存入缓冲区,文件中剩下的半行可以在下次调用fgets时继续读。
如果一次fgets调用在读入若干个字符后到达文件末尾,则将已读到的字符串加上'/0'存入缓冲区并返回,如果再次调用fgets则返回NULL,可以据此判断是否读到文件末尾。
注意:
对于fgets来说,'/n'是一个特别的字符,而'/0'并无任何特别之处,如果读到'/0'就当作普通字符读入。如果文件中存在'/0'字符(或者说0x00字节),调用fgets之后就无法判断缓冲区中的'/0'究竟是从文件读上来的字符还是由fgets自动添加的结束符,所以fgets只适合读文本文件而不适合读二进制文件,并且文本文件中的所有字符都应该是可见字符,不能有'/0'。
程序例:
#include
#include
int main(void)
{
FILE *stream;
char string[] = "This is atest";
char msg[20];
/* open a file for update */
stream =fopen("DUMMY.FIL", "w+");
/* write a string into the file*/
fwrite(string, strlen(string), 1,stream);
/* seek to the start of the file*/
fseek(stream, 0, SEEK_SET);
/* read a string from the file */
fgets(msg, strlen(string)+1, stream);
/* display the string */
printf("%s", msg);
fclose(stream);
return 0;
}