arrays - sizeof 不返回输入的实际长度
问题描述
我试图在我的程序中测试 sizeof 但它不起作用。
char toFind[100];
fgets(toFind, sizeof(toFind), stdin);
printf(" %i", sizeof(toFind));
我输入的内容打印出 100。我做错了什么。
解决方案
toFind
是一个 100 个字符的数组。每个字符为 1 个字节。toFind
100 字节也是如此。
因此sizeof(toFind)
,它告诉你有多少字节toFind
,是 100。没有问题。sizeof
工作正常。
您可能对strlen(toFind)
哪个告诉您第一个 0 字节之前有多少字节感兴趣。由于fgets
在它读取的字符之后放置了一个 0 字节,这告诉您读取了多少个字符fgets
。
推荐阅读
- c++ - 在 C/C++ 中移动代码块(低级)
- laravel - Laravel 管理文件路径
- xamarin.ios - iOS Xamarin 中的文件上传
- android - 在 android Cordova 应用程序中清除 API 标头的内存转储
- python - DataGenerator 中的无限步骤
- c# - 附加多个子 C# XML
- javascript - 尝试在 Internet Explorer 11 中使用点击事件时出现问题
- graphics - 如何在three.js中通过四元数旋转立方体?
- html - 模式属性 HTML 不匹配正则表达式
- ca - Autosys - Shell 脚本返回值 -1