是否有 scanf 的格式化程序允许我忽略空格直到下一个字符串,我需要读取空格? C语言

问题描述 投票:0回答:1

为大学做一个项目,

面临一个问题,我需要读取一行,我需要读取第一个字符来选择命令(使用 getchar,工作正常)。在输入字符串之前,第一个字符由不确定数量的

' '
分隔。字符串本身需要能够读取到行尾(包括
' '
)。

这行得通吗?

char c;
c= getchar();
while(c==' ')
  c=getchar();

或者最后一个

c
会被“吃掉”吗?那么我需要手动将它添加到字符串中,对吗?

作为后续行动,如果我之后做了:

string[0]=c;
scanf("%20[^\n]", string);

我会覆盖第一个字符吗?

c string scanf ansi-c
1个回答
1
投票

是的,

string[0]=c;
scanf("%20[^\n]", string);

将覆盖第一个字符。

您可以在格式说明符中添加一个空白字符来告诉

scanf()
忽略空白字符。

scanf(" %20[^\n]", string);

如果你想手动跳过空白字符,你可以使用

ungetc()
把第一个想要的字符放回流

ungetc(c, stdin);
scanf("%20[^\n]", string);

或手动将字符放入数组,然后让

scanf()
存储第一个元素后读取的内容。

string[0]=c;
scanf("%20[^\n]", string + 1);
© www.soinside.com 2019 - 2024. All rights reserved.