после записи массива чисел в файл в текстовом формате не выводятся записанные числа, Си
- есть массив из 5 чисел(int), необходимо записать в файл виде текста,
- после этого прочитать из файла обратно в новый массив,
- после этого вывести на экран, значения последнего массива умноженные на 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;
}