sono alle prime armi con la programmazione di rete e stavo dando un'occhiata per la costruzione di un http client in ambiente C Linux. Googlando un po' ho visto che praticamente tutte le realizzazioni fanno uso di questa funzione:
- Codice: Seleziona tutto
char *build_query(char *host, char *page)
{
char *query, *pgindex = page;
char *tpl = "GET /%s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n";
if (*pgindex == '/')
pgindex++;
query = (char *) malloc(strlen(host)+strlen(pgindex)+
strlen(USERAGENT)+strlen(tpl)-5);
sprintf(query, tpl, pgindex, host, USERAGENT);
return query;
}
1) tpl è un puntatore alla stringa che segue ma non ne ho capito l'utilità; inoltre i realtivi %s che "valore" assumono?
2) non ho capito il commento sul -5;
3) non ho capito perché questo stesso numero viene sottratto nell'espressione interna alla malloc
4) a cosa serve mandare avanti il puntatore pgindex di un solo passo [presumibilmente infatti dopo lo slash il carattere sarà nel 99% dei casi diverso dallo slash stesso]?
se mi poteste aiutare ve ne sarei grato
Buona giornata