после записи массива чисел в файл в текстовом формате не выводятся записанные числа, Си

  1. есть массив из 5 чисел(int), необходимо записать в файл виде текста,
  2. после этого прочитать из файла обратно в новый массив,
  3. после этого вывести на экран, значения последнего массива умноженные на 2.
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

int main()
{
    FILE *f;

    int c[5] = {23, 34, 45, 56, 67};

    f = fopen("001.txt", "wt");
    for (int i= 0; i < 5; i++)
        fprintf(f, c[i]);
    fclose(f);

    int buf[10];

    f = fopen("001.txt", "rt");
        fread(buf, sizeof(buf),1,f);
    fclose(f);

    for (int i = 0; i < 10; i++)
        printf("%d\n", buf[i]);

    return 0;
}

Ответы (1 шт):

Автор решения: Artyomka

Вот полностью расписанное решение поставленной задачи. Успехов в обучении! (Кодил в VS 2019)

#include <stdio.h>
#include <stdlib.h>



int main()
{
    int arr1[]  = { 1, 2, 3, 4, 5 };
    int sizeArr1 = sizeof(arr1) / sizeof(arr1[0]);

    FILE* file  = NULL;


    // +-+-+-+-+-+-+-+ Запись в файл +-+-+-+-+-+-+-+

    // Открыли файл в текстовом режиме записи "wt"
    file = fopen("txt1.txt", "wt"); 

    // Первой строкой записываем размер массива
    fprintf(file, "%d%c", sizeArr1, '\n');

    // Записываем данные массива
    for (int i = 0; i < sizeArr1; ++i) 
    {
        fprintf(file, "%d%c", arr1[i], ' ');
    }

    // Закрыли файл
    fclose(file); 


    // +-+-+-+-+-+-+-+ Чтение из файла +-+-+-+-+-+-+-+

    int sizeArr2;
    int* arr2 = NULL;

    // Открыли файл в текстовом режиме чтения "rt"
    file = fopen("txt1.txt", "rt");

    // Считываем размер массива находящегося в файле
    fscanf(file, "%d", &sizeArr2);

    // Запрашиваем нужное количество памяти
    arr2 = (int*)malloc(sizeArr2 * sizeof(int));

    // Записываем данные из файла
    for (int i = 0; i < sizeArr2; ++i)
    {
        fscanf(file, "%d", &arr2[i]);
    }

    // Закрыли файл
    fclose(file);


    // Выводим результат
    for (int i = 0; i < sizeArr2; ++i)
    {
        printf("%d ", arr2[i] * 2);
    }

    // Очищаем ранее выделенную память
    free(arr2);
    arr2 = NULL;


    return 0;
}
→ Ссылка