比较两个字符串问题
比较两个字符串,代码如下#include<stdio.h>
main()
{
char *str1,*str2;
char *p,*q;
printf("Please input string1:\n");
scanf("%s",&str1);
printf("Please input string2:\n");
scanf("%s",&str2);
p=str1;
q=str2;
if(*p!=*q)
printf("两个字符串不相等\n");
else
{
while((*p=*q)&&(*p!='\0')&&(*q!='\0'))
{
p++;
q++;
}
if((*p=='\0')&&(*q=='\0'))
printf("两个字符串相等.\n");
else
printf("两个字符串不相等。\n");
}
}
编译是没问题,但调试时出错,哪位高手指点一下!Thank you!
搜索更多相关的解决方案:
字符
----------------解决方案--------------------------------------------------------
用的什么高级编译器???
没分配内存~
----------------解决方案--------------------------------------------------------
用的是vc6和devcpp5,结果都一样,怎么分配内存呀?
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
main()
{
char *str1=(char*)malloc(sizeof(char)*100);
char *str2=(char*)malloc(sizeof(char)*100);
char *p,*q;
printf("Please input string1:\n");
scanf("%s",str1);
printf("Please input string2:\n");
scanf("%s",str2);
p=str1;
q=str2;
if(*p!=*q)
printf("两个字符串不相等\n");
else
{
while((*p=*q)&&(*p!='\0')&&(*q!='\0'))
{
p++;
q++;
}
if((*p=='\0')&&(*q=='\0'))
printf("两个字符串相等.\n");
else
printf("两个字符串不相等。\n");
}
free(str1);
free(str2);
}
----------------解决方案--------------------------------------------------------
记住这点:存储字符窜用数组,引用字符窜用指针
----------------解决方案--------------------------------------------------------
while((*p=*q)&&(*p!='\0')&&(*q!='\0'))
应该是*p==*q吧
----------------解决方案--------------------------------------------------------
对,应该是*p==*q
这次运行就对了,谢谢各位了!
----------------解决方案--------------------------------------------------------
这个问题确实要搞得明明白白才好,以前我也和楼主样产生过这种问题!
----------------解决方案--------------------------------------------------------
用字符串比较函数做吧!
#include"stdio.h"#include"string.h"
void main()
{
char str1[10],str2[10];
char *p,*q;
p=str1;
q=str2;
printf("Please input string1:\n");
gets(str1);
printf("Please input string2:\n");
gets(str2);
if(strcmp(p,q)==0)
{
printf("两个字符串相等.\n");
}
else
{
printf("两个字符串不相等\n");
}
}
----------------解决方案--------------------------------------------------------
scanf有问题
str1和str2已经是指针了,不要再&申请内存,去掉scanf中的&,将=换成==
----------------解决方案--------------------------------------------------------