使用C从用户输入中获取文本

时间:2014-02-27 10:28:16

标签: c

我只是在学习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;
}

4 个答案:

答案 0 :(得分:14)

您使用了错误的格式说明符%d - 您应该使用%s。更好的是仍然使用fgets - scanf不是缓冲安全的。

阅读文档不应该那么困难:

scanffgets

示例代码:

#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 名称arrayname&name的值为equal,但它们之间存在很大差异。 name代表base address array,如果您计算name+1,它会给您next addressname[1]的地址,但如果您执行&name+1 {1}},next addresswhole 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用于字符串和字符类型