【隔離】Cなら俺に訊け! Part.104【病棟】

このエントリーをはてなブックマークに追加
1(゜W゜)∩
.._ .......、._    _ /:/l!            まず問題を冷静に吟味して
 :~""''.>゙' "~ ,、、''‐'、|            Cの話か否かをはっきりさせてから質問しましょう。        _
゙、'、::::::ノ:::::::_,.-=.  _〜:、         /_.}'':, 質問する前には最低限検索を。
 ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
 ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:'  ノ゙ノブ
"   .!-'",/  `'-‐'') /\ `/ でノ-〈
 .-''~ >'゙::    ‐'"゙./  ヽ.,'   ~ /
   //:::::       ',    /    ,:'゙

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

エラー(警告含む)が起きたのならばエラーメッセージを書くべし。

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

各種リンク、関連スレは>>2-4あたり

【前スレ】C言語なら俺に聞け! Part 103
http://pc5.2ch.net/test/read.cgi/tech/1109394073/
他の過去ログはここ
http://nssearch.hp.infoseek.co.jp/clang/
2(゜W゜)∩:05/03/06 18:03:11
■関連スレ■
【独習C】猿69【猿プログラミング研究室 part10】
http://pc5.2ch.net/test/read.cgi/tech/1100367391/
【初心者歓迎】C/C++室 Ver.14【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1108924728/l50
C言語の第一歩
http://pc5.2ch.net/test/read.cgi/tech/1031374980/l50

《宿題》
ぼるじょあがC/C++の宿題を片づけますYO! 41代目
http://pc5.2ch.net/test/read.cgi/tech/1109542053/l50

《開発環境》
★初心者にVisual C++を教えるスレ★ Part17
http://pc5.2ch.net/test/read.cgi/tech/1107926989/l50
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50

《C++/C#》
C++相談室 part39
http://pc5.2ch.net/test/read.cgi/tech/1106527792/2-20
C♯相談室 Part22
http://pc5.2ch.net/test/read.cgi/tech/1109630502/

■推薦図書/必読書■
推薦図書/必読書のためのスレッド PART 22
http://pc5.2ch.net/test/read.cgi/tech/1106175218/l50
プログラム技術板 推薦図書/必読書
http://tito.fc2web.com/2ch/tech/index.html
3(゜W゜)∩:05/03/06 18:03:35
■コンパイラ■
gcc
http://gcc.gnu.org/

《Win32用の開発環境のみ。》
gcc-cygwin
http://www.cygwin.com/
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/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

《ライセンスや機能などに問題あり》
Microsoft 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
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
4(゜W゜)<ヌルポ:05/03/06 18:04:37
イジョウ(・∀・)
5デフォルトの名無しさん:05/03/06 18:06:19
なんだこのふざけたスレタイ
6デフォルトの名無しさん:05/03/06 18:09:28
>>1
スレくらいまともに立てろよボケ
7デフォルトの名無しさん:05/03/06 18:23:46
>>1
よくやった!
8デフォルトの名無しさん:05/03/06 18:33:05
ヘミ猫が…ヘミ猫が…ッ!
9デフォルトの名無しさん:05/03/06 18:37:05
>1
漏れはこういうのも好きだぞ!

10デフォルトの名無しさん:05/03/06 18:39:33
>>1
そんなアホなスレタイはHSPスレだけでいいんだよ

氏ね。
11デフォルトの名無しさん:05/03/06 18:48:20
だれかちゃんとしたの作れ
12デフォルトの名無しさん:05/03/06 18:50:20
これでいーじゃん
13デフォルトの名無しさん:05/03/06 18:51:56
>1
なんで荒れるような事するかなぁ。バカじゃねえの?
14デフォルトの名無しさん:05/03/06 18:52:51
15デフォルトの名無しさん:05/03/06 18:54:39
>>14
もうその話は終わっただろ
空気読め
16デフォルトの名無しさん:05/03/06 19:01:55
ここは隔離スレ?
本スレどこだよ
17デフォルトの名無しさん:05/03/06 19:02:17
18デフォルトの名無しさん:05/03/06 19:03:32
>>15
あの小僧が誰に向かって ぼけ つーたのかはっきりさせときたい
19デフォルトの名無しさん:05/03/06 19:04:35
>>1
死なせてよ〜
20漏れは20代:05/03/06 19:15:56
>>1乙。

前スレ>>985
いや、いくら歳の離れた子から最近の流行を聞いても、どうしても真似できないことが必ずある。
その傾向はアニメなどに顕著に見られる。
例えば、エスパー魔美のことだって、父親が画家で魔美がヌードモデル(のアルバイト)をしていることや、
超能力を使えることまでは分かるかもしれないが、一度のテレポーテーションで600m移動できるとか、
高畑と魔美がよくガードレールを通してテレパシーで会話すること、
テレポーテーション用のハートのブローチは高畑の手作りであること、
雨の日に傘を差しながらテレポーテーションすると濡れてしまうこと(図説無しでは説明が難しい)、
写真に念写したときに(テスト勉強したと思われる)数学の式も念写されてしまったことなどは、
話を聞くだけじゃなくて実際にアニメを欠かさず熱中して見ないと分からない。
だからこそ、出来るだけ細かいことを書いている。
40のオヤジが、子供から話を聞いただけで魔美のテレポーテーション距離を知り、
かつ覚えることが果たして可能だろうか。
40のオヤジが、ドラクエIの呪文を順に10個言えるだろうか。
40のオヤジが、タイムパトロールに逮捕された犯人が23世紀の刑務所に入ることを知っているだろうか。
子供特有の注意力・観察力・記憶力・熱意が無ければ、そうしたディテイルは記憶に残らない。
あなたの年齢は分からないが、おそらくご年配だろう。
あなたはドラクエIの呪文を間違えることなく10個挙げられるのか。
「不思議の海のナディア」でノーチラス号が危機に陥ったとき、ガス中毒で死亡した
船員の名前を言えるだろうか。
ひみつのアッコちゃんで、アッコちゃんが変身しているところを人に見られたときに
どのような罰が下されるかを覚えているだろうか。

前スレ>>986
スマソ、漏れはオヤジ扱いされることには我慢ならないので、つい。

前スレ>>987
言われてみれば、INT21Hもあった。何の制御かは忘れてしまったが、INT21Hを使ったような記憶はある。
昔持ってたMS-DOSの本があればすぐに思い出せるのだが。
21デフォルトの名無しさん:05/03/06 19:20:29
1.1と書いた場合この数値の型はfloat? double?
22デフォルトの名無しさん:05/03/06 19:22:55
「キャスト」と「暗黙の型変換」の違いがわかりません
両者は同じものなんですか?
23デフォルトの名無しさん:05/03/06 19:26:00
>>22
char c = '\x80';
int i;
i = c; //implicit conversion
i = (int)(unsigned char)c; //cast
24デフォルトの名無しさん:05/03/06 19:28:04
>>20
そのコピペ、初めて見た。
25漏れは20代:05/03/06 19:36:47
>>21
最後にDをつけない場合は float.

>>22
キャスト→人間が強制的に型変換する
暗黙の型変換→コンパイラが自動的に必要に応じて型変換する

>>24
長文だからコピペとは限らない。>>20は漏れのオリジナル。断じてコピペではない。
26デフォルトの名無しさん:05/03/06 20:18:28
前スレの教訓。

荒らしは基本的に放置
スルーできない奴は、当人も荒らし
27デフォルトの名無しさん:05/03/06 20:47:14
>>23
でもそのふたつ、結果は同じなんですよね?
たまたま結果が一致してるだけですか?
結果が違うケースもあるんですか?
28デフォルトの名無しさん:05/03/06 20:51:46
printf("%d %d",c,(int)(unsigned char)c);
29デフォルトの名無しさん:05/03/06 20:59:39
JAVAはCの欠点を補った言語だときいたのですが、
JAVAよりもCが主な言語として使用されていくとききました。
なぜでしょうか?
よろしければ具体的にお願い致します。
30デフォルトの名無しさん:05/03/06 21:02:06
>>29
誰がどこで言ってたんだ?何故言ってた奴に聞かない?
31デフォルトの名無しさん:05/03/06 21:07:17
>>14
21エモンのオープニングは光GENJIじゃねーよ。ぼけ。
32デフォルトの名無しさん:05/03/06 21:11:41
>>20
アニオタ、ゲーオタなら十分可能。
33漏れは20代:05/03/06 21:19:01
>>31
21エモンのオープニングは「ちょいと急ぎな車屋さん〜」という曲のはずだけど・・・
若い男性のグループということだけは確かだけど、光GENJIじゃなければ誰だろう・・・
記憶違い大杉>漏れ
樹海に逝ってくる。
34デフォルトの名無しさん:05/03/06 21:21:15
>>29
重い、言語仕様がでかい故に柔軟性に欠ける
35デフォルトの名無しさん:05/03/06 21:27:57
>>34 ありがとう御座います。
また、PerlとRubyというプログラミング言語が、CやJAVAより
すぐれているとききました。
どのような点からでしょうか?
36デフォルトの名無しさん:05/03/06 21:35:54
>>35
文字列処理ライブラリが豊富
37デフォルトの名無しさん:05/03/06 21:36:48
>>20
藻前は本当にオヤジ臭いな。
オヤジ扱いされて腹立てる辺りがオヤジ臭いんだって。
38デフォルトの名無しさん:05/03/06 21:38:23
>>36 有難う御座います。
また、CやJAVAよりとっつきやすいでしょうか?
39デフォルトの名無しさん:05/03/06 21:48:52
>>38
ちょこちょこ作ってすぐ試せるからね
とっつきやすいと思う
構文もcに似てるしね
40デフォルトの名無しさん:05/03/06 21:48:58
>>38
断然取っつきやすいよ
41デフォルトの名無しさん:05/03/06 21:49:03
>>38
はい。おそらくとっつきやすいです。
言語そのものがというより、環境を準備するのが簡単だからですが。
42デフォルトの名無しさん:05/03/06 21:53:34
有難う御座います!
>>41 環境とはどのようなものでしょう?
また、初心者にお奨めはどちらでしょうか?
Perlのほうが有名っぽいのですが。
43漏れは20代:05/03/06 21:57:12
樹海に逝く前に、

>>32
40のアニオタ・ゲーオタって極めて稀だと思うのだが。
しかも、子供並に熱中するとなれば尚更のこと。
実は漏れ、ヲタの友人に付き合って(オタ向け)アニメ専門店に行ったことがあるが、
いくら探しても藤子不二雄の作品は見当たらなかった。
ということは、だ。藤子不二雄作品はアニオタには人気がない可能性が高い。
ゲームにしても、DQ4で小さなメダルを全て集めるのは子供であって、
ゲーオタではない。DQ4で小さなメダルを全て集めないと気がすまない40代のオヤジがいたら、
どんなヤツか見てみたい。
40のオヤジがセーラームーン(コミック)を買うことはあるようだが、
年齢から考えると特定の登場人物に「萌え」的感情を持っている可能性が高い。
確実に言えるのは、純真無垢な子供と40代のオヤジでは持っている感性が違うこと。
アニメを見せて感想文を書かせたら、子供とオヤジでは全く違う文章になるはず。

それに、漏れの文章のどこがオヤジなのかと問いたい。
もし漏れがオヤジだとしたら、長文を書いてまで自分を20代だと主張して何になる?
ネット上で実年齢を証明する手段は存在しないが、あれだけ証拠を揃えたら
普通は(漏れが)20代だと納得するだろ。
アニオタ・ゲーオタの可能性を無くすために敢えて幼児番組まで書いた。
さすがに、40のオヤジが幼児番組を好んで見ることはないだろ。
「にこにこぷん」は、当時は幼児だったから楽しかったんだよ。
今の漏れが見たら、幼児のように無邪気に楽しむことは出来ない。
こういうことを書くと「(オヤジが)ロリコンだったら〜」とか言うかも知れないが、
「にこにこぷん」は大人がぬいぐるみを着て演技しているのだから、
ロリコンが好む可能性は皆無に等しい。

そこまでして漏れにオヤジのレッテルを貼るのは何故?
44デフォルトの名無しさん:05/03/06 22:02:46
>>43
残念、あんたは実年齢じゃなくて精神的「オヤジ」ですから〜

むきになるところがオヤジなんだってば。

そうそう、幼児番組云々だが、好きな奴はとことん好きだぞ。
漏れは今やってる幼児番組が好きで詳しいが、漏れは幼児なのか?w
45デフォルトの名無しさん:05/03/06 22:05:05
>>42
Perlのが普及してるのかな?
最初はどっちでもいいと思う

いいかげんスレ違いって怒られそうなので
googleで調べておいで
46漏れは20代:05/03/06 22:12:44
>>37
リアルだったら直接顔を合わせればおおよその年齢を相手に伝えることが出来るが、
ネットだと、少なくとも2ちゃんねるでは、直接顔を合わせることが出来ない。
だから、0歳から100歳まで好き勝手に設定されてしまう。
実年齢は証拠を腐るほど挙げたからいいとして、精神がオヤジだと思われるのは耐えられない。
漏れはオヤジが嫌いだというのもあるが、オヤジと言われて喜ぶ香具師がどこにいる?
「オヤジ」って、はっきり言って侮蔑語だろ。
同じ40代でも、品があって好感を持てる男性を「オヤジ」とは言わないだろ。
(漏れが言うのも何だが)それこそ、「オジサマ」とか言うだろ。
漏れのどこがオヤジなのかと問い詰めたい。
47漏れは20代:05/03/06 22:27:31
>>44
>残念、あんたは実年齢じゃなくて精神的「オヤジ」ですから〜
ギターの無い波田陽区は寒いからやめろよw
まあ、歳の割りに落ち着いていると言われることは結構あるが、
オヤジと言われたことは一度も無いぞ。
まあ、良く言えば「冷静沈着」といったところだ。
だが、断じて精神的に更けていることはない。

>むきになるところがオヤジなんだってば。
むきになったらオヤジか。w

>そうそう、幼児番組云々だが、好きな奴はとことん好きだぞ。
あまり聞いたことが無いな。少なくとも今の漏れには、幼児番組を楽しむことは出来ない。

>漏れは今やってる幼児番組が好きで詳しいが、漏れは幼児なのか?w
子供がいれば、一緒に見て楽しむこともあるかも知れないが、
子供がいないのに幼児番組を好きになれるか?
もし幼児番組を素で楽しめるとしたら、幼児と同じ感性を持っていることになる。
まあ、今までの発言を見る限り、人をからかうのが好きな幼稚園児レベルだな、藻前の精神は。
つまり、「ガキ」ということだ。
48デフォルトの名無しさん:05/03/06 22:34:46
オヤジは粘着だからうざいな・・・
49デフォルトの名無しさん:05/03/06 23:03:18
>>47
10代の漏れの私的な価値観からすると、
「とても20代とは見えないくらい幼稚に見える」とだけ言っておこう。

3・40代のオヤジ× 10代半ばのリア中○


騒いでたら大人気なく見えて情けないから、冷静になって落ち着きなさいな
50漏れは20代:05/03/06 23:11:23
>>48
藻前らがそうさせているんだろ。

>>49
どうやら、2ちゃんねるでは精神年齢が退行してしまう性質が漏れにはあるようだ。
冷静になりたいが、オヤジ扱いだけは耐えられない。
51デフォルトの名無しさん:05/03/06 23:16:17
>>50
>冷静になりたいが、オヤジ扱いだけは耐えられない。

いい加減、社会に出ろよ。
世の中には優秀なオヤジもけっこういるぞ。

皆、そういう優秀なオヤジ達を目指して
必死で頑張ろうとするから、
人間として成長していくんだよ。
52デフォルトの名無しさん:05/03/06 23:20:23
ス ル ー し る !
53漏れは20代:05/03/06 23:21:41
>>51
それは間違いないが、今の時代「オヤジ」という言葉はマイナスイメージの方が強い。
その証拠に、40代の上司に対して面と向かって「オヤジ」とは言えないだろ。
優秀になりたいとは思うが、オヤジにはなりたくない。年齢の問題じゃなくて、精神的に。
54デフォルトの名無しさん:05/03/06 23:22:34
隔離の病棟スレだろ?こんなもんだろ




本スレどこだよ
55デフォルトの名無しさん:05/03/06 23:23:24
56デフォルトの名無しさん:05/03/06 23:25:46
>>53
>その証拠に、40代の上司に対して面と向かって「オヤジ」とは言えないだろ。

俺なら、20代の部下に対してだって、
面と向かって「ガキ」とは言えないね。

それは何の証拠にもなっていないよ。
57デフォルトの名無しさん:05/03/06 23:53:27
>>50
いいから今すぐ失せろ。
二度と来るな。
58デフォルトの名無しさん:05/03/06 23:57:59
>>57
お前が来るな。
隔離スレから追い出すなよ。
59デフォルトの名無しさん:05/03/06 23:59:19
>>58
>隔離スレから追い出すなよ。

結局のところ、諸悪の根源は >>1 ということで。
60デフォルトの名無しさん:05/03/07 00:18:16
>>59
20台を主張するキチガイは前スレから居付いたわけで。
61デフォルトの名無しさん:05/03/07 00:21:05
そのためにこのスレができたわけで。
6249:05/03/07 00:34:41
>>53
紳士的でダンディなオヤジ(オジサマ?)には憧れるし、なりたいと思うけどなぁ

何時かは言われるようになるんだし、どうこう言っても仕方ない気がするのは私だけ・・?
63デフォルトの名無しさん:05/03/07 00:55:46
そういう細かいことを気にするから老けるんだ
俺も20代だが、オヤジと言われたこともあれば若いと言われることもあるし、
人それぞれなんだから別にいいじゃん。あらゆる人から同じように見られるなんて
ある意味気持ち悪いと思わないか?

あまりにスレ違いなので、ひとつ軽い話題でも。
ソースの分割ってどのあたりを目安にして分けます?
機能、目的、量とか・・・規模によっても違うと思うんですけど、どんな感じでしょ。
話題性に乏しいようでしたらスルーでよろしく。
64デフォルトの名無しさん:05/03/07 00:58:49
あの・・・もうPart.105立てちゃおうかw
65前924:05/03/07 01:03:13
>>前928
せっかくですが今の自分には分かりませんでした・・・
66デフォルトの名無しさん:05/03/07 01:16:48
なんか盛り上がってますなー
67デフォルトの名無しさん:05/03/07 01:19:14
>>65
仮に、
char output[4];
とする。
char *p = output;
*p++ = '0';
*p++ = '1';
*p++ = '2';
*p++ = '\0';
と、ここまでは何をしているか判ると思う。
ここでpの指す先はどこだろう。
配列outputは要素数が4だから飛び越してしまうわけだね。
そもそも最後に'\0'を書きたいわけだから最後のpのインクリメントは必要ないわけだ。
文脈によってはインクリメントしても構わないだろうが、
最後の行は
*p = '\0';
で充分と言うことだ。

と、元のソースを無視して解説してみるテスト。
68デフォルトの名無しさん:05/03/07 01:37:21
>>63
ソースの分割は構造体とそれに対する操作をセットにしたあたりを目安にして分けたりしてます。
量とかは関数の分割の目安に使ってます。
69デフォルトの名無しさん:05/03/07 01:39:55
>>67
>>924じゃないけど便乗。
>*p++ = '0';
つまり↑は代入された後にインクリメントされるから、
最終的なポインタpの値がa[4]になって(越えて)しまうってことだよね?
70デフォルトの名無しさん:05/03/07 02:31:26
メモリリークについての質問なのですが、mallocしなくてもメモリリークしてしまうことはあるのでしょうか。
今書いてるプログラムでmallocしたものは全てfreeしているにも関わらず、メモリが開放されていないような現象に陥っているのですが。

また、あるとしたら起こしている箇所を調べる方法や、解決する方法などありましたら教えていただきたいです。
71デフォルトの名無しさん:05/03/07 02:42:18
strdup()使ってるとか(w
72デフォルトの名無しさん:05/03/07 03:59:37
プログラムの中に関数がいくつあるかわかるようにするにはどうすればいいんですか?
73デフォルトの名無しさん:05/03/07 04:12:35
「昇順に並べる」がどっちか分からなくなっちゃいました。
マジ恥ずかしい質問なんですけど教えてください。
すいません・・・まじで。
74デフォルトの名無しさん:05/03/07 04:18:11
書き込む暇があったらググれやボケカス
http://www.wakhok.ac.jp/DB/subsection2.5.3.3.html
75デフォルトの名無しさん:05/03/07 04:19:53
>>73
    ■
   ■■
  ■■■
 ■■■■
  →→
76デフォルトの名無しさん:05/03/07 04:20:49
昇順でググれば一発なものを、わざわざ3行もかけて書き込むとはどうかと
77デフォルトの名無しさん:05/03/07 04:55:41
余計な文をつけてググっちゃったせいで
ニアピンなHPばっかヒットして焦ってカキコしちゃいました。
真面目にモニターを前に顔から火を噴いています。

とにもかくにもすべてのレスに感謝。
一生忘れずにすみそうな気がします。
78デフォルトの名無しさん:05/03/07 04:59:04
>>72
ctagsでいっぱつ
79デフォルトの名無しさん:05/03/07 04:59:49
> メモリが開放されていない

するなよぼけ > 開放
80デフォルトの名無しさん:05/03/07 05:01:59
おはようございます・・・
前スレで華麗にスルーされた次の質問を誰か頼む・・・

次のK&R演習問題の解答集は、お手本にしてもよい水準に達しているものでしょうか
ttp://users.powernet.co.uk/eton/kandr2/index.html
(The Prgramming Language C Ansers To Exercise / Richard Heathfield)

ほんとスマソ
81デフォルトの名無しさん:05/03/07 05:02:39
ぼけ。解答なんかよんだら意味ねーだろ。自分で考えろよ。
82デフォルトの名無しさん:05/03/07 05:03:47
Answer Bookのほうが質がいいな。
83デフォルトの名無しさん:05/03/07 05:16:52
朝っぱらから解答THX
>>81
そりゃ自分なりのプログラムは書きますYO!
書き上げたあとで洗練されたものと比較して、どのように改良できるのかを考えるのも大切だと思ったんすよ
>>82
マジっすか Amaz(ryでは散々に言われてましたけど・・・;
84デフォルトの名無しさん:05/03/07 08:55:26
>>80
アトランダムに、Answer to Exercise 4-1を見てみた。
あんまりいいコードには見えない。
#異常値として-1を使うのは悪くないが、生のまま使うのはよくない。
85デフォルトの名無しさん:05/03/07 10:18:37
教えてください。
関数の引数がない場合に
int hoge();
と宣言する場合と
int hoge(void);
と宣言する場合で
何か違いはありますか?
たしか、型チェックがどうたらという話を聞いたような
気がするのですが、いまいちよくわかりません。
86デフォルトの名無しさん:05/03/07 10:44:19
>>85
Cの場合、前者は引き数プロトタイプを省略したと見做される。
従って、
int hoge();

int main()
{
return hoge(0);
}
という呼び出しができる。
後者の場合は、当然に引き数がないことを要求されるので、
int hoge(void);

int main()
{
return hoge(0);
}
はエラーになる。
ちなみにC++の場合は引き数プロトタイプを省略できないので、どちらでもいいと言うことになる。
87デフォルトの名無しさん:05/03/07 10:51:56
引き数 じゃねーと 引数 だ ぼけ
8885:05/03/07 11:00:18
>>86
ナイスな説明ありがとうございました。
voidは引数がないことを明示的に宣言するわけですね。
89デフォルトの名無しさん:05/03/07 11:25:10
そんな日本語はありません > 明示的に
英和辞典用語だ ;-)

「暗示的に」ならある。
9085:05/03/07 11:59:33
プログラミング用語ですよw
「償却された値」とかもいかにも英語を無理やり日本語に
置き換えた感はありますが・・・
91デフォルトの名無しさん:05/03/07 13:18:35
>>69
配列の最後の要素の次を指すポインタは有効。
これは例外なんどけどネ。まぁ,規格書読んでくれ。

とりあえず最後にインクリメントするのは不要なのは確かだな
92デフォルトの名無しさん:05/03/07 14:45:54
>>78
ありがとうございます。さっそくフリーソフトで試してみます。
93諦めかけた人:05/03/07 14:54:27
誰か、あほな俺でも分かるように _alloca の使い方と使い道を教えてください。
94デフォルトの名無しさん:05/03/07 15:31:42
初心者に、「まず標準Cの範疇かどうかを確認しろ」
ってのは無理な注文なんだろうか…
>>93
alloca / _alloca が使えるシステムは多いが、
標準ではない。
malloc は知ってるのか?
95デフォルトの名無しさん:05/03/07 15:41:47
100byteぐらいのデータがどんどん来て
それについて処理をするのだけど
すでに処理をしたデータと同じ場合飛ばしてよくて
でも、大量に有るから保存はしないで
すでにあったかどうかを知る方法を教えてください。
ハッシュとか使うのでしょうか。
96デフォルトの名無しさん:05/03/07 15:45:38
>>95
スレ違い
97デフォルトの名無しさん:05/03/07 15:50:51
>>96
ごめんなさい。
お手数ですがもしご存知でしたら適当なスレを教えていただければ幸いです。
98デフォルトの名無しさん:05/03/07 15:55:23
>>93
使い方は簡単。malloc()と同じ要領。
但し、解放は暗黙に行なわれるのでfree()してはいけない。

という実装だと思われるが標準ではないので詳細は該当スレで。

尚、非標準ではあるし使い道に悩むくらいなら使わないほうが宜しい。
99デフォルトの名無しさん:05/03/07 16:07:12
>>95
未処理のデータを処理せずに飛ばしてしまう可能性が
あっても良ければハッシュが有効。
たとえ僅かでもそのような確率があっては許されない
時はハッシュは役に立たない。全データを保存して
おくしか無いと思う。

保存したデータを検索する時にはハッシュが使える。
100デフォルトの名無しさん:05/03/07 16:09:11
100
10180:05/03/07 16:09:12
>>84
解答THX そうでつか・・・ありがd
102諦めかけた人:05/03/07 16:21:03
標準C だのとか言うのは初心者でどうも分かりませんが、
使い方が malloc と一緒と聞けたので、なんとかわかりました。
けど、素直に malloc だけ使っとくことにします。
>>94>>98さん、ありがとうございました!
103デフォルトの名無しさん:05/03/07 16:26:13
>>99
どうもありがとうございます。
多少飛ばしてしまってもかまわないので。

すみません、STLのsetとfindを使えば、ハッシュ検索ということになりますか?
104デフォルトの名無しさん:05/03/07 16:26:18
getcharの戻り値がint型なのについて質問です。
getcharはファイルの終わりに達すると-1のEOFを返すという
とこで、int型である必要があるとの説明を見ました。
もしgetcharの戻り値をchar型で受け取ってしまうと、
ファイルの終端よりも前でEOFと判断してしまう可能性が
あるということのようです。
これって要は、int型→char型の変換で上位の数ビットが
切り取られてしまうからという様に自分は解釈したのですが
これでいいのでしょうか?
だとすると、疑問なのですが、char型の範囲を超えるビットが
ONになるようなint型の数値でEOF以外のものが戻り値でありうるのでしょうか?
あるいは0xFFという文字があることを想定してのことでしょうか?

EOFと勘違いしてしまうケースはどういう戻り値を返すときなのでしょうか?
105デフォルトの名無しさん:05/03/07 16:50:06
>>103
>STLのsetとfindを使えば
STLってなんだろう?初めて聞く単語だ…

【C++】STL(Standard Template Library)相談室 2
http://pc5.2ch.net/test/read.cgi/tech/1104898734/

【C++】template 統合スレ -- Part6
http://pc5.2ch.net/test/read.cgi/tech/1101384692/
106デフォルトの名無しさん:05/03/07 16:50:37
>>104
君はせっかく2147483647文字読み込めるところを
わずか255文字にしたいのか?

まず、getcharの返却値は読み込んだ文字数です。これはおk?
intなのは当然でcharなのはかなりおかしいと思いませんか?
EOFと考えるからこんがらがってるんじゃないか?
通常は読み込んだ文字数を返すけど、ファイルの終わりを読み込んだら
終わりのしるしとして-1を返す、ってだけ。
で、-1だとみんな忘れるからそれにEOFという名前を
わりあててるだけのこと。
107デフォルトの名無しさん:05/03/07 16:52:41
>>106
は?酔っ払ってんのかぼけ
108デフォルトの名無しさん:05/03/07 16:54:15
>>106
> まず、getcharの返却値は読み込んだ文字数です。
そんな変なライブラリ使うなよ。
109デフォルトの名無しさん:05/03/07 16:57:42
>>103
ここはCスレだからSTLはスレ違い。ちなみにSTLにはハッシュという概念がない。
110デフォルトの名無しさん:05/03/07 16:59:17
cで、変数の宣言って関数の先頭で行わなければならないんですか?
自分が組んだプログラムがgcc-3.3.3ではコンパイル出来たんですが、
フリーbsdのgcc-2.95では関数の途中(式文?を書いた後)で宣言した変数は、宣言がされていないというエラーが出てしまいました。
gccのバージョンの違いでこうなるのかと思うんですが、gcc-3.3.3で同様にするオプションがありましたら教えてください。
111デフォルトの名無しさん:05/03/07 17:02:49
スマン、何かと勘違いしてた...
スレの住人の皆様、このスレのレベルを下げる書き込み大変失礼しました。
>>104
大変失礼しました。>>106の書き込みは気にしないで下さい
いや、むしろ削除依頼だしたいくらいです。
と言うわけで、今日からC初心者に戻ります、さようなら

 ∧||∧
(  ⌒ ヽ
 ∪  ノ
  ∪∪

112デフォルトの名無しさん:05/03/07 17:10:45
>>110
>変数の宣言って関数の先頭で行わなければならないんですか?
そうです。
113デフォルトの名無しさん:05/03/07 17:16:01
>>110
-std=c89 -pedantic-errors
114デフォルトの名無しさん:05/03/07 17:18:00
>変数の宣言って関数の先頭で行わなければならないんですか?
そのローカル変数が使用される中括弧ブロックの先頭なら良い。
#c++もいらん拡張をしたもんだ
115デフォルトの名無しさん:05/03/07 17:26:03
>>112-114
ありがとうございます。
>>113の方のやり方でってみたところ、猛烈にエラーメッセージが出て来た。
厳しすぎる気も……
116デフォルトの名無しさん:05/03/07 17:29:21
>>114
> #c++もいらん拡張をしたもんだ
不必要なコンストラクタ走らせないためじゃないの?
117デフォルトの名無しさん:05/03/07 17:38:01
すみません。もう自分ではどうにもなりません、助けてください。
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt__dup.2c_._dup2.asp
関数 _dup2 がわかりません。
上のサイトのようなプログラムを組むと、flushall(); もしくは、fflush( stdout ) をやって初めて printf の中身が表示される
仕組みになってしまうのですが、これを直すにはどうすればいいでしょうか?
printf のモードがバッファリングモードにでも切り替わるのか、とか思っていますが、
そんなの存在するとも思えないし。
長文申し訳ないですが、どうかお願いします。
118デフォルトの名無しさん:05/03/07 18:04:48
自己解決しました。orz
119デフォルトの名無しさん:05/03/07 18:11:56
>>105
>>109
ありがとうございます。
120デフォルトの名無しさん:05/03/07 18:19:12
                             .,/  _,/      .、、     ...、ヽ,,-、
                           .,,メ-‐'"       _"',|  .、、._,i.""│._、
                      ._,,,/`,イ―''      ,`",l゙、、,,ジ'"`.```.|゙゛
                    .,,,-,i´,―--―''"      、、,!冖'"`、_、,,,/'゚,,."゙l-‐''
       _,,,,,,,,,,,,,、    _,,,,,--''"`'",/゙            、、.',j/′.、,,∠''"` .'_ヽ.',゙l.._,,、
    ,,-'"゙`    `゙゙''lーイ"`     .‐′    _,..,,/ .ヽ、,i,i´ ``゙’   、、シ":"'.「
  .,,i´         `'i、\ ゙!,      ._,-'"ン'` 、、`_,/`,i´ _,___,ニ='" .'゙、゙".゙l,,-'`
 .,/′          `'i,\ ′  .,,,,-',,,,、.,i´、_:_'_v`"゙i、|   ```` `  、_,Jィ""゙l, _,,,,、
: ,i´             ゙l. ヽ丶  .r‐'"、.l゙、、:,p=l┴丶 .!,,!  `'"''''''冖''?'''゙~."""'."'/゛ `
: |,,r                ゙l, 、 i、、、、:,,_,xl!ヴi,、      、、っ,,,,    、`',,,,、`、`、|、
  |、            、"| .i、 lrr-''"゙,,ハ;、-'"゙゙'''''''"丶ヽ.,,冫``~`"`"~"``` `/ `''''
  `''r,,、 、 、、 .、丶、.``ヽ,レ"°  `` .j゚'=∠、````,,,,,∠ ~'ヽ```````、_,r‐'ヘi、
    `゙'ーi,,_、、、、、: :._,,,r〃       "  /^゚"'广  ,/  .,/゙゙゙'''ヶ―''''″   `
       `゙^""""''"'"                `   ′  ′  ."   
ぱいちんこ
121デフォルトの名無しさん:05/03/07 19:32:39
同じファイルに fopen 二回かけるのはまずいんですか?
122デフォルトの名無しさん:05/03/07 19:54:40
>>121
排他処理をしているかどうかにもよる。
123デフォルトの名無しさん:05/03/07 19:59:55
なるほど。Thx
124デフォルトの名無しさん:05/03/07 20:37:46
2次元配列をmain関数と自作関数でやり取りするときはどうすればよいのでしょうか?
ポインタを利用すればいいのはなんとなくわかるのですが、2次元になるとどのようにポインタの値を増やせばいいのかがわかりません

ちなみに与えられた課題は
2行2列の行列を入力し、その逆行列を求める関数を作れという問題です
main()で行列を入力し、逆行列を求める関数inv()に渡す
mat[2][2]
scanf()
inv()でmat[2][2]の値を利用して逆行列を求める
mainに返すか、invでそのまま結果を表示するかは自由
です
125デフォルトの名無しさん:05/03/07 20:51:43
二次元配列は配列の配列。
だから、配列へのポインタを渡せばよい。
126デフォルトの名無しさん:05/03/07 20:51:50
> #c++もいらん拡張をしたもんだ

アホ
127デフォルトの名無しさん:05/03/07 21:34:28
>>126
煽りはご遠慮ください。
128デフォルトの名無しさん:05/03/07 21:57:08
>>127
マジレスです
129デフォルトの名無しさん:05/03/07 22:00:46
char (**c)[4] ;
には何を代入できますか?
ポインタ配列へのポインタだから、 char *p[4] ;
と思ったけど、駄目でした。
130デフォルトの名無しさん:05/03/07 22:11:32
>>129
char (*voke)[4];
c = &voke;

cha sine[4];
voke = &sine;
131デフォルトの名無しさん:05/03/07 22:13:45
じゃあ、これには何を入れればいいんですか?
int ((**c)[3])[4] ;
132デフォルトの名無しさん:05/03/07 22:17:37
>>131
ぬるぽ
133デフォルトの名無しさん:05/03/07 22:19:30
(´・ω・`)
134114:05/03/07 22:20:07
>>126
えっ。今までそう思っていたよ。
(スレ違いかも知れないけど)
教えて下さい
135デフォルトの名無しさん:05/03/07 22:42:33
>>131
int ((**c)[3])[4] ;
int (*aho)[3][4];

c = &aho;
136デフォルトの名無しさん:05/03/07 22:45:17
VC++.NETでプログラムを作ったのですが、ただの開始を選ぶと正常に動作するのに、
デバッグなしで開始すると画面が真っ黒になります。原因にこころあたりのある方は
おられませんか?
137デフォルトの名無しさん:05/03/07 22:46:02
>>131
これとにらめっこして一生悩んでなさい

#include <stdio.h>
int
main(int argc, char **argv)
{
 int ((**sine)[3])[3];
 int (*aho)[3][3];
 int baka[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
 aho = &baka;
 sine = &aho;
 printf("%d\n", (**sine)[1][1]);
 return 0;
}
138デフォルトの名無しさん:05/03/07 23:04:25
わかりやすいこたえをありがとう
139デフォルトの名無しさん:05/03/07 23:12:27
>>134
C99 って知ってる?
140デフォルトの名無しさん:05/03/07 23:13:33
また始まるのか (・∀・)ニヤニヤ
141デフォルトの名無しさん:05/03/07 23:14:51
20代がおとなしいな
142デフォルトの名無しさん:05/03/07 23:24:44
>>141
乾燥注意報が出ております。
火の元には十分注意してください。
143114:05/03/07 23:25:25
ああ新言語規格ですね。
規格に準拠したコンパイラってもう出来たんですか?
C90ベースの回答をして「アホ」呼ばわりされてもねぇw
144デフォルトの名無しさん:05/03/07 23:30:57
>>143
C90って何だ?
145114:05/03/07 23:35:12
ああ失礼。規格に付いては全然知らなくて
俗に言うANSIーCのつもりだったのですが
146デフォルトの名無しさん:05/03/07 23:38:40
なんといいますか、まあ…あれだ。

ROMっとけ。
147デフォルトの名無しさん:05/03/07 23:43:03
ネタスレだからって、どんなネタでも受けるわけじゃない。
148デフォルトの名無しさん:05/03/07 23:56:15
最低限の基礎も知らないくせにえらそうな態度だな
149デフォルトの名無しさん:05/03/08 00:47:08
> > 変数の宣言って関数の先頭で行わなければならないんですか?
> そうです。

いいえ。
そんな制限があるコンパイラーはにせものです。
150デフォルトの名無しさん:05/03/08 01:22:22
>>114
C++の設計と進化の3.11.5にその辺乗ってるよ。
個人的には116が結構納得だけど。

>>144
通称C89のANSI CがISOで承認されたのが1990年なことから、C90とも呼ぶよ。
151デフォルトの名無しさん:05/03/08 01:31:26
> そのローカル変数が使用される中括弧ブロックの先頭なら良い。
> C++もいらん拡張をしたもんだ

いちばん始めのCからそんなのはできてたぞ ぼけ
152デフォルトの名無しさん:05/03/08 01:32:40
> 通称C89のANSI CがISOで承認されたのが1990年なことから、C90とも呼ぶよ。

そんないわれかたができたのも 1997年後ごろから。
(しかも一般人までひろまったのが、2000年以降)
153デフォルトの名無しさん:05/03/08 01:35:32
>>152
一般のプログラマーが「C89」なんていう言い方を知ったのは、
雑誌に載ったこの記事を読んだころからだ > http://www.cmagazine.jp/contents/200004.html
154デフォルトの名無しさん:05/03/08 01:41:35
c言語で図形を描画してみたいんだけど
turbo cじゃなくてvc++.netでも出来ますか?
155デフォルトの名無しさん:05/03/08 01:45:24
そんなものはありません > c言語
156デフォルトの名無しさん:05/03/08 01:46:39
>>151
>110
>フリーbsdのgcc-2.95では関数の途中(式文?を書いた後)で宣言した変数は、宣言がされていないというエラーが出てしまいました。
に対してC++もいらん拡張を…と書いたんだと解釈したけど違うかな。いい方に考えすぎ?

>>152
何だ?に対しての返答だから、いつから…は関係ないのではないかと。
C99なんかと区別するために結構最近使われ始めたってのは同意。
157デフォルトの名無しさん:05/03/08 01:47:51
> 彼らはさっそく新しい言語にC9Xという愛称を付けた。
> 1989年にANSIが承認したC89と区別するためだ。
> 疑い深い人々がそれをC0Xと呼び始めるのにあまり時間はかからなかった。
> 彼らはそれが実際には2000年以前には完成しないだろうと考えたのだ。
158デフォルトの名無しさん:05/03/08 01:49:37
> に対してC++もいらん拡張を…と書いたんだと解釈したけど違うかな。

っていうか、Cは「その変数を使う前ならどこでもOK」だ。
実はC++より前にCにはその機能が入っているものが多かったのだ。
159デフォルトの名無しさん:05/03/08 01:50:51
> 関数の途中で宣言した変数は、宣言がされていないというエラーが出てしまいました。

それはそのコンパイラーがにせものだからです。
うちの (gcc 4.0)では平気です。
160デフォルトの名無しさん:05/03/08 01:59:49
>>157
どこかで読んだことが…とぐぐってみたらCマガ2000年4月号と出ました。約5年前の記事とは。

>>158
C89実装系なら変数宣言はブロックの先頭、処理系によってはC++の構文を取り入れて
ブロックの先頭以外でもOK、C99実装系ならブロックの先頭以外でもOK…ってことだよね。
161デフォルトの名無しさん:05/03/08 02:03:14
いいえ、「C++の構文をとりいれて」ではありません。C++が真似したの。

どっちがさきにその点が有名になったかで勘違いしているひともいる。


あ、勘違いといえば、// 形式のコメントについてもC++由来だと思い込んでいるぼけがいた。
実際にはちがう。

ここにかいてある通りだ > http://www.gihyo.co.jp/book/2001/402231/download/column.html

> ところで、この形式のコメントはC++では当初より採用されていたものなので、
> C++からのフィードバックだと思う人もいるかもしれないが、
> 実はCの祖先であるBCPL由来のものだ。
> むしろ隔世遺伝か先祖返りといったところだろう。
162デフォルトの名無しさん:05/03/08 02:13:22
>>161
そうなの?規格ベースだとC89からだろうけど、実務ベースだとあんまり自信なさげ。
C++設計と進化によると、途中の変数宣言はAlgolから拝借と書いてあるのと、
自分が普段使ってるVC、BCCコンパイラがCコンパイル時はちゃんと途中の変数宣言を
エラー扱いするから、Algol -> C++ -> C99 と遷移してきたと思ってたり。
//のコメントが BCPL が祖先ってことは C++設計と進化 にも書いてあるのと、
以前どこかで読んだという、うろ覚えな記憶が。
163デフォルトの名無しさん:05/03/08 02:17:20
>>162 自己訂正レス
>規格ベースだとC89からだろうけど
規格ベースだとC99からだろうけど
です。
164デフォルトの名無しさん:05/03/08 02:17:19
> Algol -> C++ -> C99 と遷移してきたと思ってたり

それはおおきなまちがいです。

> //のコメントが BCPL が祖先ってことは C++設計と進化 にも書いてあるのと、

初期のCでは使えなかったのですが、使える拡張をする処理系が増えたのはC89ができるよりも
前です。てっきりC89でも取り入れるかなー とおもったけど入らなかった。でもC89以降の
処理系では、たいがいのものがその拡張(//)をしてあった(たいがいスイッチでオフにもできる)。
C99で「いまさらながら」とりいれられたものです。

つまりC++登場以前からCではけっこう普及してたんですよね。
165デフォルトの名無しさん:05/03/08 02:20:28
i =+ 2; ってのが
i += 2; になった時代 (もしくは、前者も互換性のために残してあった時代) から
Cを使っているひとは、ここにはいなさそうですね。

わたしの時代のCは
# include みたいに、#のあとに空白はNGでした。
#ifdefはあったけど#ifがなかったのでけっこう苦労しましたね。
0xffとかはあったけど、""の中では\xもなかったので全部8進数で書いてました。
166デフォルトの名無しさん:05/03/08 02:25:46
>>164,165
なるほどです。
C89制定時はまだC言語に(プログラミングにも)出会ってなかったので、
面白い話が聞けました。どもです。
ちなみに、#のあとに空白入れてもOKなの知らなかった。。。
167デフォルトの名無しさん:05/03/08 02:30:06
#のあとに空白をいれると、
#if ほげ
# define FOO
#else
...てときにインデントできるってんだけど、わたしは嫌いなのでやらないです。
168デフォルトの名無しさん:05/03/08 02:49:26
>>167
あ、納得。使わないけど、自分も時たま見ますね。
#if #ifdef 系列だけかと勝手に思ってたら#includeなんかでも使用できたとは。
169デフォルトの名無しさん:05/03/08 03:22:59
#if ほげ
  #define FOO
#else

で充分だろ?
170デフォルトの名無しさん:05/03/08 03:54:39
>>165
原始時代のCをよむと、
どうも、ポインタが一律で、unsigned int扱い、らしく、
たとえば、

struct user
{
int u_rsav[2]; /* save r5,r6 when exchanging stacks */
int u_fsav[25]; /* save fp registers */
/* rsav and fsav must be first in structure */
...

char *u_offset[2]; /* offset in file for IO */
...
} u;


char *u_offset[2]; は
unsigned int u_offset[2];
相当らしく、

しかも、この実装では、
intが16ビットらしく、

ようするに、これは、
上位16ビット/下位16ビット
計32ビットを入れるためのものらしい...です。

#なんでこんなものを<略>
171デフォルトの名無しさん:05/03/08 05:35:28
(最近になってCを始めた人としては・・C99だけ覚えたら良いのでは?とか思ってるわけで・・・

企画制定にまつわる話や当時の風潮を知るのは非常に興味深い事だし、なぜこうなったのかを知るのは大切だと思うけどね。
172デフォルトの名無しさん:05/03/08 08:02:10
C99完全準拠な処理系ってなんかあったっけ?ぱっと出てこないだけど。
173デフォルトの名無しさん:05/03/08 09:07:54
>>172
VC.NET
174デフォルトの名無しさん:05/03/08 10:03:52
@ XXXXXXXXXXXXX @
のような、@で囲まれた部分を削除するツールを作りたいんですけど、
@ 〜 @ で囲まれた部分を空白に置き換えることは出来ますが、
削除(DeleteもしくはBackSpace)が押されたときと同じ動作をさせるには、
どうすればいいんですか?
175デフォルトの名無しさん:05/03/08 10:04:52
s/@[^@]*@//g;
176デフォルトの名無しさん:05/03/08 10:11:35
お早い回答ありがとうございます。 s/ //g; の部分が
ピンときませんが、家に帰ったら試したいと思います。m(_ _)m
177デフォルトの名無しさん:05/03/08 10:14:14
何この問答…
178デフォルトの名無しさん:05/03/08 10:14:58
そのセミコロンはなんだよ ぼけ
179デフォルトの名無しさん:05/03/08 10:15:32
> 最近になってCを始めた人としては・・C99だけ覚えたら良いのでは?

そうですね。それ以外覚えてもあまり意味ない。
180デフォルトの名無しさん:05/03/08 10:16:00
> VC.NET

あんなものはCコンパイラーとは呼べない。
181デフォルトの名無しさん:05/03/08 10:27:03
やっぱり、>>175 ウソなんですか…
182デフォルトの名無しさん:05/03/08 10:30:11
>>181
問題をもっと詳しく記述しなさい
宿題ならそのまま書きなさい
183デフォルトの名無しさん:05/03/08 10:34:18
s/@.*@//g; ではなくて
s/@.*@//g だ

それを含む行を行ごと全部消したいなら
g/@.*@/d
184デフォルトの名無しさん:05/03/08 10:39:01
もちろん、
@あいうえお@かきくけこ@さしすせそ@
みたいなのを
かくくけこ
だけにしたいなら
@.*@の部分は@[^@]*@ になるが
いずれにせよセミコロンはへん
185デフォルトの名無しさん:05/03/08 10:49:59
最後にもうひとつお願いします。関数は何をつかえばいいのですか?
普通に fscanf の "" の中に入れて試してみようかと思ってるけど、
にわかには信じがたいのです、試そうとは思いますが。
186デフォルトの名無しさん:05/03/08 10:50:38
まさに >>184 のようなことがしたいです。
187デフォルトの名無しさん:05/03/08 10:59:58
質問。
処理系はx86系のWin機です。
たとえば、
unsigned long *mem;
mem = (unsigned long*)malloc(1000*1000*4);
と、newやmalloc等で確保した大きめのメモリ領域はシステムメモリに割り当てられるのか、
それとも仮想メモリに割り当てられるのかは選択、もしくは判断できるのでしょうか?
OSがメモリの管理を行なってるので一概にとはいえないけど、こちらからは操作できないのかと考えてます。

188デフォルトの名無しさん:05/03/08 11:00:03
関数などつかうなsedを使えぼけ
車輪を再発明するな ぼけ
sed 's/@[^@]*@//g' ファイル名
だ ぼけ
189デフォルトの名無しさん:05/03/08 11:01:12
> 処理系はx86系のWin機です。

よそ行け ぼけ

Windowsにまともな仮想メモリーなどない ぼけ
190デフォルトの名無しさん:05/03/08 11:08:22
>>174
おまえはよ。ちょっとましな先生のもとで授業でもうけたほうがいいぞ。
「きょうは@で囲まれたところを消したいが
明日は#でかこまれたときを消したいかもしれない」
「きょうは1行に複数でてきたら全部消したいかもしれないが
明日はその行に出てきた最初のだけ消したいかもしれない」
「きょうは消したいが、明日は-�に置き換えたいかもしれない」
「来年のいまごろにはそれがでてきた行をすべて消したいと思うかもしれない」
「1年半語には、それが出てきた行を次の行と連結してさらにその次の行と
とりかえたいと思うかもしれない」

ということを考えろと教えないやつはだめ教師
191デフォルトの名無しさん:05/03/08 11:10:11
そんなの要望を全部満たすのがsedだ。

いまさらsedの数百分の1の機能のもの(しかもバグだらけになるだろう)を
再発明して何になる。自分のコーディングの勉強にさえならないことはわからないのか?
sedの使い方を少しでも慣れ、その思想にふれたほうが、よほど自分のプログラムの
勉強になる。と、わたしの学校の先生は言った。(もうすぐ卒業式!)
192デフォルトの名無しさん:05/03/08 11:17:59
っていうかsedさえ使えないようなやつがコード書くなよなあ...。
おそろしい時代になったもんだ。
193デフォルトの名無しさん:05/03/08 11:20:48
edだったら
1,$s/@[^@]*@//g したり
g/@[^@]*@/ したりすればいい。

viだったら
:%s/@[^@]*@//g したり
:g/@[^@]*@/ したりすればいい。

sedだったら
sed 's/@[^@]*@//g' ファイル名 したり
sed '/@[^@]*@/' ファイル名 したりすればいい。

...と日下部先生の本にも書いてある。
194デフォルトの名無しさん:05/03/08 11:25:41
>>187
たった4MBなんて全然大きくない。
195デフォルトの名無しさん:05/03/08 12:00:27
>>188
その程度の事で別プロセス起動するのは如何なものか。
196デフォルトの名無しさん:05/03/08 12:50:49
>>195
空気嫁
197デフォルトの名無しさん:05/03/08 13:07:51
>>188-193
遅れながら申し訳ないです。少し席を外してまして。
こんな素人にもわかるご説明ありがとうございました。
198デフォルトの名無しさん:05/03/08 13:15:13
ただ、自分のは Windows なので…
しかも、ここはC言語スレなので… それが残念でした。
199デフォルトの名無しさん:05/03/08 13:25:07
>>196
ふつー、regex (なければ拾ってきて) 使う
200デフォルトの名無しさん:05/03/08 13:37:39
やはり、本来文字を削除する場合、空白じゃなく、全くの(Deleteみたいに)無にしたいのですが、
それはないのですか?
201デフォルトの名無しさん:05/03/08 14:07:40
ないですよ。
202デフォルトの名無しさん:05/03/08 14:11:02
>>200
LIFOに空白以外積んで書き込んだら?
203202:05/03/08 14:12:33
×LIFO
○FIFO
に訂正
204デフォルトの名無しさん:05/03/08 15:04:53
日下部(笑)
205デフォルトの名無しさん:05/03/08 15:18:57
完全にネタスレ化しとる
206デフォルトの名無しさん:05/03/08 15:21:11
>>205
最初から隔離目的に立てたスレだろ?それが何か?
207デフォルトの名無しさん:05/03/08 17:12:45
(int*)NULL とかって、キャストする意味は何ですか?
ただ単に読み易くするだけですか?
208デフォルトの名無しさん:05/03/08 17:57:09
>>207
別に無くても良い。
俺は読み易くなるとは思わない。(読み辛くなるとも思わないが)
209デフォルトの名無しさん:05/03/08 18:41:14
ほへぇ
210デフォルトの名無しさん:05/03/08 19:00:56
べほぉ
211デフォルトの名無しさん:05/03/08 19:06:32
http://pc5.2ch.net/test/read.cgi/tech/1087648569/
http://pc5.2ch.net/test/read.cgi/tech/1109707842/
ネタスレばっかり3つも要らん。
本スレだけが無いぞ。
212デフォルトの名無しさん:05/03/08 19:15:44
>>211
自分で本スレ立てれば?&削除依頼出せば?
213デフォルトの名無しさん:05/03/08 19:58:30
>>189
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
仮想メモリー
214デフォルトの名無しさん:05/03/08 20:53:51
sed sedってUNIXの亡霊にとり憑かれたジジイが・・・
215デフォルトの名無しさん:05/03/08 21:04:45
いや、sed は便利だよ
GUI の 10 〜 10000 倍くらい早く仕事を片づけてくれる
216デフォルトの名無しさん:05/03/08 21:48:26
sedよりperlのほうが強力で早いよな
217デフォルトの名無しさん:05/03/08 22:06:23
いまさらperlやるのもな。
218デフォルトの名無しさん:05/03/08 22:09:27
いまさらsedやるのもな。
219デフォルトの名無しさん:05/03/08 22:15:32
いまさらsed,perlやるのもな。
220デフォルトの名無しさん:05/03/08 22:18:28
今からやるならCだよな!
221デフォルトの名無しさん:05/03/08 22:23:31
仮想メモリー
222デフォルトの名無しさん:05/03/08 22:27:30
開発期間を度外視するなら verilog とか・・・
メモリでも HDD でもネットでも何でもできるぞ
223デフォルトの名無しさん:05/03/08 22:29:13
仮想包茎
224デフォルトの名無しさん:05/03/08 22:40:14
ruby最高!
225デフォルトの名無しさん:05/03/08 23:08:24
ただいまっと。亀レス失礼。
>>173
VC.NETって_Bool使えたっけ?
226デフォルトの名無しさん:05/03/08 23:17:22
試せりゃわかるものを・・・
わかってても何かを確認し忘れてる・・・

どっちみちアフォには変わりない
227デフォルトの名無しさん:05/03/09 00:13:56
mallocでメモリ確保して、ファイルを読み込んで
保存したいんですが
最後に ヘヘヘヘヘヘ が付いてしまうのですが
なんとかなくすにはどうすれば良いのでしょうか?

void main()
{
char *p;
int x;
FILE *fp,*fp2;

x = (size_t )filelength(fileno(fp));

  fp = fopen(hanakuso.txt,"r");
  if (!fp)   return NULL;
  fp2 = fopen(makiguso.txt,"w");
if (!fp) return NULL;

  x = (size_t )filelength(fileno(fp));

  p = (char *)malloc(x + 80);
  if (!ptr){
  fclose(fp);
  return NULL;
  }

  fread(p,x,1,fp);

  strcat(ptr,"ボクはその時!");

  fwrite(p,x,1,fp2);
}
228デフォルトの名無しさん:05/03/09 00:15:59
頂点の番号の配列と頂点の個数の情報を持った面、
のリストがあったときに、
それぞれの面と隣接している(二つ以上の頂点番号が同じ)面のリストを作るには
どんな方法が良いでしょうか。
全部の面にたいして全部の面を探索すると、
オーダが面の数の2乗になって、時間がかかりまくるのですが、
何か短くすませることができる方法はないでしょうか?
229デフォルトの名無しさん:05/03/09 00:16:29
↑訂正

>if (!fp) return NULL;
if (!fp2) return NULL;

>fwrite(p,x,1,fp2);
fwrite(p,x+80,1,fp2);
230デフォルトの名無しさん:05/03/09 00:22:26
ファイル名とかがふざけてるとしか思えんな
231デフォルトの名無しさん:05/03/09 00:26:10
すいません^^;

for(i=0;i<x+80;i++) { p2=p+i; *p2=0; }

一応、初期化してみると ヘヘヘヘヘ は消えたんですけど
余白が付いちゃうんですよね

これで我慢するしかないのかな?
232デフォルトの名無しさん:05/03/09 00:42:32
>>228
面データから辺データを構築して、
辺データの中にその辺を所有している面のリストを構築するとか。
233デフォルトの名無しさん:05/03/09 01:02:48
_itoa 関数で 数値を文字列に出来るのですが
浮動少数値を文字列にするにはどうすれば良いんでしょうか?
234デフォルトの名無しさん:05/03/09 01:04:35
>>233
sprintf
23565:05/03/09 01:25:55
>つまり↑は代入された後にインクリメントされるから
これで溶けました。後置は増加前の値として扱うと。

>配列outputは要素数が4だから飛び越してしまうわけだね。
outputに長さ制限や末尾は関係ないので
「飛び出す」というより「既に次の番号に進めてある」かと。
敢えて要素数を言うなら、5個でしょう。

勉強しはじめとは言え、自力で気づかなかった自分はやばい。
236デフォルトの名無しさん:05/03/09 01:30:37
>>231
fread() は読み取り後のバッファに '\0' を付けない。
fread() の後、自分で
 p[x] = 0;
とするか、または fgets() を使う。つか、こういう使い方
するなら fgets()。
それと、読み込み前に初期化なんかするのは恥。
237デフォルトの名無しさん:05/03/09 02:35:22
>>231
0x20で初期化するんじゃなくて'\0^で初期化すればよい。
>>236
の言っているように恥とする文化もあるが、時と場合によりけり。
238デフォルトの名無しさん:05/03/09 03:03:11
> やはり、本来文字を削除する場合、空白じゃなく、全くの(Deleteみたいに)無にしたいのですが、
> それはないのですか?

だからsedだといってるだろうが ぼけ
239デフォルトの名無しさん:05/03/09 03:04:20
> sedよりperlのほうが強力で早いよな

いやperlのほうが遅い。
先日測定する用事があったのだが、sedでできるようなことをperlにもやらせて
両方でくらべたら6倍ほどperlが遅かった。
240デフォルトの名無しさん:05/03/09 03:05:46
> 一応、初期化してみると ヘヘヘヘヘ は消えたんですけど
> 余白が付いちゃうんですよね

ぼけ。ちゃんとサイズ分だけ書けよ。
241デフォルトの名無しさん:05/03/09 03:13:45
>>237
いや、じっさい恥。
242デフォルトの名無しさん:05/03/09 03:14:18
なんのためにfilelengthみてんだよ。
サイズわかってるならきっちりかけよ ぼけ
243デフォルトの名無しさん:05/03/09 03:19:39
+80ってなに?
244デフォルトの名無しさん:05/03/09 03:27:11
食いつきがいいな
245デフォルトの名無しさん:05/03/09 03:38:42
つーか、fputs()でファイルに文字列追加すりゃいいだけじゃん。
246デフォルトの名無しさん:05/03/09 03:39:39
そそ。
なので237はかなりのぼけ
247デフォルトの名無しさん:05/03/09 09:25:02
>>239
perlでやらせるようなことをsedにやらせたらsedのが遅い
248デフォルトの名無しさん:05/03/09 09:35:47
いいや、確実にperlのほうが遅い。

そんな常識もしらない247は、ただのしったかぶりで、どっちも使ったことないにちがいない。
249デフォルトの名無しさん:05/03/09 09:55:29
perlでできて、sedではできない(若しくは困難)なことは多い。
250デフォルトの名無しさん:05/03/09 10:34:57
sedで駄目だったら、とりあえずawkだな。
251デフォルトの名無しさん:05/03/09 10:37:06
もういいって
252デフォルトの名無しさん:05/03/09 11:40:45
このスレに戻ってきたよ(^-^)
253デフォルトの名無しさん:05/03/09 11:45:55
誰だお前は
254デフォルトの名無しさん:05/03/09 11:50:45
俺だよ、俺(^-^)
255デフォルトの名無しさん:05/03/09 11:51:57
しらん
256デフォルトの名無しさん:05/03/09 12:25:15
>>254
折り返し電話しますね
257デフォルトの名無しさん:05/03/09 12:26:25
示談金は10万です
258デフォルトの名無しさん:05/03/09 19:29:52
デレクトリパス や ファイル名 の間の 「\\」 文字なんですが

char ss[]="c:\anpan\man\no\anko\"

この文字列があった場合、書き出すのに

    ↓のようにしたいのですが
char ss2[]="c:\\anpan\\man\\no\\anko\"

簡単に変換する方法はないでしょうか?
(パス、ファイル名はランダムなんです。)
259デフォルトの名無しさん:05/03/09 19:30:46
訂正
>char ss2[]="c:\\anpan\\man\\no\\anko\" → ×
char ss2[]="c:\\anpan\\man\\no\\anko\\"  → ○
260デフォルトの名無しさん:05/03/09 19:35:36
>>259
sed -e 's/\\/\\\\/g'
261デフォルトの名無しさん:05/03/09 19:36:45
>>258
具体的に、何がしたいのか書いて味噌。
262デフォルトの名無しさん:05/03/09 19:57:19
>>258
\を/に変えるだけでふつう動くだろ
263デフォルトの名無しさん:05/03/09 20:44:19
>>260
もういいから
264デフォルトの名無しさん:05/03/09 21:25:06
#include <stdio.h>
void main(void)
{
float mat[2][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("mat[%d][%d]?",i,j);
scanf("%f",mat[i][j]);
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("mat[%d][%d]=%f\n",i,j,mat[i][j]);
}
}
}
これを実行するとscanf()関数の呼び出し時の実引数が不正です。と出ます
試験的にキーボードから配列に入力された値をただそのまま表示したいのですが、どのように間違っているのでしょうか?
265258:05/03/09 21:25:43
ええ、ファイル名を取得して
それをTXTファイルに書き込んで
その
TXTファイルからもう一度、文字列(ファイル名)を取得して
そのファイルを読ませたいんです

アリさん.TXT

FindFirstFile( "c:\kirigirisu\to\アリさん.TXT",&FindData )
ss=strcpy(WaveFile[i],FindData.cFileName);
fputs(ss,fp);
fgets(ss2,80,fp);

ss2ファイルを開きたいけど、ss2[]="c:\kirigirisu\to\アリさん.TXT"で
これをそのままファイル名として使うと、アリさん.TXTが読めないんです

省くとこんな感じです
266デフォルトの名無しさん:05/03/09 21:27:26
↑修正

>ss=strcpy(WaveFile[i],FindData.cFileName); ×
strcpy(ss,FindData.cFileName);          ○
267デフォルトの名無しさん:05/03/09 21:31:15
>>264

>printf("mat[%d][%d]?",i,j);                
>scanf("%f",mat[i][j]);

この順番が逆なんではないでしょうか?  
268267:05/03/09 21:34:35
違いましたね。忘れてください^^;
269デフォルトの名無しさん:05/03/09 21:39:26
>>264

>scanf("%f",mat[i][j]);

これを scanf("%f",mat&[i][j]); したら動きましたよ
270269:05/03/09 21:40:13
scanf("%f",&mat[i][j]);  こうでした^^;
271264:05/03/09 21:42:03
あれ、ほんとだ・・・
配列を使うとき「&」はいらないって教わったような気がするんだけど・・・
ともかくありがとうございます
272デフォルトの名無しさん:05/03/09 21:43:15
>>271
それは%sの話だろ。

もっともこの場合もscanf("%f",mat[i] + j);にすれば&は要らないけどさ。
273デフォルトの名無しさん:05/03/09 22:27:52
>>271
「おまじない」って教え方の弊害がモロに出た形だな
274デフォルトの名無しさん:05/03/09 22:31:48
弊害っていうか単純に教え方の間違いだし
275デフォルトの名無しさん:05/03/09 22:33:16
>>265
日本語勉強しろ
276デフォルトの名無しさん:05/03/09 22:35:52
scanf("",&a)の場合&aって言うのは「a」のアドレスって意味だよ。
だから仮にaと同じ方のポインタpを定義して
p=&aとして
scanf("",p)(アスタリスク無くても)とすれば
scanf("",&a)と式的に同値
この場合だとscanf("",mat)とすれば自動的にmatの先頭アドレス
が渡される。
277デフォルトの名無しさん:05/03/09 22:37:35
>>274
それを言うなら
s/方/た内容自体/
278デフォルトの名無しさん:05/03/09 22:55:45
先ほどはありがとうございました
ふたたびエラーです
今度は関数invにてmat←invをやりたいのですがこれを実行すると
関数指名子か関数へのポインタでないオブジェクトには関数呼び出し演算子はつけられません
と言われます
さぱーり意味不明っす
#include <stdio.h>
void inv(float mat[][2],float inv[][2])
{
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
inv[i][j]=mat[i][j];
}
}
}

void main(void)
{
float mat[2][2],inv[2][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("mat[%d][%d]?",i,j);
scanf("%f",&mat[i][j]);
}
}
inv(mat,inv);
279デフォルトの名無しさん:05/03/09 23:01:08
そもそも戻り値があるでもない、かと言ってポインタでもない
関数を作成して何の意味があるんだ?
280デフォルトの名無しさん:05/03/09 23:11:30
inv inv inv inv inv
281278:05/03/09 23:14:57
今は練習です
課題として逆行列を計算する関数invを作成しろ、というのがあるのでそのために試行錯誤してます
282デフォルトの名無しさん:05/03/09 23:19:50
>>278
陰部が2つあるようだが、main の中で触っている陰部はどっちのことだと思う?
283デフォルトの名無しさん:05/03/09 23:20:53
二股はよくないなw
284デフォルトの名無しさん:05/03/09 23:22:44
-1
285278:05/03/09 23:27:29
>>283
二股がよくなかったんですね・・・
配列名を変えたらうまくいきそうな予感です
286デフォルトの名無しさん:05/03/09 23:30:11
2×2行列なら
void inv(float *mat[][2])
{
*mat[0][0]=*mat[1][1];
*mat[0][1]=-*mat[0][1];
*mat[1][0]=-*mat[1][0];
}
にデターミナントの逆数かけてやればいいんじゃないの?
287デフォルトの名無しさん:05/03/09 23:35:04
>>265
ちゃんと日本語ですけど、説明の仕方がへたですいません

c:\kirigirisu\to\アリさん.TXT ←あるファイルX
FindFirstFile( "アリさん.TXT",&FindData ) ← ファイル名取得
strcpy(ss,FindData.cFileName); ← それを文字列ssへ書き込み

fputs(ss,fp); ← 文字列ssからTXTファイルBへ書き込み

fgets(ss2,80,fp); TXTファイルBから文字列を取得 (c:\kirigirisu\to\アリさん.TXT)

ss2 この文字列に入ってるデータ → c:\kirigirisu\to\アリさん.TXT

fp2=fopen(ss2,"r"); ← ここでファイルを読みたいんですが 「\\」

c:\\kirigirisu\\to\\アリさん.TXT
このようでないのでファイルを開けなんです

そのために、ss2[]="c:\kirigirisu\to\アリさん.TXT" から
ss3[]="c:\\kirigirisu\\to\\アリさん.TXT" にする方法はありませんか?
というのがお聞きしたかった質問です。
288デフォルトの名無しさん:05/03/09 23:36:48
だから、
c:/kirigirisu/to/アリさん.TXT
でええやんか
289デフォルトの名無しさん:05/03/09 23:38:47
>>285
いった?
290デフォルトの名無しさん:05/03/09 23:39:06
ええ、ファイル検索から取得したデータが
c:\kirigirisu\to\アリさん.TXT ← これなので

c:\kirigirisu\to\アリさん.TXT ← これから
c:/kirigirisu/to/アリさん.TXT ← これに変換しなければならないのですが

どうすれば良いのでしょうか?
291デフォルトの名無しさん:05/03/09 23:39:34
んなアホな。

"\"を"\\"にするのは、ソース内で文字定数で書く時だけだぞ。
292デフォルトの名無しさん:05/03/09 23:39:35
当方C初めて1週間の初心者でして物凄く初歩的な質問で申し訳ないですが
入力された文字を昇順に並び替える方法探してまして
if、while、for、printf scanfのみで作るのって無理でしょうか・・?
#include <stdio.h>
int main(void)
{
char in_str[81];
char re_str[81];
int i,j,k;
int num[80];
printf("Input string : ");
scanf("%80s",in_str);
for(i=0;in_str[i] != '\0';i++)
{}
for(j=0;j<i;j++)
{
num[j]=0;
for(k=0;k<i;k++)
{
if(in_str[j] > in_str[k])
{
num[j]++;
}
}
re_str[num[j]] = in_str[j];
}
re_str[i] = '\0';
printf("Sort string : %s\n",re_str);
}
でとりあえず作ってみてダメなんですが、テンパってます、情けないorz
293デフォルトの名無しさん:05/03/09 23:41:12

\を\\にしたいのか、\を/にしたいのかどっちなんだよ
294デフォルトの名無しさん:05/03/09 23:43:17
>>291
ええ、そう言えばそうですね
でも、詳しく言うと
c:\kirigirisu\to\アリさん.TXTを書き込んだTXTを
読み込むのは別のソフトで

c:\\kirigirisu\\to\\アリさん.TXTこのようにTXTに書かなければ
読んでくれないんです。

>>293
\ を\\で お願いします
295デフォルトの名無しさん:05/03/09 23:44:08
>>292
入力された文字列のそれぞれの文字をただの数字と見て
適当なソートアルゴリズム使えば簡単にできるよ。
296デフォルトの名無しさん:05/03/09 23:48:25
ちなみに文字数は
int i,num_str=0;
while(in_str[i] != '\n'){
num_str++;
i++;
}
見たいな感じで取得できるかと。
297デフォルトの名無しさん:05/03/09 23:50:40
> 11:40:29 PM: void_No2: callocの第1引数と第2引数をとりかえて呼び出すと、実際なにが変わりますか?
298デフォルトの名無しさん:05/03/09 23:53:07
scanfつかうなよ ぼけ
299デフォルトの名無しさん:05/03/09 23:53:54
>>294
1文字づつ ttp://www.hidecnet.ne.jp/~sinzan/tips/c/c_tip10.htm などで調べて
1バイト文字 かつ \ の場合は \\ を書いて、2バイト文字の場合は適切に
書き出してやればええんちゃうん?シフトJISの場合なら。
300278:05/03/09 23:57:27
>>289
写生しました
301デフォルトの名無しさん:05/03/09 23:57:58
>>298
なぜ使うべきでないのか,わかってんのか?
俺は安全に使えるときにはガンガン使うぜ
安全に使えない(あるいは知らない)なら,使わないべきだけどな

main しかないような,おもちゃプログラムなら scanf で引数確認すりゃ,大丈夫だろ
302デフォルトの名無しさん:05/03/09 23:58:50
WindowsXPで開発をしたいのですが、
フリーのコンパイラーとエディタを紹介して頂けないでしょうか?
やはり、Linuxのように、gccとXEmacsがいいのでしょうか?
303デフォルトの名無しさん:05/03/09 23:59:53
>>302
>3 見ろ
開発って何がしたいんだ?
304デフォルトの名無しさん:05/03/10 00:00:35
>>294

Cに文字列置き換え標準関数は用意無いから、
一文字ずつ取り出して、'\'なら"\\"に変換するしか無いでしょ。

MBCSだと、2バイト目に"\"がある場合があるから、
マルチバイト対応で取り出す必要がある。
305デフォルトの名無しさん:05/03/10 00:01:23
用意無いから→用意されて無いから
306デフォルトの名無しさん:05/03/10 00:02:15
> 俺は安全に使えるときにはガンガン使うぜ

ようするにおまえばぼけ
307デフォルトの名無しさん:05/03/10 00:02:41
> 一文字ずつ取り出して、'\'なら"\\"に変換するしか無いでしょ。

っていうか、最初から/にしときゃいいじゃん
308デフォルトの名無しさん:05/03/10 00:03:00
Google+フリー+コンパイラ OR エディタ
309デフォルトの名無しさん:05/03/10 00:03:29
>>301
しょうがないよ実験器具と一般製品の区別がつかないアフォの弟子だろW
310デフォルトの名無しさん:05/03/10 00:03:33
>>302
巻末付録に書いてあるからそこを読め
311デフォルトの名無しさん:05/03/10 00:05:45
> main しかないような,おもちゃプログラムなら scanf で引数確認すりゃ,大丈夫だろ

そんなぼけたこといってるから みんなにぼけっていわれるんだよ ぼけ
312デフォルトの名無しさん:05/03/10 00:07:14
fgen は有毒ガスが出て危ないから絶対に使用禁止とか言ってるのと同じ
313デフォルトの名無しさん:05/03/10 00:10:24
>>311
使用を禁止しても意味がない。
関数の提供を禁止しろ。
314デフォルトの名無しさん:05/03/10 00:11:08
そのうち 100V の供給も禁止すべきとか言い出すぞw
315デフォルトの名無しさん:05/03/10 00:11:56
>>303
ありがとうございます。
やりたい事は、学校の宿題の補助的な作業です。
基本事項の復習などを、家で空いた時間を使ってやってみたりしたいんです。
316デフォルトの名無しさん:05/03/10 00:16:14
> fgen は有毒ガスが出て危ないから

そんなものはない
317デフォルトの名無しさん:05/03/10 00:17:39
だったらまずWindowsXPをフォーマットして消し、
全部のパーティションを、LinuxかFreeBSDかNetBSDかOpenBSDかPlan9用にしろ。
それでOK
318デフォルトの名無しさん:05/03/10 00:18:44
>>316
あんたが知らないだけ
319ぼけ:05/03/10 00:19:48
>>306
分かった,俺はぼけなんだな。
それは認めてやるから,質問に答えろよ

>>309
おもちゃプログラムとそうでないプログラムとは区別つく
とりあえず >>292 はおもちゃ程度だと思うけど
一般製品レベルなのか?
あと,独学だから誰の弟子でもない
>>309 は詳しいのか?だったら教えをこいたい

>>311
ぼけたこといってるのはは分かった。
どこがぼけた事なのか訊きたい

確かに scanf は危ないけど,規格で仕様がはっきりしているから
正しく使っている限りくだらないバグは出ないはず
コードは書くとバグが出るからな

もしかして正しい使い方そのものがないとか言ってるのか?

>>312
意味府。ゴメ
320デフォルトの名無しさん:05/03/10 00:21:25
>規格で仕様がはっきりしているから
>正しく使っている限りくだらないバグは出ないはず

それだけだな
321デフォルトの名無しさん:05/03/10 00:23:13
あのすばらしい20代をもう一度
322デフォルトの名無しさん:05/03/10 00:24:16
> 正しく使っている限りくだらないバグは出ないはず

なんてまぬけなことを言ってるやつは、じぶんでは自覚ないんだろうなあ ぼけだから
323デフォルトの名無しさん:05/03/10 00:24:36
構造体をポインタではなく値で関数から返すことってできますか?
324デフォルトの名無しさん:05/03/10 00:26:30
>>323
やってみろ。できるだろ
325デフォルトの名無しさん:05/03/10 00:33:05
>>323
struct *** func(-----)
{

retrun (構造体変数名);
}
でいける
326デフォルトの名無しさん:05/03/10 00:37:06
>>324-325
できました
しかしこれを使っているコードをdiv()とか以外にみかけた
ことが無いのですが、何か落とし穴とかあるんですか?
327デフォルトの名無しさん:05/03/10 00:37:48
>>317
自宅のPCは、プログラミング以外にも、
日常用として使っているのでそれは出来ません。
328デフォルトの名無しさん:05/03/10 00:39:08
>>326
構造体のサイズがでかくなるとスタックを圧迫する可能性がある
コピーに時間がかかる
ポインタを渡せば,サイズが小さくてすむことが多い
329デフォルトの名無しさん:05/03/10 00:40:50
>>322
ストレートの罵倒語しか言うことねえのかよw
330デフォルトの名無しさん:05/03/10 00:41:23
>>326
めんどくさいからじゃないか?構造体を返す関数を作成するより、ポインタを用いたほうが
ずっと柔軟だし。それに、自己参照構造体とか使うにもポインタだし。
331デフォルトの名無しさん:05/03/10 00:46:21
>>330
どうめんどくさいのか説明汁
332デフォルトの名無しさん:05/03/10 00:52:16
>>320
だったら正しく使えばいいじゃないか
333名前は開発中のものです。:05/03/10 00:54:52
実行ファイルの引数が空白を含めたファイル名の場合に

部分を一つの文字列としてmain関数の引数として取得できるようにするには、
どうすればいいでしょうか?

moge.exe c:\hogehoge kkok\hoge.txt
と実行

void main( int argc , char** argv )
{
//c:\hogehoge kkok\hoge.txtと表示したい
printf(argv[1]);
}

334デフォルトの名無しさん:05/03/10 00:59:40
>>331
そういわれてみれば説明できないなw
いつも構造体いじるときはポインタ使ってるけど、別に、構造体返す関数とポインタ併用すれば
多変数を一度に処理できるわけだし。
構造体返す関数を用いたほうが良いのか悪いのか・・・・
教えてエロイ人
335デフォルトの名無しさん:05/03/10 01:05:28
スレの浪費が加速されていく・・・春だね
336デフォルトの名無しさん:05/03/10 01:09:25
moge.exe "c:\hogehoge kkok\hoge.txt"
337デフォルトの名無しさん:05/03/10 01:27:17
>>334
適材適所。
メンバの少ない構造体なら値を返すので充分だろ。

>>333
プログラム側ではなく、コマンドインタプリタ側で対策汁。
""で囲めば何とかなるべ。
338デフォルトの名無しさん:05/03/10 01:47:41
昔、どうやったらscanfを正しく使えるか、fjで延々と議論されてたことがあったな。
途中で疲れて読むのやめちゃったけど:>
339デフォルトの名無しさん:05/03/10 02:38:24
int n;
scanf("%d", &n);
に字を入れると、なにやら、暴走。

char str[3];
scanf("%s", str);
に hagehagehagehagehagehagehage...
を、入れると、全部入るけど、
たぶん、なにかが壊れている。


使う人が、安全な人でないと、
安全に使うのは不可能。
340デフォルトの名無しさん:05/03/10 02:52:31
scanf("%3s", str);
341デフォルトの名無しさん:05/03/10 02:54:15
>>340
2じゃないの?
342デフォルトの名無しさん:05/03/10 03:30:15
ホントだ
眠いし、適当に書いた
343デフォルトの名無しさん:05/03/10 04:14:17
scanf なんか使う奴はばかです。
344デフォルトの名無しさん:05/03/10 04:20:59
>>343
理由を聞かせてもらおうか
345デフォルトの名無しさん:05/03/10 07:43:41
> 構造体のサイズがでかくなるとスタックを圧迫する可能性がある

ああ、これはでま。
構造体そのものを引数で渡したり、戻り値に構造体(ポインターではなく)そのものを
使うってのが、せっかくC89で追加されたのに、あまり使われないのは
別に理由があります。(まともなひとなら知ってる)
346デフォルトの名無しさん:05/03/10 07:45:25
scanf使うのはぼけだ っていわれて

> 理由を聞かせてもらおうか

なんて言うやつはかなりのぼけ
347デフォルトの名無しさん:05/03/10 09:27:30
>>343=>>346
理由が言えないも前の方がぼけだろw
348ぼけ:05/03/10 10:17:50
おっ朝になってまともな議論になってきてるな

>>338
情報thx
疲れるくらいディープなんですね。だから scanf 禁止を唱える椰子が出てくる。
これは想像通りでした
でも,簡単に安全に使える場合もあるからその時に使えばいいと思う

>>339
>int n;
>scanf("%d", &n);
>に字を入れると、なにやら、暴走。
戻り値を確認汁
EOF なら終了。 < 1 ならバッファを空にするコードを書けばいい
その際 rewind とか fflush とか fseek を stdin に使ってはいけない

>char str[3];
>scanf("%s", str);
バッファオーバーランしない書き方がある。
>>341 の言うとおり

>>347
俺もそう思う
理由が言えない椰子と目的語が無い椰子は放置汁
349デフォルトの名無しさん:05/03/10 10:23:31
見ても分かるように、>>343,>>347のような奴はすぐ遁走するからナ。
一回だけ相手するのは別に問題ないだろうよ。
350デフォルトの名無しさん:05/03/10 10:24:24
s/>>347/>>346
スマソ
351328:05/03/10 10:32:38
>>345
デマ?マジですか?
まともな>>345さん,構造体の値渡しがあまり使われない理由おしえてください!!

つか >>345==>>346 だとしたら,答え(られ)ないだろうなw
352デフォルトの名無しさん:05/03/10 10:57:45
>>351
今ちょっと試したら、呼び出し元でスタックから構造体のスペースを確保してそのポインタを渡していた。
呼び出し元ではどっちみち必要になるスペースだから事実上ポインタ渡しと変わらないコードだったよ。
従って、構造体を返してもスタックを消費するとは限らないということだね。
353343:05/03/10 12:51:46
>>347
bad know-how 駆使してまで scanf を使いたがるのは
ばかでしょ。
それと、私は >>346 ではありません。間抜けですね。
354デフォルトの名無しさん:05/03/10 13:59:17
好き好んでscanfは使わんが、それを馬鹿呼ばわりはしないな
355デフォルトの名無しさん:05/03/10 14:04:25
同意、関数は悪くない、使うやつが馬鹿なだけ。
使い捨てツールなんぞにバンバン使ってる。
356デフォルトの名無しさん:05/03/10 16:56:39
scan formated
357デフォルトの名無しさん:05/03/10 17:06:49
scanf()論争を見る度に、論争自体の無意味さを感じる。
358デフォルトの名無しさん:05/03/10 17:36:21
formated ってなに?
359デフォルトの名無しさん:05/03/10 17:45:41
stdioとか、テレタイプの時代考えろばか者
槍鉋使えないやつが多すぎ
360デフォルトの名無しさん:05/03/10 18:36:53
>>357
まったくそのとおり
実験器具に幼児レベルの安全性を求める
思いこみの激しいプロ市民が後を絶たない

内容的にはまったく馬鹿げていて取るに足らないが
どんな嘘でも大きい声で叫び続ければ真実を駆逐する
事実、ISO/IEC9899 にさえいくつかの傷がある
これは個人的な問題では片づかない社会悪で、
どんなにくだらなくても抵抗はせざるを得ない
361デフォルトの名無しさん:05/03/10 19:18:33
テキストファイルを更新セーブモードで開いて、
そのファイルの3行目に文字を出力する方法を教えてください。
fseekはバイト数ですし、fgetsを3回呼び出した後に書き込みをやって
みたんですが、出力されていませんでした。エラーは出ていませんでした。
362デフォルトの名無しさん:05/03/10 19:34:43
>>361
全部読み込んで全部書け
363361:05/03/10 19:37:58
>>362
ありがとうございます。
fseek(fp, ftell(fp), SEEK_SET); で出来ました。なんでだろう・・。
364デフォルトの名無しさん:05/03/10 19:38:57
>>361
ただし、読み出しと書き込みを切り替えるときは、その前に
fsetpos、fseek、rewind のいずれかの関数を実行する必要があります。

だって
365361:05/03/10 19:47:30
>>364
分かりました。ありがとうございました。
366デフォルトの名無しさん:05/03/10 22:36:50
入力された数値の最下位ビットをchar型の変数に'0'か'1'の文字として格納し、
表示させるプログラムを作りたいのですが、
以下のプログラムでは適切に表示されません。
どこを修正すればよいのでしょうか??


#include <stdio.h>

int main(void)
{
int number;
char box;

fprintf(stdout,"Input Number : ");
scanf("%d",&number);

box = (number & 1);
fprintf(stdout,"\nLast bit is : %c\n",box);

return 0;
}
367デフォルトの名無しさん:05/03/10 22:41:33
ツマンナイ
368デフォルトの名無しさん:05/03/10 22:44:05
>>366
box = '0' + (number & 1);
数値の0と1,文字の'0'と'1',それぞれ全くの別物。
369デフォルトの名無しさん:05/03/10 22:44:35
>>366
なんでprintf使わないの?
370366:05/03/10 23:25:39
>>368
どうもありがとうございます。
助かりました。

>>369
使うことになっているのです。
371デフォルトの名無しさん:05/03/10 23:58:36
> 実験器具に幼児レベルの安全性を求める

このぼけ、scanfをつかうべきじゃない理由を「きけんだだか」だとでも思ってるらしい...
...だめすぎ。
372デフォルトの名無しさん:05/03/11 00:02:01
きけんだだか
373デフォルトの名無しさん:05/03/11 00:04:38
たしかに。つかうべきじゃない理由は「危険だから」ではないね。
たいした危険もないんだし。
そもそも、つかうべきでない理由をわからないっていう時点で、
使っているやつはだめだめだと思うが。
374デフォルトの名無しさん:05/03/11 00:10:19
結局、ウニックスとCの係わり合いを知ればなるほど
と思えるんだろうに、マンモス悲しい
375デフォルトの名無しさん:05/03/11 01:14:05
結局誰も知らないんですね。
376デフォルトの名無しさん:05/03/11 01:40:24
>>375
自分が無知なのに人を批判する資格ないよ。アンタ。
377デフォルトの名無しさん:05/03/11 01:53:47
仕様(バグや癖を含めて)を分かってて使う分には問題ないだろ。
何も考えずに使う香具師が多すぎるから「使うな」と言っとけば楽なだけ。
378デフォルトの名無しさん:05/03/11 01:56:04
>>377
で?
379デフォルトの名無しさん:05/03/11 01:56:07
> 何も考えずに使う香具師が多すぎるから
少くとも俺の周りではscanfを使う奴はいないのだが、そんなにいっぱいいるのか?
380デフォルトの名無しさん:05/03/11 02:04:19
宿題スレには大量にいる
381デフォルトの名無しさん:05/03/11 02:06:27
宿題なら別に問題ないだろう。
382デフォルトの名無しさん:05/03/11 02:07:50
383デフォルトの名無しさん:05/03/11 02:36:50
scanf は喪前らが思考停止せず、Cについて深く考えるために
C&R がわざと疑問を感じる仕様にして遺してくれた教材と思え。

そのおかげでVB厨やJava厨のよりも優秀になれただろ?
384デフォルトの名無しさん:05/03/11 03:12:17
はぁ?
385デフォルトの名無しさん:05/03/11 03:47:23
>>381
確かに、宿題ならOK。
ただ、大学とかでその先を教えないから、宿題以外でも使い出す。
数値を読むときはscanfを使うもんだ、って思い込んで
(実際、周りに結構居るし)
386デフォルトの名無しさん:05/03/11 06:12:09
数値を読むときはsscanfを使うもんだ
387デフォルトの名無しさん:05/03/11 07:49:33
> 仕様(バグや癖を含めて)を分かってて使う分には問題ないだろ。

いいや。使っちゃだめ。
388デフォルトの名無しさん:05/03/11 07:50:25
何で?
389デフォルトの名無しさん:05/03/11 07:50:38
おいしいよね > 数値化

# Kusakabe先生ちで食べたのは、うまかったけど塩が強すぎると思った。
390デフォルトの名無しさん:05/03/11 07:51:35
>>388
おしえない。
391デフォルトの名無しさん:05/03/11 07:52:51
「こんなところでgotoつかうなよ ぼけ」
「なんで?」
「おしえない」
と同じだな。

つまり「理由」は説明するものではなく、本人が心から理解できないと意味がないってことだ。
392デフォルトの名無しさん:05/03/11 08:11:50
>>390
分からない、だろ(プゲラ
393デフォルトの名無しさん:05/03/11 08:14:49
> 分からない、だろ(プゲラ

こういうまぬけなセリフは、教えてもらえなくて、かつ理解もできないやつがまけおしみでよく使う。
394デフォルトの名無しさん:05/03/11 08:37:19
闇雲にgoto使うなとか言う奴はアマチュア
395デフォルトの名無しさん:05/03/11 08:43:17
> 闇雲にgoto使うなとか言う奴はアマチュア

いや、実際gotoをつかったほうがいい場面なんてのはかなり少ないので、
どうせよくわかっていない君らが使いたくなる場面なんてのは、
まずまちがいなく「使うのはぼけ」な場面だろうな。
396デフォルトの名無しさん:05/03/11 08:44:43
>>390はもう遁走か?
397デフォルトの名無しさん:05/03/11 08:50:22
>>395
お前はアマチュア
398デフォルトの名無しさん:05/03/11 09:15:13
アマチュアというより脳内Cプログラマだろう
399デフォルトの名無しさん:05/03/11 10:13:58
ああ。gotoをつかったほうがいいような仕様が欲しい
400デフォルトの名無しさん:05/03/11 10:20:33
>>399

多重ループ抜け出しに余計なフラグ操作やってる口?
401デフォルトの名無しさん:05/03/11 10:43:05
>>400
あまりに定型的な突っ込みで笑ってしまったよ。
そういう場合は関数分けして単なるbreakで済む様に書くから問題無し
本当に実行効率に厳しいときは素直にgotoつかうさ
402デフォルトの名無しさん:05/03/11 10:46:31
プ。
駄目だこいつ。
403デフォルトの名無しさん:05/03/11 12:32:25
>>401
実行効率は関係ないだろ
404デフォルトの名無しさん:05/03/11 12:53:12
当店の人気メニュー

  1位・goto
  2位・exit前のfree
  3位・scanf
405デフォルトの名無しさん:05/03/11 12:56:26
goto十人前で
406デフォルトの名無しさん:05/03/11 12:58:46
gotoを嫌うあまり、かえって保守性の悪いコードにしてしまう、
これを、木を見て森を見ずと言います。
407デフォルトの名無しさん:05/03/11 13:06:56
うちの大学ではgotoの使い方も習った
効果的に使えばずっと見やすいコードになる場合もあるから、一応使い方は知っておけ、と

次の週はやたらとgotoを使う奴がが多すぎてgoto禁止になった
408デフォルトの名無しさん:05/03/11 13:07:16
exitの前にfreeするとなにが悪いのでしょうか?
409デフォルトの名無しさん:05/03/11 13:09:23
>>408
今はgotoの話してんだよ
空気嫁や
410デフォルトの名無しさん:05/03/11 13:15:28
>>407
馬鹿に合わせる大学か・・・
411デフォルトの名無しさん:05/03/11 13:25:59
そりゃうちは馬鹿大学だったからな
俺らレベルに合わせてくれないと半分以上が卒業できないもん
412デフォルトの名無しさん:05/03/11 13:28:21
都の西北早稲田のとなり か。
413デフォルトの名無しさん:05/03/11 17:20:55
'a'は文字定数でint型。
でも
char c = 'a'
は、よく見かける。

混乱してます。
この辺りのことを綺麗にまとめてあるHPはありませんか?
414デフォルトの名無しさん:05/03/11 18:02:34
誰だ?'a'はint型だなんていったのは?
そいつを呼んで来い
415デフォルトの名無しさん:05/03/11 18:06:21
>>414はスルーでよろしこ
416デフォルトの名無しさん:05/03/11 18:15:29
C++と同じだと思ってた...orz
417デフォルトの名無しさん:05/03/11 18:19:52
さすが厨房隔離スレ
低レベルの巣窟だな
418デフォルトの名無しさん:05/03/11 20:26:33
素数表でも作ってみたら? >goto

while(scanf(...) == 1)
{
//...
}

こういう判定すら goto を無理に回避しようとしている
ひねくれたコードだってことを説明できる人はいなさそうだなw
419デフォルトの名無しさん:05/03/11 20:53:58
>>413
stdioはintにキャストするみたいだ。

int fgetc(FILE *stream);
fgetc() reads the next character from stream and returns
it as an unsigned char cast to an int, or EOF on end of
file or error.

int fputc(int c, FILE *stream);
fputc() writes the character c, cast to an unsigned char,
to stream.

EOFだけ符号拡張されて最上位ビットが立つ、のかな?

>>418
switch文もラベルをつかうので、
その点で、goto文の同類、のような。
420デフォルトの名無しさん:05/03/11 21:00:02
それを言うなら
do{
...
if(...) break;
...
}while( 0 );
421デフォルトの名無しさん:05/03/11 21:07:05
>>420
詳細説明を省くと安っぽい玉虫色だ
422デフォルトの名無しさん:05/03/11 22:14:22
俺こんなん使いまくってるよ
無理矢理forやwhileの仕様に合わせて条件文変形させるより
ずっとわかりやすいじゃん
gotoを悪いとか言ってる奴はfj出身のCオタクだけ!
Lispみたいに用途に合わせて制御構造作れたらいいのにねえ

for (;;) {
 hoge;
 if (fuga) {
  goto Owari;
 }
}
Owari:
423デフォルトの名無しさん:05/03/11 22:45:31
>>422
そのケースはbreakでいいと思うのだけど?
424デフォルトの名無しさん:05/03/11 22:50:23
>   1位・goto
>   2位・exit前のfree
>   3位・scanf

順位がまるっきり逆だと思うが
425デフォルトの名無しさん:05/03/11 22:51:21
> EOFだけ符号拡張されて最上位ビットが立つ、のかな?

ぼけ。
'a'や'b'はcharに入れても情報が失われないってだけだろ。
charだって整数型だよ
426デフォルトの名無しさん:05/03/11 23:07:41
>>422
肝心なポイントをクランク状によけてるなw
427デフォルトの名無しさん:05/03/11 23:27:20
for (; hoge, fuga;) {
}
のほうがよっぽどすなおだが ;-)
428デフォルトの名無しさん:05/03/12 00:09:15
かすりもしてねえ
つーか投げやりだろ
おまえ
429デフォルトの名無しさん:05/03/12 00:12:54
わかってねえなら
かかわってくるな
めいわくだ
430デフォルトの名無しさん:05/03/12 00:15:17
まぁまぁおまえら・・・
すなおにわからない所を書けばいいだろ
おとなになれや
431デフォルトの名無しさん:05/03/12 00:15:29
さっそく噛み付いてきやがった
ざこまるだしだな
ええ加減にしとけよ
432デフォルトの名無しさん:05/03/12 00:18:09
>>422
gotoを頻繁に使うやつは初心者。
開発者としては失格の烙印だね。
ループが2個以上の深い入れ子の場合に限って有用であり、
それ以外はわかりにくくて見る側に喧嘩を売ってるしかいいようがないね。
433デフォルトの名無しさん:05/03/12 00:19:11
gcc で↓をコンパイルしたら
最後の2つが1になるのは環境依存ですか?

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

int
main(void)
{
char *p = "%d\n";

printf(p, sizeof(main()));
printf(p, sizeof(NULL));
printf(p, sizeof(time(NULL)));
printf(p, sizeof(void));
printf(p, sizeof(srand(time(NULL))));
return 0;
}

434デフォルトの名無しさん:05/03/12 00:21:06
>>432
深い入れ子にしなくて済むようにgoto使っとけ。
435デフォルトの名無しさん:05/03/12 00:23:17

          ┌┬┬┬┐
    ―――┴┴┴┴┴―――――、
   /.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||     __________
  /.    ∧// ∧ ∧| ||      |||   ||  /
 [/____(゚_//[ ].゚Д゚,,) ||___|||   || <  >>432を迎えに来ました
 ||_. *  _|_| ̄ ̄ ∪|.|.       |ヽ. _||  \__________
 lO|o―o|O゜.|二http://pc5.2ch.net/test/read.cgi/tech/1108989422/
 | ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'
436デフォルトの名無しさん:05/03/12 00:23:36
なってあたりまえだろ?
437デフォルトの名無しさん:05/03/12 00:25:25
おい、pをどこかで使えよ。
きになってきになって今夜ねられねーだろ!
438デフォルトの名無しさん:05/03/12 00:25:40
そうなの?
sizeof(char)が1で、sizeof(void)も1?
439デフォルトの名無しさん:05/03/12 00:26:09
>>437
printf(p, sizeof(main()));
^
440デフォルトの名無しさん:05/03/12 00:26:10
sizeof(void)
はgccの拡張だったと思う。
441デフォルトの名無しさん:05/03/12 00:26:15
>>438
あたりまえだろ!
おまえCの基本的な文法さえしらんのか。
442デフォルトの名無しさん:05/03/12 00:27:40
>>439
ちょとワロタ
443433:05/03/12 00:27:46
>>440>>441で混乱しています
どっちなんでしょ
444デフォルトの名無しさん:05/03/12 00:29:00
おれが言うほうがあってるに決まってるだろ! ぼけ
445デフォルトの名無しさん:05/03/12 00:30:34
いいや、おれのほうが正しい。おまえのほうがまぬけだ!
446デフォルトの名無しさん:05/03/12 00:33:59
c:\home\c-training\naitei\hint.c(13) : warning C4034: sizeof 演算子がサイズが 0 となったオペランドに適用されました。
c:\home\c-training\naitei\hint.c(15) : warning C4034: sizeof 演算子がサイズが 0 となったオペランドに適用されました。

ということで>>440ですね
447413:05/03/12 02:19:55
413でございます。
代入演算子の事がちゃんと理解できていなかった故の混乱でした。
お手数おかけしました。
448デフォルトの名無しさん:05/03/12 07:15:54
NULLって絶対0って保障されてるんですか?
449デフォルトの名無しさん:05/03/12 07:43:15
>>448
値が0なのは保証されている。
型はintだったりlongだったりvoid *だったりいろいろだけど。

http://www.kouno.jp/home/c_faq/c5.html#4
450デフォルトの名無しさん:05/03/12 07:58:48
>>444-445
X 3010:2003
6.2.5
(略)
void型の値の集合は空とする。それは,完全にすることのできない不完全型とする。
(略)

6.5.3.4 sizeof演算子
制約 sizeof演算子は,関数型若しくは不完全型をもつ式,それらの型の名前を括弧で囲んだもの,
又はビットフィールドメンバを指し示す式に対して適用してはならない。
(略)

ということで>>446ですね
451デフォルトの名無しさん:05/03/12 08:09:34
>>449
そうすっか!安心しました!
ただ、紹介していただいたURLはリンク切れ(?)だったみたいなんで、
また今度行ってみますね! ありがとございました!
452デフォルトの名無しさん:05/03/12 11:35:04
そんなものはない > NULLって絶対0って保障されてるんですか?
453デフォルトの名無しさん:05/03/12 11:35:44
だーかーらー、NULLが0なんじゃなくって0がNULLなんです。,,,ってのはKusakabe先生の有名な解説。
454デフォルトの名無しさん:05/03/12 11:37:30
> 型はintだったりlongだったりvoid *だったりいろいろだけど。

これはうそ
455デフォルトの名無しさん:05/03/12 11:51:03
逆斜線を全角で打ってるようなトンマがよく言うぜw
456デフォルトの名無しさん:05/03/12 11:51:30
> 値が0なのは保証されている。

これは大うそ。ナルポインターの値は0ではない。
0と書いたら、ポインターに代入などされるときに、適切なナルの値に変換されるだけだ。
457デフォルトの名無しさん:05/03/12 12:07:26
値とメモリイメージを混同しているヴァカがいるづら・・・
458デフォルトの名無しさん:05/03/12 12:10:35
メモリーイメージがすなわち値。
そんなこともわからないのかこのボケは。
459デフォルトの名無しさん:05/03/12 12:12:14
つまり、char *型の値で0x0001が入っていて、
それを--して0x000という「値」になったとしても、
それはナルポインターの値と等しい保証はない。
460デフォルトの名無しさん:05/03/12 12:14:15
>メモリーイメージがすなわち値。
真性だな、こいつw
461デフォルトの名無しさん:05/03/12 12:14:46
460は厨房すぎ
462デフォルトの名無しさん:05/03/12 12:15:22
とりあえずsageぬるぽ
463デフォルトの名無しさん:05/03/12 12:17:04
メモリーイメージってことばさえ理解できなかったから、
「NULLの値は0」だなんていえるんだろうなあ まったくぼけなやつだ
464デフォルトの名無しさん:05/03/12 12:18:03
0 == -0 とでも思いこんでるんだろ
465デフォルトの名無しさん:05/03/12 12:24:18
-0のビットパターンをもつ環境では、それは「0とは等しくない」わけだから
やはりNULLは0と「値」はちがうだろ ぼけ
466デフォルトの名無しさん:05/03/12 12:25:44
>>448
保証されていない。
467デフォルトの名無しさん:05/03/12 12:30:32
ビットパーターンが異なってても、等しければいいんじゃないの?
468デフォルトの名無しさん:05/03/12 12:33:46
根拠と結論が脈絡してねえなw
469デフォルトの名無しさん:05/03/12 12:45:11
>>449みたいな厨房が最初に答えるからいけないんだよ
470デフォルトの名無しさん:05/03/12 13:02:14
いいえ。「==」演算子には、ビットパターンが異なるものを「ひとしい」と判断する機能はないです。
471デフォルトの名無しさん:05/03/12 13:03:05
> 逆斜線を全角で打ってるようなトンマがよく言うぜw

「全角」とかいってる時点で厨房だな。こいつ。だめすぎ
472デフォルトの名無しさん:05/03/12 13:04:54
関数の引数の場合は、プロトタイプがなかったり、可変個数の「...」の部分の引数だったり
した場合は、NULLをキャストする意味はありますが、

代入でもナルポインターをキャストする意味がある場面があると聞きました。
どういう場面でしょうか?
ここはCの知識のレベルが高いとききました。まさかこたえらる人がいないってことはないですよね?
473デフォルトの名無しさん:05/03/12 13:11:41
>>470
そんなことはない。
474デフォルトの名無しさん:05/03/12 13:15:20
質問です、キーを一回押すメッセージを他窓に送るにはどうしたらいいですか?
PostMessage(hWnd, WM_KEYDOWN, 0x41, ?????);
PostMessage(hWnd, WM_KEYUP, 0x41, ?????);
ここまではわかってるのですが、最後の引数の書き方が良くわかりません
475デフォルトの名無しさん:05/03/12 13:15:39
>>472
代入ではキャストする意味のある場面は無い。
人がソースコードを見たときの為に,と言う意味はもしかしたらあるのかもしれないが。
476デフォルトの名無しさん:05/03/12 13:18:17
>>474
0にしてしまえ。でも本当はスレ違い。Win32APIスレ行け。
477デフォルトの名無しさん:05/03/12 13:23:45
>>473
いや、そんなことはない。==はビットパターンを比べるだけ。
0をナルのビットパターンにするのは別の人のおしごと
478デフォルトの名無しさん:05/03/12 13:24:20
> 代入ではキャストする意味のある場面は無い。

ふふ。その程度の知識なのですね。
479デフォルトの名無しさん:05/03/12 13:26:18
       ___r'⌒ヽ_
     /  l、__,/}::\
     (T´ | ゝ_ィ>};;_.」   もうすぐこんな世の中になるかもしれない
       ! `''ァ、. \__}  http://gazo01.chbox.jp/misc/src/1110504805506.jpg
     〈`^`¬ノ . :〔    
 ,... -- |__イ-、_j|_: . ヽ、--.,,__
´     rニト,  フ ,ゝ__ 〉   `
    └-'´  '.-”

みんなもメールを自民党、官邸、法務省などに送るんだ!!
1つのメールや電話で世の中は変るぞ!!

【人権擁護法案】「朝鮮総連関係者も選任されるのか」自民、審議大荒れ★2[03/11]
http://news18.2ch.net/test/read.cgi/news4plus/1110531032/l50
480デフォルトの名無しさん:05/03/12 13:28:25
ナルポインターと
ナル文字と
空文字列の違いをおしえてください。

うちの環境では、
char *p = NULL;
char c = '\0';
char *s = "";

printf("%d\n", p);
printf("%d\n", c);
printf("%d\n", *s);
どれも0ってでましたー
481デフォルトの名無しさん:05/03/12 13:29:21
>>477
> 0をナルのビットパターンにするのは別の人のおしごと
当然。
そのことと==の動作に関しては別の問題。
482デフォルトの名無しさん:05/03/12 13:30:56
で、== はビットパターン(つまり値)の比較しかしない
483デフォルトの名無しさん:05/03/12 13:35:06
で、ビットパターンが異なる値を比較した時に「異なる」と判断するとは限らない。
484デフォルトの名無しさん:05/03/12 13:36:19
いいや、異なる場合は0になる。Cの基本
485デフォルトの名無しさん:05/03/12 13:54:04
>>480
ナルポインター:どこも指していないポインター。
ナル文字:Cでの文字列の終端を意味する文字。
空文字列:文字数0、つまり1文字目がいきなりナル文字の文字列。
486デフォルトの名無しさん:05/03/12 14:01:46
ヌルのことナルとか言うな。素人臭くて恥かしい。
487デフォルトの名無しさん:05/03/12 14:05:17
ヌル派の人も、ドッペルプンクトと言って通じないじゃない。
488デフォルトの名無しさん:05/03/12 14:08:22
int a=1;
float b=1.0;

if(a==b) puts("aとbのビットパターンは同じか?");
489デフォルトの名無しさん:05/03/12 14:09:06
ヌルってちょっとエロいですね。
490デフォルトの名無しさん:05/03/12 14:10:25
ぬるぽ
491デフォルトの名無しさん:05/03/12 14:15:23
>>488
それはaが暗黙のうちにfloatへキャストされていると考えろ。
492デフォルトの名無しさん:05/03/12 14:21:09
>>491
ほほぉ。floatへねぇ。
493デフォルトの名無しさん:05/03/12 14:42:37
>>492
通常算術型変換だからdoubleにはならないと思うが。
494デフォルトの名無しさん:05/03/12 15:39:18
>>491
暗黙のキャストなんて無い
単なる型変換だ
規格書嫁
495デフォルトの名無しさん:05/03/12 15:49:48
>>484
あんたの脳内規格をCの基本と言われても、こっちにはその規格票がないよw
496デフォルトの名無しさん:05/03/12 15:50:32
>>475
float aho;
aho = 3 / 2;
497デフォルトの名無しさん:05/03/12 15:50:53
>>494
スマソ

そうか、キャストはキャスト演算子を使うときだけを言うのか。
498デフォルトの名無しさん:05/03/12 15:52:09
>>496
それとNULLポインタとどう関係する?
499デフォルトの名無しさん:05/03/12 15:53:54
またはじまた、お互いの脳内仮定がずれてんだよね。
冷静になれよ ( ´,_ゝ`)プッ
500デフォルトの名無しさん:05/03/12 16:03:40
>>498
472 は空ポインタについて質問した
475 は代入の一般則から演繹する形で回答した
496 はその一般則の誤りを指摘した
475 がそれによって 472 への回答を再考するかどうかは 475 の領分であって 496 が関知する問題ではない
501デフォルトの名無しさん:05/03/12 16:12:33
>>496
それとこれは同じ。ほらやっぱり意味が無い。
float aho;
aho = (float)(3 / 2);
502デフォルトの名無しさん:05/03/12 16:16:04
3/2は1だしahoは1.0だろう
当たり前ジャン
503デフォルトの名無しさん:05/03/12 16:17:01
普通
aho = 3.0 / 2
でいいよね
504デフォルトの名無しさん:05/03/12 16:23:02
>>501
おーいバカ、意味のないキャストの例を持ち出して、それを以て全て意味がないとでも言いたかったのか?
505デフォルトの名無しさん:05/03/12 16:29:11
>>504
だから475で代入ではキャストの意味がないと言った。
aho = (float)3 / 2は代入時にキャストしているとは俺は言わない。
俺の脳内では代入するときにキャストするというと501のようになる。
506デフォルトの名無しさん:05/03/12 16:42:08
>>505
誤差を考慮する必要が出るかどうかは代入先の型から判断して記述することになる
別にキャスト式が直接的に代入の右辺である必要はない議論だ

char dqn = '\x80';
int ogefin;
ogefin = dqn;
507デフォルトの名無しさん:05/03/12 16:43:38
unsignedのバヤイは?
508デフォルトの名無しさん:05/03/12 16:48:32
>>475

#define PORT 0xfffffffd;
*(char *)PORT = 0;
509デフォルトの名無しさん:05/03/12 16:49:15
Cのポリシーは精度が保存される方に変換される。
右辺式はfloat>intの優先順位で解釈される
510デフォルトの名無しさん:05/03/12 17:03:18
>>506>>508
そんなことすっかり忘れていた。すまん。

で、本題の>>472の言っていた「代入でもナルポインターをキャストする意味がある場面」を俺にも教えてくれ。
508みたいに左辺をキャストするのは無しで。
511デフォルトの名無しさん:05/03/12 17:14:44
512デフォルトの名無しさん:05/03/12 17:38:21
いい加減仕様と実装を混同したような話をするな、堂々巡りだ
513デフォルトの名無しさん:05/03/12 17:39:37
>>512
スレタイ読め
514デフォルトの名無しさん:05/03/12 17:42:20
ヌルとナルは別物って聞いたけど
515デフォルトの名無しさん:05/03/12 17:59:38
>>514
アナル: 「肛門の」という形容詞
アヌス: 「肛門」という名詞
516デフォルトの名無しさん:05/03/12 18:00:17
> ヌルのことナルとか言うな。素人臭くて恥かしい。

ふつうナルだ。現場に「ヌル」とかいうやつがはいってくると、もぐりだとすぐばれる。
517デフォルトの名無しさん:05/03/12 18:01:41
いや、違う、アスホールとケツめど野郎は同じ
518デフォルトの名無しさん:05/03/12 18:02:11
> 暗黙のキャストなんて無い
> 単なる型変換だ

ぼけ、それをキャストっていうんだよ。しろうとがしったかぶりしやがって。
519デフォルトの名無しさん:05/03/12 18:02:48
> そうか、キャストはキャスト演算子を使うときだけを言うのか。

おい...だまされてるんじゃねーよ。
520デフォルトの名無しさん:05/03/12 18:04:43
> 「代入でもナルポインターをキャストする意味がある場面」を俺にも教えてくれ。

おしえない。おしえない。ぜったいおしえない。
521デフォルトの名無しさん:05/03/12 18:06:25
> いい加減仕様と実装を混同したような話をするな、堂々巡りだ

ぼけ。この場合は仕様も実装も同じだろ ぼけ。
ききかじった言葉でしったかぶりするなよ ぼけ
522デフォルトの名無しさん:05/03/12 18:09:58
いくら形だけ真似ても底の浅さはいかんともしがたい
あいつから唯一のとりえをなくした腐臭だけ濃縮 100% のウザさだな
523デフォルトの名無しさん:05/03/12 18:31:21
大学の講義でも「ナル」だったな。
仕事でも「ナル」。(「ヌル」なんていっているまぬけは1人もみかけたことない)

ヌルなんていうのは、ネクラのひきこもり2チャンネラーぐらいでは?
他人と会話しないから、変な思い込みが何十年も続くわけよ。

他人と会話するときも、メイルかチャットで文字なんで、
「既出」も「NULL」も自分の思い込みに気づかない。

1. 「既出」編
「おや、ATOKは 'がいしゅつ' もはいってないのかよ。しかたない登録しとこっと」
(数年経過)
「おい、それはがいしゅつだ」
(一堂 「はぁ?」 状態)
「わ、わざといったんだよ。それぐらいわからんのか!」(ふー、うまくごまかせた)

2.�「ヌル」編
(7年ほどNULLを「ぬる」だと信じこんでいた。でも普段はNULLと書くのでばれなかった)
(ある場面でだれかがNULLと書かずに、読みで「ナル」とかいた)
「はあ? なんのことかたおもった。ヌルだろ?」
(一堂「ナル」だと主張)
「うるせー、プロはヌルっていうんだよ!」(ということにしてしまおう!)
(だんだん相手にされなくなる)
(うーむ、そういうことにしてしまえなかったか、まあいいや。こんどはナルにつっこんで
恥かかないように気をつけよっと...)
524デフォルトの名無しさん:05/03/12 18:37:28
>>523
その職場、平均年齢はどのくらいだ?
それとも年長者が若造の操縦に長けているのか
525デフォルトの名無しさん:05/03/12 18:42:52
英語が特殊だな
526デフォルトの名無しさん:05/03/12 18:43:27
なんか皆さん一生懸命で何よりですw
527デフォルトの名無しさん:05/03/12 18:45:47
うちはみんなヌルって言ってるよ
平均25歳くらい
528デフォルトの名無しさん:05/03/12 18:48:04
> その職場、平均年齢はどのくらいだ?

30代かな? 平均すると
社長は40代だとおもうが、めったに支社にはこないし、
支社にいるのは25〜28の層がほとんど。

「ヌル」なんていう間抜けなこというやつは1人もみたことない。
529デフォルトの名無しさん:05/03/12 18:49:49
二回も言ってるし
かまってちゃんか。春だな
530デフォルトの名無しさん:05/03/12 18:51:35
隔離スレとしては機能してるようですな
531デフォルトの名無しさん:05/03/12 18:51:37
>>529
御意
532デフォルトの名無しさん:05/03/12 18:52:09
2回が意味不明
533デフォルトの名無しさん:05/03/12 18:53:27
>>532
じゃぁ春が二人ってことかw
534デフォルトの名無しさん:05/03/12 18:55:07
>この場合は仕様も実装も同じだろ

「混同」さんの典型だなw
535デフォルトの名無しさん:05/03/12 19:03:50
本スレが無い隔離スレってのもオツなものだ
536デフォルトの名無しさん:05/03/12 19:16:26
Cの俺に聞けスレについては目的がもともと隔(ry
537デフォルトの名無しさん:05/03/12 19:20:35
ということにしたいのですね
ヘ_ヘ
538デフォルトの名無しさん:05/03/12 19:21:49
はい、そうです。
539デフォルトの名無しさん:05/03/12 19:23:08
他人真似も最低of最低レベルだな
540デフォルトの名無しさん:05/03/12 19:23:51
また春がきました。

今日はいい週末ですね
541デフォルトの名無しさん:05/03/12 19:53:22
本格派隔離スレ、その名はhttp://pc5.2ch.net/test/read.cgi/tech/1110099763/
542デフォルトの名無しさん:05/03/12 20:07:48
なんなら隔離スレその105建てとくか?
543デフォルトの名無しさん:05/03/12 20:21:24
>>523
くだらないことに拘ってるな。
ゼロでいいのに。
544デフォルトの名無しさん:05/03/12 20:28:26
だがゼロではない。常識!
545デフォルトの名無しさん:05/03/12 20:29:28
546デフォルトの名無しさん:05/03/12 21:01:40
普通「サイファー」だろ
547デフォルトの名無しさん:05/03/12 21:31:59
Visual C++ で使える _splitpath 関数に相当する関数は
Linux ではなんという関数なのでしょうか?
548デフォルトの名無しさん:05/03/12 21:37:04
>>547
知るかボケ
549デフォルトの名無しさん:05/03/12 21:40:35
>>547
>>1
GUIなどの標準Cではできないことの質問は使用している開発環境のスレへGo! (←ここ注目)
550デフォルトの名無しさん:05/03/13 01:10:24
base64エンコードのいいサンプルはないでしょうか。
551デフォルトの名無しさん:05/03/13 01:19:19
>>550
rfc以外でって事?
552デフォルトの名無しさん:05/03/13 01:21:07
>>550
あります。
Googleで、「base64 エンコード ソース」で検索した先頭のではダメ?
553デフォルトの名無しさん:05/03/13 01:22:38
>>550
pascalでならあげるよ
554デフォルトの名無しさん:05/03/13 01:23:40
ぬるぽについては
>>1
のC-faqの5のところに、いっぱいかいてあるなー。

外人用
ttp://www.eskimo.com/~scs/C-faq/s5.html
555デフォルトの名無しさん:05/03/13 01:43:49
scanf("%d", &nurupo);
556デフォルトの名無しさん:05/03/13 02:42:29
じゃあbufは「ぶふ」か?
557デフォルトの名無しさん:05/03/13 03:22:28
>>555

>5.1
> ...
> すなわちアドレス演算子&を適用した結果がヌルポインターとなるこ ともない。
> またmallocの呼び出しに成功した場合の戻り値がヌルポイ ンターの場合もない

~~
外人用
> That is, the address-of operator & will never yield a null pointer,
> nor will a successful call to malloc.
558デフォルトの名無しさん:05/03/13 04:56:30
#include <stdio.h>
#include <stdlib.h>
void ga(void *pp)
{
if (!pp) {
printf("*(%p)~~~~~~~~~> [%p]ががが\n", &pp, pp);
return;
}
printf("*(%p)~~~~~~~~~> [%p]\n", &pp, pp);
}

main()
{
void *p = 0;
ga(p);
p = malloc(1);
ga(p);
}
559デフォルトの名無しさん:05/03/13 07:50:55
>>552
ありがとうございます!
560デフォルトの名無しさん:05/03/13 10:01:47
>>557
規格では確かにそうなっているが
現実にはそれはリンカのセグメント定義で決めることで
コンパイラの仕様というよりそういう結果になるセグメント定義をするなという
PG に対する縛りってとこがわかってない奴多いよな
561デフォルトの名無しさん:05/03/13 10:12:16
(1) return ((n<1||n>12)?name[0]:name[n]);
(2) return name[(n<1||n>12||n+1)-1];

(1) と (2) って、意味同じなんでしょうか。
562デフォルトの名無しさん:05/03/13 10:35:52
>>561
(2)は、||の演算結果がnになり得ることを期待している。従って、巧くない。
return name[(n < 1 || n > 12) ? 0 : n];
程度にするべきかと。
563ya-su:05/03/13 11:25:00
ファイル中の重複する行を削除し、ファイルを上書き保存する
プログラムを作りたいのですが、
ファイルをR+でオープンして、fgetsがNULLになるまでWhile文の中で、
fprintfで書き込みをしようとすると書き込まれません。

同じファイルに読み書きすることは、不可能なんですか?
なんのためのR+なのか良く分かりません。
564デフォルトの名無しさん:05/03/13 11:29:08
565デフォルトの名無しさん:05/03/13 11:38:34
>>563
r+ で fwrite ではなく fprintf って聞いた瞬間から嫌な予感がしているが・・・
もちろん fseek/ftell くらいやってるよな?
566デフォルトの名無しさん:05/03/13 11:50:21
>>563
普通は、"r"で全部読み込み、
処理後の結果を"W"で書き込むわけだが…。
567デフォルトの名無しさん:05/03/13 11:55:23
行単位の編集ができればいいんならインデックスファイルを作るって手もあるな
ファイルが異常にでかいとか、書き換えはしたくないとか、順序変更もありとか、色々な動機から
568お願いします:05/03/13 12:28:09
ここの空欄に何が入るのか教えてくださいませんか?

#include<stdio.h>
void swap(int q , int p)
{
int a;
a= q;
;
;
}

void main()
{
int x=5,y=2;
printf("x=%d, y=%d\n",x,y);
swap(&x,&y);
printf("x=%d, y=%d\n",x,y);
}
569お願いします:05/03/13 12:29:41
↑訂正
#include<stdio.h>
void swap(int q , int p)
{
int a;
a= q;
ここ;
ここ;
}

void main()
{
int x=5,y=2;
printf("x=%d, y=%d\n",x,y);
swap(&x,&y);
printf("x=%d, y=%d\n",x,y);
}
570デフォルトの名無しさん:05/03/13 12:32:22
無理に書けばこうなるが・・・
*(int *)q = *(int *)p;
*(int *)p = a;

たぶん単位は貰えんと思う
571お願いします:05/03/13 12:38:07
デフォルト名無しさんありがとうございます。助かりました。
572デフォルトの名無しさん:05/03/13 13:35:26
おい、全然助かってないぞw いいのかよw
573デフォルトの名無しさん:05/03/13 13:53:07
>563

FILE *stream;
char buf[1024];

if((stream=fopen("path","r+"))==NULL)
return;

while(fgets(buf,sizeof(buf),stream)){
ここに重複しているかどうかの判定文

fprintf(stream,"hoge");
fflush(stream);

}

574デフォルトの名無しさん:05/03/13 13:53:55
>573

最後に
fclose(stream);
575デフォルトの名無しさん:05/03/13 14:45:15
> ファイル中の重複する行を削除し、ファイルを上書き保存する

uniqコマンドつかえよ ぼけ
576デフォルトの名無しさん:05/03/13 14:47:28
> 無理に書けばこうなるが・・・

ならねーよ。
(1)出題にそもそもミスがある かなりのまぬけ。
(2)それをわからずに2chできく まぬけ
(3)出題ミスだということぐらいはわかるが、それに無理に答えるとこうなる..などとぜんぜんまちがっている解答をしめす おおまぬけ。
577デフォルトの名無しさん:05/03/13 15:52:59
>>575
スレ違い 消えろカス
578デフォルトの名無しさん:05/03/13 15:53:42
>>576
ほうら、カッカきてるぞ
今日も元気か、頭?
579デフォルトの名無しさん:05/03/13 16:04:32
すれちがいじゃないことがわからない677はかなりのまぬけ
580デフォルトの名無しさん:05/03/13 16:04:57
577だ
581デフォルトの名無しさん:05/03/13 16:10:38
ワラタ
582デフォルトの名無しさん:05/03/13 17:39:20
>>580
どうせなら、「レスアンカー間違えた俺も結構まぬけ」とか言って欲しかった
583デフォルトの名無しさん:05/03/13 17:47:11
つまらねえやつだなw
584デフォルトの名無しさん:05/03/13 19:05:28
if (0 <=c && c<=127) とすると、コンパイラが
comparison is always true due to limited range of data type
と警告を出しました。コンパイラは gcc 3.3 です。

自分のプログラム中では char c = -1 などということをしていて、
実際多くの処理系では EOF の値として -1 が試用されていますし、
上の条件判定が常に真になることはないと思うんですが。
コンパイラはなぜこのような警告を出しているのでしょうか?
585デフォルトの名無しさん:05/03/13 19:09:32
実際に以下のようなテストのためのコードを書いてみたところ、
FALSE と表示されました。

char c = -1;
if (0 <= c && c <= 127) printf("TRUE\n");
else printf("FALSE\n");
586デフォルトの名無しさん:05/03/13 19:25:09
EOF使うなら、ふつう、intですね
587デフォルトの名無しさん:05/03/13 19:31:53
>>586 あ、そうでした。
でもデフォルトでは char は signed char で、
負の値も格納できるんだと思ってたので、
なんで負の値が格納されてるかも知れないのに
上の条件判定が常に真になるといわれるのか分からなかったんです。
588デフォルトの名無しさん:05/03/13 19:35:50
>>584
char が unsigned なら、「0 <= c」が常に真
char が signed なら、「c <= 127」が常に真

EOF はこの件とは関係ない。
589デフォルトの名無しさん:05/03/13 19:51:51
>>588 レスありがとうございます。
ただ && で論理和をとっているので
なぜこれが全体として真になるのでしょうか。
590デフォルトの名無しさん:05/03/13 19:54:02
というか実際に if の条件式が偽になることがあるにもかかわらず、
コンパイラが警告を出すというのはコンパイラが間違ってると
解釈するべきなのでしょうか?

それとも signed char は使うなということなのでしょうか?
signed char を使うと移植性が悪くなる?
どうも gcc 特有の話題で歩きがしてきたので、
ワーニングに関しては gcc スレにいってきます。
591デフォルトの名無しさん:05/03/13 19:54:24
お前はアホかと…
592デフォルトの名無しさん:05/03/13 19:58:22
>>584
> if (0 <=c && c<=127) とすると、コンパイラが
> comparison is always true due to limited range of data type

if ((unsigned char)c <= 127)
これだけでいいってこと
593デフォルトの名無しさん:05/03/13 20:02:22
せんせい!

if(c <= 0 || c > 0)
でもワーニングになりません。
コンパイラが間違ってますか?
594デフォルトの名無しさん:05/03/13 20:02:35
>>584
 if (0 <=c && c<=127)

 if (0 <=c)
  if (c<=127)
とすると、コンパイラがどちらの行で
 comparison is always true due to limited range of data type
と警告を出すかやってみてんか。
元の条件判定のどちらかが常に真になっていると思うんですが。
595デフォルトの名無しさん:05/03/13 20:07:00
>>590
おまえさん、2つ勘違いをしているように見受けるが?
・char が signed か unsigned かは処理系定義(つまり、どちらも合法)
・警告は ill-formed ではない(つまり、合法)
596デフォルトの名無しさん:05/03/13 20:27:56
>>589
>ただ && で論理和をとっているので
論理“和”?
それはともかく、B が真のとき
  A && B = A
  A || B = 真
B はどのみち関係ない、という警告なんじゃないか?
>>584 の場合、恐らく c<= 127 が常に真。

>>590
>実際に if の条件式が偽になることがあるにもかかわらず
メッセージ読む限りでは、データ型のとる値の範囲に関する
警告なんじゃないか?条件式全体の話じゃなくて。
597デフォルトの名無しさん:05/03/13 21:52:49
テキストファイルを末尾から1行ずつ読み込んでいくには
どうすればよいでしょうか。
598デフォルトの名無しさん:05/03/13 21:53:49
seek
599デフォルトの名無しさん:05/03/13 22:00:18
>>597
popen()が使えるなら、popen("tail -r your.file", "r")してから順番にfgets()
600デフォルトの名無しさん:05/03/13 22:08:07
>>584
signed char c である場合、cの範囲は必ず -127 <= c <= 127 となる。
よって、警告が示している通り、c <= 127 という比較は
cが前述の限られた範囲に関するデータ型のため常に真となる。

つまり、比較するだけ無駄ってことですよ。
601デフォルトの名無しさん:05/03/13 22:13:08
そんなバカな
602デフォルトの名無しさん:05/03/13 22:21:15
>>584 です。皆さんありがとうございました。
つまり余計な項を書いてるから「余計だ」って言われてるんですね。
条件式全体に対する警告ではないんですね。

>>596 あ、論理「積」の間違いです。ありがとうございました。
603デフォルトの名無しさん:05/03/13 22:24:35
>>600
だから規格書嫁って

5.2.4.2.1 (略)
これらの処理系定義の値は,それぞれの項目の右に示してある値と
同じ符号をもち,その値以上の大きさ(絶対値)をもたなければならない。
− ビットフィールドでない最小のオブジェクト(バイト)におけるビット数
CHAR_BIT 8
− 型 signed char のオブジェクトにおける最小値
SCHAR_MIN -127 // -(2<UP>7</UP>-1)
− 型 signed char のオブジェクトのおける最大値
UCHAR_MAX +127 // 2 7 -1
− 型 unsigned char のオブジェクトにおける最大値
UCHAR_MAX 255
− 型 char のオブジェクトにおける最小値
CHAR_MIN (値は,後で規定する。)
− 型 char のオブジェクトにおける最大値
CHAR_MAX (値は,後で規定する。)
604デフォルトの名無しさん:05/03/13 23:00:08
すみません.質問させてください.
gcc version 3.4.2 を使用しております.

グローバル変数をまとめて書いたヘッダファイルを色々な.cファイルからインクルードするために

#ifdef GLOBAL_DEF
#define GLOBAL
#define GLOBAL_INIT(val) =(val)
#else
#define GLOBAL extern
#define GLOBAL_INIT(val)
#endif

のようにマクロを書けばよいと聞き感動しておりました.

そこで,これを用いてグローバル変数の配列を初期化しようと思い以下のようなものを書きました.

GLOBAL int a[] GLOBAL_INIT({1,2,3,4});
GLOBAL int b[] GLOBAL_INIT(({1,2,3,4}));

a は,4引数のマクロだと思われてしまうようです.
b は,int b[] = (({1,2,3,4})); のように展開されてコンパイラに怒られてしまいます.

なにか良い方法はないものでしょうか?
よろしくおねがします.
605デフォルトの名無しさん:05/03/13 23:25:23
char nurupo(void)
{
return(NULLPO);
}
606デフォルトの名無しさん:05/03/14 00:16:14
>>604
そんな小手先のテクニックに「感動」して無駄な時間を費やさなければよいです
607デフォルトの名無しさん:05/03/14 01:32:49
> ワーニングに関しては

608デフォルトの名無しさん:05/03/14 02:07:56
> signed char c である場合、cの範囲は必ず -127 <= c <= 127 となる。

なわけねーだろ ぼけ。 しったかぶりするな。


その範囲をあらわすのに「充分な」幅をもっていなければいけないが、
それ以上をあらわすこともある。
609デフォルトの名無しさん:05/03/14 02:10:24
588はかなりのしったかぶりぼけ
> char が unsigned なら、「0 <= c」が常に真

こっちはたまたまあってるが。

> char が signed なら、「c <= 127」が常に真

こっちは大うそ。
610デフォルトの名無しさん:05/03/14 02:12:11
もうその話は終わってますから!

あるある探検隊!あるある探検隊!
611デフォルトの名無しさん:05/03/14 02:51:56
>>610
混ざってるし。
612デフォルトの名無しさん:05/03/14 03:31:46

 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 || ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
 || ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
 ||  ノセられてレスしたらその時点であなたの負け。
 || ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
 ||  与えないで下さい。                  Λ_Λ
 || ○枯死するまで孤独に暴れさせておいて   \ (゚ー゚*) キホン。
 ||  ゴミが溜まったら削除が一番です。       ⊂⊂ |
 ||___ ∧ ∧__∧ ∧__ ∧ ∧_      | ̄ ̄ ̄ ̄|
      (  ∧ ∧__ (   ∧ ∧__(   ∧ ∧     ̄ ̄ ̄
    〜(_(  ∧ ∧_ (  ∧ ∧_ (  ∧ ∧  は〜い、先生。
      〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
        〜(___ノ  〜(___ノ   〜(___ノ
613デフォルトの名無しさん:05/03/14 09:25:13
え?signed char c;の値の範囲って
-128=< c =< 127
で決まりじゃないのですか?
そうじゃないときってどんなときですか?
ずっとこう認識してたのですが・・・
614デフォルトの名無しさん:05/03/14 09:27:44
もしや、負の数にどの表現を用いるかで違うってこと?
処理系によって違うって意味?
2の補数表現なら-128<=c<=127ですよねぇ・・・。
615デフォルトの名無しさん:05/03/14 10:08:36
>>613
charが8ビットと言う保証はない。
616デフォルトの名無しさん:05/03/14 10:13:24
規格厨うざ
617デフォルトの名無しさん:05/03/14 10:24:08
>>615
ああ、そういう意味での話?
でもchar型が8ビットじゃないことも想定することは
そうないですよね、現実的に。
618デフォルトの名無しさん:05/03/14 10:30:28

 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 || ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
 || ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
 ||  ノセられてレスしたらその時点であなたの負け。
 || ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
 ||  与えないで下さい。                  Λ_Λ
 || ○枯死するまで孤独に暴れさせておいて   \ (゚ー゚*) キホン。
 ||  ゴミが溜まったら削除が一番です。       ⊂⊂ |
 ||___ ∧ ∧__∧ ∧__ ∧ ∧_      | ̄ ̄ ̄ ̄|
      (  ∧ ∧__ (   ∧ ∧__(   ∧ ∧     ̄ ̄ ̄
    〜(_(  ∧ ∧_ (  ∧ ∧_ (  ∧ ∧  は〜い、先生。
      〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
        〜(___ノ  〜(___ノ   〜(___ノ
619デフォルトの名無しさん:05/03/14 10:36:59
>>616
ハァ? 規格厨の何が悪い?
自分規格でももってるの?w
>>1嫁 標準C って書いてあるの読めないの?
規格書が標準だって事が分からないの?
あんたね〜もうちょっと考えてレスしなよ
糞教師やら糞本読んでそれが正しいって思っちゃうクチ?
現規格が壊れてるから信用したくないとか言っちゃう妄想厨?
規格書難しくて読めないとか言うのか?w
おまえがそういう理由言ってみろよw

春だな〜って先にいっといてやるぜ
620デフォルトの名無しさん:05/03/14 10:39:38
とかまぬけなこといってる619は現在の規格がC99だけだということを知らない ;-)
621デフォルトの名無しさん:05/03/14 10:43:30
>>620
釣?>>603はC99からの引用だぞ
622デフォルトの名無しさん:05/03/14 10:56:07
>>584
>コンパイラは gcc 3.3 です。
とあるので、まあそのへんを汲んであげてもいいじゃないか
623デフォルトの名無しさん:05/03/14 12:23:26
だったらgccのスレできけよ
624デフォルトの名無しさん:05/03/14 12:29:33
>>584 の時点で「コンパイラが警告出す」って話なんだから
「標準 C ではこうだ!」などと間抜けな突っ込み入れるんじゃなくて
最初から「スレ違い」と指摘すれば済むのにね。
625デフォルトの名無しさん:05/03/14 12:32:46
>>624
あなた、まぬけですね。
626デフォルトの名無しさん:05/03/14 12:35:46
ここでは実装環境の話をしては駄目なのかい?
627デフォルトの名無しさん:05/03/14 12:45:28
>>626
そこまでしてここで話をしなくてもいいじゃないか
628デフォルトの名無しさん:05/03/14 12:52:44
いや、ここで話をした方がいいだろう
規格厨もまぬけな突っ込みを入れる事が出来て、とても喜ぶだろう。
629デフォルトの名無しさん:05/03/14 12:52:54
独習Cポインタの所まで行ったんだけど
このあと飛ばして独習C++にいっちゃってもいいかな?
630デフォルトの名無しさん:05/03/14 12:56:37
>>629
いいとも!























って、ボケちゃダメ…?
631629:05/03/14 13:02:20
この後の内容は独習C++の方でかぶっていると
チラッと聞いた事があるので、飛ばしちゃっても大丈夫かな…と思いまして。
632デフォルトの名無しさん:05/03/14 13:16:15
「*」を入力するとXを表示し、「1」を入力するとAを表示するプログラムを作りたいのですが、
以下の記述ではそのように表示されません。「*」を入力するとXではなく数字が表示されます。
int num;

printf("Input : ");
scanf("%d",&num);

if(num == *)
{
printf("X");
}
else if(num == 1)
{
printf("A");
}
おそらく、「*」という文字をint型の変数に入れたので*が数字に直され、その数字が表示された
と思うのですが、この記述のどこをいかに修正すれば適切にXと表示されるようになるのでしょうか。
633デフォルトの名無しさん:05/03/14 13:17:50
>>632
まず、コンパイルが通るソースを貼れ
634デフォルトの名無しさん:05/03/14 13:19:10
>>632
そんなネタは宿題スレでやれ
635619:05/03/14 15:23:27
確かにgcc 3.3 だってことを考えても良かったな
だが>>600は「必ず」って言ってるだろ
だからそれは間違いであることを規格を根拠に指摘しただけ
よって>>624>>628は見当違いのこと言ってる

ツッコミ入れるところみんな違うよ orz
636デフォルトの名無しさん:05/03/14 15:34:37
>>600はgcc 3.3についての質問への答えなので妥当
規格厨>>619の突っ込みが間抜け
637619:05/03/14 15:37:46
>>636
gcc 3.3 では「必ず」って事ね。おk
吊ってくる
638デフォルトの名無しさん:05/03/14 15:48:54
まぁ、gccでもオプションでchar を unsigned charに出来たりするんで、
必ずって事も無いがなw
639デフォルトの名無しさん:05/03/14 15:49:58
あ、>>600でsigned charでって書いてあるか・・・
638は取り消し;
640デフォルトの名無しさん:05/03/14 16:54:19
-127<=じゃなくて-128<=じゃないの?
641デフォルトの名無しさん:05/03/14 16:58:11
もうその話は終わってますから!

どこ見てんのよ!!!
642デフォルトの名無しさん:05/03/14 17:02:22
>>641
混ざってるし。
643デフォルトの名無しさん:05/03/14 17:07:14
>>640
規格ではsigned charの場合、最低限は-127。
644デフォルトの名無しさん:05/03/14 17:10:09
>>600はgcc 3.3での事だって言ってんだろ!
gcc 3.3では必ず-127〜の範囲なんだよ!!
645デフォルトの名無しさん:05/03/14 17:37:14
それってgccならでは?
それともだいたいそうなの?
646デフォルトの名無しさん:05/03/14 17:52:05
だから-128だってば。
647デフォルトの名無しさん:05/03/14 17:57:32
実装環境の事なんて知るかよ
648デフォルトの名無しさん:05/03/14 18:27:16
>>640
それ"も"正しいということではないかな
>>600では範囲そのものを書いているのではなく、cの範囲において
-127<=c<=127 となるとしているに過ぎない
649デフォルトの名無しさん:05/03/14 18:32:47
という事は、>>584においてsigned charは-128にはなり得ないと?
650デフォルトの名無しさん:05/03/14 19:09:09
ある処理の実行速度をミリ秒単位で計りたいのですが
どうやってやるんですか?
651デフォルトの名無しさん:05/03/14 19:52:20
100万回くらい実行すれば十分だろ。
652デフォルトの名無しさん:05/03/14 19:54:38
>>650
お手元の OS のマニュアルをご覧下さい。
653デフォルトの名無しさん:05/03/14 21:13:09
>>652
マニュアルなんてついてなかったんですが
654648:05/03/14 21:25:30
>>649
あー勘違いすまんすまん
655デフォルトの名無しさん:05/03/14 22:35:33
>

この文体のアフォ, すでに誰にも相手にされなくなってるな! ;-)
656デフォルトの名無しさん:05/03/14 22:43:55
何とかの王様を思い出した
657デフォルトの名無しさん:05/03/14 23:41:14

 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 || ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
 || ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
 ||  ノセられてレスしたらその時点であなたの負け。
 || ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
 ||  与えないで下さい。                  Λ_Λ
 || ○枯死するまで孤独に暴れさせておいて   \ (゚ー゚*) キホン。
 ||  ゴミが溜まったら削除が一番です。       ⊂⊂ |
 ||___ ∧ ∧__∧ ∧__ ∧ ∧_      | ̄ ̄ ̄ ̄|
      (  ∧ ∧__ (   ∧ ∧__(   ∧ ∧     ̄ ̄ ̄
    〜(_(  ∧ ∧_ (  ∧ ∧_ (  ∧ ∧  は〜い、先生。
      〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
        〜(___ノ  〜(___ノ   〜(___ノ
658デフォルトの名無しさん:05/03/14 23:43:21
>>657
お前が一番反応してるじゃねえか
659デフォルトの名無しさん:05/03/14 23:45:44
ここは隔離病棟スレですから!

ヒロシです・・・ヒロシです・・・ヒロシです・・・・・・
660デフォルトの名無しさん:05/03/14 23:46:31
あーうんこ臭ぇ
661デフォルトの名無しさん:05/03/15 00:11:37
>>659
混ざってるし。
662デフォルトの名無しさん:05/03/15 00:16:23
私だけ?

間違いない
663デフォルトの名無しさん:05/03/15 00:33:49
cpuname.c
#define PENTIMU4 0x0007
#define ATHRONXP 0x0008
#define SUPARC 0x0009

int main(){
 short Type=CPUTYPE();//CPUの種類を判別する関数
 printf("type=%u",Type);
}


↑のようなコードでは0x0009のような定数しか返せませんよね。
 SUPARCのような定義したキャラクタ自体を返す簡単なテクニックはないのでしょうか。

664デフォルトの名無しさん:05/03/15 00:43:24
>>663
くそしてねろ
665デフォルトの名無しさん:05/03/15 00:43:46
>>663
固定の文字列だったら、そのまま文字列を返せば?

const char *cpu_type() {
if (...)
return "SUPAAKU";
if (...)
return "PENTEAMU";
if (...)
return "ASURON";
return "FUMEI";
}
int main() {
printf("type=%s\n", cpu_type());
return EXIT_SUCCESS;
}
666デフォルトの名無しさん:05/03/15 00:44:46
>>663

#define SPARC 0
#define PENTIUM4 1

static const char *CPUNAMES[] = {
"Sparc",
"Pentium4"
};

const char *get_cpu_name(int num)
{
return CPUNAMES[num];
}

とか。
667デフォルトの名無しさん:05/03/15 00:45:02
日下部先生の本で調べてみました。
charはsigned charの場合、
規格では少なくとも-127〜+127まであらわせなければいけない(それより広い分にはOK)、
で、たいがいの処理系では-128〜+127をあらせる、
だそうな。

初心者にも分かりやすくていいね。
668デフォルトの名無しさん:05/03/15 00:45:08
>>665
( ´,_ゝ`)
そんな方法しか思い浮かばないのかよ
生きてる意味ないな
669デフォルトの名無しさん:05/03/15 00:47:03
>>667
なんでそこで「日下部先生の本」なんですか?
670デフォルトの名無しさん:05/03/15 00:49:31
gcc 3.3は-127〜127なのか
嫌な制限かけてるな
671デフォルトの名無しさん:05/03/15 00:49:43
うちに4冊ある本で、載ってたのがそれだけでした。
ほかは、柴田ぼーよー、ハヤシはるひこ、たかはしまな です。
すんません入門本しか持ってなくて。のこりの3つには書いてなかったんですよ。
672デフォルトの名無しさん:05/03/15 00:49:58
「僕の本」のtypo
673デフォルトの名無しさん:05/03/15 00:50:44
うちの3.3は-128までいくぞ
674デフォルトの名無しさん:05/03/15 00:51:14
ヴぉっヴぉヴぉヴぉ
ヴぉいどせんせ〜い!
675デフォルトの名無しさん:05/03/15 00:52:38
せんせいるのどこー?
676デフォルトの名無しさん:05/03/15 00:53:02
日下部マンセー
677デフォルトの名無しさん:05/03/15 00:53:26
Kusakabe先生は、先日の卒業生の飲み会に来てくれました。
678デフォルトの名無しさん:05/03/15 00:54:44
ほんとにそれら3つほ本には出てないのですか? 基本的なことなのに。しんじられん。
679デフォルトの名無しさん:05/03/15 00:55:05
>600が使用しているコンパイラって何?gcc 3.3?
680デフォルトの名無しさん:05/03/15 00:55:08
>>677
君たちは無益な仕事をしているのですね :)
とか言ってくれましたか?w
681デフォルトの名無しさん:05/03/15 01:03:04
あのー、卒業式はすんだけど、まだ学生なんですが ;-)
682デフォルトの名無しさん:05/03/15 01:03:53
僕は琉球大なんですが日下部先生がいなくなった後なので残念です
683デフォルトの名無しさん:05/03/15 01:18:32
>>668
煽るしか能がないのかよ
生き(ry
684デフォルトの名無しさん:05/03/15 03:02:49
二次元配列って
【列】【行】?
それとも
【行】【列】?
呼び方、どっちが正しいんでしょうか?
685デフォルトの名無しさん:05/03/15 03:13:15
>>684
配列の配列名だけで、行列ではない。よって行も列もない。
686デフォルトの名無しさん:05/03/15 03:23:18
むむむ・・・
687デフォルトの名無しさん:05/03/15 03:28:08
関数内で、

static int a;
extern int b;

と宣言された場合、
それぞれ変数のリンケージを教えて下さい。
688デフォルトの名無しさん:05/03/15 07:04:34
グローバル変数をg_foo
static変数をm_foo
ローカル変数をl_foo
と名づけるのはどうしてだめなんでしょうか?
689デフォルトの名無しさん:05/03/15 07:44:11
mってなんだろー
690デフォルトの名無しさん:05/03/15 08:37:06
(´・ω・`)知らんがな
691デフォルトの名無しさん:05/03/15 09:03:57
ログ取りの人、更新を止めたみたいね。
テンプレから消さないと。
692デフォルトの名無しさん:05/03/15 09:23:25
>>691
いい加減うんざりしたかな。

>>688
ローカル変数に接頭辞はいらねぇべさ。
それと、static変数はローカルなものとファイルスコープのものがあるわけだがそれはどう分ける?
勿論、mは変。
693デフォルトの名無しさん:05/03/15 09:26:02
>>687
教科書嫁。或いはマニュアルなり何なり。調べれば済むこと一々聞くなや。
694デフォルトの名無しさん:05/03/15 09:35:21
signed char c = 0x80;

printf("%d", c);

これやると、どんなコンパイラでも-128でるんじゃないの?
695デフォルトの名無しさん:05/03/15 09:39:56
> これやると、どんなコンパイラでも-128でるんじゃないの?

おまえぼけ。たとえばsingnd charが-127〜+127な環境でどうやってかえすんだよ ぼけ

2の補数方式のものだけじゃねーよ ぼけ
696デフォルトの名無しさん:05/03/15 09:50:34
エサが食べられて嬉しそう
697デフォルトの名無しさん:05/03/15 10:09:08
餌が(何かに)食べられて嬉しそう?
マゾですか?
698デフォルトの名無しさん:05/03/15 10:25:42
>>691
103まであるけど。
699デフォルトの名無しさん:05/03/15 10:27:24
>>692
ファイルスコープはm_foo、ローカルはs_fooでだめですかね
700デフォルトの名無しさん:05/03/15 10:29:28
っていうかローカルなstatic変数ってみなさん使いますか?
小さくファイル単位で区切られていれば、あまり使わないような気がするんですが。。
701デフォルトの名無しさん:05/03/15 10:41:41
>>695
そんな環境ほんとにあんの?
gccでも-128でると報告がでてるぞ
702デフォルトの名無しさん:05/03/15 10:50:09
2の補数方式のものだけじゃねーよ
703デフォルトの名無しさん:05/03/15 11:00:31
最近の環境では、なにがあるのさ。
704デフォルトの名無しさん:05/03/15 12:39:43
>>700
一ファイル一関数なコーディング規約?
705デフォルトの名無しさん:05/03/15 13:00:09
>>702
1の補数方式とかも規格上はありうるかも知れないけど、
世界で実際に採用されているのは2の補数だけですから、残念っ!!
706デフォルトの名無しさん:05/03/15 13:01:23
>>704
こんな規約世界に存在するのかな…?
707デフォルトの名無しさん:05/03/15 13:06:42
>>705
>2の補数だけ

ほう…。
全ての環境を調べた訳ですか?(w
708デフォルトの名無しさん:05/03/15 13:09:21
でも、2の補数じゃない環境を最近のものであげられないなら、
事実上、2の補数確定ってことでいいじゃん。
709デフォルトの名無しさん:05/03/15 13:11:58
>>708
寝言は寝て言え
710デフォルトの名無しさん:05/03/15 13:21:05
世迷言は何をしながら言えばいいんだ?
711デフォルトの名無しさん:05/03/15 13:29:22
>>707
全ての環境を調べなくても、わざわざ2の補数以外を使うメリットがない。
極論を言えば、2進法を使っていないコンピュータが世界に存在するかも知れないけど、
そんなものをわざわざ気にする必要がない。それと同じこと>2の補数
712デフォルトの名無しさん:05/03/15 15:44:36
Cの規格って「現実にそんなもんねーよw」で済むようなもんなのか?
713デフォルトの名無しさん:05/03/15 15:47:08
誰か次の規格から外しちゃってよ > 2の補数以外
714デフォルトの名無しさん:05/03/15 15:48:04
ヒキコモリのかまって君が寂しがって書いてるだけです
無視してあげて下さい
715デフォルトの名無しさん:05/03/15 16:12:42
>>709
冗談は顔だけにしろ
716デフォルトの名無しさん:05/03/15 16:39:57
>>712
そもそも、signed char の範囲が -127〜127 になっていること自体、
2進法のコンピュータで、かつ1バイトの型だということを(暗黙の)前提にしている。
3進法(あるいはそれ以上)のコンピュータがあるかも知れないということは全く無視している。
しかも、殆どの処理系で、limits.h の定義が
#define SCHAR_MIN (-128)
などとなっている。

もちろん、規格から僅かに外れることがセキュリティーホールになるなどの重大な事態に繋がる場合は
厳密に考慮する必要があるが、この問題(charの範囲)がセキュリティーホールなどになることはないから、
あえて考える必要は無い。
もし気に入らないなら、char型を使わなければいいだけの話。
強引にプログラミングすれば、charを使わずに文字列処理をすることも出来なくは無い。
717デフォルトの名無しさん:05/03/15 16:43:44
今は、3進法のコンピュータなんてありえない。
3つ目の人間がいないと同じぐらいありえない。
718デフォルトの名無しさん:05/03/15 16:44:43
>>716
よくそこまで的外れな考えができるものだ
ある意味、すばらしいと思う
719デフォルトの名無しさん:05/03/15 16:45:35
10進はふつうにあるが?
720デフォルトの名無しさん:05/03/15 16:47:53
716は、ヒキコモリのかまって君が寂しがって書いてるだけです
無視してあげて下さい
721716:05/03/15 16:57:49
>>717
それと同じ理由で、1の補数を使うコンピュータはありえない。

>>718
ただ、(signed) char の範囲が(通常は)-128〜127 だと言っているだけ。
たとえ規格書になくても。

>>719
大昔の歯車式計算機ならありうるけど、今では殆どが2進法。
10進法の処理系も、内部的には2進法で処理している。
0000 0000→0000 0001→0000 0010→0000 0011→0000 0100→0000 0101→
0000 0110→0000 0111→0000 1000→0000 1001→0001 0000→・・・・・・
という感じで。
722デフォルトの名無しさん:05/03/15 17:08:44
はぁ?
723デフォルトの名無しさん:05/03/15 17:09:29
716は、ヒキコモリのかまって君が寂しがって書いてるだけです
無視してあげて下さい
724619:05/03/15 17:23:52
まだこの話題かよw
>>721よ。おまえが言ってることはある程度正しいが
わざわざ処理系依存にする必要はないだろ
^^^^^^^^^
「ポータビリティ」って言葉聞いたことあるか?>>721

ついでに間違いを指摘しとく
> charを使わずに文字列処理をすることも出来なくは無い。
「文字列」とは'\0'で終わるchar配列の事だから無理
初心者でも知ってるぞ。もうちょっと勉強してきな
725デフォルトの名無しさん:05/03/15 17:35:23
>>724
>「文字列」とは'\0'で終わるchar配列の事だから

 '\0'ターミネートされた文字の列

だろ。
726デフォルトの名無しさん:05/03/15 17:45:19

main{
struct structure st[10];
printf("%s\n",st[0]->name);
func1(st);
}

func1(struct structure *pst){
printf("%s\n",pst->name);
func2(???);
}

func2(***){
printf("%s\n",###);
}

構造体のアドレスの受け渡しの質問なのですが、
mainから関数func1へ受け渡しするのは上記の通り。
func1から関数func2へアドレスを渡すには???と***に何を入れればいいのでしょうか?
また、func2内でst[0]のメンバnameを表示させるには###に何を入れたらいいのでしょうか。
回答お願いします。
727デフォルトの名無しさん:05/03/15 17:47:31
1の補数だと、-0 != 0になるけど
規格厨って普段からそこまで考えてプログラミングしてるのか?
728デフォルトの名無しさん:05/03/15 17:50:15
>>727
それが問題になる時の例をあげてくれ
729デフォルトの名無しさん:05/03/15 17:53:01
>>724
>わざわざ処理系依存にする必要はないだろ
>^^^^^^^^^
だったら、(signed ) char の範囲を「わざわざ」-127〜127 にする必要もないはず。
そもそも、char で表せる文字の範囲が高々256個だというのは、アメリカが勝手に決めた規格。
他の諸国、特に中国・韓国・日本など、非常に多くの文字を使う国にとっては非常に不便な規格。
ポータビリティーを重視するなら、(極論を言えば)char を4バイトくらいにすべき。
そうすれば、日本語のコード体系が3種類もあって混乱を招くことも防ぐことが出来る。
それに、負数の表現を2の補数に限定したところで、著しくポータビリティーが損ねられることはない。

>「文字列」とは'\0'で終わるchar配列の事だから無理
int 配列で文字列処理を擬似的に行うことは可能(fgetc, fputc等を使えば)。
730デフォルトの名無しさん:05/03/15 17:54:25
>>727
それを言うなら、2の補数だと -(-128) == -128 になる。
731デフォルトの名無しさん:05/03/15 17:58:08
>>730
お前馬鹿だろ
732デフォルトの名無しさん:05/03/15 18:02:59
負数が1の補数のCってどこにあるの?
733デフォルトの名無しさん:05/03/15 18:04:35
規格厨の頭の中
734デフォルトの名無しさん:05/03/15 18:06:26
規格ってのは、そのコンパイラが存在するかしないかじゃないのに。
735デフォルトの名無しさん:05/03/15 18:11:40
>>725
「で終わる」と「ターミネートされた」の違いが分からない。
説明キボン

>>727
ずいぶんと痛い質問だなw
「」内推測だ。好きなように叩け
「ビット演算の時ぐらいにしか問題にならんだろ
(ビット表現上) -0 == (ビット表現上)0 は真になるのではないか?」

>>729
規格にケチ付けてもしょうがない

> int 配列で文字列処理を擬似的に行うことは可能(fgetc, fputc等を使えば)。
文字および EOF を扱うための int 型
fgetc に渡すのは int 型であり int 型の配列でも文字列でもない
分かってないやつが安易に「文字列」って言葉使うな

>>734 いいこと言った age
736デフォルトの名無しさん:05/03/15 18:12:09
匂いだけで御飯は3杯はいけます
737デフォルトの名無しさん:05/03/15 18:15:09
>>731
馬鹿はお前だ。
8ビットだと、
-128 = 10000000(2)
-(-128) = 01111111(2) + 00000001(2) = 10000000(2) = -128

>>732
まず存在しない。
余程の暇人が1の補数で負数処理するPCを自作すればありうるかも知れないが。
738デフォルトの名無しさん:05/03/15 18:17:03
現実に相手をするのは実装なんだよ
739デフォルトの名無しさん:05/03/15 18:17:56
>>737

やっぱり馬鹿だな。
なぜ馬鹿なのかも判らないようだ。

わざわざ解説までしちゃって。
740デフォルトの名無しさん:05/03/15 18:18:08
ああそうそう>>729がおもしろいからもっと叩いてやる

>ポータビリティーを重視するなら、(極論を言えば)char を4バイトくらいにすべき。
CHAR_BIT を知らなさそうな発言だなw
せめて「char を 32 ビットくらいにすべき」って言ってくれw

ちなみに俺は CHAR_BIT に気を遣うことはないヘタレ規格厨さ
741デフォルトの名無しさん:05/03/15 18:19:16
ここは標準Cの話をするスレなんだ
実装は関係無い
742729:05/03/15 18:19:46
>>735
規格上は、文字列=char の配列 と定義されているかもしれないから、あえて「擬似的に」と付け加えた。
通常は int 配列を「文字列」と呼ばないことは厨房の頃から知っている。
あたかも文字列のように扱う配列を「擬似文字列」とでも呼べば文句ないだろ。
743デフォルトの名無しさん:05/03/15 18:21:47
>>738
スレ違いです
744デフォルトの名無しさん:05/03/15 18:24:18
>>739
何が言いたいのか分からないからちゃんと説明しろよ。
それとも単なる煽りか?

>>740
>CHAR_BIT を知らなさそうな発言だなw
それだって所詮はヘッダファイルで定義されている定数だろ。

>せめて「char を 32 ビットくらいにすべき」って言ってくれw
だから、そのつもりで言っているわけだが。
745デフォルトの名無しさん:05/03/15 18:28:09
charで-(-128)==-128なんて2の補数では当たり前の事だし、
計算をする時は当然考慮するだろ。
何、得意毛に指摘してるんだ?
746デフォルトの名無しさん:05/03/15 18:29:00
得意毛ってなんだよ>IME・・・
747デフォルトの名無しさん:05/03/15 18:30:10
で、1の補数かもしれない事を考慮する人は、
-0!=0になるのを考慮すんの?
748デフォルトの名無しさん:05/03/15 18:31:08
>>745
で、>>727の問題の例は?
749デフォルトの名無しさん:05/03/15 18:32:19
二回も馬鹿と煽っただけの香具師の理由が
>2の補数では当たり前の事
まぬけですな
750デフォルトの名無しさん:05/03/15 18:34:08
こんな単純な例でも問題になるが

n = -n;

if (n == 0) {
・・・
}
751デフォルトの名無しさん:05/03/15 18:34:52
隔離病棟スレとはいえ、酷い有様だな。
実装がこうだからとか言ってる奴は氏ね。
752デフォルトの名無しさん:05/03/15 18:35:45
>>750
ならねえよ。
753デフォルトの名無しさん:05/03/15 18:36:36
>>749

2の補数で、-(-128)が-128である事を指摘して
いったいどうしたかったんだい?
754デフォルトの名無しさん:05/03/15 18:36:40
>>750
n = 0
n = -n;
これでnが-0になる決まりは無いですね
755デフォルトの名無しさん:05/03/15 18:40:19
>>735
>「で終わる」と「ターミネートされた」の違いが分からない。

そこに違いはない。
756デフォルトの名無しさん:05/03/15 18:41:02
>>754

なんねーの?
本当か?

1の補数で -(0x00)は0xFFなんだが
これを0x00にするって規格で決まってるのか?
757デフォルトの名無しさん:05/03/15 18:41:13
>>753
漏れは>>737じゃないわけだが
そんなことにも気づかなかったのか?
758デフォルトの名無しさん:05/03/15 18:44:31
>>756
バ カ ですね。よく読んだら?
759デフォルトの名無しさん:05/03/15 18:47:22
「決まりが無い」を「ならない」と解釈するすごい脳内フィルタを搭載した方がいらっしゃるスレはここですか?
760デフォルトの名無しさん:05/03/15 18:49:32
1の補数な環境なんて無いんだから、
こんな事、話しても無駄なだけだよ。

とはいえ、そういうマシンにCを実装したとしたら、
-0 != 0になるような気がするなぁ。

規格ではどうなってるのかね。
761デフォルトの名無しさん:05/03/15 18:51:00
+0 と -0 が存在するdoubleで実験してみた
-0にはならなかった
もちろん、実装の話だから、さほど意味は無いがね
762デフォルトの名無しさん:05/03/15 18:58:51
1の補数のときは、
  11111111(2) = 0
とすれば解決。
763デフォルトの名無しさん:05/03/15 19:04:52
>>762
(char)0xFFと(char)0x00が区別できないのか・・・
764デフォルトの名無しさん:05/03/15 19:06:02
そもそもは誰かが1バイトのchar型が
-127<=c<=127
とかいうへんてこりな仕様をもちだしたのが原因だろ。
gccなら下限は-127だとか言ってた奴いたけど、
結局-128だしな。そしたらとたんに、2の補数とは限らないとか
言い出しやがってさ。一般的な話をしてんだ。
765デフォルトの名無しさん:05/03/15 19:08:16
>>764
実装の話なら他のスレでやってくれ
766デフォルトの名無しさん:05/03/15 19:13:33
-127<=c<=127 の範囲を最低限保証するという仕様をへんてこりんと言うわけ?
767デフォルトの名無しさん:05/03/15 19:14:58
>>763
だから、全てのビットパターンを区別できる2の補数が優勢になった、と思う。
768デフォルトの名無しさん:05/03/15 19:15:43
そこから、-128は保障されてないから使うなとかなると、
へんてこりんだな。
769デフォルトの名無しさん:05/03/15 19:17:27
それは同意するが、へんてこりんな仕様と言われるのはいかがなものか
770デフォルトの名無しさん:05/03/15 19:20:19
極端な話そんなことが気になるなら多倍長整数・多倍長実数ライブラリ使えよって話になるだろうしな・・・
771デフォルトの名無しさん:05/03/15 19:22:55
>>741がいいこと言った
772デフォルトの名無しさん:05/03/15 19:24:08
実装こそ現実
773デフォルトの名無しさん:05/03/15 19:27:14
>>772
はいはい。そういう話はよそでやってね。
774デフォルトの名無しさん:05/03/15 19:54:19
規格こそ理想。

数の表現が二つある場合、算術演算が通常の計算に合致するように暗黙の変換が行われるもんなんだがなぁ。
正規化って言語レベルの話なんかなぁ。
浮動小数の正規化も勝手にやってくれるのにねぇ。
775デフォルトの名無しさん:05/03/15 19:59:28
コンパイラも作ったことも無いくせに
現実を見つめられない規格厨はお花畑にでも逝ってろ。
776デフォルトの名無しさん:05/03/15 20:01:01
規格外との付き合い方が練れてない奴はヒヨッ子
777デフォルトの名無しさん:05/03/15 20:01:34
777
778デフォルトの名無しさん:05/03/15 20:04:30
漏れが1の補数CPUでCを実装するとしたら
定義直後でなにも代入されてないchar(8bit)は
0xFFで暗黙の初期化をしたい
779デフォルトの名無しさん:05/03/15 20:17:39
>>778
勝手に余計なことをするゲイツOfficeみたいなコンパイラは使いたくない
780619:05/03/15 20:57:00
まだ続いてるw

>>772
確かにそうだが規格があるから実装があるんだぞ
順序を考えロッテ

>>775>>776
確かに俺は規格厨ではあるが現実は現実で受け止めるぞ
こんな考えだ↓いいこと言ってると思う
ttp://pc5.2ch.net/test/read.cgi/tech/1029584140/640
781デフォルトの名無しさん:05/03/15 20:57:14
>>774
それこそ環境に依存する
782デフォルトの名無しさん:05/03/15 21:03:39
>>781
何か問題でも?
783デフォルトの名無しさん:05/03/15 21:07:21
>>760
それはマシンが0と-0を区別するかによるんじゃないの?
Cでそこまで規定してるの?
784デフォルトの名無しさん:05/03/15 21:11:24
規定されてないから、1の補数の場合が云々言ってる奴は、
そんな事まで考慮してコーディングしてるのか?って話。
785デフォルトの名無しさん:05/03/15 21:21:00
>規格があるから実装

実際は、実装が先の場合が多いがなー
786デフォルトの名無しさん:05/03/15 21:21:55
>>785
詳しく話をきかせてくれないか
787デフォルトの名無しさん:05/03/15 21:23:24
皆に忘れ去られた「絶対値表示」方式。
788デフォルトの名無しさん:05/03/15 21:31:28
(´ω`)
789デフォルトの名無しさん:05/03/15 21:39:19
書籍として販売されているCプログラミングFAQは
>>1のリンク先の資料と同一ですか?
790619@規格厨:05/03/15 21:40:54
>>785 あーそうだった。そう考えると gcc ってすごいよな

気になって眠れないので俺が代表して規格を調べたぞ
みんな 6.2.6.2 整数型 を嫁

符号ビットが1の時次の方法を使うみたいだ
・符号と絶対値
・2の補数
・1の補数

-0についての説明するぞ
(1) -0 のビット表現をトラップ表現にするか通常の値であるかが処理系定義
(2) 詳細は省くが -0 を生成するには3パターンしかない
(3) (2)の際に-0を生成するか通常の0を生成するかは未規定
(4) -0をオブジェクトに格納するときに通常の0になるかも未規定

結論 2の補数マンセー
791デフォルトの名無しさん:05/03/15 21:41:01
まあベンダーが拡張を行ってユーザーが支持し、他のベンダーも真似をして、
その拡張が規格になるという例は枚挙にいとまが無いし。
そもそも新しい規格は各委員の脳内から出てくるわけでは無い
792デフォルトの名無しさん:05/03/15 21:43:42
>>789
本の方が充実してる
793デフォルトの名無しさん:05/03/15 21:48:25
-127<=が最低限保証されてるってのもどうかな。
2の補数表現以外のケースを想定するならchar型だって
8ビットって決まってるのか?って話になっちまう。
そういう極端に稀なケースを想定したらもともとキリがないって
ことで、-127<=とするのは意味がないことだと思う。
794デフォルトの名無しさん:05/03/15 21:50:46
>>786
そうでなければ entry という予約語があったはず
795619@規格厨:05/03/15 21:50:58
>>793
ちょっと前のログ読もうぜ。
だから CHAR_BIT だって。最低で8なの。分かった?
796デフォルトの名無しさん:05/03/15 21:51:22
ただの基準が違うだけでここまで議論できるやつはある意味
すごいね。
797デフォルトの名無しさん:05/03/15 21:59:03
>>795
いくら喚いてもお願いはお願いだからな・・・
798デフォルトの名無しさん:05/03/15 22:03:16
>>797
は?
799デフォルトの名無しさん:05/03/15 22:11:24
ISOやANSIやJISが「お願い」なのか。やれやれ。
800デフォルトの名無しさん:05/03/15 22:14:18
>>799
じゃ、逆らったらどうなるか聞こうか坊や
801デフォルトの名無しさん:05/03/15 22:18:48
マシン語レベルで自明、
フィジカルシフト、ロジカルシフトがある。
802デフォルトの名無しさん:05/03/15 22:23:44
>>800
ねじに例えようか。
ANSIやJISで、ねじの規格はきまっている
規格通りに作った物はパッケージにも記載できる
だが、規格外のねじを作ったらいけないとかいうことは無い
単に、ANSIだのJISだのの規格じゃ無いってだけだ
ANSIやJIS規格のねじがほしけりゃそれを使うし、
それ以外のねじが必要で、ほしけりゃそっちを使う
803デフォルトの名無しさん:05/03/15 22:25:00
804デフォルトの名無しさん:05/03/15 22:25:46
>>803
ホームラン級のバカだな
805デフォルトの名無しさん:05/03/15 22:26:16
>>802
違うよ、ソフトの世界はインチねじ。
先にやってんだから国際標準なんぞ糞食らえ、業界スタンダードだ!
806デフォルトの名無しさん:05/03/15 22:26:21
単発の罵倒語w
807デフォルトの名無しさん:05/03/15 22:29:40
日本国憲法すらお願いと言い出しそうな勢いだな
808デフォルトの名無しさん:05/03/15 22:33:23
ご神体じゃねえな
809デフォルトの名無しさん:05/03/15 22:33:28
ANSI準拠・JIS準拠を名乗りたいなら守れってことだろ
逆らいたいなら名乗らなければいいだけの話
名乗っておきながら逆らったら下手すると訴えられるかもしれないな
810デフォルトの名無しさん:05/03/15 22:34:36
どいつもこいつも平然と例外規定を設けているな
811デフォルトの名無しさん:05/03/15 22:39:38
うるせー、俺が業界標準だ!
812デフォルトの名無しさん:05/03/15 22:49:18
813デフォルトの名無しさん:05/03/15 23:01:03
> -127<=が最低限保証されてるってのもどうかな。

規格にそうかいてあるんだからしかたない。 ぼけ
814デフォルトの名無しさん:05/03/15 23:01:58
すみません Cの標準規格では、
関数の引数の最大個数は、最低でもいくつまでサポートしていなければ
いけないんでしたっけ?
どなたかおしえてください。
815デフォルトの名無しさん:05/03/15 23:03:23
> それはマシンが0と-0を区別するかによるんじゃないの?

このぼけ、1の補数方式ということばさえしらんのか ぼけすぎ
816デフォルトの名無しさん:05/03/15 23:03:44
>>814
文法上なら2の16乗くらいに制限するな。
817デフォルトの名無しさん:05/03/15 23:04:17
構造体使え ぼけ
818デフォルトの名無しさん:05/03/15 23:05:04
おまえら1の補数方式(+0のほかに-0がある)のコンパイラーをつかったことないくせに
えらそうなこというな。
それではちゃんと +1 と -0 はbitパターンがちがうだけでなく、
==でくらべて等しくないんだぞ。しかもこれはCの規格にかなっている。
そんなこともしらんのかぼけ
819619@規格厨:05/03/15 23:05:31
>>815
空気嫁。ぼけ
820デフォルトの名無しさん:05/03/15 23:05:52
> 定義直後でなにも代入されてないchar(8bit)は

ぼけ。定義されてたら値はきまってるだろ ぼけやろうめ
宣言直後といいたいのか このぼけは
821デフォルトの名無しさん:05/03/15 23:06:37
> 皆に忘れ去られた「絶対値表示」方式。

そんな名前はない。ぼけめ。
ちゃんと正しい言い方で言え。
822デフォルトの名無しさん:05/03/15 23:07:01
ぼけぼけうるさいよぼけ
823デフォルトの名無しさん:05/03/15 23:07:16
> そんな事まで考慮してコーディングしてるのか?って話

してないおまえが ぼけ。
ふつうしてる。
824デフォルトの名無しさん:05/03/15 23:11:28
そもそも、Cの規格が処理系依存だらけなのは、
処理系に合わせてプログラミングをしろという事だ。
825デフォルトの名無しさん:05/03/15 23:12:54
スレ違いどっか逝け
826デフォルトの名無しさん:05/03/15 23:15:12
ボケの花は綺麗だな
827デフォルトの名無しさん:05/03/15 23:15:28
おまえがどっか逝け
828デフォルトの名無しさん:05/03/15 23:16:56
規格は処理系のためにあるのだから当たり前だ
そんなことでブーブー言うのは規格が自己目的化している
言語オタクだけ
829デフォルトの名無しさん:05/03/15 23:18:55
誰にいってんの
830デフォルトの名無しさん:05/03/15 23:21:32
なんだ急にいつものレベルに下がってるじゃないか
ネタきぼん
831ゆぅ:05/03/15 23:28:16
あのぉ、掲示板などの携帯投稿からの回線特定方法教えてもらえませんか??
困っていることがあるんです…
832デフォルトの名無しさん:05/03/15 23:29:14
>>831
京都府警の方ですか?
833デフォルトの名無しさん:05/03/15 23:31:40
>>831
www.web110.com
こちらへどうぞ
834ゆぅ:05/03/15 23:36:36
違いますが…
あるサイトに知り合いの事をかかれてまして・・・
835デフォルトの名無しさん:05/03/15 23:40:51
あ、けっきょくだれもわからないのですね? > 規格で
引数の数なんて基本なのに
836デフォルトの名無しさん:05/03/15 23:43:32
>>835
知らん。自分で調べろ。
837デフォルトの名無しさん:05/03/15 23:47:34
なんだおまえらそんなこともわからんのか
838デフォルトの名無しさん:05/03/15 23:48:33
>>837
そうだ。自分で調べろ。
839デフォルトの名無しさん:05/03/15 23:51:50
基本を知らない835
840デフォルトの名無しさん:05/03/15 23:54:07
引数の数なんて規格上無限で良いじゃん。
でも実装上で制限あるだろうに。
俺は、規格もコンパイラも平等だと思っている
841619@規格厨:05/03/15 23:55:15
>>814
5.2.4.1 翻訳限界
− 一つの関数定義における仮引数の個数(127)
− 一つの関数呼び出しにおける実引数の個数(127)
842デフォルトの名無しさん:05/03/16 00:17:02
>>813
なんの規格?ソースさらしてくれ
843デフォルトの名無しさん:05/03/16 00:19:19
localtime() は、何を基準に時間を合わせているのですか?
世界標準時間からの差をライブラリが持っているのですか?
日本でコンパイルしたプログラムをアメリカで実行すると、
日本の時間になってしまうのですか?
844デフォルトの名無しさん:05/03/16 00:22:06
>>842 ログ嫁
845デフォルトの名無しさん:05/03/16 00:33:00
SCHAR_MINがPOSIXでどうなってるのか、しらべてみた
、ところ

{SCHAR_MIN}
Minimum value of type signed char.
[CX] [Option Start] Value: -128 [Option End]

~~~
[CX][Option Start] Extension to the ISO C standard [Option End]
The functionality described is an extension to the ISO C standard.
Application writers may make use of an extension as
it is supported on all IEEE Std 1003.1-2001-conforming systems.

但し書きつきで、-128となっており、
846デフォルトの名無しさん:05/03/16 00:33:34
~~~
may

Describes a feature or behavior that
is optional for an implementation that conforms to IEEE Std 1003.1-2001.
An application should not rely on the existence of the feature or behavior.
An application that relies on such a feature or behavior
cannot be assured to be portable across conforming implementations.

なんだか、必須条件ではないようなことが書いてあり、
847デフォルトの名無しさん:05/03/16 00:34:44
~~~
Strictly Conforming POSIX Application
A Strictly Conforming POSIX Application is an application
that requires only the facilities described in IEEE Std 1003.1-2001.
Such an application:
...
7
For the C programming language,
shall not exceed any minimum implementation limit
defined in the ISO/IEC 9899:1999 standard, unless
the System Interfaces volume of IEEE Std 1003.1-2001 specifies
a higher minimum implementation limit.

~~~
Conforming POSIX Application
ISO/IEC Conforming POSIX Application

An ISO/IEC Conforming POSIX Application is an application
that uses only the facilities described in IEEE Std 1003.1-2001
and approved Conforming Language bindings
for any ISO or IEC standard.


POSIXに厳格に準拠するには、SCHAR_MIN == -127
ふつうに準拠するには、 -127 <= SHCAR_MIN <= -128
のようだ。
848デフォルトの名無しさん:05/03/16 00:36:33
なんでPOSIXの話がでてくるんだ
849デフォルトの名無しさん:05/03/16 00:40:41
訂正:
ふつうに準拠するには、 -127 以下で任意

-127以上-128以下だと
CXオプショングループ拡張に準拠と書ける、
のかなすみませんwかりません
850デフォルトの名無しさん:05/03/16 00:46:10
こういう引用は失礼だよ、URL示せば良いよ。
851デフォルトの名無しさん:05/03/16 00:51:53
>>850
なに言ってんだこのボケは
852デフォルトの名無しさん:05/03/16 01:04:32
845ですが
たしかに、引用が、ちょっと見苦しいので
その周辺を、あぼん依頼しときました。
あと、>>851は、ちがう人です
853デフォルトの名無しさん:05/03/16 01:07:23
そんな理由じゃ消されないだろ・・・
854デフォルトの名無しさん:05/03/16 04:12:47
すいません。質問なのですが。

#include<stdio.h>

int tasizan(int i, v);

int main()
{
int i, v;

printf("足し算\n一つ目の数字を入力して下さい");
scanf("%d",&i);
printf("二つ目の数字を入力して下さい");
scanf("%d",&v);

tasizan(i, v);

return 0;
}

int tasizan(int i, v)
{
printf("答え\n%d",i+v)

return 0;
}

実行はできるのですが、エラーが出てるのです。

855デフォルトの名無しさん:05/03/16 04:15:07
どこを直したらエラーが出なくなるのか、教えて下さい。

エラー E2303 tasizan_pointa_040316.c 3: 型名が必要
警告 W8065 tasizan_pointa_040316.c 14: プロトタイプ宣言のない関数 'tasizan' の呼び出し(関数 main )
エラー E2303 tasizan_pointa_040316.c 19: 型名が必要
*** 2 errors in Compile ***
856デフォルトの名無しさん:05/03/16 04:15:23
>>854
コンパイルすら通らないはずだが?
857デフォルトの名無しさん:05/03/16 04:17:53
>>855
ちゃんと、3行目と19行目がヘンだと書いてるじゃないか
もっとも、それd
858デフォルトの名無しさん:05/03/16 04:25:00
>>856
僕もエラーがあるのに。。と思いました。
859デフォルトの名無しさん:05/03/16 04:29:07
>>857
int tasizan(int i,int v);
で直りました。
ありがとうございました。
860デフォルトの名無しさん:05/03/16 04:44:49
質問ですが、
sizeof演算子で構造体のメンバだけを調べたい場合は
どのように書けばいいのでしょうか?
または可能でしょうか?

struct tag_data{
char name[32];
char word[12];
};
たとえばこのような構造体があって
nameのサイズだけsizeofで調べたい場合です。

struct tag_data data;
sizeof(data.name);
の様に宣言した構造体変数から調べる事は出来るのですが、
型名から指定する方法が分かる方がいましたらご教授下さい。

イメージ的にはsizeof(tag_data::name);かなーと試したりしたのですが
駄目でした…。
861デフォルトの名無しさん:05/03/16 05:08:27
>>860

出来ないから諦めろ
862デフォルトの名無しさん:05/03/16 05:14:13
>>860
sizeof(((struct tag_data *)0)->name)
863860:05/03/16 05:23:24
>>862
今実際試してみて、サイズを得る事が出来ました。
有難うございます。感謝致します。

Googleで1時間以上調べても見つからなかったので本当に助かりました。
(探し方が悪いのかもしれませんが…)
864デフォルトの名無しさん:05/03/16 05:35:03
ぬるぽ・・

まぁsizeofはアクセスしないからいいのか・・
865デフォルトの名無しさん:05/03/16 05:38:20
昔同じ質問(つーか話題を提供)をしたなー。
>>862の解決法は知ってたけど、もちっとエレガントな解はないかな、って。
結局なかったみたいだけど。
866デフォルトの名無しさん:05/03/16 05:40:51
>>864
規格では保証されてないけど
処理系が安全として使っている場合が多いよ。
使ってるコンパイラのstddef.hを覗いて、offsetofの実装を見てごらん。
867デフォルトの名無しさん:05/03/16 05:41:50
最初からサイズ取得の場所で変数にアクセス出来るように
設計する方がエレガント。
868デフォルトの名無しさん:05/03/16 05:52:52
んー、俺が書いた時には
実際に使用するのとは全然別の場所で、
設定ファイルから読み込んだ値の上限チェックに使おうと思ったんだよね。
使いもしない変数を宣言するのも美しくないし
初期化しないとコンパイラが文句言うだろうしって感じで
なんとか変数を使わないで取得できないかというネタで。

そういう場合は、結局、キャストしてその型の変数に見せかけるしかないわけで。

俺にとってはもう終わった話だから、どうでもいいけど。
869デフォルトの名無しさん:05/03/16 06:08:49
そういう時は、あらかじめ配列要素をtypedefしとくなあ。

typedef char tag_data_name[32];
って感じで。

構造体から要素だけ取り出す時にも、
そのまま使えるし。
870869:05/03/16 06:12:03
あ、>>860
871デフォルトの名無しさん:05/03/16 06:58:13
どれだけ>>1を読み直しても「標準C以外の話題はアウト」と解釈できない
そういう意味で「標準Cでできないこと」という枠を設けたようには見えない
俺の読解力が足りないんだろうか
872デフォルトの名無しさん:05/03/16 07:58:47
> 引数の数なんて規格上無限で良いじゃん。


はあ? > で良いじゃん

おまえがどう思うかなんか聞いてねーんだよ ぼけ
873デフォルトの名無しさん:05/03/16 08:00:30
> どこを直したらエラーが出なくなるのか、教えて下さい。

scanfを使わないようにする。
874デフォルトの名無しさん:05/03/16 08:01:23
> sizeof(tag_data::name);かなーと

はあ? どこからそんなもんがでてくるんだよ ぼけ > かなー
875デフォルトの名無しさん:05/03/16 08:03:20
> 設定ファイルから読み込んだ値の上限チェックに使おうと思ったんだよね。

ぼけ。そもそもファイルから読み込むときに構造体の先頭位置あわせて読み込むような
やつはぼけだ。
876デフォルトの名無しさん:05/03/16 08:03:57
> どれだけ>>1を読み直しても「標準C以外の話題はアウト」

としかよめないよな。
877デフォルトの名無しさん:05/03/16 08:10:53
>>875
そもそもファイルから読み込むときに構造体の先頭位置あわさないで読み込むようなやつはぼけだ。
878デフォルトの名無しさん:05/03/16 08:20:57
次スレ
【隔離】Cの規格なら俺に訊け! Part.105【病棟】
http://pc5.2ch.net/test/read.cgi/tech/1065535118/
879デフォルトの名無しさん:05/03/16 08:24:34
>>875
日本語が不自由な方は、書き込まない方がよいですよ。
880デフォルトの名無しさん:05/03/16 08:31:55
"設定ファイル"には
X_DATA_LIMIT = 100
などと書かれていて、
この"100"が、内部使用のデータの上限を超えてないかチェックするために
「メンバーのsizeof」が必要になるの。

メンバーに直接読み込むのなら、変数が存在するはずだから
それを経由してsizeofを取ればいいだけの話。

その程度のことも理解できない頭の悪さを
あいかわらず見せつけてくれてるね。
さすがだよ。
881デフォルトの名無しさん:05/03/16 08:49:52
> この"100"が、内部使用のデータの上限を超えてないかチェックするために

だったら型名でsizeofすりゃいいだけじゃん
882デフォルトの名無しさん:05/03/16 08:50:38
> メンバーに直接読み込むのなら、変数が存在するはずだから

意味不明。直接読み込むなら変数はいらない。
883デフォルトの名無しさん:05/03/16 08:51:27
1つmallocしてみてしらべたらfreeすればいい ;-)
884デフォルトの名無しさん:05/03/16 08:52:58
たとえば、メンバーが配列でその「最大要素数」を超えていないかとかならわかるが、
sizeofが必要になるのがかなりまぬけなロジックにちがいない。
885デフォルトの名無しさん:05/03/16 09:00:59
>>881
どうやって?>>860は読んだかい?

これ以上頭の悪さを晒すのは
_Bool10種類とstrcasecmpが標準に含まれる規格と
分岐予測ミスが処理速度を遅くする原因にならない最近のプロセッサ
最低この3つを挙げてからにしたほうがいいよ。
886869:05/03/16 10:18:27
>これ以上頭の悪さを晒すのは
>Bool10種類とstrcasecmpが標準に含まれる規格と
>分岐予測ミスが処理速度を遅くする原因にならない最近のプロセッサ
>最低この3つを挙げてからにしたほうがいいよ。

頭悪そう
887デフォルトの名無しさん:05/03/16 10:25:14
>>886
同じ穴の狸
888デフォルトの名無しさん:05/03/16 10:34:46
このスレはボケの森林ですね。
889デフォルトの名無しさん:05/03/16 10:41:58
まぁ、>>860の例で言ったら、
文字配列の大きさを#defineで定義しといて、それで定義・参照するな。
配列サイズ直書きに、sizeofなんか使わないね。
890デフォルトの名無しさん:05/03/16 11:42:21
一昨日からCの勉強始めたんだけど、覚える意味あるよね?
Javaとどっち勉強しようか悩んだから複雑な気持ち。
891デフォルトの名無しさん:05/03/16 11:44:46
>>890
将来何をするかにもよる。
892デフォルトの名無しさん:05/03/16 12:41:59
>>890
そんなもん、藻前次第だろ。
893デフォルトの名無しさん:05/03/16 12:44:43
>>890
覚えて絶対に損は無い。
Cを覚えたら、C++も覚えるとJavaを理解しやすくなる。
Cのポインタが一番ネックになると思うけど、Cは(殆ど)全ての言語の基本だから、
何をしていいか分からなかったらまずCの勉強をお勧めする。
894デフォルトの名無しさん:05/03/16 13:22:29
>>890-893
他所で。
895デフォルトの名無しさん:05/03/16 14:38:08
localtime() は、何を基準に時間を合わせているのですか?
グリニッジ天安門時間からの差をライブラリ自体が持っているのですか?
日本でコンパイルしたプログラムをアメリカ等で実行すると、
日本の時間になってしまうのですか?
896デフォルトの名無しさん:05/03/16 14:39:09
そうそ
897デフォルトの名無しさん:05/03/16 15:09:13
>>895
setlocale(LC_TIMEで変更出来るし,処理系によっては環境変数TZを読んで決めていることもある。
898デフォルトの名無しさん:05/03/16 15:16:35
>>897
くだらんネタに反応するなボケ
899デフォルトの名無しさん:05/03/16 15:32:03
アメリカ製(あるいは英語版)のコンパイラを使うと、
localtime()で得られるのはアメリカの時間になるの?
それとも、日本国内でコンパイルすれば大丈夫?
900デフォルトの名無しさん :05/03/16 16:07:53
すいません初心者なんですけど、bmpファイルを読み込んで拡大、縮小するにはどうすればいいですか?
901デフォルトの名無しさん:05/03/16 16:09:59
あなたとわたしはすれ違い
902デフォルトの名無しさん:05/03/16 16:56:55
標準CだけでBMPを伸縮するんだろ。スレ違いではないぞ。
903デフォルトの名無しさん:05/03/16 16:59:17
DDBだと難しいとかなるんでない?
904デフォルトの名無しさん:05/03/16 19:01:07
>>900
・bmpファイルのヘッダ(詳しい形式はググれば分かる)から画像サイズの情報を得る
・ヘッダを飛ばして画像データを読み込む。bmpファイルのy座標は通常のディスプレイ座標と異なり、一番下が0なので注意。
・整数倍に拡大したいなら、

int bmpimage[SIZE_Y][4*SIZE_X];
int expanded[N*SIZE_Y][4*N*SIZE_X];
int i, j, k, l, c, d, r, g, b;
/* bmpimage にbmpファイルのデータを読み込む */
for (i=0; i<SIZE_Y; i++) {
for (j=0; j<SIZE_X; j++) {
r = bmpimage[i][4*j];
g = bmpimage[i][4*j+1];
b = bmpimage[i][4*j+2];
for (k=0; k<N; k++) {
for (l=0; l<N; l++) {
expanded[i*N+k][4*(j*N+l)] = r;
expanded[i*N+k][4*(j*N+l)+1] = g;
expanded[i*N+k][4*(j*N+l)+2] = b;
}}}}
/* bmpimage のヘッダをコピーしてサイズのデータだけ書き換えて expanded のヘッダにして、データの書き出しは y 座標に気をつけて行う */

という感じで出来る。

・非整数倍に拡大したいなら、double 型を使ってピクセルへの色の配分を調節するか、それが面倒なら半端なピクセルを捨てるなりする。

ヘッダファイルのデータ構造は思ったほど複雑ではないから、データ構造通りの構造体を作って読み込めば簡単。
但し、fread で読み込む際に sizeof(構造体) とすると思ったように読み込めないから、ヘッダファイルのサイズを数値で直接指定する。
905デフォルトの名無しさん:05/03/16 19:07:06
>>904
そのソース、自分で試してみた?
906デフォルトの名無しさん:05/03/16 19:15:08
Windows bitmapだかなんだかわかんないのに無理やりやるのに
感動した!
907904:05/03/16 19:31:17
>>905
試していないけど、動くはず。
今試してみる。誰か何でもいいから bmp ファイル(フルカラーで無圧縮の)キボン。
908デフォルトの名無しさん:05/03/16 19:44:47
たまたま動く画像もあるだろうな。
909デフォルトの名無しさん:05/03/16 19:48:23
│    _、_
│  ヽ( ,_ノ`)ノ 残念 それは私のおいなりさんだ
│ へノ   /
└→ ω ノ
      >
910デフォルトの名無しさん:05/03/16 21:02:27
>>908
それは gifファイル くらいしかないと思うのだが。
規格上、bmp ファイルは動かないはず。
911デフォルトの名無しさん:05/03/16 21:07:51
DIBとDDBとがあって、純CでどのOSでも開けるビットマップはDIB。
プラットフォーム依存で、例えばWindowsのMSPAINTとかが吐き出すビットマップはDDB。
前者の拡張子はdib、後者がbmp
912デフォルトの名無しさん:05/03/16 21:12:12
DDBはなんで開けないの?
913デフォルトの名無しさん:05/03/16 21:22:13
Device-Dependend Bitmaps デバイス依存ビットマップ
Device-Independend Bitmaps デバイス独立ビットマップ
914デフォルトの名無しさん:05/03/16 21:25:42
OSには依存してないじゃん。
915デフォルトの名無しさん:05/03/16 21:26:13
>>910
mngもあるぞ
ttp://www.ritsumei.ac.jp/~akitaoka/
も見ておくといい
916デフォルトの名無しさん:05/03/16 21:31:04
>>914
だな
M$ 発祥というだけ
広まらない理由は G*F みたいなことでもないのに
そこがわかってない人が意外に多いんだね
917デフォルトの名無しさん:05/03/16 21:32:56
MacのDDBはPICTだっけ?あれはベクターとドロー両方混在だったような
918910:05/03/16 21:36:10
>>915
dクス。
919デフォルトの名無しさん:05/03/16 21:41:39
>>915
こういうのを最悪に利用したのが蓮なんだろうな
920デフォルトの名無しさん:05/03/16 21:50:21
>>915
それは画像が「本当に」動いているわけじゃないのだが・・・



見てて酔いそうになった。車酔いをしやすい人はあまり見ない方が吉。
921デフォルトの名無しさん:05/03/16 21:54:04
なに?画像がうごいてるわけじゃなかったのか。しらなかったなあ。(棒読み)
922デフォルトの名無しさん:05/03/16 22:31:03
>911
MSPAINT が吐く bmp も DIB じゃないのか?
試しに DIB と bmp でぐぐってみても同じものとして扱ってるようだが。
ttp://www.google.co.jp/search?as_q=bmp+DIB&btnG=%8C%9F%8D%F5&lr=lang_ja&num=100
スレ違いだが、Windows 上で DDB って言ったら HBITMAP のことじゃないの?
923デフォルトの名無しさん:05/03/16 22:34:28
>>922
ホントだ。間違ってたよおいら。
DDBって何だ?
924デフォルトの名無しさん:05/03/16 22:55:56
>>921
ぼうよみならもっとそれらしいぶんしょうでかいたほうがいいぞ
925デフォルトの名無しさん:05/03/16 22:59:13
全クダ 言葉ノ遣イ方ガ成ットラン
926デフォルトの名無しさん:05/03/17 01:02:36
よかったら見てみて下さい。
cygwinでコンパイルできると思います。
再帰呼び出しのcheck関数関連の
アルゴリズムってこんな感じでいいのか不安です。

自分独学で今K&Rっていう本で勉強しています。
まだ第1章の章末問題ですけど…
プログラムってこんな感じで書けばいいのかよく分からないし、
自分の作ったものを見てくれる人が誰もいません。
だからもしよかったら誰かに見てもらいたいです。
ttp://tool-ya.ddo.jp/2ch/trash-box/file/20050317005104120.c
927デフォルトの名無しさん:05/03/17 01:47:30
>>926
文法チェックならスタック使うとすっきりするかも。
928デフォルトの名無しさん:05/03/17 01:58:52
> このスレはボケの森林ですね。

すみません。よびました?

(ちなみにわたしのみょうじは'もりばやし'です)
929デフォルトの名無しさん:05/03/17 02:49:14
> localtime() は、何を基準に時間を合わせているのですか?
> グリニッジ天安門時間からの差をライブラリ自体が持っているのですか?

いいえ。本初子午線はパリが基準です。ブリテン島みたいな野蛮人の住むところは、
「たまたま時間帯が同じ」なだけです。
930926:05/03/17 03:23:00
>927さんレスありがとうございます。
スタック版です。
ttp://tool-ya.ddo.jp/2ch/trash-box/file/20050317031827148.c

すっかり再帰呼び出しを使って作るとばかり考えていました。
スタックの方が明らかに簡単に作れました…orz
931デフォルトの名無しさん:05/03/17 10:18:07
>929
カエル野郎キター
932デフォルトの名無しさん:05/03/17 22:17:14
1から100までの自然数を素因数に分解して出力しなさい

誰かC言語でプログラム書いてもらえませんか?
933デフォルトの名無しさん:05/03/17 22:24:50
ここは宿題スレじゃないんで・・・
934デフォルトの名無しさん:05/03/17 22:33:37
マルチじゃねえか
> 誰か
だったらおまえが書け
935デフォルトの名無しさん:05/03/17 22:42:16
>>932
if (素因数) {
    printf("%d ", 素因数);
}
936デフォルトの名無しさん:05/03/17 23:05:18
配列を自作関数に渡す時に、a[5]なら先頭アドレスのaを渡すというのは出来たのですが、
構造体配列、a[5].name などの先頭アドレスを関数に渡したい時はどうすればよいのでしょうか?
937デフォルトの名無しさん:05/03/17 23:15:31
>>936
意味不明。
何を渡したいんだ?
938デフォルトの名無しさん:05/03/17 23:17:58
>>936
a[5].nameだろ?引数の型はstruct hoge*じゃなくてchar*だからな。
939デフォルトの名無しさん:05/03/17 23:19:36
アンパサンドの書き忘れ?
&(a[5].name)
940デフォルトの名無しさん:05/03/17 23:23:07
配列に&は・・・std::stringの可能性もあるか。
941デフォルトの名無しさん:05/03/17 23:27:44
わかりにくくてすみません。要素数5の配列a[0]からa[5]を関数に渡す時、aを渡すと関数内で
a[0]からa[5]までの内容を参照したりできるのですが、それと同じように
要素数5の構造体配列aのメンバ name a[0].nameからa[5].nameを関数に渡し、
a[0].name からa[5].name を参照したり書き換えたりしたいのですが、どのように関数に渡せばよいのでしょうか?
普通の配列を渡すようにa.name としてもダメでした。
942デフォルトの名無しさん:05/03/17 23:29:49
要素数5なのでa[4]まででした。すみません。
943デフォルトの名無しさん:05/03/17 23:37:13
>>942
そんなこと無理だと思うけど。
なんでaを渡して、a[i].nameでアクセスしちゃだめなの?
944デフォルトの名無しさん:05/03/17 23:50:15
>>943 メンバだけを渡さずに、構造体配列そのものを渡せばよいだけですね。
その通りでした。疑問が解決しました。ありがとうございました。

945デフォルトの名無しさん:05/03/17 23:57:01
なんじゃこりゃ
946デフォルトの名無しさん:05/03/18 00:14:19
そっとしといてやれ
947デフォルトの名無しさん:05/03/18 00:18:57
>>941
void hoge(char *name, size_t size, size_t num)
{
  int i;

  for (i=0; i<num; i++, name += size)
    printf("[%d] %s\n", i, name);
}

    :
    :
  struct nantoka a[5];
    :
  hoge(a[0].name, sizeof *a, 5);

…って、折角書いたのに!書いたのに!
948デフォルトの名無しさん:05/03/18 00:19:25
Tree is Justice
お前ら構造体を丸ごと渡すなよ
949デフォルトの名無しさん:05/03/18 00:32:45
NULL はヌル
'\0' はナル って読むと、どっかのサイトで見たんですが、これは正しいでしょうか?
950デフォルトの名無しさん:05/03/18 00:37:31
>>949
そのサイトのURLを出せ
話はそれからだ
951デフォルトの名無しさん:05/03/18 00:38:06
>>949
円ゼロ 又は文字ヌル
又は ナォウ
952デフォルトの名無しさん:05/03/18 00:38:57
953デフォルトの名無しさん:05/03/18 00:51:41
なるぽ。
954デフォルトの名無しさん:05/03/18 00:56:30
955デフォルトの名無しさん:05/03/18 01:02:37
>>954
そのサイトを作った人間に根拠を聞けばいいじゃないか。
どこの世界の一般的なのかを。
956デフォルトの名無しさん:05/03/18 01:08:12
\0は「ぬるぽちゃー」と最近は読んでる
957デフォルトの名無しさん:05/03/18 01:55:05
fgets( buf, 256, stdin ) ;
sscanf( buf, "%[^\n]\0", buf ) ;
これで \n って取れるんですか?
958デフォルトの名無しさん:05/03/18 01:56:24
こういう使い方みたけど、このやり方どうなんかなぁって思って質問しますた。
959デフォルトの名無しさん:05/03/18 02:09:06
(もしかしたら大丈夫なのかもしれないけど)
規格上保証されてないだろうから、俺はやらない。

もちろん、sscanfでinとoutを同じ領域にする事ね。

[]の使い方は別に普通だし
文字列リテラルにわざわざ'\0'なんて入れないし
そもそも'\n'を取るだけならstrchrとかを使うけどね。
960デフォルトの名無しさん:05/03/18 02:12:17
949 はぼけ
どっちもナルだろ。ナルポインターとナル文字
961デフォルトの名無しさん:05/03/18 02:16:12
また現れたか
962デフォルトの名無しさん
>>959
ありがとうございました m(_ _)m