X



C言語なら俺に聞け 144
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 838a-3nWA)
垢版 |
2017/12/23(土) 19:33:43.89ID:dghfoRy20
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/


http://mevius.5ch.net/test/read.cgi/tech/1509107288/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0222デフォルトの名無しさん (ワッチョイ 6a12-0PCX)
垢版 |
2018/01/12(金) 23:05:54.72ID:t7pO81Ne0
既にある連結リストにはqsortは使えない(これは常人でも考えれば分かる)
後からどうしてもソートしたいならマージソートを使う(これは常人がすぐに思い付くモンじゃないので知らないと出来ない、つまりは考えても無駄)
0223デフォルトの名無しさん (ブーイモ MMc9-sUJ4)
垢版 |
2018/01/12(金) 23:14:51.66ID:b7j7QzhUM
>>210,212
著作権は商用かどうかは無関係。
個人で楽しむなどの目的で例外的に複製が認められるだけ。
もちろん勉強用なら複製は構わない。
それ以上の利用は本に明示してあることもある。
0226デフォルトの名無しさん
垢版 |
2018/01/12(金) 23:30:11.38
>>219
「以下のプログラムの (1) (2) の部分を作成し」の「(1) (2) の部分」が見つからない
0231デフォルトの名無しさん (ワッチョイ 6d9f-7doJ)
垢版 |
2018/01/13(土) 13:00:13.08ID:ZTdbWh7g0
だいたいの人は既に頭の中で解けている
0232デフォルトの名無しさん
垢版 |
2018/01/13(土) 13:27:35.73
>>219見てちょっと考えてみたけど、
初回だけ(topが未設定の場合だけ)場合分けで例外的な処理がいるの?
あと、大小で判定して挿入するとき、先頭もしくは末尾だけは例外的な処理がいるの?
かっこよくスマートに書けるやりかた教えて!
0235デフォルトの名無しさん
垢版 |
2018/01/13(土) 15:48:08.00
>>234
なんも見ずに書いてみたけど(コンパイルもしてないけど)
片方向リストにしたらこんな感じかなあ
見た感じスマートじゃないからたぶん無駄なことしてるんだろうけど

// 打席数、安打数は省略
typedef struct PLAYER_tag PLAYER;
struct PLAYER_tag {
char name[20];
PLAYER *next;
};
int main() {
PLAYER *top; // 先頭の要素
PLAYER *p; // 追加する要素
PLAYER *q; // 現在の要素
PLAYER *z; // 一つ前の要素
(省略)
top = NULL;
while (EOFでない) {
 // 1行読み込んで名前(name)、打席数、安打数を取得
 (省略)
 malloc(p, sizeof(struct PLAYER));
 memset(p, 0, sizeof(struct PLAYER));
 strcpy(p->name, name);
 
 // topが未設定の場合だけは例外的な処理
 if(top == NULL) {
  // 先頭に挿入
  top = p;
 } else {
  q = top;
  z = NULL;
  // リストの先頭から順に走査
  while (q != NULL) {
   // アルファベット順が大きい要素の直前に挿入
   if (strcmp(p->name, q->name) < 0) {
    if (z != NULL) z->next = p;
    p->next = q;
    break;
   }
   z = q;
   q = q->next;
  }
  // 末尾に挿入するときだけは例外処理
  if ((p->next == NULL) && (z != NULL)) z->next = p;
(省略)
0236デフォルトの名無しさん
垢版 |
2018/01/13(土) 15:52:19.19
>>235
先頭に挿入した場合の例外的な処理も必要だった

if (z != NULL) z->next = p;

if (z != NULL) {
z->next = p;
} else {
top = p;
}
0237デフォルトの名無しさん
垢版 |
2018/01/13(土) 16:02:34.49
>>235
>struct PLAYER
PLAYER
の誤りだった
0239デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/13(土) 16:27:20.61ID:dAIHjdGT0
割とマジでvolatileって何に使うんだ。。。?
0242デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)
垢版 |
2018/01/13(土) 17:17:58.88ID:ZTdbWh7g0
>>239
volatile は揮発性のものってことで、読んだ次の瞬間に値が変わっている可能性がある変数に付けとくやつだ。
その変数は実際にはハードウェアによって変化するものに結びついているかも知れないし、他のプロセスや
スレッドによって書き換えられるものかも知れない。とにかくそのプログラムのメインの流れとは無関係に
変化する可能性があるということ。だから読む場合は必ずその変数の内容が読まれるようにコンパイルされる
必要がある。最適化してさっきから変更してないからレジスタに入ってる内容で代用しようみたいなコードに
なってはいけないわけだ。volatile を付けておくとそういう最適化をしなくなる。
0243デフォルトの名無しさん
垢版 |
2018/01/13(土) 17:32:56.34
>>239
知らないほうが幸せだよ
本当に必要なプロジェクトなら、過去に誰かがよく分からん不具合に何日・何週間も悩まされた末にコーディングルールに追加されてるから
0246デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)
垢版 |
2018/01/13(土) 17:54:43.58ID:ZTdbWh7g0
setjmp(), longjmp() 使う時も volatile 使わねばならない時がある。
https://www.jpcert.or.jp/sc-rules/c-msc22-c.html

ま、longjmp() 使うこと自体が稀だろうとは思うが。
0248デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/13(土) 18:11:34.78ID:dAIHjdGT0
>>247
volatileは?
0249デフォルトの名無しさん (ワッチョイ 6d9f-QpsD)
垢版 |
2018/01/13(土) 19:14:06.13ID:ZTdbWh7g0
そういや上でスレッドとは書いたが、スレッド間の同期に volatile は使わない方がいい。

なぜスレッド間の同期にvolatileを使ってはいけない?
https://ja.stackoverflow.com/questions/1538/%E3%81%AA%E3%81%9C%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E9%96%93%E3%81%AE%E5%90%8C%E6%9C%9F%E3%81%ABvolatile%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%AF%E3%81%84%E3%81%91%E3%81%AA%E3%81%84
0254デフォルトの名無しさん (ワッチョイ 6d9f-7doJ)
垢版 |
2018/01/13(土) 20:16:39.27ID:ZTdbWh7g0
>>253
そうそう。それでいい。
0255デフォルトの名無しさん (ワッチョイ 3d9f-0PCX)
垢版 |
2018/01/13(土) 20:30:50.57ID:bxTj5irD0
>>249
そのサンプルコード、ハンドシェークしてるんだが、そもそも普通これしないよな?

並列させたいだけなら、普通はシグナル(sleep/wake up)で同期させる。それの方が軽いはずだし。
スピンロックでハンドシェークって、完全非同期で独立動作してるときだが、
あまり用途は無いと思うんだが。
0259デフォルトの名無しさん (ワッチョイ 6a9b-p8jN)
垢版 |
2018/01/14(日) 00:51:15.96ID:+jsAfOue0
vbaを扱えるようになったんで次にC言語触ってみようと思うんですが、どう勉強してったらいいですか?これ作ればあらかた基礎コードや仕組みが学べるものってあります?
やることによるんだろうけど、例えばテトリス作れば基礎が固まるとか。ネット検索しても今一ピンとこなくて。
おすすめの参考書とかもあれば教えてください。
0261デフォルトの名無しさん (ワッチョイ ad7e-UJUP)
垢版 |
2018/01/14(日) 07:03:14.93ID:N+BeAo4b0
>>259
せっかくvba憶えたんならマシン語から入ってみては?
https://pf-j.桜.ne.jp/program/tips/vbasm.htm

ちな俺はBASIC->マシン語->Cで憶えたクチで
マシン語が透けて見えるCの特徴をありありと感じながら使えて
多重レベルポインタの**を全く悩まずにすんなり習得できた
0262デフォルトの名無しさん (ワイモマー MM21-62yH)
垢版 |
2018/01/14(日) 08:31:23.76ID:Ef+VW+YvM
>>259
コマンドラインで使えるミニツール(dirなど)を真似て作ってみたら?
標準入出力、ファイルアクセス、データ編集の基礎が身につくと思う。
0266デフォルトの名無しさん (ワッチョイ b5b3-aDaF)
垢版 |
2018/01/14(日) 11:22:32.01ID:D7wQbzM+0
>>259
Small-Cっていう C言語のサブセットがあって、
そのコンパイラを作るって本があったよ。
オレはこれで C言語の基礎を勉強した。
30年くらい前かな?
たぶん絶版で入手困難だと思う。

あと、アンドリュータネンバウム先生のMINIXオペレーティングシステムも勉強になる。
Linuxを作ったリーナストーバルズもアンドリュータネンバウム先生の教え子だったはず。
0268デフォルトの名無しさん
垢版 |
2018/01/14(日) 11:47:19.55
初心者は結城浩先生の
 新版C言語プログラミングレッスン-入門編-
あたりで学習しときなyo!
0271デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/14(日) 17:24:36.08ID:X58RAQQJ0
プログラミング初心者なんだけどコマンドプロンプトとかの知識って必要なん?
一応簡単なバッチファイル作れるレベルまでは来たんだけど
0274デフォルトの名無しさん (アウアウカー Sa55-f6zg)
垢版 |
2018/01/14(日) 17:51:22.52ID:q1SBtCCQa
>>271
君にとって必要かどうかは君がこれから何をするかによって変わる。
0275デフォルトの名無しさん (ワッチョイ 5e7f-o2Il)
垢版 |
2018/01/14(日) 22:04:36.32ID:t1pyzP2Y0
ファイルのIOの部分難解すぎて意味がわからない。
・文字列を処理したいのにchar型とかint型とか byte型とか
 出て来るしtry catchとかIOExceptionとか何なのかがよくわからない。
・なんとかOutputStreamとか なんとかReader Writerが
 おおすぎてどれを使っていいかわからない。
・オブジェクトを生成して別のコンストラクタの引数に渡している部分が
 何をしているのかさっぱりわからない。
・BufferedReader / Writerとかを使う必要があるのかないのかよくわからない。
・結局文字列を読み書きするのとバイトを読み書きするのが何が違いがあるの?
・for(item : list){}文は使えないの?
0276デフォルトの名無しさん (ワッチョイ 5e7f-o2Il)
垢版 |
2018/01/14(日) 22:05:03.57ID:t1pyzP2Y0
すみません、Javaのスレに書こうとして間違えました
0280デフォルトの名無しさん (ワッチョイ ea6e-EKU2)
垢版 |
2018/01/15(月) 19:03:01.00ID:WG2cD3TY0
プログラミング全く関係ねぇんだけど
組み込み系のプログラマーって電子制御とか電子回路、機械工学の知識必要ないん?
これ絶対プログラミングだけの知識で食っていける分野じゃねぇだろ
0281デフォルトの名無しさん (オッペケ Srbd-01qY)
垢版 |
2018/01/15(月) 19:07:26.61ID:nis3xk1Qr
必要ないわけ無いじゃんw
何でそんな勘違いにたどり着いたしw
0282デフォルトの名無しさん (ワッチョイ ea6e-EKU2)
垢版 |
2018/01/15(月) 19:12:07.64ID:WG2cD3TY0
>>281
やっぱそうなん?
あほらし
じゃあ組み込みc言語の本全部捨てよ
あほくさ、そんなん全部学ぶとか無理無理
情報工学の二回生だけどやめやめ、ばーか
0283デフォルトの名無しさん (オッペケ Srbd-01qY)
垢版 |
2018/01/15(月) 19:14:45.00ID:nis3xk1Qr
Cは別に組み込み専用言語でもないんだし、勉強続けりゃ良いじゃん。
0284デフォルトの名無しさん (ワッチョイ ea6e-EKU2)
垢版 |
2018/01/15(月) 19:18:35.04ID:WG2cD3TY0
>>283
あほやなぁ...
組み込み系以外でc言語の案件なんかまともにねぇだろ
どっかでグラフ見たけどcの用途なんか限られまくってるし
素直にPython勉強して人工知能するわ
人工知能なら電子回路とか機械工学の知識必要なさそうだし
0285デフォルトの名無しさん
垢版 |
2018/01/15(月) 19:24:26.25
組み込みCもいずれは勘定系のCOBOLみたいにごく一握りの職人にしかメンテできない時代になるんかな
0286デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/15(月) 19:30:46.90ID:kUJAacmi0
>>285
ヒエ〜!
機械工学科と電子電気科でもプログラミングの授業に力を入れる運動が出て来てるし(メカニクス的な意味で)こわい
情報学科って生きていけるんやろうか
俺も今のうちに基本的な電子回路制御の知識はつけておくべきか
アルゴリズムとか通信系学んだところでなんの意味があるんだくそがっ!
0287デフォルトの名無しさん (アウアウカー Sa55-f6zg)
垢版 |
2018/01/15(月) 19:31:33.79ID:IGiFRvDqa
どうかなあ?少なくとも新しいデバイスのデバイスドライバはC使われ続けるんじゃないか?丸々全部アセンブラにするより楽だから。
その後の処理は何の言語でも良い。
0288デフォルトの名無しさん (アウアウカー Sa55-f6zg)
垢版 |
2018/01/15(月) 19:36:30.16ID:IGiFRvDqa
あとやはりOSはまだまだC言語使われ続けると思う。UNIXやLinuxは根深いからな。
LinuxなんかAndroidのベースになっちゃったしそこらじゅうのネットワーク機器や家電に入っちゃったもんだからまだまだ思い切り使われ続けるだろう。
0289デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/15(月) 20:00:27.65ID:kUJAacmi0
Linuxってc言語で作られてるんか...?
0291デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/15(月) 20:12:27.42ID:kUJAacmi0
とりあえず電子電気工学とか機械工学科じゃ太刀打ちできない人工知能の研究室選ぶは...
やっぱ時代はアルゴリズムや!
0293デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/15(月) 20:22:02.89ID:kUJAacmi0
>>292
もちろんcとPythonはやるぜ!

Java、Rubyさんはポイッ!w

あとは線形代数とかの数学的知識も必要か...

夢を決めると頑張れるな
0295デフォルトの名無しさん (アウアウウー Sa21-QpsD)
垢版 |
2018/01/15(月) 21:03:20.78ID:hdW0ysAta
プログラマーは鳥籠のようなものだ。
外にいる鳥たちはいたずらに中に入ろうとし、
中にいる鳥たちはいたずらに外に出ようともがく。
0297デフォルトの名無しさん (アウアウウー Sa21-QpsD)
垢版 |
2018/01/15(月) 21:13:57.00ID:hdW0ysAta
>>289
そう。ソース公開されてるから見てみな。
所々アセンブラ使ってる所があったとは思うが大半がC言語。
これについてはUNIXも同じ。というかむしろOS作って配布しやすくするためにC言語作ったようなもの。
そうするとCPUが違っても移植が楽だからね。
0298デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)
垢版 |
2018/01/15(月) 21:22:28.42ID:/vxf22Ts0
>>295
それだけ根性ねえやつがなる職業ってことかねえ
俺の時代っちゃなんだけど、あの当時は大学に情報処理のコースなんかほとんどなくて
大人たちはみんなゲーム小僧の遊びの延長はメインフレームには関係ねえなんて
ぬかしてやがってて、それでも実際に大学のセンターと家のマイコンを触り比べて
一縷の勝ち目を感じるのを信じて大勝負に出たんだよ
でジジイたちにひと泡吹かせることにはいちおう成功した
今さら後悔なんかしてねえぜ
0299デフォルトの名無しさん
垢版 |
2018/01/15(月) 21:37:18.31
ぜひ組み込みCを自らプログラミングできる人工知能を生み出して
このスレにいる前時代の遺物のおっさんどもをギャフンと言わせてほしい
0302デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/15(月) 21:54:53.07ID:kUJAacmi0
情報工学だからこそっていう仕事ねぇのか?
組み込み系って
情報工学でもやっていけるんか結局?
機械工学、電気電子のやつより上にたてる?
あいつらよりは地位上でいたい
なんかムカつくから
0303デフォルトの名無しさん (ワッチョイ 8a0b-UJUP)
垢版 |
2018/01/15(月) 22:02:04.83ID:/vxf22Ts0
あくまで私見だけどね
ストレートに情報へ行ったやつより
遠回りしてきたやつのほうが
俺は個人的には期待しちゃうな
ストレートタイプにもすげえのいるけど
確率論的なやつで
0304デフォルトの名無しさん
垢版 |
2018/01/15(月) 22:18:51.33
情報工学って結局何ができるのかね?
プログラミングなんかやってる奴よりは
MATLABとか操ってる奴の方が格上だし
PowerPointとExcelしか触らない奴の方がさらに格上だわな
0305デフォルトの名無しさん (ワッチョイ a58a-oih1)
垢版 |
2018/01/15(月) 22:25:47.87ID:nB3IxhPi0
>>302
情報専攻の奴が他分野と張り合うとしたら工学の領域では厳しい
情報工学としてではなく情報科学の方面で学会とかで研究成果を発表していく研究者としての方が
上の立場を狙いやすいと思う
0311デフォルトの名無しさん (ワッチョイ 11d0-EKU2)
垢版 |
2018/01/15(月) 23:29:43.21ID:kUJAacmi0
>>303
なんか先輩で

機械工学から大学院で知能情報なんとか?に入った人いるって言ってたけどそういうタイプか
でもそういうのって役に立つ人材なのかね
機械工学と情報工学が交わることって一切ないし
■ このスレッドは過去ログ倉庫に格納されています

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