Согласно стандарту языка Си, вызов функции 'fsetpos' с аргументом, полученным не из функции 'fgetpos', приводит к неопределённому поведению (UB, Undefined behavior).
Рассмотрим пример:
int foo() { FILE * pFile; fpos_t position; pFile = fopen("file.txt", "w"); memset(&position, 0, sizeof(position)); fputs("That is a sample", pFile); fsetpos(pFile, &position); fputs("This", pFile); fclose(pFile); return 0; }
Значение переменной 'position' не было получено функцией 'fgetpos', что может привести к сбою программы.
Исправленный вариант:
int foo() { FILE * pFile; fpos_t position; pFile = fopen("file.txt", "w"); fgetpos(pFile, &position); fputs("That is a sample", pFile); fsetpos(pFile, &position); fputs("This", pFile); fclose(pFile); return 0; }
Данная диагностика классифицируется как:
|