gpt4 book ai didi

C - 如何从字符缓冲区中提取数字?

转载 作者:太空狗 更新时间:2023-10-29 15:34:50 25 4
gpt4 key购买 nike

我的代码向网站发送 HTTP HEAD 请求。然后该网站回复其信息。如何从回复的第一行中提取状态代码?状态代码是“HTTP/1.0”之后的值,它是 2xx 或 3xx。

代码:

#define BUF_LEN 2048

main(int argc, char *argv[])
{
int csd;
struct sockaddr_in server;
struct hostent *server_host;
int server_len;
int string_size;
short server_port;
char req_buffer[BUF_LEN];
char temp_buffer[BUF_LEN];
char receiveBuffer[BUF_LEN];
char resource_buffer[BUF_LEN];
int t;

if(argc!=2)
{
fprintf(stderr,"Usage: %s <website> \n",argv[0]);
exit(EXIT_FAILURE);
}

server_host=gethostbyname(argv[1]);
if (server_host == NULL)
{
herror("While calling gethostbyname()");
exit(EXIT_FAILURE);
}

csd=socket(PF_INET, SOCK_STREAM, 0);
if(csd<0)
{
perror("While calling socket()");
exit(EXIT_FAILURE);
}

server.sin_family=AF_INET;
memcpy(&server.sin_addr, server_host->h_addr_list[0], server_host->h_length);
server.sin_port = htons(80);
server_len=sizeof(server);
t = connect(csd, (struct sockaddr *) &server, server_len);
if (t<0)
{
perror("while connecting()");
exit(EXIT_FAILURE);
}
else
{
printf("connected to server\n\n");
}

sprintf(temp_buffer, "HEAD / HTTP/1.0\r\n");
strcpy(req_buffer, temp_buffer);
sprintf(temp_buffer, "HOST: %s\r\n", argv[1]);
strcat(req_buffer, temp_buffer);
sprintf(temp_buffer, "\r\n");
strcat(req_buffer, temp_buffer);

printf(req_buffer);

write(csd, req_buffer, strlen(req_buffer));

read(csd, receiveBuffer, BUF_LEN);

printf(receiveBuffer);

close(csd);
}

最佳答案

       #include <stdio.h>

int main()
{
char* inputstr = "HTTP/1.0 200";
int response = 0;
/
* On success, the sscanf returns the number of variables filled.
* In the case of an input failure before any data could be
* successfully read, EOF is returned.
*/
if(sscanf (inputstr, "HTTP/1.0 %d", &response) == 1)
printf ("response code %d\n",response);
else
printf ("It failed");
return 0;
}

关于C - 如何从字符缓冲区中提取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39408489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com