C言語なら俺に聞け 164at TECH
C言語なら俺に聞け 164 - 暇つぶし2ch200:はちみつ餃子
25/12/16 16:25:43.79 8p6wZKuQ0.net
>>198
閉じた時点で FILE* 型のハンドルは無効になる。
無効になったハンドルに対して出来ることは何ひとつない。

ファイルを開いている内に再び開くために必要な適用な情報を確保しておくしかない。
言語仕様上は細かい規定は無いのでホスト環境 (OS) に依存したなんらかの手段を使う必要がある。
Linux なら inode 番号あたりを保持しておけばファイル名を覚えておくより短くて済むからいいんじゃないかな?
まあ開くときにはたぶん一旦ファイル名を取得する必要はあるんだけど。
(他の OS でもだいたい似たような仕組みは有る。 Windows だと GetFileInformationByHandle を調べてみると良い。)

201:デフォルトの名無しさん
25/12/16 17:12:42.21 unxv0LoC0.net
みなさんありがとう。OSはWindowsです
GetFileInformationByHandle も調べてみたけど、これではファイル名は出てきませんね
多分FILE* fからファイル名が出てこないと、無理っぽいですね

202:デフォルトの名無しさん
25/12/16 17:27:33.70 BhrzwszF0.net
GetFinalPathNameByHandle
geminiに聞いただけで期待通り動くかは知らん

203:はちみつ餃子
25/12/16 17:47:00.48 fxmzBDbu0.net
windows の場合はファイル番号 (FRN) から直接にファイルを開くことができるっぽい。

204:デフォルトの名無しさん
25/12/16 17:48:08.13 unxv0LoC0.net
>>202
GetFinalPathNameByHandleやってみたけど残念
まあ、考えたらWindowsではHANDLE。FILEではないからね。HANDLEなら多分うまくいくんだろうね
でもいい関数を教えてもらいました。ありがとう
FILEからHANDLEに変更して作り直すかな。他人が作ったソフトを改造してやってるので
そもそも、FILEとHANDLEって何が違うのかなコンバートって出来る?
HANDLEはWindows専用でやってそうだから無理そうね

205:デフォルトの名無しさん
25/12/16 18:25:26.73 BhrzwszF0.net
>>204
FILEからHANDLEは取り出せる
よく調べろ

206:はちみつ餃子
25/12/16 19:25:00.08 fxmzBDbu0.net
Windows では FILE の下にファイルディスクリプタっぽいものがあって、その下に本来の Win32 API があるという三層構造になってる。
msvcrt.dll (または ucrt.dll) が C や POSIX の仕様に合わせた機能を提供しているが、必要に応じて Win32 API 用のハンドルを取り出すことはできる。

207:デフォルトの名無しさん
25/12/16 19:50:18.68 unxv0LoC0.net
ありがとう。調べてみます

208:デフォルトの名無しさん
25/12/16 21:05:39.33 ugyur8tL0.net
最近開いたファイル から引っ張ってこれないのか?

209:デフォルトの名無しさん
25/12/16 21:38:52.25 x7DniZMa0.net
>>198
階層設計間違ってるだけだと思うがな
URLリンク(atmarkit.itmedia.co.jp)

210:デフォルトの名無しさん
25/12/17 00:35:55.40 9wOraPAW0.net
そのファイルを誰かが開くことは想定しなくて良いのか?

211:デフォルトの名無しさん
25/12/18 01:16:26.13 qZgjLdb10.net
>>198
それ絶対に閉じないといけないのか? fflush() するだけじゃダメ?

212:デフォルトの名無しさん
25/12/18 09:00:10.06 T7xRzDCt0.net
DBとして機能するファイルならDBつかえよ?

213:デフォルトの名無しさん
25/12/19 13:27:44.03 uPPpqdRma.net
あるやん
URLリンク(learn.microsoft.com)

214:デフォルトの名無しさん
25/12/19 13:33:27.31 uPPpqdRma.net
URLリンク(learn.microsoft.com)
HANDLE h =(HANDLE)_get_osfhandle(fileno(fp));

215:デフォルトの名無しさん
25/12/19 14:08:20.19 GilgZVjz0.net
質問者の意図がよく分からない
FILE*で操作したいと言うことは、
誰かが上位でopenしてくれる前提なのかな?

216:デフォルトの名無しさん
25/12/19 17:52:53.90 oWecYqFH0.net
こうしてバグの温床が生まれたと。

217:はちみつ餃子
25/12/19 20:20:49.60 LTe4LjTR0.net
他人が作ったプログラムをよく理解しないまま改造するという前提ではなるべく構造を変えないという選択肢がマシになることはなくもない。
もちろんきちんと理解して必要な形に整理しなおすのがよりよいに決まってるんだが、そう理想通りにできるとは限らない。

218:デフォルトの名無しさん
25/12/19 20:28:04.21 tQhsUV0y0.net
なんなの、この糞コテ?

219:デフォルトの名無しさん
25/12/19 22:01:36.42 1MzI+xf/0.net
おいしそうだろ

220:デフォルトの名無しさん
25/12/20 07:50:33.87 QsyRy9oL0.net
>>218
お前よりは数段役にたつやつだから 暖かく見守れ

221:デフォルトの名無しさん
25/12/21 13:25:50.09 i93tKLa3H.net
うちの近所にも蜂蜜餃子出す店ある

222:デフォルトの名無しさん
26/01/18 20:25:48.72 cNrycSn50.net
ユーザーからの入力によって配列のサイズを決定したいんですが
どうやったらいいんでしょう

223:はちみつ餃子
26/01/18 20:37:29.41 shr9m5Ho0.net
>>222
質問が分かりにくいのでどう書きたいのかコードで示して欲しい。
意図がわかればよいのでコンパイルエラーになるようなコードでもかまわない。

たぶん必要なのは malloc だと思う。

その他、配列の型としての大きさを実行時に変えられる場合は限定的だが VLA と呼ばれる言語機能がある。
ただ VLA は後の仕様改訂でオプショナルになったので使えない処理系もたぶんあるしエラーハンドリングに難があるので避けたほうがよいと思う。

224:デフォルトの名無しさん
26/01/19 07:16:34.46 2baaFdwH0.net
>>222
comp.lang.cのFAQは読んだんか? 配列についての昔々からあるお前がしたような質問と回答がそこに載ってんぞ
せっかく親切に>>1がリンクまで貼ってんだから>>1くらい読んでから質問しろよ お前どこ行ってもそんな風な振る舞いなのか?

225:デフォルトの名無しさん
26/01/19 08:38:27.02 oxkouUzo0.net
argcをどうやってatoiしたらよいか、なんて話題かもしれない

226:デフォルトの名無しさん
26/01/19 13:18:04.03 ElAwxz1hM.net
>>222
ユーザーが入力し得る最大サイズで確保しとけばええねん

227:デフォルトの名無しさん
26/01/19 16:59:35.05 Nrv8lzL10.net
ふつうテラバイトかな

228:デフォルトの名無しさん
26/01/19 23:48:18.42 Q5XPfczGa.net
>>222
とりあえず入門書を読み直せ

229:デフォルトの名無しさん
26/01/20 08:07:53.65 r1BK3Oap0.net
> Z世代「結局、俺等って最も賢くて不幸な世代じゃね?」2万いいね [237216734]
> URLリンク(hayabusa9.2ch.sc)
典型的Zムーブやん、もうちょっと生暖かい目で見るゆとりを持とうぜ

230:デフォルトの名無しさん
26/01/20 08:09:48.15 FJCIsj7T0.net
>>228
意味のないレスだよ

231:デフォルトの名無しさん
26/01/20 08:44:15.02 r1BK3Oap0.net
やや曖昧だったので補足しておくが、俺は>>228も正しいと思っているし、批判する気もない。
ついでに一言ずつ感想を述べると、

222: Z過ぎる…
223: "malloc"というキーワードすら知らなかったのだから、そんな高尚な話ではないのでは…
224: あー、昔はnewsで同様のことをやってたんだな、知らんかったわ。まあ読んだほうがいいね
225: エスパー能力は低そうだな
226: それもありよね、というか俺ならこれかな
227: アホだな
228: まあこれもそう。書いてあるだろうし、224のFAQにしても知らないことも多いだろうから、全部読むのが一番効率はいい(ただZは絶対に受け入れないが)
(229: 俺)
230: お前がもっとも意味ないよ、死ね

232:デフォルトの名無しさん
26/01/20 11:13:35.53 WJ24pe7D0.net
ちゃんと目が覚めてからどうぞ

233:デフォルトの名無しさん
26/01/20 14:30:10.34 npjGyppFM.net
苦しんで覚えろC言語

234:
26/01/20 15:24:25.25 IfOEwYMLa.net
NNTPってまだ使われてんの

235:デフォルトの名無しさん
26/01/22 01:03:37.74 xYaOafz30.net
シーは可変長配列実装する所からか

236:デフォルトの名無しさん
26/01/23 13:27:45.11 C2FK2sry0.net
C調実装に御用心

237:デフォルトの名無しさん
26/01/23 18:52:35.05 FYvErjxl0.net
たまにゃMakefile

238:デフォルトの名無しさん
26/01/26 08:27:35.76 f1AFhxpj0.net
>>231
226は一番ダメだろw
素人はいくらでも想像できない限界を超えてくるし
長大なデータを入力し終わってクラッシュした時の脱力感はやった人間ならわかるはずw

239:デフォルトの名無しさん
26/01/26 09:25:50.03 vduk8RxW0.net
翌日には忘れる未来志向

240:デフォルトの名無しさん
26/01/26 11:15:31.10 SIfTs9j80.net
>>238
中級レベルには意外だろうけど組み込みでは常套手段
ワーストケースを決めてリソースは固定で確保
実用的な上限設定すればいいだけ

241:デフォルトの名無しさん
26/01/26 11:37:39.49 ju5wkyqG0.net
Dィープsテートは人類の電子的支配をねらっている
URLリンク(www.youtube.com)

242:はちみつ餃子
26/01/26 11:55:43.44 259WEkSA0.net
クラッシュして良いわけではないが想定した固定長を越えたらエラーメッセージを出して直ちに終了するくらいの方針はありうる。
Worse is Better ってやつだ。

243:デフォルトの名無しさん
26/01/26 20:41:38.33 w7MHZcu50.net
中級者
超えないようにメモリを冗長化

上級者
デカいメモリを確保ANDユーザの入力次第でクラッシュ scanf指向

244:デフォルトの名無しさん
26/01/26 20:42:35.53 hiSxmE0Cp.net
全部固定長にしちまえばいいんだよ

245:デフォルトの名無しさん
26/01/27 01:16:10.76 rrlOBExea.net
sprintf, swprintf, _sprintf_l, _swprintf_l, __swprintf_l,
sprintf_s, _sprintf_s_l, _swprintf_s, _swprintf_s_l,
sscanf, _sscanf_l, swscanf, _swscanf_l,
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l,
さらに
vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l,
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l,
なんで vwfprintf じゃねえんだよ!って思う

246:デフォルトの名無しさん
26/01/30 14:54:48.55 KwjlwjWe0.net
強い相互作用が働いています

247:デフォルトの名無しさん
26/02/06 22:43:33.83 n8mgfVGM0.net
printf("%d\t%d", fahr, celsius);

の引数である、"%d\t%d"について質問です。

「\t」はタブ文字を表すということです。
viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。

"%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。

これはどういうことでしょうか?

248:デフォルトの名無しさん
26/02/06 23:23:03.82 oI+Czk490.net
> viなどのエディタではタブを入力すると4文字や8文字などの設定した幅だけ空白が挿入されます。

こういうのはエディタがキー入力されたタブ文字をタブ文字として出力せず、4文字、8文字の空白として出力(つまり変換)してる

> "%d\t%d"についても同じように4文字や8文字などの一定の幅の空白が整数と整数の間に挿入されるのかと思いましたが、動作が違うようです。
コンソールなどにそういう機能がない以上はタブ文字はタブ文字として出力されるだけ
もしタブを入力として受け取って、それを4文字や8文字などの空白にしたいなら自前でそういう処理を書かないといけない

249:はちみつ餃子
26/02/06 23:44:40.96 Qy2h/jss0.net
>>247
・タブという文字 (一文字) がある
・タブ文字の幅は一定ではない
・タブ文字は次のキリの良い桁までの幅を持つ
・キリの良い桁がいくつであるかはターミナルやエディタの設定によるが一般的に4か8
・つまりキリの良い桁が4に設定されている環境において、行の最初にあるタブの幅は4だし、三文字目にあれば幅は2になる
・設定によってインデントの大きさを一気に変えられて便利なのでかつてはタブでインデントするのが普通だった
・現代ではフォーマッタが総合的に面倒を見るのでインデントのためにタブを使う習慣は廃れた
・タブキーを押してもタブが入力されず空白を入れるようになっているエディタはそこそこある (設定で変えられることもある)

250:デフォルトの名無しさん
26/02/08 14:40:59.44 X17rBAzn0.net
そなたらはC99以降を使ってんのかどうしてんだ。
後からC++で使う可能性があるなら互換性を失ったCを使うかどうかは考えないといけない。
拡張子.cと.cppを共存できるプロジェクトファイルに対応の機械語ファイル作成のソフトとかあるんかな。
例えばVisual C++はどうなんや。

251:はちみつ餃子
26/02/08 15:05:00.39 vqX/dBJ10.net
>>250
主要なホスト環境 (OS) や処理系はかなり保守的な体制をとっていて MSVC, GCC, Clang といった主要な処理系は C89 をいまだに使えるし、 ABI に互換性がある範囲で C++ と共存できる。

特に MSVC (Visual C++) の C は「ANSI C89 にマイクロソフトに独自の拡張を付け加えたものである (その独自拡張が C99 の一部なこともある)」 と説明しているくらいの保守的姿勢をとってる。
その割に安全でない関数を使ったときなどの警告は厳しめなので寛容だがモダンなスタイルへの移行へ積極的でもあるという感じに見える。

252:デフォルトの名無しさん
26/02/08 16:36:16.54 X17rBAzn0.net
書き方がまずかったか。
機械語ファイル作成のソフトの具体例は、Microsoft Visual Studio(Visual C++)で、プロジェクトファイルの具体例はVisual Studioでは拡張子.vcxprojのファイルのことを言ってる。
互換性で問題にしてるのはC99以降で、C++98に対応のコンパイラなら、C90までのCで互換性の問題は普通に考えてあるとは思えない。
shortにintを代入で警告、ポインタ変数にキャスト無しでvoidポインタの代入でエラーくらいしか思いつかない。

253:はちみつ餃子
26/02/08 17:25:48.03 vqX/dBJ10.net
>>252
確認だが >>250 で言う「後から C++ で使う可能性がある」というのは「C++ とリンクする可能性がある」ではなく「C++ としてコンパイルしなおす可能性がある」という意味だったの?
「それだと .c と .cpp を共存できる」に繋がらなくて意味を読み取れないんやが。

254:デフォルトの名無しさん
26/02/08 17:55:08.39 X17rBAzn0.net
そうか、リンクという方法もあるわな。
でも言おうとしたのはC++としてソースを再利用してコンパイルのつもりで言った。

255:sage
26/02/08 17:57:41.82 X17rBAzn0.net
ただし、.cを単に.cppに変更してC++プログラムとして使うと互換性を失うので、1プロジェクトの中にCとC++を共存させてハイブリッドのコンパイルはできないものかと思ったわけだ。

256:はちみつ餃子
26/02/08 18:22:46.50 vqX/dBJ10.net
>>255
C と C++ をひとつのプロジェクトの中で共存させることはごく普通にできる。
あまりに当然のことすぎてそこが疑問なのだとは気づかなかったよ……
私自信は Visual C++ を使ってないから具体的な操作までは知らんけど。

257:sage
26/02/08 18:47:46.77 X17rBAzn0.net
そうだったか。
それなら最新のCを使うのもいいな。

258:はちみつ餃子
26/02/08 20:34:02.62 HUCbwVuC0.net
もともと C と C++ はつかず離れずを指向していたんだけど C が保守的すぎて乖離が大きくなっていったという事情がある。
C23 でその間を埋めるように大きめかつ非互換な改定が入って GCC ではすでに C23 がデフォルト (オプション指定しなければ C23 になる) なんだけど MSVC で使うのは時期尚早かもしれない。
処理系のデフォルトがおおよそ無難な選択だと思う。

259:デフォルトの名無しさん
26/02/08 20:40:55.28 X17rBAzn0.net
そなたらはC99~最新はどういう立ち位置でいる?
1.拒絶派
2.慎重派
3.条件によって二分する中立派
4.積極派
5.最新仕様を最大活用派

260:デフォルトの名無しさん
26/02/08 22:57:39.47 x9wGlHBM0.net
しょうもないキャラ作りすんな
答える気なくすわ

261:はちみつ餃子
26/02/09 08:41:59.71 oKB0cnr50.net
>>259
先述の繰り返しになるが処理系のデフォルトが無難と考えている。
開発のインフラを作っている人たちの判断を信頼する。
GCC が C23 で Clang が C17 だからそのくらいが現在の相場だってことだ。
その上で特にプロジェクトの事情があるなら配慮する。
結果的に新しい機能を使わずに済んで C99 としてもコンパイル可能であるようなものを書くことはあるかもしれないけど C99 の機能を使わないということは無いので C89 は論外になるな。

262:デフォルトの名無しさん
26/02/09 09:12:03.70 XZkkTiMB0.net
あなたもわたしもCCG

263:デフォルトの名無しさん
26/02/09 09:31:53.29 H1BUQ21N0.net
それはCGC

264:デフォルトの名無しさん
26/02/09 09:54:21.23 tiXp1BFN0.net
>>255
.c と .c++ を共存させたいときに
.c を .cpp に名前変えるのはあまりにも筋が悪いと思う
>>253>>256 さんの言う様に
.c と .c++ を普通に混在したままリンクする方が良い

265:デフォルトの名無しさん
26/02/11 05:13:35.33 QMIW0ukQd.net
          /::::)(:::)(:::::::::::)(::::::^::::::::::\
      (::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::\
     /::::::::::/ノ::::::::ノ::::::::ヽ:人::::::::::ヽ:::::::::::::::)
     (::::::::::/  ):::ノ::::ノ ) ソ ヾ::::::::::::丶::::ヽ
    (:::::::::/ 彡  ノ   ノ  :: 彡:/)) ::::::::::)
   (::::::::::/彡彡彡彡彡   ミミミミミミミ :::::::::::)
   ( :::::::// ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ |:::::::::)
     | =ロ   -=・=-  ‖ ‖ -=・=-   ロ===
     |:/ ‖    / /ノ  ヽ \     ‖ ヽ|ヽ       _________
     |/  ヽ`======/ .⌒ ` ========ノ.   ..| |     /
    .( 。 ・:・‘。c .(●  ●) ;”・u。*@・:、‘)ノ  /
   ( 。;・0”*・o; / :::::l l::: ::: \ :。・;%:・。o ) <  プロデジ フルスタックエンジニア 😤😤😤😤😤👎👎👎
    (; 8@ ・。:// ̄ ̄ ̄ ̄\:\.”・:。;・’0.)   \ 
   .\。・:%,: )::::|.  ̄ ̄ ̄ ̄  | ::::(: o`*:c /..    \_________
    \ ::: o :::::::::\____/  ::::::::::   /
      (ヽ  ヽ:::: _- ::::: ⌒:: :::::::: -_    ノ
       \丶\_::_:::::_:::: :::::_/::::  /
        | \ \ ::::::::::: :::::::::: ::: ::__/ |
    ̄ ̄\ 丶  ̄ ̄ ̄ ̄ ̄ ̄ ̄    / ̄ ̄

266:デフォルトの名無しさん
26/02/11 07:30:53.89 piVnUKvQ0.net
よっぽど頭にきちゃったんだね

267:デフォルトの名無しさん
26/02/11 11:14:21.39 yCllJHNQ0.net
一緒に仕事したくないな

268:デフォルトの名無しさん
26/02/11 19:27:16.74 dYVZoeHv0.net
Turbo C使いの俺には死角はなかった

269:デフォルトの名無しさん
26/02/11 23:31:50.87 yCllJHNQ0.net
懐かしい世界

270:デフォルトの名無しさん
26/02/13 13:25:36.67 5s43JTa6H.net
明日は晴れるかな
URLリンク(ideone.com)

271:デフォルトの名無しさん
26/02/15 13:50:59.15 OxykBfDr0.net
ポカポカな天気

272:デフォルトの名無しさん
26/03/06 19:24:36.21 xIu+t86J0.net
書き込みテスト

273:デフォルトの名無しさん
26/03/07 03:21:03.26 JBgvHmdsH.net
ioになったんか

274:デフォルトの名無しさん
26/03/07 19:54:35.18 eNOqReUM0.net
sys/io.h のこと?

275:デフォルトの名無しさん
26/03/14 17:54:55.59 yRZkyjul0.net
URLリンク(gigazine.net)
ホーア先生亡くなってしまったね.

276:デフォルトの名無しさん
26/03/14 18:23:17.33 SlICVWZ+0.net
「ソフトウェアを設計するには、2通りの方法がある。1つは、とてもシンプルに設計して、明らかに欠陥がないようにすること。もう1つは、とても複雑に設計して明らかな欠陥がないようにすることだ」

誰か説明して。前半はなんとなく分かるが。

277:デフォルトの名無しさん
26/03/14 18:40:43.80 1T7CwWYt0.net
説明も何もそのままじゃん

278:デフォルトの名無しさん
26/03/14 18:44:36.41 SlICVWZ+0.net
オラは凡人なので、複雑な設計と無欠陥を両立できません笑

279:デフォルトの名無しさん
26/03/14 19:14:48.11 6I30ZIkyM.net
「明らかじゃない欠陥」が噴出するのさ

280:デフォルトの名無しさん
26/03/14 19:16:59.74 yRZkyjul0.net
明らかな欠陥がないようにする,って書いてあるじゃん.

281:デフォルトの名無しさん
26/03/14 19:28:13.71 SshLSMzMM.net
>>280
俺に言ってるんだったら論理的思考力がプログラマレベルに達していないぞ

282:デフォルトの名無しさん
26/03/14 19:29:27.07 2GHal+1fp.net
潜在的な欠陥とか無い様に全ての条件で確認すんだよ

283:デフォルトの名無しさん
26/03/14 20:07:58.56 qtK1wVLwM.net
> 明らかに欠陥がないようにする
部屋には一切物を置かず、ごきぶりが居ないことは見れば分かる

> 明らかな欠陥がないようにする
部屋を複雑に設計しゴキブリが侵入する余地を与えない
出入りする者、物においてもしっかりとしたチェックを行いゴキブリを連れ込まない

284:デフォルトの名無しさん
26/03/14 21:02:23.33 SlICVWZ+0.net
複雑なロジック設計して、
他の人には一体何をするためなのか
意味不明なプログラムなら
書いたことはある笑

285:はちみつ餃子
26/03/14 21:04:32.37 NF0u1Pvr0.net
>>276
複雑なものを作るのに欠陥が無いようになんて出来ないことはわかるだろ。
だから残る選択肢はシンプルに作ることしかないんだ。
いわゆる反語、皮肉めいた言い方で茶化してるだけ。

286:デフォルトの名無しさん
26/03/14 21:28:16.72 Dj+Yn6DFd.net
おいおい大丈夫かよこのコテハン
ホーアを知らないで言ってんのか?
そーいうことじゃないよw

287:はちみつ餃子
26/03/14 22:10:03.40 NF0u1Pvr0.net
URLリンク(dic.nicovideo.jp)

288:デフォルトの名無しさん
26/03/15 08:26:57.66 jsbn2nWad.net
ガチもんの人かヤバw

289:デフォルトの名無しさん
26/03/15 08:43:28.35 jsbn2nWad.net
>>276
その書き方でもまあ分かるけど原文読んだ方がいいよ
明らか「に」欠点がないのと明らか「な」欠点がないは違う
包有関係考えれば分かるけど噛み砕いて言えば難しいバグがあるってこと
シンプルに作れば正しいかどうかは目で見て分かるが、複雑だとそれが出来ず正しいかどうか確かめたかったら例えば数学的に正しさを証明しないといけなくなったりする
複雑さは品質の証明にならないってこと、単純な設計をする困難さなんかを言ってる
もうちょい短くすれば要は複雑さは設計の失敗のサインだって意味の文章だよ

290:デフォルトの名無しさん
26/03/15 10:54:40.25 qaLJXPfya.net
IQは日本語読解力に比例するらしいが正しいと思える瞬間な

291:デフォルトの名無しさん
26/03/15 11:31:21.45 741O9PJi0.net
日本語読解力の問題なら、
プログラムの話題ではないな

292:デフォルトの名無しさん
26/03/15 19:45:05.72 DIIwvhyj0.net
>>290
ハーフリンガル問題の事だと思うが、勿論鶏と卵の関係であるにせよ、主たる因果関係は逆で、
IQ→国語力
だと思うがな。国語力→IQなら、文系馬鹿が最高に賢くなってしまうし。
だからって、最近のセンター試験の数学が国語化してるのは、関係各者の妥協の産物ではあるにせよ、間違いだと思うが。

>>291
プログラミングと言うよりは、エンジニアリング全般の話よね。
いわゆる「一方、ロシアは鉛筆を使った」でもあるし。

293:デフォルトの名無しさん
26/03/16 00:00:47.50 24jtw6uy0.net
C言語の話題でもないし、
これ以上続けるなら
プログラム設計のスレがふさわしいよ

294:デフォルトの名無しさん
26/03/16 07:15:07.08 2xB1GT0x0.net
>>293
賛成だがそういう場合はリンクを貼るべき
少なくともム板マ板のどちらにもない

295:デフォルトの名無しさん
26/03/16 09:26:08.22 LCnHyhYd0.net
このコテハンの人、規格の引用みたいな誰でもできる機械的なことやってるうちはいいけど
ちょっと自分の意見言い出すととたんにトンチンカンっつーかズレたこと言い始めるよねw

296:デフォルトの名無しさん
26/03/16 13:21:47.33 2xB1GT0x0.net
>>292訂正
✕ ハーフリンガル
○ セミリンガル

>>295
今回はお前の方が頓珍漢。

> 規格の引用みたいな誰でもできる機械的なこと
誰でも出来るわけではない。かなり詳しいのは確か。
文句があるならお前も参戦してどちらがより正確かを競うべき。(=ネットは衆人環視なのだから、衆人に役立つ方向に競え)
ゆとりZはすぐに人格ガーの方向に持っていくから、(=衆人にとってまるで役に立たないマウント取りに勤しむので)
SNS上で役に立つ議論が出来ず、彼ら世代だけでまともな議論場を確保できない。
だから老人ホームな5chに来ざるを得なくなってるのを反省し、行動を改めるべき。
ゆとりZだけの場所で5chと同じことが出来たら、彼らにとっても幸せだと思うんだけどね。
(ただし根っこはゆとりZの「自分のお気持ち>>>技術論《正しいかどうか》」な価値観だから本質的にかなり無理だが)

して、289が正しいと仮定して、それを276と二言で表現した場合、
それを285のように説明するのは間違いでもなく、不適切でもない。
276だけだと、「複雑な設計では明らかではない欠陥はあってもいいのか?」が曖昧でツッコミたくなるが、
289と276のこの点への解釈は揃ってるし。
というかこの辺で手こずるようなら、プログラミング以前に国語をやり直すべき。

297:デフォルトの名無しさん
26/03/16 18:53:32.05 fIEXpCafM.net
AI時代は国語力とか言うポストがバズったりしてるけど国語力って幅広すぎだよな
効率的なトークン生成スキルといったほうがいい

298:デフォルトの名無しさん
26/03/16 22:50:07.11 ciRQJB3O0.net
論理的思考ができるかどうか、プログラムでなく文章を書かせてみる、ようなことはよく言われるね

299:デフォルトの名無しさん
26/03/16 23:06:12.51 OpaIgQRr0.net
IT土方なら文章でわかるかもな

300:デフォルトの名無しさん
26/03/17 09:33:33.10 f405Oqv1d.net
292や296も変な文章に見えるけどなんかもうキリがないなw
誰か指摘してあげなよ

301:デフォルトの名無しさん
26/03/18 06:55:17.32 kfgCJpmw0.net
>>300
ゆとりZキチガイは5ch止めろ。

というかね、ゆとりZ的精神的勝利法なんて何度目だ?過ぎて。
こいつら本当に進歩せず、幼稚なままだ。
日本語が出来ないお前には読めないのだろうが、
俺の文章は普通の知能な日本人には確実に通じるレベルだし、多分お前よりもだいぶましでもある。

自分で詳細に論理的説明も出来ず、また日本語が拙い事がバレるので、自分では指摘出来ないんだろ。
出来るつもりなら書けばいいだけ。お前が書かないとお前が書ける事の証明にはならない。
そしてその書いた内容が妥当なら、お前に同調する連中も現れ、お前の望む方向に流れるだろうさ。
これが本来の自由な議論場の有り様。5chはずっとこうしてきた。
何も言えない奴に存在価値は無い。

本当に、ゆとりZは死ぬべきだよ。
5chもゆとりZが居なければ、もっといい場所になるのに。
(つってもこの文章も国語力無いゆとりZ連中には通じないのは分かってるが…)

302:デフォルトの名無しさん
26/03/18 06:56:17.23 kfgCJpmw0.net
まあ俺はこの手のメタ話は割と好きなので参戦してるが、
ついでにかねがねコミュ障だと感じてるお前らに対し、俺的流れの理解を説明しておくと、

ゆとりZ276: これ教えて
その他大勢: いやまんま過ぎて何が分からないのか分からん
(超絶豆腐メンタルなゆとりZにとっては285は十分に暴言であり攻撃だと受け止められた!!!)
ゆとりZ295: ムキー!!!285はぼくをこうげきしてきた!!!はんげきしてやる!!!トンチンカン!!!
俺296: いやお前の方が頓珍漢
ゆとりZ: 285をようごする296もきにいらない!!!こうげきしてやる!!!296もにほんごがおかしい!!!
(元々日本語の問題だと言われたので、
自分の日本語がおかしいのではなく、他人の日本語がおかしいとの他責思考により、
攻撃箇所が295での人格→300での日本語にシフトした)

303:デフォルトの名無しさん
26/03/18 06:56:50.22 kfgCJpmw0.net
まあよくある馬鹿狂犬ゆとりZだ。
一向に論理的フェーズに突入しない。多分今後ともそうだろう。
そもそも言葉とはコミュニケーションの「手段」であり、「目的」ではないので、
通じてるかどうかが最大に重要であって、正しい言葉を、或いは上手い下手も、通じる確率を上げる方策でしかない。
(逆に言えば、通じてれば何でもいい。相手の方言にも、また、誤用にも、場合によっては合わせてもいい)
それで、「目的」の、通じた後に何を得るつもりなのか?が、無いのもこの馬鹿狂犬タイプの特徴。
噛みつく事が目的化してる。いやそうじゃねえだろと。

ゆとリンガル問題、とでも命名しようか。

日本語が出来ず、論理的思考力もない、ゆとりZによって引き起こされる問題。(なおゆとりZの大半が該当する)
拗らせた承認欲求と他責思考により、ハイセンシティブピープーとなっており、過度に過敏で、やたらと攻撃されたと見なし、
反撃する事が目的化して、意味もない方向にどんどん流れていく。
仮に285の人格や俺の日本語に問題があったとしても、それが、当初の
> もう1つは、とても複雑に設計して明らかな欠陥がないようにすることだ
を理解する事には繋がりようがなく、掘り下げる意味がない。
この手の、「反論してきた人や内容に、微々であれ問題が存在したら、これまでの反論は全部無意味!!!」的な、
論点をどんどんすり替えていって、その途中でなんとか瑕疵を見いだし、俺負けてない!!!と強弁するのは、
典型的な詭弁論法で、名前も付いてたはず(忘れたけど)。ただまあ、ひろゆきがよくやってるのがこれだが。

304:デフォルトの名無しさん
26/03/18 06:57:20.98 kfgCJpmw0.net
議論は、常に原点を念頭に置き、目的を達成する事を目指すべき。
再度言うが、仮に285や俺に多大な問題があったとしても、元の疑問の解決には繋がらないだろ。
そもそも276で、

276: 後半部分が分かりません。○○と字面からは読めますが、私は□□だと思うので、矛盾します。私は私が間違ってるとも思えません(キリッ

とでも言えば、ゆとりZ的にも気に入らない流れにはならなかったはず。
この辺も、他責思考で、何でもかんでも他人のせいにしてるから上達しない。
いやお前だけの努力でも完全回避出来たよねと。

ただまあ、このタイプが過半数だから、ゆとりZな場所ではどうやってもまともな議論なんて出来る訳無いのは分かる。
しかし5chでゆとりZ全開は邪魔でしかないので、俺は撲滅するべきだと思ってる。
(だからこうして賛同者を募るべく一々書いてる)

さらについでに言っておくと、
「明らか『に』」「明らか『な』」の違いが読めない国語の問題だと捉えた大半の人に対し、
285だけは、日本語の問題はクリアしてて、その後の矛盾に見える点について回答をしてる。
つまり、285だけは質問者276のレベルが一つ上だと認識して回答してるわけで、
承認欲求拗らせて「ばかにするな!!!」と噛みつくにしても、相手を間違えてる。
自分を一番高く評価してくれた人に噛みついてどうするよ?逆だろと。
回答の口調がゆとりZ的には気に入らなかったのだろうけどもね。
この辺が、ゆとりZがまるで表面的な所しか見えておらず、コミュ障な所だね。

305:デフォルトの名無しさん
26/03/18 07:12:26.51 kfgCJpmw0.net
>>298
それも逆(十分条件)だからフィルタにしかならん(でもやらないよりましだが)
論理的思考が出来ない→論理的文章を書ける訳がない
論理的思考は出来るが論理的文章を書けない=ただのコミュ障 276も多分こっち

本来は論理能力は数学/物理で鍛えられるので、
昔の「最低限理系にプログラミングさせる」方針は概ね間違っていなかったが、
受験産業の結果、記憶力『だけ』で突破する受験特化型馬鹿が結構増えたのと、
そもそもプログラミング自体に数学/物理そのものは必要ないので、
「理系→プログラミング適正あり」のフィルタは迷走気味
とはいえ、「論理的文章を書ける→プログラミング適正あり」フィルタは、さらに酷いと思うけど

306:デフォルトの名無しさん
26/03/18 08:40:59.80 rmXkchhG0.net
すげー、このスレで一番論理的思考ができる人じゃん

307:デフォルトの名無しさん
26/03/18 10:16:34.98 TZQeXjH7H.net
3行でまとめろ

308:デフォルトの名無しさん
26/03/18 11:15:14.34 TdcdOneP0.net
昔は1行で書いてたな
プログラムの話だが

309:デフォルトの名無しさん
26/03/18 13:47:40.37 kfgCJpmw0.net
>>307
俺ら世代での「BrokenEnglish」問題が、ゆとりZでは「Broken日本語」問題になった
で、俺は同様に、Brokenでもしゃべった方がマシ、と言ってる
そして、よりによって、一番高く評価してくれた人に噛み付くのは馬鹿すぎ

と、ふと思ったが、もしかしてお前ら、
上記の一行目だけで全てが瓦解し、一瞬で、長文内容と同程度の詳細度で理解可能だったか?
だとすると、俺がお前らを過小評価し過ぎてた事になる
もしお前らの大半が「一行目だけ」で付いてこれるなら、この議論速度で突っ走ってみても良い
(勿論この場合は、通じない馬鹿は全員放置で追加説明もしない)

310:デフォルトの名無しさん
26/03/18 13:52:10.82 kfgCJpmw0.net
ちな、>>305訂正
× 十分条件
○ 必要条件
受験は大昔過ぎて素で間違えたわ
まあ、都合よく補完すれば読める範囲ではあるが

311:デフォルトの名無しさん
26/03/18 15:09:21.83 vVWG3GDF0.net
地下室の手記

312:デフォルトの名無しさん
26/03/18 15:31:18.79 yN1oNisL0.net
292は比例の話をなぜか因果関係の話にしてんのがおかしいね
AがBに比例してるってことから言えるのはBもAに比例してるってことだけで因果関係がどうたらとか何も関係ない
数学的にはY=kXの時にX=(1/k)Yだから逆が言えるのはkが0じゃない時だけとかあんだろうがまあここでは関係ないわな
1行目からおかしいからその後も妙なことを長々言い続けるはめになってる

313:デフォルトの名無しさん
26/03/18 15:35:53.95 yN1oNisL0.net
296はなんで「今回は」なんて付けたんだろうなw
そんなものつけなくてもいいどころか、後段を見れば付けない方がいいのにこういうのがついてしまう
なんのかんの言ってもコテハンの事を普段どう思ってたのかがつい出ちゃってるのか、それとも自分の思ってることを言語化する能力が低いのか
どっちにしても奇妙な文章だよ

314:デフォルトの名無しさん
26/03/19 12:39:01.05 O0X2x0/da.net
シフトJIS混じりの文字列を扱うには、charと unsigned charのどちらが良いですか?

315:デフォルトの名無しさん
26/03/19 12:48:14.25 Qz08DmPxp.net
UTF16に固定しちまえ

316:デフォルトの名無しさん
26/03/19 13:49:57.46 5jXM7mMO0.net
>>314
signedの方が良いことって何かあるかね?

317:デフォルトの名無しさん
26/03/19 14:45:49.05 4hgHJHDE0.net
>>312
正解w

318:はちみつ餃子
26/03/19 15:05:35.71 gt0RjN3b0.net
念のために補足しておくと、 char は signed char とは違う型として区別される。

319:デフォルトの名無しさん
26/03/19 16:01:35.62 5HS3fMU40.net
unsignedだと比較がしやすいことはないですか?

320:デフォルトの名無しさん
26/03/19 16:02:41.07 SacMtX4aa.net
charの符号の有無は未定義?のようですね

321:はちみつ餃子
26/03/19 17:22:48.95 UR+Iiml10.net
>>320
処理系定義ってやつ。
未規定の一種だが、処理系定義は処理系で決めてそれをドキュメントに書いておくことが求められる。

322:はちみつ餃子
26/03/19 17:50:04.82 UR+Iiml10.net
Shift_JIS を含む文字列を使うにはたぶん unsigned char が好ましいことが多いと思う。
ただ、有効型に関するルールとして整数型をそれの符号付・符号無としてアクセスするのは許されるという特別扱いがある。
(読み替えは型変換とは異なるので注意。)
つまり必要に応じて同じ文字配列に対して char[] としてアクセスしても unsgined char[] としてアクセスしても構わないので必ずしも最初から決める必要はない。
一貫したほうが分かり易いとは思うんだけど strcpy とかの文字列系の基本的な関数は char で扱ってたりするから……

323:デフォルトの名無しさん
26/03/19 21:35:14.78 J1XY71+k0.net
>>322
>有効型に関するルールとして整数型をそれの符号付・符号無としてアクセスするのは許されるという特別扱いがある。
>(読み替えは型変換とは異なるので注意。)
規格の何処?

324:はちみつ餃子
26/03/19 21:49:47.46 UR+Iiml10.net
>>323
C99 なら 6.5

> An object shall have its stored value accessed only by an lvalue expression that has one of the following types:
> (オブジェクトに格納された値に対するアクセスは,次のうちのいずれか一つの型をもつ左辺値によらなければならない)
> --------------------(中略)--------------------
> — type that is the signed or unsigned type corresponding to the effective type of the object
> (− オブジェクトの有効型に対応する符号付き型又は符号無し型)

※ 括弧内の日本語は JIS から対応箇所を抜粋

325:323
26/03/20 08:18:02.12 dVsV0hme0.net
>>324
丁寧に ありがとう

326:デフォルトの名無しさん
26/03/20 12:19:30.51 b6NhfI2V0.net
算術的に扱わないなら符号はないほうがよいというのが僕の考えで
今回はじめて知ったことですが、charの符号の有無は処理系定義というところが話を曖昧にしてるのですかね
算術的に扱わない場合の文字に符号があることにも違和感があるし、wchar_tもunsigned shortだったので、unsigned charでいくことにします

327:デフォルトの名無しさん
26/03/20 12:24:26.97 b6NhfI2V0.net
wchar_tを使っているわけではないです
文字を符号なしと扱うことを参考にするという意味です

328:デフォルトの名無しさん
26/03/20 13:06:16.51 iXoBkJ/YH.net
>strcpy とかの文字列系の基本的な関数は char で扱ってたりする
符号の有無が原因だったかどうか記憶が曖昧だけど
警告が出まくってうざいときがある気がする

329:はちみつ餃子
26/03/20 13:14:18.39 YhTPujH10.net
実行基本文字集合の要素は char に格納したときに非負で扱えることを言語の規格として保証してるから扱う文字がその範囲内なら char が符号付きかどうかに関係なく負数は出てこない。
逆に言えば負数になったら面倒くさいことがわかってるからこういう規格になってるんだと思う。

330:デフォルトの名無しさん
26/03/20 17:08:48.36 NagjbLQ80.net
ただしASCIIに限る

331:はちみつ餃子
26/03/20 17:14:10.19 9jqfZseO0.net
C の規格の上では「実行基本文字集合」として文字を提示しているがその文字集合がどのような文字コードで表現されるかは既定しない。
ASCII (またはそれと互換?) は保証されない。

もしもたとえば EBCDIC を採用しているような環境なら char は必然的に符号無しになるね。

332:デフォルトの名無しさん
26/03/20 23:20:08.53 T171bv6P0.net
>>326
マヌケ

333:デフォルトの名無しさん
26/03/21 00:45:37.51 Tywu3RMI0.net
符号なしの罠を知ってるかはcの実力を測る試金石ではあるよな

334:デフォルトの名無しさん
26/03/21 10:45:44.25 CPZyPnYr0.net
マ抜いてみたが1字しか変わらん。
$ diff 326.txt <(sed 's/ま//g' 326.txt)
7c7
< 算術的に扱わない場合の文字に符号があることにも違和感があるし、wchar_tもunsigned shortだったので、unsigned charでいくことにします
---
> 算術的に扱わない場合の文字に符号があることにも違和感があるし、wchar_tもunsigned shortだったので、unsigned charでいくことにしす

335:デフォルトの名無しさん
26/03/21 21:54:40.15 J3vuIWx/0.net
文字種で集計するときに、算術的な処理できて便利です。

336:デフォルトの名無しさん
26/03/21 23:11:33.45 tYP/a5awa.net
>>90
そりゃ、算術的に扱う場合も、ロジカルに扱う場合もあるでしょう

337:デフォルトの名無しさん
26/03/21 23:13:50.06 tYP/a5awa.net
壮大にアンカミスったけど、直前のレスに対してでした

338:デフォルトの名無しさん
26/03/21 23:15:05.79 tYP/a5awa.net
>>335 も僕に対する煽りではないかもね
失礼しました、ごめんなさい

339:デフォルトの名無しさん
26/03/22 17:59:49.49 2hKizJjM0.net
基本的に文字列を扱うならcharを使え

340:デフォルトの名無しさん
26/03/22 18:26:26.84 3tG0rWHEa.net
tell me why

341:デフォルトの名無しさん
26/03/22 19:08:06.37 M3MXuE5D0.net
輝美 (てるみ) にテルミー

342:デフォルトの名無しさん
26/03/22 19:32:45.81 3tG0rWHEa.net
そこは照美

343:デフォルトの名無しさん
26/03/22 21:43:43.51 2hKizJjM0.net
標準ライブラリが引数をchar *で受けるのも規格のcharの扱いに曖昧さがあるのも同じ理由に因ってる
特に規格の方はこうすることでコンパイラの作者とユーザーの双方に利が出るよう意図的にこうしてる
わざとはっきりさせないようにするのはCの規格によくある「味を残してる部分」なんだから、お前は何も考えずcharを使え

344:はちみつ餃子
26/03/22 22:46:32.72 VeLWozt10.net
char が符号付きかどうかが処理系定義なのはアーキテクチャの都合に合わせられるようにするためだ。
(規格制定時にすでにどちらの処理系も存在したので追認したという消極的な理由もある。)
この場合はアーキテクチャに都合が悪いからといってやるべきことが変わるわけではないのだから曖昧なほうが良いなどという論に説得力は感じないな。

C11 で u8 プレフィクスを付けたとき (文字列を UTF-8 とするとき) に char で扱うルールにしたのは失敗だったと認めて C23 から char8_t 型を導入することになった経緯もある。
互換性を大事にする C で非互換な変更をするくらいには文字が負数になるのはろくでもないミスの元だとはっきりしてる。

345:デフォルトの名無しさん
26/03/23 13:08:14.92 wdN2pFMo0.net
strcmpの実装をみると、引数はconst char *で比較はconst char *でとするのが大概ですね

346:デフォルトの名無しさん
26/03/23 13:08:59.68 Y2m4p/F8a.net
大概というか、いくつかみた中では漏れなく

347:デフォルトの名無しさん
26/03/23 13:25:26.49 0ed5u03ca.net
>>345
比較はconst unsigned char *で、の間違いでした^_^;

348:デフォルトの名無しさん
26/03/23 13:32:20.67 DGwKTx8fp.net
Cで文字列操作なんかバグの温床になるだけだから開発言語変えるか仕様変えろw

349:デフォルトの名無しさん
26/03/23 14:45:03.99 5CbFmxEa0.net
おすすめの言語は何ですか?

350:はちみつ餃子
26/03/23 14:59:14.86 kZjJats90.net
Rust

351:はちみつ餃子
26/03/23 17:13:12.62 kZjJats90.net
>>347
それはそう。
比較関数では各文字は unsigned char として比較すると規格上明記されている。

352:デフォルトの名無しさん
26/03/23 18:00:32.09 FDDLemSHa.net
規格書まで紐解かないとではなぁ…
MSのページだと、strcmpとマルチバイト用の_mbscmpが併記してあって、後者の引数は const unsigned char * なのも紛らわしい
後者はMS拡張だからそうできるのだろうけど

353:デフォルトの名無しさん
26/03/23 18:07:37.20 FDDLemSHa.net
_mbscmpのシグニチャは最初の問いの答えだな…

354:はちみつ餃子
26/03/23 21:13:53.55 nKsWqljT0.net
文字列リテラルを char の配列であることにした以上は標準の関数の型をそれと合わせるという判断は自然なものだと思うよ。
全体として見ると変な感じだけど個々に見ると妥当な (少なくとも仕方ない) ように見える。

355:デフォルトの名無しさん
26/03/30 13:23:23.63 ayfEzzLua.net
K&Rを引っ張り出して読んでみたけど、たしかにcharの符号の有無は機種によるとあり、比較の関数では、引数はunsigned char *の配列として扱われる、とありますね
一度は目を通したはずですが、すっかり忘れていました
というか、初学者のころにはその意味がよく理解できていなかったのだと思います

356:デフォルトの名無しさん
26/03/30 14:55:10.23 ocsV6cqQ0.net
C23attributeの話このスレで見たことないんだけどみんな使ってます?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch