使用以下代码:
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()
允许使用空格
发布于 2009-08-08 04:39:19
试一试
char str[11];
scanf("%10[0-9a-zA-Z ]", str);
希望这能有所帮助。
发布于 2009-08-09 14:31:26
这个示例使用了一个倒置的scanset,所以scanf一直在接受值,直到它遇到'\n'-- newline,这样也节省了空格
#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;
}
发布于 2013-08-22 11:24:47
你可以使用这个
char name[20];
scanf("%20[^\n]", name);
或者这个
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);
https://stackoverflow.com/questions/1247989
复制相似问题