char *c[44] = {"C言語のことは漏れに聞け!"};

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しろ。
むしろ質問する前にWEBで検索するのが常識だ。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへ行け。
コンパイラを探しているなら >>2 を見よ。

上記を逸した場合の結果は激しく未定義とする。

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

前スレ
c[43] = "http://pc3.2ch.net/test/read.cgi/tech/1037281411/";
【コンパイラ】
gcc
http://gcc.gnu.org/

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

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
c[42] = "http://pc3.2ch.net/test/read.cgi/tech/1037101156/";
c[41] = "http://pc3.2ch.net/test/read.cgi/tech/1036876790/";
c[40] = "http://pc3.2ch.net/test/read.cgi/tech/1036673739/"; // 待機中
c[39] = "http://pc3.2ch.net/test/read.cgi/tech/1036409391/"; // 待機中
c[38] = "http://pc3.2ch.net/test/read.cgi/tech/1035729526/"; // 待機中
c[37] = "http://pc3.2ch.net/test/read.cgi/tech/1035623265/"; // 待機中
c[36] = "http://pc3.2ch.net/test/read.cgi/tech/1035211039/"; // 待機中
c[35] = "http://pc3.2ch.net/test/read.cgi/tech/1034337064/"; // 待機中
c[34] = "http://pc3.2ch.net/test/read.cgi/tech/1033240509/"; // 待機中
c[33] = "http://pc3.2ch.net/test/read.cgi/tech/1032606064/"; // 待機中
c[32] = "http://pc3.2ch.net/test/read.cgi/tech/1031905402/"; // 待機中
c[31] = "http://pc3.2ch.net/test/read.cgi/tech/1031340950/"; // 待機中
c[30] = "http://pc3.2ch.net/test/read.cgi/tech/1030786546/"; // 待機中
c[29] = "http://pc3.2ch.net/test/read.cgi/tech/1029605182/"; // 待機中
c[28] = "http://pc3.2ch.net/test/read.cgi/tech/1028495798/"; // 待機中
c[27] = "http://pc3.2ch.net/test/read.cgi/tech/1027160374/"; // 待機中
c[26] = "http://pc.2ch.net/tech/kako/1026/10260/1026048820.html";
c[25] = "http://pc.2ch.net/tech/kako/1024/10249/1024918442.html";
c[24] = "http://pc.2ch.net/tech/kako/1024/10240/1024033400.html";
c[23] = "http://pc.2ch.net/tech/kako/1022/10224/1022402165.html";
c[22] = "http://pc.2ch.net/tech/kako/1022/10224/1022402165.html";
c[21] = "http://pc.2ch.net/tech/kako/1022/10220/1022045622.html";
5デフォルトの名無しさん:02/11/20 21:49


  い つ に な っ た ら C 9 9 完 全 準 拠 の

  処 理 系 が 出 る ん だ ?


6デフォルトの名無しさん:02/11/20 21:51
>>1
死ね
strcpy(*c, "乙カレー!");
8manko_chinko ◆GLc2rpKRNM :02/11/20 21:57
>>5
だすいみないと思いますが
.NET Framework SDKってC/C++対応してるのか?
>>9
してる
タイトルつまんね。
>10
csc.exe, vbc.exe, jsc.exeしか見当たらないけど。
コンパイラのファイル名は?
割れ氏ね
フリーなのに割れるのか
>>12
cl.exe
分割コンパイルしないヤシ氏ね
#include "mylib.c"
#include "mylib2.c"
#incude"コピー 〜 stdio.h"
#incude"stdio.h へのショートカット"
保守sage
cu??
221:02/11/21 01:44
age
保守sage
>>19ワラタ
25デフォルトの名無しさん:02/11/21 07:35
何事にも必死になれないおまえらよりはましだ。
#include "hspext.as"
gcc 2.95.4 on linux
/* 簡単の為エラーチェックは無し */
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>

int main(void) {
  char *path = "hoge";
  DIR *dir = opendir(path);
  struct dirent *dp;
  while ((dp = readdir(dir))) {
    /* directory type to inode file */
    printf("%u,%s\n", DTTOIF(dp->d_type), dp->d_name);
  }
  closedir(dir);
  return 0;
}
上記のプログラムでファイルがディレクトリかどうかの区別ができるようなんだけど、
DTTOIF(dp->d_type)の値が全て0になってしまいます。
理由が分かる人がいたら教えて貰えたら嬉しいです。
因みにstat(2)を使ってst_modeを取得するとちゃんと判別してくれます。
環境依存なのでsage。
>>27
BUGS
Field d_type is not implemented as of libc6 2.1 and will
always return DT_UNKNOWN (0).

>>27
struct direntで保証されてるのはdp->d_name[NAME_MAX]だけです。
他に有用な情報が返ってくるという保証は無いdeath。
>>28,29
ありがとう御座います。

ここら辺は実装にかなり違いがあるようですね。
31 :02/11/21 13:57
λ...... ここ変だよ・・        λ......       λ......
  λ......            λ...... 失敗だったネ…
 λ......      λ......
        λ......                  λ...... 逃げていく…
    λ......             λ......
                λ......
 λ......       λ......          λ...... みんな逃げていく…
λ...... ここ変だよ・・        λ......       λ......
  λ......            λ...... 失敗だったネ…
 λ......      λ......
        λ......                  λ...... 逃げていく…
    λ......             λ......
                λ......
 λ......       λ......          λ...... みんな逃げていく…
32デフォルトの名無しさん:02/11/21 17:51
C言語でベーシックの「CLS」のような命令は使えますか?
>>32
int i=10000;
while(i--) putchar('\n');
>>32
ありません。
CLS の機能は 「画面の全ての文字をを消去してカーソルをホームに戻す」 ですが、
C ではそもそも 「画面」 が定義されていません。
処理系依存なので、使っているコンパイラ等に頼る事になります。

ちなみに、33 の方法では 「画面の全ての文字をを消去」 を果たす事ができますが、
「カーソルをホームに戻す」 の標準的な方法はありません。
>>34
処理系依存じゃない方法もあるじゃん。
環境依存にはなるけど。
ちなみに、ANSI.SYS が動いてれば printf("\x1b[2J") で逝ける。
ansi.sys
この前から気になってたんだけどさ、

      「ansi.sys」      ってなに?

何処で手にはいるの?
M$-DOSスレに逝け
40JPS ◆M0LaMzf5rY :02/11/21 19:06
putcharを無理して使う必要ってある?
printfよりいいとこあるとか・・・

例えば、ループで配列をどんどん画面に出力して、最後に改行したいってときに
putchar使うのはよくあることでつか?
ベンチマーク作って速度試してみては?>>40
>>40
putchar( '\n' );
ですむとこを無理して
printf( "\n" );
にすることも無いよね
今の時代にはあわないかもしれんが、printfで""の中身を解析するのに時間かかった時代もあった
putcharとかだと、解析の手間はないですよね。
>>42
たいして無理してるようには見えない罠
4538:02/11/21 19:18
質問してきた。
46デフォルトの名無しさん:02/11/21 19:21
>>40
'\n' とかの定数だったら printf() に直せるけど、変数だったら putchar(c); で
済むところを printf("%c", c); って書かなきゃ逝けないだろ。
実際に printf() と putchar() と同じものを (出力は fwrite(stdout) を使って)
書いてみろ。
printf() がどれだけ無駄かがわかる。

>>43
(゚Д゚)ハァ?
printf() のコストが高いのは今も変わりませんが何か?
DR-DOSでもぐぐりなされ>38
改行だけなら俺はputs("");とやる。
49デフォルトの名無しさん:02/11/21 19:31
register int i=100000;
while(i--) putchar('a');

とやるよりも

register int i=10000;
while(i--) fputs("aaaaaaaaaa",stdout);

とやった方が遙かに速い?
「時間がかかった」てのはマシンスペックのことでないか。
51デフォルトの名無しさん:02/11/21 19:34
>>49
どうせなら fwrite() にしとけ。
52デフォルトの名無しさん:02/11/21 19:52
>>51
fwriteの方が速いの?
例のlongバイトごとに処理するってやつ?
53JPS ◆M0LaMzf5rY :02/11/21 20:02
>>46
そんな使い方があったね。getchatとputcharってやっぱ一緒につかいませう。
さんくすべりべり。
>>52
memcpyと混同してない?
バッファ使わないからむしろ遅くなったりしないかな?>fwrite
そこまでくると処理系依存というオチですか?
>>53
getchat は解せんな
揚げ足取りゴメソ
>>54
お前こそfwriteとwriteを混同してないか?
ストリームってなんだかわかってるのか?

fread, fwrite - バイナリストリームの入出力
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fwrite.3.html

write - ファイル・ディスクリプタ (file descriptor) に書き込む
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/write.2.html
5854:02/11/21 20:19
   ∧_∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < なんだって?>>57
.  ノ/  /     \_______
  ノ ̄ゝ
>>58==54
消防
>>49
putchar()とputc()は「出力のバッファに空きがあったらそこに書き込む。
バッファがいっぱいになったらバッファを書き出す関数を呼ぶ」というマクロに
なってる場合が多いけど、fputs()は毎回普通に関数を呼ぶことになる。
だから「遥かに速い」というほどの違いはないかも。
6154:02/11/21 20:25
はいはい、おれが悪かった。
謝りゃいーんだろ?謝りゃ?
ごめんごめんでごめりんこ
おしりペンペンボールペン
しかしCが出てもう30年も経とうというのに
未だにこんな低レベルな話題で盛り上がれるとはね。
>>59
==の使い方が(・∀・)イイ!
>>60
> バッファがいっぱいになったらバッファを書き出す関数を呼ぶ」という
> マクロになってる場合が多いけど
昔はマクロの方が多かったけど、最近はスレッドセーフに対応せねば
ならんので、マクロになっていことの方が多いけどな
Cが出来てからは長く時がたっているが、
Cをはじめた人は後をたたない。
むしろ古い規格を引きずってるのが混乱の元と思われ。
>>62
いまだに大学で教えるプログラミングはCからだよ。
うちの学校じゃ2年になったらJavaやC++もやるけど、
大抵の学部だったらCのみだもん。
じじいは早くしんでくれや
6860:02/11/21 20:34
>>64
なるほど。スレッド対応のことをすっかり忘れてたよ。
昔の常識は今の非常識か。
え”、大学って自分で勉強するとこじゃないの?
>>67
いまだにって...うちでは以前までPascalを初めに教えてて、
Cになったのは最近なんですが.......(;´Д`)
>>67
それはお前の逝ってる三流大学のじじい教授がCしかできないからだよ。
氏ぬのはおめーらだ。
72manko_chinko ◆GLc2rpKRNM :02/11/21 20:35
>>67
ばーか、Cで十分なんだよ
だいたいc++ぐらい自分で勉強しろや!
>>69
自分で勉強するなら大学はいりません。
大学でC#を教えてるとこなんて、日本には存在しませんが何か?
というか大学でプログラムを教える必要なんてない!
システム開発と運用について学べ!
>>69
>>71
>>72
大学にいけず、苦労したバカたち。哀れでつね・・・
さてと、彼女とドライブに行こうかな。
当方大学4年で、ソフトバンクに就職きまりましたが。ごめそ
>>75
非常に寒いですな
そりゃ大学の干からびたじじいがC#なんて最新のもの知っているわけないなぁ。
知っててもボケた頭じゃ覚えられんだろうて。
>>76
お前が一番な
79manko_chinko ◆GLc2rpKRNM :02/11/21 20:43
>>75
大学どころか高校入試もあぶないよコノヤロウ!!
>>77
うちの大学には1人だけ若い教授がいて、C,C++,C#,Javaとかを使えるらしい。
というか、話をきくと、ジジイどもは覚えられないから
その教授一人に押し付けたそうな・・・
かわいそう・・・。PGだったら寿命なんさいなの?
>ソフトバンク
前途洋洋ですな(藁
http://quote.yahoo.co.jp/q?s=9984.t&d=1y
8275:02/11/21 20:44
イパーイ釣れた
特に81はおつかれさん
>>82
イパーイて二人だろ。しね
>>80
Java ぐらいジジイでも覚えられるだろ。
単にアフォなだけ。年のせいにするな。
高円宮って誰だよっ!!
オレ
>>67
そういうところはANSI通らないコンパイラ使ってるよ
昔のlatticeとか
隣の人の友達の奥さんの子供が行っている大学の子供の父
大学の子供?
こういうのはマ板でやれ。
クソSEどもはマ板へ(・∀・)カエレ!!!
92manko_chinko ◆GLc2rpKRNM :02/11/21 21:05
やはりマブナとか真鯉がいるようにマ板も何ですよ
誰か >>92 を翻訳してくらはい。
質問させてください

typede  unsigned long u32;
#define REG_DISPCNT  *(u32*)0x4000000

とあるんですが*(u32*)0x4000000のところがどういうことなのかよくわかりません
どなたか細かく教えていただけませんか?
>>94
環境依存の話すんな
>>94
u32型へのポインタへキャストしてデリファレンス
>>93
バカは放置。これ鉄則。
>>95
DQNですか?
DQNでないCerは存在しない。
REG_DISPCNT = 1;
とかにすりゃ、メモリの0x4000000番地に1が入るというネタでは?
101manko_chinko ◆GLc2rpKRNM :02/11/21 21:11
>>97
あなたには日本語の行く末がわからないようですね
>>94
そのままではエラー
と言ってみるテスト
こんなことだから「すれ立てるまでもない質問」スレに規格論争持っていかれるんだ。
情けない。
なんでエラーになるのかちゃんと説明できる奴はおらんのか。
自己満足厨ばかりだな。
>>104
typedeって何?
106manko_chinko ◆GLc2rpKRNM :02/11/21 21:18
>>105
タイプで。
>>106
いーからおまえはだまってろ
>>104
まぁtypedeを説明されるまで気づかない厨がいるわけだが・・・
>>110
いーからおまえはだまってろ
>>109
うるせー馬鹿
下らんっ!!!あまりにもレベルが低すぎるっっ!!!
儂が直々に手を下すまでもないわっっっ!!!!
行けっ!!手下共っ!!!この糞スレを燃やし尽くすのだっ!!!
ぐわははははははhahahaha!!!
>>111
ふーん。それで? 荒らしって奴?
113デフォルトの名無しさん:02/11/21 22:03
>>112
反応するなって無視しろ
>>113
そう言いながらあげてるお前は何がしたいの?
>>114
反応せず無視してください
116113:02/11/21 22:09
sage入れ忘れただけなのに煽られちった。




ウザッ
117 :02/11/21 22:15
λ...... ここ変だよ・・        λ......       λ......
  λ......            λ...... 失敗だったネ…
 λ......      λ......
        λ......                  λ...... 逃げていく…
    λ......             λ......
                λ......
 λ......       λ......          λ...... みんな逃げていく…
λ...... ここ変だよ・・        λ......       λ......
  λ......            λ...... 失敗だったネ…
 λ......      λ......
        λ......                  λ...... 逃げていく…
    λ......             λ......
                λ......
 λ......       λ......          λ...... みんな逃げていく…
118manko_chinko ◆GLc2rpKRNM :02/11/21 22:16
>>116
そんなこと気にしなくても
sageいれろいれろと口を酸っぱくして逝ってる人は自分の愚かさに気づいてないだけです
聖書を読み直しなさい
>>118
お前が JPS よりも格下なのはよくわかったから黙ってくれ。
>>119
JPS必死だな
>>119
格下であってバカと書いていないところに謙虚さが感じられる
122manko_chinko ◆GLc2rpKRNM :02/11/21 22:27
一部の偏屈によってこのスレの雰囲気もだいぶ変わりましたねぇ。
まぁ、やはり、日本での布教活動を重要視してなかった大昔のヨーロッパ人が悪いんですかねぇ。
123manko_chinko ◆8L5BB/1m8. :02/11/21 22:27
偽者ですが何か?
124manko_chinko ◆iNDnF2OIr2 :02/11/21 22:28
こちらも偽者ですが何か?
ちなみに123のトリップは非常に簡単だから誰か騙ってみてくれ。
2ちゃんねるってよく便所の落書きって言われるけど、本当に便所に
C言語がつらつらと書いてあったらと思うと夜も眠れません。
127JPS ◆M0LaMzf5rY :02/11/21 22:31
rand()って関数はどうやって乱数をだしてるの?
疑似乱数ってやつですか?
またJPSのバカがきたよ。
>>127
コンパイラによります
あ、真面目に答えてはいけない相手だったのでしょうか
>>128
少なくともお前よりはバカじゃないがな(w
132manko_chinko ◆GLc2rpKRNM :02/11/21 22:34
>>129
え、コンパイラによるんですか?
133JPS ◆M0LaMzf5rY :02/11/21 22:39
いまアルゴリズムの本借りてきて
1〜nの乱数を返す関数ってので

int irnd(int n)
{
   return (int)(rand()/32767.1*n+1);
}
ってのが出てきたんだけど、これはいったいなんなのかなって・・・
普通にrand()%n+1と一緒でないのかな・・・
>>129
新事実!!rand()の実装はコンパイラ依存!!
>>133
rand()%n + 1
だと出る値に偏りが出るらしい
そろそろコテハンを放置するくらいの気構えを持とうじゃないか。
137JPS ◆M0LaMzf5rY :02/11/21 22:44
>>135
マジっすか。てことは浮動小数点で実装?
>>130
JPSは他人の振りしてクソすれと重複スレを立てた前科があります。
139JPS ◆M0LaMzf5rY :02/11/21 22:46
>>138
くそスレの経験はありませんが、このスレの前スレを立てました
>>130
いや、ここは JPS を育てるスレだから大丈夫だ。

>>137
簡易的な乱数生成器は、下位ビットがあまりランダムでないとされている。
なので、より多くの下位ビットを拾う % よりも、より多くの上位ビットを拾う
/ が使われる。
141140:02/11/21 22:52
って、C FAQ に書いてなかったか?
142デフォルトの名無しさん:02/11/21 22:52
質問です。
 V=0.5*a*t*t V;速度 a:加速度 t:時間(秒)
この式に対応して物体が移動するプログラムを作る場合
c言語において、時間tはどのようにして表すのですか?

へたくそな説明ですみませんがどなたか教えてください。お願いします
> いや、ここは JPS を育てるスレだから大丈夫だ。
いつからここはJPSを育てるスレになったんですか?

バカ、氏ね。
for(t=0.0; t<10.f; t+=0.1)
for ( t = 0.0; (10-t) < epsiron; t += 0.01 )
>>144
10.fって10.0fと同じ?
>>146
同じだけどfはいらなかった。

>>145
ここでeはいらんだろ。
>>147
さんきゅ。
.0なら小数点以下は書かなくてもいいのか。
149142:02/11/21 23:00
>>144>>145
大変ありがとうございました。
ここでさらに質問したいのですが
144さん
  10.fのfとはなんですか?
初心者過ぎてすみません

145さん
  (10-t) < epsiron
epsironとは?
>>149
fはfloatであることを示す。つけないとdouble
セーラームーン
セーラーマーズ
セーラーマーキュリー
154142:02/11/21 23:02
>>150さん
親切にありがとうございました
セーラージュピター
セーラームーン世代のオッサンが混じってるな.....
コンパイラによる、、というのは正しいのでしょうか、間違ってるのでしょうか
158デフォルトの名無しさん:02/11/21 23:03
>>157
なにいってんだこいつ。
セーラーヴィーナス
>>157
正しくはライブラリの実装による
>>158
アフォですか?
セーラーネプチューン
163デフォルトの名無しさん:02/11/21 23:05
>>161
唐突にわけのわからんこと聞く>>157の方がアフォだと思うが。
>>147
> 同じだけど

でたらめ言うなよ。
セーラーウラヌス
>>163
少し前の話題も覚えてないのかと.....
セーラープルート
168デフォルトの名無しさん:02/11/21 23:06
>>166
つい先ほど来たばかりですが。
169142:02/11/21 23:06
すみません、もう一つだけ質問させてください
for(t=0.0; t<10.f; t+=0.1)

なぜt<10なのですか?

またt+=0.1ということはtは0.1秒ずつ増えていくということですか?
また単にtという変数を宣言してやるだけでいいのですか?
セーラーちびムーン
>>168
だったら余計にアフォだ
過去ログも読まずに脊髄反射レスするな。ヴォケが
172168:02/11/21 23:07
>>129
これか。
173168:02/11/21 23:08
へぇ、回答者まで過去ログ読まないといけないんだ。
174デフォルトの名無しさん:02/11/21 23:08
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
単発質問断固反対
>>173
(゚Д゚)ハァ?
>>173
あたりまえだろ。アフォ?
174が、自分がアフォぶある事をカミングアウトしました。
>>174
じゃあどんな質問ならいいんだw
>>169
for(t=0.0; t<10.f; t+=0.1)
は仮の話 t=0.0 のところには t の下限値、
10. には t の上限値を入れる
180173:02/11/21 23:10
つれまつた。
181142:02/11/21 23:11
>>179
親切にありがとうございました。
>>175-176
過去ログ読まないタイプ
183179:02/11/21 23:12
>>181
どういたしまして。
184179:02/11/21 23:12
>>181
お礼は余計
>>183
おい、偽物!!179はおれっだっちゅーの!
>>182
過去ログ見て見ない振りするタイプ
ここも FORTRAN を語るスレになりますた。


・・・0.1 を足し続けたら誤差が出るとオモタ
typedef 過去ログ読まない 175, 176;
typedef 過去ログ見て見ない振りをする 182;
189142:02/11/21 23:15
>>185
ということは、私はお礼言ったのに煽られたんですか?
>>189
早く寝ろ
191142:02/11/21 23:16
なんかむかつく・・・・
もうくるのやめよう。
192179:02/11/21 23:16
>>189
安心しろ。偽者は184=185だ。
>>192
=は余計。
194142:02/11/21 23:17
>>189

偽者うざい
>>191
だったら、「もう来ねぇよ ウワァァン」 の AA でも貼ったらどうだ?
196142:02/11/21 23:18
191おまえもうざい
はらたいらさんがテレビに出てるんですが
198デフォルトの名無しさん:02/11/21 23:19
>>139
前スレは糞スレ
199JPS ◆M0LaMzf5rY :02/11/21 23:20
>>140
サンクス。その言葉の意味がよくわからんが・・・
今度は142と142の偽者が荒らさーですか?
>>197
      __________
      /              /|
    /              /  |
    | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
    |                    |  │
    |                    |  │
    |                    |  │
    |                    |  │
    |                    |  │
    |                    |  │
    |                    |  /
    |__________|/
腹平?
>>199
「その言葉」 がどの言葉かはっきり言えとあれほど・・・
>>203
過去ログ嫁
>>197
      __________
      /              /|
    /              /  |
    | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
    |                    |  │
    |                    |  │
    |                    |  │
    |      T   V         |  │
    |                    |  │
    |                    |  │
    |                    |  /
    |__________|/
206JPS ◆M0LaMzf5rY :02/11/21 23:24
>>203
自分で調べてみますた。
上位ビットと下位ビットをそれぞれよく使うってとこがわからんかった。
割り算だと上位ビットをよくつかう・・・
JPS は何気にいい大学に入れそうな気がする
>>206
n が 2 で割りきれる数だと、その傾向が顕著になる。
その理由を考えてみろ。
2chにはまっているようじゃダメ
まあ、ボケ具合はともかく、ある程度向上心やら探求心やらは持ち合わせているみたいだからな。
というよりその程度でいい大学にいけるなんて評価高すぎ。
大学に入るのに探求心が必要?
なんだ大学生じゃないって分かるんだ?
214213:02/11/21 23:31
× なんだ
○ なんで
215213:02/11/21 23:32
みんな黙っちゃった。
>>213
現在のやつの知的レベルを見れば分かるであろう
217JPS ◆M0LaMzf5rY :02/11/21 23:34
>>208
全くわからない・・・。ヒントください。

大学生ですが何か?
>>大学生ですが何か?
ガ━━(゚Д゚;)━━ソ!
>>216
現在のやつの知的レベルでいい大学には入れるのか?
掲示板への書き込みだけで決めつけるな
221207:02/11/21 23:37
前言を禿しく撤回します
やっぱ
一般人>>>>>>>>>マソコチソコ>JPS
>>217
x のビット値が 1111111100000000 の時、x % n と x / n の結果がそれぞれ
どうなるか考えればいい。
それが 「より多くの下位ビットを拾う % よりも、より多くの上位ビットを拾う」
の意味。
224manko_chinko ◆GLc2rpKRNM :02/11/21 23:44
>>222
僕のIQはそんなに低くないですよ。130ぐらいでしたし。
まぁ、IQだけで人の価値は決まりませんしね。
僕はEQ(心の知能指数)のほうが大切だと思いますが。
知的レベルって、ここ見てる限りみんなも大した事なさそうだけどな(藁
226JPS ◆M0LaMzf5rY :02/11/21 23:44
あ。言い換えるとさ、上位ビットの方が周期が長いってこと?
>>224
分かったから
そ ろ そ ろ 勉 強 し ろ よ ?
>>225
いや、君は違うよ。君はとても知的レベルが高いと思う。
Cやってる奴は概してIQも学歴も低いよ
>>229
その通り。高卒はCばっかりやっている。
>>229
おまえだけ
232229:02/11/21 23:53
>>231
俺はCやってないからIQも学歴も高いよ。
>>232
寝言なら板違いだぞ
ぼくちんはまだAもしたことありません。
235JPS ◆M0LaMzf5rY :02/11/21 23:57
>>223
やってみますた。
65280(10)だったから、例えばn=12だと
65280 / 12 = 5440
65280 % 12 = 0
だから
0001010101000000と
0000000000000000になりますた。
つまり下位ビットは、nを多く含んでる?
えーと、わかんない・・・
だれかJPSに参考リンクでも紹介して黙らせろよ。
237JPS ◆M0LaMzf5rY :02/11/22 00:00
下位ビットで10進でも下の桁を表してるんだよね?
ってことは、あまりを求めるときは、下位ビットの値が出るってことか?
割り算だと出るのは商だから、ビットがどうとか関係ない?
>>236
お前がやれや
>>235
何かがおかしいと気づかないか?
mod12と比較するなら12/RAND_MAXを掛ける必要があるぞ
240デフォルトの名無しさん:02/11/22 00:03
>>239
なにいってんですか?
241JPS ◆M0LaMzf5rY :02/11/22 00:04
>>239
RAND_MAXてなに?
>>239
今は誰も乱数の話などしていない
ム板にはトリップいらないだろと思う今日この頃。
>>241
とにかく下位ビットは偏りが大きいんだよ!それでいいだろ?兄弟
誰も(俺も)ちゃんとした説明が出来ないことが明らかになりました。
多分実装上の問題だよ
最近の実装なら関係ないらしい
The versions of rand() and srand() in the Linux C Library
use the same random number generator as random() and sran-
dom(), so the lower-order bits should be as random as the
higher-order bits. However, on older rand() implementa-
tions, the lower-order bits are much less random than the
higher-order bits.
「最近の実装」 と称して Linux C Library を持ち出すのは止めろ。
何故皆黙りこくってしまったかな?
>>247
はいはい。オサーンは師んでね☆
つまり「最近の」ライブラリ使ってりゃ rand()%10+1 でもモウマンタイってこった
>>249
アフォですか?
特定の処理系を確認しただけで 「最近の実装なら」 と言い出すのは阿呆のすることだ
と言っている。
あと、漏れをオサーンと言うなら根拠を示せ。

>>250
ああ、「最近の Linux C Library」 を使っていればな。
>>251
(゚Д゚)ハァ?根拠示すべきなのはお前の方だろ?
「最近の」実装で下位ビットに偏りが出るってのを探してこいや。ハゲ
>>252
ハゲであるという根拠も。
>>252
何を言っている?
「最近の実装なら」 を証明する義務があるのは、それを言い出したあんたの方だろう?
問1
最近の実装で線形合同法が使われて居ない事を証明せよ

ってところか
>>254
おれはこの世にある全ての実装そ調べなければならない
お前はたった一つ反例を出せばいい
お前がさっさと探してくりゃ済む話だろーが。ヴォケ
>>256
ハゲだとかヴォケだとか・・・あんたは余計なものをつけたがるね。
> おれはこの世にある全ての実装そ調べなければならない
当たり前じゃん。
>>258
はぁ?反論できないんだったら、あーそうですかと聞き流しときゃいーだろーが
反論したけりゃ反例持ってこい。アフォが
>>256
「最近の実装なら」 と言い切るなら、普通すべてのコンパイラを調べなきゃ
いけないはずなんだが、思考回路は大丈夫だろうか。
まあ、たった一つ反例を出せば満足と言うなら出そう。
VisualC++。
VC++は時代遅れ





















とか言い出すんだろうか
>>259
VC++は時代遅れだろヴォケ
どこが最近の実装だ。
264JPS ◆M0LaMzf5rY :02/11/22 00:43
>>260
オレも色々調べたらVC++は偏りがあること判明しますた。
265263:02/11/22 00:43
レス先間違った
>>260
>>260
コンパイラ?思考回路大丈夫か?(w
根拠示せってーの。何がVisualC++だ?知るかハグェウンコ
>>263
じゃあ最近の実装ってなんでつか?
VC.NET は最近の実装じゃないのか・・・。
263 が一体どの程度のスパンを求めているのかわからないな。
>>261 ワラタ
270263:02/11/22 00:46
>>267-268
しらねーよ馬鹿
はいはい。俺の負けだよ。
これで気が済んだか?
271デフォルトの名無しさん:02/11/22 00:47
>>264
具体的にどんな偏りかをしめしなよ、実は調べていないのに口だけとしか見えないよ
>>268
263はネタと思われ。
>>263
bcc 5.6
274263:02/11/22 00:47
>>272
ちっ・・・
>>259がむかつくから>>259のふりをしたつもりだが・・・ばればれか。
何かエセ釣り師がイパーイいるなw
こんな明らかな偽物に騙されるとは
とんだハゲオタぞろいだな(W
師ねよ
乱数もまともに生成できないCってほんと糞言語なのな
疑似でない乱数を生成しちゃう言語ってなんですか?
Cのせいにするなよ。
>>277
乱数もまともに生成できないCの実装が糞実装なだけです。
Perl とかでも同じ状況だと思うけどなぁ。
>>277
標準でまともな乱数を生成してくれる言語があったら教えてください。


つーか、「まともな乱数」 なんて重たい物は使いたくないが。
282JPS ◆M0LaMzf5rY :02/11/22 00:51
>>271
こちらでつ。
http://www.chichibu.ne.jp/~kawahira/diary/d200202.htm
2/23のところ。
きちんと規格でrandの実装方法を規定すればよかったのにな!
>>282
VC++のバージョンが書いてないな。
285デフォルトの名無しさん:02/11/22 00:53
>>281
すみませんがまともな乱数の定義をまずおしえてください。
>>271
保存しておいたシード値に、定数 A を掛け、定数 B を足している。
漏れは何でそうかは知らないが、この方法が下位ビットに偏りを産む事が
知られている。
文字列リテラルの型は一体何なのでしょうか。

void func(const char *s); があって、
func("abc"); として呼び出すと、「問題のあるポインタの変換」という
警告が出ます。

どのようにキャストしても警告が消えないのです。
アドバイスをお願いしますm(_ _)m
>>285
周期関数に拠らない乱数列。
一様な乱数の生成方法も知らないのかよ
ほんとお前らアフォだな

int rand(void)
{
 static int r;
 reutrn r++;
}
>>287
const char *にはconst char *もchar *も問題なく入れられるだろ?
>>287
んなこたぁーない
292JPS ◆M0LaMzf5rY :02/11/22 00:57
>>285
疑似乱数じゃない!
>>289
それは数の分布が一様になるが、数の出現規則が存在するので乱数ではない

>>292
それはプログラムで生成することは不可能ですが何か?
294JPS ◆M0LaMzf5rY :02/11/22 00:59
文字列リテラルの型はconst char *でつか?
>>293
人工知能で(^o^*)
296JPS ◆M0LaMzf5rY :02/11/22 01:01
>>293
srand ( ( unsigned ) time ( NULL ) );

i = rand ( ) % 10;
は?
>>287
文字列リテラルは char[n] 型。
>>294
ふつうはchar *だと思うけど・・・
書き換えようとしても文句言わないし。
>>294
const char [N]
>>291>>294>>297
ありがとうございます。どうも私の勘違いだったようです。
うまく警告が消えました。他のパラメタを渡していて、それが
おかしかったようです。
>>296
その式が 1 秒以内に複数回評価されたら全く同じ結果になるだろ。
302290:02/11/22 01:03
無視されました。
>>296
激しく疑似乱数
文字列リテラルが const かどうかは処理系依存だった気がする。
>>304
その話は終わった。帰っていいよ。
>>305
お先に失礼します。
>>306
お疲れさま
308JPS ◆M0LaMzf5rY :02/11/22 01:12
うぅ。でもたしかさ、πみたいな数っていっぱいあるんでなかった?
まあそれは使えないけど。なんつったけ・・・
>>308
何の話デスカ?
>>308
πみたいな数ってのは無理数か?
311JPS ◆M0LaMzf5rY :02/11/22 01:16
>>310
そうですた。無理数ってめちゃめちゃ多いのに、
あ、でも無理数の中でも、繰り返すのがあんじゃん!
名前忘れた・・・。要するに自然界にはすごい乱数がイパーイてことですた。
312JPS ◆M0LaMzf5rY :02/11/22 01:18
>>304
まじで!?オレは文字列リテラルは書き換えちゃだめ
って覚えちゃった。
>>311
繰り返すのは無理数じゃない。
>>311
あんたホントに大学生?経歴詐称してないか?
循環小数は有理数デス・・・・・・・
ちなみに、VC6 はデフォルトで堂々と逝ける。 < 文字列リテラル書き換え
287です。
>>290さん、無視したわけじゃないです(汗。見落としてました。
現在は警告もなく無事コンパイルできて動いています。
318デフォルトの名無しさん:02/11/22 01:26
むりぽ数ってなんですか?
Borland-C++で同一文字列のマージというオプションをONにすると、

char *p = "abcdef";
char *q = "abcdef";

というのがあったとして、*pを書き換えると*qも変わってしまいます。
無理っぽい数です。
>>319
ネタですか?
>>315,313
おれは311ではないが、繰り替えすの意味があいまいなんだよ
たとえば
0.101100111000... 以降繰り返し幅が繰り返すごとに1づつ増える繰り返し
なんてものが作れる。
>>321
-dオプションというのがあるの!!
325JPS ◆M0LaMzf5rY :02/11/22 01:32
>>232
ごめん。循環小数は有理数だね。
無理数ってあらわせない数だっけ?
0.313...とかなんとか、循環小数を表す記号があったような・・・
>>323
それは(曖昧さをなくすならば、周期的でないものは、とでも言おうか)
普通繰り返しと言わないと思う。
>>324
そのオプションの意味わかってる?
>>325
ポインタ変なとこ指してるし.....
ドット `.' だね>>循環小数を表す記号
うーん大学生なのか.......
#include <stdio.h>

int main()
{
char *p = "abcdef";
char *q = "abcdef";

printf("%p %p\n", p, q);
return 0;
}

-d-オプション時
0040B0A4 0040B0AB

-dオプション時
0040B0A4 0040B0A4
319のように本人がマジなものをマジネタ、そうでないものをネタネタと呼ぼう。
/dev/randomを使う
>>331
ふむ.....これが噂に聞くマジネタというやつか....
「同一文字列のマージ」 の意味をわかっていれば 329 には納得できるはずなのだが。
334記者A:02/11/22 01:40
すいませーん!
ここがネタの宝庫だと同僚に聞いて、やってきたんですが。
#include <stdio.h>

int main()
{
char *p = "abcdef";
char *q = "abcdef";

*p = 'X';
puts(q);
return 0;
}

-dオプション時
Xbcdef

うーんおもしろい。
gcc だとセグフォになる
337デフォルトの名無しさん:02/11/22 01:45
*p = 'X';っていいのか?
>>337
だから処理系依存だってば。
ANSI規格では、文字列リテラルを書き換えた場合の振る舞いは不定と
なっているね。
文字列リテラルの書き換えは糞、ということでよろしいか?
よろしい
どっちかと言うとネタネタよりマジネタの方がおもろいよな
果たしてそうかな?
>>339
ん?未定義だろ?
規格を語る時、とりあえず不定という言い方はよせ。
お前等悪徳政治家みたいだな。なんか言われたら
処理系依存です。環境依存です。ってのらりくらりとかわす所が。
>>346
頭悪いですね。相当
>>345
なんで?
>>339
ん?鼻から悪魔を召還呪文だろ?
>>348
規格では不定という言葉を使っていないから。
規格は英語です。
>>350
(゚Д゚)ハァ?
>>351
訳したら不定
unspecified
un・spec・i・fied /nspsfd←/

特に指示してない,明示してない,不特定の
>>346
大事な事だから、しょうがない。
それに気づかないお前を晒しage
無指定と不定って微妙に違くないか?
未定義と不定の区別もつかないヤシがいたとは......
unspecifiedはJISでは「未指定」だったと思うが…
>>355
それは無と不の違いだな?
無ってのは「なし」って事だ
不ってのは「〜ない」って事だ。
指定なし、と指定がないは一緒ですが何か?
359357:02/11/22 02:16
しつれい。
未指定じゃなくて「未規定」か。
http://www.bohyoh.com/CandCPP/C/word.html
北野 欽一は不定っていってる
まあたいしたかわんねーよ
未指定なんていったらばかにされそうだ
ISO規格に出てくる言葉で不定に一番近いのは
indeterminateだと思うがどうだろう?
in・de・ter・mi・nate /ndtmnt|‐t‐←/



1 不確定の,不定の.

2 明確でない,漠然とした,あいまいな.→

3 未解決の,未定の.

キタ━(・∀・)━!
で?
文字列リテラルの書き換えは
未定義
未規定
不定
どれなんだ?
JIS規格は日本語だよ。
で、不定という言葉は使ってない。
未定義ですた。
>>364
JISで不定ってないの?
>>363
実装依存です、¥。
だれもJIS規格なんて見てないからちゃんとした答えが出ない。
板違いだからC板逝ってくれ。
ちょっとの間馬鹿は黙っててくれ
ちょっとの間黙りましたが何か
>>367
実装依存なんて言葉は規格に無い。
文字列リテラルの書き換えは未定義動作。(C99 6.4.5)
>>371
お前は馬鹿ってこった
まさか用語論争まであるとは思わなかった・・・
日本語も出来ないやつにC言語を扱う資格無し!!
規格でどういう用語で表されるか知っているのと日本語が出来る出来ないは関係ない。
ちょっと前にC99の規格の日本語PDFの話が出てからというもの、
C99規格ヲタが増えた気がするのは俺だけか?
>>377
出たの?それってどっかに落ちてる?
実装依存なのは、文字列リテラルが書き込み禁止領域にかかれるかどうか。
文字列リテラルを書き換えるのは未定義。
これでいいだろ。
同意?
↓ 規格ヲタさん文章の校正をお願いします。
>>文字列リテラルを書き換えるのは未定義。
まず日本語としておかしくないか?
ま、まあいいんでないか?
ていうか文字列リテラルを書き換えるのは厨房がする事だと思われ
>>382
そんなつっこみいらねーんだよぼけ
おまえは理解力ってのがねーのか
チョソでつか?
>>383
そういや書き換えて楽しんでるやつらがいたな〜
1回まとめときましょう。

・未規定の動作 (unspecified behavior)
 規格が複数の動作の可能性を示し、どちらであるべきか何も要求しない動作。
 例)関数呼び出しの引数の評価順序。
・処理系定義の動作 (implementation-defined behavior)
 未規定の動作のうち、どの選択肢を選んだか処理系が文書化しなければならないもの。
 例)符号付き整数を右シフトしたとき、最上位ビットがどうなるか。
・未定義の動作 (undefined behavior)
 可搬性の無いまたは誤ったプログラム構文ないしは
 誤ったデータまたは不定値のオブジェクトを使った動作。
 結果について、規格では何も規定しない。
 例)整数のあふれ
>>378
ごめん、勘違いだ。英語版だった。
>>384
はぁ?チョソはおまえだろがぼけなす
もう飽きたから寝ます。
明日の昼までに決着つけてね。

−−−−−−−−−−−−−−−−−−−−−−−−−−
俺様用しおり
∧_∧
( ・∀・)< 今日はここまで読んだ。
−−−−−−−−−−−−−−−−−−−−−−−−−−
もう決着ついたじゃん
明日の昼といえば約35時間後か
>>391
激しくロケールに依存。
>>392
ロカールな。
>>393
口−力ノレだろ。
395デフォルトの名無しさん:02/11/22 06:40
こっちがアレの方だったのか!!マルチ失礼します。

ソースコードよんでたらexit(98);とかありました。exit(-1)とかならよく観るんですが、98は知りません。
この引数の意味がわからないです。おしえてください。
独自に日本語化した団体もあるけど実際に表には出てないな。< c99規格書
独自に日本語化した団体もあるけど実際に表には出てないな。< c99規格書
exit(status)はプログラムを終了させてstatus&0377と言う値を親プロセスに返す。
2重カキコスマソ。
二重カキコした397。あやまれ
401デフォルトの名無しさん:02/11/22 07:35
文字列リテラルはもはや書き換え可能ではない(K&Rより)と言いながら、constにしないのは古いソースと互換性を持たせるため?
俺様用しおりってさ皆同じしおり使ったら誰が誰のか分からなくなるんぢゃない?
俺の詩織は他の奴には使わせん。
404デフォルトの名無しさん:02/11/22 10:36
Cスレはマ板に引越ししる!
405デフォルトの名無しさん:02/11/22 10:59
>>403
すまん、この間ちょっと使わせてもらった
>>403
お世話になりました
>>403
ああ、俺もよく使ったよ。もう厭きたから君に返すよ
exit(-1)ねえ。びみょーだなあ。

exitの引数としてC言語的には
0およびEXIT_SUCCESS … 「正常終了」を表す処理系定義のステータスがホスト環境に返る。
EXIT_FAILURE … 「異常終了」以下同文
そのほかの引数 … 処理系定義の動作
とあるだけだから。

POSIX的には>>398のとおり。呼び出したプロセスには255が返る。

exit(98)がどういう意味かなんてのは、そのプログラムのドキュメント
に書いてないの? たとえばgrepやqmail-localなんてのは、いろんな
終了の仕方をexitステータスで通知するけど。
>>401
だろうね。
char *p = "string";
でいちいち警告が出たらうるさいよね。
>>409
最近のC++コンパイラはそれで警告が出るのでウザい。
だが、そのおかげて数カ所バグを見つけてしまったので、
const char *p = "string"; として、警告が出ないようにしてる。
411デフォルトの名無しさん:02/11/22 16:19
−−−−−−−−−−−−−−−−−−−−−−−−−−
俺様用しおり
∧_∧
( ・∀・)< 今日はここまで読んだ。 ID:0001392
−−−−−−−−−−−−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−
俺様用さおり
     _,.'⌒
    '´   ヽ  
    ! 〈ノ )))) 
   ノ! l.゚ ヮ^人 < ここまで〜
 (´ノ⊂)H!つヽ  
−−−−−−−−−−−−−−−
413デフォルトの名無しさん:02/11/22 18:40
−−−−−−−−−−−−−−−
俺様用かおり
     _,.'⌒
    '´   ヽ  
    ! 〈ノ )))) 
   ノ! l.゚ ヮ^人 < ここまで〜
 (´ノ⊂)H!つヽ  
−−−−−−−−−−−−−−−
−−−−−−−−−−−−−−−−−−−−−−−−−−
俺様用しおり
∧_∧
( ・∀・)< 今日はここまで読んだ。 ID:0001392
−−−−−−−−−−−−−−−−−−−−−−−−−−
#ifdef __俺様__

  俺様だけのしおり。今日はココから

#else
  *"hoge" = 0;
#endif
みんなの環境では、これの結果は何になる?
printf("%d %d\n", sizeof("12"), sizeof("1234"));
>>416
試すまでもなく
3 5
>>416
3 5
ですが何か?
−−−−−−−−−−−−−−−−−−−−−−−−−−
俺様用しおり
∧_∧
( ・∀・)< 今日はここまで読んだ。 ID:0001392
−−−−−−−−−−−−−−−−−−−−−−−−−−
初期化されていない自動変数の読み出しが未定義
ってことは、何か。

  char s[20]; *s = '\0';

とした後で、
s[0]以外を読んだらアウトなのか。memcpyもアウトか。

糞め。
>>420
糞はおまえだ。タコ
>>421
タコはおまえだ。糞め
>>420
*s = '\0'; は初期化じゃないから安心しろ。
>>423
はあ?何の関係があんの?
>>420
アウトではありません未定義です。

氏んでね♥
>>425
out → 不適当な、間違っている、etc...

英単語くらい覚えて氏ね♥
−−−−−−−−−−−−−−−−−−−−−−−−−−
俺様用しおり
∧_∧
( ・∀・)< 今日はここまで読んだ。 ID:0001392
−−−−−−−−−−−−−−−−−−−−−−−−−−
とりあえず &hearts; 付けてる香具師は市ね
♥ってこうやるのかな?
つまんねーな
JPS早く来ないかな
皆のcプログラマ歴は?
おいら3年半位:まともに書いたコード数2万行位
3年もやっておいて未だに行数なんか気にしてんのかよ(プ
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
俺様用しおり
∧_∧
( ・∀・)< 今日はここまで読んだ。 ID:0001392
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
JPSさん♣&diads;ご降臨ください!
♠♦
>>426
(゚Д゚)ハァ?間違ってねえよ。未定義なだけ。
あと勝手に「不適当な」なんて訳考えて逃げうつなや。ハゲが。
500回氏ね。
http://eiwa.excite.co.jp/view.jsp?block=40718&offset=1020&id=NEW_EJJE
http://dictionary.goo.ne.jp/cgi-bin/ej-more_print.cgi?MT=out&ID=EJ-218580.txt&sw=0
http://dic.lycos.co.jp/pej/result.html?query=out&id=o-001399&first=41&encoding=shift-jis
糞PGに限ってプログラム歴を気にするヤシが多いよな
C言語ってうんこするの?
歴はマ板行けよな。
>>436
> (゚Д゚)ハァ?間違ってねえよ。未定義なだけ。
ひょっとしてお前の頭は「間違い=文法エラー」のレベルですか?

> あと勝手に「不適当な」なんて訳考えて逃げうつなや。ハゲが。
ぎゃはは。自分が参照できる数少ない辞書に載ってなかったら
「勝手に」になるのか。すごいなお前。

真性厨房決定。
441デフォルトの名無しさん:02/11/23 10:40
>>436 , 440
どっかいけよ。
C の文法語るときの“未定義”という単語自身は Well defined ですが
“アウト”はそうではないですね。
ansi.sysの前にコンパイラが駄目でした
int array[10];
int i;
for(i=0;i<10;++i){
    array[i] = i;
}
で数字を並べただけの配列arrayを ランダムに ソートできませんか?

結果として
array[0]=7
array[1]=3
array[2]=5
    :
array[8]=8
array[9]=2
のようにする。
445デフォルトの名無しさん:02/11/23 22:35
質問age。

#このすれって実質<45>だよね?
前スレのこっているけどな。
http://www.catnet.ne.jp/kouno/c_faq/c11.html#33

極端な話、未定義の処理をやってみて
ノドンが飛んできても処理系の責任には
できないわけやな
極東の話、未定義の処理をやってみて
テポドンが飛んできてもチョソ系の責任には
できないわけやな
はい質問!
>>444
> ランダムに ソートできませんか?
できるんですか?
ノドンやテポドンが飛んできそうなコードを書いたら警告してくれる処理系が良い。
>int array[10];
>>>int i,j,k;
>for(i=0;i<10;++i){
> array[i] = i;
>}
randomize();
for(k=0; k<20; k++){//<-20は任意
    i=random(10);
    j=random(10);
    int tmp=array[i];
    array[i]=array[j];
    array[j]=tmp;
}
>>451
randomize() ってなに?
標準ライブラリに入ってる?
453manko_chinko ◆GLc2rpKRNM :02/11/23 23:10
こんなんじゃないの
#define randomize() srand((unsigned)time(NULL))
万小チンコ ウザイ
time_t t;
srand((unsigned) time(&t));
出来ました?
>>451
Thax.
でもarrayの中身をぶち込んだ跡で
混ぜたいのです。
何度か混ぜる処理を途中に挟むので。

# マンチン@GLc2rpKRNMタン 出現あたりから
# ほぼ同時にPGはじめたのに結構佐賀で棚…
# 速度の違いなのか?チョト鬱w
>>457
> でもarrayの中身をぶち込んだ跡で
> 混ぜたいのです。

>>451 は俺には、
 “中身の入った配列から、ランダムに決めた i 番目と j 番目の要素を
  20回入れ替える”
コードに見えるんだが…
(でも相変わらずランダムに“ソート”は出来ていない)
ランダムに並び替えできてんじゃないの?
シャッフルの事をソートと呼ぶなよ・・・
ランダムにソートすることがシャッフルですが何か?
ランダムな順番にすることを整列とは言いませんが何か?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void shuffle(int array[], size_t array_idx_max)
{
size_t r; int swap_tmp;
if(!array_idx_max)
return;
r = (size_t)(rand() / (double)RAND_MAX * array_idx_max + 1);
swap_tmp = array[0];
array[0] = array[r];
array[r] = swap_tmp;
shuffle(&array[1], array_idx_max - 1);
}


int main()
{
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
const size_t array_idx_max = sizeof(array) / sizeof(int) - 1;
size_t i;
srand(time(NULL));
shuffle(array, array_idx_max);
for(i = 0; i <= array_idx_max; i++)
printf("%d: %d\n", i, array[i]);
getchar();
return 0;
}
ループの中で呼び出される関数は、その関数内のローカル変数は、staticで宣言したほうが
効率がいいのですか。
関係ないっしょ
>>463
自動変数をスタックに確保する方式の場合、マシン語 0 〜 2 命令程度のコストしかかからない。
それを効率悪いと呼ぶのは自由だが、今日びの CPU は秒間数億を超える命令を実行できる。
>>463
staticだと必ずメモリ上に置かれるので、かえって効率が落ちる可能性もある。
autoなら、うまくするとレジスタに割り当てられて速くなる。
とくに、RISCだと絶対番地からロードするのは苦手なので。
あ。
前スレが dat 落ちしちゃったよ。
まだ 1000 逝ってなかったのに・・・。
>>459-462
thax.
私のためにもめないでー(♥´Д`)
■ C言語質問所 <43++>
http://pc3.2ch.net/test/read.cgi/tech/1037134356/l50
■ char *c[44] = {"C言語のことは漏れに聞け!"};
http://pc3.2ch.net/test/read.cgi/tech/1037796472/l50

同時進行だからなー。
43++の方は2-200前後まで透明あぼんぬしとけば問題ないし。
おいっ!>>444
「ランダムにソート」を
日本語か英語に一本化しろ!
通じないぞ!
そもそも 「sort」 = 「並べ替え」 と思っている時点で DQN なんだよな。

「sort」 は 「種類」、またはそれに応じて区分けする事。
転じて、コンピュータ用語では 「整列」。

「並べ替え」 は 「arrange」。
>「並べ替え」 は 「arrange」。
(ププ
今グラフの地点間の最短距離のプログラム作ってるんですが、
どうしても、うまく行かず、誰か助けてください。

template<class T1>
structgraphVertex{//地点に関する定義
graphVertex<T1> *nextvertex;//次ぎの地点へのポインタ
T1data;
intindegree;
intoutdegree;
intpathlength;
boolintree;
graphEdge<T1> *edge; //地点からの枝に付いてのポインタ
};

template<class T1>
structgraphEdge{
graphVertex<T1> *destination;
intweight;
boolintree;
graphEdge<T1> *nextedge;
};
とりあえず、データセットの定義で、次は、関数の定義です。
あ、CLASSとTEMPLATEを使用してます。

template<class T1>
bool graph<T1>::findshortest(T1 fromkey, T1 tokey){
if(!first)
return false;
Queue<char> que;

graphVertex<T1> *locptr = first;
graphEdge<T1>*locedge;
while(locptr != NULL){
locptr->intree = false;
locptr->pathlength = INT_MAX;
locedge = locptr->edge;
while(locedge != NULL){
locedge->intree = false;
locedge = locedge->nextedge;
}//end while
locptr = locptr->nextvertex;
}//end while
Stack<T1> stack,stackrev;
T1 outs;
graphVertex<T1>*chkptr;
graphEdge<T1>*edgeptr,*minedgeptr, *pathptr;
int newpathlen, minedge, minpath;
bool treecomplete = false;

locptr = first;
while(locptr != NULL && locptr->data != tokey)
locptr = locptr->nextvertex;
if(locptr == NULL)
return false;
locptr->intree = true;
locptr->pathlength = 0;
stack.push(locptr->data);
while(!treecomplete){
treecomplete = true;
chkptr = locptr;
minedgeptr = NULL;
pathptr = NULL;
newpathlen = INT_MAX;

>>473-
それC言語のプログラムじゃねーんだわ。
C++のスレあるからそっち逝ってくれ。
ごめんなさい
C と C++ の区別がつかない人が居るのか・・・。
区別が付かないのではなく、書くべき場所を間違えたと言った方が正しいでしょう
480デフォルトの名無しさん:02/11/24 13:47
IEEEにC言語の規格はありますか?
481デフォルトの名無しさん:02/11/24 13:53
>>480
POSIXにCのヘッダや標準関数も含まれてるが、
言語自体はないと思う。
482デフォルトの名無しさん:02/11/24 13:57
例えばTurbo Cで定義されているグラフィック関数などを、LSI C-86で
使ったりすることは不可能なんでしょうか?
>>482
コンパイラが互換を謳っていない限り、基本的に処理系依存の事は不可能だと思ってくれ。
>>482
それはC言語の話じゃなくて
処理系の話なので、
処理系に詳しい人に聞いて。俺は知らん。
>>483-484
すいませんでした。ありがとうございます。
486デフォルトの名無しさん:02/11/24 14:16
if ("false") printf("false\n");
だとfalseが表示されてしまいます。
>>486
日頃の行いが悪いからだ。
if("false")
↑これってなに?
if 文
490488:02/11/24 14:30
>>489
そりゃそうだ。誰もこれがwhile文に見えたりはしません。
俺が言いたいのはなんでfalseを""で囲んでるのかってこと。
>>490
文字列リテラル(文字列定数)を知りませんか?
>>490
文字列にすれば真になるというつまらないネタだろ・・・
>>490
囲まなかったら(false を定義してないと)エラーになるだろーが
494488:02/11/24 14:32
>>491
だけど""で囲んじゃったらif文が通るのは当たり前じゃなくて?
>>494
明らかなネタだろうが。
496488:02/11/24 14:34
禿しく勘違いしてた。
ネタでしたか・・・
497 :02/11/24 14:36
if(0[""]) print("false");
とするとfalseとプリントされません。
#define print(x)
500499:02/11/24 14:38
いや、printfでも""[0]==0なんだからプリントされないか
500ゲt
>>499
コロすよ?コロッコロッ!
C言語でGUI使いたいんで、情報ください。
504503:02/11/24 14:53
すまん。ここスレ違いだった。
http://yasai.2ch.net/arc/kako/978/978796922.html (2,781,972 bytes)
このスレのように 1000 を突破するには C でどのようにすればいいですか?
506デフォルトの名無しさん:02/11/24 15:05
>>505
標準Cではできないから他のスレにゆけ
507知りたい人:02/11/24 15:25
テキストファイルから漢字を読み込むことはできるのでしょうか?
できるなら、そのやり方の手ほどきを、
なさりたいことがよくわからないのですが、
fopenあたりを調べると幸せになれるかも。
509知りたい人:02/11/24 15:32
いつも、c = getc(fp)等で英数字一文字を読み込んでいたのですが、
漢字の場合、半角でなく、全角なのでどうすればよいのかと、
>>509
全角か判定して、全角ならもう一回読み込む。
>>504
スゲ−な 12535まで見る事が出来たぞ。↓

12534 名前: ゲームセンター名無し 投稿日: 2001/08/04(土) 17:27

あしあと



12535 名前: 1001 投稿日: Over 1000 Thread

このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。





--------------------------------------------------------------------------------
2ちゃんねるは、ここのサーバを使ってるです。。。
C言語で脱初心者と言えるには、どんな事ができればいいんでつか?
Cコンパイラを作れる。
>>514
そりゃ無理ね...
516513:02/11/24 16:02
ソートとかサーチとか、データ構造とかも
一応ひととうりやったんだけども・・・
なら2ch名物リバーシでも作ってみたら?
人間とCOMがそれぞれ先手・後手を選べる奴。
そりゃC言語のスキルとは関係ないんじゃ?
C言語である程度の規模の構造化されたソフトウェアを
設計・実装できるってのは重要だよ。
パズル解くプログラムでも造れ
極端な話、変数全部が大域変数とかいうメチャクチャなコード
でもリバーシぐらいだったら作れちゃう訳で。
プログラミングのスキルとC言語のスキルは別だと言いたかっただけ。
まずは、「一通り」 を 「ひととうり」 と書かない事だ。
だからといって滅茶苦茶なコーディングでは
破綻してしまうくらい大きな模の例題なんて既に例題ではないし
stdio.hを自前で実装なんてのも現実的とはいえない。

C言語の中級者とは文法・アルゴリズムとデータ構造・
ソフトウェア開発サイクル全体を一通り経験している人間のことだと思うよ。
524デフォルトの名無しさん:02/11/24 16:26
C言語でhostコマンド似たような実行をするプログラムって、
どんなプログラムになるんでしょう?
よろしければ、解いてみてくださいm(__ __)m
gethostbyname使え
526513:02/11/24 16:31
リバーシってオセロみたいの?
オセロは登録商標だから。
528デフォルトの名無しさん:02/11/24 16:38
include <stdio.h>
int main(void)
{int s;
int i, j;
s = 1;
for(i=0; i<5; i++){
for(j=0; j<s; j++){
printf("*");
}
printf("\n");
s++;
}

return 0;
}
このコードを実行すると
*
**
***
****
*****
と出るわけですが、どうもわかりません。
forですからi=0 j=0 *1つ s=1
i=0 j=1で(j=1)<(s=1)でここは終わり。
次にi=1 j=0 * s=2 i=0 j=1 (j=1)<(s=2)ですからもう1つ*,
i=0 j=2 (j=2)<(s=2)でここは終わり
次にi=2 j=0 * s=2 , i=2 j=1 * s=3, i=2 j=2 * s=4, i=3 j=3 * s=5, i=3 j=4 * とどこまでも続いて行くような、、、、、
納得させて下さい。お願いします。
>次にi=2 j=0 * s=2 , i=2 j=1 * s=3, i=2 j=2 * s=4, i=3 j=3 * s=5, i=3 j=4 * とどこまでも続いて行くような、、、、、
もうちょっとがんばれ(藁
530デフォルトの名無しさん:02/11/24 16:43
わかりました。forのなかだけで計算してしまい、終わると段落ができてsが加算されるのですね。これでいいですか?
531デフォルトの名無しさん:02/11/24 16:44
>>530
んだ
>>513
漏れは↓を C++ の STL で作ったが、これを C で書いてみたらどうだ?
http://pc.2ch.net/test/read.cgi/unix/1025600265/367-385
単語に対する読みの集計。

入力は 1 行 1 レコードのファイル (自分で作る)。
レコードは、単語\t読み\n のフォーマットで、単語も読みも重複する。
この読みを集計して出力する。
出力は単語を大文字小文字区別しないでソート。
単語内では数の多かった読みの順、同じ数の場合は読みの文字コード順でソート。


あとは、fputc() と fgetc() を除く全標準ライブラリを自分で書いてみるとか。
533デフォルトの名無しさん:02/11/24 16:54
530です。

せっかくですのでもう1つ質問です。僕は今年の11/12から「やさしいC」という本で勉強中ですが、一日二時間は最低勉強して何年すればC原語が使いこなせるようになるでしょうか?今は答をみないと練習問題も分かりません。
またこの入門書は繰りかえし勉強するべきでしょうか?_そしてどのくらいしたら今度は「アメリカの大学の教科書の本格的なCの入門」という入門から中級(おそらく)あたりの本へすすむべきでしょうか?またこれじゃなくお勧めの本はありますか?
C原語はしらんが
C言語なら何年もの必要は無いだろう。
使いこなすってのがどのくらいのことを言うのかにもよるが。

言語自体は数ヶ月。一人前にプログラミングするのに必要な計算機の知識は、
まあ最低5〜6年の勉強が必要だろう。
535232:02/11/24 17:11
>>533
(・∀・)イイ 本だね。麻奈本。
536デフォルトの名無しさん:02/11/24 17:13
何回か繰りかえしたほうがいいですか?それとも入門から中級の本格的な本をやったほうがいいですか?
537 :02/11/24 17:17
>>533
その、分からない、つーのは間違っているとしても自力で解くこと自体が出来ないのか?
そういう奴はプログラムするのに向いているとは言えないな。
何年かかるか予想も出来ない。もしかすると一生出来ないかもよ。

とりあえず、分かるようになるまで何度でも繰り返しやれ。
そんな状態では本格的な本に進んでもやっぱりわからんままだわ。
>>536
まともなプログラマになりたいなら情報系の大学院に逝きなさい。
ただ食えればよいならとにかくWinでコード書きなさい。
趣味なら自分の楽しいことだけやりなさい。
540537:02/11/24 17:19
間違って書きこんでしまった鬱だ死のう。

とりあえず、はじめてのCでポインタと構造体まで読んだら
あとは、オンラインマニュアルの使い方を覚えて
K&Rを手元においておき、仕事をしながら覚える。
>>535
麻奈信者ハケーソ
>>533
次の本に進むという以前に問題が解けないのは痛い気がする・・・
本の内容はわからないけど、たぶん入門書ならそこまで長いプログラム
はないと思うから、大まかなプログラムの流れを考えてみるといいかも。
それから実際にコーディングしてみると解けるかもしれないよ。
543デフォルトの名無しさん:02/11/24 17:37
>>539
アホですか?
まともなプログラマになるのになんで情報系の大学院に行く必要があるわけ?
>>543
さっそく釣れました(w
545nanashi:02/11/24 17:39
すみません、書いたコードが上手く動かなくって、
上手くいかない原因が分かりません。
どこがおかしいのか教えて下さい。
546nanashi:02/11/24 17:40
#include <stdio.h>

//関数の宣言
int tokuten(float, float *);
int beki(float, int,float *);

main(){

//変数の宣言
float daritu;
float kekka;

//開始
printf("全ての打者の打率がnと仮定したときの一試合辺りの得点の期待値を計算します。\n");
printf("打率nを入力して下さい。【0.000-0.999】\n");
scanf("%f",&daritu);
printf("打率が入力されました。\n");
tokuten(daritu, &kekka);
printf("打者全てが打率%fの時、一試合辺りの得点の期待値は%fとなります。\n",daritu,kekka);
getch();
printf("END");
return 0;
}

547nanashi:02/11/24 17:40
//関数の定義

int tokuten(float a, float *b)
{
int i,k;
float c;
*b=0;

for(i=1;1<100;i++){
c=0;
k=i+2;
beki(a,k,&c);
c=c*(1-a)*(1-a)*i*(i+4)*(i+3)/2;
*b=*b+c;
};

}


int beki(float a, int b,float *c){
int j;
*c=1;
for(j=1;j<=b;j++){*c=*c*a;};
}
これまた恐ろしいほどのクソコードなりね.......
549nanashi:02/11/24 17:43
printf("打率が入力されました。\n");

までは上手く表示されるのですが
それ以降ストップしてしまいます。
どこに原因があるのかがよく分からないのです。
550デフォルトの名無しさん:02/11/24 17:43
>>543
まあ、大学院に行ってみれば分るよ。
学部では入門しかやらない。まともにOSやコンパイラを作れるような
知識が身につくのは大学院に行ってから。
>>nanashi
>for(i=1;1<100;i++){
1<100 は永遠に真だろがヴォケ
552 :02/11/24 17:49
>>549
得点の期待値をどうやって計算しているのか
説明してください。
コード読むの面倒くさい。
553552:02/11/24 17:50
うぉ解決されてしまった。恥
554nanashi:02/11/24 17:51
>551
上手くいきました。
ありがとうございます!

こんな書き間違いをしていたとは・・・・
>>547
> int tokuten(float a, float *b)
> int beki(float a, int b,float *c)

何も返さないならvoidでいいんじゃないかな?
あとgetch使うならconio.hwpインクルードした方がいいんじゃない?
556デフォルトの名無しさん:02/11/24 17:58
>>550
大学で学ばなきゃ出来ないと考えている時点であんただめだめだよ。
自分で調べて自分で習得しろ。
俺は情報系じゃなかったけど、大学2年までにCのコンパイラぐらい作ってたぞ。
>>556
マジか?鬼だな。
558nanashi:02/11/24 18:01
>555
分かりました、勉強してみます。
アドヴァイスありがとうございます。
>>558
すまん、間違えた。

>あとgetch使うならconio.hwpインクルードした方がいいんじゃない

『これconio.hをインクルードした方がいいんじゃない?』に訂正
>>556
その後、ちゃんとした大学院に行けばもっと磨けたのにもったいない。
>>557
大学院に行けば、高校のころにProlog作ったなんてやつは珍しくない。
そういう奴等が刺激しあって向上していく。
大学院ヲタウザい
「でも自分で勉強しても限界が来るときがある。その時に大学院なんかに
行って勉強した方がいい」

こんな話しを聞いたことがあるよ。
趣味で食えるまともなプログラマになりたい
>>561
Prologて.....
大学2年でCコンパイラ作れたら
卒業するころにはOSの2つ3つ作ってんだろうなぁ
俺や同輩以上はだいたい学部卒だが、たしかに部下や後輩を見てると
大学院出たやつは違う。

もちろん個人差はあるけど、傾向としてははっきりしてる。
格が違う。
「blogの創世記は〜」とか云ったりするんでしょうか。
やはり格が違いますね
568デフォルトの名無しさん:02/11/24 18:16
まったりと大学院の話をしているところに割り込んでわるいのですが、質問です。
システム日付を取得する方法ってどんなのがあるのでしょうか?
569 :02/11/24 18:16
>>565
OSは一人では作れないと思うよ。

>>561
高校生でPrologのインタプリタ/コンパイラってすごいな
ざらにいると書いてるけど、実はひとりしかしらんだろ?
570 :02/11/24 18:17
>>568
localtime
>>569
Cコンパイラだって一人で作ったら相当すごいと思うけどなぁ
でもさそうやって自作されたコンパイラが出てきてしょっちゅう話題になる
ってこと遭遇していないんだけど。マイナーなマシンでの話?
それともコンパイラみたいなものは、できたけど吐くのは全然最適化できてない
糞コードか。できの悪い車輪の再開発だったら自己満足のレベル。
Prolog なんて今どき使ったことあるやつ探すだけも一苦労だぞ(w
>>561どこの大学院なんだ?
574デフォルトの名無しさん:02/11/24 18:28
>>572
コンパイラを作ることでたくさんえられるものがあるだろ。
おまえさんには一生作れないだろうからなにが得られるかわからんだろうが。
はぁ・・・最近マ板用の話題ばっかだな・・・
なんだやっぱり糞レベルか。
577デフォルトの名無しさん:02/11/24 18:33
とりあえずマ板行け。
まさかtinyCみたいなサブセットをもってCのコンパイラなんて言ってないよねぇ?
struct も typedef も sizeof も 関数ポインタやなんかも当然使えるよねぇ?
そのコンパイラでLinuxのkernelのコンパイルもできるよねぇ?
ちょっと見てみたいなぁ。ソースうpキボンヌ。
> ソースうpキボンヌ。
ワロタ。
わかりやすく言うとだな、
1.コンパイラを作れないレベル
2.糞コンパイラを作れるレベル
3.すばらしいコンパイラを作れるレベル
に分けると、俺は1で、その大学院の奴が2ってこった。
で、1の奴は2の奴が3でないことを馬鹿にし、
2の奴は1が2でないことを馬鹿にし、

   3の奴はいない。
>>580
よくわかりますた。
>Prolog作った
Prolog[で何か]作った
しかし「Prolog作った」と言われれば普通
「Prologの言語仕様を考え出した」と思うよなぁ
プ)
糞コンパイラも作れないヤツが何言ってんだか。
俺は2番ね
585 :02/11/24 18:39
>>584
ソ ー ス う p キ ホ ゙ ン ヌ
あーつまんねースレ。
っつか、どこがC言語やねん。
>>580のおかげで3以外のレスは糞レスにしか見えなくなってきた。
589JPS ◆M0LaMzf5rY :02/11/24 18:40
キャッシュメモリとレジスタってどう違うんでつか?
590manko_chinko ◆GLc2rpKRNM :02/11/24 18:40
>>580
そもそも3はひとりじゃ作れないだろう。
591デフォルトの名無しさん:02/11/24 18:41
とりあえず、消えろ。オマイラ
>>589
スレ違い
593 :02/11/24 18:42
>>589
さっきの時刻ってどうやってにしろ、
てめぇで調べるということを、きさまら知らんのか
くそコテが2人同時に降臨しますた
595デフォルトの名無しさん:02/11/24 18:43
>>590
変態が参加すんな。ここはおまえがきていいスレじゃない。2度とくんな!!
596デフォルトの名無しさん:02/11/24 18:44
>>595
お前が消えろ。
597デフォルトの名無しさん:02/11/24 18:44
/\ |  /|/|/|  ドドドドドドドドドドドド!!
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |文|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`)
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |

>>596
オマエモナー
Cスレはどこももう終わったな。
みんなさようなら。
今まで厨な質問に親切に答えてくれたり逆に叩かれたりといろいろな思い出ができたよ。
俺みたいな奴はほとんど回答する側に回れなかったけど、それでも、
こんな俺でも答えられるような質問があって、質問者から「ありがとう」って
言われたときはとてもうれしかった。
規格論争には俺みたいなレベルじゃ加われなかったけど、論争を見てるだけでも
少しは俺の血となり肉となったと思う。
でももうさようならを言わなくてはならない時期にきてしまったんだね。
ここで出会った人たちとまたいつかどこかで出会えたらいいな。

みんな、本当にありがとう。
600デフォルトの名無しさん:02/11/24 18:45
   /⌒~~~⌒\                       (   ,,)   (,,・Д・)
 / ( ゚>t≡ )y─┛~~                〜(___ノ  〜(___ノ ,γ_
(_ ノγ U  ∩_∩)   THANK YOU 2ch     ┌───────┐   \
  α___J _J         and          (| ●        ● |      ヽ
  / ̄ ̄ ̄ ̄\  GOOD-BYE 2ch WORLD! /.| .┌▽▽▽▽┐ .|____|__||_| ))
 /     ●  ●、                   ( ┤ .|        | .|□━□ )
 |Y  Y       \ またどこかで会おうね  \.  .└△△△△┘ .|  J  |)
 |.|   |       .▼ |                 | \あ\      | ∀ ノ
 | \/        _人|∧∧∩゛冫、 .∧_∧      |    \り.\     . |  - ′
 |       _/)/)/( ゚Д゚)/ `  . (´∀` )..ヽ(´ー`)ノ  \が\ .   |  )
 \    / 〔/\〕 U  / ∩∩ (    ) (___)    \と.\ .|/
  | | | c(*・_・)  |  |ヽ(´ー`)ノ_|  |  | |   |〜 /\.\う\| (-_-)
  (__)_) UUUU /∪∪ (___)(_(__) ◎ ̄ ̄◎─┘ .└──┘.(∩∩)
これはすごい IE ですね
>>599
はいはい、さっさと消え失せろ。ウザイ
603デフォルトの名無しさん:02/11/24 18:47
キャッシュメモリ:CPUに近いかつアクセスの早いメモリ。
           メインメモリーに比べてな。
レジスタ:CPUが直接操作できるビット列。
604デフォルトの名無しさん:02/11/24 18:51
>>603
レジスタの部分が間違っているぞ
レジスタ:CPUの作業領域
またCの話じゃないんだよなこれが。
607デフォルトの名無しさん:02/11/24 18:57
>>606
C言語ってどうしてCの名前が付いたのですか?
月並みな質問ですみません。
>>607
Computer Language
609JPS ◆M0LaMzf5rY :02/11/24 18:58
ありがとん
>>608
BCPLという言語があって、
次にBという言語があって、
その後継がC。
だから、次はP。
>>609
自分で調べることが大切だって事覚えろよ。
612デフォルトの名無しさん:02/11/24 19:02
A・・・アセンブラ
B・・・Basic
C・・・C言語
D・・・Delphi
E・・・
F・・・Fortran
G・・・
H・・・HSP

ですか?
E ... Eiffel
614デフォルトの名無しさん:02/11/24 19:04
A・・・アセンブラ
B・・・Basic
C・・・C言語
D・・・Delphi
E・・・Eiffel
F・・・Fortran
G・・・
H・・・HSP
I・・・
J・・・Java
K・・・
L・・・Lisp

ですか?


615manko_chinko ◆GLc2rpKRNM :02/11/24 19:06
>>612
A・・・Ada
B・・・Basic
C・・・C
D・・・Delphi
E・・・沖田浩之
F・・・Fortran
G・・・スポット
H・・・HSP
なんか低レベルなスレになってる・・・
A ... Ada, B ... Basic, C ... C, D ... Delphi, E ... Eiffel, F ... Fortran, G ... German, H ... Haskell,
I ... Italy, J ... Java, K ... Korean, L ... Lisp, M ... ML, N ... , O ... O, P ... Python, Q ... , R ... Ruby,
S ... Smalltalk, T ... , U ... , V ... , W ... , X ... , Y ... , Z ...
うーん限界か...
G…Gedanken
I…Icon
K…KL/1
N…
O…Oc
Q…
T…Tという言語は2つ知ってる。
Z…Zという言語はあるね。
619デフォルトの名無しさん:02/11/24 19:16
T...Tonyu
Y...YGS
>>612-619
以前に同じ子とやったろ?
621デフォルトの名無しさん:02/11/24 19:28
V...VHDL
U ... U-BASIC
623デフォルトの名無しさん:02/11/24 19:30
>>612-619
スレ立てるまでもないでやれよ。ここですんなよ、言語お宅が!
っていうか、呆れ・・・
625デフォルトの名無しさん:02/11/24 19:37
A〜Zを埋める論争はスレ立てるまでもない。に移動しますた。
よし、じゃあ次はアイウエオで。
つーか答えはネットに埋まってるぞ
庭に埋まってるぞ
便所で詰まってるぞ
630デフォルトの名無しさん:02/11/24 20:56
           _,.. -,.='''''''' ー- 、_,/  _,,.,-ヽ,
         ,.-彡,.-',...ミ_  -、 '_,く  / _ノ-ニ_`>
        /_,/.i- 、く   ~`ヽ、  、.\,.彡'ム,∠..,,_
       /r‐./  l  \\    \ ヽ  r'゙,,.-‐''゙~ l,
   ,r一‐-'/, ' l   l.ヾ 、ヾ 、\   ヽ \ ヾ, .,._=ニニ=l,
  ノ'''゙゙゙゙`// .|  | l ヽヽヽ,ヽ _ヾ、  ヾ, ヽ. `ーtヮ-'_ノ|
 /,. -─/ l  |  |'、 l、ヽ,ヽ V\_ヽゝ  l'、 | l r'`゙゙゙~ ,. ヘ
  ̄>-| | l  |  .|ヽ l\ヽ'、i /f"{、)`ヾ.}.|ノへ-_‐;ニ-t'゙,,
∠~-'''''| | .l .ヾ、 ,キ' ヾ、 `ヾjl. ゙ ヽ  キ ヒミ、},-、__,...ヅ!
  | _,,....l .l | ヽ  V、_lr゙,-'、      \_ヅ 〉リヾ、-‐ニ-'ノ
  ゙-_つヾ、ヽヽ `ヽキ t‐゙ \          lン'`!| L.. -'"
   )ー--`ヾ、t、`ミ!、` ヽ、_ヅ ' ,. ヘ.   /"  j,! 
   (__-_-一'''ツヽ~|.|'`ヽ、    ヽ、. }  ,イ__ 
    r-‐゙''_'.ヅ  .|.l`'ー-ゝ、...,,,______"/ |_ <`lニ!''''''''''''''/ニ、ー、_
    Lミ_`ー=ヮ  ヾ、.  ,ム,,,,,,,/~コ     ヽi ヽt--,-,,,,_ l",/ l  ゙`‐ 、 _
     `ー‐'"     r'T~/,'./~r゙==ー-、,/  /,'.,'//, '`く   l      `)
               / -'〉゙,'/ .l l |"O `/  /,'.,'/'゙,べ  ヽ.   l    _,.-'"
            /_,_./,'./ヾ、l l.|  /_,..-_ニレ-| ん ヽ、. |.  .l~ ̄
           |/_,,,,゙Yー`-、_l | /_,,,,-ニ、レ-ー、ヽ,     h..  .l
(;´Д`)ハァハァ
632デフォルトの名無しさん:02/11/24 21:05
以前に下記のような質問をした者です。
 V=0.5*a*t*t V;速度 a:加速度 t:時間(秒)
この式に対応して物体が移動するプログラムを作る場合
c言語において、時間tはどのようにして表すのですか?

そして「for(t=0.0; t<10.f; t+=0.1)」
上記のような答えをいただいたのですが、これでは時間tが1〜2に増加した時
実際に1秒たっていないので、映像上で物体が異常に早く動いてしまいます。
どうすれば良いのか、どなたか対処方法を教えてください。
>>632
余った時間はほかの処理をするか時間がたつまでループ
>632
デジタル微分解析だっけか?
冲がどーのこーの。

いずれにせよC言語の話じゃないよなー。
>>632
clock() でミリ秒、time() で秒が取得できるから、それを使って何とかしろ。
636デフォルトの名無しさん:02/11/24 21:19
>>634
消えろ。
637デフォルトの名無しさん:02/11/24 21:19
>>632
時間がたつまでル−プですか・・・
1秒というのは正確に計れるのですか?
638デフォルトの名無しさん:02/11/24 21:21
>>635
やっぱりそれしか無いですよね、
がんばります。皆さんありがとうございました。
639635:02/11/24 21:21
clock() はミリ秒ではなかったな。
clock() / CLOCKS_PER_SEC が秒になるんだとさ。
処理系依存だが、Windows なら Sleep()、Unix なら sleep() を使う手もある。
641デフォルトの名無しさん:02/11/24 21:28
>>640
ハア?
ライブラリ何使うか知らないけどあの程度だったらsleepで十分だろ。
ヘタに重く回られたらたまったものじゃない。
643デフォルトの名無しさん:02/11/24 21:40
プログラム実行中にこっちがなんらかの制御を加える場合
どのような方法がありますか?
関数名でもそれについてのHPでもいいので教えて欲しいです。

具体的には例えばボールが左から右へ行くようなプログラムで
プログラムを実行してボールが画面中央に行ったときに
こちらがキーボードから例えば”S”を押すとボールが止まるって
いう制御を行いたいのです
OSとコンパイラは?
645デフォルトの名無しさん:02/11/24 21:42
>>643
過愚師か?
646デフォルトの名無しさん:02/11/24 21:42
>>644

Windows2000
Borlandのフリーのものです
647デフォルトの名無しさん:02/11/24 21:46
>>643
stopTheBall(char c);
648manko_chinko ◆GLc2rpKRNM :02/11/24 21:57
while(getch()!='s'){
/*ぼーるを転がす*/
}
こういうやつ?
649643:02/11/24 22:01
>>648
馬鹿には聞いていないです。
650デフォルトの名無しさん:02/11/24 22:02
一方向リストと単方向リストの違いは何ですか?
表現
一方向リストなんて聞いたことないべや
653デフォルトの名無しさん:02/11/24 22:12
>>650
単方向リストと双方向リスト
の違いだべ。
654JPS ◆M0LaMzf5rY :02/11/24 22:16
>>653
単方向リストは、次へのポインタをもつ。
双方向リストは、次へのポインタと、一つ前のポインタをもつ
655653:02/11/24 22:19
単方向
struct mono{
hoge nanika;
mono* pNext;
};

双方向
struct di{
hoge nanika;
di* pNext;
di* pBefore;
}:


線型リストとの違いは?
657デフォルトの名無しさん:02/11/24 22:19
今調べた結果、一方向リストを単方向リストと言うみたいです。
658デフォルトの名無しさん:02/11/24 22:22
リストカット
誰か>>656オセーテ
>>655
エラー
hogeは任意の型として、monoなんて型もdiなんて型もない。
>>660
分かんないよぅ。単方向リストとどう違うのさ?
双方向リストとは?
653は一度もプログラムを書いたことがないことが判明しました。
664JPS ◆M0LaMzf5rY :02/11/24 22:47
>>656
線型リストってのは、構造体をポインタで結んでるようなデータ構造の総称でつ。

>>664
二分木でも?
>>662
線型に対して、線型じゃないものを比べてみればよい。
667JPS ◆M0LaMzf5rY :02/11/24 22:51
>>665
間違いました。すいまそん。
えーと、線型リストってのは、直線上にデータを並べてる感じでつ。
それの総称で。
二分岐は木構造
668JPS ◆M0LaMzf5rY :02/11/24 22:51
つまり
線型リスト⊃単方向リスト、双方向リスト
ってことでつね!
遅レスですが、ミリ秒のやつです。
#include <stdio.h>
#include <time.h>
#include <conio.h>
int main(void)
{
 clock_t cs,ce,ces;/*long*/
 time_t ts,te,tes;/*long*/
 ts=time(NULL);
 cs=clock();
 printf("\x1b[1;1H終了するなら何かキーを押してください");
 printf("\x1b[3;1Htime  :");
 printf("\x1b[4;1Hclock :");
 for(;;)
 {
  te=time(NULL);
  ce=clock();
  tes=te-ts;
  ces=ce-cs;
  printf("\x1b[3;9H%ld",tes);
  printf("\x1b[4;9H%ld.%ld",ces/1000,ces%1000);
  if(kbhit()!=0)
   break;
 }
 return 0;
}
671JPS ◆M0LaMzf5rY :02/11/24 23:01
>>669
たぶん。あとスタックとかキューとかっていうデータ構造もありまつ。
668のサイトのほうが詳しいとおもうけど。

ついでに質問だけど、アセンブラの知識とかあった方がいいでつか?
春に情報処理技術者試験受けるのに、今レジスタとか勉強してるんだけども。
プログラム作るときとか役にたちます?
>>671
まぁ知ってて損はないよ>>アセンブラ
673653:02/11/24 23:08
>>661
>>663
ついついC++の感覚でやっちたよ。
>670
なんか分からんがすごい!
>>566
スーパー采や人工林ですか?
677デフォルトの名無しさん:02/11/24 23:25
単方向リストについて詳しく解説してあるHP知ってたら教えて
下さい。
双方向リスト
┏━━┓┏━━┓
┃データ┃┃データ┃
┣━━┫┣━━┫
┃    ==>  ┃
┣━━┫┣━━┫
┃  <==    ┃
┗━━┛┗━━┛
単方向リスト(一方通行)
┏━━┓┏━━┓
┃データ┃┃データ┃
┣━━┫┣━━┫
┃    ==>  ┃
┗━━┛┗━━┛
■->■->■
■<->■<->■
>>679
データ圧縮しすぎると情報が伝わりません・・・


通信とは「通じたと信じる」のだっ!
伝達とは「伝えて達する」のだっ!

 
達するって何だよ達するって
>>680
単リ:■->■->■
双リ:■<->■<->■
684デフォルトの名無しさん:02/11/25 00:05
>>681
じゃ「情報」は?
685JPS ◆M0LaMzf5rY :02/11/25 00:19
勉強っていうのは、知識を身に付ける事じゃないんだね。
勉強っていうのは、知識をどう使うかを身に付ける事なんだね。
19年間オレは勉強もどきをしてきたけど、
今日から勉強をします。
CodeWarriorってコンパイラ使ってる人いる?
>685
今ごろ気づいたのかよw
>>684
「情報」とは「伝達」された「通信」の内容のうち、
真に必要となる部分を意味する。
ちなみに、内容のうち、情報に含まれないものは「冗長」という。
49 点。
>>685
> 勉強っていうのは、知識を身に付ける事じゃないんだね。
勉強というのは知識を身につけることだと思うけどな。
で、勉強することにより、自分の考え方や行動が進歩したら
勉強したことが身に付いたのだろう。

ま、身に付いたかどうかは自分ではわかりにくいけどな。
タイトルの*が余計な気がする
>>691
実は[44]が余計なんです
const を付けるべきだと思うがどうか。
695デフォルトの名無しさん:02/11/25 19:29
malloc()について質問です。
下のプログラムのように、func()でmalloc()してメモリを確保し、
関数の外でそのデータを見ると壊れているようなのです。
free()するまでは有効だと思うのですが、どうなんでしょう?

#define SIZE 30000

int main()
{
char *p;

func(p);

// p[0]-p[SIZE]を表示する関数
PrintData(p, SIZE); // データが壊れてる

free(p);
}

int func(char *p)
{
FILE *file;

file = fopen("tmp.txt", "rb");

fread(p, 1, SIZE, file);
PrintData(p, SIZE); // データは正常

fclose(file);
}
>>696
どこでmallocしている?
それと、funcの引数ははchar **にして呼び出し時にfunc(&p)としてやらないとpにはfunc内でmallocしたものが入らないよ。
698696:02/11/25 20:10
>>697
malloc()はfread()の前に書き忘れてました・・・
char **にしたらできました! ありがとうございました。
何故そうなるのかはまだ考え中ですがw
699デフォルトの名無しさん:02/11/25 20:11
Cで、Perlのsplitのようなことをしたい
(ファイルから1行読みこんで、適当な区切り文字で分割して配列に入れる)
のですが、どうするのが一番効率的でしょうか?
fscanfでやると、各行のデータの数がそろっていないと
変なことになりそうなので使いにくんですが。
>>699
strtok()

関数リストには一度目を通しておくことをお勧めする。
>>699
> どうするのが一番効率的でしょうか?
Perlのsplitを頂戴して適当に改造する。
702JPS ◆M0LaMzf5rY :02/11/25 23:48
scanfは改行文字を配列に格納するんでつか?
格納しないんじゃない?
宣言

-char *strtok(char *s1, const char *s2);
-char far * far _fstrtok(char far *s1, const char far *s2);

説明

strtok と _fstrtok は,文字列 s1 を,分離文字列 s2 から
1文字以上の間隔で区切られた,0 個以上のトークンからなるもの
とみなします。

TURBO C++ FOR WINDOWS Version3.1
>>702
質問の意味がわかんない
配列に入れた文字列はどうやって表現するんですか?
例えば変数名を変数で表したい時とか

int ABC;
char s[10];
strcpy(s, "ABC");
s=12;

とかやっても変数ABCに12が代入されるわけではないんですよね?
>>706
それは構造体&共用体でやるんじゃあござんせんか?
708デフォルトの名無しさん:02/11/26 13:47
>>706
なにがしたいのかよくわからん
709706:02/11/26 13:59
>>707
構造体&共用体ですか?
具体的にはたとえばどのようにすればいいのでしょうか。

>>708
ある1箇所に来る変数を状況によって変えるとか…です。
>>709
Perl の $afo = 1; $x = "afo"; $$x = 2; みたいなことしたいんじゃないの?
union U
{
int i;
char s[4];
};

U u;
int a;

u.i = 0x12345678;
for(a = 0; a < 4; a++) printf(" %02x", u.s[a]);

strcpy(u.s, "ABC");
printf(" %08x", u.i);
712707:02/11/26 14:23
>>706
711がマブい答えをくれましたよ。ちなみに、711のは共用体ですな。
711は完全に勘違いしてるわけだが。
714706:02/11/26 14:42
説明不足ですいません。

つまるところは変数名を直接記述せずに
何か変更可能な方法で表現したい、っていうことなんですが…
715706:02/11/26 14:47
int a1;
int a2;
int b;

a1=1;
a2=2;

b=(  )+3;
  ↑
ここには状況に応じてa1かa2のどちらか入る、みたいな…
>>715
それくらいのことだったら配列使えば?
int a[2];
int b;
int a[0] = 1;
int a[1] = 2;
こういうことか?

int a1;
int a2;
int b;
int *a12;

a1=1;
a2=2;

if (rand() & 1)
a12 = &a1;
else
a12 = &a2;

b = (*a12)+3;
718706:02/11/26 15:25
変えたい部分が配列とかだったらどうなのでしょうか?

int abc[5];
int def[3];
int ghi[6];
...

int j=3;
int k;

k=(   )[j]+3;
   ↑
ここにくる配列を上の3つから選びたい時とか…
2次配列にする
720706:02/11/26 15:52
>>719
なるほど。目からウロコですた。
なんとかできそうです。
みなさんありがとうございました。
…くだらねぇ
>>721
同意
特に>>719うそ教えてんじゃねえよ
723デフォルトの名無しさん:02/11/26 16:47
>>722
なんか嫌なことでもありましたか?(・∀・)
とりあえず、厨を弄んでいる
>>719 = >>721 = >>723

んで、そんなことも分からない
>>720 = >>722

という認識でOK?
んん〜?なんか間違ったこと教えたっけ?
サイズ違ってるだろ
ふんふん。だからな〜に?(・∀・)
おまえ見苦しい
   ∧_∧    / ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < えっ?>>728
.  ノ/  /     \_____
  ノ ̄ゝ
>>711
処理系依存だが。

>>718
int* xxx = abc; /* or def/ghi */
k = xxx[j]+3;
>>730
それでいいなら初めっから
k = abc[i]+3;
にしろよ....
int *の配列にいれてやればいいじゃん・・・
733JPS ◆M0LaMzf5rY :02/11/26 20:40
main関数がintを返すのは規格で決められてるんでつか?
void main(void)ってのは間違ってるって書いてあったんだけど、
K&Rにはmain()って書いてあるし・・・

あとアドレスを表示するときの変換していしで%dを使うのは未定義でつか?
何度も出ているFAQだがトリップをつけると厨房と言われずにすむ。



かもしれない。
>main関数がintを返すのは規格で決められてるんでつか?
int main(void)とint main(int argc, char *argv[])は(mainがないような
環境を除けば)どんな処理系でも使える。
そのほか、処理系定義の形式も、処理系によっては使えるかも。

>void main(void)ってのは間違ってるって書いてあったんだけど、
まあ、ポータブルなプログラムのつもりなら間違いと言ってよいだろう。

>K&Rにはmain()って書いてあるし・・・
これはint main()と同じ意味。

>あとアドレスを表示するときの変換していしで%dを使うのは未定義でつか?
Yes.

処理系によっては、ポインタを整数にキャストしてやればよい。
(結果は処理系定義)

また、%pを使えばポインタ値が処理系定義のフォーマットで
出力される。
736JPS ◆M0LaMzf5rY :02/11/26 21:03
thanx
main()がint main()と同じなのは知らんかった・・・。
なんも書いてないとこは全部voidになるわけじゃないんだね。
たとえば自前の関数で返り血省略したときも、
intを返すってなるの?
でもそれだったらint main()って書いた方がいいと思うのは俺だけ・・・?
アセンブラっていわばコンパイラのことでないの?
アセンブリ言語でしょ?
738西門 ◆J1DLkSnXwI :02/11/26 21:08
>>736
返り値の型を明示しない関数の宣言はintと書いたのと同じ。
まあ、昔からの互換性だけが理由。intと書いておけば?
739西門 ◆J1DLkSnXwI :02/11/26 21:09
>>737
Assembly languageだね。
アセンブラはアセンブリ言語を機械語に翻訳するソフトのこと。
MIT(マサチューセッツ工科大学)人工知能研究所では
「現在、研究されているプログラム生成AIは10年後に
は実用化されることはがほぼ確実。」としている。
http://science.2ch.net/test/read.cgi/future/1022864257/l50
つまりPGは無用の長物になるということラスィな。
>>740
どうせ「まただまされたわけだが」だろ?
省略できる所をわざわざ書く奴はDQN。
intを返す関数なら省略したほうが玄人。
それで通じない奴は素人。
>>742
変数は全て int a,b,cですか?w
744西門 ◆J1DLkSnXwI :02/11/26 21:31
>>742
釣り初心者ですか?
>>743
省略できると書いてあるだろうが。馬鹿が。
>>744
釣りはしたことが無いから初心者とも言える。
>>745
じゃあdo { } while ( );の{ }も省略するんだね?

演算子の優先順位も全部おぼえていて、
省略できる( )は全部省略するんだね?
>>747
はあ? 当たり前だろうが。
優先順位? そんなもの覚えてない奴がC言語なんか使ってんのか?
>>748
へえー、何段階あるの?
……748は必死に教科書で優先順位のレベル数を数えています……
>>749
何段階あるかなんて覚えていない。というか数えたこと無い。
どれとどれを比べてどっちが優先順位が高いかなら分かるが。
……教科書が見つからなかったようです……
>>751
何段階あるかなんて覚えていない?
そんなもの覚えてない奴がC言語なんか使ってんのか?
>>752
答えたら答えたで「教科書が見つかったようです」と書くだけだろうが。
つまらんレスしてんじゃねーぞ。
>>753
へえー、何段階あるの?
>>753
優先順位さえ覚えていれば何段階あるかなんか覚える必要ないだろ。
無駄なもん覚える必要はない。
757JPS ◆M0LaMzf5rY :02/11/26 22:11
while( (ch = getchar()) != EOF)
  putchar(ch);
これだと、putcharは改行するまで実行されてないってこと?
それとも実際処理はしてるっていうか、そこは通ってるけど、バッファにためてるから
改行文字くるまで通り過ぎてるの?
>>757
少しは自分で調べてから質問しようね。
優先順位を覚えるのはなぜ無駄じゃないの?
よく使うやつ以外はかっこつけとけば覚える必要ないじゃん。
覚えるのは無駄だろ?
>>756
言うことが矛盾し出した(ワラ
761JPS ◆M0LaMzf5rY :02/11/26 22:13
優先順位は15段階のようでう。
保守がアホかもしれないので、あまり知られていない演算子順位
に基づくような式記述は、全部括弧つけてますが・・・
どうせコンパイルすれば性能には影響ないんでしょ。

763JPS ◆M0LaMzf5rY :02/11/26 22:15
あ、バッファってのは入出力処理のためにあんだもんね。
演算とかはやってるんだ、きっと。
でも入出力は\nくるまで待ってんだ
>>757
普通の環境だと、改行を入力するまでは
getchar()が返って来ない。それまではバッファに入るだけ。
>757
今まで教えて貰ったこと/教えて貰うことをすべてFAQとして
公開するなら、教えてやるよ。
1+2*3を1+(2*3)なんて書くのか?
+と*の優先順位を覚えておけば何段階あるかなんて覚えておかなくてもいいだろ。
そんなことも分からんのか?
767デフォルトの名無しさん:02/11/26 22:17
>>759
ファイルのサイズが小さくなるだろ
>>766
詭弁を弄し始めました
>JPSがウザイと思う人の数>1
770JPS ◆M0LaMzf5rY :02/11/26 22:18
>>764
でも実際はchには1文字づつ入ってるんだよね?
だから\tとかスペースの数とか、数えられし。
>>769
おまえがウザイ
>>768
詭弁と言うこと自体詭弁だがなにか?
>>772
(゚Д゚)ハァ?
>>766
前置++と後置++は?
>>774
同じだろ。正確には先に書いたほうが先に評価されるが。
776775:02/11/26 22:25
おっとごめん前置++と前置--に見えた。
後置++の方が優先順位上。
高知が?スリーセブン?
>>766
おみゃーは足し算引き算を普段使ってないのか?
>>778
(゚Д゚)ハァ?
775は776を書き込むまでの1分間に教科書をみてしまいますた。
>>780
文章を書く時間を含めると難しいんじゃない?
782 :02/11/26 22:54
>>781
そうとう ++ と -- は見間違えないと思うがな。
教科書見ないにしても絶対言い訳やな
>>782
バカ、教科書見ながらやってたから見間違えちゃったんだよ!
>>783
教科書見たのにどうして間違えるのかと
>>775
>先に書いたほうが先に評価されるが。

は前置の方が先に評価されると読める。

>おっとごめん前置++と前置--に見えた。

なのでこの言い訳はとても恥かしいと思う。
すなおに間違えたって書けばいいのに。プ
>>785
> >先に書いたほうが先に評価されるが。
> は前置の方が先に評価されると読める。
それは流石に、そう読めてしまうあなたの方が恥ずかしいと思うが。
>>786
「先に書いたほうが先に評価されるが。」
ってどういう意味かわからないんですが
どう読むんでしょうか?
788ポインタ初心者質問です。:02/11/27 00:16
int *a,b;
b=100;
a=&b; /*質問1*/
printf("%d\n",b);
printf("%d\n",a); /*質問2*/
printf("%d\n",*a);
printf("%d\n",&a);

質問1:この場合、bのアドレスをaに代入するわけですよね?
質問2:そうするとこの文の実行結果はbのアドレスだと思ったんですが、aのアドレスが出ました。
なぜですか?

たぶん、初歩的なところが理解できていないのだと思うんですが、
1行目で宣言してるaに*がついているということは、
aはポインタ変数なんですよね。ここまではわかります。
で、ポインタ変数ってなんですか???ってことなんです。
メモリ内に*aの領域が作られるわけですよね。その内容にはアドレス以外入らないわけですか?

とりあえず、質問2でなぜaのアドレスが出てくるのかが知りたい。
>>788
「C言語ポインタ完全制覇」を買って来い
↓先生、正解を教えてやってくだせい
790デフォルトの名無しさん:02/11/27 00:20
>>789
消えろ。
>>790
消し方を教えてください。
>>788
ホントに出る?
>>788
漏れの環境での実行結果
100
1245048
100
1245052
794ポインタ初心者質問です。:02/11/27 00:33
実行結果は
100
6618620
100
6618624

です。
&aの実行結果6618624がbのアドレスですから、
6618620はaのアドレスでは?
&a が a のアドレスで
a (=&b) が b のアドレスに木マット労が!>>794
すいません、もう一度頭の中を整理してきます・・・。
次スレ

C言語質問所 <45>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/
>>794
printf("%d\n",b); ←bの値
printf("%d\n",a); ←aの値(=bのアドレス)
printf("%d\n",*a); ←ポインタaが指すアドレス(=b)の値
printf("%d\n",&a); ←aのアドレス
>&aの実行結果6618624がbのアドレスですから、
違う。
aの"値"がbへのポインタ。
800!
!800
>>801
残念でした。
800!!
804デフォルトの名無しさん:02/11/27 00:47
そろそろ次スレのことを決めといたほうがいいと思う。
続けるか、合流するか。
分離してる理由は?
<46>で立てちゃえ(w
>>802
800!じゃなくて!800だもん。
>>804
あっちの>>1が勝手に立てたんだからあっちが重複。
(800 & 0xfe)!
810デフォルトの名無しさん:02/11/27 00:56
>>805
俺に聞けのタイトルが気に食わなかった先走り厨が、勝手に次スレを立てた
って説と、
論争でスレ消費しまくるので純粋な質問スレを次スレと称して先走って立てた
って説と、
どっちかだったような気がする。
どちらにしろ、次にFULLになるであろうココが次をたてなければ問題にもならないのでは
>>811
おまえあっちの>>1決定。
813デフォルトの名無しさん:02/11/27 01:01
>>811
このスレを立てたのは、
「俺に聞け」ってタイトルで伝統守れゴルァ派
が立てたので次が立たない保障はどこにもなし。
>>810
いずれにせよ先走り厨の糞スレってこった。
815デフォルトの名無しさん:02/11/27 01:13
H・M・ダイテル+P・J・ダイテル著の「C言語プログラミング」
の練習問題解答集とか出てないんですかね・・・。調べたらなさそうな
感じですが、知ってる方いたら教えてください。
PJ抱いてる!?
どうせ、俺に聞けスレ続けるなら
入門書レベルの質問はC言語質問所スレに行ってくれ。
を1に加えればいいと思う。同種のスレが2つあることはあまり
いいことじゃないしね。
ねぇねぇ、なんで opendir や stat はANSI標準じゃないの?
POSIX依存だから
>>818
特にstatなんて、かなりOSに依存するだろ。
>>817
初心者用に作られたスレならいいけど今の質問所スレは明らかにここの次スレを
騙ってるのが問題。
>>821
向こうに初心者、入門書レベルを任せればいい。となると、スレの
性質は質問所の方が正統になるわけで・・・。この際、「新・C言語は俺に聞け(仮)」
として1から始めるのもいいかもしれない。初心者お断りを掲げて。
新・C言語だとC99とかいろいろ勘違いするので、、
素直に「C言語〜聞けpart45」でいいんじゃ
K&R/ANSI Cは俺に聞け(パワーユーザ)
>>822
いや、だからむこうが勝手に初心者向けをうたって「質問所」を作ったのだから、
こっちが変えることはない。
こっちは質問も論争もあり。
あっちは質問のみ。
実質、差はないけどな(w
>>826
あちらの>>1はそれがわからんのだよ…
どっちが残ろうがいいんだけどよ。
迷惑被るのはこだわってる人以外の全員じゃねえか。
この質問はこっちだなとか考えるUSERはいねーっつーの
こっちがとかあっちがとかいってねーで、統一してもらいたいもんだね
それとも、もう一つ作るかぃ?
>>810
どっちか、じゃなくて両方、しかも前者は 2 つある。
つまり、ここからの派生スレは 3 本ある。

C言語質問所 <45>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50

C言語を俺に聞け 第48回ぐらいか?
http://pc3.2ch.net/test/read.cgi/tech/1037279828/l50

お前ら!Cの論争はここでしてください。
http://pc3.2ch.net/test/read.cgi/tech/1037105440/l50
>>828
Delphiは既にそんな状態だがな。
831デフォルトの名無しさん:02/11/27 11:23
ふざけてスレを乱立させて面白いつもりかもしれないが、
やはり迷惑なので、このスレに統一する努力をしよう。
他のスレへの書き込みのたびに、こちらへ誘導する書き込みを
繰り返すのが良いんじゃないか?
おまいら 常にこっちのスレを上にあげとけ(任意)

スレタイに「本舗」を付けとけ(強制)
厨どもが「元祖」や「本家」を付けるだけだろう。
あーあ、これじゃDel厨やRuby厨と大差ないな。
そもそも、スレタイがいけないんだよ。

スレタイにポインタ配列なんかつかうから、こっちがネタスレみたいになって・・・
>>835
同意。せめてポインタ配列は止めて、できるなら俺に聞けなんて
ネタみたいなスレタイもやめよう。
ということで新スレタイ案

C言語質問場
今、まだ // がコメントにならないCコンパイラってあります?
あるなら具体的に名前を教えてほしいんだけど。
cc
さくら
はにゃ〜ん
MS-C は DOS 時代から // 使えてたしな。
843デフォルトの名無しさん:02/11/27 12:21
LSI-C86試用版
>>843
試用版だけですか?
845デフォルトの名無しさん:02/11/27 12:28
あげ
ということで新スレタイ案

C言語留置場
>>847
ぶらくら
ふっくら
いいこと思いついた!
ここはC言語らしく
C言語質問所 <45> (33) < このスレを上位byteとして、
対応するスレ(num)に
char *c[45] = {"C言語のことは漏れに聞け!"}; < を
or演算...



…フッ
2 点。
とりあえずs=12が間違ってるな
/* Dim struct class c[45] != "C言語のことは漏れに聞け!" at Integer; */
ってどうよ?
>852
いつのレスだよ!
お前ら!
海原雄山はどうした!!
>>855
あずまんが大王だろ!
/* C言語質問所 <45> */
こいつはコメントにしとけばいいだろ
858JPS ◆M0LaMzf5rY :02/11/27 16:54
質問だけど、ほとんどの関数でつかうような変数で、しかも値を変化させるものだったら、
いちいち関数の仮引数に渡すよりも、グローバル変数として宣言した方がいいでつよね?

scanf("%s",&answer);

if(answer == yes)
だとしたら、mainとひとつの関数だけでいじる時は、その関数のstatic付きローカル変数として
定義したほうがいいんでつか?それともその場合もグローバル変数?

else
そうでつか・・・
>>859
誰がどこでその値を変更するかわかったもんじゃないので地獄を見ます。
>>858
どの程度までモジュール間の情報隠蔽を徹底するかと言うことだが、
場合によるとしか言いようがない。

ある程度大きいプログラムを書くときや、再利用まで考えたモジュール
を作るときは、グローバル変数で情報を受け渡すのは一般に良くない。

しかし、短いプログラムや、非常に頻繁に使われる共有情報まで
getter関数みたいなものを使ってアクセスする必要はないかも知れない。

たとえば、errnoとかPOSIXのgetoptみたいに、グローバル変数を使う場合もあ
る。

迷うようならグローバル変数はやめとけば無難。
>>858
本当にそうするべきだという場合を除き、グローバル変数は使うべきではない。
仮引数は、その関数の実行にどんなデータが必要かを明示してくれる。
引数の数が増える事が気になるようであれば、それは構造体を使うべき場合だ。
引数で渡す事によるオーバーヘッドが本当に深刻である場合には、グローバル変数
にする価値はあるが、それは最終手段であり、その前に改良できるロジックはそう
しておく事だ。
本当にそうするべきだという場合の例。
コールバック関数で、値を引数経由で渡す事ができない場合など。
863デフォルトの名無しさん:02/11/27 17:23
独学でCを勉強中なのですが、いくつか質問。
○×だけでもかまわないのでお答え願えたら有り難いでつ。

1,配列を使うメリットは、プログラムが読みやすい&簡潔になる事だけである。
2,構造体を使うメリットは、プログラムが読みやすい&簡潔になる事と、
  関数間で受け渡しが可能な事だけである。
3,全てのプログラムをint main(void){ここ}に書くのであれば、ポインタを使う必要性はまったく無い。
4,プログラミングを行う中で、16進数を使う局面はポインタを除けばまず無いと言っていい。
5,C言語でプログラムを行う者(このスレッドで解答しているような方々)は、
  1000個近くあるヘッダファイルの内容(関数定義)を全て記憶している。

以上です。どうかお願いします。
864JPS ◆M0LaMzf5rY :02/11/27 17:23
>>860
なんだかむづかしい話だな・・・。

おれが思ったのは、値を変える関数に渡すときはポインタを渡さないとだめでしょ?
おれがよくデバックして思うのはポインタはやっぱむずいってことで。
(*pointer)++ってやるべきとこを
*pointer++ってしてたり。
それだったらグローバル変数使ったほうがいいのかなって。今までぜんぜん使わなかったから。

メモリを動的に確保したり、配列との関係以外でポインタを使うのと、グローバル変数を使うのって
セキュリティ以外の部分で、違いってあるの?実行速度が速いとか・・・
>>863
4、=> IOポートの入出力でつかわんか?といってみるテスト。
>>863
すべて×。
>>863
「読みやすい&簡潔」というのがどこまでを指してるのもよるが、
たぶん全部×。
>>865-867
ありがとうございました。1から出直してきます。
とりあえず、5が×なのでほっとしました。
869JPS ◆M0LaMzf5rY :02/11/27 17:41
>>863
なけなしの知識で回答します

1、2
配列や構造体を使わないと、木とかリストとか出来ないし、
そもそもソートという概念が意味をもたなくなる。
3
たとえば可変長の配列を使うときには、ポインタ(配列の先頭)だけ宣言しておいて
その後ろをムクムクと伸ばしていくのに必要。
4
おれにはよくわからんが、このスレでその昔、ビット演算の話をしていたときに出てきたかもしれない。
5
たぶん覚えてはいないと思うけど、すべて実装できる人はいると思う。

すべて最後に(かもしれない)を付けて読んでね!
揚げ足取り。
1. char a[2]; と char a1, a2; では一般に前者の方が確保に必要なメモリが小さい。
2. 構造体を使った場合、一般にコードは煩雑になる。
3. 全ての処理を main() に詰め込んではいけない。
4. アドレスを低レベルで操作する場合を除き、ポインタを 16 進数で操作する事はまず無い。
5. C 標準のヘッダファイルは 1000 も無い。
>>  1000個近くあるヘッダファイルの内容(関数定義)
そんなに無いだろ。
ANSI-Cで定義されている関数はせいぜい200個以下
日常的に使う関数はせいぜい100個以下

大体、君だって日本語の漢字や単語は1000以上覚えているはず、
で知らない言葉が出てきたら辞書で調べるだろ?
プログラマも同じ、知らない関数やあやふやな関数が出てきたら
マニュアルを読んで覚えていくんだよ。
872JPS ◆M0LaMzf5rY :02/11/27 17:45
>>870
1ってどういうこと?一般にってことは実装依存?OSかな・・・
>>872
実装依存。
VC++ では、前者は 4 バイト、後者は 8 バイト食う。
コンパイラのオプションによっても違うし。
875JPS ◆M0LaMzf5rY :02/11/27 17:51
>>873
マジ!?sizeof(char)が1ってのは規格だよね?
それってどういう事?配列だと連続して確保するから、前後の隙間がないとか?
てかsizeof(char) == 1でも、実際はそんなに違うもんなんだ。
>>864
実行速度は一概に言えないが、グローバル変数を直に読み書きする方が
速くなることが多いかな。

グローバル変数をなるべく持たない方が良いというのは、他のモジュールにつ
いて知る必要のあることが少なくて済むようになるからだ。

たとえば、extern int a, b, c; という外部変数を
int calc(int x) { ... }の中から参照していたとすると、
calcの動作を理解するためには引数だけでなくて、
プログラムの他の部分がa, b, cに何を代入するか、
極端に言えばすべて把握しないといけない。

しかし、もしextern変数で値を受け渡さないなら、calcのコードを見ただけで
その働きは完全に理解できる。
>>870
> 1. char a[2]; と char a1, a2; では一般に前者の方が確保に必要なメモリが小さい。
揚げ足取りのツバメ返し。68000系は「一般的」なのかな?
char a[2];
char c1, c2;
printf("a:%p %p\n", &a[0], &a[1]);
printf("c:%p %p\n", &c1, &c2);

結果
a:0x22feee 0x22feef
c:0x22feed 0x22feec
878877:02/11/27 17:54
追加:
OS:win2000
コンパイラ:gcc
>872
コンパイラのオプションでアセンブラコードに直せば判るよ
>>874
スタックの取られ方ってオプションで変わったっけ?

>>875
結局、char でも 32bit でアクセスした方が速いという事らしい。
3 バイト余計に取ってるという事だ。
881JPS ◆M0LaMzf5rY :02/11/27 17:57
>>864
確かにグローバル使ったら、どこで何やってんのかわかりづらいよね。
んー。やっぱポインタ使うかー。
前に色んなソートの計算回数と比較回数を比べるソース作ったら
仮引数が7,8個ある関数できちゃって、しかもおれ変数の名前長いから
逆にわかりづらくなりそうだったんだけど。
それでもポインタってことね。納得しますた。
882JPS ◆M0LaMzf5rY :02/11/27 17:58
>>880
DQNな質問だと思うけど、32bitCPUとか64bitCPUとかあるしょ?
あれって処理単位を32bitでやるって事?
>>881
> 仮引数が7,8個ある関数できちゃって
その引数って構造体で纏められないのか?
68kだと無いみたいだが、i386用のgccなら
-mpreferred-stack-boundary=3とかやると、
スタック上のauto変数は8バイト境界にalignされたりする。
885JPS ◆M0LaMzf5rY :02/11/27 18:02
>>883
今おもえばね。その時はとりあえず問題といてらくらいで、自分のソースには使わなかったから。
たぶん3,4個まで縮められる。家帰ったらやってみます。
てかマージソートの説明がどこにものってない・・・
886JPS ◆M0LaMzf5rY :02/11/27 18:05
のってないってかわからない。
すれ違いかもしんないけど、ソートの実装方法っていろいろあるしょ?
微妙に違うとことかは、自分のわかりやすいのでいいのかな。
アルゴリズムが正しければいいよね?
>>877
VC4 の話だった。
VC6 は 1 バイト単位で取られてるみたいだ。
888JPS ◆M0LaMzf5rY :02/11/27 18:06
>>887
VC4ってことはANSI前?
「グローバル変数を使わない」以外にもうひとつ
モジュール間の依存を少なくする手が「詳細を隠す」こと。

たとえば、ハッシュ表を使う関数があるとすると、

typedef struct hash *hash_t;

hash_t hash_create();
void hash_add(hash_t, const char *key, const void *value);
void *hash_get(hash_t, const char *key);
void hash_del(hash_t, const char *key);

みたいに、ハッシュ表の中がどうなっているかはモジュールの外に
見せないようにする。
>>888
・・・え?
>>873
嘘つくな
構造体と同じレイアウトにアラインメントされる。
>>891
構造体と違って順不同ですが何か?
とりあえず謝っとく。
正直、すまなかった。
894863:02/11/27 18:57
>>869
わかりやすい説明ありがとうございました。2と3は特に助かりました。
>>870-871
ANSI-Cの関数を全部覚える事を目標にして頑張ります。
>>894
覚えるんじゃなくて、理解する事を目標にね。
ライブラリを見て、アルゴリズムを理解したら、自分で実装。
あとはこれの繰り返し。だれもすぐに出来る香具師なんていないよ。
がんがれ、プログラマの卵。
スレタイのことだけど、誰かふさぎこみたいなAAきぼんぬ
あと、雑談スレほしいな。ここ質問スレだからやりづらい。
ここを雑談スレ、C言語質問所が質問スレ。
899JPS ◆M0LaMzf5rY :02/11/27 19:45
K&Rの演習1-9
二つ以上の空白文字を1つの空白に置換して出力ってのはこれでいいの?一応出来てるけど。

#include <stdio.h>

int main(void)
{
  int ch,flag = 0;

  while( ( ch = getchar() ) != EOF )
  {
    if(flag == 0)
    {
      if(ch == ' ')
      flag = 1;

      putchar(ch);
      continue;
    }
    else
    {
      if(ch != ' ')
      {
        putchar(ch);
        flag = 0;
        continue;
      }
    }
  }

  return 0;
}
>>898
さんくす
>>898
C言語雑談スレじゃないじゃん。てきとーなこと言ってんじゃねーぞ。
>>896
> スレタイのことだけど、誰かふさぎこみたいなAAきぼんぬ
AAなどCには不要、Cには飾りなどいらない。

> あと、雑談スレほしいな。ここ質問スレだからやりづらい。
雑談してもかまわんよ。
「結 果 は 未 定 義 だ け ど な」
>>899
> if(flag == 0)
キモイ。if(!flag)にしろ。


904デフォルトの名無しさん:02/11/27 19:53
>>901
全言語について雑談スレつくるんか?
>>904
そうだ。Delphiを見習え。
906JPS ◆M0LaMzf5rY :02/11/27 19:58
>>903
分かりますた。
あとさ、'\b'ってバックスペースでしょ?
907JPS ◆M0LaMzf5rY :02/11/27 20:02
このソースうまくいかない・・・
#include <stdio.h>

int main(void)
{
int ch;

while( ( ch = getchar() ) != EOF )
{
if(ch == '\b')
{
putchar('\\');
putchar('b');
}
putchar(ch);
}

return 0;
}
908デフォルトの名無しさん:02/11/27 20:03
>>899
もっと短くなるだろ。
>>899
do {
 ch = getchar();
 putchar(ch);
 while (ch == ' ')
  ch = getchar();
} while (ch != EOF);
910デフォルトの名無しさん:02/11/27 20:05
>>909
EOFもputcharするんですか?
というか激しくバグ餅だな
912デフォルトの名無しさん:02/11/27 20:08
>>909
3つ以上空白が連続してたら?
while ( (ch = getchar()) != EOF ) {
putchar( ch );
while ( ch == ' ' ) ch = getchar();
}
>>912
(゚Д゚)ハァ?

>>913
おいおい・・・。
915JPS ◆M0LaMzf5rY :02/11/27 20:13
>>913
(・∀・)イイ!
さすがでつね。
ばぐる可能性なし?
916デフォルトの名無しさん:02/11/27 20:13
>>913
下のgetcharでEOFになったら?
>>916
それでも無問題
918デフォルトの名無しさん:02/11/27 20:15
getcharでEOFが返った後、再度getcharした場合の挙動って
どうなってたっけ?
とあるサイトに「獲得したメモリを free しなくても構わない、という考え方の方
が一般的であるようです」

と、書いてありましたが本当なんでしょうか?
920デフォルトの名無しさん:02/11/27 20:17
>>919
んなこたー無いだろ。時と場合による。
>>919
サイト晒せ
922JPS ◆M0LaMzf5rY :02/11/27 20:17
はい先生質問!
913ので下のgetchar()でEOFになると下のwhile抜けて
上のwhileの ( (ch = getchar()) != EOF ) にいきまつよね?
オレの考えだと、EOFはここで上書きされてしまうと思うんですが。
規格書で定義されている関数とマクロを数えてみたら、500以上あるな。
思ったより多い。ぜんぜん知らないやつもいっぱいある。

↓どんな関数(マクロ)か分かる?
conj fesetenv wcstoumax islessgreater raise snprintf
bsearch strxfrm strcspn strpbrk vswprintf wcsrtombs
>>913
スペース直後の文字が漏れなくスキップされないか?

冗長に見えるが、これ以上簡略化できんだろう。

ch = getchar();
while(ch != EOF){
 putchar(ch);
 if(ch == ' ')
  do { ch = getchar(); } while(ch == ' ');
 else
  ch = getchar();
}
925JPS ◆M0LaMzf5rY :02/11/27 20:20
>>924
実行したけど907と全く同じ動き。
>>923
bsearch() 知らんのは、qsort() 知らんのと同じくらいまずくないか?
>>926
binsearch() では?
928923:02/11/27 20:22
>>926
bsearchは知ってたが規格に入ってたとは知らなんだ。
>>927
(゚Д゚)ハァ?
どこの方言?
bsearch なんか知らんかった
自分で作った方が早くない?
931JPS ◆M0LaMzf5rY :02/11/27 20:25
>>924
925は嘘ですた。すまそ。
スペース後の文字出力されず・・・
>>925
907 と比べられても全く意味無いんだけど・・・。
913 と比べてくれよ。
933JPS ◆M0LaMzf5rY :02/11/27 20:27
ブランクって何?調べたら改ページってあるんだけど。
\fのこと?入力するときはなんてやればいいの?
>>930
何がどう早いのか教えてもらおうか。
>>934
気にするな
垂直タブ! \v
937JPS ◆M0LaMzf5rY :02/11/27 20:32
>>936
あり。
938C言語は俺に聞け45:02/11/27 20:33
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しろ。
むしろ質問する前にWEBで検索するのが常識だ。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへ行け。
入門書レベルの質問はC言語質問所スレへ行け。
コンパイラを探しているなら >>2 を見よ。

上記を逸した場合の結果は激しく未定義とする。

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

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1037796472/
質問は、「通じる」 日本語で書け。


↑ これも追加してくれ。
while((ch = getchar()) != EOF){
 putchar(ch);
 if (isspace(ch)) {
  while (isspace(ch = getchar()))
   ;
  ungetc(ch, stdin);
 }
}
>>899
2箇所のcontinueはいらない
942JPS ◆M0LaMzf5rY :02/11/27 20:49
>>940
ungetc・・・
#include <stdio.h>
int main(void)
{
  int ch, flg = 0;
  while(( ch = getchar()) != EOF ) {
    if(ch == ' ') {
      if(flg) {
        putchar(ch);
        flg = !flg;
      }
      continue;
    }
    putchar(ch);
    flg = !flg;
  }
  return 0;
}
>>940
> if (isspace(ch)) {

おいおい・・・
system( "sed 's/ +/ /g'" );
946ネタ:02/11/27 20:56
int ch, flg = 0;
while(( ch = getchar()) != EOF ) {
  if(ch == ' ') {
    if(flg)
      goto JUMP;
    continue;
  }
JUMP:
  putchar(ch);
  flg = !flg;
}
947ネタ:02/11/27 20:57
やばい、>>945の方が面白い
>>943
924 に比べてややこしく見えるが。
>>943, >>946
全然ダメじゃん…
while ((c= getchar()) != EOF){
    if (isspace(c)){
        while (isspace(c= getchar()))
            ;
        putchar(' ');
    }
    putchar(c);
}
>>943
入力に" xx xx xx xx"を与えたら、出力が"xxxxxxxx"になったけど?
>>950
ブランク文字の後にEOFになったらどうすんの?
K&Rはungetc大好きだからな。
ungetc使ったやつがおそらく著者の想定した答だろう。
>>950
だ〜か〜ら〜。
Tab 文字とか来たら仕様通り動かないでしょうが次スレよろしく。
while ((c= getchar()) != EOF){
    if (isspace(c)){
        while (c != EOF && isspace(c= getchar()))
            ;
        putchar(' ');
        if (c == EOF)
            goto OUT;
    }
    putchar(c);
}
OUT:
K&Rで「空白」といったら「ホワイトスペース文字全般」じゃないの?
まあ、いずれにせよ本質的な問題じゃないね。
>>955
940の方が…
はい。じゃこれで決定版ということで。

while((ch = getchar()) != EOF){
 putchar(ch);
 if (ch == ' ') {
  while ((ch = getchar()) == ' ')
   ;
  ungetc(ch, stdin);
 }
}
>>956
空白の次に改行があったら、その改行はスキップされるがよろしいか?
>>958
それでよし。
961西門 ◆J1DLkSnXwI :02/11/27 21:30
int ch, last_char_was_space = 0;
while ((ch = getchar()) != EOF) {
 if (! last_char_was_space || ch != ' ')
  putchar(ch);
 last_char_was_space = (ch == ' ');
}
962デフォルトの名無しさん:02/11/27 21:32
>>958
ungetcってEOFも戻せるんだっけ?
963西門 ◆J1DLkSnXwI :02/11/27 21:33
ungetc(c, fp)で、cがEOFだと失敗して、fpは影響を受けない。
#include <stdio.h>
int getchoo(void) {
static int last = EOF;
int ch;
if ( last != EOF ) { ch = last; last = EOF; return ch; }
ch = getchar();
if ( ch != ' ' ) return ch;
while ( (last = getchar()) == ' ' );
return ch;
}
int main(void) {
int ch;
while ( (ch = getchoo()) != EOF ) putchar(ch);
return 0;
}
戻せないらしい
966西門 ◆J1DLkSnXwI :02/11/27 21:36
>>965
ん? >>958はだから正しく動くよ。

・ungetcが失敗してstdinはEOF状態のまま。
・次のgetcharでもう一度EOFが返る。
>>961

感動しますた。
968デフォルトの名無しさん:02/11/27 21:39
誰か次スレよろ。
質問します。

int *a,b;
ここで宣言した*aは「ポインタとして使うためにaというスペースを作る」という意味ですか?
このaに普通に数字を代入すると、その数字もアドレスとして認識されるのですか?
ですよね?
だまれ
971デフォルトの名無しさん:02/11/27 21:51
>>969
「普通に数字」って?
整数型の値なら、そのまま代入はできないよ。
972デフォルトの名無しさん:02/11/27 22:00
if(c == ' ')

if(isspace(c))
ってなにかちがうのですか?
>>971
本当ですか?
int *a;
a=1000;
ではエラーがでるのですか?
974デフォルトの名無しさん:02/11/27 22:02
>>969
int *a; ってのは、int *型の変数aを宣言する、と読む。
で、変数aに代入できるのはint *型の値だけ。だから
a = 10 とかは出来ないよ。10はint *型じゃなくてint型だから。
975971:02/11/27 22:03
>>973
「本当ですか?」と聞く前にやってみやよ。
976973:02/11/27 22:04
>>975
自然にコンパイルとおりましたが?
>>972
isspace() が何なのか調べてみようとは思わないのか?

>>973
とりあえず、「数字」 と 「数値」 を区別してくれ。
978デフォルトの名無しさん:02/11/27 22:06
>>977
知らないなら知らないっていいなよ、お・ば・か・さ・ん
次スレのテンプレ、自助努力というキーワードを盛り込んでくれ。
980971:02/11/27 22:08
>>975
どんな処理系だ?そりゃ? gccでやってみたら、
> warning: assignment makes pointer from integer without a cast
って出た。
>>977
違う。
isspace() は C 標準の関数だから、普通に C を勉強していれば知っているはずだ
と言った。
982971:02/11/27 22:09
>>980
まちがえた、
>>976 だった。
誰か次スレ〜!!

漏れ立てらんね
984デフォルトの名無しさん:02/11/27 22:12
次スレのタイトルは以下でお願いします

char (*c)[44] = "C言語のことは漏れに聞け!";
985977:02/11/27 22:13
>>981
いつ言ったんだよ?
986デフォルトの名無しさん:02/11/27 22:14
>>984
いいけど、それ文法違反やんか。型が違うぞ。
>>984
44 かよ
>>984
俺に任せろ!
1000!
990
991984:02/11/27 22:16
>>986
文法違反ではありません。数字は45でお願いします。
>>974
わかりました、ありがとうございます。
具体的にint *型の値というのはどのようなものなんでしょうか?
つまり具体的なアドレスならば代入可能なんですか?>>794のような6618624とかでもダメですか?
>>985
7 年くらい前
994デフォルトの名無しさん:02/11/27 22:17
>>991
コンパイルしてみな。
995デフォルトの名無しさん:02/11/27 22:18
1000
>>982
976は私ではありません。
  _ハ、            _ハ、
 (- ・  ヾ          (- ・  ヾ
   ̄\  ヾ          ̄\  ヾ   
    (     ̄ ̄ ̄ヽヾ、    (     ̄ ̄ ̄ヽヾ、
     |        〈  ゞ   |        〈  ゞ
    / /| | ̄ ̄/ / | |     / /| | ̄ ̄/ / | |
    // ヽニニ// ヽニニl.  // ヽニニ// ヽニニl
   //     //.        //     //
   `       `        .`       `
998デフォルトの名無しさん:02/11/27 22:19
1000
>>974
重箱の隅だが、void* 型や int[] 型も代入できるぞ。
1000デフォルトの名無しさん:02/11/27 22:19
このままスレが立たずに1000までいったら終了としましょう。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。