#include <stdio.h>
#include <stdlib.h>
//A simple program that asks for the user's name and prints it back out.
int main()
{
char name[15];
printf("What is your name? ");
scanf("%c",&name);
printf("Name: %c",name);
}
无论输入是什么,笑脸总是输出。我意识到,如果我将%c更改为%s,程序将运行得很好,但是我想知道的是,为什么呢,出于所有的原因,笑脸是输出。 另外,如果第二%C被替换为%S即为什么这个C代码总是输出笑脸?
char name[15];
printf("What is your name? ");
scanf("%c",&name);
printf("Name: %s",name);
然后@符号被输入的第一字符之后打印。例如,如果输入是“Sam”,那么输出将是“S @”。任何想法为什么发生这种情况?
它并不总是输出。我不认为它确实如此。 –
可能是因为“name”的内存地址的低位字节恰好是系统上笑脸的字符值。纯粹巧合。 –
总是,*总是*检查任何'scanf'系列功能的返回,尤其是在进行用户输入时。 –