以下代码片段在 Turbo C++ 编译器中给出了意外的输出:
char a[]={'a','b','c'};
printf("%s",a);
为什么不打印 abc
?在我的理解中,字符串在 C 中被实现为一维字符数组。
其次,%s
和%2s
有什么区别?
最佳答案
这是因为您的字符串不是以零结尾的。这将起作用:
char a[]={'a','b','c', '\0'};
%2s
指定打印输出的最小宽度。由于您正在打印 3 个字符的字符串,因此将被忽略。但是,如果您使用 %5s
,您的字符串将在左侧填充两个空格。
关于在 c 中给出意外输出的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454824/