当我在网址http://www.website.com:30081/text.txt上使用sscanf时,如下所示:
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,为什么是案例?
答案 0 :(得分:1)
%s
读取直到第一个空格或字符串结尾。那不是您想要或需要的。使用%[^:]
(一种与冒号匹配的扫描集)
代替。
当心缓冲区溢出。你不知道弦可以有多大。