No.16951![]() |
クリップボードの内容取得時の改行コード 投稿者---cherry-i(2004/09/29 19:29:33) |
||
お世話になります。 下記コードにて、クリップボードの内容をコンソールに出力(printf)したところ問題ありませんが、 ファイルに出力(fprintf)するとそれぞれの行間に改行コード?が入ってしまいます。 コンソール出力 aaaaa bbbbb ccccc ファイルへ出力: aaaaa bbbbb ccccc となってしまいます。 これらの「改行コードらしきモノ」抜きにファイルへ出力する方法を教えていただきたいのですが。 御教示いただければうれしいですm(_ _)m。 void DispClipText(void) { HANDLE hText; char *pText; OpenClipboard(NULL); hText = GetClipboardData(CF_TEXT); if(hText == NULL) { printf("none\n"); } else { pText = GlobalLock(hText); printf("%s\n", pText); GlobalUnlock(hText); } CloseClipboard(); } |
No.16952![]() |
Re:クリップボードの内容取得時の改行コード 投稿者---かずま(2004/09/29 20:00:57) |
||
> これらの「改行コードらしきモノ」抜きにファイルへ > 出力する方法を教えていただきたいのですが。 出力ファイルをバイナリでオープンしてみてください。 fp = fopen(filename, "wb"); うまくいったら、なぜうまくいくのかを説明してください。 ヒント while (*pText) printf(" %02x", *pText++); |
No.16954![]() |
Re:クリップボードの内容取得時の改行コード 投稿者---cherry-i(2004/09/29 20:42:26) |
||
>出力ファイルをバイナリでオープンしてみてください。 あ、うまくいきました! 本当に有り難う御座いました! >うまくいったら、なぜうまくいくのかを説明してください。 できません。(-_-;) でも勉強します!(37歳だけど...) |
No.16956![]() |
Re:クリップボードの内容取得時の改行コード 投稿者---cherry-i(2004/09/30 09:27:52) |
||
お世話になります。 「改行コードらしきモノ」は0dと0a、つまりCRとLFでした。 テキストモードでファイルを読み込む際には、改行コードが CR+LFに変換されるんですね。 そしてこれをコンソール出力する際はCR+LF=改行で、 ファイルに書き出す際にはCR=改行、LF=改行となってしまうのでしょうか。 text中に任意に改行のみの行を含め、これをfgetsでバッファに取り込む際に '\n'を除外すればこの行を取り除くことが出来ますが、クリップボード経由で 付加された改行コードは'\n'にヒットしません(同じ0d 0aなのに)。 |