c ++ fgets格式字符*

时间:2015-10-06 16:41:02

标签: c++ char format fgets

在c ++中你好初学者我尝试从popen读取输出,我把一个大的记忆放到行上以避免分段错误。为什么它看起来奇怪,它每6个字符削减一次,我希望有一个像1444121347809这样的整行;运行场景......

ostringstream message;
char* line = new char[ 10 * 1024 * 1024 ];
if ((pf = popen(files_to_open, "r")) != NULL) {
while (fgets(line, sizeof(line)-1, pf) != NULL)
{
  message << line;

控制台: 144414

878486

9; Sce

7.235

塞康

由于

1 个答案:

答案 0 :(得分:1)

您的问题是sizeof(line),此句子的大小为char *(8个字节)。在这个例子中:

#include <stdio.h>

int main(void)
{
    char *line = new char[100];

    printf( "Size: %02d\n", sizeof(line) );
}

输出是..

Size: 08

我建议您使用常量,例如MAX_BUFFER = 10 * 1024 * 1024或类似的东西。

祝你好运!

PD:

试试......

#define MAX_BUFFER 10*1024*1024

ostringstream message;
char* line = new char[ MAX_BUFFER  ];
if ((pf = popen(files_to_open, "r")) != NULL) {
while (fgets(line, MAX_BUFFER-1, pf) != NULL)
{
  message << line;