【发布时间】:2023-03-28 06:35:01
【问题描述】:
#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@”。关于为什么会发生这种情况的任何想法?
【问题讨论】:
-
它并不总是输出那个。我认为不会。
-
可能是因为“name”的内存地址的低位字节恰好是系统中笑脸的字符值。纯属巧合。
-
总是,总是检查任何
scanf系列函数的返回,尤其是在接受用户输入时。
标签: c