c ++ загадочный символ после строки в fgets

У меня есть программа, которая поднимает загадку ‘y’ на выходе, и она кажется связанной со строкой.
Код выполняет следующие действия: он захватывает данные буфера из php-скрипта и «будет» вставлять их в массив. Но эта тайна «у» появилась.
Мой код делает то, что должен, за исключением загадки «у».

выход:

198397652
22014-11-14 15:10:10
Buy
y0.00517290  <- that 'y'
0.00100000
0.00100000
0.00000517
198397685
52014-11-14 15:10:13
Buy
y0.00517290   <- again
0.00100000
0.00100000
0.00000517
198398295
52014-11-14 15:11:14
Buy
y0.00517290  <- another one
0.00100000
0.00100000
0.00000517

код:

char getmyData()
{
char buff[BUFSIZ];
FILE *fp = popen("php getMyorders.php 155", "r");
if (fp == NULL) perror ("Error opening file");
while(fgets(buff,sizeof(BUFSIZ),fp)){
for (int i = 0; i < sizeof(buff) / sizeof(BUFSIZ); ++i) {
std::cout << buff[i];
}
}
}

сценарий:

$result = api_query("myorders", array("marketid" => $id));
foreach( $result['return'] as $x) {
if(is_array($x)) {
foreach($x as $y) {
echo $y . "\n";
}
} else {
echo $x . "\n";
}
}

вывод скрипта, который захватывает c ++ (минус ‘y’):

198397652
2014-11-14 15:10:10
Buy
0.00517290
0.00100000
0.00100000
0.00000517
198397685
2014-11-14 15:10:13
Buy
0.00517290
0.00100000
0.00100000
0.00000517
198398295
2014-11-14 15:11:14
Buy
0.00517290
0.00100000
0.00100000
0.00000517

Как мне избавиться от «у»?
В чем моя ошибка?

0

Решение

buff гарантированно будет иметь нулевое окончание, поэтому его можно выводить напрямую при условии правильного size аргумент передается fgets(), Если вы настаиваете на переходе от символа к символу, просто выполните цикл, пока элемент в buff не равно NUL, т.е. buff[i] != '\0',

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]