В вашем коде есть несколько проблем
static int j = 0;
почему j является статическим, когда используется какиндекс в st , который не статический
if (text [i] == "(")
неверный, вы сравниваете символ со строкой, поведение не определено
strcat (str, st [j]);
недопустимо, второй аргумент являетсясимвол вместо строки
printf ("% c \ n", str);
недопустим, формат ожидает int (являющийся кодом символа для его печати), но аргумент является строкой
strcat (str, text [i]);
недопустим, второйаргумент является символом, а не строкой
, если (st [j]! = "null")
недопустимо, вы сравниваете символ и строку,поведение не определено
strcat (str, st [j]);
недопустимо, второй аргумент являетсясимвол, а не строка
Обратите внимание, что из предыдущих проблем существует защита от чтения / записи массивов через недопустимый индекс (слишком большой для двух массивов или также отрицательный для st в случае, если выражение имеет слишком много ')')
Вероятно, st должен быть массивом char*
, а не массивом char (дляизменить его тип недостаточно для правильного кода)
Кажется, вы хотите разобрать выражение, но каких результатов вы ожидаете?