Я пытался создать функцию, которая получает файл, читает строку и обновляет некоторые данные.
В общем, я хочу:
- Читатьи вставьте данные в локальные переменные
- Переместитесь назад к началу элемента зарплаты (в файле).
- Перезапишите новый обновленный оклад.
В частности, файл включает в себя данные сотрудника (код, имя и зарплата), и функция должна обновлять зарплату каждого сотрудника любым добавленным.
пример: 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 байтом.тоже не работал.
Спасибо!