#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,即
char name[15];
printf("What is your name? ");
scanf("%c",&name);
printf("Name: %s",name);
然后在输入的第一个字符后打印@符号。例如,如果输入是“Sam”,那么输出将是“S @”。关于为什么会这样的想法?
答案 0 :(得分:4)
这是未定义的行为,请尝试
scanf("%14s", name);
您将错误的参数传递给“%c”说明符,该说明符需要指向单个char
的指针。相反,您需要"%s"
说明符,因为name
是一个数组,它自动指向它的第一个元素,因此您不需要运算符的&
地址。