0

次のような文字列が表示されます。

「メアリーは子羊を飼っていた \n\r その毛は雪のように白かった」

\n\r は、これらの実際の ASCII 文字です (0x5C6E5c72)

文字列を取得して \n\r を 0x0D0A に変換する「簡単な」方法はありますか?

0x5C6E5c72 を配列にトークン化し、間に NLCR を使用して新しい文字列をフォーマットすることを考えていました..

便利な c ライブラリがあるかどうか、またはこれを簡単に行うための何かがあるかどうかは誰にもわかりませんか?

4

2 に答える 2

1

これは単なるテキスト検索と置換です。

MSDOS の子孫などで使用される標準の ASCII 改行シーケンスは、LF CR ではなく CR LF であり、決して では0D0A表されないことに注意してください。\r\n\n\r

C で検索と置換に使用した一般的なパターンに従います…</p>

void fix_newlines( char * base ) {
    char * read = base;
    char * write = base;
    while ( char * next = strstr( read, "\\n\\r" ) ) {
        memmove( write, read, next - read ); /* Copy text. */
        write += next - read; /* Advance past text. */
        read = next + 4; /* Advance past text and escape sequences. */
        strcpy( write, "\r\n" ); /* Translate to CRLF. */
        write += 2; /* Advance past CRLF. */
    }
    strcpy( write, read ); /* Copy trailing text. */
}
于 2013-09-10T23:58:55.937 に答える