Хорошо, что компиляторы не имеют души :) и не могут сказать "О великий компьютерый бог, что тут меня заставляют делать!" :)
Этот код - по-моему одна большая сплошная нелепость. Давайте начнем с постановки задачи, да? Как было сформировано условие?
Ну и сразу что бросается в глаза:
char firstFraction[2];
char secondFraction[2];
Во-первых.
Чего так мало места? В такой прости-Господи массив поместится ровно
один символ (потому что второй займет '\0')
Во-вторых.
Почему вообще char? Понятие указателя не одолели, что ли? Вы там какую то арифметику делать будете - какого фига не вводить
сразу int? Если стоит условие ввода в char - я не вижу atoi()
scanf("%s", firstFraction);
Продолжение предыдущего вопроса - почему ввод строковый, хотя предполагается арифметика? Зачем лишний раз конвертить из строки в число? Или Вы полагаете, что С, как многие модно-стильно-молодежные языки - сам определит тип переменной в зависимости от операции? Так вот, черта с два. С - язык старой школы, он требователен и к программе и к программисту. Никакой автотипизации, никакой сборки мусора - все на совести программиста.
Пишите условие задачи, а там посмотрим.