C语言fgets函数和gets函数区别,导致字符串比较出现问题-创新互联

fgets函数用来读文件中的数据。
但是呢,最好不要用这个函数读出来的一行数据和你输入的字符串作比较,
因为如果是读一行,他会在\n之后再加\0;

目前创新互联公司已为1000+的企业提供了网站建设、域名、虚拟空间、网站改版维护、企业网站设计、桐柏网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

而一般的gets不会这样,他会把\n转换成\0.
所以说,用strcmp比较的时候,总会因为后面这个小细节而发生错误。
给个例子:(自己写程序将最后的那个\n换成\0).

void datedelete(char* str4)
{FILE* fp4, * fp44;
	char str[50];
	fp4 = fopen("user", "r");
	fp44 = fopen("temp", "w");
	while (!feof(fp4))
	{fgets(str, 50, fp4);
		{int k;
		  k = strlen(str);
		  str[k-1] = '\0'; }     //关键:手动转换。
		if (strcmp(str, str4) == 0)
		{	fputs("该数据已被删除", fp44);
		}
		else
		{	fputs(str, fp44);
			fputc('\n', fp44);
		}
	}
	fclose(fp4);
	fclose(fp44);
	remove("user");
	rename("temp", "user");
}
int main()
{char ch[50];
	gets_s(ch,50);
	datedelete(ch);
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:C语言fgets函数和gets函数区别,导致字符串比较出现问题-创新互联
网址分享:http://azwzsj.com/article/csdjdj.html