C言語なら俺に聞け 159

■ このスレッドは過去ログ倉庫に格納されています
2022/08/04(木) 23:32:27.83ID:yWVViPyIM
!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

C2x ドラフト
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2731.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言語なら俺に聞け 158
https://mevius.5ch.net/test/read.cgi/tech/1640401906/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/10/11(火) 09:19:51.89ID:lDI8MaGS0
個人利用なら好きにすればいいけど共用のサーバー機でそんなことして問題起きると責任問題になるよ
2022/10/11(火) 09:26:18.23ID:+IdMirEn0
>>606
Hyper-V は両方あるからわざわざ 「Windows Server で」って書いてある


>>607
普通はシステムのdll置き換えようとしてる時点で責任問題になるしそもそも Windows 10からアプリ持ってきてる時点でライセンス大丈夫か?って思うだろ
2022/10/11(火) 09:44:54.24ID:S5uegLjFa
msvcrtってMicroSoft Visual C/c++ RunTimeなんだよね
C言語ってライブラリを静的リンクすることが多いけど共通部分をdllにしたらディスク容量が少なくて済むんじゃねって発想で作られた過去の遺物
今は積極的に使うべきものじゃない
おそらく古い古いソフトなんじゃね
2022/10/11(火) 09:48:41.00ID:S5uegLjFa
そういう古いソフトは当然のように32ビット(ひどい時には16ビット)だから64ビット環境ではエミュレーションが働く
その辺に何かありそうな気がするな知らんけど
コンパイルし直せば直るような気がしないでもないがメーカーが対応する気ないんじゃどうしようもない
2022/10/11(火) 14:18:13.05ID:UUE3JARA0
>>585
メモリとハードディスクの違いくらいはわかってないと無理でしょ
2022/10/11(火) 14:24:20.66ID:e/MLj7zo0
Z80 は楽だったなあ
2022/10/11(火) 18:29:10.92ID:RNyxjBqNH
>>610
16ビットはエミュレーションは利きません!
2022/10/11(火) 18:50:36.59ID:D4ywmAPt0
>>613
なんで?
https://learn.microsoft.com/ja-jp/sql/odbc/microsoft/using-16-bit-applications-with-32-bit-drivers?view=sql-server-ver16
2022/10/11(火) 19:07:33.88ID:M2HX+v9qM
64bit Windowsでは16bitアプリは動かせない(エミュレーション環境は32bitだけ)
32bit版Win10 ならかろうじて可能性はあるがWinServer2019は64bitだけなので完全に無理
2022/10/11(火) 19:10:36.62ID:RNyxjBqNH
>>614
それは 32 ビット版 Windows の話
64 ビット版 Windows は 16ビットアプリを捨てました、AMD64 アーキをもっと勉強してね!
2022/10/11(火) 19:31:53.97ID:D4ywmAPt0
>>616
サードパーティだがWineVDMというのを使えば動くようだ
勉強になったか?
2022/10/11(火) 19:49:30.50ID:e/MLj7zo0
32ビット版の仮想を動かしてその中で16ビットアプリを動かす事は出来る
そういう多段ロケット使えば良いんだがそこまでして今動かすものがないw
2022/10/11(火) 20:01:38.90ID:1DnVcsvQd
>>616
64bitホストに32bitゲスト載せるとさ
普通に16bitアプリを実行できるんだけど
本当にハード的に不可能なんかね?
2022/10/11(火) 20:05:48.94ID:1DnVcsvQd
32bit OSでは4GB超えできないとかさ
マイクソの集団催眠にかかったやつの言う
ちったあ勉強しろってマウントは
呆れるの通り越して笑う価値もない
2022/10/11(火) 20:10:22.58ID:D4ywmAPt0
エミュレータ使うならできない理由はないなあ
単にマイクロソフトが自前のエミュレータの提供をやめたというだけでAMD64がどうとか言うのは知識不足のマウンターの妄言としか思えないな
2022/10/11(火) 20:51:12.11ID:X1iGovPsM
32ビットすら打ち切りたそうなのに?
2022/10/11(火) 22:06:01.71ID:aJhELtxJ0
じゃあまずお好きな言語でエミュレータを作ってそこで動くZ80プログラムを作れ。
2022/10/11(火) 22:06:38.42ID:aJhELtxJ0
リロード忘れた。間に山盛りに他の書き込みが。
削除できないからもういいや。わすれてくれ。
2022/10/11(火) 22:31:48.32ID:aIs/ZXKV0
XP mode はエミュレータか? おいサル
2022/10/11(火) 22:36:50.66ID:d6pThQK8H
>>617,619
それってエミュレータでしょ?仮想的なCPUをコードでガリガリ書いてインタプリタしているって奴、そんなのでもまともに動く時代になったんですねえ

>>618,619
私も 16 ビットを 64 ビットで動かすときはエミュっています
http://takeda-toshiya.my.coocan.jp が有名で私も便利に使っています
2022/10/11(火) 22:46:46.46ID:D4ywmAPt0
>>626
AMD64の勉強したらこの話に関係ないことがわかったか?
2022/10/11(火) 23:02:05.82ID:d6pThQK8H
まあ私も「エミュレーション」という言葉を、ソフトウェアによるエミュレーションか、80386 がやり始めた仮想86モードという意味でのエミュレーションかをはっきり区別せずにパンパン書いたせいもありますね、ごめんなさいね
2022/10/11(火) 23:04:40.15ID:D4ywmAPt0
WOW64とサンクはその話とはまた別だぞ
それはハードの話だろ
MSが提供しなくなったのはサンクだ
2022/10/11(火) 23:21:05.30ID:aJhELtxJ0
thanks
2022/10/12(水) 01:05:29.68ID:P/bHT4Cpr
サークルKサンクス潰れたから提供のしようがない
2022/10/15(土) 18:58:46.26ID:fQccGg0Vd
なぜつまらないとわかっていてオヤジギャグを何故言ってしまうのか
チコちゃんで脳科学的に分析してて笑ったわw
2022/10/15(土) 19:44:27.23ID:jaz9tT2QH
>>632
なんでなんで!
2022/10/20(木) 03:24:32.42ID:y3K9DSVg0
ジジイだからだよ。
2022/10/20(木) 11:13:15.74ID:SiOwIn850
ここはジジイしかいないからな
2022/10/20(木) 19:25:01.75ID:aXExphHPd
>>633
歳を取ると語彙が増えていき頭の中でダジャレが浮かびやすくなる
それと同時にセンスが低下して面白いギャグかどうかがだんだんわからなくなる
結果的におっさんはつまらないダジャレを思いついたらすぐ言うようになる
2022/10/20(木) 19:54:53.72ID:UUAxnkpP0
オヤジギャグやダジャレより
連想したものをただ言ってれば、
例えツッコミ扱いしてくれて楽だろう
2022/10/20(木) 19:58:46.29ID:4Jg9TvVE0
つまらなくても笑えよ。敬老精神が欠如しているのか。
2022/10/20(木) 20:00:11.34ID:SiOwIn850
ソースにもだじゃれ入れてそう
2022/10/20(木) 20:25:40.72ID:w47Nq7BKH
>>639
char aznable
2022/10/20(木) 22:06:49.25ID:SiOwIn850
カウント変数にcuntは止めろとねんを押された
2022/10/20(木) 22:28:20.65ID:NFETJM8p0
コーディング規約があるなら守りましょう
2022/10/20(木) 22:29:14.08ID:NFETJM8p0
一瞬idがNEETかと思ったが違ったw
2022/10/20(木) 22:48:13.58ID:SiOwIn850
ソースではなく、make終了時にBIGCOCKと表示させてた奴を知ってる
本人いたら、ゴメンナサイ、バラしました
2022/10/21(金) 21:25:54.17ID:CZbur0iYd
そう、こういうの
全然どうでもいい事をさも重要な秘密のようにw
2022/10/30(日) 07:10:33.74ID:9/1OGIJE0
独り言です
インデントは4を使ってきたのだがプロの世界?では2みたいだな
軽くショックを受けた
2022/10/30(日) 07:12:57.69ID:9/1OGIJE0
ちなみにインデント2を使ってるのはcatコマンドのソースです
https://sources.debian.org/src/coreutils/9.1-1/src/cat.c/
2022/10/30(日) 07:27:37.61ID:i1fpLCEI0
プロの現場にそういうところもあるというだけだよ
1つ目撃したからってそれが全てだと思うのは
早まった一般化という誤謬だ

誤謬を多発するやつは論理思考が苦手ってことだ
むろんプログラマとしての適性ではマイナス要素だ
2022/10/30(日) 07:32:06.64ID:A1wSH6ms0
昔は画面が狭かったからそういう主義のやつも割といた
そろそろ淘汰されてる頃じゃね
2022/10/30(日) 07:39:15.76ID:i1fpLCEI0
一画面ルールってのもあったな
2022/10/30(日) 08:27:39.75ID:HgiMaBnhM
今でもそこそこ使われてるだろ
一画面とは言わないまでも100行ルールとかの発展型も多い
ひとつの関数が何千行もあればコードレビューで問題にされる
2022/10/30(日) 08:40:19.94ID:i1fpLCEI0
ダラダラ書くなって話が廃れたとは言ってないんだが
2022/10/30(日) 09:25:59.68ID:+gGQ3BRS0
GNUスタイルのインデントはゴミ
2022/10/30(日) 09:26:11.73ID:KYgyTmU4M
名前空間やクラスを使わないC言語は特に文が長くなりがちだから、2のほうが使い勝手がいいと思うことはよくある
2022/10/30(日) 10:52:42.74ID:vrlOFY0H0
>>647のcatソース見たけれど、
私にはブロックが分かりにくいと感じた
見慣れれば良いのかも知れないが
2022/10/30(日) 17:05:35.10ID:wnFbyiurd
>>647
rms仙人の直筆か
プロ?と言って良いのかはさておきスーパーハッカーではあるね

関数呼び出しの()前の空白とかは結構独特なスタイルだと思うぞ
2022/10/30(日) 17:11:32.88ID:c3va8FLBd
✗直筆
✓監修

プロとは我らIT土方の事を指すのです
658おじ乳輪様 ◆IQ90.av/.Akz
垢版 |
2022/10/30(日) 17:12:30.77
中括弧の位置とか関数呼び出しのスペースとかなんでこんな独特なスタイルなの?
なんのメリットが?
2022/10/30(日) 17:24:51.13ID:xXAnW4UR0
もともとは egrep とかで使いやすい
とかいう理由だった気がする
2022/10/30(日) 17:30:55.10ID:1Zssd/uh0
http://web.sfc.wide.ad.jp/~sagawa/gnujdoc/standards-19981118/standards-ja_5.html
2022/10/30(日) 17:33:33.15ID:ZM6oqeKp0
GNUのソースは読もうと思って読んだがあのスタイルに拒否反応が出て駄目だったわ
662デフォルトの名無しさん (ワッチョイ 13ad-iO6U)
垢版 |
2022/10/30(日) 23:05:10.18ID:KHak5nKt0
( ´_ゝ`)フーン
2022/10/30(日) 23:45:46.77ID:QW7VZG88M
インデントごときで読む気が無くなるのは、単に向いてないだけだなw
2022/10/30(日) 23:52:22.08ID:vrlOFY0H0
うん、むいてないからお前がやってくれ
665デフォルトの名無しさん (ワッチョイ 13ad-iO6U)
垢版 |
2022/10/31(月) 00:03:46.32ID:EzTz1A6M0
 (
   ´_ゝ`
 )
フーン
2022/10/31(月) 00:23:37.56ID:8d/Em0+h0
スタイルがあるなら従うべきだけど、300-500行目に連発する
}
else
{
はさすがに目が滑る
スクロールして追うのも辛い
667デフォルトの名無しさん (ワッチョイ d935-uirP)
垢版 |
2022/10/31(月) 00:32:37.86ID:MKojko7I0
ブロックの前にインデントを入れてるのはブロックも文なんだから単一文の時と同じようにインデントを入れるべきという理屈かな?
2022/10/31(月) 01:42:04.37ID:8d/Em0+h0
>>667
それ自体は一貫してるからいい、ただしこの場合は対応するifから平気で50行以上も離れているので、elseだけじゃスクロールバックしないと条件が何か分からん

エディタのfold機能を活用するのもアリだけど、プレーンテキストとして読めるべきという姿勢のようだから、まさに>>660にある
#ifdef foo
...(長いコード)
#else /* not foo */
のようにelseにコメントを添えさえすれば、俺的にはオッケー

余談だけど
個人的にはプリプロセッサの条件も自由にインデントしてる
# ifdef foo
...
# ifdef bar
....
のように
殆ど見かけないから決して他人には勧めはしないけど
2022/10/31(月) 01:43:55.98ID:oYB2uzRMM
GNUのインデントは、Pythonを考慮すると利にかなってんだよな
if foo:
bar

if (foo)
{
bar;
}
という対応がある
Pythonはインデント自体にブロック要素があるから余計なカッコが要らないけど、Cはブロック要素にカッコが必要だから書いてあると考えれば、実はPythonと一緒なんだよ
これに気付いた時はrmsは天才なんだと思い知らされた
2022/10/31(月) 02:16:22.63ID:8d/Em0+h0
>>669
結果的に同じ形に落ち着いてるけど、pythonとは正反対の思想から生じている事もお忘れなきよう
尊師の第一言語はcでなく言語に構文要素自体が存在しないlispだから、改行のみからコードブロックとインデントレベルがフォーマッタを問わず一意に定められる

c系統(いわゆるブレース言語)は言語に構文を採用しつつ、フリーフォーム記述の許す折衷だから、フォーマッタとスタイルにバリエーションが生じる
2022/10/31(月) 02:24:22.85ID:8d/Em0+h0
翻って、エディタ入力支援/フォーマッタプログラム無しにlispを記述するのは事実上不可能に近いので賛美してるわけではないよ
念の為
2022/10/31(月) 11:19:45.88ID:0hSBCDEtd
))))))))くらいは序の口だし、括弧を数えてたら気が狂うわな
ネストレベルに応じて機械的に挿入されるインデントのみによって構造を把握するから、Lispは実質的にPython並にインデント強制
2022/10/31(月) 11:43:48.99ID:HpV/6ZOj0
今となっては C だってエディタの支援なしに書く気にはならんけどな。
674デフォルトの名無しさん (ワッチョイ f15f-KdnH)
垢版 |
2022/10/31(月) 13:07:16.76ID:J5/naAYk0
>>673
それは慣れの問題
2022/10/31(月) 15:59:12.44ID:YDjtl0u50
そう言うのには慣れたくない
2022/10/31(月) 16:35:29.26ID:gpqFhr3z0
LISP は先にあるんだし、Python の文法は諸々の言語の影響結果だろ
ブロックの開閉で改行するってのは、ALGOL系のBEGIN~ENDの強い影響を感じる
Cではむしろ、少し自由な書式書法になっていたのが退化した
2022/10/31(月) 16:49:19.46ID:YDjtl0u50
Cが退化したのではなく、人間が退化したんだろう
678デフォルトの名無しさん (アウアウウー Sa9d-KdnH)
垢版 |
2022/10/31(月) 20:11:09.56ID:a6AXXlaBa
括弧の入れ子がひどいコードを作ることがやばい
2022/10/31(月) 21:12:31.27ID:YDjtl0u50
初心者のために、本来不要だけど括弧を付けるときはあった
680デフォルトの名無しさん (ワッチョイ d935-uirP)
垢版 |
2022/10/31(月) 21:55:34.36ID:MKojko7I0
ウザ
2022/10/31(月) 22:06:42.50ID:gNe27yrb0
>>679
俺は未来の自分のために言語仕様としては不要な括弧を付ける
2022/11/01(火) 07:24:39.67ID:8mAHYLmxd
初心者でも務まる仕事か
2022/11/01(火) 15:13:43.68ID:hGXBrabD0
若手に優しい配慮は必要だと思う
いらないと言うことに気がつけば
それはそいつの進歩だ
2022/11/01(火) 18:32:43.22ID:8mAHYLmxd
甘やかしでしかない
2022/11/01(火) 18:40:22.15ID:hGXBrabD0
たった1人で好きなシステム組んでみて
2022/11/01(火) 18:45:14.28ID:8mAHYLmxd
議論になってない
2022/11/01(火) 20:23:05.05ID:Lnx9eR9fM
議論なんかしてないだろう
2022/11/01(火) 21:17:55.24ID:hxzN6YDm0
ということにしたいのですね
2022/11/01(火) 22:30:37.78ID:hGXBrabD0
オッサンは呼んでない
690デフォルトの名無しさん (ワッチョイ 8bb0-QueQ)
垢版 |
2022/11/02(水) 11:37:22.22ID:1ThO0l2A0
はつみみです
2022/11/02(水) 21:00:24.72ID:C3BaP9Oq0
焼き鳥の通だけが知ってる稀少部位?
2022/11/07(月) 17:58:10.87ID:BvZ6DXqw0
>>658
呼び出し前スペースはプリプロセスをm4で強化するときに少し面倒になるな
GNUはm4大好きなのにな
2022/11/20(日) 17:25:16.95ID:u5cvtrdO0
m4すらすら書ける人います?
2022/11/21(月) 03:19:48.32ID:Amw5zf2Y0
大昔、sendmail.cf を生成するのによく使われてな。久しぶりに名前を聞いた。
autoconf をがんがん使うプログラマがいればワンチャン。
695デフォルトの名無しさん (アウアウウー Sa3b-kfYZ)
垢版 |
2022/11/23(水) 15:53:36.98ID:U6TEG1mTa
sendmail.cf なつかしす
postfix に乗り換えちゃった
2022/11/23(水) 19:55:29.66ID:aRKGS4gV0
CF使った事あるw
2022/11/25(金) 12:32:01.04ID:FzNlCQf10
すまん、聞くことないわ
2022/11/25(金) 12:49:25.94ID:PV2ZG9bua
CF は m4 ではないやろ?
2022/12/01(木) 15:02:39.09ID:ZPuEPm3M0
ttps://atcoder.jp/contests/abc273/submissions/35667282
このコードを実行するとscanfで入力を待つはずなのですが即座に終了してしまいます
たまにそういうコードを見かけるのですが何が原因なのでしょうか
printfを入れても実行されないのでmainがスキップしているような。。
2022/12/01(木) 15:40:10.03ID:q8NQ5dwmd
あなたの環境のせいかと
2022/12/01(木) 16:09:51.97ID:JXDLC/Oi0
コードが酷くてワロタw
2022/12/01(木) 16:26:50.49ID:jAeBwf3w0
>>699
典型的な scanf() あるあるだな
最初の scanf() で数字 + 改行が読み込まれるが"¥d"だと数字だけ取り出して改行が残っちゃう
2回目以降のscanf()は改行が残っているから入力をスキップしてしまう
scanf 改行 読み込み とかでぐぐると色々出てくる
https://hiroyukichishiro.com/scanf-problems-in-c-language/
回避方法はいくつかあるけど、個人的には
static b[100];
fgets(b, sizeof b, stdin);
N = atoi(b);
...
fgets(b, sizeof b, stdin);
d[i].key = atoi(b);
みたいにするかな

>>700
釣りか?
2022/12/01(木) 16:29:17.59ID:LIu803lba
普通のマージソートを読んでるだけで別に酷くなくね?
エラーハンドリングしてないってことなら競プロではそれが常識だぞ
何を見て酷いと言ってるのか説明してくれ
2022/12/01(木) 16:33:06.65ID:LIu803lba
>>702
\dじゃなく%dのことかな?
そのコードの下にACが30個並んでるだろ?
これは用意された30通りのテストケースにおいて想定通りに動いたということなんだよね
つまりコードのせいではないよ
2022/12/01(木) 16:36:36.47ID:q8NQ5dwmd
改行が問題になるのは%cのときくらいで
%dのあと%dだから空白類文字は問題ないよ
2022/12/01(木) 16:42:55.52ID:LIu803lba
>>701
ちなみにこのコードを書いたのはオレンジコーダー
https://atcoder.jp/users/ygussany?contestType=algo

オレンジというのは一部上場企業でも一人もいないことが珍しくないレベルの高レベルプログラマを超える化け物レベルの超高レベルプログラマを超える頭おかしいレベルのプログラマ
2022/12/01(木) 16:47:51.25ID:knNtAgEU0
y[200001];とd[200001]がスタック壊してしまいます涙
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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