В файл записываются непонятные символы - C (СИ)
Формулировка задачи:
Здравствуйте. Имеется функция записи в файл.
Но вместо числа записывается непонятный символ.
int save(int *a, int *b)
{
FILE *fp;
if ((fp = fopen("save.txt", "w")) == NULL)
{
printf("Error opening file!\n");
exit(1);
}
fputs("Save results: \n", fp);
fputs("a = ", fp);
fwrite(&a, 1, 1, fp);
return 0;
}Решение задачи: «В файл записываются непонятные символы»
textual
Листинг программы
fprintf(fp,"%d",*a);
Объяснение кода листинга программы
С точки зрения контроля доступа, этот код может быть потенциально опасным, поскольку он записывает в файл указатель на переменную без указания размера этой переменной. Это может привести к записи в файл неопределенного количества данных, что может привести к переполнению буфера и, в конечном итоге, к уязвимости буфера. Тем не менее, код, который вы предоставили, выполняет следующие действия:
*aобращается к значению переменнойa.fp- это файловый дескриптор, который указывает на файл, открытый для записи.fprintf- это функция, которая записывает форматированную строку в файл.%d- это спецификатор формата, который указывает на то, что следующий аргумент должен быть преобразован в целое число и записан в файл.*%d` означает, что форматированная строка будет содержать только символ%d, который будет заменен на значение переменнойa`.fprintf(fp,%d,*a);записывает форматированную строку в файл.