私のプログラムは、シェルでのやり方と同じように、ユーザーが終了時に入力すると終了します。まず、オンラインでsyscallがループで呼び出せるかどうかを確認しましたが、配列内の文字のインデックスが間違っていることに気付きました。なぜこれらは変化しているのですか?私がプログラムを実行して終了時にタイプしたとき、私のプログラムはテスト目的のために3番目の指標を打ち、それは「e」を返しました。だから私はそれが反転され、すべての値を反転されたと思って、私の出口はまだ動作しませんでした。根本的な問題が何であるかについての考えはありますか?'exit'文字列をチェックするときにループ内でコードが終了しないのはなぜですか?
#include <stdio.h>
//Abstract: This program runs a script to emulate shell behavior
#define MAX_BIN_SIZE 100
int main() { //Memory allocation
char * entry[MAX_BIN_SIZE];
while(1)
{
printf("msh>");
fgets(entry,MAX_BIN_SIZE,stdin); //Getting user input
if(entry[0]=='t' && entry[1]=='i' && entry[2]=='x' && entry[3]=='e')
{
//printf("Exiting");
exit(0); //exit(system call)
break;
printf("Inside of exit");
}
printf("msh> you typed %s %c %c %c %c",entry,entry[3],entry[2],entry[1],entry[0]); //returning user input
}
return 0;
}
デバッガで見たときのエントリは何でしたか?あなたはそれが 'tixe'を持っているかどうかをテストします、それはおそらくそれを含んでいません。 (そしてBLUEPIXYが言ったこと) – pm100
'char * entry [MAX_BIN_SIZE];' - > 'charのエントリ[MAX_BIN_SIZE];' – BLUEPIXY
このコードが間違っているところでヒントを得ているコンパイラの警告を受け取ったはずです。それらを読みます。彼らは重要です。 – user2357112