You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中使用sizeof无法返回输入内容实际长度是什么原因

C语言sizeof相关问题解答

问题核心原因

你混淆了sizeof运算符和字符串长度统计函数的作用:

  • sizeof是编译期执行的运算符,它的返回值是目标变量/类型占用的总内存字节数,和运行期存入的内容没有任何关联。你定义的char toFind[100]是长度为100的char类型数组,编译阶段就已经确定它占用100字节内存,因此sizeof(toFind)的结果永远是100,和你输入的内容无关。
  • 如果你需要获取实际输入的字符串的长度,应该使用标准库的strlen函数,该函数会从数组首地址开始遍历计数,直到遇到字符串结束符\0为止,返回的结果就是你输入的有效字符的长度。

修正后的参考代码

#include <stdio.h>
#include <string.h>

int main() {
    char toFind[100];
    fgets(toFind, sizeof(toFind), stdin);
    printf("数组总占用内存:%i\n", sizeof(toFind));
    printf("输入的字符串实际长度:%zu\n", strlen(toFind));
    return 0;
}

额外注意事项

fgets读取输入时会将你按下回车输入的换行符\n也存入数组,因此strlen统计的结果会比你输入的可见字符多1,不需要的话可以手动移除数组末尾的换行符。

内容的提问来源于stack exchange,提问作者jonasPamm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:36:04