Когда я использую sscanf для URL-адреса http://www.website.com:30081/text.txt, например:
int parse_url(char *url, requesthdrs *hdrs, char
*uri, char *domain_name) {
int request_port;
int host_hdr_len;
char temp[MAXLINE];
size_t uri_len = 1;
/* case 1: request_port specified */
/* format: http://domain_name:request_port/... */
if (sscanf(url, "http://%s:%d%s", domain_name,
&request_port, uri) == 3) {
fprintf(stderr, "case1\n");
host_hdr_len = build_hosthdr(hdrs->host,
domain_name, request_port);
}
Программа не может ввести случай 1, почему это так?





%s читает до первого пробела или конца строки. Это не то, что вам нужно или нужно. Используйте %[^:] (набор сканирования, который соответствует чему угодно, кроме двоеточия)
вместо.
Остерегайтесь переполнения буфера. Вы не знаете, насколько велики могут быть струны.