C言語なら、俺に聞け! <13>
レス数が1000を超えています。これ以上書き込みはできません。
0001ハイソサエティーハッカー日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったらオレに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通だ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するようなヤツはこれでも買え。
これでわからない、救いがたいヤツはあきらめろ。
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419
・前スレ C言語なら、オレに聞け! <12>
http://pc.2ch.net/test/read.cgi/tech/1012348974/l50
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGぜんて?
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGネタだYO!!(w
#マジレス カエシチャ ダメ ダッテ
0007デフォルトの名無しさん
NGNG「明解c」を読んだら普通はどれくらいのレベルのソフトが作れるんですかね?
この1冊でフリーソフトで公開できるくらいのものが作れるんでしょうか?
0008デフォルトの名無しさん
NGNGフリーソフトって、いろんなレベルがあるしなぁ。
0009デフォルトの名無しさん
NGNGどれくらいってのがどんなもんか分からんけど
Hello、Worldだってフリーで出そうと思えば出せるっしょ。
君の事を知らないんでなんだけど
基本的に入門書一冊読んだくらいでは無理。
0010デフォルトの名無しさん
NGNGどうもありがとう。
他にどんなことしていけばいいですかね?
「明解c」にはifとかwhileとかの説明は載ってますが
ある程度のプログラム?の作り方とかは書いてないみたいなんですけど・・・
K&R読んだら作れるんですかね?
0011デフォルトの名無しさん
NGNGなんか根本的にカンチガイしてないか
0012デフォルトの名無しさん
NGNGK&R読んだら作れるようになるということはないよ。
演習問題を解くのは力になると思うけど。
ソース公開されてるソフト探して
解析したり改良したりするのがいいんじゃない?
0013デフォルトの名無しさん
NGNG違うんです。文法を覚えた後の設計図?みたいなのの書き方はどうやって身に付けていくんですか?
0014デフォルトの名無しさん
NGNG他人のソースをいっぱい読め。
で、なんでもいいから作り倒せ。
設計図と言うとUMLとかあるが
それを勉強するとC++とかJavaとかに手を出したくなる罠。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG本なんかを見たのですが、今ひとつ構造体と共用体の差がわかりません。
教えてもらえないでしょうか?
0017デフォルトの名無しさん
NGNG構造体は普通に構造体。
共用体は、メンバがメモリを共有する。
例) union { int x; int y; }; だったら、 x を書き換えると y も変わる。
絶対unionじゃなきゃいけないって理由でもない限り、普通はunionは使わない。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGchar low_byte;
char high_byte;
struct{
short word;
};
};
こんな感じかな。
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGstruct Hoge {
int foo1;
int type; ← ここの値によって、この後のフォーマットが変わる!
:
};
こういう時、
struct Hoge {
int foo1;
int type;
union {
struct Hoge1 hoge1;
struct Hoge2 hoge2;
:
:
};
みたいな。
そういや X Window System のイベント構造体もこんな感じになってる。
002416
NGNG難しいですが、うっすらとわかったような気がします。
ありがとうございました。
0025超初心者
NGNG〜c 19: illegal character
ってどういう意味ですか?
0026デフォルトの名無しさん
NGNG英語の辞書持ってないの?
英単語検索の仕方知らないの?
0027デフォルトの名無しさん
NGNGコンパイル中にレジストリが壊れたという警告です。
再起動した方が良いです。
0028デフォルトの名無しさん
NGNGアマゾン見たら、「作ったがわからなかった」っていうレビューに
ものすごく賛成票がついてました。
あんまり評判はよくないのでは?
0029デフォルトの名無しさん
NGNG作って「解らないことが」わかる
なのでは
0030デフォルトの名無しさん
NGNG賛成してる大部分は、読んでもいない 2ちゃんねらと思われ。
本自体はいいと思うんだけど、如何せん著者がね…
0031デフォルトの名無しさん
NGNG絶対にそうだね。他の票とあまりに差がありすぎるしね。
0032超初心者
NGNG意味は不正文って意味だと思うのですが、その前の19って19行目って事なんですか?
>27
嘘つき!
初心者なんだから、何でも本気にするぞ!!
0033デフォルトの名無しさん
NGNG19は三月で解散します。
0034デフォルトの名無しさん
NGNG0035超初心者
NGNG0036デフォルトの名無しさん
NGNGどうぞ
0037デフォルトの名無しさん
NGNG>>35
涙の数だけ強くなれます
0038超初心者
NGNG∧||∧
( / ⌒ヽ
| | |
∪ 亅|
| | |
∪∪
:
:
‐ニ三ニ‐
0039デフォルトの名無しさん
NGNG| ̄ ̄|
┬┬ ∩ ≡≡
_ | ̄ ̄ ̄ ̄ ̄| | |(‘台‘)
∠ \ |;;;;... | \⌒ ̄⌒l
∩|/゚U゚| �I |;;;::. | |bob |_|
\||_||つ .(⌒|;;::.. . |⌒) |---|U
| | |⌒⌒⌒⌒⌒⌒| | | |
(_ノ _) . | ̄ ̄ ̄ ̄ ̄ ̄| | | |
_______U ∪ ___|______|______(二(二)______
0040デフォルトの名無しさん
NGNGホント?
0041デフォルトの名無しさん
NGNGらしいぞ
0042デフォルトの名無しさん
NGNG本を読め、なければ買え。
0043超初心者
NGNG漏れ頑張る!
0044デフォルトの名無しさん
NGNG19の解散の先行記念として、殉死しろ。
0045デフォルトの名無しさん
NGNG万匹ではダメですか?
0046デフォルトの名無しさん
NGNGできれば万個で
0047超初心者
NGNG38,39は俺じゃないし…
0048デフォルトの名無しさん
NGNGなんかカワイイな( ;´Д`)
0049デフォルトの名無しさん
NGNG空の彼方の峠を越えて イカロス墜落株価も暴落 超初心者の右手に30円
明日の暮らしも定かでないが 5年後見据えて超初心者 が今
一人寂しく残された メガネケースを庭に埋め
メガネのなる木に望みを託す
これで将来ウッハウハ 「父さん愛ってホントだね」
0050デフォルトの名無しさん
NGNG30円でCのほんはかえますか?
0051デフォルトの名無しさん
NGNGどっか、大事なところが壊れてるとおもうけどなぁ…
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGだからレジストリが壊れてるんだろ?
0054デフォルトの名無しさん
NGNGはっ!
お、俺の・・
男じゃ無くなっちゃった!
0055デフォルトの名無しさん
NGNGキャラクタ→文字
19→19行目
0056日下部幼一 ◆YjtUz8MU
NGNGはつみみです;)
0057デフォルトの名無しさん
NGNGそろそろ勘弁してあげよーよ。
>〜c 19: illegal character
エラーの意味は、何度も出てるけど「変な文字が入ってるぞゴルァ」
です。で、変な文字とは、大概全角スペースだったりします。
0058デフォルトの名無しさん
NGNG・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
わ ,..-―-、
| /:::::::::::::::::l み
∩ /::::::::::::::::::::| ,、 ん
-―-、 |⌒ヽ/::::::::::::::::::::::| _/|ノ な
/´Y (´ヽ ,、 l: : : i::::::::::::::::::::::::|-―'´: :丿 大
,、 _し' l lヽJ/|ノ \: |∧/l/|ノレ : : : :/ 変
Y: : `ー`ー-―'´一': : | /: : : : : : : : : : ::i-‐'′ だ
\: : : : : : : : : : : : / /: : : : : : : : : : : | |
Y: : : : : : : : :r'´ /: : : : : : : : : : : :|
/: : : : : : : : : :| /: : : : : : : : : : : : |
/:: : : : : : : : : ::| / : : : : : : : : : : : : |
/: : : : : : : : : : : | /: ::_: : : : : : : : : :|
`77ー--┬r一'  ̄/ / ̄`ー-┬r-'
l'´) ├| l'´) |~|
し' (ニ⊃ し' (ニ⊃
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGちょっとみてみたけど全然Cとはちがうし。
どこが便利なの?
やっぱりC++やったほうがいいの?
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNGうちの職場に「C++はどこでも変数の宣言ができて便利」と言ってるヤツがいますが、
吊るして良し! ですか?
でもたしかC99からできるんだっけ?
0065デフォルトの名無しさん
NGNG逆にJava、いやいやC#を薦めておあげなさい。
フォッフォッフォ・・・
0067デフォルトの名無しさん
NGNG出来ますね<C99。
けど C99 使えない環境ってまだまだ多そうだから、C++ を
C の拡張版と割り切って使う、ってのもアリだと思うけどな。
(勿論、人には「C++ やってるんですよ」なんて言えない)
0068デフォルトの名無しさん
NGNGOSがMeなんでMS-DOSプロンプトのスクロールバーがなくてすごい不便なんです。
出来ればcygwinを使ってやっていきたいんですが、
何かいい方法ないですか?
#OS替えるとかは無しで。
0069デフォルトの名無しさん
NGNGバックスクロールしたいのかcygwinのインストールの仕方が
知りたいのかはっきりせい。それによってgoogleでの検索ワードが
変わってくるぢゃないか。
007068
NGNG知りたいのはバックスクロールの方法です。
007164
NGNG一時変数ならブロックスコープ変数使え、って突っ込み入れたかったけど、
保守が大変になりそうなので止めたのでした。
C++はCのスーパーセットなんでそれもありだけど、
それを会社でやるとcoutでログ表示してC++使ってる気分になってる奴が増えそうで鬱。
# 俺だってこのくらいではC++やってるなんて言えない。
全然関係ないけど、
オブジェクト指向でオブジェクトをたくさん設計するなら、
データベース関連でいうテーブルの設計チーム(兼DBA多し)みたいのがないと、
まずプロジェクトがコケるかデスマーチの実地訓練になる、と思ってるのは俺の勘違いですか?
007269
NGNGこれと
http://www.vector.co.jp/vpack/filearea/dos/util/other/xscript/index.html
これ(こっちはcygwinでやるらしい。オトクオトク!)
http://homepage2.nifty.com/murase/diary/200111.html
0074超初心者
NGNGあなた神!
本当にありがとう。世の中にはいい人っているもんだね!
全角スペースが原因だったのか〜。
間違いないはずなのにエラーになるから訳分からなかったんだけど、これで謎が解けた!
ありがとう!続き頑張ろうっと
0075デフォルトの名無しさん
NGNGどう変わるの?
0076デフォルトの名無しさん
NGNGなんで初心者さんはこういう痛い思い込みをしてそれを平気で口に出来るのでしょうか。
少しは反省してみろと小一時間はめんどうだから言わない。
0077デフォルトの名無しさん
NGNGなんかかわいい…
007968
NGNGでもteratermを使う方法も興味があるので調べてみます。
回答してくださった方々ありがとうございました。
0080デフォルトの名無しさん
NGNGgccやVisual C++6.0の実装のハナシだけど、
ifstream(fd)/ofstream(fd)でファイルディスクリプタを渡せますよね。
これでソケットやパイプに対してgetlineやマニピュレーターを適用できる。
(Visual C++だと_get_osfhandle()なんかでハンドル→ディスクリプタ変換)
さあて、ここで、open/read/write/socket/pipeなんてのは
POSIXでもANSIでもありませんよね。
あと、↓の仕様って妥当だと思うけど、これに外れる実装例ってあるのかしら。
ファイルがコンストラクタまたは open メンバ関数を使って開かれているときだけ、
ファイルはクローズされます。
あ、引数にもどしてないや・・・
0081デフォルトの名無しさん
NGNG↓こちらがよろしいかと
C++相談室 Part4
http://pc.2ch.net/test/read.cgi/tech/1009071535/
VisualC++相談室 6
http://pc.2ch.net/test/read.cgi/tech/1011615035/
0082デフォルトの名無しさん
NGNG間違いないはずなのになんですよ。わたし、けっこう家族とか複雑
だったから、痛い思い込たちが家族みたいなものなんです。」
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG0086f
NGNG0087デフォルトの名無しさん
NGNGCで募集してるけど、Javaはダメかいね?
Cならどの辺のレベルがいるわけ?
数学と物理バリバリじゃないと無理っぽいけど・・・
3Dプログラミングってどれくらいの高校程度の物理と数学でいけるもん?
誰かシットル人おらんかね。
0088デフォルトの名無しさん
NGNGFFなみのゲームつくれりゃOK
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNGおいらカンチガイしちゃった?
0091デフォルトの名無しさん
NGNG出来たら俺も遊びたい。
0092デフォルトの名無しさん
NGNG> スクでゲーム作りたいんですけど、何できればOK?
> Cで募集してるけど、Javaはダメかいね?
Cにはスクはないよ。
Javaにはスクはあるけど、JavaとJavaスクは名前は同じだけど別の言語だよ。
とボケてみるテスト
0093デフォルトの名無しさん
NGNG>スクでゲーム作りたいんですけど、何できればOK?
シベリア抑留並みの苛酷な労働に耐えられること。
あと、このようなクソレスをしない常識。
0094デフォルトの名無しさん
NGNGもちろん、数学、物理ともバリバリでな。
この板にはそんな奴はいないので何を聞いても無駄ってもんよ。
0095デフォルトの名無しさん
NGNG> Cにはスクはないよ。
csh という選択もあるぞ。
0096デフォルトの名無しさん
NGNGプロフェッショナルとスタンダードのどちらを
買えばいいのか悩んでいます。
Microsoftの製品の紹介を読んでも
ちんぷんかんぷんです。
最終的にはDirectXを使った3Dゲームを
作りたいのですが、スタンダードは
そこまでの使用に耐えますか?
また、スタンダードに付属する初心者向けの
マニュアルの使い勝手はどうなんでしょう。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGMFCの話題からはいってくる。
Windowsプログラミングがわかれば
それなりに理解できると思う。
009996
NGNGスタンダードで十分ってことですか。
ならスタンダードを買います。
万一不満を感じるようになっても、
そのころには7.0が出てるかもしれないし。
>98
Windowsプログラミングは全然わかりません。
組めるのはDOSのプログラムだけです。
でもまぁ頑張ってみます。
ありがとうございました。では。
0100デフォルトの名無しさん
NGNG君の状態から見て、VCを買っても死蔵する可能性がかなり
高いと思われる。
まだ買わないほうがただしいとおもわれる。
0101デフォルトの名無しさん
NGNG>組めるのはDOSのプログラムだけです。
これはなんかマズーなよかん。
実は大して組めません、というオチが予想できると思われ。
#類例:Cは大学の演習でひとおおりやりました。
0102デフォルトの名無しさん
NGNG>マニュアルの使い勝手はどうなんでしょう。
マイクロソフトに多くを期待しない方が人生を豊かに過ごせます。
0103デフォルトの名無しさん
NGNGVisual Studio6.0のEnterprise版を買え。
アカデミックなら35000円くらいだろ。
0104デフォルトの名無しさん
NGNG>万一不満を感じるようになっても、
>そのころには7.0が出てるかもしれないし。
3月22日に7(.NET)が出るわけだが・・・。
ttp://www.microsoft.com/japan/
0105デフォルトの名無しさん
NGNGEnterprise はデータベースがらみのプログラミングしたり、付属のエンタープライズ
ツール (Rational Rose のサブセットとか) 使わなければ要らんよ。Pro で十分。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG>でもteratermを使う方法も興味があるので調べてみます。
やめとけ。多分キミのマシンにtelnetdはいない。
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNGそういう意味不明な質問をC言語のスレでしている君の非常識
がどういうふうになっているのか知りたい。
0110
NGNG0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGdelayってなんじゃろか〜
おじ〜いちゃんは、はつみみだ〜
delayってなんじゃろか〜
おじ〜いちゃんは、はつみみだ〜
delayってなんじゃろか〜
おじ〜いちゃんは、はつみみだ〜
0113
NGNGdelay(200)とかdelay(500)とか書いてプログラムの実行速度を
遅くする命令文です。(数字が大きいほど負荷がかかって実行速度が遅くなる)
011496
NGNG以前知り合いのVC++を立ち上げて、
その訳わからなさに畏怖したことがあるので、
VC++の恐ろしさについては理解しているつもりです。
とりあえずVC++を買うまでは、
「猫でもわかるプログラミング」でも読んで、BCCを使って
Windows SDKのプログラミングについて学んでみます。
>102
そうします。
>103
欲しいのはVC++だけなので…。
>104
うげ、また選択肢が増えた。検討してみます…。
>106
検討してみます。いまヤフオクを覗いてみると、
VC++6.0 Enterprise Academic が最低\5000で出品されてました。
「勉強しようとして挫折した」からだそうです。他人事とは思えない…。
では。
0115デフォルトの名無しさん
NGNG0116
NGNGわざわざ遅くしてるんだってば
マリオブラザーズで言うと亀が緑の時は(500)で赤になったら(200)にするとか
そうゆう使い方。
0117デフォルトの名無しさん
NGNGSetThreadPriorityだぼけ
0118デフォルトの名無しさん
NGNG> 負荷がかかって実行速度が遅くなる
迷惑なのは「負荷がかかって」の部分だろ。どうでも良いが、ゲームプログラミング
でキャラクタの動きを遅くするためにビジーループを使うのは禁じ手だ。
そんなコードがあちこちにあったら、並行して実行されるゲーム全体のタイミングを
取れなくなる。
0119デフォルトの名無しさん
NGNG環境にもやさしくてウマー
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122
NGNG0123デフォルトの名無しさん
NGNG0124
NGNG一応ありがと・・
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG/ ̄ |
/ / ̄ ̄ ̄ ̄ ̄\|
| / |
| / ` ´ |
| / _ _ | 初心者の文字が目に入らぬか!!
(6 つ. |
| ___ |
_ | /__/ |
⊃|房| | ___/
つ  ̄ ⊂
⊃
0127デフォルトの名無しさん
NGNG世の森羅万象すべては気でなりたっておる。
人間気持ちの持ちようでなんとでもなるものです。
ゆっくりしていると念じればゆっくりしてるように感じられます。
0128デフォルトの名無しさん
NGNGヲタクは氏ね
0129デフォルトの名無しさん
NGNGデバッガで実行。で、ステップ実行に割り当てられたキーの上に消しゴムでも乗せておく。
0130デフォルトの名無しさん
NGNGdelay()って、TurboCにあったような・・・
で、プログラムを遅くするような命令じゃなくて、
ミリ秒単位でウエイトするだけだったような・・・
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGキーをかちゃかちゃする速度でゲームの速度は思いのままに。
0133デフォルトの名無しさん
NGNG初心者なのでデバッガを知らないと思われ。
0134デフォルトの名無しさん
NGNGハイパーオリンピックだ
0135デフォルトの名無しさん
NGNG1行ごとに自動的にポーズするやつ。
0136デフォルトの名無しさん
NGNGまぁ、自分の開発環境も説明できないようなやつだからなぁ。
一般には、プログラムの特定部分の実行の様子を詳細にチェックしたい場合には
デバッガで
1. その直前にブレークポイントを設定
2. ブレークポイントに達するとデバッガが呼ばれる
3. 後はデバッガでステップ実行
して様子を追うんだが >>122 の開発環境は何なんだ? VC6 とか gcc とか具体
的な処理系と動作プラットホームを書くと、より詳細な回答が得られる可能盛大だ
ぞ。
0137デフォルトの名無しさん
NGNG>「ozawa-ken」というタイピングソフト知ってますか?
>ああいうのを作りたいんですけど、初学者が一から作るには何ヶ月くらいでできますか?
>それと、何言語でつくられているかわかりますか?
>名前:名前は開発中のものです。 投稿日:02/02/20 12:29 ID:???
>ozawa-kenはshockwaveじゃなかったっけ?
>1ヶ月もあれば雛型(とりあえずタイピングっぽいもの)までは作れるでしょ。
>あとは、納得のいく形になるまで果てし無く仕上げていく。どちらかというと技術力よりもセンス。
>VC++とかで作ろうとするなら、もちょっと時間かかるかもね。
別スレで発見しました。C言語だったらどれくらいかかりますでしょうか?
0138デフォルトの名無しさん
NGNG> やめとけ。多分キミのマシンにtelnetdはいない。
cygwin にはtelnetd.exe sshd.exeがありますが…
0139デフォルトの名無しさん
NGNG√ ̄ ̄ ̄ ̄ ̄\
/ ̄ |
/ / ̄ ̄ ̄ ̄ ̄\|
| / |
| / ` ´ |
| / _ _ | 初心者の文字が目に入らぬか!!
(6 つ. |
| ___ |
_ | /__/ |
⊃|房| | ___/
つ  ̄ ⊂
⊃
0140デフォルトの名無しさん
NGNGCだけで組むのか・・・。
もう、がんばれとしか言いようが無い。
がんばれ!
0141デフォルトの名無しさん
NGNG素直にマルチポストだと自供しようね。
0142デフォルトの名無しさん
NGNG「C言語だったら」じゃなくて、「ハイソサエティハッカーの手にかかれば」
だろ?
多分、8時間あればプロトタイプができるだろう(勝手な予想)
なんたってハイソサエティだぜ?みくびんなよ。
0143デフォルトの名無しさん
NGNG僕は全くポインタにつまずいた覚えがありません。
要するに、メモリのアドレスを保持する変数ってだけでしょう?
アドレスを直接に指定して内容にアクセスすることが可能になるわけですよね。
一体ポインタの何がそんなに難しいのか教えてください。
ひょっとして僕がまだポインタのさわりしか理解していないだけですか?
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGメモリとアドレスがわかっていたのならつまづかないですよね。
私もそうでした。
0146デフォルトの名無しさん
NGNGそりゃ良かったね、としか言いようが無い。
>何がそんなに難しいのか教えてください。
もっとC言語を理解できないアホが集まる場所で質問してください。
ここで聞いてもどうにもなりません。
0147デフォルトの名無しさん
NGNG配列へのポインタとかポインタの配列とか
そーゆーのがこんがらがる場合もありうる
0148デフォルトの名無しさん
NGNGここにウダウダ書いてあるがまだ良く読んでいない...
おまえら、暇だったら読んで感想聞かせて下さい。
0149デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG頭でプログラムの流れを間違いなく追うしかないのでしょうか。
0152デフォルトの名無しさん
NGNG一体どう言う状況でそういう必要性にせまられるのか、
まるで解りません。
0153デフォルトの名無しさん
NGNG必要性というか、間違っていないか判断したいだけです。
単に一つの変数に代入したくらいでは間違いませんが。
0154デフォルトの名無しさん
NGNG動的に確保した領域を指すポインターには特定の前置詞で始まる
名前をつけとけ。
終わり
0155デフォルトの名無しさん
NGNGないんですね。わかりました。
0156デフォルトの名無しさん
NGNG機種依存の方法でよければ、アドレス見ればわかると思う。
0157デフォルトの名無しさん
NGNGそうなんですか?デバッグ中に使うだけなので機種依存でも大丈夫です。
Win+VC6.0pro,Linux+gccです。
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG仕事じゃないので・・・
0160デフォルトの名無しさん
NGNG・・・・・・・
もしかして「デバッガ」って人間のことだと思ってない?
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGポインタを調べるのに人間を呼ぶか?
0164デフォルトの名無しさん
NGNGまた、そういうのが見れるサイトを知ってたら紹介してください。
0165デフォルトの名無しさん
NGNG自分は「チャー」って呼んでるんだけど。「int」は「イント」。
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGFF7
>>165
ちゃー
他人に話すときはキャラクタ
0168デフォルトの名無しさん
NGNGチャーだとなんだか格好がつかない気がしてたんだ。ありがと。
0169デフォルトの名無しさん
NGNGhoge
0170デフォルトの名無しさん
NGNGチャーに決まってんだろ。
竹中尚人
0171デフォルトの名無しさん
NGNGしーえいちえーあーる
0172デフォルトの名無しさん
NGNGしゃー
0173デフォルトの名無しさん
NGNGちゃんとカタカナでシャアって書けよ
0174デフォルトの名無しさん
NGNGいや
絶対いや
0175修行僧
NGNG0176初心者
NGNGブロック内だけでしょうか、ファイル全体でしょうか。
struct _1{
int i;
struct _2{ //これとか
char *p;
};
};
0177デフォルトの名無しさん
NGNGきますよ。
0178176の初心者
NGNGstruct STRCT{
struct STRCT_IN{
int i;
};
};
// としたとき
int main()
{
/* 関数の中でSTRCT_INを型としてオブジェクトを作る手段はあるのか?
またできたとしてもそれは許されるのか? */
return 0;
}
を聞きたかったのです、よろしくお願いします。
0179144
NGNG0180デフォルトの名無しさん
NGNG普通に
struct STRCT_IN obj;
で作れないか?
C++なら
STRCT::STRCT_IN obj;
とか。
0181デフォルトの名無しさん
NGNGscanf("%lf",&buffer); // <=ここで
セグメンテーションエラーが出てしまうんですけどどうしたらいいんでしょう
0182デフォルトの名無しさん
NGNG普通にしたらできましたm(_ _)m
迷惑かけてすいません(;_;)
0183デフォルトの名無しさん
NGNG1 2 3.....
1/2/3 4/5/6 7/8/9.........
最初から要素が何個あるか解からない時は、
fgets(line, 255, fp);
で一行読み込んでから、空白ごとに読み込んでいく
以外に方法はないんでしょうか?
最初から何要素在るか解かる関数など在るんでしょうか?
m(__)mm(__)mm(__)m
0184デフォルトの名無しさん
NGNG無い。
0185デフォルトの名無しさん
NGNG√ ̄ ̄ ̄ ̄ ̄\
/ ̄ |
/ / ̄ ̄ ̄ ̄ ̄\|
| / |
| / ` ´ |
| / _ _ | 初心者の文字が目に入らぬか!!
(6 つ. |
| ___ |
_ | /__/ |
⊃|房| | ___/
つ  ̄ ⊂
⊃
0186デフォルトの名無しさん
NGNGヲタクは氏ね
0187デフォルトの名無しさん
NGNG助けてください。
0188デフォルトの名無しさん
NGNG読まないで個数をどうやって数えるんでしょうか?
0189デフォルトの名無しさん
NGNGC言語には念写する機能はついていません。
0190デフォルトの名無しさん
NGNG解る関数が無ければ解る関数を作ればよい(藁
色々な面で処理効率は落ちるが、コーディングで難しいって点は無い筈。
補足。意外と使われてない気がするけど、こういう処理にはstrtokって関数が有る。
貴兄の求める仕様に合致するかは知らないけど、知識外なら一度調べてみては。
0191デフォルトの名無しさん
NGNGオーバーヘッドが多いような。
というか、FGETSしてるのならすぐに調べられるだろうが。
FGETSせずに調べるのは超能力が必要だし。
愚かな質問。
0192デフォルトの名無しさん
NGNG何を悩む必要があるのかまるでわからん。
「コードを書きたくない」と書いてるように見えるが。
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNGwhile((c = fgetc(fp)) != EOF) fputc(c,wp);
のようにして最後まで読んでしまって
また一から読みたい場合はどうすればよいのですか?
lseek()を使うのでしょうか。
0196デフォルトの名無しさん
NGNG普通に開きなおしたら?
0197デフォルトの名無しさん
NGNGfgetcで1文字ずつ読んでった方が楽なケースというのも世の中にはある。
0198デフォルトの名無しさん
NGNGOSの再インストールが必要になります
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGfgetc, fputc ときたら fseek だろ。もしくはrewind。
0201200
NGNG今日もGETかな( ´ー`)y-~
0202デフォルトの名無しさん
NGNGぷ
0203195
NGNG開き直しかfseekかrewindやってみます。
0204デフォルトの名無しさん
NGNG知ってることで出来ることを無理に知らないことでやろうとしないこと。
0205デフォルトの名無しさん
NGNGと
int const foo[3]={1, 2, 3};
はどう違うんですか?
0206デフォルトの名無しさん
NGNGとりあえずお約束だが「プログラミング言語C」は読んだか?
0207デフォルトの名無しさん
NGNG初心者なら気にしなくても大丈夫な気も・・
0208デフォルトの名無しさん
NGNG>>207 いーかげんなこといわないように
0209デフォルトの名無しさん
NGNGfunction(i1, i2){
unsigned char i1[size1][size2];
unsigned char i2[size1][size2];
{
・・・
}
なら大丈夫なのに
function(i1, i2, x, y){
unsigned char i1[size1][size2];
unsigned char i2[size1][size2];
int x,y;
{
・・・
}
ではダメなのはどうしてなんでしょう?
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGどんなエラーが出るかを書け。
0213デフォルトの名無しさん
NGNGint *const p;
とかも考えると、修飾子は右に書く方が、統一はとれてるんだけどね。
でも、
int const *p;
const int *p;
だと、後者の方が良く見かける気がする。
0214デフォルトの名無しさん
NGNGあうあう、そうか。
C言語でややこしい宣言をする時には
(ポインタのポインタの関数のポインタの・・みたいな)
「段階的宣言」をして明確にする口なので気がつかず。
constの方が「重要な情報」であることは確実だとおもうのと
constが色々な方にまたがって複数ある時にはconstを
先に出して連ねた方が見やすい。
・・と思ってるんですけど、正しい?
0215デフォルトの名無しさん
NGNG一見便利だが、複雑になると死にそうになる。
長いけど例えば
AddressOf
みたいな感じだったら混乱しなかったはず。
p : AddressOf Const Integer;
p : Constant AddressOf Integer;
pf AddressOf Array AddressOf func();
例えばこんな感じで
0216デフォルトの名無しさん
NGNG>>>205 intとconstの位置が違うだけです
そうなのですか。どうもありがとうございます。
constって不思議ですね。
#include <stdio.h>
main(int ac, char **av)
{
const int a=1;
const int b=2;
const int *p = &a;
printf("%d\n", *p);
p = &b;
printf("%d\n", *p);
*p = 3;
printf("%d\n", *p);
}
*p=3でWarning出ますが、実行すると書きかえれちゃう(gccです)
こんなものなのでしょか。
0217デフォルトの名無しさん
NGNGなんか Pascal っぽいね。
0218デフォルトの名無しさん
NGNGROMに焼くようなプログラム作るときには、重宝するかも。
漏れあんまりconstってかいたことない。
0219デフォルトの名無しさん
NGNGテーブルとかconstで宣言しとかないと心配じゃ無い?
0221
NGNG“*”じゃなくて“〒”はどう?
0222デフォルトの名無しさん
NGNGC 言語で「警告」が出たら、他の言語だと「致命的エラー」に相当すると思って
おいた方がいい。特にキャストやポインタがらみの場合。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGbakaですが何か?
0225デフォルトの名無しさん
NGNGですが何か?
0226デフォルトの名無しさん
NGNGたくさんいますが、何か?
0227あ
NGNG学校では「コンソールアプリケーション」とかいうので、DOSプロンプトで実行するやつしか
作ったことがないのですが、VBみたいにボタンとかテキストボックスとかをCでも作れるのですか?
0228デフォルトの名無しさん
NGNGC++Builderっ、買え!
0229183
NGNGお答え下さいました皆様方、真に
ありがとうございました。
>193
要素数とゆうか、Lineが数千行在るんでなんとも・・・・。
今のところ、中身が解かるので、
for(hoge=0 ; !feof(fp);)
{
fgets(line, 255, fp);
sscanf(line, "%s", ky);
if(!strcmp(ky, "文字"))
{
sscanf(line, "%*s %lf %lf %lf",
&hoge[v][0],
&hoge[v][1],
&hoge[v][2]);
v++;
}
.
.
.
の様にしているので、改良してみます。
0230229
NGNGfor(v=0 ; !feof(fp);)
{
fgets(line, 255, fp);
sscanf(line, "%s", ky);
if(!strcmp(ky, "文字"))
{
sscanf(line, "%*s %lf %lf %lf",
&hoge[v][0],
&hoge[v][1],
&hoge[v][2]);
v++;
}
0231デフォルトの名無しさん
NGNGいまいち何を悩んでるんだかつかめないんだけど、
1.各行の要素数がまちまちなので、最大の要素数を知らないと配列確保できねーじゃねーかゴルァ
2.1行が長すぎて、fgets()で読み切れない時があるんじゃゴルァ
3.sscanf()しか知らんから、要素数可変でスペースで区切られてる文字列をパースできねーんじゃゴルァ
のどれなのよ?
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1012348974/n208
でもどうぞ。この場合はポインタの配列だけど、応用でわかるかな?
チミのお脳にかかっている!
0234232
NGNG0235デフォルトの名無しさん
NGNGint i = 9999,*p = &i,**pp = &p;
printf("%d",**pp);
---結果---
9999
つまり
int i = 9999
はこういうこと
0x0001番地 ←アドレス(例)
| ̄ ̄ ̄ ̄|
| 9999 | ←変数i(中身はデータ)
|____|
次の
*p = &i
は
0x000A番地 ←変数iとは必ず異なるpのアドレス
| ̄ ̄ ̄ ̄ ̄|
| 0x0001 | ←ポインタ変数p(中身は変数iのアドレス)
|_____|
ほんで
**pp = &p;
でポインタ変数pのアドレスを代入
0x000FF番地 ←ppのアドレス
| ̄ ̄ ̄ ̄ ̄|
| 0x000A | ←ポインタを指すポインタ変数pp(中身はポインタpのアドレス)
|_____|
最後の
printf("%d",**pp);
は単項の*演算子で指すものを取り出している。
単項の結合規則は右から左なので
*(*pp)
こういうことだから
pp p i
↓ ↓ ↓
| ̄ ̄| | ̄ ̄| | ̄ ̄|
|__}→(*参照)→|__|→(*参照)→|__}
こうなって見事に繋がりを参照することによってiが取り出されて
printf()関数に9999を渡し、表示されるわけ。
0236235
NGNGまあ暇だからいいや。
0238231
NGNGなんか長くなっちゃった・・・鬱
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LINE_BUF_GROW_STEP 8
#define MAX_LINE 10240
char **hoge[MAX_LINE];
main() {
char *line,*line_tmp;
char *word;
char **line_element_ptr;
int lines = 0;
int chars;
int count;
int line_buf_len = 2; /* 最低でも 2 は必要(man fgets) */
int i,j;
/* 行バッファ確保 */
line = (char *)malloc(line_buf_len);
line_tmp = (char *)malloc(line_buf_len);
if (!line || !line_tmp) {
puts("メモリ買えや・・・");
exit(1);
}
/* 読み込むよぅ */
while(fgets(line,line_buf_len,stdin)) {
/* 継続読み込み */
while(line[strlen(line)-1] != '\n' && !feof(stdin)) {
/* 行バッファ伸ばす */
line_buf_len += LINE_BUF_GROW_STEP;
line = (char *)realloc(line,line_buf_len);
line_tmp = (char *)realloc(line_tmp,line_buf_len);
if (!line || !line_tmp) {
puts("メモリねぇんだゴルァ・・・");
exit(1);
}
/* 続きを読み込む */
fgets(line+(line_buf_len - LINE_BUF_GROW_STEP -1),
LINE_BUF_GROW_STEP+1,stdin);
}
0239238のつづき
NGNGif (line[strlen(line)-1] == '\n') line[strlen(line)-1] = '\0';
/* strtok は引数で渡した文字列破壊するので、コピーしる */
strcpy(line_tmp,line);
/* 単語数カウント */
count=0;
for(word = strtok(line_tmp," \t"); word; word = strtok(NULL," \t")) {
count++;
}
/* 単語数分のポインタ領域確保 */
line_element_ptr = hoge[lines] = (char **)malloc( (count+1) * sizeof(ch\
ar*) );
if (!line_element_ptr) {
puts("メモリねーよ");
exit(1);
}
/* 単語を複製し、そのアドレスをさっき確保した領域に入れてく */
for(word = strtok(line," \t"); word; word = strtok(NULL," \t")) {
*line_element_ptr++ = strdup(word);
}
*line_element_ptr = NULL;
lines++;
}
/* 行バッファ開放 */
free(line);
free(line_tmp);
/* ついでに表示するよぅ(ついでにメモリ開放しる) */
for(i=0; i<lines; i++) {
for(j=0;hoge[i][j];j++) {
printf("[%s]",hoge[i][j]);
if (hoge[i][j+1]) printf(",");
free(hoge[i][j]);
}
free(hoge[i]);
puts("");
}
}
0241デフォルトの名無しさん
NGNG↓
fprintf(stderr,"殿!メモリがたりませぬ!\n");
0242デフォルトの名無しさん
NGNG>>239
なんか結構つっこめちゃんですが?
0243デフォルトの名無しさん
NGNGお前の気分なんてどうでもいい。
大体お前だって本当は鬱でもないんだろ。
0244デフォルトの名無しさん
NGNGつっこむ以前に汚すぎて読む気もおきねーよ
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNGどれが適してるのでしょうか?
本来なら私自身が全方法をテストして調査するべきなのでしょうが、
みなさんのご意見を聞かせていただけると有り難いです。
0247デフォルトの名無しさん
NGNG「ダメなコメントのつけかた」のサンプルじゃないのか?
0248デフォルトの名無しさん
NGNGDVD-RAM
(その質問だと、前提が正しく示されてないから、こういう大ボケな答えが返って
きても文句言えんと思う)
0249デフォルトの名無しさん
NGNG無駄レスすんな
>>244
同意
0250ィ
NGNGハノイの塔っていうプログラムです。
#include<stdio.h>
hanoi(char src,char dst,char tmp,int n)
{
if(n > 1)
{
hanoi(src,tmp,dst,n-1);
hanoi(src,dst,tmp,1);
hanoi(tmp,dst,src,n-1);
}
else
{
printf("move from %c to %c\n",src,dst);
}
}
main()
{
int n;
printf("何個? ");
scanf("%d",&n);
hanoi('A','B','C',n);
}
0251デフォルトの名無しさん
NGNG実に読んだままです。
0252デフォルトの名無しさん
NGNGハノイの塔の説明でも聞きに来たんじゃないだろうな?
0253デフォルトの名無しさん
NGNGいやん。「246 だと答えようがないから、もう少し詳しく書け」と遠回しに言ってる
だけだって。
> 画像などの大きなデータを交換する方法
これだけじゃ、圧縮方法聞きたいのかメディアを聞きたいのか、一対多なのか
分からんから、何とも言えんでしょ。
0254デフォルトの名無しさん
NGNGなんか酷く人使いの荒い質問が来てるぞ・・・
宿題全部やってください、よりも酷いかも。
0255デフォルトの名無しさん
NGNG進呈 : 最低努力賞
0256デフォルトの名無しさん
NGNGほれ
http://www.google.com/search?hl=ja&q=%83n%83m%83C%82%CC%93%83%82%CC%90%E0%96%BE&lr=lang_ja
0257デフォルトの名無しさん
NGNGなんかHP上にリンクが多すぎて
それ自体の入り口がどこか分かりにくいし
実際に中に入ってみると
全然違う内容のページが表示されるのですけど何故でしょう?
0258ィ
NGNGハノイの塔の事は分かってます。
hanoi()関数の中身がいまいち分からないんです。
0259デフォルトの名無しさん
NGNG回答は終了しています。
0261デフォルトの名無しさん
NGNGあるとこ教えて!!
0262ィ
NGNGこのHPでアルゴリズムとやらを勉強してみますね。
0263デフォルトの名無しさん
NGNG日本語が解りません
0264デフォルトの名無しさん
NGNGコンパイル は開発現場に行けば見かけることが出来ます。
0265デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1012348974/n448
http://pc.2ch.net/test/read.cgi/unix/1013144113/n82
0266デフォルトの名無しさん
NGNGコンパイル=コンパイラならココ。
http://www.digitalmars.com/
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGうん
0269デフォルトの名無しさん
NGNGほんとに?
0270デフォルトの名無しさん
NGNGあんまりつかわないよ
0272デフォルトの名無しさん
NGNGでは、どんな場面で使います??
0273デフォルトの名無しさん
NGNGその他もろもろ。
有益な使い方はたくさんある。
0274デフォルトの名無しさん
NGNGyacc 使うとき
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGメモリ領域の共用だったらキャストしたほうが
融通が効くように思うのですが。
イマイチ理解できないっすTT
0277デフォルトの名無しさん
NGNG単純にキャストすると、アライメントがらみで死ぬと思うが。
0278デフォルトの名無しさん
NGNGコンパイラの型検査機能を台無しにしたり
277の言うようにアライメントが保証されずにバスエラーが発生したり、
キャストでコードが汚くなる。
それよりは共用体をうまく使った方が
「同じバイトデータを異なる複数の型でアクセスするんだ」という
意志がはっきりと読みとれてよい。
仕様目的はメモリ領域の共用。
わざわざ共用体を試用する意義は、それをコンパイラにもコードの読み手にも
それをはっきりと明示できるから、に他ならない。
キャストは最後の手段だぞ。
0279デフォルトの名無しさん
NGNGニン、ニン。
0281デフォルトの名無しさん
NGNGありがとう。
納得しました。
0282デフォルトの名無しさん
NGNGマクロ呼び出しの方が有利とか言うでない??
一体全体、オーバーヘッドってなんなの?
仮引数をスタックにつんだり、おろしたりする作業のことですか??
0283デフォルトの名無しさん
NGNGはっきり言ってWin32APIのようなAPIや関数設計だと
いちいちunionで共用を宣言してたらトンデモソースになるぞ
0284デフォルトの名無しさん
NGNGそのサイトってUG?
MFCとか非オブジェクトコードで配っちゃってるし、
イマイチ聞いたことがないコンパイラなので
0285デフォルトの名無しさん
NGNGCreateWindow の引数 hMenu とかの話か? あれは API の設計が腐ってると
思うんだが、まぁ CreateWindow() を使う側の人間としては、キャストで済ませ
るしかないな。
Win32 API でも MMTIME や MIXCONTROL, LARGE_INTEGER なんかは union
を使ってるよ。
0286デフォルトの名無しさん
NGNG「呼び出し」にかかるオーバーヘッドについての議論が
以下にあります。
http://curry.2ch.net/test/read.cgi/occult/1014129830/
0287デフォルトの名無しさん
NGNG元 Symantec C++、と言えばそんなに聞いたことのない
コンパイラでもないのではなかろうか。
0288デフォルトの名無しさん
NGNG今 : Apple純正 VS CodeWarrior
0290ビル・ジョブス
NGNGだって、実際は内部REG or キャッシュにしか積まないだろ?
デバッガから一見Stackに見えるエリアもCPUの中だよな?
0291デフォルトの名無しさん
NGNGおいおい(w
試しに関数呼び出しと、inline 展開した場合のコードを使ってプロファイルを
とってみなよ。
0292289
NGNG0293ビル・ジョブス
NGNGもう少し別のところに頭使おうよ。
関数コールのオーバーヘッドなんて議論は10年前に終わってるんだよ。
あんたはその「プロファイル」とやらをJ-TAG ICEでとるのか?
ならばすげー(w
0294デフォルトの名無しさん
NGNG0295ビル・ジョブス
NGNGプラットフォームによってまったく意味ないと思う。
0296デフォルトの名無しさん
NGNG逆にターゲットによっては重要になるだろうよ。
あんた、一体何が言いたいの?
0297デフォルトの名無しさん
NGNGで、実行時間を比較したいのですが、
どうすればよい??
0298デフォルトの名無しさん
NGNGシングルタスク専門の組み込み屋さんが
特殊なケースを勝手に一般化して語ってるだけ。
捨て置けい。
0299デフォルトの名無しさん
NGNGストップウォッチではかる。
0300ビル・ジョブス
NGNG論点が曖昧で議論に値しないということ。
それと・・・おまえに「あんた」と呼ばれる覚えはないな、
このスレの創設者に対して失礼じゃないか?
君は出禁にします。
0301デフォルトの名無しさん
NGNGOS・開発環境による。
0302ビル・ジョブス
NGNGCPUのデーターシートからインストラクションの実行時間を
計算すれば?
後は、GetTickCount()っていうクソ「プロファイル」APIで
測ったふりでもしたら?
0303デフォルトの名無しさん
NGNG学校の課題ってことは UNIX だろうから time コマンド使え、が正解かな。
0304デフォルトの名無しさん
NGNG君が知ったか君だという事だけは判った。
0305デフォルトの名無しさん
NGNG(プ
0306デフォルトの名無しさん
NGNGキミが出入り禁止で良いよ。回答が役に立たな過ぎ…。
0307ビル・ジョブス
NGNGP4 1.6GHzとかにすればプロファイルする必要ないね。
今の世、スピードはH/Wで稼いでS/Wは設計手法重視するべし。
0308デフォルトの名無しさん
NGNG0309ビル・ジョブス
NGNGおまえのIPって・・・いい?
0310デフォルトの名無しさん
NGNGコンパイラも書いとけ。
0311デフォルトの名無しさん
NGNG今時IPとか言ってるのも寒いな。
0312デフォルトの名無しさん
NGNG0313ビル・ジョブス
NGNGWindows?の何?
リアルタイムクラスとか使ってる?
なら、ほぼ正確に測定できるよ。
0314デフォルトの名無しさん
NGNG今は b-mobile からアクセスしてるから、端末の IP アドレス外から見えるのは
proxy server のアドレスだけだぞ。(そもそも削除人じゃなきゃ見えないだろうが)
0315ビル・ジョブス
NGNGうそうそ、子供みたいにすぐムキになるなよ。
0316デフォルトの名無しさん
NGNG0317ビル・ジョブス
NGNG0318デフォルトの名無しさん
NGNGなら #include <time.h> して clock() 関数を使うのが良いと思うが。
これは呼び出し側プロセスが使った
0319デフォルトの名無しさん
NGNG変換できる。
0320デフォルトの名無しさん
NGNGお前、氷魚なみの妄想君だな。
厨房入ってるし。
0321デフォルトの名無しさん
NGNGもうね、アフォかと、バカかと…
0322ビル・ジョブス
NGNGcomとかが勝手にスレッド生成してますよ・・・
関数レベルの正確なプロファイルは簡単に出来ないよ。
そして、意味がない。
0323デフォルトの名無しさん
NGNGそうならば、どの関数にもinlineをつければいいんじゃないかと思うのですが、
そうではないんですよね?
inlineは、ローカル関数として宣言している時
意外ではつけてはいけないのでしょうか?
0324ビル・ジョブス
NGNG0325デフォルトの名無しさん
NGNG致命的に間違ってる。
0326ビル・ジョブス
NGNG関数コール・リターンのオーバーヘッドよりも、キャッシュヒットする
事のほうが遥かに重要なんだよ。よって速くなりません。
もうー・・・だからバカは嫌いなんだよ。
0327デフォルトの名無しさん
NGNGバカは教え諭せば話が通じるが、
キティ飼いは意思の疎通が図れん。
0328デフォルトの名無しさん
NGNG正確なプロファイルってなんだ?
もしかしてかかった時間を1ms単位で計れと?
あくまでプロファイル結果は処理集中個所を探すための指標にすぎないから、
大まかで良いんだよ。
0329298
NGNGビルは単なる無知な素人だったみたいだ。
>326
>関数コール・リターンのオーバーヘッドよりも、キャッシュヒットする
>事のほうが遥かに重要なんだよ。よって速くなりません。
だから勝手に一般化するなっての。
単純なsetter/getterはinlineにしたほうがいいだろ。
0330デフォルトの名無しさん
NGNG明示的な関数ポインタ (C++ なら暗黙的にも) 使ってたら inline 効かないし
何より、全部の関数に付けてたらサイズが肥大して仮想記憶のスワップが
バカにならなくなるからねぇ。
ローカルである必要は無いけど、ほんの数行で済む様な関数なら inline に
しとけばいいんじゃないかな。
>>326
「キャッシュには連続した領域がひとつだけ読み込まれる」と思ってないか?
0331デフォルトの名無しさん
NGNGなんか、珍しく(部分的に)正しいことを言ってるな(w
inline 関数展開してしまうと、同じ関数の中身が複数の場所に展開されることに
なるため、プログラムのサイズが肥大化します。その結果として命令キャッシュ
のヒット率が落ちかねないので、
「どこまで inline 展開するのか」
は慎重に判断する必要があります。
また inline 展開をするためには、関数の定義(宣言ではなく中身)が見えてる必
要があります。ということは定義をヘッダに書く必要があるわけで、プログラム間
の相互依存関係が深くなるというデメリットもあります。
一般的には「スタックフレームを削除できる程度」に簡単な関数なら inline 化
した方がお得です。それ以上は、場合によりけり。
0332ビル・ジョブス
NGNG「大まかで良いんだよ。」って、それで意味ある?
1万回とかの平均とるなら話は別だけど・・・?
0333デフォルトの名無しさん
NGNGベンチじゃないんだから、実行時間そのものが重要なわけじゃないんだが?
0334デフォルトの名無しさん
NGNG0335ビル・ジョブス
NGNGnウェイセットアソシエイティブって知ってますが・・・
というか、昔おれの作った同ロジック(S/W)のデバイスドライバを
皆さん使ってますが・・・(EMMなんとかってやつで、DOSに付いてたよな)
ハー・・・
0336デフォルトの名無しさん
NGNGそのアプリは関数f1()..f100()の100個の関数で構成されている。
そのアプリを高速化しようと思ったら
まずプロファイラをとって各関数の実行時間の割合を調べる。
プロファイラの結果は大体こんな感じ
f33() 33%
f21() 18%
f65() 5%
f43() 1%
...
この結果から全体の速度を10%あげたければ
f33()を33%->23%になるように高速化すればよいことがわかる。
割合に多少の誤差があってもこの方針はあまり狂わない。
これがプロファイラの基本的な使い方。
0337デフォルトの名無しさん
NGNGデバイスドライバ?
0338デフォルトの名無しさん
NGNGサンクスです!
でも、オレが作った関数、、、おそっ!
0339デフォルトの名無しさん
NGNG0340ビル・ジョブス
NGNGんなことしても意味ないね。
プロファイルする以前に設計が悪いんだよ。事前に分からないのか?
お勉強ツールにはいーかな?
0341デフォルトの名無しさん
NGNGemm386の事か?
emsメモリ用のドライバだが…
電波は放置推奨。
0342デフォルトの名無しさん
NGNGディスクのキャッシュかも
0343デフォルトの名無しさん
NGNG> プロファイルする以前に設計が悪いんだよ。事前に分からないのか?
事前に予測できなかった性能上のボトルネックを探ってるんでしょ。
設計して実装したらその後のチューニングはしないんですか?
“ア ン タ”は?
0344デフォルトの名無しさん
NGNG0345ビル・ジョブス
NGNG「だからこそ」だよ。
みんなで少しでもコードの肥大を抑えるのが「エチケット」。
0346ビル・ジョブス
NGNGしねーよ、テメーは死ねよ。
0347デフォルトの名無しさん
NGNG> プロファイルする以前に設計が悪いんだよ。事前に分からないのか?
ふつーわからない。設計が良くても、思わぬ実装上の問題でボトルネックが
発生している事は良くある。
0348デフォルトの名無しさん
NGNGうわぁ(笑
あんさん、めっちゃおもろいわ
その駄洒落! 最高、流石!!
惚れたね、もう
0349デフォルトの名無しさん
NGNGビル様くらいになってくると、生成されるコードすべても考慮して設計できるんだよ、きっと。
0350ビル・ジョブス
NGNGじゃーそのボトルネックとやらが、MS提供のDLL内だったらどうする?
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG2番目以降の候補に手をつける。
0353デフォルトの名無しさん
NGNGここの1の親戚か?>ビル
0354ビル・ジョブス
NGNG0355ビル・ジョブス
NGNGJohn ◆0z.4Is5E は知らないが・・・
変なヤツと一緒にするなよ。
0356デフォルトの名無しさん
NGNGアンタがこう書いた意図は、
“自前の処理に置き換える”というのはコストが掛かりすぎるし、現実的には対応不能
という意味じゃねぇのか?
ならそこは置いておき2番目以降のボトルネックを改善するのが
なんでアフォな事なのかと、問い詰めたくも無いんで消えてくれ。
むしろ氏んでくれ。
0357ビル・ジョブス
NGNGおいおい小僧ども!もう終わりか?
Windows環境でプロファイルなんて、大した意味がないって分かったか?
0358デフォルトの名無しさん
NGNGっつか、ビルはこの板では John に続く逸材だし。マ板のほうでは氷魚が活躍
中だが。
0359デフォルトの名無しさん
NGNGボトルネックがはっきりしていいじゃない。
問題の API / 関数を極力呼ばないで済むように考える。
0360ビル・ジョブス
NGNGじゃー50番目のボトルネックとやらまで、
>“自前の処理に置き換える”というのはコストが掛かりすぎるし、現実的には対応不能
だったらどうする?
0361デフォルトの名無しさん
NGNG他所様には迷惑かけないようにな。
体力・スタミナ面では氷魚が抜きんでてるか?
0362デフォルトの名無しさん
NGNG氷魚の書き込み量は Kusakabe と張り合える。他のスレッドに伝染しないだけ
マシだけど。
0363デフォルトの名無しさん
NGNGそれ、ボトルネックとは言わんが。
いくつかの関数で均等に CPU 時間食ってる場合には、たいていは実装上の
致命的なミスはない(よって実装レベルでの最適化は必要なし)と判断される。
0364ビル・ジョブス
NGNG頑張ってプロファイルしてくれ!
最後に言わせてもらうが、プロファイル以前の問題を解決してくれよ。
また語ろう!さらば!
0365デフォルトの名無しさん
NGNGネタにマジレスするが、、、
そこまで深刻なら普通はボトルネックの原因であるMSのDLLを使わないようにするだろ。
0366デフォルトの名無しさん
NGNGどのスレか参考までに教えてください。
是非みたい!
以前一般のPC系BBSに居た電波もそんな名前だったな
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGやばくなると逃げる。
ネズミ男の類だな。
0372デフォルトの名無しさん
NGNGあたまで全部処理してる人・・・。(凄い・・・
0373デフォルトの名無しさん
NGNG去るものは追わず。来たら叩け。
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNGVitaminC
0377デフォルトの名無しさん
NGNGそ、そんなアンタ、放送できませんがな・・
0378sage
NGNG適度に尊敬されてたものを..
0379デフォルトの名無しさん
NGNGまた、死体に鞭を打つような真似を…
ゾンビのごとく復活してきたら、ロケットランチャーで追い払うことにして、
とりあえずは放置しときましょうよ。
0380デフォルトの名無しさん
NGNGむずかC〜
0381デフォルトの名無しさん
NGNGプロファイラ関連の発言を見る限り
やたら視野の狭い厨房にしか見えんが...
0382デフォルトの名無しさん
NGNGカルシウム足りねぇんだな、きっと。
面白いからいいけど。
0383(・∀・)
NGNGreadしたいんだけど、うまい方法ありますか?
0384デフォルトの名無しさん
NGNGmemcpy()で何か問題が?
0385デフォルトの名無しさん
NGNGread() といってるから、そもそも * (間接参照) で終わりじゃないのか?
0386デフォルトの名無しさん
NGNGオレもそう思う。なんでコピーしたがるかなぁ?
0387sage
NGNGtypedef struct tagMEMFILE {
char *buf;
size_t bufsize;
size_t readcnt;
} MEMFILE;
MEMFILEBUF *MemFileOpen(MEMFILEBUF *pmem, char *p, size_t len)
{
if ((pmem->buf = (char *)malloc(len)) != 0)
{
memcpy(pmem->buf, p, len);
pmem->bufsize = len;
pmem->readcnt = 0;
}
return pmem;
}
void MemFileClose(MEMFILEBUF *pmem)
{
if (pmem->buf != 0)
{
free(pmem->buf);
}
}
int MemFileGetChar(MEMFILEBUF *pmem)
{
if (pmem->readcnt >= pmem->bufsize)
return MEMFILE_EOF;
return (unsigned char)pmem->buf[readcnt++];
}
unsgiednchar *MemFileGetLine(MEMFILEBUF *pmem, char *buf, size_t bufsize)
{
size_t cnt = 0;
int c;
while ((c = MemFileGetChar(pmem)) != MEMFILE_EOF)
{
if (c == '\n')
break;
if (cnt >= bufsize - 1)
break;
buf[cnt++] = c;
}
buf[cnt] = 0;
return buf;
}
こんなんじゃねえの?
0388(・∀・)
NGNGメモリ領域から加工するときがあって、ロジックを
あまり変えないでメモリもストリーム・イメージに
ならないかな?とおもたんで。387を参考にしてみます。
0389デフォルトの名無しさん
NGNGならば、最初からそう書いておかないと、
またヴァカ質問が振ってきたのかと思うですよ。
0390デフォルトの名無しさん
NGNGそれなら、ストリームのほうに統一しないで、標準入力から加工する
時も、メモリに一旦読み込むってのはダメなの?
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNGでは、何を学べばいいと思います?
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGいやあねえ、
私が教えて欲しいのではなくて、
なにか代替案でもあってそう言っているのかな、と思って
ご意見を伺って見ましょうかと。
0395デフォルトの名無しさん
NGNG続いてるなーと思っていっただけでふ
0396デフォルトの名無しさん
NGNGなあんだ。
Cは古いぜ、とかわざわざ書きに来たのかと思った。
0397
NGNG何が違うのですか??
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG低水準は速いけど読み書きだけなので不便。
unix:
低水準入力はシステムコールで実現。
高水準入出力は、たぶんおそらく内部的に低水準入出力を呼び出している。
win:
低水準入出力はAPIで実現。
高水準入出力もAPIで実現。
仮想記憶に頼りっきりなので性能はあまりかわらんが、どっちかというと高水準の方が遅い。
thx!
0401デフォルトの名無しさん
NGNG例えば、
int n = 0x00000000;
short i = 0x1111, j = 0x2222;
char c = 0x33, d = 0x44;
とした場合、デバッガでメモリの確保のされかたを見てみると、
僕の環境では以下のようになっていました。
44 CC CC CC 33 CC CC CC 22 22 CC CC 11 11 CC CC 00 00 00 00
つまり、各変数に置き換えると、
DD xx xx xx CC xx xx xx JJ JJ xx xx II II xx xx NN NN NN NN
となっています。
すべて 4 バイトの倍数番目から確保されていて、
それぞれの変数の間にはすきまが空いています。
ここで思ったのですが、それぞれの変数間を詰めないのであれば、
メモリの消費をできるだけ抑えるために、
int の代わりに char や short を使ったりするのは意味がないんじゃないでしょうか?
結局、int 分の領域が用意されていることと同じになりませんか?
それとも、この変数間のすきまは何かにちゃんと有効利用されているんでしょうか?
どなたか教えてください。
(説明がややこしくなってすいません。)
0402デフォルトの名無しさん
NGNG処理系依存。
コンパイラによってpaddingを調整できるものもある。
VCだと1〜16byteまでかな?
0403デフォルトの名無しさん
NGNG> メモリの消費をできるだけ抑えるために、
> int の代わりに char や short を使ったりするのは意味がないんじゃないでしょうか?
いまどきのプラットホームだと、あまりない。
ただし配列やら malloc() やらで連続したデータ領域を取ってくるときには、効い
てくる。
0404デフォルトの名無しさん
NGNG構造体の padding じゃなくて stack のアライメントな。
0405デフォルトの名無しさん
NGNG>>401のような環境で、メモリ消費を抑える目的”だけ”でintのかわりにcharやshortにしている場合は、
まったくもってその通り。
ちなみに、スキマができるのは理由がある(アクセスが速くなったりする)ので、
使っているCPUのアーキテクチャを調べてみるのがお薦め。
Intelのホワイトペーパー(?)の日本語訳は、めちゃくちゃ読みやすいよ。
0406デフォルトの名無しさん
NGNGあと、画面消去の方法も教えてください。
0407デフォルトの名無しさん
NGNG0409七誌 ◆AYAYAwqU
NGNG学校で使ってるのは、WINDOWSでは使えないやつなので
WINDOWS対応の奴を教えてください。お願いします。
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGbcc32
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGC言語勉強中なんだけど、配列のソートでつまづいてます。
int main(void)
int test[NUM];
int tmp;
int i,j,s,t;
printf("%d人の点数を入力してください。\n", NUM);
for(i=0; i<NUM; i++){
scanf("%d", &test[i]);
}
for(s=0; s<NUM-1; s++){
for(t=s+1; t<NUM; t++){
if(test[t] > test[s]{
temp = test[t];
test[t] = test[s];
test[s] = tmp;
}
}
}
for(j=0; j<NUM; j++){
printf("%d番目の人の点数は%dです。\n, j+1, test[j];
}
return 0;
}
これをすると点数が一番高い人から表示されるようになるらしいんだけど、
プログラムの意味がよくわかりません。
めんどくさいけど、プログラマー様教えてくださいな。。
0414デフォルトの名無しさん
NGNG上の数値を除いた(NUM-1)の中で一番大きい数値を探し、それを1番目に置く
…
バブルソート、っていうんだけっか
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGそれでもわからなければ、トランプを使って同じことをやればよし。
0417デフォルトの名無しさん
NGNGそうなんです。教科書にはそう書いてあるんですけど、
ifが絡んでるところがわからないんです。
よろしければ、言葉で流れを説明してもらえませんか??
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG馬鹿ソートということでしたら、
もっと、効率的なプログラミングはあるんですか??
よろしければ、そっち(効率てき方)を教えてもらえませんでしょうか?
0420デフォルトの名無しさん
NGNGひらがながわからないんで漢字教えてくださいって逝ってるようなもんだ。
0421デフォルトの名無しさん
NGNGこれほど見事な“教えて君”を見るのは久しぶりだ。
0422デフォルトの名無しさん
NGNG見事な教えて君ですんません。
これがわからなければ言語はきついのかな・・
んでも、マジでやってるんで、よろしくです。
0423デフォルトの名無しさん
NGNGってなに?
0424デフォルトの名無しさん
NGNGシェルソートかクイックソートかヒープソートかシェーカーソートかその他
0425デフォルトの名無しさん
NGNGint hoge_i;
struct hoge *next;
};
↑これはコンパイル通るけど、↓これは通らないけど、なんで?(BCCで)
struct hoge{
int hoge_i;
struct hoge (*next)[5];
};
0426デフォルトの名無しさん
NGNGで、>>414になにかアドバイスしないのか?
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNGわかりました。アドバイスありがとうございました。
実は単純だったんですね。お世話になりました(_O_)
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGカッコを取ったらできたけど、カッコをつけた状態のソースが
意図する変数を宣言したい場合どうしたらいいの?
0431デフォルトの名無しさん
NGNGアフォか?
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG「struct hoge (*next)[5];」は“hoge 5個の配列へのポインタ”だが
struct hoge は定義している途中なのでサイズが判らない。
一方「struct hoge *next;」はポインタだから、hoge の定義が終わってなくても
サイズが判る。
…で本当に“hoge 5個の配列へのポインタ”を意図してるの?
0435デフォルトの名無しさん
NGNGバブルソートではない、と言いたいのだろうけど、
思わせぶりにする程の事か?
0437デフォルトの名無しさん
NGNG誤爆。
#define 428 427
#define 433 434
0438デフォルトの名無しさん
NGNG具体的なソースもおねがいします。
あと、画面消去の方法も教えてください。
好きなタイミングでそれまでの表示を削除することは可能ですか?
これもソースキボン
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG環境依存の質問を書いてるのに、自分の環境を書いてない。
ちゃんとCFAQよめよ。
0442デフォルトの名無しさん
NGNGそのつもりがないから聞いてるんですが。
0443デフォルトの名無しさん
NGNGいかようにすればいいでしょうか?
"あいうえおかきくけこさしすせそ"
上記のような文字列を格納した変数があるとします。
その変数と"かき"と"さし"の二つの文字列を引数に与えると
"くけこ"
が返ってくるような関数が作りたいのですが・・・
0444デフォルトの名無しさん
NGNG色つけたり画面消去したりはエスケープシーケンスていう文字列を
標準出力にprintf()すればKだ。
C言語なら、俺に聞け! <12>
http://pc.2ch.net/test/read.cgi/tech/1012348974/n783
具体的なソースは自分でさがしてちょ。
中途半端なソース書くと、叩かれるからね。
あとは、ライブラリを使うって手もある。
http://www.google.com/search?hl=ja&q=ncurses%81@%90F&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0445デフォルトの名無しさん
NGNG環境ですか?コンパイラとかでしょうか
一応Visual C++ですが
0446デフォルトの名無しさん
NGNG問題:以下のプログラムを書きなさい
"かき”の位置を調べる処理
”かき”の長さを求める処理
文字列の位置と長さを指定して抜き出す処理
getstr("abcde", 1, 3)="bcd"
それらを組み合わせた処理
0447デフォルトの名無しさん
NGNGお好きなように。
strstr() で最初の文字列見つけて、その末尾から strstr() するとか。
0448デフォルトの名無しさん
NGNGじゃぁみんなはそんな問題をどう処理するの?
やっぱりそれまでの流れは全部後ろに表示されっぱなしなわけ??
消したいときもあるでしょ?そんなときはどーしてるの?
0449デフォルトの名無しさん
NGNGおなじ文字列が複数あった場合の動作を規定しないと。
"あいうえおかきくけこさしすせそさし"
のときは、"くけこ"を返すのか"くけこさしすせそ"を返すのか。
0451デフォルトの名無しさん
NGNGこれをあげるからおとなしくしていてね、ボク。
http://www.kumei.ne.jp/c_lang/index_c.html
0452デフォルトの名無しさん
NGNG我らはあなたのしもべではござらん。
なんでも聞けばよいってものではない。
・過去ログを読みましたか?
・1のリンク先を見ましたか?
・Googleでしらべましたか?
すべて既出頻出とうちゃん楽勝ホームランです。
どの方法をとっても、答えは見つかります。
0453デフォルトの名無しさん
NGNG無理ではないです
>じゃぁみんなはそんな問題をどう処理するの?
どうにかします。
>やっぱりそれまでの流れは全部後ろに表示されっぱなしなわけ??
そうじゃないかもしれません。
>消したいときもあるでしょ?そんなときはどーしてるの?
どうにかします。
0454デフォルトの名無しさん
NGNG√ ̄ ̄ ̄ ̄ ̄\
/ ̄ |
/ / ̄ ̄ ̄ ̄ ̄\|
| / |
| / ` ´ |
| / _ _ | 初心者の文字が目に入らぬか!!
(6 つ. |
| ___ |
_ | /__/ |
⊃|房| | ___/
つ  ̄ ⊂
⊃
0455デフォルトの名無しさん
NGNG>>440を読んでねーのか?
質問してくるシロートには過去ログ読めだの言っておきながら・・・
0456デフォルトの名無しさん
NGNGもうちょっと礼儀正しく質問してください、質問君。
0457デフォルトの名無しさん
NGNG0458質問くん
NGNG終了した途端にドスプロンプトの画面が閉じちゃうんだけど何故?
0459デフォルトの名無しさん
NGNGそーゆーもんだから。
最初からDOC窓開いて実行するか
cmd.exe /k yourprog.exe
ってショートカット作ってやってみな。
0460443
NGNG1.文頭からstrstr()で"かき"の位置を調べる。
2.文頭からstrstr()で"さし"の位置を調べる
3.
2ー1の値が抽出する文字列の長さだから(?)
>446のgetstr(格納してある変数,1の値+"かき"の長さ,2,)を完成させればよしと言うわけですね。
ありがとうございました。挑戦してみます!
0461デフォルトの名無しさん
NGNGとりあえず動体視力を鍛えなさい。
・・ではなくて、
気がついて欲しい回避方法
・mainの最後にgetsを入れとくだけでとりあえず回避できる。
正しい方法
・DOS窓の設定を「実行後に閉じない」にする。(ショートカットのプロパティ)
0462デフォルトの名無しさん
NGNGstrstrとかStrtokをごちゃごちゃいじりまわす知識を付けるよりは、
自分でゼロから書いたほうが絶対勉強になります。
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG動体視力を上げることで対応しようとした人って
結構いると思う。その一人>>464
0466デフォルトの名無しさん
NGNG{
size_t len1;
char *p1;
size_t len;
len1 = strlen(key1);
if ((p1 = strstr(str, key1)) != 0)
{
if ((p2 = strstr(p1 + len1, key2)) != 0)
{
len = p2 - p1 - len1;
if (len >= bufsize)
{
/* 長すぎ。ぶった切る */
len = bufsize - 1;
}
strncpy(buf, p1 + len2, len);
buf[len] = 0;
return buf;
}
}
return 0;
}
0467質問くん
NGNGそれは「プログラムを終了時に閉じる」のチェック
を、はずすということですか?それでもむりだったんですけど・・・
0468デフォルトの名無しさん
NGNGむ、確かに無い・・・Win98とかにはあったのになぁ
>>467
諦めて、DOS窓を開いてから手でファイル名入力して実行しましょう。
0470デフォルトの名無しさん
NGNG・mainの最後にgetsを入れとくだけでとりあえず回避できる。
0471デフォルトの名無しさん
NGNG0472質問くん
NGNGそれも無理でした、ちなみにOSはWIN95です。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGそれはありえん!
0475デフォルトの名無しさん
NGNGそういうこだわりは、Cが出来るようになってからでよろしい。
0477デフォルトの名無しさん
NGNGカコイイ!
0478デフォルトの名無しさん
NGNG俺はDOS窓からコンパイルしているからそのまま実行しちゃうけど。
0479デフォルトの名無しさん
NGNGなんなのそれ?
$ gcc -c a.c
a.c: In function `pickup':
a.c:13: `p2' undeclared (first use in this function)
a.c:13: (Each undeclared identifier is reported only once
a.c:13: for each function it appears in.)
a.c:21: `len2' undeclared (first use in this function)
0480質問くん
NGNG大成功しました。
皆さんご協力有り難うございました。
0481デフォルトの名無しさん
NGNG使うにはどうすればよいの? なんかgiveioとか言うのいれたけどできません。
ちなみにC言語でポート制御しようとしてます
誰か教えて〜
0482デフォルトの名無しさん
NGNG本(独習C)で、
int main(void)
{
としているのですが、
main()
{
と何が違うのでしょうか。下のを使っていてもいいんですよね。
0483デフォルトの名無しさん
NGNG仮引数は省略するとvoidになる。
はずだけど、明示的に書いておいたほうがコンパイラタンに文句を言われない。
0484デフォルトの名無しさん
NGNGこれを文字.txtつけてcharポインタを返す関数を作りたいんですが、
1000を入れれば、1000.txtと返すような。。。
char *itotxt(int nu){
char fn[9];
sprintf(fn,"%d.txt\0",nu);
return fn;
}
これじゃダメですよね?シクシク
0485デフォルトの名無しさん
NGNGreturn(0); と return 0;
は何が違うのですか?
0486暇人
NGNGstatic char fn[9];
sprintf(fn,"%d.txt",nu);
return fn;
}
0487デフォルトの名無しさん
NGNG何も違わない。
0488デフォルトの名無しさん
NGNG1+1 と (1)+(1) くらいには違う。
0489デフォルトの名無しさん
NGNGタイプ量
0490デフォルトの名無しさん
NGNGタイプ量って何ですか?
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG一体誰が文字列の中に "\0" を入れ始めたんだろうか…
要らんですよ。
char fn[9] は、その関数の中にしか存在しません。
(文字列への) ポインタを返すなら
1. static char fn[9] にして、関数を抜けても無くならないようにする。
2. 文字列へのポインタを引数で貰う。
3. malloc() 等で動的にメモリを割り当てて、そこに文字列を格納して返す。
のどれかでしょう。マルチスレッドなプログラムで無ければ 1. が最も
簡単ですね。
0493デフォルトの名無しさん
NGNGこの問題を教えてください。
次のプログラムの誤りを指摘しなさい。
#include<stdio.h>
void sqr_it(int num);
main()
{
sqr_it(10.0);
return 0;
}
void sqr_it(int num)
{
printf("%d", num*num);
}
0494デフォルトの名無しさん
NGNGsqr_it(10.0); → sqr_it(10);
0495デフォルトの名無しさん
NGNG↓
void main()
0496デフォルトの名無しさん
NGNG出題者、DQNか?
0497デフォルトの名無しさん
NGNGありがとうございます。
その解答に「sqr_it()関数には整数の引数が必要だが、
呼び出す時には浮動小数点値を必要とします。」
とかいてあるのですが、どういう意味ですか?
0498デフォルトの名無しさん
NGNG>void main()
ここだろ。
0499デフォルトの名無しさん
NGNG整数の引数を要求する関数に実数を渡した場合、
自動的に実数->整数変換されるのはまったく正しい動作です。
よって実は誤りがないという誤り。
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG覚えるのは俺だけ?(確かに間違ってはいないけど。。。)
0502デフォルトの名無しさん
NGNG安易に
static char buf[256];
...
return buf;
とかやると破綻するよね。
0503デフォルトの名無しさん
NGNGマルチスレッド時代に生きていると
違和感を覚えるのが正常です。
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNGおれも違和感ある。
その関数を複数回呼び出すとき混乱しそうで。
0506デフォルトの名無しさん
NGNGでも、関数の中でmallocしてそのアドレスを返すと
誰がfreeするのか気になって仕方がないんですが。
0507デフォルトの名無しさん
NGNGそういう場合呼び出し側がmallocしてそのバッファのアドレス渡して
使い終わったら呼び出し側でfreeするのが良い。
0508デフォルトの名無しさん
NGNG呼び出し元が free() すれば良いじゃない。もしくは文字列長が呼び出し側で
予測つくなら、snprintf() のように
char *buf, size_t n
を渡すのも手だ。これなら呼び出し側でメモリ領域を確保できるから、自動
変数だろうが malloc した領域だろうが global 変数だろうが OK だし。
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNG「static 変数を返す」で、即座に対案として malloc の単語が思い浮かばないよう
なら逝って良いぞ。
0511デフォルトの名無しさん
NGNG0512509
NGNG勘違いは逝ってきます;- -)
0513デフォルトの名無しさん
NGNG逝って良し!
0514デフォルトの名無しさん
NGNG教訓としては
Staticは内部で消えない変数としては使って良いが、
外部に渡せることを期待してはいけません。
ですか。
0515501
NGNGシングルスレッドでも割り込みルーチンで static 変数のアドレスを返す関数を呼んで、
その関数内で static 変数の操作+呼出元のルーチンで変数の参照をしてたら目も当てられない
というのを今思い付いたが、どうだろう?(かなり強引な例だが、やはり static 変数の
アドレスを返す関数は良くないと思う)
0516501
NGNGどうも寝ぼけてるようなので逝って来ます。
0517デフォルトの名無しさん
NGNGどの様にすれば良いですか?
0518デフォルトの名無しさん
NGNGOSはなにをご所望?
0519デフォルトの名無しさん
NGNGprintf("%s,%s",itotxt(3),itotxt(4));
でアウトってことだよね。はげどー。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGおれはmalloc()に特に抵抗ないよ。
必要ない時は使わないけど。
不安ならleakチェッカーみたいなのがお薦め。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG>>492
どうもありがとうございますです。
変数のスコープが問題だったのですねん。
確かに複数回呼ぶのでmainの方に作ろうと思ってますです。
0524デフォルトの名無しさん
NGNGほんとだ。
struct in_addr in1,in2;
in1.s_addr = inet_addr("1.1.1.1");
in2.s_addr = inet_addr("2.2.2.2");
printf("%s\n%s\n",inet_ntoa(in1),inet_ntoa(in2));
1.1.1.1
1.1.1.1
自前でコピーしとけってことか。
0525デフォルトの名無しさん
NGNGgmtime,localtime,asctimeなんかみんなそうだし、
strtokもstatic変数使ってる
たとえマルチスレッドライブラリを使用していても
関数引数に2つ渡せない、+-等の演算で2つ使えない、再帰処理中に使えない、は皆同じ
0526デフォルトの名無しさん
NGNGで、結論的には、
1.static変数を戻り値で返すな。gmtimeなんかうんこ。もう使ってやらん。
2.なんか山ほど例があるので、いいんじゃないの。あんま気にすることないだろう。
の2ってことでよろしいか?
0527デフォルトの名無しさん
NGNG一長一短あるからmallocしようがstatic返そうが好きにしろ。
0528デフォルトの名無しさん
NGNGgmtimeなどは一般的な注意知識として、喚起されているので
しょうか。
知らなかったので、自分が今までに書いたソースが大丈夫か
と一瞬焦ったのですが。
0529デフォルトの名無しさん
NGNG> gmtimeなどは一般的な注意知識として、喚起されているので
> しょうか。
UNIX系だと man gmtime すれば書いてあるし、
WindowsだとMSDNにはあるし…。知らないのは不注意という気がする。
0530デフォルトの名無しさん
NGNGOSだけに依存するの?
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNGC的に言うとargumentは関数の引数、parameterは関数の引数とは
限らずグローバル変数かもしれない。
0533デフォルトの名無しさん
NGNGプログラミングでは訳語が決まってて、それぞれ実引数と仮引数となってる。
意味は次のとおりね。
実引数 (argument)
関数呼び出し時に、関数に渡す値
仮引数 (parameter)
呼ばれた関数で、渡された値を参照する引数
例
int foo(int n); // n は仮引数
foo(3); // 3 は実引数
0534デフォルトの名無しさん
NGNGそうすると、占めるメモリ領域の違いに応じて本来ならば
厳密に使い分けないといけないということですか?
今FAQを読んでました。そこにはこう書いてあります。
argument:
関数呼出し式において、括弧で囲みコンマで区切った並びの中の式
関数形式マクロの呼出しにおいて、括弧で囲みコンマで区切った並びの中の前処理字句の列
parameter:
関数宣言あるいは関数定義の一部として宣言され、関数に入る時点で値を得るオブジェクト
関数形式マクロ定義におけるマクロ名の直後の括弧で囲まれコンマで区切られた並びに現れる識別子
これだけじゃなんのことかよく分からなかったので。
解釈の細部に関する事柄になるのかな?
0535デフォルトの名無しさん
NGNGどうもありがというございます。
言語的な詳細は分かりませんが、
お二方の説明を総合して、
引数を関数の内側と外側のどちら
見た違いという理解に留めておきます。
ありがとうございました。
0536デフォルトの名無しさん
NGNG{
printf("ガンバッテルね\n");
}
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG>>536は perl でフツーに実行できますが何か。
0540デフォルトの名無しさん
NGNGなるほどね。だが、残念ながらスレ違いだ。
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG使い捨ての数値計算プログラムなら前者。
というかグローバル変数を使う。
0545デフォルトの名無しさん
NGNGmalloc を使う理由
- 必要なサイズが、実行してみるまで分からない
- 再入可能にしたい
- スレッドセーフにしたい
static を使う理由
- ヒープの断片化を防ぎたい
- コンパイル時に決まった値で初期化したい
0546デフォルトの名無しさん
NGNGそりゃなぜに??
簡単だから?
0547デフォルトの名無しさん
NGNGint main ( void )
{
int a;
unsigned int b;
a = -1;
b = 0;
if ( a < b )
{
printf ( "b is bigger then a.\n" );
}
else
{
printf ( "a is bigger then b.\n" );
}
return 0;
}
この結果に驚くのは私だけ?
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGthenはthanの間違い?どうでもいいけど。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNGaは大なり 是b。
0553デフォルトの名無しさん
NGNGこうした時はaの型で見るんだっけ?bの型でみるんだっけ?
unsignedで比べたらfalseになるけど。
0554デフォルトの名無しさん
NGNG符号付きの項は符号無しのほうに符号拡張される。
-1を符号無しに符号拡張したときの動作は未定義。
だが普通は0xffffffffのような大きな符号無し正数に変換される。
コンパイル時に警告がでる場合がほとんどだろう。
0555デフォルトの名無しさん
NGNG↓
同じサイズの符号付き整数と符号無し整数を比較もしくはその他の二項演算を行う場合
0556デフォルトの名無しさん
NGNGもちろん、-Wallはつけた上での話だろうな。
0557デフォルトの名無しさん
NGNG腐っとる・・・
0558デフォルトの名無しさん
NGNG符号無しとして見るんですね。ありがとうございました。
符号ありなら要キャストか。
0559デフォルトの名無しさん
NGNG-Wallを付けたでも警告無し。
0560240
NGNGプラットフォームにもよるが一般的にはmalloc。
static配列デカイの作ると実行モジュールサイズでかくなるだろ。
かといってStack上に作ればstack overflow起こすし。
0561デフォルトの名無しさん
NGNG初期化してない、もしくは0初期化なら実行モジュールサイズには
影響されないんちゃう?
0562デフォルトの名無しさん
NGNGとして
D(a)yosi
が itteyosi ではなく itte yosi(スペースが入る)と展開されるのは
規格で決まってますか?決まってれば少しありがたいのですが。
vc6では cl /E の出力ではスペースがないが、実際のコンパイルではスペースが入ってるようです。
gccでは gcc -E も実際のコンパイルでもスペースありになってました。
gccで符合のありなし比較の警告を出すのは -W だよ。
0564デフォルトの名無しさん
NGNGlen = (int)strlen(byte型);
としたいのですが・・・。
0565デフォルトの名無しさん
NGNGVCなら
len = _mbslen(bytes);
長さを取り扱う型はsize_tだぼけ。
0566デフォルトの名無しさん
NGNG激サンクス!
い、逝って来ま〜す。
0567デフォルトの名無しさん
NGNGbyte bitmaps[][12] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
・
・
・
とあるのを
for (i=32; i<127; i++){
len = _mbslen(bitmaps[i-32]);
と出来ますか?
0568デフォルトの名無しさん
NGNGなんだ そりゃ?
何がやりたいんだ?
つーか、出来るか出来ないか自分でやってみりゃイイだに。
0569デフォルトの名無しさん
NGNG_mbslenで何を取得する気?
> unsigned char から const char * に変換する方法在りますか?
「unsigned char* から const char*」か?
0570567
NGNGglutで文字を出したいんですけど・・・。
glutBitmapCharacter(void *font, int len);
glの方で自分が間違ってるか、上で書いた部分が
間違ってるのか良くわからないので・・・。
0571デフォルトの名無しさん
NGNGそれぢゃあ_mbslen()ではムリだべ。
OpenGLスレ使え。
http://pc.2ch.net/test/read.cgi/tech/981044659/l50
0572570
NGNGビットマップ・キャラクターを描画します.
void glutBitmapCharacter(void *font, int character);
font
使用するビットマップ.
character
描画しようとする文字(8ビットに制限されていません).
の様です・・・。
0574デフォルトの名無しさん
NGNG物議をかもしています。フックのうまい説明ないですかね?
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG仮にプログラムに3D描画機能があるとする。
でも外部からその3Dを呼び出すためのAPIがない。
そこでフックなるコードをプログラムに埋め込んで、
任意で呼び出せるようにする、みたいなもんだと思う。
ただし完全なAPIではないのでいろいろ制限がある。
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG0580デフォルトの名無しさん
NGNGなぜ?
0581デフォルトの名無しさん
NGNGperror()してみろ
0582デフォルトの名無しさん
NGNGハックじゃねぇの? それ。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNGどういう文脈で使ってるんだ?
0585デフォルトの名無しさん
NGNGボクシングゲームだったりして。
0586デフォルトの名無しさん
NGNG日本語テキスト(SJIS,JIS,EUC,UNICODE)での
動作は処理系によっては保証されてないと思って
コーディングすべきでしょうか。
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG脇をしめ,内角に向かってえぐり込むように打つべし
0589デフォルトの名無しさん
NGNGべきだ
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG端末にエコーバックされないようにするためにはどうすればいいのでしょうか。
特別なファイルオープンだとかがあるのでしょうか。
0594デフォルトの名無しさん
NGNG簡単に済ませるなら stty コマンドを使って stty -echo
マジメにやるなら ioctl システムコールを使って、端末の動作を設定
0595デフォルトの名無しさん
NGNGパスワード入力目的なら、getpass()にしよう。
自力でやろうとすると、>>594のいうように、結構大変だよ。
man termios とか調べないとだめかも。
0596593
NGNGman termios,ioctl しましたけど私の実力だとかなり厳しそうなので
取敢えずの所、getpass() でやってみようと思います。
どうもありがとうございます。
0597デフォルトの名無しさん
NGNGたとえば、割り込みルーチンをCでかくときに、
hook するよね。
曖昧なしったか君なんで、偉い人のマジレスきぼんぬ。
0598デフォルトの名無しさん
NGNGファイルがないとか?
W+ でopen したら?
0599名無しさん
NGNG旧いコンパイラでは、0/2 のように 0の除算をすると0を返していた(信じられん)
が新しいコンパイラでは不定値 が返る。
そのため、除算専用の共通関数を作って該当箇所を全て置き換えるか、
マクロを定義して置き換えるか迷っている。
俺的にはマクロだと思うが、おまえらどう思いますか?
また、ほかにもっといい方法はありませんか?
よろしくおながいします。
0600デフォルトの名無しさん
NGNG>旧いコンパイラでは、0/2 のように 0の除算をすると0を返していた(信じられん)
おまえの頭が信じられん
0601599
NGNG>>旧いコンパイラでは、0/2 のように 0の除算をすると0を返していた(信じられん)
>おまえの頭が信じられん
すまそ。
2/0のように0で除算をすると
の間違いでした。(鬱
0602デフォルトの名無しさん
NGNGなんとなくマクロで。
ちなみに、0除算(あ、これじょざんて言うのか・・・じょさんかと思ってた)
でトラップだか例外だかが発生しない環境なのー?
0603デフォルトの名無しさん
NGNGif文でCの式はその結果が0以外の値なら真、0ならば偽と評価される
というのはどういうことですか。
また、「次の式のうち真なのはどれか答えなさい」という問題で
a. 0
b. 1
c. 10*9<90
d. 1==1
e. -1
で答えはb,d,eなのですが、bとdがどうして答えなのかわかりません。
0604デフォルトの名無しさん
NGNGそのままの意味です。0以外=真、0=偽。日本語読めませんか?
そーすると b と e が真なのは、定義そのままで、疑問の余地なし。
d は、1==1 は真なので、真です。
0605562
NGNG>>562
0606デフォルトの名無しさん
NGNG0というのはどういうことですか?
0607デフォルトの名無しさん
NGNGごめん。オレ知らない>#define展開時の詳細規則
0608デフォルトの名無しさん
NGNGどういうことって、数字の 0 だ。 1 より 1 小さい奴。 -1 より 1 大きいの。
0609デフォルトの名無しさん
NGNG0だよ0。全てのビットが0。
0610デフォルトの名無しさん
NGNG整数のゼロです。
>>605
スペースが入るというか、そこにホワイトスペースがあるのと同じ扱いのはず。そういう妙な識別子の連結は ## を使わない限り行われないはず。
0611デフォルトの名無しさん
NGNG0はゼロだよ。で例えば、Cで何かを比較した場合、
a<b
a==b
a!=b
とかね。これらの関係が成り立っていれば、1を返すことに決まってるのよ。
ちゅまり、
printf("%d\n",1>0);
printf("%d\n",0>1);
ってやると、
1
0
って表示されるわけ。なので、
if (11<10) とか
if (0)
は、どちらもelse以降が実行される。
if (10<11) とか
if (1) とか
if (30)
は、どれも直後の文が実行される。実際やってみれば判るはず。
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG見れば見るほどすごい質問だな…
0615デフォルトの名無しさん
NGNGprintf("2数を入力せよ");
scanf("%d%d", &i, &j);
printf("整数を入力せよ");
scanf("%d", &i);
printf("整数を入力せよ");
scanf("%d", &j);
上の2つは同じことですよね。どちらを使いますか?
一番上のは、一つめの数を入力してからエンターキーを
押してから2つ目の数を入力しますが、なぜエンターキー
なのですか?
0616デフォルトの名無しさん
NGNG別にエンターでなくても、スペースで区切って2つの数を入力してもおっけー。
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNGまずscanfを使わない。
エンターキーなのは、標準入力が行単位でフラッシュされるバッファを
経由しているから。
0620611
NGNG組み込みの演算子は1か0しか返さないことが保証されてると思うんだけど。
http://www.bpel.tutics.tut.ac.jp/~take/basement/faq-c/faq-c8.html
のA8.2に書いてあった。
真意のほどフォローキボンヌ
0621
NGNGそこでフリーソフト等のソースファイルを参考書代わりに
勉強しようと考えているですが、
お勧めのものはありませんでしょうか??
0622デフォルトの名無しさん
NGNGscanfを使わないってどういうことですか?
>>619
初心者なので言葉の意味が分からないです、すみません。
標準入力、フラッシュ、バッファを経由する、の意味を教えてほしいです。
0623デフォルトの名無しさん
NGNGそゆことじゃなくて、真=1、偽=0って思わせるような書き方がマズいんだと思われ。
0624デフォルトの名無しさん
NGNG標準関数のソース
0625デフォルトの名無しさん
NGNG俺はよく知らないけど、scanfは使わない方がいいらしい。
でも、scanfって必要になることある?
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG初級:fgets
中級以上:scanf
0629デフォルトの名無しさん
NGNG例えば、
char c[10];
scanf("%s", c);
で、画面から20文字入力しちゃったりすると…
0630デフォルトの名無しさん
NGNGint main (void)
{
char arry[2][5] = {'o','r','e','a','h','o','\0'};
for (int i = 0 ; i < 2 ; i++ ){
printf ("%s\n",arry[i]);
}
return 0;
}
を実行すると
oreaho
o
って表示されます。
自分的には
oreah
(↑2行目は何も表示されない)
という結果になるのかと思ってたんだけど・・・・・
arry[2][5]が大きさ5の物を2つ宣言しているのはわかってます。
printfで%sが文字列(最初の\0まで)を表示することもわかってます。
でも、%sにchar[5]の物を与えているんだからoreahまでしか
出力されないもんだと思ってました。
charの配列に\0を入れないのが悪いというのはわかってるんですが
なんかしっくり来ません。
こんなお猿さんに愛の手をっ!!
0631デフォルトの名無しさん
NGNG残念ながら、多次元配列はふつーめもり上に一直線に確保されます。
なので、切れ目っていうのはありません。そこはプログラマの責任で
がんばらないといけません。
0632catch!
NGNG0633デフォルトの名無しさん
NGNGきゃー恐い。
0634デフォルトの名無しさん
NGNGはなぜ0になるのですか?
0635デフォルトの名無しさん
NGNG整数型で計算すると余りが破棄されるから。
0636デフォルトの名無しさん
NGNG0637635
NGNG小数部を破棄して0
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGリッチータンに聞いて。
0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG流石!!!
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNGprintf("%d\n",2/14);
が
Inf
ってなるのか・・・
0646630
NGNGヨーク考えてみたらわかった。
%sに与えているのはchar[5]の配列ではなくて
特定のchar(あえて書くならchar[1])のアドレスなのね。
そこのアドレス以降ではじめて\0が出てくるところまで
出力すると・・・・・
0647デフォルトの名無しさん
NGNGネタ結構だけどせめて%fでやってホスィ
0648645
NGNGツッコミさんきゅーーー!!!
だれもネタにつっこんでくれなかったらどうしようと心配だった・・・
あぁそうさ。オレの環境でも0って出るのさ。ちょっと見栄はってみたかったんだよーーーん。
0649名無しさん@Meadow
NGNG0650デフォルトの名無しさん
NGNG標準関数のソースってどこにあるんですか?
0651デフォルトの名無しさん
NGNG環境は? *BSD とか使ってるなら /usr/src/lib/libc 以下にあるし、VC6 なら
C:\Program Files\Microsoft Visual Studio\VC6\CRT\SRC (インストール先
を変えてなければ) あたり。
0653650
NGNGるんですが...難しい。
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNGGNU のソースはポータビリティの優先度が高いので、はっきりいって汚いコード
が多い。勉強のために読むなら *BSD の方が良いと思うぞ。
0656デフォルトの名無しさん
NGNGついでに、読んでるだけだと、どこが良くてどこが悪いのかわからないっていう
場合のために、ひとつおすすめ。
Cプログラミング診断室のオンライン公開版
http://www.pro.or.jp/~fuji/mybooks/cdiag/
0657デフォルトの名無しさん
NGNGfor(i=2;i<num/2;i++)
if((num%i)==0) is_prime =0;
if(is_prime==1)printf("素数です");
else printf("素数ではありません");
こう書いてある本があるんですけど、おかしくないですか。
for文に{ }ってつけますよね。
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG> for文に{ }ってつけますよね。
ループ内で実行する文が複数あればな。
0660デフォルトの名無しさん
NGNGifやelseならおかしくないの?
0661デフォルトの名無しさん
NGNG{
char c[12];
……(文字列を生成してcに代入する処理)
return c;
}
上記のような、文字列のポインタを返す関数を書いて、
ダイアログプロシージャで以下のように書きました。
SetWindowText(GetDlgItem(hDlgWnd, IDC_EDIT), (LPCTSTR)Generate());
Generate()で生成した文字列がエディットボックスに
表示されるはずなんですけど、どうも期待した動作になりません。
どうやったら文字列のポインタを渡してそれを表示できますか。
仕方ないので今は c をグローバル変数に変えて
Generate();
SetWindowText(GetDlgItem(hDlgWnd, IDC_EDIT), (LPCTSTR)c);
としています。でも何か格好悪いです。
0662デフォルトの名無しさん
NGNG自動変数のアドレスを返してどうする。
静的変数にしろ。
0663デフォルトの名無しさん
NGNG0664tsukkomikun
NGNGここC言語スレ。
0665デフォルトの名無しさん
NGNG0666666!
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧,,∧,,,,,, ) (´⌒(´
⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
""""" (´⌒(´⌒;;
ズザーーーーーッ
0667デフォルトの名無しさん
NGNGまったくもっておかしくないよ。
試しにコンパイルしてみればいいじゃん。
0668661
NGNGstatic char c[12];
と宣言したら期待していた動作になりました!
>>663
CStringなる型を使ってみましたが、
未定義のシンボルだと叱られてしまいました。
では、どうもありがとうございました。
0669デフォルトの名無しさん
NGNGそういう意味じゃなくて、forには疑問を抱いているのに、ifやelseには疑問を抱いていないということがおかしいと思ったから聞いたの。
0670デフォルトの名無しさん
NGNG当然できない(;_;)
0671デフォルトの名無しさん
NGNG今、俺もそう思って試しやってみたところ(笑)
0672671
NGNG○試しに
0673670
NGNGさすがリッチィ様(愛)
0674653
NGNGアドバイスいただいた通り、http://www.jp.freebsd.org/mirror.html にある
FreeBSD の ftp サイトをうろついてみたのですがソースのありかが分かりま
せんでした(鬱 src ディレクトリとかはあったんですがその下にもそれらし
いのはないし。それらしいの落としてみたら binary のようだったし。
どこにあるんでしょ?もしかして探し方が間違ってる?
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNGえ?for文の最大値って何?
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGif(finish) max_count = i;
0680デフォルトの名無しさん
NGNGこう?
for(i=0; i < i+1; i++);
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG>>671
unsigned char main = 0xc9; /* Z80 */
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNGCtrl+C必須ですか?
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNGオーバーフロウ時?
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG>>687であっている?
char型でやってみよ。
0691デフォルトの名無しさん
NGNGそもそもiの宣言書いてないんだし。
0692デフォルトの名無しさん
NGNGunsignedでも止まることは止まる・・・けどね・・・
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG0699676
NGNGプログラム的には良く使われるかどうか聞きたかったでが・・。
0702680
NGNGhttp://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/q/quickSort.html
ここにクイックソートがあるけど、whlie(i<j)ってあるよね。
これ、for(i=first; i<j ; ) {} とも書けるんだけど、このループ中って、
iもjも変化してるよね。あんま良い例じゃなくてごめん。
0703701
NGNG遅くまですいません・・。
紙にカキコして流れを追ってみます。φ(`∇´)φ
ではオレンジジュースに行ってから寝ます。
後、SONYのVAIOに詳しい人居ませんか〜?( ゚Д゚)ホスィ
ではでは。m(__)m
0704デフォルトの名無しさん
NGNGこの問いには正解ってもんは無いと思うが・・・
forの継続条件が動的に可変なのは、正直お薦めしない。
forはwhileで置き換え可能なんだから、こちらの使用をお薦めする。
こちらの方が可読性が上がると思われ。
で、VAIOは板違いだ!( ゚Д゚)ゴルァ!
0705デフォルトの名無しさん
NGNGifを使わない理由が知りたいです。
0706デフォルトの名無しさん
NGNG世の中にはif文を嫌うキティちゃんがいます。
0707デフォルトの名無しさん
NGNGその理由が知りたいです。簡単でいいので
彼らがifを嫌う理由、教えていただけませんか?
0708デフォルトの名無しさん
NGNGこんどからそう理解しておこうと思います。
0709デフォルトの名無しさん
NGNGさあ?俺には理解できないので。
嫌う人がいるのは知っているけど、その理由まではわからない。
自己満足とか?
0710デフォルトの名無しさん
NGNG単純な比較の最適化なら大して変わらないと思うが。
0711デフォルトの名無しさん
NGNG結局 case を使うかもしれないような場所では
そういうふうに書くかも。
コマンドラインのオプションのような
後から増えることがありそうなものとか。
そういうものでは if 使うより意味的にも合ってる感じもするし。
0712デフォルトの名無しさん
NGNGその条件が仕様変更とかで、将来増える可能性が有るからかと。
1つの条件が2つ3つと増えるかもしれないって考えるなら、
最初からswitchで書くのもアリかと。
単純にtrue,falseだけの条件ならif使うけど。
0713712
NGNGケコーン?
0714711
NGNGでなく
> 結局 switch 使う
です。
普段 switch がなくて case はある言語を使ってるもので…。
0716712
NGNG会社に泊まって仕事してたばっかりに(w
0717デフォルトの名無しさん
NGNGヴィビ?
0718711(真性ひきこもり)
NGNGこんな時間に仕事っすか…。ご苦労様です。
ガムバッテください。
0719デフォルトの名無しさん
NGNGVBか?って聞いただけなのに。
0720712(DSPぷろぐらま)
NGNG4時位で仕事切り上げて、ここで遊んでた(w
でももう寝る。おやすみー
0721デフォルトの名無しさん
NGNG可能な限りswitchを使えということかな?
そうすれば後から見たときに、ああ条件が増える
こともあるんだな、って分かるというか。。
こういうコーディング規約なんて見たことありますか?
0722デフォルトの名無しさん
NGNGまっとうな理由なら、今朝ご結婚なされた>>711>>712夫夫(ふうふ)の
おっしゃることが理由かも。
ただ、if のかわりに switch case と聞くと、どうも昔のBASICのなごりで、
「ifは遅いからON GOTOを使え!(by Dr.D)」ってのがいまだにひっかかってて、
コンパイラ時代に取り残されてしまった可哀想な方々を想像して
しまうんだけど、想像力逞しすぎですか?
0723デフォルトの名無しさん
NGNGない。
というか、後から条件が増えそうな場合には、条件をデータファイルに切り出して
switch - case や if else のロジックでプログラムに埋め込まないようにする。
0724デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNGswitchはジャンプテーブルに変換されるんでifより速いよ。
全てがではないけどね。
0727724
NGNGなるほど。逆の意味にとってたよ〜(;´Д`)。
スマソ。
0728デフォルトの名無しさん
NGNGsizeof "abc" - 1;
どっちが早いですか?
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG初心者いじめるなよ・・・ 禿同だけど。
>>728
strlenは、文字列を1文字づつ確認して長さを求める。
sizeofは、コンパイルする時に値が確定する。
あと5秒考えれば解るぞ(w
0731デフォルトの名無しさん
NGNG> strlenは、文字列を1文字づつ確認して長さを求める。
とは限らない。C 標準関数呼び出しは、コンパイラの判断でインライン展開する
ことも許されてる。結果的に strlen("abc"); がオブジェクトコードでは定数になっ
てるかもしれんぞ。(まぁ重箱の隅だけど)
0732デフォルトの名無しさん
NGNG>C 標準関数呼び出しは、コンパイラの判断でインライン展開する
>ことも許されてる
へ、そうなの?初めて知ったよ、そんなの。
0733デフォルトの名無しさん
NGNG各標準関数毎のインライン展開時の最適化が仕組まれていないと。
不可能ではないだろうけどさ…
0734デフォルトの名無しさん
NGNGあまり知らなくても困らんしね。gcc なら -mmemcpy とか VC6 なら pragma の
intrinsic とか調べると書いてあるよ。
>>733
> 各標準関数毎のインライン展開時の最適化が仕組まれていないと。
C 標準関数のインライン展開は C++ の inline 関数と違って、たいていはコンパイラ
が直にアセンブルコードを出力するようになってるから、不可能ではないよ。ただ、
そこまでやってる処理系が存在するかどうかは知りません。
0735デフォルトの名無しさん
NGNG定数化はできないと思われ…
0736デフォルトの名無しさん
NGNGだけで十分だろ。
コンパイラがリテラル定数を引数に取るstrlenをコンパイル時に解釈するかどうかは
環境依存な問題だ。
0737デフォルトの名無しさん
NGNGもちろんそうだが、インライン展開する場合にはコンパイラは必要な情報を
持ってる(構文解析した結果のツリー構造をメモリ中にもってる)から、定数
展開はできるよ。(っつか、俺が昔書いた処理系ではそうしてた)
ただ、それは重箱の隅だというのも最初から言ってる通り。
あと個人的にはワイド文字を使うときに死ぬ可能性が高いのと可読性が落
ちるから、文字列長を取得する目的で sizeof() を直にコードに埋め込むは
お勧めしないけど。LITERAL_LEN() みたいなマクロを一つ定義した方が良
い。
0738デフォルトの名無しさん
NGNGファイルfpからデータをどういう風に読み込むんでしょうか?
読み込んだら次はどこを読み込むんでしょう?
0739デフォルトの名無しさん
NGNG意味を保持するのは、技術的に興味あるなぁ。
int i;
{char* ptr;for(i=0,ptr="abc";*ptr;++ptr,++i);}
が
i=3;
に最適化されるってのも、すごいけど。
0740sage
NGNGファイルを読み書きするための情報がつまった構造体へのポインタだ。
読み書きするための情報がつまった構造体の実体は標準ライブラリの中にある。
読み込んだら、「次」のデータを読み込む。
直前にungetcしてたら、ungetcしたデータを読み込む。
0741デフォルトの名無しさん
NGNGって言うか、どういう意図でそういう質問をしてるのかがわからん。
0742デフォルトの名無しさん
NGNGstrlen をインライン展開する場合には
strlen '(' expr exclude literal ')'
OUTPUT "push addr_of(var)"
OUTPUT "call strlen"
strlen '(' literal ')'
size_t n = strlen(value_of(literal))
OUTPUT "mov reg <- %d", n
ってな感じで、コード生成ルーチンを分ければ簡単じゃないの? 引数が
文字列リテラルか変数かは構文解析の段階で分かってるわけで。
0743738
NGNGファイル(0と1が並んだファイル)からデータを読み込んでbit処理する次のプログラムがあって、
どうなってるのかよく分からなかったので質問しました。
bit_index = 1;
do{
byte_data = (unsigned char)fgetc(fp);
work = (unsigned char)(byte_data << (bit_index-1));
work = (unsigned char)(work >> 7);
bit_index++;
}while(work = !0);
この場合最初読み込むデータが1のときは
work >> 7 で左に0が7入って00000001になるってことでいいんでしょうか?
後、次にfgetc(fp)でデータをお読み込んだとき
読み込んだ値は一番左の0に上書きされるんでしょうか?
それとも全体が一つ右にシフトしてデータが一番左に入るんでしょうか?
bit処理演算子を使ったことなくて本読んでもよく分かりません。
何でbit処理するのか
0745デフォルトの名無しさん
NGNGって言うか、どういう意図でそういう質問をしてるのかがわからん。
0746デフォルトの名無しさん
NGNG「strlen は文字列の長さを返す関数だ」って情報をコンパイラが
持っておきゃいいだけでは? memcpy, memmove, strcpy, strlen 辺りを
組み込み関数として展開する場合だと、C++ の inline みたいに
関数のソースを呼び出し元にそのまま持ってくる…みたいな悠長な展開は
あまりやらない気がする。
VC++だとこんなん出た。
> xor eax, eax
> mov edi, 0040A250 ; "abc"
> or ecx, -01
> repne scasb
> not ecx
0747デフォルトの名無しさん
NGNGそのたJAVAチャットをソフトで繋ぐ方法があれが教えて
0748デフォルトの名無しさん
NGNGWWWブラウザはソフトじゃないの?
0749デフォルトの名無しさん
NGNGmschat2.5 などのチャットソフトのこと いってるんデス
0750デフォルトの名無しさん
NGNGって言うか、それはfgetcには関係無い質問だと思うが・・・
0751デフォルトの名無しさん
NGNG板違い。
0752739==744
NGNGそれは、コンパイラが情報を持ってるんじゃなくて、標準関数のインライン展開ルーチンを
関数ごとに持っているっていうだけで、「strlen は文字列の長さを返す関数だ」って情報を
コンパイラが持っているわけではないでしょ。
つか、激しくスレ違いなので、ええですよ、もう。
関数型言語によくある、パターンマッチングみたいな方へ話
がいっちゃうから。
0753デフォルトの名無しさん
NGNG> 標準関数のインライン展開ルーチン
> 「strlen は文字列の長さを返す関数だ」
どこが違うのか謎だが。
0755デフォルトの名無しさん
NGNG他の標準関数Aはそれ用の最適化パターン、
標準関数Bはまた別の最適化パターン…
といった、関数毎の情報をコンパイラが持つ必要がある、
って事でしょ。
0756デフォルトの名無しさん
NGNG752の言いたい事とは違うかもしれないけど。
strlenは標準ライブラリと言うだけで、C言語そのものの仕様には含まれない。
つまりコンパイラそのものは、strlenの存在は知らない。
故にstrlenを定数として返す事は無いんではなかろうか?
技術的に可能で有ったとしても。
0757デフォルトの名無しさん
NGNG> strlenは標準ライブラリと言うだけで、C言語そのものの仕様には含まれない。
ANSIでは含まれていなかったが、C89以降ではC言語そのものの仕様に含まれている
0758デフォルトの名無しさん
NGNGライブラリの提供者がインライン展開しやすいように
strlenをinline属性で提供していて、かつ、
コンパイラが、リテラルを走査する簡単なインライン関数を
コンパイル時に処理してくれる場合、返す可能性はあるな。
strlenが言語仕様として規格化されているかどうかは全く関係ない。
技術的には可能だ。
行きすぎた最適化のせいで意図しないコードが出されることよりは
ある程度、書き手の想像の範囲内でコードが出される方がヨイ場合も多い。
想像だけで考えてないで、コンパイラに関する理論をちょっとでいいから
かじっておきなさい。
0759752
NGNG_strlen(char* ptr){
int i;
for(i=0;*ptr;++ptr,++i);
return i;
}
のような場合、
strlen(char* ptr){
#if isLiteral(ptr)
size_t n = _strlen(value_of(literal));//
OUTPUT "mov reg <- %d", n
#else
OUTPUT "push ptr"
OUTPUT "call _strlen"
#endif
}
っていうのが、関数ごとにコード生成ルーチンを持っている例だとすると、
strlen(x[0]:x[1]: .. :x[n]){
return n;
}
が、「コンパイラが文字列の長さをかえすことを知っている」ってところでしょか。
こんな感じのが、「実装ではなくて、宣言として」書ける(Cの構文でなくて、
コンパイラのコード生成情報として)っていうようなのを想像してます。
ほかにも、再帰を使って定義するとか・・・
(スレ違いのうえに、電波っぽくなってきたぞ…
つか、電波だな、ゴメソ)
0760デフォルトの名無しさん
NGNG> 数毎の情報をコンパイラが持つ必要がある、
その通り。
逆に C++ の <algorithm> のように static inline 関数定義するのは、C 標準ライ
ブラリでは不可。
> 7. Library
> 7.1 Introduction
> 7.1.2 Standard headers
> 6 Any declaration of a library function shall have external linkage.
これに抵触してしまうから。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGstrlen("ABCD\0EFG")
を正しく展開できるのか?それで。
0763デフォルトの名無しさん
NGNGinline はそもそも static だと思うが。
あと、たしか同一の名前をもつ関数を external, static 両方で定義した場合の
動作にも規定があった気がするが、見つからんな。
0764デフォルトの名無しさん
NGNG後者
> strlen(x[0]:x[1]: .. :x[n]){
> return n;
>}
の方だと NG だな。>>742 のヤツなら大丈夫だけど。
0765デフォルトの名無しさん
NGNG__builtin_strlen() の登場だろう。
はい、これで議論おわり。
0766デフォルトの名無しさん
NGNGで、ここで回答してる人たちで、定数欲しいのにstrlen使う人居るの?
0767デフォルトの名無しさん
NGNGインライン版というと C++ のインライン関数展開を連想しそうなんで、組み込み版
とでも読んだほうが良いかも知れん。
インライン版
ソースコードが、コンパイル対象のプログラムと同じ言語で書いてある。コンパ
イル時にコンパイラがインライン展開し、後は普通にコンパイル。
組み込み版
ソースコードはコンパイラ内部に(たいていはアセンブル直接埋め込みで)書い
てある。コンパイル時にコンパイラの内部状態、とくにパーサーがもっている情
報を使える。
まとめだが、
- C 標準ライブラリは「組み込み版」で提供することは認められている。ただし、
同時に外部リンケージを持つライブラリ関数も提供することは必須。でないと
size_t (*pf)(const char *) = &strlen; とかコンパイルできなくなってしまう。
- C 標準ライブラリを「インライン版」で提供するのは不可。C 言語の規格で、標
準ライブラリ関数は外部リンケージを持つことが要請されているため。
でいいかな。
0768デフォルトの名無しさん
NGNG手を入れずに高速化したいやつはいるだろうな。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGstrlen(リテラル)くらいコンパイラが最適化してしかるべきだと思う。
それくらいは。
0771デフォルトの名無しさん
NGNGif (!strnmp(str, LITERAL, strlen(LITERAL))) {
}
0772デフォルトの名無しさん
NGNGああ、マクロなら文字列リテラルにstrlenをつかってもおかしくないか。。
0773デフォルトの名無しさん
NGNGsizeof(char[3]) と等価?
sizeof(char*) と思ってた。
0774デフォルトの名無しさん
NGNG> ところで、sizeof("ABC") って 3 なの?
4だよ。
0775773
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c1.html#32
>文字列リテラルには2種類の (略) その他の場所で使うときは、文字の名無し のstaticの配列となる。
0778デフォルトの名無しさん
NGNGunsigned char a[y][x];
{
とすると再定義されましたっていうエラーが出ます。
他の関数ではこのエラーが出ないのでなぜかと悩んでいます。
よろしくお願いします。
0779デフォルトの名無しさん
NGNG0780778
NGNGyとxはグローバル変数です。
0781778
NGNG0782デフォルトの名無しさん
NGNG配列の宣言に、グローバル変数を添え字として使うことはできません。
配列の宣言に、グローバル変数を添え字として使うことはできません。
0783デフォルトの名無しさん
NGNGunsigned char a[y][x];
はコンパイル時にx,yが定まってないとコンパイル不可
0784デフォルトの名無しさん
NGNGextern void func();
と書いたヘッダファイルをインクルートしる!
0785778
NGNGちょっと行き違いがあったようですみません。
定数なら大丈夫なんですよね?
0786デフォルトの名無しさん
NGNG0787778
NGNGextern宣言はしてるんですけど、ダメみたいです。
どうしてなんでしょう?
0788デフォルトの名無しさん
NGNGint main(int argc, char** argv)
{
char a[argc];
}
こういうのありなんだけど・・・
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGgccローカルな機能は使っちゃ駄目。
C99からは正式サポートだけど。
0791デフォルトの名無しさん
NGNGC99ってのがよく分からないんだけど、
いずれ89のやつに置き換わったりするのかな?
0792778
NGNGえ〜っと、どういうことなんでしょう?理解不能です。
0793デフォルトの名無しさん
NGNGC90 だと配列の要素数は、コンパイル時に確定できる定数じゃないとダメなんだ
が、gcc だと拡張機能で変数のような「実行時に確定できる値」も OK になってる
という話。
C90 でこういう事をやりたい場合、ふつーは alloca() を使う。非標準の機能だが、
大抵の処理系でサポートされてる。
0794デフォルトの名無しさん
NGNGmallocと違うの?
関数を抜けるときに自動的にfreeされるとか?
0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNGなんだ・・・
0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGヘッダと関数定義を両方とも↓の形式にしたらどうなる?
void func(unsigned char a[y][x])
これでもダメなら
へっだ
#ifdef __cplusplus
#extern "C" {
#endif
extern void func(unsigned char a[y][x]);
#ifdef __cplusplus
}
#endif
本体
#include "へっだ"
void func(unsigned char a[y][x])
{
でやってみれ!
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG0801ビル・ジョブス
NGNG0802デフォルトの名無しさん
NGNGどっちにしろVCのtchar.hに依存しとるが。
0803ビル・ジョブス
NGNG#define DIM(x) (sizeof(x)/sizeof((x)[0]))
0804デフォルトの名無しさん
NGNG普通はこっち
今日のおまえは格段にしょぼいな
0805デフォルトの名無しさん
NGNG0806ビル・ジョブス
NGNG言い訳する気はないが、昔々のコンパイラでそれエラーになってさー・・・
0807ビル・ジョブス
NGNG0808イカ
NGNG0809デフォルトの名無しさん
NGNG読んだことある人、感想聞かせてよ
0810デフォルトの名無しさん
NGNG4版まででてるのか...
0811デフォルトの名無しさん
NGNGf(int &x)
{
ってすると、&の前に)が必要だとか、{が必要だとかいう
エラーが出てしまいます。
どうしてなんでしょうか?
0812デフォルトの名無しさん
NGNG{
0813デフォルトの名無しさん
NGNG*xじゃないといけないって意味だろうけど
&xだと逆参照演算子を使わなくてすむっていうメリットがあるぞ。
0814デフォルトの名無しさん
NGNG0815811
NGNG&xでも定義はできるはずだと思うんですけど。
0816デフォルトの名無しさん
NGNGX Window System のマクロ XtNumber が、まさに >>803 なのは
多分そういう理由。
>>811
まさか C じゃないよね?
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNGそのうち分かる。気にするな。
0821デフォルトの名無しさん
NGNGアセンブラの勉強してから出直してこい
0822デフォルトの名無しさん
NGNGそのうちが半年続いてるんですが・・・。
>821
いやいきなりキレなくてもいーじゃん。
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGリンクリストとか、そういう簡単なやつを調べてみれ。
0825デフォルトの名無しさん
NGNGこれほど便利なものはない。
0826デフォルトの名無しさん
NGNGアドレスが指してるもん書きかえられるんだぞ。
これほど危険なものはない。
0827デフォルトの名無しさん
NGNGこれほど なものはない。
0828デフォルトの名無しさん
NGNGとして
i=2;
のしたときに
i[a]は'2'になるのはなんだか不思議だ。
0829デフォルトの名無しさん
NGNGconst char* makefname(char* uname, char* dstr)
{
char buf[1024];
strcpy(buf, uname);
strcat(buf, "-");
strcat(buf, dstr);
return buf;
}
sprintf 使えば関数にするまでもないような、、ていうのは置いておくとして、
ローカル変数のポインタを返しているんですが、これってありなんですか?も
しかしてこの本逝ってよしですか?
0830デフォルトの名無しさん
NGNGclassB member;
};
class classB{
classA member;
};
こおゆう風にしたいんですけど・・・
0831デフォルトの名無しさん
NGNG以下同じ
0832デフォルトの名無しさん
NGNGstruct classB member;
};
class classB{
classA member;
};
0833デフォルトの名無しさん
NGNGそれは書名をさらすべきでしょう。他にもないのか見てみたい。
0834デフォルトの名無しさん
NGNG「もっと極めるLinuxのC言語」です。
http://www.ai-pub.co.jp/contents/book/prog/linux_c.html
こういう場合、呼出し側で char配列を用意して渡すか、呼ばれた関数側で
malloc でメモリ確保するか、ですよね。確か。
0835デフォルトの名無しさん
NGNGすげえ(藁
0836833
NGNGさんくす。読者向けサンプルコードがあったのでもらったよ。
http://www.ai-pub.co.jp/contents/support/gcc_2/index.html
えいやっと最初に開けたファイルにこんなコードが..(ex13.c)
> strcpy(datestr, getdate());
> strcpy(timestr, gettime());
まあ、「この2つの呼び出しの間に日付が変わったらどうすんじゃあ」なんて
ツッコミは野暮なような気はするけどさ。
なんかこの本の著者って不思議なセンスしてそうだ。
本文も読んでみようかな。ある意味、ネタの本として
金を払う価値がありそうな予感。
0837デフォルトの名無しさん
NGNG大昔なら、ローカル変数のポインタ返しても、スタック壊す前に呼び出し元が使うならおっげー
みたいな風潮あったから、その影響かも。
0838デフォルトの名無しさん
NGNG漏れも不思議だった
「要は a[i] => *(a + i) => *(i + a) => i[a] だから」って聞いて
for(int i=0; i<28; putchar(i++["思わすイっちまったね、漏れは"]));
0839デフォルトの名無しさん
NGNG思わす
思わす
0840838
NGNG0841もこ
NGNGを教えて下さい。
0842デフォルトの名無しさん
NGNGが成立するi、j、kの値の求め方、かな?
どうでも良いが宿題なら
http://pc.2ch.net/test/read.cgi/tech/1011722640/l50
へ逝ってね。
0843デフォルトの名無しさん
NGNG総当りでいいなら超簡単。
工夫して効率化するなら
・i+k=13
・j=1
という条件をつければループは6回で済むし。
0845デフォルトの名無しさん
NGNG問題はローカル変数のアドレスを返している事じゃなくて、自動変数のアドレスを返していることだろ。
ローカル変数でも静的変数なら問題ない。
0846845
NGNG0847デフォルトの名無しさん
NGNGコンパイラがチェックするだけで実態としては、
同じ領域に隣り合わせで確保されるわけですよね?
0848デフォルトの名無しさん
NGNGCGIとして実行されるPerlなどのプログラムはどうやって
ADDR_HOSTなどの情報を取得しているんでしょうか。
0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNGじゃあ少し質問の内容を変えます。
C言語でどのようにすれば環境変数を取得することができるのでしょうか?
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNGありがとうございます。
その気ワードで検索したら解決しました。
0853デフォルトの名無しさん
NGNG実装依存だと思うがたいていはそうなるだろうな
0854デフォルトの名無しさん
NGNGANSI非準拠だけど、main関数の第三引数は環境変数のリストへのポインタであることが多いよ。
特定のものを取り出すならgetenv()だけど。
0855デフォルトの名無しさん
NGNG無理なのでは?
0856デフォルトの名無しさん
NGNGよくよく見たらマトリョーシカ作ろうとしてやがる。
確かに無理だな。
0857デフォルトの名無しさん
NGNG先生は
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGreturn 「」;
}
n(10進)の桁数を返す関数です。「」を埋めてください。
0861859
NGNGforで10で割りながら、ぐるぐるまわす方法しか思いつかないんで、
もっとスマートな方法を教えてもらおうと思ったんですが。
0862デフォルトの名無しさん
NGNGif (n < 100) return 2;
if (n < 1000) return 3;
if (n < 10000) return 4;
if (n < 100000) return 5;
if (n < 1000000) return 6;
if (n < 10000000) return 7;
if (n < 100000000) return 8;
0863デフォルトの名無しさん
NGNGint ketasuu(int n)
{
return n < 10 ? 1 : ketasuu(n/10) + 1;
}
0864デフォルトの名無しさん
NGNG隣接リストのアルゴリズムってどなたかご存知ないでしょうか?
またその辺のことが書いてあるホームページとか。
0865デフォルトの名無しさん
NGNG0866859
NGNG他に数学関数1個も使ってないんですが、
こういう状況でlog10()呼んでも誰も怒らないですよね?
unix上のXで動くアプリだから、数学関数ライブラリねーよってこともないだろうし。
0867デフォルトの名無しさん
NGNG>>860>>865に一票。
特別な理由が無い限り、既存のルーチンを活用したほうが賢いと思う。
0868デフォルトの名無しさん
NGNGそれって最短路問題の宿題?
0869864
NGNGそんなとこです。
0870デフォルトの名無しさん
NGNG解説プリーズ
0871868
NGNGリンクリスト(いわゆるリスト)と言った場合、それはデータ構造を指します。
で、リンクリストに隣接ノード(駅とか)の情報を詰め込むので、
問題製作者はそれを隣接リストと呼んでるんだと思う。
冗長に言えば、隣接ノード格納用リンクリストか。
疑問も解けたところで、リンクリストについては前スレ参照。
http://pc.2ch.net/test/read.cgi/tech/1012348974/
0872デフォルトの名無しさん
NGNGいや、ある意味その通りなんだが、その「文字数」をどうやって得るかって話。
0873864
NGNGありがとうございました
0874デフォルトの名無しさん
NGNGそうか、int だから「文字数」なんてないですね。やっぱりヴァカだ。
おとなしく逝ってきます。
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNGn = 0, 860 : -2147483648, 862 : 1, 863 : 1, 875 : 1
n = 1, 860 : 0, 862 : 1, 863 : 1, 875 : 1
n = 9, 860 : 0, 862 : 1, 863 : 1, 875 : 1
n = 10, 860 : 1, 862 : 2, 863 : 2, 875 : 2
n = 100, 860 : 2, 862 : 3, 863 : 3, 875 : 3
n = -1, 860 : -2147483648, 862 : 1, 863 : 1, 875 : 2
n = -10, 860 : -2147483648, 862 : 1, 863 : 1, 875 : 3
0878デフォルトの名無しさん
NGNGif (n < 10000)
{
if (n < 100) if (n < 10) return 1; else return 2
else if (n < 1000) return 3; else return 4;
}else
書くのメンドクセ
0879877
NGNGif (n < 0) n = -n;
をketasuu()の先頭に入れるだけでいいと思われ
桁数に入れるなら、>>875以外は修正の必要があるけど。
0880デフォルトの名無しさん
NGNG0881877
NGNGあ、ちょっとわかりにくかった。スマソ
↓のプログラムを、引数をいろいろかえて実行してみたということです。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int ketasuu_860(int n) {
return (int)log10(n);
}
int ketasuu_862(int n) {
if (n < 10) return 1;
if (n < 100) return 2;
if (n < 1000) return 3;
if (n < 10000) return 4;
if (n < 100000) return 5;
if (n < 1000000) return 6;
if (n < 10000000) return 7;
if (n < 100000000) return 8;
return 0; // dummy
}
int ketasuu_863(int n) {
return n < 10 ? 1 : ketasuu_863(n / 10) + 1;
}
int ketasuu_875(int n) {
char buf[16];
return sprintf (buf, "%d", n);
}
int main(int argc, char *argv[]) {
int n;
if (argc < 2) return 1;
n = atoi(argv[1]);
printf("n = %d, 860 : %d, 862 : %d, 863 : %d, 875 : %d\n",
n, ketasuu_860(n), ketasuu_862(n), ketasuu_863(n), ketasuu_875(n
));
return 0;
}
0882デフォルトの名無しさん
NGNGint *p;
p = d;
とすると
p[0]、p[1]はd[0],d[1]の値を示すことができるって
本に書いてるんですけど、
d[5][5]
の各要素を操作したいときなんかは
どういう風にポインタを使えばいいんでしょうか?
0883デフォルトの名無しさん
NGNG0884882
NGNGどうやってやるうですか?
0885デフォルトの名無しさん
NGNGint (*ap)[5];
0886デフォルトの名無しさん
NGNG二重配列ならint (*ap)[5]だけじゃない?
0887887
NGNGどうすればいいのでしょうか?
WIN32APIのFindFirstFileみたいな
MSDN&web検索したけどワカラン
0888デフォルトの名無しさん
NGNGchar *path=".\\";
system(path);
0889デフォルトの名無しさん
NGNGそんなんコンパイラのドキュメント見ないとわからんよ。
DOSのコンパイラだったら、FindFirstみたいな名前の関数だと
思うけどな。
0890888
NGNGchar *path="dir .\\";
他のディレクトリなら適当に変えて。
0891デフォルトの名無しさん
NGNGMSDN(ローカル版)でfindfirstで検索したら、_findfirst()ってのでてきたよ。
ちなみに、アクティブサブセット(カテゴリ)はVisualC++ドキュメントね。
0892デフォルトの名無しさん
NGNG886が正しい。
配列int a[3][4]を操作するポインタはint (*ap)[4];
配列int b[3][4][5]を操作するポインタはint (*bp)[4][5];
一番左の数字以外は残さないとだめ。
0893デフォルトの名無しさん
NGNG0894882
NGNGこの場合
ap[0] = a[0]にすると(ap[0])[0]がa[0][0]になるんでしょうか?
どうなるんでしょう?
0895デフォルトの名無しさん
NGNGあんま意味無いけど、とりあえず例。
int i,j;
int a[5][5];
int **ap;
ap = (int **)malloc(sizeof(int *)*5);
for(i=0;i<5;i++) {
ap[i] = a[i];
}
for(i=0;i<5;i++) {
for(j=0;j<5;j++) {
ap[i][j] = i*10+j; /* apのほうに代入 */
}
}
for(i=0;i<5;i++) {
for(j=0;j<5;j++) {
printf("%d ",a[i][j]); /* aのほうを表示 */
}
puts("");
}
0896デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#define X 5
#define Y 7
int main(int argc, char *argv[])
{
int i,j;
int **a;
/* ALLOC */
a = malloc(sizeof(int **) * X);
for (i=0; i<X; i++) {
a[i] = malloc(sizeof(int *) * Y);
}
/* VALUE SET */
for (i=0; i<X; i++) {
for (j=0; j<Y; j++) {
a[i][j] = i * 10 + j;
}
}
/* VALUE PRINT */
for (i=0; i<X; i++) {
for (j=0; j<Y; j++) {
printf("a[%d][%d] = %d\n", i, j, a[i][j]);
}
}
/* FREE */
for (i=0; i<X; i++) {
free(a[i]);
}
free(a);
return 0;
}
0897デフォルトの名無しさん
NGNGmalloc() はいらん。
ap = a;
でいい。
0898デフォルトの名無しさん
NGNGってどういう意味?
0899デフォルトの名無しさん
NGNGその先頭アドレスをint**にキャストしてる。
0900デフォルトの名無しさん
NGNG0901900!
NGNG0902デフォルトの名無しさん
NGNGintと同じ
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGつまりポインタを指す、ポインタ。
精進せぇよ。
0908デフォルトの名無しさん
NGNGところで、
int* i;
int *i;
どっち派ですか?
0909デフォルトの名無しさん
NGNGはだめですか
0910デフォルトの名無しさん
NGNGint* i;
って書く奴はバカっぽい
0911デフォルトの名無しさん
NGNGだな。
int *iは余り良い使い方ではないと思ふ。
0912デフォルトの名無しさん
NGNGじゃあ、911はバカっぽいですね
0913デフォルトの名無しさん
NGNGint* i; 派の人は
int *i, *j; みたいに複数並べたりはしないのかな。
0914デフォルトの名無しさん
NGNGtype *value; は7割
type* value; は3割
程度と見た。
0915デフォルトの名無しさん
NGNGだから昔の人ほどint *i;派になると思うけど。
0916デフォルトの名無しさん
NGNGint* i;と書く人って、どこから取ってきたの?
最近の本はこういう書き方するの?
0917デフォルトの名無しさん
NGNGtype *value; が古くて
type* value; は新しい書き方だって見た覚えがある。
0918デフォルトの名無しさん
NGNGint* i
と書く人だったので自然にそうなった。
0919名無しさん@おひさまのよう。
NGNGってやるとどうなるの?
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGtype* a;
type b;
type c;
とおなじ。
バカっぽいね(w
0922デフォルトの名無しさん
NGNGなんじゃそら。きもすぎるぞ
なんでいまさら変える必要がある?
0923デフォルトの名無しさん
NGNGだから本読め
0924デフォルトの名無しさん
NGNGファンネル
0925デフォルトの名無しさん
NGNGint* a;と書いたほうが「int*」という型にはっきりと見えるので
そう書くようになってる。
0926デフォルトの名無しさん
NGNG最近て、、、
int* a,b,c;
が駄目なんだから、そんなの意味無いとおもうけど
LISPみたいに単一シンボルとみなすならともかく
0927デフォルトの名無しさん
NGNGだろ、俺はこの書き方。
0928デフォルトの名無しさん
NGNGtypedef int * int*;
とは書けないC/C++では混乱の元>925
0929デフォルトの名無しさん
NGNGはどうなるの?
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGと同じだろ...
0933デフォルトの名無しさん
NGNGプロトタイプやキャストではint *
int* p;は違和感がある。
0934デフォルトの名無しさん
NGNGint* i
int& i
考えた奴って、真性のバカじゃん。
申し訳無いけど
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNGtypedef int& int_r;
int_r a,b,c;
てすりゃ全部リファレンスだが
int& a,b,c;
これだと一瞬、同じかと思う。
0937デフォルトの名無しさん
NGNG>typedef int& int_r;
なんで
int& int_r;
みたいな書き方するのか理解できない。typedef使うのに。
&とint_rよりも、intと&の方が結合度高いと思ってるバカにしかみえん。
0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNGだから。その方が読みやすいだろ。
書き方は人それぞれ。
0940デフォルトの名無しさん
NGNG引っ張ってどうするんだよ
0941デフォルトの名無しさん
NGNGこっちいけ
http://pc.2ch.net/test/read.cgi/tech/1012715148/
0942895
NGNGあ、意味判った。すまん。わざわざmalloc()しないで、
int *ap[5]; /* もしくは明示的に int *(ap[5]) */
ってしろってことね。確かに。
0944デフォルトの名無しさん
NGNGtypedefは変数宣言とシンタクス的に変わらんのだが・・
0945デフォルトの名無しさん
NGNGみたいに書いていたけど今は int *p; にもどした。
解釈規則からみて、やはりこのほうが良さそう。
0947デフォルトの名無しさん
NGNGC++ は int* p;
が「自分の理想」。
でもいつもC風。
0948939
NGNGやり方は趣味の問題だろ、しつこいなぁ。
0949デフォルトの名無しさん
NGNGこれができないから型名に*つけるのはやめろって意見があるみたいだけど、
その記法使わなきゃいいだけじゃん。
int* a;
int* b;
int* c;
みたいにして。
このほうが型名らしくてカコイイ。
0950945
NGNGint* pa, pb; で pb が怪しいすね。
理想よりケアレスミス撲滅のほうをとりました。
0951デフォルトの名無しさん
NGNGはどうなるの?
0952デフォルトの名無しさん
NGNGとするやつと一緒に仕事したくねーな
0953945
NGNG趣味の問題すね。
0954デフォルトの名無しさん
NGNGなんじゃそら?
0955デフォルトの名無しさん
NGNGできれば一度Cの宣言部のパーサー作ってもらいタイ
0956デフォルトの名無しさん
NGNGintaはintへの参照
intb,intcはint
0957デフォルトの名無しさん
NGNGCでは構造体のtypedefとかで良く使う
typedef struct {...} *ptype_t, type;
0958デフォルトの名無しさん
NGNG0959デフォルトの名無しさん
NGNGstruct hoge* h;
0961デフォルトの名無しさん
NGNGやっぱ気持ち悪い
0962デフォルトの名無しさん
NGNGとするやつと一緒に仕事したくねーな
0963デフォルトの名無しさん
NGNG自分で作ると面白い事実に気付くかも・・
0964デフォルトの名無しさん
NGNGその手で行くならこう?
int ketasuu(int n)
{
char buf[16];
sprintf(buf, "%d", abs(n));
return strlen(buf);
}
0965デフォルトの名無しさん
NGNGint* a = NULL;
int* b = NULL;
int* c = NULL;
みたいな
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNGtypedef無しでな。
0968デフォルトの名無しさん
NGNGvoid (* func)(void);
じゃない?
0969デフォルトの名無しさん
NGNGint* i; タイプの人を見る気がするけど少数派なのかな。
0970デフォルトの名無しさん
NGNGそれはきっと、int と * の間のスペースの幅が短くて見にくくなってて、
int* i; に見えているという罠。
0971デフォルトの名無しさん
NGNGなんでstrlenを使うの?
sprintfの戻り値だけで十分じゃない。
0972デフォルトの名無しさん
NGNGよいツッコミです。
0973デフォルトの名無しさん
NGNG0974誘導
NGNG次スレです
C言語なら、俺に聞け! <14>
http://pc.2ch.net/test/read.cgi/tech/1015286974/
0975デフォルトの名無しさん
NGNG教えてください。例えば足し算を10問解いて、それにかかった
時間を教えてください。
0976デフォルトの名無しさん
NGNGtime.hをインクルードして
解く前と解いた後にclock()を使う。
あとは引いて差を求めるだけ。
CLOCK_PER_SECで割れば秒に。
0977976
NGNG0978デフォルトの名無しさん
NGNG足し算の開始前に時刻を表示します。
足し算の終了後に時刻を表示します。
おわり。
足し算の訓練と同じに時刻計算の訓練もできるので
ソフトウェアの評価はうなぎのぼり。
0980デフォルトの名無しさん
NGNGそれスゲー
かなり画期的だ。
ビジネスモデル特許を申請しなきゃ。
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGそう来ると思った(笑)
0983デフォルトの名無しさん
NGNGサービスとして毎回時刻調整できるようになっています。
便利です。
0984デフォルトの名無しさん
NGNG20 print time$
30 goto 20
0985デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNGgetchar();
printf("それでは、ようゐどん!\n");
0988デフォルトの名無しさん
NGNGストップウォッチおじさんを一人ずつつけて配る。
0989デフォルトの名無しさん
NGNG0990イカ
NGNG厳密な実行速度は測れないよ。
0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNGprintf("%s\n",
"コテハン?"
"この板にコテハンなんていたんだね。あ、voidは除いて");
0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNGってはやく新スレいけよ
0996デフォルトの名無しさん
NGNGそうだ。stdio.hを見ろ。
0997デフォルトの名無しさん
NGNGあ、やっぱり。
stdio.h見てもなんだかよく分からなくて。
0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。