如何利用strcmp函数比较两个字符串是不是相同?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用strcmp函数比较两个字符串是不是相同?相关的知识,希望对你有一定的参考价值。

参考技术A strcmp比较2个以\'\0\'结束的字符串是否相同的。\\x0d\\x0a你将a[100],b[100]结束后增加一个字符\'\0\'。\\x0d\\x0a就可以用strcmp(a,b)==0来判断字符串是否相同了。\\x0d\\x0a\\x0d\\x0a如:\\x0d\\x0a\\x0d\\x0achar a[100],b[100];\\x0d\\x0aint i;\\x0d\\x0ai=0;\\x0d\\x0awhile(scanf("%c",&a[i]),a[i] !=\'x\');\\x0d\\x0aa[i] = \'\0\';\\x0d\\x0ai=0;\\x0d\\x0awhile(scanf("%c",&b[i]),b[i] !=\'x\');\\x0d\\x0ab[i] = \'\0\';\\x0d\\x0aif(strcmp(a,b)==0)\\x0d\\x0aprintf("字符串相同");\\x0d\\x0aelse\\x0d\\x0aprintf("字符串不同");

用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为 :int strcmp

写一个函数,实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char*p1,char*p2)
设p1指向字符串s1,p2指向字符串s2, 要求:当s1=s2时,返回0,s1<>s2时,返回它们二者的第一个不同字符的ASCII码;如果s1>s2,输出正值,如果s1<s2,则输出负值#include<stdio.h>
#include<string.h>
int strcmp(char *p1, char *p2)
int bad;
while(*p1!=*p2)
bad=p1-p2;
p1++;
p2++;

return bad;
void main()
char a[100],b[100],;
int m;
printf("Input string a:\n");
gets(p1);
printf("Input string b:\n");
gets(p2);
m=strcmp(a,b);
printf("The number is:\n");
printf("%d\n",m);
请问有什么错啊跪求答复

首先 无条件的给bad赋值为 0;
其次,你的判断条件有问题 条件改为 (*p == *q )&&(*p != ‘0’)&&(*q!=‘0')此时,进入循环 执行:p++,q++;
while()循环外面 执行 求bad的语句;
建议!!
附代码:
#include<stdio.h>

int str(char* p1,char* p2)

while(*p1 && *p2 && *p1 == *p2)

p1++;
p2++;

return *p1 - *p2;


int main(void)

char a[100] = "abcdefg";
char b[100] = "abcdasd";
int ret = 0;
ret = str(a,b);
printf("%d\n",ret);

return 0;

参考技术A 如果第一个字符就相等返回什么呢?你应该把bad初始化为0
如果第一个字符就不同,那么就可以判定字符串的大小了,就不能继续循环了,而且你的循环你也没判断字符串末尾
int strcmp(char *p1, char* p2)
while (*p1 && *p2 && *p1 == *p2)
p1++; p2++;

return *p1 - *p2;
参考技术B bad=p1-p2;还是 bad=*p1-*p2; 参考技术C strcmp没反括号 参考技术D 你觉得你的这个程序是可以编译的吗?
你大括号都没有匹配上啊。

以上是关于如何利用strcmp函数比较两个字符串是不是相同?的主要内容,如果未能解决你的问题,请参考以下文章

怎么判断两个字符串是不是完全相同?

C语言问题。。。strcmp怎么运用啊?

C++中判断两个字符串是不是相等,怎么判断

strcmp()函数的用法

C语言中判断两个字符串是不是相同的方法

c语言中如何判断两个字符串相等