Считать массив чисел из файла - C (СИ)
Формулировка задачи:
Приветствую!возникла небольшая проблема:программа читает только первый символ файла.совершенно не понимаю почему.
Общее задание:считать из файла массив,проделать с ним операции(там сложный алгоритм со стеком),записать получившиеся результаты в второй массив и вывести его в другой файл.Если напишите ещё и заготовки для стека и вывода в файл,то я буду бесконечно благодарен.Язык:си.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int k,i,s;
FILE *ptrfile;
k=0;
ptrfile=fopen("mass.txt","r+");
while ((fscanf(ptrfile, "%d",&s)!=EOF))
{ if(!ptrfile) break;
k+=1;
}
int (*c)[1]= malloc(k*sizeof(int));
lseek(prtfile,1,0);
for(i=0;i<k;i++)
{
fscanf(ptrfile, "%d",&c[i][0]);
printf("c[%d][%d]=%d ",i,c[i][0]);
}
fclose(ptrfile);
free(c);
getchar();
return 0;
}Решение задачи: «Считать массив чисел из файла»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main()
{
int k = 0, i, s;
FILE* ptrfile = fopen("mass.txt", "r+");
assert(ptrfile);
while (fscanf(ptrfile, "%d", &s) != EOF)
{
k++;
}
int* c = malloc(k * sizeof(int));
rewind(ptrfile);
for (i = 0; i < k; i++)
{
fscanf(ptrfile, "%d", &c[i]);
printf("c[%d]=%d ", i, c[i]);
}
fclose(ptrfile);
free(c);
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Включаются необходимые заголовочные файлы.
- Устанавливаются начальные значения счётчика k и i, а также значение переменной s.
- Открывается файл
mass.txtдля чтения и записи. - Проверяется успешность открытия файла.
- В цикле while считываются все числа из файла в переменную s.
- Переменная k увеличивается на единицу после каждой итерации цикла.
- Выделяется память под массив c размером k.
- В цикле for считываются числа из файла в массив c.
- Каждое число выводится на экран.
- Файл закрывается.
- Выделяемая память освобождается.
- Программа завершается.