【发布时间】:2021-11-16 15:20:20
【问题描述】:
我尝试在我的程序中测试 sizeof 但它不起作用。
char toFind[100];
fgets(toFind, sizeof(toFind), stdin);
printf(" %i", sizeof(toFind));
我输入的内容打印出 100。 我做错了什么。
【问题讨论】:
-
sizeof在编译时进行评估。您是否对strlen感兴趣? -
唯一你做错的就是使用
"%i"打印sizeof, use"%zu"instead。你对sizeof的期望是错误的,它确实应该打印出100,这就是toFind的大小。 -
如果您确实使用了
strlen,您可能会注意到大小比您预期的多一倍。那是因为fgets包含换行符(如果存在)。
标签: arrays c c-strings sizeof strlen