c манипуляции со строками для входящих строк - PullRequest
2 голосов
/ 20 января 2020

Я новичок в C, и мне было интересно, как я могу сделать что-то вроде этого:

У меня есть строка, поступающая вот так через сокет (она может варьироваться)

"GET OK 1045 \r\nTHE RED RIDING HOOD"

Теперь я могу получить его по частям, и не совсем как

"GET OK 10"

А позже

"45 \r\nTHE RED RIDING HOOD"

Каков наилучший способ разделения, когда он находит \r\n и сохраните то, что было до него, в переменной, а то, что следует за ней, в другой.

Я пытался strtok(), но это просто стало грязным и получал ошибки

Я пытался sscanf() но так как я могу получать куски, я никогда не смогу заставить его правильно отформатировать его в мои переменные. Я уверен, что у меня будет простой способ сделать это через некоторое время l oop, но разделение - вот что меня заводит.

 while((items_read = read(sock, stories_buffer, BUF_SIZE)) > 0) {
     //how do i check on stories_buffer as it comes and split it based on delimiter \r\n
 }

1 Ответ

2 голосов
/ 20 января 2020

Вы можете заключить сокет в буферизованный ввод-вывод и использовать для него функции stdio, например fgets():

FILE *f = fdopen(sockfd, "w");
fgets(buf, sizeof(buf), f);

Это должно быть лучшим вариантом для сетевых протоколов на основе линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...