X



C言語なら俺に聞け 148
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
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言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0775デフォルトの名無しさん (ブーイモ MM17-SAcu)
垢版 |
2018/10/18(木) 20:58:01.13ID:KO6AKpPQM
たったこれだけでリークするコードを仕込んだことになる。
もちろん仕様書通りの動作だけど、ノウハウ集を見るまえに気づくのはわりと難しいかもね。

p = realloc(p, 1 * sizeof(int));
0776デフォルトの名無しさん (ワッチョイ 269f-eYdq)
垢版 |
2018/10/18(木) 21:06:20.49ID:CSkK3ONp0
>>772
しかし君はアホだから丁度マッチした適切なレスではないかな。
0778デフォルトの名無しさん (ワッチョイ 269f-eYdq)
垢版 |
2018/10/18(木) 21:08:03.73ID:CSkK3ONp0
>>775
それでリークするかどうかはその他の部分がどう書かれているかによるのでは?
0780デフォルトの名無しさん (ワッチョイ 269f-eYdq)
垢版 |
2018/10/18(木) 21:10:01.05ID:CSkK3ONp0
ああ。失敗した時か。確かにリークするな。
そういう時はもう処理続行不能って事にしてexit()させてる。
0785デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/18(木) 22:29:32.46ID:+6TFZypL0
>>715
俺は書かないと言ったろ。理由は>>705参照。
そして俺は最初に解法も示してる。>>690参照。

つっても理解出来てないようだから、もう少し(非技術的な)解説をしよう。
現状、俺以外の他全員誰も褒めてないんだから、この際理由を『詳しくない』俺にわざわざ求める必要がないだろ。
しかし、何故か俺に意見を書かせようとする輩が多いだろ。お前も含めて。
それがアフィカスじみてて、結果的にスレを潰すから、俺はそれには乗らない、と言ってるんだよ。
見れば分かるとおり、スレの流れが異常だろ。

俺が何度もこのメタ議論を出している理由は、お前らゆとりが全くこの辺について無知だからだ。
お前らゆとりは、オンラインコミュニティは潰していいものだと思っている。
見方が本当に刹那的で、自分の質問に対しての答えが得られれば後はどうなってもいいと思っている。
(ただ乗り出来るし、勝手に発生するものだと思っている)
実際は、オンラインコミュニティだって、成熟するには時間も労力もかかる。
そこがどんなに(お前にとって)糞であれ、住めば都だから住人が居るわけで、そんなに簡単に潰していいものではないんだ。

ゆとりが老害老害と連呼しながらも2chにへばりついているのも、ちょっと考えればおかしいと気づけるだろ。
2chは古いし、年齢層は高い。これは事実で、実際、老害年齢層の存在確率は他のコミュニティよりも高い。
しかし、結局の所、ゆとり流では「既読疲れ」みたいなコミュニティしか形成出来なかったんだよ。これも事実だ。
だからお前らがここに文句を言いつつもへばりついているわけでさ。

それなのに、ゆとり流をここに持ち込もう、というのは全くの筋違いだ。それは2chを破壊するから止めろと言っている。
ゆとりには長期的な視野がない。2chに色々問題があるのも事実だけど、ゆとりに長期的視野と運営能力があれば、
今現在の20代は全員ゆとりなんだし、人数は揃っているのだから、
「ゆとりチャンネル」(通称ゆとりちゃん)が出来ても全くおかしくない状況だろ。
それが出来ないって事は、お前らゆとりにもかなり問題がある、ってことでさ。それは自覚した方がいい。
0786デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/18(木) 22:29:49.28ID:+6TFZypL0
とはいえ、2chの問題点が目に付くのは理解出来る。
ただ、それに関して「何故そうなっているのかを理解出来ないのに文句を言っている」のが、
全く使えない意識高い系新入社員と同じ事になってる事にも気づいた方がいい。
お前らは完全に空回りしているんだよ。

ハロワも同じだろ。「何故世界中の誰も20年間それを修正しなかったのか」を理解出来ない癖に、
「俺のハロワ、凄いだろ」なんて言っちゃう辺りが痛い。
ただ、それは若さの特権だから、本当にそう思うのなら主張すればいいし、
ゴミなのを誰も褒めないんだから、ここのコミュニティもまだ正常、ってわけだ。

それで、話を戻すと、ゆとり流の無知と横暴は2chを潰すから止めろ、と言っている。
とはいえ、おそらくゆとりには悪気はない。これが話が通じない根本の原因だ。
しかし、2chにはゆとりを排除するシステム自体がなく、へばりつかれたらどうしようもない。
だから俺はゆとりを教育してやろうとしているわけでさ。2chに合う奴だけが2chに来ればいいのであってね。

笑顔で人を殺しても、殺人は殺人なんだよ。ゆとりはこれを理解出来てない。
同様に、どんなに上手に敬語を使っても、スレを毀損しているようでは駄目なんだよ。
ゆとりは乗っ取り行為が酷すぎる。しかもそれを自覚出来てないのが最悪。
0791デフォルトの名無しさん (ワッチョイ f380-tM5n)
垢版 |
2018/10/18(木) 23:16:58.79ID:THsg9J3q0
ハロワいけ
ハロワ
0792デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/18(木) 23:27:27.31ID:+6TFZypL0
>>790
効果はあるんだよ。だから書いてる。
正確に言えば、効果がある奴には効果がある、だが。

はっきり言えば、君の考え方もズレてるんだよ。
コミュニティは、オンラインであれオフラインであれ、存続する為には新人を受け入れるしかないんだよ。
だから、ゆとり世代以降を全員閉め出す、というのもまた間違いだし、
後10-15年後にはゆとりが社会の主力になるんだから、
それまでに駄目なところを鍛え直すのは上の世代の責任でもあるんだよ。
(君の考えに関係なく、俺達はゆとり世代に未来を託すしかない)

だから俺は俺なりの方法でやってる。それで成果も多少は出てる。
お前は何もしようともしてないのに文句だけ言ってるクズだよ。
ネットだから何をやってもいい、ではないんだよ。
同様に、ネットだから何もやらなくてもいい、でもない。
ネットだから咎めようがない、でもない。
まあ君には通じないとも思うけど。
0793デフォルトの名無しさん (ワッチョイ be81-xJah)
垢版 |
2018/10/18(木) 23:31:27.22ID:tgytymo80
有益なことなら読んでいるが
長い文章書かれても、大概の奴は読まないだろ
読まれれば効果が有るかもしれないが、
読み飛ばされても文句は言えない事は理解しないと
0794デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/18(木) 23:55:16.65ID:+6TFZypL0
>>793
> 読み飛ばされても文句は言えない事は理解しないと
理解してるぞ。というか、当たり前だろ。お前はアホなのか?

まあお前も理解出来てないのだろうが、なんだかんだでみんな読んでるんだよ。
そのうち分かるようになるよ。
それ以前に、2chの『長文』ごときで無理な奴はプログラマは無理だし。
0795デフォルトの名無しさん (ワッチョイ 6a9f-zKqf)
垢版 |
2018/10/18(木) 23:56:44.20ID:Mibooz+L0
たまに上から目線で長文書くバカいるけど誰も読まないんだよな
何故かって冗長なだけで大した事書いてないから
0797デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/19(金) 00:10:02.34ID:Av8doxl90
>>795
そういうことにしたいのはお前が馬鹿だから。
実際は、賢い奴ほど読んでる。
正確には、賢くなる過程で大量のドキュメントを読む必要があり、結果、
賢くなった奴はおしなべて読む速度が速く、読むことに関してコストがかからないからだが。
そして、俺の意図は馬鹿にはどうせ伝わらないから、俺もそれでいいんだよ。
長文ガー、なんて奴は最初から相手にしてない。

三行で、一行で、というのもまた自由だが、
現代プログラマにドキュメントの読み込み能力がかなり必要なのも事実だし、
これは今後さらに拍車がかるのも目に見えているから、
2chの長文に手こずる程度ならマジで国語からやり直した方がいいぞ。
0798デフォルトの名無しさん (アウアウウー Sa9f-Pb4j)
垢版 |
2018/10/19(金) 00:20:52.79ID:e4N83vJpa
>>797
国語の能力に関係なく、攻撃的で、感情的で、実のない部分の比率が高い文章は誰にとっても読みにくいと思うぞ。
汚いコードを読みなれてそういうのを読むのが上手くなったからって、自分のアウトプットするコードは論理的かつ明瞭でキレイでありたいと思わない?
0799デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/19(金) 00:31:51.38ID:Av8doxl90
>>798
何が言いたいのか分からん。
その君の文章が「論理的かつ明瞭でキレイ」だとでも思っているのか?

俺は俺なりの方法で対処してる。
読むかどうかは当然読み手側が決める。それでいいという前提で書いている。
君がもっと上手く対処出来るというのなら、君がやればいいだけ。
おかしな流れにならなければ、俺がわざわざ時間をかけて長文を投下することもない。
だから、君が見事に、アホ共を捌き、流れが正常化していれば、俺が出張ることもない。
君が俺にこの手の文を投下させたくないのなら、君が実力を見せればいいだけだ。

やってから言えよ。
0801デフォルトの名無しさん (ワッチョイ 6a9f-zKqf)
垢版 |
2018/10/19(金) 01:25:19.25ID:U7ZV6G1w0
5ちゃんで上から目線で長文書く奴の特徴は驚く程共通してるんだよな
例外無く論理的思考が欠如しているから要点をまとめる事も出来ないんだよ
0802デフォルトの名無しさん (ワッチョイ c34f-tM5n)
垢版 |
2018/10/19(金) 02:00:24.64ID:Av8doxl90
>>801
馬鹿こそそういうことにしたがるのだが、
実際、必要な文章量は、認識/知識のギャップに比例するんだよ。

実例を挙げると、>>653,679、ゴミだね、でしかない。
賢い(知識のある)奴にはこれで十分だし、
無理な奴にはグダグダ説明が必要なだけ。

そして俺はお前らがこの件(メタ議論)については無知だと見てグダグダ説明してるだけ。
そもそもお前らが賢ければこんな事にはならないし。


ただ、そういう、「この場合にはこれ」みたいな定型的な屁理屈返しはマジでゆとりに多い。
そういうのも止めた方がいいと思うぞ。誰の為にもならない。
俺も、何度もその返しは見てきた。
それで、誰も俺みたいな返しをしてこなかったから、
お前らゆとりが調子こいて「これは使える」と勘違いしているのだろうけど、
それは単に見捨てられてるだけだぞ。理解出来てないのだろうが。
0803 ◆QZaw55cn4c (ワッチョイ 8a60-oeap)
垢版 |
2018/10/19(金) 07:03:22.13ID:akKjNeBd0
>>799
>>798
>その君の文章が「論理的かつ明瞭でキレイ」だとでも思っているのか?

個人的には >>798 は読みやすいんだが、ID:Av8doxl90 は非常に読みにくい
たとえば >>797 は文脈・論理の線が、不適切な日本語を使用しているせいで滅茶苦茶だ

>>797
>実際は、賢い奴ほど読んでる。…@

>正確には、〜コストがかからないからだが。…A

この「正確には」が、読み手を混乱させるミスリード語。
「正確には」と書く以上、すでに述べた@と同格言い直し内容の後続があるかと期待すると、裏切られて、@の理由を示すAが来る。

>そして、〜伝わらないから、俺もそれでいいんだよ。

「そして」が意味不明、何と何が「そして」で続くのかさっぱりわからない。
「そして」を使うのなら、
「俺の文が、馬鹿には読むコストのかかる文章であったとしても」→「馬鹿にはどうせ俺の意図伝わらないから」→「俺はそれでもいい」…B
と、A部分のキーワード「コスト」という単語を使うことによって、AとBが意味の上でつながっていることを明示するべきだ
Bの冒頭を省くから「そして」が宙に浮く

>>799
>おかしな流れにならなければ、俺がわざわざ時間をかけて長文を投下することもない。
上で示したように、君の文章は「おかしな流れ」そのものといっていい
スレが「おかしな流れ」であるとき、それを正すのに「おかしな流れ」の文章が使えるとでも思っているのか?
0804 ◆QZaw55cn4c (ワッチョイ 8a60-oeap)
垢版 |
2018/10/19(金) 07:17:05.03ID:akKjNeBd0
>>801
>上から目線で長文書く奴の特徴
>論理的思考が欠如している

感情にまかせて思いついた単語を羅列するあまり、
前半と後半の意味の整合性がとれていなかったり、前半と後半をつなぐ接続詞が不適切であったり、で、
はっきりいって脈絡がない

書いている本人はテンポ良く文章を量産できる「頭のいい自分」に酔いしれているのだろうが、
実際には量産されているのはポンコツ文
0805デフォルトの名無しさん (アウアウウー Sa9f-BMDm)
垢版 |
2018/10/19(金) 10:18:49.82ID:gPrGaWTXa
長文をゆっくり書いていられるゆとりのある人はいいなあ
0806デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/19(金) 10:20:47.68ID:SjrnPnkZa
ポンコツかどうかはコード書かせれば分かるだろ。
この世界では他がポンコツでもコードが書ければ正義だ。
0809デフォルトの名無しさん (JP 0H1b-87xj)
垢版 |
2018/10/19(金) 13:27:43.51ID:F6BbYzOIH
>>807
hello worldの存在意義は、
その言語に初めて触れる人に、
言語の規格にきちんと準拠して、
最小限の記述で、
きちんと動作する、
何かのプログラムを見せることだよ。
どんな設計スタイルがいいとか教えることじゃない。
0812デフォルトの名無しさん (アウアウウー Sa9f-BMDm)
垢版 |
2018/10/19(金) 14:33:09.80ID:gPrGaWTXa
カーニハンそんなことやってたっけ?
0813デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/19(金) 15:14:02.97ID:SjrnPnkZa
>>808
設計通りに書けない奴はコードが書ける奴とは言わんだろ。
0814デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/19(金) 15:21:55.54ID:SjrnPnkZa
>>809-810
どっちも正しい。

>>811
GBAハックした時は点を一個表示するのが最初だった。
Hello Worldは二番目。
0816デフォルトの名無しさん (アウアウウー Sa9f-BMDm)
垢版 |
2018/10/19(金) 17:14:10.33ID:gPrGaWTXa
Linuxというかglibcならmanページに書いてあるよ。
0817デフォルトの名無しさん (ワッチョイ f380-tM5n)
垢版 |
2018/10/19(金) 22:42:18.68ID:zxKaiBZl0
make worldでX立ち上がったときは
感動したものだ
0820デフォルトの名無しさん (ワッチョイ be81-xJah)
垢版 |
2018/10/20(土) 01:37:49.13ID:/s/GXT/Q0
それで思い出した
プロジェクトでのmakefile、作成が終わった時に
バナー文字で「make end!」って表示するんだけど
ある人のだけは「big cock!」に書き換えてたっけ

ここには関係者いないよね?
0821デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/20(土) 15:49:24.33ID:Nttc2RvPa
C言語だから、次世代言語(w)よりもコード出るかと思ったら、出ないのな。
0828デフォルトの名無しさん (ワッチョイ 3bb3-xBTp)
垢版 |
2018/10/21(日) 22:17:56.29ID:+iExR7UM0
Cでfloat型が表す最小の正の数値を求めるプログラム書いてて、
とりあえず1.175494e-38に近づけるように書いてみてるんだが
printfで値表示させながらやってみると1.175494e-38以下も表示されるのなんで?
環境はgcc5.5.0_1

とりあえず最小判定は初期値1.2e-38を0.000001e-38ずつ減らしていって、
1.175494e-38を抜けるとバカな数字が出てくると仮定してif(a / (b - c) != 1)で判定してる

int main(){
float a = 1.2e-38, b;
float c = 0.000001e-38;

while(1){
b = a;
a -= c;
printf("a=%.6e b=%.6e\n", a, b);
if(a < 0 || b < 0) break;
if((a / (b - c) != 1.0)) break;
}

printf("a=%.8e b=%.8e\n", a, b);
if(b < 1.175494e-38) printf("b is not min value\n");
}
0834デフォルトの名無しさん (ワッチョイ 3bb3-FQxm)
垢版 |
2018/10/22(月) 01:30:41.57ID:eGJ65JSF0
>>833
int型だとオーバーフローすると馬鹿な数字がでてくるからそう仮定したんだが違うのか
率直に聞くんだけど、この場合どうすればいいの?
0835デフォルトの名無しさん (ワッチョイ 8af9-L5c9)
垢版 |
2018/10/22(月) 01:41:56.82ID:ao50gEDc0
>>834
バカな数字とかいい加減な理解をしないで、ちゃんとした仕様を調べてみなよ。例えばwikipedia辺りで算術オーバーフローの項目見て全部読んで、分からない語とか関連する語もちゃんと調べるとか。
0839sage (ワッチョイ 3bb3-xBTp)
垢版 |
2018/10/22(月) 04:59:16.08ID:eGJ65JSF0
>>837
int型で似たようなこと(最大の正の数値を求める)やろうとしたら、バカみたいな数字が出たってだけだよ
0846デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
垢版 |
2018/10/22(月) 12:59:00.86ID:8WYgXfgna
そろそろコードで語れや
0848デフォルトの名無しさん (JP 0H1b-xBTp)
垢版 |
2018/10/22(月) 15:05:43.37ID:K/0BTgUUH
>>828ですが、参考書やらをみてアンダーフロー・正規化についてしっかり理解したところ、解決しました。

要は、float型のビット表現の仮数部が 0.(仮数部) ではなく 1.(仮数部) で表現されてるから、
その意味では
0|00000001|00000000000000000000000
が最小の正数になるけど、仮数部を 0.(仮数部) と表現しても計算できないことはないから、
0|00000000|10000000000000000000000
もちゃんと表示される、ということだけど、
これ以降ずっと計算していくといずれ
0|00000000|00000000000000000000000
となるから、150回目くらいでアンダーフローが起こる、ということらしい。

>>835>>842ありがとうございました。
0851デフォルトの名無しさん (ワッチョイ 6ab3-b3y3)
垢版 |
2018/10/22(月) 23:25:34.63ID:o0mVKFY/0
>>850
> そうか、847にアホとヴァカって書いてあるのか
> 実際には、そう言ってるのはおまえだけなんだが

ヴァカで検索
>>831 > あ、おまえ間違えたの? アホとヴァカしかやらない間違いだなw
>>840 > アホw ヴァカwww
>>843 > アホとヴァカを認めやがったw
849-850 は指摘なので省略

> 自分にお前だけとかかなりシュールな姿だねw
0854デフォルトの名無しさん (ワッチョイ f364-qPjg)
垢版 |
2018/10/23(火) 12:00:30.24ID:cKF5Z2eR0
C言語でLinuxのdmesgやffmpegのログのような着色された分かり易いログ出力ができるライブラリってありますか?
[YYYY-MM-DD hh:mm:ss.ss] INFO: creating some file...
のような形式がいいんですけど、Cだと自作するしかないですかね?
0857デフォルトの名無しさん (ワッチョイ 4acb-nBLa)
垢版 |
2018/10/23(火) 21:42:50.09ID:/OGOSsnj0
>>851
ヴァカと書いてあるのを血眼で探したのか
ご苦労だったな

で、誰か「自分にお前だけ(ry」とかテレパシーで話しかけてきたのか
なるほど精神科の医者じゃなく患者だな
精神分裂病の陽性症状で幻聴がひどいようだな
0859デフォルトの名無しさん (アウアウウー Sa9f-Egl2)
垢版 |
2018/10/23(火) 22:50:27.85ID:PGQOpxAMa
>>854
サンプル書いてやったぞ

#include <stdio.h>
#include <time.h>
#define D(fmt, ...) \
do { \
struct timespec _ts_; \
struct tm _tm_; \
char _tt_[128] = {0}; \
clock_gettime(CLOCK_REALTIME, &_ts_); \
localtime_r(&_ts_.tv_sec, &_tm_); \
strftime(_tt_, 128, "%H:%M:%S", &_tm_); \
fprintf(stdout, "\033[33m%s.%lu %s:%d %s " fmt "\033[0m\n", \
_tt_, _ts_.tv_nsec, __FILE__, __LINE__, __func__, ##__VA_ARGS__); \
} while (0);
0863854 (ワッチョイ f364-qPjg)
垢版 |
2018/10/24(水) 01:42:48.00ID:+vpF9pgu0
>>859
ありがとうございます!
一点,おこがましい指摘なのですがfprintfの出力先はstderrのほうがいいのではないかと思います。
ログ出力はコマンドの出力とは別個にするべきなので。
0864854 (ワッチョイ f364-qPjg)
垢版 |
2018/10/24(水) 01:48:03.42ID:+vpF9pgu0
>>862
例えば改行を\x0aで固定するのは良くない方法であり、\nにすべきですが(これだとWindows向けにビルドしてやれば\0x0d\0x0aが出力されるようになる)
着色に関するエスエープシーケンスを固定するのは別に大丈夫だと思います。
ECMA-48/8.3.117などで標準化されてますし。
0868デフォルトの名無しさん (ワッチョイ 66d5-7cZp)
垢版 |
2018/10/24(水) 05:49:24.17ID:X/sBrfkw0
>>867
説明のための例だからそういう定義が分かりやすいとして、

>>866
こういうのを定義するときは、手段じゃなくて目的で定義する方がいいんじゃないかな。
ソース位置の強調をするために STYLE_LINE、タイムスタンプを強調するために STYLE_TIME、プロセスIDを強調するために STYLE_PID、みたいな。
それらを定義するときに YELLOW とか RED とか使う感じ。

#define STYLE_LINE(FMT) (ANSI_COLOR_YELLOW FMT ANSI_COLOR_RESET)

みたいにして、
fprintf(stdout, STYLE_TIME("%s.%lu") " " STYLE_LINE("%s:%d") " " STYLE_MSG(fmt) "¥n",

とか。
0869デフォルトの名無しさん (アウアウウー Sa9f-Egl2)
垢版 |
2018/10/24(水) 07:45:53.57ID:hBENxp+1a
>>861
;はミスだわ

>>863
サンプルなのでお好きに

>>868
好みかもしれんが、一行の中で色変えるとか見づらくないか?
そのフォーマットではファイル出力したくなくなるし

俺が色使うなら #define D(type, fmt, ...) でタイプ指定して
fprintf(stdout, COLOR(type) ... COLOR_END "\n",
とかで色変えるぐらいかな
0873デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
垢版 |
2018/10/24(水) 20:20:46.99ID:k2aW8IHEa
cursesライブラリは使えないなかな?
■ このスレッドは過去ログ倉庫に格納されています

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