当前位置: 代码迷 >> C语言 >> 比较两个字符串问题
  详细解决方案

比较两个字符串问题

热度:111   发布时间:2008-02-05 16:50:55.0
比较两个字符串问题
比较两个字符串,代码如下
#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中的&,将=换成==
----------------解决方案--------------------------------------------------------
  相关解决方案