C言語なら俺に聞け 148

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー 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
2018/09/26(水) 23:59:09.60ID:P+3GV8ah0
そもそも、Windows だけでも、64/32 ビットCPU で、
CPU の命令の、サイズ・種類などが異なる

i3, i5, i7 など高額・高機能になるほど、
3D・動画のコーデック命令なども付け加えられているから、処理速度は速くなる

そういう命令がないCPU では、ソフトウェアで実行されるから、すごく遅い
353デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:12:48.47ID:pq96CSzd0
きっとなこのスレの低学歴知恵遅れは
PEフォーマット、EXEフォーマットとかも知らない
Windows APIがDLLの関数であることも分かってない

この低学歴知恵遅れは
コンパイルしたソースをマシンコードにしたものだけが格納されてると思ってる
レスみればほぼ間違いない
2018/09/27(木) 00:16:16.06ID:GWQb325r0
まーた半角クンが湧いちゃったじゃないか。
変な正確でも,言うことが正しければいいんだが,
こいつの話は間違った無根拠なものばっかりだからなぁ……。
355デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:17:47.16ID:pq96CSzd0
じゃあオマエが質問にオマエが答えてみ
オレは常にスキがないほどカンペキなレスしか書いてないからな
356デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:18:53.88ID:pq96CSzd0
まずこのスレにいるような程度のヤツラではムリ
はっきりといえる
357デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:21:06.23ID:pq96CSzd0
こういとこでもな
低学歴知恵遅れであることは隠せない
2018/09/27(木) 00:55:00.60ID:fxNPrOWH0
>>341
バカはこれだから w
359デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 01:21:44.64ID:pq96CSzd0
質問してるヤツの質問が
このスレにいるような低学歴知恵遅れには高度すぎた

しょうがない
2018/09/27(木) 02:26:11.63ID:mRs+7RE20
>>325
2018/09/27(木) 09:17:03.76ID:Zeo03I1R0
> なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?

たぶん俺じゃないってとぼけるだろうな
2018/09/27(木) 11:29:18.01ID:XEXpxXRW0
>>353
それについては
>>249にも書いてるようなOSに対応したの部分にその意味も含めたつもりです。少なくともオレはそれを意識して書いた
363デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 12:40:10.03ID:U92lHhY6a
>>330
この話の元は>>292なのでどうすんのかなと思ってな。
2018/09/27(木) 13:02:52.87ID:rIrQdVdgM
法的(笑)
2018/09/27(木) 16:30:52.70ID:Zeo03I1R0
>>363
おまえ304か?
strcmp(argv[0], "-") == 0のときに
printf("%s", argv[0]); を実行した場合は
- と出力されるのが何かまずいのかと聞いているんだ
答えてくれ
2018/09/27(木) 16:57:20.64ID:WzI0x/ML0
"-"のときなら全然まずくないけど、1MBとか1GBくらいの0無しバイナリだと
ちょっと不機嫌になるよね
2018/09/27(木) 17:34:58.79ID:GWQb325r0
ファイル名を使った攻撃とかできそう
2018/09/27(木) 18:22:43.20ID:mzM5OoPla
>>346
スタジオドットエイチって覚えてる人にありがちな間違いだな
369デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 18:25:58.92ID:0MoXCxtia
>>365
usageの意味がなくなるのでは?
そんなもん気にしないってなら別にいいんだけどね。
2018/09/27(木) 18:52:27.42ID:v62G+4TD6
ADI法(ノイマン境界条件)って具体的に何をすればいいのかさっぱりわからない
そもそも2次元領域(0,L)^2での計算ってCプログラム上でどう構成すればいいんだろう…1次元はなんとかなったけど
2018/09/27(木) 18:54:30.86ID:v62G+4TD6
と質問したかったけど数学寄りの話かな、スレチだったらすまん
372デフォルトの名無しさん (ワッチョイ 97e9-DIZe)
垢版 |
2018/09/27(木) 19:30:25.34ID:+bSAjOWL0
今日アセンブリを作ってコマンドプロンプトで動かしてみましたが無反応です
moveとかのアセンブリはコマンドプロンプトは読み込めないんですか?
373デフォルトの名無しさん (ササクッテロル Sp4b-MQF+)
垢版 |
2018/09/27(木) 19:30:51.34ID:etRlHd3dp
https://i.imgur.com/Pg8FdUT.jpg


Helloしか出力されないんですけど、どうすれば治りますか?
2018/09/27(木) 19:35:33.53ID:Q55DNguR0
>>373
端末が受け取ってないだけとか?
printf("%lf\n", pi/a);
にすれば出力される可能性が高い。

動作環境特有の話かもな
2018/09/27(木) 19:39:41.84ID:etRlHd3dp
>>374
返事ありがとうございます。
結果は変わりませんでした。
環境はターミナルです。
2018/09/27(木) 19:45:28.08ID:Q55DNguR0
print だからフォーマット指示は %f か
他に理由がおもいうかばにゃい
2018/09/27(木) 19:52:24.14ID:YhkMlANsp
z=pi/aとおいてzを出力させるんじゃダメなのか
2018/09/27(木) 19:58:12.16ID:ul07XbU+a
lとoの間辺りに%f置いてみれば
2018/09/27(木) 20:05:05.17ID:rwW0e8CF0
>>375
問題なさそうなんだけどね。

https://ideone.com/kZ5gKx
2018/09/27(木) 20:11:45.43ID:WRRv4FYM0
printf("%lf¥n",pi/a); ってやってみたら?
2018/09/27(木) 20:12:24.71ID:3JRfbUkA0
gdbか何かで止まってるって落ちはないよね?
2018/09/27(木) 20:12:41.87ID:etRlHd3dp
すみません。今電車の中なんで、家に帰ったら全方法を試します。
2018/09/27(木) 20:13:00.51ID:etRlHd3dp
皆さんアドバイスありがとうございます。
2018/09/27(木) 20:13:49.60ID:zXUlvxZ1M
だれもMac持ってねぇのかwww
いや俺もだけどww
2018/09/27(木) 20:15:03.16ID:zXUlvxZ1M
連投ですまんがまさかコードだけ更新してコンパイルし直してないとか
初学者あるある
2018/09/27(木) 20:17:54.71ID:Q55DNguR0
どこから Macの環境に限定できるのか俺にはよくわからん
2018/09/27(木) 20:22:16.63ID:rwW0e8CF0
>>386
左上の黄色と緑の丸
2018/09/27(木) 20:23:07.84ID:rwW0e8CF0
Macでやっても出力は同じだよ
2018/09/27(木) 20:23:31.86ID:3JRfbUkA0
>>385
きっとソレダ
390デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 20:28:13.50ID:0MoXCxtia
左上の黄色と緑の点かな?
2018/09/27(木) 20:28:23.35ID:Q55DNguR0
>>388
ですよねー
392デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 20:29:31.61ID:0MoXCxtia
リロードせずにゆっくり書いてたらほとんど同じ書き込みが既にされていたorz
393デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 21:28:23.17ID:pq96CSzd0
最後に
fflush(stdout);
と書けばきっと出力される

やってみ
2018/09/27(木) 21:32:36.13ID:Zeo03I1R0
>>366
全然意味がわからない
お前は何を言っているんだ?

>>369
なぜ意味がなくなるんだ?
2018/09/27(木) 23:48:28.04ID:RQl7S0Gm0
来たよーム板に。
2018/09/28(金) 08:16:40.85ID:TLhVFQk50
sed -e 's/.*/"&\\n"/' < USAGE > USAGE.c
として
#include "USAGE.c"
397デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/28(金) 09:31:20.28ID:ctzrbTkBa
>>394
だってコマンドの使い方の説明にならないじゃん。
2018/09/28(金) 10:24:36.39ID:RVKB6eOl0
>>397
- という語句は予約されていると言いたいのか?
2018/09/28(金) 13:21:05.27ID:TLhVFQk50
somecmdというアプリケーションがあったとして
Usage: somecmd [--option] <file>...
こういう出力を
printf("Usage: %s [--option] <file>...\n", argv[0]);
まあこういう感じ(もうちょっと変数やらをはさむかも知れんが)で出力するときに
argv[0]がsomecmdじゃない場合がけっこうあるってことじゃないの?
そしてそういう場合にUsage: ...の形式が壊れるんじゃないか,と。
2018/09/28(金) 13:22:39.05ID:X1M2oU/e0
>>399
結構あるって、例えばどういう操作をする場合だろうか?
2018/09/28(金) 13:23:29.81ID:TLhVFQk50
しかし俺が思うのは,そういう場合にはたして--helpを参照するかな。
argv[0]!="somecmd"の場合ってmain関数を他のプログラムから呼び出すとかそういう場合でしょ。
その時は,そのプログラムのUsage: ...が欲しい訳だから結局somecmdのUsage: ...なんて出力する必要ないでしょ。
402デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/28(金) 13:24:49.39ID:6mi1IA73a
>>398
え?もしや - というコマンド作った場合の話?

そういうことではなくて argv[0] は起動する側が自由になんでもセットできるからコマンド名になってる保証はないという話だよ。
まあ普通のシェルから起動する場合には大丈夫だろうけど、環境によっては何も入ってないかも知れないし保証はできない。
2018/09/28(金) 13:33:55.41ID:X1M2oU/e0
何でもセットできる場合って、
そういう環境では0に限らず、
argv配列を使えないって事だよね
2018/09/28(金) 13:38:19.13ID:s+4Nw5Rza
busyboxってargv[0]で振り分けてんの?
2018/09/28(金) 13:55:27.31ID:25C/+Q0qM
>>402
そんな変な環境使ったことないからどうでもいいや
2018/09/28(金) 14:22:34.06ID:X1M2oU/e0
> 二つの仮引数を定義する場合,関数 main の仮引数は,次の制約に従わなければならない。
>- argc の値は,非負でなければならない。
>- argv[argc]は,空ポインタでなければならない。
>(中略)
>- argc の値が正の場合,argv[0] が指す文字列は,プログラム名(program name)を表す。
> ホスト環境からプログラム名を得ることができない場合,argv[0][0] は,ナル文字でなければ
> ならない。
JIS X3010:2003 5.1.2.2.1

だそうです。
2018/09/28(金) 16:10:35.86ID:mp2jkAzV0
argv[0] にはパスも含まれ得るし、シンボリックリンクから起動されれば実体の名前ではなくなるけど、usage にコマンド名としてコマンドライン上のコマンドパスを表示したいの?
2018/09/28(金) 17:12:54.15ID:08RUBfsA0
呼ばれた名前でusageわざわざ変えてるコマンド見たことないな
せいぜい例示コマンドが呼ばれた名前に変わってるくらい
2018/09/28(金) 17:16:02.91ID:08RUBfsA0
       ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>382
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
2018/09/28(金) 18:30:23.06ID:mFoW6O3i0
実行ファイルをリネームしてもusageが使えるとか
シンボリックリンクで別名作っても大丈夫とか
2018/09/28(金) 18:42:59.76ID:6WLCN0vmp
>>409
https://i.imgur.com/wgOfjjh.jpg
https://i.imgur.com/FL413Fu.jpg

課題で忙しくて、返信できませんでした。半泣きになりながらやってました。
本当にすみません。今からやってみますね。
412デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/28(金) 18:46:59.61ID:a9B9WfnIa
>>409
きっとシベリア鉄道に乗っていてまだ家に着いていないのだろう。
2018/09/28(金) 18:52:40.13ID:s+4Nw5Rza
>>411
きったねえソースだな
2018/09/28(金) 18:59:04.08ID:6WLCN0vmp
https://i.imgur.com/Yc7Gep8.jpg

画面が汚くて申し訳ございません。
gccコマンドで実行ファイルをその都度作成しなかったのが原因でした。
2018/09/28(金) 19:00:30.32ID:6WLCN0vmp
>>413
具体的にどこが汚いですか?
416デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/28(金) 19:05:03.12ID:a9B9WfnIa
>>410
UNIX系OSでは compress, gzip, bzip2, xz とかの圧縮コマンドが自分が何のコマンドで動かされたかによって動作変えてるね。
同じ実行形式のバイナリを例えば gzip なら gunzip にリンクしておいてそれを実行すると gzip -d と同じ動きになる。
2018/09/28(金) 19:06:09.19ID:mFoW6O3i0
>>415
本気にしなくて良いぞ
2018/09/28(金) 19:07:43.61ID:s+4Nw5Rza
>>415
まるでCみたいだ
2018/09/28(金) 19:11:08.13ID:6WLCN0vmp
>>418
c言語をずっと使ってきたので、その名残があるかもしれません...
2018/09/28(金) 19:16:14.15ID:/54mTdmW0
ずっと使ってきたのならなんで素人レベルのミスしてるのw
2018/09/28(金) 19:19:45.55ID:6WLCN0vmp
>>420
コマンドプロンプトの環境が初めてだったからです。
2018/09/28(金) 19:20:23.68ID:08RUBfsA0
>>414
まあ初学者あるあるだなw
俺にも覚えがある

俺の予想が的中(>>385)ということで今日から俺が半角ニキやで
2018/09/28(金) 19:27:09.29ID:6WLCN0vmp
>>422
ありがとうございます!
2018/09/28(金) 21:52:19.80ID:voc6Rn8M0
256倍本に同じような話があったな
2018/09/28(金) 22:11:42.42ID:S1GcH4lv0
>>402
gccとg++とか、grepとegrepとかあるやん
人間だって「陛下」と呼ばれたか「クズ」と呼ばれたかで同一人物でも行動ちがうだろ
2018/09/28(金) 23:19:48.69ID:iWGXqAI10
>>414
いいフォントだな〜
2018/09/28(金) 23:58:56.90ID:TLhVFQk50
Vimを使うんなら
:syntax enable
くらいしろ
2018/09/29(土) 01:10:11.80ID:0yVwVmRZM
viewなんじゃねーの
カリカリすんなよ
Macじゃどうか知らんがワイのvimrcはターミナルがカラー対応してれば勝手にsyntax on て書いてるで
2018/09/29(土) 17:41:22.99ID:XiPCev9Z0
Cってファイル毎のstaticが多くね? カプセル化だと思うが、それとか、do {} while(0)とか・・・
なして、そこまでしてCなんか使うんだべ?
2018/09/29(土) 17:48:39.58ID:cLBgNyTBM
自己満足に浸るため
2018/09/29(土) 17:52:30.71ID:s4F/hYZia
変数は少ない方がいいが、クラスのメンバー的なもんは仕方ないんじゃないか?どこかに書かないと。
2018/09/29(土) 19:04:51.98ID:ZFQaS3Ne0
基本情報のc言語ってどんくらいのレベルなの?今度受けようと思うんだけど
2018/09/29(土) 19:17:50.68ID:oiqQJDSj0
>>429
今現在Cを使う理由は、以下しかない。
1. 最速のコードが欲しい
2. 最小のコードが欲しい
3, 他言語では出来ないほど細かく指示したい
4. 既存のCプロジェクトの継続

てゆうかマジで理工系であらかじめCを使うと分かり切っている奴以外は、
初心者がCを選択する理由はないから止めとけ。
あと、ここでこれまでやってた「動く/動かない」レベルのやりとりは、
大学の授業の先生や同級生に聞いた方が圧倒的に早いからそうしろ。
2018/09/29(土) 19:20:43.09ID:vBAQmIFc0
>>433
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。

C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:

- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)

- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。

言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
2018/09/29(土) 19:29:15.10ID:PLQNiWP00
>>433
ワンチップマイコンの組み込みソフトはC言語1択だけどな。
C言語は最低限のスキルとして習得しておくべき。
2018/09/29(土) 19:34:28.70ID:oiqQJDSj0
>>434
俺はLinusの意見には同意だぞ。
ただ、それはC++が糞だと言っているのであって、Cがいいと言っているわけではない。
そして、俺が初心者に勧めるのはLL言語だ。(Ruby/Python/JavaScript/(PHP))
これらにはインタプリタ環境がある。それだけで初心者には全然違う。

それ以前に、型等の恩恵を受けたいのならC#の方が断然良い。
というか、後発言語はC言語の駄目な点を改良してきているのだから当然いろいろ優れている。
C++もこれに含まれる。だからC++も『正しく使えば』いい言語だ。
当たり前だがほぼ上位互換な訳でね。


>>435
ああ、それなら、以下を付け加えておこう。
5. C以外の環境がない
2018/09/29(土) 19:48:34.77ID:PPHj/b7C0
#if 0
って今となっては不要だよね。
なぜならフレームワークを適当に設定することで開発用と製品用のコードを分離できるようになってるから
VCSでブランチ切ってもいいし。
2018/09/29(土) 20:04:11.39ID:oiqQJDSj0
>>437
https://stackoverflow.com/questions/3630601/why-use-if-0-for-block-commenting-out/3631513
要するにブロックコメントをブロックでコメントアウトするのに便利、だそうな。
ルールでなら // に統一しろ、とか言われる所だな。

(VCSというか)今はGit全盛だが、勿論それらもなかった頃からCは全面的に使われていたので、
今となっては古い(原始的)と思える機能も沢山ある。
これは古い言語の宿命だからある程度致し方ない。
コーディングルールでも「あれは白黒ディスプレイの為の物」と言われているものあるだろ。
2018/09/29(土) 22:15:37.87ID:UH1zl1PU0
>>435
ワンチップマイコンだとアセンブラも有力
440デフォルトの名無しさん (ワッチョイ 9740-K3KX)
垢版 |
2018/09/29(土) 22:38:18.17ID:gtdSXLh90
forthって組み込み系でもう使ってないの?
2018/09/29(土) 22:39:39.91ID:s2JlOOSC0
>>440
使いやすい言語だとは思わないけどな
2018/09/29(土) 23:11:41.46ID:X4waiIaR0
>>440
そもそも最近使われてるのを見たことない

>>441
処理系が軽いのよ
2018/09/29(土) 23:32:32.75ID:ozlzkqfsa
postscriptは割と使ってるかもな。知らんが。
2018/09/30(日) 00:28:39.07ID:YvS5SBel0
今をときめくpythonの大部分がCだろ
便利なimport含めて
2018/09/30(日) 00:51:11.84ID:QRI6I66L0
最近プログラミングに熱意が持てなくなってきた
だれかたすけて・・・
2018/09/30(日) 00:53:49.78ID:mUWBdCHT0
言語作ろうぜ
あるいはハード作ろうぜ
2018/09/30(日) 13:35:46.44ID:8vGviIsrM
ここのレベルじゃ無理
448デフォルトの名無しさん (ワッチョイ bf9f-aemA)
垢版 |
2018/09/30(日) 19:56:21.83ID:KPqVv5wd0
とりあえず昔のC++みたいにC言語へのトランスレーターで作っとけよ。
2018/09/30(日) 20:08:07.13ID:pfgCoU5B0
昔々、とあるマクロ言語を開発してた頃はyacc/lex(bison/flex)を使ってたんだが、今どきもこういうコンパイラコンパイラを使ったりするんだろうか?
2018/09/30(日) 20:08:42.93ID:PasHsNHY0
>>440
ForthってMINDのベースって事くらいしか知らない
451デフォルトの名無しさん (ワッチョイ 9740-K3KX)
垢版 |
2018/09/30(日) 20:25:52.96ID:CSkWhxVk0
sedとかで十分なことでもgoでパーサ使う人はいるな
452デフォルトの名無しさん (ワッチョイ f79f-ZVm4)
垢版 |
2018/09/30(日) 21:41:15.10ID:ZDEBOTA70
質問です。
ソースが公開されてないライブラリを使用していまして
その中に特殊なファイルを読み込む関数があります。
事情があってその特殊なファイルを暗号化して保存したいのですが
暗号化してしまうとそのライブラリの関数から直接読み込めません。
暗号を解除する関数を通してそれが一時ファイルを吐けば可能ですが
大量にあるので出来ればもっと良い方法があればそれを採用したいと思っています。
例えば暗号解除後そのままメモリをファイルの様に扱う等は出来ないでしょうか?
よろしくおねがいします。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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