C言語なら俺に聞け 164

2025/07/23(水) 15:30:01.81ID:eCR5cXRr0
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 163
https://mevius.5ch.net/test/read.cgi/tech/1721137434/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2025/12/16(火) 17:47:00.48ID:fxmzBDbu0
windows の場合はファイル番号 (FRN) から直接にファイルを開くことができるっぽい。
204デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
垢版 |
2025/12/16(火) 17:48:08.13ID:unxv0LoC0
>>202
GetFinalPathNameByHandleやってみたけど残念
まあ、考えたらWindowsではHANDLE。FILEではないからね。HANDLEなら多分うまくいくんだろうね
でもいい関数を教えてもらいました。ありがとう
FILEからHANDLEに変更して作り直すかな。他人が作ったソフトを改造してやってるので
そもそも、FILEとHANDLEって何が違うのかなコンバートって出来る?
HANDLEはWindows専用でやってそうだから無理そうね
2025/12/16(火) 18:25:26.73ID:BhrzwszF0
>>204
FILEからHANDLEは取り出せる
よく調べろ
2025/12/16(火) 19:25:00.08ID:fxmzBDbu0
Windows では FILE の下にファイルディスクリプタっぽいものがあって、その下に本来の Win32 API があるという三層構造になってる。
msvcrt.dll (または ucrt.dll) が C や POSIX の仕様に合わせた機能を提供しているが、必要に応じて Win32 API 用のハンドルを取り出すことはできる。
207デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
垢版 |
2025/12/16(火) 19:50:18.68ID:unxv0LoC0
ありがとう。調べてみます
208デフォルトの名無しさん (ワッチョイ 72d0-AmFD)
垢版 |
2025/12/16(火) 21:05:39.33ID:ugyur8tL0
最近開いたファイル から引っ張ってこれないのか?
209デフォルトの名無しさん (ワッチョイ a77f-Iabs)
垢版 |
2025/12/16(火) 21:38:52.25ID:x7DniZMa0
>>198
階層設計間違ってるだけだと思うがな
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=33590&forum=7
2025/12/17(水) 00:35:55.40ID:9wOraPAW0
そのファイルを誰かが開くことは想定しなくて良いのか?
211デフォルトの名無しさん (ワッチョイ 12ad-FV3J)
垢版 |
2025/12/18(木) 01:16:26.13ID:qZgjLdb10
>>198
それ絶対に閉じないといけないのか? fflush() するだけじゃダメ?
2025/12/18(木) 09:00:10.06ID:T7xRzDCt0
DBとして機能するファイルならDBつかえよ?
2025/12/19(金) 13:27:44.03ID:uPPpqdRma
あるやん
https://learn.microsoft.com/ja-jp/windows/win32/memory/obtaining-a-file-name-from-a-file-handle
2025/12/19(金) 13:33:27.31ID:uPPpqdRma
https://learn.microsoft.com/ja-jp/cpp/c-runtime-library/reference/get-osfhandle
HANDLE h =(HANDLE)_get_osfhandle(fileno(fp));
2025/12/19(金) 14:08:20.19ID:GilgZVjz0
質問者の意図がよく分からない
FILE*で操作したいと言うことは、
誰かが上位でopenしてくれる前提なのかな?
2025/12/19(金) 17:52:53.90ID:oWecYqFH0
こうしてバグの温床が生まれたと。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況