C言語なら俺に聞け 164 (108レス)
1-

1: (ワッチョイ 3301-UQbq) 07/23(水)15:30 ID:eCR5cXRr0(1/4) AAS
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
外部リンク:paiza.io
外部リンク:ideone.com
外部リンク:codepad.org
省16
28: (アウアウウー Sa53-ilUi) 09/20(土)16:58 ID:VevbIipia(1) AAS
特定の実装でたまたまそうだったからと言って
全ての実装でそうなっているかどうかは別の話
優しくしてね
29: (ワッチョイ cf2a-V9PH) 09/20(土)17:25 ID:1eZiY7gC0(2/2) AAS
霊界通信だな
30: (ブーイモ MM4f-uyy9) 09/20(土)17:26 ID:+Sf+AUyNM(1) AAS
ID:I8uDgIdj0 このprintfじじい何言おうとしたか忘れたな
31: (ワッチョイ 0af8-p2ny) 09/21(日)04:07 ID:Obb0mglL0(1) AAS
内部通報で無理なので犯罪者通報

暗黒状態の量子もつれを生成することに成功:世界初の快挙
公開日2025.09.10 18:30:27 WEDNESDAY
外部リンク:nazology.kusuguru.co.jp
>>量子もつれが非常に壊れやすく、外界のノイズ(熱の揺らぎや周囲からの電磁波など)によって簡単に消えてしまうことです。
>>このノイズによる量子もつれの崩壊現象は「デコヒーレンス」と呼ばれ、量子技術が実験室の外で広く実用化されるのを妨げる最大の壁となってきました。

省14
32: (ワッチョイ 07cf-Z3W9) 09/23(火)07:07 ID:yrK5wSNc0(1) AAS
そもそもprintfなんて初心者しか見ないからなw
33: (ワッチョイ 6aee-lG8I) 09/23(火)07:49 ID:qmWEk+ay0(1) AAS
まじかよ20年以上使ってる俺は恥知らずかなんかなのか?
printfファミリーは標準ライブラリではぶっちぎりのイケメンだと思うんだが
何年か前に買ったマイスターシュテックって万年筆にも「snprintf」って名入れしたくらいだし
ちなみに標準ライブラリで次に好きなのはsize_t型とNULLマクロ
34: (ワッチョイ 5301-VfWQ) 09/23(火)14:22 ID:Opf++eei0(1) AAS
printfはスピートが遅いからなあ
35: (ワッチョイ 86ef-P6+q) 09/24(水)12:40 ID:fylTkn+t0(1) AAS
組み込みでも無い限りらprintfで充分だろ
36: (ワッチョイ 1ac0-IpVF) 09/24(水)19:27 ID:Z7gG6kHJ0(1) AAS
printfじゃないならなに使うの?
37: (ワッチョイ 03b1-mXfw) 09/24(水)20:03 ID:cUnaCE/P0(1) AAS
printf多用する場面ってそんな速度必要か?
テキスト表示のアクションゲームでも作るんか?
38: (ワッチョイ 46ca-RvFB) 09/24(水)20:34 ID:EXobIxwL0(1) AAS
ちなgccならputsに置き換え可能なら勝手に置き換える
39: (ワッチョイ 1e10-d2qd) 09/26(金)13:37 ID:XlYbxwe30(1) AAS
今時プアなマシン使っているので無い限り
実行速度難敵にする奴いないだろう
40: (ワッチョイ e364-5QMm) 09/26(金)16:32 ID:ePhQUwKm0(1) AAS
プアなマシンを使っているのでやっぱつれぇわ
41: (ワッチョイ ffc1-d2qd) 09/26(金)17:25 ID:jSwTkQnE0(1/2) AAS
かつてプアだった頃、他の奴が16ビットPC使っている中自分だけ8ビットPC(nec PC8001mk2)使って蔵書管理プログラム書き上げたな。漢字も扱えてたよ。出力はEPSONのMP80というカナ印字ドットインパクト、これの1/2ドット改行隠しコマンド見つけて16ドット漢字出力させてた。漢字ROMからのイメージ取得や展開にアセンブラも使用。実用性は殆どないが、勉強にはなった。
42: (ワッチョイ a7ae-H/EM) 09/26(金)17:27 ID:mAe57PPo0(1) AAS
プログラム内にデータ組み込んじゃってて使えないやつだろw
43: (ワッチョイ ff44-Z3W9) 09/26(金)18:19 ID:KFYhndY80(1) AAS
今のprintfはコンパイル時にパラメータtypeチェックまでやってて
安心だけど気持ち悪さもあるw
44: (ワッチョイ ffc1-d2qd) 09/26(金)19:32 ID:jSwTkQnE0(2/2) AAS
printf(null);
45: (ワッチョイ 1e2a-ljyC) 09/26(金)19:46 ID:cwuxLqkb0(1) AAS
$ gcc printf_null.c
printf_null.c: 関数 ‘main’ 内:
printf_null.c:4:10: エラー: ‘null’ が宣言されていません (この関数内での最初の使
用)
  4 |  printf(null);
   |     ^~~~
46: (ワッチョイ 9536-lTrX) 09/28(日)12:37 ID:l7keiZEP0(1) AAS
printfに謝れ
47
(1): (スフッ Sd43-LKjL) 09/30(火)09:15 ID:RGUapuF/d(1) AAS
Mingw の mkdir には
mkdir(path, mode)
mkdir(path)
があるけど
Windowsにmodeが意味ないのはわかるけど
一緒にしといて欲しかった
48: (ワッチョイ d9e7-ayY8) 10/12(日)01:15 ID:DKsy7+ZR0(1) AAS
>>47
mingw系はあまり知らぬのだが…それでも一般論として設計の筋が悪いことはわかる

mingw(or 今流行りはフォークの-64だっけ?)はlinux上でwinターゲット、あるいは(こっちも可能だけど少数派?)win上でlinuxターゲットのバイナリを吐くためのものなので、なおさらそうだろう

たとい無意味なmode引数であれ、プロトタイプを同一にするために受け付けるべきだろう
要らぬのならば捨てよ、互換性が何より優先されることだ
捨てて困るなら独自に解釈して適当なマップしなさい

最小例として
省7
49: (ワッチョイ 0b3c-ayY8) 10/12(日)06:33 ID:mEdnxwe/0(1/2) AAS
そういやmsvcの_mkdirもconst char * pathの1引数だな

>>24
初めに文字数を数えた後(固定ならstrlenでもformat directiveで変わるならsnprintfとかでも)、printfの返り値との差をとり0にならないならば全て正しく書き込めてない
文字列を指すポインタを書き込めた数だけ増分した後に、先に得た差の分だけもう一度書き込む
50: (ワッチョイ 0b3c-ayY8) 10/12(日)06:48 ID:mEdnxwe/0(2/2) AAS
もちろん2回以上も失敗しえるからループで回して返り値が0になるまで、あるいはretry回すこと
また負値が出たら当然exit()すること

私はstdarg.hを使って
int printf_ensure(const char restrict * fmt, size_t retry, ...);
のようなプロトタイプにしている
(retryが0ならば無限試行)

速度が問題でない場合、あるいは開発中は全部コレでprintfやputs差し替えたっていい
省1
51: (ワッチョイ 51da-5Sj8) 10/14(火)00:04 ID:/oJzs4X00(1/3) AAS
Cのマクロでテンプレート(ジェネリクス)もどき。
C11以降で使える総称選択(_Generic)はジェネリクスというよりオーバーロード。

やっぱりCにもテンプレート欲しい。
(記憶が確かならC++のテンプレートは関数スコープ限定のマクロみたいな仕組みで、コンパイル時に型決定するのでパフォーマンスに影響しなかったはず)

#include<stdio.h>
#include<stdlib.h>
#define N 5
省8
52: (ワッチョイ 7b97-CBs3) 10/14(火)01:00 ID:eWh2Zlis0(1) AAS
c++の必要なとこだけ使えばいいだろ
53: (ワッチョイ 51da-5Sj8) 10/14(火)07:01 ID:/oJzs4X00(2/3) AAS
やっぱそうなるよね。
まあ、組み込みとか必ずしもC++があるとは限らない環境でなんちゃってテンプレートの例みたいな感じで。
54
(1): (ワッチョイ 8bcf-fkyq) 10/14(火)07:43 ID:sdOVA3sO0(1) AAS
c++が使えないけど最新のcが使える環境ってのもレアじゃね?
大抵c89、運が良くてc99
55: はちみつ餃子◆8X2XSCHEME (ワッチョイ d132-+CJe) 10/14(火)09:00 ID:7xcmZphY0(1/2) AAS
Z80 がターゲットでもモダンな C コンパイラがあるよ。
56: (ワッチョイ 291a-BKKF) 10/14(火)09:51 ID:XRQnYg770(1) AAS
マイコン用ならC健在だろ
57
(1): (ワッチョイ c921-oeTl) 10/14(火)12:31 ID:bZlqEbcX0(1) AAS
そういう用途ならRust一択
58: (ワッチョイ 51da-5Sj8) 10/14(火)17:14 ID:/oJzs4X00(3/3) AAS
>>54
一応、なんちゃってテンプレートはC89でも使える。

>>57
Rust処理系あるならそっちのが良いけど、まだCPU選ぶんだよね…。
59: はちみつ餃子◆8X2XSCHEME (ワッチョイ d132-kl/1) 10/14(火)17:59 ID:7xcmZphY0(2/2) AAS
演算子オーバーロードを使えるように拡張した C 処理系は知ってるけどテンプレートは見たことないなぁ……
色々な機能がお互いに関連するだろうし、テンプレートだけをポンと入れられるようなもんでもないと思う。

C を経由してコンパイルするタイプの言語 (処理系) でパラメトリック多相を使えるものを検討したらどうだろう。
nim あたりなら組み込みシステムにも使えるんじゃないか? 知らんけど。
60: (ワッチョイ 51da-5Sj8) 10/15(水)07:14 ID:wJCBzpoD0(1/2) AAS
思えば、C++ない組み込みだったらそもそも浮動小数点数をが無いし、charは文字型と同時に1バイトの整数型だから最悪long型で作れば暗黙的型変換で行けるわ。
組み込みでC++あるならテンプレート+Cで速度も落とさず行ける。
(C++はCより2倍遅い)

とはいえ、仕事だとC++の既存資産を無視するわけにも行かんか。
理論上、密結合なOOPより疎結合な高階関数の方が再利用性高いとはいえ、一から作ったんじゃ開発速度が犠牲になる。
現実はかくも難しい…。
61: (ワッチョイ 7b4c-CBs3) 10/15(水)09:31 ID:fds2kZQR0(1) AAS
cコンパイラしかないようなマイコンなんてコードの規模小さいだろ
余計なことせずに愚直に書いとけ
62: (ササクッテロラ Sp05-hV0x) 10/15(水)15:50 ID:w9oCtp+dp(1) AAS
いまどきのマイコンはpythonだって使えるだろうに
63
(2): (ワッチョイ d146-V6kF) 10/15(水)17:37 ID:i/5qI1MW0(1) AAS
メモリー64kBでもいける?
64: (ワッチョイ 0b02-ayY8) 10/15(水)18:42 ID:9wU7ax+y0(1/2) AAS
何百円、あるいは何千円の石の話だよ
一個¥10の石ならまだまだcかアセンブラしか無理だろ
65
(1): (ワッチョイ 0b02-ayY8) 10/15(水)18:45 ID:9wU7ax+y0(2/2) AAS
まあ趣味で一つプログラムするならなんでもいいけど
ある程度量産するならコスパが十倍-百倍違うのは致命的
66
(3): (ワッチョイ 51da-5Sj8) 10/15(水)20:40 ID:wJCBzpoD0(2/2) AAS
>>63
多すぎる。
512Bとか256B(1kBすらも無い)とかがCやアセンブラしかない世界。
67: (ワッチョイ d1d4-V6kF) 10/16(木)18:01 ID:J2Om8XvC0(1) AAS
我が家みたいだ
68
(1): (ワッチョイ 7bf0-CBs3) 10/16(木)18:37 ID:CvxVt5ew0(1) AAS
>>66
そのマイコンの型番教えてくれ
69
(1): (ワッチョイ 51da-5Sj8) 10/16(木)20:29 ID:Aijr1hHS0(1) AAS
マイコンってかマイクロコントローラーだけどPICとかAtmelとかでいっぱい見かけるよ。
1個10円とかのは大体マイクロコントローラー。
秋月電子のストアならデータシートのPDFをDL出来るんで、細かい仕様はそれを見る。
70: (ワッチョイ 1920-oeTl) 10/17(金)00:24 ID:H6PCthuK0(1) AAS
>>68
外部リンク:akizukidenshi.com
↑とか
外部リンク:akizukidenshi.com
↑とかRAM控えめだぞ
71: (ワッチョイ d93b-8Mv9) 10/18(土)01:03 ID:QXVDdQSx0(1) AAS
>>66
そんなんじゃprintfすら作れないよw
72: (ワッチョイ d19f-WLnR) 10/18(土)04:22 ID:dGhvIuNM0(1) AAS
シリアルコンソールもない規模なのにどこにprintfするんだ
73
(1): (ワッチョイ 7bea-CBs3) 10/18(土)06:34 ID:14jVJINw0(1) AAS
いまだにprintfデバッグやってるジジイ
74: (ワッチョイ 7b4d-0CEO) 10/18(土)11:43 ID:VPIL6AOJ0(1) AAS
> 256B
関数(サブルーチン)1個作って終了だな。
75: (ワッチョイ 0b19-hV0x) 10/18(土)12:08 ID:BOmFuCmI0(1) AAS
>>63
Cマガの付録のLSI-C試食版ではタイニーモデルは出力できなかったな
76: (アウアウウー Sadd-hV0x) 10/18(土)12:10 ID:ZlX7tru0a(1) AAS
メモリが64Kではタイニーも動かないか…
77: (ワッチョイ 0b02-ayY8) 10/18(土)12:34 ID:fcM0D1al0(1/3) AAS
>>73
gdbも使いはするが
ちゃんとfflushするか、ちゃんとstderrへのfprintfで記録取る限りにおいて、printfデバッグは今でも十分役立つと思うが
むしろデバッガと相補的
78: (ワッチョイ 0b02-ayY8) 10/18(土)12:40 ID:fcM0D1al0(2/3) AAS
>>69
個人趣味レベルでもある程度量産することはあるからね
マイコン価格には十円単位で気を使ってるよ
あなたのいうPICキットには1台で次々沢山焼く機能あるしな、数百個くらいは余裕
>>65だけど100個焼く石がもし数百-千円クラスなら普通に万-10万消えて泣ける
79: (ワッチョイ 8b10-V6kF) 10/18(土)13:05 ID:VGmkc9k80(1) AAS
量産して売るのか?
80: (ワッチョイ 0b02-ayY8) 10/18(土)13:10 ID:fcM0D1al0(3/3) AAS
いやプロとかしゃなくて同人即売会で売るレベルですはい
それでも百個くらいは要るでしょ
81: (ワッチョイ 315f-hV0x) 10/18(土)14:09 ID:nzcjRHht0(1) AAS
デバッグは、Lチカの有無で地道にやるんだよな
82: (ワッチョイ f98d-tYC9) 10/19(日)19:31 ID:+nDAwDri0(1) AAS
>>66
コードセグメントデータセグメントが1kb単位でしか指定できなくて発狂
83
(1): (ワッチョイ 3110-bIaP) 11/08(土)09:43 ID:rVUu3J9Q0(1) AAS
C99はitoa無くなったん? なんで?
84: はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-fyY6) 11/08(土)10:25 ID:Ed4kLbQS0(1) AAS
>>83
無くなったというか規格に入ったことはないはず。
POSIX (やその後継である SUS) にも無い。
85
(1): (ササクッテロラ Spf1-3Voz) 11/08(土)10:47 ID:fNGE7Dndp(1/2) AAS
そもそもCで文字列操作する気にならない
86: (ワッチョイ 819f-Ou1F) 11/08(土)10:57 ID:sZf9RtQU0(1) AAS
でもUNIXのI/Oは基本バイトストリームで文字列指向だから切り離せないでしょ?
基盤やライブラリがやることだから低レベルに書きたくないんならわかる
87: (ササクッテロラ Spf1-3Voz) 11/08(土)11:15 ID:fNGE7Dndp(2/2) AAS
C全盛期にインターネットが一般的になってたら
有名なライブラリがその辺りを補完しまくってくれたのかなぁ
88: (ワッチョイ 797b-/c0i) 11/08(土)12:09 ID:+ABJpypp0(1/3) AAS
>>85
ACSIIで固定長なら何も問題ない。そしてbash等はそれで出来てた。
utf-8で可変長(=今の一般的なstring)なんてCでやると死ねるだけ。
89: (ワッチョイ 2e10-a4Xf) 11/08(土)14:42 ID:05Df+FUf0(1) AAS
スクリプトで処理することも多いし
基本は文字列で扱うな
90: (ワッチョイ 42ad-bIaP) 11/08(土)16:40 ID:L8SrJpz20(1) AAS
itoa() というか、数値から文字列への変換となると文字列の長さがどうなるか分からないから消滅したのでは?
かといって sprintf() は健在だが、おすすめは snprintf() だな。(GNUだと asprintf() ってのもあるな)
91: (ワッチョイ 797b-/c0i) 11/08(土)18:49 ID:+ABJpypp0(2/3) AAS
sprintfのbuffer*にヌルポを指定するとbufferに書き出さず単に出来上がり文字列の長さだけ返す、
みたいな仕様があったと思ったが、かなり特定環境の話かこれ?
(他関数と勘違いしてるかもだが、思い出せないし、ググッてもよく分からん)
92: (ワッチョイ c168-rHLw) 11/08(土)19:24 ID:NSK/JYYK0(1) AAS
snprintfの返り値がそういう動作だから
長さだけがほしいときヌルポじゃなくバッファ長を0にする
manpageを信用するとだいたいは叶うけど昔のSUSv2ではエラーと書いてるね
93: (ワッチョイ 797b-/c0i) 11/08(土)20:00 ID:+ABJpypp0(3/3) AAS
それは多分、推奨が変わって、それに合わせてmanページも書き換えられただけではないかと。
MSにはscprintfという、長さだけを返す関数が用意されている。
(s*printfのbufferがヌルポだとエラー、おそらく型チェックを厳しくする為に分離したのではないかと)
外部リンク:learn.microsoft.com
94: (ワッチョイ 9f98-DX0k) 11/09(日)15:49 ID:BHEHF4AV0(1/2) AAS
長さって言うと、バイト数か文字数かで悩む
95: (ササクッテロラ Spf3-7str) 11/09(日)15:56 ID:avBvNiuDp(1) AAS
マルチバイト文字なんてC言語が考慮してるはずが無いだろ
全部外部関数だからなあれら
96
(2): (ワッチョイ 9f98-DX0k) 11/09(日)17:54 ID:BHEHF4AV0(2/2) AAS
どの範囲が内部関数なんでしょうか?
97: (ワッチョイ 1f7b-Y7Iz) 11/09(日)18:08 ID:rjZkXEAW0(1/6) AAS
stdio.h等、K&Rに記載されてる範囲じゃね?
(勿論sprintfも記載あり)
98: (ワッチョイ 1f46-b1F3) 11/09(日)18:38 ID:1hA+Ej0k0(1/3) AAS
こういうときK&R持ち出してくる意図がわからん
80年代で頭が止まってるのか愉快犯なのか
99: (ワッチョイ 1f7b-Y7Iz) 11/09(日)19:57 ID:rjZkXEAW0(2/6) AAS
俺は80年代で頭が止まってるが、K&Rは今でも名著で読む価値があるのも事実だろ
(というかCが変わって無さ過ぎなだけだが)
Zにはドラゴンボールハラスメントなのかもだが
100: (ワッチョイ 7f2a-Nex0) 11/09(日)20:21 ID:ZW4cfheS0(1) AAS
今どきK&Rかよ! てのは昔からいる。超カンタン○○言語なんてのを有り難がるのだけど、なぜか原典の類いには絶対当たらない。
101: (ワッチョイ 1f7b-Y7Iz) 11/09(日)20:36 ID:rjZkXEAW0(3/6) AAS
得る知識量/文字数、というZ的コスパなら、K&Rに勝る本は他のプログラミング言語含めても無いよな
その分端折りまくりだし、そもそも既にプログラミング出来る人向けに書かれているので、初心者には向かないが

しかし本来は、K&Rに勝る本を誰かが書いて、葬ってやるべきなのだろうけど、
あれ以上エッセンスだけ凝縮するのも無理よねって事で今に至るわけだし
102
(1): (ワッチョイ 1f46-b1F3) 11/09(日)20:48 ID:1hA+Ej0k0(2/3) AAS
標準ライブラリの話なのに何とんちんかんなこといってんの
準拠してる規格か処理系そのものに依存するから古典みてもわからんでしょ
当時の知識でもヘッダやライブラリの場所から当たりはつくけどな
103: (ワッチョイ 1f7b-Y7Iz) 11/09(日)20:58 ID:rjZkXEAW0(4/6) AAS
>>102
ならお前が>>96に対する、俺より分かりやすい回答を出せば済んだ話だろ
それもせず、とんちんかんな方向のレス付けたのはお前自身なのに、他人のせいにする所はZ仕草か

まあ話を戻す気があるなら、とりあえず>>96に回答して、その分かりやすさを俺97と競うべきだよ
それも出来ないなら、ああやっぱりZは、と言われ続けても仕方ないだろうよ
104
(1): (ワッチョイ 9f45-rgYF) 11/09(日)21:03 ID:LFf9m6Ev0(1) AAS
K&R馬鹿にしてるのもZ連呼してるのも傍から見てたらどっちもアホですわ
105
(1): (ワッチョイ 1f46-b1F3) 11/09(日)21:10 ID:1hA+Ej0k0(3/3) AAS
バカにはしてないむしろ信奉者だし
アホなのはそのとおり
ウソが知識不足からか故意なのか気になっただけ
書けば質問者への気づきにもなるしな
106: (ワッチョイ 1f7b-Y7Iz) 11/09(日)21:24 ID:rjZkXEAW0(5/6) AAS
>>104
だからそういうのは要らねえから、さっさとお前流の>>96に対する回答を書いて勝負すればいいわけ

というかね、完全に脱線するが、
例の非韓三原則「韓国人には、教えない、助けない、関わらない」とか、
Kの法則、「韓国(人)に関わると不幸になる」というの、ありゃ何だろうなと思ってたんだが、
数年前には俺なりに結論が出てしまった

あれはな、連中は、「自分を上げるのではなく、他人を下げる事」しかしないからなんだ
省14
107
(1): (ワッチョイ 7f94-u/J9) 11/09(日)21:55 ID:iuqP4JEu0(1) AAS
そもそもCで外部内部関数なんて概念がナンセンスだろ
108: (ワッチョイ 1f7b-Y7Iz) 11/09(日)22:22 ID:rjZkXEAW0(6/6) AAS
>>107
今回の文脈は、

94: マルチバイト文字ガー
95(≠俺): それらは全部外部関数(≒内部関数はシングルバイト対応のみ)
96: なら内部関数ってどこまで?

なので、馬鹿でなく、正面から乗ってやるなら、お前なりの線引きを答えてどうぞ
質問が無効なので回答しようがない!ってのは、スカしてイケてるつもりの馬鹿がよくやるパターンだ
省5
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.431s*