edimus » 21 ноя 2007, 16:33
Программа должна считывать строки из файла, в строке данные разделены пробелами (только после первого данного идет 3 пробела). программа должна сохранять данные в переменные... Вот что у мя получилось...
компилится, но либо вылетает, либо уходит в бесконечный цикл... уже 3й день парюсь над ней... как поправить не знаю... ПОМОГИТЕ ПЛИЗ! Пишу на Си
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{ FILE * pFile;
int c_count;
char * string ; // обрабатываемая строка
char * p1, * p2, * p3, * p4, * p5, * p6, * p7, * p8, * p9, * p10;
char * pch;
pFile = fopen ("access.log.1" , "r");
if (pFile == NULL) perror ("Error opening file");
else while ( !feof(pFile) )
{ c_count=1;
fgets(string ,255,pFile);
puts(string);
pch=strchr(string,' ');
while (pch!=NULL)
{pch=strchr(pch+1,' ');
switch(c_count)
{
case 1: strncpy(p1,string,pch-string+4);
case 2: strncpy(p2,string,pch-string+1);
case 3: strncpy(p3,string,pch-string+1);
case 4: strncpy(p4,string,pch-string+1);
case 5: strncpy(p5,string,pch-string+1);
case 6: strncpy(p6,string,pch-string+1);
case 7: strncpy(p7,string,pch-string+1);
case 8: strncpy(p8,string,pch-string+1);
case 9: strncpy(p9,string,pch-string+1);
case 10: strncpy(p10,string,pch-string+1); }
if (strchr(string,' ')) c_count++;
}
fclose(pFile);
}
//printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",p1,p2,p3,p4,p5,p6,p7,p8,p9,p10);
system("PAUSE");
return 0;
}
Программа должна считывать строки из файла, в строке данные разделены пробелами (только после первого данного идет 3 пробела). программа должна сохранять данные в переменные... Вот что у мя получилось...
компилится, но либо вылетает, либо уходит в бесконечный цикл... уже 3й день парюсь над ней... как поправить не знаю... ПОМОГИТЕ ПЛИЗ! Пишу на Си
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{ FILE * pFile;
int c_count;
char * string ; // обрабатываемая строка
char * p1, * p2, * p3, * p4, * p5, * p6, * p7, * p8, * p9, * p10;
char * pch;
pFile = fopen ("access.log.1" , "r");
if (pFile == NULL) perror ("Error opening file");
else while ( !feof(pFile) )
{ c_count=1;
fgets(string ,255,pFile);
puts(string);
pch=strchr(string,' ');
while (pch!=NULL)
{pch=strchr(pch+1,' ');
switch(c_count)
{
case 1: strncpy(p1,string,pch-string+4);
case 2: strncpy(p2,string,pch-string+1);
case 3: strncpy(p3,string,pch-string+1);
case 4: strncpy(p4,string,pch-string+1);
case 5: strncpy(p5,string,pch-string+1);
case 6: strncpy(p6,string,pch-string+1);
case 7: strncpy(p7,string,pch-string+1);
case 8: strncpy(p8,string,pch-string+1);
case 9: strncpy(p9,string,pch-string+1);
case 10: strncpy(p10,string,pch-string+1); }
if (strchr(string,' ')) c_count++;
}
fclose(pFile);
}
//printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",p1,p2,p3,p4,p5,p6,p7,p8,p9,p10);
system("PAUSE");
return 0;
}