Tag: argv

帮助比较argv字符串

我有: int main(int argc, char **argv) { if (argc != 2) { printf(“Mode of Use: ./copy ex1\n”); return -1; } formatDisk(argv); } void formatDisk(char **argv) { if (argv[1].equals(“ex1”)) { printf(“I will format now \n”); } } 如何在C中检查argv是否等于”ex1″ ? 是否已有function? 谢谢

argv指向指针数组的指针

我很困惑以下段落如何与其后面的代码匹配: 由于argv是指向指针数组的指针 ,因此我们可以操作指针而不是索引数组。 下一个变体基于递增argv,它是指向char的指针,而argc倒计时: #include /* echo command-line arguments; 2nd version */ main(int argc, char *argv[]) { while (–argc > 0) printf(“%s%s”, *++argv, (argc > 1) ? ” ” : “”); printf(“\n”); return 0; } 不是char *argv[]只是一个指针数组? 指向数组的指针不会写为char *(*argv[])或类似的东西吗? 作为旁注,通常我发现混合数组和指针的声明相当混乱,这是正常的吗?

传递参数1会丢弃指针目标类型的限定符

我的主要function如下: int main(int argc, char const *argv[]) { huffenc(argv[1]); return 0; } 编译器返回警告: huffenc.c:76: warning: passing argument 1 of ‘huffenc’ discards qualifiers from pointer target type 作为参考, huffenc接受char*输入,并执行该函数,样本输入“无意识”通过./huffenc senselessness 这警告意味着什么?

为什么检查是否(* argv == NULL)?

在我目前正在使用的数据结构类中,我们的任务是使用C ++编写Web爬虫。 为了给我们一个良好的开端,教授为我们提供了一个程序,用于从给定的URL获取源代码,并使用简单的HTML解析器来剥离标记。 该程序的主要function接受参数,因此使用argc / argv。 用于检查参数的代码如下: // Process the arguments if (!strcmp(option, “-h”)) { // do stuff… } else if (!strcmp(option, “”)) { // do stuff… } else if (!strcmp(option, “-t”)) { // do stuff… } else if (!strcmp(option, “-a”)) { // do stuff… } if ( *argv == NULL ) { exit(1); } […]

argv中的字符串是否可修改?

我刚刚写了一个小程序,用C语言读取命令行参数,没什么太难的。 我也在修改它们,例如将参数的第一个字符更改为大写。 我知道你不应该修改字符串文字,因为它可能导致未定义的行为,所以只是想知道*argv[]中的字符串是否是你不应该更改的文字。 int main(int argc, char *argv[])

如何解释C中命令行参数中的特殊字符?

第一个问题: 假设我们编写一个简单的程序,它接受命令行参数并打印到文件中。 如果用户输入 writetofile你好!0 \ nw%orl \ t!@#y bash回复 !0:未找到事件。 如果用户不知道使用引号(”)或转义字符(’\’),我该如何处理这些东西而不是bash将其理解为命令? 第二个问题: 一旦我得到这些参数,我如何将它们解释为特殊字符而不是字符序列。 (即。\ t是标签,而不是’\”’) 也就是说,如何确保程序将其写入文件: Hello!0 w%orl !@#y 并不是 Hello!0\nw%orl\t!@#y

使用fscanf读取指针时的分段错误(核心转储)

我正在尝试使用fscanf来读取和打印屏幕上的每个字符,但是当我运行程序时,我遇到了分段错误(核心转储)。 这是我的代码: #include main(int argc, char * argv[]) { int *a ; FILE *input; if (argc>=2) { input= fopen(argv[1],”r”); if (input!=NULL) { while (feof(input)==0) { fscanf(input,”%d\n”,a); printf(“%d\n”,*a); } fclose(input); } else { printf(“Error!\n”); } } } 我提供文件作为参数,如下所示: ./myprog input.txt 文件input.txt包含: 23 47 55 70

为什么用argv 调用sscanf()只能使用一次?

我需要将argv [1]和argv [2]变为不同的类型。 我发现我只能使用sscanf()一次,或者无法检索argv中的下一个字符串。 这是我的代码。 int main( int argc, char *argv[]) { char t; float temp; sscanf(argv[1], “-%[cf]”,&t); sscanf(argv[2], “%f”, &temp); return 0; } 只有第一个sscanf()才能获得格式化的值。 我怎么能完成argv [2]?

argv中指向字符串的指针是否可修改?

最近(2016年1月,如果问题持续时间足够长)我们有问题argv中的字符串是否可修改? 。 在这个答案的评论部分,我们(@ 2501和我)认为它是否真的是可修改的字符串 (例如**argv的示例字符)或指向字符串的指针 (示例指针是*argv )。 适当的标准报价来自C11标准草案N1570,§5.1.2.2.1/ 2: 参数argc和argv以及argv数组指向的字符串应由程序修改,并在程序启动和程序终止之间保留它们最后存储的值。 argv modifiable指向字符串的指针是什么?

如何在C中对argv的元素进行排序?

我试图按字母顺序排序argv的元素。 以下代码行给了我一些问题: qsort(argv[optind], argc – optind, sizeof(argv[optind]), sort); 具体来说,最后一个参数给我带来了麻烦,即比较函数,如下所示: int sort(const void *a, const void * b) { return(strcmp( (char*)a, (char*)b )); } 目前,它编译得很好,但是当我运行它时,我最终得到了一个分段错误。