(新スレ立ての際上記コマンドを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
C言語なら俺に聞け 164
1デフォルトの名無しさん (ワッチョイ 3301-UQbq)
2025/07/23(水) 15:30:01.81ID:eCR5cXRr0152デフォルトの名無しさん (ワッチョイ 1f7b-Y7Iz)
2025/11/13(木) 08:02:19.41ID:DM7iFpPI0 以上、終わり
153はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f32-jcp5)
2025/11/13(木) 15:04:26.13ID:bJCWdXAy0154デフォルトの名無しさん (ワッチョイ 1fdf-yiAb)
2025/11/13(木) 20:55:40.45ID:FrAYIMEk0155はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f32-jcp5)
2025/11/13(木) 22:45:21.40ID:bJCWdXAy0 >>143
言いたいことがよくわからん (非staticプロトタイプってなんや?) けど私なりに推測するとカプセル化の基本パターンや使い分けが知りたいってこと?
言いたいことがよくわからん (非staticプロトタイプってなんや?) けど私なりに推測するとカプセル化の基本パターンや使い分けが知りたいってこと?
156デフォルトの名無しさん (ブーイモ MM4f-ACTV)
2025/11/14(金) 10:11:22.08ID:j5Ukc9dzM 「モバイルオーダー」悪用、1万円超の弁当代を58円で不正決済…23歳の無職男を容疑で逮捕
決済システムが脆弱すぎだろ?
よくこんな作り方で普及させたな?インド人か?
決済システムが脆弱すぎだろ?
よくこんな作り方で普及させたな?インド人か?
157デフォルトの名無しさん (ワッチョイ ff10-DX0k)
2025/11/14(金) 11:20:09.02ID:H7qd0VM/0 一万円の弁当か、食べてみたい
払う気はないけど
払う気はないけど
158デフォルトの名無しさん (ワッチョイ 1f2f-5yZn)
2025/11/15(土) 03:54:57.59ID:61X/lnkN0 あら C99で空宣言使えなくなった?
typedef enum {} PINSTATE;
typedef struct s_pinobj {
bool(*sequence)(struct s_pinobj * obj);
uint16_t tickcount; // 10ms ticking
PINSTATE state;
.
.
} TXXX;
などと使っていたんだけど、エラーになるようだ。
循環参照対策はどうするんだろ?
typedef enum {} PINSTATE;
typedef struct s_pinobj {
bool(*sequence)(struct s_pinobj * obj);
uint16_t tickcount; // 10ms ticking
PINSTATE state;
.
.
} TXXX;
などと使っていたんだけど、エラーになるようだ。
循環参照対策はどうするんだろ?
159デフォルトの名無しさん (ブーイモ MM4f-ACTV)
2025/11/15(土) 08:31:52.06ID:u+2daHyUM 客→クレジット会社鯖→決済情報→商店
の流れを
客→決済情報→商店
だとよ
つまりクレジット会社鯖でやってる業務をすべてなりすまししてるわけだ
鯖と商店とのやり取りもザルだったってこと
の流れを
客→決済情報→商店
だとよ
つまりクレジット会社鯖でやってる業務をすべてなりすまししてるわけだ
鯖と商店とのやり取りもザルだったってこと
160はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f32-ob2Q)
2025/11/15(土) 11:24:07.72ID:nRXHw60f0 >>158
空宣言というのは enum の列挙子がゼロ個ということを言ってるの?
enum が導入された C89 の時点で列挙子はひとつ以上が必要ということになっていて列挙子がゼロ個で良かった時代は無い。
(出来たとしたら処理系の拡張。)
そして enum の宣言は必ず列挙子のリストを必要としている。
struct のように { } を書かなければ不完全型として宣言されるというようなことはないから前方宣言で名前だけ書いておいて後で中身を定義するということも出来ない。
不完全型の列挙型というものは存在できないってことね。
空宣言というのは enum の列挙子がゼロ個ということを言ってるの?
enum が導入された C89 の時点で列挙子はひとつ以上が必要ということになっていて列挙子がゼロ個で良かった時代は無い。
(出来たとしたら処理系の拡張。)
そして enum の宣言は必ず列挙子のリストを必要としている。
struct のように { } を書かなければ不完全型として宣言されるというようなことはないから前方宣言で名前だけ書いておいて後で中身を定義するということも出来ない。
不完全型の列挙型というものは存在できないってことね。
161デフォルトの名無しさん (ササクッテロラ Spf3-7str)
2025/11/15(土) 11:40:24.78ID:YWAh8Gcip162デフォルトの名無しさん (ワッチョイ 1fc9-ACTV)
2025/11/15(土) 14:39:56.35ID:mkkTDyMO0163デフォルトの名無しさん (ワッチョイ 9f5f-7str)
2025/11/15(土) 15:15:39.55ID:jhUkF2/k0164デフォルトの名無しさん (ワッチョイ 1fc9-ACTV)
2025/11/15(土) 15:38:28.29ID:mkkTDyMO0 例え決済情報を盗まれてもさ、アクセス先がクレジット会社でもないとこからのやつを
なんで正規なものとして受け取るかね?
いろいろおかしい
なんで正規なものとして受け取るかね?
いろいろおかしい
165デフォルトの名無しさん (ワッチョイ cd6e-7JbV)
2025/11/17(月) 21:52:49.67ID:WNaQVVCp0 C言語とは直接関係ない話題だが、
カード情報が盗まれてそのまま決済が
通過してしまった事件が過去にあった。
カード持ち主には返金されたが、
損害を誰が負担するかで揉めてた。
カード会社が持つケースもあったが、
テナント企業が弱いと、涙を流すケースもあった。
カード情報が盗まれてそのまま決済が
通過してしまった事件が過去にあった。
カード持ち主には返金されたが、
損害を誰が負担するかで揉めてた。
カード会社が持つケースもあったが、
テナント企業が弱いと、涙を流すケースもあった。
166デフォルトの名無しさん (ワッチョイ 02ad-OBIQ)
2025/11/17(月) 21:56:21.37ID:ktJ33fIe0 直接どころかまったく無関係で草
167デフォルトの名無しさん (ワッチョイ cd6e-7JbV)
2025/11/18(火) 00:14:16.54ID:Ie2Q8O000 Eコマースサイト作る上では必要な知識だからな
全く無関係って訳ではない
全く無関係って訳ではない
168デフォルトの名無しさん (ワッチョイ 259c-L2M8)
2025/11/18(火) 00:20:37.35ID:3HXouIV30 Cで作るの?
169デフォルトの名無しさん (ワッチョイ 5202-F/8Y)
2025/11/18(火) 16:36:11.76ID:d9hs+rsN0 cのcgiだって可能だしあってもいいだろ(?)
170デフォルトの名無しさん (アウアウウー Sa85-H7iN)
2025/11/18(火) 23:45:44.92ID:+AochNn2a windows で
setlocale(LC_ALL, "ja-JP.UTF8"); とか
setlocale(LC_CTYPE, "ja-JP.UTF8"); とか
プログラムの先頭で設定しても無駄?
console は chcp 65001 してる
fopen() のファイル名に UTF8 で渡したいんだが
出来れば readdir() も UTF8 で取得したいのよ
setlocale(LC_ALL, "ja-JP.UTF8"); とか
setlocale(LC_CTYPE, "ja-JP.UTF8"); とか
プログラムの先頭で設定しても無駄?
console は chcp 65001 してる
fopen() のファイル名に UTF8 で渡したいんだが
出来れば readdir() も UTF8 で取得したいのよ
171デフォルトの名無しさん (ワッチョイ 3d5f-JyHE)
2025/11/19(水) 07:24:28.12ID:1qR7LTyn0 ソースコードがSJISなら無駄
172デフォルトの名無しさん (スフッ Sd22-A2v6)
2025/11/19(水) 10:44:13.50ID:sa05/K8dd opendir and readdir themselves work on bytes. They do not perform and reencoding.
Some filesystem drivers may impose contraints on the byte sequences.
I would expect the form returned by readdir to work when passed to opendir.
I'd like to know how you were able to find out that opendir and readdir do not perform any reencoding?
You can trace it through the C library source and the kernel code.
If you run strace ls, you can directly start from the kernel entry point: the open syscall.
The generic filesystem support code passes all bytes other than null and / along unmodified.
It's only some filesystem drivers that transforms file names.
Some filesystem drivers may impose contraints on the byte sequences.
I would expect the form returned by readdir to work when passed to opendir.
I'd like to know how you were able to find out that opendir and readdir do not perform any reencoding?
You can trace it through the C library source and the kernel code.
If you run strace ls, you can directly start from the kernel entry point: the open syscall.
The generic filesystem support code passes all bytes other than null and / along unmodified.
It's only some filesystem drivers that transforms file names.
173はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-o1Ob)
2025/11/19(水) 11:29:22.16ID:MnCaLNwG0 >>170
普通の入出力はテキストモードとバイナリモードがあって、ロケールの設定がテキストモードの振る舞いに影響するんだけど……
Windows の場合はテキストモード・バイナリモード・ユニコードモードに分かれていて _setmode でユニコードモードに設定する必要がある。
しかしユニコードモードの設定はワイド入出力系関数 (wprintf など) にしか影響を及ぼさない。
そんでその辺の設定をしても、入出力の内容に関してであってファイル名を UTF-8 で渡すのはたぶん駄目なはず。 (確認はしてない。 すまぬ。)
ファイル名はワイド文字 (UTF-16) に変換してから _wfopen で開くのが正当な方法だと思う。
Windows に readdir は無いので FindFirstFileW, FindNextFileW を使うのが普通の方法。
だいぶん前に調べたときは msvcrt と ucrt でちょっと振る舞いが違ったような記憶があるのでそこらにも注意が必要。
ucrt は色々と大きく改良されているみたいなのでひょっとするともっとモダンな方法があるかもしれない。
普通の入出力はテキストモードとバイナリモードがあって、ロケールの設定がテキストモードの振る舞いに影響するんだけど……
Windows の場合はテキストモード・バイナリモード・ユニコードモードに分かれていて _setmode でユニコードモードに設定する必要がある。
しかしユニコードモードの設定はワイド入出力系関数 (wprintf など) にしか影響を及ぼさない。
そんでその辺の設定をしても、入出力の内容に関してであってファイル名を UTF-8 で渡すのはたぶん駄目なはず。 (確認はしてない。 すまぬ。)
ファイル名はワイド文字 (UTF-16) に変換してから _wfopen で開くのが正当な方法だと思う。
Windows に readdir は無いので FindFirstFileW, FindNextFileW を使うのが普通の方法。
だいぶん前に調べたときは msvcrt と ucrt でちょっと振る舞いが違ったような記憶があるのでそこらにも注意が必要。
ucrt は色々と大きく改良されているみたいなのでひょっとするともっとモダンな方法があるかもしれない。
174デフォルトの名無しさん (ワッチョイ cd5c-7JbV)
2025/11/19(水) 12:12:33.50ID:DtAPl5720 UTF16は廃止してほしい
175デフォルトの名無しさん (ワッチョイ ae25-Lseg)
2025/11/19(水) 13:55:46.72ID:95cnfr9u0 ANSI C以前のC処理系で、frexp()の第2引数が、intではなくdoubleへのポインタになってるやつってありましたっけ?
176デフォルトの名無しさん (ワッチョイ 22c0-QuBx)
2025/11/20(木) 08:57:49.57ID:o66Cu/z90 >>175
無いです
無いです
177デフォルトの名無しさん (ワッチョイ 6e10-7JbV)
2025/11/20(木) 10:19:51.08ID:WN+N3a+40 intで足りなくなったときに便利
178デフォルトの名無しさん (アウアウウー Sa85-H7iN)
2025/11/21(金) 10:02:41.70ID:VM+m9mUGa doubleの方が有効桁数少ないんじゃね
179デフォルトの名無しさん (アウアウウー Sa85-H7iN)
2025/11/21(金) 10:06:53.94ID:VM+m9mUGa >>173
>Windows に readdir は無いので FindFirstFileW, FindNextFileW を使うのが普通の方法。
もちろんそうだろうと思う有難う
だが WideCharToMultiByte とか MultiByteToWideChar をちょっとすっ飛ばしたかったんだ
>Windows に readdir は無いので FindFirstFileW, FindNextFileW を使うのが普通の方法。
もちろんそうだろうと思う有難う
だが WideCharToMultiByte とか MultiByteToWideChar をちょっとすっ飛ばしたかったんだ
180はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-o1Ob)
2025/11/21(金) 11:13:01.47ID:G3R9bFuG0 >>179
Windows アプリケーション内部では UTF-16 で扱って、必要なら入出力のときに変換するというのが楽だよ。
モードの設定 (前述の _setmode) をしておけば入出力のときの変換は勝手にやってくれて明示的にプログラマが何かする必要がない。
Win32 API (64ビット版を含む) は UTF-16 が基礎なのでそれで統一しておけば文字コード変換が必要な場面は生じない。
マルチプラットフォームだとかサードパーティー製ライブラリと組み合わせるだとかし始めると色々と困ることもあるし、全体の設計は状況によるんだけど……
Windows アプリケーション内部では UTF-16 で扱って、必要なら入出力のときに変換するというのが楽だよ。
モードの設定 (前述の _setmode) をしておけば入出力のときの変換は勝手にやってくれて明示的にプログラマが何かする必要がない。
Win32 API (64ビット版を含む) は UTF-16 が基礎なのでそれで統一しておけば文字コード変換が必要な場面は生じない。
マルチプラットフォームだとかサードパーティー製ライブラリと組み合わせるだとかし始めると色々と困ることもあるし、全体の設計は状況によるんだけど……
181デフォルトの名無しさん (ワッチョイ 5202-F/8Y)
2025/11/22(土) 01:33:08.03ID:CDycBrMu0182デフォルトの名無しさん (ワッチョイ c736-w0D3)
2025/11/24(月) 09:05:52.94ID:StdCmM8J0 long longでいいじゃん
183デフォルトの名無しさん (ワッチョイ 67f6-WraW)
2025/11/25(火) 10:15:11.74ID:F0vSFTML0 frexp() の第2引数ってそもそも性質からして整数以外有り得ないんじゃね
むしろ第1引数も整数でも良いくらい
むしろ第1引数も整数でも良いくらい
184デフォルトの名無しさん (ワンミングク MM3f-nzoZ)
2025/11/25(火) 12:28:06.26ID:MC0j4mydM 複素数に拡張してくれ
核開発に使える
核開発に使える
185デフォルトの名無しさん (スフッ Sd7f-Lg42)
2025/11/25(火) 13:48:33.82ID:rSIO8n1ld 質問です
int hoge(wchar_t *p);
な関数があって
int a = hoge(L"fuga"); だと正常で
int b = hoge("fuga"); だと誤動作します
理由は判りますが
そもそも引数がcompile errorにもwarningにもなりません
C++みたいにcompile errorにする方法は?
int hoge(wchar_t *p);
な関数があって
int a = hoge(L"fuga"); だと正常で
int b = hoge("fuga"); だと誤動作します
理由は判りますが
そもそも引数がcompile errorにもwarningにもなりません
C++みたいにcompile errorにする方法は?
186はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6732-A6do)
2025/11/25(火) 15:48:36.00ID:evMdha/k0187はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6732-A6do)
2025/11/26(水) 10:42:02.61ID:ZGYu6bhA0 念のために仕様をよく読んで検討したら wchar_t が char の別名として定義されることは理屈の上では認められることを発見した。
そしてその上で文字列リテラルとワイド文字リテラルが異なる符号体系を持つということも可能ではある。
もしそういう処理系なら >>185 の事例は型が合った上で誤作動 (プログラマの想定と異なる動作) を引き起こすかもしれない。
実際にそういう処理系があるのかどうか知らんけど libc のドキュメント中で組み込みシステムではそういうのも妥当かもしれないという言及がある。
https://www.gnu.org/software/libc/manual/html_node/Extended-Char-Intro.html#index-wchar_005ft
そしてその上で文字列リテラルとワイド文字リテラルが異なる符号体系を持つということも可能ではある。
もしそういう処理系なら >>185 の事例は型が合った上で誤作動 (プログラマの想定と異なる動作) を引き起こすかもしれない。
実際にそういう処理系があるのかどうか知らんけど libc のドキュメント中で組み込みシステムではそういうのも妥当かもしれないという言及がある。
https://www.gnu.org/software/libc/manual/html_node/Extended-Char-Intro.html#index-wchar_005ft
188デフォルトの名無しさん (アウアウウー Sa0b-WraW)
2025/11/26(水) 11:37:21.77ID:g4n+mUAPa >>186
VCで確認したら警告は出たがエラーではないので実行出来た上で誤作動(描かれた通りには動いている)
警告レベル替えればエラーにも出来るんだろうけど
文字列リテラルポインタからワイド文字列リテラルポインタへの自動キャスト(あるいはその逆のキャスト)以外のところにも影響出てエラーだらけになるかも
文字列リテラルポインタからワイド文字列リテラルポインタへの自動キャスト(あるいはその逆のキャスト)限定でエラーにならないかな
VCで確認したら警告は出たがエラーではないので実行出来た上で誤作動(描かれた通りには動いている)
警告レベル替えればエラーにも出来るんだろうけど
文字列リテラルポインタからワイド文字列リテラルポインタへの自動キャスト(あるいはその逆のキャスト)以外のところにも影響出てエラーだらけになるかも
文字列リテラルポインタからワイド文字列リテラルポインタへの自動キャスト(あるいはその逆のキャスト)限定でエラーにならないかな
189はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6732-A6do)
2025/11/26(水) 15:23:02.27ID:ZGYu6bhA0 >>188
MSVC がそんな馬鹿げた仕組みとは驚きだな。
合わない型 (本来は暗黙の型変換も認められない型) は一律にエラーになるべきだけれど、とりあえず自分のコードで型が合わないケースをエラーにしたいなら
#pragma warning(error : 4133)
とするくらいが落としどころじゃないかと思う。
MSVC がそんな馬鹿げた仕組みとは驚きだな。
合わない型 (本来は暗黙の型変換も認められない型) は一律にエラーになるべきだけれど、とりあえず自分のコードで型が合わないケースをエラーにしたいなら
#pragma warning(error : 4133)
とするくらいが落としどころじゃないかと思う。
190デフォルトの名無しさん (スフッ Sd7f-Lg42)
2025/11/27(木) 05:19:27.44ID:KfDQEfrsd191デフォルトの名無しさん (ワッチョイ 5f81-w0D3)
2025/11/29(土) 18:02:47.96ID:MnjgLok40 固定小数点でも誤差が出ます
とかトンチンカンなこと言い出すやついるけど
割り算しなきゃほぼ誤差ないんだよ
とかトンチンカンなこと言い出すやついるけど
割り算しなきゃほぼ誤差ないんだよ
192デフォルトの名無しさん (ワッチョイ 79f6-v69L)
2025/12/01(月) 12:04:42.29ID:HDTmHOXC0 gmp使ったソースだった
193デフォルトの名無しさん (アウアウウー Sa21-v69L)
2025/12/03(水) 11:46:07.94ID:G3Cx7y7oa194デフォルトの名無しさん (ワッチョイ 6a4e-Qxko)
2025/12/03(水) 22:47:42.54ID:E5HetRmY0195デフォルトの名無しさん (ワッチョイ 6a4e-Qxko)
2025/12/03(水) 22:51:48.92ID:E5HetRmY0 こういうのも、流行のclaudeとかで聞くもんなんかな?
196はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7732-7TsH)
2025/12/09(火) 18:21:11.05ID:4lQ1LhG80 ツールを起動するだけで CERT C コーディングスタンダードに準拠か否か判定するというレベルの簡単なものはないというか無理。
機械的な検証が困難な項目は人が精査する必要がある場合もあるからツールはあくまでも補助だよ。
まずは項目を大まかに分類して機械的に出来るところは機械的にやって残りは人が検証 (レビューやテスト) する体制を整えるしかない。
きちんとやろうとすると技術的なことより組織の運営の話になるんじゃないかな……
機械的な検証が困難な項目は人が精査する必要がある場合もあるからツールはあくまでも補助だよ。
まずは項目を大まかに分類して機械的に出来るところは機械的にやって残りは人が検証 (レビューやテスト) する体制を整えるしかない。
きちんとやろうとすると技術的なことより組織の運営の話になるんじゃないかな……
197デフォルトの名無しさん (ワッチョイ 7703-EGrP)
2025/12/11(木) 01:14:00.20ID:VWVRinEO0 コーディングルールはサイトでの指定以外は気にしたことが無いなあ笑
198デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
2025/12/16(火) 15:40:55.95ID:unxv0LoC0 C言語であるサブルーチンを作ろうとしてるんだけど、FILE* fで開いたファイルを一旦閉じて作業をして、また開きたいんだが、FILE* f だけを引数にしたい。そんなこと出来る?
開いたファイルの名前を引数にできれば、その名前で再度開けるが、FILE* f のポインタだけを引数にしてそんなこと出来るのかな?
開いたファイルの名前を引数にできれば、その名前で再度開けるが、FILE* f のポインタだけを引数にしてそんなこと出来るのかな?
199デフォルトの名無しさん (ワッチョイ 1e87-zkFG)
2025/12/16(火) 16:02:20.55ID:BhrzwszF0 できない
FILEが生きているうちならパス名を調べるのは多分できるだろな
FILEが生きているうちならパス名を調べるのは多分できるだろな
200はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e332-f85/)
2025/12/16(火) 16:25:43.79ID:8p6wZKuQ0 >>198
閉じた時点で FILE* 型のハンドルは無効になる。
無効になったハンドルに対して出来ることは何ひとつない。
ファイルを開いている内に再び開くために必要な適用な情報を確保しておくしかない。
言語仕様上は細かい規定は無いのでホスト環境 (OS) に依存したなんらかの手段を使う必要がある。
Linux なら inode 番号あたりを保持しておけばファイル名を覚えておくより短くて済むからいいんじゃないかな?
まあ開くときにはたぶん一旦ファイル名を取得する必要はあるんだけど。
(他の OS でもだいたい似たような仕組みは有る。 Windows だと GetFileInformationByHandle を調べてみると良い。)
閉じた時点で FILE* 型のハンドルは無効になる。
無効になったハンドルに対して出来ることは何ひとつない。
ファイルを開いている内に再び開くために必要な適用な情報を確保しておくしかない。
言語仕様上は細かい規定は無いのでホスト環境 (OS) に依存したなんらかの手段を使う必要がある。
Linux なら inode 番号あたりを保持しておけばファイル名を覚えておくより短くて済むからいいんじゃないかな?
まあ開くときにはたぶん一旦ファイル名を取得する必要はあるんだけど。
(他の OS でもだいたい似たような仕組みは有る。 Windows だと GetFileInformationByHandle を調べてみると良い。)
201デフォルトの名無しさん (ワッチョイ 1f22-1bfe)
2025/12/16(火) 17:12:42.21ID:unxv0LoC0 みなさんありがとう。OSはWindowsです
GetFileInformationByHandle も調べてみたけど、これではファイル名は出てきませんね
多分FILE* fからファイル名が出てこないと、無理っぽいですね
GetFileInformationByHandle も調べてみたけど、これではファイル名は出てきませんね
多分FILE* fからファイル名が出てこないと、無理っぽいですね
202デフォルトの名無しさん (ワッチョイ 1ecd-zkFG)
2025/12/16(火) 17:27:33.70ID:BhrzwszF0 GetFinalPathNameByHandle
geminiに聞いただけで期待通り動くかは知らん
geminiに聞いただけで期待通り動くかは知らん
203はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 77e8-b0Pp)
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専用でやってそうだから無理そうね
GetFinalPathNameByHandleやってみたけど残念
まあ、考えたらWindowsではHANDLE。FILEではないからね。HANDLEなら多分うまくいくんだろうね
でもいい関数を教えてもらいました。ありがとう
FILEからHANDLEに変更して作り直すかな。他人が作ったソフトを改造してやってるので
そもそも、FILEとHANDLEって何が違うのかなコンバートって出来る?
HANDLEはWindows専用でやってそうだから無理そうね
205デフォルトの名無しさん (ワッチョイ 1ecd-zkFG)
2025/12/16(火) 18:25:26.73ID:BhrzwszF0206はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 77e8-b0Pp)
2025/12/16(火) 19:25:00.08ID:fxmzBDbu0 Windows では FILE の下にファイルディスクリプタっぽいものがあって、その下に本来の Win32 API があるという三層構造になってる。
msvcrt.dll (または ucrt.dll) が C や POSIX の仕様に合わせた機能を提供しているが、必要に応じて 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:x7DniZMa0210デフォルトの名無しさん (ワッチョイ 6358-hA2T)
2025/12/17(水) 00:35:55.40ID:9wOraPAW0 そのファイルを誰かが開くことは想定しなくて良いのか?
211デフォルトの名無しさん (ワッチョイ 12ad-FV3J)
2025/12/18(木) 01:16:26.13ID:qZgjLdb10 >>198
それ絶対に閉じないといけないのか? fflush() するだけじゃダメ?
それ絶対に閉じないといけないのか? fflush() するだけじゃダメ?
212デフォルトの名無しさん (ワッチョイ 1ed8-v2wD)
2025/12/18(木) 09:00:10.06ID:T7xRzDCt0 DBとして機能するファイルならDBつかえよ?
213デフォルトの名無しさん (アウアウウー Sa43-Zm2/)
2025/12/19(金) 13:27:44.03ID:uPPpqdRma214デフォルトの名無しさん (アウアウウー Sa43-Zm2/)
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));
HANDLE h =(HANDLE)_get_osfhandle(fileno(fp));
215デフォルトの名無しさん (ワッチョイ 1610-1bEy)
2025/12/19(金) 14:08:20.19ID:GilgZVjz0 質問者の意図がよく分からない
FILE*で操作したいと言うことは、
誰かが上位でopenしてくれる前提なのかな?
FILE*で操作したいと言うことは、
誰かが上位でopenしてくれる前提なのかな?
216デフォルトの名無しさん (ワッチョイ 1e18-kuSR)
2025/12/19(金) 17:52:53.90ID:oWecYqFH0 こうしてバグの温床が生まれたと。
217はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 775a-b0Pp)
2025/12/19(金) 20:20:49.60ID:LTe4LjTR0 他人が作ったプログラムをよく理解しないまま改造するという前提ではなるべく構造を変えないという選択肢がマシになることはなくもない。
もちろんきちんと理解して必要な形に整理しなおすのがよりよいに決まってるんだが、そう理想通りにできるとは限らない。
もちろんきちんと理解して必要な形に整理しなおすのがよりよいに決まってるんだが、そう理想通りにできるとは限らない。
218デフォルトの名無しさん (ワッチョイ 922e-1bfe)
2025/12/19(金) 20:28:04.21ID:tQhsUV0y0 なんなの、この糞コテ?
219デフォルトの名無しさん (ワッチョイ 63c8-1bEy)
2025/12/19(金) 22:01:36.42ID:1MzI+xf/0 おいしそうだろ
220デフォルトの名無しさん (ワッチョイ a7c7-WNn4)
2025/12/20(土) 07:50:33.87ID:QsyRy9oL0 >>218
お前よりは数段役にたつやつだから 暖かく見守れ
お前よりは数段役にたつやつだから 暖かく見守れ
221デフォルトの名無しさん (JP 0Hdf-ujNw)
2025/12/21(日) 13:25:50.09ID:i93tKLa3H うちの近所にも蜂蜜餃子出す店ある
222デフォルトの名無しさん (ワッチョイ 0b8a-PETF)
2026/01/18(日) 20:25:48.72ID:cNrycSn50 ユーザーからの入力によって配列のサイズを決定したいんですが
どうやったらいいんでしょう
どうやったらいいんでしょう
223はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69b9-T9tX)
2026/01/18(日) 20:37:29.41ID:shr9m5Ho0 >>222
質問が分かりにくいのでどう書きたいのかコードで示して欲しい。
意図がわかればよいのでコンパイルエラーになるようなコードでもかまわない。
たぶん必要なのは malloc だと思う。
その他、配列の型としての大きさを実行時に変えられる場合は限定的だが VLA と呼ばれる言語機能がある。
ただ VLA は後の仕様改訂でオプショナルになったので使えない処理系もたぶんあるしエラーハンドリングに難があるので避けたほうがよいと思う。
質問が分かりにくいのでどう書きたいのかコードで示して欲しい。
意図がわかればよいのでコンパイルエラーになるようなコードでもかまわない。
たぶん必要なのは malloc だと思う。
その他、配列の型としての大きさを実行時に変えられる場合は限定的だが VLA と呼ばれる言語機能がある。
ただ VLA は後の仕様改訂でオプショナルになったので使えない処理系もたぶんあるしエラーハンドリングに難があるので避けたほうがよいと思う。
224デフォルトの名無しさん (ワッチョイ 539e-qEHJ)
2026/01/19(月) 07:16:34.46ID:2baaFdwH0225デフォルトの名無しさん (ワッチョイ 7b7a-FokY)
2026/01/19(月) 08:38:27.02ID:oxkouUzo0 argcをどうやってatoiしたらよいか、なんて話題かもしれない
226デフォルトの名無しさん (ブーイモ MM75-7iEb)
2026/01/19(月) 13:18:04.03ID:ElAwxz1hM >>222
ユーザーが入力し得る最大サイズで確保しとけばええねん
ユーザーが入力し得る最大サイズで確保しとけばええねん
227デフォルトの名無しさん (ワッチョイ 8b10-5GTw)
2026/01/19(月) 16:59:35.05ID:Nrv8lzL10 ふつうテラバイトかな
228デフォルトの名無しさん (アウアウウー Sa1d-s7zb)
2026/01/19(月) 23:48:18.42ID:Q5XPfczGa >>222
とりあえず入門書を読み直せ
とりあえず入門書を読み直せ
229デフォルトの名無しさん (ワッチョイ 09d2-Jqzc)
2026/01/20(火) 08:07:53.65ID:r1BK3Oap0 > Z世代「結局、俺等って最も賢くて不幸な世代じゃね?」2万いいね [237216734]
> https://hayabusa9.5ch.net/test/read.cgi/c/news/1768856467/
典型的Zムーブやん、もうちょっと生暖かい目で見るゆとりを持とうぜ
> https://hayabusa9.5ch.net/test/read.cgi/c/news/1768856467/
典型的Zムーブやん、もうちょっと生暖かい目で見るゆとりを持とうぜ
230デフォルトの名無しさん (ワッチョイ 8b2a-g06Z)
2026/01/20(火) 08:09:48.15ID:FJCIsj7T0 >>228
意味のないレスだよ
意味のないレスだよ
231デフォルトの名無しさん (ワッチョイ 0905-Jqzc)
2026/01/20(火) 08:44:15.02ID:r1BK3Oap0 やや曖昧だったので補足しておくが、俺は>>228も正しいと思っているし、批判する気もない。
ついでに一言ずつ感想を述べると、
222: Z過ぎる…
223: "malloc"というキーワードすら知らなかったのだから、そんな高尚な話ではないのでは…
224: あー、昔はnewsで同様のことをやってたんだな、知らんかったわ。まあ読んだほうがいいね
225: エスパー能力は低そうだな
226: それもありよね、というか俺ならこれかな
227: アホだな
228: まあこれもそう。書いてあるだろうし、224のFAQにしても知らないことも多いだろうから、全部読むのが一番効率はいい(ただZは絶対に受け入れないが)
(229: 俺)
230: お前がもっとも意味ないよ、死ね
ついでに一言ずつ感想を述べると、
222: Z過ぎる…
223: "malloc"というキーワードすら知らなかったのだから、そんな高尚な話ではないのでは…
224: あー、昔はnewsで同様のことをやってたんだな、知らんかったわ。まあ読んだほうがいいね
225: エスパー能力は低そうだな
226: それもありよね、というか俺ならこれかな
227: アホだな
228: まあこれもそう。書いてあるだろうし、224のFAQにしても知らないことも多いだろうから、全部読むのが一番効率はいい(ただZは絶対に受け入れないが)
(229: 俺)
230: お前がもっとも意味ないよ、死ね
232デフォルトの名無しさん (ワッチョイ 8b10-5GTw)
2026/01/20(火) 11:13:35.53ID:WJ24pe7D0 ちゃんと目が覚めてからどうぞ
233デフォルトの名無しさん (オイコラミネオ MMfd-JrgW)
2026/01/20(火) 14:30:10.34ID:npjGyppFM 苦しんで覚えろC言語
234 警備員[Lv.0][新芽] (アウアウウー Sa1d-2lB2)
2026/01/20(火) 15:24:25.25ID:IfOEwYMLa NNTPってまだ使われてんの
235デフォルトの名無しさん (ワッチョイ 7b2f-BnPU)
2026/01/22(木) 01:03:37.74ID:xYaOafz30 シーは可変長配列実装する所からか
236デフォルトの名無しさん (ワッチョイ c92a-g06Z)
2026/01/23(金) 13:27:45.11ID:C2FK2sry0 C調実装に御用心
237デフォルトの名無しさん (ワッチョイ 0901-J5mu)
2026/01/23(金) 18:52:35.05ID:FYvErjxl0 たまにゃMakefile
238デフォルトの名無しさん (ワッチョイ e990-EJU4)
2026/01/26(月) 08:27:35.76ID:f1AFhxpj0239デフォルトの名無しさん (ワッチョイ 5e10-I/DG)
2026/01/26(月) 09:25:50.03ID:vduk8RxW0 翌日には忘れる未来志向
240デフォルトの名無しさん (ワッチョイ f664-VviL)
2026/01/26(月) 11:15:31.10ID:SIfTs9j80241デフォルトの名無しさん (ワッチョイ 6502-yTqm)
2026/01/26(月) 11:37:39.49ID:ju5wkyqG0 Dィープsテートは人類の電子的支配をねらっている
https://www.youtube.com/watch?v=-HUCdYNePFg
https://www.youtube.com/watch?v=-HUCdYNePFg
242はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/26(月) 11:55:43.44ID:259WEkSA0 クラッシュして良いわけではないが想定した固定長を越えたらエラーメッセージを出して直ちに終了するくらいの方針はありうる。
Worse is Better ってやつだ。
Worse is Better ってやつだ。
243デフォルトの名無しさん (ワッチョイ 591a-Q7ug)
2026/01/26(月) 20:41:38.33ID:w7MHZcu50 中級者
超えないようにメモリを冗長化
上級者
デカいメモリを確保ANDユーザの入力次第でクラッシュ scanf指向
超えないようにメモリを冗長化
上級者
デカいメモリを確保ANDユーザの入力次第でクラッシュ scanf指向
244デフォルトの名無しさん (ササクッテロリ Sp79-GA1X)
2026/01/26(月) 20:42:35.53ID:hiSxmE0Cp 全部固定長にしちまえばいいんだよ
245デフォルトの名無しさん (アウアウウー Sacd-Bm+i)
2026/01/27(火) 01:16:10.76ID:rrlOBExea sprintf, swprintf, _sprintf_l, _swprintf_l, __swprintf_l,
sprintf_s, _sprintf_s_l, _swprintf_s, _swprintf_s_l,
sscanf, _sscanf_l, swscanf, _swscanf_l,
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l,
さらに
vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l,
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l,
なんで vwfprintf じゃねえんだよ!って思う
sprintf_s, _sprintf_s_l, _swprintf_s, _swprintf_s_l,
sscanf, _sscanf_l, swscanf, _swscanf_l,
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l,
さらに
vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l,
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l,
なんで vwfprintf じゃねえんだよ!って思う
246デフォルトの名無しさん (ワッチョイ 5e10-I/DG)
2026/01/30(金) 14:54:48.55ID:KwjlwjWe0 強い相互作用が働いています
247デフォルトの名無しさん (ワッチョイ 4d94-4QED)
2026/02/06(金) 22:43:33.83ID:n8mgfVGM0 printf("%d\t%d", fahr, celsius);
の引数である、"%d\t%d"について質問です。
「\t」はタブ文字を表すということです。
viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。
"%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。
これはどういうことでしょうか?
の引数である、"%d\t%d"について質問です。
「\t」はタブ文字を表すということです。
viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。
"%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。
これはどういうことでしょうか?
248デフォルトの名無しさん (ワッチョイ 23ad-3cUX)
2026/02/06(金) 23:23:03.82ID:oI+Czk490 > viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。
こういうのはエディタがキー入力されたタブ文字をタブ文字として出力せず、4文字、8文字の空白として出力(つまり変換)してる
> "%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。
コンソールなどにそういう機能がない以上はタブ文字はタブ文字として出力されるだけ
もしタブを入力として受け取って、それを4文字や8文字などの空白にしたいなら自前でそういう処理を書かないといけない
こういうのはエディタがキー入力されたタブ文字をタブ文字として出力せず、4文字、8文字の空白として出力(つまり変換)してる
> "%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。
コンソールなどにそういう機能がない以上はタブ文字はタブ文字として出力されるだけ
もしタブを入力として受け取って、それを4文字や8文字などの空白にしたいなら自前でそういう処理を書かないといけない
249はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1531-0WMu)
2026/02/06(金) 23:44:40.96ID:Qy2h/jss0 >>247
・タブという文字 (一文字) がある
・タブ文字の幅は一定ではない
・タブ文字は次のキリの良い桁までの幅を持つ
・キリの良い桁がいくつであるかはターミナルやエディタの設定によるが一般的に4か8
・つまりキリの良い桁が4に設定されている環境において、行の最初にあるタブの幅は4だし、三文字目にあれば幅は2になる
・設定によってインデントの大きさを一気に変えられて便利なのでかつてはタブでインデントするのが普通だった
・現代ではフォーマッタが総合的に面倒を見るのでインデントのためにタブを使う習慣は廃れた
・タブキーを押してもタブが入力されず空白を入れるようになっているエディタはそこそこある (設定で変えられることもある)
・タブという文字 (一文字) がある
・タブ文字の幅は一定ではない
・タブ文字は次のキリの良い桁までの幅を持つ
・キリの良い桁がいくつであるかはターミナルやエディタの設定によるが一般的に4か8
・つまりキリの良い桁が4に設定されている環境において、行の最初にあるタブの幅は4だし、三文字目にあれば幅は2になる
・設定によってインデントの大きさを一気に変えられて便利なのでかつてはタブでインデントするのが普通だった
・現代ではフォーマッタが総合的に面倒を見るのでインデントのためにタブを使う習慣は廃れた
・タブキーを押してもタブが入力されず空白を入れるようになっているエディタはそこそこある (設定で変えられることもある)
250デフォルトの名無しさん (ワッチョイ e7b9-W5NQ)
2026/02/08(日) 14:40:59.44ID:X17rBAzn0 そなたらはC99以降を使ってんのかどうしてんだ。
後からC++で使う可能性があるなら互換性を失ったCを使うかどうかは考えないといけない。
拡張子.cと.cppを共存できるプロジェクトファイルに対応の機械語ファイル作成のソフトとかあるんかな。
例えばVisual C++はどうなんや。
後からC++で使う可能性があるなら互換性を失ったCを使うかどうかは考えないといけない。
拡張子.cと.cppを共存できるプロジェクトファイルに対応の機械語ファイル作成のソフトとかあるんかな。
例えばVisual C++はどうなんや。
251はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/08(日) 15:05:00.39ID:vqX/dBJ10 >>250
主要なホスト環境 (OS) や処理系はかなり保守的な体制をとっていて MSVC, GCC, Clang といった主要な処理系は C89 をいまだに使えるし、 ABI に互換性がある範囲で C++ と共存できる。
特に MSVC (Visual C++) の C は「ANSI C89 にマイクロソフトに独自の拡張を付け加えたものである (その独自拡張が C99 の一部なこともある)」 と説明しているくらいの保守的姿勢をとってる。
その割に安全でない関数を使ったときなどの警告は厳しめなので寛容だがモダンなスタイルへの移行へ積極的でもあるという感じに見える。
主要なホスト環境 (OS) や処理系はかなり保守的な体制をとっていて MSVC, GCC, Clang といった主要な処理系は C89 をいまだに使えるし、 ABI に互換性がある範囲で C++ と共存できる。
特に MSVC (Visual C++) の C は「ANSI C89 にマイクロソフトに独自の拡張を付け加えたものである (その独自拡張が C99 の一部なこともある)」 と説明しているくらいの保守的姿勢をとってる。
その割に安全でない関数を使ったときなどの警告は厳しめなので寛容だがモダンなスタイルへの移行へ積極的でもあるという感じに見える。
252デフォルトの名無しさん (ワッチョイ e7b9-W5NQ)
2026/02/08(日) 16:36:16.54ID:X17rBAzn0 書き方がまずかったか。
機械語ファイル作成のソフトの具体例は、Microsoft Visual Studio(Visual C++)で、プロジェクトファイルの具体例はVisual Studioでは拡張子.vcxprojのファイルのことを言ってる。
互換性で問題にしてるのはC99以降で、C++98に対応のコンパイラなら、C90までのCで互換性の問題は普通に考えてあるとは思えない。
shortにintを代入で警告、ポインタ変数にキャスト無しでvoidポインタの代入でエラーくらいしか思いつかない。
機械語ファイル作成のソフトの具体例は、Microsoft Visual Studio(Visual C++)で、プロジェクトファイルの具体例はVisual Studioでは拡張子.vcxprojのファイルのことを言ってる。
互換性で問題にしてるのはC99以降で、C++98に対応のコンパイラなら、C90までのCで互換性の問題は普通に考えてあるとは思えない。
shortにintを代入で警告、ポインタ変数にキャスト無しでvoidポインタの代入でエラーくらいしか思いつかない。
レスを投稿する
ニュース
- 「社会全体に恨み」 梅田・ジュンク堂店員刺傷事件 傷害容疑で33歳男を逮捕 大阪府警 [蚤の市★]
- 【映画】『ゴジラ-0.0』が全米で首位!前作オープニングの約3倍、推定3,200万ドル(約51億円) 歴代最高興行収入の快挙 [鉄チーズ烏★]
- 蛍光灯の製造禁止、27年末に迫る LED化率6割超も、更新に課題 [蚤の市★]
- 【芸能】Perfume・のっち(38) 結婚を電撃発表「挑戦と成長を重ねてまいります」 お相手は同い年俳優の渋谷謙人 [Ailuropoda melanoleuca★]
- 【自民党】消費減税法案“棄権”の4議員に処分検討 9日正午までに退席理由の説明を [煮卵★]
- 「7歳の娘をたった1人で女湯に?」父親の投稿が「なら銭湯に行くな」と炎上…銭湯の混浴制限に悩む親たち [ぐれ★]
- 【悲報】高市政府、もう普通に「継戦能力」とか「開戦後」とか言い出す [268718286]
- 自民党 消費減税法案“棄権”の4議員に処分検討 [476729448]
- 高市早苗「首斬り発言の中国総領事は追放よ!」中国「そちらが1人追放ならこちらは2人。倍返しだ」高市「やめるわよ!」 [545512288]
- 3時のおやつタイムなのら🧁🍪🍫🍮🍰(・o・🍬)🏰
- 【画像】大谷翔平、もう手遅れ・・・外食を解禁しラザニア、フライドポテトを満喫www [779857986]
- 玉ねぎクッソ安くね?