2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語なら俺に聞け! Part 63

1 :v(^o^i)d:03/08/05 21:18
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

コンパイラを探しているなら >>2-13 を。
C machineはCに非ず
上記を逸した場合の結果は激しく未定義だYO!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

C言語なら俺に聞け! Part 62
http://pc2.2ch.net/test/read.cgi/tech/1058754682/

2 :デフォルトの名無しさん:03/08/05 21:19
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

3 :デフォルトの名無しさん:03/08/05 21:20
>>1
お疲れ様でつ。

4 :デフォルトの名無しさん:03/08/05 21:27
>>1
お疲れ〜

5 :デフォルトの名無しさん:03/08/05 21:31
標準ライブラリ一覧(一部)
http://www.bohyoh.com/CandCPP/C/Library/index.html

JM
http://www.linux.or.jp/JM/

6 :デフォルトの名無しさん:03/08/05 21:43
JISの規格書

> http://pc3.2ch.net/tech/kako/1027/10271/1027160374.html
> 漏れも規格は有料だと思ってたけど、 JISは無料で閲覧できるように
> なってるみたい。
>
> http://www.jisc.go.jp/
> ここからデータベース→JISとたどっていって規格番号を指定すれば、
> PDFで見ることができる。ちなみにC言語はJIS X3010だ。
今はJIS検索というボタンみたい。

7 :デフォルトの名無しさん:03/08/05 21:45
プログラミング言語 C の新機能(C99)
http://seclan.dll.jp/c99d/c99d00.htm

8 :デフォルトの名無しさん:03/08/05 21:46
宿題丸投げはこちらへ
http://pc2.2ch.net/test/read.cgi/tech/1058283913/

9 :デフォルトの名無しさん:03/08/05 21:48
環境依存でもOKなスレッド
http://pc2.2ch.net/test/read.cgi/tech/1059041347/

10 :デフォルトの名無しさん:03/08/06 00:38
>1
もつカレ□

11 :ビル・ジョブス:03/08/06 02:18
>965
char c, t;
c = (t = rand()) % 25 + (t & 1 ? 'A': 'a');
じゃダメかな?

12 :デフォルトの名無しさん:03/08/06 02:27
ひどいな

13 :デフォルトの名無しさん:03/08/06 02:50
これはひどい

14 :デフォルトの名無しさん:03/08/06 07:13
>>11
問い1 算術+のオペランドの評価順序を述べよ。
問い2 代入式の副作用完了点を示せ。

15 :デフォルトの名無しさん:03/08/06 08:39
(sin(a))^2 + (cos(a))^2 の計算をさせたいんだが
浮動小数点の不正な使用と言われてコンパイルできない
なんで?
#include<math.h>はやってるし、double a もしてるのに(´・ω・`)ショボーン

16 :デフォルトの名無しさん:03/08/06 09:02
(sin(a))^2 + (cos(a))^2 の代わりに 1.0 と書くといいよ

17 :15:03/08/06 09:08
(sin(a))*(sin(a)) + (cos(a))*(cos(a)) にしたらできますた
^ って使えないんか?

18 :デフォルトの名無しさん:03/08/06 09:12
>>17
使えるまで諦めるな!

19 :デフォルトの名無しさん:03/08/06 09:15
使えない奴だな

20 :デフォルトの名無しさん:03/08/06 09:20
>>17
それはシフト演算になっちゃうから無理なんじゃ?

21 :デフォルトの名無しさん:03/08/06 09:21
うそ教えちゃいかんよ

22 :20:03/08/06 09:32
>>21
^ってシフト演算じゃなかったっけ?

23 :デフォルトの名無しさん:03/08/06 09:35
  &    ビットごとの AND
  |     ビットごとの OR
  ^    ビットごとの XOR
  ~    ビットごとの反転(1 の補数)
  <<   左シフト
  >>   右シフト

24 :15:03/08/06 09:41
レスがいっぱい!みんな叱咤激励ありがとう

^= a^=b; aとbの排他的論理和をaに代入する a=a^b
^ a=b^c; bとcの各ビット毎の排他的論理和をとり、その結果をaに代入する

ということらしいですな よーわからんがw
TeX感覚でついやってしまいますた



25 :デフォルトの名無しさん:03/08/06 11:48
>>11
問い3 アルファベットの文字数を答えよ。

26 :デフォルトの名無しさん:03/08/06 11:59
>>15
pow(sin(a),2)+pow(cos(a),2);
これではダメぽですか??

27 :デフォルトの名無しさん:03/08/06 12:01
>>11
問い4 (t = rand()) % 25 の値域を示せ。

28 :デフォルトの名無しさん:03/08/06 12:09
ギリシャ語は24文字

29 :デフォルトの名無しさん:03/08/06 12:12
>11
問い5 c=='b'となる確率は幾らか。

30 :デフォルトの名無しさん:03/08/06 12:21
>>29
まさかとは思うが、
0
という答えを期待しているわけじゃないよね?

31 :デフォルトの名無しさん:03/08/06 12:33
ああ、アルファベットだから、%26に自動補正してたよ。%25か。

32 :デフォルトの名無しさん:03/08/06 12:40
>>15
どうでもいいけど、常に1.0になるの関数呼ぶのか?

33 :デフォルトの名無しさん:03/08/06 13:02
このようなやり方でaをbに
コピーしようとしてるんだけどデキマヘン。
どうしたらよかですか・・?

#include<stdio.h>

void cpy(char *x,char *y); /* プロトタイプ */

int main(void)
{
char *a,b[30];
a="aiueo";
cpy(a,b); /* cpy関数呼び出し */
printf(b);
return 0;
}

void cpy(char *x,char *y)
{
while(*x++ = *y++); /* ポインタを使ってaをbにコピー */
}

34 :デフォルトの名無しさん:03/08/06 13:03
釣り?
cpy(b,a)


35 :デフォルトの名無しさん:03/08/06 13:08
釣り?
while(*y++ = *x++);

36 :デフォルトの名無しさん:03/08/06 13:11
printfの第一引数は定数にするのが鉄則だよん。。。

37 :_:03/08/06 13:14
http://homepage.mac.com/hiroyuki44/jaz08.html

38 :デフォルトの名無しさん:03/08/06 13:31
>>35
このように変化いたしました。

while((*x = *y)!='\0'{
x++;
y++;
}
    ↓
while((*x++ = *y++)!='\0');
    ↓
while(*x++ = *y++);

39 :38:03/08/06 13:32
一番上のかっこが抜けました。

while((*x = *y)!='0'){
x++;
y++;
}

40 :デフォルトの名無しさん:03/08/06 13:33
>>38-39
コピーする方向が違うっていってんだよ

41 :38:03/08/06 13:35
あ、ほんとだ・・。。
失敬いたしますたああああぁぁ、消。

42 :38:03/08/06 13:36
うを!出来た・・。
ありがとんございましたm_m

43 :デフォルトの名無しさん:03/08/06 14:02
38がどう直したかわからないが、
ほぼ同じことをする関数
char *strcpy(char *destination, const char *source);
と、引数の順序をあわせておいたほうがいいよ。


44 :38:03/08/06 14:20
>>43
>>33の下から2行目の
while(*x++ = *y++); を
while(*y++ = *x++); という風にしただけでごんす。

&情報ありがとんです。

45 :デフォルトの名無しさん:03/08/06 14:28
/* Practice3.c */
#include <stdio.h>

int main(void)
{
int a;

a = 90;

printf("%dmin = %dh%dm\n", a, (a\60), (a%60));

return 0;
}

90min = 1h30mって表示したいんですができません
どうしたらいいか教えてください

46 :_:03/08/06 14:31
http://homepage.mac.com/hiroyuki44/

47 :デフォルトの名無しさん:03/08/06 14:32
>>45
> (a\60)

なによこれ

48 :デフォルトの名無しさん:03/08/06 14:34
>>47 (a\60)本に書いてありました。
   (a\60)←なんなんですか?

49 :デフォルトの名無しさん:03/08/06 14:36
a/60=1

50 :デフォルトの名無しさん:03/08/06 14:36
>>48
一部のbasicの整数除算記号と勘違いしているのでは?

この場合は単純に a / 60 でOK。


51 :デフォルトの名無しさん:03/08/06 14:37
キーボードで、スラッシュとバックスラッシュを打ち間違えたと見た。(・A・)


52 :デフォルトの名無しさん:03/08/06 14:40
>>50 のやりかたでできた! 協力してくれたしと
ありがとう!

53 :デフォルトの名無しさん:03/08/06 17:13
                                               /|_
     ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ / __/
     ┃    ∧ ∧___    今 日 は                   ┃( ( ̄
     ┃   /(*゚ー゚)♪/\                          ┃/)
 ∧ ∧  ∫ /| ̄∪∪ ̄|\/  こ こ ま で 学習し ま し た  C<ニン
 (.  *゚)━*  .|        |./                           ┃  ∧∧   ∧∧
 /   ! ┃    ̄ ̄ ̄ ̄                    2ちゃんねる ┃ (,,゚ー゚)  (゚ー゚*)
,,(_,,ノ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛〜(_,,ノ  .(_,,)〜

54 :C初心者:03/08/06 17:40
system("dir");
等で画面に表示された文字をファイルに書きこんだりchar型配列にコピーするには如何すれば良いんでしょうか?

55 :デフォルトの名無しさん:03/08/06 17:47
>>54
環境によっては
popen()/pclose()、_popen()/_pclose()
が使えるかもしれない。
それ以上はスレ違いなので自分で調べられたし。

56 :デフォルトの名無しさん:03/08/06 18:25
system("dir > filename.txt");としてから
filename.txtを開く

57 :デフォルトの名無しさん:03/08/06 18:28
                                              /|_
     ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ / __/
     ┃    ∧ ∧___    今 日 は                   ┃( ( ̄
     ┃   /(*゚ー゚)♪/\                          ┃/)
 ∧ ∧  ∫ /| ̄∪∪ ̄|\/  こ こ ま で 学習し ま し た  C<ニン
 (.  *゚)━*  .|        |./                           ┃  ∧∧   ∧∧
 /   ! ┃    ̄ ̄ ̄ ̄                    2ちゃんねる ┃ (,,゚ー゚)  (゚ー゚*)
,,(_,,ノ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛〜(_,,ノ  .(_,,)〜


58 :15:03/08/06 18:38
遅れてスマソ レスありがと
徹夜でやってたから寝ちまった...

>>26
(σ´∀`)σソレダ!!
関数で累乗の計算するんだね

>>32
昔書いたbasicのソースを移植させて勉強してる状況なんで
試しにやってるんです

ここの住人は優しいジェントルマンばかりですね


59 :デフォルトの名無しさん:03/08/06 22:57
ボタンをクリックすると名前解決を行うプログラムで
最初だけ名前解決に失敗して2回目からはちゃんと
成功するのですが なじぇ?(゚▽゚;

struct hostent *hoste = gethostbyname("w3.monar.net");

if(hoste == NULL){
Memo1->Lines->Add("ほすと名の解決失敗(゚▽゚;");
}


60 :デフォルトの名無しさん:03/08/06 23:00
>>59
ここで聞くのはなじぇ?(゚▽゚;

61 :デフォルトの名無しさん:03/08/06 23:05
>>60
ここはどこ?(゚▽゚;

そしてどこへ行けばいい?(゚▽゚;

62 :デフォルトの名無しさん:03/08/06 23:07
>>61
http://pc2.2ch.net/test/read.cgi/tech/1052106444/
ム板一の殺伐スレ

63 :デフォルトの名無しさん:03/08/07 04:41
前スレ埋め立て完了。1000ゲット

64 :デフォルトの名無しさん:03/08/07 05:04
>>63
(・∀・)イイ!!戦いだった・・次は勝つ

65 :デフォルトの名無しさん:03/08/07 09:53
MinGWスレでも質問しているのですが
はやっていなさそうなのでここにも質問させてください。

MinGW-2.0.0-3の全ソースをダウンロードしたいのですが、
どこにありますか?


66 : :03/08/07 10:25
>>63
おめでとう
>>64
健闘を祈る
>>65
開発元へメール

67 :65:03/08/07 10:46
誰かまじめに答えてください。

68 :デフォルトの名無しさん:03/08/07 11:28
http://www.mingw.org/download.shtml
にきまってるだろ。

69 :デフォルトの名無しさん:03/08/07 12:56
strcpy(a,"%d",i);
みたいなことをやりたいんですけど
どうしたらいいですか?

70 :デフォルトの名無しさん:03/08/07 13:01
sprintf

71 :デフォルトの名無しさん:03/08/07 13:07
>>70
できました
ありがとうございました

72 :65:03/08/07 15:08
>>68
すいませんがどのファイルでしょうか?

73 :デフォルトの名無しさん:03/08/07 15:22
42bitのデータ(4兆くらい)を
扱いたいのですが
sizeof(long)が4でした
どうしたらいいでしょうか?

74 :デフォルトの名無しさん:03/08/07 15:39
・2つセットでつかう。
・sizeofが8を返す型をみつける

75 :デフォルトの名無しさん:03/08/07 15:41
アセンブラを使わないC++による多倍長計算 嫁。

もしくは、多倍長で検索してみれ。



76 :デフォルトの名無しさん:03/08/07 15:51
>72
Currentでsrcとあるもの全部。

77 :65:03/08/07 16:33
>>76
その中にあるgccはWindows用ですか?

78 :デフォルトの名無しさん:03/08/07 16:47
>>77
いい加減にスレ違いな粘着はやめろ。

79 :65:03/08/07 16:58
>>78
ほんとにまじめなんです。

CurrentにあるgccのsrcがあるのですがWindows用のコンパイルでも通りますか?
これが最後の質問ですから誰か答えてください。


80 :デフォルトの名無しさん:03/08/07 17:13
Windows2000におけるgcc-3.2.3のコンパイル方法
http://homepage1.nifty.com/kuuku/gcc-sjis/howtobuild.html

81 :デフォルトの名無しさん:03/08/07 17:17
> 898 :デフォルトの名無しさん :03/08/04 20:50
> MinGWのソースってダウンロードできるの?

82 :デフォルトの名無しさん:03/08/07 18:40
double型でわからないところがあります。

double d1;
d1 = 5 / 2;
printf ("d1 = %f", d1)

これを実行するとd1が2.500000ではなく2.000000となるのは、
5にも2にも小数点とゼロが付いていないからそのまま処理された
ということでよいのでしょうか?

83 :デフォルトの名無しさん:03/08/07 18:47
>>82
いいけど、整数同士で計算するからと理解した方がよい。

84 :82:03/08/07 18:58
>>83
わかりました。
ありがとうございます。

85 :デフォルトの名無しさん:03/08/07 23:29
以下はレコードの削除をするコードなんですが、
どうしても理解出来ないため、どなたかご教授願います。
(某Cの参考書に載っているものです)

fseek(fp, RECSIZE * (delNo + 1), SEEK_SET);

while (fread(&rec, RECSIZE, 1, fp) == 1) {
   fseek(fp, -2 * RECSIZE, SEEK_CUR);
   fwrite(&rec, RECSIZE, 1, fp);
}

RECSIZEは読み書きする構造体のバイト数で、
recは構造体。delNoは、削除するレコードの数え番号です。
これで正しく該当レコードを削除出来ますか?
(削除レコードから後を1つ前の位置にずらして書き込んでいく方法だそうです)

86 :デフォルトの名無しさん:03/08/07 23:57
ex)delNo==1
fseek(delNo+1)  1)AB[C]DE
while(fread(1))   2)ABC[D]E rec==C
fseek(-2)      3)A[B]CDE
fwrite(1)      4)AC[C]DE
while(fread(1))   5)ACC[D]E rec==C
fseek(-2)      6)A[C]CDE
fwrite(1)      →4へ戻る

87 :デフォルトの名無しさん:03/08/08 00:18
>>86
おお、ありがとうございます!
矢張り”一応”該当箇所の削除は出来るものの、挙動がおかしいですね…。

正誤表も無く、困っていました。
重ね重ねありがとうございました。

88 :デフォルトの名無しさん:03/08/08 00:20
>>87
> 削除レコードから後を1つ前の位置にずらして書き込んでいく

ということはひとつのレコードを消した場合はファイルサイズはRECSIZE分小さくなると考えていいのか?

89 :デフォルトの名無しさん:03/08/08 00:50
>>88
すいません。よく分かりません…。
ただ、本当に正しい挙動をする「レコードを削除するコード」であれば、
ファイルサイズはRECSIZE分小さくならなければおかしいですよね。

↑のコードだと、仮にループに陥らなかったとしても、
ファイルサイズはRECSIZE分小さくならないと思います。
それは、一番最後のレコードを読み込むだけで放置することになるからだと思うんですが…。
(的外れなことを書いていたらすみません…)

ちなみに、この某Cの参考書というのは、
「C言語 文字列操作+ファイル入出力 完全制覇」です。(一応)

90 :デフォルトの名無しさん:03/08/08 00:55
>>89
うん。なるはずない。
必要なものだけ読みとって改めて"w"でfopenしたファイルに書き込むか、>>85のあとになんらかの方法で切り詰め(例えばUNIXならtruncate)ないとね。

91 :85 = 87 = 89:03/08/08 01:07
>>90
なるほど!とても参考になります。
ありがとうございました。

92 :デフォルトの名無しさん:03/08/08 07:30
プログラムの勉強を始めようと思っているのですが
CとC++どっちから始めようか悩んでまつ・・・。
どっちから始めたほうがよいですかね?

93 :デフォルトの名無しさん:03/08/08 08:35
先ずは日本語の勉強をしろ。

94 :デフォルトの名無しさん:03/08/08 08:43
参照
http://www.urlto.net/ad01/

95 :デフォルトの名無しさん:03/08/08 08:48
悪質な業者にご注意下さい!!

96 :73:03/08/08 10:25
>>74
2つセットで使った後
表示を10進数にするための方法がわかりません
>>75
多倍長で検索してみました
出てきたものは大体入力の時点でBCD等に変換して
数値を扱ってます
すでにあるデータは42bitで
表示のみ10進にしたいのですがどうすればよいでしょうか?

97 :デフォルトの名無しさん:03/08/08 10:38
42bit以上の型くらいありそうだけど。
C99に準拠していればlong long intが使えるし。

98 :デフォルトの名無しさん:03/08/08 10:49
>>97
double型は8バイトありましたが
double da=1;
da=da<<1;
とかやると
エラー E2060 test.c 6: 浮動小数点の不正な使用(関数 main )
long long int ia;
とかやると
エラー E2176 test.c 5: 宣言に型が多すぎる(関数 main )
ってでますBCC5.51です

99 :デフォルトの名無しさん:03/08/08 11:06
65536*(上位桁)+(下位16bit)

100 :デフォルトの名無しさん:03/08/08 11:10
>>98
double は整数ではないからシフト演算子は使えない。
long long int は必ずしも使えるとは限らない。
long int 2つを使って42bit整数を表すには、
下位32と上位10などビットで分ける方法のほかに、
10^8などで割った商と余りに分ける方法もある。
シフト演算などのビット演算をしたいなら前者の方が楽だが、
表示するのは後者の方がずっと楽。

私の同僚が実装した他倍長クラスは、両方のタイプを
交換して使えるようになっていたがそこまでは必要ないだろう。

101 :デフォルトの名無しさん:03/08/08 11:25
>>100
上位10bitのそれぞれに10^8で分けたlongを持っておいて
(あらかじめ計算済みのlong配列を20持っておいて)
bitがたつごとに足し合わせて表示するってことでしょうか?

102 :デフォルトの名無しさん:03/08/08 11:27
>>98
具体的に何がしたいんだ?
>>73を見る限りでは double 使えばいいように感じるが

103 :デフォルトの名無しさん:03/08/08 11:33
>>102
すでにある42bit(連続でない)のデータを10進表示したいのです

104 :デフォルトの名無しさん:03/08/08 11:34
その、既にある42ビットのデータとやらはどうやって保持してるんだ?

105 :デフォルトの名無しさん:03/08/08 11:35
もしかしたら、printf("%15f", doubleValue);ってだけの話か?

106 :デフォルトの名無しさん:03/08/08 11:39
>>103
全然具体的になってないんだが…

107 :デフォルトの名無しさん:03/08/08 12:15
>>104
33+9です
なんでとかは聞かないでください
僕が決めたんじゃないんで

108 :デフォルトの名無しさん:03/08/08 12:50
多倍長 でぐぐったら一発でこんなの出てきたんだけどさ・・・
http://www5.airnet.ne.jp/tomy/cpro/longint.htm

少しはググ(ry

109 :デフォルトの名無しさん:03/08/08 17:26
リンク先のプログラムを提出したら先生に
2分木を作成後に,任意の節(idを指定)のデータを木を根から
辿りながら見つけて出力できるようにしなさいって言われた。
どこをどうしたらいい?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=131

110 :デフォルトの名無しさん:03/08/08 17:29
>>109
スレ違い。宿題スレへどうぞ。

111 :109:03/08/08 17:39
すみません。

112 :デフォルトの名無しさん:03/08/08 21:34
マズワ日本語ノ勉強ヲシレクラサイ
デカクルトキワワシュレズニ

113 :デフォルトの名無しさん:03/08/09 02:37
   ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (* ゚Д゚)< #include <hosh.h>
〜( UUノ  \__________

114 :デフォルトの名無しさん:03/08/09 13:29
__cdeclを関数の前につけると、C の名前付け規約が適用されるということでよろしいですか?

115 :デフォルトの名無しさん:03/08/09 16:00
よろしくありません

116 :デフォルトの名無しさん:03/08/09 16:22
>>114
>__cdeclを関数の前につけると、C の名前
何か勘違いしてると思われ。

117 :デフォルトの名無しさん:03/08/09 16:42
関数呼び出し規約はC本来のやり方でやれと明示することになるけども、
名前付け規約はちっとも関係ないよね

C型呼び出し規約
・パラメータは後ろ(右のもの)から順番にスタックに積まれる
・パラメータの後片付けは呼び出し側が行う

Cなんだからこんなの明示する必要ねえじゃんて思うかもしらんが、
たとえばwindowsのAPIはいわゆるPascal型の呼び出し規約だからね。
明示できたほうがよいのだ。

Pascal型呼び出し規約
・パラメータは前(左のもの)から順番にスタックに積まれる
・パラメータの後片付けは呼ばれた側が行う

x86は関数からのリターン(スタックに積まれたアドレスへジャンプ)と
スタックポインタ(SPレジスタ)の調整(パラメータの後片付け)が
一命令でできるからPascal型の呼び出し規約のほうが少し速かったりする。
windows APIがPascal型規約なのはこのあたりで少しでも性能を稼ごうとした
からじゃないかなと考えてる。

その代わり呼ばれた側がパラメータの数などについて完全に把握できなければならないので、
たとえばprintfなどのパラメータが不定な関数が実現できなくなる。

118 :デフォルトの名無しさん:03/08/09 16:45
>>117
>たとえばwindowsのAPIはいわゆるPascal型の呼び出し規約だからね。
今更Win16の話されてもこまるんだけどな・・・。

119 :デフォルトの名無しさん:03/08/09 16:47
>>117
>たとえばprintfなどのパラメータが不定な関数が実現できなくなる。

wsprintf (windows.h)
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_wsprintf.htm

120 :デフォルトの名無しさん:03/08/09 16:47
小・中学生の盗撮画像やマンコがいっぱい!!グチョグチョだよ♪
詳しくはこちら→http://e-rebirth.com/af/in.cgi?id=30

121 :デフォルトの名無しさん:03/08/09 16:49
>>118
ああ、すまなかった__cdeclの存在価値を示すために古いの出しちまったw

122 :デフォルトの名無しさん:03/08/09 16:55
threchigai

123 :デフォルトの名無しさん:03/08/09 17:06
関数へのポインタは
int (*func)()
ポインタを返す関数は
int *func()
と表すけど、
ポインタを返す関数へのポインタはどうやって書くのでしょうか?

124 :デフォルトの名無しさん:03/08/09 17:07
int *(*p)(double,char *);


125 :デフォルトの名無しさん:03/08/09 17:07
その二つを合成すれば得られるだろ

126 :デフォルトの名無しさん:03/08/09 17:08
>>125
名回答

127 :デフォルトの名無しさん:03/08/09 17:19
全角と半角を区別したいんですけど分かりません
教えてください

128 :デフォルトの名無しさん:03/08/09 17:28
>>127
Vecterってどうですか?
http://pc2.2ch.net/test/read.cgi/software/1026283187

このスレに詳しい奴がいるぞ。

129 :デフォルトの名無しさん:03/08/10 02:10
ttp://www.catnet.ne.jp/kouno/c_faq/c13.html#16
上記に
 rand() % N
よりも
 (int)((double)rand() / ((double)RAND_MAX + 1) * N)
の方がよりよい方法とあるが間違いではないのか?
以上終了。

130 :デフォルトの名無しさん:03/08/10 02:13
そうですね。

131 :デフォルトの名無しさん:03/08/10 02:27
 rand() % N
には致命的な欠陥があるが、終了しているようなので書くのは控えよう。

132 :デフォルトの名無しさん:03/08/10 02:29
RAND_MAX>>N のときは致命的でもなくは無くない?

133 :デフォルトの名無しさん:03/08/10 02:37
>>131
Nが0だとまずいとか?

134 :デフォルトの名無しさん:03/08/10 06:24
>>132
そのほうが致命的。

とにかく、>>129のURL先を読もうよ。答が書いてあるよ。

135 :デフォルトの名無しさん:03/08/10 09:00
「致命的」とは大げさな。
そんなことは自分で検定して用途に応じて判断すればいい

136 :デフォルトの名無しさん:03/08/10 09:44
全然致命的じゃねぇよ。

rand()%Nで十分。
rand()%Nの乱数性に不満があるような奴がrand()使ってるとも思えん。

137 :_:03/08/10 09:51
http://homepage.mac.com/hiroyuki45/jaz04.html

138 :デフォルトの名無しさん:03/08/10 09:52
rand() % N
の方が有利な面もあるのに、一律ダメだと言う表現がいかんのではと。
 ・速度
 ・(rand() % N) == N/2  ←この判定方法は簡単で便利

139 :デフォルトの名無しさん:03/08/10 11:10
10で割った余りが5かどうかって
0かどうかでも確率的には同じだな

140 :デフォルトの名無しさん:03/08/10 11:11
>139
違いますよ。

141 :140:03/08/10 11:13
>139
ごめん10の場合は同じか・・・ RAMD_MAXによるけど。

142 :デフォルトの名無しさん:03/08/10 11:40
>135
つまり、randは下位bitがあまりランダムではない、ということ?
そんなの実装依存の話だろ。(VCは32bitの線形合同法で手に入れた
値を>>16して返している)

143 :デフォルトの名無しさん:03/08/10 11:42
129は当然読んだ。提示されたURLを受けて、なお「致命的」と
言い張るからには、てっきり別の話だと思ったんだが。
たとえば、randの返す範囲が(0,1,2)のとき、%2とすると、
出現確率が、0:66%、1:33%になる、とか。

144 :デフォルトの名無しさん:03/08/10 11:46
>143
(int)((double)rand() / ((double)RAND_MAX + 1) * N)
でも同じこと。

145 :デフォルトの名無しさん:03/08/10 11:50
実装依存に変わりないがNが大きけりゃ乱数の周期がもろにでてきて、rand()自体が役に立たないと思う。

146 :デフォルトの名無しさん:03/08/10 12:23
処理速度重視の字句解析プログラムを作成したいのですが、
regexとflex、どちらの方が良いのでしょうか?


147 :デフォルトの名無しさん:03/08/10 12:37
C言語を今から始めようと思う初心者なんだがまず何すればいい?
GCCとかいうのDLしてみたんだが解凍中にエラーが出る。

いきなり挫折の予感。

148 :デフォルトの名無しさん:03/08/10 12:49
全角英数をやめる

149 :デフォルトの名無しさん:03/08/10 12:56
>>147
既に挫折している予感。

150 :147:03/08/10 13:03
あの拡張子はなんなんだ人をおちょくってるとしか思えん拡張子の分際で
なにがtar.gzだおめでてーな。

+Lhacaに放り込んだら解凍処理じゃなくて圧縮処理が始まったよ(´A`)

151 :デフォルトの名無しさん:03/08/10 13:07
>>150
Lhaplas使おうぜ。綴り間違えてるかな?

152 :デフォルトの名無しさん:03/08/10 13:10
落としたGCCはソースで、鶏と卵の関係に悩む予感。

153 :デフォルトの名無しさん:03/08/10 13:17
つかcygwinとかも入れてるんだろうな?

154 :デフォルトの名無しさん:03/08/10 13:32
>>152
gccはアセンブラとlexでどうにかなるんじゃなかったっけか?

155 :147:03/08/10 13:42
ラプラスで解凍は出来た。順調だな。
cygwinは説明読んでみたがわけわからん。
ウィンドウズで使えるようにする為の物らしいが、
UNIXとかAPIとか書かれてもわけわからんな。

つーか解凍したフォルダの何処見てもexeファイルが無いんだが
どれクリックすりゃ動くんだ糞がどこか分かり難い所に隠されてるのか。
cygwinってのを使わないと使えないのか。どうなんだ。そうなのか。

156 :デフォルトの名無しさん:03/08/10 13:52
ザコイ

157 :デフォルトの名無しさん:03/08/10 14:01
>>156
最近の中学校ではそんな言葉が流行ってんのか。

158 :デフォルトの名無しさん:03/08/10 14:05
(゚Д゚)ハァ?

159 :デフォルトの名無しさん:03/08/10 14:11
>>158
うん?もしかして高校生だったか?そらすまんかった。

160 :デフォルトの名無しさん:03/08/10 14:19
変なおやじ。

161 :デフォルトの名無しさん:03/08/10 14:25
ざこいなんて初めて聞いた

162 :デフォルトの名無しさん:03/08/10 14:26
ザコい

〔ざこ(雑魚)の形容詞化〕
(形)
主に若者語で,弱い。弱々しい。取るに足らない。ざこいとも。「―・いヤツだ」

163 :デフォルトの名無しさん:03/08/10 14:31
やるな。goo。

164 :デフォルトの名無しさん:03/08/10 14:32
>>163
IMIDASの男子高生用語コーナーじゃん。

165 :デフォルトの名無しさん:03/08/10 14:34
そういうコーナー読むのって、やっぱおやじ?

166 :デフォルトの名無しさん:03/08/10 14:35
なるほど

167 :デフォルトの名無しさん:03/08/10 14:41
ってゆーかもう10年以上前から使ってるぞ

168 :デフォルトの名無しさん:03/08/10 14:43
>>167
暴走族かなんかで?

つぅか10年も使うなよ・・・。

169 :デフォルトの名無しさん:03/08/10 14:55
>>168
いや、小学校とかで、普通に

170 :デフォルトの名無しさん:03/08/10 14:58
>>169
16〜22歳か。

171 :デフォルトの名無しさん:03/08/10 14:58
いい具合にスレ違いだな

172 :デフォルトの名無しさん:03/08/10 15:14
いい具合に濡れてるな

173 :厨房:03/08/10 15:17
linux,gccで自作プログラムをコンパイル→実行したら、
停止してしまいます。
ctrl + alt + delete で、システム自体の停止はできるんですが、
プログラムだけを停止する方法がわかりません。

どうしたらいいか教えて下さい?

174 :デフォルトの名無しさん:03/08/10 15:17
C言語って、何故Cなんでしょうか?
Algol...>B..>Cって事なんでしょうか?
一つヨロシコ。

175 :デフォルトの名無しさん:03/08/10 15:18
>>173
実行したら停止するんでしょ?

176 :デフォルトの名無しさん:03/08/10 15:20
>>174
B>BCPL>C>Delphi

だったと思われ。


177 :デフォルトの名無しさん:03/08/10 15:20
>>176
BCPL>B>C>Delphiだろ

178 :デフォルトの名無しさん:03/08/10 15:23
>>173
キーボードのCtrl-Z を押す

179 :147:03/08/10 15:23
俺のC言語ライフはここまでなのか?

180 :厨房:03/08/10 15:24
>>175
実行すると、プログラムが停止します。
ctrl + deleteで、シェルに戻るとか
そういうの無いんでしょうか?

181 :厨房:03/08/10 15:25
>>178
ありがとうございます。


182 :デフォルトの名無しさん:03/08/10 15:25
>>180
その前に無限ループつぶせ。

183 :デフォルトの名無しさん:03/08/10 15:25
>>176,177
レスサンクス。
BCPLって初耳、検索して期末。
ってCの次はDelphiすか
当然、D言語来るだろって思ってた。

184 :デフォルトの名無しさん:03/08/10 15:30
混じれすするとC++・・・

185 :デフォルトの名無しさん:03/08/10 15:41
gccって総合開発環境なの?コンパイラだけ?
Borlandの方が楽なのかな。

186 :デフォルトの名無しさん:03/08/10 15:44
>>150
拡張子とは何か勉強してきた方がいいな

187 :デフォルトの名無しさん:03/08/10 15:45
これくしょん

188 :_:03/08/10 15:47
http://homepage.mac.com/hiroyuki45/

189 :デフォルトの名無しさん:03/08/10 15:52
>>186
unixでは拡張子なんて飾りですよ。

190 :デフォルトの名無しさん:03/08/10 15:54
>>189
偉い人にはそれがわからんのです

191 :デフォルトの名無しさん:03/08/10 15:56
部分的にはC++ですが許してください。
//URLデコーディング
string CQuery::decode(const string &s)
{
string t;
for(string::const_iterator p = s.begin(); p != s.end(); ++p){
if (*p == '%') {
if(++p == s.end()) break;
int d = *p;
if(++p == s.end()) break;
int e = *p;
d = (d >= 'A') ? (d & 0xdf) - 'A' + 10 : d - '0';
e = (e >= 'A') ? (e & 0xdf) - 'A' + 10 : e - '0';
if (0 <= d && d < 16 && 0 <= e && e < 16)
t += char(16 * d + e);
} else if(*p == '+'){
t += ' ';
} else{
t += *p;
}
}

return t;
}

というコードがありますが、
d = (d >= 'A') ? (d & 0xdf) - 'A' + 10 : d - '0';
の中の
(d & 0xdf) - 'A' + 10
が何をやっているのかわかりません。どういうことなんでしょうか。

192 :デフォルトの名無しさん:03/08/10 16:00
>>191
dって言う変数と11011111のAND取って・・・何がしたいんだろう?

193 :デフォルトの名無しさん:03/08/10 16:03
16進文字を整数に直してるんでしょ。
0xDFと&を取れば小文字を大文字に出来る。


194 :デフォルトの名無しさん:03/08/10 16:06
>>193
へぇ、アイデアマンですな。

195 :191:03/08/10 16:08
>>193
なるほど。そういうことだったんですか。
これは文字コードに無関係なんですか?

196 :デフォルトの名無しさん:03/08/10 16:12
>>195
もちろんASCIIコードオンリーかと。

197 :デフォルトの名無しさん:03/08/10 16:12
>>195
ASCII限定。
このコードはURLだから無問題。

198 :デフォルトの名無しさん:03/08/10 16:13
>>193
アルファベットの大文字小文字の間に記号がマッピングされてるのは、
この演算を想定しての事なんですか?


疑問が氷解しました。

199 :デフォルトの名無しさん:03/08/10 16:18
>>198
その通りです。

200 :191:03/08/10 16:21
>>195
なるほど。

201 :デフォルトの名無しさん:03/08/10 16:38
プログラムが動作しているOSがWindowsかUnixかで処理を分けたいんですが、何かいい方法はありますでしょうか

202 :デフォルトの名無しさん:03/08/10 16:38
扱う文字セットがASCII限定なら、
'%'、'A'、'0'も0x25、0x41、0x30にしておかないといけないのでは?

203 :デフォルトの名無しさん:03/08/10 16:51
>>201=http://pc2.2ch.net/test/read.cgi/php/1048393217/287

204 :201:03/08/10 17:14
>>203
レスがつかなくなるので変なところと結び付けないでほすぃ

205 :デフォルトの名無しさん:03/08/10 17:16
ふつうは、#ifdefとか使うけど。

206 :201:03/08/10 17:20
>>205
#ifdefをどのように使うんでしょうか。もう少し具体的に教えてもらえると嬉しい

207 :デフォルトの名無しさん:03/08/10 17:22
>>201
死ねクソマルチ。

208 :デフォルトの名無しさん:03/08/10 17:26
同じバイナリで、WINDOWS,UNIX両方で動かしたい、という奇天烈な質問ではなかろう。
Win32のexeを作れるコンパイラは、WINDOWSとか、WIN32とかがdefineされているといえる。
#ifdef WINDOWS
LockFileEx(...);
#else /*面倒だから、Win以外はUNIXと仮定する。本気になったら、autoconfとか使う(w*/
flock(...);
#endif
と処理を分ければよろしい。

209 :デフォルトの名無しさん:03/08/10 17:27
>>208
cygwin使えば出来ないことも。

210 :201:03/08/10 17:38
やっぱりマルチっていわれたλ........
>>208
WINDOWSかWIN32で判定すればいいんですね。っていうかファイルのロック処理じゃなくてディレクトリの処理なんですが・・・まぁ、なんというか。

>>209
cygwinでコンパイルすればってことですか?cygwin使ったことがないのでよくわかりませんが。

211 :デフォルトの名無しさん:03/08/10 17:41
>っていうかファイルのロック処理じゃなくてディレクトリの処理なんですが
ならはじめからそう書けよ。

212 :201:03/08/10 17:55
>>211
あわわ、ごめんなさい。

今ふと思いつきましたが208さんは「マルチかよ。まぁしかたないから答えてやるか」とか思ってたんでしょうか。なんて心の広い方だ。ありがとうございます。

213 :デフォルトの名無しさん:03/08/10 18:25
>>208
> Win32のexeを作れるコンパイラは、WINDOWSとか、WIN32とかがdefineされているといえる。
_WIN32ってのが多い。

214 :デフォルトの名無しさん:03/08/10 22:17
関数のプロトタイプ宣言は例えば
int foo(int, int, double); (関数名は例です)
のように書けと参考書に(明解 C言語入門, 柴田望洋)書いてあるのですが、
/usr/include/*.hなどを除くと
int foo(int mode, int level, double score);
のように引数の変数名も書いてあります.でgcc 3.2ではどちらも通ります.
どちらがよりよい書き方だとされているのでしょうか?

215 :デフォルトの名無しさん:03/08/10 22:26
どっちでもいい。
うまい引数名を使えばそれだけ分かりやすくはなるから、
外部に公開するようなものなら付けた方がいいと思うけど。

216 :214:03/08/10 22:38
>>215 ありがとう!
とりあえず付ける流儀で行きたいと思います.
少し調べてみたらOSのinclude/の下の.hはほとんど引数名が
書いてあった.tcp wrapperは引数の型名だけだった.
両方使われているようです.


217 :デフォルトの名無しさん:03/08/10 22:41
原則として、引数の名前も書いておく方がわかりやすくていいのだが、
ごくまれに困ることがある。

たとえば
#define score 20
と定義したあとで、
int foo(int mode, int level, double score);
が書かれたファイルをincludeするとコンパイルエラーになる。


218 :C初心者:03/08/10 22:46
基本的な使い方が解ったあとは何をすれば良いのでしょうか?

219 :デフォルトの名無しさん:03/08/10 22:52
>>218
なんでも自分の好きなもの作りなさい
作りたいものが無いならプログラムやめなさい

220 :214:03/08/10 23:01
>>217 なるほど... 引数名をつけるにしてもかぶらない
名前を付けるようにせよ、ということですね.
ところでこれもヘッダファイルの書き方の"流儀"の問題
なのですが、stdio.hを2回defineしないようにする時などの
#ifndef FOO
#include <stdio.h>
#define FOO
#endif /* FOO */
でFOOの命名規則に何かデファクトスタンダードはあるので
しょうか.例えばstdio.h -> _STDIO_H (大文字にして.を_に、
先頭に_をつける)とか.

221 :デフォルトの名無しさん:03/08/10 23:15
>>220
1 グローバル スコープを持ち、_で始まる名前
2 _で始まり、その次が大文字の名前
3 __で始まる名前(C), __を含む名前(C++)
は処理系のために予約されてる。

222 :214, 210:03/08/10 23:35
>>221 なるほど、こんな規則あったのか. ありがとう.
INCLUDED_STDIOとか色々やってるみたいですね.
_を付けるって言うのは真似しちゃいけないということですね.
適当に命名規則を付けることにします.GNUとかで推奨
規則ないのなかなあ.

223 :デフォルトの名無しさん:03/08/10 23:40
>>222
「先頭に」だぞ?


224 :214, 210, 222:03/08/10 23:53
>>223 分かってます.書き忘れました.
_を先頭に付けるって言うのは規則上真似しちゃいけないということ
ですね.その他の部分では「きっとGCCとか書いている人はCの超上級
者」->「その人たちのCの書き方を真似る」ということでOKですよね?


225 :デフォルトの名無しさん:03/08/11 02:27
>>224
コーディングスタイルで調べてみれ。
gccの書き方が最良って訳でもない。


226 :デフォルトの名無しさん:03/08/11 06:08
>>224
インクルードファイルのリエントラント防止が目的なら、
インクルードファイルの名前を利用するのがよい。

たとえば、foo.hならこんな感じ。
#ifndef FOO_H
#define FOO_H
/* 諸々の宣言 */
#endif

>>217
一般的に、そういう名前をdefineするのがよくない、というのが妥当な回答。
定数は大文字にすることで、一般的な引き数とは被らなくなる。

227 :デフォルトの名無しさん:03/08/11 08:42
>>226
妥当というか問題を先送りしただけのような気もする。

228 :デフォルトの名無しさん:03/08/11 09:54
整定数はenumにしようぜ。
ところで
> インクルードファイルのリエントラント
これ普通に使う言い方?

229 :デフォルトの名無しさん:03/08/11 09:58
enum { mon, tue, wed, thu, fri, sat, sun };
昔これがコンパイルエラーになる環境があったな。


230 :デフォルトの名無しさん:03/08/11 10:09
>>228
この#ifndefの使い方は、インクルードガードなどと呼ばれてる。

231 :デフォルトの名無しさん:03/08/11 10:15
>>228
インクルードファイルの再入可能性

違和感ないけど。

232 :デフォルトの名無しさん:03/08/11 11:41
関数の作り方について質問したいんですけど
いろんなサイト回ったり本みたりしてるんですが
わからないんで、ちょっとお願いします。
構文的にはこうじゃないですか

戻り値 関数の名前(引数)

ここのところの戻り値ってどうやって決めるんですか?
int,void,charなどなどたくさんありますけど、どんな基準で決めるんですか?
引数のところは大体わかってきたんですけど・・・戻り値が・・

それとたまに関数作って最後の return のところで
return -1; や、以前に定義してあったとして return y;
などありますがどうしてこうなるかがわからなくて・・・
自分的には正常に終了するときの return 0; しかわからないので
なにかとCの初心者なのでお願いします。

233 :デフォルトの名無しさん:03/08/11 11:44
整数nに1足して返す関数なら戻り値も整数だろ
int add1(int n){return n+1;}

234 :デフォルトの名無しさん:03/08/11 14:01
返り値が-1の場合
int abc(int a){
if (a==1) return 0;
return -1;}

aが1なら返り値は0、それ以外は-1を返り値とするとき
!abc(2) は0 !abc(1)は非0になるのでif文に通すのに利用できる

void 型というのは返り値がないのでいいと思う(不勉強ですみません)
こんな使い方もできる(と思う)。if,whileループで本当に通過したかのチェックに

void omoemana(int i){/*今回 int iは無関係*/
printf("ここを通過しますた\n");}
とか、元々関数の返り値は1つの値なのでポインタなど計算に対して
正常に処理されたかどうでもイイ場合もvoidとすることも可能(おすすめはしない)。

もし、おかしなところがあればツッコミ希望

235 :デフォルトの名無しさん:03/08/11 14:02
>>232
標準ライブラリの関数がどのようになっているか
見ていってみたら?

236 :デフォルトの名無しさん:03/08/11 14:13
>>234
> !abc(2) は0 !abc(1)は非0になるのでif文に通すのに利用できる
!0の結果は1

237 :デフォルトの名無しさん:03/08/11 16:24
>>236
!0 = 0xFF

とか言ってみる。

238 :デフォルトの名無しさん:03/08/11 16:26
>>237
なんでよ。

239 :デフォルトの名無しさん:03/08/11 17:13
>>237
右辺値への代入は出来ません。

240 :デフォルトの名無しさん:03/08/11 17:38
C 言語でスペースを含んだ文字列の扱いで、便利な関数ってありますか?
ファイルから
word1 word2before\ word2after word3
みたいな行を読み込んで、
"word1" と "word2before\ word2after" と "word3" の
3つに分けたいのです。

読み込むファイルのほうでは、スペースを含む単語は \ を使って書いてあります。
また、行ごとに単語数が変わります。
fscanf で %s で読み込んで、strlen と strcmp 使って、最後が \ だったら、
strcat で次の単語とつなげるって方法と、
fgetc で一文字ずつ読み込んで \ と スペース で判定する方法は思い浮かんだのですが、
どちらも効率が悪いような気がして。
なにか便利な関数があったら教えてください。

241 :デフォルトの名無しさん:03/08/11 17:43
>>240
strtok

242 :240:03/08/11 17:46
>>241
レスありがとうございました。
調べて使ってみます。

243 :デフォルトの名無しさん:03/08/11 17:51
★オナニー共和国です★ ★貴方の見たい娘がイッパイ(^0^)★無修正★
http://endou.kir.jp/akira/linkvp.html

244 :デフォルトの名無しさん:03/08/11 17:52
>>241
確か状態を保持するから再入不可能じゃなかったっけ?その関数。

245 :デフォルトの名無しさん:03/08/11 18:23
>>244
そだよ。
スレッドで使うときは注意。


246 :232:03/08/11 19:13
>>233>>239
の人レスありがとうございます。
今から試してみます

247 :デフォルトの名無しさん:03/08/11 19:57
先生

コンテキストって何ですか?

248 :デフォルトの名無しさん:03/08/11 19:59
>>247
文脈

249 :220, 222, 224:03/08/11 20:02
Thanks >>225, >>226, >>230
INCLUDED_とかつけるのは面倒なので、
"ヘッダファイル名を大文字にして.を_にする"でいこうと思います。
http://www.02.246.ne.jp/~torutk/cxx/file/includeguard.html
この辺を見ました。
他にも世の中にはINCLUDED_大文字, 大文字_INCLUDED, INC_大文字, USE_大文字
とかいろいろあるみたいです。

250 :デフォルトの名無しさん:03/08/11 21:57
1000/4

251 :デフォルトの名無しさん:03/08/11 22:00
「俺が処理系だ」と十回唱えれば先頭に_を使ってもよい

252 :デフォルトの名無しさん:03/08/11 22:27
gccとcygwinのDLとインストールはしたのですが、
ここから何をすれば良いのでしょうか?
メモ帳とかでソース書いて.cにしてコンパイルして.exeにする(?)と書いてあったのですが、
コンパイルってどうやるんですか?
cygwinを起動して出てくるウィンドウで何かを入力するのでしょうか?

以前はHSPを使っていたので、あの使いやすさに慣れたせいか
C言語を前に早くも苦戦中です。
どなたか詳しく教えてください。おねがいします。

253 :デフォルトの名無しさん:03/08/11 22:38
移植性を考えなくてよいなら、識別子をアンダースコアで初めてもよい。
コンパイラのバージョンが上がってコンパイルできなくなっても泣かない。


254 :デフォルトの名無しさん:03/08/11 22:43
>252
gcc ファイル名

255 :デフォルトの名無しさん:03/08/11 22:48
>252
初心者なら MinGW の方がいいかもね。

256 :デフォルトの名無しさん:03/08/11 23:15
インクルードガードのdefineはランダムな文字列を含ませるのが鉄則、でもない

257 :デフォルトの名無しさん:03/08/12 00:30
>>232 戻り値 hoge(int x){x=x+100; return x;} って関数があったとする。

実際に関数を使うときには、hoge(a) とか書く。
a=1 だとして hoge(a) だと、a+100=1+100=101 だから、
hoge(a) って文字は、101 って文字に置き換えられる。

int b; b=hoge(a)+100; ってあったら、b=101+100; になる。
この場合 hoge(a) は 整数として扱うべき値だから、
int hoge(int x){x=x+100; return x;} って宣言しておく。

もし hoge が char hoge(...){.....} で宣言されてたら、
b=hoge(a)+100; は、 b= ひゃくいち + 100; みたいになって計算できない。

逆に、fprintf(stdout,"%c\n",hoge(a)); って使おうとしてるとする。
ここでは、hoge(a) は %c で指定してあるから、文字じゃないとだめ。
hoge(...){....}が char じゃなくて int で宣言してあったりすると、おかしくなる。

そんな感じで、その関数を使う場所に応じた戻り値の型で宣言する。
よく int main(){ ..... retunr 0;} ってなってるのは、
アプリが、正常に終了したら 0 、異常終了したら 1 やそれ以外の値(エラーコード)を返せみたいな
OS(?) のルールとかがあるから、実行した結果が 0 になるように return 0; ってなってることが多い。
                  まちがってたら、突っ込みよろしく。

258 :デフォルトの名無しさん:03/08/12 00:41
>>257
> hoge(a) って文字は、101 って文字に置き換えられる。
釣?


259 :デフォルトの名無しさん:03/08/12 00:43
>>258
インライン関数のことを言いたいんじゃないかな(なわけねえ)

260 :デフォルトの名無しさん:03/08/12 00:43
>>258
Yeah.

261 :デフォルトの名無しさん:03/08/12 00:46
>>252
コマンドとかがわからないなら、
cygwin のアイコンで起動して、出てきたウィンドウ(bash) で
mkdir C
cd C
start .
って入力。たぶん、エクスプローラーかなにかが C ってフォルダー開いてくれるから、
そこに、 hogehoge.c ってのをメモ帳とかそのほかのエディターで作る。
つくったら、cygwin の bash で、gcc hogehoge.c ってやる。
bash で ./a.exe で実行。
exit で cygwin の bash を終了。
次回からは、同じフォルダーに hoge2.c とか作って、
bash 起動して、 cd C やったあとで、 gcc hoge2.c とかやる。

とりあえず、mkdir と cd くらいの基本的なコマンドの意味を知りましょう。
で、それから gcc -o hoge.exe hoge.c とか gcc の使いかたも調べましょう。

262 :デフォルトの名無しさん:03/08/12 09:08
>>261
UNIXの部屋と言うページにコマンド(?)の一覧が載っていて、
そこを見て大体のコマンドの意味は分かりました。

しかし、言われた通りにcd CとやってみたらPC名などの横に/Cと出てきたのですが、
次にmkdir Cと入れるとcannot create directory `C':File exists
次にstart .と入れても「command not found」
といわれてしまい何もおきません。

何かやり方が間違っているのでしょうか?
使っているPCはXPでgcc-3.3.1です。

263 :デフォルトの名無しさん:03/08/12 09:18
gccの-c-g-O-oなどは、cygwinを起動して出てくるウィンドウで入力すれば良いんでしょうか?
その際にgccの置かれているフォルダの設定などは必要ですか?
hogehoge.cと同じフォルダに置いておくのかな。

C言語の講座ページはいくつか読みましたが、
一番の基礎から解説してくれてるページはなかなか無いですね。
基本的な構造や役割からしていまいち分かってない感じです・・
使って見たら理解できると思うのですが。

264 :デフォルトの名無しさん:03/08/12 09:58
早く夏休み終わらないかなあ。


265 :232:03/08/12 11:02
>>257
ありがとうございました。よくわかりました!
intとかの戻り値の選択のしかたはわかりました。でも、
返り値のいらない void は引数のところは何でもいいんですか?

またまた質問ですみません。

266 :デフォルトの名無しさん:03/08/12 11:08
>>262
>何かやり方が間違っているのでしょうか?
ここで訊く事が間違っている、という事に
一刻も早く気付くべし。

267 :デフォルトの名無しさん:03/08/12 11:58
ここってC言語の質問スレじゃないんですか?

268 :デフォルトの名無しさん:03/08/12 12:06
     ///////
    ///////____________
    ///////  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
   ///////              (~) チリンチリン
   ///////              ノ,,
  ///////     ∧_∧         / ̄ ̄ ̄ ̄ ̄ ̄
  ///////     ( ´∀`)( 厨 ) )) <  夏だなあ〜
 ///////      (つ へへ つ      \______
///////   //△ ヽλ  ) ) 旦
//////  l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
/////    ̄| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| .| ̄
////     ^^^          ^^^

         2chの夏。厨房の夏。

269 :デフォルトの名無しさん:03/08/12 12:08
>大体のコマンドの意味は分かりました。
わかってねーし(藁

270 :デフォルトの名無しさん:03/08/12 12:15
cygwinの画面でpwdと打つとパスが出てくると思う。
そのパスはcygwin.batがあるパスの中にあると思う。
("****\cygwin\home\***"こんな感じ)
そのパスに ”***.c” を置いて gcc ***.c を実行。
そのあとは >261 を見れ。
尚、これ以上質問があれば下記等へ移動せよ。
ttp://pc2.2ch.net/test/read.cgi/tech/1059041347/
ttp://pc2.2ch.net/test/read.cgi/tech/1054980706/

271 :デフォルトの名無しさん:03/08/12 12:33
2ch内リンクでもhを抜いている馬鹿

272 :デフォルトの名無しさん:03/08/12 12:36
>271
一応 > と >> の効果の違いぐらいはありますが・・・

273 :デフォルトの名無しさん:03/08/12 12:37
>>272
???

274 :デフォルトの名無しさん:03/08/12 12:38
ああ、リンクは2chに高負荷をかけるとでも思っているのか。

275 :デフォルトの名無しさん:03/08/12 12:46
c言語やりたいだけなら
わざわざcygwin入れる必要ないべ?

276 :デフォルトの名無しさん:03/08/12 12:50
>>275
gccなら要るだろうけど、cygwin要らないコンパイラは色々あるね。

277 :デフォルトの名無しさん:03/08/12 12:57
>>274
そんな事すら指摘されないと分からんとは、禿だな

278 :デフォルトの名無しさん:03/08/12 13:01
>276
1にこうあるから順番にやってみたんじゃないかな?
 【Win32用の開発環境のみ。】
 gcc-cygwin
 gcc-mingw
順番入れ替えたほうが良くねぇかな。

>277
そう思えば > 使ってる香具師全員に指摘して回るんだな。

279 :277:03/08/12 13:03
俺は274にレスしてるんだが、何が言いたい?

280 :デフォルトの名無しさん:03/08/12 13:10
>279
おっと流れを勘違いしたようね。これは失礼。

281 :デフォルトの名無しさん:03/08/12 13:17
「2chに高負荷をかける」ってのが笑えるな
お前らも連呼してみろよ
3回目で吹き出すぞ

282 :デフォルトの名無しさん:03/08/12 13:20
データはちょっとだけ小さくなるぞ。
たぶん>>270じゃ>>232には移動できないだろうけどな。

283 :デフォルトの名無しさん:03/08/12 13:25
顔真っ赤です

284 :デフォルトの名無しさん:03/08/12 13:30


285 :デフォルトの名無しさん:03/08/12 13:52
「ミニロトを1500個、ダブりなしで選択する」っての
自分の頭じゃいちいち照合するか、ソートしてから照合するかしか
思いつかないんですが、もっとスマートな方法ってありますか?

ちなみに void main(void){ } しか使ったことありません。

286 :デフォルトの名無しさん:03/08/12 13:54
↑あ、ミニロトのルールは
・1-31の数字を5つ
・数字のダブりはなし
です。

287 :デフォルトの名無しさん:03/08/12 13:59
>>285
Cの話じゃない。

ちなみに void main(void){ } は使ったことありません。

288 :デフォルトの名無しさん:03/08/12 15:21
#ifdef
を使うときに
#ifdef A || B || C
としてもOKでしょうか。

289 :デフォルトの名無しさん:03/08/12 15:34
>>288
そんなときのためにdefined()があるわけですよ。

290 :デフォルトの名無しさん:03/08/12 16:44
>>289
なるほど
#ifdef A || B || C
の書式は文法的に間違いってことですね。大人しく #if defined(A) || defined(B) にするのがイイのか

291 :デフォルトの名無しさん:03/08/12 20:01
サイズを小さくするか。ならメール欄も空にしろよな。

292 :ビル・ジョブス:03/08/12 20:58
>>290
ちと話は違うけどプリプロセッサ出力を見ると楽しいよ。(そんなオレは変?)
ちとC言語の勉強になったりもする。
もう15年くらい昔だけどC言語の勉強してた頃「え!こんな書き方許されるのか!」って
よく驚かされたよ。

293 :デフォルトの名無しさん:03/08/13 10:55
どっかの人大杉サーバならともかく、過疎板で負荷など気にする必要はない。
こういう奴ってprofとか使わずに闇雲に変な最適化をして
全然可読性のない糞ソースをひねりだすんだろうな。

294 :デフォルトの名無しさん:03/08/13 11:25
>>293
>変な最適化
最適じゃねぇじゃん。

295 :デフォルトの名無しさん:03/08/13 15:28
>>293
うーん…、釣り?
そんなレスしてる漏前様も「こういう奴」に入ると思われ。

296 :デフォルトの名無しさん:03/08/13 21:23
何時までもネチネチ粘着してるのは何だろうね
変だね、キモイね、エンガチョだね

297 :デフォルトの名無しさん:03/08/13 22:09
どなたか教えていただきたい事があります。
特に変わった事はせずに、ふつうにmallocして、reallocしてという感じ
で書いたプログラム(いくつかポインタがあってすべてreallocしたりする
わけではない)を書いて、free関数で解放するのですが、なぜかmalloc
オアreallocで確保するメモリが多いか少ないときにFreeを使う所で
エラーが出てるみたいなんです。(いつもでるわけではない)これは
なぜでしょうか?メモリ関係で何か注意しないといけない事を忘れてる
とかでしょうか?ご教授ください。
 あと、やっぱりプログラムが終わればメモリは勝手に解放されるわけ
ではないんですよね?さっきからそのせいでパソコンが落ちまくる(泣)。

298 :デフォルトの名無しさん:03/08/13 22:12
>>297
まともなOSであれば勝手に解放するぞ

299 :デフォルトの名無しさん:03/08/13 22:15
>>298
Meなんですけど、解放しないようなんですよね〜
メモリのお掃除屋さんのグラフがどんどん減ってくんですよ。
(そのアプリを起動、終了を繰り返すと)


300 :デフォルトの名無しさん:03/08/13 22:18
free()でエラーが出るのは、どっかでミスって二重に開放しようとしてるのでは?

301 :デフォルトの名無しさん:03/08/13 22:22
>>300
そう思うんですけど、出る時と出ない時があるのが謎なんですよ。
いつも出るってんならまだ探しようもあるんですが・・・・
Strcpyはアドレス関係ないですよね?


302 :デフォルトの名無しさん:03/08/13 22:52
>>297
ageろよ。

そのコードを貼ってみて。

303 :デフォルトの名無しさん:03/08/13 23:22
>>306
邪魔だし、うまく書き込めないので、これを見てください。
http://www12.ocn.ne.jp/~mygrid/souse.txt

304 :デフォルトの名無しさん:03/08/13 23:25
>>301
アフォ。
「未定義」とは何か、
3600000000000nsほど考えてこい。

305 :デフォルトの名無しさん:03/08/13 23:27
コマンドライン引数を与えていないだけだったりして

306 :デフォルトの名無しさん:03/08/13 23:29
sizeof(char)って・・・

307 :デフォルトの名無しさん:03/08/13 23:29
>>304
どういう意味でしょうか?「未定義」ってのググッってみた方がよいのでしょうか?



308 :デフォルトの名無しさん:03/08/13 23:30
>>306
ま、まずいんですか?(汗)

309 :デフォルトの名無しさん:03/08/13 23:31
>>303
この問題とは関係ないだろうが、mallocに失敗してもstrcpyしているがいいのか?

310 :デフォルトの名無しさん:03/08/13 23:32
規格に従ういかなる処理系においても sizeof(char)==1


311 :デフォルトの名無しさん:03/08/13 23:32
>>308
sizeof(char)==1

312 :デフォルトの名無しさん:03/08/13 23:34
>>303
sprintfには%lfなんかない。doubleは%f

313 :デフォルトの名無しさん:03/08/13 23:35
sizeof(アチャー)

314 :デフォルトの名無しさん:03/08/13 23:36
>>311
なるほど、使う意味がないと。こりゃ勉強になりました。一応
やっといた方がいいかなと思ってつけといたんですけど。
いらないんですね。


315 :デフォルトの名無しさん:03/08/13 23:37
>いらないんですね。
そうでもない

316 :デフォルトの名無しさん:03/08/13 23:37
VBスレでみかけたあれなのかなぁ。スペルミスとかmemmoveを使えばよさそうなところとか似ている。

317 :デフォルトの名無しさん:03/08/13 23:39
VC++.NETはsizeof(char)==2だがな

318 :デフォルトの名無しさん:03/08/13 23:41
>>317
まじで!?


319 :316:03/08/13 23:43
こういうこと

if(str1[0] == '-'&&str1[1]=='-'){
for(x=2;x<=strlen(str1);x++){
str1[x-2] = str1[x];
}
}
if(str2[0] == '-'&&str2[1]=='-'){
for(x=2;x<=strlen(str2);x++){
str2[x-2] = str2[x];
}
}


if(str1[0] == '-'&&str1[1]=='-'){
memmove(str1,str1+2,strlen(str1+2)+1);
}
if(str2[0] == '-'&&str2[1]=='-'){
memmove(str2,str2+2,strlen(str2+2)+1);
}

320 :デフォルトの名無しさん:03/08/13 23:43
>VC++.NETはsizeof(char)==2だがな
その時点で、スレ違いだな

321 :デフォルトの名無しさん:03/08/13 23:43
char
char キーワードを使用して、次の表に示された範囲の Unicode 文字を宣言します。Unicode 文字は、世界中の文字言語のほとんどを 16 ビット文字で表します。



322 :デフォルトの名無しさん:03/08/13 23:45
とりあえず。プログラムに直接の問題は無さそうですか?あと、今思いついた
んですけど、中で呼び出しているdoublemultiplyって関数の戻り値を解放
してないってのはなんか関係ありますかね。そっちの関数もreturn文で
動的に領域を確保したポインタ(言葉の使い方がおかしいかも)を返して
るんですけど。

323 :デフォルトの名無しさん:03/08/13 23:47
>>322
freeで落ちるらしいが、具体的にどのfreeで落ちるの?mainの中のfree?

324 :デフォルトの名無しさん:03/08/13 23:48
>>322
それはOK
標準じゃないけどstrdupなんてまさにそういう関数だし。

325 :デフォルトの名無しさん:03/08/13 23:49
>>323
いや、関数の中で落ちちゃってるっぽいです。で、freeを全部取り除いてみたら
一応エラーは起こらなくなったみたいなんですけど、それもどうかと思い

326 :デフォルトの名無しさん:03/08/13 23:52
freeに渡す値がちゃんとmallocで得た値なのか、
途中で書き換えていないか、二回freeに渡していないかを確認しとけ。


327 :デフォルトの名無しさん:03/08/13 23:55
>>326
後者は何度も調べました。前者はつまり動的に確保したのではないアドレスを解放していないか?という事でしょうか?

328 :デフォルトの名無しさん:03/08/13 23:55
if(str2==NULL||str2==NULL){

↑これ記述ミスだろ

329 :デフォルトの名無しさん:03/08/13 23:56
>>327
そういうこと。
たとえp=malloc(4);とやっていてもfreeするまえにp="string";とかやったらダメ。

330 :デフォルトの名無しさん:03/08/13 23:58
>>328
そうみたいですね。すいません。

331 :デフォルトの名無しさん:03/08/14 00:00
>>329
strcpy(p,"はなもげらー");
とか
strcpy(p,str1);
とかは大丈夫ですよね?


332 :309:03/08/14 00:00
スルーされとる・・・

↓これのことなんだけど。scanfしているのもよくわからない。
str1=(char *)malloc((strlen(strone)+5)*sizeof(char));
str2=(char *)malloc((strlen(strtwo)+5)*sizeof(char));
if(str2==NULL||str2==NULL){
printf("メモリが足りません");
scanf("%d",&work);
}
strcpy(str1,strone);
strcpy(str2,strtwo);

333 :デフォルトの名無しさん:03/08/14 00:01
>>331

バッファからはみ出んようにな。

334 :デフォルトの名無しさん:03/08/14 00:01
>>327
一応確認するけど、関数内でmallocで得た値を入れるために、ポインタ変数を引数に渡してないか?
その場合、「ポインタのポインタ」を使うのは知ってるよね?

335 :デフォルトの名無しさん:03/08/14 00:04
>>334
申し訳ありません。どういう意味でしょうか?



336 :デフォルトの名無しさん:03/08/14 00:05
インデントがめちゃくちゃでブロックの範囲がわからん。

337 :デフォルトの名無しさん:03/08/14 00:06
>>332
すいません見逃していました。確保失敗したらプログラムに止まっててもらおうと
Scanfは入れときました。
あと、strcpyは確保されなかった場合は、ストップするので、大丈夫かなと


338 :デフォルトの名無しさん:03/08/14 00:07
>>337
なんと!
そういうときはNULLを返して関数を抜けるのがいいよ。

339 :デフォルトの名無しさん:03/08/14 00:09
>>338
そうなんですけど、一応まだテスト段階なので、とりあえず、メモリ確保の所で止まってる
か調べるためにScanfを使ってみました。
ちゃんとできたらそうしてみます。


340 :デフォルトの名無しさん:03/08/14 00:10
VC使ってるならここ読んどけ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/_core_solving_buffer_overwrites_and_memory_leaks.asp

それからstr1の確保に成功してstr2の確保に失敗した場合はstr1を開放しとけ

341 :デフォルトの名無しさん:03/08/14 00:11
以前、mallocで確保する量を間違えてバッファあふれを起こしたけど、
freeでおちたために原因を突き止めるのに時間がかかったことがある。

342 :デフォルトの名無しさん:03/08/14 00:14
>>341
原因は、確保する量が多すぎたって事だったんですか?

343 :デフォルトの名無しさん:03/08/14 00:17
>>342
違う。少なかったの。

344 :デフォルトの名無しさん:03/08/14 00:18
>>321
だまされた。 C#じゃん。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfChar_PG.asp


345 :デフォルトの名無しさん:03/08/14 00:23
>>335
こんな書き方をしてたら間違いってことなんだが。

void kakuho(char *s){
 s = (char *)malloc(256);
}

int main(){
 char *a;
 kakuho(a);
 /* a をつかう*/
 free(a);
}

346 :デフォルトの名無しさん:03/08/14 00:43
>>345
これは大丈夫だと思います

347 :デフォルトの名無しさん:03/08/14 01:52
>>346
よく意味が分らないよ。
その間違いは、していないって意味?
それとも、345は間違っていないって意味?

因みに345は間違いだよ。

348 :デフォルトの名無しさん:03/08/14 02:12
>>347
346じゃないが>>345のようなミスはなかった。

349 :デフォルトの名無しさん:03/08/14 10:07
>>129-145
rand()の結果に周期性があるとしても、乱数なんだから構わないんじゃない?って思うのは素人考え?
N=100ぐらいで各数値の出現頻度が1%ずつになるようなrand()って、むしろランダムじゃないように思えてしまう。

350 :303:03/08/14 10:32
あの、ここでお世話になった者なんですが、VCでのDLLの作り方がよく
わからず、困っております。どなたかわかりやすく教えてください。
それか、ソースを晒すのでDLLにしてください。おねがいします。

351 :デフォルトの名無しさん:03/08/14 10:33
>>350
>>1
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)

352 :デフォルトの名無しさん:03/08/14 10:36
良い乱数・悪い乱数 http://www001.upp.so-net.ne.jp/isaku/rand.html

353 :デフォルトの名無しさん:03/08/14 17:28
あの、私は一応VB使いなんですけど、計算を行う部分がVBでは遅過ぎる
ので、C言語で書いたプログラムをDLL代わりに呼び出して、結果をファイルを
介して取り込むという手法のプログラムを書いています。
で、呼んでは、消え、呼んでは、消えをものすごい勢いで繰り返してるんですが
そうすると、どんどんメモリを食っちゃってるみたいなんです。また、動作が不安定
になって行っているようなんです。
やはり、こういう手法は避けた方が良いのでしょうか?

354 :デフォルトの名無しさん:03/08/14 17:29
>>353
何が消えるんだかさっぱりです。

355 :デフォルトの名無しさん:03/08/14 17:35
>>353
C言語側かVBとの通信部分にメモリリークがあるんでしょうな。

356 :デフォルトの名無しさん:03/08/14 18:49
&より<<の方が優先順位が高いとφ(..)カキカキ

357 :デフォルトの名無しさん:03/08/14 19:18
>>354
コマンドライン引数を与えてshellを使いDOSプロンプトの中でCのプログラム
を走らせて、そして、それは計算結果をファイルに書き込み終了します。
その後、VB側のアプリはファイルの内容を監視してて変更されると読み込んで、
という風にDLLもどきとして利用しています。分かりにくかったのなら申し訳あり
ませんでした。


358 :デフォルトの名無しさん:03/08/14 19:19
>>355
通信と言っても、コマンドライン引数を渡す所ぐらいしか実質通信はして
ないんですが・・・どこが原因なんでしょう?


359 :デフォルトの名無しさん:03/08/14 19:21
>>358
ちょっと頭使えばいいと思うがC言語側。

360 :厨房:03/08/14 20:27
みなさん、厨房ですよ。

361 :デフォルトの名無しさん:03/08/14 20:55
>>359
どう言う事ですか?何か工夫すればメモリリークは避けられるの
でしょうか?



362 :デフォルトの名無しさん:03/08/14 20:59
>>361
本当にDLLにすりゃ済むだろ

363 :デフォルトの名無しさん:03/08/14 21:16
>>362
KOB

364 :デフォルトの名無しさん:03/08/14 21:21
だからスレ違いだって。

365 :C初心者:03/08/14 21:23
Cで書かれたソースコードが置いてある日本語サイトを知りませんか?

366 :デフォルトの名無しさん:03/08/14 21:26
>>365
http://www.apache.jp/dist/httpd/

367 :デフォルトの名無しさん:03/08/14 21:30
サーバが日本なだけで言語は英語だな(鬱
http://www.apache.jp/


368 :デフォルトの名無しさん:03/08/14 22:03
このスレは、ものすご〜〜〜い初心者っていうか
昨日からCの勉強を始めたような人間が質問してもいいスレですか?


369 :>>2ちゃんねらーの皆さん :03/08/14 22:04
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)

(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)

370 :デフォルトの名無しさん:03/08/14 22:05
>>368
>>1を守れば

371 :デフォルトの名無しさん:03/08/14 22:17
>>362
トライはしたんですけど、文字を渡して、文字を返してもらう
ってのが異様に難しくて、あきらめてしまった次第なんです。
(数値は結構簡単に行けるのに・・・・・)
ちなみにVCで

372 :デフォルトの名無しさん:03/08/14 22:18
>>371
その前にC側のクソコードでバッグしる!

373 :デフォルトの名無しさん:03/08/14 22:23
>>372
コードが原因なんでしょうか?アプリを起動すると、それを次に起動
する時のためにメモリに残して置くとか聞いた事があるんですけど、
そういう関係なのでは?と個人的には考えてるんです。


374 :デフォルトの名無しさん:03/08/14 22:27
>>373
次回起動される保証がどこにもない。
もしそうだとしても、起動の度にその謎の領域を蓄積させる理由がない。

375 :257:03/08/14 22:35
>>265
返り値のない関数でも、引数が必要なことはある。必要ないこともある。
なんでもいいわけではない。それはどんな関数にするか次第。
返り値の有無にかかわらず、その関数が、どんなものを利用するかとかでかわってきます。

引数がどんなものなのかちゃんと調べたほうがいいです。
スコープとかリンケージとかいった言葉も調べた方がいいのかもしれない。

それと、実際にプログラム書いてコンパイルしてみるのも必要。
3回くらい足し算するだけとかの単純なプログラムでも、
返り値のある関数でつくったり、返り値のない関数でつくったり
なんとおりか作ってみると、
どんな関数をつくって、どんな引数が必要かとかわかる。

 前回書き込んでいろいろつっこみがはいったように、
 私は、ちゃんとわかってると言えるレベルではないし、
 このスレにいつもきてるわけじゃないのであてになりません。(笑)

376 :デフォルトの名無しさん:03/08/14 22:39
>>374
じゃあ、やっぱりFREEし忘れとかですかね?でも、アプリが終われば
FREEしてなくても解放されるものと聞きましたが、
うーん、他に思い当たらないしな〜


377 :デフォルトの名無しさん:03/08/14 22:54
>>376
どこが悪いのかの切り分けテストしろよ。いいかげん。
int main(){return 0;}
だけのプログラム作って動かすとかさ。

378 :C初心者:03/08/15 00:02
日本語のサイトは無いんですか?

379 :デフォルトの名無しさん:03/08/15 00:07
>>378
本屋いくなり図書館いくなりすれば?

380 :C初心者:03/08/15 00:16
図書館にはその手の本が無いんです。
本も買いたいのですが金銭面からなかなか厳しくて。
何処かありませんか?

381 :デフォルトの名無しさん:03/08/15 00:19
ブックオフ
メチャメチャ安い

382 :デフォルトの名無しさん:03/08/15 00:20
>>380
http://www.google.co.kr/

383 :デフォルトの名無しさん:03/08/15 01:37
>>375
>>257はネタじゃなかったのか?
よくわかってないなら、てけとーなこと書くのを止めれ。

384 :デフォルトの名無しさん:03/08/15 01:37
今がチャンス!「誰も知らない」スーパービジネス

HPを宣伝するだけの誰でもできる簡単なお仕事です。
間接収入もあるので安定した収入が望めます。

2chを見てようがゲームしてようが、ほったらかしで次から次へと入金される
その喜びを是非味わってください。
通帳見るたびにほっぺたを落とさないよう注意!!

詳しくはコチラ
http://www.mahou.tv/muchey/partner.htm

385 :デフォルトの名無しさん:03/08/15 01:56
>>384
マルチじゃんコレ


386 :デフォルトの名無しさん:03/08/15 02:00
>>377
やはり、ソース側の問題ではないようです。おっしゃっているプログラムの
int main(){return 0;} を
0.5秒ごとに動かしてみましたが、やはり、メモリはどんどん減っていってしま
っています。また、mallocで確保した領域を開放しないという内容にしたところ、
減るペースは増えています。やはり、プログラムが終わっても解放されないで
はないでしょうか?
ついでに質問ですが、DLLが終了する時は、プログラムが終わってメモリが
解放されるのと同じようにFREEしなくても解放されるという事になっている
のでしょうか?それとも、関数扱いだから、解放されないのでしょうか?


387 :デフォルトの名無しさん:03/08/15 02:03
いい加減、スレ違いってことに気づかない限り問題は解決しないと思われ。

388 :デフォルトの名無しさん:03/08/15 02:15
たしかに、すでにVBの問題だな。

389 :デフォルトの名無しさん:03/08/15 02:18
>>386は放置で

390 :デフォルトの名無しさん:03/08/15 02:49
VB厨逝ってよしでFA?

391 :デフォルトの名無しさん:03/08/15 10:10
WindowsXPでGCCって動くんですか?

392 :デフォルトの名無しさん:03/08/15 10:13
>>391
ええ。

393 :デフォルトの名無しさん:03/08/15 10:13
>>391
http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=WindowsXP+GCC+%93%AE%82%AD&lr=

394 :デフォルトの名無しさん:03/08/15 10:14
うぁぁぁぁぁぁぁあぁああ
もうどこをどうクリックすればGCC手に入るんだよ
誰か教えてください

395 :デフォルトの名無しさん:03/08/15 10:16
>>394
http://www.cygwin.com/setup.exe
開発ツールも含めてセットアップ

396 :デフォルトの名無しさん:03/08/15 10:17
>>383
じゃあ よくわかってるおまえがちゃんとした答え書いてやれ。
答えられるなら。(笑)
アホな答えとそれを書き込んだ奴にたいする罵倒しかレスつかないなら、
このスレ無意味だろ。(笑)

397 :デフォルトの名無しさん:03/08/15 10:20
>>396
そうですよ、基本位てめぇで勉強しろと。

398 :デフォルトの名無しさん:03/08/15 10:27
教えてほしいなら煽らずに素直にそう書けばいいのに。(笑)>>375=>>396

399 :デフォルトの名無しさん:03/08/15 10:32
>>275はマジなの?
> b=hoge(a)+100; は、 b= ひゃくいち + 100; みたいになって計算できない。
この辺なんて釣りにしか思えないから、みんな放置してると思ってた。

400 :399:03/08/15 10:34
違った。
>>257だった

401 :デフォルトの名無しさん:03/08/15 10:35
>>399
>>275は正しい。

402 :デフォルトの名無しさん:03/08/15 10:38
>>399
VBとかなら・・・でも、charだしなぁ・・・。

403 :デフォルトの名無しさん:03/08/15 10:39
char *hoge(...){.....} と書きたかったんだろうか。
それでも警告は出る(intにポインタを代入)けど一応コンパイルは通る。

404 :デフォルトの名無しさん:03/08/15 10:43
>>403
まぁ、結局のところint相当だからなぁ。
どうやっても「ひゃくいち」にはならんけれど。

405 :デフォルトの名無しさん:03/08/15 10:45
>>232
今更だけど、文字列を加工する関数で特に戻り値を必要とせず、一切エラーも起きない場合は加工後の文字列の先頭アドレスを返すようにしている。
別にvoidにしてもいいんだけど、標準関数にならってね(strcpyとかstrcatとか)。

406 :デフォルトの名無しさん:03/08/15 11:11
>>396
> アホな答えとそれを書き込んだ奴にたいする罵倒しかレスつかないなら、
> このスレ無意味だろ。(笑)

そうだよ。
だからアホな答えは書くなよ。

407 :デフォルトの名無しさん:03/08/15 11:46
あの〜、ファイルからfscanf(fp1,"%s",str);
というように文字列を読む時に、書き込まれている文字が”0”だけの時は
文字列として認識されないのでしょうか?改行コードがどうのとかいう関係?

408 :デフォルトの名無しさん:03/08/15 11:54
そんなはずないけど・・・
空白なら影響があるけど。

ところで、文字列を読み込むならfgetsを使った方がいいよ。

409 :408:03/08/15 11:54
>>407へのレス

410 :407:03/08/15 11:59
>>408
サンキューです。今試してみた所、0でもちゃんと読み込めていま
した。プログラムのどっかにバグがあるみたいですね。
fgets使ってみます。(σ・ω・)σ Fゲッツ!!


411 :デフォルトの名無しさん:03/08/15 13:20
大体質問しておいてちゃんと回答があっても、
まともに感謝もできない香具師ばかりだと回答する気にもならないよね。

412 :デフォルトの名無しさん:03/08/15 13:21
ゲッツなんて言われてもどう対応したらいいのかわからんよな。

413 :デフォルトの名無しさん:03/08/15 13:52
>>411
おまけに煽りはやたら多いしな

414 :デフォルトの名無しさん:03/08/15 14:35
ここをどこだと思っているんだ。
ましてや夏休みだぞ。

415 :デフォルトの名無しさん:03/08/15 15:00
>>412
> 回答する気にもならないよね。
じゃあするなよ。スルーしろ。

416 :山崎 渉:03/08/15 15:15
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

417 :デフォルトの名無しさん:03/08/15 15:16
>>415
同意。恩着せがましいったらありゃしない。

418 :デフォルトの名無しさん:03/08/15 16:21
質問スレがこんなに下にいちゃいかんだろ。

419 :デフォルトの名無しさん:03/08/15 18:43
次の質問どぞー

420 :408:03/08/15 18:55
>>415
俺は>>411-412じゃないぞ。

421 :デフォルトの名無しさん:03/08/15 21:52
恩着せがましいのもuzeeが
無礼者も同じくらいuzee

どっちも氏ね

422 :232:03/08/15 23:08
>257
>405
レスありがとうございます。とりあえず色々な関数作ってみて
試してみます。
レスがないからもうあきらめかけていたが
ちゃんと見てくれる人もいるんだ・゚・(ノД`)・゚・
まだ俺はC初心者だから誰が釣りとかわからないけどな・・・
まあ、レスありがとうございます


423 :デフォルトの名無しさん:03/08/16 10:36
「ポインタのポインタ」があるんなら、「ポインタのポインタのポインタ」、更には
「ポインタのポインタのポインタのポインタ」とかもあるんかいな。
もしあるのなら、「ポインタのポインタ」が、「実体の参照まで2段階ある」という
言葉を使うとするなら、一体何段階までのポインタがあるんかいな。


424 :デフォルトの名無しさん:03/08/16 10:45
>>423
もちろんあります。

ヒープがあふれるか再帰的に参照しているならスタックがあふれるかまでは行けるんじゃないの?

425 :デフォルトの名無しさん:03/08/16 11:00
>>424
その前にコンパイルするときの文の文字数制限にひっかかってしまうかも。
VC6 だと 1023 文字くらいだった気がする。

426 :デフォルトの名無しさん:03/08/16 11:53
こそこそとやってんじゃねーよ。
age!

427 :デフォルトの名無しさん:03/08/16 11:57
>>423
無限

428 :デフォルトの名無しさん:03/08/16 12:03
なわけない。

429 :デフォルトの名無しさん:03/08/16 12:07
脳内なら或いは

430 :デフォルトの名無しさん:03/08/16 12:08
>>423
無限 ( ただし, 有限 )

431 :デフォルトの名無しさん:03/08/16 12:18
>>430
同意。無限とか言ってる奴はチューリングマシンもってこいと。

432 :デフォルトの名無しさん:03/08/16 12:21
Theoretically unlimited.
Limited by implementation.


433 :デフォルトの名無しさん:03/08/16 12:25
infiniteの方が好き

434 :デフォルトの名無しさん:03/08/16 12:32
四重以上はやめてね。ループも。

435 :デフォルトの名無しさん:03/08/16 12:35
>>434
謎の規約を持ち出して・・・。

436 :デフォルトの名無しさん:03/08/16 12:38
>>434
もしリストを先頭からたどる羽目になったときは
必然ですね。

437 :436:03/08/16 12:40
「何処まで続くか判らないポインタのリンクが必然ですね」、だ。

438 :デフォルトの名無しさん:03/08/16 13:00
>>436
それはn重とはいわんだろ・・・

439 :デフォルトの名無しさん:03/08/16 13:01
>>438
たどるのに内部で再帰してたりとかじゃないの?


440 :デフォルトの名無しさん:03/08/16 13:36
必然性があれば何重でも

441 :デフォルトの名無しさん:03/08/16 13:38
>>440
今まであった?
四重以上のポインタやループが。

442 :デフォルトの名無しさん:03/08/16 13:41
「四」重ってどっから出てくんの?ワラ

443 :デフォルトの名無しさん:03/08/16 13:42
>>442
>>434

444 :デフォルトの名無しさん:03/08/16 13:43
char c;
char* p = &c;
char** pp = &p;
char*** ppp = &pp;
char**** pppp = &pppp;
char***** ppppp = &ppppp;

*****pppp = 'a';

ループいらないぞ。


445 :デフォルトの名無しさん:03/08/16 13:45
*の数があってねえぞ。



446 :デフォルトの名無しさん:03/08/16 13:46
むしろpの数が

447 :デフォルトの名無しさん:03/08/16 13:46
というか誰がループを必要としていると言った。

448 :デフォルトの名無しさん:03/08/16 13:47
ヌル型のポインタってどういうときに使うんですか?

449 :デフォルトの名無しさん:03/08/16 13:48
>>448
char *s="abcdef";
if(strstr(s,"haxa")==NULL)
printf("みつからなかったよ\n");


450 :449:03/08/16 13:56
ヌル「型」じゃないぞ。

451 :デフォルトの名無しさん:03/08/16 14:00
ぬる「ぽ」だぞ

452 :デフォルトの名無しさん:03/08/16 14:01
  ( ・∀・)   | | ガ「ッ」
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>451
 (_フ彡        /

453 :変な質問者:03/08/16 14:30
Cして7日目な人(7日前にPC初めて触れた)なんだけど、>>232の質問に対する答えって、
どれも検討違いじゃないかな?って思ってしまった。
returnについては、後の人のでいいと思う。

戻り値をどうやって決めるかってのは、関数を実行して、その結果どんな値が欲しいのか。
できまるんちゃうかな?
double型の数値が帰ってくるなら、double 関数名(引数) て形にすればいいだけ。
別になんも返さないですよ〜。ソース見やすくするために関数化しただけですし〜
ってなら、戻り値は何も返さないって示すために、void って書く。

これって合ってる?理解を深めるために何人かの人レスお願いしますm(__)m
/* レスに対して発言はしません。 */

454 :デフォルトの名無しさん:03/08/16 14:32
>>453
死ね。

455 :デフォルトの名無しさん:03/08/16 14:33
>>453
死ね嘘つき

456 :デフォルトの名無しさん:03/08/16 14:33
>>453
痛いな・・・

457 :変な質問者:03/08/16 14:34
return void;

458 :デフォルトの名無しさん:03/08/16 14:34
>>453
なぁ、そのプロシージャ(void hoge())でエラーが発生したときってどうする?

459 :デフォルトの名無しさん:03/08/16 14:35
〜日目とか強調するやつよくいるよな。

460 :デフォルトの名無しさん:03/08/16 14:36
7日目で2ch(;´Д`)

461 :デフォルトの名無しさん:03/08/16 14:40
>>453
糞して氏ね

462 :変な質問者:03/08/16 14:41
7日で釣りが大成功
僕って才能あるかも^^;

463 :デフォルトの名無しさん:03/08/16 14:42
おまいらまて








>>453は釣りじゃないか?
みんなレスしすぎだろ(藁

464 :デフォルトの名無しさん:03/08/16 14:46
釣りかどうかなんてどうでもいいんだよ。
>>453
糞して氏ね

465 :デフォルトの名無しさん:03/08/16 14:46
>>462-463
(・∀・)

466 :デフォルトの名無しさん:03/08/16 14:47
大勢で水をまいて東京の気温を下げようなんて、2ちゃんねらーみたいなことするなよ(;´Д`)

467 :デフォルトの名無しさん:03/08/16 14:47
誤爆(;´Д`)

468 :デフォルトの名無しさん:03/08/16 15:04
>>458
exitします


469 :デフォルトの名無しさん:03/08/16 15:46
void uppercase(char *str)
{
for (; *str; str++) {
if (*str >= 'a' && *str <= 'z') {
*str += 32;
}
}
}

main(void)
{
char *str = "rock is dead.";

printf("%s¥n", str);
uppercase(str);
printf("%s¥n", str);
}

2回目のprintf()でBus errorって怒られます。
ヨロシコお願いします。

470 :デフォルトの名無しさん:03/08/16 15:50
文字列リテラルを書き換えないように。

471 :デフォルトの名無しさん:03/08/16 15:57
char str[] = "rock is dead.";


472 :469:03/08/16 16:02
>>470, 471
レス有り難う御座います。

>char str[] = "rock is dead.";
で上手くいきました。

で、ワタクシ間違っておりました。
>*str += 32;
では無く
*str -= 32;
ですた。

文字列定数変更した時の動作はANSI規格では未定義
勉強になりました。

473 :デフォルトの名無しさん:03/08/16 16:27
>>470
文字列リテラルの使い方を間違わないように。

474 :デフォルトの名無しさん:03/08/16 16:47
シーク関数の動作が理解できない。
何でこのプログラムで位置が進むんだろう?

char c;
for( int i=0; i<4; i++ ) {
if( 0==fread( &c, 1, 1, fp ) ) return EOF;
fseek( fp, SEEK_SET, 1 );
cout << c << " ";
}

475 :デフォルトの名無しさん:03/08/16 16:50
>>474
ファイルポインタはファイルの「ここまで読んだ」情報を保持するための物です。

476 :474:03/08/16 16:55
そうなんですか。
5年くらい勘違いしてました。

でも、fseekは何のために存在するんだろう?

477 :デフォルトの名無しさん:03/08/16 16:57
fseek(fp, 1, SEEK_SET); だろ

478 :デフォルトの名無しさん:03/08/16 16:59
>>476
そのコードの中では無意味だね

479 :474:03/08/16 17:05
> fseek(fp, 1, SEEK_SET); だろ
しまった!!!!
気が付かなかった・・・
ようやく光が見えました、ありがとうございます。

480 :デフォルトの名無しさん:03/08/16 19:31
SEEK_SET は 0 。
1 は SEEK_CUR 。
だから、fseek( fp, SEEK_SET, 1 ); は
fseek( fp, 0, SEEK_CUR ); と同じで、
ファイルポインタを移動しない。

481 :デフォルトの名無しさん:03/08/16 19:51
ネタでは真似できない、この天然… 見習わなければ。

482 :デフォルトの名無しさん:03/08/16 20:55
プロトタイプ宣言しても型チェックしかできないからねぇ

483 :デフォルトの名無しさん:03/08/16 22:05

コーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。

http://money.2ch.net/test/read.cgi/haken/1057486349/287

腹立ちました。
みんなでやっつけにいこう。

484 :デフォルトの名無しさん:03/08/16 22:23
( ・_ゝ・)ツマンネ

485 :デフォルトの名無しさん:03/08/17 03:59
>>474
進むどころか
ボクのCコンパイラでは、エラーになりました。

486 :>>2ちゃんねらーの皆さん:03/08/17 04:03
( ´Д`)/< 先生!!こんなのを見つけました。
http://www.hokekyoji.com/
http://www.yakuyoke.or.jp/
http://members.tripod.co.jp/hossyoji/index/
http://www.maap.com/tanjoh-ji/
http://www.honmonji.or.jp/
http://www.maap.com/tanjoh-ji/
http://www.kuonji.jp/
http://www.butsuzou.com/jiten/sanmen.html
http://www.butsuzou.com/list1/sanmen2.html
http://www.butsuzou.com/list1/sanmen3.html
http://www.butsuzou.com/keitai/sanmen-kz.html

487 :デフォルトの名無しさん:03/08/17 04:12
>>485
システムによってはSEEK_SETが0で、SEEK_CURが1とは限らないから
エラーになってもおかしくはない。

488 :デフォルトの名無しさん:03/08/17 04:16
>>487
> cout << c << " ";
> C言語なら俺に聞け! Part 63

489 :デフォルトの名無しさん:03/08/17 13:55
ミキティーが放尿するフラッシュを作りたいのですがどうしたらよいのでしょうか。

490 :デフォルトの名無しさん:03/08/17 14:32
笑ってしまった

491 :デフォルトの名無しさん:03/08/17 14:39
>>489
サブリミナル効果で尿意を催すフラッシュを作って見せる。
ションベンちびるほど恐いのでも可。

492 :◆ebXLcmI5po :03/08/17 16:47
おい 教えろ

漏れのマシンはw2kでcygwin が入っている。
さっきcygwinは最新にアップしたのだが、gccが入っていないんだよ。

どっからかっさらってくればいいんだ?
直リンキボンヌ

493 :デフォルトの名無しさん:03/08/17 16:57
http://www.cygwin.com/setup.exe
でgccクリックすりゃいいだろ

494 :◆ebXLcmI5po :03/08/17 17:21
それがわからんのだよ とホホ


495 :デフォルトの名無しさん:03/08/17 17:23
package selectのall/devel/gcc

496 :_:03/08/17 17:24
  ∧_∧   
 ( ・∀・)/< こんなノみつけたっち♪ 
(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)

497 :デフォルトの名無しさん:03/08/17 18:44
>>494
develって書いてあるとこ

498 :デフォルトの名無しさん:03/08/17 20:42
>495
やっと判ったよ。ありがと。


499 :デフォルトの名無しさん:03/08/17 21:47
デベール! (プださっ

500 :デフォルトの名無しさん:03/08/17 21:59
I'll be back!!

501 :デフォルトの名無しさん:03/08/17 22:17
でんでんデベロン デベロンパ

502 :初心者:03/08/17 22:39
C言語とはいえませんが、
Print文を使用して、標準出力に”自身を出力したいときはどの様に指定
すればよいでしょうか。
Print ”””や”¥””など色々試しているのですがうまくいきません。

503 :デフォルトの名無しさん:03/08/17 22:41
>>502
”はそのままでOKです。
"は\"とします。

504 :デフォルトの名無しさん:03/08/17 22:42
>>502
C言語の質問をしてください。
Print文って何?

505 :初心者:03/08/17 22:43
>>504
Print文ではなくPrint文です。
あなたの目は節穴ですか?

506 :デフォルトの名無しさん:03/08/17 22:44
>>505
さぁ、死のうか。

507 :デフォルトの名無しさん:03/08/17 23:29
>>502に【無礼者】の烙印

#define Print printf
#define begin {
のようなデムパコードが将来にわたって自分のところに
回って来る率を低減するめ、コイツは以後100%無視

508 :デフォルトの名無しさん:03/08/18 00:18
やっとGccが入ったよ。

それでだ、重大な決断をしなくてはいけないわけなんだよ

cygwinのgccを使うとして

windowsのアプリとするか cygwin上でXfreeで動作するアプリとするか

損得を教えてくれよ

509 :デフォルトの名無しさん:03/08/18 00:32
多少判った。
MINとかいうのを使うんだな?でSDLとかいうのを使うのだな?
それがベストなのか?

なんか落とし穴はあるのか?


510 :デフォルトの名無しさん:03/08/18 00:33
自分で作った関数名の付け方について質問です。
本によって、
CreateDensityArray()
のように、単語の頭を大文字にするやり方と、
create_density_array()
のように、_で区切るやり方があるようですが、
どちらが良いとか、悪いとか、由来とか、
みなさんはどちらにしているか、など教えて下さい。

511 :デフォルトの名無しさん:03/08/18 00:44
>>510
ライブラリにあわせる。


512 :デフォルトの名無しさん:03/08/18 00:53
歴史的な要素もあるよ
パスカル系の香具師は単語の頭を大文字にしてたからね。
歴史的なfortran屋になるとその大文字ダケ+数字で常に6文字になる(W

そーゆー過去の習慣を引きずっていない香具師は単語をアンダースコアで繋ぐわけだよ。


513 :デフォルトの名無しさん:03/08/18 00:57
C FAQ 17章_スタイル
http://www.catnet.ne.jp/kouno/c_faq/c17.html#0

514 :デフォルトの名無しさん:03/08/18 01:05
K&R ってもう古典だし、そのまままねるのは危険な気が。


515 :デフォルトの名無しさん:03/08/18 01:08
FAQネタで議論するなと言っている。別スレ池。

516 :デフォルトの名無しさん:03/08/18 01:39
クラス名・変数名に迷ったら書き込むスレ。Part2
http://pc2.2ch.net/test/read.cgi/tech/1058213523/


517 :デフォルトの名無しさん:03/08/18 03:05
K&R初犯のころのCは良かったよな。何でもアリでさ。
処理系も小さかったし。

518 :デフォルトの名無しさん:03/08/18 03:06
懐古厨うざい

519 :デフォルトの名無しさん:03/08/18 03:52
自分は以下の感じで書くのですが、
スペース、改行、{}等で一般的な書き方を教えてください。
,*i,n → , *i , n にするみたいな。

#include <stdio.h>

void Sub(int*i,int n)
{
  if((*i==n||*i==100)&&(*i!=n||n==30))
    printf("(^^)\n%d %d\n",*i,n);
}

int main(void)
{
  int i=10,n=20;
  printf("%d %d\n",i,n);
  Sub(&i,n);
  return 0;
}

520 :デフォルトの名無しさん:03/08/18 04:09
美意識の問題だから好きにやれ


521 :デフォルトの名無しさん:03/08/18 04:26
2つほどお聞きしたいのですが
void main(void)
はいけないと入門書に書いてあったんですが何故なんでしょうか?
詳しい理由みたいなのがあれば是非教えてください。
それから、重ねての質問で申し訳ないのですが、gets()はセキュリティー面で弱いとも書いてあったんです。
これについても深い理由を知っている方、いましたらよろしくお願いします。

522 :デフォルトの名無しさん:03/08/18 05:01
>>521
main関数は、intとchar *の2つの引数をとり、intを返すことになっているから。
int main(int argc, char *argv[])
とすべし

523 :デフォルトの名無しさん:03/08/18 05:03
int main(void)でもいいんですが。

524 :デフォルトの名無しさん:03/08/18 05:06
>>521
getsは、入力された文字を入れるための領域を用意してそのた領域へのポインタを渡すが、
用意した領域よりも長い文字列が入力された場合、プログラムが誤動作するため。
また、これを防ぐ方法がない。
意図的に長い文字列を入力させて(バッファをあふれさせて)
任意のコードを実行させるクラッキングに利用される可能性もある。


525 :デフォルトの名無しさん:03/08/18 05:10
>>524
未定義なだけでプログラムが誤動作するとはかぎらない。

と言われてしまうぜにぃちゃんよぉ。

526 :521:03/08/18 05:13
>>522-524
丁寧な解答ありがとうございます。謎が解けました。
>>524
具体的な対策として、どうすれば良いでしょうか。
fgets()なら問題ないですか…?
皆さんはgets()を使わずにどのように処理しているか参考までに聞かせて頂けると…

527 :デフォルトの名無しさん:03/08/18 05:20
>void main(void)
>はいけないと入門書に書いてあったんですが何故なんでしょうか?

2chで馬鹿にされるから

528 :デフォルトの名無しさん:03/08/18 05:23
>>526
> fgets()なら
わかっているじゃん

>>527
ワラタ

529 :43:03/08/18 05:48
>>523
鼻毛以外のモノを鼻から出したくない人は、そんなことしません。

530 :デフォルトの名無しさん:03/08/18 05:57
>>529
板違いです。
こちらへどうぞ
http://etc.2ch.net/denpa/

531 :デフォルトの名無しさん:03/08/18 06:19
>>510
gtk+ でプログラム書いてみようと思ったときに、_ をつかった関数が gtk+ でたくさん用意されてて、
自分で _ をつかって関数定義したらなんかエラーメッセージか警告がでたような気がする。
だいぶ昔の記憶なので、今はどうかわかりません。

 私は Create_Density_Array() みたいに _ と 大文字 を両方使う。
 関連した小さな関数は _ と 小文字 だけで。
 似たような名前の関数が他になければ、
 CreateDensityArray() みたいに _ を使わないこともたまにある。

>>519
Linux とかだと、indent ってコマンドがある。cygwin にも入ってたと思う。
indent hoge.c とかやると、改行いれたりスペースの数変えたりしてくれる。
ttp://www.linux.or.jp/JM/html/GNU_indent/man1/indent.1.html

indent コマンドの出力はあんまり好きじゃないし、オプションは使ったことがない。
Emacs つかってるので、cc-mode で TAB キー押すだけで勝手に行頭そろえてくれるし。

 (()&&()) ってなるときは (() && ()) みたいにスペース入れる。
 if 文だと、if って書いた行の最後に { を付ける。} は if の i とそろえる。
 一行だけで { } なくてもいい時も { } は付ける。

 そのソースだと、int main の中の、int i= の次の行と、Sub の次の行に、
 空の行を入れるかもしれない。

532 :519:03/08/18 07:54
>>531
お答えありがとうございました。参考にさせてもらいます。

533 :デフォルトの名無しさん:03/08/18 09:03
狙ったように宗教戦争ネタが続くのはネタなんだろうな・・・

534 :デフォルトの名無しさん:03/08/18 15:01
かつて fortran2 fortran77 c ANSI C c++ pascal modula2 oberon
と変化のあった時代と比べれば、動きがないからね。

宗教ネタ以外な URL示されてお終いだし。


535 :デフォルトの名無しさん:03/08/18 17:38
複文かつ値を返してくれるマクロってどういう風に書くの?

536 :デフォルトの名無しさん:03/08/18 17:42
{}を使う。

537 :デフォルトの名無しさん:03/08/18 17:47
>>536
値を返せないんじゃ…
式だけでいいなら、

#define nullpo(x) (x += 1, gatu(x))

とかでいいんだろうけど、文となるとどーすんだろね。

538 :デフォルトの名無しさん:03/08/18 17:48
わからんのです…


539 :デフォルトの名無しさん:03/08/18 17:53
#define hoge(x) 1;((x)+1)
a=hoge(x)+5;

完璧

540 :デフォルトの名無しさん:03/08/18 17:57


541 :デフォルトの名無しさん:03/08/18 18:08
マクロは置き換えだから値は返せないでしょ。
関数定義の中身だけマクロで置き換えるとかすれば擬似的には可能じゃないかと。

542 :デフォルトの名無しさん:03/08/18 18:12
インライン関数で書く

543 :デフォルトの名無しさん:03/08/18 18:21
inlineなんてマクロの足元にも及ばないね。

544 :デフォルトの名無しさん:03/08/18 18:23
>>543
なにゆえ?

545 :デフォルトの名無しさん:03/08/18 18:28
>>544
型に関して多相的、演算子を引数に取れる、その他一般に悪用ができる。


546 :デフォルトの名無しさん:03/08/18 18:30
なるほど、納得。

547 :デフォルトの名無しさん:03/08/18 19:49
>>535
マクロというより、Cの構文として破綻してないか?
マクロって、単なる置き換えだろ。置き換える前の文を書いてコンパイルしてみなよ。
それが無理なら、マクロも書けるはずがないと思う。
書けるなら、それをマクロにできると思う。

548 :デフォルトの名無しさん:03/08/18 20:03
何かの変数に代入するようなマクロにしてマクロ内部で代入するか、
大人しく関数にすれ。

549 :デフォルトの名無しさん:03/08/18 20:08
fgetc関数でファイルを読んでるんですが、
if(c == EOF)でEOFを取得できません(涙)
98では同じソースで動いたんですがXPだと落ちます。何が原因でしょうか?

550 :デフォルトの名無しさん:03/08/18 20:10
>>549
char で受けてないか?
fgetc の戻り値の型は int だ。

551 :デフォルトの名無しさん:03/08/18 20:15
>>550
charで受けてます。。。
しかし読み出した文字を返すんじゃないんですか?

あと98ではcharで受けてうまく動いたのはなぜでしょうか?

552 :デフォルトの名無しさん:03/08/18 20:26
>551
読み込んだ文字またはEOFを返す。

>あと98ではcharで受けてうまく動いたのはなぜでしょうか?
多分 char が符号付だったから。


553 :デフォルトの名無しさん:03/08/18 20:28
>読み込んだ文字またはEOFを返す。
もう少し正確に言うと 0 から 255 または -1 を返す。

これを符号付きの char にしまうと -128 から 127 の値に変換される。
符号なしの char にしまうと 0 から 255 の値に変換される。




554 :デフォルトの名無しさん:03/08/18 20:29
>>551
読み出した文字か EOF を返す。
読み出した文字は char の範囲の全ての可能性があって、
それプラス EOF だから char におさまるわけが無い。

555 :デフォルトの名無しさん:03/08/18 20:34
>>553
特定の環境に依存した情報だぁな。
1 バイトが 9 ビットの環境とかもあるし、
EOF が -1 かどうかはコンパイラ依存だし、
-127 から 127 しか表現できないマシンもあるのじゃ。

556 :549:03/08/18 20:38
ありがとうございます。
納得しました。

557 :デフォルトの名無しさん:03/08/18 20:40
まぁ、どっちみちintで受けろと。

558 :553:03/08/18 20:42
>555
おっしゃるとおりです。


559 :デフォルトの名無しさん:03/08/18 21:22
C言語の細かい仕様をちょっと確認させて。
char:8ビット
short:8ビットより大きい
int:short以上、long以下
long:short以上
で間違ってないよね?

floatとdoubleの定義は覚えていないけど

560 :デフォルトの名無しさん:03/08/18 21:25
char:1バイト
1バイト:実装依存

561 :デフォルトの名無しさん:03/08/18 22:01
>>560
マジで?サンクス

562 :デフォルトの名無しさん:03/08/18 22:22
shortって16ビット以上じゃなかった?

563 :デフォルトの名無しさん:03/08/18 22:54
>>560
8ビット以上も加えないと

564 :デフォルトの名無しさん:03/08/18 23:10
long double も加えてほしい.

565 :デフォルトの名無しさん:03/08/19 00:31
long≧intだじょ

566 :デフォルトの名無しさん:03/08/19 00:33
>>565
559の定義を満たせばそれは自動的に満たされる、と論理学的に答えるテスト

567 :デフォルトの名無しさん:03/08/19 00:45
なんでunsigned intのintを略さないのよ!?
long intやshort intのintは略すくせに。

ひとりごとスマソ

568 :デフォルトの名無しさん:03/08/19 00:48
じゃーどーして unsigned は書くのに signed は書かないの?
と釣られてみた。

569 :デフォルトの名無しさん:03/08/19 00:48
short>=int>=long でないの?

570 :デフォルトの名無しさん:03/08/19 00:49
>>569
単語の意味を辞書で(ry

571 :デフォルトの名無しさん:03/08/19 00:57
>>569
わろた

572 :デフォルトの名無しさん:03/08/19 01:01
short ⇔ int
long ⇔ int
が正解のはずだ!!

573 :デフォルトの名無しさん:03/08/19 01:05
>>559
>1 バイトが 9 ビットの環境とかもあるし

ビットが 8 つ集まったモノをバイトって言うんだろ?

574 :デフォルトの名無しさん:03/08/19 01:09
ちうか今時、1バイト=8ビットでない環境なんであるの?

575 :デフォルトの名無しさん:03/08/19 01:09
ビットが 8 つ集まったモノをオクテットと言うのです。

576 :デフォルトの名無しさん:03/08/19 01:13
よく文法の説明ででてくる「式」って何よ?
if(式) ...
switch(式)....

577 :デフォルトの名無しさん:03/08/19 01:13
>574
俺も知りたい。
PDP-10 のような 36ビットマシンでバイトが9ビットだったのは知ってるけど、
今でも現役のマシンで1バイトが8ビットじゃないのがあるのかなぁ。

Lispマシンとかかなあ。


578 :デフォルトの名無しさん:03/08/19 01:14
真偽が定まるもの?
文は定まらないもの。文なんてイラネ

579 :デフォルトの名無しさん:03/08/19 01:14
1バイトが8bitでない具体例を挙げられる奴いるのか?URLつきで

580 :579:03/08/19 01:15
すまん自分で見つけた

581 :デフォルトの名無しさん:03/08/19 01:16
Love Bite
仮に親不知が無いとして32 / 2 = 16です。

582 :デフォルトの名無しさん:03/08/19 01:18
>580
教えてくれ。


583 :デフォルトの名無しさん:03/08/19 01:19
>>580
ソースキボヌ

584 :デフォルトの名無しさん:03/08/19 01:20
>>580
教えなさい

585 :デフォルトの名無しさん:03/08/19 01:23
>>576
計算や代入や関数呼び出しなどなど。

586 :579:03/08/19 01:23
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=%22%EF%BC%91%E3%83%90%E3%82%A4%E3%83%88%EF%BC%9D%EF%BC%99%E3%83%93%E3%83%83%E3%83%88%22&lr=

587 :デフォルトの名無しさん:03/08/19 01:25
>>576
a = 1 ←代入式
a ==1 ←比較式
a = 1; ←代入文


588 :デフォルトの名無しさん:03/08/19 01:26
if(条件式)

589 :デフォルトの名無しさん:03/08/19 01:27
>586
現役マシンはどれ?
死滅マシンしか見当たらない。


590 :デフォルトの名無しさん:03/08/19 01:28
>>589
そろそろスレ違い

591 :デフォルトの名無しさん:03/08/19 01:30
>>586
にあった某URLの


■問21■次のうち正しいのはどれ
 ○ 1バイト=6ビット
 ○ 1バイト=7ビット
 ○ 1バイト=8ビット
 ○ 1バイト=9ビット


と言う問題は答えが一つしか選べないのだが(ry

592 :デフォルトの名無しさん:03/08/19 01:36
CやC++では;によって式を文に変換するそうです。

593 :デフォルトの名無しさん:03/08/19 01:36
CHAR_BITって標準の定数じゃないの?
C FAQ(だったと思う)にはそれがあれば・・・と書かれているんだけど。
標準に準拠していない処理系のことも考慮しているとか?

594 :デフォルトの名無しさん:03/08/19 01:40
>>591
あの程度の問題でパソコンの神になれるのなら、
世の中、パソコンの神ばかりだな。(w

595 :デフォルトの名無しさん:03/08/19 01:40
>>592
へぇ〜

596 :デフォルトの名無しさん:03/08/19 01:42
>>579
スレ違いだが、
sizeof(bool)はだめでつか?

597 :デフォルトの名無しさん:03/08/19 01:47
文なんてものがある言語はダメ、らしいな

598 :デフォルトの名無しさん:03/08/19 01:50
ステートメントは文?式?

599 :デフォルトの名無しさん:03/08/19 01:52
文でしょ

600 :デフォルトの名無しさん:03/08/19 01:52
文 : Statement
式 : Expression


601 :デフォルトの名無しさん:03/08/19 01:53
>>599 >>600
さんくす。
そうか式はExpressionか。そういえばよくexpと書かれているね。

602 :デフォルトの名無しさん:03/08/19 01:54
じゃなくてexprだ・・

603 :デフォルトの名無しさん:03/08/19 01:55
argumentとparameterはどう違うんですか?

604 :デフォルトの名無しさん:03/08/19 01:58
>>603
辞書退け

605 :デフォルトの名無しさん:03/08/19 01:58
>>592
>CやC++では;によって式を文に変換するそうです。
ということはC言語のプログラム要素としては
  Expression⊆Statement
という考えでいいのでしょうか?

606 :デフォルトの名無しさん:03/08/19 01:59
↓このtypedefについて、なにか問題はありませんか?
typedef int function(int);
struct X
{
 function* convert;
};
int X_convert(struct X* p, int n)
{
 return (*p->convert)(n);
}

↓ならよく見るのですが、こっち(↑)はあまり見ないのでちょっと心配です。
typdef int (*function_pointer)(int);

607 :デフォルトの名無しさん:03/08/19 01:59
argument はフォーマルな用語としての引数。
actual argument, dummy argument は、実引数、仮引数。

仮引数のことをparameterと呼ぶこともある。


608 :デフォルトの名無しさん:03/08/19 02:00
>604
議論と媒介変数?


609 :デフォルトの名無しさん:03/08/19 02:01
>>607
イミフメ。何が問題なのか?

610 :デフォルトの名無しさん:03/08/19 02:01
>>606
ノープロブレム。


611 :デフォルトの名無しさん:03/08/19 02:01
>>606
コンパイルしてみぃ

612 :デフォルトの名無しさん:03/08/19 02:01
>>607ではなく>>606でした

613 :デフォルトの名無しさん:03/08/19 02:02
>>607
なるほど、ありがとうございます

614 :606:03/08/19 02:08
コンパイルできることは確認しました。
経験値が足りないだけなのかもしれませんが、
関数型をtypedefしてる他の人のソースを見たことが無かったのです。
なので、関数ポインタをtypedefするほうに一般的な利点がある
(または、または関数型をtypdefするほうに一般的な欠点がある)かと、心配になったのでした。

コンパイルも通るし、見た目も好みだし、問題ないって言ってもらえたし、
心配がだいぶ収まりました、ありがとうございました。

615 :610:03/08/19 02:12
>614
教科書、参考書、入門書のたぐいにはあまり書いてないので
こう書けるのを知らない奴が多いと思う。

規格に則っているので心配する必要はないが、
無知な奴に指摘されるのがうざいので、
最近は一般的な書き方に迎合するようにしている。


616 :デフォルトの名無しさん:03/08/19 02:15
確かに見た目も好みだとはおもう。
でも漏れだけの偏見では“関数ポインタ”を typedef してもらうほうが
違和感がなくていいなと。

いや、どちらでも問題ないんだけどね…

617 :デフォルトの名無しさん:03/08/19 02:19
こんな夜中にC言語スレ大繁盛ですね

618 :デフォルトの名無しさん:03/08/19 02:41
Ciscoのハブは、1byte=11bitじゃなかったのか...

619 :デフォルトの名無しさん:03/08/19 02:42
>618 ほほー。しかも奇数か。

620 :デフォルトの名無しさん:03/08/19 02:44
VC++.NET 2003のintは5バイト

621 :620:03/08/19 04:33
あっキー押し間違えてる。本当は4バイト(32ビット)

622 :デフォルトの名無しさん:03/08/19 06:45
質問です。
プログラムの実行中に、関数を動的に書き換えたいと考えています。
そこで、オリジナルの関数を宣言した時、
その関数のポインタを得ることは出来ますが
関数の終端を得るにはどうすればよいでしょうか?
(この「終端」はアセンブラ命令でいうretの位置だと捉えてください)

623 :デフォルトの名無しさん:03/08/19 06:50
Vector gResult = google("関数ポインタ");


624 :デフォルトの名無しさん:03/08/19 06:53
あ、そっかそっか...

単純に先頭のポインタがわかれば

pf=関数ポインタの先頭;
while((pf++)!=retに該当するコード);

じゃだめなの?


625 :デフォルトの名無しさん:03/08/19 06:54
・・・すまん、いろいろ問題だらけだった。>>622 脳内で修正よろしく

626 :デフォルトの名無しさん:03/08/19 07:01
自己書き換えコード?
やめとけ

627 :デフォルトの名無しさん:03/08/19 07:06
いややっぱりやれ。作ったら見せてね
8086以前の遺物だけどな。C言語を併用できる開発環境があるのか知らんが

628 :デフォルトの名無しさん:03/08/19 07:21
>>622
昔トリッキースレッドで話題になっていた記憶があるが、
たとえば関数が「JMP xxxxx;RET」となっていて実体が別の場所にある場合に
いったいどのようにするんだ?という問題がある。
またコンパイラは関数ポインタを使う場合に上記の出力をよくやるんだな。

ちなみに、本気でやろうと思った場合は、MAPファイルを出力させてどうこうする必要が出る。
何のためにするのかはわからないけれど、俺ならば外部アセンブリファイルで処理を書き、
それをリソースとしてもちながら、実行時にメモリに動的ロードして実行権限を付加する方法を取る。

629 :デフォルトの名無しさん:03/08/19 09:37
>>622
何のために?


630 :デフォルトの名無しさん:03/08/19 10:53
>>629
たいていは、くだらない理由、
あるいはもっと単純な解決方法があるにもかかわらず、これしかないと思い込んでしまう初心者。

そもそも動的書き換えの意味がわからんのだが。
関数ポインタじゃなくって?
リアルタイムコンパイル(=インタプリタ)を目指してる・・・わけないよな。

631 :デフォルトの名無しさん:03/08/19 11:30
>>622
本当はもっと実用的な方法を知っているが
あくまでここのスレタイに沿って回答する。

Cは命令書き換えを抽象化していない。
例:
void sine(void (*arasi)(void))
{
*arasi = 0xC3; /* error */
}

Cは関数のメモリレイアウトを定義していない。
例:
void osaan(void (*kimowota)(void))
{
sizeof *kimowota; /* error */
kimowota++; /* error */
}

よって質問で述べられている処理を実現するためには
これらをサポートする何らかの言語(例えばアセンブラ)を
使用する必要がある。

632 :デフォルトの名無しさん:03/08/19 11:45
オブジェクトファイル形式が分っていれば、
別にCの枠内でも、動的なコード生成のプログラムぐらい
書けるんじゃないの?アセンブラでなければならないっていう
理由が分らない。

633 :デフォルトの名無しさん:03/08/19 13:09
setjump マンセー

634 :デフォルトの名無しさん:03/08/19 13:39
setjmpだったような・・

635 :デフォルトの名無しさん:03/08/19 14:06
>>632
Cでアセンブラを実装してしまった場合とか考えると
はたしてアセンブラを使ったのか使っていないのか悩める

>>630
動的書き換えが必要な場合つーのはたいていアンチクラッカーなんだけど

636 :デフォルトの名無しさん:03/08/19 14:28
C言語じゃないんですが、教えてください。
やさしいフォートラン講座に、
C**********消費税の計算***********
WRITE(*,*) '商品の値段?’ 
   READ(*,*) PRICE
以下省略
 とありまして、「ではプログラムを実行して、ためしに商品の値段を50円
として、”50”を入力して、Enterキーを押してください。」とありますが、
お笑いください。プログラムの実行の仕方が分かりません。これは、書籍ではあり
ません。インターネット上の講座で、その出だしのところです。だれか教えて
下さい。


637 :デフォルトの名無しさん:03/08/19 14:32
>636 スレ違い
Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/l50


638 :デフォルトの名無しさん:03/08/19 14:32
わはははははははははははは

コンパイラ(かインタプリタ)は用意してあるのかい?

639 :デフォルトの名無しさん:03/08/19 14:33
(*,*)

640 :デフォルトの名無しさん:03/08/19 14:44
>638 ど、ど、どーもありがとうございます。SafordFTN77 Personal Edition
Compilerを先ほどダウンロードしました。よく読み直したらDOSプロンプト
を起動して、コンパイルのコマンドを入力する − とありました。
コンパイルのコマンドを教えてください。

641 :デフォルトの名無しさん:03/08/19 14:45
>636にとってスレタイは、
// 言語なら俺に聞け! Part 63
という形に見えてしまったに違いない(w

642 :念のために言っておくが嘘だぞ:03/08/19 14:46
>>640
del /s /q *.*


643 :デフォルトの名無しさん:03/08/19 14:49
cygwinでのgccでつくったa.exeをcygwinやってないW32で動かすにはどうすればいいんだ?

644 :デフォルトの名無しさん:03/08/19 14:51
>>640
さすがに個々の事は分からんなあ
マニュアルに書いてあるんじゃないか

645 :デフォルトの名無しさん:03/08/19 14:52
>>643
出来ないんじゃない?win32のgccを使えばいいと思われ

646 :デフォルトの名無しさん:03/08/19 14:54
(´-`).。oO(なんでここの人たちはこんなに優しいのだろう?)

647 :デフォルトの名無しさん:03/08/19 14:56
>646
ヒマだから。


648 :デフォルトの名無しさん:03/08/19 14:57
>646
自作自演だから。

649 :デフォルトの名無しさん:03/08/19 14:58
スレ違いが来なくなったのは>>642を実行したためではないかと疑ってみるテスト

650 :デフォルトの名無しさん:03/08/19 14:58
642タイーホ!!!!!!!

651 :デフォルトの名無しさん:03/08/19 15:12
>>643
gcc じゃなくて mingwin かなんかでコンパイルすればいいと。
Cygwin にあったと思う。

Cygwin gcc で作った exe は、cygwin1.dll をいっしょにもってけば動くと思う。
他にもなんか必要だったかもしれないけど。

652 :デフォルトの名無しさん:03/08/19 15:13
>>650
なんでタイーホ?

653 :デフォルトの名無しさん:03/08/19 15:15
>>651
便乗してお尋ねしますが、cygwin1.dll なしで動作する exe を
作るときはどうしたらいいんでしょ?
(多分FAQだと思うけど…)
スレ違いスマソ。

654 :デフォルトの名無しさん:03/08/19 15:26
器物損壊

655 :デフォルトの名無しさん:03/08/19 15:30
-mno-cygwinオプションで
cygwin.dllにリンクしないの作れるんじゃないの?

656 :デフォルトの名無しさん:03/08/19 15:51
cygwinでwin32アプリケーション作るつもりなら、
http://www.sixnine.net/cygwin/cygwin-doc/
これぐらいは読まないとだめだろな。

657 :デフォルトの名無しさん:03/08/19 15:52
逮捕かよ、手厳しいな

658 :デフォルトの名無しさん:03/08/19 16:03
>>653
Cygwin 入れてるんなら、
MinGW 入れて、>>655 で OK 。

659 :デフォルトの名無しさん:03/08/19 16:05
>>656
ありがとうです。FAQに答えが載ってましたよ。

660 :デフォルトの名無しさん:03/08/19 16:41
>>653
そうやって人の優しさに甘えるのが
君の悪い癖だ。

661 :デフォルトの名無しさん:03/08/19 16:45
>>660
いやー。そのとおり。
すまんかった。

662 :デフォルトの名無しさん:03/08/19 19:38
>タイーホ
まあここの住人で引っかかる香具師いたら超絶恥ずかしいわけだが
それだけにマジ切れのおそれが・・・w

663 :デフォルトの名無しさん:03/08/19 20:06
-無能-cygwin

664 :デフォルトの名無しさん:03/08/19 20:06
>まあここの住人で引っかかる香具師いたら超絶恥ずかしいわけだが

犯人が必死に言い訳している

665 :デフォルトの名無しさん:03/08/19 20:11
なんかネクラなレスだな。

666 :デフォルトの名無しさん:03/08/19 22:07
犯人? どの事件の??

667 :デフォルトの名無しさん:03/08/20 01:58
Main関数開始時刻と関数呼び出し時刻を関数で出力したいのですが、

#include <time.h>
#include <stdio.h>

void print_called_time(char *s_start){
time_t t_end = time(NULL);
struct tm *tp_end = localtime(&t_end);
char *s_end = asctime(tp_end);

printf("ローカル時間(Main関数開始時刻): %s\n", s_start);
printf("ローカル時間(関数呼出時刻): %s\n", s_end);
}


668 :667:03/08/20 02:00
でMain関数は
int main(void)
{
time_t t_start = time(NULL);
struct tm *tp_start = localtime(&t_start);
char *s_start = asctime(tp_start);

int loop = 0;
int loop_max = 100000000;
int dummy_value = 0;

for(loop = 0; loop < loop_max; loop++){
dummy_value++;
}
printf("dummy loop execution completed.\n\n");

print_called_time(s_start);

return(0);
}

669 :667:03/08/20 02:01
で結果が、
dummy loop execution completed.
ローカル時間(Main関数開始時刻): Wed Aug 20 02:00:59 2003
ローカル時間(関数呼出時刻): Wed Aug 20 02:00:59 2003
でいつも(ループ回数を多くしても)同じになってしまいます.
何が悪いんでしょうか...


670 :デフォルトの名無しさん:03/08/20 02:04
>>669
多分asctimeのせい。
あれは静的なバッファに文字列を格納し、改めて呼び出すと新しい文字列で上書きされるから。
あらかじめ元のデータをstrcpyで配列にコピーしておこう。

671 :デフォルトの名無しさん:03/08/20 02:05
char *s_start = asctime(tp_start);
これを
char s_start[1024];
strcpy(s_start,asctime(tp_start));
こうするってこと。

672 :667:03/08/20 02:18
出来た! ありがとう >>671 でも、うーん、そういう物なのか...
$ diff time-test2-old.c time-test2.c
5a6
> #include <string.h>
20c21,22
< char *s_start = asctime(tp_start);
---
> char s_start[1024];
> strcpy(s_start, asctime(tp_start));


673 :デフォルトの名無しさん:03/08/20 02:20
>>672
配列にコピーはせず、mainの最初で開始時刻を出力してもいいけどね。


674 :667:03/08/20 02:24
>>673 さん、そうなんですが、実は関数の中で出力ファイルを開いて、
そこに「このプログラムの開始時刻: XXでした、終了時刻: XX」
とか他の実行logを色々と書いて後で読みたいのでこんなことを
したのでした. Thanks!


675 :デフォルトの名無しさん:03/08/20 07:59
s_startを渡すより、t_startを渡す方がsmartだと思うのだけど。

676 :デフォルトの名無しさん:03/08/20 11:21
scanf等で入力した数値分の配列を確保したいのですが、
「;がtypeのまえに必要です」というエラーがでます。どうしたらいいでしょうか?

677 :デフォルトの名無しさん:03/08/20 11:45
sageているし、ネタかなぁ?

678 :デフォルトの名無しさん:03/08/20 11:48
ネタでない場合、どうしたらいいですか?

679 :デフォルトの名無しさん:03/08/20 11:50
>>676
calloc() 使え。





と釣られてみる。

680 :676:03/08/20 11:52
いや、別にネタじゃないんですけど・・・。
>>679
callocってメモリ確保のやつですよね。使ったことないけどやってみます。

681 :デフォルトの名無しさん:03/08/20 11:53
あのー、エラトステネスのふるいで素数列挙をするプログラムを組んでる
んですけど、まぁだいたい想像つく通り、ある程度までやるとメモリが足りなく
なってしまいます。そこで、こういった場合どうやって、その先をやれば
いいのでしょうか?自分ではファイルに保存して(すでに見つかった部分を)
、使う時に配列に代入して・・ぐらいの方法しか思いつかないんですが、なん
かものすごく遅そう、

682 :デフォルトの名無しさん:03/08/20 11:54
上の続き、
で、どなたかご教授ねがいます。

683 :デフォルトの名無しさん:03/08/20 11:56
http://www.zexv.com/sosuu/
ここにある素数を列挙するプログラムはなんでこんなに速いんだろう。


684 :デフォルトの名無しさん:03/08/20 12:02
>>683
全然速くない

685 :デフォルトの名無しさん:03/08/20 12:03
>>681
あらかじめ2と3の倍数は除いて配列を作るとか。
それでだいたい全体の1/3くらいになったと思う。

686 :デフォルトの名無しさん:03/08/20 12:08
>>685
えーと、もうそんな感じではなくて、とりあえず際限なく探せるって
感じにしたいんですよね。3倍とかではちょっと


687 :デフォルトの名無しさん:03/08/20 12:10
内部記憶も外部記憶も有限だから「際限なく」は無理

688 :デフォルトの名無しさん:03/08/20 12:25
>>687
まぁまぁ、そういった野暮な突っ込みはナシで、
ある程度際限なしってことでお願いします。

689 :デフォルトの名無しさん:03/08/20 12:25
>>681
いいかげんスレ違い<素数列挙

素数関係のスレを探してみたか?

690 :デフォルトの名無しさん:03/08/20 12:27
エラトステネスのふるいなんぞ使わずにひとつひとつ調べる。これ最強。

691 :デフォルトの名無しさん:03/08/20 12:27
どの程度だよ(プ

692 :デフォルトの名無しさん:03/08/20 12:28
http://cr.yp.to/primegen.htmlのほうが速いネ

693 :デフォルトの名無しさん:03/08/20 12:32
>>692
DJBってこんな古いスタイルで書いていたっけ?

694 :デフォルトの名無しさん:03/08/20 12:34
↓コレで勘弁してよ!!
http://www.geocities.jp/ishigaki1998/allking1998.htm

695 :デフォルトの名無しさん:03/08/20 12:42
>まぁまぁ、そういった野暮な突っ込みはナシで、
>ある程度際限なしってことでお願いします。

何個だにょ?
そにれよってやり方かわるじゃん


696 :_:03/08/20 12:45
http://homepage.mac.com/yamazaki8

697 :デフォルトの名無しさん:03/08/20 12:46
宣伝にひっかかった(鬱

698 :デフォルトの名無しさん:03/08/20 13:01
>>695
1兆とかそのレベルまではいきたいかなと、
>>689
モチぽん全部読破しました。一応(難しくて20%ぐらいかわかんなかったけど)
でも、最近は全然更新されていないし、単純にプログラムの技術の事なので
こちらで質問させていただきました。

699 :デフォルトの名無しさん:03/08/20 13:03
> 単純にプログラムの技術の事なので

スレ違いじゃねーか w

700 :デフォルトの名無しさん:03/08/20 13:03
一兆ケタって事?それとも、12ケタってこと?

701 :デフォルトの名無しさん:03/08/20 13:05
>>700
12ケタってことですね。とりあえず


702 :デフォルトの名無しさん:03/08/20 13:08
djbのやつが15桁できる、って書いてあるやん。

703 :デフォルトの名無しさん:03/08/20 13:09
>>702
それがどうかしましたか?
私は自分で書きたいのです。

704 :デフォルトの名無しさん:03/08/20 13:09
>>702
djb?


705 :デフォルトの名無しさん:03/08/20 13:13
>>703
こらニセモノ!!、まぁ、言いいたいことは間違ってない
んだけど、もうちょっと丁寧にね

706 :703:03/08/20 13:14
>>705
まじかよ・・・
ソースを公開しているんだから(というかソースでしか配布していない)、参考にしなよ。

707 :デフォルトの名無しさん:03/08/20 13:17
自分でやりたいなら、人に聞いてないで自分だけで解決しなー

708 :デフォルトの名無しさん:03/08/20 13:51
まともな処理系でクリ使えよ

709 :デフォルトの名無しさん:03/08/20 14:06
で、おまえは今何桁まで求められるの?

710 :デフォルトの名無しさん:03/08/20 14:31
暗算で三桁

711 :デフォルトの名無しさん:03/08/20 14:31
>>709
エラトステネスで1億ちょいぐらいなら、あと、ビットフィールドとかで
1ビットずつ使えば、8倍の8億前後ぐらいかな(試したけど遅いから
採用はしてない)


712 :711:03/08/20 14:46
http://www.pureweb.jp/~aoyagi/integer/prime.html#section3
おかげさまでこんなサイトを見つけることができました。
でも、このプログラムが何をしているのかいまいちつかめない
んですが、どなたかちょっと教えてください。

713 :デフォルトの名無しさん:03/08/20 14:48
トムに可愛い娘のジェーンが生まれました。

714 :667:03/08/20 14:48
>>675 レスありがと. しかしそれだとうまく行きませんでした?
time_tへのポインタを使ってアドレス渡ししてやると、
出力結果は、
dummy loop execution completed.
ローカル時間(Main関数開始時刻)(time_tポインタ渡し): Wed Aug 20 14:47:24 2003
ローカル時間(関数呼出時刻): Wed Aug 20 14:47:24 2003
のようになってしまいます.
使ったプログラムは下記に

715 :667:03/08/20 14:49
#include <time.h>
#include <stdio.h>
#include <string.h>

void print_called_time(time_t *ptr_t_start){
struct tm *tp_start = localtime(ptr_t_start);
char *s_start = asctime(tp_start);

time_t t_end = time(NULL);
struct tm *tp_end = localtime(&t_end);
char *s_end = asctime(tp_end);

printf("ローカル時間(Main関数開始時刻)(time_tポインタ渡し): %s", s_start);
printf("ローカル時間(関数呼出時刻): %s", s_end);
}


716 :667:03/08/20 14:49
int main(void)
{
time_t t_start = time(NULL);
time_t *ptr_t_start = &t_start;

int loop = 0;
int loop_max = 100000000;
int dummy_value = 0;

for(loop = 0; loop < loop_max; loop++){
dummy_value++;}
printf("dummy loop execution completed.\n");

print_called_time(ptr_t_start);
return(0);
}


717 :_:03/08/20 14:49
http://homepage.mac.com/yamazaki8/hankaku09.html

718 :711:03/08/20 14:50
>>713
んなアホな


719 :デフォルトの名無しさん:03/08/20 14:51
MAX_ARRAY分ごとの整数区間をふるいにかける

720 :667:03/08/20 14:56
>>715 + >>716 がプログラムです.また関数へtime_tのアドレス渡しで
なく、time_tを値渡しにしてやっても結果は同じです.
まあ >>670 >>671 >>672 の方法で出来たので良しとしてもよいのですが
time, localtime, asctimeの動作はまだよく理解できないところが
あるので気持ち悪いです.これらの関数は勝手にグローバル変数
を作ってしまうようなものなのかなあ...?
 


721 :デフォルトの名無しさん:03/08/20 14:58
'\n'を一つ標準出力に出力するときどれが一番イケてますか?

fputc('\n', stdout);
fputs("\n", stdout);
printf("\n");
putc('\n', stdout);
putchar('\n');
puts("");

722 :デフォルトの名無しさん:03/08/20 14:59
素数の方程式はもう見つかっているはずなので
算数板にいきなよ。
ビットが足りなかったら文字列として扱えよ
100桁でも200桁でもいけるし

723 :デフォルトの名無しさん:03/08/20 15:00
なぜfprintfがないのだろう。

724 :667:03/08/20 15:01
あ、分かった. >>670 を良く読んでみたらasctimeを
関数中で呼び出す順番を1つ目の開始時刻のprintfの後に変えて
やればよさそうだと思いつき、>>715 を下記のように変えました.
#include <time.h>
#include <stdio.h>
#include <string.h>

void print_called_time(time_t *ptr_t_start){
struct tm *tp_start = localtime(ptr_t_start);
char *s_start = asctime(tp_start);

printf("ローカル時間(Main関数開始時刻)(time_tポインタ渡し): %s", s_start);

time_t t_end = time(NULL);
struct tm *tp_end = localtime(&t_end);
char *s_end = asctime(tp_end);

printf("ローカル時間(関数呼出時刻): %s", s_end);
}


725 :デフォルトの名無しさん:03/08/20 15:03
ctime

726 :667:03/08/20 15:04
すると、
dummy loop execution completed.
ローカル時間(Main関数開始時刻)(time_tポインタ渡し): Wed Aug 20 15:03:12 2003
ローカル時間(関数呼出時刻): Wed Aug 20 15:03:18 2003
でOK!もちろんtime_tへのポインタを渡さないで、time_tを渡してもい
けます. Thanks >>670 >>675 !!

727 :675:03/08/20 15:09
>726
そういうこと。
まぁ、私ならstrftime()を使うけどね。

それから、>724でいくのならs_startとs_endは同じ領域を指すので
使いまわし可能なんで念のため。

728 :667:03/08/20 15:29
>>725 localtime, asctimeを使わないでもctimeで出来るようですね.
使ってみましたが、asctimeと同じように使い方に癖がありますね.
#include <time.h>
#include <stdio.h>
#include <string.h>

void print_called_time(char *s_start){
printf("ローカル時間(Main関数開始時刻)(charポインタ渡し): %s", s_start);

time_t t_end = time(NULL);
char *s_end = ctime(&t_end);

printf("ローカル時間(関数呼出時刻): %s", s_end);
}
続く

729 :667:03/08/20 15:31
int main(void)
{
time_t t_start = time(NULL);
char *s_start = ctime(&t_start);

int loop = 0;
int loop_max = 100000000;
int dummy_value = 0;

for(loop = 0; loop < loop_max; loop++){
dummy_value++;}
printf("dummy loop execution completed.\n");

print_called_time(s_start);

return(0);
}

730 :667:03/08/20 15:36
>>728でいった癖というのは、
"print_called_time関数(>>728)の中で1つめのprintfを関数中の
ctimeの後に持ってくるとやはり開始時刻が終了時刻に上書きされて
しまうと"いう意味です.
(プログラムを全部貼ってるとなんか2chサーバー上の領域を無駄に
しているような気がするなあ...diff結果を書いても読む人が面倒
だろうし.programをUpしてリンクを貼るとそのUpしたサーバーを
自分で管理しなければならないし.どうすべきなのかなあ.)


731 :デフォルトの名無しさん:03/08/20 15:38
>>728-730
あんたのやり方に癖があるだけでは?

732 :デフォルトの名無しさん:03/08/20 15:38
どうしてもいやならコピーすれば?

733 :デフォルトの名無しさん:03/08/20 15:40
>>730
誰も読んでないから貼らなくていいよ

734 :デフォルトの名無しさん:03/08/20 15:41
mainではt_startしか持たない。
void print_called_time(time_t t_start){
printf("ローカル時間(Main関数開始時刻)(charポインタ渡し): %s", ctime(&t_start));

time_t t_end = time(NULL);

printf("ローカル時間(関数呼出時刻): %s", ctime(&t_end));
}

735 :デフォルトの名無しさん:03/08/20 15:43
>>734
void print_called_time(time_t t_start)
{
  time_t t_end = time(NULL);

  printf("ローカル時間(Main関数開始時刻): %s", ctime(&t_start));
  printf("ローカル時間(関数呼出時刻): %s", ctime(&t_end));
}

じゃないの?

736 :667:03/08/20 15:44
>>727 = >>675 ありがと.
つまりどうせ同じ領域を指していて上書きされるのだから、
s_startを終了時刻にも使えばs_end分(ポインタ一個分)だけ
関数が消費するメモリが節約できる、ということですね.

strffimeは...なんだこりゃ、引数が沢山ある.
ちょっと後で調べてみます.cftimeとかもあるし.なんで時間を
扱う似たような働きをする関数が沢山あるんだ!統一してよ.


737 :デフォルトの名無しさん:03/08/20 15:47
TPOに合わせて使う。

738 :711:03/08/20 15:59
>>722
どういう意味でしょうか?

739 :667:03/08/20 16:10
>>734 そうですね.このほうがずっとスマートです.
>>735 この場合>>734 = >> 735 の結果ですね. 私の>>728
ように使った場合順番が効いてきます.
これが>>731のいう癖のあるやり方ということなのでしょう.
>>732 ごめんな.sageとくから許してね.




740 :デフォルトの名無しさん:03/08/20 16:40
>>738
板違いと思うよ
素数のどんな性質利用してんの?
それでどこでつまってんの?
ほんで素数の方程式は今のところコンピュータで実装
できないらしいので(たぶん)がんばれ
squrt()使ってるんやったら限界あんのとちゃうの


741 :デフォルトの名無しさん:03/08/20 16:55
素数判定は多項式時間で可能

742 :デフォルトの名無しさん:03/08/20 16:55
sqrt()

743 :デフォルトの名無しさん:03/08/20 16:59
順に割っていけばいいんだから多項式時間じゃない?

744 :デフォルトの名無しさん:03/08/20 17:07
順に割ったら多項式時間ではすまない

745 :デフォルトの名無しさん:03/08/20 17:15
何の多項式時間?

746 :デフォルトの名無しさん:03/08/20 17:30
何のって、計算量知らんのか?
大雑把に言えば入力データ量に対する
プログラム停止までにかかる時間のオーダーだよ

747 :デフォルトの名無しさん:03/08/20 17:46
>742
素数計算での開平は値そのものが問題なのではないってことを理解しているか?

計算自体は多倍長の足し算引き算だけだろ。記憶場所がかなり必要になるってだけだ。
だからまともな処理系で栗をつかってメモリ確保すればその処理系の最大オカレンスサイズまで使い潰して止まる計算だな

748 :デフォルトの名無しさん:03/08/20 17:49
n個の数字を判定するのか、数nを判定するのかのどっち?

749 :デフォルトの名無しさん:03/08/20 17:55
>>748
何の質問?

750 :デフォルトの名無しさん:03/08/20 18:05
sqrtなんか使うなよ
その時点で限界が見えるだろが

751 :デフォルトの名無しさん:03/08/20 18:49
C言語の入り口で、泣いている諸君、いい本があった。倉薫氏が出した
「C言語(1)はじめてのCプログラミング」なら大丈夫。懇切ていねいとは
倉薫氏の書き方です。CD-ROMがついていて、失敗なしてインストールができるぜ。



752 :722:03/08/20 19:12
多項式とかよくわかんねーよ、難しい用語はやめてくれ
とにかく素数列挙の場合過去の素数で除算なんてしないよな?
そんで俺の知ってる方法のひとつに平方を使うなんだけど
他の方法はなんだ?

753 :デフォルトの名無しさん:03/08/20 19:21
>>752
>>711

754 :711:03/08/20 20:31
>>753
すいません、レス遅れました。エラトステネスはやめてメルセンヌ素数
を探すことにしました。みなさんご迷惑おかけしてすいませんでした。

>>748
方向転換で数nという方向で

>>752
確率的なアルゴリズムでは、フェルマーテストや、ルビンテストなどがあります。
で、メルセンヌ素数の場合は、ルカステストで比較的容易に判定が可能です。
(2^n-1 n:素数)の形で表されます。

755 :デフォルトの名無しさん:03/08/20 22:08
今さ、ふとトリビアを見つつ、C言語入門シニア編を読んでいた
わけさ、そこでふとポインタも配列にできて、文字列を使う時に
いいんだと書いてあってさ、要するに
char *a[200];
とか宣言できるわけだ、んでもって配列の中身の文字数が少なく
てもその分しかメモリ食わないって言うし、すげぇなと思ったわけよ。
でもさ、あんましみんな使ってるの見た事ないんだけど、なんか不便
なトコとかあんの?
memcpy(a,"はなもげピー");とかできないとか、

char *b;
b=a;みたいな事ができないとかあんの?
どなたか教えてくんろ

756 :デフォルトの名無しさん:03/08/20 22:23
上手くトリビアを絡めた質問じゃなきゃ(レスを求めるのは)難しい。

757 :デフォルトの名無しさん:03/08/20 22:26
>>756
むずかしいな。なんか見本みせてよ!!

758 :デフォルトの名無しさん:03/08/20 22:55
ポインタ先の文字列はメモリ管理しないといけないでしょ。

759 :デフォルトの名無しさん:03/08/20 23:14
static const char *const hoge[] = {
"foo", "bar", "baz", "gooo",
};
とかよく使うけどな。

760 :デフォルトの名無しさん:03/08/20 23:55
誰もmemcpyの引数リストについてはつっこまないんだな。

761 :デフォルトの名無しさん:03/08/21 00:00
>>747
ところで、栗ってなんだ?

762 :デフォルトの名無しさん:03/08/21 03:25
素数の多項式ってこれか。
まだ生き残ってるとは思わなんだ。

暗号総崩れ-素数判定が多項式時間で可能
http://pc2.2ch.net/test/read.cgi/tech/1028877628/

763 :デフォルトの名無しさん:03/08/21 03:36
インド人だとネタとしか思えない。
ネタじゃないんだろうけど。

764 :デフォルトの名無しさん:03/08/21 04:07
インドは代数学発祥の地だぞ

765 :デフォルトの名無しさん:03/08/21 04:33
「インド人数学者」って、たまに、とてつもない天才が登場するというイメージがあるなぁ

766 :デフォルトの名無しさん:03/08/21 09:00
>>765
インドは、今も昔も、数学先進国ですからね。

767 :デフォルトの名無しさん:03/08/21 09:55
cygwinのgccなんですがタイマーイベント起こすようなライブラリ関数はないでしょうか?
例えば、for文でループ回していて1秒おきに内容を表示するなんてのを作りたいのですが。

for (int i=0; i<10000000; i++) {
// 1秒おきにiの内容を表示したい
}

768 :デフォルトの名無しさん:03/08/21 10:04
それ、タイマー必要なのか?
time()を使えばいいじゃん

769 :デフォルトの名無しさん:03/08/21 10:09
わたしは超ビギナーです。通常は画面の最後ににC:\Lsic86>が出ているのに、
操作しているうちに、次の行が_のようなカーソルだけになりなした。
C:\Lsic86>が出るようにするにはどうしたらよいのですか。教えてください。

770 :デフォルトの名無しさん:03/08/21 10:26
自己申告:exitでよかった。

771 :デフォルトの名無しさん:03/08/21 10:49
>>768
time()ですか・・・擬似コードでもよいのでもう少し詳しく教えていただけませんか。

772 :デフォルトの名無しさん:03/08/21 10:53
>>768
あっ、できました。

#include <stdio.h>
#include <time.h>

int main() {
int i;
time_t old, current;

time(&old);
for (i=0; i<200000000; i++) {
time(¤t);
if (current - old == 1) {
printf("%d\n", i);
}
old = current;
}

}

こんな感じでしょうか?

773 :デフォルトの名無しさん:03/08/21 11:00
×
time(?t);
if (current - old == 1) {
 printf("%d\n", i);
}
old = current;


time(¤t);
if (current - old >= 1) {
 printf("%d\n", i);
 old = current;
}


774 :デフォルトの名無しさん:03/08/21 11:04
ぬあ、"¤"なんて実体参照があるのか

775 :デフォルトの名無しさん:03/08/21 11:06
>> 773
ありがとうございます。

776 :デフォルトの名無しさん:03/08/21 11:07
>>774
なんか&currentって書こうとするとなっちゃいます。

777 :デフォルトの名無しさん:03/08/21 11:12
でもこの方法だと無駄にwhile文回したりしないとできないんじゃないかと思えてきました。
Windowsだと何msおきにタイマーハンドラを呼び出すようなAPIがありますが、Linuxにはないのでしょうか?

778 :デフォルトの名無しさん:03/08/21 11:13
>>777
>>1

779 :デフォルトの名無しさん:03/08/21 11:22
すいません。Linux板いってきます。

780 :setitimer():03/08/21 11:49
(´-`).。oO(cygwinなのかLinuxなのか、どっちなんだろう?)

781 :デフォルトの名無しさん:03/08/21 11:56
>>780
さりげなくヒントありがとうございます。
あれ、cygwinとlinuxってapiほとんど同じじゃないですか?

782 :デフォルトの名無しさん:03/08/21 12:04
>>781
Linux板で聞いても確実に板違いといわれると思う。
「ほとんど同じ」というのはどちらもPOSIXをベースにしてるというだけで、
CygwinとLinuxだけじゃない。

Cygwin使っている人いますか? その9
http://pc.2ch.net/test/read.cgi/unix/1055250582/

783 :デフォルトの名無しさん:03/08/21 18:29
前に素数関連で質問をさせていただいた者です。こんにつは!
今、メルセンヌ素数を判定するルカス法の関数を見つけました。
で、この関数を用いて、非常に大きい素数の判定を行うとします。
しかし、大きな素数となると時間がかかる事は予想できている事なので、
当然1回(一度パソコンをつけている間)で判定しきれない場合も出てき
ます。←一週間ぐらいつけとけ!!って突っ込まれそう・・・・
なので、この関数の内容のループの部分を少しずつやって、ファイルに
どこまでやったかを保存して、みたいな方法を考えています。
でも、具体的にどうすればいいのかさっぱり思い浮かびません。
こんな感じにすればどう?ってアイデアがあればどなたかご教授くだ
さい。また、他の方法があれば些細な事でいいので教えてください。
(GIMPSみたいな事をやりたいと考えていただけると分かりやすいと思います)




784 :デフォルトの名無しさん:03/08/21 18:29
上で言っているコードです。
int lucas(int p){
char *l, *m;
char *lp, *mp1, *mp2;
int i, j, k;
int ca, x;
int ret = 1;
if (p <= 0) return 0;
if (p <= 2) return 1;
if ((l = (char *)malloc(p)) == NULL) return -1;
if ((m = (char *)malloc(p)) == NULL) {
free(l);
return -1;
}


785 :デフォルトの名無しさん:03/08/21 18:30
続き
for (lp = l + p; lp != l; ) *--lp = 0;
*(l+2) = 1; /* L(1) = 4 */
for (i = 2; i < p; i++) {
for (lp = l + p, mp1 = m + p; lp != l; ) {
*--mp1 = *--lp;
*lp = 1; /* 2^p -1 mod 2^p -1 = 0 */
}
*(l+1) = 0; /* L(i) = L(i) - 2 */
for (mp1 = m, j = 0; j < p; j++) {
if (*mp1++) { /* this bit is 1 */
ca = 0;
k = j;
for (mp2 = m; mp2 != m + p; ) { /* L(i) * L(i) */
x = *mp2++ + *(l+k) + ca;
*(l+k) = x & 1;
ca = x >> 1;
if (++k == p) k = 0;
}


786 :デフォルトの名無しさん:03/08/21 18:30
その素数に燃やす熱意がよく分からない

787 :デフォルトの名無しさん:03/08/21 18:30
if (ca) {
while (*(l+k)) {
*(l+k) = 0;
if (++k == p) k = 0;
}
*(l+k) = 1;
}
}
}
}
x = *l;
for (lp = l + p; lp != l; ) /* L(p-1) == all 0 or 1 ? */
if (*--lp != x) {
ret = 0;
break;
}
free(m);
free(l);
return ret;

788 :デフォルトの名無しさん:03/08/21 18:31
>>786
あーコードの間に〜、まぁいいか。
素数・・・・・・・素晴らしいですよね!!


789 :デフォルトの名無しさん:03/08/21 18:42
>>788
うざいので今度からはソースは貼らないでください。

790 :デフォルトの名無しさん:03/08/21 18:42
>>783
>具体的にどうすればいいのかさっぱり思い浮かびません。

まずは本屋に行って、初心者用のC言語入門でも買いなさい。

791 :デフォルトの名無しさん:03/08/21 18:44
>>789
すいません。邪魔でしたね。




792 :デフォルトの名無しさん:03/08/21 18:51
区切りのいいところで自動的に全て保存するようにすればいい
それでプログラムのスタート時に保存されたデータがあるかどうかを見て
あれば自動的に読み込む。
OSの機能を使えばもう少し気の利いたこともできるが

165 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)