X



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
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);
とかで持ってくるものなの?
2025/01/02(木) 19:46:55.76ID:dC27qXct0
>>524
言語仕様にはないが、処理系によっては有ることもある。
特定の環境でコンパイル・実行できればよいならそれを使えばいいし、そうでないなら工夫も必用だろうし……
どのくらい移植性に配慮するかによるんじゃないの。
2025/01/02(木) 19:58:10.79ID:dC27qXct0
double の精度が有限な以上は無理数を誤差なく扱うのは不可能だし、どうしてもやりたいなら数値計算ではなく解析的な計算をするしかない。
ただ、工学的な用途だと誤差をゼロにする意味はあまりないことが多くて、誤差の程度が保証されることが需要。
たとえば分子一個分より小さい桁の部分で正確でも何にも使えないから考えるだけ無駄でしょ。
2025/01/02(木) 22:08:15.15ID:8mwDch1n0
ちょっと解析的な計算というのが正確にわかっていない

数値的な計算というのは有限差分法とか用いて近似的な解を求める方法だよね?

解析的な計算というのは a *x^2 + b * x + c = 0 なら手計算で解けるよというやり方?
使ったこと無いけどマスマティカとかそういうソフトだっけ?
2025/01/02(木) 23:00:55.85ID:dC27qXct0
>>527
そう。 要は数式の変形で解くやりかたってこと。
どのくらいのものを扱いたいかによるけど四則演算と巾乗くらいからなる簡単な式を扱えればよいなら C で書いてもそれほど高度というほどではない。
リスト構造を作って切り貼りするってだけなので。
とはいえ、計算を始めたいときにやる下準備としてはかなり面倒臭いだろうとは思うけど。
2025/01/03(金) 13:18:29.38ID:4R6C6cdS0
なるほどね、解を公式化しておいて虚数が必要か判定する感じだろうね
530デフォルトの名無しさん (アウアウエー Sa23-Y8TR)
垢版 |
2025/01/05(日) 10:58:58.82ID:8kdOFrcZa
πをπのまま計算して最後にmπで出力してくれれば良いのにと思うことは多い
2025/01/05(日) 11:04:48.60ID:caTYcs4C0
数式処理の基礎の基礎ならこのあたりがオススメできると思う。

C言語による標準アルゴリズム事典
https://gihyo.jp/book/2018/978-4-7741-9690-9
532高卒工員 ◆rysjzJ5XpQ (ドコグロ MMde-pbJa)
垢版 |
2025/01/13(月) 10:59:54.95ID:EpHsvAOYM
「」
レスを投稿する

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

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