gpt4 book ai didi

c - 标准输入和标准输出的使用

转载 作者:行者123 更新时间:2023-11-30 16:55:56 25 4
gpt4 key购买 nike

我必须使用示例代码,其中必须提供文件源名称目标文件名称。然后这些名称将被发送到另一个函数,如下面的代码所示

    int def(FILE *source, FILE *dest, int level)
{
----
-----

return Z_OK;
}



int main(int argc, char **argv)
{
int ret;

/* avoid end-of-line conversions */
SET_BINARY_MODE(stdin);
SET_BINARY_MODE(stdout);

// do compression if no arguments
if (argc == 1)
{
ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION);
if (ret != Z_OK)
{
zerr(ret);
return ret;
}
// otherwise, report usage
else
{
fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr);
return 1;
}
}

return 0;
}

我不明白 stdinstdout 如何传递输入和输出文件名。此外,我无法提供正确的源文件名和目标文件名序列作为命令参数。大多数时候我得到zpipe usage: zpipe [-d] < source > dest .

更新:完整的示例代码位于 this link

最佳答案

当使用stdin时和stdout ,文件名不被传递。当 main 时,这些文件已经打开。被调用,程序只能读/写它们。然后,父进程(通常是 shell)负责将数据提供给 stdin并使用 stdout 中的数据做一些事情程序的内容。

在您的示例用法中 zpipe < sourcefile > destinationfile ,shell 打开 sourcefile 进行读取,并将打开的文件提供给 zpipe,同时创建 destinationfile 进行写入,并写入任何内容程序输出到其 stdoutzpipe 程序不会获取任一文件的名称,它只获取打开的文件句柄。

此外,< sourcefile> destinationfile不是 zpipe 的参数。 Shell 按上述方式解析和处理它们,zpipe 不会将它们作为参数获取。

关于c - 标准输入和标准输出的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129538/

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