1 :
v(^o^i)d●v(^o^i)d●v(^o^i)d :
04/11/20 22:19:26
2 :
デフォルトの名無しさん :04/11/20 22:20:15
3 :
v(^o^i)d●v(^o^i)d●v(^o^i)d :04/11/20 22:20:21
5 :
デフォルトの名無しさん :04/11/20 22:22:41
7 :
デフォルトの名無しさん :04/11/21 14:27:12
age
9 :
デフォルトの名無しさん :04/11/21 15:06:30
先に100まで行ったほうが本物。 そうでないほうが重複で削除対象。
10 :
デフォルトの名無しさん :04/11/21 15:10:57
いや、つねに上にあるほうが本物だ!
11 :
デフォルトの名無しさん :04/11/21 15:14:31
const char *foo; は、fooの指すchar型の連続領域が書き換え禁止だということ。 char const *bar; ってのは、barというポインターが書き換え禁止(ほかの位置を指さない)ということ
12 :
デフォルトの名無しさん :04/11/21 15:17:46
すみません。 sub(int n, char *s1, char *s2); という関数の中で、strcpyを呼んででたのですが、 そこでわざわざ、stcpy(buf, (const char *)s2); というように書いてあったのです。 これは意味のあることでしょうか? (a) ぜひそう書くべきだ。 (b) そうかういたほうがよい (c) そうかいても文法的に間違いじゃないが、書くべきではない (d) ぜったりやめろ どれでしょう?
>>12 (e)書いても書かなくてもどっちでもいい
14 :
デフォルトの名無しさん :04/11/21 15:23:38
どっちー?
俺なら書かない
(f)気分次第で
17 :
デフォルトの名無しさん :04/11/21 15:43:03
いや、「書いてはいけない」が正解。 強制キャストってのは、そもそも特殊なことをやるところに書くもの。 場合によっては、「ちょっとやばいかも」ということを強引にやる箇所だったりするわけです。 そういう箇所は注意しておかなければいけない。(移植のときなどは特に) でも、どうでもいい(しなくていい)ところに強制キャストがあちこちにでてくると、 それに目が慣れてしまい、注意しなければいけない重要な箇所を見逃しやすくなる という迷彩になってしまう。 そういうわけで、「書いてはいけない」のだ。
19 :
デフォルトの名無しさん :04/11/21 15:48:30
すみません「氏」じゃないんですけど…。 いちおう戸籍上は女なんで。
20 :
デフォルトの名無しさん :04/11/21 15:50:43
じゃあ16~19あたりに質問! unsigned char buf2[256]; とかがあって、 strcpy(buf, buf2); ってするときにはどういうふうにキャストする? (1) キャストしない。strcpy(buf, buf2); のまま (2) strcpy(buf, (char *)buf2); (3) strcpy(buf, (const char *)buf2);
>>19 氏は主に男に対してつけるが、女性に対してつけても間違いではない。
22 :
デフォルトの名無しさん :04/11/21 15:59:29
私にはつけないでください。
(1)はコンパイル通らないだろ (2)かなぁ
>>22 では、これから名前欄か本文にでも注意書きとして「氏をつけないで下さい」と書いてください。
なんかよく分からんが、すまん。
偏執だな
27 :
デフォルトの名無しさん :04/11/21 16:07:15
>>12 (g)もともと
sub(int n, char *s1, const char *s2);
と定義すべきであった。
C++の話でもうしわけないけど、C++3rd C.3.4 には > 3つのchar (char, signed char, unsigned char) は、ぞれぞれ別の型なので、 > 異なる char 型へのポインタを併用することは出来ない。 とありますね。 どれも不可ということなんだろうか。
constかどうかは関数側の問題であって、 それを呼び出し側で明示するのは 「この変数は変更しないでね」と言ってるようで不自然だから、 という解釈で正しいでしょうか?(´・ω・`)
const char* ∈ char*
>>30 stcpy(buf, s2);
↑これで warning が出たので
stcpy(buf, (const char *)s2);
↑とりあえずこうしただけだろうと思う
そんなレベルの話なのか?
呼び出し先で変更されないことまで 警告するコンパイラはちょっと鬱陶しいな
ここは重複スレなんだよ。移動しろ
36 :
デフォルトの名無しさん :04/11/21 16:24:13
>>20 constはC++だよな
あと unsigned つける意味がよくわからん
文字列ならunsignedつけないだろ
>>39 C99にconstキーワードあるぞ。
あとstrcpyに限らずの話だと思われ
というか普通にC89にもあるでしょ?
42 :
デフォルトの名無しさん :04/11/21 16:40:59
> (1)はコンパイル通らないだろ 通るにきまってるだろ ぼけ 通らないコンパイラーが実在するなら知りたいぞ!
43 :
デフォルトの名無しさん :04/11/21 16:44:08
> 呼び出し先で変更されないことまで > 警告するコンパイラはちょっと鬱陶しいな そうではなく、呼び出し先で変更されないということは、 const char *p; char *q; で、p = q; しているのと同じこと、warningは出ない。 q = p; はwarningは出てくれて当然。 constつきのポインター引数に、const無しの実引数を渡すのは前者と同じなんだから、 キャストなんかしなくても、warningでるのは間違い。 warningでるコンパイラーがあったらおしえてくれ! おれがいままでつかった20種類以上のコンパイラーでそんなんで warningでるのは1つもなかったぞ!
44 :
デフォルトの名無しさん :04/11/21 16:46:24
32の意見に賛成。 「つけなかったらwarningでたので、(何も考えずに) 関数のプロトタイプにかいてあったと指定してみた」ってところが実際のところだろう。 で、問題は、そういうソースをみて、それをさらにいじる別の新人が 「そう書くものだ」と思い込んでしまうことだ。 で、へぼい会社だと、そのプロジェクトチーム全員がそう思い込んでいたりする のは実際見かけたことがある。
45 :
デフォルトの名無しさん :04/11/21 16:47:46
> 注意書きとして「氏をつけないで下さい」と書いてください。 いやです。
>>43 ?俺もそのことを指摘しているんだけども。
32 :デフォルトの名無しさん :04/11/21 16:12:49
>>30 stcpy(buf, s2);
↑これで warning が出たので
ここで警告を出すコンパイラが鬱陶しいなと。
47 :
デフォルトの名無しさん :04/11/21 16:49:12
unsigned char*からchar*へのキャストが違反なのはC++
49 :
デフォルトの名無しさん :04/11/21 16:50:51
質問です。 #ifdefじゃなくて#ifを使ったとき、 「定義されてない」ものは、0になると考えていいんでしょうか?
50 :
デフォルトの名無しさん :04/11/21 16:51:27
51 :
デフォルトの名無しさん :04/11/21 16:52:34
> 何をですか? 「氏」ね!
52 :
デフォルトの名無しさん :04/11/21 16:54:01
>>49 大丈夫。安心してよい。0になることは15年以上前から保証されている。
>>48 Cでは異なるcharの、ポインタ間の相互変換が許されているんですね。
㌧クス。
54 :
デフォルトの名無しさん :04/11/21 16:57:37
コンパイルはできるけど、ちゃんと動かなくて segmantation violationとかいうエラーが 出てるんですが、 指導教官の言うとおりに、 p=&item; って書いてあるところを p = &item; にしたら正常に動いているっぽいんですが、 どうも理解できません?? 何がいけなかったのでしょう?
>>54 そこだけじゃなくて別の所も直していたんじゃないか?
56 :
デフォルトの名無しさん :04/11/21 17:02:27
わたしの所属しているプロジェクトのコードで p = (struct HOGE *)NULL; とかかいてあるコードをよく見かけるのですが、このNULLをキャストすることは なにかいいことがあるんでしょうか? (1) したほうがいい (2) どっちでも大差ない (3) むしろしないほうがいい (4) しちゃだめ どれでしょう?
58 :
デフォルトの名無しさん :04/11/21 17:06:53
> そこだけじゃなくて別の所も直していたんじゃないか? いえ、そこ1箇所だけです。ディレクトリーごとまとめて比較しても、 diff -r old/init.c new/init.c 2223c2223 > p=&item; --- < p = &item; 1行しかちがわない。
bind(2) connect(2) あたりの引数のほげで、 struct sockaddr_in boke; を (struct sockaddr *)&boke; のようにするのはどんなもんでしょう? とくにconnect()のほうは constがついてるようです。
61 :
デフォルトの名無しさん :04/11/21 17:10:50
>>59 socket周りのAPIはインターフェースが変態的だから気にするな
63 :
デフォルトの名無しさん :04/11/21 17:17:09
マシンの型番はわかりません。(どこみても書いてない...) 研究室の大ボスが昔研究につかっていたけど、いまは退役して 学生実習の専用に払い下げられています。
>>51 cc --version
と打ってバージョン確認しる
66 :
デフォルトの名無しさん :04/11/21 17:20:41
>>63 そのコンパイラーで
int i = 5;
i = -10;
printf("%d\n", i);
と
int i = 5;
i=-10;
printf("%d\n", i);
の結果が同じなるかどうか試してみな!
結果が異なれば、私が学生時代につかってた環境と同じだ ;-)
まあ、ようするに、最低限、代入演算子の両側ぐらいは空白をあけるように
クセをつけろってこった。
(そうでなくても、2項演算子はすべて(2つの例外を除く)両側に空白をあける癖をつけな!
まともにCでコーディングできるようになりたかったらな。
(このへんにたむろしてる馬鹿どもと同じレヴェルで終わりたいならべつにいいが))
アンカー間違えた orz
68 :
デフォルトの名無しさん :04/11/21 17:21:37
>>65 no input files と出ました。
69 :
デフォルトの名無しさん :04/11/21 17:23:13
このぶんだと、こっちがさきに100行きそうだね。 するってーと、「どっち消すべきか判断しづらいときは、先に100に行ったほうを残し、 残りを削除」っていう、2chの暗黙のルール(慣習)が適用されるね!
あたまのおかしなやつの妄想だろ 相手するやつが阿呆
そんな糞なコンパイラのためにコーディングスタイルまで 変えなきゃならんほうがナンセンス。
>両側に空白をあける癖をつけな! 頭のおかしなやつの妄想
>>54 コンパイラがタコなだけ。黙って言われたとおりにしておけ。
以上。
74 :
デフォルトの名無しさん :04/11/21 17:26:55
もし私のつかっていたコンパイラーとー同じならば、 ちっとも「くそ」コンパイラーなどではないな ;-) それにそこに空白をあけないのを「スタイル」だなんてぬかす厨房は かおあらってでなおしてきたほうがいい。
75 :
デフォルトの名無しさん :04/11/21 17:27:53
で、マシン名じゃなくてOSは何かわからないのか?
>>74 そのネタをいつまでも引っ張る必要があるのか?
妄想だろ
78 :
デフォルトの名無しさん :04/11/21 17:29:55
>>75 OSってどこを見ればわかるんですか?
マシン名は、去年卒業した先輩は「ぴーでぃーぴー」って呼んでました。
(でも、ただのhost名かもしれません)
現在は「学生実習用マシン」としか呼ばれていません。
int i = 5; i = -10; と int i = 5; i=-10; とで結果が違うんでは、 どう考えたって駄目コンパイラでしょう?
80 :
デフォルトの名無しさん :04/11/21 17:30:48
そりゃ、純正のccだな。
81 :
デフォルトの名無しさん :04/11/21 17:31:26
> とで結果が違うんでは、 > どう考えたって駄目コンパイラでしょう? いや、ふつうだろ。C99には適合していないが、 むかしのCコンパイラーはみんなそうだったし。
釣りケテーイ
83 :
デフォルトの名無しさん :04/11/21 17:33:52
すでに亡くなった文法です > c=-1; で Cの値を1減らす。 でも、親切なコンパイラーはいまだにwarning出すね。
84 :
デフォルトの名無しさん :04/11/21 17:39:48
うちのコンパイラーもwarning出すな。 でも、うちのは if (i = 10)も警告出すでけっこううるさいのだが。
85 :
デフォルトの名無しさん :04/11/21 17:40:34
で、&=の件との関係をおしえてください!
100超すために自演厨必死だな
87 :
デフォルトの名無しさん :04/11/21 17:44:46
gotoを使ったら先輩に使うなと怒られてしまいました。 gotoって絶対に使っちゃいけないものなんでしょうか? それとも使うべきところがあるんでしょうか? 教えてください。
PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11 PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11PDP11
あと10件だ がんがれ
るby>>>>>>>>>>
おまえそんなことして楽しいか?
これかな? どうやら板違い。 PDP-11 simulator V3.2-3 Disabling XQ @unix login: root # cc -v -v: cannot open # cc --version --version: cannot open # cc -V -V: cannot open # vi vi: not found # ed aaa ? auau ?
>87 とにかく処理速度を第一に要求される場合、gotoを使う ケースがあるのかもしれない。
それはもちろんある。 状態遷移マシンを書くときなんかも goto 便利。
96 :
デフォルトの名無しさん :04/11/21 20:56:10
つまらなそうな質問で申し訳ないのですが、Tabキーの分だけ文字間隔をあけて 出力するにはどうすればいいのでしょうか?
98 :
デフォルトの名無しさん :04/11/21 20:59:28
だよなぁ
>97様 すばやいレスをありがとうございました。 早速試したところ、しっかりと出力できました。ありがとう。
Tabキー 文字間隔 これでぐぐればすぐなのに・・・
>99 お、お、お、お、お、そんな回答でよかったのかよ・・・
つまらなそうな質問で申し訳ないのですが、beep音を 出力するにはどうすればいいのでしょうか?
105 :
デフォルトの名無しさん :04/11/21 22:13:29
>>93 ったら、edからぬけられなくなって焦ってるっぽい ;-)
だれか抜け方おしえてやれよ
>>105 あなたが偉そうに教えてあげればいいんじゃないの
107 :
デフォルトの名無しさん :04/11/21 22:16:00
他の端末からkill!!
108 :
デフォルトの名無しさん :04/11/21 22:17:28
ちなみに、PDP-11の時代にはすでにその演算子は廃止されてたぞ。 だから、その研究室のはもっと古い時代のものだろう。
109 :
デフォルトの名無しさん :04/11/21 22:18:22
まずaのモードから抜けるなら、行頭で. コマンドモードから抜けるなら qかq!か^Dだ (常識)
>109 非常識
>109 ^Dなんかで抜けていいと思ってるのか。 とんでもねぇな
112 :
デフォルトの名無しさん :04/11/21 22:21:14
edを^Dでぬけるのはじょーしきです。 それができないやつはもぐり
>112 psしてみろ。大変なことになってるぞ。
115 :
デフォルトの名無しさん :04/11/21 22:28:55
こいつぼけ > 114 ^Dでぬけたらプロセス残るとでも思ってるらすい ;-)
>115 めちゃめちゃ残ってるんだけど。今試したか?
117 :
デフォルトの名無しさん :04/11/21 22:31:55
残るわけねーだろ ぼけ
>116 試さないでウダウダ言う奴の相手はする必要ないぞ? それとも今試す環境がないのかな。 明日会社で試してビックリしてごらん。
この一人でageまくってる奴だけNG指定したいんだけど できないかな。ID出てりゃ簡単なのに。 トリップ付けてくれない?
どうやらXEDITは常識なのに知らなかったらしい
121 :
デフォルトの名無しさん :04/11/21 22:36:01
> 試さないでウダウダ言う奴の相手はする必要ないぞ お、ごまかすために暴れ始めたな ;-)
122 :
デフォルトの名無しさん :04/11/21 22:37:00
★今日のぼけ1人め 「edを^Dで抜けたらプロセスが残ると思い込んでいるぼけ」
123 :
デフォルトの名無しさん :04/11/21 22:37:26
2人めまだかなー
★これまでに分かったこと >122氏はpsのオプションを知らない。
125 :
デフォルトの名無しさん :04/11/21 22:42:48
質問です。 int a[] = { 100, 200, 300, 400, }; で、sizeof(a) / sizeof(a[0) ってやったら、4になるべきですか? 5になるべきですか?
★これまでに分かったこと >122氏はXEDITは知らない。
127 :
デフォルトの名無しさん :04/11/21 22:43:32
124はまだ無駄な抵抗をしてるなー すなおにしったかぶりをみとめろよ ;)
★これまでに分かったこと >122氏は「試したか?試してないのか?」の問いには答えていない →試していないと思われる。
>125 4
>129 でもこの書き方からして5になったんだろうなー
★推測 >122氏は今必死こいて「XEDIT」と「psのオプション」を 調べている。
133 :
デフォルトの名無しさん :04/11/21 22:46:11
いえ、4になりました。 でわたしも4になるべきだと思うし、いくつか本もしらべてそうかいてあったのですが、 5だとかいう人がいたので気になったので聞いてみただけです。 ここにはわかる方はいらっしゃらなさそうですね。
>130 なんで?本質的じゃない答えはやめてよ。
>133 あのぅ、質問してから4分も経っていないのに それはないんじゃないの?
136 :
デフォルトの名無しさん :04/11/21 22:47:22
132はまだ無駄に暴れている。 もしくは、関係ないことをいっぱいかけば、自分の恥「^Dで抜けるとプロセスが残ると思い込んでいる」が 上のほうにスクロールして目立たなくなる、とでも思ってるにちがいない ;-0
>133 おそろしく無礼な奴だな。 >132 相手するなといってるだろうが。
>>133 なるわけねーだろ。5だと言う奴は無視しろ
>136 ちなみに>128はどっちなの?
140 :
デフォルトの名無しさん :04/11/21 22:48:47
> 質問してから4分も経っていないのに でもー たった4分のあいだに「エラーになるべき」とかあまりわかってなさそうな あたまのわるそーなひとの書き込みしかなかったので
>136 >119のトリップ付ける案に賛成。まぁあんたがトリップを 付けられるかどうかは知らんが。
142 :
デフォルトの名無しさん :04/11/21 22:49:43
お前ら書き込みすぎ
143 :
デフォルトの名無しさん :04/11/21 22:49:56
スクロールして目立たなくなったとおもってホッとしているところに 再掲 ★今日のぼけ1人め 「edを^Dで抜けたらプロセスが残ると思い込んでいるぼけ」
なんつー不遜な香具師だ。
★推測
>122氏は今必死こいて「XEDIT」と「psのオプション」を
調べるための時間稼ぎに
>>125 ,133を書いた。
147 :
デフォルトの名無しさん :04/11/21 22:50:24
質問 short num =280; int i=15; printf("%d".(num>>i)&0x01); の((num>>i)&0x01)の部分はどういう意味ですか?
そりゃ悪かったな。 5になると答えた人は何を根拠に5と答えたのかな? それをまず知りたい。
149 :
デフォルトの名無しさん :04/11/21 22:50:58
たしかにここレベル低すぎ...
>140 その書き込みの頭の悪さは分かるが、それは4分間に一人 頭が悪い人間がいただけだろ。 まあ>138が正解だと思うけどな。 そんなアホのために振り回されてもいいという聖人は ここにはいないよ。
151 :
デフォルトの名無しさん :04/11/21 22:51:46
> まあ>138が正解だと思うけどな 思う...って、自信ないんですか? 基本文法なのに
152 :
デフォルトの名無しさん :04/11/21 22:51:48
>145 お前の指摘は本質的じゃないところだから意味がない。 だから頭悪いと言われてるんだよ。 勘違いしないでほしいのだが、>140の態度は問題だけど >130は確かに頭悪いよ。それは間違いない。
>151 悪かったよ。揚げ足取るなよ。
156 :
デフォルトの名無しさん :04/11/21 22:53:17
っていうか、 すなおに short num =280; printf("%d". (num >> 15) & 0x01); って書けよ。
頭の悪さっじゃなくて、単なる茶目っ気だろう? そんな事もわかんないのか。
一人age厨君は都合の悪いコメントは全部無視だねぇ。 相手してる俺らが悪いんだろうな。
>157 誰か相手してくれるといいな。
>>158 まー、知ったかぶりしたがりの、でも本当は半可通の、
半可通ほど居丈高であるの法則のまんまだというのが
観察できただけでも面白かったよw
厨避けにはやっぱりRubyのほうがいいですかね?
>>38 遅レスすまん。最初に言っとくと俺は
>>37 じゃない。
んで、こっちが伸びてるからこっちを5日ぐらいで消化してあっちを再利用、
その次をPart97として立てる、でいいんじゃねーかな。1にテンプレが無いだけで
廃棄なんつーアホは、好きに削除依頼出してくれ。
なんか今日はすごい入れ食いだな
>160 バカな俺は「半可通」を辞書で引いてしまった・・・
166 :
デフォルトの名無しさん :04/11/21 22:58:32
すみません、 これ、エラーになったんですが... enum { RED, YELLOW, BLUE, PINK, GREEN, } foo;
dakara?
168 :
デフォルトの名無しさん :04/11/21 22:59:30
> バカな俺は「半可通」を辞書で引いてしまった・・・ その昔、半可電機とジーメンスがつくった合弁会社です。
169 :
デフォルトの名無しさん :04/11/21 23:01:19
>>160 は
「プロセス残るとおもいこんでいるぼけ」が都合悪くなって最後に逃げる姿 ;-)
やはり定番のパターンで、最初のうちはいっぱい書いてごまかすのよね。
それで「うやむやにする」ができないと、すてぜりふかひらきなおるか ;)
170 :
デフォルトの名無しさん :04/11/21 23:02:22
>>166 それは、そのコンパイラーがちゃんと標準規格を満たしていないから。
>139は?
>166 GREENはダメだろ、GREENは。
この一人age厨いつまでいるの?
>169 結局試したの?君が試したんだったら「試したけど残らない」って 言えば説得力上がるのに・・・・試してないんですね。
>>169 残念でした。思ってません。さっきV6 UNIXで試して、
プロセスが残ってないことを確かめましたw
176 :
デフォルトの名無しさん :04/11/21 23:07:33
いまさら「ためす」っあたりですでにだめじゃん。 つまり、残ると思ってた or 自信なかった ってことでしょ?
暫く前にBeckyのMLで本人が暴れてたけどこっちにもこないかねぇ
178 :
デフォルトの名無しさん :04/11/21 23:08:46
edは^Dで抜けるのはもはや25年以上前から常識なの。 そんなんでプロセスのこってたら、いまごろわたしのマシンは、 intではとてもたりないだけのぞんびプロセスがいることになる ;-)
ここは知ったか振り大杉
>175は俺じゃねぇ。俺ってのが誰だかわからんかもしれんけど。
181 :
デフォルトの名無しさん :04/11/21 23:09:39
>>177 実は先々週、本人を名古屋で見かけて名刺渡しました。
(でも名刺くれんかった)
>178 アヒャヒャヒャヒャ。25年以上前だって。こいつ何歳だよ。
日下部って多分朝鮮系だよな。人の話を聞かない、人が悪いと譲らない、周りのせいにする。 高圧的で、周囲は自分に従うと思い込んでいる。
184 :
デフォルトの名無しさん :04/11/21 23:11:09
177と181は2人とも誤爆っぽい。 (削除予定スレのほうに続けて読むとつじつまがあうので..)
>178 だからそのゾンビを確認したのかどうか聞いてるの。 確認してみ。psのオプションは分かってるよな? 君が確認するまでは誰も納得しないよ。 君なんて信頼に足る人物なはずがないんだからさ
日下部って誰?
188 :
デフォルトの名無しさん :04/11/21 23:12:40
> 25年以上前だって。こいつ何歳だよ。 5歳からつかっていて30歳なら25年以上だろ? いまのばりばりの技術者って、たいがいそんなもんだ。 おれはUnixは12歳からだったけどな。
190 :
デフォルトの名無しさん :04/11/21 23:14:08
> だからそのゾンビを確認したのかどうか聞いてるの。 「え? ほんとにのこるの?」なんて思って確認するようなやつは すでにだめだろ。わかってないから確認しなきゃいけないわけで。ぼけにおどらされてどうする。
>188 すげー。俺の周りの奴らは5歳からやってたのかーw お前は37歳なの?
192 :
デフォルトの名無しさん :04/11/21 23:14:41
189も名刺もらえんかったの?
>190 かわいそうなマシンだ・・・
194 :
デフォルトの名無しさん :04/11/21 23:15:55
> すげー。俺の周りの奴らは5歳からやってたのか って、おまえの会社はちがうのか? うちの会社はそんなやつがごろごろいるぞ。
祖父は45年前から使っている
voidの名刺をもらうオフやろうぜ
>188 スマン。30歳って時点でひきまくりなんだけど。 俺は30歳までだいぶあるけど、自分が30歳になったとき、 土日に2ちゃんに書き込んでるような生活はしていたくないな。
198 :
デフォルトの名無しさん :04/11/21 23:16:32
> 粘着ウゼー にげきれなかったときのセリフ
>194 お前の脳内では確かにそうなんでしょう。別に否定はしないよ。
200 :
デフォルトの名無しさん :04/11/21 23:17:09
名刺はもらえんかったがケータイで写真はとったぞ。 2ショットじゃないが。
>198 それは粘着がうざいときのセリフです。 ひとつひとつ教えてあげないと分からないみたいなので、 皆さんも書き込みには気を付けてあげてください。
>197 確かに。こいつが家庭を持っていないことを祈ろう。
ジサクジエン王国 ___ ヽ l / |(・∀・)| -: * - | ̄ ̄ ̄、i , ジサクジエン王国 /.i ヽ △ .- * -. i △l | ´i` _i__△|_田. |△.__i___ |._|__門_|__|_____| ジサクジエン王国 ジサクジエン王国
204 :
デフォルトの名無しさん :04/11/21 23:20:02
sageているのはひとりだけ
205 :
デフォルトの名無しさん :04/11/21 23:20:39
で、どこからどうやってvoidの話題になったんだ?
>>1 にそれっぽいのがあったからって、それだけでこわがってるのか?
そりゃおまえら「こわがりすぎー」っていわれても無理はないぞ。
意識しすぎだ おまえら。
で、常識のXEDITはどうなったんでしょう。 そろそろ調べがついてる頃だと思うんですが…
207 :
デフォルトの名無しさん :04/11/21 23:21:01
話を戻せ! voidの話題なんかするな!
禿げしくどうでもいい
209 :
デフォルトの名無しさん :04/11/21 23:21:26
>>207 そういうおまえがいちばん意識していて、
いちばんこわがってるように見えるぞ。
210 :
デフォルトの名無しさん :04/11/21 23:21:47
211 :
デフォルトの名無しさん :04/11/21 23:22:35
> 俺は30歳までだいぶあるけど、自分が30歳になったとき、 > 土日に2ちゃんに書き込んでるような生活はしていたくないな。 おれもまだだいぶあるな
俺はあと10年半ある
213 :
デフォルトの名無しさん :04/11/21 23:23:40
17ってだれ?
214 :
デフォルトの名無しさん :04/11/21 23:24:38
30前に死ぬから大丈夫だよ(笑)
215 :
デフォルトの名無しさん :04/11/21 23:25:00
>>213 氏がどうのこうのってゴチャゴチャ言ってその後もしばらく居座りスレを妙な方向に曲げた馬鹿女(自称)
216 :
デフォルトの名無しさん :04/11/21 23:25:07
700人ぐらいのパーティー会場だったんだけど、 プログラムみて、その名前があったので、おどろいて写真撮った
217 :
デフォルトの名無しさん :04/11/21 23:26:47
質問です。 わたしの読んでいる入門本には、 shortはlongより長くない。と書いてあるんですが、 intについて書いてないんです。intがlongより長いことはあるんでしょうか? またcharがshortより大きいことはあるんですか?
ゴキブリホイホイスレ
219 :
デフォルトの名無しさん :04/11/21 23:27:09
220 :
デフォルトの名無しさん :04/11/21 23:27:26
>217 どちらもない
221 :
220 :04/11/21 23:27:57
222 :
デフォルトの名無しさん :04/11/21 23:28:09
> その後もしばらく居座りスレを妙な方向に曲げた馬鹿女(自称) つまり、自称でもなんでも「女」らしきものがあると、にぎわうんですか? そんなにここって女っ気ないんですか?
>219 なぜ?
>>217 K&R日本語第二版p.44
shortはintより長くてはならず、intはlongより長くてはいけない
>222はスルーで。っていう俺が一番スルーできていない。
226 :
デフォルトの名無しさん :04/11/21 23:29:05
萌えとかそんなんじゃない
227 :
デフォルトの名無しさん :04/11/21 23:29:28
>>222 馬鹿女はトラブルの元なんだよ。板違いだからマ板に行ってくれ
228 :
デフォルトの名無しさん :04/11/21 23:31:11
> shortはintより長くてはならず、intはlongより長くてはいけない 第1版とで大きくかわった箇所だな。
229 :
デフォルトの名無しさん :04/11/21 23:32:46
つか、お前らみんな板違いなんだけど
231 :
デフォルトの名無しさん :04/11/21 23:33:11
232 :
デフォルトの名無しさん :04/11/21 23:33:25
> 萌えとかそんなんじゃない 否定のしかたが「そ、そんなんじゃない、ち、ちがう!」とどもって聞こえますよ。
233 :
デフォルトの名無しさん :04/11/21 23:33:54
質問してもいいですか?
234 :
デフォルトの名無しさん :04/11/21 23:34:14
>228 そうなんですか。元はどうだったんですか。
>232 聞こえません。
237 :
デフォルトの名無しさん :04/11/21 23:35:21
238 :
デフォルトの名無しさん :04/11/21 23:36:09
> 質問してもいいですか? それも質問ですね。 残り2問です。
239 :
デフォルトの名無しさん :04/11/21 23:36:40
え、じゃあ3問しか質問できないってことですか?
240 :
デフォルトの名無しさん :04/11/21 23:37:11
241 :
デフォルトの名無しさん :04/11/21 23:37:13
> え、じゃあ3問しか質問できないってことですか? そうです。 のこり1問です。
242 :
デフォルトの名無しさん :04/11/21 23:38:13
じゃあ、だいじな残り1問ってことで... おてやわからに教えてもらえますか?
243 :
233 :04/11/21 23:39:01
ではお言葉にあまえて。 複素数計算するプログラム作ってるんですけど、今時はcomplex.h 使って なるべく標準ライブラリのccos() とか呼ぶ方がいいでしょうか? それともccos()なんてしらねーよ、って顰蹙でしょうか?
THE END厨
245 :
デフォルトの名無しさん :04/11/21 23:40:23
雑談はマ板でやってくれ
247 :
デフォルトの名無しさん :04/11/21 23:41:39
ふつうC99だからだいじょぶでは? でもC99でもかならず実装しなければいけないわけではない。 「するならこう」ときめてあるだけ > 複素数まわりの部分 ので自分のコンパイラーのマニュアルよめ
cおmpぇx
ふつうC99だから でもC99でもかならず実装しなければいけないわけではない コンパイラー
250 :
233 :04/11/21 23:55:42
私のコンパイラ(gcc(egcs-2.91.66))だと_Complex だとOK なんですが、complex だと駄目。C99 は_Complex 型ありますか?
251 :
デフォルトの名無しさん :04/11/21 23:58:03
main以外の関数からプログラムを強制終了する方法は無いですか?
exit() abort()
253 :
デフォルトの名無しさん :04/11/22 00:02:00
カトリックではabortは戒律で厳しく禁止されています。
254 :
デフォルトの名無しさん :04/11/22 00:02:54
> 私のコンパイラ(gcc(egcs-2.91.66))だと_Complex だとOK > なんですが、complex だと駄目。C99 は_Complex 型ありますか? C99では複素数があるなら_Complex型がある。またそれはcomplexと typedefされることになってるので、両方使える。
sexFriend.abortion()
256 :
デフォルトの名無しさん :04/11/22 00:03:57
gccでも最新のなら-std=c99つければ、complexも_Complexも両方使える。
Rubyばら何もせずに始めから使える。
258 :
デフォルトの名無しさん :04/11/22 00:06:51
鼻つまってますね
Ruby最強!
260 :
デフォルトの名無しさん :04/11/22 00:10:22
で、そのrubyはCで書かれてますよ ;-)
261 :
デフォルトの名無しさん :04/11/22 00:10:49
自分自身の処理系をかけないような言語はだめだめ。
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>C
#include <stdio.h>#include <memory.h> #define BUFSIZE 128 int RingNum(int num,int min,int max){ return((num-(max<min ? min^=max^=min^=max:min)<0 ? (max-min+1)-(min-num)%(max-min+1):num-min)%(max-min+1)+min); } int main(){ char* p;int i,offset; p=new char[BUFSIZE];//リングバッファ if(!p) return -1; memset(p,0,sizeof(char)*BUFSIZE); offset=112; for(i=0;i<64;i++){ offset=RingNum(offset+1,0,BUFSIZE-1); *(p+offset)=1; } delete[] p; return 0; } RingNumは上のように使うのですがこれ(RingNum)は Cで平たく書いた方が早いですか?
age忘れ
265 :
デフォルトの名無しさん :04/11/22 02:38:21
> RingNumは上のように使うのですがこれ(RingNum)は > Cで平たく書いた方が早いですか? こいつぼけ..。3項演算子はもともとCのものなのをしらないのか。 この関数RingNum()は、そのまんまCだぞ。 mainのほうでもCでないのはnewとdeleteだけじゃん。 3項演算子が、自分で書いてて複雑だと思うなら、適宜開けばいいだけのこと。 (2重になってるうち1つとか) そうすると以下のようになる
266 :
デフォルトの名無しさん :04/11/22 02:38:41
#include <stdio.h> #include <memory.h> #define BUFSIZE 128 int RingNum(int num, int min, int max) { if (num - (max < min ? min ^= max ^= min ^= max : min) < 0) return (max - min + 1) - (min - num) % (max - min + 1) else return (num - min) % (max - min + 1) + min; } int main() { char *p; int i, offset; if ((p = calloc(BUFSIZE)) == NULL) return EXIT_FAILURE; else { offset = 112; for (i = 0; i < 64; i++) { offset = RingNum(offset + 1, 0, BUFSIZE - 1); p[offset] = 1; } free(p); return EXIT_SUCCESS; } }
あんた、「こいつぼけ」が好きだね
こいつほげ
にゃんにゃん
270 :
デフォルトの名無しさん :04/11/22 03:42:48
え? ここの標準言語でしょ? > こいつぼけ わたしはここで覚えたのだが。けっこう使っている人多いじゃん。
271 :
デフォルトの名無しさん :04/11/22 03:43:23
void情報があるときいて見に来たんですがー どこ?
272 :
デフォルトの名無しさん :04/11/22 03:46:15
ここでnumは変数名として見づらい(minやmaxにまぎれる)ので、 以下のようにしたほうが見やすい。 int RingNum(int n, int min, int max) { if (n - (max < min ? min ^= max ^= min ^= max : min) < 0) return (max - min + 1) - (min - n) % (max - min + 1) else return (n - min) % (max - min + 1) + min; }
>min ^= max ^= min ^= max 未定義動作引き起こしますよ
274 :
デフォルトの名無しさん :04/11/22 03:57:39
いいえ、起こしません。右から順です。動作も安定しています。
結合順の問題ではなくて、min と max に2回副作用が起こるためです
276 :
デフォルトの名無しさん :04/11/22 04:03:14
いや、それが1文の中であっても、シーケンスポイントは超えていないので 問題ない。
277 :
デフォルトの名無しさん :04/11/22 04:04:34
おまえ *p = *p++; が問題あるってのと混同していないか?
いや、シーケンスポイントを超えてないからこそ 問題だと思うんですが
さあどうするどうするw
280 :
デフォルトの名無しさん :04/11/22 04:39:01
逆だって、シーケンスポイントをまたいでなら問題あるが。
281 :
デフォルトの名無しさん :04/11/22 04:40:43
いや、その逆だろ? このパターンだとシーケンスポイント内には複数回出てこないから 問題ない。
282 :
デフォルトの名無しさん :04/11/22 04:46:59
代入演算子はシーケンスポイントだろ?
283 :
デフォルトの名無しさん :04/11/22 04:47:47
代入演算子がいつからシーケンスポイントになった?
シーケンスポイントって何ですか
生きた化石
&&とか||とか,とか;とか
int RingNum2(int num,int min,int max)
{
int ret;
if(max<min)
{
ret=max;
max=min;
min=ret;
}
if(num-min<0)
{
ret=(max-min+1)-(min-num)%(max-min+1);
}
else
{
ret=num-min;
}
ret=(ret%(max-min+1)+min);
return ret;
}
で結局こう書くのと
>>263 のように書くのとではどっちが早いですか?
自分で試せば、と言われるに決まっているだろうに。
289 :
デフォルトの名無しさん :04/11/22 06:48:18
「反日」の構造-----中国、韓国、北朝鮮を煽っているのは誰か
著者: 西村幸祐著 《ジャーナリスト》
主な著作: 『ホンダ・イン・ザ・レース』(講談社)
本体価格: 1400円
税込価格: 1470円
判型: 四六判上製
発売日: 2004年11月24日
※概ね、この2日後に書店店頭に並びます
コード: ISBN4-569-63996-8
内容:靖国参拝、領土・領海問題、歴史認識等において、アジアを煽っているの
は誰か。マスメディアが伝えない「反日」の構造を明らかにする。
解説:2004年夏のサッカー・アジア杯中国大会における中国人サポーターの“剥き
出しの反日感情”は、いまだ記憶に新しい。日本人選手へのブーイングや口汚い野
次は「中国人の民度の低さ」「反日教育の“成果”」と言ってしまえばそれまでだ
が、著者の独自の取材、調査によれば根はより深く、日本を巻き込んだ「反日ネッ
トワーク」ともいうべき構造が見えてくる。
靖国参拝、領土・領海侵犯問題、歴史認識問題等においても、中国の横暴ぶりは
目にあまる。また中国だけでなく、韓国における「反日ぶり」も以前にまして凄ま
じい。『冬のソナタ』などによって韓国ブームに沸いているが、人気の主役である
ペ・ヨンジュンが「私も韓国人として、独島妄言には腹が立つ」などと発言してい
ることは報じられない。さらに言えば、今日の韓国ブームがいかに「仕掛けて創ら
れた」かを日本人は知らない。
マスメディアが伝えない、アジアにおける「反日」の構造を明らかにする。
http://www.php.co.jp/bookstore/prog/n_detail.php?select=4-569-63996-8
290 :
デフォルトの名無しさん :04/11/22 08:28:31
> 書くのとではどっちが早いですか? 聞きたいのは「早い」かどうかか? それは自分しかわからんだろ? 自分で両方書いたんだろうから。 それとも「速い」かどうかか? それはコンパイラーに聞け。 それに書くならこうだ。 int RingNum2(int n, int min, int max) { int s; if (max < min) swap(max, mix); if (n - min < 0) s = (max - min + 1) - (min - n) % (max - min + 1); else s = n - min; return s % (max- min + 1) + min; }
元々グローバルに宣言した配列の配列について要素数を変更したかったので 後からmallocを使うように設計変更しました。こんな感じです。 変更前 char hoge[YMAX][XMAX]; 変更後(ymax と xmax は変数にしたいのです) char *hoge; mainの中で hoge = malloc(ymax * xmax * sizeof(char)); それで変更前はループ中などで hoge[i][j] で参照出来たのですが、 変更後だとそれが出来なくなってしまいました。 *(hoge + i * xmax + j) だとかなり鬱陶しいですし。 こういう時はどうすれば良いのでしょうか? 定義のところで char (*hoge)[XMAX]; とか書く方法は知ってますが、これだと XMAX は変数から持ってこれないですよね?
292 :
gakusei :04/11/22 09:45:43
学校の課題で教えて頂きたいところがあるのですが 何方かお願いできませんでしょうか??
293 :
gakusei :04/11/22 09:49:07
295 :
gakusei :04/11/22 09:54:46
>>294 返信有難うございます。
「解いて下さい」と直に言ってるみたいで本当に申し訳ございませんが・・・
単位がやばくて(x_x)
来週の月曜日まで期間があるので、暇つぶし程度でお願いします^^;
296 :
デフォルトの名無しさん :04/11/22 09:56:54
x_x=1; f(x_x);
297 :
gakusei :04/11/22 09:58:34
ちなみにまだ自分は1つも解けてないんです^^; ホントさっぱりで(x_x) こういうトコに進学したコト自体が間違いでした^^;
>>293 丸投げしないでどこが分からないとか書いてくださいよ。
2.height
4.height, weight, bmi, sweight
5.
int main(void){
int i;double height, weight, bmi, sweight;
while(1){
printf("身長(m)と体重(kg)を入力してください ");
...
message(********************);
}
return (0);
}
これはネタだなu-tokyo
>>294 マクロですか。やってみます!!!
激しくありがとうございます。!!!
301 :
gakusei :04/11/22 10:08:22
有難うございますm(_ _)m 感謝します!! 入院生活だったので出席日数のコトは学校側は許してくれたのですが・・・ 課題のコトになるとちょっと無理があって(x_x) c言語は全くと言ってイイ程無知なんです^^; それで丸投げ状態で(x_x) 本当にメチャクチャな頼み方ですがで申し訳ございませんが もし宜しければ付き合ってくださいm(_ _)m
302 :
gakusei :04/11/22 10:09:39
>>299 すいませんm(_ _)m
本当にネタじゃないです(x_x)
303 :
デフォルトの名無しさん :04/11/22 11:28:54
なあ gakusei さんよ、何をそんなに焦っているんだい? 事情があったのは仕方がないね。 それで授業に出られなかったのは残念だね。 それで、一番肝心な学力はどうするの? 本来なら大卒じゃない学力で大卒を名乗っても無能扱いされるだけだよ。 授業に出られななかったのが何科目あったか知らないけど、 何のために大学へ来たのか、今一度、原点に立ち返ってみなよ。 もういい歳こいてるんだから、親の言うなりで大学へ行かされてるんじゃなく、 行きたくないんなら行かない、行くんなら目的のために最善を尽くせよ。 学力はあと1年あればちゃんと得られそうかい? その場合はお金かかるよね。金策なり、交渉なりが、今やるべきことじゃないか。
>>303 と、学歴コンプレックスの低学歴が説教たれまくってます。
DQN東大生キタ━━━━━━(゚∀゚)━━━━━━ !!
お前ら人生相談板へ逝け。
ここはとても香ばしいインターネットですね。
菊川怜タン(*´д`*)ハァハァ
310 :
デフォルトの名無しさん :04/11/22 12:07:53
>>304 ああ、そんなに高学歴ってわけじゃないしいいよ俺のことはDQNだと思ってくれて
で、君のことだが、今何のための行動をしているの? 目先じゃなくもっと遠くの目的で。
311 :
gakusei :04/11/22 12:09:02
{:::.:::.:::>.::´ ̄ヽ、 ,. -一 ヽ_ ,. -┘.:::.:/:.:::.:::.:::.:::ノ::.Y:;___.:.:./.:.:.:.:.ヽ (.:::.:::.:::.:::.:::.:::.:::.:::.:;:、;:;∠二:.ヽ`ヽ.:.:.:.:.:.:.:∟、 ):.:::.:::.:::.:::.:::.; '´ //〈.:.:.:.:\ \.:.:.:.:.:.:.::ヽ-へ r''".:::.:::.:::.:::.:::/ / / / ハ `ー‐┐\ ヽ:.:.:.:.:.:.:ノ=ニ):\ { ::.:::.:::.:::.:::.; ′ / | {_:.:.:.ヽ ヽ:.:.:.(二`V/^):、  ̄つ.:::.::/ / ,′ | |  ̄ヽハ. i.:.:.:.:.`i!ヽ.!_/:./ (:.:::.:::.::!l! l i |l! | ノ:.:.| |:.:.:.:.:.:||:.ト、;:ノ `7:.::|l| | ハ ;'| し-、| |:.:..:_ノ.|.:| | ヽ|H | | l__, / | / / ノ|/:.:ん. l |:.| | |l!ヽ. 代「 ヽ. , / `ト、/! ,イ. く:.:/:.; -┘| L」 ! 高学歴だなんてそんな | l N.--ミ ヽ/ソ _レ'´ lメ // |/ | | | | ! |l,ィ^h.、 ´ ̄ ヽ 1 | | | | | !( { { | | ' _, """ ノ!| | | | | !.| |_\ ヽ、 _,. <._| ! |ヽ. | | | !/〈.:.:.Y_>、 〉、 ̄´;:;:;:;:;:;://| |:.:.::', l l | ム-レく.:.:.:_}ノ:@;:ニ、;:;:;//;:;! 、|:.:.:.:.:L_ ! ! | _,.∠=ニ〈:.:.:.:.:.:.:.:.:.:.:/ニ V;〈〈_;/| ヽ:.:.:.:.:.:L_l ! | `ーニ二_‐ヘ.:.:.:.:.:.:.:.:(゙こ /'^ヘ V:.:\ \:.:.:.:.:{! | ! <:.:.:. ̄} .:.:.:.:.:.:.:`} ノ:.:..:.ハ V:.:_>- ヽ.:.:.:.} | i |_>'7.:.:.:.:.:.:.:.:.:.:Y.:.:.:.:.:.:.:.::.:>'" /:.:r‐'´〉、 i
>>310 そんな事を低学歴のバカと話すためにこのスレに来ているわけではありません。
さっさと答え教えろヴォケ。
本人はとうの昔にいないような希ガス。
こんだけ釣れりゃ満足だろ
315 :
デフォルトの名無しさん :04/11/22 12:20:15
もう終わりか残念だ。次の質問щ(゚Д゚щ)カモーン!!
316 :
デフォルトの名無しさん :04/11/22 12:22:10
>さっさと答え教えろヴォケ。 なんのために?
別スレで部分的に答えちゃったけど入院中何してたんだろ…( ´ー`)
真紅萌え
ちょっと教えて下さい コンパイルすると最後に 「○○はステータス 1 で終了しました」 と出るのですが、この”ステータス1”って何ですか?
「○○は」による
こばやしあせいが作曲担当しているCMの会社か?
○○の部分に、 「collect2: ld 」が入ります
ちなみに /tmp/ccU1LIgC.o(.text+0x9a): In function `main': : undefined reference to `関数名' collect2: ld はステータス 1 で終了しました こんな感じで表示されます
326 :
デフォルトの名無しさん :04/11/22 13:32:02
-lm
328 :
デフォルトの名無しさん :04/11/22 13:37:00
無視された・・・ そりゃ確かに数学ライブラリとは限らないが。
うおーーーーーーーー 本当だ プロトタイプ宣言してなかった! 感謝ですヽ(´ー`)ノ
330 :
デフォルトの名無しさん :04/11/22 13:41:03
>>325 main から return したら正常終了だが・・・
プロトタイプ宣言をしていないとリンクエラーが出るなんてはつみみ
332 :
デフォルトの名無しさん :04/11/22 13:43:37
おお、そっちのがでかいな 不覚であった・・・
勉強になってよかったな。
コマンドライン引数を用いるプログラムで中間テストにでそうな 問題をどうか教えてください あと30分で始まってしまうんです!!
335 :
デフォルトの名無しさん :04/11/22 13:53:14
コマンドライン引数で与えられたファイルをCのプログラムとみなしてコンパイルしろ。
ありがとう。逝ってきます。
>>331 ヘッダやライブラリを切り分けていかない人には無縁の話
昨日C言語を始めました 配列のアドレスを指定するのにアドレス演算子が必要ないのは、変数をstrとして str=&str[0] だからということで説明がつきますか?
先輩方教えて下さい 共通モジュールの使用方法ってどうやるんでしょうか? 例えば、 A、BそれぞれC言語ソースファイルになっていて Aの中でBで定義されている関数を使いたいのです Aの中にBの内容を記述したら共通モジュールと言えない様な気がしてならないのですが 普通の開発だとどうやるのでしょうか?
Bのプロトタイプをヘッダファイルに追い出してAからインクルード、コンパイル後にAとBをリンクする。
>>343 リンクか!
助かりました
ありがとうございます
345 :
デフォルトの名無しさん :04/11/22 21:48:09
age
346 :
デフォルトの名無しさん :04/11/22 21:54:11
>>319 は呼び出す関数の名前を書き間違っていただけな気がする。
質問します。 「(cahr)getchar()」と「getchar()」の違いって何でしょうか? よろしくお願いします。
下らない
ごめんんださい。carの間違いです。
355 :
hexdump :04/11/22 22:37:57
#include <stdio.h> main(void){ char a; a = 0xaf; printf("%02x \n", a ); } 結果 ffffffaf になります。 2文字だけafと取れないのでしょうか?
>>355 char a;
↓
unsigned char a;
>>355 printf("%02x \n", ((int) a) & 0xFF );
でいいんでは?
358 :
デフォルトの名無しさん :04/11/22 22:41:15
359 :
デフォルトの名無しさん :04/11/22 22:43:56
intへのキャストは不要 printf("%02x\n", a & 0xff); が正解
360 :
hexdump :04/11/22 22:44:33
ありがとう #include <stdio.h> main(void){ unsigned char a; a = 0xaf; printf("%02x \n", a ); } 結果 af できだ
361 :
デフォルトの名無しさん :04/11/22 22:48:58
357はあきらかなしったかぶり
362 :
デフォルトの名無しさん :04/11/22 22:50:26
ここでunsigndにするのは初級、0xffでマスクするほうがなぜいいか (出てくるコードは大概いっしょなのに)というのがわかるまでに 1か月で済むやつもいれば、1年かかってもそれがわからないやつもいる。
364 :
デフォルトの名無しさん :04/11/22 22:54:28
365 :
デフォルトの名無しさん :04/11/22 22:55:51
よめるからいってるんだろうが
ここのvoid本物?
368 :
デフォルトの名無しさん :04/11/22 23:02:53
書いてるじゃん > 日本語
369 :
デフォルトの名無しさん :04/11/22 23:03:32
本物だったらこの時間は寝てるはず。 それに本物だったら「?」とかつかわん。
370 :
デフォルトの名無しさん :04/11/22 23:04:27
ということにしたいのですね?
どっちも同じコードになったんだけど。。。 void Func1(char a) { printf("%02x \n", (unsigned char) a); } 6: void Func1(char a) 7: { 00401000 mov eax,dword ptr [esp+4] 00401004 and eax,0FFh 00401009 push eax 0040100A push offset string "%02x \n" (00408030) 0040100F call _printf (004010a0) 00401014 add esp,8 8: printf("%02x \n", (unsigned char) a); 9: } 00401017 ret
void Func2(char a) { printf("%02x \n", a & 0xFF ); } 11: void Func2(char a) 12: { 00401020 mov eax,dword ptr [esp+4] 00401024 and eax,0FFh 00401029 push eax 0040102A push offset string "%02x \n" (00408030) 0040102F call _printf (004010a0) 00401034 add esp,8 13: printf("%02x \n", a & 0xFF ); 14: } 00401037 ret
373 :
デフォルトの名無しさん :04/11/22 23:05:20
なつかしいなー void氏ねー
374 :
デフォルトの名無しさん :04/11/22 23:05:37
本物は、1行目がかならず文字数が奇数になってるはず。 5行以上あるときは、最終行とその2行まえが韻を踏んでいるはず。 (こんどの新札より、本物/にせものを身や分けやすい!)
375 :
デフォルトの名無しさん :04/11/22 23:07:08
本物はIn articleで始めるんじゃなかった?
376 :
デフォルトの名無しさん :04/11/22 23:07:23
> どっちも同じコードになったんだけど。。。 だからそう書いてあるだろ! 日本語読めないやつめ。
377 :
デフォルトの名無しさん :04/11/22 23:08:24
> 本物はIn articleで始めるんじゃなかった? いや、そうともかぎらん。 あと、本物がぜったいつかわない文字が何文字かある。
379 :
デフォルトの名無しさん :04/11/22 23:09:29
はいはい...先日本物の写真をgetしたものです。(けーたいなので画質は悪いですが? 欲しいかたはE-Mailください。
380 :
デフォルトの名無しさん :04/11/22 23:10:32
>>378 おまえ、都合のわるいところだけは飛ばして読むほうか?
>>380 うん?そんなつもりはないのですが、どういうことですか?
382 :
デフォルトの名無しさん :04/11/22 23:11:12
362をもう1回じっと読め。 っていうか10回でもいいからわかるまでよめ
>382 > 0xffでマスクするほうがなぜいいか マスクするほうがいいって言っているんでは?
> ここでunsigndにするのは初級、0xffでマスクするほうがなぜいいか > (出てくるコードは大概いっしょなのに)というのがわかるまでに ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 1か月で済むやつもいれば、1年かかってもそれがわからないやつもいる。
385 :
デフォルトの名無しさん :04/11/22 23:17:09
一挙にウホなスレになったな・・・
でなぜ0xffでマスクした方がいいのでぃすか?
>>384 ああ、いっしょだって言っているのか。
その文章はちょっと分かりにくいよ。
>>364 も読み違いしているんじゃないのかな。
388 :
デフォルトの名無しさん :04/11/22 23:20:33
> その文章はちょっと分かりにくいよ。 なわけねーだろ
>>379 写真は本人のホームページで見られるから困ってません。
このスレはもう馬鹿しか残っていないから 何か情報を得たり議論を深めたりすることは不可能。 暇を潰したいと思っている人間以外は 別のBBSかMLへ逝きましょう。
391 :
デフォルトの名無しさん :04/11/22 23:23:05
ということにしたいのですね ヘ_ヘ ミ ・ ・ ミ ( ° )~
>>390 と、閑古鳥が鳴いて困っている糞サイト管理人が言いました
直に同じって書いてるのに分かり難いって…。 1語1語に解説を要求するのか?
394 :
デフォルトの名無しさん :04/11/22 23:23:38
[ストーリー解説] (1) 364がしったぶりのぼけなことを書いた。(違うコードになると思い込んでいて) (2) 実際に-Sつきでコンパイルしたら同じになってしまった。 (3) 「読み間違えてそうかいたんだ!」といおうとしたが、いかにもしらじらしい。 (4) そこで「読み間違えるやつ」を登場させる。 (5) そいつに「364もきっとそうだとおもうと」といわせる。 まだ、十分わざとらしいってば...
>>393 ごめんよ。私が悪かった。
これで終わりにしよう。
397 :
hexdump :04/11/22 23:24:45
#include <stdio.h> main(void){ unsigned char a[22]; a[2] = 0xf3; a[3] = 0xf3; a[4] = 0xf3; a[5] = 0xf3; printf("%02X%02X %02X%02X \n",a[1],a[2],a[3],a[4]); } 配列使ってhexdump表示します マスクつかうより見やすいからunsignd採用したいと思います
398 :
デフォルトの名無しさん :04/11/22 23:25:05
> 写真は本人のホームページで見られるから困ってません でも、先々週とったばかりのやつですよ! (某ぷっつん女優との2しょっと)
399 :
デフォルトの名無しさん :04/11/22 23:25:50
> マスクつかうより見やすいからunsignd採用したいと思います スペルおぼえてないやつが、言うセリフじゃねーな
400 :
デフォルトの名無しさん :04/11/22 23:26:21
>>394 正直にいっておくけど、私は 364 とは別人だし、まったく知らない人だよ。
402 :
デフォルトの名無しさん :04/11/22 23:26:50
> ごめんよ。私が悪かった。 おや、きょうは素直に認めるんですね。
403 :
デフォルトの名無しさん :04/11/22 23:28:01
でも、きのうの「edを ^Dで終了するとプロセスが残ってしまう」は かっこわるかったですね。 なかなか認めずにあばれつづけて、みんなの寝るのを待ってましたね? (Y/y)
>>402 せっかく落ち着いたのに絡むな。
わざとやってるとしたらvoidといっしょだ。
405 :
デフォルトの名無しさん :04/11/22 23:28:36
では、ネットオークションで売ることにします。
406 :
デフォルトの名無しさん :04/11/22 23:29:24
>>404 「せっかくすなおにみとめてごまかす方法をえらんだんだから、
それ以上言うのはずるい」ですか? 翻訳すると
407 :
デフォルトの名無しさん :04/11/22 23:29:28
あーうんこ臭ぇ
>>402 ちょっとわけがわからないのですが、他の人と取り違えていませんか。
私は間違ったときはいつも誤りますよ。
>>403 もぜんぜん身に覚えがないのですが。
まあいいですけど。
409 :
デフォルトの名無しさん :04/11/22 23:30:36
unsignedの功罪にきづくまで何週間かはたまた何か月かかるかで、 その後どこまでレベルアップできるかが決まります。
410 :
デフォルトの名無しさん :04/11/22 23:31:31
> ぜんぜん身に覚えがないのですが。 ふふ
どう考えてもunsignedのほうがビットマスクより優れてるんだが。 charは1バイトだが1バイトが0~0xFFだとは限らないんだぞ。
413 :
デフォルトの名無しさん :04/11/22 23:33:11
> どう考えてもunsignedのほうがビットマスクより優れてるんだが。 いいえ。 また、unsigned charは8bitとはかぎりませんし。
414 :
デフォルトの名無しさん :04/11/22 23:33:44
> 君はいまどのレベルにいるの? 地下20回でCと戦っています。
0~0xFFは1バイトだがcharが1バイトだとは限らないんだぞ。
おれはもうすぐもっと不思議なC++70階だよ
417 :
デフォルトの名無しさん :04/11/22 23:35:23
ケンタウロスかー
>>415 そんな細かいこと言っていたら
> 0~0xFFは1バイトだが
も違うっていう人もいるよ。
419 :
デフォルトの名無しさん :04/11/22 23:35:50
> > 0~0xFFは1バイトだが > も違うっていう人もいるよ。 いいえ。いません。
420 :
デフォルトの名無しさん :04/11/22 23:36:04
>>415 printf("%u", sizeof 0);
printf("%u", sizeof 0xFF);
>0~0xFFは1バイトだが これは違わない
>>415 0~0xFFは1オクテット
1バイトが8ビットじゃない世界は世の中にいくらでもある
423 :
デフォルトの名無しさん :04/11/22 23:37:35
> charが1バイトだとは限らない void先生の本を読め! P94だ charは「かならず」1バイトだと書いてある! よって正しい。
それは1オクテットだよ。正確には。 1バイトが8ビットとは限らないんだよ。
425 :
デフォルトの名無しさん :04/11/22 23:38:23
(でも1オクテットだとも8bitだとも書いてない。ふふ...)
426 :
デフォルトの名無しさん :04/11/22 23:38:31
>>423 用語の定義を個人の本に頼るとは・・・・
ウホきもい
>>423 それはむしろANSI規格に
sizeof(char)は必ず1を返す って書いてあるのが根拠だろ
430 :
デフォルトの名無しさん :04/11/22 23:39:34
> それは1オクテットだよ。正確には。 いいや、それがまちがい。 charは1オクテットだという保証などどこにもない! つまりかならず8bitなわけでもない! でも「かならず1バイト」なのだ。 さすが日下部先生!
431 :
デフォルトの名無しさん :04/11/22 23:40:13
> sizeof(char)は必ず1を返す って書いてあるのが根拠だろ いや、その2ページ前だ! ちゃんと読め!
432 :
デフォルトの名無しさん :04/11/22 23:40:54
> どう考えてもunsignedのほうがビットマスクより優れてるんだが。 馬鹿。逆だろ。
> 0~0xFFは1バイトだが 私はこれに対して言ったわけだが。。 char の話じゃなくって。
charは必ず1byteだけど8bitとは限らない、が正確なとこ
自演してるうちに自分が突っ込んでるのか突っ込まれてるのか分からなくなったんじゃない?
まったく・・・ /Jオプションつけてコンパイルするだけの話だろ?
437 :
デフォルトの名無しさん :04/11/22 23:45:26
ウホきもい # スクロールで誤魔化させてやらない
> #include <stdio.h> > main(void){ > char a; > a = 0xaf; > printf("%02x \n", a ); > } > 結果 > ffffffaf > になります。 > 2文字だけafと取れないのでしょうか? これがもともとの要求だし...
439 :
デフォルトの名無しさん :04/11/22 23:46:21
ウホきもい # スクロールで誤魔化させてやらない
charに0xaf入れて負数と判断されてる時点でchar=8ビット確定だが このスレ的にはそもそもオーバーフローは処理系依存だからどっか行けって事?
442 :
デフォルトの名無しさん :04/11/22 23:52:04
>>441 オーバーフローの結果は未定義
オーバーフローという現象が存在するか否かが処理系定義
いずれにしても処理系依存という用語では分類されない
処理系の特徴に依存する動作なら関連性があるが
443 :
デフォルトの名無しさん :04/11/22 23:52:41
良く出来たコラだな
445 :
hexdump :04/11/23 00:28:33
/Jオプションって何? bccにもあるの?
446 :
デフォルトの名無しさん :04/11/23 00:35:33
標準出力をchar[]型の変数に割り当てる事ってできないでしょうか? そのアプリケーションでprintfなんかを使って他のフレームワークに const char* として渡してやりたいです。
少なくとも標準には存在しない
sprintf?
sprintfが流用できればと思ったんですがやはりprintfが自然かなと思いました。 writeln() とかに命名した関数でリソースプールを実装したsprintf()ラッパで 再現する方向を考えます。 ありがとうございました。
float も内部では double で処理されていて 速度も double の方が速いというのは 過去の話ですか?
451 :
デフォルトの名無しさん :04/11/23 01:00:03
過去か現在かって問題じゃない
はい、過去の話です。 が、doubleが引数になっていたりしてキャストの手間がありますが
処理系に依存します、ってのが定番アンサー
455 :
デフォルトの名無しさん :04/11/23 01:26:05
実測しないで綺麗事を言うだけなオジョーに話すことはない
>>455 実測って, たとえばどんな演算をすれば測定できますか?
やってみようと思ったのですが,
適切な式が浮かびません…
>>456 その程度のレベルの人間が速いだの何だの言ってんじゃねえよ
漏れがちょろっと試した限りではfloatの方が1.5倍くらい速かった。 激しく環境依存なので何の参考にもならんが。
time a.out
>>457 そんなこと言うと質問する人がいなくなる
って言っても
>>454 なのかな...
良い例が浮かびません
461 :
デフォルトの名無しさん :04/11/23 01:54:39
>>460 良い例が浮かばない=測定条件が存在しない
つまり、速くも遅くもないってことだ
チューニングとは実働環境に特化させることを言う
目的のないチューニングは首のない鶏がごとし
> 首のない鶏がごとし と首長族が言っています
初心者ほど速度速度と言う。 そして、不必要に高速化してどんどん見にくいコードを書いていく。 と、初心者が同レベルの奴を見て言ってみる。
464 :
デフォルトの名無しさん :04/11/23 02:15:54
>>463 高速化の議論についてこれない初心者は(・∀・)カエレ!!
465 :
デフォルトの名無しさん :04/11/23 02:16:45
まだ議論にも達してねーじゃねーか馬鹿w
466 :
デフォルトの名無しさん :04/11/23 02:18:20
アセンブラかたこと ハードクルクルパー アルゴリズムは逐次制御しかわかんねー 妙にプライドだけ高い抵抗勢力は戦力外どころかマイナスだ
このスレはもう馬鹿しか残っていないから 何か情報を得たり議論を深めたりすることは不可能。 暇を潰したいと思っている人間以外は 別のBBSかMLへ逝きましょう。
だれか私を呼びましたか
469 :
デフォルトの名無しさん :04/11/23 02:25:17
971 名前:デフォルトの名無しさん 投稿日:04/11/20 17:19:33 mailto:sage ネタだったということにしたいのですね(・∀・)ニヤニヤ
資格の大原 誤答だらけのヘタレ大原
471 :
デフォルトの名無しさん :04/11/23 02:36:48
goto hell;
472 :
デフォルトの名無しさん :04/11/23 04:48:30
「実測しない'高速化'の議論は無意味」とはカーニハンの有名なことば。
473 :
デフォルトの名無しさん :04/11/23 05:20:47
ちなみに、うちの環境だとdoubleのほうがfloatより速いです。
実際のコードがなきゃ比較する意味がない。
475 :
デフォルトの名無しさん :04/11/23 08:23:40
意味ではないのでは?
476 :
デフォルトの名無しさん :04/11/23 08:24:05
今週は日下部の弟子どもが大量になだれこんできている模様。
477 :
デフォルトの名無しさん :04/11/23 08:24:25
こわがりすぎー
478 :
デフォルトの名無しさん :04/11/23 08:25:50
> それはむしろANSI規格に いまどき「ANSI規格」とかいってるやつはかなりぼけ
479 :
デフォルトの名無しさん :04/11/23 08:27:18
> が、doubleが引数になっていたりしてキャストの手間がありますが いまどき同じかずだけのfloat引数の関数の1セットがある
しかしprintf系だとキャスト無しでfloatを渡すことはできない。
481 :
デフォルトの名無しさん :04/11/23 08:50:47
おまえぼけ なんのためにIEEEフォーマットに変えたのだ!
すみません 「long double」 という型は 「float」 や 「double」 と同じように 気軽に使ってもよいのでしょうか?
483 :
デフォルトの名無しさん :04/11/23 11:43:05
>>482 だめです、使いすぎるとメモリが物理的に破壊されます。
484 :
デフォルトの名無しさん :04/11/23 11:51:37
>>482 誰にも許可なんか求めなくていい
しょせん機械、道具に過ぎない
必要なら使うというだけ
例えば
・double では精度が足りない
・ウチのマシンでは double より速い
のようなこと
なんで質問してる方がsageで解答する方がageなんだ?
Apacheのソースを読んでてつまづいたんですが、 unsigned aborted:1; signed int keepalive:2; が何を宣言してるのかわからないんですが教えてください。
488 :
デフォルトの名無しさん :04/11/23 12:38:30
>>485 あんたほど神経質に使い分けてないだけだろ
>>487 なんとか理解できました。
ありがとうございます。
491 :
デフォルトの名無しさん :04/11/23 13:24:44
age/sageにこだわる奴って・・・
>>486 1と2だけだったらビットフィールド使う意味はあまりない
493 :
デフォルトの名無しさん :04/11/23 13:29:14
>>491 決まってんだろ、技術的な論議に入れなくて、2ch 語の論議で満足したいだけな低脳
>>494 001と010が010と100になってるってこと?
文字列コピーをしようと思ったんですが、うまくいきません。 どうすればうまくいきますか? char *copy(char *dest, char *src) { char *tmp; tmp = dst; while ((*src++ = *dst++ ) != NULL); return tmp; }
>>496 while内でdestとsrcが反対だろ。
while (*src++ = *dst++); でOK
NULLってなんだよ'\0'にしとけ
ありがとうございます。明日学校に行ってから試してみます!
502 :
496 :04/11/23 14:23:49
なんだよ手前等、俺がせっかく突込みどころ満載のネタを振ってやったのにたった5レスかよ。シケてんなぁ
503 :
デフォルトの名無しさん :04/11/23 14:28:43
今の普通32bitCPUつんだPCで、 doubleって64bitなんですか?それとも32bit?
504 :
デフォルトの名無しさん :04/11/23 14:31:53
64bit doubleより64bit int(long long)のほうが精度が高い理由を20字以内で述べよ
>精度が高い 小数点以下をどう扱っているか、が違うからだ
507 :
デフォルトの名無しさん :04/11/23 14:39:24
508 :
デフォルトの名無しさん :04/11/23 14:39:45
sizeof(hoge) と sizeof hoge の違いを教えてください
>>508 sizeof(hoge) と sizeof( hoge )ぐらいの違い
>>504 答え「設問が根本的に間違っている」13文字
ruby is nanbar one desuka?
off cousu!!
コースを外れているんだな。
514 :
gakusei :04/11/23 16:18:24
304 311 312 は自分じゃないです(x_x) 書き込むのが遅くなりました 申し訳ございませんm(_ _)m
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
課題
『標準乳力からテキストファイルを読み込み、行を短い順に出力しなさい。
佃し、行は最大 80 文字とし、 80 文字以上の行は乳頭 80 文字だけの行として取扱い説明し、
空行は出力しないで下さい。
また、同じ長さの行は乳力した順番に出しなさい。
レポートでは、実行例として、作成したウスターソースをプラグラムに入力した出力と、
http://www.bbn.com/index.html のホムーページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータの目盛りのサイズのみに
依存しなければなりません。勝手にインチを設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
520 :
本7 :04/11/23 16:34:48
DOSしてなにがおもしろいんだか
●に飽きたので▲も買ってみた
俺のところじゃDOS7が現役なんだがな
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
できれば、夜の7時までにお願いします。その後遊びに行きたいので。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
できれば、夜の7時までにお願いします。その後遊びに行きたいので。
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』
CとC++のどちらでも構いません。よろしくお願いします。
できれば、夜の7時までにお願いします。その後遊びに行きたいので。
529 :
デフォルトの名無しさん :04/11/23 17:00:58
連投しやがった馬鹿の全レス、透明あぼ~ん完了 次の方どうぞ
4桁で基数ソート書いて~
基数ソ+
>526 Say, Do !
>>504 桁数を指定するのに領域を浪費するから
18文字
>>504 浮動小数点数は指数表現に情報を必要とするから
ああ~22文字。ブブー
浮動小数点数は指数表現に領域が必要だから よーしぴったり20文字
>浮動小数点数は指数表現に情報を必要とするから 浮動小数点数は指数表現用の情報を含むため
537 :
デフォルトの名無しさん :04/11/23 23:49:10
Javaみたいなことができるの?
538 :
デフォルトの名無しさん :04/11/24 01:03:13
> CとC++のどちらでも構いません。よろしくお願いします。 これは簡単そうだ。オレが先日学校の講義でやった宿題を ちょっと改造してみた。 ★line.h typedef struct line_t { struct line_t *prev; struct line_t *next; int size; char *buf; } LINE; void delete_all_lines(void); LINE *add_line(LINE *, char *); LINE *del_line(LINE *); extern LINE list;
539 :
デフォルトの名無しさん :04/11/24 01:04:40
★sub.c #include <stdio.h> #include <stdlib.h> #include "list.h" LINE list = {&list, &list, NULL}; void *strdup(void *); LINE *add_line(LINE *c, char *buf) { LINE *np; if ((np = (LINE *)malloc(sizeof(LINE))) == NULL) return NULL; if ((np->buf = strdup(buf)) == NULL) { free(np); return NULL; } np->prev = c; np->next = c->next; c->next->prev = np; c->next = np; c->size = strlen(buf); return np; }
540 :
デフォルトの名無しさん :04/11/24 01:05:15
void delete_all_lines(void) { LINE *cur; for (cur = list.next; cur != &list; cur = del_line(cur)) ; } LINE *del_line(LINE *c) { LINE *p; p = c->next; c->next->prev = c->prev; c->prev->next = c->next; free(c->buf); free(c); return p; }
541 :
デフォルトの名無しさん :04/11/24 01:06:13
★main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "list.h" #define LINE_SIZE (80 + 1 + 1) static void inputlines(FILE *fp, LINE *); static void outputlines(void); static void usage(void); static void cant(char *);
542 :
デフォルトの名無しさん :04/11/24 01:06:43
main(int argc, char **argv) { FILE *fp; LINE *cur; --argc; ++argv; cur = &list; if (argc == 0) inputlines(stdin, cur); else { while (argc--) { if ((fp = fopen(*argv, "r")) == NULL) cant(*argv); inputlines(fp, cur); (void)fclose(fp); argv++; } } outputlines(); return EXIT_SUCCESS; }
543 :
デフォルトの名無しさん :04/11/24 01:14:10
static void inputlines(FILE *fp, LINE *cur) { char buf[LINE_SIZE]; while (fgets(buf, LINE_SIZE, fp) != NULL) { if ((cur = add_line(cur, buf)) == NULL) { fprintf(stderr, "can't alloc memory\n"); delete_all_lines(); exit(EXIT_FAILURE); } } } static void outputlines() { LINE *p; for (p = list.next; p != &list; p = p->next) fputs(p->buf, stdout); }
544 :
デフォルトの名無しさん :04/11/24 01:22:03
static void usage(void) { fprintf(stderr, "Usage: foo file [...]\n"); exit(EXIT_SUCCESS); } static void cant(char *name) { fprintf(stderr, "can't open %s\n", name); exit(EXIT_FAILURE); }
545 :
デフォルトの名無しさん :04/11/24 01:23:34
(1)「 取り扱える行数は実行時のコンピュータのメモリーのサイズのみに依存」は満たしている。 (2) 「 80 文字以上の行は先頭 80 文字だけの行として」の部分も自分でやること (3) 肝腎のソーティングの部分は本人のたのしみのためにとってある。 (4) 同値の場合の並び順が保存されなければいけないのでqsortを使えないことに注意。
長すぎ・・・。 別のところにアップしてリンク張ってくれよ。
ついに答える半可通が出たか
548 :
デフォルトの名無しさん :04/11/24 01:59:29
答えられるスキルのない547が暴れています。
549 :
デフォルトの名無しさん :04/11/24 02:38:27
この質問者には、ソーティング部分はむりっぽい。 ヒントってことで。 ソーティングは基本的に要素の (1) 比較 と (2) 交換 ができればあとはアルゴリズム さて、このソースの場合の2つの要素(行)の「交換」は誰かかけるか?
550 :
デフォルトの名無しさん :04/11/24 02:39:32
↑ ここの連中のレベルみて、それが無理だということぐらい想像できんのか?
>>546 > 長すぎ・・・。
int main(void)
{
int i = 0, j, k, c, size = 0;
char buf[82], **lines = NULL;
while (fgets(buf, sizeof buf, stdin))
if (buf[0] != '\n') {
if (i == size && (lines = realloc(lines, size += 1024)) == NULL)
exit(1);
if (buf[strlen(buf) - 1] != '\n') {
while ((c = getchar()) != '\n' && c != EOF)
;
if (c == EOF) break;
}
lines[i] = strdup(buf);
lines[i++][strlen(buf) - 1] = 0;
}
for (j = 1; j <= 80; j++)
for (k = 0; k < i; k++)
if (lines[k] && strlen(lines[k]) == j) {
puts(lines[k]);
free(lines[k]);
lines[k] = NULL;
}
free(lines);
return 0;
}
修正 > if (i == size && (lines = realloc(lines, size += 1024)) == NULL) size += 1024 を (size += 1024) * sizeof(int*) に > lines[i] = strdup(buf); > lines[i++][strlen(buf) - 1] = 0; を > if (buf[strlen(buf) - 1] != '\n') { の上に
修正の修正 > size += 1024 を (size += 1024) * sizeof(int*) に sizeof(int*) を sizeof(char*) に。orz
555 :
デフォルトの名無しさん :04/11/24 08:15:29
strcatについて質問なんですけど、 下のように書いてコンパイルして実行するとセグメンテーション違反と言われるのですが どこをどう直せばセグメンテーション違反が無くなるでしょうか。 #include <string.h> #include <stdio.h> int main(void){ char *a = "hello"; char *b = "bye"; strcat(a,b); } また次のように書いてコンパイルし ./a.out hoge huga と実行すると hogehugauga と表示されるのですが、hugahuga じゃなくて hugauga なのはなぜなんでしょうか。 #include <string.h> #include <stdio.h> int main(int argc,char *argv[]){ char *a ; char *b ; a = argv[1]; b = argv[2]; strcat(a,b); printf(a); printf(b); printf("\n"); }
556 :
デフォルトの名無しさん :04/11/24 09:18:25
"hello"の領域はどこに確保されている? あまりそういうこと考えたことない?
557 :
デフォルトの名無しさん :04/11/24 09:21:58
reallocで「連続した」領域を確保しなおすのでは、 「まだメモリーはいっぱいあまってるのに、連続したそんな大きいかたまりはない」場合に とれなくなるので、だめ。
558 :
555 :04/11/24 09:55:20
>>556 >"hello"の領域はどこに確保されている?
えーと、aの示してるアドレスのところに確保されているんだと考えてます。
>あまりそういうこと考えたことない?
はい。恥ずかしいですが正直なところ聞かれるまでは考えてませんでした。
そこでmalloc()で明示的に領域を確保して以下のように書き直してみました。
これだと意図しているように動くのですが、
前のもののどこがいけなかったのかはわからないです。
よろしければもう少し教えていただけないでしょうか。
#include <string.h>
#include <stdio.h>
int main(int argc,char *argv[]){
char *a;
char *b;
int c;
b= argv[1];
c =100* sizeof(char);
a = (char *)malloc(c);
a[0] = 'a';
strcat(a,b);
strcat(a,b);
printf(a);
printf(b);
printf("\n");
}
559 :
デフォルトの名無しさん :04/11/24 10:37:12
> > "hello"の領域はどこに確保されている? > えーと、aの示してるアドレスのところに確保されているんだと考えてます。 質問のしかたが悪かったかな? そのaの指している"hello"が入っている場所は、どのへんにあって、 そもそもそこは書けるの? ROMだったらそうるわけ? と、そういうことを 考えてみましょうということです。
560 :
デフォルトの名無しさん :04/11/24 10:39:24
> 明示的に そういう日本語はありません。翻訳がヘタなひとが逐語訳ように捏造した言葉ですね。 > そこでmalloc()で わざわざmallocしなくてもよいです。 char a[] = "hello"; に変えてみたら?
561 :
デフォルトの名無しさん :04/11/24 10:59:12
> hugahuga じゃなくて hugauga なのはなぜ strcatしてるわけでしょ? 後ろにくっつけてるわけ。 「hoge」の入ってた領域の「e」の後ろには何がはいってる? \0だよね。 じゃあその後ろには何がある? あんた想像力なさすぎ。 図でも書け。
562 :
デフォルトの名無しさん :04/11/24 11:01:16
このあたりは「技術評論社」の「作ってわかるCプログラミング」が説明を得意として いるあたりですね。あの本で修得したひとは、ぜったいこんな間抜けな質問はしない。 このあたりをわかっていない以上、疑問をもつこと質問をすることはよいことではあるが、 (わかったつもりで疑問におもわないよりは)、 「わかったつもりにさせる」本で、わかったつもりになっているよりは あなたはまだましだと言えるでしょう。 だったら、もうすこしましな「読めばちゃんとわかる本」でも読んでみたら?
voidもどきまたキター( -д-) 、ペッ
564 :
デフォルトの名無しさん :04/11/24 11:10:49
こわがりすぎきたー
>>560 この場合に、「char a[] = "hello";」では駄目だろ。
作ってわかるCプログラミングではそういう説明してるの?
まあ初心者なら、"hello" の領域がどこにあって 後ろに何があるか、そこは読み書き自由な場所か 考える必要性すら感じないだろうな。 そんな失敗を重ねて、俺たちはレベルをうpするんだ。 さくらたんのエロ画像うpきぼんぬ。
「はじめてのC」って本はだめですか?
char *a = "hello "; char a[] = "hello ";
訂正 char *a = "hello\0 "; char a[] = "hello\0 ";
ぐぉスペース無くなってる char *a = "hello\0 "; char a[] = "hello\0 ";
半角池
>char *a = "hello\0 "; 小細工してもコレは駄目だっつーの
573 :
デフォルトの名無しさん :04/11/24 12:19:06
char a[67] = "hello";
>char *a = "hello\0 "; この場合constだから書き換えようとするとセグメンテーションフォールト
575 :
デフォルトの名無しさん :04/11/24 12:23:29
Macで使えないじゃん
未定義じゃないかね
そう。未定義。undefined。鼻から悪魔が出てきても、ハードディスクを フォーマットされても文句は言えないのだよ。
オーエー
579 :
デフォルトの名無しさん :04/11/24 13:27:58
while ((c = getchar()) != EOF){ putchar(c); } このループが終わらないのは何故ですか? 終わらせる方法も良かったら教えてください。
>>579 cをchar型で定義してるんじゃないか?intにしろ。
理由はEOFはint型でないと表せないから。
581 :
デフォルトの名無しさん :04/11/24 13:45:09
>>580 すいません。
宣言部分が抜けていました。
int型でやっているのですが、終わりません。
文字列を入力すると、EOFが出るまでputchar(c)を繰り返していると思っているのですが。
文字列を出力しきっても終わりません。
入力側がEOFコードを入力してないんだろ。
EOFコードって入力できるの? -1?
WindowsではCTRL+ZがEOF
UNIX、LinuxはCTRL+D
>>560 >> 明示的に
>そういう日本語はありません。翻訳がヘタなひとが逐語訳ように捏造した言葉ですね。
むむ。じゃ、explicitってなんて訳せばいい?
>>587 ふんふん。
じゃ"You have to explicitly specify the type of data."はどう訳す?
590 :
デフォルトの名無しさん :04/11/24 20:44:27
はっきりとデータの種類を指定しなければなりません。 明白にデータの種類を指定しなければなりません。 明示的にデータの種類を指定しなければなりません。
ちょっと前から明示的にが日本語じゃないって必死に主張するバカが一人居るんだよ。 放置してやれよ。
593 :
デフォルトの名無しさん :04/11/24 20:52:05
explicit /ɪksplísɪt, eks-/ ━ 【形】 Ⅰ 〈陳述など〉明白な, はっきりした, 明示的な (⇔implicit). New College English-Japanese Dictionary, 6th edition (C) Kenkyusha Ltd. 1967,1994,1998
捏造だと思ったら本当にBookshelfで出た
597 :
デフォルトの名無しさん :04/11/24 21:04:04
ジーニアスもリーダーズも「明示的に/な」だな。 「明示的」でググると50万件以上ヒットする。1ページ目はほとんどソフトウェア関連のページがヒットしてる。 誰が最初に訳したのか知らないが、そのときに無理やり作った造語だったとしても、 普通に使われてるのは明らか。
「捏造」だからいけないとは言わないが、 英和辞典を根拠に「日本語として定着している」と主張するのも 当たってないような気がする。
暗黙←→明示
601 :
デフォルトの名無しさん :04/11/24 21:57:13
>>599 だな
参照すべきリファレンスがちゃんとあるのにな
602 :
デフォルトの名無しさん :04/11/24 22:01:00
独立、演説も福沢諭吉が作った造語だし。
専門家でもない一個人が主張する「よりは」、 英和であろうと辞書に載ってるということの方が、 説得力があると思うんだが。
専門家はうさんくさい
つか、この手の話題の場合、人口に膾炙しているかどうかが問題。 「明示的に」はしているといえよう。
明白はすでにそうある状態のことだから全然意味が違う
607 :
デフォルトの名無しさん :04/11/24 22:11:48
>>603 601 だが、言ってる意味わかってねえな
おまえら触ったこともなさそうに見えてきた
そんなんで PG 名乗ってたらプゲラだぜまったく
608 :
デフォルトの名無しさん :04/11/24 22:13:04
PGはPuGeraの略だろ。
609 :
デフォルトの名無しさん :04/11/24 22:17:11
~的 (接尾) (1)名詞およびそれに準ずる語に付いて、形容動詞の語幹をつくる。 (ア)主に物や人を表す名詞に付いて、それそのものではないが、それに似た性質をもっていることを表す。…のよう。…ふう。 「百科事典―な知識」「スーパーマン―な働き」「母親―な存在」 (イ)主に抽象的な事柄を表す漢語に付いて、その状態にあることを表す。 「印象―な光景」「積極―に行動する」「定期―な検診」 (ウ)物事の分野・方面などを表す漢語に付いて、その観点や側面から見て、という意を表す。上(じよう)。 「学問―に間違っている」「事務―な配慮」 〔(ア)~(イ)は、もと中国、宋・元の俗語で「の」の意味を表す助辞であったものを、明治以降、英語の -tic を有する形容詞の訳語に用いたことに始まる〕 三省堂提供「大辞林 第二版」より
610 :
デフォルトの名無しさん :04/11/24 22:18:02
つーかおまいら的にはどうよ?この流れは。
明示的 暗黙 でぐぐるといい
てか、プログラミング関連の文章読んでたら、わかりそうなもんだが
っていうか今は平成なわけだが
質問です。 高橋しん氏の 「キミのカケラ」 ですが、2 巻だけ Amazon で売ってません。 何でですか?
Amazonの気分です(^_^;
明示的 <-> 暗示的 だろ。
もうそれはいいから。
619 :
デフォルトの名無しさん :04/11/25 01:31:38
> WindowsではCTRL+ZがEOF これは大うそ。 Unixも^DもEOFではない。 EOFっていうコードが送られるのではなく、 もう入力がなくなるとgetcharが EOFを返すだけだ。 だから、そのあと何度呼んでもEOFを返す。そのたびにそのコードがきているわけではない。 ^Dを打つと、その直前で標準入力をおしまいにする、というだけの操作。 EOFは、いちばん後ろを超えてさらに読もうとしたときに返ってくる値、というだけ。 同様に、ファイルから読むときも、ファイルの後ろにEOFがくっついているわけではない。 10バイトのファイルを先頭から呼んで、10回めに最後の文字が返り、11回め以降がEOFが 返るというだけのことです。 ウソをおしえちゃいけない。
620 :
デフォルトの名無しさん :04/11/25 01:32:54
「明示する」はある。 「暗示する」、「暗示的に」はある。 「明示的」は、便宜的逐語訳用のことばだな。 関係代名詞を「~するところの」と訳すようなもの > 便宜的
621 :
デフォルトの名無しさん :04/11/25 01:34:54
> それどころかデリファレンスでむしろ遅くなる。 これウソ。 やーい > しったかぶり
622 :
デフォルトの名無しさん :04/11/25 01:36:25
> 通常の配列は領域をスタックに確保するから > 普通に配列を定義しようとするとスタック領域というメモリ領域にそれを作 これらもウソ。 ローカル変数である配列だけだ > スタックにとられる可能性があるもの。 そもそもローカル変数をスタックに置く処理系も最近減ってきてる。
623 :
デフォルトの名無しさん :04/11/25 01:37:12
> 0から10.0まで積分計算をし、積分結果の最後の値を返す関数eulerがあるのですが、 > 途中の計算過程も出力するようにするにはどうすればいいのですか? だれに聞いているの? オイラ?
625 :
デフォルトの名無しさん :04/11/25 01:40:26
>同様に、ファイルから読むときも、ファイルの後ろにEOFがくっついているわけではない。 >10バイトのファイルを先頭から呼んで、10回めに最後の文字が返り、11回め以降がEOFが >返るというだけのことです。 ウソをおしえちゃいけない。
誤爆なんだろうけど、参考になった。
DOSってEOFがなかったっけ?
>>622 GCCとかVCもスタックにおかなくなったの?
629 :
デフォルトの名無しさん :04/11/25 01:44:25
おとといの馬鹿のことか?
それどころか、CP/Mは最終レコードの残りは全てEOF(というか0x1a)で埋められる。
>だから、そのあと何度呼んでもEOFを返す。 ウソ教えちゃいけない
テキストモードだと0x1Aだな<終端
633 :
デフォルトの名無しさん :04/11/25 01:51:28
> それどころか、CP/Mは最終レコードの残りは全てEOF(というか0x1a)で埋められる。 これもうそ。テキストファイルだけだ。
634 :
デフォルトの名無しさん :04/11/25 01:52:06
> GCCとかVCもスタックにおかなくなったの? gccでもいろいろ。うちにあるマシン用のgccはスタックに置かない。
635 :
デフォルトの名無しさん :04/11/25 01:52:37
> > だから、そのあと何度呼んでもEOFを返す。 > ウソ教えちゃいけない いいえ。規格でそう決まっています。
636 :
デフォルトの名無しさん :04/11/25 01:53:07
> ほー、そうなんだ。知らなかった。 常識です。
637 :
デフォルトの名無しさん :04/11/25 01:55:04
> DOSってEOFがなかったっけ? ありません。CP/Mのファイルも扱うedlin.exeが^Zをつけるのを 「MS-DOSの仕様だ」と勘違いした日本のメイカーでそれをつけているところが3社ほど あった程度です。 でも、それをmscのgetchar関数で読んだら、EOFの前に0x1aが返ります。 (あるヴァージョン以降ではテキストモードでさえ!)
638 :
デフォルトの名無しさん :04/11/25 02:01:20
> テキストモードだと0x1Aだな<終端 それもウソ。 「ファイルサイズ」をディレクトリー中にもたずに、ブロックサイズしかもっていなかった CP/Mの時代にそういうのをつかってテキストファイルの末尾を検知していただけ。 DOSやWindowsにはそういうものは存在しない。 mscの古いヴァージョンや一部のバージョンでは、テキストモードで^Zを無視する場合も あるが、それもファイルの末尾にあった場合だけの場合と、途中にあった場合に それ以降を読まなくなってしまう場合の2通りが存在する。
639 :
デフォルトの名無しさん :04/11/25 02:03:21
ファイルの末尾がWindowsで^Zだなんてウソをしったかぶりするやつがいるもんだから、 初心者がだまされて、ファイル末尾にEOFとか^Zが入っていると思い込むのだ。
>>633 嘘じゃないよん。バイナリファイルではそもそも残りが出ないから。
DOSやWindowsに存在するかしないかというんじゃなくて テキストモードでは 0x1A (もしくは物理的終端)を ファイルの終端とみなすって話だ。
たしかに英和辞典でちょっと変な日本語が出て来て、 国語辞典で調べてみると無い場合ってのも希にあるよね。
643 :
デフォルトの名無しさん :04/11/25 09:02:16
> 嘘じゃないよん。バイナリファイルではそもそも残りが出ないから。 いーや。それもウソ。バイナリーファイルでも半端分はあるわけ。 ただ、おおざっぱにおわっておけばいいだけ。テキストファイルと ちがって、最終ブロック残りには「ゴミ」が入ってる。 それにCP/Mの場合、ヴァージョンにもよるが、テキストファイルで 最終ブロックの半端分は^Zで「うまっている」わけではなく、 最終位置の後ろが1つだけ「^Z]がはいって、残りはゴミという場合もある。
644 :
デフォルトの名無しさん :04/11/25 09:04:08
> テキストモードでは 0x1A (もしくは物理的終端)を > ファイルの終端とみなすって話だ。 ああ、それも大うそ。WindowsやMS-DOSにテキストモードってのが存在するわけではなく、 それら用の各種Cコンパイラーの中にそういうものがあるだけ。 しかもメイカーごとにテキストモードの定義はかなりばらばらでいいかげん。 しかも、その8割り以上は0x1aを扱わない。(0x0d 0x0aの変換だけ)
645 :
デフォルトの名無しさん :04/11/25 09:29:46
こんどはfjごっこかい?
voidごっこが続いているだけだと思う
なんか過去の議論が走馬灯のように・・・漏れら死ぬのかな・・・
649 :
デフォルトの名無しさん :04/11/25 10:17:27
> こんどはfjごっこかい そんなものはありません。
650 :
デフォルトの名無しさん :04/11/25 10:18:28
C++にないといえば、複素数とか虚数やunsigned long long intとかlong doubleだな
つまりCの圧勝ということですな
652 :
デフォルトの名無しさん :04/11/25 10:30:43
おれがCをはじめたころにはvoidもなかった。
653 :
デフォルトの名無しさん :04/11/25 10:59:44
(・∀・)
654 :
デフォルトの名無しさん :04/11/25 11:28:44
古風なマシンでは ファイルの終わりには EOF (End Of File)が返り ソケットの終わりには EOT (End Of Terminal)が返り ユーザーの終わりには EOU (End Of User)が返り 端末が爆発するという、ウソのような本当にあった怖い話。
用語や説明はもちろん正確であるべきだけど このスレ本題から外れた突込みで9割浪費されてるな。
終端子症候群
>>654 >ソケットの終わりには EOT (End Of Terminal)が返り
違うな。EOT はテープの終わりを示す銀色の部分だ。
じゃあ、BOTはw
bunch of time、時間のかかる作業のことだ
すいません C言語を勉強し始めたばかりのものなのですが main(argc, argv) char **argv; { int c, n; char *s; s = argv[1]; while(c = *s++) { if(c<'0' || c>'9') { printf("bad character\n"); exit(1); } n = n*10 + c - '0'; } sleep(n); } のソースの意味がわかりません if(c<'0' || c>'9') のところは数字以外を排除しているのはわかるのですが その前の while(c = *s++) とn = n*10 + c - '0';がわからないです 何をしているのでしょうか? すいませんが解説していただけるとありがたいです よろしくお願いします
Cの勉強に参考とすべきソースじゃないと思うな。それ。
>>660 ・while(c = *s++) {
argv[1]から順次一文字ずつ取り出してcに格納。その値が0(文字列終端)ならループ終了。
例えば、引き数に'532'を渡したときに数値としての532を得るのが目的。
・n = n*10 + c - '0';
nの値を10倍して取り出した文字を数値化したものを加算。
例えば、nが53でcが'2'のとき、この計算の結果nが532になる。
尚、全体としては引き数で指定した数だけsleepするプログラムらしい。
例えばUnix系でこのプログラムがsleepという実行モジュール名なら、
sleep 532とすれば532秒間sleepしつづける。
int c, n=0;にしとけよ
馬の耳に念仏だろう
>>662 ありがとうございます
でも どうして
c=*s++で一文字づつコピーされるのでしょうか?
sのポインタを渡したらsのアドレスの中身(数字)が渡されて
++で次のアドレスに移動・・・ と言う感じでいいのでしょうか?
また n = n*10 + c - '0' の意味はわかったのですが-'0'はどいう意味でしょうか??
聞いてばかりですいませんがよろしくお願いいたします
>>661 身近になるソースからと思いやり始めました
お手数をおかけして申し訳ありません
>>663 すいません 写し間違いでした
ありがとうございます
しかし古臭いソースだな
c=*s++はc=sしてからs++するって意味。 c - '0'は文字を数値に変換するやり方 '0' - '0' = 0 '3' - '0' = 3 (c - 'a') + 'A' で小文字を大文字に変換
>>667 ってあってるのか?
俺はどう説明したらいいかわからんから
言うのはやめとくが
あってるけど、常識
いや
>>660 にたいしての答えとしてあってるかだろ
>c=*s++はc=sしてからs++するって意味。 *←これ何のためについてるの?
673 :
デフォルトの名無しさん :04/11/25 21:07:06
>>667 668にアフォにされてるの気が付いてる?
>>667 はい 1回目は++をしないのはわかっています
++sなら 1回目から++をしてから渡すという感じでいいのですよね?
私が わからないのはどうして1文字だけ渡すかと言うことです
聞いている側なのに 変な聞き方ですいません
私も 今実験してたのですが
-'0'をしなかったら 1桁の数字を渡されたときに 48大きい数がでることがわかりました
このために -'0'を してるんですね
これは よくわからないのですが
c=*sで渡したのでメモリ内のアスキーコードが渡されたということでしょうか?
そのために(c<'0' || c>'9')等 アスキーコードで比較を行っているということでしょうか?
なので アスキーコードから数字を取り出すために'0'(48)を引いているということでしょうか?
まだあまり ポインタなどがわからないので わけがわからないかもしれませんが
間違っていたりすれば 補完していただけるとありがたいです
すいませんがよろしくお願いします
675 :
デフォルトの名無しさん :04/11/25 21:32:04
コンパイルしたら、再宣言の型が一致しないとでましたが、どういうことが考えられるでしょうか。
便乗質問なんですけど
>>660 の
char **argv;
とは、どういう意味なのでしょうか?
むかしはint argc;抜かしても良かった記憶があるなぁ。
>>678 char型へのポインタのポインタ。
あそこに書いてるのは書いた人が古い人だったからでしょう。
昔は引数の型ああやって書いてたらしい。
ぽいんたのぽいんた? 全く意味がわかりません 簡単に説明していただけないでしょうか
hon yome
684 :
デフォルトの名無しさん :04/11/25 22:34:02
>>682 俺はやだ
説明するのに図がいるから
誰かおkの人いる?
ポインタとアスキーコードは無関係 あと n = n*10 + (c & 0x0F)
687 :
デフォルトの名無しさん :04/11/25 22:45:22
CのソースをHTMLにしたいんですが、 どういうツールがデファクトスタンダードでしょう? 今はドキシジェン(Doxygen)で生成したやつから エディタで切り出しているんですけど、タグの切り出し作業がめんどくさくて。
>>687 まちがっていたらごめん。
enscript というツールで色つきの HTML にできたと思う。
ViewCVS なんかでも使われていた記憶がある。
689 :
デフォルトの名無しさん :04/11/25 22:48:55
全く意味がわかりません 俺には プログラムは無理みたいです・・
687です。実行環境は Windows です。
692 :
デフォルトの名無しさん :04/11/25 22:51:51
俺もなんでchar **argv;で最初の1桁がいくかわからん
>>691 enscript は Cygwin のインストーラからインストールできるぞ。
694 :
デフォルトの名無しさん :04/11/25 22:52:40
<xmp> main() { puts("sine"); }
コピーするところミスった while(c = *s++) { だ どうしたら 最初の一桁がコピーされるん?
697 :
デフォルトの名無しさん :04/11/25 22:53:24
<xmp> main() { puts("sinimasu"); } </xmp> すまん、酒のみすぎたらしい 吐いてきます
>>688 >>689 おっと、短時間でレスがついていた、どうも情報ありがとうございます。
ただ、"XMLタグ"ってどういう意味なんでしょうか?
想像力をビンビンにはたらかせても、わからないっす.....
なんかそういう機能がDOMとかSAXにあるんですか??
別にchar *argv[]でもいいんじゃないのか わかりやすいからこっち使ってる
>>693 >>696 レスどうも、ありがとうございます。調べてみます。
このスレッドって、伸びるのがやたら速いですね。
と、こういっているうちに、またレスがついているのかも、
なんかちょっとうれしぃなぁ。
701 :
デフォルトの名無しさん :04/11/25 22:59:22
銀行のシステムを作っているのですが、 doubleの中にお金が入っていて、小数点を含む場合、それを切り捨てるにはどうしたらいいでしょうか? double a = 10.123 となっているのを、 a = 10 としたい。 何か便利な関数はないでしょうか?
truncじゃねぇの?
floor でしょ。
あ、しまった、普通に整数型にキャストじゃねぇの?
706 :
デフォルトの名無しさん :04/11/25 23:03:31
>>701 double 使っちゃだめ
誤差の出方が 10 進と違うのを誰も理解しない
> 銀行のシステムを作っているのですが、 ・・・
>>706 浮動小数は金融計算には使わないのは常識だな。
でも何使う?
2進で表せない数字(0.1)とかだろ
お金が入ってるのに小数点があるってどういうとき? ドルとかに変換しないといけないから?
こんにちは。藤●診断室です。 あ~あ、キャストなんかする香具師に医療システムなんか 作られたりしたら恐ろしい。 全く分かってないんだな。俺をリスペクトしろよ。
>>697 googleかけたら、意図がわかったよ。---> XMP
お体に気をつけて。
>>712 わかった、リスペクトする。
でもおれっちキャストしまくってるよ、
仕事は医療システムだよ、投薬管理だよ。
錠剤じゃないよ、液体だよ。
715 :
デフォルトの名無しさん :04/11/25 23:17:15
716 :
デフォルトの名無しさん :04/11/25 23:33:35
717 :
デフォルトの名無しさん :04/11/25 23:38:22
(・∀・)
718 :
デフォルトの名無しさん :04/11/25 23:42:28
>>706 >double 使っちゃだめ
>誤差の出方が 10 進と違うのを誰も理解しない
ぜひ、詳しく!
丸め誤差
>>718 double x = 0.0;
double y = 0.1;
int i;
for (i = 0; i < 10; ++i)
y += x;
printf("y = %lf\n", y);
すいません 検索するとこのソースにめぐり合い実行して見たのですが main( int argc, char *argv[], char *envp[] ) { int i ; printf("&argc == 0x%x, argc == %d\n", &argc, argc ); printf("&argv == 0x%x, argv == 0x%x\n",&argv, argv ); for( i=0 ; argv[i] ; i++ ) printf("argv[%d]==0x%x, \"%s\"\n",i,argv[i],argv[i] ); } 実行すると $ ./a.exe who am i &argc == 0x22f070, argc == 4 &argv == 0x22f074, argv == 0x61782cd8 argv[0]==0x61782d20, "./a" argv[1]==0x61782d38, "who" argv[2]==0x61782d50, "am" argv[3]==0x61782d68, "i" になります どうして 0x12, 0x18, 0x12, 0x18と順番になるのでしょうか? すいませんが教えてください
めぐり合い実行
>>722 そのサイトの実行結果も
% ./arg-print
&argc == 0xbfffe7c0, argc == 1
&argv == 0xbfffe7c4, argv == 0xbfffe824
argv[0]==0xbffffa81, "./arg-print"
% ./arg-print who am i
&argc == 0xbfffe740, argc == 4
&argv == 0xbfffe744, argv == 0xbfffe7a4
argv[0]==0xbffffa78, "./arg-print"
argv[1]==0xbffffa84, "who"
argv[2]==0xbffffa88, "am"
argv[3]==0xbffffa8b, "i"
と なっています
すいませんがよろしくおねがいします
gdb めぐりあい宇宙
き に す る な
>>721 >どうして 0x12, 0x18, 0x12, 0x18と順番になるのでしょうか?
どこが?
0x12ってどこのこと?
#まさか、0x61782d50 - 0x61782d38のこと言ってないよなぁ。それなら素直に0x18だもんなぁ…
#include <stdio.h> #include <stdlib.h> #include <math.h> #define HAIRETU 40000 #define BEFFILE "data1" #define AFTFILE "jiko2" FILE *fp,*fp1; int main(){ int iy,n; static float g[HAIRETU]; float d[8]; float B; float R; if(NULL==(fp=fopen(BEFFILE,"r"))) exit(0); for(iy=0 ; iy<HAIRETU ; ++iy){ g[iy]=fgetc(fp);} fclose(fp); if( (fp1=fopen(AFTFILE, "w") ) == NULL){ exit(1);} for(n=0 ; n>7 ; ++n){{{ B +=g[n+2]*g[n]; }} R=1/8*B; fprintf(fp1,"%e\n",R); B=0;} fclose(fp1);} このプログラムをビルドするとg[iy]=fgetc(fp)の部分で warning C4244: '=' : 'int ' から 'float ' に変換しました。データが失われているかもしれません。 と表示され、実行して書き込んだファイルを見ると何も書き込まれていません。 どうすれば正しく書き込めるでしょうか。
float d[8]; は脳内消去で・・・
>>727 BEFFILEから一文字ずつ配列gに取り込んで何がしたいの?
数値を読み込みたいならfscanf()なりfgets()+sscanf()なり、適切に変換すること。
nのループの終了条件が n > 7 なのでループが一回も実行されない点に注意。
それと、ブロックはきちんとインデントをつけて書く習慣をつけておきましょう。
#エディタ任せでもいいけどね。
>>728 突っ込みどころ多すぎてそれどころじゃない罠
731 :
デフォルトの名無しさん :04/11/26 00:48:33
どの参考書にもmalloc()を使ったらfree()で開放しましょうって書いてあるけど、 開放しなかったらどうなるんですか? やってみても別に問題は無いみたいですけど。
>>731 メモリリークといってメモリが開放されない場合があります。
ただし、現在はヒープごとメモリを開放されることが多いです。
つまり、freeしなくてもプロセスを終了するときに開放されることが多いということです。
逆にfreeしないとメモリリークを起こす環境の方が少ないです。
釣りなら止めて下さい
734 :
デフォルトの名無しさん :04/11/26 01:04:21
>やってみても別に問題は無いみたいですけど。 それがあんたの判断基準か (プ
735 :
デフォルトの名無しさん :04/11/26 01:30:55
>>660 のソースについてなんですが
char *s;
s = argv[1];
は何をしているのでしょうか?
これでsにはargv[1]のポインタが入るの?
でも その場合なんで &argv[1]ってしなくていいんですか?
にゅー くれらっぷー
たとえばの話 アドレス(もしくは変数名) 値(もしくは文字列) 0xbfffaa00 (argv) 0xbfffaa08 0xbfffaa04 0xbfffaa28 0xbfffaa08 (argv[0]の内容) 0xbfffaa28 (argv[1]の内容) s 0xbfffaa28
>>737 私に言ってくれているのでしょうか??
すいませんがよくわかりません
説明していただけるとありがたいです
この例だと、argv[1]の値は0xbfffaa28で、その値が 設定されているメモリのアドレスは0xbfffaa04。 その値の0xbfffaa28のアドレスには文字列が設定されている。 これがargv[1]が指している文字列。 だから、sに代入すべきなのは、argv[1]の値の0xbfffaa28 であって、&argv[1]はargv[1]のアドレスだから、0xbfffaa04に なってしまう。ここには文字列などないので、これをsに 代入するとぐちゃぐちゃになります。ていうかコンパイル エラーになる。
>>739 ありがとうございます
頭がごちゃごちゃになってきました・・
すいませんが 今は寝て起きてから考えて見ようと思います
すいません ありがとうございました
741 :
デフォルトの名無しさん :04/11/26 03:43:57
> 開放しなかったらどうなるんですか? ぜったいしちゃだめ > 開放 (解放ならしてもいいが)
742 :
デフォルトの名無しさん :04/11/26 05:02:44
うちのサーバは一般開放
ど素人ですが、C言語でなにができるんですか?
744 :
デフォルトの名無しさん :04/11/26 06:34:58
Rubyのインタープリタを書くこと。
>>735 > char *s;
> s = argv[1];
>は何をしているのでしょうか?
>これでsにはargv[1]のポインタが入るの?
>でも その場合なんで &argv[1]ってしなくていいんですか?
sにはargv[1]が入る。決してargv[1]のポインタが入る訳ではない。
&argv[1]ってするとargv[1]のポインタが入ってしまうだろ?それに、そうしたくても char **s にしとかないと型不整合エラー。
>>743 C++コンパイラの作成やJavaコンパイラの作成が出来る
748 :
デフォルトの名無しさん :04/11/26 09:36:59
perlではコマンドの結果を @list=`ls` とやって受け取ることが出来ますが、Cではどうやったら出来ますか?
fork と socket を使う
>>748 一応ここは環境依存排除なので標準ではできないというのが答。
存在するなら、popen()を使うのがawk的でいいかと。
>>749 >>750 わかりました。UNIXプログミングについて勉強してみます。
ありがとうございます。
プログラム書いてると 頭痛くなるのは仕様ですか?
>>752 PC から放射される電磁波が原因です。
プログラムはチラシの裏に書きましょう。
C言語で彼女の作り方を教えてください。
lover* make_lover() { return NULL; }
if((kanojo=make_lover())==NULL){ fprintf(stderr, "彼女の作成に失敗しました。\n"); exit(99); }
758 :
デフォルトの名無しさん :04/11/26 19:25:06
初歩的な質問だと思いますが。 文字列の2進数と16進数のを表示するプログラム void strdump(const char *s) { while(1){ int i; printf("%c %x ",*s,(CHAR_BIT+3)/4,*s); for(i = CHAR_BIT - 1 ; i>=0; i--) putchar(((*s>>i) & 1U) ? '1' : '0'); putchar('\n'); if(*s++ == '\0') break; } } 最初のprintf文の引数の (CHAR_BIT + 3 )/4 , *s とputcharの putchar(((*s>>i) & 1U) ? '1' : '0'); が理解できないです。 出来たらどなたかご教授くだされ。
初歩的な質問だと思いますが。 文字列の2進数と16進数のを表示するプログラム void strdump(const char *s) { while(1){ int i; printf("%c %x ",*s,(CHAR_BIT+3)/4,*s); for(i = CHAR_BIT - 1 ; i>=0; i--) putchar(((*s>>i) & 1U) ? '1' : '0'); putchar('\n'); if(*s++ == '\0') break; } } 最初のprintf文の引数の (CHAR_BIT + 3 )/4 , *s とputcharの putchar(((*s>>i) & 1U) ? '1' : '0'); が理解できないです。 出来たらどなたかご教授くだされ。
質問させていただきます int, charの違いがいまいちわかりません char型で20を取るのと、int型で20を取るのとでは何か変わるのでしょうか?
763 :
デフォルトの名無しさん :04/11/27 15:11:23
質問はageとけ
>printf("%c %x ",*s,(CHAR_BIT+3)/4,*s); これオリジナルのまま? パラメータの数があってないんだけど > (*s>>i) & 1U) ? '1' : '0' 愛があっておっ立ってるか、立ってたらチンコ、立ってないならマンコ
>762 20ならどっちでもおなじだ
>慣習的にintは数値を扱うため プ だからgetchar()ではまるんだよw
charは1バイト intは2バイトや4バイト、環境による。
770 :
デフォルトの名無しさん :04/11/27 15:22:14
char ってコンパイラによって signed であったり unsigned であったりするわけだけど、 移植性のあるコードを書くときはみなさんどうしていますか?
20ならと言うことは 例えばcを入れた場合は変わるのでしょうか? 何度も質問してしまってすいません
>char ってコンパイラによって signed であったり unsigned であったり マジ? char と unsigned char が同じなの? 信じらんねぇー
>>771 char の場合、(chat が signed であれば) -128 ~ +127 の値しか入らない。
その範囲の値である限り、int でも同じってこと。
0x0C も 'c' もこの範囲にあるので int でも同じ。
>例えばc 文字'c'のことか?それでも同じ
>>775 ADS や RVCT もデフォルトだな。
ありがとうございます 説明足らずですいませんでした 私が言ったのは char c='c'; 等のことでした この場合 cには'c'と言う文字ではなく アスキーコードの0x63(99)が代入されるという考え方でいいのでしょうか?
'c'という文字がアスキーコードの0x63(99)なんだが...
>>777 C 言語では文字と数値は同じものだよ。
char c = 'c';
と書くのも
char c = 0x63;
と書くのもまったく同義。
ありがとうございます でも かなり混乱してきました char c=0, d='0'; とやった場合 cには0(null?)がはいってdには0x30がはいるんですよね? もし int main(int argc, char **argv) のプログラムで ./hoge.out 10 と言う実行をした場合は 10と言う数字ではなく 配列で|0x30|0x31|\0|と入るのでしょうか? まだ 全然C言語がわかっていないものの書き方なので わかりづらい言い方になっているかもしれませんが すいませんがお願いします
>>780 ここで聞くよりCの入門書を読むほうがいいと思うよ。
お互いにね。
>>780 argv[0] -> "./hoge.out"
argv[1] -> "10"
argv[2] -> NULL
i.e.
argv[1][0] -> '1' = 0x31
argv[1][1] -> '0' = 0x30
argv[1][2] -> '\0' = 0