我想在数组中打印String。
#include "stdio.h"
int main(){
char str[201];
/*scanf("%[^\n]", str);*/
printf("%s\n", str);
const char* A[26] = {"A", "B", "X", "P", "Q", "R", "M", "N", "C", "E", "D", "K", "L", "J", "O", "S", "H", "T", "U", "F", "V", "Z", "G", "W", "I"};
printf("%s\n", A[5]);
}
但输出
答案 0 :(得分:2)
正在打印的垃圾值是因为未初始化str
。
使用注释的scanf
行,它会正常工作。
或者如果您不想使用该行,我建议您像str
A
答案 1 :(得分:1)
这是非常基本的。
正在打印的值是垃圾,因为每当您在大多数语言中打印未初始化的字符串时,输出都是垃圾,因为当您声明一个10个字符的字符串时,堆栈上只分配了10个字节。没有具体的价值。
看起来你得到的输出是加密的。 (感谢Alter Mann评论)。
但是,当您使用fgets
,scanf
或任何其他功能阅读字符串时,如果它未被初始化,则无关紧要。无论用户输入什么值,它都存储在字符串中。因此,取消评论scanf
将导致完美输出。如果您对[{1}}进行了评论,因为您不想使用它,只需将其初始化为:
scanf
并放置你想要的任何东西。
此外,我不确定这是否是一个好方法,所以请查看:Proper way to initialize a string in C
基本上,如果您不想阅读完整的答案,输出完全正确,因为您尚未初始化字符串,而您获得的char str[201] = {"a", "b"};
存储在{{ 1}},你打印。