私はこのコードブロックに遭遇しました。私は何を理解したいのですか? args[0][0]-'!'
を意味しますか?私はargs [0] [0] - '!'手段
else if (args[0][0]-'!' ==0)
{ int x = args[0][1]- '0';
int z = args[0][2]- '0';
if(x>count) //second letter check
{
printf("\nNo Such Command in the history\n");
strcpy(inputBuffer,"Wrong command");
}
else if (z!=-48) //third letter check
{
printf("\nNo Such Command in the history. Enter <=!9 (buffer size is 10 along with current command)\n");
strcpy(inputBuffer,"Wrong command");
}
else
{
if(x==-15)//Checking for '!!',ascii value of '!' is 33.
{ strcpy(inputBuffer,history[0]); // this will be your 10 th(last) command
}
else if(x==0) //Checking for '!0'
{ printf("Enter proper command");
strcpy(inputBuffer,"Wrong command");
}
else if(x>=1) //Checking for '!n', n >=1
{
strcpy(inputBuffer,history[count-x]);
}
}
このコードはgithubのアカウントからのものである:https://github.com/deepakavs/Unix-shell-and-history-feature-C/blob/master/shell2.c
args [0] [0] 'はargs配列の最初の文字列の最初の文字なので、 '!'のASCIIコードを引いています。それから – bruceg
これは、ASCIIの内容についての質問です。 –
最初の引数 'argv [0]'は通常、実行可能ファイル名そのものです。しかし、AFAIK 'exec **'関数はプログラム引数を渡さないので、このような使い方になる可能性があります。ありがとう。 –