Tag: 命令行参数

我能得到的最简单的getopt程序?

在关于如何使用getopt() 链接上做了一些阅读之后,我试图得到一个小例子。 我想要的是: ./prog -v # show me prog version ./prog -f filename # just show me the filename I entered from the command line 这是我到目前为止写的: #include #include #include int main(int argc, *argv[]) { char VER[] = “0.1.1”; int opt; opt = getopt(argc, argv, “vf:”); char *filename; while (opt != -1) { switch(opt) { case […]

如何获取从命令行参数调用的文件的目录?

例如,我在ubuntu中调用我的可执行文件: ./foo temp / game1.txt temp / game2 txt 我使用realpath()来查找game1.txt的路径。 但是使用它会给我一个完整的路径,包括game1.txt名称。 例如,它将作为 / home / * /Download/temp/game1.txt 我想删除该字符串上的game1.txt,以便我可以使用该字符串来输出该文件夹中的其他文件。 两个问题。 realpath()可以用于这种操作吗? 还有更好的方法吗? 有人能给我一个快速的方法来删除“game1.txt”,这样字符串就会以“/ home / * / Download / temp /”保存为字符串格式(不是字符)吗? 非常感谢你。

在Win32 API中从命令行解析的字符的未处理exception

我必须解析命令行参数并将某些char转换为整数。 我有以下代码: TCHAR *token1; token1 = strchr(cmd_line, L’+’); MessageBox(NULL, token1, _T(“test”), NULL); //char *str = “+10 frogs”; TCHAR *endptr =” “; long n = strtol(token1 + 1, &endptr, 0); if (!*endptr) MessageBox(NULL, “No error”, _T(“test”), NULL); else MessageBox(NULL, “error”, _T(“test”), NULL); 在命令提示符下发送命令“WesOPC.exe +10 -regserver”时,消息框显示“+10 -regserver”。 我需要将10存储为整数。因此,我使用了strtol但显示了带错误的messagebox。 当我试图调试它时,在行看到的错误 long n = strtol(token1 + 1, &endptr, 0); […]

命令行参数和文件输入

上个学期我从命令行参数输入文件时遇到了可怕的时间,我需要将它用于我正在进行的练习。 我编写了一个简单的shell来让它工作: prob_5.c #include int main(int argc, char *argv[]) { int i; FILE *fp; int c; for (i = 1; i < argc; i++) { fp = fopen(argv[i], "r"); if (fp == NULL) { fprint(stderr, "cat: can't open %s\n", argv[i]); continue; } while ((c = getc(fp)) != EOF) { putchar(c); } fclose(fp); } return 0; […]

命令行参数和C中的读取文件/打印文本

我正在尝试使用命令行参数和解析C中的文本文件。基本上我希望能够输入两个数字,如1和4,并让它读取文本文件的列然后将其打印到stdout。 我希望能够做到这样的事情: PID TTY TIME CMD 449 ttys000 0:00.35 -bash 1129 ttys001 0:00.35 -bash 25605 ttys001 0:00.15 vi prog.c 6132 ttys002 0:00.11 -bash 6208 ttys002 0:00.03 vi test 并做: ./your_prog 1 4 < data.txt PID CMD 449 bash 1129 -bash 25605 vi 6132 -bash 6208 vi 所以我需要输入我要打印的列,将文件重定向到“data.txt”并让它处理文件并打印出来。 到目前为止,我的代码是: #include int main(int argc, char **argv){ //int […]

二进制搜索字符数组?

我在理解如何使用字符串进行二进制搜索方面遇到了一些麻烦。 我输入的是命令行提示符中的一个句子,即argv [1],(argv [0]是我输出的可执行文件的名称)。 这就是它的样子: ./a.out “This is my sentence.” 并包含在我的文件中也是一个.h文件,它包含两个数组 – 一个包含某些名词集的名词数组和一个包含一组动词的动词数组。 我想要做的只是检查argv [1]中的动词和名词是否在名词或动词数组中,我想将它们打印出来。 但是,我很难理解如何解析句子中的每个单词,如上所示,并将它们与动词或名词数组进行比较,因为C中没有字符串(与C ++相反)。 任何人都可以提供算法/伪代码或如何这样做的想法? 如果是这样,将非常感谢!

使用getchar从命令行参数编码程序,并使用putchar发送到解码

所以我正在尝试制作编码/解码程序。 到目前为止,我陷入了编码部分。 我必须能够从命令行参数中获取消息,并使用种子随机数对其进行编码。 该数字将由用户作为第一个参数给出。 我的想法是从getchar获取int并只是添加随机数结果。 然后我想把它恢复到标准输出,以便另一个程序可以将其作为参数读取,以使用相同的种子对其进行解码。 到目前为止,我无法让putchar正常工作。 关于我应该解决或关注什么的任何想法? 提前致谢! #include #include int main(int argc, char *argv[]) { int pin, charin, charout; // this verifies that a key was given at for the first argument if (atoi(argv[1]) == 0) { printf(“ERROR, no key was found..”); return 0; } else { pin = atoi(argv[1]) % 27; // […]

在C中访问命令行参数

如果这是一个菜鸟问题,请原谅我,但我是C的初学者,只学习一段时间。 我试着编写一个总结两个数字的程序(作为应用程序的参数提供)。 代码是这样的: #include #include int main( int argc, char** argv) { int a = atoi(argv[0]); int b = atoi(argv[1]); int sum = a+b; printf(“%d”, sum); return 0; } 但是我得到了不正确的结果 – 即使对于5和10这样的小输入也是如此。这里有什么问题?

在C中的参数之前和之后处理命令行选项

到目前为止,我一直在使用getopt_long来解析命令行C程序的选项。 有没有办法在遇到非选项参数时停止getopt_long解析? 如果没有,在C中处理这个问题的最佳方法是什么? 举个例子,我想以类似于git的方式处理命令,并且在命令之前有一般参数,在它之后有特定于命令的参数: git [general options] [command options] 例如: git –bare commit -a git -p –bare status -s -p和–bare是常规选项,可以与所有命令一起使用,而-a特定于commit命令, -s特定于status命令。 使用getopt_long将首先尝试解析所有选项,然后保留要处理的非选项参数。 理想情况下,一旦我点击非选项(即命令),就会停止解析,然后将剩余的参数传递给特定于命令的选项解析器。

getopt switch语句永远不会遇到默认情况

我试过搜索,但没有找到重复/类似的问题。 为什么“默认”在这种情况下永远不会触发? 为一个课程做一些以前的家庭作业,为秋天做准备,我在C中遇到了getopt()的问题。 以下是有问题的特定行: while ((c = getopt(argc, argv, “i:o:”)) != -1) { switch (c) { case ‘i’: inFile = strdup(optarg); break; case ‘o’: outFile = strdup(optarg); break; default: usage(); //this prints the “usage” statement and exits cleanly. } } 我的问题是,怎么称呼 ./fastsort abcd 不打印使用并退出?