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

eimct9ow  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(122)

为大学做项目,
面对一个问题,我需要读取一行,我需要读取第一个字符来选择命令(使用getchar,效果很好)。第一个字符被一个不确定的' '分隔,直到输入一个字符串。字符串本身需要能够读取,直到行尾(包括' ')。
这样行吗?

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

或者最后一个c会被“吃掉”吗?那么我需要手动将它添加到字符串中,对吗?
作为后续,如果我做了之后:

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

我会覆盖第一个字符吗?

s71maibg

s71maibg1#

是的,

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);

相关问题