トップページ⇒tech
792コメント210KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001v(^o^i)dNGNG
まず問題を冷静に吟味して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/
0002デフォルトの名無しさんNGNG
【コンパイラ】
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
0003デフォルトの名無しさんNGNG
>>1
お疲れ様でつ。
0004デフォルトの名無しさんNGNG
>>1
お疲れ〜
0005デフォルトの名無しさんNGNG
標準ライブラリ一覧(一部)
http://www.bohyoh.com/CandCPP/C/Library/index.html

JM
http://www.linux.or.jp/JM/
0006デフォルトの名無しさんNGNG
JISの規格書

> http://pc3.2ch.net/tech/kako/1027/10271/1027160374.html
> 漏れも規格は有料だと思ってたけど、 JISは無料で閲覧できるように
> なってるみたい。
>
> http://www.jisc.go.jp/
> ここからデータベース→JISとたどっていって規格番号を指定すれば、
> PDFで見ることができる。ちなみにC言語はJIS X3010だ。
今はJIS検索というボタンみたい。
0007デフォルトの名無しさんNGNG
プログラミング言語 C の新機能(C99)
http://seclan.dll.jp/c99d/c99d00.htm
0008デフォルトの名無しさんNGNG
宿題丸投げはこちらへ
http://pc2.2ch.net/test/read.cgi/tech/1058283913/
0009デフォルトの名無しさんNGNG
環境依存でもOKなスレッド
http://pc2.2ch.net/test/read.cgi/tech/1059041347/
0010デフォルトの名無しさんNGNG
>1
もつカレ□
0011ビル・ジョブスNGNG
>965
char c, t;
c = (t = rand()) % 25 + (t & 1 ? 'A': 'a');
じゃダメかな?
0012デフォルトの名無しさんNGNG
ひどいな
0013デフォルトの名無しさんNGNG
これはひどい
0014デフォルトの名無しさんNGNG
>>11
問い1 算術+のオペランドの評価順序を述べよ。
問い2 代入式の副作用完了点を示せ。
0015デフォルトの名無しさんNGNG
(sin(a))^2 + (cos(a))^2 の計算をさせたいんだが
浮動小数点の不正な使用と言われてコンパイルできない
なんで?
#include<math.h>はやってるし、double a もしてるのに(´・ω・`)ショボーン
0016デフォルトの名無しさんNGNG
(sin(a))^2 + (cos(a))^2 の代わりに 1.0 と書くといいよ
001715NGNG
(sin(a))*(sin(a)) + (cos(a))*(cos(a)) にしたらできますた
^ って使えないんか?
0018デフォルトの名無しさんNGNG
>>17
使えるまで諦めるな!
0019デフォルトの名無しさんNGNG
使えない奴だな
0020デフォルトの名無しさんNGNG
>>17
それはシフト演算になっちゃうから無理なんじゃ?
0021デフォルトの名無しさんNGNG
うそ教えちゃいかんよ
002220NGNG
>>21
^ってシフト演算じゃなかったっけ?
0023デフォルトの名無しさんNGNG
  &    ビットごとの AND
  |     ビットごとの OR
  ^    ビットごとの XOR
  ~    ビットごとの反転(1 の補数)
  <<   左シフト
  >>   右シフト
002415NGNG
レスがいっぱい!みんな叱咤激励ありがとう

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

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

0025デフォルトの名無しさんNGNG
>>11
問い3 アルファベットの文字数を答えよ。
0026デフォルトの名無しさんNGNG
>>15
pow(sin(a),2)+pow(cos(a),2);
これではダメぽですか??
0027デフォルトの名無しさんNGNG
>>11
問い4 (t = rand()) % 25 の値域を示せ。
0028デフォルトの名無しさんNGNG
ギリシャ語は24文字
0029デフォルトの名無しさんNGNG
>11
問い5 c=='b'となる確率は幾らか。
0030デフォルトの名無しさんNGNG
>>29
まさかとは思うが、
0
という答えを期待しているわけじゃないよね?
0031デフォルトの名無しさんNGNG
ああ、アルファベットだから、%26に自動補正してたよ。%25か。
0032デフォルトの名無しさんNGNG
>>15
どうでもいいけど、常に1.0になるの関数呼ぶのか?
0033デフォルトの名無しさんNGNG
このようなやり方で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にコピー */
}
0034デフォルトの名無しさんNGNG
釣り?
cpy(b,a)
0035デフォルトの名無しさんNGNG
釣り?
while(*y++ = *x++);
0036デフォルトの名無しさんNGNG
printfの第一引数は定数にするのが鉄則だよん。。。
0037_NGNG
http://homepage.mac.com/hiroyuki44/jaz08.html
0038デフォルトの名無しさんNGNG
>>35
このように変化いたしました。

while((*x = *y)!='\0'{
x++;
y++;
}
    ↓
while((*x++ = *y++)!='\0');
    ↓
while(*x++ = *y++);
003938NGNG
一番上のかっこが抜けました。

while((*x = *y)!='0'){
x++;
y++;
}
0040デフォルトの名無しさんNGNG
>>38-39
コピーする方向が違うっていってんだよ
004138NGNG
あ、ほんとだ・・。。
失敬いたしますたああああぁぁ、消。
004238NGNG
うを!出来た・・。
ありがとんございましたm_m
0043デフォルトの名無しさんNGNG
38がどう直したかわからないが、
ほぼ同じことをする関数
char *strcpy(char *destination, const char *source);
と、引数の順序をあわせておいたほうがいいよ。
004438NGNG
>>43
>>33の下から2行目の
while(*x++ = *y++); を
while(*y++ = *x++); という風にしただけでごんす。

&情報ありがとんです。
0045デフォルトの名無しさんNGNG
/* 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って表示したいんですができません
どうしたらいいか教えてください
0046_NGNG
http://homepage.mac.com/hiroyuki44/
0047デフォルトの名無しさんNGNG
>>45
> (a\60)

なによこれ
0048デフォルトの名無しさんNGNG
>>47 (a\60)本に書いてありました。
   (a\60)←なんなんですか?
0049デフォルトの名無しさんNGNG
a/60=1
0050デフォルトの名無しさんNGNG
>>48
一部のbasicの整数除算記号と勘違いしているのでは?

この場合は単純に a / 60 でOK。
0051デフォルトの名無しさんNGNG
キーボードで、スラッシュとバックスラッシュを打ち間違えたと見た。(・A・)
0052デフォルトの名無しさんNGNG
>>50 のやりかたでできた! 協力してくれたしと
ありがとう!
0053デフォルトの名無しさんNGNG
                                               /|_
     ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ / __/
     ┃    ∧ ∧___    今 日 は                   ┃( ( ̄
     ┃   /(*゚ー゚)♪/\                          ┃/)
 ∧ ∧  ∫ /| ̄∪∪ ̄|\/  こ こ ま で 学習し ま し た  C<ニン
 (.  *゚)━*  .|        |./                           ┃  ∧∧   ∧∧
 /   ! ┃    ̄ ̄ ̄ ̄                    2ちゃんねる ┃ (,,゚ー゚)  (゚ー゚*)
,,(_,,ノ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛〜(_,,ノ  .(_,,)〜
0054C初心者NGNG
system("dir");
等で画面に表示された文字をファイルに書きこんだりchar型配列にコピーするには如何すれば良いんでしょうか?
0055デフォルトの名無しさんNGNG
>>54
環境によっては
popen()/pclose()、_popen()/_pclose()
が使えるかもしれない。
それ以上はスレ違いなので自分で調べられたし。
0056デフォルトの名無しさんNGNG
system("dir > filename.txt");としてから
filename.txtを開く
0057デフォルトの名無しさんNGNG
                                              /|_
     ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ / __/
     ┃    ∧ ∧___    今 日 は                   ┃( ( ̄
     ┃   /(*゚ー゚)♪/\                          ┃/)
 ∧ ∧  ∫ /| ̄∪∪ ̄|\/  こ こ ま で 学習し ま し た  C<ニン
 (.  *゚)━*  .|        |./                           ┃  ∧∧   ∧∧
 /   ! ┃    ̄ ̄ ̄ ̄                    2ちゃんねる ┃ (,,゚ー゚)  (゚ー゚*)
,,(_,,ノ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛〜(_,,ノ  .(_,,)〜
005815NGNG
遅れてスマソ レスありがと
徹夜でやってたから寝ちまった...

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

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

ここの住人は優しいジェントルマンばかりですね
0059デフォルトの名無しさんNGNG
ボタンをクリックすると名前解決を行うプログラムで
最初だけ名前解決に失敗して2回目からはちゃんと
成功するのですが なじぇ?(゚▽゚;

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

if(hoste == NULL){
Memo1->Lines->Add("ほすと名の解決失敗(゚▽゚;");
}
0060デフォルトの名無しさんNGNG
>>59
ここで聞くのはなじぇ?(゚▽゚;
0061デフォルトの名無しさんNGNG
>>60
ここはどこ?(゚▽゚;

そしてどこへ行けばいい?(゚▽゚;
0062デフォルトの名無しさんNGNG
>>61
http://pc2.2ch.net/test/read.cgi/tech/1052106444/
ム板一の殺伐スレ
0063デフォルトの名無しさんNGNG
前スレ埋め立て完了。1000ゲット
0064デフォルトの名無しさんNGNG
>>63
(・∀・)イイ!!戦いだった・・次は勝つ
0065デフォルトの名無しさんNGNG
MinGWスレでも質問しているのですが
はやっていなさそうなのでここにも質問させてください。

MinGW-2.0.0-3の全ソースをダウンロードしたいのですが、
どこにありますか?
0066 NGNG
>>63
おめでとう
>>64
健闘を祈る
>>65
開発元へメール
006765NGNG
誰かまじめに答えてください。
0068デフォルトの名無しさんNGNG
http://www.mingw.org/download.shtml
にきまってるだろ。
0069デフォルトの名無しさんNGNG
strcpy(a,"%d",i);
みたいなことをやりたいんですけど
どうしたらいいですか?
0070デフォルトの名無しさんNGNG
sprintf
0071デフォルトの名無しさんNGNG
>>70
できました
ありがとうございました
007265NGNG
>>68
すいませんがどのファイルでしょうか?
0073デフォルトの名無しさんNGNG
42bitのデータ(4兆くらい)を
扱いたいのですが
sizeof(long)が4でした
どうしたらいいでしょうか?
0074デフォルトの名無しさんNGNG
・2つセットでつかう。
・sizeofが8を返す型をみつける
0075デフォルトの名無しさんNGNG
アセンブラを使わないC++による多倍長計算 嫁。

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

0076デフォルトの名無しさんNGNG
>72
Currentでsrcとあるもの全部。
007765NGNG
>>76
その中にあるgccはWindows用ですか?
0078デフォルトの名無しさんNGNG
>>77
いい加減にスレ違いな粘着はやめろ。
007965NGNG
>>78
ほんとにまじめなんです。

CurrentにあるgccのsrcがあるのですがWindows用のコンパイルでも通りますか?
これが最後の質問ですから誰か答えてください。
0080デフォルトの名無しさんNGNG
Windows2000におけるgcc-3.2.3のコンパイル方法
http://homepage1.nifty.com/kuuku/gcc-sjis/howtobuild.html
0081デフォルトの名無しさんNGNG
> 898 :デフォルトの名無しさん :03/08/04 20:50
> MinGWのソースってダウンロードできるの?
0082デフォルトの名無しさんNGNG
double型でわからないところがあります。

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

これを実行するとd1が2.500000ではなく2.000000となるのは、
5にも2にも小数点とゼロが付いていないからそのまま処理された
ということでよいのでしょうか?
0083デフォルトの名無しさんNGNG
>>82
いいけど、整数同士で計算するからと理解した方がよい。
008482NGNG
>>83
わかりました。
ありがとうございます。
0085デフォルトの名無しさんNGNG
以下はレコードの削除をするコードなんですが、
どうしても理解出来ないため、どなたかご教授願います。
(某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つ前の位置にずらして書き込んでいく方法だそうです)
0086デフォルトの名無しさんNGNG
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へ戻る
0087デフォルトの名無しさんNGNG
>>86
おお、ありがとうございます!
矢張り”一応”該当箇所の削除は出来るものの、挙動がおかしいですね…。

正誤表も無く、困っていました。
重ね重ねありがとうございました。
0088デフォルトの名無しさんNGNG
>>87
> 削除レコードから後を1つ前の位置にずらして書き込んでいく

ということはひとつのレコードを消した場合はファイルサイズはRECSIZE分小さくなると考えていいのか?
0089デフォルトの名無しさんNGNG
>>88
すいません。よく分かりません…。
ただ、本当に正しい挙動をする「レコードを削除するコード」であれば、
ファイルサイズはRECSIZE分小さくならなければおかしいですよね。

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

ちなみに、この某Cの参考書というのは、
「C言語 文字列操作+ファイル入出力 完全制覇」です。(一応)
0090デフォルトの名無しさんNGNG
>>89
うん。なるはずない。
必要なものだけ読みとって改めて"w"でfopenしたファイルに書き込むか、>>85のあとになんらかの方法で切り詰め(例えばUNIXならtruncate)ないとね。
009185 = 87 = 89NGNG
>>90
なるほど!とても参考になります。
ありがとうございました。
0092デフォルトの名無しさんNGNG
プログラムの勉強を始めようと思っているのですが
CとC++どっちから始めようか悩んでまつ・・・。
どっちから始めたほうがよいですかね?
0093デフォルトの名無しさんNGNG
先ずは日本語の勉強をしろ。
0094デフォルトの名無しさんNGNG
参照
http://www.urlto.net/ad01/
0095デフォルトの名無しさんNGNG
悪質な業者にご注意下さい!!
009673NGNG
>>74
2つセットで使った後
表示を10進数にするための方法がわかりません
>>75
多倍長で検索してみました
出てきたものは大体入力の時点でBCD等に変換して
数値を扱ってます
すでにあるデータは42bitで
表示のみ10進にしたいのですがどうすればよいでしょうか?
0097デフォルトの名無しさんNGNG
42bit以上の型くらいありそうだけど。
C99に準拠していればlong long intが使えるし。
0098デフォルトの名無しさんNGNG
>>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です
0099デフォルトの名無しさんNGNG
65536*(上位桁)+(下位16bit)
0100デフォルトの名無しさんNGNG
>>98
double は整数ではないからシフト演算子は使えない。
long long int は必ずしも使えるとは限らない。
long int 2つを使って42bit整数を表すには、
下位32と上位10などビットで分ける方法のほかに、
10^8などで割った商と余りに分ける方法もある。
シフト演算などのビット演算をしたいなら前者の方が楽だが、
表示するのは後者の方がずっと楽。

私の同僚が実装した他倍長クラスは、両方のタイプを
交換して使えるようになっていたがそこまでは必要ないだろう。
0101デフォルトの名無しさんNGNG
>>100
上位10bitのそれぞれに10^8で分けたlongを持っておいて
(あらかじめ計算済みのlong配列を20持っておいて)
bitがたつごとに足し合わせて表示するってことでしょうか?
0102デフォルトの名無しさんNGNG
>>98
具体的に何がしたいんだ?
>>73を見る限りでは double 使えばいいように感じるが
0103デフォルトの名無しさんNGNG
>>102
すでにある42bit(連続でない)のデータを10進表示したいのです
0104デフォルトの名無しさんNGNG
その、既にある42ビットのデータとやらはどうやって保持してるんだ?
0105デフォルトの名無しさんNGNG
もしかしたら、printf("%15f", doubleValue);ってだけの話か?
0106デフォルトの名無しさんNGNG
>>103
全然具体的になってないんだが…
0107デフォルトの名無しさんNGNG
>>104
33+9です
なんでとかは聞かないでください
僕が決めたんじゃないんで
0108デフォルトの名無しさんNGNG
多倍長 でぐぐったら一発でこんなの出てきたんだけどさ・・・
http://www5.airnet.ne.jp/tomy/cpro/longint.htm

少しはググ(ry
0109デフォルトの名無しさんNGNG
リンク先のプログラムを提出したら先生に
2分木を作成後に,任意の節(idを指定)のデータを木を根から
辿りながら見つけて出力できるようにしなさいって言われた。
どこをどうしたらいい?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=131
0110デフォルトの名無しさんNGNG
>>109
スレ違い。宿題スレへどうぞ。
0111109NGNG
すみません。
0112デフォルトの名無しさんNGNG
マズワ日本語ノ勉強ヲシレクラサイ
デカクルトキワワシュレズニ
0113デフォルトの名無しさんNGNG
   ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (* ゚Д゚)< #include <hosh.h>
〜( UUノ  \__________
0114デフォルトの名無しさんNGNG
__cdeclを関数の前につけると、C の名前付け規約が適用されるということでよろしいですか?
0115デフォルトの名無しさんNGNG
よろしくありません
0116デフォルトの名無しさんNGNG
>>114
>__cdeclを関数の前につけると、C の名前
何か勘違いしてると思われ。
0117デフォルトの名無しさんNGNG
関数呼び出し規約はC本来のやり方でやれと明示することになるけども、
名前付け規約はちっとも関係ないよね

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

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

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

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

その代わり呼ばれた側がパラメータの数などについて完全に把握できなければならないので、
たとえばprintfなどのパラメータが不定な関数が実現できなくなる。
0118デフォルトの名無しさんNGNG
>>117
>たとえばwindowsのAPIはいわゆるPascal型の呼び出し規約だからね。
今更Win16の話されてもこまるんだけどな・・・。
0119デフォルトの名無しさんNGNG
>>117
>たとえばprintfなどのパラメータが不定な関数が実現できなくなる。

wsprintf (windows.h)
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_wsprintf.htm
0120デフォルトの名無しさんNGNG
小・中学生の盗撮画像やマンコがいっぱい!!グチョグチョだよ♪
詳しくはこちら→http://e-rebirth.com/af/in.cgi?id=30
0121デフォルトの名無しさんNGNG
>>118
ああ、すまなかった__cdeclの存在価値を示すために古いの出しちまったw
0122デフォルトの名無しさんNGNG
threchigai
0123デフォルトの名無しさんNGNG
関数へのポインタは
int (*func)()
ポインタを返す関数は
int *func()
と表すけど、
ポインタを返す関数へのポインタはどうやって書くのでしょうか?
0124デフォルトの名無しさんNGNG
int *(*p)(double,char *);
0125デフォルトの名無しさんNGNG
その二つを合成すれば得られるだろ
0126デフォルトの名無しさんNGNG
>>125
名回答
0127デフォルトの名無しさんNGNG
全角と半角を区別したいんですけど分かりません
教えてください
0128デフォルトの名無しさんNGNG
>>127
Vecterってどうですか?
http://pc2.2ch.net/test/read.cgi/software/1026283187

このスレに詳しい奴がいるぞ。
0129デフォルトの名無しさんNGNG
ttp://www.catnet.ne.jp/kouno/c_faq/c13.html#16
上記に
 rand() % N
よりも
 (int)((double)rand() / ((double)RAND_MAX + 1) * N)
の方がよりよい方法とあるが間違いではないのか?
以上終了。
0130デフォルトの名無しさんNGNG
そうですね。
0131デフォルトの名無しさんNGNG
 rand() % N
には致命的な欠陥があるが、終了しているようなので書くのは控えよう。
0132デフォルトの名無しさんNGNG
RAND_MAX>>N のときは致命的でもなくは無くない?
0133デフォルトの名無しさんNGNG
>>131
Nが0だとまずいとか?
0134デフォルトの名無しさんNGNG
>>132
そのほうが致命的。

とにかく、>>129のURL先を読もうよ。答が書いてあるよ。
0135デフォルトの名無しさんNGNG
「致命的」とは大げさな。
そんなことは自分で検定して用途に応じて判断すればいい
0136デフォルトの名無しさんNGNG
全然致命的じゃねぇよ。

rand()%Nで十分。
rand()%Nの乱数性に不満があるような奴がrand()使ってるとも思えん。
0137_NGNG
http://homepage.mac.com/hiroyuki45/jaz04.html
0138デフォルトの名無しさんNGNG
rand() % N
の方が有利な面もあるのに、一律ダメだと言う表現がいかんのではと。
 ・速度
 ・(rand() % N) == N/2  ←この判定方法は簡単で便利
0139デフォルトの名無しさんNGNG
10で割った余りが5かどうかって
0かどうかでも確率的には同じだな
0140デフォルトの名無しさんNGNG
>139
違いますよ。
0141140NGNG
>139
ごめん10の場合は同じか・・・ RAMD_MAXによるけど。
0142デフォルトの名無しさんNGNG
>135
つまり、randは下位bitがあまりランダムではない、ということ?
そんなの実装依存の話だろ。(VCは32bitの線形合同法で手に入れた
値を>>16して返している)
0143デフォルトの名無しさんNGNG
129は当然読んだ。提示されたURLを受けて、なお「致命的」と
言い張るからには、てっきり別の話だと思ったんだが。
たとえば、randの返す範囲が(0,1,2)のとき、%2とすると、
出現確率が、0:66%、1:33%になる、とか。
0144デフォルトの名無しさんNGNG
>143
(int)((double)rand() / ((double)RAND_MAX + 1) * N)
でも同じこと。
0145デフォルトの名無しさんNGNG
実装依存に変わりないがNが大きけりゃ乱数の周期がもろにでてきて、rand()自体が役に立たないと思う。
0146デフォルトの名無しさんNGNG
処理速度重視の字句解析プログラムを作成したいのですが、
regexとflex、どちらの方が良いのでしょうか?
0147デフォルトの名無しさんNGNG
C言語を今から始めようと思う初心者なんだがまず何すればいい?
GCCとかいうのDLしてみたんだが解凍中にエラーが出る。

いきなり挫折の予感。
0148デフォルトの名無しさんNGNG
全角英数をやめる
0149デフォルトの名無しさんNGNG
>>147
既に挫折している予感。
0150147NGNG
あの拡張子はなんなんだ人をおちょくってるとしか思えん拡張子の分際で
なにがtar.gzだおめでてーな。

+Lhacaに放り込んだら解凍処理じゃなくて圧縮処理が始まったよ(´A`)
0151デフォルトの名無しさんNGNG
>>150
Lhaplas使おうぜ。綴り間違えてるかな?
0152デフォルトの名無しさんNGNG
落としたGCCはソースで、鶏と卵の関係に悩む予感。
0153デフォルトの名無しさんNGNG
つかcygwinとかも入れてるんだろうな?
0154デフォルトの名無しさんNGNG
>>152
gccはアセンブラとlexでどうにかなるんじゃなかったっけか?
0155147NGNG
ラプラスで解凍は出来た。順調だな。
cygwinは説明読んでみたがわけわからん。
ウィンドウズで使えるようにする為の物らしいが、
UNIXとかAPIとか書かれてもわけわからんな。

つーか解凍したフォルダの何処見てもexeファイルが無いんだが
どれクリックすりゃ動くんだ糞がどこか分かり難い所に隠されてるのか。
cygwinってのを使わないと使えないのか。どうなんだ。そうなのか。
0156デフォルトの名無しさんNGNG
ザコイ
0157デフォルトの名無しさんNGNG
>>156
最近の中学校ではそんな言葉が流行ってんのか。
0158デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0159デフォルトの名無しさんNGNG
>>158
うん?もしかして高校生だったか?そらすまんかった。
0160デフォルトの名無しさんNGNG
変なおやじ。
0161デフォルトの名無しさんNGNG
ざこいなんて初めて聞いた
0162デフォルトの名無しさんNGNG
ザコい

〔ざこ(雑魚)の形容詞化〕
(形)
主に若者語で,弱い。弱々しい。取るに足らない。ざこいとも。「―・いヤツだ」
0163デフォルトの名無しさんNGNG
やるな。goo。
0164デフォルトの名無しさんNGNG
>>163
IMIDASの男子高生用語コーナーじゃん。
0165デフォルトの名無しさんNGNG
そういうコーナー読むのって、やっぱおやじ?
0166デフォルトの名無しさんNGNG
なるほど
0167デフォルトの名無しさんNGNG
ってゆーかもう10年以上前から使ってるぞ
0168デフォルトの名無しさんNGNG
>>167
暴走族かなんかで?

つぅか10年も使うなよ・・・。
0169デフォルトの名無しさんNGNG
>>168
いや、小学校とかで、普通に
0170デフォルトの名無しさんNGNG
>>169
16〜22歳か。
0171デフォルトの名無しさんNGNG
いい具合にスレ違いだな
0172デフォルトの名無しさんNGNG
いい具合に濡れてるな
0173厨房NGNG
linux,gccで自作プログラムをコンパイル→実行したら、
停止してしまいます。
ctrl + alt + delete で、システム自体の停止はできるんですが、
プログラムだけを停止する方法がわかりません。

どうしたらいいか教えて下さい?
0174デフォルトの名無しさんNGNG
C言語って、何故Cなんでしょうか?
Algol...>B..>Cって事なんでしょうか?
一つヨロシコ。
0175デフォルトの名無しさんNGNG
>>173
実行したら停止するんでしょ?
0176デフォルトの名無しさんNGNG
>>174
B>BCPL>C>Delphi

だったと思われ。
0177デフォルトの名無しさんNGNG
>>176
BCPL>B>C>Delphiだろ
0178デフォルトの名無しさんNGNG
>>173
キーボードのCtrl-Z を押す
0179147NGNG
俺のC言語ライフはここまでなのか?
0180厨房NGNG
>>175
実行すると、プログラムが停止します。
ctrl + deleteで、シェルに戻るとか
そういうの無いんでしょうか?
0181厨房NGNG
>>178
ありがとうございます。
0182デフォルトの名無しさんNGNG
>>180
その前に無限ループつぶせ。
0183デフォルトの名無しさんNGNG
>>176,177
レスサンクス。
BCPLって初耳、検索して期末。
ってCの次はDelphiすか
当然、D言語来るだろって思ってた。
0184デフォルトの名無しさんNGNG
混じれすするとC++・・・
0185デフォルトの名無しさんNGNG
gccって総合開発環境なの?コンパイラだけ?
Borlandの方が楽なのかな。
0186デフォルトの名無しさんNGNG
>>150
拡張子とは何か勉強してきた方がいいな
0187デフォルトの名無しさんNGNG
これくしょん
0188_NGNG
http://homepage.mac.com/hiroyuki45/
0189デフォルトの名無しさんNGNG
>>186
unixでは拡張子なんて飾りですよ。
0190デフォルトの名無しさんNGNG
>>189
偉い人にはそれがわからんのです
0191デフォルトの名無しさんNGNG
部分的には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
が何をやっているのかわかりません。どういうことなんでしょうか。
0192デフォルトの名無しさんNGNG
>>191
dって言う変数と11011111のAND取って・・・何がしたいんだろう?
0193デフォルトの名無しさんNGNG
16進文字を整数に直してるんでしょ。
0xDFと&を取れば小文字を大文字に出来る。
0194デフォルトの名無しさんNGNG
>>193
へぇ、アイデアマンですな。
0195191NGNG
>>193
なるほど。そういうことだったんですか。
これは文字コードに無関係なんですか?
0196デフォルトの名無しさんNGNG
>>195
もちろんASCIIコードオンリーかと。
0197デフォルトの名無しさんNGNG
>>195
ASCII限定。
このコードはURLだから無問題。
0198デフォルトの名無しさんNGNG
>>193
アルファベットの大文字小文字の間に記号がマッピングされてるのは、
この演算を想定しての事なんですか?


疑問が氷解しました。
0199デフォルトの名無しさんNGNG
>>198
その通りです。
0200191NGNG
>>195
なるほど。
0201デフォルトの名無しさんNGNG
プログラムが動作しているOSがWindowsかUnixかで処理を分けたいんですが、何かいい方法はありますでしょうか
0202デフォルトの名無しさんNGNG
扱う文字セットがASCII限定なら、
'%'、'A'、'0'も0x25、0x41、0x30にしておかないといけないのでは?
0203デフォルトの名無しさんNGNG
>>201=http://pc2.2ch.net/test/read.cgi/php/1048393217/287
0204201NGNG
>>203
レスがつかなくなるので変なところと結び付けないでほすぃ
0205デフォルトの名無しさんNGNG
ふつうは、#ifdefとか使うけど。
0206201NGNG
>>205
#ifdefをどのように使うんでしょうか。もう少し具体的に教えてもらえると嬉しい
0207デフォルトの名無しさんNGNG
>>201
死ねクソマルチ。
0208デフォルトの名無しさんNGNG
同じバイナリで、WINDOWS,UNIX両方で動かしたい、という奇天烈な質問ではなかろう。
Win32のexeを作れるコンパイラは、WINDOWSとか、WIN32とかがdefineされているといえる。
#ifdef WINDOWS
LockFileEx(...);
#else /*面倒だから、Win以外はUNIXと仮定する。本気になったら、autoconfとか使う(w*/
flock(...);
#endif
と処理を分ければよろしい。
0209デフォルトの名無しさんNGNG
>>208
cygwin使えば出来ないことも。
0210201NGNG
やっぱりマルチっていわれたλ........
>>208
WINDOWSかWIN32で判定すればいいんですね。っていうかファイルのロック処理じゃなくてディレクトリの処理なんですが・・・まぁ、なんというか。

>>209
cygwinでコンパイルすればってことですか?cygwin使ったことがないのでよくわかりませんが。
0211デフォルトの名無しさんNGNG
>っていうかファイルのロック処理じゃなくてディレクトリの処理なんですが
ならはじめからそう書けよ。
0212201NGNG
>>211
あわわ、ごめんなさい。

今ふと思いつきましたが208さんは「マルチかよ。まぁしかたないから答えてやるか」とか思ってたんでしょうか。なんて心の広い方だ。ありがとうございます。
0213デフォルトの名無しさんNGNG
>>208
> Win32のexeを作れるコンパイラは、WINDOWSとか、WIN32とかがdefineされているといえる。
_WIN32ってのが多い。
0214デフォルトの名無しさんNGNG
関数のプロトタイプ宣言は例えば
int foo(int, int, double); (関数名は例です)
のように書けと参考書に(明解 C言語入門, 柴田望洋)書いてあるのですが、
/usr/include/*.hなどを除くと
int foo(int mode, int level, double score);
のように引数の変数名も書いてあります.でgcc 3.2ではどちらも通ります.
どちらがよりよい書き方だとされているのでしょうか?
0215デフォルトの名無しさんNGNG
どっちでもいい。
うまい引数名を使えばそれだけ分かりやすくはなるから、
外部に公開するようなものなら付けた方がいいと思うけど。
0216214NGNG
>>215 ありがとう!
とりあえず付ける流儀で行きたいと思います.
少し調べてみたらOSのinclude/の下の.hはほとんど引数名が
書いてあった.tcp wrapperは引数の型名だけだった.
両方使われているようです.
0217デフォルトの名無しさんNGNG
原則として、引数の名前も書いておく方がわかりやすくていいのだが、
ごくまれに困ることがある。

たとえば
#define score 20
と定義したあとで、
int foo(int mode, int level, double score);
が書かれたファイルをincludeするとコンパイルエラーになる。
0218C初心者NGNG
基本的な使い方が解ったあとは何をすれば良いのでしょうか?
0219デフォルトの名無しさんNGNG
>>218
なんでも自分の好きなもの作りなさい
作りたいものが無いならプログラムやめなさい
0220214NGNG
>>217 なるほど... 引数名をつけるにしてもかぶらない
名前を付けるようにせよ、ということですね.
ところでこれもヘッダファイルの書き方の"流儀"の問題
なのですが、stdio.hを2回defineしないようにする時などの
#ifndef FOO
#include <stdio.h>
#define FOO
#endif /* FOO */
でFOOの命名規則に何かデファクトスタンダードはあるので
しょうか.例えばstdio.h -> _STDIO_H (大文字にして.を_に、
先頭に_をつける)とか.
0221デフォルトの名無しさんNGNG
>>220
1 グローバル スコープを持ち、_で始まる名前
2 _で始まり、その次が大文字の名前
3 __で始まる名前(C), __を含む名前(C++)
は処理系のために予約されてる。
0222214, 210NGNG
>>221 なるほど、こんな規則あったのか. ありがとう.
INCLUDED_STDIOとか色々やってるみたいですね.
_を付けるって言うのは真似しちゃいけないということですね.
適当に命名規則を付けることにします.GNUとかで推奨
規則ないのなかなあ.
0223デフォルトの名無しさんNGNG
>>222
「先頭に」だぞ?
0224214, 210, 222NGNG
>>223 分かってます.書き忘れました.
_を先頭に付けるって言うのは規則上真似しちゃいけないということ
ですね.その他の部分では「きっとGCCとか書いている人はCの超上級
者」->「その人たちのCの書き方を真似る」ということでOKですよね?
0225デフォルトの名無しさんNGNG
>>224
コーディングスタイルで調べてみれ。
gccの書き方が最良って訳でもない。
0226デフォルトの名無しさんNGNG
>>224
インクルードファイルのリエントラント防止が目的なら、
インクルードファイルの名前を利用するのがよい。

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

>>217
一般的に、そういう名前をdefineするのがよくない、というのが妥当な回答。
定数は大文字にすることで、一般的な引き数とは被らなくなる。
0227デフォルトの名無しさんNGNG
>>226
妥当というか問題を先送りしただけのような気もする。
0228デフォルトの名無しさんNGNG
整定数はenumにしようぜ。
ところで
> インクルードファイルのリエントラント
これ普通に使う言い方?
0229デフォルトの名無しさんNGNG
enum { mon, tue, wed, thu, fri, sat, sun };
昔これがコンパイルエラーになる環境があったな。
0230デフォルトの名無しさんNGNG
>>228
この#ifndefの使い方は、インクルードガードなどと呼ばれてる。
0231デフォルトの名無しさんNGNG
>>228
インクルードファイルの再入可能性

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

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

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

それとたまに関数作って最後の return のところで
return -1; や、以前に定義してあったとして return y;
などありますがどうしてこうなるかがわからなくて・・・
自分的には正常に終了するときの return 0; しかわからないので
なにかとCの初心者なのでお願いします。
0233デフォルトの名無しさんNGNG
整数nに1足して返す関数なら戻り値も整数だろ
int add1(int n){return n+1;}
0234デフォルトの名無しさんNGNG
返り値が-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とすることも可能(おすすめはしない)。

もし、おかしなところがあればツッコミ希望
0235デフォルトの名無しさんNGNG
>>232
標準ライブラリの関数がどのようになっているか
見ていってみたら?
0236デフォルトの名無しさんNGNG
>>234
> !abc(2) は0 !abc(1)は非0になるのでif文に通すのに利用できる
!0の結果は1
0237デフォルトの名無しさんNGNG
>>236
!0 = 0xFF

とか言ってみる。
0238デフォルトの名無しさんNGNG
>>237
なんでよ。
0239デフォルトの名無しさんNGNG
>>237
右辺値への代入は出来ません。
0240デフォルトの名無しさんNGNG
C 言語でスペースを含んだ文字列の扱いで、便利な関数ってありますか?
ファイルから
word1 word2before\ word2after word3
みたいな行を読み込んで、
"word1" と "word2before\ word2after" と "word3" の
3つに分けたいのです。

読み込むファイルのほうでは、スペースを含む単語は \ を使って書いてあります。
また、行ごとに単語数が変わります。
fscanf で %s で読み込んで、strlen と strcmp 使って、最後が \ だったら、
strcat で次の単語とつなげるって方法と、
fgetc で一文字ずつ読み込んで \ と スペース で判定する方法は思い浮かんだのですが、
どちらも効率が悪いような気がして。
なにか便利な関数があったら教えてください。
0241デフォルトの名無しさんNGNG
>>240
strtok
0242240NGNG
>>241
レスありがとうございました。
調べて使ってみます。
0243デフォルトの名無しさんNGNG
★オナニー共和国です★ ★貴方の見たい娘がイッパイ(^0^)★無修正★
http://endou.kir.jp/akira/linkvp.html
0244デフォルトの名無しさんNGNG
>>241
確か状態を保持するから再入不可能じゃなかったっけ?その関数。
0245デフォルトの名無しさんNGNG
>>244
そだよ。
スレッドで使うときは注意。
0246232NGNG
>>233〜>>239
の人レスありがとうございます。
今から試してみます
0247デフォルトの名無しさんNGNG
先生

コンテキストって何ですか?
0248デフォルトの名無しさんNGNG
>>247
文脈
0249220, 222, 224NGNG
Thanks >>225, >>226, >>230
INCLUDED_とかつけるのは面倒なので、
"ヘッダファイル名を大文字にして.を_にする"でいこうと思います。
http://www.02.246.ne.jp/~torutk/cxx/file/includeguard.html
この辺を見ました。
他にも世の中にはINCLUDED_大文字, 大文字_INCLUDED, INC_大文字, USE_大文字
とかいろいろあるみたいです。
0250デフォルトの名無しさんNGNG
1000/4
0251デフォルトの名無しさんNGNG
「俺が処理系だ」と十回唱えれば先頭に_を使ってもよい
0252デフォルトの名無しさんNGNG
gccとcygwinのDLとインストールはしたのですが、
ここから何をすれば良いのでしょうか?
メモ帳とかでソース書いて.cにしてコンパイルして.exeにする(?)と書いてあったのですが、
コンパイルってどうやるんですか?
cygwinを起動して出てくるウィンドウで何かを入力するのでしょうか?

以前はHSPを使っていたので、あの使いやすさに慣れたせいか
C言語を前に早くも苦戦中です。
どなたか詳しく教えてください。おねがいします。
0253デフォルトの名無しさんNGNG
移植性を考えなくてよいなら、識別子をアンダースコアで初めてもよい。
コンパイラのバージョンが上がってコンパイルできなくなっても泣かない。
0254デフォルトの名無しさんNGNG
>252
gcc ファイル名
0255デフォルトの名無しさんNGNG
>252
初心者なら MinGW の方がいいかもね。
0256デフォルトの名無しさんNGNG
インクルードガードのdefineはランダムな文字列を含ませるのが鉄則、でもない
0257デフォルトの名無しさんNGNG
>>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; ってなってることが多い。
                  まちがってたら、突っ込みよろしく。
0258デフォルトの名無しさんNGNG
>>257
> hoge(a) って文字は、101 って文字に置き換えられる。
釣?
0259デフォルトの名無しさんNGNG
>>258
インライン関数のことを言いたいんじゃないかな(なわけねえ)
0260デフォルトの名無しさんNGNG
>>258
Yeah.
0261デフォルトの名無しさんNGNG
>>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 の使いかたも調べましょう。
0262デフォルトの名無しさんNGNG
>>261
UNIXの部屋と言うページにコマンド(?)の一覧が載っていて、
そこを見て大体のコマンドの意味は分かりました。

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

何かやり方が間違っているのでしょうか?
使っているPCはXPでgcc-3.3.1です。
0263デフォルトの名無しさんNGNG
gccの-c-g-O-oなどは、cygwinを起動して出てくるウィンドウで入力すれば良いんでしょうか?
その際にgccの置かれているフォルダの設定などは必要ですか?
hogehoge.cと同じフォルダに置いておくのかな。

C言語の講座ページはいくつか読みましたが、
一番の基礎から解説してくれてるページはなかなか無いですね。
基本的な構造や役割からしていまいち分かってない感じです・・
使って見たら理解できると思うのですが。
0264デフォルトの名無しさんNGNG
早く夏休み終わらないかなあ。
0265232NGNG
>>257
ありがとうございました。よくわかりました!
intとかの戻り値の選択のしかたはわかりました。でも、
返り値のいらない void は引数のところは何でもいいんですか?

またまた質問ですみません。
0266デフォルトの名無しさんNGNG
>>262
>何かやり方が間違っているのでしょうか?
ここで訊く事が間違っている、という事に
一刻も早く気付くべし。
0267デフォルトの名無しさんNGNG
ここってC言語の質問スレじゃないんですか?
0268デフォルトの名無しさんNGNG
     ///////
    ///////____________
    ///////  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
   ///////              (~) チリンチリン
   ///////              ノ,,
  ///////     ∧_∧         / ̄ ̄ ̄ ̄ ̄ ̄
  ///////     ( ´∀`)( 厨 ) )) <  夏だなあ〜
 ///////      (つ へへ つ      \______
///////   //△ ヽλ  ) ) 旦
//////  l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
/////    ̄| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| .| ̄
////     ^^^          ^^^

         2chの夏。厨房の夏。
0269デフォルトの名無しさんNGNG
>大体のコマンドの意味は分かりました。
わかってねーし(藁
0270デフォルトの名無しさんNGNG
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/
0271デフォルトの名無しさんNGNG
2ch内リンクでもhを抜いている馬鹿
0272デフォルトの名無しさんNGNG
>271
一応 > と >> の効果の違いぐらいはありますが・・・
0273デフォルトの名無しさんNGNG
>>272
???
0274デフォルトの名無しさんNGNG
ああ、リンクは2chに高負荷をかけるとでも思っているのか。
0275デフォルトの名無しさんNGNG
c言語やりたいだけなら
わざわざcygwin入れる必要ないべ?
0276デフォルトの名無しさんNGNG
>>275
gccなら要るだろうけど、cygwin要らないコンパイラは色々あるね。
0277デフォルトの名無しさんNGNG
>>274
そんな事すら指摘されないと分からんとは、禿だな
0278デフォルトの名無しさんNGNG
>276
1にこうあるから順番にやってみたんじゃないかな?
 【Win32用の開発環境のみ。】
 gcc-cygwin
 gcc-mingw
順番入れ替えたほうが良くねぇかな。

>277
そう思えば > 使ってる香具師全員に指摘して回るんだな。
0279277NGNG
俺は274にレスしてるんだが、何が言いたい?
0280デフォルトの名無しさんNGNG
>279
おっと流れを勘違いしたようね。これは失礼。
0281デフォルトの名無しさんNGNG
「2chに高負荷をかける」ってのが笑えるな
お前らも連呼してみろよ
3回目で吹き出すぞ
0282デフォルトの名無しさんNGNG
データはちょっとだけ小さくなるぞ。
たぶん>>270じゃ>>232には移動できないだろうけどな。
0283デフォルトの名無しさんNGNG
顔真っ赤です
0284デフォルトの名無しさんNGNG
鯖
0285デフォルトの名無しさんNGNG
「ミニロトを1500個、ダブりなしで選択する」っての
自分の頭じゃいちいち照合するか、ソートしてから照合するかしか
思いつかないんですが、もっとスマートな方法ってありますか?

ちなみに void main(void){ } しか使ったことありません。
0286デフォルトの名無しさんNGNG
↑あ、ミニロトのルールは
・1-31の数字を5つ
・数字のダブりはなし
です。
0287デフォルトの名無しさんNGNG
>>285
Cの話じゃない。

ちなみに void main(void){ } は使ったことありません。
0288デフォルトの名無しさんNGNG
#ifdef
を使うときに
#ifdef A || B || C
としてもOKでしょうか。
0289デフォルトの名無しさんNGNG
>>288
そんなときのためにdefined()があるわけですよ。
0290デフォルトの名無しさんNGNG
>>289
なるほど
#ifdef A || B || C
の書式は文法的に間違いってことですね。大人しく #if defined(A) || defined(B) にするのがイイのか
0291デフォルトの名無しさんNGNG
サイズを小さくするか。ならメール欄も空にしろよな。
0292ビル・ジョブスNGNG
>>290
ちと話は違うけどプリプロセッサ出力を見ると楽しいよ。(そんなオレは変?)
ちとC言語の勉強になったりもする。
もう15年くらい昔だけどC言語の勉強してた頃「え!こんな書き方許されるのか!」って
よく驚かされたよ。
0293デフォルトの名無しさんNGNG
どっかの人大杉サーバならともかく、過疎板で負荷など気にする必要はない。
こういう奴ってprofとか使わずに闇雲に変な最適化をして
全然可読性のない糞ソースをひねりだすんだろうな。
0294デフォルトの名無しさんNGNG
>>293
>変な最適化
最適じゃねぇじゃん。
0295デフォルトの名無しさんNGNG
>>293
うーん…、釣り?
そんなレスしてる漏前様も「こういう奴」に入ると思われ。
0296デフォルトの名無しさんNGNG
何時までもネチネチ粘着してるのは何だろうね
変だね、キモイね、エンガチョだね
0297デフォルトの名無しさんNGNG
どなたか教えていただきたい事があります。
特に変わった事はせずに、ふつうにmallocして、reallocしてという感じ
で書いたプログラム(いくつかポインタがあってすべてreallocしたりする
わけではない)を書いて、free関数で解放するのですが、なぜかmalloc
オアreallocで確保するメモリが多いか少ないときにFreeを使う所で
エラーが出てるみたいなんです。(いつもでるわけではない)これは
なぜでしょうか?メモリ関係で何か注意しないといけない事を忘れてる
とかでしょうか?ご教授ください。
 あと、やっぱりプログラムが終わればメモリは勝手に解放されるわけ
ではないんですよね?さっきからそのせいでパソコンが落ちまくる(泣)。
0298デフォルトの名無しさんNGNG
>>297
まともなOSであれば勝手に解放するぞ
0299デフォルトの名無しさんNGNG
>>298
Meなんですけど、解放しないようなんですよね〜
メモリのお掃除屋さんのグラフがどんどん減ってくんですよ。
(そのアプリを起動、終了を繰り返すと)
0300デフォルトの名無しさんNGNG
free()でエラーが出るのは、どっかでミスって二重に開放しようとしてるのでは?
0301デフォルトの名無しさんNGNG
>>300
そう思うんですけど、出る時と出ない時があるのが謎なんですよ。
いつも出るってんならまだ探しようもあるんですが・・・・
Strcpyはアドレス関係ないですよね?
0302デフォルトの名無しさんNGNG
>>297
ageろよ。

そのコードを貼ってみて。
0303デフォルトの名無しさんNGNG
>>306
邪魔だし、うまく書き込めないので、これを見てください。
http://www12.ocn.ne.jp/~mygrid/souse.txt
0304デフォルトの名無しさんNGNG
>>301
アフォ。
「未定義」とは何か、
3600000000000nsほど考えてこい。
0305デフォルトの名無しさんNGNG
コマンドライン引数を与えていないだけだったりして
0306デフォルトの名無しさんNGNG
sizeof(char)って・・・
0307デフォルトの名無しさんNGNG
>>304
どういう意味でしょうか?「未定義」ってのググッってみた方がよいのでしょうか?

0308デフォルトの名無しさんNGNG
>>306
ま、まずいんですか?(汗)
0309デフォルトの名無しさんNGNG
>>303
この問題とは関係ないだろうが、mallocに失敗してもstrcpyしているがいいのか?
0310デフォルトの名無しさんNGNG
規格に従ういかなる処理系においても sizeof(char)==1
0311デフォルトの名無しさんNGNG
>>308
sizeof(char)==1
0312デフォルトの名無しさんNGNG
>>303
sprintfには%lfなんかない。doubleは%f
0313デフォルトの名無しさんNGNG
sizeof(アチャー)
0314デフォルトの名無しさんNGNG
>>311
なるほど、使う意味がないと。こりゃ勉強になりました。一応
やっといた方がいいかなと思ってつけといたんですけど。
いらないんですね。
0315デフォルトの名無しさんNGNG
>いらないんですね。
そうでもない
0316デフォルトの名無しさんNGNG
VBスレでみかけたあれなのかなぁ。スペルミスとかmemmoveを使えばよさそうなところとか似ている。
0317デフォルトの名無しさんNGNG
VC++.NETはsizeof(char)==2だがな
0318デフォルトの名無しさんNGNG
>>317
まじで!?
0319316NGNG
こういうこと

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);
}
0320デフォルトの名無しさんNGNG
>VC++.NETはsizeof(char)==2だがな
その時点で、スレ違いだな
0321デフォルトの名無しさんNGNG
char
char キーワードを使用して、次の表に示された範囲の Unicode 文字を宣言します。Unicode 文字は、世界中の文字言語のほとんどを 16 ビット文字で表します。

0322デフォルトの名無しさんNGNG
とりあえず。プログラムに直接の問題は無さそうですか?あと、今思いついた
んですけど、中で呼び出しているdoublemultiplyって関数の戻り値を解放
してないってのはなんか関係ありますかね。そっちの関数もreturn文で
動的に領域を確保したポインタ(言葉の使い方がおかしいかも)を返して
るんですけど。
0323デフォルトの名無しさんNGNG
>>322
freeで落ちるらしいが、具体的にどのfreeで落ちるの?mainの中のfree?
0324デフォルトの名無しさんNGNG
>>322
それはOK
標準じゃないけどstrdupなんてまさにそういう関数だし。
0325デフォルトの名無しさんNGNG
>>323
いや、関数の中で落ちちゃってるっぽいです。で、freeを全部取り除いてみたら
一応エラーは起こらなくなったみたいなんですけど、それもどうかと思い
0326デフォルトの名無しさんNGNG
freeに渡す値がちゃんとmallocで得た値なのか、
途中で書き換えていないか、二回freeに渡していないかを確認しとけ。
0327デフォルトの名無しさんNGNG
>>326
後者は何度も調べました。前者はつまり動的に確保したのではないアドレスを解放していないか?という事でしょうか?
0328デフォルトの名無しさんNGNG
if(str2==NULL||str2==NULL){

↑これ記述ミスだろ
0329デフォルトの名無しさんNGNG
>>327
そういうこと。
たとえp=malloc(4);とやっていてもfreeするまえにp="string";とかやったらダメ。
0330デフォルトの名無しさんNGNG
>>328
そうみたいですね。すいません。
0331デフォルトの名無しさんNGNG
>>329
strcpy(p,"はなもげらー");
とか
strcpy(p,str1);
とかは大丈夫ですよね?
0332309NGNG
スルーされとる・・・

↓これのことなんだけど。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);
0333デフォルトの名無しさんNGNG
>>331

バッファからはみ出んようにな。
0334デフォルトの名無しさんNGNG
>>327
一応確認するけど、関数内でmallocで得た値を入れるために、ポインタ変数を引数に渡してないか?
その場合、「ポインタのポインタ」を使うのは知ってるよね?
0335デフォルトの名無しさんNGNG
>>334
申し訳ありません。どういう意味でしょうか?

0336デフォルトの名無しさんNGNG
インデントがめちゃくちゃでブロックの範囲がわからん。
0337デフォルトの名無しさんNGNG
>>332
すいません見逃していました。確保失敗したらプログラムに止まっててもらおうと
Scanfは入れときました。
あと、strcpyは確保されなかった場合は、ストップするので、大丈夫かなと
0338デフォルトの名無しさんNGNG
>>337
なんと!
そういうときはNULLを返して関数を抜けるのがいいよ。
0339デフォルトの名無しさんNGNG
>>338
そうなんですけど、一応まだテスト段階なので、とりあえず、メモリ確保の所で止まってる
か調べるためにScanfを使ってみました。
ちゃんとできたらそうしてみます。
0340デフォルトの名無しさんNGNG
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を開放しとけ
0341デフォルトの名無しさんNGNG
以前、mallocで確保する量を間違えてバッファあふれを起こしたけど、
freeでおちたために原因を突き止めるのに時間がかかったことがある。
0342デフォルトの名無しさんNGNG
>>341
原因は、確保する量が多すぎたって事だったんですか?
0343デフォルトの名無しさんNGNG
>>342
違う。少なかったの。
0344デフォルトの名無しさんNGNG
>>321
だまされた。 C#じゃん。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfChar_PG.asp
0345デフォルトの名無しさんNGNG
>>335
こんな書き方をしてたら間違いってことなんだが。

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

int main(){
 char *a;
 kakuho(a);
 /* a をつかう*/
 free(a);
}
0346デフォルトの名無しさんNGNG
>>345
これは大丈夫だと思います
0347デフォルトの名無しさんNGNG
>>346
よく意味が分らないよ。
その間違いは、していないって意味?
それとも、345は間違っていないって意味?

因みに345は間違いだよ。
0348デフォルトの名無しさんNGNG
>>347
346じゃないが>>345のようなミスはなかった。
0349デフォルトの名無しさんNGNG
>>129-145
rand()の結果に周期性があるとしても、乱数なんだから構わないんじゃない?って思うのは素人考え?
N=100ぐらいで各数値の出現頻度が1%ずつになるようなrand()って、むしろランダムじゃないように思えてしまう。
0350303NGNG
あの、ここでお世話になった者なんですが、VCでのDLLの作り方がよく
わからず、困っております。どなたかわかりやすく教えてください。
それか、ソースを晒すのでDLLにしてください。おねがいします。
0351デフォルトの名無しさんNGNG
>>350
>>1
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
0352デフォルトの名無しさんNGNG
良い乱数・悪い乱数 http://www001.upp.so-net.ne.jp/isaku/rand.html
0353デフォルトの名無しさんNGNG
あの、私は一応VB使いなんですけど、計算を行う部分がVBでは遅過ぎる
ので、C言語で書いたプログラムをDLL代わりに呼び出して、結果をファイルを
介して取り込むという手法のプログラムを書いています。
で、呼んでは、消え、呼んでは、消えをものすごい勢いで繰り返してるんですが
そうすると、どんどんメモリを食っちゃってるみたいなんです。また、動作が不安定
になって行っているようなんです。
やはり、こういう手法は避けた方が良いのでしょうか?
0354デフォルトの名無しさんNGNG
>>353
何が消えるんだかさっぱりです。
0355デフォルトの名無しさんNGNG
>>353
C言語側かVBとの通信部分にメモリリークがあるんでしょうな。
0356デフォルトの名無しさんNGNG
&より<<の方が優先順位が高いとφ(..)カキカキ
0357デフォルトの名無しさんNGNG
>>354
コマンドライン引数を与えてshellを使いDOSプロンプトの中でCのプログラム
を走らせて、そして、それは計算結果をファイルに書き込み終了します。
その後、VB側のアプリはファイルの内容を監視してて変更されると読み込んで、
という風にDLLもどきとして利用しています。分かりにくかったのなら申し訳あり
ませんでした。
0358デフォルトの名無しさんNGNG
>>355
通信と言っても、コマンドライン引数を渡す所ぐらいしか実質通信はして
ないんですが・・・どこが原因なんでしょう?
0359デフォルトの名無しさんNGNG
>>358
ちょっと頭使えばいいと思うがC言語側。
0360厨房NGNG
みなさん、厨房ですよ。
0361デフォルトの名無しさんNGNG
>>359
どう言う事ですか?何か工夫すればメモリリークは避けられるの
でしょうか?

0362デフォルトの名無しさんNGNG
>>361
本当にDLLにすりゃ済むだろ
0363デフォルトの名無しさんNGNG
>>362
KOB
0364デフォルトの名無しさんNGNG
だからスレ違いだって。
0365C初心者NGNG
Cで書かれたソースコードが置いてある日本語サイトを知りませんか?
0366デフォルトの名無しさんNGNG
>>365
http://www.apache.jp/dist/httpd/
0367デフォルトの名無しさんNGNG
サーバが日本なだけで言語は英語だな(鬱
http://www.apache.jp/
0368デフォルトの名無しさんNGNG
このスレは、ものすご〜〜〜い初心者っていうか
昨日からCの勉強を始めたような人間が質問してもいいスレですか?
0369>>2ちゃんねらーの皆さん NGNG
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日間)
0370デフォルトの名無しさんNGNG
>>368
>>1を守れば
0371デフォルトの名無しさんNGNG
>>362
トライはしたんですけど、文字を渡して、文字を返してもらう
ってのが異様に難しくて、あきらめてしまった次第なんです。
(数値は結構簡単に行けるのに・・・・・)
ちなみにVCで
0372デフォルトの名無しさんNGNG
>>371
その前にC側のクソコードでバッグしる!
0373デフォルトの名無しさんNGNG
>>372
コードが原因なんでしょうか?アプリを起動すると、それを次に起動
する時のためにメモリに残して置くとか聞いた事があるんですけど、
そういう関係なのでは?と個人的には考えてるんです。
0374デフォルトの名無しさんNGNG
>>373
次回起動される保証がどこにもない。
もしそうだとしても、起動の度にその謎の領域を蓄積させる理由がない。
0375257NGNG
>>265
返り値のない関数でも、引数が必要なことはある。必要ないこともある。
なんでもいいわけではない。それはどんな関数にするか次第。
返り値の有無にかかわらず、その関数が、どんなものを利用するかとかでかわってきます。

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

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

 前回書き込んでいろいろつっこみがはいったように、
 私は、ちゃんとわかってると言えるレベルではないし、
 このスレにいつもきてるわけじゃないのであてになりません。(笑)
0376デフォルトの名無しさんNGNG
>>374
じゃあ、やっぱりFREEし忘れとかですかね?でも、アプリが終われば
FREEしてなくても解放されるものと聞きましたが、
うーん、他に思い当たらないしな〜
0377デフォルトの名無しさんNGNG
>>376
どこが悪いのかの切り分けテストしろよ。いいかげん。
int main(){return 0;}
だけのプログラム作って動かすとかさ。
0378C初心者NGNG
日本語のサイトは無いんですか?
0379デフォルトの名無しさんNGNG
>>378
本屋いくなり図書館いくなりすれば?
0380C初心者NGNG
図書館にはその手の本が無いんです。
本も買いたいのですが金銭面からなかなか厳しくて。
何処かありませんか?
0381デフォルトの名無しさんNGNG
ブックオフ
メチャメチャ安い
0382デフォルトの名無しさんNGNG
>>380
http://www.google.co.kr/
0383デフォルトの名無しさんNGNG
>>375
>>257はネタじゃなかったのか?
よくわかってないなら、てけとーなこと書くのを止めれ。
0384デフォルトの名無しさんNGNG
今がチャンス!「誰も知らない」スーパービジネス

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

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

詳しくはコチラ
http://www.mahou.tv/muchey/partner.htm
0385デフォルトの名無しさんNGNG
>>384
マルチじゃんコレ
0386デフォルトの名無しさんNGNG
>>377
やはり、ソース側の問題ではないようです。おっしゃっているプログラムの
int main(){return 0;} を
0.5秒ごとに動かしてみましたが、やはり、メモリはどんどん減っていってしま
っています。また、mallocで確保した領域を開放しないという内容にしたところ、
減るペースは増えています。やはり、プログラムが終わっても解放されないで
はないでしょうか?
ついでに質問ですが、DLLが終了する時は、プログラムが終わってメモリが
解放されるのと同じようにFREEしなくても解放されるという事になっている
のでしょうか?それとも、関数扱いだから、解放されないのでしょうか?
0387デフォルトの名無しさんNGNG
いい加減、スレ違いってことに気づかない限り問題は解決しないと思われ。
0388デフォルトの名無しさんNGNG
たしかに、すでにVBの問題だな。
0389デフォルトの名無しさんNGNG
>>386は放置で
0390デフォルトの名無しさんNGNG
VB厨逝ってよしでFA?
0391デフォルトの名無しさんNGNG
WindowsXPでGCCって動くんですか?
0392デフォルトの名無しさんNGNG
>>391
ええ。
0393デフォルトの名無しさんNGNG
>>391
http://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=WindowsXP+GCC+%93%AE%82%AD&lr=
0394デフォルトの名無しさんNGNG
うぁぁぁぁぁぁぁあぁああ
もうどこをどうクリックすればGCC手に入るんだよ
誰か教えてください
0395デフォルトの名無しさんNGNG
>>394
http://www.cygwin.com/setup.exe
開発ツールも含めてセットアップ
0396デフォルトの名無しさんNGNG
>>383
じゃあ よくわかってるおまえがちゃんとした答え書いてやれ。
答えられるなら。(笑)
アホな答えとそれを書き込んだ奴にたいする罵倒しかレスつかないなら、
このスレ無意味だろ。(笑)
0397デフォルトの名無しさんNGNG
>>396
そうですよ、基本位てめぇで勉強しろと。
0398デフォルトの名無しさんNGNG
教えてほしいなら煽らずに素直にそう書けばいいのに。(笑)>>375=>>396
0399デフォルトの名無しさんNGNG
>>275はマジなの?
> b=hoge(a)+100; は、 b= ひゃくいち + 100; みたいになって計算できない。
この辺なんて釣りにしか思えないから、みんな放置してると思ってた。
0400399NGNG
違った。
>>257だった
0401デフォルトの名無しさんNGNG
>>399
>>275は正しい。
0402デフォルトの名無しさんNGNG
>>399
VBとかなら・・・でも、charだしなぁ・・・。
0403デフォルトの名無しさんNGNG
char *hoge(...){.....} と書きたかったんだろうか。
それでも警告は出る(intにポインタを代入)けど一応コンパイルは通る。
0404デフォルトの名無しさんNGNG
>>403
まぁ、結局のところint相当だからなぁ。
どうやっても「ひゃくいち」にはならんけれど。
0405デフォルトの名無しさんNGNG
>>232
今更だけど、文字列を加工する関数で特に戻り値を必要とせず、一切エラーも起きない場合は加工後の文字列の先頭アドレスを返すようにしている。
別にvoidにしてもいいんだけど、標準関数にならってね(strcpyとかstrcatとか)。
0406デフォルトの名無しさんNGNG
>>396
> アホな答えとそれを書き込んだ奴にたいする罵倒しかレスつかないなら、
> このスレ無意味だろ。(笑)

そうだよ。
だからアホな答えは書くなよ。
0407デフォルトの名無しさんNGNG
あの〜、ファイルからfscanf(fp1,"%s",str);
というように文字列を読む時に、書き込まれている文字が”0”だけの時は
文字列として認識されないのでしょうか?改行コードがどうのとかいう関係?
0408デフォルトの名無しさんNGNG
そんなはずないけど・・・
空白なら影響があるけど。

ところで、文字列を読み込むならfgetsを使った方がいいよ。
0409408NGNG
>>407へのレス
0410407NGNG
>>408
サンキューです。今試してみた所、0でもちゃんと読み込めていま
した。プログラムのどっかにバグがあるみたいですね。
fgets使ってみます。(σ・ω・)σ Fゲッツ!!
0411デフォルトの名無しさんNGNG
大体質問しておいてちゃんと回答があっても、
まともに感謝もできない香具師ばかりだと回答する気にもならないよね。
0412デフォルトの名無しさんNGNG
ゲッツなんて言われてもどう対応したらいいのかわからんよな。
0413デフォルトの名無しさんNGNG
>>411
おまけに煽りはやたら多いしな
0414デフォルトの名無しさんNGNG
ここをどこだと思っているんだ。
ましてや夏休みだぞ。
0415デフォルトの名無しさんNGNG
>>412
> 回答する気にもならないよね。
じゃあするなよ。スルーしろ。
0416山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0417デフォルトの名無しさんNGNG
>>415
同意。恩着せがましいったらありゃしない。
0418デフォルトの名無しさんNGNG
質問スレがこんなに下にいちゃいかんだろ。
0419デフォルトの名無しさんNGNG
次の質問どぞー
0420408NGNG
>>415
俺は>>411-412じゃないぞ。
0421デフォルトの名無しさんNGNG
恩着せがましいのもuzeeが
無礼者も同じくらいuzee

どっちも氏ね
0422232NGNG
>257
>405
レスありがとうございます。とりあえず色々な関数作ってみて
試してみます。
レスがないからもうあきらめかけていたが
ちゃんと見てくれる人もいるんだ・゚・(ノД`)・゚・
まだ俺はC初心者だから誰が釣りとかわからないけどな・・・
まあ、レスありがとうございます
0423デフォルトの名無しさんNGNG
「ポインタのポインタ」があるんなら、「ポインタのポインタのポインタ」、更には
「ポインタのポインタのポインタのポインタ」とかもあるんかいな。
もしあるのなら、「ポインタのポインタ」が、「実体の参照まで2段階ある」という
言葉を使うとするなら、一体何段階までのポインタがあるんかいな。
0424デフォルトの名無しさんNGNG
>>423
もちろんあります。

ヒープがあふれるか再帰的に参照しているならスタックがあふれるかまでは行けるんじゃないの?
0425デフォルトの名無しさんNGNG
>>424
その前にコンパイルするときの文の文字数制限にひっかかってしまうかも。
VC6 だと 1023 文字くらいだった気がする。
0426デフォルトの名無しさんNGNG
こそこそとやってんじゃねーよ。
age!
0427デフォルトの名無しさんNGNG
>>423
無限
0428デフォルトの名無しさんNGNG
なわけない。
0429デフォルトの名無しさんNGNG
脳内なら或いは
0430デフォルトの名無しさんNGNG
>>423
無限 ( ただし, 有限 )
0431デフォルトの名無しさんNGNG
>>430
同意。無限とか言ってる奴はチューリングマシンもってこいと。
0432デフォルトの名無しさんNGNG
Theoretically unlimited.
Limited by implementation.
0433デフォルトの名無しさんNGNG
infiniteの方が好き
0434デフォルトの名無しさんNGNG
四重以上はやめてね。ループも。
0435デフォルトの名無しさんNGNG
>>434
謎の規約を持ち出して・・・。
0436デフォルトの名無しさんNGNG
>>434
もしリストを先頭からたどる羽目になったときは
必然ですね。
0437436NGNG
「何処まで続くか判らないポインタのリンクが必然ですね」、だ。
0438デフォルトの名無しさんNGNG
>>436
それはn重とはいわんだろ・・・
0439デフォルトの名無しさんNGNG
>>438
たどるのに内部で再帰してたりとかじゃないの?
0440デフォルトの名無しさんNGNG
必然性があれば何重でも
0441デフォルトの名無しさんNGNG
>>440
今まであった?
四重以上のポインタやループが。
0442デフォルトの名無しさんNGNG
「四」重ってどっから出てくんの?ワラ
0443デフォルトの名無しさんNGNG
>>442
>>434
0444デフォルトの名無しさんNGNG
char c;
char* p = &c;
char** pp = &p;
char*** ppp = &pp;
char**** pppp = &pppp;
char***** ppppp = &ppppp;

*****pppp = 'a';

ループいらないぞ。
0445デフォルトの名無しさんNGNG
*の数があってねえぞ。

0446デフォルトの名無しさんNGNG
むしろpの数が
0447デフォルトの名無しさんNGNG
というか誰がループを必要としていると言った。
0448デフォルトの名無しさんNGNG
ヌル型のポインタってどういうときに使うんですか?
0449デフォルトの名無しさんNGNG
>>448
char *s="abcdef";
if(strstr(s,"haxa")==NULL)
printf("みつからなかったよ\n");
0450449NGNG
ヌル「型」じゃないぞ。
0451デフォルトの名無しさんNGNG
ぬる「ぽ」だぞ
0452デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガ「ッ」
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>451
 (_フ彡        /
0453変な質問者NGNG
Cして7日目な人(7日前にPC初めて触れた)なんだけど、>>232の質問に対する答えって、
どれも検討違いじゃないかな?って思ってしまった。
returnについては、後の人のでいいと思う。

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

これって合ってる?理解を深めるために何人かの人レスお願いしますm(__)m
/* レスに対して発言はしません。 */
0454デフォルトの名無しさんNGNG
>>453
死ね。
0455デフォルトの名無しさんNGNG
>>453
死ね嘘つき
0456デフォルトの名無しさんNGNG
>>453
痛いな・・・
0457変な質問者NGNG
return void;
0458デフォルトの名無しさんNGNG
>>453
なぁ、そのプロシージャ(void hoge())でエラーが発生したときってどうする?
0459デフォルトの名無しさんNGNG
〜日目とか強調するやつよくいるよな。
0460デフォルトの名無しさんNGNG
7日目で2ch(;´Д`)
0461デフォルトの名無しさんNGNG
>>453
糞して氏ね
0462変な質問者NGNG
7日で釣りが大成功
僕って才能あるかも^^;
0463デフォルトの名無しさんNGNG
おまいらまて








>>453は釣りじゃないか?
みんなレスしすぎだろ(藁
0464デフォルトの名無しさんNGNG
釣りかどうかなんてどうでもいいんだよ。
>>453
糞して氏ね
0465デフォルトの名無しさんNGNG
>>462-463
(・∀・)
0466デフォルトの名無しさんNGNG
大勢で水をまいて東京の気温を下げようなんて、2ちゃんねらーみたいなことするなよ(;´Д`)
0467デフォルトの名無しさんNGNG
誤爆(;´Д`)
0468デフォルトの名無しさんNGNG
>>458
exitします
0469デフォルトの名無しさんNGNG
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って怒られます。
ヨロシコお願いします。
0470デフォルトの名無しさんNGNG
文字列リテラルを書き換えないように。
0471デフォルトの名無しさんNGNG
char str[] = "rock is dead.";
0472469NGNG
>>470, 471
レス有り難う御座います。

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

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

文字列定数変更した時の動作はANSI規格では未定義
勉強になりました。
0473デフォルトの名無しさんNGNG
>>470
文字列リテラルの使い方を間違わないように。
0474デフォルトの名無しさんNGNG
シーク関数の動作が理解できない。
何でこのプログラムで位置が進むんだろう?

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 << " ";
}
0475デフォルトの名無しさんNGNG
>>474
ファイルポインタはファイルの「ここまで読んだ」情報を保持するための物です。
0476474NGNG
そうなんですか。
5年くらい勘違いしてました。

でも、fseekは何のために存在するんだろう?
0477デフォルトの名無しさんNGNG
fseek(fp, 1, SEEK_SET); だろ
0478デフォルトの名無しさんNGNG
>>476
そのコードの中では無意味だね
0479474NGNG
> fseek(fp, 1, SEEK_SET); だろ
しまった!!!!
気が付かなかった・・・
ようやく光が見えました、ありがとうございます。
0480デフォルトの名無しさんNGNG
SEEK_SET は 0 。
1 は SEEK_CUR 。
だから、fseek( fp, SEEK_SET, 1 ); は
fseek( fp, 0, SEEK_CUR ); と同じで、
ファイルポインタを移動しない。
0481デフォルトの名無しさんNGNG
ネタでは真似できない、この天然… 見習わなければ。
0482デフォルトの名無しさんNGNG
プロトタイプ宣言しても型チェックしかできないからねぇ
0483デフォルトの名無しさんNGNG

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

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

腹立ちました。
みんなでやっつけにいこう。
0484デフォルトの名無しさんNGNG
( ・_ゝ・)ツマンネ
0485デフォルトの名無しさんNGNG
>>474
進むどころか
ボクのCコンパイラでは、エラーになりました。
0486>>2ちゃんねらーの皆さんNGNG
( ´Д`)/< 先生!!こんなのを見つけました。
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
0487デフォルトの名無しさんNGNG
>>485
システムによってはSEEK_SETが0で、SEEK_CURが1とは限らないから
エラーになってもおかしくはない。
0488デフォルトの名無しさんNGNG
>>487
> cout << c << " ";
> C言語なら俺に聞け! Part 63
0489デフォルトの名無しさんNGNG
ミキティーが放尿するフラッシュを作りたいのですがどうしたらよいのでしょうか。
0490デフォルトの名無しさんNGNG
笑ってしまった
0491デフォルトの名無しさんNGNG
>>489
サブリミナル効果で尿意を催すフラッシュを作って見せる。
ションベンちびるほど恐いのでも可。
0492ぽ ◆ebXLcmI5po NGNG
おい 教えろ

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

どっからかっさらってくればいいんだ?
直リンキボンヌ
0493デフォルトの名無しさんNGNG
http://www.cygwin.com/setup.exe
でgccクリックすりゃいいだろ
0494ぽ ◆ebXLcmI5po NGNG
それがわからんのだよ とホホ
0495デフォルトの名無しさんNGNG
package selectのall/devel/gcc
0496_NGNG
  ∧_∧   
 ( ・∀・)/< こんなノみつけたっち♪ 
(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日間)
0497デフォルトの名無しさんNGNG
>>494
develって書いてあるとこ
0498デフォルトの名無しさんNGNG
>495
やっと判ったよ。ありがと。
0499デフォルトの名無しさんNGNG
デベール! (プださっ
0500デフォルトの名無しさんNGNG
I'll be back!!
0501デフォルトの名無しさんNGNG
でんでんデベロン デベロンパ
0502初心者NGNG
C言語とはいえませんが、
Print文を使用して、標準出力に”自身を出力したいときはどの様に指定
すればよいでしょうか。
Print ”””や”¥””など色々試しているのですがうまくいきません。
0503デフォルトの名無しさんNGNG
>>502
”はそのままでOKです。
"は\"とします。
0504デフォルトの名無しさんNGNG
>>502
C言語の質問をしてください。
Print文って何?
0505初心者NGNG
>>504
Print文ではなくPrint文です。
あなたの目は節穴ですか?
0506デフォルトの名無しさんNGNG
>>505
さぁ、死のうか。
0507デフォルトの名無しさんNGNG
>>502に【無礼者】の烙印

#define Print printf
#define begin {
のようなデムパコードが将来にわたって自分のところに
回って来る率を低減するめ、コイツは以後100%無視
0508デフォルトの名無しさんNGNG
やっとGccが入ったよ。

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

cygwinのgccを使うとして

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

損得を教えてくれよ
0509デフォルトの名無しさんNGNG
多少判った。
MINとかいうのを使うんだな?でSDLとかいうのを使うのだな?
それがベストなのか?

なんか落とし穴はあるのか?
0510デフォルトの名無しさんNGNG
自分で作った関数名の付け方について質問です。
本によって、
CreateDensityArray()
のように、単語の頭を大文字にするやり方と、
create_density_array()
のように、_で区切るやり方があるようですが、
どちらが良いとか、悪いとか、由来とか、
みなさんはどちらにしているか、など教えて下さい。
0511デフォルトの名無しさんNGNG
>>510
ライブラリにあわせる。
0512デフォルトの名無しさんNGNG
歴史的な要素もあるよ
パスカル系の香具師は単語の頭を大文字にしてたからね。
歴史的なfortran屋になるとその大文字ダケ+数字で常に6文字になる(W

そーゆー過去の習慣を引きずっていない香具師は単語をアンダースコアで繋ぐわけだよ。
0513デフォルトの名無しさんNGNG
C FAQ 17章_スタイル
http://www.catnet.ne.jp/kouno/c_faq/c17.html#0
0514デフォルトの名無しさんNGNG
K&R ってもう古典だし、そのまままねるのは危険な気が。
0515デフォルトの名無しさんNGNG
FAQネタで議論するなと言っている。別スレ池。
0516デフォルトの名無しさんNGNG
クラス名・変数名に迷ったら書き込むスレ。Part2
http://pc2.2ch.net/test/read.cgi/tech/1058213523/
0517デフォルトの名無しさんNGNG
K&R初犯のころのCは良かったよな。何でもアリでさ。
処理系も小さかったし。
0518デフォルトの名無しさんNGNG
懐古厨うざい
0519デフォルトの名無しさんNGNG
自分は以下の感じで書くのですが、
スペース、改行、{}等で一般的な書き方を教えてください。
,*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;
}
0520デフォルトの名無しさんNGNG
美意識の問題だから好きにやれ
0521デフォルトの名無しさんNGNG
2つほどお聞きしたいのですが
void main(void)
はいけないと入門書に書いてあったんですが何故なんでしょうか?
詳しい理由みたいなのがあれば是非教えてください。
それから、重ねての質問で申し訳ないのですが、gets()はセキュリティー面で弱いとも書いてあったんです。
これについても深い理由を知っている方、いましたらよろしくお願いします。
0522デフォルトの名無しさんNGNG
>>521
main関数は、intとchar *の2つの引数をとり、intを返すことになっているから。
int main(int argc, char *argv[])
とすべし
0523デフォルトの名無しさんNGNG
int main(void)でもいいんですが。
0524デフォルトの名無しさんNGNG
>>521
getsは、入力された文字を入れるための領域を用意してそのた領域へのポインタを渡すが、
用意した領域よりも長い文字列が入力された場合、プログラムが誤動作するため。
また、これを防ぐ方法がない。
意図的に長い文字列を入力させて(バッファをあふれさせて)
任意のコードを実行させるクラッキングに利用される可能性もある。
0525デフォルトの名無しさんNGNG
>>524
未定義なだけでプログラムが誤動作するとはかぎらない。

と言われてしまうぜにぃちゃんよぉ。
0526521NGNG
>>522-524
丁寧な解答ありがとうございます。謎が解けました。
>>524
具体的な対策として、どうすれば良いでしょうか。
fgets()なら問題ないですか…?
皆さんはgets()を使わずにどのように処理しているか参考までに聞かせて頂けると…
0527デフォルトの名無しさんNGNG
>void main(void)
>はいけないと入門書に書いてあったんですが何故なんでしょうか?

2chで馬鹿にされるから
0528デフォルトの名無しさんNGNG
>>526
> fgets()なら
わかっているじゃん

>>527
ワラタ
052943NGNG
>>523
鼻毛以外のモノを鼻から出したくない人は、そんなことしません。
0530デフォルトの名無しさんNGNG
>>529
板違いです。
こちらへどうぞ
http://etc.2ch.net/denpa/
0531デフォルトの名無しさんNGNG
>>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 の次の行に、
 空の行を入れるかもしれない。
0532519NGNG
>>531
お答えありがとうございました。参考にさせてもらいます。
0533デフォルトの名無しさんNGNG
狙ったように宗教戦争ネタが続くのはネタなんだろうな・・・
0534デフォルトの名無しさんNGNG
かつて fortran2 fortran77 c ANSI C c++ pascal modula2 oberon
と変化のあった時代と比べれば、動きがないからね。

宗教ネタ以外な URL示されてお終いだし。
0535デフォルトの名無しさんNGNG
複文かつ値を返してくれるマクロってどういう風に書くの?
0536デフォルトの名無しさんNGNG
{}を使う。
0537デフォルトの名無しさんNGNG
>>536
値を返せないんじゃ…
式だけでいいなら、

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

とかでいいんだろうけど、文となるとどーすんだろね。
0538デフォルトの名無しさんNGNG
わからんのです…
0539デフォルトの名無しさんNGNG
#define hoge(x) 1;((x)+1)
a=hoge(x)+5;

完璧
0540デフォルトの名無しさんNGNG
…
0541デフォルトの名無しさんNGNG
マクロは置き換えだから値は返せないでしょ。
関数定義の中身だけマクロで置き換えるとかすれば擬似的には可能じゃないかと。
0542デフォルトの名無しさんNGNG
インライン関数で書く
0543デフォルトの名無しさんNGNG
inlineなんてマクロの足元にも及ばないね。
0544デフォルトの名無しさんNGNG
>>543
なにゆえ?
0545デフォルトの名無しさんNGNG
>>544
型に関して多相的、演算子を引数に取れる、その他一般に悪用ができる。
0546デフォルトの名無しさんNGNG
なるほど、納得。
0547デフォルトの名無しさんNGNG
>>535
マクロというより、Cの構文として破綻してないか?
マクロって、単なる置き換えだろ。置き換える前の文を書いてコンパイルしてみなよ。
それが無理なら、マクロも書けるはずがないと思う。
書けるなら、それをマクロにできると思う。
0548デフォルトの名無しさんNGNG
何かの変数に代入するようなマクロにしてマクロ内部で代入するか、
大人しく関数にすれ。
0549デフォルトの名無しさんNGNG
fgetc関数でファイルを読んでるんですが、
if(c == EOF)でEOFを取得できません(涙)
98では同じソースで動いたんですがXPだと落ちます。何が原因でしょうか?
0550デフォルトの名無しさんNGNG
>>549
char で受けてないか?
fgetc の戻り値の型は int だ。
0551デフォルトの名無しさんNGNG
>>550
charで受けてます。。。
しかし読み出した文字を返すんじゃないんですか?

あと98ではcharで受けてうまく動いたのはなぜでしょうか?
0552デフォルトの名無しさんNGNG
>551
読み込んだ文字またはEOFを返す。

>あと98ではcharで受けてうまく動いたのはなぜでしょうか?
多分 char が符号付だったから。
0553デフォルトの名無しさんNGNG
>読み込んだ文字またはEOFを返す。
もう少し正確に言うと 0 から 255 または -1 を返す。

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


0554デフォルトの名無しさんNGNG
>>551
読み出した文字か EOF を返す。
読み出した文字は char の範囲の全ての可能性があって、
それプラス EOF だから char におさまるわけが無い。
0555デフォルトの名無しさんNGNG
>>553
特定の環境に依存した情報だぁな。
1 バイトが 9 ビットの環境とかもあるし、
EOF が -1 かどうかはコンパイラ依存だし、
-127 から 127 しか表現できないマシンもあるのじゃ。
0556549NGNG
ありがとうございます。
納得しました。
0557デフォルトの名無しさんNGNG
まぁ、どっちみちintで受けろと。
0558553NGNG
>555
おっしゃるとおりです。
0559デフォルトの名無しさんNGNG
C言語の細かい仕様をちょっと確認させて。
char:8ビット
short:8ビットより大きい
int:short以上、long以下
long:short以上
で間違ってないよね?

floatとdoubleの定義は覚えていないけど
0560デフォルトの名無しさんNGNG
char:1バイト
1バイト:実装依存
0561デフォルトの名無しさんNGNG
>>560
マジで?サンクス
0562デフォルトの名無しさんNGNG
shortって16ビット以上じゃなかった?
0563デフォルトの名無しさんNGNG
>>560
8ビット以上も加えないと
0564デフォルトの名無しさんNGNG
long double も加えてほしい.
0565デフォルトの名無しさんNGNG
long≧intだじょ
0566デフォルトの名無しさんNGNG
>>565
559の定義を満たせばそれは自動的に満たされる、と論理学的に答えるテスト
0567デフォルトの名無しさんNGNG
なんでunsigned intのintを略さないのよ!?
long intやshort intのintは略すくせに。

ひとりごとスマソ
0568デフォルトの名無しさんNGNG
じゃーどーして unsigned は書くのに signed は書かないの?
と釣られてみた。
0569デフォルトの名無しさんNGNG
short>=int>=long でないの?
0570デフォルトの名無しさんNGNG
>>569
単語の意味を辞書で(ry
0571デフォルトの名無しさんNGNG
>>569
わろた
0572デフォルトの名無しさんNGNG
short ⇔ int
long ⇔ int
が正解のはずだ!!
0573デフォルトの名無しさんNGNG
>>559
>1 バイトが 9 ビットの環境とかもあるし

ビットが 8 つ集まったモノをバイトって言うんだろ?
0574デフォルトの名無しさんNGNG
ちうか今時、1バイト=8ビットでない環境なんであるの?
0575デフォルトの名無しさんNGNG
ビットが 8 つ集まったモノをオクテットと言うのです。
0576デフォルトの名無しさんNGNG
よく文法の説明ででてくる「式」って何よ?
if(式) ...
switch(式)....
0577デフォルトの名無しさんNGNG
>574
俺も知りたい。
PDP-10 のような 36ビットマシンでバイトが9ビットだったのは知ってるけど、
今でも現役のマシンで1バイトが8ビットじゃないのがあるのかなぁ。

Lispマシンとかかなあ。
0578デフォルトの名無しさんNGNG
真偽が定まるもの?
文は定まらないもの。文なんてイラネ
0579デフォルトの名無しさんNGNG
1バイトが8bitでない具体例を挙げられる奴いるのか?URLつきで
0580579NGNG
すまん自分で見つけた
0581デフォルトの名無しさんNGNG
Love Bite
仮に親不知が無いとして32 / 2 = 16です。
0582デフォルトの名無しさんNGNG
>580
教えてくれ。
0583デフォルトの名無しさんNGNG
>>580
ソースキボヌ
0584デフォルトの名無しさんNGNG
>>580
教えなさい
0585デフォルトの名無しさんNGNG
>>576
計算や代入や関数呼び出しなどなど。
0586579NGNG
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=
0587デフォルトの名無しさんNGNG
>>576
a = 1 ←代入式
a ==1 ←比較式
a = 1; ←代入文
0588デフォルトの名無しさんNGNG
if(条件式)
0589デフォルトの名無しさんNGNG
>586
現役マシンはどれ?
死滅マシンしか見当たらない。
0590デフォルトの名無しさんNGNG
>>589
そろそろスレ違い
0591デフォルトの名無しさんNGNG
>>586
にあった某URLの


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


と言う問題は答えが一つしか選べないのだが(ry
0592デフォルトの名無しさんNGNG
CやC++では;によって式を文に変換するそうです。
0593デフォルトの名無しさんNGNG
CHAR_BITって標準の定数じゃないの?
C FAQ(だったと思う)にはそれがあれば・・・と書かれているんだけど。
標準に準拠していない処理系のことも考慮しているとか?
0594デフォルトの名無しさんNGNG
>>591
あの程度の問題でパソコンの神になれるのなら、
世の中、パソコンの神ばかりだな。(w
0595デフォルトの名無しさんNGNG
>>592
へぇ〜
0596デフォルトの名無しさんNGNG
>>579
スレ違いだが、
sizeof(bool)はだめでつか?
0597デフォルトの名無しさんNGNG
文なんてものがある言語はダメ、らしいな
0598デフォルトの名無しさんNGNG
ステートメントは文?式?
0599デフォルトの名無しさんNGNG
文でしょ
0600デフォルトの名無しさんNGNG
文 : Statement
式 : Expression
0601デフォルトの名無しさんNGNG
>>599 >>600
さんくす。
そうか式はExpressionか。そういえばよくexpと書かれているね。
0602デフォルトの名無しさんNGNG
じゃなくてexprだ・・
0603デフォルトの名無しさんNGNG
argumentとparameterはどう違うんですか?
0604デフォルトの名無しさんNGNG
>>603
辞書退け
0605デフォルトの名無しさんNGNG
>>592
>CやC++では;によって式を文に変換するそうです。
ということはC言語のプログラム要素としては
  Expression⊆Statement
という考えでいいのでしょうか?
0606デフォルトの名無しさんNGNG
↓この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);
0607デフォルトの名無しさんNGNG
argument はフォーマルな用語としての引数。
actual argument, dummy argument は、実引数、仮引数。

仮引数のことをparameterと呼ぶこともある。
0608デフォルトの名無しさんNGNG
>604
議論と媒介変数?
0609デフォルトの名無しさんNGNG
>>607
イミフメ。何が問題なのか?
0610デフォルトの名無しさんNGNG
>>606
ノープロブレム。
0611デフォルトの名無しさんNGNG
>>606
コンパイルしてみぃ
0612デフォルトの名無しさんNGNG
>>607ではなく>>606でした
0613デフォルトの名無しさんNGNG
>>607
なるほど、ありがとうございます
0614606NGNG
コンパイルできることは確認しました。
経験値が足りないだけなのかもしれませんが、
関数型をtypedefしてる他の人のソースを見たことが無かったのです。
なので、関数ポインタをtypedefするほうに一般的な利点がある
(または、または関数型をtypdefするほうに一般的な欠点がある)かと、心配になったのでした。

コンパイルも通るし、見た目も好みだし、問題ないって言ってもらえたし、
心配がだいぶ収まりました、ありがとうございました。
0615610NGNG
>614
教科書、参考書、入門書のたぐいにはあまり書いてないので
こう書けるのを知らない奴が多いと思う。

規格に則っているので心配する必要はないが、
無知な奴に指摘されるのがうざいので、
最近は一般的な書き方に迎合するようにしている。
0616デフォルトの名無しさんNGNG
確かに見た目も好みだとはおもう。
でも漏れだけの偏見では“関数ポインタ”を typedef してもらうほうが
違和感がなくていいなと。

いや、どちらでも問題ないんだけどね…
0617デフォルトの名無しさんNGNG
こんな夜中にC言語スレ大繁盛ですね
0618デフォルトの名無しさんNGNG
Ciscoのハブは、1byte=11bitじゃなかったのか...
0619デフォルトの名無しさんNGNG
>618 ほほー。しかも奇数か。
0620デフォルトの名無しさんNGNG
VC++.NET 2003のintは5バイト
0621620NGNG
あっキー押し間違えてる。本当は4バイト(32ビット)
0622デフォルトの名無しさんNGNG
質問です。
プログラムの実行中に、関数を動的に書き換えたいと考えています。
そこで、オリジナルの関数を宣言した時、
その関数のポインタを得ることは出来ますが
関数の終端を得るにはどうすればよいでしょうか?
(この「終端」はアセンブラ命令でいうretの位置だと捉えてください)
0623デフォルトの名無しさんNGNG
Vector gResult = google("関数ポインタ");
0624デフォルトの名無しさんNGNG
あ、そっかそっか...

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

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

じゃだめなの?
0625デフォルトの名無しさんNGNG
・・・すまん、いろいろ問題だらけだった。>>622 脳内で修正よろしく
0626デフォルトの名無しさんNGNG
自己書き換えコード?
やめとけ
0627デフォルトの名無しさんNGNG
いややっぱりやれ。作ったら見せてね
8086以前の遺物だけどな。C言語を併用できる開発環境があるのか知らんが
0628デフォルトの名無しさんNGNG
>>622
昔トリッキースレッドで話題になっていた記憶があるが、
たとえば関数が「JMP xxxxx;RET」となっていて実体が別の場所にある場合に
いったいどのようにするんだ?という問題がある。
またコンパイラは関数ポインタを使う場合に上記の出力をよくやるんだな。

ちなみに、本気でやろうと思った場合は、MAPファイルを出力させてどうこうする必要が出る。
何のためにするのかはわからないけれど、俺ならば外部アセンブリファイルで処理を書き、
それをリソースとしてもちながら、実行時にメモリに動的ロードして実行権限を付加する方法を取る。
0629デフォルトの名無しさんNGNG
>>622
何のために?
0630デフォルトの名無しさんNGNG
>>629
たいていは、くだらない理由、
あるいはもっと単純な解決方法があるにもかかわらず、これしかないと思い込んでしまう初心者。

そもそも動的書き換えの意味がわからんのだが。
関数ポインタじゃなくって?
リアルタイムコンパイル(=インタプリタ)を目指してる・・・わけないよな。
0631デフォルトの名無しさんNGNG
>>622
本当はもっと実用的な方法を知っているが
あくまでここのスレタイに沿って回答する。

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

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

よって質問で述べられている処理を実現するためには
これらをサポートする何らかの言語(例えばアセンブラ)を
使用する必要がある。
0632デフォルトの名無しさんNGNG
オブジェクトファイル形式が分っていれば、
別にCの枠内でも、動的なコード生成のプログラムぐらい
書けるんじゃないの?アセンブラでなければならないっていう
理由が分らない。
0633デフォルトの名無しさんNGNG
setjump マンセー
0634デフォルトの名無しさんNGNG
setjmpだったような・・
0635デフォルトの名無しさんNGNG
>>632
Cでアセンブラを実装してしまった場合とか考えると
はたしてアセンブラを使ったのか使っていないのか悩める

>>630
動的書き換えが必要な場合つーのはたいていアンチクラッカーなんだけど
0636デフォルトの名無しさんNGNG
C言語じゃないんですが、教えてください。
やさしいフォートラン講座に、
C**********消費税の計算***********
WRITE(*,*) '商品の値段?’ 
   READ(*,*) PRICE
以下省略
 とありまして、「ではプログラムを実行して、ためしに商品の値段を50円
として、”50”を入力して、Enterキーを押してください。」とありますが、
お笑いください。プログラムの実行の仕方が分かりません。これは、書籍ではあり
ません。インターネット上の講座で、その出だしのところです。だれか教えて
下さい。
0637デフォルトの名無しさんNGNG
>636 スレ違い
Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/l50
0638デフォルトの名無しさんNGNG
わはははははははははははは

コンパイラ(かインタプリタ)は用意してあるのかい?
0639デフォルトの名無しさんNGNG
(*,*)
0640デフォルトの名無しさんNGNG
>638 ど、ど、どーもありがとうございます。SafordFTN77 Personal Edition
Compilerを先ほどダウンロードしました。よく読み直したらDOSプロンプト
を起動して、コンパイルのコマンドを入力する − とありました。
コンパイルのコマンドを教えてください。
0641デフォルトの名無しさんNGNG
>636にとってスレタイは、
// 言語なら俺に聞け! Part 63
という形に見えてしまったに違いない(w
0642念のために言っておくが嘘だぞNGNG
>>640
del /s /q *.*
0643デフォルトの名無しさんNGNG
cygwinでのgccでつくったa.exeをcygwinやってないW32で動かすにはどうすればいいんだ?
0644デフォルトの名無しさんNGNG
>>640
さすがに個々の事は分からんなあ
マニュアルに書いてあるんじゃないか
0645デフォルトの名無しさんNGNG
>>643
出来ないんじゃない?win32のgccを使えばいいと思われ
0646デフォルトの名無しさんNGNG
(´-`).。oO(なんでここの人たちはこんなに優しいのだろう?)
0647デフォルトの名無しさんNGNG
>646
ヒマだから。
0648デフォルトの名無しさんNGNG
>646
自作自演だから。
0649デフォルトの名無しさんNGNG
スレ違いが来なくなったのは>>642を実行したためではないかと疑ってみるテスト
0650デフォルトの名無しさんNGNG
642タイーホ!!!!!!!
0651デフォルトの名無しさんNGNG
>>643
gcc じゃなくて mingwin かなんかでコンパイルすればいいと。
Cygwin にあったと思う。

Cygwin gcc で作った exe は、cygwin1.dll をいっしょにもってけば動くと思う。
他にもなんか必要だったかもしれないけど。
0652デフォルトの名無しさんNGNG
>>650
なんでタイーホ?
0653デフォルトの名無しさんNGNG
>>651
便乗してお尋ねしますが、cygwin1.dll なしで動作する exe を
作るときはどうしたらいいんでしょ?
(多分FAQだと思うけど…)
スレ違いスマソ。
0654デフォルトの名無しさんNGNG
器物損壊
0655デフォルトの名無しさんNGNG
-mno-cygwinオプションで
cygwin.dllにリンクしないの作れるんじゃないの?
0656デフォルトの名無しさんNGNG
cygwinでwin32アプリケーション作るつもりなら、
http://www.sixnine.net/cygwin/cygwin-doc/
これぐらいは読まないとだめだろな。
0657デフォルトの名無しさんNGNG
逮捕かよ、手厳しいな
0658デフォルトの名無しさんNGNG
>>653
Cygwin 入れてるんなら、
MinGW 入れて、>>655 で OK 。
0659デフォルトの名無しさんNGNG
>>656
ありがとうです。FAQに答えが載ってましたよ。
0660デフォルトの名無しさんNGNG
>>653
そうやって人の優しさに甘えるのが
君の悪い癖だ。
0661デフォルトの名無しさんNGNG
>>660
いやー。そのとおり。
すまんかった。
0662デフォルトの名無しさんNGNG
>タイーホ
まあここの住人で引っかかる香具師いたら超絶恥ずかしいわけだが
それだけにマジ切れのおそれが・・・w
0663デフォルトの名無しさんNGNG
-無能-cygwin
0664デフォルトの名無しさんNGNG
>まあここの住人で引っかかる香具師いたら超絶恥ずかしいわけだが

犯人が必死に言い訳している
0665デフォルトの名無しさんNGNG
なんかネクラなレスだな。
0666デフォルトの名無しさんNGNG
犯人? どの事件の??
0667デフォルトの名無しさんNGNG
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);
}
0668667NGNG
で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);
}
0669667NGNG
で結果が、
dummy loop execution completed.
ローカル時間(Main関数開始時刻): Wed Aug 20 02:00:59 2003
ローカル時間(関数呼出時刻): Wed Aug 20 02:00:59 2003
でいつも(ループ回数を多くしても)同じになってしまいます.
何が悪いんでしょうか...
0670デフォルトの名無しさんNGNG
>>669
多分asctimeのせい。
あれは静的なバッファに文字列を格納し、改めて呼び出すと新しい文字列で上書きされるから。
あらかじめ元のデータをstrcpyで配列にコピーしておこう。
0671デフォルトの名無しさんNGNG
char *s_start = asctime(tp_start);
これを
char s_start[1024];
strcpy(s_start,asctime(tp_start));
こうするってこと。
0672667NGNG
出来た! ありがとう >>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));
0673デフォルトの名無しさんNGNG
>>672
配列にコピーはせず、mainの最初で開始時刻を出力してもいいけどね。
0674667NGNG
>>673 さん、そうなんですが、実は関数の中で出力ファイルを開いて、
そこに「このプログラムの開始時刻: XXでした、終了時刻: XX」
とか他の実行logを色々と書いて後で読みたいのでこんなことを
したのでした. Thanks!
0675デフォルトの名無しさんNGNG
s_startを渡すより、t_startを渡す方がsmartだと思うのだけど。
0676デフォルトの名無しさんNGNG
scanf等で入力した数値分の配列を確保したいのですが、
「;がtypeのまえに必要です」というエラーがでます。どうしたらいいでしょうか?
0677デフォルトの名無しさんNGNG
sageているし、ネタかなぁ?
0678デフォルトの名無しさんNGNG
ネタでない場合、どうしたらいいですか?
0679デフォルトの名無しさんNGNG
>>676
calloc() 使え。





と釣られてみる。
0680676NGNG
いや、別にネタじゃないんですけど・・・。
>>679
callocってメモリ確保のやつですよね。使ったことないけどやってみます。
0681デフォルトの名無しさんNGNG
あのー、エラトステネスのふるいで素数列挙をするプログラムを組んでる
んですけど、まぁだいたい想像つく通り、ある程度までやるとメモリが足りなく
なってしまいます。そこで、こういった場合どうやって、その先をやれば
いいのでしょうか?自分ではファイルに保存して(すでに見つかった部分を)
、使う時に配列に代入して・・ぐらいの方法しか思いつかないんですが、なん
かものすごく遅そう、
0682デフォルトの名無しさんNGNG
上の続き、
で、どなたかご教授ねがいます。
0683デフォルトの名無しさんNGNG
http://www.zexv.com/sosuu/
ここにある素数を列挙するプログラムはなんでこんなに速いんだろう。
0684デフォルトの名無しさんNGNG
>>683
全然速くない
0685デフォルトの名無しさんNGNG
>>681
あらかじめ2と3の倍数は除いて配列を作るとか。
それでだいたい全体の1/3くらいになったと思う。
0686デフォルトの名無しさんNGNG
>>685
えーと、もうそんな感じではなくて、とりあえず際限なく探せるって
感じにしたいんですよね。3倍とかではちょっと
0687デフォルトの名無しさんNGNG
内部記憶も外部記憶も有限だから「際限なく」は無理
0688デフォルトの名無しさんNGNG
>>687
まぁまぁ、そういった野暮な突っ込みはナシで、
ある程度際限なしってことでお願いします。
0689デフォルトの名無しさんNGNG
>>681
いいかげんスレ違い<素数列挙

素数関係のスレを探してみたか?
0690デフォルトの名無しさんNGNG
エラトステネスのふるいなんぞ使わずにひとつひとつ調べる。これ最強。
0691デフォルトの名無しさんNGNG
どの程度だよ(プ
0692デフォルトの名無しさんNGNG
http://cr.yp.to/primegen.htmlのほうが速いネ
0693デフォルトの名無しさんNGNG
>>692
DJBってこんな古いスタイルで書いていたっけ?
0694デフォルトの名無しさんNGNG
↓コレで勘弁してよ!!
http://www.geocities.jp/ishigaki1998/allking1998.htm
0695デフォルトの名無しさんNGNG
>まぁまぁ、そういった野暮な突っ込みはナシで、
>ある程度際限なしってことでお願いします。

何個だにょ?
そにれよってやり方かわるじゃん
0696_NGNG
http://homepage.mac.com/yamazaki8
0697デフォルトの名無しさんNGNG
宣伝にひっかかった(鬱
0698デフォルトの名無しさんNGNG
>>695
1兆とかそのレベルまではいきたいかなと、
>>689
モチぽん全部読破しました。一応(難しくて20%ぐらいかわかんなかったけど)
でも、最近は全然更新されていないし、単純にプログラムの技術の事なので
こちらで質問させていただきました。
0699デフォルトの名無しさんNGNG
> 単純にプログラムの技術の事なので

スレ違いじゃねーか w
0700デフォルトの名無しさんNGNG
一兆ケタって事?それとも、12ケタってこと?
0701デフォルトの名無しさんNGNG
>>700
12ケタってことですね。とりあえず
0702デフォルトの名無しさんNGNG
djbのやつが15桁できる、って書いてあるやん。
0703デフォルトの名無しさんNGNG
>>702
それがどうかしましたか?
私は自分で書きたいのです。
0704デフォルトの名無しさんNGNG
>>702
djb?
0705デフォルトの名無しさんNGNG
>>703
こらニセモノ!!、まぁ、言いいたいことは間違ってない
んだけど、もうちょっと丁寧にね
0706703NGNG
>>705
まじかよ・・・
ソースを公開しているんだから(というかソースでしか配布していない)、参考にしなよ。
0707デフォルトの名無しさんNGNG
自分でやりたいなら、人に聞いてないで自分だけで解決しなー
0708デフォルトの名無しさんNGNG
まともな処理系でクリ使えよ
0709デフォルトの名無しさんNGNG
で、おまえは今何桁まで求められるの?
0710デフォルトの名無しさんNGNG
暗算で三桁
0711デフォルトの名無しさんNGNG
>>709
エラトステネスで1億ちょいぐらいなら、あと、ビットフィールドとかで
1ビットずつ使えば、8倍の8億前後ぐらいかな(試したけど遅いから
採用はしてない)
0712711NGNG
http://www.pureweb.jp/~aoyagi/integer/prime.html#section3
おかげさまでこんなサイトを見つけることができました。
でも、このプログラムが何をしているのかいまいちつかめない
んですが、どなたかちょっと教えてください。
0713デフォルトの名無しさんNGNG
トムに可愛い娘のジェーンが生まれました。
0714667NGNG
>>675 レスありがと. しかしそれだとうまく行きませんでした?
time_tへのポインタを使ってアドレス渡ししてやると、
出力結果は、
dummy loop execution completed.
ローカル時間(Main関数開始時刻)(time_tポインタ渡し): Wed Aug 20 14:47:24 2003
ローカル時間(関数呼出時刻): Wed Aug 20 14:47:24 2003
のようになってしまいます.
使ったプログラムは下記に
0715667NGNG
#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);
}
0716667NGNG
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);
}
0717_NGNG
http://homepage.mac.com/yamazaki8/hankaku09.html
0718711NGNG
>>713
んなアホな
0719デフォルトの名無しさんNGNG
MAX_ARRAY分ごとの整数区間をふるいにかける
0720667NGNG
>>715 + >>716 がプログラムです.また関数へtime_tのアドレス渡しで
なく、time_tを値渡しにしてやっても結果は同じです.
まあ >>670 >>671 >>672 の方法で出来たので良しとしてもよいのですが
time, localtime, asctimeの動作はまだよく理解できないところが
あるので気持ち悪いです.これらの関数は勝手にグローバル変数
を作ってしまうようなものなのかなあ...?
 
0721デフォルトの名無しさんNGNG
'\n'を一つ標準出力に出力するときどれが一番イケてますか?

fputc('\n', stdout);
fputs("\n", stdout);
printf("\n");
putc('\n', stdout);
putchar('\n');
puts("");
0722デフォルトの名無しさんNGNG
素数の方程式はもう見つかっているはずなので
算数板にいきなよ。
ビットが足りなかったら文字列として扱えよ
100桁でも200桁でもいけるし
0723デフォルトの名無しさんNGNG
なぜfprintfがないのだろう。
0724667NGNG
あ、分かった. >>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);
}
0725デフォルトの名無しさんNGNG
ctime
0726667NGNG
すると、
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 !!
0727675NGNG
>726
そういうこと。
まぁ、私ならstrftime()を使うけどね。

それから、>724でいくのならs_startとs_endは同じ領域を指すので
使いまわし可能なんで念のため。
0728667NGNG
>>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);
}
続く
0729667NGNG
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);
}
0730667NGNG
>>728でいった癖というのは、
"print_called_time関数(>>728)の中で1つめのprintfを関数中の
ctimeの後に持ってくるとやはり開始時刻が終了時刻に上書きされて
しまうと"いう意味です.
(プログラムを全部貼ってるとなんか2chサーバー上の領域を無駄に
しているような気がするなあ...diff結果を書いても読む人が面倒
だろうし.programをUpしてリンクを貼るとそのUpしたサーバーを
自分で管理しなければならないし.どうすべきなのかなあ.)
0731デフォルトの名無しさんNGNG
>>728-730
あんたのやり方に癖があるだけでは?
0732デフォルトの名無しさんNGNG
どうしてもいやならコピーすれば?
0733デフォルトの名無しさんNGNG
>>730
誰も読んでないから貼らなくていいよ
0734デフォルトの名無しさんNGNG
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));
}
0735デフォルトの名無しさんNGNG
>>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));
}

じゃないの?
0736667NGNG
>>727 = >>675 ありがと.
つまりどうせ同じ領域を指していて上書きされるのだから、
s_startを終了時刻にも使えばs_end分(ポインタ一個分)だけ
関数が消費するメモリが節約できる、ということですね.

strffimeは...なんだこりゃ、引数が沢山ある.
ちょっと後で調べてみます.cftimeとかもあるし.なんで時間を
扱う似たような働きをする関数が沢山あるんだ!統一してよ.
0737デフォルトの名無しさんNGNG
TPOに合わせて使う。
0738711NGNG
>>722
どういう意味でしょうか?
0739667NGNG
>>734 そうですね.このほうがずっとスマートです.
>>735 この場合>>734 = >> 735 の結果ですね. 私の>>728の
ように使った場合順番が効いてきます.
これが>>731のいう癖のあるやり方ということなのでしょう.
>>732 ごめんな.sageとくから許してね.


0740デフォルトの名無しさんNGNG
>>738
板違いと思うよ
素数のどんな性質利用してんの?
それでどこでつまってんの?
ほんで素数の方程式は今のところコンピュータで実装
できないらしいので(たぶん)がんばれ
squrt()使ってるんやったら限界あんのとちゃうの
0741デフォルトの名無しさんNGNG
素数判定は多項式時間で可能
0742デフォルトの名無しさんNGNG
sqrt()
0743デフォルトの名無しさんNGNG
順に割っていけばいいんだから多項式時間じゃない?
0744デフォルトの名無しさんNGNG
順に割ったら多項式時間ではすまない
0745デフォルトの名無しさんNGNG
何の多項式時間?
0746デフォルトの名無しさんNGNG
何のって、計算量知らんのか?
大雑把に言えば入力データ量に対する
プログラム停止までにかかる時間のオーダーだよ
0747デフォルトの名無しさんNGNG
>742
素数計算での開平は値そのものが問題なのではないってことを理解しているか?

計算自体は多倍長の足し算引き算だけだろ。記憶場所がかなり必要になるってだけだ。
だからまともな処理系で栗をつかってメモリ確保すればその処理系の最大オカレンスサイズまで使い潰して止まる計算だな
0748デフォルトの名無しさんNGNG
n個の数字を判定するのか、数nを判定するのかのどっち?
0749デフォルトの名無しさんNGNG
>>748
何の質問?
0750デフォルトの名無しさんNGNG
sqrtなんか使うなよ
その時点で限界が見えるだろが
0751デフォルトの名無しさんNGNG
C言語の入り口で、泣いている諸君、いい本があった。倉薫氏が出した
「C言語(1)はじめてのCプログラミング」なら大丈夫。懇切ていねいとは
倉薫氏の書き方です。CD-ROMがついていて、失敗なしてインストールができるぜ。

0752722NGNG
多項式とかよくわかんねーよ、難しい用語はやめてくれ
とにかく素数列挙の場合過去の素数で除算なんてしないよな?
そんで俺の知ってる方法のひとつに平方を使うなんだけど
他の方法はなんだ?
0753デフォルトの名無しさんNGNG
>>752
>>711
0754711NGNG
>>753
すいません、レス遅れました。エラトステネスはやめてメルセンヌ素数
を探すことにしました。みなさんご迷惑おかけしてすいませんでした。

>>748
方向転換で数nという方向で

>>752
確率的なアルゴリズムでは、フェルマーテストや、ルビンテストなどがあります。
で、メルセンヌ素数の場合は、ルカステストで比較的容易に判定が可能です。
(2^n-1 n:素数)の形で表されます。
0755デフォルトの名無しさんNGNG
今さ、ふとトリビアを見つつ、C言語入門シニア編を読んでいた
わけさ、そこでふとポインタも配列にできて、文字列を使う時に
いいんだと書いてあってさ、要するに
char *a[200];
とか宣言できるわけだ、んでもって配列の中身の文字数が少なく
てもその分しかメモリ食わないって言うし、すげぇなと思ったわけよ。
でもさ、あんましみんな使ってるの見た事ないんだけど、なんか不便
なトコとかあんの?
memcpy(a,"はなもげピー");とかできないとか、

char *b;
b=a;みたいな事ができないとかあんの?
どなたか教えてくんろ
0756デフォルトの名無しさんNGNG
上手くトリビアを絡めた質問じゃなきゃ(レスを求めるのは)難しい。
0757デフォルトの名無しさんNGNG
>>756
むずかしいな。なんか見本みせてよ!!
0758デフォルトの名無しさんNGNG
ポインタ先の文字列はメモリ管理しないといけないでしょ。
0759デフォルトの名無しさんNGNG
static const char *const hoge[] = {
"foo", "bar", "baz", "gooo",
};
とかよく使うけどな。
0760デフォルトの名無しさんNGNG
誰もmemcpyの引数リストについてはつっこまないんだな。
0761デフォルトの名無しさんNGNG
>>747
ところで、栗ってなんだ?
0762デフォルトの名無しさんNGNG
素数の多項式ってこれか。
まだ生き残ってるとは思わなんだ。

暗号総崩れ-素数判定が多項式時間で可能
http://pc2.2ch.net/test/read.cgi/tech/1028877628/
0763デフォルトの名無しさんNGNG
インド人だとネタとしか思えない。
ネタじゃないんだろうけど。
0764デフォルトの名無しさんNGNG
インドは代数学発祥の地だぞ
0765デフォルトの名無しさんNGNG
「インド人数学者」って、たまに、とてつもない天才が登場するというイメージがあるなぁ
0766デフォルトの名無しさんNGNG
>>765
インドは、今も昔も、数学先進国ですからね。
0767デフォルトの名無しさんNGNG
cygwinのgccなんですがタイマーイベント起こすようなライブラリ関数はないでしょうか?
例えば、for文でループ回していて1秒おきに内容を表示するなんてのを作りたいのですが。

for (int i=0; i<10000000; i++) {
// 1秒おきにiの内容を表示したい
}
0768デフォルトの名無しさんNGNG
それ、タイマー必要なのか?
time()を使えばいいじゃん
0769デフォルトの名無しさんNGNG
わたしは超ビギナーです。通常は画面の最後ににC:\Lsic86>が出ているのに、
操作しているうちに、次の行が_のようなカーソルだけになりなした。
C:\Lsic86>が出るようにするにはどうしたらよいのですか。教えてください。
0770デフォルトの名無しさんNGNG
自己申告:exitでよかった。
0771デフォルトの名無しさんNGNG
>>768
time()ですか・・・擬似コードでもよいのでもう少し詳しく教えていただけませんか。
0772デフォルトの名無しさんNGNG
>>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;
}

}

こんな感じでしょうか?
0773デフォルトの名無しさんNGNG
×
time(?t);
if (current - old == 1) {
 printf("%d\n", i);
}
old = current;

○
time(¤t);
if (current - old >= 1) {
 printf("%d\n", i);
 old = current;
}
0774デフォルトの名無しさんNGNG
ぬあ、"¤"なんて実体参照があるのか
0775デフォルトの名無しさんNGNG
>> 773
ありがとうございます。
0776デフォルトの名無しさんNGNG
>>774
なんか&currentって書こうとするとなっちゃいます。
0777デフォルトの名無しさんNGNG
でもこの方法だと無駄にwhile文回したりしないとできないんじゃないかと思えてきました。
Windowsだと何msおきにタイマーハンドラを呼び出すようなAPIがありますが、Linuxにはないのでしょうか?
0778デフォルトの名無しさんNGNG
>>777
>>1
0779デフォルトの名無しさんNGNG
すいません。Linux板いってきます。
0780setitimer()NGNG
(´-`).。oO(cygwinなのかLinuxなのか、どっちなんだろう?)
0781デフォルトの名無しさんNGNG
>>780
さりげなくヒントありがとうございます。
あれ、cygwinとlinuxってapiほとんど同じじゃないですか?
0782デフォルトの名無しさんNGNG
>>781
Linux板で聞いても確実に板違いといわれると思う。
「ほとんど同じ」というのはどちらもPOSIXをャxースにしてるbニいうだけで、
CygwinとLinuxだけじゃない。

Cygwin使っている人いますか? その9
http://pc.2ch.net/test/read.cgi/unix/1055250582/
0783デフォルトの名無しさんNGNG
前に素数関連で質問をさせていただいた者です。こんにつは!
今、メルセンヌ素数を判定するルカス法の関数を見つけました。
で、この関数を用いて、非常に大きい素数の判定を行うとします。
しかし、大きな素数となると時間がかかる事は予想できている事なので、
当然1回(一度パソコンをつけている間)で判定しきれない場合も出てき
ます。←一週間ぐらいつけとけ!!って突っ込まれそう・・・・
なので、この関数の内容のループの部分を少しずつやって、ファイルに
どこまでやったかを保存して、みたいな方法を考えています。
でも、具体的にどうすればいいのかさっぱり思い浮かびません。
こんな感じにすればどう?ってアイデアがあればどなたかご教授くだ
さい。また、他の方法があれば些細な事でいいので教えてください。
(GIMPSみたいな事をやりたいと考えていただけると分かりやすいと思います)


0784デフォルトの名無しさんNGNG
上で言っているコードです。
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;
}
0785デフォルトの名無しさんNGNG
続き
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;
}
0786デフォルトの名無しさんNGNG
その素数に燃やす熱意がよく分からない
0787デフォルトの名無しさんNGNG
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;
0788デフォルトの名無しさんNGNG
>>786
あーコードの間に〜、まぁいいか。
素数・・・・・・・素晴らしいですよね!!
0789デフォルトの名無しさんNGNG
>>788
うざいので今度からはソースは貼らないでください。
0790デフォルトの名無しさんNGNG
>>783
>具体的にどうすればいいのかさっぱり思い浮かびません。

まずは本屋に行って、初心者用のC言語入門でも買いなさい。
0791デフォルトの名無しさんNGNG
>>789
すいません。邪魔でしたね。


0792デフォルトの名無しさんNGNG
区切りのいいところで自動的に全て保存するようにすればいい
それでプログラムのスタート時に保存されたデータがあるかどうかを見て
あれば自動的に読み込む。
OSの機能を使えばもう少し気の利いたこともできるが
■ このスレッドは過去ログ倉庫に格納されています