Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Проблемное считывание с файла....


Автор: DESert 29.11.2006, 11:46
Привет всем!

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

"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);
     .........



но ничего не выходит.... 
еще вопрос как организовать считывание поочерёдно каждой строки?
заранее всем спасибо.

Автор: Sartorius 29.11.2006, 12:01
 строку житай fgets(), потом из нее sscanf()... Посмотри внимательно в файле конец строки - это \13\10 или тока \13? 
Если так - то открывай его "rb"

Автор: DESert 29.11.2006, 12:42
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);
        } 
   } 
......  


выдаёт для всех переменных нелувые значения....

Автор: Sartorius 29.11.2006, 12:47
Код

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);
...
};

Автор: Dov 29.11.2006, 14:20
Код
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;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)