gpt4 book ai didi

c - 是否可以从给定索引开始在 C 中使用 getLine()?

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:06 25 4
gpt4 key购买 nike

getline 函数扫描整个输入行并将其存储在给定的字符数组中。假设我想使用 getline 方法从给定索引开始扫描输入。我怎样才能做到这一点?

例如,假设输入是:你好,我叫约翰。

我希望 getline 只存储我的名字是约翰。

    char* cmd = NULL;
size_t size = 0;

getline(&cmd, &size, stdin); // code to get whole input line.

谢谢

最佳答案

getline 没有这样的能力。但是,它从默认输入流中读取,还有许多其他函数也从该流中读取。

最基本的读取函数之一是getc()。它读取一个字符。因此,要“使”getline 从第 N 个字符开始读取,请在它之前使用 N 次 getc

// "skip" N characters - read N and forget them immediatelly
for(int i=0;i<N;++i)
getc(); // remember: that's a READ, it can FAIL

getline( ... ); // remember: that's a READ, it can FAIL

当然,那样的话,所有那些被跳过的字符现在都无法恢复(好吧,几乎,但让我们跳过它)。此外,此方法不允许您“向后移动”。只能跳过“forwards”。

如果您需要回顾输入流中的任何字符,则需要某种缓冲。将全部或部分输入读入缓冲区,将缓冲区视为一个整体(数据数组等),从缓冲区中切出感兴趣的部分,将新的/下一个数据加载到缓冲区中,等等。缓冲器很好! :)

但是,这种逐一阅读有时也可以。这种“跳过”方式的主要优点是它根本不使用任何额外的内存。如果您要跳过的数据很大,如几千/兆/../字节,那么将所有数据打包到缓冲区中只是为了立即将其丢弃真的很浪费。

关于c - 是否可以从给定索引开始在 C 中使用 getLine()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666609/

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