В файл записываются непонятные символы - 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);

Объяснение кода листинга программы

С точки зрения контроля доступа, этот код может быть потенциально опасным, поскольку он записывает в файл указатель на переменную без указания размера этой переменной. Это может привести к записи в файл неопределенного количества данных, что может привести к переполнению буфера и, в конечном итоге, к уязвимости буфера. Тем не менее, код, который вы предоставили, выполняет следующие действия:

  1. *a обращается к значению переменной a.
  2. fp - это файловый дескриптор, который указывает на файл, открытый для записи.
  3. fprintf - это функция, которая записывает форматированную строку в файл.
  4. %d - это спецификатор формата, который указывает на то, что следующий аргумент должен быть преобразован в целое число и записан в файл.
  5. *%d` означает, что форматированная строка будет содержать только символ%d, который будет заменен на значение переменнойa`.
  6. fprintf(fp,%d,*a); записывает форматированную строку в файл.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы