Измените значения в тексте и сохраните его в массиве C - PullRequest
0 голосов
/ 18 апреля 2011

Мне нужна некоторая информация относительно сценария, в котором у меня есть массив, сохраненный с сообщением SIP INVITE

char array_invite[] =        "INVITE sip:302@1.2.3.4 SIP/2.0\r\n"
                             "Via:SIP/2.0/UDP 5.6.7.8:39708;\r\n"
                             "Max-Forwards: 70\r\n"
                             "Contact:<sip:305@ 5.6.7.8>\r\n"
                             "To: <sip:302@1.2.3.4>; \r\n"
                             "From: \042Client\042<sip:305@5.6.7.8>;\r\n"
                             "Call-ID: abcdefg\r\n"
                             "CSeq: 1 INVITE\r\n"
                             "Content-Type: application/sdp\r\n"
                             "Content-Length: 142\r\n";

Я хочу изменить значения жесткого кода для IP-адреса (1.2.3.4 и 5.6.7.8)и идентификационный номер (302 и 305) и сделать его динамическим, так что я хочу ввести значения вручную в выводе моего терминала, чтобы для каждого сеанса я мог подключаться к различным удаленным адресам.Поскольку я не очень хорошо знаю CI, я задаю этот вопрос.

Кто-нибудь имеет представление о том, как это можно сделать в C, может быть хорошим примером будет

С уважением, Dev

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Вы должны использовать <a href="http://linux.die.net/man/3/snprintf" rel="nofollow">snprintf()</a> для построения строки из "шаблона" форматирования, например так:

char buffer[4096];
int ip{[4];

ip[0] = 1;
ip[1] = 2;
ip[2] = 3;
ip[3] = 4;

snprintf(buffer, sizeof buffer, "INVITE sip:302@%d.%d.%d.%d SIP/2.0\r\n"
                             "Via:SIP/2.0/UDP 5.6.7.8:39708;\r\n"
                             "Max-Forwards: 70\r\n"
                             "Contact:<sip:305@ 5.6.7.8>\r\n"
                             "To: <sip:302@1.2.3.4>; \r\n"
                             "From: \042Client\042<sip:305@5.6.7.8>;\r\n"
                             "Call-ID: abcdefg\r\n"
                             "CSeq: 1 INVITE\r\n"
                             "Content-Type: application/sdp\r\n"
                             "Content-Length: 142\r\n", ip[0], ip[1], ip[2], ip[3]);

Здесь я только шаблонировал первый IP-адрес и представлял его как четыре int: s. Вам нужно будет расширить это для остальных полей, которые вы хотите отформатировать динамически.

0 голосов
/ 18 апреля 2011

Использование sprintf будет работать.

char array_invite[MAXLENGTH];
sprintf(array_invite,"Meet me at port %d\n",portnum);
...