【发布时间】:2010-11-17 21:25:52
【问题描述】:
使用以下代码:
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() 允许空格
【问题讨论】:
-
请注意,更惯用的是 'malloc(sizeof(char) * 256 + 1)' 或 'malloc(256 + 1)',甚至更好(假设 'name' 将严格在本地使用) '字符名[256+1]'。 '+1' 可以作为空终止符的助记符,它需要包含在分配中。
-
@Barry - 我怀疑
sizeof(char) + 256是一个错字。
标签: c string printf scanf whitespace