Как работать текстовыми файлами?
Потому что нормальный алгоритм работы с мелкими текстовиками следующий:
открыть файл на чтение (man open - внимание, не потоковый fopen, а простой open!)
получить размер файла из элемента оглавления каталога (man stat)
выделить память размером с файл (man calloc)
прочитать весь файл целиком (man read)
закрыть файл (man close)
и после этого парсить полученный буфер как угодно вдоль и поперек, не забывая конечно, что портить его не надо :)
Ну или вот так наверно понятнее будет:#define NUL 0
  #define ERR -1
  int i;
  short int handle;
  struct stat sb;
  char *name="/tmp/testfile.txt";
  char *data;

  if ((handle = open(name, O_RDONLY)) < NUL)
    return ERR;

  stat(name, &sb);
  data = (char *) сalloc(sb.st_size + 1);
  i = read(handle, data, sb.st_size);
  close(handle);
На выходе - массив data с данными файла.
Ищещь перевод строки ('\n') и переставляешь указатель ЗА него (если нужно конвертить число в цифру то после перестановки на место перевода строки пишешь '\0' и используешь atoi() - на выходе длина строки, которая идет в качестве контроля, чтобы на SIGSEGV случайно не выскочить.
Потом от нового положения указателя цикл по длине строки с поиском по таблице замен.
Вот блин...ведь мамой клялся, что подсказывать не буду...
Потому что с файла считана лишь первая строка, а нужно считать обе.
Кроме того, по окончанию работы с файлом нужно закрывать файл.