C言語なら俺に聞け 136 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 5b7b-Cxy9)
2016/07/10(日) 21:48:57.51ID:Hf6Ci9f/0数行で収まらないソースは以下から適当に選んでURLを晒す
https://paiza.io/
http://codepad.org/
http://ideone.com/
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/
前
http://echo.2ch.net/test/read.cgi/tech/1462853629/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0002デフォルトの名無しさん (ワッチョイ c73c-aw3J)
2016/07/10(日) 21:57:40.69ID:dDi9paew00003デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)
2016/07/10(日) 22:13:16.72ID:Hf6Ci9f/0JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
0004デフォルトの名無しさん (ワッチョイ 836c-Bfmi)
2016/07/11(月) 07:54:13.44ID:iORY9+fX00005デフォルトの名無しさん (ワッチョイ 7389-oo3f)
2016/07/11(月) 08:45:28.01ID:pao9IZxi0乙
0006デフォルトの名無しさん (ワッチョイ efc8-Bfmi)
2016/07/11(月) 21:12:48.47ID:xgdGYS+A0分割されたソースコードがある時、ファイルをまたいで変数を使用する際にexternを使えばいいことを習いました。
その時は、ある.cファイルの中では普通に宣言して、またいで使いたい.cファイル内ではexternを使うという感じでした。
しかし後で自分で調べてみたらヘッダファイル内でexternを使うようなことが書かれていました。
どちらのやり方が正しいのでしょうか?
前者のやり方しかやっていませんが一応正常に動作しました。
0007片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK5f-fi14)
2016/07/11(月) 21:22:57.75ID:htK4V8FQK#includeは、その場所に、指定したファイルの中身を取り込む。
取り込んだ内容はコンパイル単位に取り込まれ、ソースの一部として扱われる。
ヘッダーは#includeで取り込めるので、複数箇所で参照したい場合、コードの共通化と再利用に使える。
0008デフォルトの名無しさん (ワッチョイ 2fc2-sj7o)
2016/07/11(月) 21:23:00.72ID:O0wDeDe60ヘッダに書いておけば後で修正が必要なときに
ヘッダだけ直せば良いので分かりやすいし、
externが書かれているソースファイルを何個も開く必要が無くて楽。
0009デフォルトの名無しさん (ワッチョイ c73c-aw3J)
2016/07/11(月) 22:34:52.74ID:dRSE2ALS00010デフォルトの名無しさん (ワッチョイ efc8-Bfmi)
2016/07/11(月) 23:37:00.19ID:xgdGYS+A0>>8
>>9
回答ありがとうございます。
ヘッダに書くやり方の方が何かとよさそうですね。
0011デフォルトの名無しさん (ワッチョイ b37b-zDc6)
2016/07/12(火) 07:31:15.36ID:bfn2nev70でも、ヘッダファイルに書く時は必ずexternをつけなくてはいけない。
エラーにはならないけど、その変数を使っていない場合、不要なメモリ領域を確保する事になる。
0012デフォルトの名無しさん (ワッチョイ 333c-oo3f)
2016/07/12(火) 08:02:27.10ID:exXbmFuJ0コレってアリですか?
ありなら配列strは添字の何番まで使えますか?
0013デフォルトの名無しさん (ドコグロ MM1f-oo3f)
2016/07/12(火) 08:13:18.50ID:JycYw7IdMあり
文字列+1
0014デフォルトの名無しさん (ワッチョイ 333c-oo3f)
2016/07/12(火) 08:16:41.31ID:exXbmFuJ0ありがとうございます
一点質問ですが、これって文字列abcdefが格納されてるメモリのアドレスをstrに渡してるんですか?
0015デフォルトの名無しさん (ワッチョイ ef52-oo3f)
2016/07/12(火) 08:30:15.74ID:JYiwCJ4200016デフォルトの名無しさん (ドコグロ MM1f-oo3f)
2016/07/12(火) 08:41:47.41ID:JycYw7IdMです
0017デフォルトの名無しさん (ワッチョイ 7389-oo3f)
2016/07/12(火) 08:47:59.97ID:LVMPTzqO0厳密にはメモリそのもの。
0018デフォルトの名無しさん (ワッチョイ b37b-zDc6)
2016/07/12(火) 08:49:19.16ID:bfn2nev70ちげーよ。
> 文字列abcdefが格納されてるメモリのアドレスをstrに渡してるんですか?
こうしたいなら
char str* = "abcdef";
0019デフォルトの名無しさん (ドコグロ MM1f-oo3f)
2016/07/12(火) 09:50:51.10ID:JycYw7IdM文字列リテラルのコピーと文字列リテラルのアドレスのコピーの違いか
すまんかった
0020デフォルトの名無しさん (ササクッテロ Sp1f-IrUP)
2016/07/12(火) 13:10:39.10ID:VCBlqBnlpアイディアと情熱のある方のみ、お願いします。
http://good-hill.xsrv.jp/?id=661213
『 グッドエンジェル 』
投資家と起業家のマッチングサービス
有名投資家からベンチャーキャピタルまで参加されています。
0021デフォルトの名無しさん (JP 0H3f-bUQF)
2016/07/12(火) 13:33:38.56ID:uw5z64TWHbuf[n][0][strlen(buf[n][0]) - 1] = '\0';
fgets(buf[n][0],256,stdin);
buf[n][0][strlen(buf[n][0]) - 1] = '\0';
このように毎度初期化してもfgetsがスルーされるんですが
ちゃんと書き込めるようにするにはどうすればいいです?
0022デフォルトの名無しさん (ガラプー KK5f-fi14)
2016/07/12(火) 14:10:55.20ID:Cxh+BODLKbufの定義は?
fgetsはファイルから一行データを読み込む関数。
0023デフォルトの名無しさん (ワンミングク MMbf-Lka5)
2016/07/12(火) 14:21:59.78ID:AKKAWUKIMバッファがアドレス渡しになってないのでは
0024デフォルトの名無しさん (ワンミングク MMbf-Lka5)
2016/07/12(火) 14:37:30.14ID:AKKAWUKIMfgets(buf,256,stdin);
buf[strlen(buf)- 1] = '\0';
で動いたよ
もとのコードは
buffが三次元っぽいから頭に&いるんじゃね?
0025デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)
2016/07/12(火) 15:04:51.20ID:N9hLb2lJ0fgets()は終端文字を自動的に入れるので
1行目と3行目の全く同じ(しかも間違っている)処理はそもそも不要
入力が256バイト以上でも255バイトまで書き込んで最後に終端を置く
char s[] = "abcde";
であればstrlen(s)の結果は5、終端を入れるべきはs[5]、つまり同じ位置
そしてstrlen(s)はそもそも正しく終端されていなければ正しい結果を返せない
よって不要な処理
前の人の言う通りbufの定義(二次元配列?)かfgets()への指定が間違っていると思われる
0026デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)
2016/07/12(火) 15:45:48.25ID:N9hLb2lJ0終端の1文字前が改行と決め打ちする発想がなかったので全く気付かなかった
CR+LFの処理系もあるし前述の通り255バイト+終端のケースでは単に破壊することになる
strrchr使うなり後ろからポインタ回すなりして\r\nを探そう
0027デフォルトの名無しさん (ワンミングク MMbf-Lka5)
2016/07/12(火) 16:09:40.56ID:AKKAWUKIMおれも改行コード探して消すほうがいいと思うよ
0028デフォルトの名無しさん (ワッチョイ 5f5b-bGhr)
2016/07/12(火) 16:47:39.50ID:tN8rKWwC021です
定義は
char buf[N][16][256]
調べた結果、もともと改行も入ってなかったです
0029デフォルトの名無しさん (ワッチョイ ef3c-Bfmi)
2016/07/12(火) 17:02:46.65ID:EyB/ksrk0何をもって fgetsがスルーされる と判断したのか
0030デフォルトの名無しさん (ワッチョイ 5f5b-bGhr)
2016/07/12(火) 17:25:12.23ID:tN8rKWwC0問題箇所の周辺のソースです
printf("IDは%dです。登録する名前を入力してください\n",n);
fgets(buf[n][0],256,stdin);
buf[n][0][strlen(buf[n][0]) - 1] = '\0';
for(l=0;l<N;l++){
実行するとprintfが実行されるとfor文の条件式の処理をしてしまうためです
このとき、buf[n][0]は常に\0です
0031デフォルトの名無しさん (ワッチョイ ef3c-Bfmi)
2016/07/12(火) 17:43:23.99ID:EyB/ksrk02) n は 0〜N-1 の範囲にあるのか?
buf[n][0] はまだ配列なんだけど それを 常に\0 と評価してるのは何か間違っていないか?
(なお buf[n][0][0] が \0 なら判る)
0032デフォルトの名無しさん (ワッチョイ 5b7b-Cxy9)
2016/07/12(火) 18:16:54.85ID:N9hLb2lJ0https://paiza.io/projects/Nka7ld65WDSimDBx7ltj_A
できるだけ丁寧に書いたつもりなので何をどうしてるか処理を追ってみて
0033デフォルトの名無しさん (ワッチョイ b37b-zDc6)
2016/07/12(火) 19:43:02.24ID:bfn2nev700034デフォルトの名無しさん (ワッチョイ bf13-Jsl5)
2016/07/12(火) 20:22:28.24ID:9DVDbmDn0つ仮定義
0035デフォルトの名無しさん (ワッチョイ f748-Lka5)
2016/07/12(火) 23:24:17.93ID:3bEOQXVF0あと試しにfgetsを何回か連続で書いてみる
前処理のキー入力のエンターがたまってて
fgetsがスルーしてるように見えるだけだったり
つかデバッガ使えないの?
0036デフォルトの名無しさん (ワッチョイ f748-Lka5)
2016/07/12(火) 23:28:33.79ID:3bEOQXVF0待たずに先に進んでしまうってことだよね?
スルーって書いてるからみんな混乱させられてる気がする
0037デフォルトの名無しさん (ワッチョイ a7d4-Bfmi)
2016/07/13(水) 02:16:12.05ID:UwzarzH20int n = 0;
char buf[2][16][256];
printf("IDは%dです。登録する名前を入力してください\n", n);
fgets(buf[n][0], 256, stdin);
printf("入力値:%s", buf[n][0]);
}
これでやってみたけど、うまく動いたぞ。
VS2015コミュ障エディション
0038デフォルトの名無しさん (ワッチョイ ef52-oo3f)
2016/07/13(水) 03:58:06.24ID:QAw5IbxT0肝心なとこを隠してるのはわざとなのか?
超初心者なら再現するコード全体を示そう
0039デフォルトの名無しさん (ワッチョイ 5f5b-bGhr)
2016/07/13(水) 07:22:26.91ID:1COXLudy0ありがとうございました
解決しました
fgetsの前にscanfを使ってしまって
stdinに改行が残っていたのが原因でした
0040デフォルトの名無しさん (ワントンキン MMbf-Lka5)
2016/07/13(水) 11:20:58.45ID:i+jeO//LM解決してよかったね
0041デフォルトの名無しさん (ガラプー KK9f-cWdj)
2016/07/13(水) 23:39:36.97ID:H0JuY83uK0042デフォルトの名無しさん (ワッチョイ 72e5-EKBs)
2016/07/15(金) 18:06:24.72ID:4+NaqmOj0http://codepad.org/1Y5bBwpS
やりたかったことは苦しんで覚えるCの「http://9cguide.appspot.com/11-q.html」で
答えもみてしまったが自分の記述が近くまで行ってたきがするので
エラーメッセージの意味を理解したいです
0043デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/15(金) 18:37:33.93ID:APEZh3N000044デフォルトの名無しさん (ワッチョイ f053-EqXU)
2016/07/15(金) 18:43:01.45ID:VGjMsZcZ0で自分としては完動までにどれくらい近いイメージ?
0045デフォルトの名無しさん (ワッチョイ e63c-8xJT)
2016/07/15(金) 18:48:02.31ID:RyMw/acV0「オブジェクト参照がオブジェクトインスタンスに設定されていません。」
って類のエラーは出ないような気がするがー
(C++ならば可能性アリ)
0046デフォルトの名無しさん (スププ Sd28-Hpnq)
2016/07/15(金) 18:50:11.19ID:KeEbjUvqdエラーは26行目です
0047デフォルトの名無しさん (ワッチョイ e63c-8xJT)
2016/07/15(金) 18:54:22.64ID:RyMw/acV021行目 } で閉じてないから、コンパイラさんがいろいろ混乱してわけわかなエラーメッセージを出してるっぽい
0048デフォルトの名無しさん (ワッチョイ 4448-/weA)
2016/07/15(金) 19:00:15.53ID:APEZh3N00http://i.imgur.com/1PA2nZJ.jpg
どこがわからんか言ってくれたらアドバイスできるかも。
0049デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/15(金) 19:02:29.64ID:APEZh3N00うちの環境では必要だったけど
0050デフォルトの名無しさん (ワッチョイ e63c-8xJT)
2016/07/15(金) 19:03:22.01ID:RyMw/acV0旦那 11行目修正漏れ scanf は in で受けなきゃ
0051デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/15(金) 19:08:08.18ID:APEZh3N00おおぉ、すまん
再現させるのにnenにしたままだった
こっぱずかしい!
0052デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/15(金) 19:13:24.04ID:APEZh3N00でよろしく
0053デフォルトの名無しさん (スププ Sd28-Hpnq)
2016/07/15(金) 19:19:58.96ID:KeEbjUvqd抜け落ちているということにすらコンパイラも自分も気づけなかったらこういうエラーになるんですね...
>>48 fflashというのはまだ知らないですが
まず変な設計するとそれを補うことしないといけないみたいな感じですかね
薄々感じていたのですがこれまでやったところを
もっと定着させないとダメみたいですね...
練習問題のドリルが欲しい.....
0054デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/15(金) 19:25:56.86ID:APEZh3N00あと関数への引数受け渡しあたりを復習してみるとか
0055デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/15(金) 20:34:36.34ID:vfo6HyBX0http://codepad.org/xI5gvDqK
もう解決したっぽいけどせっかく書いたので一応晒しとく
scanf()は使いこなすの難しいのにどうして初心者向けの演習で使わせようとするのか
その教えが入力バッファに改行が残って混乱する人を生み出すというのに
0056デフォルトの名無しさん (ブーイモ MM28-4wno)
2016/07/15(金) 22:51:02.64ID:15guYmOWMscanf使わないと文字列の解析から教えないといけなくなるので
入力処理の難易度が跳ね上がるのよね
そうなると文字の入力だけでできる簡便な処理しか題材にできなくなる
0057デフォルトの名無しさん (スッップ Sd28-4wno)
2016/07/15(金) 23:56:18.11ID:TXZYN8trd0058デフォルトの名無しさん (ワッチョイ c5c1-28gx)
2016/07/16(土) 10:30:22.13ID:FROnu1u70int *p と void *q を宣言したとして
int *p はアドレス情報とint型という情報
void *q はアドレスのみの情報を格納。
printf("%zu", sizeof(*p));
printf("%zu", sizeof(*q));
と、すると順に4バイトと1バイトになります。
ここで、
int *p;
int a;
p = &a;
とします。この時、pは変数aのアドレス情報を持ちますが"int型"という情報を持つ必要があるんでしょうか?int aとされているならアドレスを元にそこへアクセスすれば良いだけに思えるのですが、この時アクセスした先が"int型"ということを*pは知らないので教えてあげる必要がありint *pとされているのでしょうか?
また、"int型"この情報を持つだけで型の情報を持たないvoid *qと3バイト分も領域が違うものなのでしょうか?
そもそも自分のポインタ変数に対する格納される情報に間違いがありそうなので、型有りポインタと型無しポインタそれぞれ格納される情報を教えたください
0059デフォルトの名無しさん (ワッチョイ e652-dT5v)
2016/07/16(土) 10:54:14.01ID:Gp5nPJYi0sizeof(*q) は、sizeof(void) のことであってポインタのサイズではない。
p = &a のときに、pにも&aにもint型へのポインタという情報があって冗長じゃないか
という疑問については、確かに冗長だがそれによってプログラムミスを防ぐ効果もある。
(コンパイル時にバグに気づける)
あと、void *は型なしポインタではなくて、void *型のポインタ。
0060デフォルトの名無しさん (ワッチョイ e64e-MgGc)
2016/07/16(土) 10:58:00.38ID:VajJMKpI0だったっけ?
0061デフォルトの名無しさん (ワッチョイ d194-i5w2)
2016/07/16(土) 11:16:24.55ID:3A+r0QSz00062デフォルトの名無しさん (ワッチョイ 697b-X3D0)
2016/07/16(土) 11:17:25.78ID:rkjY8WzF0ポインタの指す先は型のサイズに基づいて指すアドレスが変わる
例の場合、p++はもとのアドレスの4バイト先、q++は元のアドレスの1バイト先を指す
0063デフォルトの名無しさん (ワッチョイ 697b-X3D0)
2016/07/16(土) 11:20:49.70ID:rkjY8WzF0++pと++qが新しいアドレスを指すと言った方が正しいので訂正
0064デフォルトの名無しさん (ワッチョイ 1191-4wno)
2016/07/16(土) 11:57:19.83ID:EnwUkk5N0リンクするのに型情報必要ないかな?
0065デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 12:03:31.56ID:jJTxEvtt0この2つ(とレジスタ)があれば全ての処理は可能
型というのは例えば同じサイズだけど異なる目的(型)の領域に対しての代入や比較を
自動的に警告させるためにプログラマがコンパイラへ与える付加情報にすぎない
0066デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 12:41:48.00ID:7cBV7ERq0型情報なくてもいいと言うなら
a = b;
を x86 のコードにコンパイルしてみ
0067デフォルトの名無しさん (ワッチョイ c57b-UqMW)
2016/07/16(土) 12:55:27.23ID:4Vy0QStp0その質問にvoid *を使うのは不適切
>printf("%zu", sizeof(*q));
これはgccの拡張、厳密に規格に従うオプション-pedanticつければエラーになる
char *q;とすべきだね
char *q;だった時の回答は教えたがりの諸兄に任せる。
0068デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 12:55:55.78ID:jJTxEvtt0宣言がないのでエラー
0069デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 13:08:49.20ID:7cBV7ERq0宣言の部分は隠してあるんだよ
それぐらいわかるでしょ?
0070デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 13:19:22.64ID:jJTxEvtt0aとbのサイズは?
0071デフォルトの名無しさん (ワッチョイ e63c-8xJT)
2016/07/16(土) 14:29:06.06ID:S8VKGqF20不要
0072デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 14:33:35.85ID:7cBV7ERq04byte
0073デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 14:41:52.91ID:jJTxEvtt0mov -0xc(%rbp),%ecx
mov %ecx,-0x8(%rbp)
0074デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 14:55:55.75ID:7cBV7ERq0a = b + 1;
は?
サイズは a, b 共に 4byte でいいよ
0075デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 15:01:26.32ID:jJTxEvtt0mov -0xc(%rbp),%ecx
add $0x1,%ecx
mov %ecx,-0x8(%rbp)
0076デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 15:47:07.25ID:7cBV7ERq00077デフォルトの名無しさん (ワッチョイ bc19-8xJT)
2016/07/16(土) 16:03:52.61ID:+FKRslC000078デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 16:09:04.69ID:jJTxEvtt0浮動小数点数演算は元々別ユニットの命令で特別扱いだよ
昔のx86ならx87コプロセッサ命令だし今のx86ならsseやavx命令への最適化のために型情報が使われる
要点は変数に型情報を保持しているわけではなく、それ用の命令に翻訳されるということ
0079デフォルトの名無しさん (ガラプー KK6b-RBrK)
2016/07/16(土) 16:10:00.75ID:Eh6sqzJAK0080デフォルトの名無しさん (ワッチョイ f06c-9M1e)
2016/07/16(土) 16:22:58.85ID:hhY8dn4u0カルトへ向かうはずの非難の矛先を逸らすこと。
国益に反することを言ったり、対立を煽ろうとするので放置し難いが、
主義思想についての洗脳を受けているわけではなく、フリをしているだけなので、
言い負かされてもダメージを受けた様子もなく、論点をすり替えられるかスルーされるだけ。
まともに相手をしてはならない。
0081デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 18:05:21.13ID:7cBV7ERq0はあ?
> アドレスとサイズの2つのみ
とか言ってたんじゃねーのかよ w
0082デフォルトの名無しさん (ワッチョイ e64e-MgGc)
2016/07/16(土) 19:04:52.52ID:VajJMKpI0変数の宣言を見てサイズを決めるようなバイナリになるの?
0083デフォルトの名無しさん (ワッチョイ e64e-MgGc)
2016/07/16(土) 19:13:58.29ID:VajJMKpI00084デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 19:55:11.07ID:jJTxEvtt0それとも他の動的型付けな言語の話?
後者なら何らかの形(例えば文字列は数値もNaNも表現可能)で値を保持して
要求箇所に応じて内部メソッドで適切に変換した値を返すことで実現する
つまり内部ではあくまで静的な型の組み合わせによって表現している
当然だけど型違いでエラー吐かないように言語で文法的サポートが必須
0085デフォルトの名無しさん (ワッチョイ 7213-ltmW)
2016/07/16(土) 20:04:09.82ID:WRTjaYnm0>サイズじゃなく型が動的に決まるケースなんてCであるの?
ない
0086デフォルトの名無しさん (ワントンキン MMd0-4wno)
2016/07/16(土) 20:13:07.37ID:USFa2DA8M0087デフォルトの名無しさん (ワッチョイ 96c2-E7P/)
2016/07/16(土) 20:56:39.02ID:MXamywZj0サイズじゃない!(サイズじゃない!)
本当のことさ〜♪ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0088デフォルトの名無しさん (ワッチョイ e63c-4wno)
2016/07/16(土) 21:00:50.43ID:7cBV7ERq0sockaddr って言うか union やね
0089デフォルトの名無しさん (ワッチョイ e53c-4wno)
2016/07/16(土) 21:16:27.29ID:4GYB66K700090片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK6b-7GzA)
2016/07/16(土) 21:46:33.17ID:DpW5llC4Kfgetsで読み込むと文字列になるだろ?
sscanfは文字列を読み込むだろ?
そういうことさ
0091デフォルトの名無しさん (ワッチョイ bc42-8xJT)
2016/07/16(土) 21:50:59.71ID:j2tRuQPr00092デフォルトの名無しさん (ワッチョイ 8ad5-/weA)
2016/07/16(土) 21:52:51.97ID:zmZ3YuJA0http://piposozai.blog76.fc2.com/blog-category-7.html
■ねくらファンタジーマップチップ(無料版)
http://piposozai.blog76.fc2.com/blog-entry-350.html
イラストアイコン素材集Vol.1 (総数900点以上(380点+色違い、模様違いなど差分549点)
http://www.dlsite.com/home/work/=/product_id/RJ154598/?deqwas_inflow=RJ165626&deqwas_tg=item_view
ねくらファンタジーマップチップ素材集
http://www.dlsite.com/home/work/=/product_id/RJ165626.html/?unique_op=af
ねくらファンタジーマップチップ素材集エクストラダンジョン
http://www.dlsite.com/home/work/=/product_id/RJ177740.html
0093デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/16(土) 22:38:32.88ID:QHzvOBTx00094デフォルトの名無しさん (ワッチョイ e63c-8xJT)
2016/07/16(土) 22:51:25.12ID:S8VKGqF200095デフォルトの名無しさん (ワッチョイ f08b-L3Fl)
2016/07/16(土) 22:59:08.29ID:+8wH/95N0いくらなんでもRFC4180ぐらいLL(1)程度で解析には十分だろうから、
fgetc()で1文字先読み・
Σ={ カンマ、数値、文字列リテラル、真のレコード1行分の終わりとしての改行 }ぐらいの終端記号のパーサとして書いた方ががが
0096デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/16(土) 23:53:11.52ID:jJTxEvtt0しかも改行デリミタクォートを含まないなら文字列をダブルクォートで囲まなくていいという仕様だから
いきなり出現するマルチバイト文字とかエスケープも要考慮だし
行単位のfgets()やsscanf()ではとても処理できないね
0097デフォルトの名無しさん (ワッチョイ c5c1-28gx)
2016/07/17(日) 09:21:53.38ID:v2nuo0Rr0>>67
ありがとうございました。
0098デフォルトの名無しさん (ガラプー KK6b-RBrK)
2016/07/17(日) 18:45:41.06ID:QDfOESrCK0099デフォルトの名無しさん (ワッチョイ 96c2-E7P/)
2016/07/17(日) 19:20:01.60ID:hmv18zqb00100デフォルトの名無しさん (アウアウ Sa09-8xJT)
2016/07/18(月) 03:40:23.89ID:XwtdLS3qaこのプログラムが何をするものか教えてください。
トレンドcsvまでは作られるのですが、csvに何も書き込まれません。
0101デフォルトの名無しさん (ワッチョイ e652-dT5v)
2016/07/18(月) 08:02:09.12ID:qU2fgLG90よく見てないけど、「1年分のデータを一斉に30分平均にするプログラム」でしょ
入力ファイルの
C:\\source\\元データ\\平成%02d年度分\\%04d\\%02d\\%02d\\0001\\0001_%02d.csv
が無いんじゃない?それでfgets()で異常終了してると予想
0102デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/18(月) 11:04:31.36ID:rVrfyiOP0sprintf(file_name,"C:\\source\\元データ\\平成%02d年度分\\%04d\\%02d\\%02d\\0001\\0001_%02d.csv",year+1,seireki+1,month,date,name);
} else if(month>=4){
sprintf(file_name,"C:\\source\\元データ\\平成%02d年度分\\%04d\\%02d\\%02d\\0001\\0001_%02d.csv",year,seireki,month,date,name);
}
年と年度の区別が曖昧じゃないか?
データを年で保持しているならパスの"平成%02d年度分"はおかしい
データを年度(4月〜翌3月)で保持しているならyear+1とseireki+1はおかしい
プログラム以前に入力データの正当性が疑問だ
0103デフォルトの名無しさん (アウアウ Sa09-8xJT)
2016/07/18(月) 15:28:13.39ID:LiaA67Lea回答ありがとうございます。
元データのファイルは既に格納しています。
data、powerやsum_powerを表示してみたら値は出てくるので
元データからの読み込みは成功していると思うのですが……
0104デフォルトの名無しさん (アウアウ Sa09-8xJT)
2016/07/18(月) 15:38:56.62ID:LiaA67Lea回答ありがとうございます。
年度は1〜12月で保持しているみたいです。
なので、その部分に誤りはないのかと思います。
0105デフォルトの名無しさん (アウアウ Sa09-8xJT)
2016/07/18(月) 15:47:48.35ID:LiaA67Lea45、5、45、10、45、5、45、50分平均にしたいです(時間割です。)
元データの 「0001_%02d.csv」一つには
1分ごとのデータ×60個が入っています。
if(n%30 == 0 && n!=0){
power[j]=(s/30.0);
sum_pow+=power[j];
s=0;
j++;
}
30分平均はこの辺りで処理していると思われるので
if文を使えば何とかなるような気がしますが上手くいきません。
(その前にトレンドcsvに書き込まれない為、結果も分かりません。)
こちらもよろしくお願いします。
0106デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/18(月) 16:12:28.25ID:rVrfyiOP01月〜12月で保持しているなら"平成%02d年度分"じゃなくて"平成%02d年分"だね
>>105
>45、5、45、10、45、5、45、50分平均にしたいです(時間割です。)
…えーと、つまり任意の時間単位で平均を出したいということかな
とりあえずファイルに書き込まれないのは115行目でファイルクローズしちゃってるからなんだけど
典型的な初心者ソースで最終的にどんな出力を得たいのかよくわからん
まずファイルじゃなくて標準出力に出して確認してみたら?
fqのところをstdoutにすれば出てくるから
0107デフォルトの名無しさん (スッップ Sd28-4wno)
2016/07/18(月) 16:17:51.44ID:WRg19xgxd0108デフォルトの名無しさん (ワッチョイ b0a3-dnI1)
2016/07/18(月) 16:26:10.99ID:wUM6RSEB0お休みのところご対応ありがとうございます
私は明日からの出社となりますので引き続きよろしくお願いします
0109デフォルトの名無しさん (ワッチョイ 96c2-E7P/)
2016/07/18(月) 16:26:26.79ID:sQhm72YI0そのデータのサンプルでも無いと
どこまで正しく動いているのかいないのか
分からないよ。ということでその元データファイルも
提出しなさい。そうすれば何故csvに書き込まれないかも
すぐ分かる。
0110デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/18(月) 19:02:40.28ID:rVrfyiOP0http://www.dotup.org/uploda/www.dotup.org948664.c.html
入力も出力も何やらようわからんのでとにかく適当に分割した結果
案の定ほぼ別物になってしまったがいちおう晒しておこう
出力のフィールド数が5だったり6だったりしたので6に合わせた(最後に,を追加)
0111デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/18(月) 19:07:50.42ID:rVrfyiOP01つ訂正125行目に以下を挿入で
if (m >= 60) m = 0;
0112デフォルトの名無しさん (ワッチョイ 3d3f-4wno)
2016/07/18(月) 20:28:19.01ID:0zkecraf00113デフォルトの名無しさん (アウアウ Sa09-8xJT)
2016/07/18(月) 21:09:25.72ID:szyRJqnOa回答ありがとうございます。
30分平均は成功しました。
…えーと、つまり任意の時間単位で平均を出したいということかな
その通りです。現在のプログラムが30分平均にするだけなので
学校の時間割通りの平均値を出したいのです。
0114デフォルトの名無しさん (アウアウ Sa09-8xJT)
2016/07/18(月) 21:11:21.77ID:szyRJqnOaわざわざありがとうございます……
参考にさせて頂きます!
0115デフォルトの名無しさん (JP 0H78-8xJT)
2016/07/19(火) 15:09:32.42ID:B5rQ35khH+-*/を選んで、計算するっていうのを作りました
実数と整数を、自動で判別するプログラムはどうやって作ればいい?
0116デフォルトの名無しさん (ワッチョイ e64e-MgGc)
2016/07/19(火) 15:10:56.48ID:yinu3gB500117デフォルトの名無しさん (ワッチョイ bc4f-8xJT)
2016/07/19(火) 15:18:50.87ID:qZJsh9sY01[enter] 2[enter] /[enter] では(1/2 を与えた) 解出力は 0
1.0[enter] 2[enter] /[enter] では(1.0/2 を与えた) 解出力は 0.5
そういう話?
色々まんどくせーな
0118デフォルトの名無しさん (ワンミングク MMd0-8KjE)
2016/07/19(火) 15:27:44.24ID:oTiv6R7LM小数点があれば実数、なければ整数って感じ?
0119デフォルトの名無しさん (ガラプー KK6b-rwUM)
2016/07/19(火) 15:31:34.46ID:iokl1A3KK納品物でもなさそうだし再帰降下でもええやろ
0120デフォルトの名無しさん (ササクッテロ Sp3d-VzEl)
2016/07/19(火) 15:55:09.65ID:11V/uDAvp0121デフォルトの名無しさん (ワッチョイ bc4f-8xJT)
2016/07/19(火) 16:02:28.29ID:qZJsh9sY0そうでなければ実数演算して結果を実数として push
型と値がペアになったスタックが欲しいね
0122デフォルトの名無しさん (ドコグロ MMcb-4wno)
2016/07/19(火) 19:46:39.89ID:pfxIVr9eM0123デフォルトの名無しさん (スッップ Sd28-4wno)
2016/07/19(火) 19:52:44.14ID:vQtM83Qad0124デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/19(火) 20:15:23.99ID:G27E9NlY0返さなきゃ価値がない電卓アプリではfloatやdoubleなんて使ってられないから
実数ライブラリをどこかから入手するか自前で組むかすることになる
初心者にとっては想像以上にハードルが高い
0125デフォルトの名無しさん (ドコグロ MMcb-4wno)
2016/07/19(火) 20:29:35.59ID:pfxIVr9eM0126デフォルトの名無しさん (ワッチョイ 3ec0-jb5v)
2016/07/19(火) 21:30:17.62ID:4UFwoQo300127デフォルトの名無しさん (ワッチョイ 7213-ltmW)
2016/07/19(火) 21:41:35.17ID:NVpJdz2s01÷3=
0128デフォルトの名無しさん (ワッチョイ 95a2-4wno)
2016/07/19(火) 21:43:22.81ID:ojHtJiDQ0判定要素増やすだけだから特に難しいことないと思うけど。
0129デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/19(火) 22:19:18.65ID:6Fnm1ks20そもそもそこまで求めてないと思うし
0130デフォルトの名無しさん (アウアウ Sa35-4wno)
2016/07/19(火) 23:45:51.44ID:XrfHQPHWa0131デフォルトの名無しさん (ワッチョイ a175-wLF7)
2016/07/20(水) 01:38:28.55ID:1BoQm6Lx00132デフォルトの名無しさん (ドコグロ MM54-4wno)
2016/07/20(水) 06:49:34.79ID:OVKR6W5bMエラーでいいんじゃね?
>>129 の言う通りそこまで求められてないだろうし
>>127
昔有理数クラス作って遊んでたことを思い出したわ
0133デフォルトの名無しさん (ワッチョイ 3ec0-jb5v)
2016/07/20(水) 06:58:25.79ID:jYzKo/4A00134デフォルトの名無しさん (ワッチョイ 7213-ltmW)
2016/07/20(水) 07:07:45.24ID:xCE8dMV30有理数クラス,いいねえ
こっちは,最近ようやく多バイト長可変のBigIntegerクラスを実装できて喜んでいる
こういうのは一回やっておくべきだね
0135デフォルトの名無しさん (ワントンキン MMd0-4wno)
2016/07/20(水) 07:11:48.09ID:RcqlqcwVM後一息だな
0136デフォルトの名無しさん (ワッチョイ 5efa-X2Kd)
2016/07/20(水) 07:23:50.16ID:SyPKScZG0でググってみたらいいんじゃないかな。
がんばっていくつか読んでみれば君の知りたいことは全部出てくると思うよ。
0137デフォルトの名無しさん (ワッチョイ bb7b-fbyB)
2016/07/20(水) 19:43:11.14ID:kI9UQ5rU0「決めないことに決めました」て決まりとしておかしいだろガキのヘリクツじゃねーか
せめて「動作を保証しない」とでも明言されればコンパイラで警告出すこともできるのに
するもしないも決まってないから我関せずになっちゃうんだよ
0138デフォルトの名無しさん (JP 0H15-4wno)
2016/07/20(水) 20:18:22.67ID:Np7bYZQ7H0139デフォルトの名無しさん (ドコグロ MM54-4wno)
2016/07/20(水) 20:59:09.16ID:OVKR6W5bM> 「(どんな動作をするかは)決めないことに決めました」
って言うのが「動作を保証しない」ってことなんだが...
0140デフォルトの名無しさん (ワッチョイ 7213-ltmW)
2016/07/20(水) 21:26:11.82ID:xCE8dMV30大人になればわかる
0141デフォルトの名無しさん (ワッチョイ e53c-4wno)
2016/07/20(水) 21:46:51.77ID:/245QB6g00142デフォルトの名無しさん (ブーイモ MMb1-4wno)
2016/07/20(水) 22:00:19.20ID:juPYLb/MM0143デフォルトの名無しさん (ワッチョイ e63c-8xJT)
2016/07/20(水) 22:06:26.70ID:OHJTpdzQ00144デフォルトの名無しさん (ワッチョイ 4448-8KjE)
2016/07/20(水) 22:22:28.82ID:idTmHzsk00145デフォルトの名無しさん (ブーイモ MM28-4wno)
2016/07/20(水) 22:36:01.98ID:aP+aqabFM0146デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/21(木) 21:18:50.48ID:1ZCtMixLan = sscanf(buf, "%s %d %s %s",
data[count].name, &data[count].birth,
data[count].tel, data[count].mail);
count++;
人物のデータ、名前、生年月日、電話番号、メールアドレスを格納する構造体変数dataがあります。
fgetsでファイルからデータをbufに読み込み、bufから各情報をsscanfで格納していきます。
このときループの中で、sscanfが毎回bufの先頭から読んでしまうため、同一人物のデータがすべて書き込まれてしまいます、次のデータに移動したい場合はどうすればよいでしょうか?
データファイルは
taro 19940625 123-4567 [email protected]
のように書いてあります。
0147デフォルトの名無しさん (ワッチョイ 6f3c-iqWO)
2016/07/21(木) 21:35:26.49ID:PLbz3kCO0多分ループの中に fgets を入れていないのが主因だと思うけどー
for() {
fgets()
...
n = sscanf()
count++;
}
0148デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/21(木) 21:52:07.96ID:1ZCtMixLaループのそとでfgetsを使いストリームからbufにデータをいれます。
ループ内でsscanfを使ってbufに格納されたデータを取り出していきます。
fgets(buf, STRING_MAX, fp);
while(1){
n = sscanf(buf, "%s %d %s %s",
data[count].name,&data[count].birth,
data[count].tel, data[count].mail);
count++;
次のデータとは
taro 19940625 123-4567 abc@ef nanaco 19900514 321-7654 fec@ba
....
と、データが続いてますが太郎の情報についてはうまく読み取れますが構造体配列の2番目以降についても太郎の情報が格納されてしまいます。
ループするたびにsscanfでbufから読み取っているので当たり前と言えば当たり前なのですがこれをうまくシフトさせたいのです。
0149デフォルトの名無しさん (ワッチョイ 6f3c-iqWO)
2016/07/21(木) 22:03:47.94ID:PLbz3kCO0↓ここの区切り文字が スペースじゃなくて、もっとユニークだったらよかった
taro 19940625 123-4567 abc@ef nanaco 19900514 321-7654 fec@ba
char *q;
char *top = buf;
while () {
sscanf(top, ......)
q = strstr(top, data[count].mail);
if (q == NULL) break;
top = q + strlen(data[count].mail);
count++;
}
top から 最終項の mail の文字列さがして、
次は mail の文字列の次からに
0150デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/21(木) 22:27:01.26ID:1ZCtMixLaありがとうございます。
把握は出来てないのでこれをもとに勉強してみます!
ちなみにデータが
taro 19940625 123-4567 abc@ef nanaco 19900514 321-7654 fec@ba
と改行されていても可能でしょうか?
0151デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/21(木) 22:28:15.58ID:1ZCtMixLaあ、ミスです...
taro 19940625 123-4567 abc@ef
nanaco 19900514 321-7654 fec@ba
と、改行していても、です
0152デフォルトの名無しさん (ワッチョイ 6f3c-iqWO)
2016/07/21(木) 22:42:24.39ID:PLbz3kCO0sscanf の戻り値みてループから抜け出してるなら大丈夫なんじゃない? 知らんけど。
(ただ データの途中での改行は考慮されていないし、する気もない)
0153デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/21(木) 22:57:24.82ID:1ZCtMixLa有難うございます
0154デフォルトの名無しさん (ワッチョイ eb7b-hTcf)
2016/07/21(木) 23:06:19.98ID:61wNi/Kz0可能であれば入力データのほうを改行区切りに直したほうがラクだよ
fgets()周りのコードかあるいはもっと前の段階かはわからないが
0155デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/22(金) 02:33:44.54ID:GCLELjomaそうですね、そちらのほうがデータも見やすいのでそうします。
0156デフォルトの名無しさん (ワッチョイ e33c-eQ6f)
2016/07/22(金) 06:49:21.81ID:4AsDq8Wu0エフゲッツ?
0157デフォルトの名無しさん (ワッチョイ 6f52-3y5z)
2016/07/22(金) 07:29:23.48ID:+awE6fq00fgets "エフゲッツ" の検索結果・・・7件
fgets "エフゲットエス" の検索結果・・・6件
0158デフォルトの名無しさん (ワッチョイ 0ffa-uLMn)
2016/07/22(金) 11:59:17.86ID:jm48pVSJ0「fget エフゲッツ」はタイプミスと推測は出来るものの意味不明だし、
「エフゲッツって言うな!!!!!!!!!!!!!!!!!!!」なんてのもあるし。
まあ、自動車のDATSUNも海外では「ダッツン」と発音されてたなんて話もあるし、
通じるならどっちでもいいんじゃない?
0159デフォルトの名無しさん (ワンミングク MMdf-btrs)
2016/07/22(金) 12:58:30.08ID:g6gTwpPJM0160デフォルトの名無しさん (ワッチョイ a3a1-Bfh0)
2016/07/22(金) 13:59:29.40ID:b2ItDsZj0パーサ
英語ではパーズだったりする
パーザ
0161デフォルトの名無しさん (アウアウ Sa0f-vGuo)
2016/07/22(金) 14:21:08.61ID:wrVMluFHa素数判定をするアルゴリズム、ソートのアルゴリズムはサブ関数の形で実装することと必要条件があります
ソートはバブルソートの原型ができているので、乱数発生からそれから素数を20個抽出して配列に格納する方法を教えて欲しいです
0162デフォルトの名無しさん (ワッチョイ e7a3-+ugl)
2016/07/22(金) 15:12:23.94ID:+FwsnM/Y00163デフォルトの名無しさん (ワッチョイ 137b-6l4d)
2016/07/22(金) 15:59:38.71ID:h8F0jyA80指定したフォルダの中身のtxtフォルダを削除するアプリを作りたいんですが下記のコードを実行してみたら「指定されたパスが見つかりません」と出ます。
どこを直せばいいんでしょうか。
#include <stdlib.h>
int main(){
system(
0164デフォルトの名無しさん (ワッチョイ ebc9-eQ6f)
2016/07/22(金) 15:59:39.96ID:tN7lAqUk00165デフォルトの名無しさん (ワッチョイ ebc9-eQ6f)
2016/07/22(金) 16:00:02.85ID:tN7lAqUk0つーか宿題スレ案件だろこれ
0166デフォルトの名無しさん (ワッチョイ 137b-6l4d)
2016/07/22(金) 16:07:23.30ID:h8F0jyA80なぜか消えるので
system("del C:\\ユーザー\\owner\\Desktop\\○○\\*.txt\"");
return 0;
}
systemの行から下はこんな感じです
0167デフォルトの名無しさん (ワッチョイ b3dc-EIYa)
2016/07/22(金) 16:13:04.14ID:3i1N8rKm0正味この通りだとすると、パス文字列の末尾には " があるけど
先頭部分には " が書かれていない、からかナ?
0168デフォルトの名無しさん (ガラプー KKaf-/nZE)
2016/07/22(金) 16:25:05.45ID:Ah0vbZMhKC:\\ユーザー → \"C:\\Users
0169デフォルトの名無しさん (ワッチョイ 137b-6l4d)
2016/07/22(金) 16:31:11.16ID:h8F0jyA80ありがとうございます出来ました!
勉強になりました!
0170デフォルトの名無しさん (オッペケ Sr8f-eQ6f)
2016/07/22(金) 22:07:27.00ID:UUfx7UYRr順番に探していけば、ソートする必要無い気が
0171デフォルトの名無しさん (ワッチョイ b324-iqWO)
2016/07/22(金) 23:19:05.85ID:bbkxcVUY0int main()
{
int a,b,c,d,e;
a=10;
b=5;
a=a-b;
b=(a=a+1) * (b=b-1);
c=(a=a-1) * (b=b+1);
d=(a=a+1)%2;
e=a==b;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("%d\n",d);
printf("%d\n",e);
}
6になる理由教えて下さい。
0172デフォルトの名無しさん (ワッチョイ a3a1-LCC3)
2016/07/22(金) 23:39:22.97ID:Y0XhtuQG0見たまんまそうなってるからとしか
http://ideone.com/J7dk7q
疑問は明確化してくれるとこちらも応えやすい
0173デフォルトの名無しさん (ワッチョイ b324-iqWO)
2016/07/22(金) 23:44:10.79ID:bbkxcVUY0ありがとうございます!
続けて計算してました。
0174デフォルトの名無しさん (ワッチョイ eb7b-hTcf)
2016/07/23(土) 00:09:58.86ID:t4mh2O7O0任意の数xまでの素数フラグ付きリストを作るサンプルをうpしておく
愚直にメモリを使うのでx<=10000に制限してある
http://www.dotup.org/uploda/www.dotup.org951581.c.html
乱数を1つとってはis_primeで調べて素数ならソート対象の配列へってな感じか
あるいはさらに素数だけのリストに移し替えてx以下の範囲で適当に拾うか
tgmath.h使ってるのでgcc -std=c99 aaa.c -lmでな
0175デフォルトの名無しさん (ワッチョイ d748-btrs)
2016/07/23(土) 00:37:25.45ID:qQHOR94o010-5=5
5+1=6
5-1=5
5-1=6
そのまんまやね
0176デフォルトの名無しさん (ワッチョイ d748-btrs)
2016/07/23(土) 00:45:13.55ID:qQHOR94o0乱数を出して1と自分だけで割りきれるか判定したらいいのでは?
0177デフォルトの名無しさん (ワッチョイ b324-iqWO)
2016/07/23(土) 00:53:22.57ID:F2TFOxbv0int main(void) {
int i, sum;
for (i=0,sum=0; i<10; i=i+1) {
switch (i) {
case 3:
sum=sum+1;
case 7:
case 8:
sum=sum-1;
}
sum=sum+i;
}
printf("%d\n", sum);
}
43にどうしてなるか教えて下さい。
0178デフォルトの名無しさん (ワッチョイ e7a3-+ugl)
2016/07/23(土) 03:22:37.29ID:c//B47Cr0自分ではいくつになると思ったの?
それと switch-case 文では各 case の最後に break を入れないとそれ以降のコードも全部実行されちゃうから注意ね
この場合、i = 3 の場合に case 3 の sum = sum + 1 と case7, 8 の sum = sum -1 の両方が実行される
0179デフォルトの名無しさん (ワッチョイ c7d4-iqWO)
2016/07/23(土) 03:43:58.52ID:TpuZwDxO0いつも思うけどswitch文をなんでそんな仕様にしたのか不思議。
0180デフォルトの名無しさん (ワッチョイ 8fc0-YlVQ)
2016/07/23(土) 05:38:40.86ID:28P50g8Q00181デフォルトの名無しさん (ワッチョイ 6f3c-iqWO)
2016/07/23(土) 06:22:21.90ID:+oFTvXw10switch () {
case 8:
int a; ←文法エラー
...
}
switch () {
case 8:
{
int a; ←ブロックの先頭なのでOK
...
}
}
0182デフォルトの名無しさん (ワッチョイ f37b-UWqA)
2016/07/23(土) 06:48:20.00ID:ksMKg/p+0反面うっかりミスも招きやすいけど、もともとC言語はすべてプログラマ任せのそういう性格の言語
アセンブリ言語で条件ジャンプ命令使った経験があれば至極当たり前の構造だとわかる
break文使った場合の方が無条件ジャンプで飛びまくってかえって分かりにくくなる場合がある
0183デフォルトの名無しさん (ワッチョイ 0b5f-rOFf)
2016/07/23(土) 08:35:15.74ID:51hl0PjR0C99すらサポートしてない処理系カワイソス
0184デフォルトの名無しさん (ワントンキン MMdf-eQ6f)
2016/07/23(土) 08:56:42.57ID:v13krmBbM0185デフォルトの名無しさん (ワッチョイ 1351-wAF5)
2016/07/23(土) 09:06:52.08ID:V4JGvq9g00186デフォルトの名無しさん (ワッチョイ f37b-UWqA)
2016/07/23(土) 09:36:14.85ID:ksMKg/p+00187デフォルトの名無しさん (ワッチョイ 5f7b-tmF6)
2016/07/23(土) 10:02:24.98ID:QZGMm3e00visual c++がそれをサポートしたのは2013(2012?)からだが
0188デフォルトの名無しさん (ワッチョイ eb7b-hTcf)
2016/07/23(土) 12:14:17.03ID:t4mh2O7O0test.c:33:4: error: expected expression
int a;
^
c++14では問題ないしcの他の制御文でも問題ないからswitch文での(不自然な)特例かな
やはりcとc++は別の言語でc/c++なんてくっつけて表記するべきじゃないね
0189デフォルトの名無しさん (ワッチョイ eb7b-hTcf)
2016/07/23(土) 13:17:53.03ID:t4mh2O7O0自称c使い(実際はc++準拠のコードを書いているc++使い)が多そうね
c規格を早々に切り捨てたmsvc++やborland c++の功罪かな
0190デフォルトの名無しさん (ワッチョイ 7719-iqWO)
2016/07/23(土) 15:00:52.08ID:49PMPYy600191デフォルトの名無しさん (ワッチョイ 7742-iqWO)
2016/07/23(土) 15:02:02.32ID:G0Un6D3v00192デフォルトの名無しさん (ワッチョイ d748-btrs)
2016/07/23(土) 16:25:42.47ID:qQHOR94o0速いし
0193デフォルトの名無しさん (ワッチョイ 233b-eQ6f)
2016/07/23(土) 17:14:44.12ID:MoUEdc3s00194デフォルトの名無しさん (ワッチョイ ef9f-anJb)
2016/07/23(土) 17:40:42.99ID:FSNRvg2700195デフォルトの名無しさん (ワッチョイ 6f3c-eQ6f)
2016/07/23(土) 18:23:38.15ID:gWGXflXy00196デフォルトの名無しさん (ワッチョイ f37b-UWqA)
2016/07/23(土) 19:10:34.16ID:uPmAzTRR0構造化プログラミングもサポートします
外部ライブラリをリンクすることで機能を拡張することもできます
ただし基本的にレジスタは隠蔽されていますので直接操作することは出来ません
詳しくは操作マニュアルをご覧ください
0197デフォルトの名無しさん (アウアウ Sa0f-eQ6f)
2016/07/23(土) 19:17:00.00ID:zVD1ZjSeaこれの方が速い、とか言って分かりにくいコードを書くのは、
やめようぜ。
0198デフォルトの名無しさん (ワッチョイ 137b-eQ6f)
2016/07/23(土) 19:31:19.26ID:5I3ipfZz0http://uchukamen.com/HPCSharp/ParallelImageProcessing/Default.htm
0199デフォルトの名無しさん (ワッチョイ f37b-UWqA)
2016/07/23(土) 20:07:55.04ID:uPmAzTRR0Native Cの処理で更に0.1秒になったって記事にしか見えないんだが
トータルで50倍違うといってもほとんどがアルゴリズムの工夫による部分だな
0200デフォルトの名無しさん (ワッチョイ e33c-eQ6f)
2016/07/23(土) 20:14:04.68ID:nS1UrBYS00201デフォルトの名無しさん (ワッチョイ 63c1-ldQr)
2016/07/23(土) 20:20:03.54ID:wENbv+830http://ideone.com/iAbxlS
ファイルの中身はこのようにデータが改行で区切られているとします。
1 takasi 010-1111-1111 [email protected]
2 naoko 020-2222-2222 [email protected]
3 yusuke 030-3333-3333 [email protected]
0202デフォルトの名無しさん (ワッチョイ 7742-iqWO)
2016/07/23(土) 20:21:14.74ID:G0Un6D3v00203デフォルトの名無しさん (ワッチョイ eb7b-hTcf)
2016/07/23(土) 20:29:08.27ID:t4mh2O7O0白っぽいというのはrgbそれぞれいくつ以上を言っているのかその閾値を決めて(例えば#E0E0E0以上)
テキスト形式なら1行読んでsscanf()、バイナリならヘッダをスキップしてから3バイトずつfread()
とってきたrgb値をそれぞれ比較して全て閾値以上なら白っぽいと判定する
0204デフォルトの名無しさん (ワッチョイ 137b-eQ6f)
2016/07/23(土) 20:45:58.48ID:5I3ipfZz00205デフォルトの名無しさん (ワッチョイ afc2-SOs/)
2016/07/23(土) 21:09:11.86ID:jBz9FFWe0fscanfを使うのが一番簡単。
http://ideone.com/GGrTtX
0206デフォルトの名無しさん (ワッチョイ afc2-SOs/)
2016/07/23(土) 21:12:31.36ID:jBz9FFWe0それとint iがかぶってるが、まあ、分かるだろう。
0207デフォルトの名無しさん (ワンミングク MMdf-btrs)
2016/07/23(土) 22:13:03.59ID:d5xxoasFMVBとかJAVAで組んだバッチがあまりにも遅くてCで作り直したことあるし
0208デフォルトの名無しさん (ワンミングク MMdf-btrs)
2016/07/23(土) 22:24:07.60ID:d5xxoasFM0209デフォルトの名無しさん (ワンミングク MMdf-btrs)
2016/07/23(土) 23:04:22.19ID:d5xxoasFMスペースを探しながら構造体のメンバに入れる
0210デフォルトの名無しさん (ワッチョイ b324-iqWO)
2016/07/23(土) 23:23:12.01ID:F2TFOxbv043ってcase3+7+8ってことですか?
そんなに大きな数にならないんですが詳しく教えていただけると嬉しいです。
0211デフォルトの名無しさん (ワッチョイ 63c1-ldQr)
2016/07/23(土) 23:36:12.45ID:wENbv+830おお、有難うございます。
0212デフォルトの名無しさん (ワッチョイ 63c1-ldQr)
2016/07/23(土) 23:39:27.24ID:wENbv+830回答有難うございます
0213デフォルトの名無しさん (ワッチョイ eb7b-hTcf)
2016/07/23(土) 23:43:46.09ID:t4mh2O7O0http://codepad.org/VRCqJfvy
0214178 (ワッチョイ e7a3-+ugl)
2016/07/24(日) 00:16:15.92ID:U3oBuNtH00から9まで足すと45、case 7, 8 のときはそれぞれ1ずつ引くからトータルで43。
>>213 の人がやってくれたみたいに、for ループの中に printf 文を入れて、i が 1 増えるごとに sum がどう増えるか自分で見てみ
0215デフォルトの名無しさん (ワッチョイ b324-iqWO)
2016/07/24(日) 00:53:48.52ID:/0loRh9X0>>214
ありがとうございます!
0216デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/25(月) 16:46:33.20ID:1Hi4Wbucaリダイレクトしてファイルを読み込みその中身を構成してる文字(大小a〜zのみ)の個数を割り出すプログラムを作ってみました。
ファイルの中身がabbcccだとしたら
a ......1個
b ......2個
c ......3個
と表示するプログラムです。
読み込むファイルの文字数制限なのですが現在はdefineでbuf配列の大きさを予め決めています。
これをファイルの中身を読み込めるだけ読み込むことって出来ないでしょうか?
0217デフォルトの名無しさん (ワッチョイ 774f-iqWO)
2016/07/25(月) 16:53:39.71ID:WJZmJjXv0逐次処理するスタイルはだめなの?
ファイルから1文字だけ読み込んで
文字に応じてカウントアップ
続けて次の1文字を読み込み(ファイル終端ならば終了)
int counter[MAX_CHAR] = { };
int ch;
while ((ch = fgetc()) != EOF) {
counter[ch]++;
}
こんな感じ。
ファイルからファイルサイズを取得して、別途領域を確保
その確保領域に一気に読み込む ってできるかどうかは知らない
0218デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/25(月) 17:22:49.86ID:1Hi4Wbuca処理工程としては、ファイルの先頭文字と2番目文字を比較、同じならカウントし2番目文字を削除、違ったなら
3番目と比較...(以降繰り返し)
最後の文字まで行ったら先頭文字を1つシフトさせまた同じ処理とさせています。
また、英文字a〜z以外の文字(記号など)なら削除
としているので1文字取り込み処理するというのに対応出来ていません。全体が見えないと動かない仕様になっています。
0219デフォルトの名無しさん (アウアウ Sa0f-ldQr)
2016/07/25(月) 17:24:13.22ID:1Hi4Wbucaあ、解答の意味を履き違えてました。
これなら良さそうです!有難うございます。
0220デフォルトの名無しさん (ワッチョイ afc2-SOs/)
2016/07/25(月) 18:35:44.54ID:yAtDIDYb0最初にファイルサイズを取得して、そのサイズ分の
メモリを確保してfreadでそこに読み込むことが出来る。
ファイルサイズはオペーレーティングシステムのAPIを呼び出すのが
一番いいけど、Cの標準関数だけでやるなら
>>次
0221デフォルトの名無しさん (ワッチョイ 6f3c-iqWO)
2016/07/25(月) 18:38:48.06ID:Gmgv7LMs0>>次
0222デフォルトの名無しさん (ワッチョイ afc2-SOs/)
2016/07/25(月) 18:44:09.46ID:yAtDIDYb0その時点のファイルポインタの場所がファイルサイズバイトになるのでftellで取得出来る。
ファイルサイズを取得したら、ファイル先頭までシークし直し、
ファイルサイズ分のバッファを確保し、freadでファイルサイズバイト分、つまり、
ファイル先頭から終わりまでを一気に読み込むことが出来る。
FILE* fin=fopen(filename,"rb");
fseek(fin,0,SEEK_END);
long filelength=ftell(fin);
fseek(fin,0,SEEK_SET);
unsigned char* buf=(unsigned char*)malloc(filelength);
fread(buf,filelength,1,fin);
fclose(fin);
0223デフォルトの名無しさん (ワッチョイ d748-btrs)
2016/07/25(月) 20:48:07.44ID:jC//jHV300224デフォルトの名無しさん (ブーイモ MM4f-eQ6f)
2016/07/25(月) 20:49:45.99ID:jyOK5noCM0225デフォルトの名無しさん (ワッチョイ f304-sQTX)
2016/07/25(月) 21:28:25.80ID:OYOYmG0Q0||str[ i ]=='A'を抜くとちゃんと入力したaの数が表示されるのですがその理由がわかりません
int search(char str[ ])
{
int i,c;
c=0;
for(i=0;str[ i ]!='¥0';i++){
if(str[ i ]=='a'||str[ i ]=='A'){
c++;
}
}
}
0226デフォルトの名無しさん (ワッチョイ f304-sQTX)
2016/07/25(月) 21:29:57.62ID:OYOYmG0Q0return c;が抜けました
0227デフォルトの名無しさん (ガラプー KK4f-/nZE)
2016/07/25(月) 21:33:23.54ID:e7hq+Tl6KコピペでOK
0228デフォルトの名無しさん (ワッチョイ f304-sQTX)
2016/07/25(月) 21:35:44.43ID:OYOYmG0Q0お騒がせしてすみませんでした
0229デフォルトの名無しさん (ワッチョイ afc2-SOs/)
2016/07/26(火) 21:06:34.78ID:5Qe4QSf40if(ch=='a' || ch=='A')
return 1;
else
return 0;
}
int search(char* str)
{
int c=0;
while(*str){
if(isA(*str))
c++;
str++;
}
return c;
}
0230デフォルトの名無しさん (ワッチョイ 8f81-eQ6f)
2016/07/26(火) 21:33:59.80ID:gVmcWu9z00231デフォルトの名無しさん (ワッチョイ 0faf-LCC3)
2016/07/26(火) 22:15:57.76ID:79EOArEe0どうかご教授ください。
0232片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK4f-/nZE)
2016/07/26(火) 22:22:54.25ID:c+bkeQOvKint i, sum = 0;
for (i = 1; i <= 10; ++i) sum += i;
printf("%d", sum);
0233デフォルトの名無しさん (ワッチョイ 8f81-eQ6f)
2016/07/26(火) 22:29:21.07ID:gVmcWu9z0int i=1;
for(;i;i--){
printf("1+2+3+4+ ...10=55");
}
0234デフォルトの名無しさん (ワッチョイ 0faf-LCC3)
2016/07/26(火) 23:03:09.41ID:79EOArEe0早速のご回答ありがとうございます。
sumに計算結果を入れてみたところ、ちゃんと計算されました。ありがとうございました。
0235デフォルトの名無しさん (ワッチョイ 0faf-LCC3)
2016/07/26(火) 23:04:24.80ID:79EOArEe0printfに書けばそのまま表示できてしまうのですが笑
0236デフォルトの名無しさん (ワッチョイ 5f7b-tmF6)
2016/07/27(水) 01:36:10.47ID:GLyxaors00237デフォルトの名無しさん (ワッチョイ 7f04-6bfQ)
2016/07/28(木) 00:46:17.53ID:cKPe2Mgm00.1を10回加算すると1.0にならない理由はわかるのですが(丸め誤差)、なぜ1.0を切った数字になるのですか?
0.1をdoubleで表現すると、丸め誤差で0.1より大きい数字になるため10回加算すると1.0を超えた数字になると思ったのですが・・。
0238デフォルトの名無しさん (ワッチョイ 793f-Y0VN)
2016/07/28(木) 02:12:00.78ID:onxGaNpC00239デフォルトの名無しさん (ワッチョイ 7f04-6bfQ)
2016/07/28(木) 02:23:33.80ID:cKPe2Mgm0ですが、それは0.1における近似ですよね?doubleで近似すると0.1より大きくなります。
それを10回足すと、普通に考えたら1.0より大きくなると思うのですが、
実際は0.9999・・台になります。この理由がよくわかりません・・・。
このヒントかよくわかりませんが、doubleの0.1を4回足すと推測通り0.4より大きい数値になるのですが、
5回目は0.5丁度となり、6回目以降が5.9台と減った数値になるみたいです。
減る理由を分かる方がいらしたらよろしくお願いします。
0240デフォルトの名無しさん (ブーイモ MMb8-Y0VN)
2016/07/28(木) 02:24:57.70ID:q4CoLhmAM0.1ずつ足していくと0.4までは真値より大きくて
0.5でピッタリになって、それ以降は真値より小さくなる
これは0.1の丸め誤差で増える分よりも
加算時の桁数の差が大きくなって桁落ちの方が大きくなるため
ただし、double d1=0.1, d2=0.2; として、
コンパイラやオプションによっては
d2+d1とd2+0.1が等しくなかったりするので注意
0241デフォルトの名無しさん (ブーイモ MMb8-Y0VN)
2016/07/28(木) 02:29:10.46ID:q4CoLhmAM浮動小数点では2の補数関係ない
半端な知識を披露しないほうがいいよ
0242デフォルトの名無しさん (ワッチョイ 3e9f-Fmt2)
2016/07/28(木) 02:36:33.78ID:0eJShhc000243デフォルトの名無しさん (ワッチョイ 3d7b-gwQF)
2016/07/28(木) 02:50:22.98ID:IV1WPLTi0あるいはIEEE754の表現以外で浮動小数点を実装している特殊な処理系か?
0244デフォルトの名無しさん (ワッチョイ 7f04-6bfQ)
2016/07/28(木) 03:35:34.45ID:cKPe2Mgm0なるほど、途中から桁落ちが起きていたのですか・・、全く読み取れませんでした。
ちなみに環境はterapadにプログラムを書いてcygwinでコンパイルするという・・プログラム科の課題の一つでした。
ありがとうございました!
0245デフォルトの名無しさん (ワッチョイ 3e9f-T0T6)
2016/07/28(木) 04:02:30.74ID:0eJShhc00ごめん。気のせいだった
0246デフォルトの名無しさん (ワッチョイ 88d4-oK17)
2016/07/28(木) 06:14:55.05ID:wlrrXeBH00247デフォルトの名無しさん (ワッチョイ e27b-1ZjC)
2016/07/28(木) 06:59:10.40ID:3czRcPlE0それは桁落ちではなく情報落ち
半端な知識を披露しないほうがいいよ
0248デフォルトの名無しさん (ブーイモ MMb8-Y0VN)
2016/07/28(木) 08:36:43.22ID:q4CoLhmAMスマヌ
0249デフォルトの名無しさん (ササクッテロ Sp69-xRNj)
2016/07/29(金) 22:36:07.99ID:nPySIBphp0250デフォルトの名無しさん (ワッチョイ 778b-UbOe)
2016/07/29(金) 22:37:13.13ID:HkC4uS0r0>>238の突っ込みどころはそこではないのでは…
0251デフォルトの名無しさん (JP 0Hc8-oK17)
2016/07/30(土) 16:24:20.90ID:MmhUYtTKH複数のファイルがある場合どうすればいい?
使ってるコンパイラはNotepad++ gcc とvs2008です
0252デフォルトの名無しさん (ワッチョイ ba13-alRo)
2016/07/30(土) 17:12:54.13ID:bEVm2oFY0-c でコンパイル,出来たオブジェクトファイルをリンカで結合する
0253デフォルトの名無しさん (ワッチョイ 745b-xRNj)
2016/07/30(土) 20:15:46.74ID:rEivWNPl0っていうか複数ファイルあるならmakefileとかslnファイルあるんじゃないの?
0254デフォルトの名無しさん (ワッチョイ 9cba-xRNj)
2016/07/30(土) 21:17:41.46ID:v/rkDCKK0とっくの昔にC++に移行しないの?
0255デフォルトの名無しさん (ワッチョイ 7f5b-Y0VN)
2016/07/30(土) 21:21:22.38ID:mdwiSvxY00256デフォルトの名無しさん (ワッチョイ 9cba-xRNj)
2016/07/30(土) 21:55:14.47ID:v/rkDCKK0環境がCならCで順応してくれ
0257デフォルトの名無しさん (ワッチョイ 793f-Y0VN)
2016/07/30(土) 22:38:03.58ID:JJQOf6Br0Cスレで頓珍漢なことを言い始めたと思ったら…
暑くて頭おかしくなったのかな
0258デフォルトの名無しさん (ワッチョイ de3c-Y0VN)
2016/07/30(土) 22:45:02.43ID:SD9Rxi9F00259デフォルトの名無しさん (JP 0Ha7-UZ/1)
2016/08/04(木) 13:01:33.28ID:z5hdl0BsHfgetsを使ってテキストを読み込むとき
ストリームからテキスト先頭文字のポインタを渡されて順次文字を読み込み\0があれば読み込みをいったんやめそこまでの文字列を渡す。そこのポインタを記憶しておき次は記憶したポインタからまた順次文字を読み込み...というのを繰り返し最終行はeofまで読み込む
という処理の理解であっていますか?
0260デフォルトの名無しさん (ワンミングク MM2f-d+5h)
2016/08/04(木) 13:26:33.19ID:sfGP0dVwM0261デフォルトの名無しさん (JP 0Ha7-UZ/1)
2016/08/04(木) 13:34:31.68ID:z5hdl0BsHファイルの終端にeofが置かれてて
-1が値が返るということくらいしかわかりません
0262デフォルトの名無しさん (ワッチョイ 17ff-1eGW)
2016/08/04(木) 14:02:03.10ID:hTDvIGUA0読み込みは\0じゃなくて改行か指定したバイト数までな
終端に\0が入るかどうかは指定したバイト数まで読んだかどうかによる
戻り値は読み込んだバイト数
0263デフォルトの名無しさん (ワッチョイ 3ba1-kOsX)
2016/08/04(木) 15:21:56.01ID:suQlUQ8p0ちがいます
テキストファイルに'\0'は、ない
バッファを用意しておく。
fgetsは、バッファサイズよりすくないぶんをよみとって、バッファの最後に'\0'をつけます。これでCの文字列になる。
ファイルの終わり(EOF)にきたらNULLを返す
EOFは、つかいません
0264デフォルトの名無しさん (ワッチョイ 3ba1-kOsX)
2016/08/04(木) 15:26:25.32ID:suQlUQ8p00265デフォルトの名無しさん (ワッチョイ 674f-+Lqe)
2016/08/04(木) 15:33:49.69ID:ZweTvWs40n-1文字まで または それまでに改行かファイルの終端が来るまで
buf におき、さらに \0 を付加
付加する \0 込みで buf[n] の範囲内 (buf[0]〜buf[n-1]まで )
に収まるように、1回の読み込みの打ち切りを行ってくれる
0266デフォルトの名無しさん (ワッチョイ f7a3-TDLi)
2016/08/04(木) 15:59:00.52ID:aPVsq7KF0n-1文字ってのは最後に¥0を追加するからなのね
0267デフォルトの名無しさん (JP 0Ha7-UZ/1)
2016/08/04(木) 16:02:07.28ID:z5hdl0BsH0268デフォルトの名無しさん (ワッチョイ 2fc2-4YG7)
2016/08/04(木) 20:11:14.55ID:S+iLZ+A100269デフォルトの名無しさん (ワッチョイ bba2-d+5h)
2016/08/04(木) 20:57:35.00ID:cCkuFoiR00270デフォルトの名無しさん (ワッチョイ 6b7b-uQNM)
2016/08/04(木) 23:49:23.20ID:xrkPED4y0foobar
hogefuga[EOF]
などというテキストファイルは厳密には「行が正しく終わってない」から
扱う側によっては不具合になるというくらい改行=行の終端という意味が強い
windowsはposixなんて知ったこっちゃない生まれなのでこの辺りは無法だけどね
0271デフォルトの名無しさん (ワッチョイ 4fc0-QI3I)
2016/08/05(金) 04:17:31.93ID:cHxSirtv00272デフォルトの名無しさん (ワッチョイ cb51-r8bK)
2016/08/05(金) 07:18:00.04ID:IGtjfRg+00273デフォルトの名無しさん (スッップ Sd6f-d+5h)
2016/08/05(金) 07:39:55.14ID:AXDswPHCd0274デフォルトの名無しさん (ワッチョイ 2bdc-buIf)
2016/08/05(金) 07:55:18.38ID:3ew4HwfD0プログラムのソースファイルでも気ィつけんとな。
参考... [迷信] ソースファイルの末尾に }
実際にそれが原因のコンパイルエラーを食らった経験はないけどね。
>>268-269
フォッーー!! ゲッツ!
0275デフォルトの名無しさん (ワッチョイ 7f7b-tuv5)
2016/08/05(金) 08:56:46.30ID:JqA23Hrs0息をするように嘘をつくとはこの事だな
そんな決まりは無い
改行で終わらなければいけないのは「行」
テキストファイルは0以上の行を含むので
ファイルの最後が「行」で無くても良い
0276デフォルトの名無しさん (ワッチョイ 6b7b-uQNM)
2016/08/05(金) 10:14:55.42ID:rxZahYwt0それはテキストファイルじゃなくてただの「空のファイル」だね
何故「空のテキストファイルがー」みたいなアホな主張をするのかというと
拡張子でファイルの種類が決まるwindows文化の人間だからだろう
0277デフォルトの名無しさん (ワッチョイ e77b-4iqd)
2016/08/05(金) 11:37:59.51ID:pznsau1R0posixのシステムコール実装してるだけじゃない?
もうないけど
0278デフォルトの名無しさん (ワッチョイ 6719-+Lqe)
2016/08/05(金) 11:38:51.17ID:lPnXTiLC00279デフォルトの名無しさん (ワッチョイ 7f7b-tuv5)
2016/08/05(金) 11:58:31.67ID:JqA23Hrs0頭悪すぎだぞお前
↓これは何行あるか? 数えられるかね?
foobar
hogefuga[EOF]
0280デフォルトの名無しさん (ワッチョイ cf52-d+5h)
2016/08/05(金) 12:13:54.34ID:VNF0EUFq0>>270,276は残念賞
posix持ち出すなら御託並べずに規格を示せばいいのに。
3.397 Text File
A file that contains characters organized into zero or more lines.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_397
0行も許容されるから、必ず改行で終わってるとは限らない。
ちなみにこれ、2013 Editionね。
いっこ前だと2004 Editionでは"one or more lines"ってなってるから、必ず改行で終わってるといっても間違いではなかった。昔はね。
A file that contains characters organized into one or more lines.
http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_392
ちなみに>>279は定義から言えばテキストファイルじゃないのであんまり関係ない。
0281デフォルトの名無しさん (ドコグロ MM0f-d+5h)
2016/08/05(金) 13:02:21.95ID:ccW8btWEM0282デフォルトの名無しさん (ワッチョイ d777-+Lqe)
2016/08/05(金) 16:36:39.97ID:H0edUBiM0以下の「buffer」ように、配列の添え字が順番になっていなくても大丈夫なのでしょうか?
unsigned char * dest;
unsigned char * buffer;
for(int i = 0; i < nums; i++){
dest[0] = buffer[3];
dest[1] = buffer[0];
dest[2] = buffer[1];
dest[3] = buffer[2];
buffer += 4;
dest += 4;
}
0283デフォルトの名無しさん (スップ Sdef-d+5h)
2016/08/05(金) 16:40:55.79ID:OFbdyrUWdどっちにしろ、「テキストファイルは改行で終わらなければならない 」てのはまちがいだよね
0284デフォルトの名無しさん (ワッチョイ 674f-+Lqe)
2016/08/05(金) 16:44:54.47ID:OmlKnRl60文法上はOK
意図した動作と記述していることが合致しているかは
その記述から知ることはできない
(順序を並べ替えたものを dest に渡したいとなれば、そういった記述になるだろう)
0285デフォルトの名無しさん (ワッチョイ 2bdc-buIf)
2016/08/05(金) 16:50:50.71ID:3ew4HwfD0「行」の定義が出てきたよ。(日本語部分は拙訳 参考まで)
3.206 Line
A sequence of zero or more non- <newline> characters plus a terminating <newline> character.
3.206 行
0個以上の<newline>でない文字の並びに終端する<newline>文字を加えたもの
3.195 Incomplete Line
A sequence of one or more non- <newline> characters at the end of the file.
3.195 不完全な行
ファイル末尾にある1個以上の<newline>でない文字の並び
>>279 は
「"foobar" を内容とする1行と "hogehuga" を内容とする不完全な行を含んだファイル」
ってところまでは間違いなさそう。
これをテキストファイルと呼べるか否かは、
「テキストファイルは行だけで構成され、他の要素は含まない」
「テキストファイルは行の他に、末尾に不完全な行を含みうる」
どちらの立場をとるかによるのでは?
少なくとも自分は 3.397 Text File の項を見ても分からんかった。
さらに、ファイル末尾の不完全な行をどう扱うべきかは…
どこかに書いてあるかな?
0286デフォルトの名無しさん (ワントンキン MM2f-xKE3)
2016/08/05(金) 16:59:43.42ID:1jE/nKCjM最後に改行がなくても問題ないように組むよ普通
0287デフォルトの名無しさん (ワッチョイ d777-+Lqe)
2016/08/05(金) 17:00:26.24ID:H0edUBiM0行けるんですね!
意図はエンディアンとか画像色情報の並べ替えなどです。
つまり、一定のバイト周期で中身を規則的に並べ替えたいということです。
0288デフォルトの名無しさん (ワントンキン MM2f-xKE3)
2016/08/05(金) 17:00:59.76ID:1jE/nKCjM大丈夫だけどそのソースそのままじゃ動かないよ
わかってるんだったらごめん
0289デフォルトの名無しさん (ワッチョイ d777-+Lqe)
2016/08/05(金) 17:07:27.30ID:H0edUBiM0簡略化してますが、
もちろん2つのポインタはそれぞれ事前にメモリは確保してありますし、コピー元にはデータが入ってます。
0290デフォルトの名無しさん (ワッチョイ 674f-+Lqe)
2016/08/05(金) 17:09:20.46ID:OmlKnRl600291デフォルトの名無しさん (ワッチョイ df13-BKBQ)
2016/08/05(金) 20:19:24.64ID:1l5AtzWC0むしろテキスト・バイナリの差を気にするのは,改行マークが複数バイトのMS-DOS/Windows の方
それが証拠に,テキストモード/バイナリモードの区別は unix にはない
0292デフォルトの名無しさん (ワッチョイ 6742-+Lqe)
2016/08/05(金) 20:56:45.57ID:vKWjDsDg00293デフォルトの名無しさん (ワッチョイ df13-BKBQ)
2016/08/05(金) 20:59:41.43ID:1l5AtzWC0定義どおりに動くだけだ
たいがい第一引数で指定されるバッファにfgets()第二引数のバイト数 - 1だけ読み込んで末尾に\0をつけることになるだろう
0294デフォルトの名無しさん (ワッチョイ 6f3c-+Lqe)
2016/08/05(金) 21:04:04.71ID:E0DsJGGO0読み込んだバイナリ中に \0 が含まれてると本当の終端が判らなくなるね
0295デフォルトの名無しさん (ブーイモ MM67-d+5h)
2016/08/06(土) 00:55:35.49ID:GKRKeejEM0296デフォルトの名無しさん (JP 0H67-EXAE)
2016/08/06(土) 06:17:49.44ID:P6FYCdC3H0297デフォルトの名無しさん (ブーイモ MMa7-d+5h)
2016/08/06(土) 06:55:09.15ID:CxdQuwcgMするけどね
0298デフォルトの名無しさん (ワッチョイ 7f7b-tuv5)
2016/08/06(土) 09:22:13.55ID:4oIDfdFe00299デフォルトの名無しさん (ワッチョイ 6f3c-+Lqe)
2016/08/06(土) 09:40:31.71ID:EKYNi0gs0から外れてるし、戻りが NULL で全く読んでないことになるんじゃないの
0300デフォルトの名無しさん (JP 0Hef-+Lqe)
2016/08/09(火) 10:53:58.31ID:k3l+MDzzH2つのSeasonって、なにが違うの?
0301デフォルトの名無しさん (オッペケ Sr07-d+5h)
2016/08/09(火) 11:02:46.12ID:VrJIAuHxr最初のは、型の名前
後ろは変数名
0302デフォルトの名無しさん (ワッチョイ 17ff-1eGW)
2016/08/09(火) 11:25:27.70ID:98NM991C0enum Season Season;
を一行で書いた
0303デフォルトの名無しさん (JP 0H67-EXAE)
2016/08/09(火) 11:28:08.17ID:ACucDFlBH前者は型名だけど enum+名前 でしか使えない中途半端な名前
typedef が跋扈するより前、美しい言語仕様の時代の遺物
後者は変数名だけど普通そういう時は小文字名にすると思う
typedef enum Season { ... } Season; の間違いじゃないの?
0304デフォルトの名無しさん (JP 0Hef-+Lqe)
2016/08/09(火) 13:33:09.45ID:YZ/xNzVRH0305デフォルトの名無しさん (ワッチョイ 6f4e-keFn)
2016/08/09(火) 13:41:53.38ID:yNW68RTc00306デフォルトの名無しさん (オッペケ Sr07-d+5h)
2016/08/09(火) 16:33:18.21ID:VrJIAuHxr型名付けておけば、別な変数も同じ型で宣言出来る。
使い回すなら typedefしておいた方が便利。
一回しか使わないなら、型名要らない。
0307デフォルトの名無しさん (ワッチョイ 17ff-1eGW)
2016/08/09(火) 16:34:48.39ID:98NM991C00308デフォルトの名無しさん (ワッチョイ df13-BKBQ)
2016/08/09(火) 18:04:12.71ID:c6svxtGU00309デフォルトの名無しさん (ワッチョイ ab17-5Bdb)
2016/08/09(火) 18:34:52.21ID:1y7DBS0u0わかったら戻せばいいんだよ
0310デフォルトの名無しさん (ワッチョイ 98d4-MTuc)
2016/08/11(木) 02:01:21.60ID:YgG7wOQ400311デフォルトの名無しさん (ワッチョイ fc6b-3Vwo)
2016/08/11(木) 09:16:02.34ID:tSg+kfIq0苦Cやってみるわ
0312デフォルトの名無しさん (ワッチョイ 7041-pteT)
2016/08/13(土) 03:19:28.42ID:ApwCTP9r0最初からC#専用本読んでたら挫折してたろうな
0313デフォルトの名無しさん (JP 0H41-dS8u)
2016/08/13(土) 10:34:37.15ID:gPtVaJGMH入門書読んで"マスター"したけど何も作れません
という戦士が生まれる
0314デフォルトの名無しさん (オッペケ Sr8d-3Vwo)
2016/08/13(土) 11:01:38.35ID:5zVXtJwUr0315デフォルトの名無しさん (ワッチョイ 3ec1-MTuc)
2016/08/13(土) 11:43:21.36ID:udN0O8iH0「使いこなす」
このセリフを言うやつは信用できん。
0316デフォルトの名無しさん (ワッチョイ f1dc-LdzE)
2016/08/13(土) 17:55:10.65ID:vGY68yUz00317デフォルトの名無しさん (ワッチョイ 45a1-0Fiy)
2016/08/13(土) 18:53:02.75ID:5iGC+5XA00318デフォルトの名無しさん (ワッチョイ 397b-3Vwo)
2016/08/13(土) 19:32:47.34ID:AXJHpXDi00319デフォルトの名無しさん (ワッチョイ 3919-ntxd)
2016/08/13(土) 19:41:24.06ID:YGlkk5qn0例えばAがマクロだとすると
ABのAは置き換えられないけれどA;のAは置き換えられるとか法則が
調べてもわかりませんでした
0320デフォルトの名無しさん (ワッチョイ 6191-3Vwo)
2016/08/13(土) 19:59:53.54ID:l1LTjtu300321デフォルトの名無しさん (ワッチョイ 3e4e-3Vwo)
2016/08/14(日) 05:36:28.87ID:RZj6Zx9R0普通の人が英語出来ても、英語で小説書けないしな。
小説家は英語片言でも、英語の小説書く事は可能だが。
0322デフォルトの名無しさん (ドコグロ MM5c-3Vwo)
2016/08/14(日) 08:22:11.89ID:aO2OCXAGMJISX3010の3.10節を調べるといい
0323デフォルトの名無しさん (ワッチョイ f6c2-qG+N)
2016/08/14(日) 20:28:50.09ID:0nElDHkf0スキルアップとか
0324デフォルトの名無しさん (ワッチョイ 417b-MURp)
2016/08/14(日) 23:25:24.34ID:W3PTwYms0最初は不出来でも自然と愛着が沸いて改善し続けるうちに手放せない道具になる
車輪のなんちゃらなんて一切気にせずにガンガン作って揃えたらいい
作ったことのない人間は他人に説明することもできない上っ面の知見しか持てないのだ
0325デフォルトの名無しさん (ワッチョイ 9213-4ddV)
2016/08/15(月) 01:18:29.57ID:I1Y4gro20そうそう
xmalloc(), とか xfree() を作って便利につかっている,一度公開したが評判は散々ではあったのだけれども
0326デフォルトの名無しさん (ワッチョイ 4d3f-3Vwo)
2016/08/15(月) 01:42:14.69ID:AE8QCPw70評判が散々だと言うことは、改良の余地があるということ
0327デフォルトの名無しさん (ワッチョイ 6642-MTuc)
2016/08/15(月) 01:49:09.59ID:bDxHTN1a0使われないソフトと、バグのあるソフト
マーフィーの法則 これ思い出した
0328デフォルトの名無しさん (ワッチョイ d117-AwIb)
2016/08/15(月) 01:49:11.81ID:FzLRbZqH0悪評でも評価がもらえるってのは使ってもらえたって事でもあるしな。
0329デフォルトの名無しさん (ワッチョイ 2b51-z29q)
2016/08/15(月) 17:06:56.20ID:1Ch4XA5H00330デフォルトの名無しさん (ワッチョイ 464e-2h3f)
2016/08/15(月) 17:23:46.45ID:tBQUW0H60適当じゃ無いな。
バグがほぼ無く、よく使われるソフトはある。
0331デフォルトの名無しさん (ワッチョイ f1dc-LdzE)
2016/08/15(月) 19:10:32.98ID:bftlQCDN0「バグがある」と「バグがほぼ無い」は両立するからなぁ。
マーフィーの法則は「上手いこと言ってるな」と感じることもあるけど、
>>327 はそうでもない。というか、情報量ゼロの言明だし。
0332デフォルトの名無しさん (ワッチョイ 2541-pteT)
2016/08/15(月) 21:24:52.67ID:yhdeLdQz0言いたいだけでしょ
0333デフォルトの名無しさん (ワッチョイ 115b-MTuc)
2016/08/15(月) 21:30:19.70ID:WbHXW2Pu0大部分の自動車の制御ファームとかバグといえるものがあるのかね。
0334デフォルトの名無しさん (ワッチョイ 6642-MTuc)
2016/08/15(月) 21:41:02.69ID:o++4P7Xk00335デフォルトの名無しさん (ドコグロ MM5c-3Vwo)
2016/08/15(月) 22:16:10.44ID:IdJPSL9tM全部がバグではないけどリコールでプログラム改修とかあるよね
0336デフォルトの名無しさん (ワッチョイ 7019-MTuc)
2016/08/16(火) 09:03:32.04ID:G38vmueR0意図した通りに動くのでバグはありません!
0337デフォルトの名無しさん (アウアウ Sa05-B/I9)
2016/08/16(火) 14:46:32.86ID:X14VgvlVa標準入出力や各型、ループ、関数、配列、ポインタ、構造体、ファイルの読み書き
これ以外にもありますが"初心者のための"として書かれているwebや書籍などに沿って一通り学習し理解したあとで手につけるとしたらどんなものがあるのでしょうか?
自分はソケットなど使って通信させる仕組みをやってみようかなあなど思っているのですがみなさんはどのようなことに手をつけましたか?
0338デフォルトの名無しさん (ワッチョイ 4652-3Vwo)
2016/08/16(火) 14:54:35.88ID:bJwh98gd00339デフォルトの名無しさん (ワッチョイ 7019-MTuc)
2016/08/16(火) 15:13:24.94ID:G38vmueR0ゲームも無料ゲームも低価格ゲームもあふれてるし。
「必要に駆られてプログラムを覚えた」なんてシーンほとんど無いわな。
0340デフォルトの名無しさん (ワッチョイ 2a8b-GBh+)
2016/08/16(火) 15:41:49.69ID:w4E7HmJu0NEWコマンドにバグが無いこまで証明が必要でえらい騒ぎに
0341デフォルトの名無しさん (ワッチョイ f1dc-LdzE)
2016/08/16(火) 15:52:25.80ID:Kbb/TcOa0ソースファイルが入手可能なものも多いから、
機能を追加してビルドするのも良い。
すでに動いているプログラムだから基本的な動作は確実だし、
自分が欲しい機能を追加すれば間違いなく便利になる。
0342デフォルトの名無しさん (ガックシ 0679-B/I9)
2016/08/16(火) 20:18:57.98ID:RtvZR70u60343デフォルトの名無しさん (ワッチョイ fc7b-dD2v)
2016/08/16(火) 20:26:50.41ID:CFM4NC3W0ふつうのLinuxプログラミング、青木峰郎、初版2005
OSの基本コマンドの仕組みがよくわかる。
10年前の本だが、いまだに通用する
0344デフォルトの名無しさん (アウアウ Sa05-B/I9)
2016/08/16(火) 20:30:46.51ID:X1/zfUgTaLinuxの仕組みを眺めてみるのも楽しそうですね。有り難うございます!
0345デフォルトの名無しさん (ワントンキン MM2f-6cj6)
2016/08/18(木) 09:54:39.04ID:7zlLEbl2Mやりたいことならなんでもいいと思うよ
0346デフォルトの名無しさん (アウアウ Sa47-YVpJ)
2016/08/18(木) 13:02:17.13ID:91fRKt1Vaそうですよね
自分の開発環境がLinuxなんですが
なんちゃってUnixコマンドや、既にあるライブラリ関数は自作したりしています。
0347デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/18(木) 16:02:53.32ID:VCdViQab0自分で作れば自己中なソフトも作れる。
0348デフォルトの名無しさん (ワッチョイ df4d-Uk8R)
2016/08/18(木) 23:13:48.26ID:dbfIQl5h0もし試験の問題で理由をかけといわれたら
scanfの仕様と答えたら満点くれます?
0349デフォルトの名無しさん (ワッチョイ df13-YSv6)
2016/08/18(木) 23:18:26.85ID:JLe/GOh80いいんじゃない?事実だし
0350デフォルトの名無しさん (JP 0H47-HNW7)
2016/08/19(金) 00:13:02.79ID:kQbXSez3H0351デフォルトの名無しさん (JP 0H67-8yFy)
2016/08/19(金) 00:17:13.04ID:EQW6TlvjH○scanfに受け皿となる変数のアドレスを渡す
0352デフォルトの名無しさん (ワッチョイ df4d-Uk8R)
2016/08/19(金) 00:45:03.30ID:P6JuUVvz0じゃあscanfを考えた人に理由をきいたほうが手っ取り早い話なの?
0353デフォルトの名無しさん (ワッチョイ 3ba1-wLiW)
2016/08/19(金) 00:59:33.98ID:MUfetYKB0考えてみたら良いんじゃないか
0354デフォルトの名無しさん (ワッチョイ 6b7b-iRvA)
2016/08/19(金) 01:28:23.31ID:CVp0ndTM0箱の中身を教えても意味ないだろ?箱の場所(と大きさ)を教えないと
だから変数の中身を書き換えさせる関数の実引数はポインタでなければならない
&はただのアドレス演算子
0355デフォルトの名無しさん (ワッチョイ ab5b-D2ET)
2016/08/19(金) 01:38:54.06ID:Zgp0kDG10scanf(s);
0356デフォルトの名無しさん (ワッチョイ 2bdc-ZLgz)
2016/08/19(金) 05:48:41.38ID:vpHLVXFB0答えても間違っちゃいないはずだけど、
試験で書いても正解の得点はもらえないだろうな。
この手の問題はどこまで掘り下げて答えるか、あるいは
問題作成者がどこまで掘り下げた答えを求めているか、
を見極めるのが難しいね。
0357デフォルトの名無しさん (ワッチョイ 6f4e-q/lo)
2016/08/19(金) 06:04:11.79ID:pUeG4Thz0int length = scanf(“%99s", word);
0358デフォルトの名無しさん (ワンミングク MM2f-6cj6)
2016/08/19(金) 11:28:25.33ID:kPBCLZuQMで伝わるんじゃない?
0359デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 11:29:37.08ID:aEjl/gmM0clangでfopen_sを使うとstdio.hをインクルードしたのに
"Implicit declaration of function 'fopen_s' in invalid in C99"と
警告でるのどういうことですか?
0360デフォルトの名無しさん (ワッチョイ 7f7b-LSUn)
2016/08/19(金) 11:59:57.05ID:IGWmixlq0C11から使える
0361デフォルトの名無しさん (JP 0H67-8yFy)
2016/08/19(金) 12:16:00.04ID:EQW6TlvjHそれならコンパイラの設定も一緒についてくるはずだが
0362デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 12:57:42.18ID:aEjl/gmM0エラーじゃなくて警告なんですけど。
-std=c11は付けてます。
0363デフォルトの名無しさん (ワッチョイ 7f7b-LSUn)
2016/08/19(金) 13:09:26.51ID:IGWmixlq0エラーと警告の揚げ足とってる暇あるなら、規格書読む事だな
0364デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 13:13:54.09ID:aEjl/gmM00365デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 13:17:36.90ID:aEjl/gmM0調べたら簡単に見つかったよ
こんなアホな場所で聴くんじゃなかった
0366デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 13:20:05.46ID:aEjl/gmM0ゴミ
カす
きちがい
さっさと死ねゴミ
プププププププ
悔しいだろ
ははは
0367デフォルトの名無しさん (ワッチョイ eb2b-wLiW)
2016/08/19(金) 13:54:20.17ID:n2+gYfCv00368デフォルトの名無しさん (ワッチョイ 676b-HNW7)
2016/08/19(金) 13:55:20.48ID:fjnpXRFS00369デフォルトの名無しさん (ワッチョイ e77b-HNW7)
2016/08/19(金) 13:59:32.22ID:WP6zNTiH0× 聴く
○ 訊く
0370デフォルトの名無しさん (ワッチョイ 67bf-wLiW)
2016/08/19(金) 16:10:41.08ID:IFWVfjB+00371デフォルトの名無しさん (ワッチョイ 2bdc-ZLgz)
2016/08/19(金) 16:46:34.26ID:vpHLVXFB0「キチガイの発狂」は初見だ。
「キチガイ」も「発狂」もあまり使う機会のない言葉だけどね。
0372デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 16:49:38.80ID:aEjl/gmM0良いことだと言うことを知らないんだね
可愛そうに
0373デフォルトの名無しさん (ワッチョイ f7a3-DJkl)
2016/08/19(金) 16:59:36.82ID:vJJgqyIv00374デフォルトの名無しさん (ドコグロ MMcf-HNW7)
2016/08/19(金) 17:20:24.69ID:bO0VaEOHM頭が頭痛 ⇒ 頭が
どうしろと? w
0375デフォルトの名無しさん (ワッチョイ 6f3c-D2ET)
2016/08/19(金) 17:26:23.76ID:zOoWgkGs0→ということでフラットに記述します
両極端に振れると面倒よのう
0376デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/19(金) 18:29:22.15ID:aEjl/gmM00377デフォルトの名無しさん (スッップ Sd6f-HNW7)
2016/08/19(金) 18:47:22.34ID:cIgWKWlcd処理系も書かずに何言ってんだ?
0378デフォルトの名無しさん (ドコグロ MM87-HNW7)
2016/08/19(金) 20:41:29.87ID:4DtZDUfaM「頭が頭痛」より
「キチガイが発狂」のほうが
日本語として自然なのでは?
0379デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/20(土) 10:34:14.32ID:XvgJOHEh0キチガイを隠して普通の振りをしている
キチガイが一番キチガイ
わかる人にはわかるがこのスレに普通ぶっている人の
5割はそのキチガイに該当する
0380デフォルトの名無しさん (ワッチョイ 7bc1-YVpJ)
2016/08/20(土) 18:31:57.22ID:JJNQQwGL0ポインタのポインタについて
複数の文字列を格納するためにポインタのポインタ**pointを用意します
ある文字列にアクセスするには
*(point + i)
もしくは
point[i]
で、出来ました。
ある文字列のある文字にアクセスするにはどのようにしたら良いですか?
0381片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK17-kxXN)
2016/08/20(土) 18:49:06.98ID:ea4xV4wUK0382デフォルトの名無しさん (ワッチョイ 7bc1-YVpJ)
2016/08/20(土) 20:19:46.66ID:JJNQQwGL0*point[i] はなぜだめなんですか?
0383デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/20(土) 20:22:47.70ID:qSux5zoea0384デフォルトの名無しさん (ワッチョイ 7bc1-YVpJ)
2016/08/20(土) 20:41:53.43ID:JJNQQwGL0*point[i]
かく文字列の先頭だけになってしまうので
(*point)[i]ってする必要があるのですね
有り難うございました
0385デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/20(土) 20:57:04.32ID:qSux5zoea0386デフォルトの名無しさん (ワッチョイ 7bc1-YVpJ)
2016/08/20(土) 21:02:30.98ID:JJNQQwGL0そうでしたw
(*point+i)[ j ]
ですかね
0387デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/20(土) 21:10:16.60ID:qSux5zoeaかな。間違ってたらすまん。デバッカで値を見比べてみるか、printfしてみた方がいいね
0388デフォルトの名無しさん (ワッチョイ ef42-D2ET)
2016/08/20(土) 21:12:06.94ID:lxC/NXLp0ポインタ演算使ってアクセスしたいのか
その辺は統一した方がいい
0389デフォルトの名無しさん (ワッチョイ ef42-D2ET)
2016/08/20(土) 21:13:12.82ID:lxC/NXLp00390デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/20(土) 21:14:40.18ID:qSux5zoea0391デフォルトの名無しさん (ワッチョイ 6f3c-D2ET)
2016/08/20(土) 21:19:33.63ID:FPTu6I9V0char *str = pointer[i];
その文字列の j 番目の文字 str[j]
0392デフォルトの名無しさん (ガラプー KK17-kxXN)
2016/08/20(土) 21:27:44.01ID:ea4xV4wUKj+1番目
0393デフォルトの名無しさん (ワッチョイ 6f3c-D2ET)
2016/08/20(土) 21:33:04.79ID:FPTu6I9V0先頭要素を 1番目:前者 0番目:後者
0394片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK67-kxXN)
2016/08/20(土) 21:46:31.91ID:ea4xV4wUK0395デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/21(日) 00:04:53.49ID:gifASMY5a0396デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/21(日) 08:10:02.69ID:To22oCrx0その変数についてだけ警告ださないようにするマクロのようなものは
ありませんか?
0397デフォルトの名無しさん (ワッチョイ 6f3c-D2ET)
2016/08/21(日) 08:15:13.05ID:nPVjtC030どういうコード書いたら、何処で(&どんな)警告が出るの?
警告されるような要素が思い浮かばない
0398デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/21(日) 08:20:30.23ID:To22oCrx0if(1) a=3;
0399デフォルトの名無しさん (ワッチョイ 6f3c-D2ET)
2016/08/21(日) 08:22:34.00ID:nPVjtC030int a; /* 宣言:初期化なし */
...
for (...) { 必ず1回以上回る
a = 1; 初期化ではない 代入だ
}
...
if (a) ←ここで警告: 未初期化の変数を参照してるっぽくね?
0400デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/21(日) 08:28:52.13ID:gifASMY5a0401デフォルトの名無しさん (ワッチョイ cb19-NRoR)
2016/08/21(日) 08:29:23.91ID:To22oCrx0そいうことだ
0403デフォルトの名無しさん (ワッチョイ bbd3-HNW7)
2016/08/21(日) 09:07:49.47ID:8HT7jq2X00404デフォルトの名無しさん (ワッチョイ f7a3-DJkl)
2016/08/21(日) 09:20:01.08ID:VaMUQPq90だけでいいんじゃないの? 0 とか -1 とか(プログラムの文脈的に)ありそうにない数字を入れておいてもいいけど
3以外を入れたいときは別途条件文と代入文を付け加えればよし
0405デフォルトの名無しさん (ワッチョイ 7f7b-LSUn)
2016/08/21(日) 09:21:27.07ID:hQAntsoy0for (;;) {
if (1) a = 1;
break;
}
a; //警告すんな
だろ
大抵の処理系は#pragmaでその警告を抑制する事が出来るけど、特定の変数だけってのは見た事ないな
関数にhoge(&a)とかアドレス渡してやればごまかせるかもな
0406デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/21(日) 09:37:51.90ID:gifASMY5a0407デフォルトの名無しさん (ワッチョイ f35b-HNW7)
2016/08/21(日) 09:39:35.88ID:M5VLtK3R00408デフォルトの名無しさん (ワッチョイ 7f7b-LSUn)
2016/08/21(日) 09:53:35.47ID:hQAntsoy00409デフォルトの名無しさん (アウアウ Sa47-HNW7)
2016/08/21(日) 10:03:01.28ID:gifASMY5a0410デフォルトの名無しさん (ワッチョイ 6b7b-iRvA)
2016/08/21(日) 21:37:40.15ID:2VF8GpD70石器時代の悪しき慣習をいつまで引き摺るつもりなのか
変数は必要になった時点で宣言し同時に必ず初期化せよ
宣言の時点で有効な値が決まらない、あるいはc99より古い処理系ならば
「有効な値を入れない限り後続が正しく失敗する値(0,NULL,false)」で初期化せよ
これは正しく制御するための初期化でありコンパイラを黙らせる目的ではない
したがって未初期化の警告どうこうという指摘は全くもって的外れである
0411デフォルトの名無しさん (ワッチョイ 67bf-wLiW)
2016/08/21(日) 22:09:19.99ID:QSdpFHla00412デフォルトの名無しさん (ワッチョイ db7b-LSUn)
2016/08/22(月) 03:18:00.08ID:k4dn21Er00413デフォルトの名無しさん (ワッチョイ db3f-HNW7)
2016/08/22(月) 04:10:00.99ID:vCv8s6Ty00414デフォルトの名無しさん (ワッチョイ 2bdc-ZLgz)
2016/08/22(月) 05:54:05.12ID:uur2/vEa0ギレン・ザビの演説の文体模倣と思えば上手だわ。雰囲気を良くつかんでる。
「〜などという行為はバグを生み出す温床以外の何物でもない」とかまで
突き抜けると面白さが多くに伝わるかも知れない。
…書いた人の意図がそこにあるとは言い切れないけど。
主張の中身そのものは納得できるアドバイスだと思うよ。
0415デフォルトの名無しさん (ワッチョイ ab5b-D2ET)
2016/08/22(月) 09:11:35.98ID:/AbrRwA90コンパイラの解釈に文句いってもしょうがない。
もっと生産的なことに労力使おう。
0416デフォルトの名無しさん (オッペケ Sr07-HNW7)
2016/08/23(火) 12:16:49.86ID:T/9wcFxSr天才≒キチガイ
0417デフォルトの名無しさん (ガックシ 0625-KD3v)
2016/08/25(木) 17:38:58.18ID:t2YNiaF+6メモリの許すかぎり文字列を格納し、文字数の多い順にソートするプログラムを書いています。
メモリの許すかぎりデータを格納するという設計をしようと思って作り始めたのですが、途中でSegmentation faultが出て困っています。
簡単な説明としますと、初期値としてデータ10個を格納出来るメモリを確保しそこへデータを入れていきます、データ数をカウントし途中10個目のデータを入れる段階で分岐し、倍個数のメモリを改めて確保するという方法を取りました。
プログラム全文はこちらです
http://ideone.com/LGyf0n
0418デフォルトの名無しさん (ガックシ 0625-KD3v)
2016/08/25(木) 17:46:39.37ID:t2YNiaF+6デバッガで追って確認してみたところ
char **array //各文字列格納ポインタ
char **tmp //メモリ再確保用
array = tmp
という処理をした後、両方のアドレスが
0x0になっていることが分かりました。
こういう代入方法はだめなのでしょうか?
$6 = (char **) 0x400750 <_start>
(gdb) print pline->array
$7 = (char **) 0x603010
この時点では正常に間接参照できました。
84 pline->array = pline->tmp;
この処理をした後
こうなります
(gdb) print pline->tmp
$8 = (char **) 0x0
(gdb) print pline->array
$9 = (char **) 0x0
構造体ポインタなのでpline->arrayとなってますがそこは省略して書きました。
又、初心者で学習中なので、遠回りな書き方をしていたりしますがそこはスルーでお願いします。
0419デフォルトの名無しさん (ワッチョイ 88ff-XNiq)
2016/08/25(木) 18:16:14.57ID:Ww8xhD0A0if (pline->tmp = NULL) {//メモリ確保失敗対策
これだろ
if文の中で代入してる
0420デフォルトの名無しさん (ワッチョイ 88ff-XNiq)
2016/08/25(木) 18:19:21.33ID:Ww8xhD0A00421デフォルトの名無しさん (ガックシ 0625-KD3v)
2016/08/25(木) 18:41:45.69ID:t2YNiaF+6ひぇ〜
ほんとだ!有り難うございます!
0422デフォルトの名無しさん (ワッチョイ cec2-Q4SI)
2016/08/25(木) 20:40:39.13ID:pKEfxGgH00423デフォルトの名無しさん (アウアウ Sa01-rVUj)
2016/08/25(木) 20:55:05.47ID:9n39Q2MSa0424デフォルトの名無しさん (ワッチョイ 7e4d-t1qj)
2016/08/25(木) 21:39:01.91ID:CrIooFIW0誰もが一度は通る道を、優しく教えてあげる姿にほっこりした。
0425デフォルトの名無しさん (ワッチョイ ba13-i1OG)
2016/08/25(木) 21:47:03.46ID:/4caYD7N00426デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/25(木) 21:54:01.44ID:vjDEOn7Y0でもこういうのにもすぐ気づけるようならないとダメですよねぇ...
0427デフォルトの名無しさん (ワッチョイ d690-gQqU)
2016/08/25(木) 22:05:53.98ID:+uURWhA40自分のレベルは
if for whileとかの意味や、printfとかの単純な関数は理解している
ポインタや配列があまりよくわからない
足し算するだけとか文字を表示するだけなどは作ったことがあるが、30行以上のコードであったりデータ構造を実装するなどはやったことがなく、おそらくできない 逆にいうとこういうことができるようになりたい
できれば環境設定も載ってる本がいいです(上記の知ってる内容は大学のPCでやったので、自宅だとできません)
0428デフォルトの名無しさん (アウアウ Sa01-t1qj)
2016/08/25(木) 22:10:44.06ID:tzXfC0WHa0429デフォルトの名無しさん (ワッチョイ 3e85-gQqU)
2016/08/25(木) 22:36:15.07ID:1NVjem7W0載せてるもんだけど。
パスの通し方が判らんとかコマンドラインの操作が判らんってんならvisual studioを使ってるやつで探せばいいっしょ。
というか、自宅で環境設定が出来ないというならその前にOSの操作について慣れておく必要があるんじゃ?
0430デフォルトの名無しさん (ワッチョイ dd7b-IrME)
2016/08/25(木) 22:53:20.97ID:OHZLQrvn0環境構築から説明するようないわゆる「初心者向けの本」は総じてオススメしない
情報が古すぎるし内容もwebでいくらでも入手できる情報の下位互換でしかない
どうしても本を買うなら「標準ライブラリのリファレンス本」がいい
それも自分でサンプル集なりhtmlでリファレンスなり作っちゃえば用無しになるけど
0431デフォルトの名無しさん (ワッチョイ d690-gQqU)
2016/08/25(木) 22:55:34.28ID:+uURWhA40それでは環境構築の説明が無い本も含めるとオススメはありますか?
0432デフォルトの名無しさん (ワッチョイ d66c-gQqU)
2016/08/25(木) 23:31:13.89ID:f4ZfsxuS0>ポインタや配列があまりよくわからない
こういうレベルであればこそK&R
0433デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/25(木) 23:55:05.50ID:vjDEOn7Y0自分もカーニハン&リッチーおすすめですかね
0434デフォルトの名無しさん (スプッッ Sdb8-t1qj)
2016/08/26(金) 00:29:54.61ID:xGNz5Xend一応プログラミング言語Cがこのスレ的にはバイブル
たた訳者がポンコツなので英語分かるなら原書をお勧めする
0435デフォルトの名無しさん (アウアウ Sa01-t1qj)
2016/08/26(金) 07:33:11.29ID:Gni4uRYXa0436デフォルトの名無しさん (ワッチョイ 7eba-Vqeh)
2016/08/26(金) 11:14:04.17ID:LkV1Lc9c00437デフォルトの名無しさん (ドコグロ MM3f-t1qj)
2016/08/26(金) 12:53:51.23ID:RJ1rrcoTM何の初心者かによる。プログラミングは知ってるけどC言語は初心者
って人向けだと前書きに書いてあるので
何も知らない赤ちゃんみたいな人だと難しいかも
0438デフォルトの名無しさん (ワンミングク MM40-Ptq2)
2016/08/26(金) 13:08:24.67ID:xCkCqiRqM凝ったことするときはcurses使うので考えたこともなかったけど知ってれば便利なものってまだまだあるんだろうな
0439デフォルトの名無しさん (JP 0H61-t1qj)
2016/08/26(金) 13:40:24.49ID:exZ6eD+dH配列があまりよくわからないってんだから
プログラミングは知ってないだろ
0440デフォルトの名無しさん (ワッチョイ 9c7b-zvPZ)
2016/08/26(金) 16:55:08.92ID:RGEn9Q8j00441デフォルトの名無しさん (ワッチョイ cec2-Q4SI)
2016/08/26(金) 18:19:32.20ID:Q2xDNdws0ttps://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf
0442デフォルトの名無しさん (ワッチョイ cec2-Q4SI)
2016/08/26(金) 18:22:16.96ID:Q2xDNdws0ttp://www.mosaic-industries.com/embedded-systems/_media/c-ide-software-development/learning-c-programming-language/understanding-and-using-c-pointers.pdf
0443デフォルトの名無しさん (スップ Sdc8-qQHP)
2016/08/26(金) 18:33:19.77ID:JPE4ysRCd0444デフォルトの名無しさん (ワッチョイ 7c7b-F3Fi)
2016/08/26(金) 18:40:26.78ID:DwWF74Ym00445デフォルトの名無しさん (スップ Sdc8-qQHP)
2016/08/26(金) 18:44:30.49ID:JPE4ysRCd0446デフォルトの名無しさん (ガラプー KK25-AuDT)
2016/08/27(土) 02:09:18.50ID:bgZ0ZyXgK独習Cっていう厚い本良いですか?
アマゾンレビューは評価が分かれてて…。
0447デフォルトの名無しさん (アウアウ Sa01-t1qj)
2016/08/27(土) 08:34:00.87ID:7WDda6qqa0448デフォルトの名無しさん (ワッチョイ 7fc9-t1qj)
2016/08/27(土) 09:25:03.98ID:vSdZgkIy00449デフォルトの名無しさん (ワッチョイ 3e85-gQqU)
2016/08/27(土) 10:00:21.66ID:x/ApqDvP00450446 (ガラプー KK25-AuDT)
2016/08/27(土) 10:17:30.68ID:bgZ0ZyXgK住んでる所が地方なので周りの本屋にあまりプログラムの本が置いてないんです。オライリーの本くらいしかありません。
0451デフォルトの名無しさん (ワッチョイ b77b-qEI/)
2016/08/27(土) 12:10:05.94ID:OFUg9SIZ0だからぶ厚い入門書なんて要らんと本で入門しなかった俺は思う
0452デフォルトの名無しさん (ワッチョイ 0448-Ptq2)
2016/08/27(土) 12:33:07.27ID:hvbipPnB00453デフォルトの名無しさん (ワッチョイ 7f6f-Kfh8)
2016/08/27(土) 13:12:02.43ID:puh4Hp890ほんとは\rの後同じ文字を出力してbold表示を作るんだ
0454デフォルトの名無しさん (ワッチョイ de3c-t1qj)
2016/08/27(土) 13:28:38.17ID:wqSjCbZp0ゴルフボールかよ w
つか B^HBO^HOL^HLD^HD ってやる方が普通だと思う
0455デフォルトの名無しさん (ワッチョイ cec2-Q4SI)
2016/08/27(土) 14:04:40.12ID:/lPBBpET0オライリーを置く本屋の方が珍しい。
0456デフォルトの名無しさん (ワッチョイ df41-hMGK)
2016/08/27(土) 21:32:51.74ID:nVNQ8rj/0初心者ですが
ポインタの理解としては
電話で変数の中身を聞くのではなく
住所を割り出して自宅凸して直接確かめる、
という感じでいいんでしょうか?
0457片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK7f-/Sah)
2016/08/27(土) 21:39:51.94ID:UpERV3vPKメインメモリーにあるデータ記録場所は数で表せる。
それをアドレスと言ったりポインターと言ったりする。
アドレスは普通のデータ型と区別するためにポインター型というものを使う。
0458デフォルトの名無しさん (アウアウ Sa01-t1qj)
2016/08/27(土) 21:50:01.58ID:mZx/GONBa違うと思う。電話で例えるのはやめたら?
0459デフォルトの名無しさん (ワッチョイ 757b-t1qj)
2016/08/27(土) 21:54:59.35ID:mf8cYo/10car と cdr の違いだよ
0460デフォルトの名無しさん (ワッチョイ 7f6f-Kfh8)
2016/08/27(土) 22:12:26.95ID:puh4Hp8900461デフォルトの名無しさん (ワッチョイ dd7b-IrME)
2016/08/27(土) 22:59:37.11ID:mTjMXdTp0難しく考えることはない
int a = 100;
int *b = &a;
箱 a の中身が「100」 だとすれば
箱 b の中身は「箱 a の場所を記した紙切れ」だ
単に b とアクセスしてしまうと紙切れを内容と解釈するだけなので
b を経由して a にアクセスするためには関節参照演算子 * を付けて *b とする
0462デフォルトの名無しさん (JP 0Hcd-gQqU)
2016/08/28(日) 00:28:01.09ID:0bJar0u9Hコメント含めて優秀なポインタの解説記事が出てくる
0463デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/28(日) 00:30:20.10ID:7HPdDlC80abc.hのヘッダファイル先頭に
#ifdef ABC_H
#define ABC_H
void test(){
}
最後に
#endif ABC_H
と記述します
main.cから
#include "abc.h"
としてインクルードし
test();
を呼び出すのですが
test関数が定義されてないと怒られてしまいます。インクルードガードの使い方を間違っているのでしょうか?
0464デフォルトの名無しさん (ワッチョイ 9c7b-zvPZ)
2016/08/28(日) 00:33:37.69ID:CaGzKWyD0アドレスの中身・内容が値
例えば、100〜103番地の4バイトに、Int32型の値、1を持つとき、
先頭アドレスは100で、Int32型、サイズは4バイト、値は1となる
0465デフォルトの名無しさん (ワッチョイ 7f6f-Kfh8)
2016/08/28(日) 00:34:13.10ID:NS1QgDmI0> #ifdef ABC_H
> #define ABC_H
> #endif ABC_H
いろいろやばいですよ
0466デフォルトの名無しさん (ワッチョイ 9c7b-zvPZ)
2016/08/28(日) 00:38:15.77ID:CaGzKWyD0>#define ABC_H
#if not def ABC_H
もし、定義されていなければ、定義する。
漏れもよく知らないから、自分で否定形を検索して
0467デフォルトの名無しさん (ワッチョイ 7e42-gQqU)
2016/08/28(日) 00:42:04.94ID:bDqORRlk00468デフォルトの名無しさん (ワッチョイ 7e42-gQqU)
2016/08/28(日) 00:43:12.63ID:bDqORRlk00469446 (ガラプー KK7f-AuDT)
2016/08/28(日) 00:43:15.73ID:hWMEp1xFK答えて頂いた方、ありがとうございました。
0470デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/28(日) 00:47:15.70ID:7HPdDlC80まじすか。。。webで書き方チラッとみたんですがやっぱりおおちゃくせず自分で考えて書きます
0471デフォルトの名無しさん (JP 0Hcd-gQqU)
2016/08/28(日) 00:52:25.36ID:0bJar0u9H#ifndef ABC_H
#define ABC_H
#ifdef __cplusplus
extern "C" {
#endif
extern void test();
#ifdef __cplusplus
}
#endif
#endif // ABC_H
0472デフォルトの名無しさん (ワッチョイ 40a3-LL1O)
2016/08/28(日) 02:24:51.92ID:S4wK6H0900473デフォルトの名無しさん (ワッチョイ 7e42-gQqU)
2016/08/28(日) 02:33:22.49ID:bDqORRlk0参考にしたサンプルソースがあるのか?
0474デフォルトの名無しさん (ワッチョイ cddc-Eng/)
2016/08/28(日) 06:36:44.08ID:Gj2gLWrJ0#ifdef じゃなくて #ifndef な、
というのが最も簡潔な回答かな。説明は全部省略した場合の答え。
>>471 はC++からも呼び出される可能性のあるCの関数で使う書き方。
実際のインクルードファイルでは、こういう色んな場合に対応した
ゴチャゴチャした書き方が必要になってて、見慣れないと見にくいよね。
「この部分の条件コンパイルは何のためだろう?」てな感じ。
0475デフォルトの名無しさん (JP 0Hcd-MmRS)
2016/08/28(日) 07:13:36.46ID:cNmF5uLjH0476デフォルトの名無しさん (ワッチョイ 7e42-gQqU)
2016/08/28(日) 09:53:07.20ID:bDqORRlk00477デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/28(日) 12:19:51.69ID:7HPdDlC80丁寧に有り難うございます
仰るとおり見慣れてないと見にくいように感じてしまいますね
0478デフォルトの名無しさん (ワッチョイ d66c-gQqU)
2016/08/28(日) 17:46:34.47ID:WauWas/F0/* abc.h */
#ifndef ABC_H
#define ABC_H
void test(void);
#endif
**********************************
/* abc.c */
#include "abc.h"
void test(void);
{
.....;
}
**********************************
/* main.c */
#include <stdio.h>
#include "abc.h"
int main(void)
{
.....;
return 0;
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0479デフォルトの名無しさん (ワッチョイ cec2-Q4SI)
2016/08/28(日) 19:09:15.59ID:nd9FhnVh00480デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/28(日) 20:03:26.04ID:7HPdDlC80ちなみに
オブジェクトファイルが複数個あるときはアーカイブファイルにするのが一般的ですか?
ar crv lib.a abc.o def.o ghi.o
cc -o main main.o lib.a
でないとリンクするときめんどくさいですよね?他に良い方法あるんでしょうか
0481デフォルトの名無しさん (ワッチョイ 7f5b-t1qj)
2016/08/28(日) 20:10:32.91ID:f+MS5Cr300482デフォルトの名無しさん (ワッチョイ 3e17-gQqU)
2016/08/28(日) 21:57:51.48ID:rbcABw6M0これからはrakefile
rakefileは分かりやすい
0483デフォルトの名無しさん (ワッチョイ 7e0c-qQHP)
2016/08/28(日) 22:56:33.27ID:TcwdS3gd00484デフォルトの名無しさん (ワッチョイ e1c1-KD3v)
2016/08/28(日) 23:24:07.24ID:7HPdDlC80有り難うございます
0485デフォルトの名無しさん (ワッチョイ d66c-gQqU)
2016/08/29(月) 00:05:15.79ID:HoqZTsE50http://www.oreilly.co.jp/library/4873112699/
0486デフォルトの名無しさん (ワッチョイ cddc-Eng/)
2016/08/29(月) 05:19:04.83ID:hghRBhuw0ダウンロードしてみたところ、表紙を除いて全部が入ってるみたいね。
これは助かる。ありがとうO'Reilly、ありがとう485。
0487デフォルトの名無しさん (ワッチョイ 7f6f-Kfh8)
2016/08/29(月) 06:29:37.40ID:3dic6jPQ00488デフォルトの名無しさん (ワッチョイ 40a3-LL1O)
2016/08/29(月) 07:42:07.12ID:WhQhLVpY0ナイス!
0489デフォルトの名無しさん (ワッチョイ 9c42-gQqU)
2016/08/29(月) 09:31:16.45ID:9l6dWsqS00490デフォルトの名無しさん (ワンミングク MM40-Ptq2)
2016/08/29(月) 10:26:01.16ID:rITYaHNbMおぉ!ありがと!
0491デフォルトの名無しさん (ワッチョイ 7eba-Vqeh)
2016/08/29(月) 11:09:39.10ID:OcJqV5W/0ありがとう
0492デフォルトの名無しさん (ワッチョイ 9c7b-zvPZ)
2016/08/29(月) 12:51:43.60ID:pCoMcuGf0本もあるよ
0493デフォルトの名無しさん (ワッチョイ 1e5b-Vqeh)
2016/08/29(月) 17:40:26.68ID:D15V/Uej00494デフォルトの名無しさん (ワッチョイ 88ff-XNiq)
2016/08/29(月) 17:46:12.12ID:O/EX6pVb0章ごとに分かれてるけどそれぞれpdfになってるでしょ
0495デフォルトの名無しさん (ワッチョイ 1e5b-Vqeh)
2016/08/29(月) 17:48:26.03ID:D15V/Uej00496デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/29(月) 18:52:48.16ID:TMR7I9XN0オブジェクト一つ一つに何か型を判定する識別子を持たせるしか
方法ないんですか?
それだと重いんですけど。
静的な構造体のメンバーが持てればいいんですけど。
0497デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/29(月) 18:59:13.55ID:TMR7I9XN0同じ型のオブジェクトは同じ配列に入れて、その配列内にあるか
判定するとか思いついたけど実現性は薄いですね。
0498デフォルトの名無しさん (ワッチョイ 7c7b-UTjx)
2016/08/29(月) 19:30:21.26ID:gu3FOZUw00499デフォルトの名無しさん (ワッチョイ de4e-wEvP)
2016/08/29(月) 20:22:24.11ID:HmUmWpCM0インデックスは列挙型。
0500デフォルトの名無しさん (アウアウ Sa01-hMGK)
2016/08/30(火) 00:42:29.57ID:+L2mQNqCa遅くなりましたがポインタについて
いろいろレスありがとうございました
Cがメインの言語ではないんですが
ちょっと気になったので。
ゆっくり勉強します
0501デフォルトの名無しさん (ワッチョイ e0c1-WuaH)
2016/08/30(火) 02:18:42.98ID:KRqrNXD70int global_variable = function();
のように関数で初期化することは合法ですか?
標準の版によって異なるようであればそこんとこもお願いします。
0502デフォルトの名無しさん (ワッチョイ de4e-wEvP)
2016/08/30(火) 02:24:52.06ID:/CBfBqKD0Initializer element is not a compile-time constant
0503デフォルトの名無しさん (ワッチョイ e0c1-WuaH)
2016/08/30(火) 03:42:59.05ID:KRqrNXD700504デフォルトの名無しさん (JP 0Hcd-MmRS)
2016/08/30(火) 09:36:14.56ID:7XaQ2bAdH0505デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/30(火) 10:07:25.13ID:8FFOlsKi0list * next;
char a[]; // Unsized array
};
こういう可変長構造体でcharの配列部分を構造体にキャストされて
Voidポインターじゃないリストは作れるかどうかわ
実際に試して無くて理論上でしかわかってないのですが
作っても問題ないですか?
0506デフォルトの名無しさん (エーイモ SEed-40Y4)
2016/08/30(火) 11:11:13.50ID:7mJsAv1uE今からCを覚えるためにここの先輩方おすすめのサイトか本を教えてください
ねこでもわかるC言語はWindows向け?だったので途中でやめました
0507デフォルトの名無しさん (ワンミングク MM40-Ptq2)
2016/08/30(火) 11:25:36.73ID:eIfy12tjM434
0508デフォルトの名無しさん (ワンミングク MM40-Ptq2)
2016/08/30(火) 11:30:44.56ID:eIfy12tjMでググって出てくる本が良さげ
0509デフォルトの名無しさん (ササクッテロ Sp69-qQHP)
2016/08/30(火) 11:50:41.37ID:xgpTgq7wpunionにしてtypeを判断してオブジェクトを選ぶとか
union {
int type;
struct {
int type;
// 適当にメンバー
} hoge;
struct {
int type;
// 適当にメンバー
} foo;
} uni;
0510デフォルトの名無しさん (ワッチョイ 7e4f-gQqU)
2016/08/30(火) 11:56:14.99ID:t6JGm4v70type を union でぶっつけずに struct 中 の union で書くかな?
struct {
int type;
union {
strust type1 { .. } t1;
strust type2 { .. } t2;
...
} uni;
};
0511デフォルトの名無しさん (JP 0Hcd-gQqU)
2016/08/30(火) 12:20:21.53ID:cF5TzwEdHchar a[] の部分を別の構造体へのポインタにキャストできるし、ポインタを通じてアクセスもできるがオススメしない
0512デフォルトの名無しさん (ガラプー KK25-AuDT)
2016/08/30(火) 20:25:22.99ID:C4ScbY62Kunionなんて使う機会あるんスね。
0513デフォルトの名無しさん (ドコグロ MM74-t1qj)
2016/08/30(火) 20:27:54.04ID:RPFxvzfNM0514デフォルトの名無しさん (アウアウ Sa01-rVUj)
2016/08/30(火) 20:29:31.74ID:2E/+BbzGa0515デフォルトの名無しさん (ワッチョイ de3c-gQqU)
2016/08/30(火) 20:46:48.56ID:K5NvRd9x00516デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/30(火) 20:59:00.27ID:8FFOlsKi0int type;
void * derived_class;
} base_class;
こうするのが普通だろうな
0517デフォルトの名無しさん (ワッチョイ 9c42-gQqU)
2016/08/30(火) 21:42:32.66ID:q7NbkRLH0int type; /* must not be changed */
XAnyEvent xany;
XKeyEvent xkey;
XButtonEvent xbutton;
XMotionEvent xmotion;
XCrossingEvent xcrossing;
XFocusChangeEvent xfocus;
XExposeEvent xexpose;
XGraphicsExposeEvent xgraphicsexpose;
XNoExposeEvent xnoexpose;
XVisibilityEvent xvisibility;
XCreateWindowEvent xcreatewindow;
XDestroyWindowEvent xdestroywindow;
XUnmapEvent xunmap;
XMapEvent xmap;
XMapRequestEvent xmaprequest;
XReparentEvent xreparent;
XConfigureEvent xconfigure;
XGravityEvent xgravity;
XResizeRequestEvent xresizerequest;
XConfigureRequestEvent xconfigurerequest;
XCirculateEvent xcirculate;
XCirculateRequestEvent xcirculaterequest;
・・・
XClientMessageEvent xclient;
XMappingEvent xmapping;
XErrorEvent xerror;
XKeymapEvent xkeymap;
long pad[24];
} XEvent;
行が長すぎなので途中省略w
0518デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/30(火) 22:00:40.10ID:8FFOlsKi00519デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/30(火) 22:19:30.55ID:8FFOlsKi0unionで同じにできるってことは同じ型の変数が同じ順番に
現れていれば同じとこまでは同じってことだよね。
だから問題ないね。
0520デフォルトの名無しさん (ワッチョイ 804e-t1qj)
2016/08/31(水) 00:35:34.12ID:z1jYmTC80I/Oポート操作するときとか。
0521デフォルトの名無しさん (ワッチョイ 7e4f-gQqU)
2016/08/31(水) 08:46:46.70ID:R2wCMWFk0それぞれの X〜 構造体の先頭要素に int type が必ずあるやりかたなんだね
0522デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/31(水) 10:17:05.04ID:p1K5Mzky00523デフォルトの名無しさん (ワッチョイ 9c42-gQqU)
2016/08/31(水) 10:25:09.05ID:xAEFTakh00524デフォルトの名無しさん (エーイモ SE0e-40Y4)
2016/08/31(水) 11:28:53.09ID:TpIoDyHUEC言語というのはVC++でしか書けないものっていうぐらいの知識しかなかったんですが
C11とC17とC99とかいろいろあることを知りました
今から学習するならどれから始めたいいんでしょうか?
0525デフォルトの名無しさん (ドコグロ MM1c-t1qj)
2016/08/31(水) 11:48:31.72ID:wnRi/liKM0526デフォルトの名無しさん (アウアウ Sa01-t1qj)
2016/08/31(水) 11:54:02.14ID:0N5fpulZa0527デフォルトの名無しさん (JP 0Hcd-MmRS)
2016/08/31(水) 13:08:43.28ID:mqymnS7ZHVC++ が使えるなら それで使える範囲をおぼえればいい
正直、自称プロでも C11やらC17 を理解して使いこなす人は多くないから
C99+α(環境依存) だけ目標にしとけばいい
ただし C と C++ の知識が混ざるとよくないから
C を使う場合はファイル拡張子を .c にすると決めておくのがいい
0528デフォルトの名無しさん (ワッチョイ 7519-hifv)
2016/08/31(水) 15:42:46.84ID:p1K5Mzky00529デフォルトの名無しさん (ワッチョイ 7e0c-qQHP)
2016/08/31(水) 16:17:08.04ID:484LajMm0後は古のK&R Cとか?
0530デフォルトの名無しさん (ワッチョイ 7e0c-qQHP)
2016/08/31(水) 16:17:41.74ID:484LajMm00531デフォルトの名無しさん (ワッチョイ cddc-Eng/)
2016/08/31(水) 17:17:44.57ID:WNpxNMes0別の言語なので、まずはそこに気をつけろ、ということ。
C11 と C++11 が(同じ数字で)存在するのよね。
0532デフォルトの名無しさん (ワッチョイ 7935-rVUj)
2016/08/31(水) 17:43:42.59ID:ILH765tm00533デフォルトの名無しさん (ドコグロ MM3f-t1qj)
2016/08/31(水) 18:43:27.15ID:Q4dnbqrxM0534デフォルトの名無しさん (ワッチョイ 9cbf-qQHP)
2016/08/31(水) 20:19:47.07ID:16QJTCAz0いい加減にしろ!
0535デフォルトの名無しさん (ワッチョイ de3c-t1qj)
2016/08/31(水) 21:06:55.66ID:3CnmSlUz00536デフォルトの名無しさん (ワッチョイ 7dc9-t1qj)
2016/08/31(水) 21:10:19.95ID:4OS0+uD700537デフォルトの名無しさん (ワッチョイ d6c0-a0e2)
2016/08/31(水) 21:25:57.87ID:U6JvyzT700538デフォルトの名無しさん (ワッチョイ 40a3-LL1O)
2016/08/31(水) 21:42:19.69ID:fEzvVNxk00539デフォルトの名無しさん (ワッチョイ 9c42-gQqU)
2016/08/31(水) 21:44:59.66ID:xAEFTakh0経典の読み方で解釈が変わるとかありそうだ
0540デフォルトの名無しさん (アウアウ Sa01-KD3v)
2016/08/31(水) 23:42:35.35ID:eq7fsml1asrcディレクトリにsrc1.cとsrc2.c
includeディレクトリにlib.h
これらを使って実行ファイルmainをビルドしようと思って書いてみました
CC = gcc
CPPFLAGS = -I include
VPATH = src
main:main.c src1.o src2.o
$(CC) -o main $(CPPFLAGS) $^
src1.o:src1.c
$(CC) -c src1.c
src2.o:src2.c
$(CC) -c src2.c
***最初のターゲットより前にコマンドを起動. 中止と出てしまいます。
srcディレクトリにて cc -o main -I ../include main.c src1.o src2.o
とした場合には正常にビルド出来ます
0541デフォルトの名無しさん (ワッチョイ 3e17-gQqU)
2016/08/31(水) 23:50:19.04ID:dHlqOnKF0CPPFLAGS = -I./include
VPATH = ./src
main:main.c src1.o src2.o
$(CC) -o main $(CPPFLAGS) $^
src1.o:src1.c
$(CC) -c $(VPATH)/src1.c
src2.o:src2.c
$(CC) -c $(VPATH)/src2.c
0542デフォルトの名無しさん (ワッチョイ 777b-UYCy)
2016/09/01(木) 00:42:15.19ID:nGqVI4Wr00543デフォルトの名無しさん (JP 0H4f-pIcq)
2016/09/01(木) 00:52:51.92ID:oR+I8oU5H0544デフォルトの名無しさん (ワッチョイ 777b-UYCy)
2016/09/01(木) 04:02:43.27ID:nGqVI4Wr0Gradle なら構文もわかりやすいし、Groovy でプログラミングのように、手続きも書ける
0545デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/01(木) 05:32:30.99ID:FZE3lCU70ちょうど >>485 で紹介された無料PDFの『GNU Make 第3版』を読んでるとこ。
main: , src1.o: , src2.o: の各行はターゲットの指定なので
行の先頭から書かないとダメよ。
makeさんは main: の行(たぶん行頭にタブがある)を見て
「ターゲットが指定されてないのにコマンド main:main.c を
実行するように命じられてるですけど」と言ってる。
とりあえず今回の原因はそれだろう。
makeの実行時にmakefile中のエラー行番号が表示されるはずだがなぁ。
0546デフォルトの名無しさん (ササクッテロ Sp8f-10NS)
2016/09/01(木) 12:04:26.92ID:VlidTBqEp0547デフォルトの名無しさん (アウアウ Sa0f-I+Ar)
2016/09/01(木) 16:07:23.20ID:985JS2liaタブを抜いたら出来ました。有り難うございます
ですが、makefileを親ディレクトリにおくとオブジェクトも親に出来てしまうのですね...
makefileと実行ファイルのみ親に作ることはできるのかな?オライリーのpdfが配布されている様なのでちゃんと目を通して見ることにしてみますm(__)m
0548デフォルトの名無しさん (ワッチョイ c7ff-/sqZ)
2016/09/01(木) 16:15:02.19ID:QpZxesxe0上のMakefileはそれぞれのMakefileでmakeする形になるかと
0549デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/01(木) 16:25:01.00ID:FY85t8sS0全体のサイズを割り当てなくても必要な構造体だけが入る大きさで問題ないですか?
0550デフォルトの名無しさん (JP 0H4f-pIcq)
2016/09/01(木) 17:42:36.93ID:oR+I8oU5H0551デフォルトの名無しさん (ワッチョイ c7ff-/sqZ)
2016/09/01(木) 18:06:53.80ID:QpZxesxe00552デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/01(木) 18:43:57.36ID:IqqYN49f0long pad[24];
これが共用体のサイズを決めていたはず
各イベント構造体はこれより大きくない様に設計されてたはず
0553デフォルトの名無しさん (ワッチョイ afc2-mhjm)
2016/09/01(木) 18:53:11.40ID:wr8HVpEY0こっちのタイトルもそのうち日本語版が提供されるのかな。
http://www.oreilly.com/openbook/
0554デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/01(木) 19:02:28.86ID:FY85t8sS0使わないからいいさく割り当てても問題ないのか聞いています。
0555デフォルトの名無しさん (ワッチョイ 6f3c-wh/5)
2016/09/01(木) 19:23:54.76ID:L4FyPA9F0(2) ポインタで渡して、実質そこしか使わないなら大丈夫かもしれないが、
呼び出された先で(1)のようなコピーとってるようだと駄目
自分で作って 自分で使って (自分で消去する) 範囲なら大丈夫なんじゃね?
0556デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/01(木) 19:31:55.97ID:otP8eK2Ia0557デフォルトの名無しさん (ワッチョイ 6f3c-wh/5)
2016/09/01(木) 19:37:29.15ID:L4FyPA9F0XAnyEvent any;
・・・
foo((const XEvent*)&any);
こうやるのは危ない
0558デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/01(木) 19:42:13.74ID:FY85t8sS0意味ないと思うのだけど
0559デフォルトの名無しさん (ワッチョイ 6f3c-wh/5)
2016/09/01(木) 19:43:41.40ID:L4FyPA9F0Cの文法じゃ キャストがあろうがなかろうが 振る舞いかわらんよ?
0560デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/01(木) 19:48:22.14ID:FY85t8sS0すみません、すみません
反省しています
もう二度としません
許してください
お願いします
0561デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/01(木) 20:14:03.40ID:otP8eK2Ia0562デフォルトの名無しさん (ドコグロ MM9f-RETc)
2016/09/01(木) 20:51:32.22ID:qC9ojyjSMビットフィールドの話?
0563デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/01(木) 20:58:11.76ID:otP8eK2Iaビットフィールドじゃなく、構造体でも4バイトアライメントとかあったような気がしたんだけど。違ったらすまぬ。
0564デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/01(木) 21:07:19.53ID:otP8eK2Ia間違ってたら重ねてすまぬ。
0565デフォルトの名無しさん (ワッチョイ 6f3c-RETc)
2016/09/01(木) 22:16:44.58ID:PHNdABP90int i;
char c;
} u;
で、(char *)u.i != u.c になるかって話?
さすがに見たことない
0566デフォルトの名無しさん (ワッチョイ 6f3c-RETc)
2016/09/01(木) 22:18:28.77ID:PHNdABP90(char *)u.i != u.c
じゃなくて
(char *)&u.i != &u.c
だった
0567デフォルトの名無しさん (JP 0H0f-RETc)
2016/09/01(木) 22:20:26.21ID:72MJ7dmmHさぁみんな、ISO読むんだ
0568デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/01(木) 22:58:14.53ID:otP8eK2Ia>>554
みたいな使い方したらおかしくなるんじゃね?って思ったのです。
0569デフォルトの名無しさん (ササクッテロ Sp8f-10NS)
2016/09/01(木) 23:33:22.97ID:pRoUKq45pそれはパディングの話じゃなくてエンディアンの話じゃ無いかな
>>554 はもちろんunionの中でアクセス対象とするメンバの構造体が決まっているから成り立つ
基本的にキャストしない方変換なんてやってはいけない
0570デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/01(木) 23:36:55.86ID:wH/lQgu70今はどっちが主流・多数派なん?
0571デフォルトの名無しさん (スップ Sd5f-RETc)
2016/09/01(木) 23:40:28.98ID:iloxib6xdif ( 条件式 ) {
}
0572デフォルトの名無しさん (ワッチョイ 77bf-10NS)
2016/09/01(木) 23:44:23.93ID:ky2ADSad0{ // ここの行がスカスカになって好きじゃない
//コメント書けばいいけどインデントの前に括弧がつくのは受け付けない
}
0573デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/01(木) 23:52:04.48ID:1exmvNlu0制御文はこれ。
>>572
関数はこれ。
0574デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/02(金) 00:57:44.36ID:k1WNyXWb0あなたは……でなくて、世間一般で多いのはどっちかを訊いてるのに。
0575デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/02(金) 01:05:16.23ID:tpnnhSQT00576デフォルトの名無しさん (ワッチョイ 2317-RETc)
2016/09/02(金) 01:06:51.56ID:ET6lSoO60コンパイルは同じだし
0577デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/02(金) 01:18:00.04ID:tpnnhSQT0) と { の間はスペース入れるのかどうかとか
( ) の内側に、スペース入れるのかどうかとか、
= や == の前後にはスペース入れるのかどうかとか
いろいろあって、議論すると延々と続いて楽しいよね?
0578デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/02(金) 01:20:20.04ID:4oA64gFx00579デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/02(金) 01:29:22.82ID:k1WNyXWb0forとかwhileとか()に演算式の入る場合が多々あるのはどうするん?
0580デフォルトの名無しさん (ワッチョイ 033f-RETc)
2016/09/02(金) 01:29:37.30ID:jyXXlfBd0世間一般がどうかなんて知ってるはずねーだろ
いい加減にしろ
0581デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/02(金) 01:36:32.63ID:4oA64gFx0こう書く。かっこの内側ってそういう意味でしょ。
for (int i=0; i<max; i++) {
}
0582デフォルトの名無しさん (ワッチョイ 77bf-10NS)
2016/09/02(金) 01:38:36.21ID:2eJk4Nb60よってどちらが一般的などと気にすることも明確にする必要もない
そもそも実用性の点から自分で判断すべきだろう
世間がこうだから俺もこうするってのはアホ
この類の宗教戦争の実は俺こっちの方が絶対良いもん!って言いたいだけでまったく強要してないし
0583デフォルトの名無しさん (ワッチョイ 0b9b-RETc)
2016/09/02(金) 01:51:45.95ID:17n5VyUh0自分はCとC++で使い分けてる
0584デフォルトの名無しさん (ワッチョイ f7d2-RETc)
2016/09/02(金) 02:25:49.78ID:VW6VL/c10#if とか使う時位かな?
0585デフォルトの名無しさん (ワッチョイ 63c1-I+Ar)
2016/09/02(金) 03:51:05.77ID:01mdSIC60extern void tes();
と宣言してその関数のあるソースファイル
tes.cに
#include <stdio.h>
#include "utility.h"
void tes(){
.
.
.
で、utility.hをincludeする必要はなんですか?
色々参考見てみるとこの様に書かれていることが多いのですが、なんというか自分自身をincludeしているようでいらないように思えるのです。実際これincludeしなくても動きますよね?
0586デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/02(金) 06:57:34.59ID:96M6CE+e0当初の仕様...
tes.h:
extern void tes(); /* 引数なし */
tes.c:
#include "tes.h"
void tes() {...} /* 引数なし */
製作途中でtes()の仕様が変わって、例えば引数が1個追加されたとする。
tes.h:
extern void tes(); /* 引数なし ... 実際の関数と食い違ってる! */
tes.c:
#include "tes.h"
void tes(int para) {...} /* 引数を1個追加 */
tes.h での宣言と tes.c での定義とが食い違ってる、
つまり tes.h の修正をし忘れた、
tes()を呼び出す側も古い仕様のままtes()を使用してる、ということを
tes.cのコンパイル時に知ることができるようになる。
0587デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/02(金) 07:14:24.42ID:4oA64gFx00588デフォルトの名無しさん (ドコグロ MM9f-RETc)
2016/09/02(金) 08:11:08.40ID:Vf4h0u1DMtes( ) を使うのが tes.c だけならお前さんの言う通り include の必要はないし、定義より下で使うなら
> extern void tes();
も要らない
(そのファイル内でしか使わない場合は
> static void tes(){
> .
> .
のようにして外部では使わないことを明示した方がいい)
でも、tes( ) を tes.c 以外のソースファイルで使うならそのソースにも
> extern void tes();
を書かないと使えない
一個や数個位ならいいけど使うソースファイルや関数が増えて来たら大変でしょ
引数ある関数ならその引数の型も書く必要あるしね
printf( ) や fopen( ) を使うためにいちいちそれらの宣言書くより
#include <stdio.h>
って楽でしょ?
0589586 (ワッチョイ b3dc-+jFW)
2016/09/02(金) 08:33:27.37ID:96M6CE+e0関数に対するextern修飾は不要なんだっけね。
あってもなくても動作は同じ。
個人的には extern と static (とC++のinline) が
同じ6文字の単語なんで重宝することがある。
extern int func1( 何やら複雑な引数列 );
static int func2( 上と同じ引数 );
inline int func3( ここも同じ引数 );
引数並びが同じになってることを見比べやすい程度だけど、
まぁ害もないのでexternを書く習慣になってる。
で、一ヶ所で書くならどこでも書くでしょ、という感じ。
空白で位置を揃えれば、というのはまた別の話ね。
0590デフォルトの名無しさん (JP 0Hdf-TXi9)
2016/09/02(金) 08:59:28.64ID:nBYyPGNBHその日の気分で
0591デフォルトの名無しさん (ワッチョイ ef4f-wh/5)
2016/09/02(金) 09:09:04.09ID:p/b91eBU00592デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 09:44:28.45ID:6Qab/oE800593デフォルトの名無しさん (JP 0H5f-wh/5)
2016/09/02(金) 11:35:32.00ID:09Or23vIHstruct student{
int x;
in y;
}s1
これで、関数に渡すだろ?
ポインタで渡すやり方も書いてあるけど
どっちが主流なの?
0594デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/02(金) 11:42:11.41ID:4oA64gFx0大きな配列をメンバーに持つとかのね。
そういう時はポインタ渡しだな。
それぐらいのサイズなら、1行で済むので値渡しするな俺は。
0595デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 11:48:13.09ID:6Qab/oE80多くいるなんて昔は思ってたけどmallocするとfreeするためにサイズを保存するから
さらに一つ多くいるんだね。
0596デフォルトの名無しさん (ササクッテロ Sp8f-10NS)
2016/09/02(金) 11:51:56.01ID:EpS7gvoKpポインタで渡す
0597デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 11:55:29.04ID:6Qab/oE80intは32bitでアドレスは64bitだから同じだよね。
0598デフォルトの名無しさん (アウアウ Sa0f-I+Ar)
2016/09/02(金) 13:15:38.35ID:tvWxkBk7a構造体はコピー渡しだからデカイデータだと効率悪くなると読んだ
0599デフォルトの名無しさん (JP 0H5f-wh/5)
2016/09/02(金) 14:05:30.10ID:Z98P2xofH0600デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 14:09:32.78ID:6Qab/oE80型を何にしても通るんですけど
0601デフォルトの名無しさん (オッペケ Sr8f-RETc)
2016/09/02(金) 15:08:04.08ID:ZlS/xk/Sr関数ポインターに対して演算することは無いからだと思う
0602デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 16:23:19.91ID:6Qab/oE80空の括弧だけの2つやり方があるけれど、違いは
どこにもありませんね。
どちらにしろ、どんな型でも代入できるので書く意味は無意味ですね。
0603デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 17:15:13.27ID:6Qab/oE80エラーも警告も出ないのに動作は未定義になる。
0604デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 17:51:05.46ID:6Qab/oE80struct {char a} A;の&Aと&A.aが一致するかってことでしょ?
これは一致することが保証されてるよ。
0605デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/02(金) 18:06:35.95ID:O8D4JkXbaいや、unionの話ね。でもたぶん大丈夫らしい
0606デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/02(金) 18:34:59.83ID:k1WNyXWb0エラーになるん違うん?
宣言と本体とで違うとそこで止まらん?
0607デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/02(金) 19:01:49.98ID:sEVlG8M9a0608デフォルトの名無しさん (ワッチョイ ff13-hHef)
2016/09/02(金) 20:34:39.53ID:BGbCtBYN0その K&R も関数に限っては
func()
{
}
なんだよ,中途半端だねー
0609デフォルトの名無しさん (ワッチョイ ff13-hHef)
2016/09/02(金) 20:36:32.61ID:BGbCtBYN0チェックされるのが普通,コンパイラはなに?
0610デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/02(金) 20:42:50.49ID:6Qab/oE80コンパイラーがなんでもチェックされない。
http://ideone.com/dtVBz0
これみて、型が違っているのに何もエラーも警告も出ない。
0611デフォルトの名無しさん (ワッチョイ ff13-hHef)
2016/09/02(金) 20:53:24.56ID:BGbCtBYN0へえ,thx
引数のときには厳しくチェックされるのにねえ‥
0612デフォルトの名無しさん (スッップ Sd5f-RETc)
2016/09/02(金) 21:00:19.40ID:gUJas/pId関数とブロックを同じにする必要はないだろ
0613デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/02(金) 21:12:48.51ID:96M6CE+e0やっぱりコンパイラによるんじゃないか。
main.c:5:20: warning: initialization from incompatible pointer type [enabled by default]
int (*fp)(double)=f;
メッセージを日本語にすると
main.c:5:20: 警告: 互換性のないポインタ型からの初期化です [デフォルトで有効]
0614デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/02(金) 22:10:45.13ID:k1WNyXWb0構造体とか配列とかは値渡しできないんじゃなかったのかと、おどろいてる。
0615デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/02(金) 22:14:19.87ID:k1WNyXWb0MS-Cの5.1でもポインタの型が違うとsyntax error出てたよなあ。
0616デフォルトの名無しさん (ワッチョイ 6f3c-wh/5)
2016/09/02(金) 23:17:02.87ID:PY4YqZXl0それは C89 より前の話だな
0617デフォルトの名無しさん (ワッチョイ ef17-wh/5)
2016/09/02(金) 23:30:53.17ID:ZSY08LTZ0やってもいいかといえば
やるべきではないな
やっぱり構造体はポインタ渡しがデフォ
0618デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/02(金) 23:41:42.47ID:sEVlG8M9a0619デフォルトの名無しさん (ワッチョイ eb7b-iG4w)
2016/09/02(金) 23:47:54.79ID:JpI/S6dI0C89より昔はできなかったが
0620デフォルトの名無しさん (ワッチョイ 63c1-I+Ar)
2016/09/03(土) 03:02:44.03ID:O1fxKxR400621デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/03(土) 03:29:04.32ID:UWPoCkyG0構造体はメンバーの領域も含めたひとつの値だからじゃないか
struct { char a[10]; } s; // sはaを含む10バイトの値
0622デフォルトの名無しさん (ワッチョイ c7d4-wh/5)
2016/09/03(土) 04:27:52.35ID:r1wVhHpW0構造体は値渡しできる仕様だから。
配列をメンバにした構造体は特例として値渡しできません、
なんて仕様にしたら複雑な仕様になってしまうからじゃね?
0623デフォルトの名無しさん (ワッチョイ 6f3c-wh/5)
2016/09/03(土) 04:34:22.41ID:GOcItm8M0いらないんじゃね?って、配列を値渡しする文法を用意しなかったんだろう
0624デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/03(土) 04:38:40.26ID:UWPoCkyG00625デフォルトの名無しさん (ワッチョイ 6f4e-9qqA)
2016/09/03(土) 04:42:28.89ID:UWPoCkyG00626デフォルトの名無しさん (JP 0H4f-pIcq)
2016/09/03(土) 06:52:40.74ID:p8M3DYzdH0627デフォルトの名無しさん (ワッチョイ 6f3c-wh/5)
2016/09/03(土) 07:10:14.41ID:GOcItm8M0受ける側の求めている配列長と 渡す側の配列長が違うのは通さない
0628デフォルトの名無しさん (ワッチョイ 8fc0-lvJd)
2016/09/03(土) 09:15:23.22ID:IfSgulxM00629デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/03(土) 10:27:15.80ID:UiaEvtM3a0630デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/03(土) 10:27:51.55ID:Q84ojFW+00631デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/03(土) 10:31:15.49ID:UiaEvtM3a0632デフォルトの名無しさん (ワッチョイ 0b7b-RJRD)
2016/09/03(土) 12:33:56.26ID:CBwHrheW00633デフォルトの名無しさん (ワッチョイ e741-RETc)
2016/09/03(土) 13:31:36.02ID:rj2mbv2U00634デフォルトの名無しさん(霧の向こうに繋がる世界) (エーイモ SE4f-R3iF)
2016/09/03(土) 13:36:14.82ID:dJKRKg36E0635デフォルトの名無しさん (ササクッテロ Sp8f-10NS)
2016/09/03(土) 13:52:55.72ID:w0/W7pdHp逆にどんな差異があると思ってる?
0636デフォルトの名無しさん (ワッチョイ 478c-wh/5)
2016/09/03(土) 13:56:49.47ID:C0V9vXnr0両方使えるようになったほうがいいけどね
Cの初心者でこれから勉強するっていうなら
まだこだわる段階じゃないかな
0637デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/03(土) 15:50:04.54ID:Q84ojFW+00638デフォルトの名無しさん (ワッチョイ c7ff-/sqZ)
2016/09/04(日) 10:11:53.14ID:NFfxFQpB0構造体の値返しはもっと前からできてたけど、標準だったのかどうか・・・
0639デフォルトの名無しさん (JP 0H4f-pIcq)
2016/09/04(日) 10:45:01.04ID:VFCxu5XKHでもデバッガサポートは gcc+gdb の方がまだ上なのかな
0640デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/04(日) 10:59:40.11ID:nRB1RJVu0>>627
printf() とか、引数が可変長じゃんよ。なんで配列だとできないんさ?
宣言した長さか、実際にアロケーションされてる長さか、あるだろ。
0641デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/04(日) 11:22:13.10ID:1JFYw2xu00642デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/04(日) 11:28:18.91ID:nRB1RJVu00643デフォルトの名無しさん (ワッチョイ ff13-hHef)
2016/09/04(日) 11:31:57.35ID:dd19h2wX0K&R2, C89から標準だ
0644デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/04(日) 11:38:50.60ID:88S2I+t600645デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/04(日) 12:12:23.74ID:1JFYw2xu00646デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/04(日) 12:15:05.31ID:88S2I+t600647デフォルトの名無しさん (ワッチョイ c7ff-/sqZ)
2016/09/04(日) 12:45:35.58ID:NFfxFQpB0printfは、、に限らんけど可変長引数は何らかの手段で長さを得る必要があるね
printfなら、第一引数の文字列を解析すると続く変数の数と型がわかる
0648デフォルトの名無しさん (ワッチョイ 93ee-10NS)
2016/09/04(日) 13:07:51.94ID:obvf9NcQ0可変長構造体の配列って事でOK?
だったら構造体のポインタ型の配列しかないと思う
0649デフォルトの名無しさん (ワッチョイ 93ee-10NS)
2016/09/04(日) 13:13:17.70ID:obvf9NcQ0va_listで取るけど、関数コールの引数のスタックサイズを引数の型で割って個数を求めてるんじゃ無いかな
0650デフォルトの名無しさん (ワッチョイ ef17-wh/5)
2016/09/04(日) 13:14:38.69ID:CyTmdPeE0日本語で頼む
0651デフォルトの名無しさん (ドコグロ MM9f-RETc)
2016/09/04(日) 13:32:19.33ID:pCJy0LgLMダイナミックに固定長・・・
0652デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/04(日) 13:42:07.06ID:gawD3zjMa構造体自体は可変長って出来ないと思うけど。
0653デフォルトの名無しさん (JP 0H4f-pIcq)
2016/09/04(日) 13:53:45.00ID:VFCxu5XKH0654デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/04(日) 13:59:56.70ID:88S2I+t60構造体の最後のメンバーだけは可変長が可能
0655デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/04(日) 14:06:10.11ID:gawD3zjMa0656デフォルトの名無しさん (ワッチョイ ef17-wh/5)
2016/09/04(日) 14:45:58.82ID:CyTmdPeE0typedef struct {
head_t head;
body_t body[0];
} data_t;
data_t *data = (data_t *)malloc(sizeof(data_t) + N);
data->body[0] = BODY_1;
data->body[N - 1] = BODY_N;
要素数ゼロの配列宣言はC99以降でしかコンパイル通らないけど。
0657デフォルトの名無しさん (ワッチョイ eb7b-iG4w)
2016/09/04(日) 14:46:53.15ID:hSBu5f8h0オレオレ用語は定義してから使うように
0658デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/04(日) 14:50:50.77ID:88S2I+t60要素数ゼロがダメなコンパイラの時は1にするってジッチャが言ってた
0659デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/04(日) 15:22:51.12ID:gawD3zjMaこれなら分かるよ。構造体のサイズは固定。メンバにポインタを持たせるってだけだよね。配列にしても問題ない。ポインタをさらに別の領域に確保すればいいだけ。
0660デフォルトの名無しさん (ワッチョイ 6f3c-RETc)
2016/09/04(日) 15:23:50.05ID:xp6EP8jq0> 要素数ゼロがダメなコンパイラの時は1にするってジッチャが言ってた
それやると
> data_t *data = (data_t *)malloc(sizeof(data_t) + N);
のサイズ計算がちょっとやな感じになるのがね
0661デフォルトの名無しさん (ワッチョイ ff13-hHef)
2016/09/04(日) 15:26:53.36ID:dd19h2wX0違う違う
body[0] が可変長なんだよ
構造体のサイズは可変にできる
http://www.kouno.jp/home/c_faq/c2.html#6
0662デフォルトの名無しさん (ワッチョイ ef17-wh/5)
2016/09/04(日) 15:41:17.44ID:CyTmdPeE0×:data_t *data = (data_t *)malloc(sizeof(data_t) + N);
○:data_t *data = (data_t *)malloc(sizeof(head_t) + (sizeof(body_t) * N));
0663デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/04(日) 15:47:34.82ID:gawD3zjMaそうなんだ!知らなかった。ありがとう。sizeofでは可変部がないサイズが返るのかな?
でないと配列とかポインタ演算はできないよね。
0664デフォルトの名無しさん (ワッチョイ ff13-hHef)
2016/09/04(日) 16:15:37.88ID:dd19h2wX0そう,sizeof では表現上の構造体のサイズが返る
自分で可変長のサイズを足す
http://codepad.org/O1CzMlHd
簡単なものを書いてみると良い
0665デフォルトの名無しさん (アウアウ Sa0f-RETc)
2016/09/04(日) 18:57:40.56ID:Mbp+qbbka0666デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/04(日) 20:02:57.67ID:1JFYw2xu0head_t head;
body_t body[0];
} data_t;
size_t N=rand();
data_t *data = malloc((sizeof(data_t) + N)*10000);
これでデータのn番目の要素にアクセスするには
dataをchar *にキャストして掛け算で位置を割り出すしかないですか?
たとえば長さNの要素のポインターが動的に作れればいいとおもうんですよ。
0667デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/04(日) 20:15:00.70ID:1JFYw2xu0たぶん、計算するしかないですね。
そのようなマクロを書けばいいと思いますよ。
0668デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/04(日) 20:22:56.20ID:1JFYw2xu0[]演算子も内部的には掛け算していると思うから同じだと思いますよ。
0669デフォルトの名無しさん (ワッチョイ ef9f-MuSt)
2016/09/04(日) 20:26:09.31ID:Ti488QlC00670デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/04(日) 20:53:30.89ID:1JFYw2xu00671デフォルトの名無しさん (アウアウ Sa0f-I+Ar)
2016/09/04(日) 20:54:33.62ID:jSoBQXkca0672デフォルトの名無しさん (ワッチョイ 93ee-10NS)
2016/09/04(日) 21:10:05.63ID:obvf9NcQ00673デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/05(月) 06:57:25.15ID:IQvMB0/c0この方法はダメじゃないかな。>>672の言う通り。
一般的にdata_t*のアラインメントは偶数か
より厳しい4や8の倍数になると思うけど、
例えばrand()の結果が1になった時、sizeof(data_t) + 1 が
奇数になって、アラインメント要求から外れる場所ができる。
body[0]の割り当てサイズを安全なアラインメントに切り上げる、
規格にそった確実な方法ってあったかな。
0674デフォルトの名無しさん (ワッチョイ 8fc0-lvJd)
2016/09/05(月) 07:23:29.85ID:Cn/U6jA700675673 (ワッチョイ b3dc-+jFW)
2016/09/05(月) 08:09:43.42ID:IQvMB0/c0/* 型tのアラインメントに合うように数値nを切り上げる */
#define ALIGN_TYPE(t, n) ((((n) + sizeof(t)-1) / sizeof(t)) * sizeof(t))
size_t N=rand();
size_t data_t_unit = sizeof(data_t) + ALIGN_TYPE(data_t, N);
data_t *data = malloc(data_t_unit * 10000);
擬似的な配列dataのi番目の要素を指すポインタpは
data_t *p = (data_t*) (((char*)data) + i * data_t_unit);
コンパイルして試したわけじゃないのでコピーしても動かないかも。
「dataをchar *にキャストして掛け算で位置を割り出す」という
考え方自体は >>666 の通りだね。
0676デフォルトの名無しさん (ワッチョイ 1351-wh/5)
2016/09/05(月) 08:15:09.83ID:EI9/AJWb00677デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/05(月) 09:58:18.65ID:wrSgAGff0構造体の配列を必要数だけ確保する。
ポインターの指す領域は必要に応じて固定長配列か、実行時に必要なサイズで確保、
構造体の配列の各要素にそれぞれの配列アドレスを格納する。
または、二つの配列を並行して処理するような関数を作成し、
この関数を介して各配列要素へのアクセスをする
0678デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/05(月) 11:42:51.15ID:p8waCebS0こんなコード書いてみたけどintのアラインメントが4の倍数じゃないのに
置けるのと同じじゃないの?
よってアラインメントはずれててもいいんじゃないの?
0679デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/05(月) 11:56:15.22ID:p8waCebS0普通に出来たけど、なんか間違ってる?
0680デフォルトの名無しさん (スプッッ Sd5f-y9+U)
2016/09/05(月) 12:22:33.51ID:FoT5fB0HdCPU による。もしかするとコンパイラにもよるかもしれん。
オリジナル68系ではだめだったはず、今の後継のものでは大丈夫。
インラインアセンブラをC言語の一部として見るのなら、命令によってはだめなものもあったりする。
0681デフォルトの名無しさん (ワッチョイ ef4f-wh/5)
2016/09/05(月) 12:42:36.01ID:JVkL6zQg0余計に取ってるのをもたことはある
0682デフォルトの名無しさん (アウアウ Sa0f-I+Ar)
2016/09/05(月) 14:25:14.95ID:890ub2uxa0683デフォルトの名無しさん (ワッチョイ c7ff-/sqZ)
2016/09/05(月) 14:48:09.85ID:7iAzEFmL00684デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/05(月) 15:12:25.01ID:IQvMB0/c0そうすりゃgetopt()がどれだけ便利か身に染みて分かる。
と言うか、オプション処理の定型を知らないと使い方を理解しにくいね。
0685デフォルトの名無しさん (ワッチョイ 1319-y9+U)
2016/09/05(月) 16:11:25.30ID:p8waCebS0型Tのアラインメントはsizeof()じゃなくて_Alignof()!
0686デフォルトの名無しさん (ワッチョイ 63c1-I+Ar)
2016/09/05(月) 16:37:42.40ID:KonAT/RP00687デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/05(月) 17:17:10.14ID:IQvMB0/c0おおっと、C11以降は _Alignof() が使えるのだな。不勉強であった。
そう言うことなら >>675 のマクロは古い規格での便法。それに加えて
「sizeof()で得られる値は必ずその型のアラインメントの倍数になる」
という、確実とは言えない仮定の上に成り立ってるね。
さらに、可変長部メンバ以外の容量が大きい構造体だと無駄も多くなるな。
>>678
確かに俺の環境でも、intの値が奇数番地に格納されるようにしても動いた。
でも >>680 の言う通り、格納番地によって動かないってCPUもある。
あと86系CPUだとアラインメント境界をまたいでると遅くなるんじゃなかったかな。
0688デフォルトの名無しさん (ワッチョイ efba-FA7T)
2016/09/05(月) 18:21:17.42ID:OkFJMOsk068k bus error(失笑
0689デフォルトの名無しさん (ドコグロ MMff-RETc)
2016/09/05(月) 19:20:09.40ID:5F1Hp9JOM> 68k bus error(失笑
Address Error だよ(失笑
0690デフォルトの名無しさん (JP 0H4f-pIcq)
2016/09/05(月) 19:21:58.28ID:YWY0BgavH0691デフォルトの名無しさん (ワッチョイ 8fc0-lvJd)
2016/09/05(月) 21:53:54.20ID:Cn/U6jA7086系はいいけど68系はダメ
あと出来ても遅くなるとかなんとか聞いたような気がしなくもない
0692デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/05(月) 22:00:41.92ID:XEmnjeGm00693デフォルトの名無しさん (ワッチョイ ef17-vIQC)
2016/09/06(火) 01:53:09.90ID:ggKhBHmS0通信系では普通に書くコードだよ
パケットなんかはこういう構造体でよく表す
一般的で別に珍しくないよ
0694デフォルトの名無しさん (ドコグロ MMaf-RETc)
2016/09/06(火) 09:13:40.21ID:ASRetdO/M最適化とアライメントは関係ない
0695デフォルトの名無しさん (ワッチョイ eb7b-iG4w)
2016/09/06(火) 09:20:47.70ID:bgQCWsty0スペースを優先する最適化もあるんだよ、ボーヤ
0696デフォルトの名無しさん (ワッチョイ efba-FA7T)
2016/09/06(火) 10:26:16.46ID:6Lg2ZIDg0あひゃ (∩∀∩)
0697デフォルトの名無しさん (ワッチョイ 0390-wh/5)
2016/09/06(火) 20:59:50.77ID:+Td/3K9l0うそぉん。86系だと、命令間にNOPが要れらりたり、スタックの区切が8バイトになるように整えられたり、するじゃん。
0698デフォルトの名無しさん (ワッチョイ 7742-wh/5)
2016/09/06(火) 21:29:44.42ID:lMZiI53V0>命令間にNOPが要れらりたり
これはないだろ
0699デフォルトの名無しさん (ワッチョイ ef17-wh/5)
2016/09/06(火) 21:37:09.50ID:ggKhBHmS00700デフォルトの名無しさん (ワッチョイ efba-FA7T)
2016/09/06(火) 22:14:42.92ID:6Lg2ZIDg0v-tuneだとそんなことあるのかすぃら?
0701デフォルトの名無しさん (ワッチョイ 6b4e-RETc)
2016/09/07(水) 07:28:49.74ID:EhymPaKF0パイプライン効率化の為に、命令の実行順序入れ替わったりするから、ジャンプ命令とかでNOPが必要になる。
0702デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/07(水) 07:31:11.01ID:9ei6Qh2k0ちょいと手元のLinux環境で試してみた(GCC 4.8.2)。
適当なmain.cをデッチ上げて-O2オプション(速度最適化)の
有無を違えてアセンブラ用ソースを出力させる。
具体的には次のようなコマンド(上が最適化あり)。
$ gcc -O2 -S main.c
$ gcc -S main.c
生成されたアセンブラ用ソースmain.sを比較したところ、
-O2指定ありで出した方に疑似命令 .p2align 4,,15 ってのが
ループの開始点(飛び先)などの何ヶ所か挿入されているのが目についた。
GAS の疑似命令 .p2align の効果は、
「(2の第1引数乗)の倍数になるようロケーションカウンタを切り上げる」
というものらしい。
この場合は16バイト(2の4乗)に合わせるってこと。
最適化で命令の番地に関しても何か操作してるね。
「アラインメント」と呼ぶのか知らないけど。
0703デフォルトの名無しさん (ササクッテロ Sp8f-10NS)
2016/09/07(水) 12:17:04.28ID:r09HpaM4p命令もメモリーから読むんだからアラインされているほうが効率が良いのは当然。
既出だけどアラインメントでないタイミング調整のNOP挿入なんかもある。
0704デフォルトの名無しさん (ワッチョイ 6b7b-k9cZ)
2016/09/07(水) 20:08:49.04ID:ZdFSelEV00705デフォルトの名無しさん (ドコグロ MM9f-RETc)
2016/09/07(水) 20:40:02.12ID:2w88FCBzM> タイミング調整のNOP挿入なんかもある。
そんなもんを勝手に入れるコンパイラなんて見たことないけど?
遅延スロットとかの話は最適化とはちょっと違うし
0706デフォルトの名無しさん (ワッチョイ b3dc-+jFW)
2016/09/07(水) 20:58:16.27ID:9ei6Qh2k0$ objdump -d main
で実行ファイルの逆アセンブルが表示されるんだね。
ジャンプの飛び先アドレスが奇数になったり2のべき乗になったり、
コンパイル条件によって変わるってことは確認できた。
が、それ以上のことはよく分からん。
0707デフォルトの名無しさん (ワッチョイ 3d90-tq+X)
2016/09/10(土) 23:20:01.70ID:0ub2co9J0レコード処理で、fwrite()とかfread()とか使うときすんげ困るでよ。
0708デフォルトの名無しさん (ワッチョイ 3d90-tq+X)
2016/09/10(土) 23:26:37.78ID:0ub2co9J086系の新しめのプロセッサだと、パイプラインに放り込んで一度に実行できる命令数とか一度に放り込める命令長の合計とかに制限があって、
それを超える数とか長さだとパイプラインが数クロック停止するだろ。
そこでパイプラインに放り込める命令数とか命令長の合計とかを調整するためにNOPを放り込む。
NOPは、フェッチのバイト数は稼ぐけれど、いくつ並んでもパイプライン上の命令数は0だから、調整用に放り込むのにもってこい。
で、新しめのプロセッサ出すたびにパイプライン構造に最適化したコンパイラ持ってきて、新のは速いだろ、ってやるんよ。
0709デフォルトの名無しさん (ワッチョイ 98ff-Ai1A)
2016/09/11(日) 14:43:54.87ID:sDjieMc300710デフォルトの名無しさん (ブーイモ MM28-tyZc)
2016/09/11(日) 20:00:23.56ID:ire1gzjrM#define A //
A int a;//コメントにしたい
ダメだった
グローバルなんでif(0)は無理
0711デフォルトの名無しさん (ガラプー KKb1-fLkO)
2016/09/11(日) 20:08:11.43ID:RCWOBF9/K0712デフォルトの名無しさん (アウアウ Sa35-j70e)
2016/09/11(日) 20:43:26.44ID:rN2Apxo9a0713デフォルトの名無しさん (ワッチョイ c57b-1gdI)
2016/09/11(日) 20:50:02.81ID:HriW58A50# if ...
#define A(x) x
# else
#define A(x)
# endif
0714デフォルトの名無しさん (ブーイモ MM28-tyZc)
2016/09/11(日) 20:54:30.38ID:ire1gzjrMstaticやexternのように書きたいんよ
0715デフォルトの名無しさん (ワッチョイ e63c-tq+X)
2016/09/11(日) 20:57:33.35ID:pmFg7QLJ00716デフォルトの名無しさん (ワッチョイ c57b-GYKP)
2016/09/11(日) 21:14:04.10ID:HriW58A50#ifdef DEBUG
#define BEGIN_HAGE struct {
#define END_HAGE };
#else
#define BEGIN_HAGE
#define END_HAGE
#endif
BEGIN_HAGE
int a;
int b;
END_HAGE
コンパイラによっては警告出るが、文法的にエラーではない
0717デフォルトの名無しさん (ワッチョイ 3d3f-j70e)
2016/09/11(日) 21:49:28.59ID:KJGBbNVD00718デフォルトの名無しさん (ブーイモ MM28-tyZc)
2016/09/11(日) 22:34:35.54ID:ire1gzjrM0719デフォルトの名無しさん (ワッチョイ bc42-tq+X)
2016/09/11(日) 22:38:28.81ID:NvSd/4YA0聞いただけでぞっとするけどな
素直にエディタの置換機能つかってコメントに書き換える方が後々読みやすいと思うぞ
一時的に無効にしたいなら、そういうやり方があるだろうし
0720デフォルトの名無しさん (ワッチョイ 6951-tq+X)
2016/09/11(日) 22:38:30.94ID:GFeyLjq70インラインじゃなくてブロックでいいなら普通に#if使うわな
0721デフォルトの名無しさん (ワッチョイ fb5b-j70e)
2016/09/11(日) 22:45:48.09ID:buFT0Vxu00722デフォルトの名無しさん (ブーイモ MM28-tyZc)
2016/09/11(日) 23:29:53.38ID:ire1gzjrM効率的なアセンブラに落ちないんで番地指定したいが
at(0x20) int a;
at(0x21) int b;
...こんなのを各地に散らばった変数にやると絶対ミスる=>grepで抜き出して一カ所にまとめればよくね?
=>EXTERN externみたいに切り替えられると便利だなあ
というので聞いてみたのです
m4で連番打てそうだからもうよいのです
0723デフォルトの名無しさん (ワッチョイ d017-XNJE)
2016/09/11(日) 23:39:04.76ID:U0UqJ0080でいけるだろ。
0724デフォルトの名無しさん (ワッチョイ c617-tq+X)
2016/09/11(日) 23:47:06.03ID:qOBSijlm00725デフォルトの名無しさん (ワッチョイ a1dc-F415)
2016/09/12(月) 06:29:24.00ID:RZJSFDKk0#define /##/
ていう手法は GCC(4.8.2) だとダメみたい。
エラー: "/" と "/" を貼付けましたが正常な前処理トークンとなりません
error: pasting "/" and "/" does not give a valid preprocessing token
0726デフォルトの名無しさん (ワッチョイ 3d90-tq+X)
2016/09/12(月) 11:21:02.66ID:3A1R7NRR0#define A //
はシンタックス的に
#define A
と
0727デフォルトの名無しさん (ワッチョイ a1dc-F415)
2016/09/12(月) 17:09:44.52ID:RZJSFDKk0#define A /##/
Cのプリプロセスは、先に注釈部分を取り除いて(空白1字に置換して)
マクロの置換処理はその後に行われるらしい。
だから /##/ がマクロ置換の段階で // になっても、
その // はもう注釈と判断されないってことみたい。
0728デフォルトの名無しさん (アウアウ Sa35-j70e)
2016/09/12(月) 18:08:35.05ID:+anZ94T1aだったらプリプロセスで止めたコードをもう一度全体からコンパイルすれば行けるかもねw
0729デフォルトの名無しさん (アウアウ Sa35-yCFK)
2016/09/12(月) 18:14:24.40ID:StNedFMna本家同様の-v オプションの実装で
パターンにマッチしなかった行を表示させるようにしようと思ってnomatchを定義しオプションが-vオプションが有りの場合に
nomatch = 1とし
nomatchが1だった場合とそうでない場合で処理を分岐させています。
http://ideone.com/kx3bqq
nomatchが1ならマッチしない行、0ならマッチする行を表示させたいのですが、マッチしない行の処理の方が何故かマッチする行も含めてすべて表示してしまいます。regexecの戻り値はマッチすれば0、マッチしなければREG_NOMATCHと見たのですがなにか違いますでしょうか?
0730デフォルトの名無しさん (ワッチョイ fbe8-eyxN)
2016/09/12(月) 21:05:09.63ID:a2mSPyGd0C言語の構造体をやさしく学べる参考書はありますか?もしあるなら教えて頂けたらと思います
情報系学部の大学2年生ですが分野が構造体に入った2年生からC言語の授業が理解できなくなりました
後期からC言語構造体が使われる別個のプログラミング授業がいくつか始まります
0731デフォルトの名無しさん (アウアウ Sa35-j70e)
2016/09/12(月) 21:08:49.23ID:UIRd2QyCa0732デフォルトの名無しさん (JP 0Hb1-YACI)
2016/09/12(月) 21:13:26.32ID:y21Asc3iHたぶん型定義と実体の区別がつかなくてこんがらがってるんだろうけど
0733デフォルトの名無しさん (ワッチョイ fbe8-eyxN)
2016/09/12(月) 21:17:04.28ID:a2mSPyGd0ネットで質問し参考書の名前を知れたのは初めてですありがとうございます!
>>732
正確に言うと構造体に関連するプログラム全ての物事が意味不明になったという感じで結局構造体そのものもあやふやな状態ですね
0734デフォルトの名無しさん (アウアウ Sa35-j70e)
2016/09/12(月) 21:26:53.65ID:UIRd2QyCa0735デフォルトの名無しさん (ワッチョイ c617-tq+X)
2016/09/12(月) 22:05:41.91ID:U0T32XYU00736デフォルトの名無しさん (アウアウ Sa35-j70e)
2016/09/13(火) 00:18:20.84ID:+Sx2+CUYa0737デフォルトの名無しさん (スップ Sd28-j70e)
2016/09/13(火) 00:24:29.07ID:NS2OOmywd0738デフォルトの名無しさん (ワッチョイ fb6f-j70e)
2016/09/13(火) 05:57:57.81ID:sslRt/dA00739デフォルトの名無しさん (ワッチョイ a1dc-F415)
2016/09/13(火) 06:39:36.43ID:by+Fe1430リンク先の関数、というか条件判断の部分は合ってるように見えるけどなぁ。
nomatch == 0 の時はマッチする行だけが表示されるの?
「マッチしない行の処理の方が何故かマッチする行も含めてすべて表示してしまいます」
という症状からすると、逆にマッチする行の処理は何も表示されないと思うんだが。
regex_t *pat が正しく作られてないのかも知れない。
・regcomp() でエラーが返ってるのにチェックし忘れてる
・regcomp() の第2引数(正規表現文字列)を間違えてる
... "string" を見つけたくて第2引数に "/string/" を与えた、みたいな。
0740デフォルトの名無しさん (ワッチョイ 902c-tq+X)
2016/09/13(火) 07:28:43.66ID:anFpbqKg00741デフォルトの名無しさん (スップ Sd28-j70e)
2016/09/13(火) 08:16:33.39ID:hCVCJQHRdプログラミング言語Cと間違ったのでスルーしてくれ
0742デフォルトの名無しさん (JP 0Hb1-YACI)
2016/09/13(火) 09:31:45.09ID:GD/RUd4YHデータ型をユーザーが定義して使うというのが飲み込めてない
int とかをおまじないと思ってるとそうなる
0743デフォルトの名無しさん (ワッチョイ c5c1-yCFK)
2016/09/13(火) 10:15:09.69ID:dzSXTRmG0nomatch == 0つまり-vオプション無しだとマッチングする行だけ表示してくれます...
regcompの引数ですか。ちょっと確認してみます
0744デフォルトの名無しさん (ブーイモ MM28-tyZc)
2016/09/13(火) 10:54:53.97ID:mQH4BUxsM片方==0ならもう一方は=!0だろうに
どうせregexecでエラーコード返してるんだろうな
0745デフォルトの名無しさん (ワッチョイ a1dc-F415)
2016/09/13(火) 12:54:35.91ID:by+Fe1430nomatch == 0 の時は期待通りの動作をするのか。それは意外だ。
>>729 のリンク先が問題の部分を正確に引用してないのかな。
オプション-vを指定した時だけ、正規表現の指定がおかしくなるのかも。
例えば、引数文字列への配列添字orポインタを進め忘れて
regcomp() に正規表現パターンとして "-v" を渡してる、とか。
regcomp() を呼び出す直前で第2引数の文字列を表示してみるのはどうかな。
0746デフォルトの名無しさん (ワッチョイ 064f-tq+X)
2016/09/13(火) 13:30:21.64ID:mhhZljw30nomatch の値をハードコーディングで0と1の切り替えてどうなるか
0747デフォルトの名無しさん (ワッチョイ c57b-O/Pw)
2016/09/13(火) 16:08:27.41ID:V3xaDSOQ0常に9行目を通る = 常にREG_NOMATCHが返る = regexec()の引数(おそらくpat)に問題あり
0748デフォルトの名無しさん (JP 0H69-yCFK)
2016/09/13(火) 17:29:35.18ID:24Z2YI/MH正規表現パターンでargv[1]を渡しており結果的に-vがパターンになってました。ありがとうございます。
0749デフォルトの名無しさん (アウアウ Sa1f-WB70)
2016/09/15(木) 10:31:21.24ID:7D6BeU3Uaファイルは実体にアクセスするのにシンボリックリンク、ハードリンクなどでリンクしているだけであり、ファイルを削除するとはその実体のリンクカウントが0になること。と学びましたUNIXシステムでrmコマンドをする場合実体とリンクしているファイル名を指定しunlinkをシステムコールしリンクを取り除くことで実質的にファイルが消えると。
質問ですが、リンクが存在する段階でファイルの実体を削除することは可能でしょうか?
0750デフォルトの名無しさん (ワッチョイ 9f7b-NmdU)
2016/09/15(木) 11:25:08.19ID:Z5b3aQWV00751デフォルトの名無しさん (ワッチョイ 177b-2wAQ)
2016/09/15(木) 11:41:12.12ID:ql+kvaik0ソースを消せば、シンボリックリンクがリンク切れになるだけ。参照できない
ハードリンクの場合は、参照カウントが1つ減る。
参照カウントが0になれば、実体も消える
0752デフォルトの名無しさん (JP 0H9f-nW2o)
2016/09/15(木) 12:41:54.17ID:Dfv6m4lxH0753デフォルトの名無しさん (アウアウ Sa1f-WB70)
2016/09/15(木) 12:53:06.41ID:FsBKIRRHaなるほど、そういうことも可能なんですね
コマンドを再実装するという手段とりながらC勉強している身なのですが、ファイルというものについて上記した内容を学んだときにただ単に気になって質問させていただきました。
0754デフォルトの名無しさん (ワッチョイ 8319-dKB2)
2016/09/17(土) 11:37:39.80ID:Zm7q0cRh0ファイル名が全部消されるとファイル自体が消される。
0755デフォルトの名無しさん (ワッチョイ 1719-chWY)
2016/09/17(土) 13:37:18.38ID:AAcR8VBu0Windowsでも2000からハードリンクとか出来るようになったけどね。
0756デフォルトの名無しさん (スッップ Sdbf-wJFc)
2016/09/18(日) 14:34:01.52ID:yK2/oeZfd0757デフォルトの名無しさん (ワッチョイ 4790-wJFc)
2016/09/18(日) 18:40:04.74ID:v7By9Mzd00758デフォルトの名無しさん (ワッチョイ f3a1-yzfI)
2016/09/18(日) 22:05:53.34ID:F+IyRJ3h0我等をねらう 黒い影
世界の平和を 守るため
ゴーゴー・レッツゴー 輝くマシン
0759デフォルトの名無しさん (ワッチョイ ef4e-wJFc)
2016/09/19(月) 02:28:01.80ID:+zeUCF670悪の組織は建設的なのに、正義の味方は破壊活動しかしない。
0760デフォルトの名無しさん (ワッチョイ 333c-7YKb)
2016/09/19(月) 09:07:29.77ID:6DmadnKl0import processing.video.*;
Movie movie;
void setup(){
size(640, 360);
movie = new Movie(this,
0761デフォルトの名無しさん (ワッチョイ d33f-wJFc)
2016/09/19(月) 10:24:57.19ID:MNI7W9ty00762デフォルトの名無しさん (ワッチョイ 177b-2wAQ)
2016/09/19(月) 10:53:17.05ID:iIvzjj/t0たぶん、" を使ったのか?
2chのバグで、書き込み確認画面が表示される際、
" があると、そこで文字列の終了とみなされる
\" とエスケープすれば、どうか?
proce55ing のことなら、以下のスレへ
proce55ing プログラミングアート全般
http://echo.2ch.net/test/read.cgi/tech/1186384753/l50
0763デフォルトの名無しさん (ワッチョイ d390-chWY)
2016/09/20(火) 07:23:43.85ID:f5VXyBVp0薄い本の即売会みたいな・・・・・・
0764デフォルトの名無しさん (ワッチョイ 8319-iU0R)
2016/09/20(火) 19:47:23.81ID:mIYozdoF0例えば
#define abc(x)\
for(int i=0;i<100,++i){ x }
abc( 2行以上のコード );
とかやって上手くいきますか?
0765デフォルトの名無しさん (ドコグロ MM3f-wJFc)
2016/09/20(火) 19:50:41.57ID:3dZ35Rz2M0766デフォルトの名無しさん (アウアウ Sa1f-wJFc)
2016/09/20(火) 19:52:06.89ID:znGLWqkia君の書いたabcってマクロは引数が2つ以上にある時点でコンパイル通らないね。
0767デフォルトの名無しさん (ガラプー KK5f-Y+P+)
2016/09/20(火) 20:02:26.52ID:aC9BpWa+KC++11でラムダとテンプレートやれば幸せになれるかもしれない
0768デフォルトの名無しさん (JP 0H9f-nW2o)
2016/09/20(火) 20:02:46.48ID:9l0NUqqbH0769デフォルトの名無しさん (ワッチョイ ef3c-chWY)
2016/09/20(火) 20:05:05.57ID:zdbHvwVE0けど、そんなキモイマクロは嫌だー
0770デフォルトの名無しさん (ワッチョイ bf13-J+BV)
2016/09/20(火) 20:41:46.01ID:D6Mxtiz/0君へのプレゼント
http://echo.2ch.net/test/read.cgi/tech/1434079972/16
0771デフォルトの名無しさん (ワッチョイ ef3c-chWY)
2016/09/20(火) 20:46:57.49ID:zdbHvwVE0#if での分岐?
for() との切り替えは強引だけど、まだ許容できる キモイまではいかない
0772デフォルトの名無しさん (ワッチョイ 6f9f-wcsI)
2016/09/20(火) 20:52:29.47ID:bARwUQ8p0#include <stdio.h>
#define abc(...) for(int i=0;i<100;++i){ __VA_ARGS__ }
int main()
{
int a=0,b=0;
abc(
for(int j=0;j<i;j++){
a++;
}
b+=i;
)
printf("a=%d, b=%d\n", a,b);
return 0;
}
0773デフォルトの名無しさん (ワッチョイ bf13-J+BV)
2016/09/20(火) 20:56:35.57ID:D6Mxtiz/0違う
三項演算子とカンマ演算子をフル活用しているところを見てくれ
0774デフォルトの名無しさん (ワッチョイ ef3c-chWY)
2016/09/20(火) 21:07:00.93ID:zdbHvwVE0うーーん 技巧的だけど、読めないわけじゃないし
初見でスルーしたぐらいだからキモイセンサーにかからなかったというところかな?
0775デフォルトの名無しさん (ワッチョイ bf13-J+BV)
2016/09/20(火) 21:11:37.35ID:D6Mxtiz/00776デフォルトの名無しさん (ササクッテロ Sp1f-eXu6)
2016/09/21(水) 00:10:45.17ID:h6Bx9Lrjpマクロはdo-while文で書く
理由はググって
#define abc(x) \
do { \
処理 \
} while(0)
0777デフォルトの名無しさん (ワッチョイ 375b-eXu6)
2016/09/21(水) 07:13:14.43ID:c8YoCAqF00778デフォルトの名無しさん (ワッチョイ 43dc-2Tg1)
2016/09/21(水) 09:19:33.28ID:K2D2Rq8+0議論の本質(>>764への答え)とはズレたツッコミで悪いが、
その例だとマクロの引数は長い1個の文字列だから
可変引数の効用が分かりにくいんじゃないかな。
確かに任意個数の引数を受け入れるマクロに、1個の引数を与えてるけど。
0779デフォルトの名無しさん (ワッチョイ d37b-NmdU)
2016/09/21(水) 12:30:14.20ID:jVJXZoqq0abc(return 0,1;)
とかで、引数の個数が不一致になる
あと10年ROMってろ
0780デフォルトの名無しさん (ワッチョイ 8319-iU0R)
2016/09/21(水) 13:00:13.82ID:L+fawlXH0ダメなときあるし
マクロの変数の展開はルールが謎過ぎる
0781デフォルトの名無しさん (ワッチョイ d37b-NmdU)
2016/09/21(水) 14:58:36.73ID:jVJXZoqq0知ったかはやめたまえ
0782デフォルトの名無しさん (ワッチョイ 8319-iU0R)
2016/09/21(水) 15:19:26.82ID:L+fawlXH0{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; _Genericはマクロじゃない・・・
ヾ;;;ハ ノ .::!lリ;;r゙
`Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました
~''戈ヽ `二´ r'´:::. `!
0783778 (ワッチョイ 43dc-2Tg1)
2016/09/21(水) 17:05:10.78ID:K2D2Rq8+0うん、だからabc()の中にコンマを含むような例も
並べて出した方が趣旨が分かりやすくなるんじゃないかな、
と指摘させてもらったんだ。
極端にお粗末な読解力しか持たない人がいることを
考慮していなかった。その点はすまん。
0784デフォルトの名無しさん (ワッチョイ 83c9-wJFc)
2016/09/21(水) 17:14:09.67ID:J1yww4nX0その点「は」じゃねーんだよ
素直に間違いを認めろよ馬鹿
0785デフォルトの名無しさん (ガラプー KK9f-V2Ex)
2016/09/21(水) 20:51:44.05ID:kmGXG9f/Kprintfの第2引数はアドレス(ポインタ)をとってもいいんですよね?
0786デフォルトの名無しさん (ガラプー KK9f-Y+P+)
2016/09/21(水) 21:02:40.29ID:w6mjKqw1K%pを使えばね
0787デフォルトの名無しさん (ドコグロ MM3f-wJFc)
2016/09/21(水) 22:04:09.99ID:/N0KVbCKM0788デフォルトの名無しさん (ワッチョイ d32e-mGWo)
2016/09/21(水) 22:07:47.89ID:ArcRPClD0以下に書いたプログラムがVS上でdebug Errorを起こします
コメントアウトした部分を足すと正常に動くのですが
何故初期化を行わないと動かないかが知りたいです
http://ideone.com/fork/9RibLs
0789デフォルトの名無しさん (スッップ Sdbf-wJFc)
2016/09/21(水) 22:29:15.60ID:hGatPHE6d0790デフォルトの名無しさん (ワッチョイ 4375-aQDp)
2016/09/21(水) 23:29:42.84ID:Qu9Tr4mY0%nを忘れているぞ
0791785 (ガラプー KKad-MBHu)
2016/09/22(木) 01:55:43.49ID:AptHdH96Kありがとうございます。
そうなんです。
例えば俺の読んでる本に当たり前のようにprintf("%s", st);のような文が出ていて(char st[80];とかだとして)、stはポインタなのに、printfは(ポインタでない)変数とポインタどっちでも引数に取れるのか?と疑問に思ったわけです。
0792785 (ガラプー KKad-MBHu)
2016/09/22(木) 02:04:03.52ID:AptHdH96Kありがとうございます。
&がつくのでこれはもろアドレスですね。
0793デフォルトの名無しさん (ブーイモ MMb8-QT2J)
2016/09/22(木) 02:06:29.45ID:qMPSDmlzMみにくい。エラー内容も貼れよ
しゃーないから推測だが
・賢いコンパイラがアホなコードを検出してる
・関数呼び出し時にバッファオーバーフロー検知の番兵置けなくて失敗してる
・その他
のどれかじゃね
しかし最近のコンパイラは賢いねえ
0794デフォルトの名無しさん (ワッチョイ 80d2-xdvH)
2016/09/22(木) 02:33:16.76ID:ouaoFEvr0第一引数もポインタで良い
0795デフォルトの名無しさん (ワッチョイ 16c0-GI7U)
2016/09/22(木) 05:30:24.78ID:gyLxLatL00796デフォルトの名無しさん (ワッチョイ 88e0-xjL4)
2016/09/22(木) 10:55:36.36ID:VTYNl4uv0初期化していない変数を使っているので、怒られているだけ。
不定の値の変数を関数に渡して何をしたいのか?
0797デフォルトの名無しさん (ワッチョイ 7e17-5q76)
2016/09/22(木) 11:43:17.18ID:6Fmfg5kY0コードから察するに初期化したいんだろうねきっと
でもポインタ渡しじゃなく値渡しで構造体渡してるから
全く意味のないコードになっているっていう
ただ関心なのが今のコンパイラ
不定値変数の使用をワーニングでなくてエラーにしちゃうのが偉い
あのコードならワーニングで動かすだけなら動きそうな気もするんだけどね
0798デフォルトの名無しさん (ワッチョイ be4f-5q76)
2016/09/22(木) 12:02:50.62ID:xG07tIJj0あえて 0xEE かなんかでフィルしてるのはあったけど
関数突入時に、値まで確認してたかはわからんなぁ
(意図してその値を代入し呼び出しているのと区別つけれるのか?)
0799デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/22(木) 12:12:35.46ID:/kVm/R5X0値渡しの引数は参照してないし、値返ししてるので問題無く動作する
0800デフォルトの名無しさん (ワッチョイ 1e4e-fewg)
2016/09/22(木) 12:32:54.02ID:KlY7sbno00802デフォルトの名無しさん (ワッチョイ be4f-5q76)
2016/09/22(木) 13:15:56.78ID:xG07tIJj0警告であってエラーじゃないしなー
0803デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/22(木) 13:35:14.29ID:/kVm/R5X00804デフォルトの名無しさん (ワッチョイ 1c42-5q76)
2016/09/22(木) 13:38:06.95ID:9VAfKpO400805デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/22(木) 13:46:41.99ID:/kVm/R5X00806デフォルトの名無しさん (ワッチョイ be4f-5q76)
2016/09/22(木) 14:12:00.58ID:xG07tIJj0そそ
関数呼び出し部分の構文解釈で引数に値をつむときのタイミングでの警告
値の由来が未初期化の変数で不定値を渡すことが確定してるってケースだね
0807デフォルトの名無しさん (オッペケ Src9-xdvH)
2016/09/22(木) 16:15:07.06ID:qDc3aW5Ur関数もアドレス値がある。
0808デフォルトの名無しさん (スププ Sdb8-xdvH)
2016/09/22(木) 21:40:26.64ID:hYBM8X5Zdvs2015インストールエラーが出てどうしようもないから
苦Cの開発環境落としたんだけど
起動と同時にエラーが出ちゃう
どうしたらいいの?
0809デフォルトの名無しさん (ワッチョイ 7e85-5q76)
2016/09/22(木) 21:48:48.70ID:Euqx97no0そのエラーメッセージはどういう内容のものか、どうして書かないの?
0810デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/22(木) 22:13:19.58ID:/kVm/R5X00811デフォルトの名無しさん (ワッチョイ 979b-xdvH)
2016/09/23(金) 01:33:40.34ID:5oRe2n1100812デフォルトの名無しさん (アウアウ Sa61-xdvH)
2016/09/23(金) 09:10:16.60ID:kEu041OHaコンパイルなのかエディタなのか。OSは何か、.net入れてるか、エラーメッセージくらいは書こうぜ。
0813デフォルトの名無しさん (ドコグロ MMf6-xdvH)
2016/09/23(金) 09:23:44.19ID:JdvpEzGGM0814デフォルトの名無しさん (アウアウ Sa61-xdvH)
2016/09/23(金) 09:34:48.99ID:kEu041OHa0815デフォルトの名無しさん (ワッチョイ dd19-+c6w)
2016/09/24(土) 10:38:15.93ID:pO9K7HQu0のようなテーブルを作ってincludeするときのの限界サイズってありますか?
0816デフォルトの名無しさん (ワッチョイ 9f6f-9vrk)
2016/09/24(土) 14:19:49.84ID:Qp3BxrXe0実行環境で割り当て可能なメモリの制約にしろ、限界はある
0817デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/24(土) 14:35:09.10ID:y4/Y2YH600818デフォルトの名無しさん (ワッチョイ 4090-xdvH)
2016/09/24(土) 15:37:41.62ID:vBVe8HB40メモリ上に置けても、配列としてはアクセス出来なくなるよね。
0819デフォルトの名無しさん (ワッチョイ 1c42-5q76)
2016/09/24(土) 15:49:15.41ID:gfa422Kv0配列としてアクセス不可なものが
エラーならずにメモリ上に配置できるものなのか?
0820デフォルトの名無しさん (ワッチョイ be23-xdvH)
2016/09/24(土) 16:41:48.76ID:g/gfVTwZ0メモリ上におければアクセスできるんじゃ?
0821デフォルトの名無しさん (ワッチョイ 2ddc-c2t3)
2016/09/24(土) 16:51:16.02ID:wtm5QT5x0例えばsize_tがintのtypedefだとすると、
(INT_MAX / sizeof(int)) より大きい配列インデクスは
オフセット計算でオーバフローする危険があるんじゃないかな。
対して初期値リストの方は、アセンブリ言語の
dw なり dd なりの疑似命令で初期値をベタに並べてく方式なら、
ロケーションカウンタがintのバイト数ずつ進むだけで
インデクスの溢れに関係なくデータの配置は可能かも。
初期値リストの要素数から配列のサイズを算出する時に
大きすぎることをチェックしてくれると思うけどね。
0822デフォルトの名無しさん (ワッチョイ b6b2-5q76)
2016/09/24(土) 17:18:26.92ID:uXJinPvS016bit環境で64kオーバーの配列作ったらまともに動くことは期待できない。
0823デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/24(土) 17:59:58.68ID:y4/Y2YH60意味がわからないか?
例えばCなら
5.2.4.1 Translation limits
に記述されてるものを言語仕様上の制約って言うんだよ
0824デフォルトの名無しさん (ワッチョイ 9f6f-9vrk)
2016/09/24(土) 18:44:43.84ID:Qp3BxrXe00825デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/24(土) 18:48:38.63ID:y4/Y2YH600826デフォルトの名無しさん (ワッチョイ 1e3c-5q76)
2016/09/24(土) 18:54:28.20ID:RUz2ytpq0下限値(最低限これだけ入力できないとまずい) と 上限値(これ以上入力すると鼻から悪魔)
むずかしーねー
0827デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/24(土) 19:02:34.32ID:y4/Y2YH600828デフォルトの名無しさん (ワッチョイ 1e3c-xdvH)
2016/09/24(土) 21:22:23.11ID:TOidze/l0>>823 を越えた上限を設定してる処理系もあるから
>>823 を越えたらエラーになってもいいと言うものでもない
0829デフォルトの名無しさん (スップ Sdc8-g4Gg)
2016/09/25(日) 16:25:29.71ID:pnGomYLHd0830デフォルトの名無しさん (ワッチョイ f1a1-cAys)
2016/09/25(日) 19:14:23.21ID:vE+2UgZZ00831デフォルトの名無しさん (ワッチョイ 8448-rS6/)
2016/09/25(日) 19:35:03.49ID:YPbWLNw500832デフォルトの名無しさん (ガラプー KK1f-uhb+)
2016/09/25(日) 19:48:10.47ID:YhIx3hsTK0833デフォルトの名無しさん (ガラプー KK1f-uhb+)
2016/09/25(日) 19:51:55.54ID:YhIx3hsTK0834デフォルトの名無しさん (ドコグロ MMf4-xdvH)
2016/09/26(月) 22:38:33.97ID:h8LMN8J1M0835デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 21:25:28.91ID:Gry6xj9+0そのメソッドの呼び出し元がルートまで全部表示されててぬるま湯すぎてワロタwww
これってほかの言語でもあるの?便利すぎてもうこれがない言語はやりたくないsっすw
C/C++だったらどこでクラッシュしたかを調べることから始めないといけないからな
Segmentation faultとか表示されて意味不明なアセンブラの羅列とか見せられても何の役にも立たねえよ
至る所にprintf入れて、ここのprintfは表示されてるけどここのprintfは表示されてない、
みたいなことを繰り返して特定していかないといけないだろ
そのうえメモリ破壊してたらビルドするたびにクラッシュ箇所が変わるからprintf作戦も使えないw
こんな原始的な言語を未だに使ってるやつは馬鹿。もっと早くjavaに移ればよかったw
0836デフォルトの名無しさん (ワッチョイ 16c0-GI7U)
2016/09/27(火) 21:30:50.23ID:G7SFDpUA00837デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 21:41:34.45ID:Gry6xj9+0ダンプを見るぐらいならprintfを入れる
printfを入れるよりjavaのstack traceの方が楽
クラッシュした瞬間にクラッシュダンプ表示すればいいのに
0838デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 21:52:26.82ID:Gry6xj9+0C言語やってたときはgrepでその関数を呼んでる関数全部にprintf入れて〜みたいなことをやってたんですが。
0839デフォルトの名無しさん (ワッチョイ 1e3c-xdvH)
2016/09/27(火) 22:07:34.89ID:3O+TtbVt0質問ならまだしもくだらん独り言をマルチすんな、ボケ
http://echo.2ch.net/test/read.cgi/tech/1466119015/805
0840片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK1f-uhb+)
2016/09/27(火) 22:13:47.40ID:/Yg2QTqOKIDEでブレークポイントを設定してデバッグ実行し、呼び出し履歴を見る。
0841デフォルトの名無しさん (ワッチョイ d77b-FR2x)
2016/09/27(火) 22:17:36.11ID:qi0BjMrp00842デフォルトの名無しさん (ドコグロ MM9c-xdvH)
2016/09/27(火) 22:27:34.19ID:YwQFIgP+M0843デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 22:29:27.58ID:Gry6xj9+0ちょっと今VS2005でブレークポイントで止めるとこまでやってみたけど、
呼び出し履歴を表示する場所が分かんなかったなあ
てかC言語だと大体IDEじゃないっしょgccでvimな感じだから。
IDEにやり方が依存する感じじゃなくてこの関数一発呼んだら良い感じのやつないっすか
0844デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 22:31:27.58ID:Gry6xj9+00845片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK1f-uhb+)
2016/09/27(火) 22:38:53.68ID:/Yg2QTqOK0846デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 22:41:55.33ID:Gry6xj9+0関数一発読んだらprintfで標準出力にバーっと出る感じのやつが良いんですが
0847デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/27(火) 22:50:09.12ID:Gry6xj9+0マルチスレッドだったり大規模だったりすると止めた時点でおかしくなってて何の有益な情報も得られないことあるし、
release版とdebug版で挙動が変わるからrelease版でしかビルドしたら駄目みたいな現場もあったしな現実に。
0848片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK1f-uhb+)
2016/09/27(火) 23:17:58.09ID:/Yg2QTqOK取り除いてから、結合テストする。
0849片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKad-uhb+)
2016/09/27(火) 23:23:52.29ID:/Yg2QTqOK0850デフォルトの名無しさん (ワッチョイ 7e17-5q76)
2016/09/28(水) 01:34:42.98ID:bD7g3hg30デバッグ用のprintfマクロ作って、各関数の要所要所に埋め込む
開発中からこれを意識してコーディングするのがコツ
また最近だとTDDか
0851デフォルトの名無しさん (ワッチョイ ffda-xdvH)
2016/09/28(水) 01:47:55.27ID:PHAa6N840windowsで使えるかは知らん
0852デフォルトの名無しさん (ワッチョイ dd42-5q76)
2016/09/28(水) 08:14:28.38ID:sIhnSU9900853デフォルトの名無しさん (アウアウ Sa61-xdvH)
2016/09/28(水) 08:26:11.82ID:G14mJ7Lfa0854デフォルトの名無しさん (ワッチョイ 8f00-/imC)
2016/09/28(水) 08:52:12.60ID:pvNRXOO300855デフォルトの名無しさん (ワントンキン MM40-rS6/)
2016/09/28(水) 14:03:37.66ID:stABDaO6M0856デフォルトの名無しさん (スフッ Sdb8-aBDa)
2016/09/28(水) 14:05:44.21ID:VHzhwvlEd0857デフォルトの名無しさん (アウアウ Sa61-xdvH)
2016/09/28(水) 17:26:02.54ID:G14mJ7Lfa0858デフォルトの名無しさん (ワッチョイ d77b-FR2x)
2016/09/28(水) 17:29:27.25ID:hiAJ49Og0finalizeに頼っちゃいけない所とか
0859デフォルトの名無しさん (ワッチョイ 1c42-5q76)
2016/09/28(水) 17:31:23.38ID:8blg1fTj0著作権に抵触するんか?
0860デフォルトの名無しさん (アウアウ Sa61-xdvH)
2016/09/28(水) 17:36:04.87ID:G14mJ7Lfa一時javaのコプロセッサが乗ったCPUが出てたけどあんま流行らなくて廃れた
0861デフォルトの名無しさん (ドコグロ MMf6-xdvH)
2016/09/28(水) 17:47:40.58ID:RRT2bHx+M0862デフォルトの名無しさん (アウアウ Sa61-xdvH)
2016/09/28(水) 17:50:32.92ID:G14mJ7Lfa0863デフォルトの名無しさん (ワッチョイ 1e3c-xdvH)
2016/09/28(水) 20:09:54.30ID:X231kNmm0それでいいから巣に帰れよ
0864デフォルトの名無しさん (ワッチョイ 8f00-/imC)
2016/09/28(水) 22:00:14.77ID:pvNRXOO30https://en.wikipedia.org/wiki/Jazelle
0865デフォルトの名無しさん (ワッチョイ 994a-UBrL)
2016/09/28(水) 22:43:03.93ID:5esYm+jc0どうすればいいですか?
0866デフォルトの名無しさん (ワッチョイ c1c1-OX4N)
2016/09/28(水) 23:15:10.50ID:r1bayssd0こういう書き方でディレクトリ作成してもグループとその他に書き込み権限与えられないのですが無理でしょうか?
0867デフォルトの名無しさん (ワッチョイ 597b-aBDa)
2016/09/28(水) 23:55:08.17ID:9r8yV77c00868デフォルトの名無しさん (ワッチョイ 6f17-RPp1)
2016/09/29(木) 01:35:14.33ID:4TiY9tFk0ルートで実行してみるとか?
0869デフォルトの名無しさん (ワッチョイ 6bc1-S8iu)
2016/09/29(木) 03:46:06.50ID:8JCVX6Xo0下記の様な書き方でファイルのタイプを文字列リテラルとしてリターンしたいんですが
called object type 'int' is not a 〜
と起こられてしまいます
原因は
if (S_IFIFO(mode)) return "named pipe";
S_IFIFO(mode)の部分です。
以前Linuxで書いていた時はこの書き方で大丈夫だったようきがするのですがマクロが用意されているのではないんでしょうか?
mac el capitanで現在は書いています
0870デフォルトの名無しさん (ワッチョイ 6bc1-S8iu)
2016/09/29(木) 03:58:46.40ID:8JCVX6Xo0解決しました
S_IFIFO ×
S_ISFIFO ○
ですね。
man statとかで見てみてもS_ISFIFOという書き方に関連してそうな部分がないのですがこれは特殊な書き方なんでしょうか?
0871デフォルトの名無しさん (ワッチョイ 6f16-5C+Q)
2016/09/29(木) 06:23:30.07ID:Szq1hZwE0たぶんPOSIX準拠なんじゃね
0872デフォルトの名無しさん (ワッチョイ dbdc-6Qeh)
2016/09/29(木) 07:40:18.95ID:i0zTb6880man 2 stat なら S_ISFIFO()マクロの説明が出てくるよ。
某時期某ディストリビューションのLinuxの場合だけど。
0873デフォルトの名無しさん (ワッチョイ 1f13-kUAU)
2016/09/29(木) 19:32:52.16ID:XGa6uwRB00874デフォルトの名無しさん (ワッチョイ 4742-RPp1)
2016/09/29(木) 19:43:07.36ID:zwKwfWKj0アクティブかどうかは知らない
0875デフォルトの名無しさん (ワッチョイ 6f85-RPp1)
2016/09/29(木) 19:43:59.11ID:ORJ83N1f00876デフォルトの名無しさん (ワッチョイ 4742-RPp1)
2016/09/29(木) 19:54:42.75ID:zwKwfWKj0ここは落ちている様だ
0877デフォルトの名無しさん (ワッチョイ dbdc-6Qeh)
2016/09/29(木) 20:03:49.73ID:i0zTb6880とかのパターンだと思うが、この板・スレッドで深追いする話題とは違うな。
Vine Linux Thread 其の67
http://hayabusa6.2ch.net/test/read.cgi/linux/1470582459/
あたりじゃないかな。
0878デフォルトの名無しさん (ワッチョイ 6bc1-S8iu)
2016/09/29(木) 22:21:43.57ID:8JCVX6Xo0ちゃんとman 2 でシステムコール読んだつもりだったのですが...もっかいちゃんとみてみます
0879デフォルトの名無しさん (ワッチョイ 1f11-bMpm)
2016/09/30(金) 19:26:34.80ID:bCkWy8zt0正直何のためにあるのか分かりません。
バイナリモードよりテキストモードで書いたほうが人間に親切だと思うのですが・・。
0880デフォルトの名無しさん (ササクッテロ Spb7-LGiF)
2016/09/30(金) 19:28:28.32ID:k6QPLsM1p0881デフォルトの名無しさん (ワッチョイ 1f11-bMpm)
2016/09/30(金) 19:37:41.01ID:bCkWy8zt0バイナリにすることで、第三者に読まれないようにすることが狙い?
0882デフォルトの名無しさん (ワッチョイ 9b42-RPp1)
2016/09/30(金) 19:42:29.74ID:FkkRARY400883デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/09/30(金) 19:43:24.52ID:6eP7Gy330MSのOSの時に意味を持つ
テキストモードだとCR+LFを行の区切りにする
0884片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 19:48:30.05ID:RzBZUGvmKコンピューターから見るとバイナリーファイルの方が合理的。サイズ、速度などの点で。
バイナリーファイルを扱えないOSは汎用に使えない。すでにバイナリーファイルの読み書きはコンピューティングの基礎だから。
作りたいならテキストファイルしか扱えないOSでも作ればいい。性能も機能性も劣るものができるだろう。
0885デフォルトの名無しさん (ササクッテロ Spb7-LGiF)
2016/09/30(金) 19:52:19.21ID:k6QPLsM1p0886片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 19:52:34.77ID:RzBZUGvmKほとんどの機械語はバイナリーデータだから。
0887デフォルトの名無しさん (ワッチョイ 1f11-bMpm)
2016/09/30(金) 19:53:23.61ID:bCkWy8zt0>コンピューターから見るとバイナリーファイルの方が合理的。サイズ、速度などの点で
勝手な想像ですが、たとえばテキストモードに指定してテキスト作成したとして、
テキストをメモリに読み込ませて開くときは、そのテキストはバイナリに変換してる?
もしそうなら、最初からバイナリモードに指定していれば、テキスト→バイナリに変換する手間がかからずに済むし、合理的で速くなる、でしょうか。
0888デフォルトの名無しさん (ワッチョイ 9b42-RPp1)
2016/09/30(金) 19:53:49.87ID:FkkRARY400889片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 19:54:52.12ID:RzBZUGvmK昔はテキスト形式の画像データも使われていた。でもバイナリの方がサイズが小さくなってダウンロードが早いだろ。
0890片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 19:57:29.70ID:RzBZUGvmKCPUもメモリーのアドレス空間もバイナリーデータの世界だ。
0891片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 20:02:48.38ID:RzBZUGvmK広義ではテキストデータもバイナリデータに含まれる。バイナリデータの一部をテキストデータと呼んでいるだけだ。
0892デフォルトの名無しさん (ワッチョイ 1f11-bMpm)
2016/09/30(金) 20:03:27.06ID:bCkWy8zt0バイナリ=>そのまま渡せる
区切りの違いとか細かい部分があるけど、上記のが大きいですね
0893デフォルトの名無しさん (ワッチョイ cfb2-RPp1)
2016/09/30(金) 20:06:08.19ID:+APoq1FD0コンピュータに不親切なやつだな。
0894デフォルトの名無しさん (ワッチョイ 1f13-kUAU)
2016/09/30(金) 20:11:21.98ID:wZVscf4Q00895片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 20:14:47.86ID:RzBZUGvmK第一は改行コードの違いだ。MS-DOSやWindowsでは改行は"\r\n"で出力する。古いタイプのMacでは"\r"で、UNIX/Linuxでは"\n"だった。
この違いを吸収するためにMS-DOSやWindowsのC言語ではテキストモードという特別なモードがある。
テキストモードでは"\r\n"を"\n"と見なす。改行コードが1文字の制御文字になるのは扱いやすい。
0896片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 20:22:27.80ID:RzBZUGvmK日本語にはシフトJIS,EUC-JP,JISなど、さまざまな文字セットが存在する。
日本語MS-DOSではシフトJISが使われていて、古いタイプのUNIX/LinuxではEUC-JPが使われていた。また、日本語のメール送信ではJISを使っていた。
現在ではテキストデータはASCIIとUnicode(UTF-8を含む)が標準になっている。
0897片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 20:33:49.22ID:RzBZUGvmKUTF-16ではないテキストデータをWindows内部で扱うためにはUTF-16への変換が必要かも知れない。
0898デフォルトの名無しさん (ワッチョイ 9b42-RPp1)
2016/09/30(金) 20:39:54.40ID:FkkRARY400899片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 20:47:15.92ID:RzBZUGvmK#include <stdio.h>
int main(void)
{
FILE *fp = fopen("a.txt", "w");
fprintf(fp, "\n");
fclose(fp);
return 0;
}
この八行のプログラムはファイル「a.txt」に1個の改行コードを出力する。
Windowsの場合、出力の際に1個の改行コードは"\r\n" (CR LF)に変換されるので、a.txtをバイナリーエディターで開くと、
ファイルサイズは2バイトになるだろう。
0900片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 20:53:16.11ID:RzBZUGvmKバイナリーファイルを扱うプログラムを作るなら、バイナリーエディターは必需品。必ずインストールしておこう。
0901デフォルトの名無しさん (ワッチョイ 4742-RPp1)
2016/09/30(金) 21:03:30.21ID:mDXbguo80答えやすい質問だと、回答者が一杯出てくるのはいつものこと
0902片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 21:06:42.05ID:RzBZUGvmKテキストファイルはバイナリーファイルのサブセットだから。
バイナリーのイメージはちょうどバイナリーエディターで表示されるように考えればよい。
バイナリーデータはバイトの並びであり、バイナリーの1バイトは2桁の16進数で表示するのが合理的である。
0903片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 21:20:07.22ID:RzBZUGvmK0904デフォルトの名無しさん (ワッチョイ cffa-rhIY)
2016/09/30(金) 21:50:31.82ID:IRw86IfD0納得できる答えは得られたかい?
納得できてないなら fgets 関数を使ってファイルをコピーするプログラムを書いてみてくれたまえ。
大体こんな感じになると思う。
#include <stdio.h>
int main( int argc,char **argv)
{
char buf[256];
while ( fgets( buf,sizeof buf,stdin)){ fputs( buf,stdout); }
return 0;
}
そのプログラムで適当な JPEG ファイルをコピーして元のファイルと比べてみよう。
それがバイナリモードとテキストモードの違いだ。
0905デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/09/30(金) 21:54:13.95ID:6eP7Gy330こいつアホ
0906デフォルトの名無しさん (オッペケ Srb7-rzru)
2016/09/30(金) 22:16:40.31ID:Wzx/nmaxr0907デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/09/30(金) 22:25:10.96ID:6eP7Gy330こいつも最高にあほ
0908デフォルトの名無しさん (ドコグロ MMef-rzru)
2016/09/30(金) 22:39:53.84ID:pIKGtmPSMish かよっ!
0909片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 22:40:08.06ID:RzBZUGvmK"\r\n"の入力 ⇒ "\n"になる。
"\n"の出力 ⇒ "\r\n"になる。
0910デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/09/30(金) 22:54:07.70ID:aybJ7PyR0何かと勘違いしている可能性はあるので自信はない
0911片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK27-/8Mt)
2016/09/30(金) 23:28:45.46ID:RzBZUGvmKファイルの終わりでCtrl+Zを押してたMS-DOSのなごり。現在ではゴミ文字になるのであまり使わない。getcharでEOFが返るときだろう。
0912デフォルトの名無しさん (ワッチョイ 1f11-bMpm)
2016/09/30(金) 23:46:53.20ID:bCkWy8zt0C初心者がファイルオープンに関する概念を習得する過程でまずはテキストからっていうなら分かるけど
理由としては弱いな
0913デフォルトの名無しさん (ササクッテロ Spb7-LGiF)
2016/10/01(土) 00:03:10.98ID:4GbhNNOQp低レベルな質問して総評書くとか、、
0914デフォルトの名無しさん (ワッチョイ 1f11-bMpm)
2016/10/01(土) 00:07:01.05ID:/yOWYQHR0低レベルの意味が分からない。初心者が尋ねる内容としてはありだと思います。
0915デフォルトの名無しさん (ワッチョイ cfb2-RPp1)
2016/10/01(土) 00:22:41.37ID:1Bkws7l900916デフォルトの名無しさん (ワッチョイ 477b-eUFH)
2016/10/01(土) 00:53:18.04ID:onRosRXh0Linuxの端末で、Windowsのファイルを開くと、
最後に、^Z が付いていることがある
0918デフォルトの名無しさん (ワッチョイ 6748-Xr8z)
2016/10/01(土) 01:50:17.10ID:VDtQernM00919デフォルトの名無しさん (ワッチョイ 436f-rzru)
2016/10/01(土) 02:40:50.66ID:QVoTLY8k0テキストモードかバイナリーモードか気にしなきゃならんのってWindows環境ぐらいでは
Unixライクな環境だと要らん苦労だ
0920デフォルトの名無しさん (ワッチョイ 4fe1-rzru)
2016/10/01(土) 02:42:03.96ID:tNbhSEQ70C言語で扱えるテキストファイルと、OS(などの環境)のテキストファイルの実装の差を埋めるのがテキストモード
UnixではCのテキストファイルの扱いとOSのテキストファイルの扱いは同じなのでバイナリモードと完全に同じ
WindowsではCは改行が\n、OSでは\n\rなのでその差を埋める
他のOSではバイナリモードとテキストモードは全く別の結果になっても仕様的には問題ないはず(たぶん)
0921デフォルトの名無しさん (ワッチョイ 6bc1-S8iu)
2016/10/01(土) 07:40:40.69ID:+E5H4WMH0テスト用として
test
test/a.txt
test/b.txt
test/c.txt
という環境を作り test をパスとし与えてみました。testへストリームをオープンしwhileでファイルをエントリーしtest/a.txt と連結後それがファイルなのかディレクトリなのかを判定、ディレクトリなら掘っていきファイルならパスを表示します。判定するときにstatを使っているのですが何故か-1が帰って来て失敗してしまいます。lldbでその時点でのパスを見ると
(lldb) print pathbuf->ptr
(char *) $1 = 0x0000000100100280 "test/a.txt"
(lldb)
"test/a.txt"となっていてこれでstatでエラーが帰って来てしまう理由がイマイチわかりません。考えられるエラーはどんなものがありますか?
プログラム全文はこちらになります
http://ideone.com/LbAxDX
0922デフォルトの名無しさん (ワッチョイ 1f13-kUAU)
2016/10/01(土) 07:56:48.22ID:pmson4Rg0環境(OS, コンパイラ)は?
0923デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/01(土) 08:08:27.61ID:v8iMmJLi0連結した pathbuf->ptr じゃないの?
0924デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/01(土) 09:48:55.00ID:mCe+YKjm0そして>>904のような知ったかぶりして、大恥晒す道化が現れるのもいつもの事
0925デフォルトの名無しさん (ワッチョイ 436f-rzru)
2016/10/01(土) 12:38:23.90ID:QVoTLY8k0まずerrno。話はそれからだ
0926デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/01(土) 13:00:52.82ID:mCe+YKjm0いろいろと突っ込みどころが多過ぎる
28: strcpyじゃなきゃダメ
53: >>923の指摘どおり
traverse: readdirが成功するたび、それまでを全部連結する
0927デフォルトの名無しさん (アウアウ Sa77-S8iu)
2016/10/01(土) 13:53:20.86ID:xFpyNc7Maなるほど、pathbuf->ptr渡さないとダメですね。煮詰まるとなんも見えなくなるなあプログラマーは向いてないのかもしれないw
>>926
初期はstrcpyでなければならないのですか。領域だけ確保した空間に最初に文字列入れる場合にstrcpyとstrcatどう違うのでしょうか?一見strcatでもその後うまく連結出来ている様に見えるのですが
0928デフォルトの名無しさん (アウアウ Sa77-S8iu)
2016/10/01(土) 13:55:06.08ID:xFpyNc7MaOS X el capitan
gcc
です
0929デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/01(土) 14:08:28.85ID:v8iMmJLi00 でフィルされているわけでもないし *pathbuf->ptr = '\0'; と初期値を入れてもいないので
そういう不定な(もしかしたら文字列にもなっていない)ところ相手に strcat はうまい方法じゃない
0930デフォルトの名無しさん (ワッチョイ 6f16-5C+Q)
2016/10/01(土) 15:59:44.48ID:1EpVFvvF0多いので決め打ちできればmalloc/realloc使わずに済みそう
0931デフォルトの名無しさん (ワッチョイ 6f16-5C+Q)
2016/10/01(土) 16:03:37.11ID:1EpVFvvF00932デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/01(土) 19:42:16.51ID:cvsJ/xEf0そんな環境アップデートとかした途端に動かなくなったということが頻発しそうな事を推奨するな
0933デフォルトの名無しさん (ワッチョイ 436f-rzru)
2016/10/01(土) 21:33:11.09ID:QVoTLY8k00934デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/01(土) 21:43:10.89ID:cvsJ/xEf0それ定数とは限らないから
0935デフォルトの名無しさん (ワッチョイ 436f-rzru)
2016/10/01(土) 21:54:22.80ID:QVoTLY8k0え?まじで?
0936デフォルトの名無しさん (アウアウ Sa77-rzru)
2016/10/01(土) 22:07:58.74ID:itsx8YHiaそんなシンボルがあるかどうかすら分からない
0937デフォルトの名無しさん (ワッチョイ cfb2-RPp1)
2016/10/01(土) 22:29:30.10ID:1Bkws7l900938デフォルトの名無しさん (ワッチョイ 9b42-RPp1)
2016/10/01(土) 22:37:51.95ID:KRACKnl00ttp://www.idc.com/prodserv/smartphone-os-market-share.jsp
0939デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/01(土) 22:51:30.75ID:cvsJ/xEf0ググったら解るけどposixの仕様で定数である必要ないって決められてる
0940デフォルトの名無しさん (ワッチョイ 4b42-yE+Y)
2016/10/01(土) 23:15:30.57ID:VMBRmgxd0環境、コンパイラで値は違う可能性はあるとしても。
0941デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/01(土) 23:47:51.61ID:cvsJ/xEf0ググれば解るけどって書いたんだけどな
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/realpath.3.html
0942デフォルトの名無しさん (ワッチョイ 435b-rzru)
2016/10/01(土) 23:59:12.71ID:wIu9CS3S0環境依存の定数やん
0943デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/02(日) 00:04:16.11ID:4LOtpf4Z0日本語読めないの?
http://man7.org/linux/man-pages/man3/realpath.3.html
According to POSIX.1-2001 a buffer of
size PATH_MAX suffices, but PATH_MAX need not be a defined constant,
and may have to be obtained using pathconf(3).
0944デフォルトの名無しさん (ワッチョイ 6f17-RPp1)
2016/10/02(日) 00:07:05.34ID:uh5KUtrn00945デフォルトの名無しさん (ワッチョイ 9b3a-QEBp)
2016/10/02(日) 00:07:12.84ID:3hM0m+Ns00946デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/02(日) 00:09:03.59ID:4LOtpf4Z0日本語のページ貼っても読めてないみたいだから英語のページ貼ってあげたんだよ
0947デフォルトの名無しさん (ドコグロ MM27-rzru)
2016/10/03(月) 11:02:21.21ID:nbbH7poSMその文章は意図が分からないな。
pathconf()はファイルパスを引数にするから
PATH_MAXをpathconf()で実装することはできないよね。
POSIX.1-2001は #define された定数なのかは明確でないけど、
POSIX.1-2008では #if の引数に使えるとあるから、
PATH_MAXも定数でいいと思う。
一応、以下からの推定
↓POSIX.1 2001相当?
http://www.unix.com/man-page/posix/0p/limits.h/
↓POSIX.1 2008相当?
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
0948デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/03(月) 11:15:16.14ID:+w+RrJJk0キミは本当に頭が悪いな
0949デフォルトの名無しさん (ブーイモ MM8f-SJFH)
2016/10/03(月) 13:26:48.91ID:eqtJ8nudMオツムいいレスよろ
(無理だろうけど。この手のハゲほんと増えた)
0950デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/03(月) 14:58:03.11ID:+w+RrJJk0pathに何を渡して何が返ってくるか理解できれば自明なんだが、
ドキュメント読んでそれが理解できないのならば、説明しても理解できないだろう
だから、頭が悪いと評した
0951デフォルトの名無しさん (ワントンキン MMcf-Xr8z)
2016/10/03(月) 15:13:44.36ID:glBy70iHM0952デフォルトの名無しさん (ワッチョイ 6f4f-RPp1)
2016/10/03(月) 16:08:29.48ID:AhgtfWPz0だから fpathconf() や pathconf() sysconf() 使え (MAY) って後者の URL にはあるな
※
#if 云々は defined や #ifdef で
そのシンボルの有無を引っ掛けられるかどうかだけの話のようにも見受けられる
0953デフォルトの名無しさん (ブーイモ MM8f-SJFH)
2016/10/03(月) 16:56:23.92ID:BUv5p7YEM「INT_Maxは定数じゃないから」といって納得できるかだね
センスかおつむか
0954デフォルトの名無しさん (ワッチョイ 6f4f-RPp1)
2016/10/03(月) 17:31:36.35ID:AhgtfWPz0それを定数で示すのは(負数で表現可能だけど)、固定長の配列の大きさに使える代物ではないねー
0955デフォルトの名無しさん (ガラプー KK57-tskY)
2016/10/03(月) 18:45:37.53ID:wsgQIWyCKint i=0;
質問です
iを1234にしたい(4つのバイトを1つにしたい)のですがどうすればいいですか?
よろしくお願いしますm(__)m
0956デフォルトの名無しさん (ガラプー KK57-tskY)
2016/10/03(月) 19:03:55.92ID:wsgQIWyCKどうもお騒がせしました
0957デフォルトの名無しさん (ブーイモ MM8f-SJFH)
2016/10/03(月) 19:10:06.22ID:BUv5p7YEMunion使う宿題なんだろうけど
0958デフォルトの名無しさん (ワッチョイ 4f6c-RPp1)
2016/10/03(月) 19:13:36.24ID:z5jNWLnu00959デフォルトの名無しさん (ドコグロ MM27-rzru)
2016/10/03(月) 20:17:16.68ID:pYvbesSaM0960デフォルトの名無しさん (ワッチョイ 1b4e-dvmP)
2016/10/03(月) 20:24:25.15ID:jCeU1cEO00961デフォルトの名無しさん (ワッチョイ cfb2-RPp1)
2016/10/03(月) 21:33:26.05ID:zpikSIMA0無くても問題無いけど使ってみると気持ちいい。
0962デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/04(火) 00:18:29.26ID:oog1epo10その問題解くのにunionなんて必要か?って意味だろ
もう少し流れ読む力付けような
0963デフォルトの名無しさん (ワッチョイ 6bc1-6msj)
2016/10/04(火) 03:58:21.88ID:2Im1Jmi+0色々調べてみたのですが、pid = fork() 戻り値が
子プロセスでは0、親ではプロセスのIDと戻り値が2つある?のもなかなか
イメージがわきません。
pid = fork();
if(pid == 0){ puts(“child”); } //子
else{ puts(“parent”); } //親
みたいな例題ページはたくさんあるのですが出力結果みても
関数使うのと何が違うのかよくわかりません。
親子に分かれてプロセスが同時に進む感じをイメージすると例えば
int main(void){
child();
parent();
}
void child(){
puts(“child”);
}
void parent(){
puts(“parent”);
}
のchildとparent関数が同時に動くみたいなイメージですか?
同時に動いてどちらが先に終了するのかわからない
親が先に終了してしまうと子がゾンビになってしまうので
同時に処理はするがwait()を使って先に終了するのは子にする
という感じで良いんでしょうか?
0964デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/04(火) 04:46:54.55ID:6mv8IhAQ00965デフォルトの名無しさん (ワッチョイ dbdc-6Qeh)
2016/10/04(火) 05:58:50.98ID:6yvYs8Le0まずfork()で分身を作って…
子プロセス側はexec系の関数を呼んで別の外部プログラムに変身。
親プロセス側は子プロセスの外部プログラムが動く間、単純に待つか、
または子プロセスと別の作業を同時進行で行う。
こんな使い方が多いんじゃないかな。
fork()だけで考えるとイメージが湧きにくいかも。
ウェブサービスのプログラムみたいに、親プロセスは依頼を待ち受けて
依頼が届く度にfork()して子プロセスに処理を丸投げ、
親プロセスはすぐに依頼待ちの状態に戻る。
それぞれの依頼は互いに並行に処理される。
というモデルもあるけど、どちらが分かりやすいかな。
0966デフォルトの名無しさん (ドコグロ MMef-rzru)
2016/10/04(火) 06:41:02.76ID:2AWlMUg/M0967デフォルトの名無しさん (ドコグロ MMef-rzru)
2016/10/04(火) 06:50:44.79ID:2AWlMUg/Mfork( ) を呼び出した時にプロセスがコピーされてもうひとつプロセス(=子プロセス)が作られる
呼び出した側のプロセス(=親プロセス)には戻り値として作られたもうひとつのプロセス Id が返される
子プロセスは同じコードを実行するけど fork( ) の戻り値として 0 が返されるという仕組み
0968デフォルトの名無しさん (ワッチョイ 1f13-kUAU)
2016/10/04(火) 07:02:17.79ID:BzUotdG20fork() はネットワーク関連やシェルを自作するときに使う
0969デフォルトの名無しさん (ワッチョイ 477b-eUFH)
2016/10/04(火) 07:06:09.14ID:MLgwtfwZ0この時点では、まだ、子プロセスのメモリを確保していない
次の、execve()で、子プロセスのメモリを確保する
各プロセスは、プロセススケジューラによって、
0.1秒毎? などで、強制的に切り替えられるので、
どのプロセスがいつ動いているかは、分からない
端末からコマンド(子プロセス)を起動して、端末(親)を終了させると、
起動されたコマンド(子)は、すべて強制終了させられる
それが嫌なら、端末と親子関係を切って、直接initの子にする。
デーモン(サービス)化
Linuxエンジニア養成読本、第3版、2016 を読めばいい
0970デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/04(火) 07:11:42.33ID:ierS0lm90親: 自分と同じ実行ファイルを起動して 戻り値をプロセスIDに
..... 親から作られた子の実行で コード中 fork() まで進む
自分は子なので 戻り値を0 に
同一コードで 親も子も動かす (そして fork() の戻りがくるまで、自分が親なのか子なのかしる手段が・・・)
0971デフォルトの名無しさん (ドコグロ MMef-rzru)
2016/10/04(火) 07:27:55.34ID:2AWlMUg/M知ったかぶって嘘書くなよ...
> 次の、execve()で、子プロセスのメモリを確保する
常に exec* を呼ぶ訳じゃないのに何を言ってるんだよ
そもそもメモリー確保タイミングは実装で異なるし
> 起動されたコマンド(子)は、すべて強制終了させられる
SIGHUP シグナルが送られるだけ
終了するかどうかはプロセス次第
0972デフォルトの名無しさん (ワッチョイ 477b-eUFH)
2016/10/04(火) 08:04:17.20ID:MLgwtfwZ0子プロセスがゾンビになると、親プロセスはすでに存在しないので、
その代わりに親がinitになる
ところが、initでは、子プロセス終了時の返り値を、どう扱えばよいのか、
捨ててよいのかどうか分からないため、プロセス一覧表にゾンビがたまっていく
それがうっとおしいので、ちょくちょくゾンビを削除する必要がある
0973デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/04(火) 08:38:49.06ID:6mv8IhAQ0こういうウソをどこで教わってくるんだろう?
0974デフォルトの名無しさん (ドコグロ MM27-rzru)
2016/10/04(火) 08:59:21.54ID:b3H+v7IsMunix系のosに触ったことないでしょ
0975969 (ワッチョイ 477b-eUFH)
2016/10/04(火) 09:23:53.12ID:MLgwtfwZ00976デフォルトの名無しさん (ワッチョイ a37b-T4vf)
2016/10/04(火) 09:51:02.60ID:oog1epo100977デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/04(火) 10:13:18.17ID:6mv8IhAQ0ジジイっぽいけど、これまで無知な奴は滅多にいない
0978デフォルトの名無しさん (ワッチョイ 17a3-dvmP)
2016/10/04(火) 10:50:29.72ID:KbTggc+e0もうその話題終わったから
0979デフォルトの名無しさん (ワントンキン MMcf-Xr8z)
2016/10/04(火) 12:48:37.18ID:b4l9l8B3Mforkの実行でプロセスが分裂して同じ処理が走るから
forkの直後は自分が親なのか子なのかを判断する処理を書くんだよ
あくまでもイメージね
デバッガで追うとわかりやすいかも
でも逆に混乱するかな...
0980デフォルトの名無しさん (ドコグロ MMef-rzru)
2016/10/04(火) 12:56:52.93ID:2AWlMUg/M無知ならいいけど知ったかぶりで嘘書くのはダメだろ
0981デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/04(火) 13:21:20.06ID:6mv8IhAQ0大抵の知ったかぶりは自覚のない無知
0982デフォルトの名無しさん (ワッチョイ cfdb-2pTf)
2016/10/04(火) 15:13:25.81ID:EsaflMwe0printf("b = %d\n",b = b + ++b + b);
表示される値はそれぞれいくつでしょうか?
分かりやすく教えて頂けると幸いです。
0983デフォルトの名無しさん (ワッチョイ 4b7b-dvmP)
2016/10/04(火) 15:24:01.59ID:qi1/fBX600984デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/04(火) 15:24:13.13ID:ierS0lm900985982 (ワッチョイ cfdb-2pTf)
2016/10/04(火) 16:33:38.14ID:EsaflMwe0試し済みで答え自体は分かっているのですが、
いまいち要領を得ないで困っています。
ちなみにa=1、b=1でお願いします。
0986デフォルトの名無しさん (ワッチョイ 6f9f-1sJM)
2016/10/04(火) 16:39:50.30ID:BNPZR97g00987デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/04(火) 16:52:45.47ID:ierS0lm90要領を得ないもなにも 動作未定儀のコードだから 「説明がつかない」
0988982 (ワッチョイ cfdb-2pTf)
2016/10/04(火) 17:09:55.42ID:EsaflMwe0すみません。
コード全部書きます。
#include <stdio.h>
int main(){
int a=1,b=1;
printf("a = %d\n",a = a + a++ + a);
printf("b = %d\n",b = b + ++b + b);
return 0;
}
0989デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/04(火) 17:18:57.62ID:ierS0lm90いや a = a + a++ + a と b = b + ++b + b が規格外の記述
「副作用完了点」を調べて
0990デフォルトの名無しさん (ワッチョイ ef3c-RPp1)
2016/10/04(火) 17:19:51.00ID:ierS0lm90○ 規格で動作未定儀になってる
0991982 (ワッチョイ cfdb-2pTf)
2016/10/04(火) 17:29:30.69ID:EsaflMwe0なんででしょう?
0992デフォルトの名無しさん (ワッチョイ 4b7b-7Sel)
2016/10/04(火) 17:57:24.04ID:6mv8IhAQ0他のコンパイラでは別の結果になるかも知れない
それが「動作未定義」
副作用完了点を検索してよく読みなさい
0993デフォルトの名無しさん (アウアウ Sa77-rzru)
2016/10/04(火) 18:22:31.63ID:VYFD9zNGa0994デフォルトの名無しさん (ブーイモ MM8f-SJFH)
2016/10/04(火) 19:47:22.08ID:jdH4W1FCMちな2,3 gcc@linux
0995デフォルトの名無しさん (ブーイモ MM8f-SJFH)
2016/10/04(火) 19:49:35.83ID:jdH4W1FCM0996デフォルトの名無しさん (ワッチョイ 1b7b-m9GF)
2016/10/04(火) 20:25:02.56ID:iEd5oTSN0C言語なら俺に聞け 137
http://echo.2ch.net/test/read.cgi/tech/1475580238/
0997デフォルトの名無しさん (ワッチョイ 4fc0-iAeO)
2016/10/04(火) 21:19:04.23ID:EHAtSK8l0嘘
0998デフォルトの名無しさん (ワッチョイ 6fba-ETlQ)
2016/10/04(火) 22:11:24.65ID:A2L0X7us0乙
梅
0999デフォルトの名無しさん (ワッチョイ 4742-RPp1)
2016/10/04(火) 22:16:18.46ID:1LDeTD9L01000デフォルトの名無しさん (ワッチョイ 17d7-RPp1)
2016/10/05(水) 00:43:51.88ID:ZrA9f4Xz010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 86日 2時間 54分 55秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。