Я пытаюсь разобрать заголовки SIP в строку. Я делаю это путем итерации по строке по строкам. Каждый заголовок должен быть разделен новым символом строки.Чтение строки C по строкам
Строка ввода будет выглядеть нечто похожее на это:
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP pc33.server1.com;branch=z9hG4bK776asdhds Max-Forwards: 70
To: user2 <sip:[email protected]>
From: user1 <sip:[email protected]>;tag=1928301774
Call-ID: [email protected]
CSeq: 314159 INVITE
Contact: <sip:[email protected]>
Content-Type: application/sdp
Content-Length: 142
Мой код:
void readlines(char *str){
int i;
int reset;
char current_line[500];
char tmp = 0;
for(i=0; i<strlen(str); i++){
tmp = str[i];
if (tmp == '\n'){
strncpy(current_line, str+tmp, i);
strcat(current_line, '\0');
printf("current line = %s", current_line);
}
}
}
В своем коде вы можете увидеть, если блок. В блоке if я печатаю текущую строку как дешевый способ протестировать мое решение, результат этого заявления печати ничего. Возможно, мое понимание того, как c интерпретирует символ \n
, не является полным.
посмотрите на 'strtok' функции –
Спасибо за предложение, к сожалению, Я уже рассмотрел эту функцию. По моему мнению, это не потокобезопасное, что является требованием для меня. – btald1331
Одна из проблем, которые я нашел и не понял, является ли я тестированием этой функции, передав аргумент командной строки с \ n. Но способ, которым я проходил тестовую строку, взял \ n буквально, а не как новый символ строки. – btald1331