这条线是什么意思?
if (strcmp(argv[0],"./lower")==0)
在转换为大写或小写之前,为什么要检查这个条件? 结果是什么?
答案 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
重点很明确,我希望: - )