Считать массив чисел из файла - 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.
- Каждое число выводится на экран.
- Файл закрывается.
- Выделяемая память освобождается.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д