Считать числа из файла в массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В файле записано неизвестное количество чисел. Нужно считать их в одномерный массив.
#include<stdio.h>
#include<stdlib.h>
int main(){
    int k,i;
FILE *ptrfile;
k=0;
int s;
ptrfile=fopen("C:\\Users\\Самсунг\\Desktop\\mass.txt","r+");
while ((fscanf(ptrfile, "%d",&s)!=EOF))
{
     k+=1;
     printf ("k=%d  ",k);
     printf ("s=%d\n",s);
}
int c[k];
for(i=0;i<k;i++)
{
fscanf(ptrfile, "%d",&c[i]);
printf("c[%d]=%d  ",i,c[i]);
}
fclose(ptrfile);
 
}
c[i] выводит неверные. Как правильно можно это осуществить?

Решение задачи: «Считать числа из файла в массив»

textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    int k,i;
FILE *ptrfile;
k=0;
int s;
ptrfile=fopen("mass.txt","r+"); //так мне было короче )
 
while ((fscanf(ptrfile, "%d",&s)!=EOF))
{    if(!ptrfile) break;    //чтобы не делал лишнего
        k+=1;
}
int *c = (int*) 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;
}

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

В этом коде:

  1. Включаются необходимые заголовочные файлы.
  2. Определяются переменные: k, i, s, ptrfile, c.
  3. Устанавливается значение k=0.
  4. Открывается файл mass.txt для чтения и записи.
  5. Начинается цикл while, который выполняется до тех пор, пока не встретит конец файла.
  6. Внутри цикла считывается число из файла в переменную s.
  7. Увеличивается значение k на единицу.
  8. Выделяется динамическая память под массив c.
  9. Перематывается файл обратно к началу.
  10. Начинается цикл for, который выполняется k раз.
  11. Внутри цикла считывается число из файла в соответствующий элемент массива c.
  12. Выводится на экран значение элемента массива c.
  13. Закрывается файл.
  14. Освобождается выделенная память.
  15. Блокируется консоль для ввода.
  16. Возвращается 0.

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


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

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

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