gpt4 book ai didi

c - ANSI C - 如何逐字读取标准输入?

转载 作者:太空狗 更新时间:2023-10-29 15:18:16 24 4
gpt4 key购买 nike

代码:

#include <stdio.h>
int main(void) {
char i[50];
while(scanf("%s ", i)){
printf("You've written: %s \n", i);
}
printf("you have finished writing\n");

return 0;
}

一个问题是代码没有按预期执行。如果我输入:

abc def ghi.

它会输出:

You've written: abc
You've written: def

我该如何解决?目标是从 stdin 读取每个单词,直到它到达“ENTER”或“.”。 (点)。

最佳答案

@cnicutar 非常接近,但您显然只想从空白以外的其他内容开始阅读,并且想在到达空白时停止阅读单个单词,因此对于扫描集,您可能想要更像:

while(scanf(" %49[^ \t.\n]%*c", i)) {

在这种情况下,初始空格会跳过任何前导空格。扫描集然后读取直到它到达空格、制表符、换行符或句点。 %*c 然后读取(但丢弃)下一个字符(通常是停止扫描的字符)。

然而,当/如果您到达缓冲区的末尾时,这可能会丢弃一个字符,因此您可能想要使用 %c,并提供一个字符来代替读入。这将使您从比您提供的缓冲区更长的单个单词中恢复。

关于c - ANSI C - 如何逐字读取标准输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com