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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?S★(531555)
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 70
http://hibari.2ch.net/test/read.cgi/tech/1285490211/
★過去スレ
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++の宿題片付けます 140代目
http://hibari.2ch.net/test/read.cgi/tech/1284632294/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0232デフォルトの名無しさん2010/10/15(金) 22:00:37
>>231
何故それをそのライブラリの開発元に聞かないんだ。
0233デフォルトの名無しさん2010/10/15(金) 22:01:44
開発元はドイツなので・・・
0234デフォルトの名無しさん2010/10/15(金) 22:04:05
斜め読みするに、
Linuxとx86/SPARCの組み合わせしかテストされてないっぽいが
http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/

それに含まれているらしいGMPであれば
何とかなりそうな雰囲気だが、よく知らない

>GMP's main target platforms are Unix-type systems, such as GNU/Linux, Solaris,
>HP-UX, Mac OS X/Darwin, BSD, AIX, etc. It also is known to work on Windows
>in both 32-bit and 64-bit mode.
http://gmplib.org/
0235デフォルトの名無しさん2010/10/15(金) 22:04:35
ドキュメントが読めない状況で、どうやって使ってるの?
0236デフォルトの名無しさん2010/10/15(金) 22:05:02
ttp://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/#systemrequirements
0237デフォルトの名無しさん2010/10/15(金) 22:06:09
とりあえず実装して試してみます。
0238デフォルトの名無しさん2010/10/15(金) 22:08:58
日本語の本で紹介されていたので使っています。
0239デフォルトの名無しさん2010/10/15(金) 22:09:44
>>233
ドイツ人なら余程のことがない限り拙い英語でも充分遣り取りできると思うが。
0240デフォルトの名無しさん2010/10/15(金) 22:14:15
英語ほとんどわかりません。
エラーメッセージもよくわかりません。
日本語のサンプルコードでプログラムしてます。
0241デフォルトの名無しさん2010/10/15(金) 22:17:50
これはひどい
0242デフォルトの名無しさん2010/10/15(金) 22:19:25
CygwinでCC=gcc-3 CXX=g++-3とやるとコンパイルできるのですが、
MINGWだとコンパイルに失敗します。
古いコンパイラでないと出来ないみたいです。
0243デフォルトの名無しさん2010/10/15(金) 22:23:04
バカもの!いいから英語を嫁!聞くなら嫁!読んでから聞け!以上
0244デフォルトの名無しさん2010/10/15(金) 22:23:34
もうC言語関係ねーじゃん
0245デフォルトの名無しさん2010/10/15(金) 23:23:33
ひょっ
0246デフォルトの名無しさん2010/10/16(土) 12:48:10
>>184を教えてくれ
 気になって先に進めない
0247デフォルトの名無しさん2010/10/16(土) 12:52:08
>>185
0248デフォルトの名無しさん2010/10/16(土) 12:52:09
× if ((fp = fopen(argv{1], "r"))==NULL) {
○ if ((fp = fopen(argv[1], "r"))==NULL) {
0249デフォルトの名無しさん2010/10/16(土) 14:26:50
0から3までの4つの整数をランダムに発生させるにはどうすればよいですか?
0250デフォルトの名無しさん2010/10/16(土) 14:28:02
rand()%4
0251デフォルトの名無しさん2010/10/16(土) 14:43:22
ありがとうございます
0252デフォルトの名無しさん2010/10/16(土) 14:51:23
>>250
rand() のモジュロをとるのはよくないうんぬんかんぬん
http://www.kouno.jp/home/c_faq/c13.html#16
0253デフォルトの名無しさん2010/10/16(土) 14:54:03
4つ程度なら問題なかろう
0254デフォルトの名無しさん2010/10/16(土) 14:58:00
むしろ小さければ小さいほど顕著になる問題なのでは?
0255デフォルトの名無しさん2010/10/16(土) 15:00:28
違う
RAND_MAXに近づけは近づくほど精度が悪くなる
よく考えれば分かるだろうに
0256デフォルトの名無しさん2010/10/16(土) 15:09:45
それは別の問題だろ
0257デフォルトの名無しさん2010/10/16(土) 15:11:05
小さくても悪くなる。
http://www.kouno.jp/home/c_faq/c13.html#16
>なぜな ら乱数発生器の多くで下位のビットは悲惨なほどランダムでない

一見ランダムに見えていても二つ組、三つ組み、4次元、5次元、と次数をあげていくと、わかったものではない。
0258デフォルトの名無しさん2010/10/16(土) 15:15:28
4*3*2*1のパターンしか無いのな
0259デフォルトの名無しさん2010/10/16(土) 15:20:56
じゃあどう書けば「いいの?
0260デフォルトの名無しさん2010/10/16(土) 15:23:42
続け様に2回も貼られてるリンク先を読まない人って
0261デフォルトの名無しさん2010/10/16(土) 15:24:21
(rand()>>1)%4
0262デフォルトの名無しさん2010/10/16(土) 15:44:15
いつまでRAND_MAXは0x7FFFなんですか?
精度が低すぎて使い物にならないんですが。
0263デフォルトの名無しさん2010/10/16(土) 15:45:57
君が他のコンパイラを導入するまで
0264デフォルトの名無しさん2010/10/16(土) 15:46:05
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c
0265デフォルトの名無しさん2010/10/16(土) 15:52:57
メルヘンツイッターか。
0266デフォルトの名無しさん2010/10/16(土) 16:50:39
>>262
lsi-c ですか?
0267デフォルトの名無しさん2010/10/16(土) 16:55:50
いつまでCHAR_BITは0x8なんですか?
精度が低すぎて使い物にならないんですが。
0268デフォルトの名無しさん2010/10/16(土) 17:01:22
>>267
デジタルシグナルプロセッサ環境マヂおすすめ
CHAR_BIT==32とか有効ビット!=ビット数とか味わえるよ
0269デフォルトの名無しさん2010/10/16(土) 17:12:22
DSP使ったことあるけど
CHAR_BIT は 8 だけど、4byte境界以外のアクセスは例外発生
ってコンパイラだった
0270デフォルトの名無しさん2010/10/16(土) 17:14:26
8bitの処理が必要になったときはどうするんだろうね?
0271デフォルトの名無しさん2010/10/16(土) 17:21:49
>>248 俺には同じに見えるんですが何が違うのかおしえて
0272デフォルトの名無しさん2010/10/16(土) 17:24:26
視力
0273デフォルトの名無しさん2010/10/16(土) 17:26:55
>>270
イミディエイトアドレス に 境界外の値が使えない
ってだけなので、ビットシフトとマスクで 値操作そのものはなんとかなるよ
あとはインラインアセンブラで SSEのSIMD的なレジスタ分配コードを経由させる

>>271
上: argv 直後 { からす括弧
下: argv 直後 [ カギ括弧
0274デフォルトの名無しさん2010/10/16(土) 17:27:22
>>271

×  { 1 ]
○  [ 1 ]
0275デフォルトの名無しさん2010/10/16(土) 17:27:39
>>271
argvの次の1文字
0276デフォルトの名無しさん2010/10/16(土) 17:28:16
>>271です
正解のほうをコピーしてみたら警告はでましたがエラーなく実行できました
どこが間違ってたか教えて〜
0277デフォルトの名無しさん2010/10/16(土) 17:29:12
↑ありがとうございます↑
0278デフォルトの名無しさん2010/10/16(土) 17:31:01
↑どういたしまして↑
0279デフォルトの名無しさん2010/10/16(土) 17:31:39
fgetsで取得した文字列(仮にlineとして)を char *tekitou = "nanchara-kanchara"みたいな他の文字列と結合したいんですけど
結合自体はstrcpyとかstrcatでいいとわかったんですが
その時メモリを動的に設定するにはどうしたらいいんでしょうか良いサンプルコードが載ったサイトなど教えてください
0280デフォルトの名無しさん2010/10/16(土) 17:31:45
↑さようなら↑
0281デフォルトの名無しさん2010/10/16(土) 17:36:42
↑ありがとうございます↑
0282デフォルトの名無しさん2010/10/16(土) 17:43:42
↑/→\↓/←\↑
0283デフォルトの名無しさん2010/10/16(土) 17:44:48
C言語で巨大整数を扱うのに適したライブラリは何ですか?
例えばNTL、GMP、LiDIAなどでJAVAみたいにBigIntegerのような
データ型が定義されて意識することなく塩山市などの計算が簡単に
出来るような処理系を探しています。
0284デフォルトの名無しさん2010/10/16(土) 17:48:50
C言語プログラマという生き方ではそういうのは自作することになっている
0285デフォルトの名無しさん2010/10/16(土) 17:54:53
逆に言えば、作ろうと思わない時点にCには向いてない。
もっとライブラリ豊富な言語に移行したほうがハッピーになれるよ。
0286デフォルトの名無しさん2010/10/16(土) 18:00:52
じゃあなんでみんな数論ライブラリ作ってるの?
0287デフォルトの名無しさん2010/10/16(土) 18:02:58
>>279
realloc() を使います。
http://codepad.org/igxPlgfy
0288デフォルトの名無しさん2010/10/16(土) 18:03:21
塩山市笑う。
Cでは演算子を再定義出来ないから、JAVAのBigIntegerのような事は出来ない。
したがって、どれを使っても大差は無い。むしろ、ライセンス条件が選択の鍵。
GMPをダイナミックリンクしとけばいいんじゃねーの。

http://ja.wikipedia.org/wiki/%E5%A4%9A%E5%80%8D%E9%95%B7%E6%95%B4%E6%95%B0#.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA
0289デフォルトの名無しさん2010/10/16(土) 18:08:58
内部的に文字列で巨大整数を扱うような処理をカプセル化してライブラリ化すればいいだけじゃないの
0290デフォルトの名無しさん2010/10/16(土) 18:14:11
昔GCC2.95の頃はC++でIntegerという型があってよくそれを使ってました。
でも8000ビットを超えると計算結果が正しくなくなるというバグが
ありました。
その後に出てきたのがGMPでしたけど、使いにくいので使ってません。
0291デフォルトの名無しさん2010/10/16(土) 18:45:53
Rubyで作ってきた関数の便利さを生かしながら、性能の高速化を求める
にはJAVAに移植した方がいいのでしょうか。
0292デフォルトの名無しさん2010/10/16(土) 18:47:29
java はそのうち使うだけで oracle に請求されるようになります。
0293デフォルトの名無しさん2010/10/16(土) 18:59:57
windowsでsystem関数を使ってBATファイルを作りそれをスタートアップに登録させたいのですが
スタートアップのフォルダパス取得方法わかりません、教えてくれませんか。
0294デフォルトの名無しさん2010/10/16(土) 19:03:33
C:\Documents and Settings\<ユーザー名>\スタート メニュー\プログラム
0295デフォルトの名無しさん2010/10/16(土) 19:05:25
>>293
Win32API質問箱 Build90
http://hibari.2ch.net/test/read.cgi/tech/1287205063/
0296デフォルトの名無しさん2010/10/16(土) 19:10:21
>>293
SHGetSpecialFolderPath
0297デフォルトの名無しさん2010/10/16(土) 19:14:50
>>293
とても良い事を教えてあげよう。

http://www.google.comをWebブラウザで開いて、真ん中にあるテキストボックスに
「スタートアップフォルダ 取得」って入力して、その右の検索ボタンを押すんだ。
0298デフォルトの名無しさん2010/10/16(土) 19:17:10
いくら入門スレでもそこまで親切に教えるのはどうかと
0299デフォルトの名無しさん2010/10/16(土) 19:30:41
ちゃんとお礼言っとけよ
0300デフォルトの名無しさん2010/10/16(土) 19:41:43
ふっほっ
0301デフォルトの名無しさん2010/10/16(土) 19:44:30
ちゃんとお札貼っとけよ
0302デフォルトの名無しさん2010/10/16(土) 19:46:05
アリガタマキン ( ´∀`)ノ⌒ω)Д`)ブニュ
0303デフォルトの名無しさん2010/10/16(土) 22:15:56
(`・ω・´)シャキーン
0304デフォルトの名無しさん2010/10/16(土) 22:27:00
日本語とかの2バイト文字の1バイト目が128を超えることってありますか?
0305デフォルトの名無しさん2010/10/16(土) 22:29:43
ふつーにおきる
0306デフォルトの名無しさん2010/10/16(土) 22:33:25
VCならchar型は0〜255バイトまで表現できますけど、
VC以外のコンパイラで符号ありのchar型の場合は、
unsigned char型で読むべきなのでしょうか?
0307デフォルトの名無しさん2010/10/16(土) 22:34:43
VC++もデフォはcharはsingedだが?
0308デフォルトの名無しさん2010/10/16(土) 22:39:31
何をunsigned char型で読むべきかと質問しているのか?
0309デフォルトの名無しさん2010/10/16(土) 22:42:08
文字列リテラル "abc" のデフォルトの型の話? < VCで unsigned char
0310デフォルトの名無しさん2010/10/16(土) 22:44:40
VCってデフォってcharはunsignedじゃありませんでしたっけ?

主に2バイト文字を読むときはunsigned charで読むべきなのかと思いまして。。
0311デフォルトの名無しさん2010/10/16(土) 22:46:27
何のために/Jが有ると思ってんの
0312デフォルトの名無しさん2010/10/16(土) 22:56:38
何ですか。/Jって?
0313デフォルトの名無しさん2010/10/16(土) 23:21:28
/.Jならわかるんだけど
0314デフォルトの名無しさん2010/10/16(土) 23:23:19
わかるならべつにいいじゃん

なにもったいぶっちゃってんの
0315デフォルトの名無しさん2010/10/16(土) 23:24:27
ググれ無いバカには不要のものだよ
0316デフォルトの名無しさん2010/10/16(土) 23:40:53
/Jつけたら、unsignedになるんですね。

本題に戻りたいんですが、
日本語などの2バイト文字を読むには、unsigned charで読むべきなのでしょうか
?
0317デフォルトの名無しさん2010/10/16(土) 23:45:50
2バイトならwchar_tだろ
0318デフォルトの名無しさん2010/10/16(土) 23:47:22
>>317
最高にアホ
0319デフォルトの名無しさん2010/10/16(土) 23:58:55
2バイト文字ならwcharだろ。
多バイト文字は2バイトとは限らんよ。
つーか、Windows の場合は2バイト文字とマルチバイト文字はちゃんと区別されてるから、
普通は両対応させるためにマクロの TCHAR を使う。
リテラル文字列も生の "" を使ったりはしない。
まあ、出来てないゆとりも多いけどな。
0320デフォルトの名無しさん2010/10/17(日) 00:00:41
>>319
最高にアホ
0321デフォルトの名無しさん2010/10/17(日) 00:03:02
いえ、char型の時の話をしてるんですが。。。
0322デフォルトの名無しさん2010/10/17(日) 00:04:22
>>316
ビットの並びが先にある。
その値を文字として解釈させるなら符号に意味は無い。

つまり好きにしろってこと。
0323デフォルトの名無しさん2010/10/17(日) 00:05:52
だから2バイト文字つったら普通は UTF-16 とかだろ。
それを char で扱うのは良くない。
0324デフォルトの名無しさん2010/10/17(日) 00:10:31
最上位ビットが立ってて、符号有りだったらマイナスの値になるけど、
別に文字として解釈されるから、関係ないってことでいいですか?
0325デフォルトの名無しさん2010/10/17(日) 00:15:43
使い方による。
符号の扱いが違うんだから同じなわけがないだろ。
0326デフォルトの名無しさん2010/10/17(日) 00:17:17
問題ない
0327デフォルトの名無しさん2010/10/17(日) 00:17:36
英語以外ならUTF16がスタンダードだろ。
これが便利なのは間違いない。
0328デフォルトの名無しさん2010/10/17(日) 00:19:10
え?
0329デフォルトの名無しさん2010/10/17(日) 00:19:14
wchar関係が揃ってない環境が今だにあるもんで
0330デフォルトの名無しさん2010/10/17(日) 00:20:29
符号はプログラムが四則演算、比較ょするときにきいてくる。
文字列操作では関係無い。
0331デフォルトの名無しさん2010/10/17(日) 00:21:56
比較ょ
■ このスレッドは過去ログ倉庫に格納されています