Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение из файла, КАК? 
:(
    Опции темы
crank777
Дата 16.12.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



народ кто поможет с таким вопросом.
Как мне сделать такую штуку: мне нужно прочитать из файла 9-ть символов, дальше мне 
надо просто перейдти на один символ вперёд и прочитать ещё 9-ть символов
и перейти на начало следующей строки. сос следующеёй строкой сделать тоже самое
и так далие пока не конец файла.
подскажите хотябы примерный алгоритм и какими функциями лучше работать с файлом.
PM MAIL   Вверх
Xenon
Дата 16.12.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Ну шагать по файлу можно при помощи file.seekg() А вообще давай наброски, если что-то есть. Если нет - в центр помощи.


--------------------
user posted image  
PM MAIL   Вверх
crank777
Дата 17.12.2006, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



ну особых набросков нету. а вот пытался сделать это при помощи ф-ии fread(); - но чёт неочень, слишком много лишнего получается на выходе...
PM MAIL   Вверх
apook
Дата 17.12.2006, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



fread читает всюстроку Тебе нужен fgetc;


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
crank777
Дата 17.12.2006, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



панял, и делать цикл на то количество повторень сколько мне надосимволов
PM MAIL   Вверх
Rockie
Дата 17.12.2006, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(crank777 @  17.12.2006,  02:14 Найти цитируемый пост)
 повторень

хорошо слово рифмуется smile

Код
#include<stdio>

int main()
{
  char wordOne[10],wordTwo[10];
  int num;

  // создаем указатель на файл и открываем поток на чтение
  FILE* fp = fopen("myfile.txt","r");
  if(fp==NULL)            // если файла нет
   { printf("Error, no file");
     return 0;
   }
   // пока можно читать из файла
   while(fscanf(fp,"%s %d %s",&wordOne,&num,&wordTwo)!=EOF)
   // будем выводить на экран
     printf("%s %d %s\n",wordOne,num,wordTwo);

 char c = getchar();
 return 0;
}





--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Rickert
Дата 17.12.2006, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



fread()
fseek()


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
GIK
Дата 17.12.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Код

#include<stdio>
#include<iostream>
using namespace std;
int main()
{
  char charik[128]; //длину сам задаш, под свои нужды
  
  FILE* fp = fopen("myfile.txt","r"); //поток открывает файл для чтению, не вздумай записывать че нибудь :))))
  if(fp==NULL)            // если обломилиь
   { printf("HerVam");
     return 1;
   }   
 for(var i=0; i<81; i++){
  if((i+1)%9==0) continue ; //пропускаем каждый девятый символ
  charik[i]=fgetc(fp); //забиваем массив
 }

 for(var i=0; i<(81-9); i++){
 cout<<charik[i]<<endl;
 }
 char c = getchar();
 return 0;
}




Это сообщение отредактировал(а) GIK - 17.12.2006, 10:36


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
witex
Дата 17.12.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



Так я думаю удобнее будет!
Код

#include <stdio.h>
#include <iostream.h>
void main()
{
FILE *fl;
fl=fopen("myfile.txt","r");
char a[10];
while(!feof(fl))
{
   fread(a,1,9,fl);//ili fread(a,9,1,fl);
   fseek(fl,1,SEEK_CUR);
   cout << a << endl;
}

}

З.Ы. Если есть ошибки, не бейте. Не проверял!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Anikmar
Дата 17.12.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Этот код не будет начинать все заново со следующей строки как требуется в задании
PM MAIL ICQ   Вверх
witex
Дата 17.12.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



ну всё зависит в каком формате файл!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Anikmar
Дата 17.12.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Ну, если мои телепатические способности не подводят - то фидимо файл из строк, в каждой из которых нужно считать куски по 9 симовлов и так до конца строки... Видимо где-то так (если автор темы, не обяснит подробнее).

Я не понял, например, куда девать эти 9 символов? Записывать в массив строк или формировать одну строку?
Лично я бы, наверное сяитывал по строчно, а из строки выдергивал уже нужные куски, хотя можно и напрямую из файла. Хотя файл может быть и не текстовым. 

Автора! Автора!  smile 
PM MAIL ICQ   Вверх
witex
Дата 17.12.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



да не понятно,  мож там в строке только 20символов, 9 читаем, 1 промежуточный типо пробела, опять читаем 9 символов, и символ новой строки.

Anikmar а на счёт того что взять всю строку, и потом с нейработать... то всяко удобнее!



Это сообщение отредактировал(а) witex - 17.12.2006, 13:27
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Oleg_Ci
Дата 17.12.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Строка формата грамотная для fscanf нужна smile 
Я изобрёл, только правильная она или нет я точно незнаю, но работает (на MS2003).
-> fscanf(... "%10c%9c%*[^\n]%*[\n]" ... );
Код

#include <stdio.h>

int main(int argc, char *argv[])
{
    FILE * file = fopen("text.txt", "r");
    if( !file ) return 1;

    char c1[10], c2[10]; // массив для 9 символов

    while( fscanf( file, "%10c%9c%*[^\n]%*[\n]", c1, c2 ) > 0 ){
        c1[9] = c2[9] = '\0';
        printf("%s\n%s\n\n", c1, c2 );
    }

    getchar();
    return 0;
}

PM MAIL   Вверх
witex
Дата 17.12.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



Интересная вариация... заитерисовало даже очень!
Работает и на VC6.
Надо по лудше будет разобраться в форматах....
А то сам постоянно, cin, cout использую...
тумаю автору самая тема будет эта прога!

Это сообщение отредактировал(а) witex - 17.12.2006, 13:55
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Anikmar
Дата 17.12.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Если количество блоков по 9 известно - то самое то, а вот если нет - то я не уверен что сработает.
В строке формата прописывается точное количество аргументов. 
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.