老牛来学习 发表于 2020-4-2 23:14:23

C语言

#include<stdio.h>

int main()
{
    char str;int i;
    scanf("%s",str);
    i = strlen(str);
    printf("%d",i);
}



为什么输入   abcd<空格>后输出的是4啊??


abcd加上空格然后再加上一个自动加上的结束符不应该长度总共为6吗?

ba21 发表于 2020-4-2 23:23:38

str[] 无 \0。
*str 才有 \0

数组有固定长度,你这里长度是40。为什么要自动加\0。

倒戈卸甲 发表于 2020-4-2 23:25:01

众所周知,scanf标准输入函数以空格或回车作为字符串的界定符。然后又是众所周知,自动加上的结束符跟数组长度没关系,数组长度是可用长度

鱼尧呀 发表于 2020-4-2 23:39:53

第一:字符长度是不包含“\0”滴
第二:空格或回车是scanf中字符串的界定符
页: [1]
查看完整版本: C语言