トップページ⇒tech
1001コメント252KB

C言語なら俺に聞け(入門編)Part 69

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2010/09/15(水) 00:21:37
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 68
http://hibari.2ch.net/test/read.cgi/tech/1282536520/
★過去スレ
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++室 Ver.73【環境依存OK】
http://hibari.2ch.net/test/read.cgi/tech/1274395127/

とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 137代目
http://pc12.2ch.net/test/read.cgi/tech/1276810079/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0809デフォルトの名無しさん2010/09/25(土) 21:52:02
Cを秀丸で書くのはやばいですか?
0810デフォルトの名無しさん2010/09/25(土) 21:53:03
>>809
なんでやばいの?
Notepadで書く奴がいるくらいだw
秀丸使ったって全然問題ないだろう。
0811デフォルトの名無しさん2010/09/25(土) 21:54:24
全くやばくない。
0812デフォルトの名無しさん2010/09/25(土) 21:55:14
やばいからnotepad++使おうぜ
0813デフォルトの名無しさん2010/09/25(土) 22:00:54
自動的にスレッドに割り当ててくれる方法はないのですか?
0814デフォルトの名無しさん2010/09/25(土) 22:01:16
edlin 使えよ Win なら。
0815デフォルトの名無しさん2010/09/25(土) 22:04:41
うー…さすがにedlinはつれーw
せめてex
0816デフォルトの名無しさん2010/09/25(土) 22:10:13
自動的にスレッド・・・OpenMP?
0817デフォルトの名無しさん2010/09/25(土) 22:16:03
スレッドがよくわかりません。まだそういうレベルです。
0818デフォルトの名無しさん2010/09/25(土) 22:16:49
アルゴリズム的に遅くないってことでいいですよね。
後は実装方法だけ。
0819デフォルトの名無しさん2010/09/25(土) 22:20:52
>>809
秀丸使うこと自体がアレな感じだけど。
0820デフォルトの名無しさん2010/09/25(土) 22:24:22
秀丸とか日本人しか使ってないマイナーエディタじゃん
0821デフォルトの名無しさん2010/09/25(土) 22:30:31
UNICODE版vi for Win32
ttp://www.vector.co.jp/soft/winnt/writing/se028211.html

のソースを少し変更して再コンパイルしたものを使ってる
0822デフォルトの名無しさん2010/09/25(土) 22:31:39
むしろ、I/Oスレッドと計算スレッドが分離しているほうが
処理は遅いことのほうが多いんじゃね?
ただしこの分離モデルはストリーミング(コマンドライン上から
パイプラインで処理できることに対応)とか、IPCとかSocketとか
で複数のプロセスと通信したりするようなケースでは良く取られる
0823デフォルトの名無しさん2010/09/25(土) 22:38:50
cygwin上でvim使えば良いじゃん
0824デフォルトの名無しさん2010/09/25(土) 22:42:48
while((read_size=fread(buff,1,1024,fq))){
読み込みサイズの1024を
4096とか64*1024とかに変えてみて
時間を測ってみたら
0825デフォルトの名無しさん2010/09/25(土) 22:45:36
xyzzyのc-mode
0826デフォルトの名無しさん2010/09/25(土) 22:48:05
今時viとかemacsとか言ってる奴らって、「憧れのMJと同じシューズを履きたいピュアな少年」のような発想だよなw
0827デフォルトの名無しさん2010/09/25(土) 22:49:43
>>824
全然変わらない。
0828デフォルトの名無しさん2010/09/25(土) 22:52:15
まあ、秀丸はねーわな。
使ってる連中、すごいダメそう。
0829デフォルトの名無しさん2010/09/25(土) 23:04:12
>>826
そうなんです。あこがれの RMS のつくった‥‥‥、xyzzy って日本人でしたっけ。
0830デフォルトの名無しさん2010/09/25(土) 23:05:41
32バイトで読んでた時はすごく遅かった。
0831デフォルトの名無しさん2010/09/25(土) 23:05:59
エディタは作者の好みと自分の感覚のズレがあるとずっと不快だから色々使ってみたほうがいい
オプションで調節できないところでイライラって結構あるからね

俺は昔の VC とか好きだったけど、あの会社の常で勝手にいらんことするようになって心が離れた
vi はさすがに見劣りはするけど今でも一目置いてるご長寿さんだ
0832デフォルトの名無しさん2010/09/25(土) 23:07:33
暗号化処理が遅いということじゃ?
0833デフォルトの名無しさん2010/09/25(土) 23:08:59
ターミナル経由じゃないと使えない環境もあるんだよ・・・
0834デフォルトの名無しさん2010/09/25(土) 23:13:07
300Mのファイルの読み書きだけで10秒かかるんです。
0835デフォルトの名無しさん2010/09/25(土) 23:14:48
viはあんまり積極的な評価ないな。
おれはIDE派だから使わないけど、VSやらEclipseにviのキーアサインが
あったらそれ使う。
0836デフォルトの名無しさん2010/09/25(土) 23:21:49
>>807
その方法だと3つのスレッドが同時に読み込みに行ったりしないか?

>>818
ディスク読書きだけで10秒、暗号化含めると18秒なら、
暗号化で8秒近くかかってるって考えていいんじゃないですかね。
0837デフォルトの名無しさん2010/09/25(土) 23:23:43
禿丸
0838デフォルトの名無しさん2010/09/25(土) 23:25:02
なぜemacsがない!w

emacsは習得には時間がかかるが、習得すればこれ以上のエディタはないぞw
まさにプロユースw
0839デフォルトの名無しさん2010/09/25(土) 23:26:46
PC-98 に FE(?) ってエディタって無かった?
探しても見つからないんだが。
0840デフォルトの名無しさん2010/09/25(土) 23:27:25
暗号化に8秒って遅いですかね。ストリーム暗号。
300Mのファイルですが。
0841デフォルトの名無しさん2010/09/25(土) 23:29:06
>>840
300Mだと読んで書くだけでそのくらいかかるんじゃない?
0842デフォルトの名無しさん2010/09/25(土) 23:30:52
メモリマップで
0843デフォルトの名無しさん2010/09/25(土) 23:30:56
>>839
ああ、Finalでしょw

FINAL,RED,MIFESはPC-98時代の3大エディタw
0844デフォルトの名無しさん2010/09/25(土) 23:31:04
OpenSSLだと読み書き暗号化全部で11秒位で終わるんです。
この高速化の秘密は何?!
0845デフォルトの名無しさん2010/09/25(土) 23:31:10
>>840
ファイルを分割してマルチスレットで暗号化して結合は?
0846デフォルトの名無しさん2010/09/25(土) 23:33:09
さすがに3DESだと30秒くらいかかりますね。
0847デフォルトの名無しさん2010/09/25(土) 23:34:12
MIFES/2 使ってた
0848デフォルトの名無しさん2010/09/25(土) 23:35:10
OpenSSLではそんなことしてないみたいですよ、ファイル分割。
最後に結合してるのかもしれないけど。
0849デフォルトの名無しさん2010/09/25(土) 23:36:00
プログラム初心者なのでスレッドとかわかりません。
0850デフォルトの名無しさん2010/09/25(土) 23:37:25
初心者を口実に向上心を捨てる奴は死ね
0851デフォルトの名無しさん2010/09/25(土) 23:42:33
>>838
emacsはエディタじゃないから。
0852デフォルトの名無しさん2010/09/25(土) 23:47:11
スレッドって要は内部でこうやってるだけなんでしょ

int g_thread_id = 0;

int main(void)
{
  while(1){
    if(g_thread_id == 0){ func_thread_0(); }
    else if(g_thread_id == 1){ func_thread_1(); }
    else if(g_thread_id == 2){ func_thread_2(); }

    g_thread_id++;
    if(3 <= g_thread_id){ g_thread_id = 0; }
    sleep(1);
  }
}
0853デフォルトの名無しさん2010/09/25(土) 23:49:05
>>843
Vz ははいらないのかそうなのか
0854デフォルトの名無しさん2010/09/25(土) 23:49:48
>>851
emacsはエディタでもある。
0855デフォルトの名無しさん2010/09/25(土) 23:56:13
>>852
処理の途中で状態を保存してreturnして、制御がきたら前回の続きから
はじめるとか考えなくていいから、そう書くよりロジック書くのは楽だな。
0856デフォルトの名無しさん2010/09/25(土) 23:56:55
>>853
VZはちょっと後発なのよね。
最終的にはVZが席捲するんだが、その時にはPCの主役も
PC-98からDOS/Vと言われたIBM互換機になっていた…w
0857デフォルトの名無しさん2010/09/25(土) 23:57:51
>>852
そんな考え方してたらマルチスレッドプログラミングで間違いなく死ぬ
0858デフォルトの名無しさん2010/09/26(日) 00:01:15
>>857
考え方も何もそれってノンプリエンプティブマルチタスクのディスパッチャだろ
0859デフォルトの名無しさん2010/09/26(日) 00:10:42
コマンドプロンプトのバッチ処理だろW
0860デフォルトの名無しさん2010/09/26(日) 00:25:07
マルチスレッドの本質ってものすごくシンプルだよね。
知らないうちは何か高度なことだと重いがちだけど。
0861デフォルトの名無しさん2010/09/26(日) 00:26:38
ガッチガチのホモっホモだな。
0862デフォルトの名無しさん2010/09/26(日) 01:01:23
まず暗号の何たるかを学べよ

http://www.amazon.co.jp/新版暗号技術入門-秘密の国のアリス-結城-浩/dp/4797350997/
0863デフォルトの名無しさん2010/09/26(日) 01:03:22
>>845
その方法だとECBにしか対応できない。
0864デフォルトの名無しさん2010/09/26(日) 01:04:01
>>856
後発と言うか、Vzとして公開されてから見知った人にとってはそうかもしれないが、
それ以前にEzとして既に我々の間では広く普及していた。
0865デフォルトの名無しさん2010/09/26(日) 01:06:38
>>840
かんたんにクラックできる暗号作ってなにやってんの?
0866デフォルトの名無しさん2010/09/26(日) 01:17:15
>>863
だからストリーム暗号だって言ってるだろ。
0867デフォルトの名無しさん2010/09/26(日) 01:17:57
>>840

悪いこと言わないから、Cのコーディングや実行速度に気をとられてないで
>>862見たいな本でまず有効な暗号とはどんなものなのかについて学べ。
そして、今ある有効な暗号化のアルゴリズムを使って実装するべき。
0868デフォルトの名無しさん2010/09/26(日) 01:21:42
予測不可能性の高い乱数を発生させるだけでもひとつの技術だわな
0869デフォルトの名無しさん2010/09/26(日) 01:23:01
>>867
使う暗号アルゴリズムは指定されてるんじゃないの。
0870デフォルトの名無しさん2010/09/26(日) 01:23:06
C言語でぷよぷよが作りたい
0871デフォルトの名無しさん2010/09/26(日) 01:24:03
>>870
頑張れ
0872デフォルトの名無しさん2010/09/26(日) 01:25:25
それはゲームを作るのか、それともあの物体を作るのか
0873デフォルトの名無しさん2010/09/26(日) 01:30:09
>>872
それを上記の文章から読み取れないお前がプログラムを弄れるとは思えない
0874デフォルトの名無しさん2010/09/26(日) 01:32:13
曖昧な仕様から曖昧な実装を行うのは3流のする仕事
0875デフォルトの名無しさん2010/09/26(日) 01:33:57
明確な仕様が無いからと言って即座に逃げの一手を打つのは4流のする仕事
0876デフォルトの名無しさん2010/09/26(日) 01:35:51
>>871
作り方教えろ
0877デフォルトの名無しさん2010/09/26(日) 01:38:25
まずパンツを脱ぎます
0878デフォルトの名無しさん2010/09/26(日) 01:39:40
パンツを履きます
0879デフォルトの名無しさん2010/09/26(日) 02:03:04
>>875
>>874は4流ということでいいからおまえが作れ3流
0880デフォルトの名無しさん2010/09/26(日) 02:06:09
>>870が本当に欲しかったものはぷよぷよ通なのだろうか
0881デフォルトの名無しさん2010/09/26(日) 02:22:33
$ gcc -O3 -ftree-vectorize -ftree-vectorizer-verbose=5 -mmmx -msse2 -o gsr gsr.c
まず、-O2のみで時間測って、どんくらい違うか調べたら
0882デフォルトの名無しさん2010/09/26(日) 02:23:02
マルチスレッドって簡単にいえばこうだよな

俺(メインスレッド)は今の仕事(メイン関数)を続けるから
誰か(サブスレッド)あの仕事(他の関数)を処理しといて
0883デフォルトの名無しさん2010/09/26(日) 02:30:56
この仕事やっとけって?あ、いいっすよ
・・・
この資料借りていいっすか?
え、だめ?
じゃあちょっと横で待ってますね
・・・
あ、終わりました?じゃあ借りてきますね
え?やっぱ返せ?いや、でもこっちも仕事しないと
・・・
ふ〜終わった、あー、資料返しますね
・・・
ひまだなー、仕事ないかなー(ちらっ

こんな感じかな
0884デフォルトの名無しさん2010/09/26(日) 02:47:48
まあ一種の幻想だよな。
コア増やしただけのCPUを正当化するための詭弁だよ。
0885デフォルトの名無しさん2010/09/26(日) 02:54:55
>>808
ttp://www10.atwiki.jp/gavotterd/
これでやってみて、OS使用領域からも横取り出来るはずだから
0886デフォルトの名無しさん2010/09/26(日) 04:31:09
char name[32]って配列だとそれ以上の文字列が入力されたら他のメモリも破壊してしまうけど char *nameだったらどんなに入力しても*(name + i)に保存?されて大丈夫な気がするんですがどうなんでしょうか?エスパーの方お願いします。
0887デフォルトの名無しさん2010/09/26(日) 04:34:32
どこに入力するんだよ。
0888デフォルトの名無しさん2010/09/26(日) 04:37:04
>>886
だめですw

まず、そもそも、メモリは有限です。仮想メモリがあろうがなかろうが、
無限のメモリなんてありません。書きつづければどこかで切れますw

アドレス演算は符号なしですが、結局のところ、最大値を越えれば0に
戻ります。よって、この理屈だけでも最終的にはすべてのメモリを破壊
してしまうことがわかります。

で、実際には、nameがどこを指しているかにもよりますが、スタックか
ヒープを破壊して、Segmentation Faultになりますw
0889デフォルトの名無しさん2010/09/26(日) 04:44:52
>>887
>>888
ありがとう。
ちょっとポインタと配列の関係が上手く理解できてないみたいです。
配列の先頭アドレスにchar型のポインタを代入しようとしたりw
0890デフォルトの名無しさん2010/09/26(日) 06:52:47
Visual Studio 2010 C++を使おうとしてるのですが、どこでコンパイル
すればいいのかわかりません。
0891デフォルトの名無しさん2010/09/26(日) 06:57:38
ググれ
0892デフォルトの名無しさん2010/09/26(日) 07:45:20
コマンドラインからコンパイルするみたいです。
でも最適化オプション付けてもgccの2倍以上実行時間がかかります。
何が悪いのでしょう。
0893デフォルトの名無しさん2010/09/26(日) 08:29:59
>>892
あんたの頭。
0894デフォルトの名無しさん2010/09/26(日) 09:04:51
開発環境ってなれないと難しい。Linuxだったらある程度わかるけど
WINで動くアプリ作ろうとすると何が何だか。
同じプログラムなのに動作速度が違うなんて。
0895デフォルトの名無しさん2010/09/26(日) 09:22:33
同じプログラムなのに実行結果も違う。Cygwin32とVisual Studio
0896デフォルトの名無しさん2010/09/26(日) 09:27:59
それは専門用語で「バグ」といいます。
0897デフォルトの名無しさん2010/09/26(日) 09:33:21
で、暗号作ってた彼はあきらめたのか?
0898デフォルトの名無しさん2010/09/26(日) 09:38:15
まだ暗号作ってます。速度面だけでなくWINアプリとの互換性を試しています。
それでWINとCygwinで実行結果が合わなくておかしなことになってます。
ハッシュ関数の値が実行する環境によって変化します。バグです。
0899デフォルトの名無しさん2010/09/26(日) 09:44:07
Winとcygwinじゃなくて、VCとgccの違いでは?
0900デフォルトの名無しさん2010/09/26(日) 09:48:07
整数のデーター長とか符号が原因と見た
0901デフォルトの名無しさん2010/09/26(日) 09:49:32
ライブラリで同じハッシュ値が返るっていう仮定をしてるなら、
ハッシュ関数を自作すればいいのでは?
0902デフォルトの名無しさん2010/09/26(日) 09:51:03
どう考えても変数初期化してないとかだろ。デバッグとかしてないんじゃないの。
0903デフォルトの名無しさん2010/09/26(日) 09:58:47
VCは値を勝手に丸めるから。
0904デフォルトの名無しさん2010/09/26(日) 10:03:24
>>890
メニュー→デバッグ→ソリューションのビルド
0905デフォルトの名無しさん2010/09/26(日) 10:05:38
実行時間が遅すぎる。35秒もかかる。
出力ファイルが勝手にプロテクトされてるし。
VCはわけわからん。
0906デフォルトの名無しさん2010/09/26(日) 10:08:41
逆に言えばgccとかは桁あふれとかの保護機能を自分で実装してやらないと何も保護がかかっていない状態だってこと。安全と速度は反比例する。

>実行時間が遅すぎる。35秒もかかる。

たぶんそれがこの差。
0907デフォルトの名無しさん2010/09/26(日) 10:09:58
そもそも実行時間は安定してるのかい?
0908デフォルトの名無しさん2010/09/26(日) 10:11:37
VCはバカコードを書いてもメモリを破壊しない安全なアプリケーションを生成するようにできている。
レス数が900を超えています。1000を超えると表示できなくなるよ。