C言語なら俺に聞け 160

■ このスレッドは過去ログ倉庫に格納されています
2022/12/28(水) 10:40:30.02ID:PyoNDBFu0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを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言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/02/15(水) 16:44:40.14ID:FSuJDOWl0
LinuxはC一筋です
405デフォルトの名無しさん (ワッチョイ 8aad-D0vN)
垢版 |
2023/02/15(水) 19:45:43.63ID:yIa7rkEJ0
Linux は Rust も使われ始めた。
https://codezine.jp/article/detail/17038
2023/02/15(水) 20:07:02.73ID:D5gZ9dH30
>>403
自動車関係の組み込み開発してるけど純粋なC使ってるね
407デフォルトの名無しさん (ワッチョイ 1e46-kPwk)
垢版 |
2023/02/15(水) 22:41:28.51ID:PTreX2Lr0
不純なCって...
2023/02/15(水) 22:43:54.06ID:FSuJDOWl0
年齢確認をちゃんとしましょう
2023/02/16(木) 08:38:15.82ID:XJzboKn0a
不純なCってObjective-Cとかかな
C++はもうCじゃないし
2023/02/16(木) 10:11:37.88ID:G6Y1BfCz0
表向きCってことにしてるけど、C++コンパイラでコンパイルしてて、ひっそりstringだけ使ってるみたいな?
2023/02/16(木) 11:50:52.25ID:xQKS9LtVM
0bリテラルやビットフィールド順序指示子などの独自拡張あり
2023/02/16(木) 11:53:11.52ID:jE/BygjJ0
C言語仕様に取り込んでほしかった
2023/02/16(木) 13:40:46.45ID:kLJI764s0
0bを0xに変換するフィルタくらいなら、すぐできるだろ
2023/02/16(木) 13:50:49.50ID:5p7a/1XmM
0bはC23で標準化されるよ
2023/02/16(木) 13:54:29.69ID:5p7a/1XmM
digit separatorも追加されたから
0b1100'0011'0101'0011
みたいな書き方が出来る
2023/02/16(木) 15:47:22.38ID:oZu+eRtF0
'がセパレーターなのか。
組み込みで0bが使える処理系は以前からあるけど、
VerilogやVHDLみたく0b1101_0100のようなセパレーターが使えなくてバグの元でしかなかった。
417デフォルトの名無しさん (アウアウウー Sa4f-STvZ)
垢版 |
2023/02/16(木) 17:05:43.13ID:5AcA3bi5a
不純な C って Win32API のことかな
2023/02/16(木) 17:21:05.96ID:XEsPtkpG0
セパレータに'は文字リテラルとの曖昧性でパースが面倒そうな…

0b表記はtccでさえサポートしてる(セパレータ_, 'は不可)し、俺の普段使いで0b表記を受け付けないのは多分pccくらい

C界隈では区切り文字と桁数はロケールの管轄(闇)という事になってるけど、簡潔に明示指定できるだけで単純にデバッグ出力も読みやすくなるよね?
オクテット区切りなら
ooo_ooo、xx_xxやbbbbbbbb_bbbbbbbb
ニブル区切りはbbbb_bbbb


先行例としてlisp系のformatディレクティブを参考までに
"~[:][base,wid,pad,delim,]R"
Rは専用のb,o,d,xか、rで任意進数を指定
:はデフォルト(wid=3, delim=',)
例: "~:d"→123,456,789
2023/02/16(木) 17:37:10.74ID:CsQoVivgd
>>413
リテラル導入よりまずはprintf/scanfの強化が先かなと、コンパイラやプログラマがすり替えのも楽になるし

一々baseで割ってfputc、i%sep==0の時にはdelimを吐く、なんてコードを何回書捨てたか分からん

リテラル記法導入は文法に関わるので、あくまで標準は保守的に
formatディレクティブはもう既に混沌としてるから、独自拡張もサポート落とすも自由でいいかと
2023/02/16(木) 18:37:34.78ID:jE/BygjJ0
2進表記は8進表記より使い道多いと思う
2023/02/16(木) 19:38:40.25ID:LB1U3BvE0
>>419
printf はともかく scanf なんて使わんだろ
2023/02/16(木) 19:40:44.28ID:LB1U3BvE0
>>420
てか8進表記なんてun*xのファイルモードでしか使ったことないわ
しかも普通はdefineされたやつ使うから直接書くことはないし
2023/02/17(金) 10:35:53.81ID:49a3FDgU0
8進数なんて8bitPC時代のグラ512色関連以外で使用する場面あるのかと思ってたけど・・・そうか、アレか。
2023/02/17(金) 11:02:28.45ID:DgZQWw4l0
octal(リテラル表記)はutf-8の台頭でCで使う機会はかなり増えたと思うが
陽に扱うならだけど

msb2つを多バイト文字の継続フラグ等に割いてるから本質的には6bitで、hexだと人力では読むのも書くのも厳しい
2023/02/17(金) 11:27:19.29ID:DgZQWw4l0
xx表示だとffbb_bbbbの上4bitに対応するx=ffbbが任意な値に化ける
ooo表記だとff_bbb_bbbで良い感じ
2023/02/17(金) 13:16:42.61ID:w2wgHjMGM
10進数のテーブルデータ記述するのに桁合わせのつもりで先頭に0を書いた苦い思い出
2023/02/17(金) 13:53:50.60ID:2H95YDcjr
なんで8進定数のプレフィックスは0oじゃなくて0なんかね?
2023/02/17(金) 14:15:10.27ID:fMLNQIVeM
人間の指が4本だったら、普段使う数字が8進数になって、コンピューターとの相性も良かったのになw
2023/02/17(金) 14:24:53.50ID:vP8p7Q2U0
>>422
システムコールを使ったちょっとしたコーディングの場合、オープンモードはdefineされたやつ使うけど、ファイルモードは8進の値を直接指定することが多かった
open("foo", O_CREAT|O_RDWR, 0644)
ここに S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH なんて書いたことはないな
ちゃんとしたコーディングの場合にはファイルモードを指定する別途関数なり定数定義を用意してたりするからそっちの定義ではdefineされた値を使うことはあったけど
2023/02/17(金) 14:44:42.94ID:vP8p7Q2U0
直接openシステムコール使ってるオープンソースのプログラム、シェルあたりならやってそうだと思って簡単にアクセスできそうなソースコード探してみた
bash見つからなくてzshは見つかったので見てみたらやっぱり直接0600とか書いてるな
https://sourceforge.net/p/zsh/code/ci/master/tree/Src/utils.c#l2216
その上でumask(0177)とかもやってる
2023/02/17(金) 18:22:15.54ID:G6mVZKAVd
ESCシーケンスを使うときは¥033
2023/02/17(金) 20:16:44.94ID:KJxAAApA0
>>430
まあ、コピーライト見たらわかる通りそういう時代だったしね
> * Copyright (c) 1992-1997 ポール・ファルスタッド
マジックナンバー警察じゃないけど流石に今時0777なんて書いてたらレビューで指摘するわ
2023/02/17(金) 20:50:25.13ID:vP8p7Q2U0
>>432
git のソースコードのリポジトリを clone したのがあったので、git grep O_CREATとかgit grep umask とかするとみんな0600とか書きまくりだった
git blame してみると2021年とか最近でもやりまくり
66e905b7dd0 (XXX 2021-08-25 22:16:46 +0200 82) fd = xopen(index_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
66e905b7dd0 (XXX 2021-08-25 22:16:46 +0200 252) fd = xopen(rev_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
2023/02/18(土) 09:01:47.10ID:4a504/qwa
C#について教えてください! https://smartlabo-hp.com/login-intermediate/ 上記ページを見てログインボタンを作成しました。 このページ内にあるcsvファイルの内容に加えて同csvファイルの[2]にログイン状態という列を足したいです。 ログインしてない状態では[2]は常に0、ログイン成功したら[2]に1が書かれるようにするにはどうすればいいのでしょうか? ご教授よろしくお願いします。
2023/02/18(土) 09:17:57.34ID:/Gi8XN260
>>434
スレ違い

こっちでやれ
https://mevius.5ch.net/test/read.cgi/tech/1669349768/
2023/02/18(土) 09:20:32.20ID:/rOnqr64d
ハノイの塔 再帰のアルゴリズムがさっぱりわからない
2023/02/18(土) 09:21:30.09ID:/rOnqr64d
ハノイの塔 再帰のアルゴリズムがさっぱりわからない
2023/02/18(土) 09:36:15.97ID:AfjXtSgB0
スタックから覚えようね
2023/02/18(土) 10:11:08.15ID:4a504/qwa
>>435
すいません
2023/02/18(土) 12:46:07.82ID:/8v09ncn0
>>426
8進数なのに8と9が使える驚異の仕様だよ
2023/02/18(土) 12:50:39.59ID:/Gi8XN260
ctype.hに
isdigitとisxdigitがあるのに
isodigitがないというのが
その問題の根にある
2023/02/18(土) 13:42:13.38ID:c4QxGie20
>>433
何を必死になってるのかよくわからんが老害の悪癖は治らないってだけの話かと
2023/02/18(土) 13:44:46.64ID:c4QxGie20
>>440
規格では使えないことになってるしまともなコンパイラならエラーにすると思うぞ
2023/02/18(土) 14:09:47.51ID:BJBnPVcc0
>>440
規格決めた人に問題がある
ゼロは避けるべきだった
2023/02/18(土) 14:13:43.35ID:/Gi8XN260
みんな日常的によく使う8進定数「0」
2023/02/18(土) 15:46:52.83ID:ke/LtjiK0
そうか、オレは二進数の0をよく使う
2023/02/18(土) 16:01:46.62ID:/Gi8XN260
ソースコード上での記数法と
実行環境での表現を混同してる?
448デフォルトの名無しさん (ワッチョイ 23ad-BTrK)
垢版 |
2023/02/18(土) 16:04:29.75ID:dElKqib40
>>444
じゃあ8で。
2023/02/18(土) 16:16:07.43ID:/Gi8XN260
なんでオーにしなかったのかとは俺も思う
特に小文字オーなら誤読しにくいし
2023/02/18(土) 16:31:09.02ID:nz9Z1NDi0
1文字でもキーワードを少なくしたかった当時のお洒落だったんだよ
8進表記はunix系OSが全滅すれば廃止でもいいと思うね
2023/02/18(土) 16:35:07.64ID:ke/LtjiK0
全滅するのに数百年はかかりそう
2023/02/18(土) 16:40:17.45ID:/Gi8XN260
キーワードつーてもサフィックスだからね
繋がった単語の中の部分なわけで
他の識別子との衝突の虞はない
2023/02/18(土) 16:42:06.93ID:/Gi8XN260
あ、しかし
int o33 = o33;
みたいになったらマズいのか
英字サフィックスは
2023/02/18(土) 16:47:35.72ID:J9rEVsST0
>>442
gitのソースコード、openだけじゃなくてファイルモードを引数に取る関数なんかもあるけど、誰もマクロ定数なんて使って無いや
全員老害か
2023/02/18(土) 16:47:37.88ID:ke/LtjiK0
"%05d" こんな風な指定して出力した10進数を、読み取らせても大丈夫だろうか?
2023/02/18(土) 16:49:48.25ID:c4QxGie20
>>453
馬鹿なの?
普通に 0o01234567 だろ
2023/02/18(土) 16:50:05.14ID:FZadOySQ0
>unix系OSが全滅すれば
泥もiOSもunix系だよね?
ゲーム機も基本OSは・・・
2023/02/18(土) 16:52:50.83ID:6dDb+no40
(8じゃなく)6の倍数bitワードのマシンで産まれた痕跡だっけか

>>443
8と9が混じってるかどうかで8進か10進か勝手に解釈を変える方がよっぽど厄介だから、不正として弾くのが正しいね
俺は8進が好きだし、幸いやらかした経験も無いけど
他言語では明示的な0oプレフィックスもよく見掛けるし、もちろん使えるなら使おう
2023/02/18(土) 17:02:18.46ID:c4QxGie20
>>454
しつこいね
具体的にどのコードの話でそいつがいつから作られてるのか書いてみ
2023/02/18(土) 17:08:03.05ID:QF/qRD4Qd
>>443
bad numberとか言われて
なんで特定の数字を差別するのか?キリスト教のなんかか?とまじで悩んだw
2023/02/18(土) 17:13:05.59ID:nz9Z1NDi0
IT業界でもwhitelist→allowlistとか言葉狩り起きてるしそのうち言語にまでLBGT配慮()きそうだわな
int ニガー = 07214545;
エラー:差別用語です
2023/02/18(土) 17:15:09.07ID:J9rEVsST0
>>459
例えばリポジトリ直下の copy.c で定義されている copy_file(dst,src,mode) その関数自身の定義に 0666 とか直接使っている
まあこの関数は 2008 年とかに作られたものだけど、その関数を使うコードが今月コミットされていて引数に 0666 直指定
a5792e9d092 xxxxxxxxxx 2023-02-06 20:08:11 +0100 2293) if (copy_file(dest, rebase_path_squash_msg(), 0666)) {
他 copy_file 使っているところも全部直指定
2023/02/18(土) 17:19:06.07ID:c4QxGie20
>>460
確かに最初見た時は俺も はあ?ってなったわw
2023/02/18(土) 17:19:18.78ID:J9rEVsST0
>>442
比較的新しめ?のnginxなんかは流石に関数の引数に 0600 とか書いてないけど、それでもOSのヘッダファイルの定数定義は使ってないな
自前の定義に #define NGX_FILE_DEFAULT_ACCESS 0644 とかだ
これも老害になっちゃう?
2023/02/18(土) 17:26:26.26ID:c4QxGie20
>>462
git は 15年以上前に初版が作られたソフトだしリーナスはもっと前からソフト開発してるだろ
ポリシーによるけどソースコードのコーディング方法を変えないことは珍しくないよ

>>464
nginx も 18年前のソフトだし作者のイーゴリ・ウラジーミロヴィチ・シソエフ
50歳超えな
2023/02/18(土) 17:27:46.90ID:nz9Z1NDi0
>>464
OS側の定義を使わないのは特定のOS依存をしたくないか見切りを付けてるからだな
むしろ老害避けなんじゃないの
2023/02/18(土) 19:21:30.21ID:hE3AXWNH0
0x 0o 0b (0d)
2023/02/19(日) 06:15:13.00ID:B9Nm4zxk0
否定から入ったり無礼な言葉ばかり使う人って他人から相談されなくなるよね
2023/02/19(日) 10:30:13.08ID:85faJvYM0
それって思いっきりアスペの特徴なんだよな
2023/02/19(日) 10:43:35.95ID:xrmlsZvMa
だからネットでイキってるんだろ
2023/02/19(日) 10:58:14.43ID:5TCni8wB0
ダヴィンチもエジソンもアインシュタインもモーツァルトもイチローも
みなアスペルガーなんだ
2023/02/19(日) 11:07:26.13ID:xSIr/CQB0
>>471
まあ、それはそうだと思うよ
長嶋(一茂じゃねーぞ)なんかもそうだと思う
2023/02/19(日) 12:33:47.26ID:rUsPVZJ7a
ダヴィンチもエジソンもアインシュタインもモーツァルトもイチロー並みの才能があれば煙たがられることなく受け入れられるということよ。
2023/02/19(日) 12:50:21.37ID:oybarVkGd
無知丸出しはこっちでやれ
https://mevius.5ch.net/test/read.cgi/tech/1427572389/
475デフォルトの名無しさん (JP 0Hf9-KqH4)
垢版 |
2023/02/19(日) 12:53:18.65ID:F5EkyCpBH
ムチムチ
476デフォルトの名無しさん (ワッチョイ 23ad-BTrK)
垢版 |
2023/02/19(日) 13:01:28.32ID:yOeRloac0
>>449
英語では 0 (ゼロ) と書いて o (おー) と読むこともあるので、それが影響したのかも知れないね。
2023/02/19(日) 14:04:50.86ID:xSIr/CQB0
>>476
printf("%o\n", 1234);
とかできるからその説はちょっと弱いかな
2023/02/19(日) 14:48:58.38ID:5TCni8wB0
アスペルガーは自分に対しても他人に対しても容赦しないから
凡人に嫌われる
才能のせいではない
2023/02/19(日) 14:55:52.34ID:BF2g/YB8d
ギフテッドは必ずしも自閉症を伴わない
2023/02/20(月) 04:15:44.39ID:+uPK1ifA0
>>436
再帰をしないなら、コードを書けるの?
2023/02/20(月) 09:47:26.91ID:N/iEiUCGd
>>480 チャレンジしたことはないけど、たぶん再帰なしでも書けません。どうか御教示をお願いします。
2023/02/20(月) 09:50:41.85ID:N/iEiUCGd
ハノイの塔は再帰でしか解けない
2023/02/20(月) 09:51:19.24ID:cTmdkEXkd
んなこたあない
2023/02/20(月) 09:57:18.63ID:KyZtaEjed
待ち行列やLIFOは再帰的な処理を非再帰にするときの友
2023/02/20(月) 11:00:02.06ID:Htkx1bCsd
再帰呼び出しする所をpushに変えてgoto最初
returnの所をpopに変えてgoto最初
時間があればそこからgotoを取り除く
gotoが輝く場面
2023/02/20(月) 11:21:38.14ID:N/iEiUCGd
>>485 goto文を使うのですね 覚えておきます
2023/02/20(月) 11:58:19.08ID:KyZtaEjed
アンチgoto教信者は近頃減ってきているが
絶滅はまだ先のようだな
2023/02/20(月) 12:38:57.43ID:sAm6cEmU0
スパゲティGotoをたんと召し上がれ!
2023/02/20(月) 13:04:25.72ID:Htkx1bCsd
再帰からループへの変換はgotoのある言語なら機械的にできるからね
存在すら許さない言語は発想を阻害してると言える
2023/02/20(月) 13:35:56.24ID:JqcJZDsUd
while(スタックが空になるまで){
  pop();
  ...
}
って書き始めるけどな
2023/02/20(月) 21:19:52.57ID:I5iz8R+L0
>>490
戻りのpopはそれでいいけど呼び出しのpushは処理がぶった切れるから
gotoがないとかなりややこしい変換になるよ
2023/02/20(月) 23:51:00.80ID:7qph/rf50
>>485
push/pop はルール違反
それに二方向、多方向への再帰はそう簡単じゃないですけどね
二分木の全要素を列挙する非再帰プログラムを書いてください
2023/02/21(火) 00:08:57.34ID:Cn1Xq+JJ0
がんばってgoto無しで作ったりしてたなあ
2023/02/21(火) 06:59:46.53ID:1n1W4gUgd
push/popはルール違反て何それ?
2023/02/21(火) 09:59:11.37ID:MGN7/c1b0
「俺がルールブックだ」
2023/02/21(火) 10:33:24.95ID:5S8ZyEUUd
「ウリが蟹飯リッチニダ」
497デフォルトの名無しさん (ワッチョイ 23ad-BTrK)
垢版 |
2023/02/21(火) 10:51:10.49ID:NudgdpLh0
豪華な蟹飯が思い浮かんだ
2023/02/21(火) 13:43:23.05ID:1n1W4gUgd
苫小牧だっけ?
2023/02/21(火) 16:27:46.36ID:dWpsoJfPa
>>436
>>481
テスト
https://ideone.com/iPWHR0
2023/02/21(火) 16:50:09.17ID:ncQgkmT30
チャットジピティれカス
2023/02/21(火) 17:05:45.18ID:j4WOJdo9d
>>499 見事です 私はまだ初級なのでvectorだのcstdioなど見たこともありません
2023/02/21(火) 17:54:02.02ID:5S8ZyEUUd
>>499
お、動いた動いた!
2023/02/21(火) 17:55:02.20ID:MGN7/c1b0
goto が一つもない・・・
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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