Tag: argv

如何在C中找到argv 的长度

#include #include #include int main(int argc, char *argv[]){ int fir; //badly named loop variable char *input[] = calloc( strlen(argv), sizeof(char)); //initializing an array for( fir = 1; fir< strlen(argv); fir++){ //removing the first element of argv strcat(input, argv[fir]); // appending to input } } 我得到的错误是第7行。它说“从不兼容的指针类型传递’strlen’的参数1”。 我得到了strcat函数的相同错误。 它还说“给了一个char **但是期望一个const char * ”这两个函数。 我正在尝试使用argv所有元素填充一个新数组,除了第一个。 我试过argv = &argv[1]但它没有用。 […]

如何在C程序中设置命令行参数,以便在用户键入“ps aux”时可以看到它?

键入“ps aux”时,ps命令显示运行程序的命令参数。 有些程序会将此更改为指示状态的方式。 我试过改变argv []字段,但它似乎不起作用。 是否有一种标准的方法来设置命令行参数,以便在用户键入ps时它们出现? 也就是说,这不起作用: int main(int argc,char **argv) { argv[0] = “Hi Mom!”; sleep(100); } 09:40 imac3:~$ ./x & [2] 96087 09:40 imac3:~$ ps uxp 96087 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND yv32 96087 0.0 0.0 2426560 324 s001 S 9:40AM 0:00.00 ./x 09:40 imac3:~$ cat xc

C argv数据的最大大小是什么

可能重复: 关于main函数的命令行参数 我如何确定可以传递到C main的最大数据大小(int argc,char * argv)? 标准中的某个宏是否会定义这个? 数据是否由主进程“拥有”(即我的程序存储此数据)还是由操作系统以某种方式“拥有”,我可以获得指向它的指针?

C中命令行参数`argv`的类型是什么?

我正在阅读C Primer Plus中关于命令行参数argv一节,我很难理解这句话。 它说, 程序将命令行字符串存储在内存中,并将每个字符串的地址存储在指针数组中。 该数组的地址存储在第二个参数中。 按照惯例,指向指针的指针称为argv ,用于参数值。 这是否意味着命令行字符串作为指向char数组的指针数组存储在内存中?

在C中使用带有非选项参数的getopt

我正在C中创建一个处理大量命令行参数的小程序,所以我决定使用getopt为我排序。 但是,我希望两个非选项参数(源文件和目标文件)是必需的,因此在调用程序时必须将它们作为参数,即使没有标志或其他参数。 这是我用标志处理参数的简化版本: while ((c = getopt(argc, argv, “i:d:btw:h:s:”)) != -1) { switch (c) { case ‘i’: { i = (int)atol(optarg); } case ‘d’: { d = (int)atol(optarg); } case ‘b’: buf = 1; break; case ‘t’: time = 1; break; case ‘w’: w = (int)atol(optarg); break; case ‘h’: h = (int)atol(optarg); break; case ‘s’: […]

如何编写自己的isnumber()函数?

我是C的新手,我正在考虑如何自己编写这个函数。 我从命令行中获取一个参数,因此它存储在argv数组中,我想决定它是否是数字。 最简单的方法是什么? 谢谢 #include int isNumber(int *param) { if (*param > 0 && *param < 128) return 1; return 0; } int main(int argc, char *argv[]) { if (argc == 2) isNumber(argv[1]); else printf("Not enought parameters."); return 0; }

(* ++ argv)和while(c = * ++ argv )之间的区别

我有以下代码片段: int main(int argc, char *argv[]) { char line[MAXLINE]; long lineno = 0; int c, except = 0, number = 0, found = 0; while(–argc > 0 && (*++argv)[0] == ‘-‘) //These two lines while(c = *++argv[0]) //These two lines switch(c) { case ‘x’: except = 1; break; case ‘n’: number = 1; break; default: […]

char * argv 和char ** argv之间的差异,为main()的第二个参数

代码1 #include int main(int argc, char *argv[]) { int j; printf(“%d”, argv[1][0]); return 0; } 代码2 #include int main(int argc, char **argv) { int j; printf(“%d”, argv[1][0]); return 0; } CODE 1和CODE 2都提供相同的输出。 但是CODE 1和CODE 2中主要function的参数2是不同的。 在编译时在数据部分上创建指针数组。 argv是指针数组。 然后我们应该在main函数中声明参数作为指向字符的指针,即** argv。 如何在CODE 1中声明是否正确?

在C中使用argv?

对于赋值,我需要为我的C程序提供命令行参数。 我之前(在C ++中)使用过argc / argv没有遇到任何麻烦,但我不确定C样式字符串是否会影响它的工作原理。 这是我的主要开始: int main(int argc, char *argv[]){ if(argc>1){ printf(“0 is %s, 1 is %s\n”,argv[0],argv[1]); if(argv[1]==”-e”){ // Do some stuff with argv[2] system(“PAUSE”); } else{ printf(“Error: Incorrect usage – first argument must be -e”); return 0; } } 所以我将我的程序称为“program.exe -e myargstuff”但是我得到了“Error:Incorrect Usage …”输出,即使我的printf()告诉我argv [1]是“-e”。 请帮忙吗? 谢谢!

什么时候argv 有空?

关于从命令行向main()传递参数,我所理解的是argc的最小值为1,而argv [0]将始终具有程序名称及其路径。 如果在命令行提供了参数,那么argc的值将大于1 ,而argv [argc-1]的argv将具有这些参数。 现在这个链接的段落说明了这一点 argv [0]将是包含程序名称的字符串,如果不可用,则为空字符串 。 现在,argv [0]如何以及何时可以使用空字符串? 我的意思是程序名称及其路径将始终可用,所以什么时候它可以为空? 作家说“如果不可用”但是何时以及如何可能无法获得程序名称?