鱼C论坛

 找回密码
 立即注册
查看: 695|回复: 6

[已解决]字符串函数求助

[复制链接]
发表于 2020-12-24 19:15:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比较输入五句话的长短

#include<stdio.h>
#include<string.h>
int main()
{
    char a[5][25],b[5][25];
    int j;
    for(int i=0; i<5; i++)
    {
        j=0;
        printf("请输入第%d句话:",i+1);
        while((a[i][j++]=getchar())!='\n')
            ;
    }
    printf("你输入了下边5句话:\n");
    for(int i=0; i<5; i++)
    {
        printf("%s",a[i]);
    }
    for(int i=0; i<5; i++)
    {
        for(j=0; j<4-i; j++)
        {
            if(strlen(a[j])>strlen(a[j+1]))                    //这个地方为什么不能用sizeof(a[j])>sizeof(a[j+1}) 我用sizeof显示错误的结果
            {
                strcpy(b[j],a[j]);
                strcpy(a[j],a[j+1]);
                strcpy(a[j+1],b[j]);
            }
        }
    }
    printf("其中最长的是:%s",a[4]);
    printf("其中最短的是:%s",a[0]);

}
最佳答案
2020-12-24 20:04:02
本帖最后由 jackz007 于 2020-12-24 20:05 编辑
Cehic 发表于 2020-12-24 19:49
书写错误,程序里是对的


        sizeof() 获取变量占用的内存空间,而 strlen() 获取的是字符数组中字符的数量,就好比一个容量为 100 只鸡蛋的盒子里只装了 3 只鸡蛋,那么,sizeof() 得到的是 100,而 strlen() 将得到 3,那么你呢,在此例中,你是希望得到字符数组的容量还是里面实际储存了多少字符?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-24 19:31:30 | 显示全部楼层
sizeof() 包括一个结束符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-24 19:40:19 | 显示全部楼层
风过无痕1989 发表于 2020-12-24 19:31
sizeof() 包括一个结束符

那这也不影响吧,都加一个结束符也可以比较长度大小呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 19:48:03 | 显示全部楼层
            if(strlen(a[j])>strlen(a[j+1]))        //这个地方为什么不能用sizeof(a[j])>sizeof(a[j+1}) 我用sizeof显示错误的结果
            注意到红色的 } ,这样写还能不出问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-24 19:49:40 | 显示全部楼层
jackz007 发表于 2020-12-24 19:48
if(strlen(a[j])>strlen(a[j+1]))        //这个地方为什么不能用sizeof(a[j])>sizeof(a[j+1}) ...

书写错误,程序里是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 19:52:09 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-24 19:53 编辑
Cehic 发表于 2020-12-24 19:40
那这也不影响吧,都加一个结束符也可以比较长度大小呀


包括这个结束符,会不会出界没试过(你减一试试),我一般都是写在外面,然后用两个整数去比较,这样不容易出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 20:04:02 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-24 20:05 编辑
Cehic 发表于 2020-12-24 19:49
书写错误,程序里是对的


        sizeof() 获取变量占用的内存空间,而 strlen() 获取的是字符数组中字符的数量,就好比一个容量为 100 只鸡蛋的盒子里只装了 3 只鸡蛋,那么,sizeof() 得到的是 100,而 strlen() 将得到 3,那么你呢,在此例中,你是希望得到字符数组的容量还是里面实际储存了多少字符?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表