首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何允许使用scanf输入空格?

如何允许使用scanf输入空格?
EN

Stack Overflow用户
提问于 2009-08-08 04:37:24
回答 9查看 414.3K关注 0票数 163

使用以下代码:

代码语言:javascript
复制
char *name = malloc(sizeof(char) + 256); 

printf("What is your name? ");
scanf("%s", name);

printf("Hello %s. Nice to meet you.\n", name);

用户可以输入他们的名字,但是当他们输入一个像Lucas Aardvark这样的空格的名字时,scanf()会在Lucas之后截断所有内容。如何让scanf()允许使用空格

EN

回答 9

Stack Overflow用户

发布于 2009-08-08 04:39:19

试一试

代码语言:javascript
复制
char str[11];
scanf("%10[0-9a-zA-Z ]", str);

希望这能有所帮助。

票数 141
EN

Stack Overflow用户

发布于 2009-08-09 14:31:26

这个示例使用了一个倒置的scanset,所以scanf一直在接受值,直到它遇到'\n'-- newline,这样也节省了空格

代码语言:javascript
复制
#include <stdio.h>

int main (int argc, char const *argv[])
{
    char name[20];

    // get up to buffer size - 1 characters (to account for NULL terminator)
    scanf("%19[^\n]", name);
    printf("%s\n", name);
    return 0;
}
票数 63
EN

Stack Overflow用户

发布于 2013-08-22 11:24:47

你可以使用这个

代码语言:javascript
复制
char name[20];
scanf("%20[^\n]", name);

或者这个

代码语言:javascript
复制
void getText(char *message, char *variable, int size){
    printf("\n %s: ", message);
    fgets(variable, sizeof(char) * size, stdin);
    sscanf(variable, "%[^\n]", variable);
}

char name[20];
getText("Your name", name, 20);

DEMO

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1247989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档