在 c 中给出意外输出的代码

标签 c

以下代码片段在 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/

相关文章:

c - 如何在不使用数组和字符串的情况下将小数转换为任何其他基数

c - 一个 int 具有两个值

c - YUY2比例算法

c - 字符串和链表 - C 编程

c - 在C中将两个数组相乘

c - 使用 mmap 写入文件的原子性?

c - 时间测量 UDP 套接字 C

c - 解析并绑定(bind)到 IPv6 地址

C .pc 文件警告

c++ - 可变数量的参数