字符串函数求助
比较输入五句话的长短#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);
}
sizeof() 包括一个结束符 风过无痕1989 发表于 2020-12-24 19:31
sizeof() 包括一个结束符
那这也不影响吧,都加一个结束符也可以比较长度大小呀 if(strlen(a)>strlen(a)) //这个地方为什么不能用sizeof(a)>sizeof(a}) 我用sizeof显示错误的结果
注意到红色的 } ,这样写还能不出问题? jackz007 发表于 2020-12-24 19:48
if(strlen(a)>strlen(a)) //这个地方为什么不能用sizeof(a)>sizeof(a
书写错误,程序里是对的 本帖最后由 风过无痕1989 于 2020-12-24 19:53 编辑
Cehic 发表于 2020-12-24 19:40
那这也不影响吧,都加一个结束符也可以比较长度大小呀
包括这个结束符,会不会出界没试过(你减一试试),我一般都是写在外面,然后用两个整数去比较,这样不容易出错 本帖最后由 jackz007 于 2020-12-24 20:05 编辑
Cehic 发表于 2020-12-24 19:49
书写错误,程序里是对的
sizeof() 获取变量占用的内存空间,而 strlen() 获取的是字符数组中字符的数量,就好比一个容量为 100 只鸡蛋的盒子里只装了 3 只鸡蛋,那么,sizeof() 得到的是 100,而 strlen() 将得到 3,那么你呢,在此例中,你是希望得到字符数组的容量还是里面实际储存了多少字符?
页:
[1]