Моя программа должна выйти, когда пользователь вводит в exit аналогично тому, как это делается в оболочке. Сначала я проверил онлайн, чтобы узнать, может ли syscall вызываться в цикле, но затем я заметил, что индексы символов в массиве ошибочны. Почему они меняются; когда я запустил программу и набрал exit, у меня была программа, из которой 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