如何解决是否有用于 scanf 的格式化程序,允许我忽略空格,直到下一个字符串,我需要读取空格? C语言
为大学做一个项目
面临一个问题,我需要读取一行,我需要读取第一个字符来选择命令(使用 getchar,工作正常)。在输入字符串之前,第一个字符由不确定量的 ' '
分隔。字符串本身需要能够读取到行尾(包括 ' '
)。
这行得通吗?
char c;
c= getchar();
while(c==' ')
c=getchar();
或者最后一个 c
会被“吃掉”吗?那么我需要手动将其添加到字符串中,对吗?
作为跟进,如果我之后做了:
string[0]=c;
scanf("%20[^\n]",string);
我会覆盖第一个字符吗?
解决方法
是的,
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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。