在c的main中传递参数



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

./copy filename.txt

运行良好,与cat生成的结果相同。

但是,当我输入:

./copy < filename.txt

所以我认为"<"一定是打断了复制,以接受下一个参数,即实际的文件名。我试图绕过它,首先让主接受"<将">

有办法绕过这个吗?如果是"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 %snn", argv[0], argv[1]); //check for the argument names
    return 0;
}

当我这样做的时候。/copy 123 filename.txt":

123 filename.txt

出现。

但是当我这样做的时候。/复制& lt;filename.txt "

(null) XDG_SESSION_ID=2231

出来。请帮我把整个程序接受"<文件名。txt"作为第一个参数,或者绕过这个>

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

shell解释:

./copy < filename.txt

并将<filename.txt作为指令来设置命名文件的标准输入,而这些不会作为参数传递给程序。因此,此调用运行./copy时没有额外的参数(并且使用来自文件而不是终端的标准输入)。

如果您希望将<作为参数传递(以及文件名),请引用它:

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

如果文件名中有空格,也需要加上引号

相关内容

  • 没有找到相关文章

最新更新