The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
сортировка, !*! Изобретатель Велосипеда, 22-Авг-05, 11:19  [смотреть все]
Допустем что есть некий файл вот с таким содержимым

qwerty,qwerty,qwerty,qwerty
qwerty,qwerty,qwerty,qwerty
qwerty,qwerty,qwerty,qwerty
qwerty,qwerty,qwerty,qwerty

Хочется сделать так чтобы массив str_split[0][0] содержал первый столбец
str_split[1][0] содержал второй столбец и так далее

использовать стандартные функции не интересно хотелось бы изобрести свой велосипед!

Спецы помогите оптимизировать код моей программы!!

Выход моей програмки

qwerty3


qwerty3

qwerty3

откуда взялись эти переходы строк мне не понятно. Плиз помогите разабраться вот листинг проги ->
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stddef.h>
#include <string.h>
#include <fcntl.h>
#include </usr/include/sys/io.h>
#include </usr/include/sys/stat.h>
#include </usr/include/sys/timeb.h>


char open_file();
char obrabotka(char *str);
int main(void)
{
  open_file();
  return 0;
}


char open_file()
{
  FILE *fp;
  char buffer[5000];
  int buflen;
  buflen=5000;

  if((fp=fopen("kat_kln","r"))==NULL)
   {
    printf("Error open DEV file\n");
    exit(1);
   }

  while(!feof(fp))                
       {
          fgets(buffer, buflen, fp);
      obrabotka(buffer);
      break;
       }

  fclose(fp);
  return 0;
}

char obrabotka(char *str)
{
  int str_len,integer_char,proverka_char;
  int x=0;
  int e;
  char buffer[50];
  char str_split[50][50];
  char null[10];

  str_len = strlen(str);
  
  for(integer_char=0; integer_char<str_len; integer_char++)
   {
    proverka_char=memcmp(&str[integer_char],",",1);
    if(proverka_char != 0)
     {
      strncpy(buffer,&str[integer_char],1);
      strcpy(str_split[x],buffer);
     }else{
           x++;
     }
      printf("%s",str_split[3]);    
   }
   //printf("\n");
  return 0;
}

  • сортировка, !*! naquad, 20:43 , 22-Авг-05 (1)
    >Допустем что есть некий файл вот с таким содержимым
    >
    >qwerty,qwerty,qwerty,qwerty
    >qwerty,qwerty,qwerty,qwerty
    >qwerty,qwerty,qwerty,qwerty
    >qwerty,qwerty,qwerty,qwerty
    >
    >Хочется сделать так чтобы массив str_split[0][0] содержал первый столбец
    >str_split[1][0] содержал второй столбец и так далее
    >
    >использовать стандартные функции не интересно хотелось бы изобрести свой велосипед!
    >
    >Спецы помогите оптимизировать код моей программы!!
    >
    >Выход моей програмки
    >
    >qwerty3
    >
    >
    >
    >
    >qwerty3
    >
    >
    >
    >qwerty3
    >
    >откуда взялись эти переходы строк мне не понятно. Плиз помогите разабраться вот листинг проги ->
    >#include <stdio.h>
    >#include <stdlib.h>
    >#include <time.h>
    >#include <math.h>
    >#include <stddef.h>
    >#include <string.h>
    >#include <fcntl.h>
    >#include </usr>
    >#include </usr>
    >#include </usr>
    >
    >
    >char open_file();
    >char obrabotka(char *str);
    >int main(void)
    > {
    >  open_file();
    >  return 0;
    > }
    >
    >
    >char open_file()
    > {
    >  FILE *fp;
    >  char buffer[5000];
    >  int buflen;
    >  buflen=5000;
    >
    >  if((fp=fopen("kat_kln","r"))==NULL)
    >   {
    >    printf("Error open DEV file\n");
    >    exit(1);
    >   }
    >
    >  while(!feof(fp))
    >       {
    >          fgets(buffer, buflen,
    >fp);
    >   obrabotka(buffer);
    >   break;
    >       }
    >
    >  fclose(fp);
    >  return 0;
    > }
    >
    >char obrabotka(char *str)
    > {
    >  int str_len,integer_char,proverka_char;
    >  int x=0;
    >  int e;
    >  char buffer[50];
    >  char str_split[50][50];
    >  char null[10];
    >
    >  str_len = strlen(str);
    >
    >  for(integer_char=0; integer_char<str_len; integer_char++)
    >   {
    >    proverka_char=memcmp(&str[integer_char],",",1);
    >    if(proverka_char != 0)
    >     {
    >      strncpy(buffer,&str[integer_char],1);
    >      strcpy(str_split[x],buffer);
    >     }else{
    >           x++;
    >
    >     }
    >      printf("%s",str_split[3]);
    >   }
    >   //printf("\n");
    >  return 0;
    > }


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <time.h>
      4 #include <math.h>
      5 #include <stddef.h>
      6 #include <string.h>
      7 #include <fcntl.h>
      8 #include </usr>
      9 #include </usr>
    10 #include </usr>
    11 #include <mcheck.h>
    12
    13 char open_file();
    14 char obrabotka(char *str);
    15 int main(void)
    16 {
    17   mtrace();
    18   open_file();
    19   return 0;
    20 }
    21
    22
    23 char open_file()
    24 {
    25   FILE *fp;
    26   char buffer[5000];
    27   int buflen;
    28   buflen=5000;
    29
    30   if((fp=fopen("in","r"))==NULL)
    31    {
    32     printf("Error open DEV file\n");
    33     exit(1);
    34    }
    35
    36   while(fgets(buffer, buflen, fp))
    37        {
    38           while(buffer[strlen(buffer)-1]=='\n')buffer[strlen(buffer)-1]=0;
    39         obrabotka(buffer);
    40        }
    41
    42   fclose(fp);
    43   return 0;
    44 }
    45
    46 int count(char* str){
    47         int i;
    48         int ret=1;
    49         for(i=0;str[i]!=0;i++)
    50                 if(str[i]==',')ret++;
    51         return ret;
    52 }
    53
    54 char obrabotka(char *str)
    55 {
    56         int i=0;
    57         char **members=NULL;
    58         char *ptr=str;
    59         int cnt=count(str);
    60         members=(char**)malloc(cnt*sizeof(char**));
    61         for(ptr=strchr(str,',');;i++){
    62                 members[i]=ptr!=NULL?strndup(str,ptr-str):strdup(str);
    63                 printf("%s ",members[i]);
    64                 if(ptr==NULL)break;
    65                 str=ptr+1;
    66                 ptr=strchr(str,',');
    67         }
    68         for(i=0;i<cnt;i++)free(members[i]);
    69         free(members);
    70         printf("\n");
    71         return 0;
    72 }

    На скору руку, но работает :)




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру