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

发布时间:2024年01月20日

1strcpy

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

?? ?return 0;
}
结果显示:

2.strcmp

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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,原来如此简单

结果:

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

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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<strlen(str);i++){
?? ??? ?if(c==str[i])count++;
?? ?}
?? ?printf("有%d个字符%c\n",count,c);
?? ?return 0;
}


结果:

文章来源:https://blog.csdn.net/m0_60953264/article/details/135657750
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。