首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用stdout进行搜索的方法

用stdout进行搜索的方法
EN

Stack Overflow用户
提问于 2014-08-15 15:49:42
回答 2查看 2.2K关注 0票数 5

当文件指针arg是stdout时,可以使用file吗?

当我试图覆盖最后一个",“以逗号分隔的列表中带有”)时,我尝试过这样做。“

例如:

代码语言:javascript
运行
复制
fprintf(stdout, "1,2,3,4,");

fseek(stdout, -1, SEEK_CUR);

fprintf(stdout, ")");

为实现:

1,2,3,4)

而不是

1,2,3,4,

不幸的是,我输出了后者

EN

Stack Overflow用户

回答已采纳

发布于 2014-08-15 15:57:40

只有当fseek引用可查找流时,才能在stdout上成功地使用stdout

如果您的程序的标准输出到终端或类似的地方(这通常是默认的)或管道,那么fseek就会失败。如果因为执行了输出重定向的程序而将其转到文件中,那么fseek可以像对任何其他文件一样工作。

任何时候调用fseek时,都应该检查它的返回值,看看它是成功的还是失败的。

假设stdout是可查找的可能是错误的做法,因为这通常是一个错误的假设。

您的目标是在项之间使用", "打印一系列项,而不是在第一项之前或最后一项之后。fseek和打印一个'\b'都不是一个很好的方法来实现您想要做的事情。与其打印最后的逗号,然后尝试删除它,你应该打印逗号,只有当你没有打印在列表中的最后一项。检测到这是非常重要的。

但是,一种更简单的方法是在每个项目前面加上逗号,除非它是第一个。您不能总是判断是否要打印序列的最后一个值。你总是能分辨出你是否在打印第一张。

伪码:

代码语言:javascript
运行
复制
bool is_first_item = true
for each item
    if is_first_item
        is_first_item = false
    else
        print ", "
    end if
    print item
end for 
票数 6
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25329670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档