【发布时间】: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?