如何从在C中有前导空格的stdin中获取字符串输入?
需要一个以空格开头的输入字符串的解决方案吗 我知道一种在输入中包含空格的方法如何从在C中有前导空格的stdin中获取字符串输入?,c,string,input,whitespace,stdin,C,String,Input,Whitespace,Stdin,需要一个以空格开头的输入字符串的解决方案吗 我知道一种在输入中包含空格的方法 scanf("%[^\n]s", s); 但它只适用于单词之间的空格。 我需要一个以空格开头的字符串的解决方案。 我还需要变量中的起始空格要获得一行用户输入,请使用fgets() 不要使用scanf(“%[^\n]s”,s)或获取。他们遇到缓冲区溢出和其他问题。我可以问一下为什么字符串中必须包含前导空格吗?@RobertSsupportsMonicaCellio实际上是为了在线判断中的问题解决。@user31210
scanf("%[^\n]s", s);
但它只适用于单词之间的空格。
我需要一个以空格开头的字符串的解决方案。
我还需要变量中的起始空格要获得一行用户输入,请使用fgets()
不要使用scanf(“%[^\n]s”,s)代码>或
获取代码>。他们遇到缓冲区溢出和其他问题。我可以问一下为什么字符串中必须包含前导空格吗?@RobertSsupportsMonicaCellio实际上是为了在线判断中的问题解决。@user3121023scanf(“%[^\n]”,s)代码>此项忽略起始空间:/@AzizAhmedscanf(“%[^\n]”,s)代码>不忽略起始空间。相反,使用先前的scanf(“%[^\n]”,s)
在stdin
和scanf(“%[^\n]”,s)中留下'\n'
代码>退出,原因是'\n'
。不要悲伤。在您知道它为什么不好之前,不要使用scanf()
。此外,“%[^\n]s”
中的尾随s
不正确。
#define S_MAX_LENGTH
char s[S_MAX_LENGTH + 2];
if (fgets(s, sizeof s, stdin)) {
s[strcspn(s, "\n")] = '\0'; // Should code want to lop off a potential trailing \n
....