-5

そして、印刷してそのまま出力したい。現在、私はこのコードを使用しています

#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 タグをスキップできるようにしたいのですが、それを回避する方法が正確にはわかりません。

4

1 に答える 1

1

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)そのループの後にすべきです...

于 2013-09-23T18:21:02.163 に答える