小写字母大写(如果条件使用)?

时间:2018-01-14 08:56:36

标签: c

这条线是什么意思?

if (strcmp(argv[0],"./lower")==0)

在转换为大写或小写之前,为什么要检查这个条件? 结果是什么?

2 个答案:

答案 0 :(得分:2)

比较argv[0]正在检查可执行文件的名称。

我假设您查看类似于busybox的代码,在该代码中检查用户使用的可执行文件,以便了解要执行的操作。

答案 1 :(得分:1)

正如您可能已经猜到的那样,这并不是真正的转换。但它实际上决定了基于可执行文件名做的转换。以下是一个例子

这是casefile_48248048.c

{nan, 1.0, 2.0, 3.0, nan, nan}

在linux中,我使用#include<stdio.h> #include<ctype.h> #include<string.h> int main(int argc,char* argv[]){ char str[30]="Some string"; short i=0; printf("argv[0] = %s\n",argv[0]); if(strcmp(argv[0],"./tolower")==0){ printf("String in lower case : "); while(str[i]) printf("%c",tolower(str[i++])); printf("\n"); } else if(strcmp(argv[0],"./toupper")==0){ printf("String in upper case : "); while(str[i]) printf("%c",toupper(str[i++])); printf("\n"); } else printf("No changes to be made to string"); return 0; } 编译它,如下所示

gcc

然后制作了两个符号链接

gcc  casefile_48248048.c -o  casefile_48248048

然后运行ln -s casefile_48248048 toupper ln -s casefile_48248048 tolower toupper以提供以下结果

tolower

重点很明确,我希望: - )