позиционирование файла с помощью fseek в c, работает неправильно - PullRequest
0 голосов
/ 18 мая 2018

Я пытался создать функцию, которая получает файл, читает строку и обновляет некоторые данные.

В общем, я хочу:

  1. Читатьи вставьте данные в локальные переменные
  2. Переместитесь назад к началу элемента зарплаты (в файле).
  3. Перезапишите новый обновленный оклад.

В частности, файл включает в себя данные сотрудника (код, имя и зарплата), и функция должна обновлять зарплату каждого сотрудника любым добавленным.

пример: 123, Joe, 1200

 void updateSalary(char* filename)
 {
    employee temp;
    char c;
    float increase;
    FILE *fup = fopen(filename, "r+");
    while ((c=fgetc(fup)) != EOF)
    {
    fscanf(fup, "%*d%s%f", &temp.name, &temp.salary);
        printf("How big is the increase to %s's salary?\n", temp.name);
        scanf("%f", &increase);
        while ((c=fgetc(fup)) != ' ')
            fseek(fup, -1, SEEK_CUR);
        fprintf(fup, "%f", temp.salary + increase);
        fseek(fup, 1, SEEK_CUR);
    }
 fclose(fup);
}

Как я думал перезаписать новую зарплату: я использовал цикл while для поиска возврата, который появился перед данными о зарплате, при перемещении назад на каждый байт и поиска его.Не работает правильно.во-вторых, после печати новых данных позиция файла устанавливается для следующего символа ('\n'), и я хотел бы пропустить этот, поэтому я использовал fseek с 1 байтом.тоже не работал.

Спасибо!

...