2401_89115052 2025-07-07 20:06 采纳率: 37.5%
浏览 17

C语言实现字符串长度

当输入3个以上英文字符时,count的值都为5,什么原因?

#include<stdio.h>
int main()
{
    char arr[]="0";
    scanf("%s",arr);
    char *p=arr;
    int count=0;
    while(*p!='\0')
    {
        count++;
        p++;    
    }    
    printf("%d",count);
    return 0;
  • 写回答

9条回答 默认 最新

  • 阿里嘎多学长 2025-07-07 20:06
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解答

    问题中,输入3个以上英文字符时,count 的值都为 5,这是因为 scanf 函数在读取字符串时,遇到空格或换行符时会自动将其作为字符串的结束标志。

    在你的代码中,scanf 函数使用格式字符串 "%s" 读取字符串,"%s" 会将空格或换行符作为字符串的结束标志。因此,当你输入3个以上英文字符时,scanf 函数会将这些字符读取到 arr 数组中,并将其作为一个字符串结束。

    scanf 函数返回时,arr 数组的长度将被设置为 5,这是因为 scanf 函数读取的字符串长度加上一个空字符 \0

    如果你想正确地读取字符串长度,可以使用 strlen 函数或手动遍历字符串来计算长度。

    例如:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char arr[100];
        scanf("%s", arr);
        printf("字符串长度:%d\n", strlen(arr));
        return 0;
    }
    

    在上面的代码中,我们使用 scanf 函数读取字符串,并将其存储在 arr 数组中,然后使用 strlen 函数计算字符串的长度,并将其打印出来。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月7日