首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手关于fgets的疑问,该怎么解决

2012-04-14 
新手关于fgets的疑问gets不检查越界,书上建议用fgets,char *fgets(char *s, int n, FILE *stream)但是会

新手关于fgets的疑问
gets不检查越界,书上建议用fgets,char *fgets(char *s, int n, FILE *stream);但是会读取换行符\n,我用下面的代码调试了一下

vs2010:

#include<stdio.h>

int main(void)
{
char c[20],*p;
fgets(c,21,stdin);
return 0;
}

input:hhhhhhhhhhhhhhhhhhhh(20) c[0]-c[19]为'h',c[20]为0,没有'\n'
n改为18
input:hhhhhhhhhhhhhhhhhhhh c[0]-c[17]为'h',c[18]为0,没有'\n'

最后发现只有当输入的字符少于n-1时,才有'\n',这是为什么?第一次读取换行符了吗?在替代gets的时候怎么比较容易去除读取的换行符?




[解决办法]

探讨
那用这个替换gets,不是会经常多出\n吗,怎么办

热点排行