新手关于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的时候怎么比较容易去除读取的换行符?
[解决办法]