DraHong 2021-10-23 22:43 采纳率: 100%
浏览 20
已结题

C语言基础问题 求解答

在比较函数中,for循环不执行,在输出结果中只输出s1<s2
个人找问题,觉得是for循环的判断条件i<s1.len&&i<s2.len出错,但我觉得没有问题。
但怕的就是自己觉得自己是对的,求解答。

#include<stdio.h>
#include<string.h>
#define TRUE 1
#define FALSE 0
#define MAXLEN 9

typedef struct{
    char ch[MAXLEN];
    int len;
}SString; 
//求长度 
int Howlong(SString s){
    int i;
    for(i=0;s.ch[i]!='\0';i++);
    return i;
}
//创建s2
int Creat(SString *s){
    int i;
    char c;
    printf("创建s2,请输入字符串:(以'$'结束):");
    scanf("%c",&c);
    i=0;
    while(c!='$'){
        scanf("%c",&c);
        s->ch[i]=c;
        i++;
    }
    s->ch[i]='\0';
    s->len=Howlong(*s);
    //printf("%d",s->len);
    return TRUE;
} 
//比较
void Compare(SString s1,SString s2){
    int i;
    for(i=0;i<s1.len&&i<s2.len;i++)
        if(s1.ch[i]!=s2.ch[i]){
            if(s1.ch[i]-s2.ch[i]>0){
            printf("s1>s2\n");
            return;
            }
            else if(s1.ch[i]-s2.ch[i]<0){
            printf("s1<s2\n");
            return;
            }
        }
    if(s1.len-s2.len>0)printf("s1>s2");
    else if(s1.len-s2.len<0)printf("s1<s2");
    else printf("s1==s2");
    return;
} 
//展示函数,测试使用
void Show(SString s){
    int i;
    for(i=0;s.ch[i]!='\0';i++){
        putchar(s.ch[i]);
    }
    printf("\n");
}
int main(){
    SString s1={"abcdefg"},s2;
    printf("s1=%s的字符串长度为%d\n",s1.ch,Howlong(s1));
    Creat(&s2);
    Compare(s1,s2);
    Show(s1);
}

  • 写回答

2条回答 默认 最新

  • 路漫漫其修远. 博客专家认证 2021-10-24 12:34
    关注
    1. 可以通过调试设置断点,来判断for(i=0;i<s1.len&&i<s2.len;i++)处有没有按照你设想的来运行;
    2. 调试发现,s2通过Creat函数s2.len有赋值,s1.len则为0
    3. 正确代码如下
    int main(){
        SString s1={"abcdefg"},s2;
        printf("s1=%s的字符串长度为%d\n",s1.ch,Howlong(s1));
        s1.len = Howlong(s1);
        Creat(&s2);
        Compare(s1,s2);
        Show(s1);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。