token строки с несколькими нулями
От: Аноним  
Дата: 13.09.04 11:29
Оценка: :)
Привет всем.
Есть следующая проблемка.

Имеется текстовый файлик с нулями. Считываю его весь в строку.
char *sBuffer
И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.

Как бы мне это сделать?
Re: token строки с несколькими нулями
От: Кодт Россия  
Дата: 13.09.04 11:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Имеется текстовый файлик с нулями. Считываю его весь в строку.

А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.

А>Как бы мне это сделать?


strlen тебе поможет
Перекуём баги на фичи!
Re: token строки с несколькими нулями
От: RZvarych Украина  
Дата: 13.09.04 11:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем.

А>Есть следующая проблемка.

А>Имеется текстовый файлик с нулями. Считываю его весь в строку.

А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.

А>Как бы мне это сделать?


Подумать чем отличается 0 от "0"
Re: token строки с несколькими нулями
От: avpet  
Дата: 13.09.04 11:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем.

А>Есть следующая проблемка.

А>Имеется текстовый файлик с нулями. Считываю его весь в строку.

А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.

А>Как бы мне это сделать?


Символ '0' и нуль-терминатор есть совершенно разные вещи, поэтому я проблемы не вижу.
Re: token строки с несколькими нулями
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 13.09.04 11:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем.

А>Есть следующая проблемка.

А>Имеется текстовый файлик с нулями. Считываю его весь в строку.

А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.

А>Как бы мне это сделать?


А в чем проблема? инкрементировать указатель не судьба?

char* sourceLine = ....; // строка с 0 по центру
int len = ...; // кол-во байт, считанное в буффер

char* p = sourceLine;
while(p < &sourceLine[len])
{
  printf(p); // печатаем строку
  p += strlen(p)+1; // перемещаемся за 0
}


Что-то вроде этого, в общем...
Re[2]: token строки с несколькими нулями
От: Кодт Россия  
Дата: 13.09.04 11:39
Оценка:
К>strlen тебе поможет

А именно:
char* multistring;
size_t size;

char* end = multistring+size;

for( ; multistring != size; multistring += strlen(multistring)+1 )
{
  // подстрока, заканчивающася нулём - рассматривается как обычная строка
  process(multistring);
}


Часто мультистринг составляют из непустых строк, и заканчивается он двойным нулём, то есть пустой строкой.
Тогда условие цикла будет таким:
for( ; *multistring != (char)0 ; multistring += strlen(multistring)+1 )
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.