■ 2ちゃんねるは、ここのサーバを使ってるです。。。
 .jp ドメインお持ちのお客様大歓迎。maido3.jp
 .fm 取得代行します。(US) maido3.fm
 .ca 取得代行します。(US) maido3.ca
 .com .net .org 取得代行します。(US) maido3.com
 .cc .to .tv 取得代行はじめました。NEW
人気サイト
月々1,000円からの BinboServer.com 2ちゃんねるも使っている Big-Server.com
>> 2ちゃんねる、サーバ監視所

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
C言語なら、俺に聞け! <10>
1 名前: Cハッカー日下部陽一 投稿日: 01/12/14 12:34
おれは42才、24年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったらオレに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

・前スレ C言語なら、オレに聞け! <9>
http://pc.2ch.net/test/read.cgi/tech/1007272267/l50

Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通のようだぞ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419

K&Rで挫折するようなヤツはこれでも買え。
これでわからない、救いがたいヤツはあきらめろ。
・作ってわかるCプログラミング(アヒル本と呼べば通のようだぞ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419


2 名前: デフォルトの名無しさん 投稿日: 01/12/14 12:37
2


3 名前: デフォルトの名無しさん 投稿日: 01/12/14 12:38
1は童貞


4 名前: デフォルトの名無しさん 投稿日: 01/12/14 12:39
手になじんだのは、自分のティムポ


5 名前: デフォルトの名無しさん 投稿日: 01/12/14 13:35
いつもお世話になっております。
早速ですが、ファイルポインタを引数として関数に渡そうとしてコーディング
してみたのですが、どうも上手くいきません。
方法は下記の通りです。

main(){
FILE *FP;

Init_Proc(&FP);
}
Init_Proc(FILE **FP){
*FP = fopen(・・・);
X_Proc(FP);
}

X_Proc(FILE **FP){
fprintf(*FP, "%s\n", "ABC");
}

現状ではX_Procでファイル書込を行った際にファイルポインタが破壊されて
いるようです。
ファイルポインタを引数として渡すことはあまりなくて、どのようにすれば
よいのかわかりません。
みなさん、ご教授を宜しくお願いします。


6 名前: Kusakabe Youichi 投稿日: 01/12/14 13:40
>>5
デフォルトの名無しさん wote:
>いつもお世話になっております。

そういうことにしたいのですね。


7 名前: デフォルトの名無しさん 投稿日: 01/12/14 13:51
>>6
つかれてきましたね?


8 名前: Kusakabe Youichi 投稿日: 01/12/14 13:58
In article >>5, デフォルトの名無しさん/5 wrote:
> main(){FILE *FP;Init_Proc(&FP);}
> Init_Proc(FILE **FP){ *FP = fopen(・・・); X_Proc(FP);}
> X_Proc(FILE **FP){fprintf(*FP, "%s\n", "ABC");}
>
> 現状ではX_Procでファイル書込を行った際にファイルポインタが破壊されて
> いるようです。

そういう問題ではないですね。

> ファイルポインタを引数として渡すことはあまりなくて、

っていうか、こんな渡し方をしなきゃいけない場合は考えられないので、
そもそも設計がまちがっているのでしょう。

まず、fopenで帰ってくる値(ポインター)が指す実体はどこにあるのか
想像してみましょう。

# いったいどんな本を読んで勉強したのだろうか。


9 名前: Kusakabe Youichi 投稿日: 01/12/14 13:58
In article >>6, Kusakabe Youichi/6 wrote:

> >>5
> デフォルトの名無しさん wote:
> >いつもお世話になっております。
>
> そういうことにしたいのですね。

引用の仕方がちがいますね。


10 名前: デフォルトの名無しさん 投稿日: 01/12/14 14:01
>>8
アヒル本とK&Rをよんで勉強してきました。


11 名前: デフォルトの名無しさん 投稿日: 01/12/14 14:16
>>5
> 早速ですが、ファイルポインタを引数として関数に渡そうとしてコーディング
> してみたのですが、どうも上手くいきません。
「どうも」じゃなくて「どう」上手くいかねぇのよ。

> 現状ではX_Procでファイル書込を行った際にファイルポインタが破壊されて
> いるようです。
んなこたぁない。
fopen()の引数だけ直して#include <stdio.h>つけたらちゃんと動いたぞ。
省略したところに別のバグがあるんだろ。

> ファイルポインタを引数として渡すことはあまりなくて、どのようにすれば
> よいのかわかりません。
変すぎ。


12 名前: 5 投稿日: 01/12/14 14:24
みなさん、有り難うございます。
以前、UNIXの環境でファイルポインタを引数にしようとした時、
『ダブルポインタにしないと渡せない』と言われてから、そういうものだと
思っていましたが、VC++では違うようですね・・・
みなさんの意見を参考に試してみます。
有り難うございました。


13 名前: Kusakabe Youichi 投稿日: 01/12/14 14:26
In article >>12, 5/12 wrote:
> みなさん、有り難うございます。
> 以前、UNIXの環境でファイルポインタを引数にしようとした時、
> 『ダブルポインタにしないと渡せない』と言われてから

「だれに」いわれたのですか?


14 名前: デフォルトの名無しさん 投稿日: 01/12/14 14:53
>>12
> 以前、UNIXの環境でファイルポインタを引数にしようとした時、
> 『ダブルポインタにしないと渡せない』と言われてから、そういうものだと
> 思っていましたが、VC++では違うようですね・・・

>>5が完全に誤解してるか、思いっきりだまされてるか、そう言った奴も完璧な厨房か。
>>5の誤解に1000ポインタ。


15 名前: もふ 投稿日: 01/12/14 15:41
バイナリのランダムアクセスファイルを作ったり読んだりする
プログラムをつくってます。ひとつのデータが下のような構造体です。

typedef struct {
int x;
long y;
} mydata;

なにかアライメントやエンディアンとかの問題があるらしいので
mydata buf;
fread( &buf, sizeof(mydata), 1, fp );
fwrite( &buf, sizeof(mydata), 1, fp );
みたいなのは駄目らしいのですが、具体的にどう回避すれば
よいのでしょうか?

アライメントの問題のほうは
fwrite( &(buf.x), sizeof(int), 1, fp );
fwrite( &(buf.y), sizeof(long), 1, fp );
とか分ければいいのかな? と思うのですが
エンディアン云々のほうは回避策がわかりません。。。

そもそも、longとかのビット数が違ったら駄目な気もするし。。。
なにかこういうときの定番の方法とかあったら教えてくださるとうれしいです。


16 名前: デフォルトの名無しさん 投稿日: 01/12/14 15:53
>>5(釣り師)のネタに10000ポインタ。


17 名前: 16 投稿日: 01/12/14 15:55
あ、これ>>14へのレスね


18 名前: デフォルトの名無しさん 投稿日: 01/12/14 15:58
>>15
アライメントの問題は、そのように構造体のメンバを
ひとつずつ処理しればOKですよ。

エンディアンの問題は、たとえば、こういうように一バイトずつ
読み書きするしかないでしょうね。
void write_long(FILE* fp, long n)
{
 int i;
 for (i = 0; i < 4; i++ ) {
  fputc(n & 0xff, fp);
  n >>= CHAR_BIT;
 }
}


19 名前: デフォルトの名無しさん 投稿日: 01/12/14 16:01
hton*関数で強制的にネットワークバイトオーダにしてから
書く、という手もあるよ。


20 名前: デフォルトの名無しさん 投稿日: 01/12/14 16:05
>>15
longのサイズの問題は、保証されてる32ビットしか使わない
ようにすればよいと思う。


21 名前: Kusakabe Youichi 投稿日: 01/12/14 16:18
In article >>15, もふ/15 wrote:
> なにかこういうときの定番の方法とかあったら教えてくださるとうれしいです。

対象環境が1つか2つだったら#ifで対処、
無数の環境を意識するんだったら、
freadでcharの配列に読んで1バイトずつ処理するか、
ascii化して書くかどちらか。


22 名前: tai 投稿日: 01/12/14 16:39
C言語で関数ごと個々のソースで分けてあるプログラムを改造しようと思っているのですが,
ひとつの関数で使ったローカル変数に入った値をプログラム全体での変数に代入したいのですが、どのようにしたら良いのでしょうか?
よろしくおねがいします。


23 名前: デフォルトの名無しさん 投稿日: 01/12/14 16:41
グローバル変数にするのはダメなの?


24 名前: Kusakabe Youichi 投稿日: 01/12/14 16:45
In article >>22, tai/22 wrote:
> ひとつの関数で使ったローカル変数に入った値をプログラム全体での変数に
> 代入したいのですが、どのようにしたら良いのでしょうか?

ふつうに代入する。


25 名前: もふ 投稿日: 01/12/14 16:54
皆さんありがとうございます。

なるほど、0xffと & を取ればエンディアンに関係なくいちばん「桁」の
小さいところのバイトを取れるんですねー。

いちおう、こんなのでやってみます。。。

int read_mydata( FILE *fp, mydata *dp ){

if( read_int( fp, &(dp->x) ) == 0 ) return 0;
if( read_long( fp, &(dp->y) ) == 0 ) return 0;

return 1;
}

int read_long( FILE *fp, long *l ){

int i, c;
*l = 0;

/* 32bitまで */
for( i=0; i<4; i++ ){
if( ( c = fgetc( fp ) ) == EOF ){
return 0;
}
*l |= c;
*l <<= 8;
}

return 1;
}


26 名前: Kusakabe Youichi 投稿日: 01/12/14 17:27
In article >>25, もふ/25 wrote:
> いちおう、こんなのでやってみます。。。
> int read_mydata( FILE *fp, mydata *dp ){
> if( read_int( fp, &(dp->x) ) == 0 ) return 0;
> if( read_long( fp, &(dp->y) ) == 0 ) return 0;
> return 1;
> }
エンディアンの問題はなんとかなっても、構造体のメンバーの間に
隙間があったらどうするつもりなの?


27 名前: デフォルトの名無しさん 投稿日: 01/12/14 17:32
>>26
>エンディアンの問題はなんとかなっても、構造体のメンバーの間に
>隙間があったらどうするつもりなの?

メンバをひとつずつ処理してるから、問題ないのでは?


28 名前: Kusakabe Youichi 投稿日: 01/12/14 17:35
In article >>27, デフォルトの名無しさん/sage/27 wrote:
> >エンディアンの問題はなんとかなっても、構造体のメンバーの間に
> >隙間があったらどうするつもりなの?
>
> メンバをひとつずつ処理してるから、問題ないのでは?

「処理」とは?


29 名前: デフォルトの名無しさん 投稿日: 01/12/14 17:39
>>28
>「処理」とは?

if( read_int( fp, &(dp->x) ) == 0 ) return 0;
if( read_long( fp, &(dp->y) ) == 0 ) return 0;

read_int(),read_long()こういう関数をコールして、
ファイルから、int,longの単位で読み出してることです。


30 名前: デフォルトの名無しさん 投稿日: 01/12/14 17:41
._________
|             |
|  ここでボケて   |
|____ ____|
   ∧,,∧ ||
⊂ミ.,,゚Д゚彡つ


31 名前: Kusakabe Youichi 投稿日: 01/12/14 17:42
In article >>29, デフォルトの名無しさん/29 wrote:
> >「処理」とは?
>
> if( read_int( fp, &(dp->x) ) == 0 ) return 0;
> if( read_long( fp, &(dp->y) ) == 0 ) return 0;
>
> read_int(),read_long()こういう関数をコールして、
> ファイルから、int,longの単位で読み出してることです。

ってことは、書くときにもそうするってことですよね?(そこが重要)。


32 名前: デフォルトの名無しさん 投稿日: 01/12/14 17:49
>>31
>ってことは、書くときにもそうするってことですよね?(そこが重要)。

ああ。
読むときに、int,long単位でやってるから、書き込みも
同じに処理するって、思い込んでましたよ。
初心者相手には、そういう配慮をしたほうがいいですかね。


33 名前: もふ 投稿日: 01/12/14 17:51
情報が足らなくてすみません。

もちろん、書くときにも同じ順番でひとつずつ write_int , write_long などとやりますが、
それなら大丈夫ですよね?


34 名前: Kusakabe Youichi 投稿日: 01/12/14 17:52
In article >>32, デフォルトの名無しさん/32 wrote:
> ああ。
> 読むときに、int,long単位でやってるから、書き込みも
> 同じに処理するって、思い込んでましたよ。

まあ、自分でやるときはそうするから...は甘いですね:)

> 初心者相手には、そういう配慮をしたほうがいいですかね。

配慮というか「警戒」というか。


35 名前: Kusakabe Youichi 投稿日: 01/12/14 17:54
In article >>33, もふ/sage/33 wrote:
> もちろん、書くときにも同じ順番でひとつずつ write_int , write_long などとやりますが、
> それなら大丈夫ですよね?

その読む関数と書く関数がつねにセットになっていて不整合がなく、
片方だけ修正しわすれることがなければね。

そのためにはなるべく近くに置くのがコツ。
(#defineマクロなどで共通化もはかる)


36 名前: デフォルトの名無しさん 投稿日: 01/12/14 17:57
>>33
たいていのアーキテクチャでは整数を表現するのに2の補数を使ってるけど、稀に1の
補数を使ってるアーキテクチャもある。その場合には >>25 だと NG だね。
(ま、そんなアーキテクチャを使う予定がなければ、気にしないのが正解だけどさ)

あと、構造体ごとに read_xxx 関数を作ると面倒になるから、一つ抽象化したほうがいい
と思われ。printf() みたく

 (1) ダンプするデータを指定する文字列 (c で char, i で int, l で long とか)
 (2) 実際のデータ

を列挙して処理できる関数を、一つ用意するとかね。

inline int read_mydata(FILE *fp, mydate *dp)
{
  unpack(fp, "il", &dp->x, &dp->y);
}

たとえば、こんな感じで。これだけだと有り難味が実感できないかもしれんが、ユーザ定義の
コールバック関数を取れるように (1) を拡張したりすると、データが複雑になったときの保守
性に差が出てくる。


37 名前: デフォルトの名無しさん 投稿日: 01/12/14 18:09
>>26
>稀に1の補数を使ってるアーキテクチャもある。その場合には >>25 だと NG だね。

1の補数でもOKのように見えますけど、どこがいけないんでしょうか?


38 名前: デフォルトの名無しさん 投稿日: 01/12/14 18:17
>37
2の補数の機械で、-50を保存
そのデータを1の補数の機械へもっていき、読みこむ

とどうなるか、というお話ではないだろうか?


39 名前: デフォルトの名無しさん 投稿日: 01/12/14 18:24
>>38
なるほど。
いろいろあるなぁ。
互換性を考えると、テキストデータが一番いいかな。
(って、文字コードもいろいろあるのか)


40 名前: デフォルトの名無しさん 投稿日: 01/12/14 18:25
C言語ですが,ひとつの関数で出来上がったint のデータを
クリップボードに移すにはどのようにやればよいのでしょうか?


41 名前: デフォルトの名無しさん 投稿日: 01/12/14 18:37
>>40
Generic な C では「クリップボード」は定義されてないから、何とも。VC の話なら VC スレで聞いたほうが
いいと思うぞ。


42 名前: デフォルトの名無しさん 投稿日: 01/12/14 18:59
レスありがとうです。
なんか下記のようなサンプルがあるんだけどこれを独立したcソースの関数とすると、
コンパイル後に「HGLOBALは定義されていない識別子です」とでてエラーがでます。
定義はどこですればいいのでしょうか?
あとCではクリップボードはつかわないほうがいいのですか?


void SetClipText(void)
{
HGLOBAL hText;
char *pText;

hText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, 4);
pText = GlobalLock(hText);
lstrcpy(pText, "abc");
GlobalUnlock(hText);

OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT, hText);
CloseClipboard();
}


43 名前: デフォルトの名無しさん 投稿日: 01/12/14 19:43
>>42
ヘッダをインクルードしなさい。
てか、C言語の質問とちゃうでしょ。


44 名前: ネタ? 投稿日: 01/12/14 19:47
「Cではクリップボードはつかわないほうがいいのですか?」
ゲラゲラ


45 名前: デフォルトの名無しさん 投稿日: 01/12/14 21:17
C特有のヘボを指摘して、その次Win32スレに移行だな


46 名前: デフォルトの名無しさん 投稿日: 01/12/14 21:24
古い話題を掘り返してすまんが、
>>8
> っていうか、こんな渡し方をしなきゃいけない場合は考えられないので、
Init_Proc()で開いたファイルストリームを、main()で触りたい場合は?
戻り値で返せってか、まぁその通りなんだが。

> まず、fopenで帰ってくる値(ポインター)が指す実体はどこにあるのか
> 想像してみましょう。
これはマジか?ネタか?
5をひっかけて喜んでるのか?
想像の入る余地があんのかよ。

> # いったいどんな本を読んで勉強したのだろうか。
あんたがな。


47 名前: デフォルトの名無しさん 投稿日: 01/12/14 21:34
>>46
>これはマジか?ネタか?
>5をひっかけて喜んでるのか?

なんのことだろ。
日下部氏が間違ってるようには見えないけど?


48 名前: デフォルトの名無しさん 投稿日: 01/12/14 21:44
>>47

・fopenで帰ってくる値(ポインター)が指す実体
> fopenが返す値(FILE*型)の実体は、標準関数が内部管理する領域(FILE型)

・fopenが返した値を格納した領域
> Init_Proc(FILE** FP)へ引数としてアドレス(FILE**型)が渡された、
main()内のFILE*型変数FP。

で、何が問題?
fclose()してない事?


49 名前: デフォルトの名無しさん 投稿日: 01/12/14 21:48
>46
普通、構造体で包んで渡したりするとおもうよ。
FILE**が出てくるソースは、俺はあんまし見たことない。

>47
じゃ、とりあえず、5のどこが間違っているのか、説明してみてよ。


50 名前: デフォルトの名無しさん 投稿日: 01/12/14 21:54
スマソ、sageてなかった。

>>49
まぁ、その通りだし、私もそうするけど、5の
> っていうか、こんな渡し方をしなきゃいけない場合は考えられないので、
“考えられない”ってのが言い過ぎだという反例です。


51 名前: デフォルトの名無しさん 投稿日: 01/12/14 22:04
>>48-49
ポインタのポインタなんてしないで、
普通に FILE*fpで受け渡しすればいいのでは?
5が動くといっても、無駄に処理を複雑にしてるだけに見えるよ。


52 名前: デフォルトの名無しさん 投稿日: 01/12/14 22:08
>51
とりあえず、その「普通にFILE*fpで受け渡し」してみたコードを載せてみ。


53 名前: デフォルトの名無しさん 投稿日: 01/12/14 22:15
>52 意地悪(w


54 名前: デフォルトの名無しさん 投稿日: 01/12/14 22:24
>>52
検証の余地なんてないと思うけど、なんで?
なんか勘違いしてない?


55 名前: 46 投稿日: 01/12/14 22:31
>>54
それに必然性があるか否かはともかく、
5のソースではFILE*型変数FPの実体はmain()内にあるのさ。
で、Init_Proc()でfopen()してる。
さて、Init_Proc()からmain()に戻ったとき、
FPの値は何やろね?

という事を、52は言いたいのだと思われ。

あんまこんな事をつついていると、元凶から
“そもそも設計がまちがっているのでしょう。”
とか返されそうでやだな。


56 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:22
char *p;

p = malloc(sizeof(char)*256);


これをコンパイルするとエラーになります。

エラー E2034 testf.cpp 8: 'void *' 型は 'char *' 型に変換できない(関数 main() )

コンパイラのせい?


57 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:24
>>56
コンパイラのおかげです。


58 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:26
>>56

なんで、p=(char *)malloc(256);
にしないの?


59 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:30
56>58
知らなかったから。
ありがと。無事コンパイルできたよ


60 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:33
void *型は全てのポインタ型と互換性があるんじゃないの?


61 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:43
>>60
c++コンパイラでコンパイルしたんじゃない?


62 名前: デフォルトの名無しさん 投稿日: 01/12/14 23:53
56>60.61
そう、コンパイラはBorland C++ です。


63 名前: 61 投稿日: 01/12/14 23:57
まあ、拡張子が.cだったらcでコンパイルされるみたいだけど(bcc32)。
c++はある型をtypeとすると
type*からvoid* へは普通にキャストできるけど
void*からtype* へのキャストは明示的に(type*)とキャストしないと
コンパイラに叱られる。


64 名前: デフォルトの名無しさん 投稿日: 01/12/15 00:35
c++なら (type*) ではなく static_cast<type*>() だ、
と知ったかぶってみる板違い。


65 名前: デフォルトの名無しさん 投稿日: 01/12/15 00:46
質問です。
Winで\nてやるとWin用の改行コードを吐きますよね?
それを、無理矢理UNIX系OSの改行コードを吐かせる方法ってありますか?


66 名前: デフォルトの名無しさん 投稿日: 01/12/15 00:52
BC++でも、ソースの拡張子を.cにすれば、Cのソースとして理解してくれるんじゃないの?


67 名前: デフォルトの名無しさん 投稿日: 01/12/15 00:54
>>64
それ以前に new 使うと思うが。(これならキャスト不要だよ)


68 名前: デフォルトの名無しさん 投稿日: 01/12/15 00:54
>>65
良く分かってないのに“吐く”だなんて言葉使うな。
“\nてやると”ってなんだよ!

“テキストモード”と“バイナリモード”で調べろ。
阿呆


69 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:00
工房が吠えてます(ワラ


70 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:02
>65





71 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:03
学校で丁寧に習わないと先へ進めなかったあほですか?


72 名前: 名無しさん@お腹いっぱい。 投稿日: 01/12/15 01:03
>Winで\nてやるとWin用の改行コードを吐きますよね?
UNIXでもDOSでも吐きますが何か?
>それを、無理矢理UNIX系OSの改行コードを吐かせる方法ってありますか?
何を無理するんでしょうか、すいませんが私も「吐く」の意味が把握出来ません


73 名前: 自作自演 投稿日: 01/12/15 01:06
お前ら、そろそろ勘弁してやれよ(w


74 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:06
>>65
バイナリモードでオープン


75 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:10
そろそろ勘弁て、俺速攻で教えてるやんかー
> “テキストモード”と“バイナリモード”
しかも工房呼ばわり。

ところで無理矢理ってイイね。
無理矢理履かせる、黒ニーソクスを
無理矢理穿かせる、タイトミニを


76 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:17
厨房見るとハイエナの如くハンターが集まってくるね(^^;)こわっ


77 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:21
>>75
> しかも工房呼ばわり。
そりゃあ 65=69 で、質問したら馬鹿にされて悔しかったんだろ(w


78 名前:   投稿日: 01/12/15 01:26
おおかたファイル操作で躓いてんじゃねーの?<厨房


79 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:26
>>72
自分で「吐きます」とつかっているじゃないか。


80 名前: opopi 投稿日: 01/12/15 01:43
c:\program files\microsoft visual studio\myprojects\report\report.cpp(2) : fatal error C1083: インクルード ファイルがオープンできません。'plot10.h': No such file or directory
こういうエラーがでるんですけど、なぜかわかりませんか?
ちなみにproject−設定でplotc2fをいれたんですができません


81 名前: Kusakabe Youichi 投稿日: 01/12/15 01:53
In article >>76, デフォルトの名無しさん/sage/76 wrote:

> 厨房見るとハイエナの如くハンターが集まってくるね(^^;)こわっ

っていうか「正しい教え方」どころか、
自己満足のために相手しているみたいだし。

私みたいに正しく対処すればいいのにね。


82 名前: デフォルトの名無しさん 投稿日: 01/12/15 01:59
>>80
'plot10.h': No such file or directory
って自分で書いてるじゃねぇか。

> ちなみにproject−設定でplotc2fをいれたんですができません
意味不明

正しい対処とやらは誰かさんがしてくれるじゃろ。
俺は毒づくだけ。

阿呆


83 名前: デフォルトの名無しさん 投稿日: 01/12/15 02:13
ストレスが溜まっているからね


84 名前: Kusakabe Youichi 投稿日: 01/12/15 02:22
In article >>80, opopi/80 wrote:

>'plot10.h': No such file or directory
> こういうエラーがでるんですけど、なぜかわかりません

考えなさい。


85 名前: デフォルトの名無しさん 投稿日: 01/12/15 02:24
マニュアル読む癖付けろよー
と言うかwarez臭いな(w


86 名前: デフォルトの名無しさん 投稿日: 01/12/15 09:35
VC++6で下記のように書いても、エラーになりませんでした。
バグ?

while(...) {
...
} while(...);


87 名前: デフォルトの名無しさん 投稿日: 01/12/15 09:40
>86
なにが言いたいのかよくわからないな。
Whileが2つあるだけではないのか?
while(1) i++;
while(1) ;
を、君はエラーにしてほしい、とでも言うのか?


88 名前: デフォルトの名無しさん 投稿日: 01/12/15 10:10
>>86
どこかで見たな、その質問。
ネタか?ツマラソ


89 名前: デフォルトの名無しさん 投稿日: 01/12/15 10:18
>>86
ネタかも知れんが、一応解説しといてやる。
structとかと違って複文ブロックのあとに;は不要。


90 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:16
cat
dog
cow
hors
dog
bird
cat

こういう感じで、一行に単語がひとつ書いてある
テキストファイルを読み込んで、重複してある
単語を取り除いて、ユニークな単語数を数えると
いうプログラムを作りました。
いったんは完成したのですが、いろいろいじっている
うちに、うまく動かなくなって、元にもどせなくなって
しまいました。
どうすれいいですか?


91 名前: 90の続き 投稿日: 01/12/15 11:17
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

char *table[1000];
int table_tail = 0;

void table_add(char *s)
{
 char *p;
 p = malloc(strlen(s)+1);
 if (p == NULL ) {
  exit(1);
 }
 strcpy(p, s);
 table[table_tail] = p;
 table_tail++;
}

void word_count()
{
 int i, j;
 int kazu;
 int flag;
 kazu = 0;
 j = 0;

start:
 flag = 0;
 for (i = j; i < table_tail; i++) {
  if (strcmp(table[j], table[i]) == 0) {
   flag = 1;
  }
 }
 if (flag == 1 ) {
  table[j] = NULL;
 }
 j++;
 if( j >= table_tail-1 ) {
  goto end;
 }
 goto start;
end:

 for (i = 0; i < table_tail; i++) {
  if (table[i] != NULL) {
   kazu++;
  }
 }

 printf("%d\n", kazu);
}


92 名前: 91の続き 投稿日: 01/12/15 11:17

int main()
{
 char s[256];
 char *p;
 FILE *fp;

 fp = fopen("word.txt","r");
 if (fp == NULL) {
  exit(1);
 }

 for (;;) {
  p = fgets(s,256,fp);
  if (p == NULL) {
   goto end;
  };
  table_add(s);
 }
end:
 word_count();
 return 0;
}


93 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:33
>>90
ソース読むのウザイ、後でみてやるかもしれない。

> いったんは完成したのですが、いろいろいじっている
> うちに、うまく動かなくなって、元にもどせなくなって
> しまいました。
ソースは履歴を取っとけ。
“いったんは完成した”というのなら、
そういった時点でな。


94 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:34
>いろいろいじっている
>うちに、うまく動かなくなって、元にもどせなくなって
>しまいました。
>どうすれいいですか?

CVSを導入しましょう。


95 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:43
goto使うなよぅ・・・


96 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:48
gotoを全くつかうなとは言わん。(宗教論争はカンベソ)
でも、お前がgoto使ってる個所は総て、forかwhileループ、
およびbreak文で書ける、というか俺ならそうする。

>うまく動かなくなって
何が問題が書け!
コピペしてmakeして実行してみろと?
しかもバグ付きソースを!?

アクセス違反が起きる、というなら、
strcmp(table[j], table[i])にNULLを突っ込んでいるのが原因やろ。

阿呆


97 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:48
ブレイク!
ブレイク!


98 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:49
このプログラムじゃ、いらんよな>goto
while forとbreakで十分。


99 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:49
>>90-92
なんの目的でやってるの?
プログラミングのお勉強?
それなら、とりあえず goto なくせ。
必要ない flag も使うな。

問題があるのは strcmp(table[j], table[i]) のところで
NULL を渡すことがあるのがいけんのだと思う。


100 名前: デフォルトの名無しさん 投稿日: 01/12/15 11:50
ケコーンだ。


101 名前: 99 投稿日: 01/12/15 11:50
かぶった…


102 名前: 96 投稿日: 01/12/15 11:54
俺?>ケコーン
99さんよろしく!
しあわせにしてね(はぁと)


103 名前: 90 投稿日: 01/12/15 11:56
すみません。
goto使わないと、かけませんでした。
自分には、これで、いっぱいいっぱいです。


104 名前: デフォルトの名無しさん 投稿日: 01/12/15 12:02
ついで、コレも下手うつと宗教論争の元だけど、
malloc()で確保したんだから、
table[j] = NULL;
ってやる前に、free()しとけ。

> goto使わないと、かけませんでした。
少なくとも、main()の中のgotoはbreakに。
そもそもwhileの条件にfgets()を指定すればそれで良い。
word_count()中のgotoも、forで書けるでしょ?
がんばれ!

…阿呆


105 名前: 99 投稿日: 01/12/15 12:17
>>102
こちらこそよろしく!
無職ですがよろしく!


106 名前: C初心者 投稿日: 01/12/15 12:26
教えて下さい。
他人のソースで見たのですが……

#define SAMPLE "abcde"

このような定義があり、

if (string[0] == SAMPLE[0]) {

と書かれていたのですが、define定数のこのような使い方は
一般的なのでしょうか?


107 名前: デフォルトの名無しさん 投稿日: 01/12/15 12:35
別に良いと思う、何でそんな風なのか謎だけど
代入は出来ないからね。


108 名前: デフォルトの名無しさん 投稿日: 01/12/15 12:36
>>106
99さんと俺のケコーン式を邪魔したな!阿呆!!

一般的って何?水掛け論になりそうな言い回しヤメテ。
h = "0123456789abcdef"[d];
10進 to 16進 とか…
あんま使わんけど、全く見ないと言う程ではないと。


109 名前: デフォルトの名無しさん 投稿日: 01/12/15 12:42
×10進 to 16進 とか…
○整数値の16進数表記化

阿呆>俺


110 名前: デフォルトの名無しさん 投稿日: 01/12/15 13:03
>>108
それはおいといて、文字列を#defineで使うってのが
気持ち悪いのはおれだけか?


111 名前: デフォルトの名無しさん 投稿日: 01/12/15 13:20
>>110
どの意味?
文字列リテラルはベタ書きしろ?
extern const char* const とかで管理しろ?
そもそもスコープ無視で作用する#defineを文字列定数ごときに使うな?


112 名前: 後藤さん 投稿日: 01/12/15 14:22
エラー処理のときにくらい使わせてくれよgoto


113 名前: デフォルトの名無しさん 投稿日: 01/12/15 14:39
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 | ここでボケて!!  |
 |_________|
    ∧∧ ||
    ( ゚д゚)||
    / づΦ


114 名前: デフォルトの名無しさん 投稿日: 01/12/15 14:55
for (i=0;i<5;i++){
 printf("a[%d] = ",i);
 scanf("%c",&a[i]);
}

↑こうやるとうまくいきません。%sにすると問題ないです。なんで?


115 名前: デフォルトの名無しさん 投稿日: 01/12/15 14:58
scanfがそう言う関数だから


116 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:06
ここで質問する厨房ってscanfを使いだがるな。
学校で教えられるからかな。


117 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:09
「作ってわかるCプログラミング」に載ってるとか>scanf


118 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:09
scanfのソースはどこで見れますか?


119 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:13
見るのではない 感じるのだ。


120 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:13
>>118
ハードディスクをscanしてください。


121 名前: 初心者 投稿日: 01/12/15 15:29
以下の問題について考え方等を教えていただけませんでしょうか?
どのように考えれば良いのか分からず困惑しています。
よろしくお願いします。

1、キーボードから2つの整数を受け取り、小さい数から大きい数までの偶
数を表示するプログラムを作りなさい。受け取る数値が偶数でも
奇数でも処理できるようにすること。例えば、10と3を入力したら
4、6、8、10を表示する。

2、キーボードから0〜100までの数値を入力し、合計をsum
にもとめる。ただし、−999を入力したらゼロクリアして合計を
し直し999と入力したら合計を表示して終了するプログラムを
作りなさい。

3、キーボードから連続して数値を受け取り負の数が入力されたら
入力の終了としてそれまでに受け取った0または正の整数の中から
最大とと最小値を表示するプログラムを作成せよ。
ただし、最初の入力が負の数であった場合には最大値、最小値
ともにその負の数を出力するものとする。

4、キーボードから2つの整数を受け取り、小さい数から
大きい数までの奇数の和を表示するプログラムを作りなさい。
受け取る数値が奇数でも偶数でも処理できるようにすること。
例えば、10と3を入力したら3+5+7+9をプログラムないで計算し
24を表示する。また受け取った数値に0または負数が含まれる場合
や2つの数がともに同じ偶数の場合には0で表示するものとする。


122 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:34
>>121
>以下の問題について考え方等を教えていただけませんでしょうか?

ずいぶん基礎的な問題だと思いますが、
たとえば1だと、どのあたりがわからないのでしょうか?


123 名前: 揚げ足とり 投稿日: 01/12/15 15:36
>>121
>−999を入力したらゼロクリアして合計をし直し
ゼロクリアして合計って、ゼロ以外になんのかね(ゲラ

こんなとこに書く前に、隣に居る友達に相談ちなちゃい。
友達いないんでちたら、回線斬って首吊ってちね!


124 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:39
>>122
動かなくても自分なりに考えた答えを貼り付けるとか、
なんか、努力のあとを見せてくれよ。
匿名なんだから、恥をかいても平気だろ。


125 名前: 124 投稿日: 01/12/15 15:40
間違えた。124は>>121への書き込みね。


126 名前: 初心者 投稿日: 01/12/15 15:44
2の問題ですがsumをゼロクリアの間違いでした。
基礎的な問題というのは分かるのですが・・・
どう作って良いのかが分からないのです。
あきれてしまわれるかもしれませんが
なんとかアドバイスお願いします。


127 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:47
>>121
・キーボード入力を取る方法は分かりまちゅか?
・画面へ表示する方法は分かりまちゅか?
・ループとか条件式って、聞いたことありまちゅか?
・そもそもプログラム組んだことありまちゅか?

> どのように考えれば良いのか分からず困惑しています。
こういう場合は、
“息をするのも考えるのも面倒なので、お前らソースをウプしる!”
が正しい日本語の使い方です。

阿呆


128 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:48
>>126
手元に、ソースをコンパイルして実行する環境はありますか?
これくらい無かったら、絶望的です。

もし、無かったら答えをまるまる教えてくれるやさしい人の
登場をひたすら待つしかありません。


129 名前: 初心者 投稿日: 01/12/15 15:52
プログラム組んだこがないので・・・
先が分かりません。
#incude <stdio.h>
void main (void)
{
int



130 名前: 初心者 投稿日: 01/12/15 15:54
はい、lcpadがありますので
コンパイルはできます。


131 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:58
難しい問題を一つとくより
やさしい問題をたくさんときなさい


132 名前: 初心者 投稿日: 01/12/15 15:59
分かりました。
どうもすいませんでした。


133 名前: デフォルトの名無しさん 投稿日: 01/12/15 15:59
>>130
標準ライブラリのヘルプかマニュアルは持ってるか?

scanf() (藁
gets()
getchar()
prinf()

この辺見て、まず数値を受け取って、それを表示するプログラムを書いてみろ。
それが出来たらもう一度来い。


134 名前: 初心者 投稿日: 01/12/15 16:03
C言語ではじめようという本でやってるのですが
gets()、getchar()というのは出てきてないようですが・・・
これしかないですが、できる限りやってみます。
それでは


135 名前: 大ヒント 投稿日: 01/12/15 16:06
二つの数値を入力して、その間の数値を表示するプログラム。
偶数の判定を入れれば1の課題は完成。

#include <stdio.h>

int main()
{
int i,max,min,tmp;
scanf("%d", &min);
scanf("%d", &max);
if (min > max) {
tmp = min;
min = max;
max = tmp;
}
for (i = min; i < max; i++) {
printf("%d ", i);
}
return 0;
}


136 名前: 初心者 投稿日: 01/12/15 16:28
>>133

こんな感じですか?

#include <stdio.h>
void main (void)
{
int m,n;
scanf("%d",&m);
scanf("%d",&n);
}


137 名前: 初心者 投稿日: 01/12/15 16:40
>>135

判定というのはwhileとかforのことですよね?


138 名前: デフォルトの名無しさん 投稿日: 01/12/15 16:48
>>137
もしもし!?あんた何歳?
while や for という英単語を見てどうして“判定”だと思えるのか、
持ってる本のif文って所を、小1時間読め。
条件演算子というのもあるが、素人にはお勧めできない。

あと、136は数値を受け取っただけで表示してないだろ、阿呆。
画面に出ているのは、入力した時の表示(エコーバック)だけでは?


139 名前: 投稿日: 01/12/15 16:59
つーか、
printfとscanfのクローンをつくってみな。
意外につくれるから。


140 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:04
つか、宿題は宿題スレ逝けや。
http://pc.2ch.net/test/read.cgi/tech/1007902384/


141 名前: 初心者 投稿日: 01/12/15 17:10
あ!すいません。
なんか勘違いしてたようで・・・
printf入ってませんでしたね。
宿題スレにいかさせてもらいます。


142 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:11
>>89の意味がわかりません。


143 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:13
1バカ去って、また1バカ…


144 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:13
}は;をかねる


145 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:49
去るバカは追わず、来る馬鹿は許さず。


146 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:49
C言語で2分木を扱う場合の質問はこのスレでいいですか?
それともアルゴリズム関係のスレ?


147 名前: デフォルトの名無しさん 投稿日: 01/12/15 17:56
>>146
とりあえず、書いてみれば?
場違いなら蹴り出されるだけだし。


148 名前: Kusakabe Youichi 投稿日: 01/12/15 18:05
In article >>90, デフォルトの名無しさん/90 wrote:

> cat
> dog
> cow
> hors
> dog
> bird
> cat
>
> こういう感じで、一行に単語がひとつ書いてある
> テキストファイルを読み込んで、重複してある
> 単語を取り除いて、ユニークな単語数を数えると
> いうプログラムを作りました。
> いったんは完成したのですが、いろいろいじっている
> うちに、うまく動かなくなって、元にもどせなくなって
> しまいました。
> どうすれいいですか?

またしばらくおいておけばいいでしょう。


149 名前: Kusakabe Youichi 投稿日: 01/12/15 18:06
In article >>106, C初心者/106 wrote:
> #define SAMPLE "abcde"
>
> このような定義があり、
>
> if (string[0] == SAMPLE[0]) {
>
> と書かれていたのですが、define定数のこのような使い方は
> 一般的なのでしょうか?

#defineがどうのじゃなくて、展開した状態を考えてみればいいじゃん。


150 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:06
>>147
それじゃ、質問させていただきます。

文書から読み込んだ単語のリストを2分木で扱いたいと考えているのですが、
ルートノードとノードの追加は処理が違うために
ルートノードをあらかじめ作成しておいてからそのルートにノードを追加していくという方法を考えました。
その時ルートノードにはなにを入れればいいのでしょうか。


151 名前: Kusakabe Youichi 投稿日: 01/12/15 18:07
In article >>117, デフォルトの名無しさん/sage/117 wrote:

> 「作ってわかるCプログラミング」に載ってるとか > scanf

目次ぐらい読め。


152 名前: Kusakabe Youichi 投稿日: 01/12/15 18:08
In article >>144, デフォルトの名無しさん/sage/144 wrote:

> }は;をかねる

本気にするやつが出てきそう:)


153 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:08
Kusakabeセンセは、何故に全文引用なんて迷惑千万な事をなさりやがるんですか?


154 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:12
>>153
なさりやがる、に禿しくワラタ


155 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:19
>>151
> 目次ぐらい読め。
ご指摘、ありがとうございます。
でも、そもそも持ってないし。

なんで命令口調なんだろう。
# そんなに怒らなくてもいいのにー


156 名前: Kusakabe Youichi 投稿日: 01/12/15 18:23
In article >>150, デフォルトの名無しさん/150 wrote:
> その時ルートノードにはなにを入れればいいのでしょうか。

べつに何でもいいのでは?
たとえば、子が1つだけのノードの「もう一方のポインター」には
何をいれておくよていなのですか? それを考えれば
そうなやむことでもないことがわかるでしょう。

それでもわからなければ191ペイジを読みましょう。


157 名前: Kusakabe Youichi 投稿日: 01/12/15 18:24
In article >>153, デフォルトの名無しさん/sage/153 wrote:

> Kusakabeセンセは、何故に全文引用なんて迷惑千万な事をなさりやがるんですか

どこが全文引用なのですか?

わたしは必要な部分しか引用してないですよ。


158 名前: 150 投稿日: 01/12/15 18:26
>>156
何の本の191ページですか?アヒル本?


159 名前: Kusakabe Youichi 投稿日: 01/12/15 18:27
In article >>155, デフォルトの名無しさん/sage/155 wrote:
> > 目次ぐらい読め。
> ご指摘、ありがとうございます。
> でも、そもそも持ってないし。

だから買えばいいんだって。


160 名前: Kusakabe Youichi 投稿日: 01/12/15 18:31
In article >>158, 150/158 wrote:
> 何の本の191ページですか?アヒル本?

表紙にあひるはついてませんよ(あ、小さいのがあるか)


161 名前: 150 投稿日: 01/12/15 18:34
>>160
すみませんが、そんな本は持ってないです。
学生でお金がないので…。

いつか大金持ちになったら買うかもしれません。


162 名前: Kusakabe Youichi 投稿日: 01/12/15 18:36
In article >>161, 150/161 wrote:
> すみませんが、そんな本は持ってないです。
> 学生でお金がないので…。

じゃあ買うといいです。


163 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:37
>>150
とりあえず、cでのコーディング以前のアルゴリズムの話みたいなんで、
そっち系のスレ逝ったほうが良いかも。


>>157
> どこが全文引用なのですか?
148は80の全文引用だが、

> わたしは必要な部分しか引用してないですよ。
148に引用した範囲が回答に「必要な部分」であるとするなら(藁
“でも必要な部分しか引用してないですよ:)”
と返せるわけだ。
詭弁としても出来が悪い、3点。


164 名前: Kusakabe Youichi 投稿日: 01/12/15 18:40
In article >>163, デフォルトの名無しさん/sage/163 wrote:
> とりあえず、cでの(I紺筑ロ五以前の(I悦剤惱渮の話みたいなんで、
> そっち系の(I准逝ったほうが良いかも。

文字化けしてますよ。

> > どこが全文引用なのですか?
> 148は80の全文引用だが、

どの部分だろう?


165 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:42
>>163
80違う、90鬱氏


166 名前: 150 投稿日: 01/12/15 18:44
>>163
ありがとうございます。そっちに逝ってきます。

>>162
文章をもう少ししっかりと読んで欲しいのですが。
金がないから買えない、ということが通じなかったのですか?
また、買うとしてもよっぽど金がない限り買うことはないだろうということも
言ったつもりですが…。

一応ム板の推薦参考書スレを頼りにさせていただいていますので、
そこに紹介されていない本は買う気にならないです。
ましてや作者しか推薦してしない本など。

…愚痴&長文ですみません。逝ってきます。


167 名前: Kusakabe Youichi 投稿日: 01/12/15 18:47
In article >>166, 150/166 wrote:
> 文章をもう少ししっかりと読んで欲しいのですが。
> 金がないから買えない、ということが通じなかったのですか?

だからこそ買えばいいのでは?
そうすればお金ぐらい涌いてきますよ。

> 一応ム板の推薦参考書(I准を頼りにさせていただいていますので、

もじばけしてますよ。


168 名前: 150 投稿日: 01/12/15 18:49
>>167
ごめんなさい。もはやあなたの文は理解不能です。
理論的に破綻してます…。

…誰かこの人の文を訳してくれる方はいませんかね?
(もしかしてkusakabe人工無能がレスしてる?もしそうだったら…鬱氏。)


169 名前: デフォルトの名無しさん 投稿日: 01/12/15 18:52
>>168
>…誰かこの人の文を訳してくれる方はいませんかね?
一見、日本語の様に見えますが、実は全文文字化けしてます。
残念ながら原文の解読は難しく、そこからの翻訳も困難を極めております。
現在、ム板とマ板の住人による不眠不休の作業が続けられております。
もうしばらくお待ちください。


170 名前: Kusakabe Youichi 投稿日: 01/12/15 18:53
In article >>168, 150/168 wrote:
> ごめんなさい。もはやあなたの文は理解不能です。

おやまあ。もう思考停止しましたか。
けっこうほかのひとより早めですね。(じたばたしなくて利口だともいう^^)


171 名前: 150 投稿日: 01/12/15 18:57
>>170
思考停止、ではなくて脳が強制終了したんです。
私は常識的な日本語しか理解できないので、日下部語がわからないのです。

できれば常識的な日本語で再度>>167を説明してください。
私のわからないところは、
「金がない」→「アヒル本を買う」→「金が湧いてくる」という一連の流れです。
とくにアヒル本を買うことでなぜ金が湧いてくるのかが全く理解できません。


…ちなみに、アルゴリズム関係のスレが見つからないんですが…誰か誘導してください…。


172 名前: Kusakabe Youichi 投稿日: 01/12/15 19:02
In article >>171, 150/171 wrote:
> 思考停止、ではなくて脳が強制終了したんです。

同じことでしょ。アクセス違反で、保護機構がはたらいたわけでしょ。

> 私は常識的な日本語しか理解できないので、日下部語がわからないのです。

いえ「理解すると都合悪いことになる」から例外が発生したわけでしょう。

> …ちなみに、アルゴリズム関係の(I准が見つからないんですが…誰か誘導してください…。

文字化けしてますよ。


173 名前: あぼーん 投稿日: あぼーん
あぼーん


174 名前: デフォルトの名無しさん 投稿日: 01/12/15 19:07
>>173
「高性能クサカベ辞書」と「クサカベレスキャンセラー」はありませんか、親切な人…


175 名前: 150 投稿日: 01/12/15 19:07
>>172
…常識的な文章力のみならず、常識的な理解力すらない自称常識人なのですね。
どうせこのような事を書くと、「そういうことにしたいのですね」というレスが返ってくるんでしょうけど。
スレ荒れるのでこれ以上はレスしません。

>いえ「理解すると都合悪いことになる」から例外が発生したわけでしょう。
これあなたのことですね。


176 名前: デフォルトの名無しさん 投稿日: 01/12/15 19:08
>>172

だから、「プログラム板」で、日本語の話題上げなさんな、
うとましき日下部陽一さんよ。


177 名前: Kusakabe Youichi 投稿日: 01/12/15 19:16
In article >>174, デフォルトの名無しさん/sage/174 wrote:
> 「高性能(I源桐泗ぢ辞書」と「(I源桐湍酬ロ衝凾タ」はありませんか、親切な人…

文字化けしてますよ。


178 名前: Kusakabe Youichi 投稿日: 01/12/15 19:17
In article >>175, 150/sage/175 wrote:

> >>172
> …常識的な文章力のみならず、常識的な理解力すらない

ということにしてしまえば、自分のまぬけさ加減に目をつぶることが
できるのですか? :)


179 名前: Kusakabe Youichi 投稿日: 01/12/15 19:17
In article >>176, デフォルトの名無しさん /sage/176 wrote:
> だから、「プログラム板」で、日本語の話題上げなさんな、

わたしはとくにやっていませんね。やっているひとにいったら?


180 名前: 174 投稿日: 01/12/15 19:21
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
ありがとう!クサカベたん!!
誰からもムシされる私のボケに突っ込んでくれて。


>>150
> ルートノードとノードの追加は処理が違うために
> ルートノードをあらかじめ作成しておいてから
> そのルートにノードを追加していくという方法を考えました。
> その時ルートノードにはなにを入れればいいのでしょうか。
“何を入れれば?”と問われても…
枝(ポインタ)の値のこと?
単純に無効な値(NULLポインタ)とかでは、駄目なんですか?


181 名前: 150 投稿日: 01/12/15 19:28
>>180
枝の値ではないです。ノードの文字列(中身?)です。
無意味なものを入れても、あとでトラバーサル&出力するときに
その内容が出てしまうのではないかと思いまして。
一応'\0'なら大丈夫…でしょうか?

やりかたが良くわからないので、まだコンパイルまで辿り着けないんです。鬱氏。


182 名前: Kusakabe Youichi 投稿日: 01/12/15 19:29
In article >>181, 150/sage/181 wrote:

> >>180
> 枝の値ではないです。ノードの文字列(中身?)です。
> 無意味なものを入れても、あとでトラバーサル&出力するときに
> その内容が出てしまうのではないかと思いまして。

ルートをダミーにしていまうのですか?
だったら191ペイジを読めばいいですね。


183 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:02
おじいちゃんって、本当にウザいね…。
誰にも構われず、独り言ばっか。


184 名前: Kusakabe Youichi 投稿日: 01/12/15 20:10
In article >>183, デフォルトの名無しさん/sage/183 wrote:
> 誰にも構われず、独り言ばっか。

と思いたいんでしょうね。


185 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:14
>>184
はいはい、おじいちゃん、レスはさっき付けたでしょう?
ここはもういいですから、寝室でお休みになってくださいな。
「トットトクダバレヨ、コノモウロウジジィガ」


186 名前: Kusakabe Youichi 投稿日: 01/12/15 20:16
In article >>185, デフォルトの名無しさん/sage/185 wrote:
> はいはい、おじいちゃん、レスはさっき付けたでしょう?

なるほど。こういうひとがあらしているのですね。


187 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:19
>>181
それでいいです。
操作されて問題の起こらない値を入れておけばなんでもよい。
\0でもいいし、ルートだということを識別できるシグネチャでもいい。


188 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:21
>>181
ゴメソ、前提条件が分からんのでアレだけど、

> 枝の値ではないです。ノードの文字列(中身?)です。
> 無意味なものを入れても、あとでトラバーサル&出力するときに
> その内容が出てしまうのではないかと思いまして。

作成時にルートを特別扱いしたのなら、解析時にも特別扱いってのは、NGなの?

> やりかたが良くわからないので、まだコンパイルまで辿り着けないんです。鬱氏。
設計で詰まってるのか、コーディングで詰まってのか、どっちよ?


189 名前: 183 投稿日: 01/12/15 20:42
>>184
誰もKusakabe Youichiという人が
おじいちゃんなんて言ってないんですが。何であなたが反応してるんですか?

…そうですか、おじいちゃんだったんですか。
そんな自覚があったとは知りませんでした。いや、勉強になりました。


190 名前: Kusakabe Youichi 投稿日: 01/12/15 20:43
In article >>189, 183/sage/189 wrote:
> 誰もKusakabe Youichiという人が
> おじいちゃんなんて言ってないんですが。何であなたが反応してるんですか?

だれが反応するかとその内容は無関係です。

ただ、変に関係ないこと書いて荒らしているやつがいたので反応したまで。


191 名前: 183 投稿日: 01/12/15 20:45
>>190
やっぱあなたおもしろいですね(w
これからもその調子で頑張ってください。応援してます。


192 名前: 150 投稿日: 01/12/15 20:45
>>188
設計でつまっています…。
文章から得られた単語を新ノード作成関数に送り、
文章がEOFを返した時点で一覧表示したいと思っています。

解析時に特別扱いするのは構わないんですが、設計方法がわからないです…。


193 名前: Kusakabe Youichi 投稿日: 01/12/15 20:49
In article >>191, 183/sage/191 wrote:

> >>190
> やっぱあなたおもしろいですね

とか関係ないことかくわけですね。


194 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:51
おじいちゃん、頑張って!
カンペキに負けてるよ(藁


195 名前: Kusakabe Youichi 投稿日: 01/12/15 20:52
In article >>192, 150/192 wrote:
> 設計でつまっています…。
> 文章から得られた単語を新ノード作成関数に送り、
> 文章がEOFを返した時点で一覧表示したいと思っています。
>
> 解析時に特別扱いするのは構わないんですが、設計方法がわからないです…。

なにがどうわからないのだろう?

191ペイジ読めばいいのに


196 名前: Kusakabe Youichi 投稿日: 01/12/15 20:55
In article >>194, デフォルトの名無しさん/194 wrote:

> おじいちゃん、頑張って!
> カンペキに負けてるよ

まだ関係ないことかいてるし。


197 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:57
関数内で定義した構造体のテンプレートはその関数内でのみ有効?


198 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:58
>>196

>> おじいちゃん、頑張って!
>> カンペキに負けてるよ

>まだ関係ないことかいてるし。

また関係ないことかいてるし。


199 名前: デフォルトの名無しさん 投稿日: 01/12/15 20:59
>>197
C++スレ逝け
http://pc.2ch.net/test/read.cgi/tech/1003832761/l50
つーか試せよ! 試せよぅ!!


200 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:00
>>199

なんでC++?Cの構造体のことを聞いているんだけど。

試すのが面倒だから聞いたの。


201 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:02
>>192
デハキコウ
シンノードサクセイカンスウトハ
ドウイウショリヲオコナウノダ?


202 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:04
テンプレートはCじゃない。
試すの面倒なら死んでしまえ。


203 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:04
>>200
ハァ!?
> 構造体のテンプレート
ってのは何?templateの事ではないの?
てめぇの脳内単語を垂れ流すな!
おじいちゃんみたくなるぞ!!

> 試すのが面倒だから聞いたの。
例えば俺が答えたとして、それを信じるのかよ、お前は!?
自分で追試しるだろ?
だったら最初から自分でやれよ! やれよぅ!!


204 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:06
>>203

教えて君をなめるなよ!!


205 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:07
194は確かにスレ違いなのだが(オレモナー)、ローカルルールには
> ・スレッドの内容に関係ない雑談や連続投稿にはsage推奨です。
とあるのだから196氏もsageでやってほしいな。


206 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:07
要するに200はスコープも理解できていないアホ。
しかも態度デカイ。逝ってよし。


207 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:10
>>205
きっと“はつみみ”だよ
で、今んとこアクティブなネタは2分木がどうとかいうのか?


208 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:12
この低レベルなやりとりが行われている場で質問しなきゃ
ダメな人って素質ないから止めた方がいいよ!


209 名前: Kusakabe Youichi 投稿日: 01/12/15 21:13
In article >>208, デフォルトの名無しさん/sage/208 wrote:

> この低レベルなやりとりが行われている場で質問しなきゃ
> ダメな人って素質ないから止めた方がいいよ!

その質問者に助言するレヴェルはその下ですか? :)


210 名前: 205 投稿日: 01/12/15 21:15
しまった。ここはマ板じゃなくてム板だった。欝氏。
>>207
みんなはつみみだろうね。俺もはつみみだということにしたい。


211 名前: 150 投稿日: 01/12/15 21:16
すみません。2分木の話をしてるものですが。
現在書いているソース等をHPに載せてみましたので、見ていただけないでしょうか。

http://www.geocities.co.jp/SiliconValley/1008/
ソースはまだ途中です…。


212 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:21
>>211
ショリには関係ないことだけど、関数プロトタイプをmain内に書くのって珍しいね。
普通は最初のほうにグローバルスコープで書くもんだけど。


213 名前: 150=ぽてと 投稿日: 01/12/15 21:23
>>212
関数プロトタイプ…ですか?すみません、知らないので調べてきます…。
もしかしてメイン関数の中で関数宣言していることですか?


214 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:27
>>213
そう、
あと、いろいろへんだな。
MakeRootNodeで作成したルートノードは、この関数内でしか参照できないぞ。
MakeNewNodeも戻り値voidじゃだめだろ。


215 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:29
変数の宣言とスコープ(有効範囲)が理解できてないな。


216 名前: 150=ぽてと 投稿日: 01/12/15 21:32
>>214
MakeNewNodeと関数のプロトタイプをメイン関数の中に書いているのは修正しました。
でも、ルートノードがMakeRootNode内でしか参照できないというのはよくわかんないです。
ポインタだから他の関数でも参照できる…というのは誤った認識ですか?


217 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:36
>>216
基本的に関数内で宣言した変数は、その関数内でのみ操作可能。
それに関数を抜ける時に開放される。

mainで使いたいのなら、その値をreturnで返すか、グローバル変数に格納する。
ローカル変数、グローバル変数はわかるか?


218 名前: 217 投稿日: 01/12/15 21:39
さらにいうと、このプログラムはmainで
root = MakeRootNode( ...
ってかいてあるんだから戻り値を期待してるはず。
それなのにvoid MakeRootNode(...)じゃだめだろ。

なんだか、アルゴリズムの理解度よりもCの理解度が足りないな。


219 名前: 150=ぽてと 投稿日: 01/12/15 21:42
>>217
ローカル変数は関数の中で宣言した変数ですよね。

グローバル変数は関数の外で宣言…だったと思います。
そうするとプログラムが稼動している間その変数が使えるというように認識しています。


220 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:43
>>213
俺がかくと、こんな感じカナ。

typedef struct tnode{
char word[64];
/* int count=0; */
int count;
struct tnode *left;
struct tnode *right;
}Node;

Node* makeNode(const char* const str){
/* ノード作成 */
return newNode;
}

Node* addNode(Node* node, const char* const str){
/* ノード追加処理 */
/* 必要なら、makeNode()を読んで新規に作成 */
return node;
}

void Traversal(const Node* const root){
/* 解析と出力*/
}

void main(void){
Node* root;
Node* node;
root=makeNode();
node=NULL;
while(...){
/* ファイル入力 */
node=(node, str);
}
Traversal(root);
}

次からは容赦なく阿呆よばわりするんで、よろしく。



>>214
> MakeNewNodeも戻り値voidじゃだめだろ。
まぁ、確かにvoidは駄目だろう(w


221 名前: 150=ぽてと 投稿日: 01/12/15 21:43
>>218
それはただのミスです…。関数いじくっているうちに戻り値が出来てしまって。


222 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:45
>>220
鬱氏
×
root=makeNode();
node=NULL;


root=makeNode();
node=root;

氏んでくる…


223 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:45
>>219
だから、MakeRootNode内の Node *root;はローカル変数。
ローカルカル変数はこの関数内でのみ有効で、しかも関数を抜けるとなくなってしまう。
何らかの方法で、関数外に持ち出さなければならんのよ、わかる?


224 名前: 150=ぽてと 投稿日: 01/12/15 21:46
>>220
ありがとうございます。参考に書き直してみます。


225 名前: 150=ぽてと 投稿日: 01/12/15 21:48
>>223
関数を抜けるとなくなる、というのは気づいていませんでした。
その関数外に持ち出す方法がグローバル変数として宣言する方法ですね。
調べてからまた来ます。


226 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:49
林春比古でも読めよ〜


227 名前: アモロ 投稿日: 01/12/15 21:52
コールバック関数なのですが・・・。
なんで、こんな解析しにくくわかりにくいモンを、わざわざ手間をかけてまで仕込むのですか?
素直に必要になったときに、関数を呼び出せばいいのではないのですか?


228 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:55
>>227
誰がいつどこで何のために呼び出すのかを考えよ。
それでも必要ないと思うなら使わなくてよい。


229 名前: 自動翻訳 投稿日: 01/12/15 21:56
>>227
あなたの仰る通りです。
今の貴方に必要とされている技術レベルにおいては、
コールバック関数を使用する必要はないかと愚考いたします。

もし必要になったなら、その時コールバック関数をお使いください。


阿呆!


230 名前: デフォルトの名無しさん 投稿日: 01/12/15 21:59
>>227
必要になったときに呼び出す関数がコールバック関数だろ


231 名前: デフォルトの名無しさん 投稿日: 01/12/15 22:03
>>227
gtk のソースでも嫁。
ボタンウィジェットがあるとして、
ボタンがクリックされたときに行ないたい処理はどうやって書けば良い?
処理する関数をボタンウィジェットに関するソースに追加する方法では
そのたびに全てをコンパイルしなおす必要が出てくる。
しかも、汎用性のあるボタンウィジェットに対して、
そのプログラムオンリーの関数が混ざることになって奇麗じゃない。


232 名前: 質問スレに非ず 投稿日: 01/12/16 00:14
ウサ晴らしをするスレです


233 名前: デフォルトの名無しさん 投稿日: 01/12/16 00:28
正確に言うと、質問して、罵倒される為のスレです。
あと、たまにおじいちゃんが徘徊しているようです。


234 名前: 罵倒されたいマゾが集まる 投稿日: 01/12/16 01:12
罵倒されるだけされて「結局聞いても聞かなくても同じ」だったと。


235 名前: デフォルトの名無しさん 投稿日: 01/12/16 09:38
不備のある質問や、論外な態度での質問が罵倒されるのは、
BBS、ML、むろん現実世界でも一緒。
返答の言葉使いがある程度ぼかしてあるか、罵詈雑言になるかだけ。


236 名前: Kusakabe Youichi 投稿日: 01/12/16 11:38
In article >>233, デフォルトの名無しさん/sage/233 wrote:

> 正確に言うと、質問して、罵倒される為のスレです。

っていうかこのひと「罵倒」の意味をしらないっぽい。


237 名前: デフォルトの名無しさん 投稿日: 01/12/16 11:53
ばとう ―たう 【罵倒】

(名)スル
口ぎたなくののしること。また、その言葉。「相手を―する」「―を浴びせる」

例)
君の言動って、かなり日下部入ってるよ!


238 名前: デフォルトの名無しさん 投稿日: 01/12/16 13:32
>>227
>素直に必要になったときに、関数を呼び出せばいいのではないのですか?

「どの関数を」呼ぶの?
つまり、gtkライブラリは、どの関数を呼べばイイと、どうやれば判るの?

挙動の殆どは、あるwidgetの「クラス」のコードで決められているが、
一部、ユーザー定義の挙動は、widgetの「インスタンス」単位でばらばらなわけ。
クラスの側からは個々のインスタンスの相違なんて知るよしもないから、
「どの関数」を呼べばいいかなんてさっぱり。
個々のインスタンス自体に手続きを仕込み、しこんであるという前提でそれを呼びだす、
という規約を作っておくのが上策。

コールバック関数って、常套手段じゃん。
処理の一部を未だ見ぬ未来のやつらに託すばあいに。


239 名前: デフォルトの名無しさん 投稿日: 01/12/16 22:44
>>150
> main関数のNode *rootのところでparse errorを食らいます。
rootとnodeの宣言をstr[0] = '\0';の前に持って逝け。


240 名前: 239 投稿日: 01/12/16 23:25
それ以外。

* makeNode()の引数にpはいらない

* なんでaddNode()でmakeNode()を使わない

* addNode()でp==NULLのときを考慮してるから、
ルートノードをあらかじめ作成しておく必要はない

* if (c!=isalpha(c)) ってなんだゴルァ

* 英字以外が連続したときのことを考えていない

* malloc()を使うときは#include <stdlib.h>しる

* strcpy()だとバッファオーバーランの危険がある

* ファイル名は固定じゃなくてargvからとれ。あるいはstdin


241 名前: デフォルトの名無しさん 投稿日: 01/12/16 23:38
>>239-240
デムパ? デムパなの? (((( ;゚Д゚)))ガクガクブルブル

…150が>>211で逝ってたサイトに載せてあるソースに突っ込みいれてるのね。
ご苦労様、でもちょとビクーリしたよ。


242 名前: 239 投稿日: 01/12/17 00:40
>>241
ごめんよ。
150の掲示板に書こうかと思ったらエラーになったもんで、こっちに書いてる。

ついでにもう一個バグ。

* 英字で終ったときに最後の単語がカウントされない

あとオーバーランはmain()の方でも起きそうだな。


243 名前: デフォルトの名無しさん 投稿日: 01/12/17 00:49
ヌケのない質問してくる奴はそもそも自分で考えて解決するタイプなので
ここには来ません。
仮にそんな奴が来ても「自分が普段やっている手法と違う」とか難癖つけて罵倒します。
それが全てだ。
まあ何か罵倒できるエサを欲しがっている
エサくれくれ君の隔離の為にはこのスレあったほうがいい。


244 名前: Kusakabe Youichi 投稿日: 01/12/17 00:51
In article >>243, デフォルトの名無しさん/sage/243 wrote:
> 仮にそんな奴が来ても「自分が普段やっている手法と違う」とか難癖つけて罵倒します。
> それが全てだ。
> まあ何か罵倒できるエサを欲しがっている

「罵倒」の意味をわかっていない人っぽいなあ。


245 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:01
>>244
> 「罵倒」の意味をわかっていない人っぽいなあ。
それの何処がC言語に関連するのか分かりません。
ということにしたいのです、私は。

罵倒の方が主目的でも、何がしかの助言も同時に含まれているのではないかと。
バカと罵倒屋は使いようさ。
助言も与えず、スレの流れも一切無視した書き込みをする人間もいるけどね。


246 名前: Kusakabe Youichi 投稿日: 01/12/17 01:05
In article >>245, デフォルトの名無しさん/sage/245 wrote:
> それの何処がC言語に関連するのか分かりません。

っていうのもどう関連しているのかわからないですね。


247 名前: ぽてと 投稿日: 01/12/17 01:08
>>239
ありがとうございます。いま一生懸命直させてもらってます。
掲示板…書き込めませんでした?私は問題なく書き込めるんですが。


248 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:09
In article >>244, デフォルトの名無しさん/sage/244 wrote:
>> 仮にそんな奴が来ても「自分が普段やっている手法と違う」とか難癖つけて罵倒します。
>> それが全てだ。
>> まあ何か罵倒できるエサを欲しがっている

>私は「罵倒」の意味をわかっていない人っぽいと思い込みたい

なんだ、そうか。


249 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:36
>>246
たのむから別のところへ逝ってくれ…。
ここは君の遊び場じゃないんだ…。会話もC言語と全く関係ないし…。


250 名前: Kusakabe Youichi 投稿日: 01/12/17 01:38
In article >>249, デフォルトの名無しさん/249 wrote:
> 会話もC言語と全く関係ないし…。

少なくともあなたのはいつもそうみたいですね:)


251 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:44
>>250
板違い。>>249の言うように雑談したいならラウンジにでも逝って下さい。
日本語が理解できるなら、の話ですが。


252 名前: Kusakabe Youichi 投稿日: 01/12/17 01:47
In article >>251, デフォルトの名無しさん/sage/251 wrote:

> >>250
> 板違い。>>249の言うように雑談したいなら

というのも関係ないですね。


253 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:50
糞壁を追い出すプログラムを作りたいんですが、どうやってやればいいですか。
C言語で作りたいです。
でも糞壁は文章を脳内変換するので難しいです。
アドバイスください。


254 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:51
>251
白痴相手にマジレスですか? (放置推奨ですです


255 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:51
>>252
いえ、ルールの守れないおバカさんに注意しているという意味で、
大いに関係があります。その程度の反論も予想できないのですか?
という訳で、念のためにもう一度言っておきます。
雑談したいならラウンジにでも逝って下さい。


256 名前: Kusakabe Youichi 投稿日: 01/12/17 01:51
In article >>253, デフォルトの名無しさん/253 wrote:

> 糞壁を追い出すプログラムを作りたいんですが、どうやってやればいいですか。
> C言語で作りたいです。

なるほど。こうやって荒らすわけですかー


257 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:52
>>253
そう言う話はマ板でしようよ、あっちでおちょくってる方が楽しいと思うよ。


258 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:52
>253
おみとろんでフィルタなど書いてみてはいかがでしょうか?
あるいは、自動あぼーん機能のある2chブラウザを使う/作る
方法もあります。


259 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:55
40過ぎてこの厨房っぷりですよ。
もうね、アホかと馬鹿かと。。


260 名前: Kusakabe Youichi 投稿日: 01/12/17 02:01
In article >>254, デフォルトの名無しさん/sage/254 wrote:
> 白痴相手にマジレスですか?

とか関係ないこと書くのはOKなのですね? :)


261 名前: Kusakabe Youichi 投稿日: 01/12/17 02:02
In article >>255, デフォルトの名無しさん/sage/255 wrote:
> いえ、ルールの守れないおバカさんに注意しているという意味で、
> 大いに関係があります。

で、それに答えるのもOKなのですね? :)

> という訳で、念のためにもう一度言っておきます。

つまり「自分はいいの」の類ですね? :)


262 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:04
(; ・∀・)こいちぢかん問い詰めたい♪


263 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:04
In article >>261, デフォルトの名無しさん/sage/261 wrote:
>> いえ、ルールの守れないおバカさんに注意しているという意味で、
>> 大いに関係があります。

>で、それに答えるのもOKなのですね? :)

>> という訳で、念のためにもう一度言っておきます。

>「自分はいいの」

なるほど、自分はいいのか  :)


264 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:05
>>261
やはり、日本語が理解できませんでしたか。残念です。
では言葉も通じないようですし、雑談にならないうちに私もこの辺で。


265 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:13
放置推奨です。
人間としての誇りも尊厳も失った物体にレスする必要などありませんから。

こう書くと、またお決まりのセリフが出てくるんだろうなあ…。
「そういうことにしたいのですね:)」ってか。


266 名前: Kusakabe Youichi 投稿日: 01/12/17 02:15
In article >>265, デフォルトの名無しさん/sage/265 wrote:

> 放置推奨です。
> 人間としての誇りも尊厳も失った物体にレスする必要などありませんから。

とかいうのをいちいち書くのはOKですね? :)


267 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:16
>>266
誰に聞いてるの?


268 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:17
「こういうときの対処が学べる」と前向きに考えるがよいよいよいよい


269 名前: Kusakabe Youichi 投稿日: 01/12/17 02:17
In article >>267, デフォルトの名無しさん/sage/267 wrote:
> 誰に聞いてるの?

また関係ないことかいてますね:)


270 名前: 対処 投稿日: 01/12/17 02:19
In article >>266, デフォルトの名無しさん/sage/266 wrote:

>> 放置推奨です。
>> 人間としての誇りも尊厳も失った物体にレスする必要などありませんから。

>とかいうのをいちいち書くのはOK

なんだ、OKなのか :)


271 名前: Kusakabe Youichi 投稿日: 01/12/17 02:21
In article >>270, 対処/sage/270 wrote:

> In article >>266, デフォルトの名無しさん/sage/266 wrote:
>
> >> 放置推奨です。
> >> 人間としての誇りも尊厳も失った物体にレスする必要などありませんから。
>
> >とかいうのをいちいち書くのはOK
>
> なんだ、OKなのか

ふむふむ。じゃあそうします。


272 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:23
やめれ〜〜〜、頭が混乱してくる〜〜〜。


273 名前: 自分の言った事に受け答え 投稿日: 01/12/17 02:23
なんだ、自問自答か :)


274 名前: (゚ε゚)キニシナイ!! 投稿日: 01/12/17 02:35
枯れ木も山の賑わいさね。
見て楽しい物ではないけど、
たまにつついておちょくったり、
サンドバック代わりにするにはちょうどいい。

今んところアクティブなネタも無いみたいだしね。
(埋もれてる?)


275 名前: デフォルトの名無しさん 投稿日: 01/12/17 02:38
>>274
埋もれてるような気も。いくつか発掘してあげれば?


276 名前: 239 投稿日: 01/12/17 03:03
>>247
書き込めなかったっつーか、新規書き込みとか返信をクリックするとこんなメッセージが。
Mozillaとw3mで試したんだが。

> Unable to Process Request
> 申し訳ありませんが、あなたの要求を正常に処理することが出来ませんでした。
> このメッセージは、データベースやサーバの混雑により表示されます。
> 深夜等の時間帯には非常に混雑いたしますので、日中等の比較的空いている時間帯に再度、お試しください。
>
> また、ブラウザ側のトラブルの可能性もございますので、ブラウザの設定の変更または別のブラウザでお試しください。


277 名前: デフォルトの名無しさん 投稿日: 01/12/17 03:14
>>276
あんま細かい事言いたくないけど、
メアド晒してるみたいだし、DMした方が良いのでは?
そのCGIがぼてとさんがCで組んだ物なら別だけどさ。


278 名前: Kusakabe Youichi 投稿日: 01/12/17 03:16
In article >>277, デフォルトの名無しさん/sage/277 wrote:
> あんま細かい事言いたくないけど、

じゃあいわなきゃいいのに。


279 名前: デフォルトの名無しさん 投稿日: 01/12/17 03:22
>>278
俺が言わなきゃあんたがネチネチいちゃもんつけんだろ!
阿呆!


今日始めて阿呆って言えたよ。
あぁ、スッキリ。


280 名前: Objective-Kusakabe 投稿日: 01/12/17 03:28
In article >>279, デフォルトの名無しさん/sage/279 wrote:
>>278
> 俺が言わなきゃあんたがネチネチいちゃもんつけんだろ!
> 天才!

文字化けしてますよ :)


281 名前: Kusakabe Youichi 投稿日: 01/12/17 03:29
In article >>279, デフォルトの名無しさん/sage/279 wrote:
> 俺が言わなきゃあんたがネチネチいちゃもんつけんだろ!

いいえ。そう思いたいのですか? :)


282 名前: デフォルトの名無しさん 投稿日: 01/12/17 03:32
>>280
ヤメレ、ツボに入った。
笑い止まんね、なんだそのHNは(藁


283 名前: デフォルトの名無しさん 投稿日: 01/12/17 05:50
>280はある意味天才(・∀・ )


284 名前: ムネヲ 投稿日: 01/12/17 10:10
>>281
あなたがいちゃもん付けたんでしょ?謝る所は謝らないと駄目だよあなた!!。
言ったよ言ったでしょ言ったんなら言ったって言いなさいよ言った☆)#MO$J!..$
そんな馬鹿な事が有りますかって言ってるんですよ
はっきりと「今失業してて暇なんです」って言いなさいよ!!


285 名前: Kusakabe Youichi 投稿日: 01/12/17 10:45
In article >>284, ムネヲ/sage/284 wrote:
> あなたがいちゃもん付けたんでしょ?

はつみみです。


286 名前: 239 投稿日: 01/12/17 12:18
>>277
そうかも…。でも他の人は書けてるのかな。俺だけ?
今IEで試してもおんなじだったんだが。

>>150
* isalpha()の使い方を誤解している。
* ルートノードは、addNode()が返してるのを毎回nodeに代入してるだろが。
* elseはブロックになってない。Pythonじゃないんだから。
つーか一遍でも動かしてみたのか? これ絶対スタック壊すぞ。

本題とは関係ないけど、<stdlib.h>っていう風にエスケープ。
それとtraversalって名詞だよな。


287 名前: デフォルトの名無しさん 投稿日: 01/12/17 19:54
>>150
んとね、問題を切り分けた方がいいんじゃないカナ?
ソース見た感じ、ファイル入力も動きそうにないし、
そもそもコンパイル出来ていないでしょ?

“ファイルから黄泉込まないと話にならない”なら、
2分木の事は置いておいて単語を黄泉込む処理を完成させる。

“そもそもの目的である2分木が先”なら、
文字列配列を用意してそこから2分木を作成してみる。

const char* dummyWords[] = {
 "ABC","DEF","GHI",NULL
};
const char** word;
word=dummyWords;
while(*word)
 node = addNode(*word++);

こんな感じカナ。

あとaddNode()の中で単純に再帰して戻り値を代入してるけど、
それじゃダメダメじゃないカナ。
今のままだと無限ループするし、ちゃんと枝の差し替えをしないと。

まだ色々あるけど一つ一つ解決して行く方がいいんじゃないカナ?


288 名前: ぽてと 投稿日: 01/12/17 20:15
>>286 >>287

ご指摘のとおり、まだコンパイルすら出来ていません。
2分木の概念は分かるのですが、コーディング能力が全くついていっていないという感じです。
K&R引っ張り出してそのあたり勉強しなおしてきます…。

あと、>>287氏の通り、機能ごとに少しずつ作成していくことにします。
まずは単語を読み込むプログラムを作成します。


289 名前: 239 投稿日: 01/12/17 22:35
>>287
コンパイルできないのは、ちゃんとコンパイラのエラーメッセージ見れば直せ
ると思う。単なる凡ミスだから。

> あとaddNode()の中で単純に再帰して戻り値を代入してるけど、
> それじゃダメダメじゃないカナ。
> 今のままだと無限ループするし、ちゃんと枝の差し替えをしないと。
いや、これは大丈夫。要するに、部分木と挿入する要素を受け取って、新しい
部分木を返す関数なんだから。

とりあえずバッファオーバーランとかを置いておくと、今まずいのはmain()で
のisalpha()やiの使い方。isalpha()はマニュアルなりなんなり調べてもらう
として、単語を登録したあとでiがどういう値を取ることになるか考えてみる
べし。


290 名前: デフォルトの名無しさん 投稿日: 01/12/17 22:45
1〜10の乱数を発生させる
関数ってどうやって作ればいいのですか?


291 名前: デフォルトの名無しさん 投稿日: 01/12/17 22:48
>>289
> > あとaddNode()の中で単純に再帰して戻り値を代入してるけど、
> > それじゃダメダメじゃないカナ。
> > 今のままだと無限ループするし、ちゃんと枝の差し替えをしないと。
> いや、これは大丈夫。要するに、部分木と挿入する要素を受け取って、新しい
> 部分木を返す関数なんだから。

オレも最初はそう思ってた。
rootノードがどうとか最初に逝ってたし。
単純化すれば、
Node* addNode(Node* node, const char* str) {
node->right = makeNode(str);
node->right->left = node;
return node->right;
}
こんな感じだと。

でも130さんが書いたソースを見ると、
strcmp()の値でleftとrightに振り分けようとしてる。
ようはstrcmp()の値を基準にソートした状態を作りたいんではないかと。
でなければ、addNode()を再帰呼び出しする必然性もないし。

オレのうがち過ぎか?
どうよ、>>150さん?


292 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:01
>>290
乱数か、難しいな。
擬似乱数なら標準ライブラリにも含まれているが。
まず神のサイコロを用意する。
そしてサイコロを振る神の手を…

つーか、マニュアルでrand()を調べろ。
rand()を使わず自力で擬似乱数を発生させたいなら、
「擬似乱数」と「アルゴリズム」で検索すれば
嫌というほど見つかるでしょう。


293 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:02
>>290
http://www.google.co.jp/search?q=cache:fXWZ1oDPQCI:www.media.osaka-cu.ac.jp/~k-abe/99-JS-II/C.html+%EF%BC%91%EF%BD%9E%EF%BC%91%EF%BC%90%E3%81%AE%E4%B9%B1%E6%95%B0%E3%82%92%E7%99%BA%E7%94%9F%E3%81%95%E3%81%9B%E3%82%8B+%E3%80%80C&hl=ja&ie=utf8


294 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:08
>>290

rand() % 10 + 1;


295 名前: ぽてと=150 投稿日: 01/12/17 23:15
>>291>>289
>strcmp()の値でleftとrightに振り分けようとしてる。

その通りです。strcmp()の値によってノードのカウンタ値を増やすか、またはノードを
追加(makenode())するのか判断しようとしました。
そうすれば2分探索木が作れるだろうと思って。


>単語を登録したあとでiがどういう値を取ることになるか考えてみる
べし。

iは先ほど気づきました…。
単語をaddnode()に送った後に0にする必要がありましたね。

また、if (!isalpha(c))ですむことにも先ほど気がつきました…。


296 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:16
>>294
それだと乱数の周期が10程度になっちまうぞ。

普通は
(int)(rand() / (RAND_MAX + 1.0) * N) + 1
だろ

浮動小数点使うのがいやならせめて
rand() >> 20 % 10 + 1
とでもしとけ


297 名前: 290 投稿日: 01/12/17 23:16
>>292,293,294
ありがとうございます。なんとか出来そうです。
検索の仕方も分からない厨房で申しわけありませんです。

>>294
しかし、この乱数って、等確率ではないような…
ほぼ、等確率ってことでしょうか?


298 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:19
>>296
>それだと乱数の周期が10程度になっちまうぞ。

そんなことねーよ。
どこの処理系使ってんだよ。


299 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:23
>>298
(´-`).。oO( いきがる前に296さんの式の意味を考えてみようよ… )


300 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:29
>>299
rand()%10 で周期が10が10になる処理系ってどれですか?
教えてください。
10年昔の処理系を挙げて、こんなのもあったって言うのは
無しですよ。


301 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:31
乱数の周期が10って、11回実行したら1番目に戻るってことでしょ。
だったら、30回くらい実行して紙にメモして表作れば白黒はっきりするよね。


302 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:34
>>300
だけど、rand() % 10 というのはわりと良くない方法だよ。
なぜかというと、下位ビットの方は、確かに乱数に周期性
が早く訪れてしまうから。
環境依存だけど、JavaとANSIのCだと結構顕著だったり。

なるべく、上位の方を使うように工夫するのが
どんな環境でも上質の乱数を得るコツ


303 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:41
>>296
ちなみに、rand() >> 20 % 10 + 1 をVC++でやると、
周期が1の乱数(?)が生成されます。

>>302
おれって、「n / 2 より n >> 1 のほうが速いぞ」って
初心者にアドバイスするようなもんです。
ほんとうに上質の乱数がほしいなら、もっときめ細かい
話をしましょう。


304 名前: 303 投稿日: 01/12/17 23:43
>>303
間違えた。
×おれって、「n / 2 より n >> 1 のほうが速いぞ」って
〇それって、「n / 2 より n >> 1 のほうが速いぞ」って


305 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:45
http://i.kebi.lycos.co.kr/~artkebi/whi.html

↑の仕組み教えてください


306 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:47
ポインタのポインタがわかりません。お前ら俺に詳しく教えやがれ!


307 名前: 299 投稿日: 01/12/17 23:48
>>300
なぜそんなに喧嘩腰?
“周期が10程度”っていうのは、表現として的確でないとは思う。
でも、せっかくrand()が0以上RAND_MAX(未満? 以下?)の値を返しているのに、
単純に剰余を取ってしまうと、10進下一桁しか利用しなくなるでしょ?
だから“296さんの式の意味を考えてみようよ”と言ったんだけど。

個人的意見を言わせてもらえるなら、
“自分の意見最高完璧、他人の意見は検討の余地無し”
って輩はプログラムなんぞするな!
というか周囲の人間の邪魔でしかない、一生引き篭もってろ!!


308 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:50
>>306
友達の友達はみんな友達


309 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:50
>>301
VC++6で rand()%10+1 の実行結果。周期は10ではない。
6 7 6 5 5 5 9 3 10 10
1 6 5 4 10 7 9 2 10 2
7 2 1 1 6 8 7 10 2 2
9 3 9 6 4 8 9 3 6 5
7 1 5 2 10 6 5 6 4 10


310 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:53
周期というな。言葉の意味からして違うぞ。
確立といえ。


311 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:59
>確立
( ´_ゝ`)プッ


312 名前: デフォルトの名無しさん 投稿日: 01/12/17 23:59
>>307
>なぜそんなに喧嘩腰?

私はケンカ腰じゃないよ。そちらこそ感情的になってない?

>“周期が10程度”っていうのは、表現として的確でないとは思う。

表現が悪いとか、そういうレベルではないと思うが。
「周期が10」だと、ほとんど乱数として使えないし。
何の検証もなしに標準関数を使うということなら、
上位桁とっても、質が良くなるかどうか分からないし。
実際 >>296 のアドバイスは、かなり危険だし。


313 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:02
>>307
>というか周囲の人間の邪魔でしかない、一生引き篭もってろ!!

この程度のツッコミで、取り乱す人間は2chは向かないと思うー。


314 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:11
オマエモナー


315 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:15
>>310
ネタか?


316 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:20
C万背ーヽ(´ー`)ノ


317 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:22
>>303
VCだとRAND_MAXが15bitだからな。


318 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:23
つーか、一般人にとっては周期がどうのなんてどうでもいいんだよ。
ただ関数呼べばなんか数字が返ってくればそれでいいんだよ。


319 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:29
>>318
(rand() >> 20) % 10 + 1

この式を使って、周期1の乱数でも使っていてください(屁


320 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:30
>>316はアメリカ人並の合理主義


321 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:52
>312
10程度っていうのは10のオーダーってことだろ。


322 名前: デフォルトの名無しさん 投稿日: 01/12/18 00:58
>>321
10のオーダー?
O(10)←これ?
わからん。


323 名前: デフォルトの名無しさん 投稿日: 01/12/18 01:52
>322
それは数学。


324 名前: Kusakabe Youichi 投稿日: 01/12/18 02:17
In article >>290, デフォルトの名無しさん/290 wrote:

> 1〜10の乱数を発生させる
> 関数ってどうやって作ればいいのですか?

「疑似乱数」ですよね?


325 名前: Kusakabe Youichi 投稿日: 01/12/18 02:19
In article >>302, デフォルトの名無しさん/302 wrote:
> だけど、rand() % 10 というのはわりと良くない方法だよ。
> なぜかというと、下位ビットの方は、確かに乱数に周期性
> が早く訪れてしまうから。

それはかなりまぬけな実装ですね。

> 環境依存だけど、JavaとANSIのCだと結構顕著だったり。

え、Javaのほうは実装きまってるけど(いちおう)、
ANSI Cではその関数の実装方法まで決まってたっけ?

> なるべく、上位の方を使うように工夫するのが
> どんな環境でも上質の乱数を得るコツ

って、% 10 で周期性が(実用上)めだっちゃう実装って...。


326 名前: 290 投稿日: 01/12/18 02:30
>>324
サイコロみたいに
それぞれが同じ確率で発生するもの
が作りたかったんですけど、簡単な話じゃ
なかったみたいで…もう、ついて逝けない…鬱だ氏脳。

一応ことわっておきますと、僕はまだ勉強中の
初心者です。わかると思いますけど。
今は、主にVC++使ってます。


327 名前: デフォルトの名無しさん 投稿日: 01/12/18 02:35
>>326

ヘルプで、rand() と srand() を調べればいいじゃん。
それで rand() % 10 + 1 でOKだけど。


328 名前: 239 投稿日: 01/12/18 03:22
>>291
二分木ってのはなんらかの順序で振り分けるのが前提だが。

すまんが、何を指してダメといってるのかよく分からん。
addNode()の戻り値ってのは常に(ソート済みの)二分木のルートのはず。
実際0.04を少し手直しした奴はちゃんと動いたよ。
そのときのaddNode()は今アップされてる0.05改定版のと事実上同じだし。

>>150
この規模だとあんまり関数を分けるメリットを感じないかも知れないけど、
機能分割というのは基本だからきちんと考えるようにしたほうがいい。

あと重箱の隅だが、TraversalNode()よりもtraverseNode()の方が一般的と思われ。
つーかTraversalは名詞じゃなくて形容詞だった。欝。


329 名前: デフォルトの名無しさん 投稿日: 01/12/18 09:13
>>326 は検索エンジンの使い方さえ知らないマヌケです


330 名前: デフォルトの名無しさん 投稿日: 01/12/18 22:19
>>328
> 二分木ってのはなんらかの順序で振り分けるのが前提だが。
おっしゃる通りっす、私が指摘したのは見た時点でのソースに対してです。
(最新のソースはまだ見てません…)

> addNode()の戻り値ってのは常に(ソート済みの)二分木のルートのはず。
私が見た時点のソースでは再帰呼び出ししているaddNode()の戻り値を
引数として渡されたnodeのleftやrightにそのまま代入してた。
それでは駄目だよという意味で枝の差し替え云々言ったんです。


331 名前: 田代 投稿日: 01/12/18 23:09
FA 40 74 0B

という4バイトのバイナリファイルを

char c[4];
fp = fopen( "hoge", "rb" );
fread( c, 1, 4, fp );
printf( "%u %u %u %u\n", c[0], c[1], c[2], c[3] );

とやっているだけなのに、結果は

4294967290 64 116 11

となってしまいます。。。
何故 c[0] だけこんな変な値になってしまうんでしょうか?

250 64 116 11

にするにはどうしたらいいんでしょうか…。


332 名前: デフォルトの名無しさん 投稿日: 01/12/18 23:12
unsigned char c[4],じゃだめなん?


333 名前: デフォルトの名無しさん 投稿日: 01/12/18 23:40
もしくは%d


334 名前: 333 投稿日: 01/12/18 23:42
ごめん。まちがえた。
逝ってくる。


335 名前: デフォルトの名無しさん 投稿日: 01/12/18 23:56
>>332
ありがとうございます。直りました。
つまるところオーバーフローだったということなんですね。。。


336 名前: デフォルトの名無しさん 投稿日: 01/12/18 23:58
符号拡張、なんでないの?


337 名前: デフォルトの名無しさん 投稿日: 01/12/19 00:48
conio.hってなんですか?
本の例題に載っていたソースをコンパイルしたら、これがないって
文句言われました。
本のソースには当たり前のように載ってるんですが。


338 名前: デフォルトの名無しさん 投稿日: 01/12/19 00:49
ファイルを探して中みりゃわかる。


339 名前: デフォルトの名無しさん 投稿日: 01/12/19 01:06
>>337
昔のコンパイラで使われたた、非標準のヘッダーファイルだね。


340 名前: Javaがわからん370 投稿日: 01/12/19 01:07
>>337
getch();
使ってるからじゃない?
conio.hもincludeしてみてください。


341 名前: デフォルトの名無しさん 投稿日: 01/12/19 01:08
#include <conio.h> //getch関数などのコンソール機能の定義
コンソール入出力関数(conio.h)
関数定義 機能
int getch(void) キーボードから1文字をエコーバックなしで読み込む
int getche(void) キーボードから1文字をエコー付きで読み込む
int putch(int) 画面に文字を出力する。
>ファイル取り込みで、conio.hを入れようとしましたが、
>(#include<conio.h>と記入した)
>そのファイルは存在しないとメッセージが出ました。
うろ覚えですが、それって DOSのコンソール入出力ライブラリのヘッ
ダファイルじゃないですか?
#教科書の選択を誤ってらっしゃるのかも


342 名前: デフォルトの名無しさん 投稿日: 01/12/19 01:12
ないっつってんじゃん。


343 名前: デフォルトの名無しさん 投稿日: 01/12/19 01:16
>>341
「改訂C言語によるはじめてのアルゴリズム入門」という本の中の例題です。
第二版は平成13年とありますが、第一版は平成4年のものです。
図書館で借りてきたものなので、古い本だと思います。

一応インクルードは試みているんですが…探してみたらなんか違うところに
ヘッダファイルが置いてあるみたいです。


344 名前: Kusakabe Youichi 投稿日: 01/12/19 04:10
In article >>337, デフォルトの名無しさん/337 wrote:

> conio.hってなんですか?
> 本の例題に載っていたソースをコンパイルしたら、これがないって
> 文句言われました。

べつの本にすれば?

> 本のソースには当たり前のように載ってるんですが。

何て言う本ですか?


345 名前: 239 投稿日: 01/12/19 16:34
>>330
一度最新のを見てくれ。たぶんaddNode()については納得いくと思うから。

それよりも問題はGetWord()だな…って、なんでmain()の中はgetword()なんだYO。

ツッコミどころ満載だが、細かいところから。

> int GetWord(const char* str, int i, char **word){
>   char c;
>   for (l=0; (c=str[l])!='\n' && (c=str[l])!=EOF ;l++){
文字列の終端はEOFじゃないし、charをEOFと比較してはダメ。

>     tolower(c);  /*大文字→小文字*/
tolower()は副作用を持たない。

>     if (!isalpha(c) && c=='\''){ /*cが英文字の時*/
これじゃc=='\''のときしか成立しない。


346 名前: 239 投稿日: 01/12/19 16:34
次main()。

>   while ((c=fgets(str,512,fp))!=NULL);
ループの中が空だし、WORDMAXしかないstrに512も読んじゃいかん。

>   i=getword(str, i, word);
配列とポインタは違う。多重配列の場合、もっとも上位(宣言のときの左側)の
配列だけはポインタに暗黙のうちに変換されるが、その下は一致しないとまず
い。

>   for (i=0; *word[i]<=len ; i++)
この条件は何を意図してる?

>     root=addNode(&root, *word[i]);
rootはNode*じゃないからこの代入はできない。
addNode()に関してはいろいろいわれて混乱してるのかも知れんが、
少なくとも0.04のは正しい(はず。残してないからよく分からんが)。

getword()に関しては、0.06の仕様よりも前の0.05改訂版の方がいいと思う。
fpを渡す必要はあると思うが。
0.06のGetWord()は複雑なわりにメリットがない。というかデメリットばかり。


347 名前:   投稿日: 01/12/19 18:38
整数型の0、1の集合を一文字づつ配列(inputdata=[14][i])に入れたいのですが
これ ↓ では(.datファイルを書く)効率が悪くて悩んでいます

E.dat
0
0
1
0
0
0



0
0

C中のソース
fp=fopen("E.dat","r");
for( i=0;i<256;i++)
{
fscanf(fp,"%s",c);
inputdata[14][i]=atoi(c);
}
fclose(fp);


348 名前:  347 投稿日: 01/12/19 18:45
できればdatファイルはこういう形式が扱えると非常に便利なんですが…
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0


349 名前: デフォルトの名無しさん 投稿日: 01/12/19 18:50
e.dat:0100001110001010100111001
for( int i=0; i<256; i++ )
{int ch = fgetc(fp);
 if( ch == '0' || ch == '1' )
  inputdata[14][i] = ch - '0';
}


350 名前: デフォルトの名無しさん 投稿日: 01/12/19 18:52
>>347
> (.datファイルを書く)効率が悪くて悩んでいます
効率が悪いって何?
> fscanf(fp,"%s",c);
E.dat
0 0 0 0 0 0
でも良いはずだが?


351 名前: デフォルトの名無しさん 投稿日: 01/12/19 19:06
C,C++で
ウィンドウズ用のプログラムを学んでますが、MessageBoxで変数の値を表示することは可能ですか?
出来ればその方法もお聞かせ願いたいです.
もしくはMessageBox並に簡単に扱えて変数の値をすぐに表示できるような命令があれば教えてください.


352 名前: デフォルトの名無しさん 投稿日: 01/12/19 19:10
>347
せっかくビット演算とかあるんだから、バイナリ形式で書き込んだ方がいいと思うが。
00000001 = 0x01
00000010 = 0x02
00000011 = 0x03
  ・
  ・
  ・
11111111 = 0xFF
を1バイトずつ置き換えて書き込んでいく。
バイナリエディタじゃないと読めないけど、効率はいいよ。


353 名前:  347 投稿日: 01/12/19 19:17
書き方が下手糞でした…
理想的なのは>>348の"1" "0"を一文字づつ整数の配列に入れていきたいの
ですが


354 名前: デフォルトの名無しさん 投稿日: 01/12/19 19:28
>353
fread() , fwrite()


355 名前: デフォルトの名無しさん 投稿日: 01/12/19 19:43
>351
MessageBox()のままだと変数の表示はできない。
printf()みたいな可変引数で表示できるMessageBox()を自分で書けばよいです。
サンプル↓
#include<windows.h>
void test(unsigned char *s1,...){
 unsigned char s2[256];
 unsigned char *p;
 p = (unsigned char *)&s1 + sizeof(s1);
 vsprintf(s2,s1,p);
 MessageBox(NULL,s2,"MessageBox",MB_OK);
 return;
}


356 名前: デフォルトの名無しさん 投稿日: 01/12/19 19:50
>355
おお、ありがと〜やってみるよ。


357 名前: デフォルトの名無しさん 投稿日: 01/12/19 20:31
>>351

#include <stdarg.h>
#include <stdio.h>

int message_box(const char* caption, const char* format, ...)
{
char msg[256];
va_list va;
va_start(va, format);
vsprintf(msg, format, va);
va_end(va);
return MessageBox(NULL, msg, caption, MB_OK);
}

message_box("スレ違い", "%sのスレとかで聞くべき", "Win32API");


358 名前: デフォルトの名無しさん 投稿日: 01/12/19 20:41
%p の p ってなんの略なの?


359 名前: デフォルトの名無しさん 投稿日: 01/12/19 20:45
pointer


360 名前: 357 投稿日: 01/12/19 20:46
#include <windows.h>忘れてた…。

>>355
stdarg.h使え。


361 名前: デフォルトの名無しさん 投稿日: 01/12/19 20:48
ピーチク


362 名前: Kusakabe Youichi 投稿日: 01/12/19 20:50
In article >>357, デフォルトの名無しさん/sage/357 wrote:
> message_box("スレ違い", "%sのスレとかで聞くべき", "Win32API");

なんで連体形なんだろう。


363 名前: 351 投稿日: 01/12/19 21:03
いや、スレ違いでもまともにこたえてくれたことに結構感激な俺はあまちゃんですか?

355さんのプログラムって自分がメッセージボックスで表示したい変数がS1で
それをvprintfでs2に格納した後、pで領域を決めてそれをメッセージボックスで表示しているって意味なのかな?
vprintfの2番目の引数ってconst charってかいてあるけど、もし表示したい変数の型がintだったら
無理なのでしょうか?


364 名前: デフォルトの名無しさん 投稿日: 01/12/19 21:14
´>351は可変長引数についてもっと勉強しる!


365 名前: デフォルトの名無しさん 投稿日: 01/12/19 21:39
http://www.cam.hi-ho.ne.jp/mendoxi/bug-translat/clang.html
このページどお?


366 名前: ぽてと 投稿日: 01/12/19 21:51
>>345
すみませんが、いまものすごく忙しくて更新できない状態です…。
明日また考え直してみます。
getword()にファイルポインタを渡しちゃっていいんですね?
それがまずいのかと思ってあんなわけのわからん形にしてました。
ファイルポインタを渡して…さてどうしてやろうか(藁)


367 名前: デフォルトの名無しさん 投稿日: 01/12/19 21:56
>>355
凄いコードだな。


368 名前: デフォルトの名無しさん 投稿日: 01/12/19 21:56
>>364
まず、「*をちゃんと見ろ」つーべきではあるまいか。


369 名前: 357 投稿日: 01/12/19 23:12
>>362
連体止め。いーじゃん別に五七五じゃなくたって。


370 名前: デフォルトの名無しさん 投稿日: 01/12/20 01:32
アホい質問でホントすいません
char s[2000];
の1100〜1115の文字を取り出したい場合どうすればいですか?
printf("%s",s);
で確認すると全部出るんですけど部分的に見ようとして
printf("%s",s[1000]);
とかするとメモリがreadになることはできませんでしたといわれます


371 名前: デフォルトの名無しさん 投稿日: 01/12/20 01:38
char c = s[1116] ;
s[1116]='\0' ;
printf("%s", s+1000) ;
s[1116]=c ;


372 名前: デフォルトの名無しさん 投稿日: 01/12/20 01:41
>>370
文字列のアドレスを指定しなきゃだめ。
printf("%s", &s[1000]);
表示の終端は文字列のデリミタ\0。


373 名前: デフォルトの名無しさん 投稿日: 01/12/20 01:41
>>370
> アホい質問で
もっと日本語を勉強しる!!


374 名前: デフォルトの名無しさん 投稿日: 01/12/20 01:58
>>370
printf("%.16s", &s[1000]);
printf("%.*s", 16, &s[1000]);


375 名前: デフォルトの名無しさん 投稿日: 01/12/20 02:04
>>370
1100〜1115の文字全部なら
fwrite(&s[1000], 1, 16, stdout);
かなぁ


376 名前: デフォルトの名無しさん 投稿日: 01/12/20 02:23
こまかいことだが、1100〜なら &s[1100]な。


377 名前: デフォルトの名無しさん 投稿日: 01/12/20 02:54
>>376
おぉ。軒並まちがっとるじゃん


378 名前:   投稿日: 01/12/20 11:44
関数が正常に終了した場合戻り値として普通1を返すもんですかそれとも0を返すでしょうか?


379 名前: デフォルトの名無しさん 投稿日: 01/12/20 11:47
>>378
お好みで、どちらでもどうぞ。


380 名前: デフォルトの名無しさん 投稿日: 01/12/20 11:53
!foef(fp) の ! を心の中で「びっくり」と読んでいますが
問題ありませんか?


381 名前: デフォルトの名無しさん 投稿日: 01/12/20 11:55
>>380
問題ないですね。


382 名前: デフォルトの名無しさん 投稿日: 01/12/20 12:09
charをチャーと言ってしまいますが、問題ですか?


383 名前: デフォルトの名無しさん 投稿日: 01/12/20 12:15
>>380
foef?


384 名前: デフォルトの名無しさん 投稿日: 01/12/20 12:19
>>378
C/C++ならば正常終了の場合は0を返すべきだ。
多くのCの標準関数は正常終了の場合、0を返している。

# parlの場合は逆


385 名前: デフォルトの名無しさん 投稿日: 01/12/20 12:36
>>382
問題ないです。


386 名前: デフォルトの名無しさん 投稿日: 01/12/20 12:36
>>384
>多くのCの標準関数は正常終了の場合、0を返している。

うそつかないでください。


387 名前: デフォルトの名無しさん 投稿日: 01/12/20 13:32
>>386
じゃあなにがウソなのか書くのが礼儀。
おまえはアホで礼儀知らずなのか。
それともアホで常識知らずなのか。
アホじゃないのか・・・?
証明求む。


388 名前: Kusakabe Youichi 投稿日: 01/12/20 13:42
In article >>387, デフォルトの名無しさん/387 wrote:
> じゃあなにがウソなのか書くのが礼儀。

あたらしい礼儀を発明したのですか? :)

# 特許とれるだろうか?


389 名前: デフォルトの名無しさん 投稿日: 01/12/20 13:42
>>387
>証明求む。
自分はなにの根拠も提示しないで発言するのに、
人にそういうことを望まないように。


390 名前: デフォルトの名無しさん 投稿日: 01/12/20 13:47
>>388
あれは礼儀の定義

>>389
俺は「何の」根拠を出せばいいの?
バカかお前は。


391 名前: デフォルトの名無しさん 投稿日: 01/12/20 13:47
>>387
>多くのCの標準関数は正常終了の場合、0を返している。

あんた、これを本気で行ってたのか(^^;
初心者にうそを教えてからかってたのかと思ってたよ。


392 名前: デフォルトの名無しさん 投稿日: 01/12/20 13:49
>>390
>俺は「何の」根拠を出せばいいの?

ふーん。根拠なかったんだ。


393 名前: 387,390 投稿日: 01/12/20 13:50
>>391
あ、勘違いしてるみたいだけど>>384は俺じゃないし
別にその内容を肯定も(否定も)していない。
>>386の中途半端な書き方がムカついただけの第三者だよ。


394 名前: 387,390 投稿日: 01/12/20 13:51
>>392
だから「何の」根拠を出せばいいのか言え。
言えないだろ?


395 名前: どうでもいいが 投稿日: 01/12/20 13:56
技術と関係ない部分で、言えとか言わないとかやめて欲しい。
どうしてもやりたいなら、せめてsageでね。


396 名前: 387,390 投稿日: 01/12/20 13:58
>>395
失敬失敬。反論も即ではないみたいだし、めんどいのでもう落ちます。


397 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:00
>>393
>別にその内容を肯定も(否定も)していない。

技術(?)の議論からは逃げて、礼儀がどうとか言うだけかよ。
どうしようも無いやつだな。


398 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:03
>>397
そういうアンタも結局グチるだけか(w
この板の住人のレベルも落ちたな・・


399 名前: ふふふ 投稿日: 01/12/20 14:12
>>398
おいらは煽り専門だからね。
もう少し、ためてからいろいろ言おう思ったけど、
その前に相手がにげちゃった。


400 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:15
>>399
大体議論屋なんて短気なんだから
即レスしてあげなきゃ逃げるに決まってるじゃないかー
と 何もしなかったのに言ってみる。
しかし。。。 不毛だなー (´∀`;)


401 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:33
と言うか多くの?標準関数でそんなボコボコ異常終了されたら
困るんだけど (^^;


402 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:33
低レベルな間違い言ってる厨房ほど、ツッコミを入れられた
ときに逆ギレする法則 と言ってみる。


403 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:47
>>402
落ちるといってた男をなんとかして呼び戻そうとしているに新二千円札5枚


404 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:48
おれはどーも
if(foo()){
 // エラー処理
}
つーのには、なじめない…


405 名前: デフォルトの名無しさん 投稿日: 01/12/20 14:58
>>401
386の文意を汲み取ってやれば「正常終了/異常終了がある関数の多くが」じゃないの?
まあ、正常終了で0を返すより値を返す関数が多いが。


406 名前: 384 投稿日: 01/12/20 15:13
おっ、すごいことになってる

正確に言うとCの標準関数で正常終了というステータスを返す関数は多くない。
str系,mem系は比較系関数以外は第一引数のポインタを返すし、
is系は正常終了ではなく真偽値を返すものだし、
ファイルIOは書き込んだ/読み込んだ数だし...
fopen, mallocは異常終了の場合、確かに0を返すけど
俺はNULLを返すと思いたい。

で数少ない正常終了というステータスを返す代表的な関数としては
fclose, fflush, fseek, system
でこれらは全て正常終了の場合、0を返す。

# POSIXを含めるともう少し多くなる。

で、実際Cで正常終了を0以外にしている人っているの?
俺はそんな奴はマクロを小文字で書くぐらい違和感を感じるけど


407 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:18
char *p = "ABC";

*p = *(p+1);

↑これをUNIX機で実行するとセグメント例外(コアダンプしました)となります。
でも、ノートPCで実行すると通ります。なんでですか?教えて下さい?


408 名前: Kusakabe Youichi 投稿日: 01/12/20 15:22
In article >>407, デフォルトの名無しさん/407 wrote:

> char *p = "ABC";
>
> *p = *(p+1);
>
> ↑これをUNIX機で実行するとセグメント例外(コアダンプしました)となります。

まあ、そうでしょうね。

> でも、ノートPCで実行すると通ります。なんでですか?教えて下さい?

通るっていうのは "BBC"ってなるのですか?

K&Rの訳本の236ペイジを読めばいいのでは?


409 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:26
>>406
>で、実際Cで正常終了を0以外にしている人っているの?

「ライティング ソリッドコード」って本だと、0というか、
bool値で正常・異常を返すようなスタイルを薦めてるね。


410 名前: Kusakabe Youichi 投稿日: 01/12/20 15:33
In article >>409, デフォルトの名無しさん/409 wrote:
> 「ライティング ソリッドコード」って本だと、0というか、
> bool値で正常・異常を返すようなスタイルを薦めてるね。

っていうことはtrueが正常でfalseがエラーですか?
(すると逆になりますね)


411 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:38
正常か異常かの2種類だけ返すのならBOOL値でTRUEで正常。
たくさんの種類を返すのなら0が正常、1がxxxエラー、2がyyyエラーとか?


412 名前: 384 投稿日: 01/12/20 15:42
>>409
> 「ライティング ソリッドコード」って本だと、0というか、
> bool値で正常・異常を返すようなスタイルを薦めてるね。

C99だとbool型があるんで、ありかも。
# _Boolはダサイが

でもそうなると正常終了は「真」なのか「偽」なのか?
今までのスタイルを通すと正常終了は「偽」にならざる得ないけれど、
正常終了が「偽」っていうのもなんか変だ。

# そもそもステータスを返すのが変、例外をthrowしろというのは無し


413 名前: Kusakabe Youichi 投稿日: 01/12/20 15:45
In article >>411, デフォルトの名無しさん/411 wrote:

> 正常か異常かの2種類だけ返すのならBOOL値でTRUEで正常。

正常っていうか「isxxxx」系のはtrue/falseでわかるんだけどねえ。


414 名前: Kusakabe Youichi 投稿日: 01/12/20 15:46
In article >>412, 384/sage/412 wrote:
> C99だとbool型があるんで、ありかも。
> # _Boolはダサイが

ちゃんとboolも#defineされてますよね。


415 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:47
(ここに書かれたことにレスをつけてはいけません.)


416 名前: Kusakabe Youichi 投稿日: 01/12/20 15:49
In article >>415, デフォルトの名無しさん/415 wrote:

> ここに書かれたことにレスをつけてはいけません

レスって何ですか?


417 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:52
Caml is a strongly-typed functional programming language from the ML family. Objective Caml and Caml Light are two open source implementations of Caml developed at INRIA Rocquencourt, projet Cristal.


418 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:53
>>406
> で、実際Cで正常終了を0以外にしている人っているの?
俺は正常/異常の二値しかない場合には関数型を BOOL にして TRUE, FALSE を返してる。
正常で 0 を返す場合には型は int にして区別しておく。

個人的には、正常/異常の区別と正常時の戻り値をまとめて返すのはやめて、代わりに

 正常/異常       戻り値
 関数で処理した結果  引数 (ポインタ渡し)

で処理した方がいいと思ってるけどね。どうも異常値を encoding する戻り値は、エラーチェックを
忘れられる運命にあるようで、これに絡んだバグ取りに時間を使ったことが何度か。

あと標準 C ライブラリは、当時の時代背景を考えれば仕方ない面があるけど、いまだと「ちょっ
となぁ」と思うインターフェースも多いから、それをもって「普通」と主張するのはどうかと。gets() や
sprintf() は言うに及ばず、1 バイト取得して結果を返すのに

 int getchar()
 // エラー時は EOF

というのも、かなりダサい仕様だと思う。


419 名前: 名無しさん@Vim%Chalice 投稿日: 01/12/20 15:55
32bitアーキテクチャのマシンで、
2^32以上の整数を扱う方法はありますか?


420 名前: デフォルトの名無しさん 投稿日: 01/12/20 15:57
>>411
> たくさんの種類を返すのなら0が正常、1がxxxエラー、2がyyyエラーとか?
俺は基本的に enum だな。あとは unsigned でエラーを定義しておいて、その論理和というのも使う
(複数のエラーをまとめて返したいとき)。


421 名前: Kusakabe Youichi 投稿日: 01/12/20 16:01
In article >>419, 名無しさん@Vim%Chalice/419 wrote:

> 32bitアーキテクチャのマシンで、
> 2^32以上の整数を扱う方法はありますか?

アーキテキチャはどうのは関係ないでしょう。
int_least64_tとか使えばいいんだし。


422 名前: デフォルトの名無しさん 投稿日: 01/12/20 16:08
>418
たとえば、
char getchar() throw EOF_Exeption;
ならスマートか?


423 名前: デフォルトの名無しさん 投稿日: 01/12/20 16:10
>>411
「ライティングソリッドコード」だと、
成功、失敗は bool で返して、具体的なエラーの内容は引数で
返せって薦めてるね。

bool hoge(...., int* err_code);

こういう感じ。
(オレはしたがってないけど)


424 名前: デフォルトの名無しさん 投稿日: 01/12/20 16:27
>>419
C99ではlong long intが使える


425 名前: デフォルトの名無しさん 投稿日: 01/12/20 21:46
 "c:\nopqrs\tuv"→"c:\\nopqrs\\tuv"というように、エスケープシーケンスが入っている文字列から、エスケープシーケンスが無い(ただし「\\」=「\という文字そのもの」はある)文字列に変換する関数を作っているところです。
 (改行とかタブとかは使わない)ファイル・ディレクトリ名を扱うため、関数を使ってもらう人には「\」を2つ重ねろとか制約をかけずに使ってもらいたいので。

 単純に"\n"(改行)→"\\n"というように置き換えるだけではうまくいかないみたいなので("\o"とか"\x"とか)、良い方法をご存じないでしょうか?

/* 使用例 */
char *path;
escape(path,"c:\nopqrs\tuv");
/* ↑ pathに変換後の文字列"c:\\nopqrs\\tuv"が入る関数 */
printf("%s",path); /* "c:\nopqrs\tuv"と表示 */


426 名前: デフォルトの名無しさん 投稿日: 01/12/20 21:50
Cを学ぶのにCASLの知識は必要ですか?


427 名前: デフォルトの名無しさん 投稿日: 01/12/20 21:54
>>426
必要無い。


428 名前: デフォルトの名無しさん 投稿日: 01/12/20 21:58
Cを学ぶのにkusakabeの助けは必要ですか?


429 名前: 淫乱女教師 投稿日: 01/12/20 22:00
>>425
まず、どの文字列がきたらどの文字列に置き換えるか
を一覧にした変換テーブルを一度書き起こしなさい。


430 名前: デフォルトの名無しさん 投稿日: 01/12/20 22:01
>>428
助けになりません。


431 名前: デフォルトの名無しさん 投稿日: 01/12/20 22:01
>>425
コンパイル時に処理されるものだと思っていたが違うのか?


432 名前: 431 投稿日: 01/12/20 22:08
言いたい事分かった。


433 名前: デフォルトの名無しさん 投稿日: 01/12/20 22:21
>>425
仮に 8 ってコードがあったとして、\x08 にするの?それとも\t?
それとも\010?
"c:\010dir\tab\x08.txt" とか、どーすんの?


434 名前: 433 投稿日: 01/12/20 22:25
あ、tabは9だった…


435 名前: 425 投稿日: 01/12/20 22:53
>>429
\a(ビープ)      →\\a
\b(バックスペース)  →\\b
\f(フォームフィード) →\\f
\n(ニューライン)   →\\n
\r(キャリッジリターン)→\\r
\v(水平タブ)     →\\v
\'(シングルクォート) →\\'
\"(ダブルクォート)  →\\"
\\(円記号)      →\\\\
以上の単純変換はやってます。ただ、
\ddd= 8 進数で指定される ASCII 文字
\xdd= 16 進数で指定される ASCII 文字
の処理は分からないので、現在そのままにしてあります。

>>433
 ですよね(^^;;
「\x09」も「\t」も「\011」もすべて「文字コード9」なので、
文字コード9からの変換といっても3通りのうちどれが正しいかは分からない、
ということは変換は無理なのでしょうか(^^;;


436 名前: \ 投稿日: 01/12/20 23:27
mallocを使ってプログラムを書いているんですが、計算を指示するために入力する数値をだんだん大きくしていくとメモリの確保ができません。これはどういうことなんでしょうか?
よろしくお願いいたします。


437 名前: デフォルトの名無しさん 投稿日: 01/12/20 23:36
1:mallocの使い方が違う
2:確保する領域が大きすぎる
3:脳内mallocを使っている


438 名前: デフォルトの名無しさん 投稿日: 01/12/20 23:40
>>436
どういう環境で実行していて、どのくらいの大きさでmallocが失敗するか
言ってみ。
怖くないから。


439 名前: \ 投稿日: 01/12/20 23:58
レスどもです。
環境は申し分なくもったいないくらいです。
30×30×30だとOKでそれ以上になると駄目みたいです。この説明でもいいんでしょうか?


440 名前: デフォルトの名無しさん 投稿日: 01/12/20 23:58
>425
その目的なら、c:/windows/dir/tmpみたいな方式で、escapeで/->\\変換
するほうが適当だと思うのだが如何。


441 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:00
>>437
3説が濃厚だな (´д`;)


442 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:07
>439
それじゃわかんないよー・・
ソース書いてみれば?


443 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:09
>>439
普通は、たかだか27000byteで失敗はしないと思う。
UNIX系のOSで、きつい制限がかけられるって聞いたことあるけど、
使ってるOSとかコンパイラは?


444 名前: \ 投稿日: 01/12/21 00:12
脳内mallocとは要はできていないってことですか?


445 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:14
>>444
煽り気にしてたらここで質問なんてできないよ


446 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:16
>444
もうちょっと具体的に書けってこと
30×30×30ってのはchar型なのか
1つ500KBの構造体なのか分からないだろ、ヘッダとかちゃんとincludeしてんのか?
ホントに知りたければもう少しコード書けよ、(つーかJMとかでも分かるし)


447 名前: \ 投稿日: 01/12/21 00:18
>445
いいえ、できるようになるためなら気にしません


448 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:20
>447
ここじゃなくても親切な人たくさんいるとこあるでしょうに・・
けどその心意気に感激。
解決してあげたいのでコード書いてみて?


449 名前: \ 投稿日: 01/12/21 00:23
>>446
スイマソ
char型1つとdouble型3つのもので一つとしています。


450 名前: \ 投稿日: 01/12/21 00:24
コードかなり長いんですがそれでもいいんですか?
自分でやらなきゃいけないのをわかっているんですが…


451 名前: \ 投稿日: 01/12/21 00:26
>>443
OSはWin2kでコンパイラはcode warriordです。


452 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:28
>450
自分でやってできないから質問したんでしょ?
親切な人たち(一部除く)が教えてくれるから。
いまの状態じゃなにもアドバイスしてあげられないので。
あんまし長いのはやだけど・・(^^;
問題の部分だけでも。
(領域破壊が原因だったりしたら一部分だけではどうしようもないけど)


453 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:28
a[i++]=b[i++];
はやばそうだけど、
a[i++]=b[i];
もやばいの?


454 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:29
お、スマンね 冬厨たんと思ったから
#include <stdlib.h>
main ()
{
 struct foo *baz;
 baz = (struct foo *)malloc(sizeof(foo) * 1);
 for (i=2; i<100; i++)
   baz = realloc(baz,sizeof(foo) * i);
}
こんな感じ、拡張はreallocだぞ。 (つーかコード詰めて貼れ)


455 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:30
>>453
分かってやってるならどっちも構わん。


456 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:33
>>455
少なくとも
a[i++]=b[i++];
はコンパイラによって処理が変わるじゃん。
もしかしてそこから間違ってるのか?


457 名前: \ 投稿日: 01/12/21 00:34
#include "ver0.6.h"

int main ( void )
{
double rad_ccc,rad_hch,rad_coh,rad_occ,rad_rot1,rad_rot2,rad_rot3;
int buff[16];
int num_of_atom,i,j,k,l,a;
int num_of_C,*p;
POSI *posi;
char filename[]="liquid_crystal.xyz";
FILE *fp;
rad_rot1=PI*DEG_ROTATION1/180;
rad_rot2=PI*DEG_ROTATION2/180;
rad_rot3=PI*DEG_ROTATION3/180;
//データ入力
p=buff;
num_of_C=input_number(p);
j=input_number(p);
k=input_number(p);
l=input_number(p);

num_of_atom=3*num_of_C+4;
if(NULL==(posi=(POSI*)malloc(j*k*l*(num_of_atom)*sizeof(POSI))))
{
printf("<file_loading> <setting> error!!!");
exit(1);
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("can't open %s!",filename);
exit(1);
}


458 名前: 投稿日: 01/12/21 00:35
>>439
もしかして free() し忘れてるとか・・・
んなこたないか。


459 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:35
>>456
=は右から評価、処理は変わらないと思うが?


460 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:36
>456
人はそれを未定義と呼ぶ See FAQ3.9


461 名前: \ 投稿日: 01/12/21 00:36
でこっからは値の計算なので省いて
//回転関数
if(num_of_C%2==0)
{
*posi=rotation1(posi,j,k,l,num_of_atom,rad_rot1,rad_rot2);
}
else if(num_of_C%2==1)
{
*posi=rotation2(posi,j,k,l,num_of_atom,rad_rot2,rad_rot3);
}
//コピー関数
if(num_of_C%2==0)
{
*posi=copy1(posi,j,k,l,num_of_atom);
}
else if(num_of_C%2==1)
{
*posi=copy2(posi,j,k,l,num_of_atom);
}

fprintf(fp,"%d\n\n",j*k*l*num_of_atom);
for(i=0;i<j*k*l*num_of_atom;i++)
{
fprintf(fp,"%s\t%lf\t%lf\t%lf\n",(posi+i)->name,(posi+i)->xyz[X],(posi+i)->xyz[Y],(posi+i)->xyz[Z]);
}
fclose(fp);
exit(0);
}
main関数はここまでです。


462 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:38
>>449

#include <stdio.h>
#include <malloc.h>
int main()
{
struct data{
char c;
double d1;
double d2;
double d3;
} *p = NULL;
p = malloc(sizeof(struct data) * 30 * 30 * 30);
if(p){printf("ok"); free(p);}
else printf("NG");
return 0;
}


VC6でもgccでもokでした。


463 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:42
>457
んでコンソールに、

<file_loading> <setting> error!!!

って出るの?
実際 malloc に渡してる値はどのくらいになるのか確認してみた?
input_number(int *) は、何をする関数?
buf って中身が無いような・・・


464 名前: 459 投稿日: 01/12/21 00:42
知らんかった。何でそんな仕様にしたんだ?


465 名前: \ 投稿日: 01/12/21 00:43
それでだいたいnum_of_Cが40とかです。


466 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:44
>>459
それは違う。
>>460
サンキュー。FAQ見て分かった気がした。


467 名前: \ 投稿日: 01/12/21 00:47
>>463
そうなります。
確認の仕方がわかりません…
たしかに今ではbuffは意味がないです。
input_number(int *) は例の30×30×30とnum_of_Cを入力するものです。


468 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:49
>465
うーん。
単純にでかい領域を確保しようとしてエラーが出てる気が・・


469 名前: \ 投稿日: 01/12/21 00:51
>>468
すいません 間違えました。
num_of_atomが40です。


470 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:54
>468
int size = j*k*l*(num_of_atom)*sizeof(POSI);
printf("size = &d\n", size );
とかじゃだめですか?


471 名前: 470 投稿日: 01/12/21 00:55
>468
ちゃう
>467


472 名前: デフォルトの名無しさん 投稿日: 01/12/21 00:58
printf("size = %d\n", size );だろ


473 名前: 470 投稿日: 01/12/21 01:00
>472
・・・ほんまや!!


474 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:01
>468
それは、あれだ、仮に他の原子も40だったとしてもヒープは到底溢れないから
if ((i=malloc(4*40*40*40*40*100))==NULL){
printf ("ERROR\n");
exit;
}
ljk辺りにdでもない値が入って無いか?


475 名前: 425 投稿日: 01/12/21 01:11
>>440
 「/」を使う方法は私も考えてまして、「/」を使わせれば変換できるよう
な関数は作ったのですが(「\」を使っても「\x09」や「\011」のような文字
コード指定以外は動作する)、(私に作るよう)依頼した人はどうしても
「\」を使いたいようなので・・(´д`;)


476 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:12
たとえば・・・

a[i++]=b[i++];
これって処理系依存だコンパイラ依存だとよく言うけど

つまり、これをうまく使えば、GPLでソースを公開しつつも
再コンパイルはある特定環境でないと正常なバイナリが
生成されない、すげートラップが仕掛けられると。

つまりこれってまるで一昔前のコピープロテクトのような
そんな効果を得られる、魔法のコードになるとか。

問題は、実際にこういうコード書いても昨今じゃだいたい
動きが一緒というか想像の範疇にあって、トラップを
仕掛けにくいってことか。


477 名前: \ 投稿日: 01/12/21 01:15
>>470
10×10×10でやったら326400とでました。
たぶん本チャンで入力する値は500ぐらいになりそうなんですが…


478 名前: だ・か・らあ 投稿日: 01/12/21 01:16
処理系依存!=未定義な
つまりそのトラップコードとやらはお前の環境でさえいきなりコンパイル
出来なくなる可能性や、突然PCから炭素菌が吹き出してくる可能性もあるんだよ


479 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:20
俺様専用コンパイラでしかコンパイルできない、フリーソフト、って事だろ。

まぁ、特定の処理系でしかコンパイルできなくしても、ソースがCなら、
処理系依存なところを除去されて終いだな。


480 名前: 470 投稿日: 01/12/21 01:24
>477
・・・326400・・・
ってなんメガ?(混乱)


481 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:26
まだ分かって無い奴が居る。。。  (-、-;


482 名前: 470 投稿日: 01/12/21 01:28
ええと、
>477
326400 == 10*10*10*(num_of_atom)*sizeof(POSI)

なんですか?

んでほんちゃんでは 10 が 500 になると・・?


483 名前: \ 投稿日: 01/12/21 01:34
>>482
まったくそのとおりです。


484 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:34
>\
これ通ります?、通るなら、変数に予期しない値ですよ。
input_number()とか大丈夫ですか?

if ((i=malloc(1024000000))==NULL){
printf ("Can't allocate");
} else {printf ("allocated \n");}


485 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:35
\はどんなコンピューターを使っているんだ?
すげぇな


486 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:36
>俺様専用コンパイラ
これは脳内コンパイラ、と言うか既にC言語の***ような***言語
と言う事になるよ


487 名前: 476 投稿日: 01/12/21 01:40
>>478
例にあげたコードに関してはコンパイルは
環境が変わらない限り毎回同じコードを吐くし。
処理系依存!=未定義 とはいえ、コンパイルするときに
とりあえずの構文解析・コード生成までやってくれる。
実行時の動作は多少環境が変わっても変わらないし。
どこがおかしいか、実際の例を挙げて説明してくれない?


488 名前: 470 投稿日: 01/12/21 01:43
>\
ちょっと確保するサイズが大きすぎるようです。
小さなサイズでもうまくいくような方法を考えてみてはどうでしょう。


489 名前: \ 投稿日: 01/12/21 01:45
>>484
通りませんでした…


490 名前: 470 投稿日: 01/12/21 01:45
>\
解決?
おっけい?


491 名前: \ 投稿日: 01/12/21 01:49
了解です
皆様どうもお世話になりました。心からの感謝です。


492 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:49
>>487 FAQ嫁、それは「添え字が溢れても動いてるから問題無い」
ってのと何ら変わらない。


493 名前: 470 投稿日: 01/12/21 01:51
>\
よかったね (^^


494 名前: 動作未定義 投稿日: 01/12/21 01:52
毎回同じコード吐いて、それの実行時の動作が、「鼻から悪魔」だって事だよ。
実行時の環境が、たとえば、直前に使ってたアプリケーションが違うくらいで、
動作が変わるんだよ。


495 名前: デフォルトの名無しさん 投稿日: 01/12/21 01:55
この世の中、「動いてるから大丈夫」なコード、けっこう多いんだよね…
いや、おれの見たモノだけかもしれないが…


496 名前: 476 投稿日: 01/12/21 02:02
>>494
(゚∀゚) 吐かれたバイナリ見る限りじゃ動作が変わるようには見えないニャ


497 名前: デフォルトの名無しさん 投稿日: 01/12/21 02:05
>>496
カタるに陥るってやつだな


498 名前: デフォルトの名無しさん 投稿日: 01/12/21 02:07
>>496
このバイナリはいつも同じ動作をするから動作未定義は動けばおっけー
ってことだろ。
いや、動くように見えるコードはけばおっけーってことか。
どっちにしろ、動作未定義の意味を理解させるのは無理そうだな。


499 名前: デフォルトの名無しさん 投稿日: 01/12/21 02:09
屁理屈こねるなぁ・・・・(^-^;
実際、最近のコンパイラならちゃんと動くんだろけどね。
でも、それは結果論で有ってANSIや99には副作用完了点までに2回以上
変数の値を変える事の保証は無い
exitを付けただけで動作が変わるかも知れないし、毎回違うバイナリを
生成する(かもしれない) と言うだけの事。で、>>492になるんだよ
自分を信じる事は大切だけど、人には勧めてほしくないなぁ


500 名前: 476 投稿日: 01/12/21 02:10
>>498
(゚∀゚) 理解シテルヨ !
ここで利用してる「動作未定義」はかなり限定したものだけどネ !


501 名前: Kusakabe Youichi 投稿日: 01/12/21 02:11
In article >>499, デフォルトの名無しさん/sage/499 wrote:
> ANSIや99には副作用

「ANSIや99」って変ないいかたですね。


502 名前: デフォルトの名無しさん 投稿日: 01/12/21 02:12
「利用してる」ってとこで、理解してないことが証明されてるのね。


503 名前: デフォルトの名無しさん 投稿日: 01/12/21 02:12
陽一!
いいじゃねぇーか別に
おまえ、もうどっかいけ!


504 名前: デフォルトの名無しさん 投稿日: 01/12/21 03:09
>>487
サービスパックを当てたら、落ちるようになったりしてね。

未初期化バッファを参照するようなコードと比べれば、まぁ挙動は安定すると思うが。
でもそんな小手先の技術でどうこうしようってのは、やめた方がいい。


505 名前: 教え子にしてくれゴルァ!! 投稿日: 01/12/21 04:10
大先生方!
CRC32を算出してはじめからデータとしてあるCRCの値と比較する
プログラムを作りたいのですが、
どのようにCRCを算出していいかわかりません。
簡単にできそうなfileoperate.dllなるものを落として試行錯誤してみたのですが
LIBファイルが壊れているか〜ってメッセージが出てどうしてもできませんでした。
ご教授願いますぺこ <(_ _)>


506 名前: Kusakabe Youichi 投稿日: 01/12/21 04:19
In article >>505, 教え子にしてくれゴルァ!!/505 wrote:
> 大先生方!
> CRC32を算出してはじめからデータとしてあるCRCの値と比較するプログラムを作りたいのですが、
> どのようにCRCを算出していいかわかりません。

このへんが参考になるかも(ならないかも) > http://www.vector.co.jp/soft/dos/util/se000791.html


507 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:22
げっ、目が腐った。


508 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:28
>>506
なんか中途半端なソ−スだけどな

つーか、引数未指定のときはなんかメッセージ出せやゴルァ


509 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:29
>>508
パイプ処理を意識してるんだろ


510 名前: Kusakabe Youichi 投稿日: 01/12/21 04:33
In article >>508, デフォルトの名無しさん/sage/508 wrote:
> なんか中途半端なソ−スだけどな
> つーか、引数未指定のときはなんかメッセージ出せや(I剤戳

は? こいつかなりまぬけでは?

(文字化けもしてるし)


511 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:37
register使ってる意味がわからん。
昔はこれで速くなったってことか?


512 名前: Kusakabe Youichi 投稿日: 01/12/21 04:39
In article >>511, デフォルトの名無しさん/sage/511 wrote:

> register使ってる意味がわからん。

意味ってそう考えるまでもないことだとおもうが。

> 昔はこれで速くなったってことか?

そういうことです(かなり昔ですが)。

register使う意味って、ほかにあったっけ? (「わからん」っていうほどの)


513 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:40
CRCなんてけちくさいこと言わずにMD5使え。


514 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:41
registerを、すべての最適化をかけてよいって意味にしてくれればよかったの
に、と思うことがある


515 名前: 教え子にしてくれゴルァ!! 投稿日: 01/12/21 04:43
とりあえずさっき教えていただいたソースを参考に組み込みはできる
と思うのですが、このソースだと何かまずいんでしょうか?
MD5でもいいんですが処理時間と、処理の難しさについていけそうも
無いので・・・


516 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:43
何となく先生の言ってる事が正しいのがおかしい


517 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:43
513は馬鹿ですか?


518 名前: Kusakabe Youichi 投稿日: 01/12/21 04:43
In article >>514, デフォルトの名無しさん/sage/514 wrote:

> registerを、すべての最適化をかけてよいって意味にしてくれればよかったの
> に、と思うことがある

え? 現状のように「最適化のためにいじっちゃだめなところ」を指定する方式の
ほうが合理的では?


519 名前: Kusakabe Youichi 投稿日: 01/12/21 04:45
In article >>516, デフォルトの名無しさん/sage/516 wrote:
> 何となく先生の言ってることが正しいのがおかしい

いつも正しいことしか言っていませんよ。もともと。


520 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:46
>>512
> register使う意味って、ほかにあったっけ?
規格書には書いてありませんが、現実には「コンパイラの最適化を邪魔する」という役割がありますね。


521 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:48
>いつも正しいことしか言っていませんよ。もともと。
これが正しいとどうして言えるのでしょうか?


522 名前: 教え子にしてくれゴルァ!! 投稿日: 01/12/21 04:50
ちなみに聞きたいのですがなぜにクサカベ先生は嫌われ者なんですか?
毎回疑問に思うのですが・・・


523 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:51
>>521
あまりヴァカに餌をやらないように(苦笑)

やつの日本語は一般的な国語辞典ではなく、民明書房刊の国語辞典に準拠しているので、
話すだけ時間の無駄です。「いつも間違いを認めませんよ」ぐらいに解釈して、さっさと読み
飛ばすのが吉。

(約一名以外は、どっちが正しいかは分かってますって)


524 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:51
>>522
奥様が美人だから。


525 名前: Kusakabe Youichi 投稿日: 01/12/21 04:52
In article >>520, デフォルトの名無しさん/sage/520 wrote:

> >>512
> > register使う意味って、ほかにあったっけ?
> 規格書には書いてありませんが、現実には「コンパイラの最適化を邪魔する」という役割がありますね。

ほんとうですか?

たとえばregister宣言されている変数は「かならずレジスターにわりあて
なければならない」というものだったら、そういうこともできるでしょうけど、
実際にはそういう実装ってあまりないですよね? (規格にも)


526 名前: Kusakabe Youichi 投稿日: 01/12/21 04:53
In article >>521, デフォルトの名無しさん/sage/521 wrote:

> >いつも正しいことしか言っていませんよ。もともと。
> これが正しいとどうして言えるのでしょうか?

え? 正しくないとでも?


527 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:53
>>522
板違い。プログラマー板に行って聞いてくれ。(聞くまでも無く、プログラマー板の関連スレッドを読むと
おのずから答えはわかると思うが)


528 名前: 教え子にしてくれゴルァ!! 投稿日: 01/12/21 04:54
今いるクサカベ先生はご本人ですか?
奥様美人ってw


529 名前: 教え子にしてくれゴルァ!! 投稿日: 01/12/21 04:55
さっそく逝って来ます
>527さん


530 名前: Kusakabe Youichi 投稿日: 01/12/21 04:55
In article >>522, 教え子にしてくれゴルァ!!/522 wrote:
> ちなみに聞きたいのですがなぜにクサカベ先生は嫌われ者なんですか?

はつみみです。


531 名前: Kusakabe Youichi 投稿日: 01/12/21 04:55
In article >>523, デフォルトの名無しさん/sage/523 wrote:
> やつの日本語は一般的な国語辞典ではなく、民明書房刊の国語辞典に準拠しているので、
> 話すだけ時間の無駄です。

「ということにしたい」のですか? :)


532 名前: デフォルトの名無しさん 投稿日: 01/12/21 04:59
>>525
信じないのは自由ですけどね。(疑うなら自分で試せよ、バカ)


533 名前: デフォルトの名無しさん 投稿日: 01/12/21 05:40
日本語EUCの"削除"という文字列を代入するにはどうしたらいいのでしょうか。
何か特別な文字と同じ文字コードを持っているらしく、エラーになるのです。
ひとつずつコードを代入するしかないでしょうか。


534 名前: デフォルトの名無しさん 投稿日: 01/12/21 05:43
>>533
削除 ってEUCでいうと文字コードどんな感じだっけ?


535 名前: 533 投稿日: 01/12/21 05:45
>>534

調べようにも代入できなくて調べられない状況です・・・(-_-;)
どこかに表があれば・・・


536 名前: デフォルトの名無しさん 投稿日: 01/12/21 05:46
>>532
きっとハマったことがあるんだね。御愁傷様。
後学のために処理系を教えてもらえるとうれしい。


537 名前: ホレ 投稿日: 01/12/21 05:48
% echo 削除 | od -b
0000000 272 357 275 374 012
0000005

8bit目を落としてもヤバそうなコードはないけどなあ。


538 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:01
んなこたぁ無いぞい ->EUC
ちゃんとターミナルと文字コード合ってるか?
Sjisじゃ有るまいし・・・・


539 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:02
>>533
説明がアバウトでどんな状況なのかわからないよ。
もうすこし丁寧に説明希望。

簡単なのは
char str[] = { 0xba, 0xef, 0xbd, 0xfc };
と埋め込むことだけど。


540 名前: 533 投稿日: 01/12/21 06:12
回答ありがとうございます。

>>537

確かに8bit目を落としても(:o=|)問題なさそうですよね。。。

>>538

それは問題ないはずです。
char *s;
s="削除";
こういう風にしているだけですから。他の文字列にすると大丈夫です。

>>539

そうしてみます。。。。


541 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:23
オヒオヒ (・∀・;)


542 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:23
それはとても危険な構文だよ!!!貴方の身に危険が!!!
早く逃げて!!!!


543 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:25
こらこらこらこら


544 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:27
怒涛の突っ込みだな(w


545 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:29
何が危険なの?
末尾に'\0'が入っていないということ?


546 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:31
>>540
ためしてみたけど、何の問題もなくコンパイルできたよ。
OS、処理系を教えれ。


547 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:31
char *s="削除"; になさい


548 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:35
>>545
後生大事にそんなもん付けるのは、チキン野郎だけ!


549 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:37
ん、何も問題無いぞ??
配列じゃ無いよな??>質問者


550 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:47
わけわかんない、何がおかしいの
puts("削除");
は動くのか


551 名前: 539 投稿日: 01/12/21 06:50
送信したあとに「あ、付け忘れた」と思ったが
どうせツッコミが入るだろうと放置した(w


552 名前: デフォルトの名無しさん 投稿日: 01/12/21 06:53
>>540

VC++6.0でやるとコンパイルできないな。
Linux+gccでやるとできるけど。


553 名前: 539 投稿日: 01/12/21 06:54
ついでに言えば char 付近もいろいろやばいのだ
善処してくれ(w


554 名前: デフォルトの名無しさん 投稿日: 01/12/21 07:35
>>552
CP932だと0xba, 0xef, 0xbd, 0xfcは
仮名、SJIS 1バイト目、SJIS 2バイト目、SJIS1バイト目
だから次の文字が食われちゃうね。
VC++でもシングルバイト環境ならちゃんとコンパイルできるはず。


555 名前: デフォルトの名無しさん 投稿日: 01/12/21 14:05
>>202-203

http://www.kumei.ne.jp/c_lang/intro/no_15.htm


556 名前: デフォルトの名無しさん 投稿日: 01/12/21 14:17
>>555
そのページ、最後に赤い文字で書いてある文章イタくないか?
まあ保存するなというのだからcahceはクリアしておくか。


557 名前: デフォルトの名無しさん 投稿日: 01/12/21 14:37
しまったブラウザで表示してしまった。


558 名前: デフォルトの名無しさん 投稿日: 01/12/21 14:39

ifを使うのはスマートじゃないと聞いたのですが、本当ですか?
ifを使わないでまともなプログラムが作れるんですか?


559 名前: デフォルトの名無しさん 投稿日: 01/12/21 14:47
if(exp){}の代わりに
for(;exp;){}でも
while(exp){break;}でも
exp ? : ;でも
すきなの使っとけ。


560 名前: デフォルトの名無しさん 投稿日: 01/12/21 14:47
> ifを使うのはスマートじゃないと聞いたのですが、本当ですか?
嘘です。
ただし、3項演算子や論理演算子を使った方がスマートに書ける場合もあります。

> ifを使わないでまともなプログラムが作れるんですか?
if を使うべきところでわざわざ if を避けるように書いたプログラムはあまり
まともとは言えないと思います。


561 名前: 239 投稿日: 01/12/21 14:51
思い出したように二分木の話。対象はver.007。

> Node root={"\0",0, NULL, NULL};
空の単語も全部これにカウントすることになるが、それは意図的なもの?
Node *root = NULL;でnodeは要らないはず。

> while ((c=fgetc(fp))!=EOF || j<=MAXWORD){
charとEOFの比較はうまくいかないし、jがMAXWORDにいっても終らん。

> ptr[j]=(char *)malloc(sizeof(char)*i); /*単語を格納するための場所確保*/
> strcpy((char *)*ptr[j], temp); /*確保した場所に単語を格納*/
ターミネータの分を忘れてる。このptr自体不要だと思うが。
二分木に貯め込むってのに、別に配列に取っておく必要はないだろう。

以前も書いたが、英字以外が連続したときのことを考えていない。
iが何を意味しているか考えればできるはず。
whileの中の条件の順序を変えた方がいいと思う。


562 名前: デフォルトの名無しさん 投稿日: 01/12/21 15:00
if の代わりに && を使う。
if( hoge == page ) printf("hoge と page は同じ");
(hoge == page) && printf("hoge と page は同じ");


563 名前: Kusakabe Youichi 投稿日: 01/12/21 15:07
In article >>562, デフォルトの名無しさん/562 wrote:

> if の代わりに && を使う。
> if( hoge == page ) printf("hoge と page は同じ");
> (hoge == page) && printf("hoge と page は同じ");

elseはどうします? :)


564 名前: デフォルトの名無しさん 投稿日: 01/12/21 15:11
(hoge == page) && printf("hoge と page は同じ");
(hoge != page) && printf("hoge と page は同じ");


565 名前: Kusakabe Youichi 投稿日: 01/12/21 15:15
In article >>564, デフォルトの名無しさん/sage/564 wrote:

> (hoge == page) && printf("hoge と page は同じ");
> (hoge != page) && printf("hoge と page は同じ");

うーむ、それじゃelseになってないような ;)
じゃあ、複数の文がある場合は?


566 名前: デフォルトの名無しさん 投稿日: 01/12/21 15:21
||


567 名前: デフォルトの名無しさん 投稿日: 01/12/21 15:59
, (カンマ演算子)でいくらでも。
(hoge == page) && printf("i == 20"), printf("dayo");

break とか void 関数などの式じゃないものが使えないだけで、
複文だろうと else だろうとできる。


568 名前: デフォルトの名無しさん 投稿日: 01/12/21 16:04
テキスト形式のファイルから fread関数 で固定長レコード
を読んでいるのですが、feof関数で終了が判断できません。
仕方ないので fread関数 の戻り値が 0 になったら終了する
ようにしています。どうにかfeof関数だけで判断できないで
しょうか?

SOURCE:
FILE *fp;
int ret;
char buf[128];

if(fp = fopen("test.txt", "r") == NULL){
 return;
}
ret = 1;
while(!feof(fp) || ret > 0){
 ret = fread(buf, sizeof(char), sizeof(buf), fp);
}
fclose(fp);

お願いします。


569 名前: デフォルトの名無しさん 投稿日: 01/12/21 16:12
feof関数は、ふぁいるの終わりに到達した後に読込み操作を行なうと0以外を返すので

do {
 ret = fread(buf, sizeof(char), sizeof(buf), fp);
} while (!feof(fp));

で、どうよ?


570 名前: デフォルトの名無しさん 投稿日: 01/12/21 16:14
if 〜 else 〜 処理

int main()
{
int i;

printf("input >>");
scanf("%d", &i);

/* if( i == 20 ) printf("i == 20\n");
else printf("i != 20\n"); */
(i == 20) && (printf("i == 20\n"), 1)
|| printf("i != 20\n");

return 0;
}


571 名前: 568 投稿日: 01/12/21 16:19
>>569
 自分のソースでも終わりに達した後に読み込み操作を行いませ
んか?終端に達して何度 fread を実行してもだめなんです(T_T


572 名前: _ 投稿日: 01/12/21 16:58
(int)read((int)file,buf,128);
でも使ってみれば?ただ、低水準入出力関数なので、
使い勝手がわるいけど。
この関数は読み込んだデータのバイト数を返す関数なので、
128より小さければファイルの終端に来たことがわかる。


573 名前: デフォルトの名無しさん 投稿日: 01/12/21 17:06
>>568
なんでfeof()にこだわるわけ?

> 仕方ないので fread関数 の戻り値が 0 になったら終了する
これでいーじゃん。正しい使い方だお。


574 名前: デフォルトの名無しさん 投稿日: 01/12/21 17:11
>>572

あんたのやってることは
if( fp = (fopen("test.txt", "r") == NULL) ) {
  return;
}

だから fp に比較演算の結果を代入してるのよ。
ちゃんと括弧をつけなさい。

if( (fp = (fopen("test.txt", "r")) == NULL )


575 名前: デフォルトの名無しさん 投稿日: 01/12/21 17:13
すまそ

>> 568
if( (fp = fopen("test.txt", "r")) == NULL )


576 名前: Kusakabe Youichi 投稿日: 01/12/21 17:51
In article >>567, デフォルトの名無しさん/567 wrote:

> , (カンマ演算子)でいくらでも。
> (hoge == page) && printf("i == 20"), printf("dayo");

408ペイジに演算子の結合の優先度の表が乗っているので、
そこを見直して勉強し直しましょう:)


577 名前: Kusakabe Youichi 投稿日: 01/12/21 17:52
In article >>568, デフォルトの名無しさん/568 wrote:

> テキスト形式のファイルから fread関数 で固定長レコード
> を読んでいるのですが、feof関数で終了が判断できません。

ほんとうに切りのいいバイト数だけ入っているファイルなのですか?
それに「固定長」なのになぜ「テキスト」モードで読むようなことをするのですか?


578 名前: Kusakabe Youichi 投稿日: 01/12/21 17:53
In article >>575, デフォルトの名無しさん/575 wrote:

> すまそ
> if( (fp = fopen("test.txt", "r")) == NULL )

なんでifにくっつけるのに内側はあけたりするのかなあ。
何か悪い本の影響だろうか?


579 名前: デフォルトの名無しさん 投稿日: 01/12/21 17:59
>>578

細かいところつっこむねー。


580 名前: Kusakabe Youichi 投稿日: 01/12/21 18:03
In article >>579, デフォルトの名無しさん/579 wrote:
> 細かいところつっこむねー。

どのへんでしょうか? > 細かいところ。


581 名前: デフォルトの名無しさん 投稿日: 01/12/21 18:53
>580
「なんでifにくっつけるのに内側はあけたりするのか」
どうみてもここしかないだろ。


582 名前: Kusakabe Youichi 投稿日: 01/12/21 18:58
In article >>581, デフォルトの名無しさん/sage/581 wrote:
> 「なんでifにくっつけるのに内側はあけたりするのか」
> どうみてもここしかないだろ。

そうですか? > どうみても

何箇所もいろいろな指摘してるので、どこかと思って。


583 名前: デフォルトの名無しさん 投稿日: 01/12/21 19:58
日下部たんは、>580とか、>449とかの番号指定による言及
について理解していないものと思われます。


584 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:02
これは偽者だ。絶対。


585 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:21
つっこむだけで、何も生まないのは、本物と一緒だけどね。


586 名前: Kusakabe Youichi 投稿日: 01/12/21 20:28
In article >>585, デフォルトの名無しさん/sage/585 wrote:

> つっこむだけで、何も生まないのは、本物と一緒

「だということにしたい」のですか? :)

ようするに私が「役に立って」いるところは見たくないのですね:)


587 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:36
removeで、あるフォルダにある全てのファイルを消したいんですけど、

remove("C:\\test\\*.*")

で消せません。ワイルドカード使っちゃ駄目ですか?


588 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:42
>「だということにしたい」のですか? :)
>ようするに私が「役に立って」いるところは見たくないのですね:)

「だということにしたい」のですね:)


589 名前: Kusakabe Youichi 投稿日: 01/12/21 20:50
In article >>587, デフォルトの名無しさん/587 wrote:

> removeで、あるフォルダにある全てのファイルを消したいんですけど、
>
> remove("C:\\test\\*.*")
>
> で消せません。ワイルドカード使っちゃ駄目ですか?

ワイルドかーどはだれが展開しているかを考えましょう:)

fopen("c:/test/*.*" ...) で全部のファイルがオープンしますか? :)


590 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:53
>全部のファイルがオープンしますか?
ファイルが何をオープンするというのでしょうか?


591 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:53
>>589
それが分かったら多分苦労してません。


592 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:54
小人さんがせっせと(以下自粛)


593 名前: デフォルトの名無しさん 投稿日: 01/12/21 20:54
北極グマかわいいです。


594 名前: 587 投稿日: 01/12/21 21:13
>>589
ワイルドカードは使うなって事ですか?
何を使って消せばいいんでしょうか?


595 名前: デフォルトの名無しさん 投稿日: 01/12/21 21:14
ワイルドかーどはだれが展開しているかを考えましょう〜
でも、考えてわかることじゃないから、答えは出ないですぅぅ
考えてわかる事と、調べないとわからないことは、ちゃんと区別しましょう。


596 名前: デフォルトの名無しさん 投稿日: 01/12/21 21:18
>>587
ファイルの一覧をもらってくる関数を使って1つづつ消すか、
ワイルドカードを使ってファイルを削除するコマンドを起動するのがいいでしょう。


597 名前: 本当に親切な人 投稿日: 01/12/21 21:34
>>594
こうだよ。

for(i=0;i<1000;i++) {
 remove("C:\\test\\*.*")
}

本当なら、1000回ループではなくて、ディレクトリにある
ファイルの数を調べてやるべきなだけど、初心者なら、
適当に1000か10000回ぐらいまわせばOKだろう。


598 名前: 587 投稿日: 01/12/21 21:37
1回で出来ない事を1000〜10000回繰り返すんですか?


599 名前: 本当に親切な人 投稿日: 01/12/21 21:41
>>598
ディレクトリにあるファイルと同じ数かそれ以上まわすと、
一気に削除されるよ。


600 名前: デフォルトの名無しさん 投稿日: 01/12/21 21:45
>>598
それはプロは絶対やらない、初心者向けの方法。
あまりremove()をワイルドカードでやりすぎると、まずいことが
起こることもあるけど、めったに起こらないから気にしなくてもいい。


601 名前: ぽてと=150 投稿日: 01/12/21 21:57
>>561
いつも指摘してくれてありがとうございます。

>> Node root={"\0",0, NULL, NULL};
>空の単語も全部これにカウントすることになるが、それは意図的なもの?
>Node *root = NULL;でnodeは要らないはず。

addNode()で返ってきたものを逐一Nodeに再代入して使っているので、
ルートの位置を保存しておく(あとでTraverseNode()で使う)ためにnodeを宣言していました。
だからnodeをなくすとルートの位置が保存できなくなると思うのですが。

>> while ((c=fgetc(fp))!=EOF || j<=MAXWORD){
>charとEOFの比較はうまくいかないし、jがMAXWORDにいっても終らん。

これは…いままでおもいっきり while ((c=getchar())!=EOF) なんていう式を使っていたので
それに倣っていました。でもEOFは0か1を返すのでcharと比較しても大丈夫なような…。

>> ptr[j]=(char *)malloc(sizeof(char)*i); /*単語を格納するための場所確保*/
>> strcpy((char *)*ptr[j], temp); /*確保した場所に単語を格納*/
>ターミネータの分を忘れてる。このptr自体不要だと思うが。
>二分木に貯め込むってのに、別に配列に取っておく必要はないだろう。

ターミネータ('¥0'ですよね?)は忘れていました。
ptrは…。ちょっと理解するのが難しいのでじっくり考えます。ノードのなかにポインタがあるから、
それを使えば他のノードも指せるということですよね。(ptrを使わなくても)

夜中に少しソースを改訂させます。


602 名前: デフォルトの名無しさん 投稿日: 01/12/21 21:59
>>578

全部くっつけると醜いからに決まってるだろ。
スタイルはあまりに奇抜でなければ良い悪いも無いと思うが?
おまえ、嬉しそうに

i=j---k;

なんて書いて「これの意味は?」なんて聞いてる厨だろ?
usenet に行け。


603 名前: デフォルトの名無しさん 投稿日: 01/12/22 01:41
>594

ワイルドカードはOSの機能だから、C言語のすべての関数で使えるわけじゃないと思うぞ。
LSI-Cのヘルプにも
>>unlink(), remove()はfilenameで示されるファイルを削除します。ワイルド
>>・カード文字(*と?)は使用できません。

system()でコマンドラインからファイル削除しちゃだめか。
DOSならdelをつかうとか。


604 名前: 239 投稿日: 01/12/22 01:46
>>601
> addNode()で返ってきたものを逐一Nodeに再代入して使っているので、
> ルートの位置を保存しておく(あとでTraverseNode()で使う)ためにnodeを宣言していました。
> だからnodeをなくすとルートの位置が保存できなくなると思うのですが。
addNode()が返してるもの自体がルートだろ?

> これは…いままでおもいっきり while ((c=getchar())!=EOF) なんていう式を使っていたので
> それに倣っていました。
fgetc()やgetchar()の戻り値をなぜcharに代入しちゃいけないかは、
はっきりいってFAQなので>>1にあるリンクを読んでくれ。

> でもEOFは0か1を返すのでcharと比較しても大丈夫なような…。
それと、EOFとfeof()かなにかを混同してないか。

> ptrは…。ちょっと理解するのが難しいのでじっくり考えます。ノードのなかにポインタがあるから、
> それを使えば他のノードも指せるということですよね。(ptrを使わなくても)
「読み込んだ単語は全部ツリーにコピーされてるわけだから、
それと別に保存しておく意味はないだろ」ということをいってるんだが、
伝わってるかな。


605 名前: デフォルトの名無しさん 投稿日: 01/12/22 02:56
>>561
>> Node root={"\0",0, NULL, NULL};
>空の単語も全部これにカウントすることになるが、それは意図的なもの?
>Node *root = NULL;でnodeは要らないはず。
>>601とは違う理由だけど、おれは*rootは初期状態でノードを指してる
のがいいと思う。
たとえばリストの場合
LIST* p; p=root; //書いてないところは想像してね
while(p->next != NULL) p=p->next; // これでケツまで行ける
ってかんじで、root==NULLの判定をしなくていいからすっきり。


606 名前: ぽてと=150 投稿日: 01/12/22 03:05
>>604
おかげで完成させることが出来ました。
ちゃんと動きますよ!一応アルファベット順に並んでますし。
たしかにポインタ配列に単語を指させたアドレスを全部ぶちこんでおくのは
無駄、というか無意味でしたね。せっかく二分木作ってるのに。
(というか、そのために二分木を作っていたんですね…鬱氏)

なんかはっと気づくことが出来たような気がします。
まだまずいところとかありましたら教えて下さい。


607 名前: Kusakabe Youichi 投稿日: 01/12/22 03:28
In article >>590, デフォルトの名無しさん/sage/590 wrote:
> ファイルが何をオープンするというのでしょうか?

ちゃんと辞書をひきましょう。(まさか自動詞の意味をしらないとか?^^;)


608 名前: Kusakabe Youichi 投稿日: 01/12/22 03:28
In article >>592, デフォルトの名無しさん/sage/592 wrote:

> 小人さんがせっせと

そのエサはどうするのですか?


609 名前: Kusakabe Youichi 投稿日: 01/12/22 03:29
In article >>595, デフォルトの名無しさん/sage/595 wrote:

> ワイルドかーどはだれが展開しているかを考えましょう〜
> でも、考えてわかることじゃないから、答えは出ないですぅぅ
> 考えてわかる事と、調べないとわからないことは、ちゃんと区別しましょう。

いえ、これは調べる前にまず考えることです。


610 名前: Kusakabe Youichi 投稿日: 01/12/22 03:29
In article >>597, 本当に親切な人/sage/597 wrote:
> こうだよ。
> for(i=0;i<1000;i++) {
>  remove("C:\\test\\*.*")
> }
>
> 本当なら、1000回ループではなくて、ディレクトリにある

ぼけ。


611 名前: 239 投稿日: 01/12/22 03:30
>>606
コンパイル通らんぞ(藁。
word008.c: In function `main':
word008.c:78: `j' undeclared (first use in this function)
word008.c:78: (Each undeclared identifier is reported only once
word008.c:78: for each function it appears in.)

while ((c=getchar())!=EOF)に関してはここを読め。
http://www.catnet.ne.jp/kouno/c_faq/c12.html#1

>   else if (i==0){/*英文字でなく、なおかつ以前も英文字でなかった時*/
>      ;
>   }
ふつーこういうのは条件を逆にするだろ。

>   else{ /*英文字でなく、なおかつ前が英文字であった時*/
コメントが分かりづらい。要するに単語の終り?
何をやってるかとか直接の条件なんてのは、コードを読めば分かることだから、
コメントにはコードの意図を書いたほうがいい。

feof()してからfgetc()してるのは…うーん、これのおかげで英字で終ってる
ファイルでも正しく扱えてるんだが、そこまで考えてる?

あとはまぁ、tempのオーバーフローのチェックとか、Node::wordを可変長にす
るとか、argvからファイル名を取るようにするとか、そんなとこかな。


612 名前: 239 投稿日: 01/12/22 03:45
>>605
そうすると今度はtraverseNode()で判定が必要になりそうなので、場合に依り
けりでは。少なくとも、addNode()は再帰を使ってきれいにまとまってると思
うし。

ついでにいうと、ケツを探すということに関しては、
LIST *root, **p = &root;
while (*p) p = &(*p)->next;
という書き方もできる。


613 名前: デフォルトの名無しさん 投稿日: 01/12/22 04:40
質問があります。
C言語でモニタのガンマ値を取得することは可能なのでしょうか?
JAVAだとあるんですけど。
どうしてもその方法がみつかりません。
知ってる方がいたら教えていただけないでしょうか。


614 名前: デフォルトの名無しさん 投稿日: 01/12/22 05:03
例えば、 “01gate”のような数字と文字列が混じったものから、
数字だけを美しく取り出す方法を教えて下さい。


615 名前: デフォルトの名無しさん 投稿日: 01/12/22 06:11
>613
Java厨ですか?
>614
VB厨ですか?
>615
冬厨ですか?


616 名前: デフォルトの名無しさん 投稿日: 01/12/22 06:14
>>614
sscanf


617 名前: デフォルトの名無しさん 投稿日: 01/12/22 06:33
>>616
ありがとうございました
恥ずかしいかぎりです,Cは数年ぶりなんで



618 名前: デフォルトの名無しさん 投稿日: 01/12/22 08:50
>>613
スレ違い。激しく環境に依存する。


619 名前: 605 投稿日: 01/12/22 10:18
>>612
二進木の場合はあてはならないのはわかったよ、さんきゅ。

にしても
>LIST *root, **p = &root;
>while (*p) p = &(*p)->next;
でもいい、っていうなら、
traverseNode(node->left);
traverseNode(node->right);
でいいじゃんって言いたくなるけどね。


620 名前: 612 投稿日: 01/12/22 12:24
>>619
うーん、正確じゃなかったかな。612の例は、むしろケツの
要素というよりは、末尾に追加するときのポインタの位置を
探すコードだから。

本当に最後の要素を探したいなら、確かに605のようにしな
いとまずい。だとしても、見付からなかったときは別扱いが
必要のような気がするけど。rootを使うかNULLを使うかの違
いだけで。


621 名前: 初心者 投稿日: 01/12/22 12:34
あのー、Pro*cの中にPL/SQLを記述することは可能
なのでしょうか??
初心者なもので、すいません。。。


622 名前: デフォルトの名無しさん 投稿日: 01/12/22 12:47
外部変数を関数の引数で渡しているソースを見たのですが、
これは何か意味があるのでしょうか?


623 名前: デフォルトの名無しさん 投稿日: 01/12/22 12:51
>>622
たまに内部変数を渡したりも出来るように。


624 名前: デフォルトの名無しさん 投稿日: 01/12/22 12:58
C++で
cout << a << ' ';の' 'ってどういう意味ですか?


625 名前: デフォルトの名無しさん 投稿日: 01/12/22 13:14
>>624 スレ違い。
Cだと' 'は(asciiの場合)32のことだ。


626 名前: デフォルトの名無しさん 投稿日: 01/12/22 13:19
>>625
空白文字


627 名前: 624 投稿日: 01/12/22 14:54
ありがとうございました。


628 名前: デフォルトの名無しさん 投稿日: 01/12/22 15:15
出力結果はどうなるか。

#include <stdio.h>
int main(void)
{
char a;
char *b;
char **c;
char ***d;
char ****e;
char *****f;

b=&a;
c=&b;
d=&c;
e=&d;
f=&e;

*****f=5;

printf("%d",a);
}


629 名前: デフォルトの名無しさん 投稿日: 01/12/22 15:18
5


630 名前: デフォルトの名無しさん 投稿日: 01/12/22 16:44
switchのdefaultでexitしたとき、breakは書かなくてもいい?

switch( age )
{
case 1:
 break;
default:
 printf( "えらー" );
 exit(1);
 break;
}


631 名前: デフォルトの名無しさん 投稿日: 01/12/22 16:50
default の break は書いても書かなくてもいいが、漏れは書く。


632 名前: デフォルトの名無しさん 投稿日: 01/12/22 16:52
exitが失敗する可能性がある処理系だったら
break付けておいた方がいいかもな(藁


633 名前: デフォルトの名無しさん 投稿日: 01/12/22 16:53
むしろ、defaultにbreakを書くか、書かないかではなく、
exitの後にbreakを書くか、書かないか、という話では。

exitなら、書くかなぁ。returnとかだと、書かないけど。


634 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:02
つまんねー質問なんだけど
たとえば int型の足し算で桁あふれ起こしたとき
キャリーオーバーはどうやって検出する?


635 名前: Kusakabe Youichi 投稿日: 01/12/22 17:11
In article >>630, デフォルトの名無しさん/630 wrote:

> switchのdefaultでexitしたとき、breakは書かなくてもいい?
>
> switch( age )

switchにくっつけるくせに、内側は空けるのか :)

# 入門用に選んだ本がはずれだったのだろうか?


636 名前: Kusakabe Youichi 投稿日: 01/12/22 17:12
In article >>631, デフォルトの名無しさん/631 wrote:

> default の break は書いても書かなくてもいいが、漏れは書く。

これはデマですね > default の break は書いても書かなくてもいい

# 本気にする人がいるので念のため。


637 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:13
>>634 足す前より値が小さくなったらキャリーオーバと判定する
unsigned add(unsigned a, unsigned b)
{
  unsigned c = a + b;
  if (c < a || c < b) throw overflow();
  return c;
}


638 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:25
>>636
>これはデマですね > default の break は書いても書かなくてもいい

作法として?文法として?


639 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:30
>>638
文法として。書かなくてもいいのは最後のcase/default。


640 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:31
何をもっていいとか悪いと言うかは知らないが、必要じゃなくてもdefaultにはbreak
は書いておくようにすすめます(とK&Rには書いてあった)


641 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:36
>>639
それって作法って言うんじゃないの?
Cの言語仕様に基づく文法?


642 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:48
 最後じゃないcaseにbreakを付けなくても、別にコンパイルエラーは
おこらないとは思うけど。警告とか出る?


643 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:55
今、結城 宏の
C言語プログラミング レッスン 文法編
の第9章 制御の流れ
の183ページを読んでるんだけど、
<quote>
 最後のbreak文は不要ですが、プログラミングスタイルとしてはあったほうが安全です
</quote>
と書いてあります。


644 名前: デフォルトの名無しさん 投稿日: 01/12/22 17:56
>>641,642
たしかにbreakはまったく書かなくても文法的には正しい。
意味が変わってもいいというならだが。


645 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:04
くさかべセンセーもたまには間違えるんだね。


646 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:06
>>645
だねだね。


647 名前: Kusakabe Youichi 投稿日: 01/12/22 18:13
In article >>638, デフォルトの名無しさん/sage/638 wrote:

> >>636
> >これはデマですね > default の break は書いても書かなくてもいい
>
> 作法として? 文法として?

「文法として」は「書かなくても書いても同じ」なわけはないですから。

もしかしてこの2人はどちらも「defaultは最後に書く」ことを
前提にしていないだろうか? (^^;


648 名前: Kusakabe Youichi 投稿日: 01/12/22 18:14
In article >>640, デフォルトの名無しさん/640 wrote:

> 何をもっていいとか悪いと言うかは知らないが、必要じゃなくてもdefaultにはbreak
> は書いておくようにすすめます(とK&Rには書いてあった)

ちゃんと読み直せ。


649 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:16
よーするに、センセーは
「defaultが最後に置かれるとは限らないから、breakを省略してもよいとは言えない」という意味で言ったんだ
といーたいらしーが、だったら最初からそういえ。
「ボクはこういうつもりで言ったんだ」
とかデンパ飛ばすな。
まったくコミュニケーション能力ゼロだな。
(ということにしたい)


650 名前: 638 投稿日: 01/12/22 18:18
>>647
>「文法として」は「書かなくても書いても同じ」なわけはないですから。

「同じ」かどうかなんて話どこから出てきたの?:)


651 名前: Kusakabe Youichi 投稿日: 01/12/22 18:18
In article >>645, デフォルトの名無しさん/645 wrote:

> くさかべセンセーもたまには間違えるんだね。

どう間違えたのですか?


652 名前: Kusakabe Youichi 投稿日: 01/12/22 18:21
In article >>649, デフォルトの名無しさん/649 wrote:

> よーするに、センセーは
> 「defaultが最後に置かれるとは限らないから、breakを省略してもよいとは言えない」という意味で言ったんだ
> といーたいらしーが、だったら最初からそういえ。

は?

そうじゃなくて「defaultのbreakは書いても書かなくても同じ」ってのは
「デマだ」って言っただけですよ?


653 名前: Kusakabe Youichi 投稿日: 01/12/22 18:25
In article >>650, 638/sage/650 wrote:
> >「文法として」は「書かなくても書いても同じ」なわけはないですから。
>
> 「同じ」かどうかなんて話どこから出てきたの?

べつにどこからでてきたわけでもないですよ。そこにあるだけで。

学習の途中で「何でもおしえる」のは良くないので、
適切な教え方をするべきで、誤って勘違いしているのもあえて自分で考え
させる場合も多いですが、「あきらかな誤り」だけは、さすがに
「それはちがいます」とだけ言っておかないと、複数人のときに
それをそのまま信じちゃうひともいますからね。

「switch末尾のbreak」をどうするべきかは117ペイジに詳しく解説
されていますが、

ここではそうではなく「defaultラベルのところのbreakは書いても書かなくてもよい」
は明らかな間違いであることを指摘しただけです。(そこで「なぜ?」と考えることが
重要)。


654 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:25
>>652
>そうじゃなくて「defaultのbreakは書いても書かなくても同じ」ってのは
>「デマだ」って言っただけですよ?

そう言ってるようには読めないけど?


655 名前: 650 投稿日: 01/12/22 18:28
>>653
>ここではそうではなく「defaultラベルのところのbreakは書いても書かなくてもよい」
>は明らかな間違いであることを指摘しただけです。(そこで「なぜ?」と考えることが
>重要)。

ですから、それが「作法」としてなのか「文法」としてなのかを聞いたわけです。


656 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:30
>「switch末尾のbreak」をどうするべきかは117ペイジに詳しく解説

なんの本の117ページだよ。
コミュニケーション能力ゼロだな
(ということにしたい)


657 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:32
>>656
>なんの本の117ページだよ。

本とは限らないですよ。
『117ペイジ』というモノなのでしょう。きっと。


658 名前: Kusakabe Youichi 投稿日: 01/12/22 18:33
In article >>654, デフォルトの名無しさん/sage/654 wrote:

> >>652
> >そうじゃなくて「defaultのbreakは書いても書かなくても同じ」ってのは
> >「デマだ」って言っただけですよ?
>
> そう言ってるようには読めないけど?

「読めないことにしたい」だけですか? :)

ほんの何十分か前の発言なので再掲すると...

> > default の break は書いても書かなくてもいいが、漏れは書く。
> これはデマですね > default の break は書いても書かなくてもいい
> # 本気にする人がいるので念のため。

ですから
「defaultのbreakは書いても書かなくても同じ」ってのは「デマだ」って言っただけ
は正しいのでは?

そう「読めない」ってのはただの希望ですか?:)


659 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:33
case 文の、default: が、最後にある限り、default: に
break を書いたところで、なんの意味もない。

文法がどうのこうの言ってる馬鹿がいるが、書かないことによる
問題点でも指摘しない限り、これ以上相手不要。
fj で、また笑い物になることであろう。


660 名前: Kusakabe Youichi 投稿日: 01/12/22 18:34
In article >>656, デフォルトの名無しさん/sage/656 wrote:

> >「switch末尾のbreak」をどうするべきかは117ペイジに詳しく解説
>
> なんの本の117ページだよ。

そんなことはあなたに聞いていません。

> コミュニケーション能力ゼロだな

「ということにしたい」のですか? :)


661 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:35
書けばいいじゃん>break


662 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:35
つまんねー質問なんだけど
たとえば int型の足し算で桁あふれ起こしたとき
キャリーオーバーはどうやって検出する?


663 名前: Kusakabe Youichi 投稿日: 01/12/22 18:36
In article >>659, デフォルトの名無しさん/659 wrote:

> case 文の、default: が、最後にある限り、default: に
> break を書いたところで、なんの意味もない。

それはcaseだって同じでしょ > 最後にある限りbreak を書いたところで意味は少ない
(同じコードがでる)

逆に言えば「defaultだから」ってことはないわけです。
途中にあれば意味はかわってくるわけですので。


664 名前: 652 投稿日: 01/12/22 18:37
>>658
>そう「読めない」ってのはただの希望ですか?:)

希望じゃなくて、事実「読めない」だけですよ。

あなたは、
「書いても書かなくてもいい」を「書いても書かなくても同じ」
にしたいのですね。

そうならそう書けばいいのに。:)


665 名前: Kusakabe Youichi 投稿日: 01/12/22 18:38
In article >>661, デフォルトの名無しさん/sage/661 wrote:

> 書けばいいじゃん> break

switch文の末尾に...話題だったら、117ペイジに書いてある通りですね(書くかどうか)。

「defaultラベルのところのbreak」が、「書いても書かなくても同じ」っての
については「デマ」だと述べました。


666 名前: Kusakabe Youichi 投稿日: 01/12/22 18:39
In article >>662, デフォルトの名無しさん/662 wrote:

> つまんねー質問なんだけど
> たとえば int型の足し算で桁あふれ起こしたとき
> キャリーオーバーはどうやって検出する?

「キャリーオーバーを検出」って意味不明ですね。

「桁あふれが起きたことを検知」することを言っているのか、
「キャリーオーヴァー分がどれだけかを知りたい」のか


667 名前: Kusakabe Youichi 投稿日: 01/12/22 18:40
In article >>664, 652/sage/664 wrote:

> >>658
> >そう「読めない」ってのはただの希望ですか?:)
>
> 希望じゃなくて、事実「読めない」だけですよ。

おや、もう一回引用しましょうか? :)


668 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:40
>>665

お前って引用するときにコピーしないんだな。いちいち手書きしているのか。
(>じゃなくて>が正しい。)


669 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:41
>switch文の末尾に...話題だったら、117ペイジに書いてある通りですね(書くかどうか)。

だからどの本の117ページに書いてあるんだよ?
世の中にCの本は1000種類ほど(当社調べ)出てるんだから、本の名前を指定しないと相手に伝わらないだろ。
まったく言語中枢麻痺してんのかね。
(ということにしたい)


670 名前: くさきゃう゛ぇ 投稿日: 01/12/22 18:42
いなーてぃくる >>669

作って分かるCプログラミングに決まっているだろう!!


671 名前: 658 投稿日: 01/12/22 18:42
>>667
>おや、もう一回引用しましょうか? :)

引用してください。


672 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:42
700ゲット


673 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:43
>>670
勝手に推測しないでね。


674 名前: Kusakabe Youichi 投稿日: 01/12/22 18:43
In article >>669, デフォルトの名無しさん/sage/669 wrote:

> >switch文の末尾に...話題だったら、117ペイジに書いてある通りですね(書くかどうか)。
>
> だからどの本の117ページに書いてあるんだよ?

ですから、あなたには聞いていません。


675 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:45
>>674
>> だからどの本の117ページに書いてあるんだよ?
>ですから、あなたには聞いていません。

聞いているのではなく、聞かれていますよ。:)


676 名前: Kusakabe Youichi 投稿日: 01/12/22 18:45
In article >>668, デフォルトの名無しさん/668 wrote:
> お前って引用するときにコピーしないんだな。いちいち手書きしているのか。

なんてことを書いても ごまかせませんよ :)


677 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:46
日下部祭りやめろよ。
放置すれば奴がレスしないってのはマ板で証明済み。


678 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:47
で、沖縄インターネット協議会の方々からはどのくらい白い目で見られましたか?


679 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:47
>>677
スマソ、趣味なので。


680 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:47
>>677

レス専用共用ハンドルだしな。


681 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:48
>>679

ワラタ


682 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:48
>ですから、あなたには聞いていません。

聞いてるとかきーてないとかの問題じゃないんだよ。
ここはパブリックな場なの。 email で個人的なやりとりをする場しゃないの。
ここはプログラム板なの。技術板なの。
なんか発言するときは、確実なソースを示すのがルールなの。
おみゃーが117ページに書いてありますぅ、っていってるから、こっちは、その本を確認して裏を取りたいの。
本の題名言えないなら、ネタとして処理するぞ。

ネタ発言したいときは、プログラマー板ってものがちゃんと用意されてるから、そっちにいきな。


683 名前: Kusakabe Youichi 投稿日: 01/12/22 18:48
In article >>664, 652/sage/664 wrote:
> > そう「読めない」ってのはただの希望ですか?:)
> 希望じゃなくて、事実「読めない」だけですよ。

そうですか? 読めない「ことにしたい」としか思えませんけど;)

: これはデマですね > default の break は書いても書かなくてもいい
: # 本気にする人がいるので念のため。

これが、

: > そうじゃなくて「defaultのbreakは書いても書かなくても同じ」ってのは
: >「デマだ」って言っただけですよ?
:
: そう言ってるようには読めないけど?

そう「読めない」としたら、「どう読める」のかを知りたいですね :)


684 名前: Kusakabe Youichi 投稿日: 01/12/22 18:49
In article >>670, くさきゃう゛ぇ/sage/670 wrote:
> 作って分かるCプログラミングに決まっているだろう!!

確認したのですか? > そのペイジに載っているかどうか


685 名前: Kusakabe Youichi 投稿日: 01/12/22 18:49
In article >>678, デフォルトの名無しさん/678 wrote:

> で、沖縄(I課整発貯ぢ協議会の方々からはどのくらい白い目で見られましたか?

文字化けしてますよ。


686 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:49
それともハブに噛まれて中枢神経マヒしてるってうわさは本当だったのか
(ということにしたい)


687 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:49
>>668
記号とか英数は、自動的に変換されるツールを使用してると思われ。


688 名前: Kusakabe Youichi 投稿日: 01/12/22 18:50
In article >>682, デフォルトの名無しさん/sage/682 wrote:

> >ですから、あなたには聞いていません。
>
> 聞いてるとかきーてないとかの問題じゃないんだよ。

なるほど。じゃあ問題ではないのですね。


689 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:52
>>685
文字化けしているところはOIAの事ですよ。
文章から類推することが出来ると思ったのですが。

で、お返事は?


690 名前: あぼーん 投稿日: あぼーん
あぼーん


691 名前: 664 投稿日: 01/12/22 18:54
>>636
>これはデマですね > default の break は書いても書かなくてもいい

って書いたよね。それが、

>>683
>: > そうじゃなくて「defaultのbreakは書いても書かなくても同じ」ってのは
>: >「デマだ」って言っただけですよ?

と変わっている。

>そう「読めない」としたら、「どう読める」のかを知りたいですね :)

「書かなくてもいい」と「書かなくても同じ」は違うよね?
わかるかな?:)


692 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:55
やーっぱ、くさかべは、一生地方のコーダーで終わりそうだな。
コンピューターと同化しちゃってて、まともに人間とコミュニケーション取れないし。
(ということにしたい)


693 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:55
In article

:)←これ何?


694 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:55
おい!陽一、おまえ! 何やってんだこんなところで!
もういい、おまえちょっとメロンパン買って来い!!


695 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:56
>>693
>:)←これ何?

文字化け。本人の公式見解。


696 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:57
>>692
でも儲けてるからうらやましい。


697 名前: デフォルトの名無しさん 投稿日: 01/12/22 18:58
>:)←これ何?

それはスマイリーといって、核心を突かれてあせっているときに、
「俺様はこんなに心に余裕があるんだよ」
ということを装いたいときに使います。
(ということにしたい)


698 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:00
>>697

スマイリーて:-)←こうじゃなかった?亜種?:)


699 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:00
>>697
>それはスマイリーといって、核心を突かれてあせっているときに、

そうだったのか。使うの控えよう。:)


700 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:00
>>696
うらやましいよな。
自然豊かな場所で仕事しながら、仕事はネット経由でばりばり最先端。
あこがれちゃうよ。


701 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:01
>>700

こんなところで騙られていることなんて気にもとめないところがカコイイ!!


702 名前: Kusakabe Youichi 投稿日: 01/12/22 19:03
In article >>702, デフォルトの名無しさん//701 wrote:

> >>700

> こんなところで騙られていることなんて気にもとめないところがカコイイ!!

ということにしたいのですね?:)


703 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:05
オイこら! 陽一! おまえ 外にでるなっていっただろ!
けいこの味噌汁辛すぎるんだよ!! ちゃんとちゅういしとけよ!!


704 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:06
>>702
> > こんなところで騙られていることなんて気にもとめないところがカコイイ!!
> ということにしたいのですね?:)

藁田。
騙られていることを気にとめていることにしよう。


705 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:06
>>702

文字化けしてないじゃん。まったく!


706 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:08
>>705 ワラタ


707 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:08
陽一の書いたコード見てぇな
書籍のサンプルじゃないやつどっかあるか?
さがすのめんどくせぇからポインタくれ


708 名前: クサカーベ 投稿日: 01/12/22 19:09
>>707

117ページに書かれています。


709 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:10
>>707
彼は丘プログラマーですから、コードなどないのでは?


710 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:11
だからどの本の117ページなんだよ!
てめぇは郵便だすときに
「やまださんの家」
とだけ書いてだすのかゴルァ


711 名前: 日下部名無しさん 投稿日: 01/12/22 19:12
>>710

デフォルトという言葉を知らないのですね?:)


712 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:16
次の二つについて1000文字以内で論ぜよ。
(1)日曜の朝は【デフォルト】でコメットさんを見ます。
(2)コメットさんが【デフォルト】になりました。


713 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:16
ヲッチャーは見てるだけにして、クサカベにネタを振るな、コラ!
また延々と、ソウオモイタイ、ハツミミデス、発言が続くだけだろ。


714 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:17
しっかし、なんで本の名前くらい書かないんだ?
書けばすむのに。


715 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:19
>>712
デフォルトの使い方が間違っています。
私ならこのように使います。

(1)日曜の夕方は【デフォルト】でだぁ!だぁ!だぁ!を見ます。
(2)だぁ!だぁ!だぁ!さんが【デフォルト】になりました。


716 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:19
>>714
本ではありません。
『117ペイジ』というモノに書いてあります。


717 名前: 日下部名無しタン 投稿日: 01/12/22 19:19
>>714

面倒という言葉を知らないのですね?:)


718 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:21
>>715
(2)は名塚佳織が自己破産したということでしょうか?


719 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:22
センセイの場合、面倒というより、脳梁がせまくて情報伝達がうまくいってないのでは?
(とはつみみですがおもいたい)


720 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:22
急にカキコが途絶えたね。
俺とおなじで「これマジ」のスカイフィッシュが気になって仕方ないのか?


721 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:24
>>719
キチガイですから、脳が物理的な損傷を受けている可能性は高いですね。


722 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:24
>>720

ということにしてみたら? :)


723 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:24
>>720
モー娘。を見ろーーーーーー!


724 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:24
>>717
 何か本の名前を書くのと、「本の名前かけー」という人に煽り返す
のと比べると、後者の方が面倒だと思うのだが。


725 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:25
>>720
> 急にカキコが途絶えたね。

反論できなくなったからです。
#と煽れば、またきてくれるかな:)


726 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:26
>>725
来んでええ。


727 名前: Kusokabe Youichi 投稿日: 01/12/22 19:27

完敗です。m(_ _)m
もう二度と書き込まないことを誓います。


728 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:32
>>727

breakの使い方なんて、だれでも間違うことあるよ。
気にするな。元気出せ。


729 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:33
>>728

Kus"o"kabeになってるじゃん。
メール欄も変だし


730 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:34
日下部と日下部叩きはマ板に逝ってくれないか?


731 名前: 728 投稿日: 01/12/22 19:37
>>729
>Kus"o"kabeになってるじゃん。

そのことを折れに指摘してどうしたいの?


732 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:53
つまんねー質問なんだけど
たとえば int型の足し算で桁あふれ起こしたとき
キャリーオーバーはどうやって検出する?

>>666
桁あふれが起きたことを検知する方法はあるの?

キャリーオーバー分がどれだけか は
桁あふれが起きたことを検知できれば
なんとかなるし


733 名前: Kusakabe Youichi 投稿日: 01/12/22 19:55
In article >>691, 664/sage/691 wrote:
> >これはデマですね > default の break は書いても書かなくてもいい
>
> って書いたよね。それが、

> >: > そうじゃなくて「defaultのbreakは書いても書かなくても同じ」ってのは
> >: >「デマだ」って言っただけですよ?
>
> と変わっている。
>
> >そう「読めない」としたら、「どう読める」のかを知りたいですね :)
>
> 「書かなくてもいい」と「書かなくても同じ」は違うよね?
> わかるかな?

そうではなく、「じゃあどう読めるのか?」を質問したのですか?


734 名前: Kusakabe Youichi 投稿日: 01/12/22 19:56
In article >>692, デフォルトの名無しさん/sage/692 wrote:

> やーっぱ、くさかべは、一生地方のコーダーで終わりそうだな

いいなー


735 名前: Kusakabe Youichi 投稿日: 01/12/22 19:56
In article >>693, デフォルトの名無しさん/693 wrote:
> :)←これ何?

括弧とじでは?


736 名前: デフォルトの名無しさん 投稿日: 01/12/22 19:56
>>732

AとBを足したとき
答えがA(またはB)よりも小さければ
キャリーが出てる。


737 名前: Kusakabe Youichi 投稿日: 01/12/22 19:57
In article >>707, デフォルトの名無しさん/sage/707 wrote:

> 陽一の書いたコード見てぇな

買えばいいのに。


738 名前: Kusakabe Youichi 投稿日: 01/12/22 19:57
In article >>711, 日下部名無しさん/711 wrote:
> デフォルトという言葉を知らないのですね?

債務不履行のことでしょ?


739 名前: Kusakabe Youichi 投稿日: 01/12/22 19:58
In article >>730, デフォルトの名無しさん/sage/730 wrote:

> 日下部と日下部叩きはマ板に逝ってくれないか?

っていうか私は特に問題のあることを書いているわけじゃあないですね。


740 名前: Kusakabe Youichi 投稿日: 01/12/22 20:00
In article >>731, 728/sage/731 wrote:
> > Kus"o"kabeになってるじゃん。
>
> そのことを折れに指摘してどうしたいの?

2人分書いて「こうなればいいなあ」と「希望」を示したことが
理解されなかったのでは?

そういう場合は名前を変えておくとかじゃなくって、右下とかに「(希望)」って
書いておけば勘違いする人もいなくなるのでは?


741 名前: 691 投稿日: 01/12/22 20:00
>>733
>そうではなく、「じゃあどう読めるのか?」を質問したのですか?

『そう』と『「じゃあどう読めるのか?」』がどの部分を
指しているのかを説明してもらえますか?
「質問したのですか?」と言われても答えようがありません。


742 名前: 712 投稿日: 01/12/22 20:02
>>738
>債務不履行のことでしょ?

そういうことです。


743 名前: Kusakabe Youichi 投稿日: 01/12/22 20:06
In article >>741, 691/sage/741 wrote:

> >>733
> >そうではなく、「じゃあどう読めるのか?」を質問したのですか?
>
> 『そう』と『「じゃあどう読めるのか?」』がどの部分を
> 指しているのかを説明してもらえますか?

「そうは読めない」の代わりの部分ですが?


744 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:09
>>743
頼む、マ板に逝ってくれ!


745 名前: 731 投稿日: 01/12/22 20:10
>>740

>>731の意図としては
「Kusokabe Youichiに名前の似ている人」にとって
>>728のような発言をされたら惨めだろう
と思って書き込んだのですが
>>729が、>>731の発言の対象を「マジで」勘違いしている
と勘違いしたので、訂正を促す意味で書いたまでです。


746 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:12
>>736
unsigned ならそれでいいんだけど・・・

あーちょっと待って!
なんかいいロジックが思いつきそう・・・!

ヒントサンクス!


747 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:14
>>745見苦しい


748 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:15
おいクソカベ、料理板でお前の好きなシーチキンとスパゲッティの
ネタが出てるぞ。気分転換にレスつけてこいよ。


749 名前: 745 投稿日: 01/12/22 20:15
>>747
すまんすまん。


750 名前: Kusakabe Youichi 投稿日: 01/12/22 20:17
In article >>748, デフォルトの名無しさん/sage/748 wrote:

> おい(I舷桐泗ぢ、料理板でお前の好きなシーチキンとスパゲッティの
> ネタが出てるぞ。

文字化けしてますよ。


751 名前: 741 投稿日: 01/12/22 20:17
>>743
>「そうは読めない」の代わりの部分ですが?

質問してるの?:)


752 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:19
>>746
signed でも問題ないと思うが。


753 名前: 736 投稿日: 01/12/22 20:20
>>752
だよね。


754 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:20
>>750
オマエ ニセモノ ダロ?
ホンモノハ ハンカクカタカナ チャント ヨメテルゾ


755 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:20
>>751
いい加減に帰るかコテハン使ってくれ(ホットゾヌの NG ワードに登録するから)


756 名前: 751 投稿日: 01/12/22 20:23
>>755
御意。

ミイラ取りがミイラになってしまった。
コテハンは何がいいと思う?


757 名前: IQ低いかも 投稿日: 01/12/22 20:25
unsinged charの場合
255+1=256 → 0

signed char の場合
-127-127=-254 → 2

足し算の場合、もとよりも小さくなってたら
引き算の場合、もとよりも大きくなってたら
キャリーオーバー

かな?


758 名前: 投稿日: 01/12/22 20:26
>>756
ここでやらないで


759 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:36
>>757
正の数を足して小さくなったらキャリー発生
負の数を足して大きくなったらボロー発生
でいいんじゃない?


760 名前: 756 投稿日: 01/12/22 20:39
>>758
やめるように努力する。


761 名前: Kusakabe Youichi 投稿日: 01/12/22 20:40
In article >>751, 741/sage/751 wrote:
> >「そうは読めない」の代わりの部分ですが?
>
> 質問してるの?:)

そんなこと書いてもごまかせませんよ。


762 名前: Kusakabe Youichi 投稿日: 01/12/22 20:41
In article >>756, 751/sage/756 wrote:
> ミイラ取りがミイラになってしまった。

っていうか最初からあらしているのはそのひとりでは?


763 名前: 751,756 投稿日: 01/12/22 20:46
>>761
>>762
ここで君の相手をしてあげることはできなくなりました。
ごめんね。機会があれば、また別のところでやりましょう。


764 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:46
Cの話をしてください。


765 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:51
>>764
でも、このスレって
「Cハッカー日下部陽一」に聞く
スレッドなんだね(^^;


766 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:53
次スレの1は脱くさかべキボンヌ。


767 名前: デフォルトの名無しさん 投稿日: 01/12/22 20:56
>>766
そのためにKusakabe Youichiを煽って素早く1000を目指す
っていうのは、やっぱだめ?


768 名前: Kusakabe Youichi 投稿日: 01/12/22 21:01
In article >>763, "751,756/sage/763" wrote:
> ここで君の相手をしてあげることはできなくなりました。

っていうか、相手してもらえると勝手に勘違いしてのこのこあなたが
でてきただけのことでしょうに :)


769 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:04
ココって質問スレだよね・・・。教えてください。

reallocってどう?
mallocで取ったchar *pStrで
if((p = (char *)realloc(pStr, size)) == NULL){
ってやるとエラーになる。使い方ヘンですか?


770 名前: あぼーん 投稿日: あぼーん
あぼーん


771 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:09
独習Cで勉強しいるのですが、やはり紹介されている本で勉強したほうが
いいんでしょうか?あと、Cを覚えた後c++で格ゲー作りたいのですが、
可能でしょうか。房な質問ですいません。


772 名前: 763 投稿日: 01/12/22 21:09
>>768
もうネタ振りしないでよ。
反応したいけど迷惑になるみたいだからさ。

#と反応してしまう、折れも弱いな(藁


773 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:10
>>770
うぜ。


774 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:12
>>771
推薦図書/必読書のためのスレッド in プログラム板
http://pc.2ch.net/test/read.cgi/tech/1005897052/

推薦図書/必読書のためのスレッド7
http://pc.2ch.net/test/read.cgi/prog/1006353701/


775 名前: 769 投稿日: 01/12/22 21:12
>>771
独習Cは名著です。しっくりこなければ何冊か別のをあたってもいいでしょう。
Cを覚えた後C++覚えるのは順当です。核ゲー作りたいならDirectXも読みましょう。
核ゲーの作り方はその手の本を探そう。

それより俺の質問にも誰か答へて


776 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:13
>769
なんのエラー?


777 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:13
>>771
とりあえず、JAVAから入って、(JAVAがいいかどうかは別にして)
クラスを使ってプログラミングする癖をつけてから
C++に行くって言うのはどうでしょう?
CからC++に行くと、結局Cになっちゃうから。


778 名前: Kusakabe Youichi 投稿日: 01/12/22 21:14
In article >>771, デフォルトの名無しさん/771 wrote:

> 独習Cで勉強しいるのですが、やはり紹介されている本で勉強したほうが
> いいんでしょうか?

その本のどのへんが不満なんですか?


779 名前: Kusakabe Youichi 投稿日: 01/12/22 21:14
In article >>772, 763/sage/772 wrote:
> もうネタ振りしないでよ。
> 反応したいけど迷惑になるみたいだからさ。

わたしはねたふりなんかしてませんよ。

低能なくせにいちいち反応するなって。
(内容あること話せないくせに)


780 名前: 769 投稿日: 01/12/22 21:15
>>776
Win2000。
アクセスヴァイオレーション。
bcc32とVCの両方でメモリエラーが出るみたい・・・


781 名前: Kusakabe Youichi 投稿日: 01/12/22 21:16
In article >>775, 769/775 wrote:
> それより俺の質問にも誰か答へて

どんな質問ですか?


782 名前: 769 投稿日: 01/12/22 21:17
>>781
>>769で書いたヤツです。


783 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:18
>>779
>(内容あること話せないくせに)

たまには面白い事言うね。


784 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:19
>>783
> たまには面白い事言うね。

あまり面白くないような気もするけど。


785 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:20
>780
いま
Win98でやってみたけど、
おかしいとこないみたい
変数sizeは初期化してるよね?


786 名前: デフォルトの名無しさん 投稿日: 01/12/22 21:22
>>780
realloc() を呼んだ時点で保護違反を食らってるの? それは pStr の値が腐ってる気がするな。

環境がわからんが VC6 ならデバッグビルドにして

_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtIsValidHeapPointer();

あたりでヒープのチェックかけてみ。


787 名前: 769 投稿日: 01/12/22 21:24
>>785
うん。たぶん。
最初のmallocで取ったのが33バイト。次に33バイト必要なのでsize=66なんだけど・・・

>>786
やってみます。


788 名前: Kusakabe Youichi 投稿日: 01/12/22 21:32
In article >>782, 769/782 wrote:
> >>769で書いたヤツです。

どんなのだろう...。


789 名前: Kusakabe Youichi 投稿日: 01/12/22 21:32
In article >>783, デフォルトの名無しさん/sage/783 wrote:

> > (内容あること話せないくせに)
>
> たまには面白い事言うね。

まだしつこく反応してるし:)


790 名前: デフォルトの名無しさん 投稿日: 01/12/22 22:03
Cに行く前にやっぱりBのモミモミを先やらないとね。
あせっちゃ駄目だ。Aをネチネチで酔わせてから、ゆっくりボタンをはずせ。
そして丁寧に愛撫するんだ。そう、もうグッチョリヌレヌスキーになってきただろ。
さぁ、Cの出番だ。うまくじらして突きまくるのさ。


791 名前: Kusakabe Youichi 投稿日: 01/12/22 22:09
In article >>790, デフォルトの名無しさん/sage/790 wrote:

> Cに行く前にやっぱりBのモミモミを先やらないとね。

Bは参考文献がないからなあ。BCPLのも以前は書店にあったが、
最近は見かけない。


792 名前: Delフサギコ 投稿日: 01/12/22 22:32
|
|,,∧
|Д゚彡 ジー  
⊂ミ
| ,;゙  エロッ



793 名前: Delフサ名無しさん 投稿日: 01/12/22 22:50

|            ∧,,∧   あ・・・・・・ホットゾヌだから
|            ミ;゚Д゚彡  クサカベタンを見つけられなかった。
|            (ミ  ミつ
|           〜ミ  ミ   ・・・キーワード設定してたから・・・
|             ∪゙∪


|   ヒィ    トテテテテ・・・
|   ∧,,∧ 三
|  ミ゚Д゚,,彡 二  ≡
|   ⊂⊂ ミ 三 =  =
|    `@゙@ ー 二

|
|  サッ
|)彡
|
|
|

|コソーリ  
|,,∧
|Д゚彡 ジー  
⊂ミ
| ,;゙  マキコマレタクニャイ、、



794 名前: Error401 投稿日: 01/12/22 22:51
>>621
>あのー、Pro*cの中にPL/SQLを記述することは可能
>なのでしょうか??

微妙にスレ違いな気が。
無名PL/SQLブロックを入れることが出来るよ。

確か、
EXEC SQL EXECUTE 〜 END-EXEC;
だったと思う。

おそらくマニュアルに載ってると思うけど。
なければ、OTN Japanでダウンロード。


795 名前: デフォルトの名無しさん 投稿日: 01/12/22 23:08
Pro*C より OO4O の方が使いやすいよね。
エラー処理がしづらいけど。


796 名前: 769 投稿日: 01/12/22 23:20
>>785-786さん
ありがとうございます。解決しました。やはりpStrで取ったメモリを使った処理で
メモリの上限を越えてました。その瞬間にはエラーにならないのですが、これが
いわゆるヒープの不整合ってヤツなんですね。
この状態だと関係ないメモリのfree()までコケる事もあるみたいですね。
はずかしいのでsage


797 名前: デフォルトの名無しさん 投稿日: 01/12/23 02:36
いいアイデア欲しいんですが。

C/C++で、引数の数を可変にするには

foo( ... );

みたいにかけるじゃないですか。
じゃあ、呼び出し側が、
状況によって fooの引数の数を1個にでも10個にでも100個にでもしたい場合、
どう書いたらイイっすかね。

誰か知恵貸してくれると嬉しいんですが。
(stdcallの規約に従ってアセンブラでスタックに引数積むっていう手は考えたけど、
これだと汎用性が・・・・)


798 名前: デフォルトの名無しさん 投稿日: 01/12/23 03:02
va_listを渡すようにするか、
型が固定で単に可変長なだけなら配列で渡す。


799 名前: 239 投稿日: 01/12/23 03:15
定期連絡(藁。

細かいとこだけ。

> else if (!strcmp(str, p->word))
> p->count++;
> else if (strcmp(str, p->word)<0)
> p->left=addNode(p->left, str);
二回strcmp()する必要はない。

>  else if (!isalpha(c) && i>0){ /*単語を1つ読み終えたとき*/
ここはすでに!isalpha(c)なのは明らか。

まぁあとは、短い単語でも長い単語でもNodeでは一律64とっ
てしまうところとか、バッファオーバーフロー対策くらいだ
ろう。

feof()というのはfgetc()とかがEOFを返してからでないと真
にならない。つまり、0.08では必ず一回はc==(char)EOFでルー
プすることになるんだが、これは普通isalpha()ではないの
でたまたま番兵として働いてるということ。


800 名前: 797 投稿日: 01/12/23 03:23
関数の仕様自体は決まってて、
その関数を使いたいケースがマジで引数の型も個数も可変なんですよ。
だから配列は不可。

va_listって呼び出し元でも使えるの?だとするとちょい目から鱗なんだけど。
引数として渡すとちゃんと順番に全部スタックに積んでくれるのかしら。


801 名前: 797 投稿日: 01/12/23 03:27
どんなケースを想定しているかというと、
可変引数をサポートしているスクリプトエンジンをC++で書いてて、
スクリプトの内容によって、引数の型、個数など、あらゆる場合がありうる。
(んで、それを解釈・実行する可変引数の関数が1つ既に存在している。
そこに、スクリプトを分析して得たパラメータを全部一気に渡す。)


802 名前: 投稿日: 01/12/23 03:27
>>800
おれなら void型(Linuxなら慣例でunsigned longか)のポインタを渡すね。
受け取り側で適当な構造体なりなんなりをはめなおす。


803 名前: デフォルトの名無しさん 投稿日: 01/12/23 03:32
>>801 設計が悪いと思われ(w


804 名前: デフォルトの名無しさん 投稿日: 01/12/23 04:29
>>800,801
va_listは呼び出し元では使えない。
どういうデータを扱えるかにもよるが、>>802が一番妥当かも。
void*なりlongなりにキャストできるデータが前提、つまりおそらくdoubleや
構造体の値渡しはできないが。
あと、引数の数や型はどうやって渡すわけ?


805 名前: デフォルトの名無しさん 投稿日: 01/12/23 04:39
>>797
XML。


806 名前: デフォルトの名無しさん 投稿日: 01/12/23 05:01
>>801
AppleEventやITypeInfoを参考にしれ。


807 名前: デフォルトの名無しさん 投稿日: 01/12/23 08:36
crypt関数はunistd.hをインクルードしただけでは使えないんですか?


808 名前: デフォルトの名無しさん 投稿日: 01/12/23 08:51
>807
ココムだか暗号なんたらだかに引っ掛かって入ってない
適当に拾ってこい


809 名前: デフォルトの名無しさん 投稿日: 01/12/23 09:38
>>801

>(んで、それを解釈・実行する可変引数の関数が1つ既に存在している。
>そこに、スクリプトを分析して得たパラメータを全部一気に渡す。)

これはどうやって機能を実現してるの?


810 名前: デフォルトの名無しさん 投稿日: 01/12/23 12:59
>>809
それが実現できなくて悩んでると思われ。


811 名前: デフォルトの名無しさん 投稿日: 01/12/23 13:43
>>801
VBのバリアント型みたいな機能を持ったクラス自作するとかってのはどう?


812 名前: 801 投稿日: 01/12/23 13:45
>(んで、それを解釈・実行する可変引数の関数が1つ既に存在している。

これはすでに実現できていて

>そこに、スクリプトを分析して得たパラメータを全部一気に渡す。)

これが実現できなくて困ってるなり。
やぱーし仕様変えてもらおうかなぁ。


813 名前: 801 投稿日: 01/12/23 13:49
C/C++可変引数の関数って、呼び出された側は柔軟だけど、
呼び出し側は引数の数を決めたコーディングしかできないよな・・・。

まあでも、パラメータの数20個までとか制限付けちゃえば、
(現実に、そんな大量のパラメータをセットするヤツは居ないはず。)
残り全部をNULLでダミー送ってしまう手はあるな。ちょい無駄っぽいけど。

提案どうもありがとうございました>ALL
でも引き続きいい案がありましたら教えてください。


814 名前: 805 投稿日: 01/12/23 14:26
>>801
おいおい、オレの提案は無視かよ。


815 名前: デフォルトの名無しさん 投稿日: 01/12/23 14:41
>>813
残りがNULLでOKならvoid*の配列でいいじゃん。


816 名前: デフォルトの名無しさん 投稿日: 01/12/23 18:05
sqrt()に対して負の数を与えた時に返される値はどんなもので参照できるのですか?
もし記号定数があるのならば教えてください。


817 名前: 816 投稿日: 01/12/23 18:06
sqrt(-1)の戻り値を参照すればいいのですが、あまりよくないと思いますので。


818 名前: デフォルトの名無しさん 投稿日: 01/12/23 18:10
>>816
不定なので参照すべきものではないかと。


819 名前: デフォルトの名無しさん 投稿日: 01/12/23 18:14
>>816
エラー処理したかったら、_matherr()を定義するとか。


820 名前: デフォルトの名無しさん 投稿日: 01/12/23 18:14
>>818

不定ってそういうことだったんですか・・・てっきり処理系によって変わることかと・・・・
ありがとうございます。


821 名前: デフォルトの名無しさん 投稿日: 01/12/23 18:23
>>816
直接参照するんじゃなくてisnan()とか使う。

isnan(sqrt(-1.0)) != 0


822 名前: デフォルトの名無しさん 投稿日: 01/12/23 19:23
このスレって誰に聞けばいんですか?
とりあえず日下部陽一ではないことはわかるんですが・・・。


823 名前: デフォルトの名無しさん 投稿日: 01/12/23 19:36
>>822

掲示板で特定の人に聞くのはナンセンスです。
特定の人に聞きたいのなら電子メールを利用しましょう。


824 名前: Kusakabe Youichi 投稿日: 01/12/23 20:02
In article >>822, デフォルトの名無しさん/sage/822 wrote:

> このスレって誰に聞けばいんですか?

「俺」では? そう書いてあるし。


825 名前: ぜろ 投稿日: 01/12/23 21:06
あるファイルの1行のサイズを知りたいのですが、
その1行が長い場合があるため

fgets(s, fp)
linesize = sizeof(s);

みたいではなく、
#include<stdio.h>
int main(void) {
int linsize = 0;
FILE *fp;
fp = open("input.txt", "r");
while(fgetc(fp) != '\n')
linesize++;
printf("linesize : %d\n", linesize);
close(fp);
return(0);
}

としているのですが、うまくいかないことがあります。
なぜなのでしょうか?教えてください。


826 名前: Kusakabe Youichi 投稿日: 01/12/23 21:10
In article >>825, ぜろ/825 wrote:

> としているのですが、うまくいかないことがあります。

っていうか、なんでfgetcのにopenなの?


827 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:10
キャストって重要ですか?


828 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:12
>>825
よーわからんが、そのファイルって全行同じ長さなの?


829 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:13
>>827ケースバイケース、としか答えられない質問だよ、それは。


830 名前: ぜろ 投稿日: 01/12/23 21:14
>>826 さん
編集するときに間違えたようです。
>fp = open("input.txt", "r");
ではなく、
fp = fopen("input.txt", "r");
でした。


831 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:16
>>825
このwhile(fgetc(fp) != '\n') ってループしないの?


832 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:17
>>831
ごめん。見間違え。


833 名前: ぜろ 投稿日: 01/12/23 21:18
>>828 さん
いいえ。
ただ、1ファイルは必ず3行なのですが。


834 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:20
>>833このコードだと

>while(fgetc(fp) != '\n')
>linesize++;

は最初の行のサイズだけをカウントして、おしまいだよ。
2、3行目は無視してる。


835 名前: ぜろ 投稿日: 01/12/23 21:27
>>834 さん
ありがとうございました。無事解決できました。


836 名前: (゚д゚)ウマ- 投稿日: 01/12/23 21:46
C言語開始というかプログラム開始して1週間です。
void main() と void main (void) って一緒ですか?

マジれすを頂戴したい・・・


837 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:50
>836
いっしょ


838 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:51
>>827
使わなければどうにもならない場合は重要だし、
要らないキャストで混乱させられる場合も重要。


839 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:51
mainの戻り値ってvoidでいいの?


840 名前: (゚д゚)ウマ- 投稿日: 01/12/23 21:54
>>837
ありがとうございます


841 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:56
>>836
ちがう


842 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:57
voidでも動くが正しくはint


843 名前: デフォルトの名無しさん 投稿日: 01/12/23 21:58
>>839
ANSI C では次のように決められている

int main(void)
int main(int argc, char* argv[])
int main(int argc, char** argv)

argc とかの変数名は任意。


844 名前: Kusakabe Youichi 投稿日: 01/12/23 22:07
In article >>836, (゜д゜)ウマ-/836 wrote:
> void main() と void main (void) って一緒ですか?

> マジれすを頂戴したい・・・

19ペイジを読みましょう。


845 名前: Kusakabe Youichi 投稿日: 01/12/23 22:08
In article >>837, デフォルトの名無しさん/sage/837 wrote:
> > 836
> いっしょ

またこういうウソ教えるし:)


846 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:08
>>839

main()でいいんじゃない?省略したらint型と見ると決められているし。


847 名前: Kusakabe Youichi 投稿日: 01/12/23 22:08
In article >>842, デフォルトの名無しさん/sage/842 wrote:

> voidでも動くが正しくはint

またこういう嘘教えるし。


848 名前: (゚д゚)ウマ- 投稿日: 01/12/23 22:09
禿混乱


849 名前: Kusakabe Youichi 投稿日: 01/12/23 22:13
In article >>843, デフォルトの名無しさん/sage/843 wrote:
> ANSI C では次のように決められている

まず「ANSI C」とか言ってるあたりでまぬけ。(C89のことかなあ?)

> int main(void)
> int main(int argc, char* argv[])
> int main(int argc, char** argv)
> argc とかの変数名は任意。

こういうデマを平気でおしえるからなあ。


850 名前: Kusakabe Youichi 投稿日: 01/12/23 22:13
In article >>846, デフォルトの名無しさん/846 wrote:

> main()でいいんじゃない>? 省略したらint型と見ると決められているし。

昔はそうでしたね > 省略したらint
現在の標準規格ではちがいます。


851 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:15
さすがコーダーどもは説明がうまいな。
質問者があまりのわかりやすさに感激してるぞ。


852 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:15
>>844
>19ペイジを読みましょう。

どの19ペイジ?


853 名前: 846 投稿日: 01/12/23 22:15
>>850

おいてめぇ、"じゃない"と"?"の間には>なんて入れていないぞ。


854 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:15
>>852
目を合わせちゃダメ


855 名前: Kusakabe Youichi 投稿日: 01/12/23 22:21
In article >>852, デフォルトの名無しさん/sage/852 wrote:
> > 19ペイジを読みましょう。
>
> どの19ペイジ?

20ペイジの前のペイジです。


856 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:23
>>855
>20ペイジの前のペイジです。

どの20ペイジ?


857 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:47
tmpfile()で作成されるファイルは実行ファイルと同じディレクトリに作成されるんですよね? 


858 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:49
とりあえず、main の引数と戻り値をどう書くかってのは別にして、
関数を宣言するときに、引数リストを空にするのと、(void)にするのが一緒かってことなら、

C++では一緒。
(C++ では引数リストを省略すると (void) とみなされる)
C言語では最近の仕様はよく知らんけど、昔は違う意味になったはず。
(昔の仕様だと、引数リストを省略すると、 (int) と同じ意味になった)

じゃなかったっけ?


859 名前: デフォルトの名無しさん 投稿日: 01/12/23 22:51
>>858

intになったとして、どんな名前の仮引数に値が格納されるの?
そして、仮引数の個数は?
省略するとint型になるのは戻り値の型だと思う。


860 名前: Kusakabe Youichi 投稿日: 01/12/23 23:05
In article >>858, デフォルトの名無しさん/sage/858 wrote:
> C++では一緒。
> (C++ では引数リストを省略すると (void) とみなされる)
> C言語では最近の仕様はよく知らんけど、昔は違う意味になったはず。

いまもそうですね。


861 名前: デフォルトの名無しさん 投稿日: 01/12/23 23:43
違う意味になるのはプロトタイプの時だけじゃないの?


862 名前: デフォルトの名無しさん 投稿日: 01/12/24 00:02
あの、教えて頂きたいんです
最近「Kusakabe Youichi」って名前のおじさんをよく見るんですが
一体だれですか?


863 名前: デフォルトの名無しさん 投稿日: 01/12/24 00:07
関数宣言の場合
type funcname(); → type funcname(...);
関数定義の場合
type funcname() → type funcname(void)


864 名前: 主治医 投稿日: 01/12/24 00:08
ハブにかまれて中枢神経がマヒし言語障害を併発し、病院からリハビリの一環として書き込んでるおじいちゃんです。


865 名前: デフォルトの名無しさん 投稿日: 01/12/24 00:13
>>862
>>864
あまり、いじらないように。うざいから。


866 名前:   投稿日: 01/12/24 00:16
>>862
大学を一応卒業したもののあまりの性格の悪さから就職もできず、
中途半端な才能しかないのでC言語しか覚えられなくて院にも行けず、
そのうち本州に居づらくなったので沖縄に逃亡し、
いたいけで可愛い女子大学生をかどわかして強引に結婚させ、
たまに得たC言語本の仕事で毒舌を放ちまくるも、
結局売れないので2chでの書き込みを日課して、
一生を過ごしている可哀想なおじいちゃんです。


867 名前: デフォルトの名無しさん 投稿日: 01/12/24 00:24
お前ら全員マ板行けよ
モニタからお前らの粘着粘液がにじんで来るんだよ


868 名前: デフォルトの名無しさん 投稿日: 01/12/24 01:21
>>857
違う。


869 名前: 857 投稿日: 01/12/24 02:04
補足。man tmpfileより。

説明
    tmpfile()関 数は<stdio.h>で定義されている P_tmpdirをパスの
    先頭に使ったユニークなファイルを作成する。テンポラリファイ
    ルはバイナリリードライトモード(w+b)で作成される。このファ
    イルはクローズ時またはプログラムの終了時に自動的に削除され
    る。

準拠
    SVID 3, POSIX, BSD 4.3, ISO 9899

実行ファイルと同じディレクトリに書き込み権限があるとは限らないし、
そもそもPOSIXでは実行ファイルのディレクトリを知る方法を定義していない。


870 名前: Kusakabe Youichi 投稿日: 01/12/24 03:45
In article >>862, デフォルトの名無しさん/862 wrote:

> あの、教えて頂きたいんです
> 最近「Kusakabe Youichi」って名前のおじさんをよく見るんですが
> 一体だれですか?

昨日も同じこと言ってましたね:)


871 名前: Kusakabe Youichi 投稿日: 01/12/24 03:46
In article >>866,  /866 wrote:
> C言語しか覚えられなくて

はつみみです :)

> 院にも行けず、

はつみみです :)


872 名前: 投稿日: 01/12/24 05:11
LinuxでもDOSでもなんでもいいんだけど、

「 main() に飛んでくるまでのロジック 」について解説してるHPが
あったら教えてください。
書籍でもいいです。

検索キーワードだけでもいいです。
google行っても何で検索したらいいかさっぱり


873 名前: デフォルトの名無しさん 投稿日: 01/12/24 05:45
>>872
「スタートアップルーチン」とかで検索してみれば?


874 名前: 投稿日: 01/12/24 06:41
>872
LSI-C86に、スタートアップルーチンのソースが
いくつか付いてるよ。


875 名前: 801 投稿日: 01/12/24 07:36
>>814氏へ
>>805の提案って?すまん、意味がわからんのですが。XMLだと解決になるの?

>>815氏へ
残りがNULLでいいというか、20個というのは実用上妥当であろう数を大まかに言っただけのことです。
理想的なのはスタックに積む引数の数を変えられることなんですけどね。

まあ、>>802氏、>>804氏の提案も分かるんですが、
問題は既に可変引数の関数が実在しちゃってることなのです。

ココデモ ロクデモナイ コトシカ カカナイ
Kusakabeたんは何か提案ないの?(とか振ってみる)
まともでかつ有益な提案がもらえたら、
本の一冊くらいは買ってあげるところだけど。(w


876 名前: デフォルトの名無しさん 投稿日: 01/12/24 08:41
>>869

あ、そうなんですか。ありがとうございます。
> 実行ファイルと同じディレクトリに書き込み権限があるとは限らないし、
そうです。これが心配だったのです。


877 名前: デフォルトの名無しさん 投稿日: 01/12/24 09:11
>876
結果的には、ふつー、UNIX系では/tmpに出来るし、Windows系では
%TEMP%に出来ると思うけど。


878 名前: デフォルトの名無しさん 投稿日: 01/12/24 10:33
http://www.nurs.or.jp/~nspixp/void/
面白い人なんですね。


879 名前: デフォルトの名無しさん 投稿日: 01/12/24 11:14
日下部たんの本を立ち読みしようと思って
デオデオ内のコンピュータ書籍売り場にいって
c言語のコーナーを見たけど売ってなかったよ?
c言語の本だけでも4段くらいあったんだけど。。。

絶版?


880 名前: デフォルトの名無しさん 投稿日: 01/12/24 12:16

Kusakabe Youichiの母です(以下略


881 名前: デフォルトの名無しさん 投稿日: 01/12/24 12:17
>>875
> 問題は既に可変引数の関数が実在しちゃってることなのです。
それが根本的に間違ってる。
vprintf()を使ってprintf()を実装することは容易だが、逆はできない。
va_listをとる関数をベースにして、可変引数の関数でラップするもんだ。


882 名前: Kusakabe Youichi 投稿日: 01/12/24 14:30
In article >>879, デフォルトの名無しさん/sage/879 wrote:
> デオデオ内のコンピュータ書籍売り場にいって
> C言語のコーナーを見たけど売ってなかったよ?

けっこう売りきれるのが速いみたいです。またそのうち入荷するでしょう。


883 名前: デフォルトの名無しさん 投稿日: 01/12/24 15:22
>>879
その本は警視庁から回収命令が出されました。
出版社が回収中です。(w


884 名前: デフォルトの名無しさん 投稿日: 01/12/24 17:00
クサカベさん、
MFCの本かいてください。


885 名前: デフォルトの名無しさん 投稿日: 01/12/24 19:49
クサカベさん、
ATOKの本かいてください。


886 名前: Kusakabe Youichi 投稿日: 01/12/24 19:54
In article >>884, デフォルトの名無しさん/sage/884 wrote:

> クサカベさん、
> MFCの本かいてください。

書いてどうするの?


887 名前: デフォルトの名無しさん 投稿日: 01/12/24 20:08
>>881
> > 問題は既に可変引数の関数が実在しちゃってることなのです。
> それが根本的に間違ってる。
> vprintf()を使ってprintf()を実装することは容易だが、逆はできない。
> va_listをとる関数をベースにして、可変引数の関数でラップするもんだ。

んー、それがわかってるから
スタックに積む数を動的に変える方法ない?って聞いてるんだけどな。
可変引数はCの関数の墓場ということでしょうか(藁
まあ、Cの弱いところだからしょうがないか・・・・。(^_^;;

で、日下部先生、なんかいい手はないですかね。
呼び出し側で引数の数(=スタックに引数を積む数の意)を可変にする方法。
知ってたら教えてください。


888 名前: Kusakabe Youichi 投稿日: 01/12/24 20:15
In article >>887, デフォルトの名無しさん/sage/887 wrote:
> んー、それがわかってるから
> スタックに積む数を動的に変える方法ない?って聞いてるんだけどな。

っていうか、「引数や戻り値のやりとりはスタックで実現」するという実装で
なければいけないなんていう話はどこにもないのでは?

> まあ、Cの弱いところだからしょうがないか・・・・。(^_^;;

でもprintf()は初期からありましたよ。

> で、日下部先生、なんかいい手はないですかね。
> 呼び出し側で引数の数(=スタックに引数を積む数の意)を可変にする方法。
> 知ってたら教えてください。

ちゃんと本なり規格書を読みましょう。


889 名前: デフォルトの名無しさん 投稿日: 01/12/24 20:15
想像していた程度の答えだね>日下部


890 名前: Kusakabe Youichi 投稿日: 01/12/24 20:16
In article >>889, デフォルトの名無しさん/sage/889 wrote:

> 想像していた程度の答えだね > 日下部

ということにしたいいのですね? :)


891 名前: デフォルトの名無しさん 投稿日: 01/12/24 20:17
まあクサカベはこの程度だ。アイテニスルダケ無駄だよ>>887


892 名前: デフォルトの名無しさん 投稿日: 01/12/24 20:18
想像を絶する答えだね>日下部


893 名前: 887 投稿日: 01/12/24 20:25
新事実。

問題の関数は内部で va_list を使った関数をラップしているだけらしいことが
分かりました。(まあ、普通の人ならそういう風に作るよな・・・)
そっちの関数を外に公開してもらうことで、当座の問題解決はなんとかなります。

ご意見くださったみなさま、どうもありがとうございました。
(但し、日下部以外)


894 名前: デフォルトの名無しさん 投稿日: 01/12/24 20:48
>>863
その辺の話って、規格のどこを読めばいいの?


895 名前: 投稿日: 01/12/24 20:51
>>894
カニチャーハンにある程度載ってるね


896 名前: デフォルトの名無しさん 投稿日: 01/12/24 22:25
age


897 名前: 881 投稿日: 01/12/25 03:44
>>887
解決したようだが。

> スタックに積む数を動的に変える方法ない?って聞いてるんだけどな。
存在しないと思う。こういう力業以外。

switch (argc) {
case 0:
ret = foo();
break;
case 1:
ret = foo(argv[0]);
break;
// ....
}

あとva_listをとる関数があっても、va_listを作るのは
可変長引数の関数内じゃないとできないはず。


898 名前: デフォルトの名無しさん 投稿日: 01/12/25 06:18
このスレは何?

C の超カンタンなことなら漏れに聞け
http://pc.2ch.net/test/read.cgi/tech/1009190994/


899 名前: デフォルトの名無しさん 投稿日: 01/12/25 08:23
>>898
クソカベの隔離スレ


900 名前: RA・イール 投稿日: 01/12/25 11:32
僭越ながら質問させてください。
UTFビット列をUnicodeビット列に変更するプログラムを
作成しているのですが。
どのようにマスクを掛けたり、ビットをずらしたりすれば
良いのか思い浮かびません。
どなたかご教授願えませんでしょうか。

            UTFビット列         Unicodeビット列
1バイトコード  0aaa bbbb            0000 0000 0aaa bbbb
2バイトコード  110a aabb 10bbc ccc       0000 0aaa bbbb cccc
3バイトコード  1110 aaaa 10bb bbcc 10cc dddd aaaa bbbb cccc dddd


901 名前: デフォルトの名無しさん 投稿日: 01/12/25 12:29
>僭越ながら質問させてください。
興味深い日本語だ。


902 名前: デフォルトの名無しさん 投稿日: 01/12/25 12:43
1バイトかどうか (c1 & 0x80) == 0
2バイトかどうか (c1 & 0xe0) == 0xc0
3バイトかどうか (c1 & 0xf0) == 0xe0
4バイトかどうか (c1 & 0xf8) == 0xf0
5バイトかどうか (c1 & 0xfc) == 0xf8
6バイトかどうか (c1 & 0xfe) == 0xfc

2バイトのとき (c1 & 0x1f) << 6 | (c2 & 0x3f)
3バイトのとき (c1 & 0x0f) << 12 | (c2 & 0x3f) << 6 | (c3 & 0x3f)
4バイトのとき (c1 & 0x07) << 18 | (c2 & 0x3f) << 12 | (c3 & 0x3f) << 6 | (c4 & 0x3f)
5バイトのとき (c1 & 0x03) << 24 | (c2 & 0x3f) << 18 | (c3 & 0x3f) << 12 | (c4 & 0x3f) << 6 | (c5 & 0x3f)
6バイトのとき (c1 & 0x01) << 30 | (c2 & 0x3f) << 24 | (c3 & 0x3f) << 18 | (c4 & 0x3f) << 12 | (c5 & 0x3f) << 6 | (c6 & 0x3f)


903 名前: RA・イール 投稿日: 01/12/25 13:25
>>901さん
変な日本語になってますね。
僭越の意味が「身分や権限などを越えて、差し出がましいことをする」
だからこの場合おかしな表現でした。「不躾」であっていますかね?

>>902さん
私宛ての解答ですよね?
ありがとうございます。
これを参考に頑張ってみます。


904 名前: デフォルトの名無しさん 投稿日: 01/12/25 13:46
typedefしたものを使わずに関数をキャストするにはどうやりますか。


905 名前: デフォルトの名無しさん 投稿日: 01/12/25 13:51
void foo(int, char *);

int (*bar)(long *, ...) = (int (*)(long *, ...))foo;


906 名前: Kusakabe Youichi 投稿日: 01/12/25 13:53
In article >>903, RA・イール/903 wrote:

> >>901さん
> 変な日本語になってますね。
> 僭越の意味が「身分や権限などを越えて、差し出がましいことをする」
> だからこの場合おかしな表現でした。「不躾」であっていますかね?

っていうか、余計な前置きしている暇があるなら、さっさとわかりやすく質問
すればいいのでは?


907 名前: デフォルトの名無しさん 投稿日: 01/12/25 13:59
>>905
ありがとー。


908 名前: RA・イール 投稿日: 01/12/25 14:03
>>906
こういうところって前置きいらないですか?


909 名前: デフォルトの名無しさん 投稿日: 01/12/25 14:05
マクロを可変引数に対応させたい場合はどうやったらいいですか?
#define macro(s,...) printf(s,...)



910 名前: ズバット怪傑 投稿日: 01/12/25 14:08
>>909
#define macro printf


911 名前: Kusakabe Youichi 投稿日: 01/12/25 14:09
In article >>908, RA・イール/908 wrote:
> こういうところって前置きいらないですか?

しちゃだめです。


912 名前: デフォルトの名無しさん 投稿日: 01/12/25 14:11
>>909
gccの独自拡張なら
#define macro(format, args...) \
printf (format , ## args)

C99なら……、知らん。


913 名前: デフォルトの名無しさん 投稿日: 01/12/25 14:16
>>910
ごめんなさい、説明不足でした。

デバッグ出力のために使うのでシンボルDEBUGが定義されていない場合
コードを消したいんです。

#ifdef DEBUG
#define macro(str) puts(str)
#else
#define macro(str)
#endif

のような感じで…


914 名前: デフォルトの名無しさん 投稿日: 01/12/25 14:25
>>913ならこうじゃん

#ifdef DEBUG
#define macro printf
#else
#define macro
#endif


915 名前: ズバット怪傑 投稿日: 01/12/25 14:27
>>913
#ifdef DEBUG
#define macro printf
#else
#define macro 1?(void)0:printf
#endif


916 名前: 914 投稿日: 01/12/25 14:27
あ、そか、だめだ。


917 名前: デフォルトの名無しさん 投稿日: 01/12/25 14:27
>>912
> C99なら……、知らん。
#define macro(format, ...) \
printf(format, __VA_ARGS__)


918 名前: RA・イール 投稿日: 01/12/25 14:32
>>911
わかりました。以後注意します。


919 名前: デフォルトの名無しさん 投稿日: 01/12/25 14:51
>>917
ありがとう、できました!


920 名前: Kusakabe Youichi 投稿日: 01/12/25 17:38
皆さん素晴らしいレスをありがとうございました。
おかげでとても面白いスレッドになりました。
最優秀スレッド賞をひろゆきからいただきました。
単行本にも掲載されるそうです。
皆さん楽しみにしていてください。
ではごきげんよう。


921 名前: デフォルトの名無しさん 投稿日: 01/12/25 17:39
え、C99対応のコンパイラ使ってんの? 何?


922 名前: Kusakabe Youichi 投稿日: 01/12/25 17:43
正直、レベルが低くてがっかりだ。
またクソスレ立ててやるからしっかり煽ってくれよ。


923 名前: デフォルトの名無しさん 投稿日: 01/12/25 19:33
>>908
全然かまわないよ−。偽日下部なんか無視して、
どんどん前置き書いて−。


924 名前: デフォルトの名無しさん 投稿日: 01/12/26 02:24
だからといって時候の挨拶から入るなよ。


925 名前: デフォルトの名無しさん 投稿日: 01/12/26 21:43
Cで終了コードを取得するにはどうすればよいでしょうか?
以下のようなコードをためしたのですが:

geho.c:

int main(void)
{
  exit(2);
}

hoge.c:

int main(void)
{
  int ret;
 
  ret = system("./geho");
  printf("%d\n", ret);

  return 0;
}

しかし、出力は2とはならずに、512となってしまいます。


926 名前: お胸おっぱい 投稿日: 01/12/26 22:18
>>925
OS が何かは知らないけど、上位 8bit は確かに 2 だ。


927 名前: デフォルトの名無しさん 投稿日: 01/12/26 23:59
ret=system(...)/256 とすべきでわ?


928 名前: デフォルトの名無しさん 投稿日: 01/12/27 01:15
厳密にはスレ違いだが。
wait()システムコールで得られる値には、
下位8ビットにcore dumpしたかのフラグとシグナルの値が入ってる。
子プロセスがexit()に渡した値は上位8ビットだけ。


929 名前: デフォルトの名無しさん 投稿日: 01/12/27 18:25
struct age *sage = (struct age *)malloc(10 * sizeof(struct age));
で動的に割り当てた構造体の記憶領域の解放のしかたは
free((struct age *)sage);
であってる?


930 名前: デフォルトの名無しさん 投稿日: 01/12/27 18:32
freeの中でキャストいるんだっけ?
free(sage)でいいんじゃないの?


931 名前: デフォルトの名無しさん 投稿日: 01/12/27 19:05
つーかmalloc()もキャストはいらん。
void*からの代入はOKだし、void*をサポートしてない処理系がエラーや警告を
出すとも思えん。
ただし、当然#include <stdlib.h>はしてるものとする。


932 名前: デフォルトの名無しさん 投稿日: 01/12/27 23:35
次元配列の宣言は、「実際には配列の配列」って言ってるけど、
ほんとの次元配列ってのはどういうものか教えてください。


933 名前: デフォルトの名無しさん 投稿日: 01/12/27 23:39
次元配列ってなんだよ。
SF板かアニメ板のルパンスレにでも逝け。


934 名前: デフォルトの名無しさん 投稿日: 01/12/28 00:48
また、つまらぬレスをつけてしまった・・・


935 名前: デフォルトの名無しさん 投稿日: 01/12/28 02:41
ヘッダファイル内にはそのヘッダが依存するヘッダの
インクルードも書いておくべきだ!
それぞれのヘッダには二重定義防止マクロを記述しておけばよい。
この考え方に賛成の人〜!


936 名前: デフォルトの名無しさん 投稿日: 01/12/28 04:18
ふつうそうなってないか?


937 名前: sage 投稿日: 01/12/28 05:19
それが常識なら文句ないっす。


938 名前: Kusakabe Youichi 投稿日: 01/12/28 05:29
In article >>937, sage/937 wrote:

> それが常識なら文句ないっす。

っていうか、まず自分で確かめろって。


939 名前: デフォルトの名無しさん 投稿日: 01/12/28 06:35
鬱陶しいね〜 このオヤジ
早く死ねよ〜〜 


940 名前: デフォルトの名無しさん 投稿日: 01/12/28 07:47
>939
off会で殺せよ


941 名前: デフォルトの名無しさん 投稿日: 01/12/28 09:03
>>938
読解力ないね。


942 名前: デフォルトの名無しさん 投稿日: 01/12/28 09:33
そろそろなので、新スレを作りました。
移動をお願いします。

http://pc.2ch.net/test/read.cgi/tech/1009499565/l50


943 名前: ねね 投稿日: 02/01/26 20:17
CのソースからPealのソースを呼び出すにはどーすればいいの?コンパイル時にリンクさせるには・・・・。それとも直接ファイル指定での呼び出しが可能?シェルじゃないしそれはムリかな?だれか教えて。


944 名前: デフォルトの名無しさん 投稿日: 02/01/26 20:19
>>943
system()


945 名前: デフォルトの名無しさん 投稿日: 02/01/26 20:19
>>943
system("〜.pl")が最も簡単な手。


946 名前: デフォルトの名無しさん 投稿日: 02/01/26 20:20
>>943
Perl5でCとの親和性が高くなったらしいから調べてみては?


947 名前: デフォルトの名無しさん 投稿日: 02/01/26 20:30
>>943
Pealってなんだ。っつーか>>942が読めねーのかこの文盲。


948 名前: デフォルトの名無しさん 投稿日: 02/01/27 08:35
どうでもいいけど新スレへ

C言語なら、俺に聞け! <11>
http://pc.2ch.net/test/read.cgi/tech/1009499565/



2ちゃんねるは、ここのサーバを使ってるです。。。