Вы редко должны использовать <string.h>
в программе на C ++.
Возможно, вы должны использовать <string>
;возможно, вы можете использовать <cstring>
.
Это даже не глядя на ваш код - просто забудьте, что <string.h>
существует, если вы пишете на C ++;это заголовок C для функциональности C.Аналогичные комментарии относятся к <stdio.h>
;это заголовок C, и его редко следует использовать в C ++ (обычно с использованием <iostream>
или иногда <cstdio>
).
Ваша main()
функция требует тип возврата int
(как в C ++, так иC99).Поскольку вы хотите получить информацию после канала, вы можете написать (совершенно правильную программу на C (C89, C99) - вообще не используя никаких отличительных особенностей C ++, хотя компилятор C ++ также примет ее):
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char s[2048];
while (fgets(s, sizeof(s), stdin))
{
char *pos = strpbrk(s, "|\r\n");
if (pos != 0)
fputs(pos+1, stdout);
}
return 0;
}
Использование fputs()
вместо puts()
, чтобы избежать двойного интервала вывода.