C言語なら俺に聞け 163

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
垢版 |
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0
!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言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2024/12/08(日) 16:35:15.95ID:iOnFgjmu0
>>421
問題ありだ。1行目末尾にセミコロンがないじゃないか
あと、学校の宿題の答えをこんなところで聞いちゃいかんぞ
2024/12/08(日) 20:16:31.35ID:rVbvHhAN0
最近の小学校ではこんな宿題出るのか
末恐ろしいと言うか、頼もしいというか
2024/12/09(月) 01:07:25.53ID:ToKnc/9y0
コンピュータの授業とか普通にあるんだろ?今って
俺からすると羨ましい限りだわ
でもダンスの授業はいらん
2024/12/09(月) 01:41:05.76ID:izrgU9L90
元々芸術科目や体育は面倒な存在だし
ダンスはそれらが合わさって一見最強に見えるだけで専門科目に比べれば実は大した内容じゃない
子供は加減の付け方を知らないから物凄い壁に見えるんだろう
2024/12/09(月) 01:48:04.91ID:hHB0rnnr0
1990 年代頃なら中学校でコンピュータの授業はあったがプログラミングがちょっとでも出来るようになるほどではなく使い方に慣れるという程度だったと思う。
ただ、学校に設備や資料はあったから興味があれは詳しくなれるチャンスはあった。
設備をどのくらい解放するかは学校の体制によるだろうけど。
430デフォルトの名無しさん (ワッチョイ dfad-pQ4B)
垢版 |
2024/12/09(月) 10:00:06.94ID:hbK9EAUD0
>>427
踊りながら英語でコンピュータを使え
431デフォルトの名無しさん (ワッチョイ dff4-tB0+)
垢版 |
2024/12/09(月) 13:23:27.80ID:wWCmXoxS0
科学 + 5ch

【AI】AIはわずか2時間の対話で人間の性格をコピーできる [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1733576027/

コメントに面白いことが書かれている
2024/12/09(月) 13:52:01.90ID:IOR7vjsa0
2時間で初等教育から大学院レベルまで学習完了したら
人間要らなくなりそうだな
2024/12/09(月) 18:02:12.33ID:rC3URswf0
>>429
たしか教師がクソすぎて失敗したんだよなw
434デフォルトの名無しさん (ワッチョイ dfad-pQ4B)
垢版 |
2024/12/09(月) 19:36:33.91ID:hbK9EAUD0
やがて全ての仕事がAIに直結されたロボットによって置き換えられ、人類絶滅。
地球はAIのみが存在する世界になり、真空でもそのまま動くロボットが宇宙征服。
435デフォルトの名無しさん (ワッチョイ 6761-/Pym)
垢版 |
2024/12/09(月) 21:34:01.67ID:OpvCpgOo0
チェックボックスとかラジオボタンの状態を保存したいんだけどなんて調べればええんすの?
現状ウィンドウを破棄する前にコントロールの内容を取得して状態に合わせた変数を初期化ファイルに保存、再起動時に変数に対応した状態に再設定するみたいなのしか思いつかん
冗長になって見づらいだろうし代替案を知りたい
2024/12/09(月) 21:38:21.41ID:IOR7vjsa0
その通りで良いと思います
437デフォルトの名無しさん (JP 0H9f-uiwC)
垢版 |
2024/12/09(月) 21:39:24.19ID:XfZ/p96kH?2BP(1000)

www最近、EchoAPIを使い始めたところ、効率的なAPIテストツールを提供してくれるおかげで、開発プロセスが向上した!
438デフォルトの名無しさん (ワッチョイ 6761-/Pym)
垢版 |
2024/12/10(火) 09:40:44.51ID:9vz9QL6n0
>>436
これで行くしかないのか
2024/12/10(火) 10:01:08.05ID:gzrtf0Gl0
対応表をだーっと並べる、control_state_read_and_write(bool is_write, ...) みたいな関数を置く、など
割り切ってしまえば工夫のしがいはある

ただ、そのときはよくても、あとになってみたら黒魔術でしかなかったりする
愚直なのもいいぞ
2024/12/10(火) 17:10:24.87ID:TsXGEoU20
>>435
何がどう"冗長になって見づらい"のか?
2024/12/10(火) 19:03:49.02ID:ruXLR+AW0
属人化だとか 尻アナルライブだとかあったような
2024/12/10(火) 19:06:39.85ID:RLBTgK1d0
身体に刻む学習方法
2024/12/10(火) 21:11:22.07ID:RajTC0DHa
>>422-424
ありがとん
2024/12/10(火) 21:43:52.59ID:RajTC0DHa
これでなんか機能した

TCHAR buf[255];
this->GetWindowText(title, 255);

int len = _tcsclen(buf);
_sntprintf(buf + len, 255, " %d", uiWindowCount);

this->SetWindowText(buf);
2024/12/10(火) 21:51:03.48ID:ruXLR+AW0
this->
ナニコレ
もしかしてC言語スレでC++使えるぞあぴーるですか!
すげー
2024/12/10(火) 22:13:12.06ID:ujXLUuNp0
>>443-444
もし C++ の話なら上述 (>>424) の restrict の説明が役に立たない。
C++ に restrict は無いから。
2024/12/11(水) 07:46:28.90ID:P/b6xwK7a
API自体はC言語なんでそこらへんはスルーでお願い
2024/12/11(水) 14:36:37.44ID:fIut9/tx0
>>447
C の snprintf と C++ の snprintf は違うという話をしてるんやが
(最終的に同じものが呼び出される実装の場合はあるにしても。)
449デフォルトの名無しさん (JP 0H9f-uiwC)
垢版 |
2024/12/11(水) 20:35:15.94ID:GrIf7glWH?2BP(1000)

最近のRESTful APIについての議論に触発されてEchoAPIを試してみたところ、エンドポイントのシミュレーションツールがテストプロセスを非常に効率化してくれました。
2024/12/11(水) 23:04:37.50ID:xKzgcnaC0
MSは採用していないのかな?
なんでこんなにバグが多いんだろう
451デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:13:40.89ID:jrfqO5QN0
1つめのプロシージャで宣言した変数を2つ目のプロシージャで使うって頑張れば可能?
それともグローバル変数宣言したほうがいい?
2024/12/15(日) 15:17:17.63ID:Vq+PRAKz0
引数で渡せばいいんじゃね
453デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:23:28.37ID:jrfqO5QN0
>>452
それも考えたんだけど、プロシージャ作るときライブラリ側が指定した引数以外渡せないんじゃない?
2024/12/15(日) 15:31:40.27ID:wmU+aa0b0
そのプロシージャーを同一モジュール内lに記述して、
変数をスタティック宣言する、とか
455デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:38:22.49ID:jrfqO5QN0
>>454
そんなことできるんかよ知らなかった
{}内かつ、他のswitchと干渉しないところにベタ書きすればいいってことよね?
2024/12/15(日) 15:45:22.53ID:wmU+aa0b0
ちょっと違う様な気がする
そのファイル内にある全ての関数から参照出来る宣言です
スタティック宣言を調べて見て
457デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:46:49.05ID:jrfqO5QN0
>>456
ごめん、スタティックはわかってる
モジュール内への記述の方
言葉足らずですまん
458デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 16:32:34.62ID:jrfqO5QN0
調べてみたけど関数内に別の関数の処理はかけないっぽい?
とりあえず自前のソース書き換えてみたけどC2275が出てしまう
2024/12/15(日) 16:54:06.72ID:Wjdp3H7kM
モジュールとかプロシージャはc言語の用語ではないよ
誤解を生むからなるべく正しい用語で
あるいはソース書け
460デフォルトの名無しさん (ワッチョイ a301-2Zui)
垢版 |
2024/12/15(日) 17:04:08.92ID:5Q71kCB70
Cで作ったソフトにアイコンをつける方法ありますか?
コンパイラはmingw
2024/12/15(日) 17:07:42.25ID:SAQ/jMe00
>>460
リソーススクリプトを書いて windres コマンドでコンパイルしてリンク。
462デフォルトの名無しさん (ワッチョイ 3338-UX28)
垢版 |
2024/12/15(日) 17:11:49.15ID:jrfqO5QN0
>>459
ウィンドウプロシージャでおk?
2024/12/15(日) 17:25:02.46ID:SAQ/jMe00
>>462
windows の話?
ウィンドウプロシージャにデータを結びつけたいのなら必要なのは SetProp じゃないかな。
464デフォルトの名無しさん (ワッチョイ 4a12-O1Z7)
垢版 |
2024/12/15(日) 20:08:51.95ID:7bvd8wX+0
>>458
よくある質問に書いてあんだからそれを読めよ
2024/12/15(日) 21:32:26.28ID:8K4C8OcF0
2つ目のプロシージャってなんやねん
2024/12/16(月) 07:18:55.27ID:Y4GCxOlhr
今北
何のデータかわからんが、だれに属しているデータなのやら

「全然関係ないところ」には、置かないほうがいいぞ少なくとも
467デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 18:03:11.25ID:o/MtQx1A0
下記のコードのsizeof(buf)/sizeof(TCHAR)ってなんの意味があるの?
ただのsizeof(buf)じゃだめ?

static int num;
TCHAR buf[8];
stprintf_s(buf,sizeof(buf)/sizeof(TCHAR), TEXT("%d"), num);
468デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 18:17:40.10ID:o/MtQx1A0
>>463
なるほどね、それで行けるかありがとう
469デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 18:18:31.53ID:o/MtQx1A0
>>466
自分の知識だと外に置くくらいしか思いつかんかった
2024/12/16(月) 18:20:09.41ID:/03Ox5VG0
TCHARは_UNICODEのマクロの定義の有無によって16bitまたは8bitになる
2024/12/16(月) 18:26:34.86ID:26oXJeTE0
>>467
> ただのsizeof(buf)じゃだめ?

だめ。

TCHAR はコンパイル時に ANSI モードか Unicode モードかで定義が切り替わる。
ANSI モードのときは char で Unicode モードのときは WCHAR と同じ。

_stprintf_s も ANSI モードのときは sprintf_s に置き換えられて Unicode モードのときは swprintf_s になる。
swprintf_s のときの第一引数は文字数 (この場合は UTF-16 でのコードポイントの数) なのでバイト数である sizeof(buf) を渡しても駄目。

ANSI モードでしかコンパイルしないのであれば別に割らなくても大丈夫だけど、それならそもそも切り替えを前提としたマクロを使う必要ないしな……。
472デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 22:06:23.18ID:o/MtQx1A0
Unicodeになるとなんで割る必要が出てくるのかいまいち掴めないなあ
BuffのサイズをTCHARのサイズで割ってどうしてサイズが出せるの?
2024/12/16(月) 22:41:01.10ID:/03Ox5VG0
>>472
ごちゃごちゃ考えてないで
とっととデバッガ使って値を確認しな
2024/12/16(月) 22:48:31.98ID:26oXJeTE0
配列の大きさを得るために配列のバイト数を配列要素のバイト数で割るのはごく一般的なイディオムなので何がわからないのかわからない。
475デフォルトの名無しさん (JP 0Hff-K+1m)
垢版 |
2024/12/16(月) 22:57:30.45ID:Q04ymynwH?2BP(1000)

これらのアイデアを実装するために取り組んでいる中で、EchoAPIが設計ワークフローを本当に効率化してくれた
2024/12/17(火) 00:02:56.65ID:KLd2kDAJ0
>>472
Unicodeの場合、2バイトで1文字を表現
@@AABBCCDDEEFFGGHH で9文字、18バイト

ANSIの場合、
@ABCDEFGH で9文字、9バイト

> sizeof(buf)/sizeof(TCHAR)

sizeof(buf)が指すのはバイト数、Unicodeなら18、ANSIなら9
sizeof(TCHAR)が指すのは1文字のバイト数、Unicodeなら2、ANSIなら1

そして stprintf_s の引数 sizeOfBufferはバイト数ではなく「格納する最大文字数」であること

引数がバイト数ならsizeof(buf)でいいけど、引数が文字数を求めているならsizeof(buf)ではおかしくなる
上の例で言えば、Unicodeは18バイト9文字で本来は9とするところを18と指定してしまうことになる
すると関数側はバッファが18文字分(バイトで32バイト)あると勘違いするわけでバッファオーバーフローを起こす

sizeof(buf)/sizeof(TCHAR) は18バイトの領域があって、それを1文字のバイト数で割って「9文字」ということ
2024/12/17(火) 00:05:50.03ID:KLd2kDAJ0
丸付き数字自体が1文字1バイトって意味じゃないからな
内部表現を表すために使用しただけで数字がx文字目として見て
478デフォルトの名無しさん (アウアウエー Sae2-N2kD)
垢版 |
2024/12/17(火) 10:25:09.48ID:hEkGaD6xa
_countof()
2024/12/17(火) 12:09:40.76ID:2fZmW/080
いやvc++使ってんならstd::sizeでいい
2024/12/17(火) 12:36:10.86ID:5c2Y3gwMp
C言語スレだろw
2024/12/17(火) 12:49:19.32ID:6SQ8uEd20
そこは禁欲しましょう
482デフォルトの名無しさん (ワッチョイ 33ef-iztn)
垢版 |
2024/12/18(水) 01:25:30.31ID:ILkVh3nA0
>>476
朝わかりやすいね
でもANSIって1バイトと2バイト混合できるよね?どうなっちゃうんだろう
2024/12/18(水) 02:49:26.43ID:NqM0X43U0
>>482
ANSIはバイト=文字数
そもそも論理的な文字数じゃなくて処理単位での文字数ね
だから strlen("あいう") = 6
strlen("123あ67い0") = 10 // 数字は半角(1バイト)、ひらがなは全角(2バイト)

Unicodeの場合でも正しい文字数になるわけじゃない、サロゲートペアの場合に文字数は2(4バイト)になる
2024/12/18(水) 09:23:44.77ID:w442kBzm0
Unicode だとサロゲートペアを脇においても異体字だの合成だのといったものがあるし、人間が紙の上に書くときの直感的な感覚で言うところの「文字数」とは定義が違うので、各文字コードの仕組みを知っておくしか仕方がない。
485デフォルトの名無しさん (ワッチョイ 3339-iztn)
垢版 |
2024/12/18(水) 17:31:07.70ID:ILkVh3nA0
>>483
>>484
つまりこの方法だとコンパイル時に気をつけるしか無いってことか、大変だね
テキストエディタみたいなの作ろうとすると禿げ上がりそう
2024/12/18(水) 17:41:39.49ID:NuF84nX60
文字コード問題よりC言語で作れってほうがハゲりそうだ
2024/12/18(水) 17:56:26.27ID:2i1n2GHXM
固定長ならそこまで禿げないかと
2024/12/18(水) 18:24:42.01ID:ccS3E3GJ0
>>485
方法が大変?
お前まだ理解できてないぞ
一般論として文字コードの扱いは大変だがTCHARの仕組みは単純だ
2024/12/18(水) 18:25:51.62ID:U+/f/ac80
CがC++だったとしても変わらんでしょ
VSCodeはレンダリングの都合でWebルレームワークとjavascriptで作られてるからC/C++製エディタと比較して遅いというデメリットがある
2024/12/18(水) 18:34:50.50ID:ccS3E3GJ0
c言語で文字列処理はクソ面倒でしょ
ライブラリの整備からやる必要がある上にコードがとっ散らかる
2024/12/18(水) 18:36:51.22ID:U+/f/ac80
Windowsの場合使用フォントに応じて描画幅を返すAPIに丸投げできるから大した手間にならないが
メモ帳の「右端で折り返す」相当を実装する場合右端のどこで切るかでその人センスが露になる
2024/12/18(水) 18:41:35.77ID:U+/f/ac80
>>480
何か誤解があるみたいだが開発言語にCを選ぶようなやつがそんなのを面倒に感じる事はないんだよ
2024/12/18(水) 22:35:54.78ID:w442kBzm0
アプリケーションを作るにあたって TCHAR が必要になる状況はそれほどない。
Unicode 対応をきちんとやるならそれとは別に ANSI 版も作るという必要性はないし、両方を作る必要性がないなら切り替えを意識する必要もないから。
最初から WCHAR で書けばよい。

ライブラリとしてまとめるならどちらにも対応したほうが良いこともあるかもしれんけど。
2024/12/18(水) 23:14:04.02ID:1nhczz8f0
テキストエディタ、アセンブラで作った奴いるだろう
ハゲてはいなかったと思う
495デフォルトの名無しさん (アウアウエー Sae2-N2kD)
垢版 |
2024/12/19(木) 15:05:41.21ID:p9TYuGiMa
>>483
strlen("123あ67い0") == 12 // utf-8
2024/12/19(木) 15:35:21.01ID:boHB/shj0
strcat()、実装大変そうだな
2024/12/19(木) 18:03:52.50ID:KNZC4rFA0
UTF-8のバイト数ではなく文字列の長さを調べるソース
https://drive.google.com/drive/folders/10jgzKVUYPXQhC566bBmrqnnBLJI4pEbL
2024/12/19(木) 18:29:36.25ID:ByBpVqn8M
>>497
Unicodeで文字列の長さって何?
書記素クラスタか?

って突っ込まれるから知ったかぶらないほうがいいぞ
2024/12/19(木) 18:32:55.82ID:KNZC4rFA0
>>498
文字数を数えられるように自分で書いたのだけど?
文字数数えられるけど知ったかとは?
2024/12/19(木) 18:34:44.41ID:hCGKCs/t0
👩🏽‍👩🏿‍👧🏻‍👧🏽
2024/12/19(木) 18:41:15.54ID:ByBpVqn8M
>>499
それがまさに知ったか
unicodeの基礎すらわかってない
そんなやつのライブラリなんで誰が使うんだよ
2024/12/19(木) 18:45:26.23ID:KNZC4rFA0
>>501
基礎ってなに?
ただ文字数数えれるプログラムとしてだしたのに
2024/12/19(木) 18:50:39.22ID:ByBpVqn8M
>>502
それは書記素クラスタか?ときいてるだろ
でもその言葉の意味がわからんのだろ?
2024/12/19(木) 18:52:55.31ID:KNZC4rFA0
>>503
なんで書記素クラスタって言葉にこだわってるの?
もしかして教科通りにU+数字じゃないから言ってるだけ?
2024/12/19(木) 19:11:26.12ID:hCGKCs/t0
﷽は1文字か?
2024/12/19(木) 19:27:41.47ID:KNZC4rFA0
>>505
1文字 3バイトみたいだね
ソースを変えて出力してみた
2024/12/19(木) 19:38:58.12ID:hCGKCs/t0
そうなんだ
よかったね

https://www.unicode.org/Public/emoji/latest/emoji-zwj-sequences.txt
2024/12/19(木) 19:46:58.36ID:zv08w2oi0
main関数用のヘッダファイル用意してて草
2024/12/19(木) 19:59:42.44ID:iU+Lg9qY0
unicode怖ひ
2024/12/19(木) 20:00:17.69ID:y/hB6qNpr
退勤前に>>497見て、
ああ、"フロッピーディスク"って入れたら8が返り、"ハードディスク"って入れたら2.5が返るような関数だろ。
って思いつつ帰宅したら、またお前らときたら
2024/12/19(木) 22:28:22.60ID:uLfYubV70
>>509
自然言語がぶっ壊れてるんだよ。
Unicode は自然言語のぶっ壊れをどうにかこうにかコンピュータで扱える形にしただけ。
512デフォルトの名無しさん (ワッチョイ eb78-RqoG)
垢版 |
2024/12/20(金) 15:28:36.64ID:raronLtC0
JAIST、「並行量子通信プロトコル」の完全な自動形式検証を実現
http://news.mynavi.jp/techplus/article/20241220-3090485/
513デフォルトの名無しさん (JP 0Hff-K+1m)
垢版 |
2024/12/20(金) 23:42:16.35ID:yXvtHThaH?2BP(1000)

最近のRESTful APIについての議論に触発されてEchoAPIを試してみたところ、エンドポイントのシミュレーションツールがテストプロセスを非常に効率化してくれた
514デフォルトの名無しさん (ワッチョイ 3351-iztn)
垢版 |
2024/12/21(土) 07:13:36.08ID:37tGDg2N0
IsWindowVisible
IsWindowEnabled
EnableWindow
のダイアログ版教えてくりゃ
515デフォルトの名無しさん (アウアウエー Sae2-N2kD)
垢版 |
2024/12/21(土) 10:49:43.14ID:bIHzWCsda
GetWindowHandle
516デフォルトの名無しさん (ワッチョイ 3351-iztn)
垢版 |
2024/12/21(土) 21:59:52.73ID:37tGDg2N0
>>515
つまりどういうことだってばよ
2024/12/21(土) 22:49:23.50ID:Bjr5M2i00
>>516
Win32の板できけ
518デフォルトの名無しさん (ワッチョイ eb53-XATa)
垢版 |
2024/12/22(日) 02:23:50.05ID:SmvDArN50
>>517
なるほど
2024/12/29(日) 08:16:36.48ID:5Nra/jss0
%*d
こんなの初めて知った
B1.3 Formatted Inputに載ってたけど読んでなかった
2024/12/29(日) 10:03:55.05ID:RHfwjsVRa
(s)scanfのフォーマット引数もパターンマッチのように使えて便利だったり
521デフォルトの名無しさん (ワッチョイ 9aad-Udw9)
垢版 |
2024/12/30(月) 16:23:40.30ID:QwWcwTek0
>>519
俺はそれ20年以上前に知ったような気がする。
フォーマットの文字列をわざわざ別に作らなくて済んで素晴らしいと思った記憶がある。
522デフォルトの名無しさん (アウアウエー Sa52-fscC)
垢版 |
2024/12/31(火) 13:18:32.28ID:dvbSbmj1a
実は正規表現が使えるんだぜ
2024/12/31(火) 13:46:40.77ID:KJy4fxay0
ネイピア数や円周率を誤差ナシで扱えると嬉しい
2025/01/02(木) 15:48:37.33ID:8mwDch1n0
円周率って math.h とかに入っているの?
それとも
pi = 4.0 * atan(1.0);
とかで持ってくるものなの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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