C言語なら俺に聞け 143

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b375-rVGZ)
垢版 |
2017/10/27(金) 21:28:08.20ID:pAogLeJi0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.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言語なら俺に聞け 142
http://mevius.2ch.net/test/read.cgi/tech/1502364083/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/12/03(日) 00:12:42.31ID:lZQcP+Ql0
>>660
論理思考、最強!みたいな勢いだけれども、
その論理思考の中身というのが常識を外れているような気がする

命題A: 「1 + 1 = 3」 ならば「2 * 3 = 6」である

とするとき、命題Aは正しいか間違っているか、また、その理由は?
2017/12/03(日) 00:14:06.99ID:lZQcP+Ql0
>>661
プログラミングは証明に似ているのには理解が及びますね。
ただ、普通の証明よりもずいぶんと細かいことに気をくばらないといけない気がします。

「型」を数学であつかっている例はありますか?
664デフォルトの名無しさん (ブーイモ MM0a-cp23)
垢版 |
2017/12/03(日) 00:39:39.44ID:oCGWkppTM
>>646
マーチ文系の俺は現場に入るまで3週間
足引っ張らない程度になるまで3か月
無双するまで1年だったかな

3年たった今では Golomb 符号とたわむれてる
2017/12/03(日) 01:38:00.88ID:iOWX59aS0
>>663
証明問題じゃねえよ。つかおまえも数学出来なかった口だろ。

数U数Vはほぼパターン通りだけど、
数Tの難しい問題はたいがい「エレガントな解法」ってのがあって、裏技みたいに簡単に解けたりするんだよ。
それはそれこそ東大の過去問とか見てみればいい。
或いは三平方の定理とかでも何通りも証明方法があって、おおっ、てのもあったりするだろ。
(ただ、この話が通じない時点で説明しても無理なのは確定だが…)

実際のプログラミングもこれと同じで、データ構造を正しく整理すれば制御構造もものすごく単純に出来たりするんだよ。
だから数学的な「エレガントさ」を追求するのが好きじゃないと向いてない。(というか上達しない)
そして「型」なんてのはノートに引いてある罫線みたいなもので、プログラミングの本質とは全く関係ない。
ただし型自体は圏論だっけ?Haskellの連中がやってたはずだけど。詳しくは知らんが。
2017/12/03(日) 01:39:55.00ID:iOWX59aS0
で、QZ、君は色々文句言われてたりしてるのを見たことがあるが、俺自身は知らんからそれはどうでもいい。
ただC++のスレで「色々忘れてしまうんで…」とか言い訳してたろ。
(別段それについて責めるわけではないが)それは覚え方が悪いんだよ。
例えば高校の物理、
・ma=Fとsin/cosだけ覚えて後は組み合わせるだけだが、 // (A)
・「垂直にぶら下げたケース」「斜面においたケース」「バネがくっついたケース」とか、// (B)
別々に覚えたがる奴はいるんだよ。それで、(A)が抽象思考(分類)できる奴、(B)が出来ない奴、となるんだよ。
そして、プログラミングで必要なのは(A)で、(B)は死ね、でしかないんだよ。
で、多分君は(B)派なんだよ。だから「忘れる」とかいうことになる。
(A)だったら忘れるも何もない。どの言語でも同じものを使っていて、
それを「ひらがな」「カタカナ」「英語」のどれで書くか、でしかないから。
2017/12/03(日) 01:40:39.01ID:iOWX59aS0
ただ自分が(A)なのか(B)なのかは簡単に分かるとして、(高校の物理に最初からついて行ければA、無理ならB)
これは思考の癖だから、簡単には直せないんだよ。だから向き不向きはかなりある。
単純に言えば、脳内のCPU/ストレージのコストによる。
いちいち圧縮/展開してでもストレージをケチりたい=CPUの速さに対して記憶が得意ではない場合は(A)、
いちいち展開するくらいならベタでストレージした方が楽=CPUのコストに対して記憶コストが安い場合は(B)になる。
そしてこれは無意識領域で作用するから、簡単には変えられない。
(A)の連中は最初から抽象思考する、というより抽象思考ベースだから、プログラミングにはフィットするけど、
例えば高校の歴史、「○○年に何がありました」という単発事象を別々に暗記するのには全く向かない。
逆に(B)の連中にはこれが向いているが、抽象思考するためにはいちいち「意識的に」圧縮/展開する必要があり、
ネイティブ(A)の連中にプログラミングでは太刀打ちできない。
それでも(B)の連中が得意な「記憶」でプログラミングに対処しようとした結果が「デザインパターン」だ。
だから(B)の連中はデザインパターンにすがるし、新しいパターンをどんどん登録しようとする。それが上達への道だから。
(A)の連中は最初から「デザインパターン?何それ?おいしいの?」だし、「名前つけただけだろ」程度でしかないんだよ。
で、QZ、君はデザインパターンにすがってるタイプだとC++スレで言ってたろ。
ここでも(B)だと分かるんだよ。

で、俺は、(B)の連中はわざわざプログラミングする意味無いと思ってるんだよね。向いてないから。
多分、その記憶コストの安さを生かした、何か別のことをすべきだよ。
パターン暗記で対応することも出来るけど、それだとコピペプログラマ程度にしかどうせなれないし。
2017/12/03(日) 01:45:09.46ID:jbLAlLAh0
Haskellは非常にエレガントだからな
プログラマーたるもの一度はCとHaskellに触れるべきだ
願わくばHaskellのエレガントさとCの自由さを合わせ持つ神話的な言語が生まれて欲しいものよ
669648 (ワッチョイ 3dab-bpph)
垢版 |
2017/12/03(日) 02:20:16.93ID:WgKYUm0V0
回答ありがとうございます

プログラマになりたいのは、単純に稼ぎたいからです
んで色んな言語の基礎というか素地になってるのがCみたいだから
まずはCをと、今いろいろ入門書を読んでるところです
難しいけど楽しくて仕方ない感じなのですが
大学は駅弁経済(だいたいmarchクラス)で数学無しで入ったので
今更ながら後悔してます(高校で挫折したクチ)
ココ見てるとやっぱりこの世界はすごく論理とセンスがモノを言うんだな、と
ちょっとビビってます
Cより楽な言語に移ろうかとも思案中ですが、
もう少し基礎を固めてからにしようと思ってます
また覗きに来ますねw
2017/12/03(日) 09:53:05.36ID:vu2gdtZs0
稼ぎたいからプログラマって、何か凄い誤解してるような
金融行っとけ
マスコミは今後怪しい

数学無しの経済ってアリなの??
671デフォルトの名無しさん (ブーイモ MM81-cp23)
垢版 |
2017/12/03(日) 10:07:03.35ID:hFnkXtgpM
>>669
ソフトウェアで稼ぎたいならcはないかな
javascript と python を頑張った方が良いかと
2017/12/03(日) 10:22:33.67ID:aT6rnkdd0
ここら辺の高校数学とか延々述べてる回答者たちは荒らしなの?
2017/12/03(日) 10:48:11.97ID:iOWX59aS0
>>669
> 難しいけど楽しくて仕方ない感じなのですが
これなら当面は問題ない。駅弁なら時頭も問題ないだろう。

> ココ見てるとやっぱりこの世界はすごく論理とセンスがモノを言うんだな、と
残念ながらそうでもない。
というか、(どの仕事でも同じだが)結局、仕事の9割以上は「与えられた分担をきっちりこなすこと」であって、
それは「パターン暗記」でほぼ何とかなってしまう。ここが逆に不幸なところで、
彼らもまた「仕事が出来る」うちに入ってしまい、彼ら流、つまり「パターン暗記」流を推奨してきたりする。
(C++のスレでだいぶ言ったが、俺はJavaはもうそっちに行っちまって戻れないと見ているから、Javaは俺は勧めない)
逆に、仮にセンスがあったとしても、仕事の1割以下でしかそれを発揮する機会がなく、埋没してしまう。

ここら辺を突破しようとしたのがGoogleの20%ルールだったわけだ。
> Googleにおいて、従業員は「勤務時間の20%を他のプロジェクトに費やしても良い」のではない。
> 「費やさなければならない」のだ。これは人事評価の対象にもなり、
> 従業員はその20%の時間を使って「本業以外の何か」を生み出すことを期待されている。
> https://innova-jp.com/google-20-rule/
「パターン暗記」では未来には対応できない。センスがない奴は、何をやっていいかすら分からない。
とはいえ、実際はこれを隠れ蓑に遊ぶ連中も多くて、って話だったが。
(少なくとも「パターン暗記」するタイプのまじめ人間からはそう見えた)
実際にそれが無駄だったかどうかは分からん。
https://www.countand1.com/2016/07/google-20-percent-time-implication-for-making-failure-be-good-learning.html
結局世の中OSSに完全にシフトしつつあるのも、
OSS側でセンスがある連中がつるんで好き勝手やるのにプロプライエタリでは全く太刀打ちできないからであってね。

ただし、公務員的にITで働きたいのならJavaだろう。向こう20年仕事はあるだろうし、あまり変化もない。
それ以前に、稼ぎたいのなら金融、ってのは当たっているが。
(なお金融関係のプログラマならPythonと聞いているが、多分これは日本国内の話ではない、
というか、日本国内に「金融関係のプログラマ」がそもそも居ないと思う)
2017/12/03(日) 11:01:56.64ID:/SSODGhG0
金融関係ってCOBOLじゃ?
2017/12/03(日) 11:10:41.68ID:iOWX59aS0
>>674
いや、俺が言っているのはそっちじゃない。

インフラは COBOL -> Java の移行中だ。君はこの意味で言っている。
俺が言っているのは以下で、
https://jp.stanby.com/media/programming_ranking2017/
Pythonの右端の連中は金融関係だ、と聞いている。
具体的には、デリバティブとかアービトラージとか、そっち系。

Cはお察し、として、Javaの右端の連中は何だろう?
2017/12/03(日) 13:10:56.56ID:lZQcP+Ql0
>>665
>証明問題じゃねえよ。つかおまえも数学出来なかった口だろ。

数学の本道は証明問題にあるとおもっていますが
数学の本をみればわかりますが、定義、命題、証明をひたむきにくりかえしていますよ。
https://ja.wikisource.org/wiki/%E5%88%9D%E7%AD%89%E6%95%B4%E6%95%B0%E8%AB%96%E8%AC%9B%E7%BE%A9

>>655
>三平方の定理とかでも何通りも証明方法があって、おおっ、てのもあったりするだろ。
でしょう、証明問題こそプログラミングに似ていると思っています。

>「色々忘れてしまうんで…」
そして、証明をいちいち覚えるんじゃない、その都度再構成できるように努めています。
といって、数学の本はときどき「証明は読者にまかせる」とくるのですが、それはちょっと困ります
677デフォルトの名無しさん (ワッチョイ f1c8-wAwf)
垢版 |
2017/12/03(日) 17:34:04.07ID:TNI+LIU50
>>662
それ、問題がおかしいよね?
2017/12/03(日) 17:56:37.40ID:lZQcP+Ql0
>>677
おかしくないですよ、論理学的には。
「論理思考の中身というのが常識を外れている」の一例です。
679デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/03(日) 18:31:45.86ID:Gq7SJlPXa
>>662
"1"という数字は数値に直すと1.5であり、その他の数字は通常と同じであるとする。

という一文が手前に挿入されるとその後の計算は正しくなる。
2017/12/03(日) 18:36:17.94ID:iOWX59aS0
>>676
君が「証明問題」に限定しようとしているのはなぜだ?
証明問題以外でも、俺はプログラミングと数学は雰囲気やノリが酷似していると思うが。

>>669
あと、職業として選ぶのなら、当たり前だが、君に特に抜きん出た才能がなければ、
・君が半年で出来るようになったことは、普通の新人も半年で出来るようになること
・君が半年かかったことも、センスのある新人なら1-3ヶ月で習熟してしまう可能性もあること
を考えておかないといけない。
威張り散らす必要はないけど、あの人イマイチだよねって言われ続けるのも辛いでしょ。
適性がないところを職業にするのは悲惨だと思うぞ。自分の適性はよく見極めた方がいい。
逆に、君にセンスがあり、
・普通の人なら半年かかるところを3ヶ月で会得
なら、やっているうちにどんどん差が勝手についてしまうわけでね。
2017/12/03(日) 18:46:19.12ID:lZQcP+Ql0
>>680
まあ数学とプログラムとでは、双方に互いに似たような思考方法を行う、という意味では大枠同意します
特に「証明」に拘っているわけではないのですが、拘ってしまいました…忘れてください…
682デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/03(日) 19:04:33.85ID:Gq7SJlPXa
てか、プログラミングは数学の範疇に入らないか?
計算機に実行させる計算手順書だし。
2017/12/03(日) 19:21:36.44ID:VV4Obou10
演劇の台本や楽譜と同じかも
2017/12/03(日) 19:24:20.13ID:cNDBFknwd
プログラムと呼ぶね。
2017/12/03(日) 19:37:50.46ID:iOWX59aS0
>>682
個人的にはComputer=計算機ってのはかなり違和感があるんだよね。
プログラミングって、むしろシーケンサだろ。(処理手続きをひたすら記述する)

数学に似てるのは、結局、チューリングマシンからきてるのだと思う。
もちろん「このプログラミング言語はチューリング完全です」なんてやってるのは数学者であって。

これとは逆に、ニューラルネットワークなんて、正直、まともに証明すらされてないだろ。
なんだか分からないけどうまくいきます、程度であって、
ニューラルネットワークがチューリング完全なのかどうか、誰も証明して無いと思うし、(俺の知る限り)
それ以前に、プログラミングなんて出来る状態じゃない。
今も機械学習で係数を探している程度、つまりトライアンドエラーしか出来ていないわけであってさ。

だから、将来的にニューラルネットワーク等、チューリングマシン以外をプログラミングできるようになれば、
数学じゃないプログラミング手法が見つかる可能性はあると思う。
実際、機械学習自体は物理/数学の教え方(理論を教えてそれを適用)ではなく、
語学の教え方(習うより慣れろで、ひたすら知識(結果)を積み上げる)に近いし。
2017/12/03(日) 19:49:02.04ID:mBtOatwk0
ところで、人工知能のバグ取りってどうやんの?
それともダメな子だから抹殺しちゃうの?
2017/12/03(日) 19:55:52.62ID:Tj0BwQTkd
人格と知識は分離可能になるだろう。人格モジュールを切り替えたり、アップデートするんだろう。
2017/12/03(日) 19:56:57.90ID:P+US4smox
>>686
中共ならね。
2017/12/03(日) 19:59:03.71ID:Tj0BwQTkd
自分自身が間違っていると判定されたら(サニティチェック)、「人格を初期化または取り換えて下さい」と表示される。
690デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/03(日) 19:59:37.86ID:Gq7SJlPXa
>>683
あー。楽譜ね。そうだね。
2017/12/03(日) 20:28:07.15ID:ygxXPxE/0
何この流れ
2017/12/03(日) 23:11:24.01ID:/SSODGhG0
>>685
シーケンサってコンピュータの一種じゃ…?
というか計算しないで手続きだけひたすら書くのって
わりと特殊な方じゃないかな
2017/12/03(日) 23:16:12.49ID:HfDj5Ysw0
シーケンサー(通称PC)はアセンブラもあったりするけど
基本デノイマンだよ。
2017/12/04(月) 01:19:52.82ID:WOZLf3PZ0
>>692
それはCに階層記述能力が欠けているからだ。

例えばNode(JavaScript)のコーディングルールでは、関数は15行以下にしろとなっている。
> Write small functions
> Keep your functions short. A good function fits on a slide that the people in the last row of a big room can comfortably read.
> So don't count on them having perfect vision and limit yourself to ~15 lines of code per function.
> https://github.com/felixge/node-style-guide#functions-1
やれば分かるが、15行で書く為には、中位記述と下位記述を明確に分け、下位記述は全て関数で括り出すことになる。
このとき、中位記述の関数はベタに手続きだけひたすら書くことになる。
俺も最初は戸惑ったが、実際、この方が読みやすいし、自己ドキュメント化する。

ただしCだとこれはちと辛い。
JavaScriptだとそもそも下位記述がほぼ無く、大体何かしらのメソッドを呼んで終わるし、
階層を自由に作成できるし、プロトタイプ宣言も必要ないし、デフォでクロージャだから外変数を自由に掴める。(引数にする必要がない)
Cだと関数内関数が出来ないし、プロトタイプ宣言も必要だし、全部引数で渡さないといけないし、
GCも無いから宣言スタイルでも書きにくい。また、関数呼び出しも無駄ならケチる文化もある。

最大15行なら、実際は5-10行の関数が氾濫することになるのだが、Cでこれをやるとよけいに読みにくくなる。
だから、Cでは珍しいだろうけど、JavaScript等手抜き系スクリプト言語だったら割と普通だったりするはずだよ。
695デフォルトの名無しさん (ワッチョイ a66e-hJGX)
垢版 |
2017/12/04(月) 05:34:47.44ID:k2OIwnad0
ただ単にCが嫌いなだけだね
2017/12/04(月) 06:16:54.02ID:+uAdunIC0
Cはクラスがないせいで戻り値が使い物にならん
中でMallocして返すとすぐメモリリークする

文字列や配列を扱う関数は
第一引数と第二引数に結果格納用の配列と最大長を渡すというまだるっこしい作業をせんといかん
Cで言語を学ぶと悪いコーディングの癖がついてしまう
697デフォルトの名無しさん (ワッチョイ a66e-hJGX)
垢版 |
2017/12/04(月) 06:36:05.53ID:k2OIwnad0
>>696
こちらへどうぞ
https://mevius.5ch.net/test/read.cgi/tech/1427572389/
2017/12/04(月) 19:47:02.53ID:+uAdunIC0
そんなにばかなことをいっただろうか
699デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/04(月) 19:55:28.93ID:vegQ3dVaa
馬鹿っぽさ満載
2017/12/04(月) 20:03:09.02ID:8HzNB2U5p
オブジェクトへのポインタを1つ追加するだけでリエントラントな作りになるだろうに。
701デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/04(月) 20:15:20.01ID:vegQ3dVaa
構造体へのポインタでも使ってくれ
2017/12/04(月) 20:20:54.93ID:ESsPBxjD0
>>696
それがいい習慣というものです、配列(の先頭)と文字列長をセットで扱うのは基本中の基本です
win32api をみればわかりますが、一度目には自分が用意しなければならない領域の大きさについてお伺いをたててから、
二度目にやっと目的の情報を手に入れる、これは C ではセットですね

c++ で文字列型のような便利なアイテムを使っていたために、だんだん馬鹿になってきていたことに、最近ようやく気がつきました:−)
2017/12/04(月) 20:28:21.15ID:jfjVyC4z0
バッファの大きさを受けて範囲内で書き込む sprintf じゃなくて
sprintf のフォーマット処理した結果、こんだけの大きさが欲しいって答える関数はないのかな
2017/12/04(月) 20:33:29.89ID:ESsPBxjD0
>>703
そうそう、それほしいですね
705デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/04(月) 20:43:45.92ID:vegQ3dVaa
>>703
snprintf
2017/12/04(月) 20:49:24.61ID:ESsPBxjD0
>>705
snprintf() は >>703 の希望をかなえてはくれないのでは?
2017/12/04(月) 20:50:25.96ID:jfjVyC4z0
>>705
snprintf は 渡した大きさで打ち切ることはするけど、完全に必要なサイズを返すっけ?
書き込んだ文字数だから打ち切った場合たかだか渡した大きさ-1 だと思うけど
2017/12/04(月) 21:02:20.28ID:jfjVyC4z0
>>707 自己レス
C99 から戻り値が完全な長さを答えてくれるみたい
なので len = snprintf(buf, 0, .... ); len+1 以上確保して snprintf(buf, len+1, .... );
これが出来るのか
2017/12/04(月) 21:07:28.32ID:ESsPBxjD0
おお、そうなのか
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/printf.3.html
2017/12/04(月) 22:32:25.86ID:TOOi+5oW0
>>708
普通は、とりあえずやってみて戻り値判定したあと切り捨てられていたら大きめのバッファにreallocしてつかうんじゃないかな。
確保するメモリサイズは一定の方がいいと思うんだ。

まぁ、Cなら大抵の場合、サイズオーバーでエラー処理へとばす気もするけれど。。。。
711デフォルトの名無しさん (ワッチョイ 6d9f-HgL3)
垢版 |
2017/12/04(月) 22:35:03.23ID:iGjrIGoV0
asprintf() も良いよね。
GNUの拡張だけど。
712デフォルトの名無しさん (ブーイモ MM8e-cp23)
垢版 |
2017/12/05(火) 00:24:41.12ID:64NxbaBtM
a55h01e()もいいぞ
拡張するとアレだけど
713デフォルトの名無しさん (ワッチョイ 1e8a-mhkU)
垢版 |
2017/12/05(火) 01:57:36.13ID:hFLcfi/C0
>>694
頭悪そう
分割数に依存してO(n**2)で命名の手間が増える
O(n**2)は行かないかもしれないがO(n)よりは大
2017/12/05(火) 06:27:11.01ID:h9iE2Dgl0
>>708-709
manの「準拠」のところで、snprintf()の第2引数sizeに0を指定できる、
返り値を必要なバッファサイズを決めるのに使えると明記されてるね。
これは有難い。

>>712
エリートな人だなぁ。俺にはよく分からんけど…
男は度胸! 何でもためしてみる、か。
715デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/05(火) 09:17:09.05ID:lXQHSkZJa
>>712のやつは多分中々みつからないと思うぞ。>>712のPCのディスクの中か心の中にしかないんじゃないか?w
716デフォルトの名無しさん (ワッチョイ a66e-hJGX)
垢版 |
2017/12/05(火) 10:03:46.62ID:5svgdXUG0
asshole
2017/12/05(火) 10:08:31.35ID:hd3ECn32d
>>712
ムカついたらその関数名いただくわ。
2017/12/05(火) 10:25:15.57ID:x6DQdw1l0
char aznable は、いつか、やるかも、しれない
2017/12/05(火) 19:06:50.63ID:h9iE2Dgl0
-able は「〜することができる」という意味を加える接尾語と解釈できるから
azn と略せる何か動詞っぽい操作を思いつけば char aznable; を
「合法的に」使うことができるね。

単なるフラグなら int なり bool なりを使え、と言われると弱いけど。
2017/12/05(火) 20:13:34.78ID:bbZMw2AU0
>>713
横だが
関数名が事実上のドキュメントになるんだよ
721デフォルトの名無しさん (ワッチョイ 1e8a-mhkU)
垢版 |
2017/12/05(火) 22:18:54.85ID:hFLcfi/C0
15行の関数量産したらfunc1, func2, ...となるのが目に見えている

途中の欠番で変更履歴の推測も可能
素晴らしいドキュメントだな
2017/12/05(火) 22:26:12.48ID:CCSnWp9D0
なるわけないだろ絶対ならない
723デフォルトの名無しさん (ワッチョイ b5b3-9GJZ)
垢版 |
2017/12/05(火) 22:46:50.50ID:oTa/T8dQ0
ファンクなあ。
アシッドテイストを入れてもう少しオサレな感じにすれば爆発的にヒットするだろうになあ。
2017/12/05(火) 23:16:38.70ID:KWhjoBwr0
>>721
私は馬鹿です、まで読んだ
2017/12/06(水) 00:22:59.42ID:6EAgLXyL0
関数名はプログラマがこう動いて欲しいという願望まで
2017/12/06(水) 00:44:05.84ID:2vt65plVM
func なんて関数名見かけたら fack に置き換えるわ
2017/12/06(水) 01:05:14.08ID:fTW9mDM3d
oh miso sperm
2017/12/06(水) 08:50:44.53ID:GNciMIPS0
変数名とか省略禁止なのにfunc
2017/12/06(水) 11:23:20.22ID:2AYHpw2Ha
もうkansuu()って関数名にしとけよ
2017/12/06(水) 11:49:40.40ID:vFG2ezd00
>>728
ドイツ語とか関数名変数名だけでコード9割埋まりそう
2017/12/06(水) 12:26:30.14ID:C/WFYzI6a
そう考えると世のプログラミング言語のベースが中国語だったら表意文字だしだいぶ可読性高そう
2017/12/06(水) 12:52:19.56ID:okTVVyb50
その昔日本語BASICってあった
2017/12/06(水) 13:38:02.28ID:VY+2C2cGp
日本語はむしろ同じ物を表す書き方が平仮名片仮名漢字と何通りもあるから面倒だろ。
2017/12/06(水) 14:11:49.30ID:UBdFOzE6a
表のように与えられた時各学年の人数と全校の人数をふ計算するプログラムを教えてください。
できれば今日中に。


1組 2組 3組 4組 5組
1年 33 35 34 32 36
2年 34 33 35 33 31
3年 31 32 36 30 35
2017/12/06(水) 17:00:52.31ID:WZX+cLKR0
入力させる文字の指定ってstrchrでOKです?
2017/12/06(水) 17:23:48.59ID:uR2+ZG62d
婦警さん?
2017/12/06(水) 17:35:06.56ID:dghGKPLV0
>>734
明日の朝、学校行く前に覗いてみ
2017/12/06(水) 17:36:10.79ID:mUQybk730
>>734 は学校の宿題か課題の代行をタダでやってくれ、みたいに見えるなぁ。
親切心で教えることが質問者のためになるか疑問ってこと。

元のデータはどういう形で与えられるのかな。
質問の内容から見て、学年数もクラス数も一定で
配列としてソースファイルに埋め込みで良さそうだけど。

学年数やクラス数まで実行時の入力によって可変、となると
かなり面倒な話になるね。
2017/12/06(水) 17:55:56.74ID:dghGKPLV0
安心して翌朝覗いてみたら何も上がってないという寸法さ
2017/12/06(水) 18:30:27.51ID:YX7yBjoZd
execve関数を使うためにclearenv()で環境変数を初期化すると手順にあるのだけど
この関数の影響範囲をどう調べればわかるか調べ方もしくは影響範囲が知りたいです
manページを見ても名前と値の組の環境変数を〜みたいな話しかなくて困ってます
2017/12/06(水) 18:48:00.75ID:8+NPe2ry0
マージャンの符計算かな
742デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/06(水) 20:41:52.15ID:5GqDQnIfa
>>734
宿題用のスレなかったっけ?
C言語のはなかった?
743デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/06(水) 20:42:56.94ID:5GqDQnIfa
>>735
君のやりたいことがよくわからない。
744デフォルトの名無しさん (アウアウカー Sa55-iHXH)
垢版 |
2017/12/06(水) 20:50:51.97ID:5GqDQnIfa
>>740
影響範囲?そりゃ環境変数使うプログラム全てだろう。特にPATH使うようなやつ(外部コマンドをフルパス使わずに動かす可能性のあるプログラム)は影響受けるよね。
その他、動かすコマンドによって影響は違うと思う。これから動かそうとしているコマンドがどういう環境変数を使うかに掛かっている。だからこうだと固定的に言うことができない。
2017/12/06(水) 21:47:43.97ID:9SICms2Nd
>>744
無知ですまんが
環境変数をクリアするってことは要はLD_LIBRARY_PATHに登録されてるものをすべて無にするってことなのだろうか
これは一時的なもの?それとも永続的なもの?

ここらを参考にsystem関数ではなくexecveを使う方針になったのだけど
むしろ改悪になってるんじゃないかとなってきている
https://www.jpcert.or.jp/sc-rules/c-env33-c.html
http://www.jpcert.or.jp/m/sc-rules/c-env03-c.html

下を読んでなんとなく何がリセットされるのかはわかってきたけども
それがどう影響を与えるのだろうかと
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c703.html
2017/12/06(水) 21:52:07.31ID:9SICms2Nd
下記のように書いてあるけども
むしろ影響範囲でか過ぎるんじゃねぇか?ってのが困ってるところ
確かに改竄とかの対策にはなるとは思うんだけど
リセットしてしまったことによって使えなくなるものについてはどう担保するのかがわからない

このクリアが呼び出した関数内だけなのか、呼び出したプロセスやスレッドだけなのか、呼び出したら再起動までずっとなのか、呼び出したら再起動しても以降ずっとなのかと


(2) 環境変数のクリア
外部プログラムをコールする(exec(3))前に、環境変数をすべてクリアするとより安全になる。環境変数をクリアするには、clearenv(3) をコールすればよい。

clearenv(3) が無い環境では、以下のように extern char **environ 変数を直接クリアする。
environ = NULL;
※上記の方法で環境変数をクリアしても、system (3) による子プロセスの環境変数は、クリアされず再設定されたものになる。
2017/12/06(水) 22:02:02.99ID:uR2+ZG62d
婦警さんするなら、婦警の制服が必要。
748デフォルトの名無しさん (ワッチョイ 6d9f-nek4)
垢版 |
2017/12/06(水) 22:02:54.34ID:u7C0REjG0
>>745
一時的もなにもそれを実行したプロセスとそのプロセスからexecしたプロセスにしか影響しないよ。だからfork()後に子プロセスだけでやるなら親プロセスには影響しないしその他無関係なプロセスにも影響はない。
749デフォルトの名無しさん (ワッチョイ 6d9f-nek4)
垢版 |
2017/12/06(水) 22:05:07.83ID:u7C0REjG0
>>745
環境変数はシステム全体で一箇所に持っているものではなくプロセス単位で持ってるものだからね。そしてexecの時に引き継ぐ事もできるようになってるだけ。
2017/12/06(水) 22:31:14.96ID:9SICms2Nd
>>748
>>749
イケメンな回答ありがとう
それってどこを見たら分かるものなのだろうか
俺調べるのが苦手でどれがそのことを示してるのだろうか
その的確な回答をしてくれてとても分かりやすくてとても助かってるが俺も自身でわかるようになりたい
751デフォルトの名無しさん (ワッチョイ 6d9f-HgL3)
垢版 |
2017/12/06(水) 23:56:33.03ID:QVT4XBLu0
>>750
環境変数は大昔から使われているものでどのOSでも多分同じだ。
まずはここを見ると良い。
https://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0
752デフォルトの名無しさん (ワッチョイ 17d3-vw7f)
垢版 |
2017/12/07(木) 00:29:29.78ID:X12IxieF0
初心者です
時間取得の関数で待ち時間を作るの方法は使わずに、
現在の処理の完了した後、次の処理に移らせるにはどのようにすればいいんですか?

現在の処理が始まった瞬間に次の処理に移ってしまいます


現在の処理とは、マウスポインタの操作です

お願いします
753デフォルトの名無しさん (ワッチョイ d79f-qmOZ)
垢版 |
2017/12/07(木) 00:53:41.38ID:9lSPChPb0
>>752
おそらくそれだけの説明では大半の人が答えられないと思う。(エスパーを除く)
2017/12/07(木) 01:27:41.37ID:07dplzZ20
マウスイベントの取得はOSの仕事
OSのAPIドキュメント見れ
2017/12/07(木) 07:52:13.51ID:6ZyfpAbkd
>>751
中身見てみたけどプロセスごとに環境変数が割り振られてるってどれが意味してるのだろうか
homeとかいろいろなものがあるのはわかったのだが....
2017/12/07(木) 08:07:08.94ID:W1nCZ1Cb0
>>755
「概要」の第3段落冒頭かな。
「環境変数は、各プロセスに付随するデータである」

この1文から「プロセスごとに環境変数は独立」を読み解くのは
この手の文章に対する程度の慣れが要求されるかも。
2017/12/07(木) 08:28:21.42ID:W1nCZ1Cb0
最後の行は言うまでもなく「ある程度の慣れ」が正しい。
「ある」を打ち忘れたアル。
2017/12/07(木) 10:59:56.67ID:6ZyfpAbkd
>>756
納得した
確かにそう読める


waitpidで大気中に割り込みとか入ったらどうなるか教えてくれませんか
manには記載がなかったです
2017/12/07(木) 11:16:17.60ID:jWS70WF+p
マトリックス・リローデッドみたいな話だな。
2017/12/07(木) 11:44:46.46ID:CZv4Zvq/M
>>758
ハード的な割込みそのものはプロセスに影響しないよ。
そいつがシグナル出したらそれ次第だが。
2017/12/07(木) 12:10:49.09ID:6ZyfpAbkd
>>760
そいつというと親プロセスでしょうか子プロセスでしょうか
知りたいこととしてはwaitpidを親プロセスが処理を抜けるタイミングについてです
エラーを受けたら抜ける、正常に終了したら抜けるってのはわかったのですが、
これ以外にwaitを解くタイミングがないのかと
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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