The OpenNET Project / Index page

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

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

"Как разбить строку char на две переменные типа char?"  
Сообщение от bab email on 05-Май-08, 18:48 
Код на С/С++
Есть строка
char sometext[50]="111.111.111.111 hostname";
её падо поделить на две переменные (например: char Ip[25] и host[25])
Как это сделать по проще? Думаю просто найти вхождение пробела и при помощи его индекса найти два субстринга.
Уверен что это можно сделать проще при помощи какого нить sscanf, scanf или как нить ещё.
У кого какие идеи?
Спасибо.
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как разбить строку char на две переменные типа char?"  
Сообщение от vic (??) on 05-Май-08, 19:04 
>Код на С/С++

либо С, либо С++, пора уже определится.
решение задачи в главе 'строки' любой книжки для начинающих по С, либо С++.

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

2. "Как разбить строку char на две переменные типа char?"  
Сообщение от bab email on 05-Май-08, 20:01 
Разницы нет. Приоритет на C++, но жет быть и С. Можна оба. Любой простой вариант.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как разбить строку char на две переменные типа char?"  
Сообщение от phpcoder email(??) on 05-Май-08, 23:02 
>Код на С/С++
>Есть строка
>char sometext[50]="111.111.111.111 hostname";
>её падо поделить на две переменные (например: char Ip[25] и host[25])
>Как это сделать по проще? Думаю просто найти вхождение пробела и при
>помощи его индекса найти два субстринга.
>Уверен что это можно сделать проще при помощи какого нить sscanf, scanf
>или как нить ещё.
>У кого какие идеи?
>Спасибо.

Сходу, что пришло в голову, сам не проверял:

char sometext[]="111.111.111.111 hostname";
char *space_pos = NULL;
char *ip = NULL;
char *hostname = NULL

space_pos = strchr(sometext, ' ');
if (space_pos == NULL) {
   assert(0 && "sometext should always contains as minimum one space");
}

hostname = strdup(space_pos + 1);
space_pos = '\0';
ip = strdup(sometext);

Короче. нигде в задании не было условия что строку модифицировать нельзя, так что я решил немного её изменить для пущего удобства.

Потом ещё нужно не забыть сделать free(hostname) и free(ip).

На С++ можно примерно также, только используя необходимые конструкторы std::string

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

4. "Как разбить строку char на две переменные типа char?"  
Сообщение от bab on 06-Май-08, 01:06 
Задача сделать всё как можно проще. Как я и предпологал sscanf тут нужен. Просто работай завален, небыло времени поманить.
//============================================================
#include <stdio.h>

int main ()
{
  char Sometext[]="111.111.111.111 hostname";
  char Ip[20], Host[20];
  sscanf (Sometext,"%s %s",Ip,Host);

  printf ("Ip: %s Host: %s\n",Ip,Host);//Vivodim vsio srazu
  
  return 0;
}
//==========================================================
Попутный вопрос чтоб топиками не мусарить.
Как можно найти исходники в линукс? Например интересует `ifconfig` и `ls`.

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

5. "Как разбить строку char на две переменные типа char?"  
Сообщение от phpcoder email(??) on 06-Май-08, 09:30 
>Как можно найти исходники в линукс? Например интересует `ifconfig` и `ls`.

Скачайте исходники соответствующих пакетов:

[c0der@mvo ~]$ rpm -qf =ls =ifconfig --qf '%{NAME} %{URL}\n'              12:29
coreutils http://www.gnu.org/software/coreutils/
net-tools http://www.tazenda.demon.co.uk/phil/net-tools

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

7. "Как разбить строку char на две переменные типа char?"  
Сообщение от parad (ok) on 06-Май-08, 09:59 
лучше бы не советовал. честно, извини, не удержался.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как разбить строку char на две переменные типа char?"  
Сообщение от parad (ok) on 06-Май-08, 09:57 
+1

ЗЫ. Пацаны, вы загнули с sscanf, выделением памяти и количеством переменных!

//------------- CUT
char *host, *ip = "10.10.10.10 domain.com"

host = strchr (iphost, ' ');
if (host)
    *(host++) = '\0';

//------------- CUT

Теперь в ip храниться ип, в host - хост.

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

8. "Как разбить строку char на две переменные типа char?"  
Сообщение от bab on 12-Май-08, 22:47 
Parad хороший пример. sscanf  думаю более мощный, но твой тоже хороший, только с маленькой ошибочкой.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Как разбить строку char на две переменные типа char?"  
Сообщение от Ivanoff (ok) on 13-Май-08, 10:31 
>//------------- CUT
>char *host, *ip = "10.10.10.10 domain.com"
>
>host = strchr (iphost, ' ');
>if (host)
>    *(host++) = '\0';
>
>//------------- CUT
>

Все гениальное просто! :) Класс...


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

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

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




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

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