The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"сортировка"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"сортировка" 
Сообщение от Изобретатель Велосипеда Искать по авторуВ закладки on 22-Авг-05, 11:19  (MSK)
Допустем что есть некий файл вот с таким содержимым

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

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "сортировка" 
Сообщение от naquad emailИскать по авторуВ закладки(??) on 22-Авг-05, 20:43  (MSK)
>Допустем что есть некий файл вот с таким содержимым
>
>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 }

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

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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