qq_57726140 2024-03-04 20:30 采纳率: 0%
浏览 7

C字符串输入输出问题求解答

佬们知道这是为什么吗?
str2设置了10个大小,我以为只能输入进10个字符
但是为什么能一直输入存到数组里
但是加空格的话,只能把空格前的内容存到数组里

img

img

  • 写回答

3条回答

  • 关注

    首先要先明白字符串是怎么存储的
    我们通过char *变量给了字符串的首地址,字符串会从首地址开始,一直向后存储,并在末尾加上结束符'/0'。而str2是在栈空间内的,不需要提前申请地址(虽然直接使用未声明的地址可能会产生问题),因此,当字符串被存在str2时,字符串的首个字符实际是存在str2的首地址,然后后面的每一个字符都紧接着上一个字符的地址存储,最后加上'/0'。当使用printf时,会从传入的首地址开始,不断向后读取,直至遇到'/0'
    scanf中,如果加上了空格,就会自动将字符串的结果读取到变量,之后在回车之前,无论怎么输入都不会再存到变量里了(因为你只需要读取一个变量),因此,只存空格前是因为scanf把空格之后的给排除了

    评论

报告相同问题?

问题事件

  • 创建了问题 3月4日

悬赏问题

  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal