day6 不能用指针的情况下复刻strcpy和strcmp,对取相反数的一些尝试

1strcpy

#include
#include
#include
int main(int argc, const char *argv[])
{
    char str[32]="";
    printf("请输入一个字符串>>");
    gets(str);
    char str2[32]="";
    for(int i=0;i         str2[i]=str[i];
    }
    puts(str2);

    return 0;
}
结果显示:

2.strcmp

#include
#include
#include
int main(int argc, const char *argv[])
{
    char str[32]={0};
    char str2[32]={0};
    printf("请输入第一个字符串>>");
    gets(str);
    printf("请输入第二个字符串>>");
    gets(str2);
    int flags=0;
    int len=(strlen(str)>strlen(str2))?strlen(str2):strlen(str);
    for(int i=0;i<=len;i++){
        if(str[i]!=str2[i]){
            flags=str[i]-str2[i];
            break;
        }
    }
    if(flags>0){
        printf("字符串1比字符串2大了:%d\n",flags);
    }else if(flags<0){
        printf("字符串2比字符串1大了:%d\n",0-flags);
    }else{
        printf("字符串1等于字符串2\n");
    }


    return 0;
}

tips:相反数

这里这个取flags的相反数难住了我,我试了~,但flags是有符号的,在他为负数时计算机内实际上是补码,取反是得不到想要的结果的,最后我试了:0-flags,原来如此简单

结果:

day6 不能用指针的情况下复刻strcpy和strcmp,对取相反数的一些尝试_第1张图片

3.终端输入一个字符串再输入一个字符看在字符串里有几个这个字符

#include
#include
#include
int main(int argc, const char *argv[])
{
    char str[32]={0};
    char c=0;
    int count=0;
    printf("请输入一个字符串:");
    scanf("%s",str);
    getchar();
    printf("请输入要计数的字符:");
    c=getchar();
    for(int i=0;i         if(c==str[i])count++;
    }
    printf("有%d个字符%c\n",count,c);
    return 0;
}


结果:

day6 不能用指针的情况下复刻strcpy和strcmp,对取相反数的一些尝试_第2张图片

你可能感兴趣的:(linux,c#)