strcmp和strncmp的区别运用

//**int main(void){
char str1[32] = “sang”;
char str2[32];
int ret;

printf(“请输入您的姓名:”);
scanf("%s",str2);
//gets(str2);
ret = strncmp(str1,str2,4);
printf(“ret = %d\n”,ret);

return 0;*/
上述这个项目无论你输入多少个字符输出的结果都会是大于或等于0的结果,,因为规定了取输入的前四个字符,而str1规定的是4个字符,所以无论输入值为何都不会有负值的出现。

/**char str1[32] = “sang”;
char str2[32];
int ret;

printf(“请输入您的姓名:”);
scanf("%s",str2);
//gets(str2);
ret = strcmp(str1,str2);
printf(“ret = %d\n”,ret);*/
而这个项目中的函数变了,strcmp进行比较时则会比较你输入的整个字符;相比较的情况下strncmp会比较size的字符,两者有所不同。

注意
/**char str1[32] = “sang”;
char str2[32];
int ret;

printf(“请输入您的姓名:”);
//scanf("%s",str2);
//gets(str2);

fgets(str2,sizeof(str1),stdin);
ret = strcmp(str1,str2);
printf(“ret = %d\n”,ret);*/
项目当中如果改用fgets这个函数输入的话,,项目永远不会输出0这个结果。应该将strcmp这个函数换为strncmp。才能解决问题。

发布了4 篇原创文章 · 获赞 7 · 访问量 59

猜你喜欢

转载自blog.csdn.net/owlpower/article/details/105236439
今日推荐