为什么图中s[1].x的值是整个字符串的值而不是空格前那部分字符串?
字符串结束以末尾的'\0'字符标记。
char x[4],只能保存3个字符,而你输入了4个字符,导致字符串没有结束标记,会一直显示后面的内容,直到遇到0。
-
还有,scanf字符串的时候不需要加&,数组名本身就是个指针。
程序没有问题啊,是不是你第一个字符串数量超过4个了。
/*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;
}