我只是在学习C并制作一个基本的“你好,NAME”程序。我已经让它工作来读取用户的输入,但它是作为数字输出而不是它们输入的内容?
我做错了什么?
#include <stdio.h>
int main()
{
char name[20];
printf("Hello. What's your name?\n");
scanf("%d", &name);
printf("Hi there, %d", name);
getchar();
return 0;
}
答案 0 :(得分:14)
您使用了错误的格式说明符%d
- 您应该使用%s
。更好的是仍然使用fgets - scanf不是缓冲安全的。
阅读文档不应该那么困难:
示例代码:
#include <stdio.h>
int main(void)
{
char name[20];
printf("Hello. What's your name?\n");
//scanf("%s", &name); - deprecated
fgets(name,20,stdin);
printf("Hi there, %s", name);
return 0;
}
输入:
The Name is Stackoverflow
输出:
Hello. What's your name?
Hi there, The Name is Stackov
答案 1 :(得分:4)
#include <stdio.h>
int main()
{
char name[20];
printf("Hello. What's your name?\n");
scanf("%s", name);
printf("Hi there, %s", name);
getchar();
return 0;
}
答案 2 :(得分:1)
当我们将输入作为用户的字符串时,使用%s
。并且地址是string
存储的地方。
scanf("%s",name);
printf("%s",name);
听到名称为您提供base address
名称的array
。 name
和&name
的值为equal
,但它们之间存在很大差异。 name
代表base address
array
,如果您计算name+1
,它会给您next address
即name[1]
的地址,但如果您执行&name+1
{1}},next address
为whole array
。
答案 3 :(得分:-2)
将您的代码更改为:
int main()
{
char name[20];
printf("Hello. What's your name?\n");
scanf("%s", &name);
printf("Hi there, %s", name);
getchar();
getch(); //To wait until you press a key and then exit the application
return 0;
}
这是因为%d用于整数数据类型,%s和%c用于字符串和字符类型