在c或c ++中的空行后开始打印

时间:2012-04-20 11:41:17

标签: c++ c

假设我们有一个名为text的指针,它以这种格式打印这个东西:

Date: Fri, 20 Apr 2012 11:42:05 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2
PHP/5.3.6
X-Powered-By: PHP/5.3.6
Content-Length: 12
Connection: close
Content-Type: text/html
         <--- empty line

开始打印

如果在c或c ++中检测到空行,如何开始打印?

2 个答案:

答案 0 :(得分:2)

如果逐行阅读,只需检查线的长度即可。如果长度为零,则表示空行。

如果必须检查内存缓冲区,则在换行时将计数器重置为零。如果你到达换行符并且计数器已经为零,那么你有一个空行。

编辑:有些代码如何使用内存缓冲区执行此操作:

char *buffer = "Hello\nWorld\n\nFoo\n";
char *data_start = NULL;

char *line_beg, *p;
for (line_beg = p = buffer; *p; p++)
{
    if (*p == '\n')
    {
        if (line_beg == p)
        {
            /* Empty line */
            data_start = p + 1;
            break;
        }
        line_beg = p + 1;
    }
}

if (data_start != NULL)
    printf("Data: %s", data_start);

答案 1 :(得分:0)

由于这是之前post的延续,我想您可能希望探索fdopen 。这将是一种更简单的方法,可以逐行读取输出行fgets。然后,您可以轻松识别空行