如何只读取c中此char缓冲区的第二行?

时间:2015-03-03 07:46:40

标签: c char

  char buf[256];
    ssize_t bytes_read; 
    /* Read some data from the client.  */
    bytes_read = read (fd, buf, sizeof (buf) - 1);
    buf[bytes_read] = '\0';
    printf ("Buffer %s", buf);

这是输出显示。

GET /index.html HTTP / 1.1

主持人:127.0.0.1:8080

User-Agent:Mozilla / 5.0(X11; Ubuntu; Linux x86_64; rv:33.0)Gecko / 20100101 Firefox / 33.0

接受:text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8

接受语言:en-US,en; q = 0.5

Accept-EncoMy主机名:ubuntu 文件:58HTTP / 1.1 200 OK

日期:2015年3月3日星期二15:56:02

服务器:主机服务器

Last-Modified:星期二,2015年2月17日00:19:56

内容类型:text / html

内容长度:58

我只需要存储“127.0.0.1”。 请提出建议。谢谢。

1 个答案:

答案 0 :(得分:1)

c字符串处理库的参考:link

您似乎想要做的通常称为"拆分字符串"。 在你的情况下,你会在行尾分割。 请注意,根据您的输入,这可能是" \ n"或" \ r \ n"

您需要的功能是strtok 该链接包含一个关于如何拆分字符串的非常好的示例。

你只需要按" \ n"例如:

    char *token = strtok(input, "\n");
    while(token) {
        printf(token);
        token = strtok(NULL, "\n");
    }

您现在可以逐个保存您的行以供以后使用,或者您可以保留一个计数器并处理第二行,然后退出(如果这就是您需要的全部内容),而不是printf。