Привет всем.
Есть следующая проблемка.
Имеется текстовый файлик с нулями. Считываю его весь в строку.
char *sBuffer
И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.
Как бы мне это сделать?
Здравствуйте, Аноним, Вы писали:
А>Имеется текстовый файлик с нулями. Считываю его весь в строку.
А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.
А>Как бы мне это сделать?
strlen тебе поможет
Здравствуйте, Аноним, Вы писали:
А>Привет всем.
А>Есть следующая проблемка.
А>Имеется текстовый файлик с нулями. Считываю его весь в строку.
А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.
А>Как бы мне это сделать?
Подумать чем отличается 0 от "0"
Здравствуйте, Аноним, Вы писали:
А>Привет всем.
А>Есть следующая проблемка.
А>Имеется текстовый файлик с нулями. Считываю его весь в строку.
А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.
А>Как бы мне это сделать?
Символ '0' и нуль-терминатор есть совершенно разные вещи, поэтому я проблемы не вижу.
Здравствуйте, Аноним, Вы писали:
А>Привет всем.
А>Есть следующая проблемка.
А>Имеется текстовый файлик с нулями. Считываю его весь в строку.
А>char *sBuffer
А>И далее мне надо разбить ее на подстроки по нулевым символам. Но 0 является признаком конца строки.
А>Как бы мне это сделать?
А в чем проблема? инкрементировать указатель не судьба?
char* sourceLine = ....; // строка с 0 по центру
int len = ...; // кол-во байт, считанное в буффер
char* p = sourceLine;
while(p < &sourceLine[len])
{
printf(p); // печатаем строку
p += strlen(p)+1; // перемещаемся за 0
}
Что-то вроде этого, в общем...
К>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 )