读书人

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

发布时间: 2012-04-14 17:14:21 作者: rapoo

新手关于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吗,怎么办

读书人网 >C语言

热点推荐