Cehic 发表于 2020-12-24 19:15:57

字符串函数求助

比较输入五句话的长短

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

}

风过无痕1989 发表于 2020-12-24 19:31:30

sizeof() 包括一个结束符

Cehic 发表于 2020-12-24 19:40:19

风过无痕1989 发表于 2020-12-24 19:31
sizeof() 包括一个结束符

那这也不影响吧,都加一个结束符也可以比较长度大小呀

jackz007 发表于 2020-12-24 19:48:03

            if(strlen(a)>strlen(a))      //这个地方为什么不能用sizeof(a)>sizeof(a}) 我用sizeof显示错误的结果
            注意到红色的 } ,这样写还能不出问题?

Cehic 发表于 2020-12-24 19:49:40

jackz007 发表于 2020-12-24 19:48
if(strlen(a)>strlen(a))      //这个地方为什么不能用sizeof(a)>sizeof(a

书写错误,程序里是对的

风过无痕1989 发表于 2020-12-24 19:52:09

本帖最后由 风过无痕1989 于 2020-12-24 19:53 编辑

Cehic 发表于 2020-12-24 19:40
那这也不影响吧,都加一个结束符也可以比较长度大小呀

包括这个结束符,会不会出界没试过(你减一试试),我一般都是写在外面,然后用两个整数去比较,这样不容易出错

jackz007 发表于 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,那么你呢,在此例中,你是希望得到字符数组的容量还是里面实际储存了多少字符?
页: [1]
查看完整版本: 字符串函数求助