1.fgets()函数
显然,gets()函数在很多时候并不安全,些许时候可以用fgets()函数来替代
函数原型:char *fgets(char *str, int n, FILE *stream);
函数功能:从指定的流 stream 读取一行,并把它存储在str所指向的字符串内。当读取(n-1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,和gets()不同,读到换行符,fgets()会将换行符储存。
返回值:指向char的指针(如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。如果发生错误,返回一个空指针。)
示例:
#include<stdio.h>
#define LEN 20
int main()
{
char str[LEN];
puts("Enter # to quit");
while(fgets(str,LEN,stdin)!=NULL && str[0]!='#') //stdin标准输入
fputs(str,stdout);
return 0;
}
输入:Nothing is impossible~ Believe yourself!
运行结果:
Enter # to quit
Nothing is impossible~ Believe yourself!
也就说读取一次,剩余未读取的将等待下一次读取。
2.fputs()函数
函数原型:int fputs(const char *str, FILE *stream);
函数功能:将字符串输入到指定流中
返回值:正常运行返回非负值,错误返回EOF(-1)
3.getc()函数
函数原型:int getc(FILE *stream);
函数功能:从流中读取字符,并返回该字符的整形值,并将文件位置标识符前移
返回值:int类型 返回读取字符的值
getc()与getchar()很类似,但是getc()要指明读取的文件。
#include<stdio.h>
int main()
{
int ch; //储存getc()读取的值
ch=getc(stdin);
putc(ch,stdout);
/*
两者差不多
char ch;
ch=getchar();
putchar(ch);
*/
return 0;
}
4.putc()函数
函数原型:int fputc(int ch,FILE*fp)
函数功能:在fp所指向的文件的当前读写位置写入一个字符。
返回值:int 写入成功返回该字符的整形值失败则返回EOF(-1)
putc()与fputc()等价。但是fputc()前f(function)fputc()始终是一个函数而putc函数有时被定义为宏。