标题:这个程序错在哪了,关于指针引用字符串的,谢谢
只看楼主
liuhxw
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-12-26
结帖率:50%
已结贴  问题点数:20 回复次数:2 
这个程序错在哪了,关于指针引用字符串的,谢谢
写一个函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char *p1,char*p2);设p1指向字符串s1,p2指向字符串s2.要求当s1=s2时,返回值为0;若s1不等于s2,返回他们两者第一个不同字符的ASC11码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之间差为79-65=14)。如果s1>s2,则输出正值;如果s1<s2,则输出负值。
#include<stdio.h>
int main()
{
    int strcmp(char*p1,char*p2);
    char*a,s1[10];
    char*b,s2[10];
    a=s1;
    b=s2;
    printf("请输入a和b:");
    scanf("%s%s",a,b);
    printf("%d\n",strcmp(a,b));
    return 0;
}
int strcmp(char*p1,char*p2)
{
    while(*p1==*p2)
    {
        p1++;
        p2++;
    }
    return(*p1-*p2);
}
输入两个相同的字符串,差值不为0,为什么
2016-12-26 15:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
程序代码:
#include <stdio.h>

int your_strcmp( const char* s1, const char* s2 );

int main( void )
{
    //char s1[10];
    //char s2[10];
    //printf("请输入a和b:");
    //scanf("%s%s",a,b);
    char s1[] = "abc";
    char s2[] = "abc";

    printf( "%d\n", your_strcmp(s1,s2) );
    return 0;
}
int your_strcmp( const char* s1, const char* s2 )
{
    for( ; *s1 && *s1==*s2; ++s1,++s2 );
    return *s1 - *s2;
}
2016-12-26 15:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
简而言之,字符串以'\0'结尾
2016-12-26 15:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472943-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024385 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved