gpt4 book ai didi

c - 在 c 的 main 中传递参数

转载 作者:IT王子 更新时间:2023-10-29 01:05:08 25 4
gpt4 key购买 nike

我正在努力接受参数名称并将其传递给我制作的程序。我制作了 C 代码 (copy.c),它接收文件名并在 Linux 控制台终端中打印出来。简单地说,当我这样做时它会起作用:

./copy filename.txt

这工作正常,与 cat 产生的结果相同。

但是,当我输入时却没有:

./copy < filename.txt

所以我认为“<”必须中断复制以接受下一个参数,即实际文件名。我试图通过首先让 main 将“ 来解决这个问题

有什么办法可以解决这个问题吗?如果它是“123 filename.txt”,这有效。

这是我的副本.c:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//#include <string.h>
#define bufferSize 200

int main(int argc, char* argv[])
{
char buffer[bufferSize];
int fd;
int argu_no = 1;

printf("%s %s\n\n", argv[0], argv[1]); //check for the argument names
return 0;
}

当我执行“./copy 123 filename.txt”时:

123 filename.txt

出现。

但是当我执行“./copy < filename.txt”

(null) XDG_SESSION_ID=2231

出来了。请帮助我的程序接受整个“< filename.txt”作为第一个参数或解决这个问题。

我在 Linux 上使用 GNU 库进行 C 编程。

最佳答案

shell 解释:

./copy < filename.txt

并处理 <filename.txt作为将标准输入设置为指定文件的指令,这些指令不会作为参数传递给您的程序。所以这个调用运行 ./copy没有额外的参数(并且标准输入来自文件而不是您的终端)。

如果你想要 <作为参数传递(以及文件名),引用它:

./copy '<' filename.txt
./copy "<" filename.txt
./copy \< filename.txt

如果文件名中有空格,也需要用引号引起来。

关于c - 在 c 的 main 中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176916/

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