gpt4 book ai didi

c - 即使提到了字符数组,那么为什么当我们使用 scanf 时它需要的不仅仅是这个,甚至打印(在 C 中)

转载 作者:行者123 更新时间:2023-11-30 20:01:22 25 4
gpt4 key购买 nike

我正在做一个简单的程序,假设我已将 char 数组声明为 name[5]然后,当我将 scanf 与 %s 一起使用时,我的输入的长度会大于该长度,直到出现空格或“\0”为止。我只是想知道,如果我声明一个限制为 5 的数组,那么为什么它在打印时不会在长度为 5 时停止,以及为什么它甚至打印“Iamtopofthisworld”而不是“Iamto”。PGM

char name[5];
printf("Enter the character");
scanf("\t%s",&name);
printf("\nThe output obtaiend from user %s",name);

请任何人帮助我解决这个疑问

最佳答案

  • 在 C 语言中,(典型)系统不会检查您是否正在访问数组内部,因此打印不会在 5 个字符处停止。
  • 要将输入长度限制为 5 个字符,您可以使用 %5s
  • 要保存终止空字符,您必须分配 6 个字节来读取 5 个字符。我的意思是你应该使用char name[6];
  • 您应该将 name 而不是 &name 传递给 scanf。类型不同。

关于c - 即使提到了字符数组,那么为什么当我们使用 scanf 时它需要的不仅仅是这个,甚至打印(在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com