Не обращая слишком много внимания на ваш настоящий код, самая важная ошибка, которую вы совершаете, заключается в том, что оператор == НЕ будет сравнивать две строки.
В C строка - это массив символов, которыйэто просто указатель.Таким образом, если if ("abcde" == some_string) никогда не будет истинным, если они не указывают на одну и ту же строку!
Вы хотите использовать метод типа "strcmp (char * a, char * b)", который будетвернуть 0, если две строки равны, и что-то еще, если они не совпадают.«strncmp (char * a, char * b, size_t n)» сравнивает первые «n» символов в a и b и возвращает 0, если они равны, что хорошо для просмотра начала строк (чтобы увидетьесли строка начинается с определенного набора символов)
Вам также НЕ следует передавать символ в качестве указателя для% s в вашем fscanf!Это заставит его полностью уничтожить ваш стек, он попытается поместить много символов в ch, в котором есть место только для одного символа!Как говорит Джеймс, вы хотите сделать что-то вроде char ch [BUFSIZE], где BUFSIZE на 1 больше, чем вы ожидаете, что будет одна строка, затем выполните "fscanf (inp,"% s ", ch);"
Надеюсь, это поможет!