C语言学习

关于fgets()的"\n"的去除

最近学习scanf(),由于空格问题,无法输入一个句子。后面找到了gets()函数和fgets()函数。由于各种原因,最好的都是推荐使用fgets(),但是fgets()不清除缓存区的”\n“有的时候调用就很麻烦,于是写了自己写了一个函数解决该问题。

#include<stdio.h>
#include<string.h>
#define len 100
void xdeleten(char *a);
int main()
{
 	char a[len];
	fgets(a,len,stdin);
	xdeleten(a);
	printf("%s",a);
	return 0;	
 } 
/**************************实现函数********************************************
*函数原型:	   xdeleten(char *x)
*功  能:	   去除fgets()自动换行
输入参数: 		要去除的数组指针 
输出参数: 		none
*******************************************************************************/
void xdeleten(char *a)
{
	if(a[strlen(a)-1] == '\n')
	a[strlen(a)-1] = '\0';
}

网上还有一些算法,比如:

void clearEnter(char *p)
{
    while(*p)
    {
        if(*p == '\n')
            *p = '\0';
        p++;
    }
}

但是可以很容易找到缺点,摘录如下:

但该函数有个问题,在此处处理fgets()函数获得的字符串尾的换行是有效的。假如字符串中间不是从fgets()函数获得,而字符串中间有换行符,则会将字符串中第一个换行符替换为’\0’,也就丢弃了字符串的其他部分。

感谢阅读,刚开始学习C语言,理解尚浅,若有不足,欢迎指正^ _ ^

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页