इस लाइन का क्या मतलब है?
if (strcmp(argv[0],"./lower")==0)
लोअर या अपर केस में कनवर्ट करने से पहले इस स्थिति की जाँच क्यों की जाती है? इसका क्या परिणाम होता है?
-3
Akash Nair
14 जिंदा 2018, 11:56
2 जवाब
सबसे बढ़िया उत्तर
जैसा कि आपने अनुमान लगाया होगा, यह वास्तविक रूपांतरण नहीं करता है। लेकिन वास्तव में यह निर्धारित करता है कि निष्पादन योग्य नाम के आधार पर कौन सा रूपांतरण करना है। नीचे एक उदाहरण है
यहाँ है केसफाइल_48248048.c
#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
चलाएं
$ ./toupper
argv[0] = ./toupper
String in upper case : SOME STRING
$ ./tolower
argv[0] = ./tolower
String in lower case : some string
बात साफ है, उम्मीद है :-)
1
sjsam
14 जिंदा 2018, 12:45
argv[0]
की तुलना निष्पादन योग्य के नाम की जांच कर रही है।
मुझे लगता है कि आप busybox के समान कोड देखते हैं जिसमें आप उस निष्पादन योग्य की जांच करते हैं जिसका उपयोग उपयोगकर्ता ने किया था ताकि आप जान सकें कौन सी क्रिया करनी है।
2
Igal S.
14 जिंदा 2018, 12:02