在 c 的 main 中传递参数
Posted
技术标签:
【中文标题】在 c 的 main 中传递参数【英文标题】:passing arguments in main in c 【发布时间】:2017-01-03 18:04:39 【问题描述】:我正在努力接受一个参数名称并将其传递给我制作的程序。我制作了 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 %s\n\n", argv[0], argv[1]); //check for the argument names
return 0;
当我执行“./copy 123 filename.txt”时:
123 filename.txt
出现。
但是当我执行“./copy
(null) XDG_SESSION_ID=2231
出来。请帮助我的程序接受整个“ 我在 linux 上使用 GNU 库进行 C 编程。
【问题讨论】:
./copy "<" filename.txt"
我正在尝试让 copy.c 接受不以您建议的双引号开头的参数。
引号不会在参数中传递。如果你想明确地传递引号,你必须用反斜杠转义它们。
我第一条评论中的错字,我的意思是:./copy "<" filename.txt
欢迎来到 Stack Overflow。请注意,在这里说“谢谢”的首选方式是投票赞成好的问题和有用的答案(一旦你有足够的声誉这样做),并接受对你提出的任何问题最有帮助的答案(这也给出了你的声誉小幅提升)。请查看About 页面以及How do I ask questions here? 和What do I do when someone answers my question?
【参考方案1】:
shell解释:
./copy < filename.txt
并将<
和filename.txt
视为将标准输入设置到指定文件的指令,并且这些不会作为参数传递给您的程序。所以这个调用在没有额外参数的情况下运行./copy
(并且标准输入来自文件而不是终端)。
如果您希望 <
作为参数传递(以及文件名),请引用它:
./copy '<' filename.txt
./copy "<" filename.txt
./copy \< filename.txt
如果文件名中有空格,你也需要引用它。
【讨论】:
以上是关于在 c 的 main 中传递参数的主要内容,如果未能解决你的问题,请参考以下文章