Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа со строками, обьединение строк

12K
12 сентября 2006 года
Apelsin
21 / / 06.07.2006
нужна помощь
ситуация такая: есть файл в нем содержатся строки типа

 
Код:
root:x:0:0:root:/root:
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
operator:x:11:0:operator:/root:



Нужно загнать в динамический список имена тоесть в одной root в другой bin в следующей daemon

Решил сделать так. считывать посимвольно каждую букву(до тех пор пока не встретится ":"(1)) и обьединять с предыдущей

получилось что-то вроде
Код:
char ch, ch_temp;
FILE *fp;
 
if ((fp = fopen("passwd", "r")) == NULL) {
printf ("can not open file");
};
 
ch = getc(fp); // get first simbol
while (ch!=':') {
ch_temp = getc(fp);//get too simbol
strcat(ch, ch_temp);
}



Дело в том что strcat не обьединет, выдает что-то вроде 'strcat' : cannot convert parameter 1 from 'char' to 'char *'

От этого куска требуется просто получить переменную ch (типа char) в котором только имя

Буду признателен если кто поможет

[COLOR=red]пожалуйста, пользуйтесь тэгами форматирования[/COLOR]
2
12 сентября 2006 года
squirL
5.6K / / 13.08.2003
это обязательно реализовать на С? если это студенческая задача, оно конечно... а вообще тут простейший скрипт на perl либо bash подойдет.
12K
12 сентября 2006 года
Apelsin
21 / / 06.07.2006
да, студенческая. обязательно на С можно правда на С++ (но я пока на таком низком уровне развития. что разнице между ними незнаю(()

Да совсем забыл. обязательное условие чтобы скомилировалось на gcc
2
12 сентября 2006 года
squirL
5.6K / / 13.08.2003
ну вот так попробуй... только причеши :)
Код:
#include <stdio.h>

int main()
{
   FILE *fp;
   char *line;
   char *list[255];
   line = (char*) malloc(255);
   fp = fopen("/etc/passwd","r");
   int i=0;

   do
   {
      line = fgets(line, 255, fp);
      strtok(line,":");
      list= (char*) malloc(255);
      if (line && (strncmp(line,"#",1)))  strcpy(list[i++],line);
   }
   while (line);
   fclose(fp);
}
12K
12 сентября 2006 года
Apelsin
21 / / 06.07.2006
Большое тебе спасибо!!! Разобрался.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог