我写了这个脚本:
#include <stdio.h>
#include <string.h>
int main(void)
{
int k = 65;
char key[1];
printf("%s\n", key);
key[0] = k;
printf("%s\n", key);
}
第一个printf()没有提供预期的结果。但是第二个打印的是“ AA”而不是A。这是什么原因?我只希望打印A。谢谢您的帮助。
答案 0 :(得分:2)
更改printf("%s\n", key);
到:
printf("%c\n", *key);
仅打印字符
答案 1 :(得分:1)
%s
格式说明符将打印一个字符串,该字符串是NUL终止的数组中的字符序列。您的key
数组只有一个字符,没有NUL终止符,因此您会得到未定义的行为。
要使用%s
合法打印字符串,您需要传递(指向)一个包含NUL终止序列的数组,您可以通过将其声明为char key[2];
并将其设置为{{1 }}。或者,您可以使用key[1] = '\0'
打印单个字符(在这种情况下,您需要传递字符而不是数组-例如%c
)