注册 登录
编程论坛 C语言论坛

这两种求字符串长度的方法差别在哪里?第二种错在哪里?求大佬解答。

hzc904217071 发布于 2021-03-07 19:34, 1707 次点击
这段代码就可以求出来字符串里面字母的个数
#include<stdio.h>
#include<string.h>
int fun(char str[])
{
    //请在该注释语句下方编写代码
    int i=0,num=0;
    int len=strlen(str);
    for( ;i<len;i++)
    {
        if(str[i]>=65 && str[i]<=90)
        {
            num++;
        }
        else if(str[i]>=97 && str[i]<=122)
        {
            num++;
        }
    }
    return num;
}
int main()
{
    char str[20]="I love you";
    int num=fun(str);
    printf("%d",num);
    return 0;
}



但是为什么下面这段代码求出的字符串里面的字母个数是错的
#include<stdio.h>
int fun(char str[])
{
    //请在该注释语句下方编写代码
    int i=0,num=0;
    int len=sizeof(str)/sizeof(str[]);
    for( ;i<len;i++)
    {
        if(str[i]>=65 && str[i]<=90)
        {
            num++;
        }
        else if(str[i]>=97 && str[i]<=122)
        {
            num++;
        }
    }
    return num;
}
int main()
{
    char str[20]="I love you";
    int num=fun(str);
    printf("%d",num);
    return 0;
}
3 回复
#2
吹水佬2021-03-07 20:59
int fun(char str[])
{
    //请在该注释语句下方编写代码
    int i=0,num=0;
    int len=sizeof(str)/sizeof(str[]);

这里的 sizeof(str) 相当于 sizeof(&str[0])

#3
sssooosss2021-03-08 10:53
共同学习
#4
rjsp2021-03-08 10:56
int fun(char str[])
{
    str 的类型是 char*,是一个指针
}
int main()
{
    char str[20]="I love you";
    str 的类型是 char[20],是一个数组
}
1