大一新生提问c语言相关问题

为什么图中s[1].x的值是整个字符串的值而不是空格前那部分字符串?

img

img

字符串结束以末尾的'\0'字符标记。
char x[4],只能保存3个字符,而你输入了4个字符,导致字符串没有结束标记,会一直显示后面的内容,直到遇到0。
-
还有,scanf字符串的时候不需要加&,数组名本身就是个指针。

程序没有问题啊,是不是你第一个字符串数量超过4个了。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/756304
  • 这篇博客你也可以参考下:C语言:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。
  • 除此之外, 这篇博客: c语言之格式控制字符与输入输出函数中的 2.2、C格式控制字符与S格式控制字符 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • /*C格式控制字符:输出单个字符
    
     s格式控制字符:输出字符串
      %s,%ms,%-ms
    
      %m.ns:输出m位的字符,从字符串的左端开始截取n位的字符,如果n位小于m位,则左端补空格
    
    
    */
    #include "stdio.h"
    int main(void)
    {
    double f=123.456;
    printf("%s\n","Helloworld");      // 按%s格式输出
    printf("%10.3s\n","Helloworld");   // 按 %m.ns格式输出
    printf("%-10.3s\n","Helloworld");  // 按%-m.ns格式输出
    printf("%ms\n",f);
    printf("%-ms\n",f);
    return 0;
    }