C言語なら俺に聞け(入門編)Part 116
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/06/14(金) 20:22:05.73★前スレ
C言語なら俺に聞け(入門編)Part 115
http://toro.2ch.net/test/read.cgi/tech/1368444993/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/C/C++の宿題片付けます 165代目
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0723717
2013/07/07(日) NY:AN:NY.ANAmazonのレビューを読むと、配列とポインタの違いについての細かい説明があるようですね。
この機会に勉強してみようと思います。ありがとうございました。
0724デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN門番(gate keeper)は使わない。
0725デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANアプリケーションでこんな事やったら大事故が起きたりするの?
どの本にもfree必要ねーしwwとか書いてるけど。
0726デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0727デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANメモリリークするでござるよ。コンピュータのメモリがなくなって
コンピュータの動作が鈍重になり、いずれは処理不可能な状態におちいる。
すぐ実行を終了するようなものだと問題になることはないけどね。
0728デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANmallocの専用スレはここでしょうwww
>>727
でもランタイムでfreeは必要ないよね?
return 0で強制的に開放されるんだし。
0729デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANずっと実行しっぱなしのものだったら解放していかんとやばいでしょ。
すぐに実行が終了するものだったら必要ない。
0730デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0731デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0732デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANckwてのがあるよ。
ckw-mod on GitHub by ckw-mod Project
http://ckw-mod.github.io/
0733デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANむしろ作れますか?
それも技術者が作ったんでしょう?
実行端末ってどうやって作るんでしょう。
0734デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0735デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANはぁ?
ゴミは黙ってろよ
メモリは確保したままになってるだけでそれだけ電気食うんだぞ
ただでさえ電気代が値上げだっつってんのに電気食うようなことを教えるな
電気食えばそれだけ発熱するから部屋も暑くなるし
お前電力会社の社員か何か
キモすぎ早く回線切れゴミ
0736デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANhttp://toro.2ch.net/test/read.cgi/tech/1359549517/l50
0737729
2013/07/08(月) NY:AN:NY.AN申し訳ありませんでした。わたしの軽率な発言は日本の電力消費を
上げ、みさなさまの会社の光熱費を上げ経営を圧迫し、連鎖的倒産に
導くばかりか、できるだけエアコンを使わず服装でカバーしようという
クールビズの活動のモチベーションまで下げかねないものであり、
地球温暖化という世界規模での異常事態を悪化させかねないものでした。
もしそうなれば南極の氷が融けて東京がビル50回の高さまで水没すると
聞いています。なんてことをしてしまったんだという思いでいっぱいです。
わたしは電力会社に勤めているわけではありませんが、電力の消費について
不適当な発言をしたことは間違いありません。
二度とこのようなことはいたしません。回線を切ってネットサーフィンの
時間をいままでの自分を省みる時間にあてたいと思います。本当に申し訳ありませんでした。
0738デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANそうすれば電気代も安くなってfree()も減らせる。
まさかfree不要論を唱えるプログラマーの中に反原発派なんかいないよな?
0739デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANなにか不具合起こっても勝手にexitするようなわけにいかないことが多いだろうし、
きっちり終了処理書く癖つけとくべきだと思うけど
0740729
2013/07/08(月) NY:AN:NY.ANfreeするのにCPUさんがガンガン電気使ったりして。
0741729
2013/07/08(月) NY:AN:NY.ANだね。それが現実的。
0742デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN高速なCが今時扱いされるのはなぜ?
0743デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0744729
2013/07/08(月) NY:AN:NY.ANPythonとかHaskellとかJavaとかC並みに高速で安全性の高い言語
がありコンピュータの処理速度も上がり、言語による実行速度の
違いをさほど意識する必要がなくなってきたいまどきということでござろうよ。
0745デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANベンチ結果も書かずに何言ってるの?
お前が勝手に意識しないだけだろ、キメェ
0746729
2013/07/08(月) NY:AN:NY.AN黙れ羊野郎、はい論破。
0747729
2013/07/08(月) NY:AN:NY.AN俺はそう理解したと述べてるだけだしー、ベンチ結果が知りたければ
自分で勝手にベンチすればいんじゃねつー感じだしー、
一生メーメーほざいてろよって感じ。
0748デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0749デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANメリットあるの?
0751デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANcygwin の bash もわりと
0753デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN羊の寄せ乳知らない童貞野郎は引っ込んで露
それがそうでもないんだ‥‥
うちの会社のとある24時間システム、java で組んであるけど、タスクマネージャをみるたびにページファイル使用量が増えていく‥‥
そして、ある日突然リブートするんだ‥‥
GC なんて信じらんない
http://toro.2ch.net/test/read.cgi/tech/1364009659/
http://toro.2ch.net/test/read.cgi/tech/1363171842/
ここらがくわしいよ
0756729
2013/07/08(月) NY:AN:NY.ANタスクマネージャを見なきゃいんじゃないでしょうかというバカなことをいうのは
やめておこうと思いますが、実装がまずいじゃないの?
0757デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0758デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN>うちの会社のとある24時間システム
Qはロートルニートなんじゃね?
0759デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANただ使うだけで自分もろとも信用失墜する絶叫カーでしかないってことさ
0760デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANまあ、JAVA VM の実装がちゃんとしててメモリーリークがないとしても、そのシステムの実装がタコでメモリー確保しまくってたら、そりゃ落ちるわな。
0761デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN必要がないからといってそういうところ無頓着なマが書いてんだろうな。
0762デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANまずはその幻想をぶち壊す
0763デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANCは時代遅れ
0764デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN壊すじゃなくて殺すだねそれ
0765デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANというのは幻想を擬人化した表現であり
文学板ならまだしもム板ではただの基地害
0767デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANstrncat
↑
strnはstringだと思う
catって何からきてるんですか?
0768デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0769デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0770デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0771デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0772デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANわかります。
0774デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANint memcmp(const void *cs, const void *ct, size_t count)
{
const unsigned char *su1, *su2;
int res = 0;
for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
if ((res = *su1 - *su2) != 0)
break;
return res;
}
(res = *su1 - *su2) != 0
この部分は
*su1 != *su2
ではいけないんでしょうか?
0775デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANいいでしょ。これで。
for (...)
{
if (*su1 != *su2)
{
break;
}
}
return *su1 - *su2;
0776デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANmemcmp()のリターン値は、
cs > ct → 正
cs < ct → 負
cs = ct → 0
だから。
0777デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN(res = *su1 - *su2) != 0 だと算術演算をしてその結果のフラグレジスタをそのまま
参照できるから速くなるのかな?
>>775 だと引き算の結果を有効に活用しないで、別に比較命令を実行しなくてはいけない。
最適化がかかれば関係ないかもしれんけど。
0778デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0779デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANstrcatだと連結ソースの型が違うよーって怒られるデス!
0780デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANC言語でなくてもいいんだったらC++のstringで、a+bで連結できる。
0781デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANchar str[100] = "abc";
char ch = 'x';
len = strlen(str);
str[len] = ch;
str[len + 1] = 0;
0782デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANわからないと格好つけて言ったらそうなるのか。
0783デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0との比較なので
引き算 + 条件ジャンプ
比較演算 + 条件ジャンプ
CPUへの負荷は同じということなのですね
勉強になりました
0784デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANstrlcat(dst, sizeof(dst), &c, 1);
0785デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANありあと!
0786デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANそれcount==0のときaccess violation
0787デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANだから何だバーカ。
0788デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0789デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0790デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0791デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0792デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANよっぽど悔しかったか?
0793デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN*su1 != *su2
ではいけないのかって話ですが?
0794デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0795デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN>>775のコードに問題があるかどうかだが。
0796デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN疑問です。
0797デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN要素数に255個という制限があった。悲しかった。
0798デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANいやエッジケースくらい常に考えろよww
定数倍の速度より遥かに重要
0799デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANいやint x[N];
Nの最大値はどのくらいですか?
0800デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANでしょ。あんたが言ってるのはそれ、だから俺とあんたは違う話をしてるよね。
0801デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN揚げ足取りして何が楽しいのかね。
まともな教育受けてないんじゃないかね。
0802デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANstraycatsは迷い猫オーバーラン!を起こすけど、
それの対策用のstrayncats関数は無いからな。
0803デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANcount==0の話だが?
0804デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN>>776
0805デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANやおい
0806デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANある構造体Boxに中の変数Countがあるのですが、その値を見る関数GetCountを関数ポインタを使ってメンバ関数的に割り当てようとしています
//include省略
typedef struct Box{
int count;
int (*GetCount)(struct Box *);
} Box_t;
int Box_GetCount(Box_t* p_box){
return p_box->count;
}
Box_t* Box_New(int num){
Box_t* p_box = (Box_t *)malloc( sizeof(Box_t) );
p_box->count = num;
p_box->GetCount = &Box_GetCount;
return p_box;
}
int main()
{
Box_t* box1 = Box_New(5);
printf("%d", box1->GetCount(box1));
free(box1);
return 0;
}
このやり方ですと、構造体Boxのメンバ関数GetCount(外部関数Box_GetCountのポインタ)でメンバ変数countを読む時に
box1->GetCount(box1) と自身のポインタを渡すようになっているのですが、これをbox1->GetCount()のように引数なしでできるでしょうか?
構造体内の宣言を変えればいいのか、関数Box_Newの中身を変えればいいのか悩んでおります。ご教授頂けると幸いです
0807デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANムリ。
C++使ったほうがいい。
0808デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANできない
個人的にはbox1->GetCount(box1)にするくらいなら、Box_GetCount(box1)とかにすればと思う
0809デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANこれだと多態はできても、抽象型プログラミングみたいのができないからあんまりうれしくないね。
Cでやるなら >>808 みたいにしてカプセル化くらいでいいと思うわ。
0810デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANこのような引数を持つ関数を呼び出す時の作法がわかりません
以下の二つの方法は試しましたがどちらもNGでした
char ary[5][10] = {0};
// ここでary に入れる処理 (strcpy(ary[0], "abc");等)
func(ary); // 型エラー
char *ary[10] = {0};
// ここでary に入れる処理(strcpy(ary[0], "abc");等)
func(ary); // 通るけどaryの中身がおかしい
どなたかよろしくお願いします。
0811デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANc言語 関数 引数 配列 型 サイズ
で検索したらいいんでは。
0812810
2013/07/09(火) NY:AN:NY.ANどなたかよろしくお願いします
0813デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANこういうこと?
char array[10] = "abcde";
func(&array);
0814811
2013/07/09(火) NY:AN:NY.ANエラーになるんだろう。
0815810
2013/07/09(火) NY:AN:NY.ANいえ、これだと型が違うのでエラーになってしまいます
>>814
そうですね
なので char ary[5][10] = {0}; のように変数を用意してメモリ確保
その後にメモリへ目的の値ををコピー
そしてfunc読み出しとしたのですが型が違うと怒られてしまうのです
このようなケースでは具体的にどの様にすればいいのでしょうか?
0816811
2013/07/09(火) NY:AN:NY.ANこれではダメだろう。関数側で書き込む領域まで大きめにメモリ確保しないと。
自分もだが、こういう基礎レベルで迷う場合はC++を使った方がいい。
vector<string>型なら簡単。
0817デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANexeファイルだけで全てすませたいです。
0818810
2013/07/09(火) NY:AN:NY.AN申し訳ありませんが C でお願いします
そういえば getopt 等の関数がこのパターンに該当するのでGoogle等で検索してみた、、のですが
どれもmain関数からの呼び出しからのみで参考にならず…
0819811
2013/07/09(火) NY:AN:NY.ANコンパイラ側がchar[N]型みたいのを生成していて、ちょうどサイズを一致させないと受け付けなくなってる気がした。
0820810
2013/07/09(火) NY:AN:NY.ANmalloc等を使う上に環境依存だとは…
今の環境だと確実にメモリ断片化が起きるので動的にメモリ確保は使えない…
malloc が使えない環境だと getopt 等の関数は使えないのかなぁ
0822デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN■ このスレッドは過去ログ倉庫に格納されています