Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2015, 13:51   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Работа с файлами в С

Добрый день!

Не могу понять в чем проблема.

Хочу в файл записать массив, а потом его считать из этого файла.

Код записи:

Код:

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

void main(void)

{

   int i;

   int a[10]={11,12,13,14,15,16,17,18,19,20};

   clrscr();

   FILE  *pTextFile=fopen("C:\\TextFile.txt","w");



     for(i=0;i<10;i++)


   {

     fprintf(pTextFile,"%d",a[i]);

     printf("%d\n",a[i]);

   }

     fclose(pTextFile);

     

     getch();

}

Код считывания:

Код:

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

void main()

{

   int i,a[10];

   clrscr();

   FILE  *pTextFile=fopen("C:\\TextFile.txt","r");


   for(i=0;i<10;i++)


   {  fscanf(pTextFile,"%d",&a[i]);  }


     fclose (pTextFile);


     for(i=0;i<10;i++)

   

    {  printf("%d\n",a[i]);    }

    getch();

}
В файле TextFile.txt при выполнении кода записи находится следующее:

11121314151617181920

Почему при считывании массива я получаю какие-то левые цифры?

Пишу в среде BORLAND C++ 3.1
RAFA91 вне форума Ответить с цитированием
Старый 01.01.2015, 13:57   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Числа друг от друга никак не разделены, как при чтении их планировалось вычленять? Пробелы хотя бы добавьте чтоли.
pu4koff вне форума Ответить с цитированием
Старый 01.01.2015, 14:33   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Спасибо!! Вроде все ОК.

Добавил тут fprintf(pTextFile,"%d ",a[i]);

А с другими типами файлов cpp, dat - работать будет?
RAFA91 вне форума Ответить с цитированием
Старый 01.01.2015, 14:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Неа, не будет, если там будет не то что ожидается )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.01.2015, 18:08   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

планирую там разместить это 11,12,13,14,15,16,17,18,19,20 (без запятых)
RAFA91 вне форума Ответить с цитированием
Старый 01.01.2015, 18:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

И какова же цель такого размещения?
Экономия места? нет, тогда бы ты выбрал байтовое целое
Удобство для ручного формирования файла? Тоже нет - читать сложно
Диапазон размещаемых чисел скудноват тоже получается. Всего лишь 90 чисел.
Смысл такого формата?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.01.2015, 10:17   #7
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

90 чисел это при каком типе файла ?

есть смысл разместить числа 2-х байтовые > 255 (от 256 до 50000)
RAFA91 вне форума Ответить с цитированием
Старый 02.01.2015, 10:52   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
90 чисел это при каком типе файла ?
Ну я правильно понял - у тебя последовательность двухциферных чисел без разделителя?
Цитата:
есть смысл разместить числа 2-х байтовые
Тогда три пути:
1) Выравнивание нулями до 5 цифр
2) Ставь разделитель между числами
3) Используй типизированный файл.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.01.2015, 16:08   #9
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

мне кажется второй вариант проще . применил \n.


Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

const n=1000; //49745

void main(void)

{



   int i,k;

   int a[n];

   clrscr();

   FILE  *pTextFile=fopen("C:\\TextFile.txt","w");



     for(i=0,k=256;i<n;i++,k++)

     a[i]=k;





     for(i=0;i<n;i++)


   {

     fprintf(pTextFile,"%d\n",a[i]);

     printf("%d\n",a[i]);

   }

     fclose(pTextFile);

     

     getch();

}
почему при n=49745 коммпилятор ругается(((?
RAFA91 вне форума Ответить с цитированием
Старый 02.01.2015, 19:17   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Наверное это число вылазит за пределы твоего Борланда. Всетки он скорее 16-битный чем 32-х.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
Работа с файлами на СИ++ Config Помощь студентам 0 21.01.2014 14:36
Работа с файлами apeorin Общие вопросы C/C++ 0 05.12.2012 20:29