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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемное считывание с файла.... 
:(
    Опции темы
DESert
Дата 29.11.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем!

Есть файл, в котором строки имеют вид:

"ATOM   2039  PG  GTP   170       1.386  27.429  32.300  1.00 28.77           P  " (кавычки указываю, чтобы отметить начало и конец строки, в файле их нет)

Из этой строки мне нужно выделить элементы "PG"  "1.386"  "27.429"  "32.300" В каком виде их считывать не имеет значение, потому что в дальнейшем будут записываться в другой файл.
Пишу так:

Код

     
     FILE *gtp_old;
     gtp_old = fopen("file.txt","r");
     char chr;
     char str[20], str1[20], str2[20];
     int i1=0,i2=0,i3=0;
     float x=0.0,y=0.0,z=0.0,f1=0.0,f2=0.0;
     .........
     fscanf(gtp_old,"%s   %d  %s  %s   %d       %f  %f  %f  %f %f           %c  \n", str,&i1,str1,str2,i2,&x,&y,&z,&f1,&f2,chr);
     .........



но ничего не выходит.... 
еще вопрос как организовать считывание поочерёдно каждой строки?
заранее всем спасибо.
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
Sartorius
Дата 29.11.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



 строку житай fgets(), потом из нее sscanf()... Посмотри внимательно в файле конец строки - это \13\10 или тока \13? 
Если так - то открывай его "rb"
PM MAIL ICQ   Вверх
DESert
Дата 29.11.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Sartorius, после

Код

......
char c, string[90];
string[0]=0;
......
while((c=getc(gtp_old))!=EOF)
  {
        //ATOM   2039  PG  GTP   170       1.386  27.429  32.300  1.00 28.77           P  
        string[i]=c; i++;
        if (c=='\n') 
        {
            i=0; string[0]=0;
            sscanf(string,"%s   %d  %s  %s   %d       %f  %f  %f  %f %f           %c", str,&i1,str1,str2,i2,&x,&y,&z,&f1,&f2,chr);
            printf("Print.... %f  %s  %d\n",x,str,i1);
        } 
   } 
......  


выдаёт для всех переменных нелувые значения....
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
Sartorius
Дата 29.11.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

char cBuffer[80];
while(!feof(gtp_old))
{
  fgets(cBuffer, sizeof(cBuffer), gtp_old);
  sscanf(cBuffer,"%s   %d  %s  %s   %d       %f  %f  %f  %f %f           %c", str,&i1,str1,str2,i2,&x,&y,&z,&f1,&f2,chr);
...
};

PM MAIL ICQ   Вверх
Dov
Дата 29.11.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Код
int main()
{
    FILE *gtp_old;
    gtp_old = fopen("file.txt", "r");
    char str[20], str1[20], str2[20];
    int i1=0,i2=0,i3=0;
    float x=0.0,y=0.0,z=0.0,f1=0.0,f2=0.0;

    while(fscanf(gtp_old,"%s %d %s %s %d %f %f %f %f %f", str,&i1,str1,str2,&i2,&x,&y,&z,&f1,&f2) != EOF)    
        printf("%s %d %s %s %d %g %g %g %g %g\n", str,i1,str1,str2,i2,x,y,z,f1,f2);// для проверки

    return 0;
}


Это сообщение отредактировал(а) Dov - 29.11.2006, 14:21


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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