CでHTMLエンティティをデコードするには?

今日は自由時間があったので、entities.c、entities.h というデコーダーをゼロから作成しました。

外部連携のある唯一の機能は

size_t decode_html_entities_utf8(char *dest, const char *src);

src の場合 ヌル ポインターの場合、文字列は dest から取得されます つまり、エンティティはその場でデコードされます。それ以外の場合、デコードされた文字列は dest に配置されます - strlen(src) + 1 を保持するのに十分な大きさのバッファを指す必要があります 文字 - および src 変更されません。

この関数は、デコードされた文字列の長さを返します。

大規模なテストを行っていないため、バグの可能性が高いことに注意してください...