【问题标题】:How to accept string inputs with spaces in C [duplicate]如何在C中接受带有空格的字符串输入[重复]
【发布时间】:2014-03-25 05:57:50
【问题描述】:

编辑:我认为我的问题来自我正在使用的编译和 linux VM。请忽略。

我是 C 新手,无法接受带空格的字符串输入。我已经在这个网站上搜索了答案,但是所提出的解决方案都没有奏效,一旦到达第一个空格,fgets 和 scanf 都会截断字符串。我也试过 scanf("%99[^\n]", name) 也不管用。

这是我的代码:

#include<stdio.h>

int main ()
{
 char name[100];

 printf("What is your name? "); 
 fgets(name, 100, stdin);
 printf("Hello %s. Nice to meet you\n", name);
 return 0;
}

我也试过scanf,但是如果输入的是john smith,它只会输出john。

谢谢

【问题讨论】:

标签: c string


【解决方案1】:

Scanf 有截断输入以匹配其格式的习惯。没有任何花哨的要求或其他工具,您可以使用fgets 从标准输入等获取输入,然后使用strtok 等函数将您的字符串标记为您需要的内容(姓名、姓氏等)。

【讨论】:

  • 不,不要使用gets
  • 我知道 get 会发生缓冲区溢出问题,但只是为了获得一个简单的字符串,您可以使用它...
  • 但是你也可以使用fgets,它同样简单而且没有缓冲区溢出。 gets 没有任何借口
  • 我猜你是对的。编辑了我的答案。
  • 很公平。删除了我的反对票
猜你喜欢
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多