Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我希望它按原样打印输出。我现在正在使用此代码
然后,我希望程序能够跳过原始文本中的html标签,但我不知道该如何解决。
在上面的代码中,
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我希望它按原样打印输出。我现在正在使用此代码
#include <stdio.h>
#include <ctype.h>
#define BUFFER_SIZE 2000
int main(void)
{
char buffer[BUFFER_SIZE];
while(fgets (buffer, BUFFER_SIZE, stdin) !=NULL)
{
printf("%s",buffer);
}
return 0;
}
然后,我希望程序能够跳过原始文本中的html标签,但我不知道该如何解决。
最佳答案
您应该使用getline(3)(至少在Posix兼容系统上)。您基于fgets
的代码无法在很长的行中使用(因为很长的行将被“截断”:将全部读取,但仅会复制BUFFER_SIZE
字符,其余部分将被复制)忽略)。
你可以编码
char* linebuf=NULL;
size_t linesize=0;
while (!feof(stdin)) {
ssize_t linelen = getline(&linebuf, &linesize, stdin);
if (linelen<0) { perror("getline"); exit(EXIT_FAILURE); };
fputs(linebuf, stdout);
}
在上面的代码中,
linebuf
(除非失败)将增长到最宽的行大小。您应该在该循环之后free(linebuf)
09-06 17:02