我正在尝试用%s打印int数组。但它没有用。有什么想法吗?
#include<stdio.h>
main() {
int a[8];
a[0]='a';
a[1]='r';
a[2]='i';
a[3]='g';
a[4]='a';
a[5]='t';
a[6]='o';
a[7] = '\0';
printf("%s", a);
}
它只打印一个。 我也尝试过短片,但它也不起作用。
答案 0 :(得分:2)
考虑整数的表示方式 - 如果必须,请使用调试器。查看内存,您将看到大量的0字节,%s
在达到0字节时停止。
只打印一个。
这就是它打印a
的原因。然后它遇到一个0字节然后停止。
答案 1 :(得分:1)
这是因为您正在尝试打印一个int数组,其中每个元素的大小为4个字节(4个字符,至少在32位机器上)。 printf()
将其解释为char数组,因此第一个元素如下所示:
'a' \0 \0 \0
到printf()
。当printf()
在找到的第一个\0
处停止时,它只打印'a'。
改为使用char数组。
答案 2 :(得分:1)
因为您声明了一个整数,所以那些初始化的单词字符会导致错误。您必须将其更改为char变量。但是为了节省时间,只需使用星号字符使变量成为指针,然后允许您使用双引号创建单个字符串。
答案 3 :(得分:0)
int a[8]
表示 8整数或8*(4 bytes)
的数组 - 说 32 位架构
a[0] = 'a'
将第一个int索引存储为'a''\0''\0''\0'
a[1] = 'r'
为'r''\0''\0''\0'
,依此类推。 。 。
%s
代表任何 C风格的字符串即。任何string
后跟'\0'
字符
所以
printf("%s", a);
搜索尾随'\0'
字符,只打印“a”,假设它是整个string