【发布时间】:2014-01-21 23:50:41
【问题描述】:
我正在编写用于检查输入的代码 现在我需要做的是检查用户是否输入了“read_set a”...... 但不管我想做什么..
如果输入为 : "read_seta,123" ,则显示无BUGS
如果输入为 : "read_set a,123" ,则会显示 BUGS
代码是:
input[100];
scanf("%s",input);
printf("%s",input);
read_set(input)
int read_set(char input[]){
printf("%c\n\n",input[8]);
printf("%s",input);
}
在 first printf 中,我希望代码显示 space " " 但它没有 而是每次都打印奇怪的字符(每次 random 字符)
而且 second printf 根本不显示
有什么问题?
【问题讨论】:
-
您的 scanf 正在读取“read_set”,当您尝试访问索引 10 时,它是未定义的。 IE。您一次只能读入 1 个字符串,如果要读入“read_set a”,则需要读入一个字符串,然后读入一个字符并将其附加到字符串中,并在其前加一个空格。即使这样,也只有 10 个字符,所以访问索引 10 仍然是未定义的(索引 9 将包含 'a')
-
@WaseemGabour 确实,您的问题是
scanf()没有按照您的想法执行。一般来说,你应该完全避免那个可怕的功能。要逐行获取用户输入,请考虑改用fgets()。 -
@H2CO3 工作完美,谢谢:)