- 1 名前:デフォルトの名無しさん [2009/03/02(月) 00:36:19 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/
- 187 名前:180 mailto:sage [2009/03/08(日) 00:50:52 ]
- んー。一番目はいきなり間違いだな。
1番目は「二次元配列へのポインタ」のポインタのポインタとなる要素数10の変数iだとすると int *(**i[10])[4]; と書く必要があるようだ。わからん・・・。答えはまだか。
- 188 名前:デフォルトの名無しさん [2009/03/08(日) 01:11:50 ]
- int **(*i[10])[4]
intへのポインタのポインタの配列へのポインタの配列 int (*i())[6] intへの配列へのポインタを返す関数 int *(*(*i)())[4] intへのポインタの配列へのポインタを返す関数へのポインタ
- 189 名前:180 mailto:sage [2009/03/08(日) 01:21:47 ]
- なるほど、int **(*i[10])[4]の最初のint **は納されている型になるのか。
んでもって、(*変数名)[4]が多次元配列へのポインタで、 変数名の後の[10]がその変数の要素数になる、と。 だんだんわかってきた。おもしろい。w
- 190 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:39:49 ]
- 外側から一つずつ剥がしていく。最初と最後の両側から剥がせるときは、最初を先に剥がす。
剥がしたものが、それぞれ int(などの普通の型名)であれば…… 「int」 * であれば…… 「へのポインタ」 [N] であれば…… 「の配列」 (int,int) (など、カッコ内に型名)であれば…… 「が戻り値の型、(int,int)が引数の型である関数」 MyClass:: であれば…… 「で、MyClassのメンバであるもの」 をつけていく。これで読めるはずだ。英語圏の人は逆向きにやるらしいけど。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:45:13 ]
- あと、これとは直接関係ない話だが、intへのポインタへのポインタは、intの2次元配列とは別物だからね。
「ポインタ⇔配列」の互換ができるのは、末尾の「〜へのポインタ」「〜の配列」の部分のみ。 だから、ポインタの配列はポインタへのポインタで受けることができるし、2次元配列は配列へのポインタで受けることができるが、 2次元配列をポインタへのポインタで受けるのは不正。
- 192 名前:デフォルトの名無しさん [2009/03/08(日) 01:51:13 ]
- >>190
読めないよ。 int &a int func<int>()
- 193 名前:180 mailto:sage [2009/03/08(日) 01:52:14 ]
- 大変よくわかりました。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:56:42 ]
- 167は正しいの?
- 195 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:07:28 ]
- 正しいよ。
- 196 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:07:55 ]
- >>194 うん
- 197 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:26:30 ]
- C言語の宣言の文法は、もうちょっとマシな文法にならんかったの?
標準化するとき、誰からも反対が出なかったのが不思議なくらいだ。 頭がいい人がいっぱい集まってやってるハズなのに。
- 198 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:13:06 ]
- これでいいんじゃない?
っていうか、Quizみたいなみょうちくりんな宣言が必要になるプログラムは そもそもの設計が間違っている気も。
- 199 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:21:05 ]
- Cだと、ポインタ型を別に作って欲しかった
後は関数ポインタの宣言を何とかして欲しかったくらいか >>156をすらすら読み、161みたいなのを頻繁に使うプログラマにはなりたくない 161はtypedefしないらしいし…
- 200 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 04:01:48 ]
- >>199
もし>>156をtypedefを使って分りやすくしてくれと言われたらどのように typedefする?有る意味typedefの練習になるんじゃないか
- 201 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 04:15:48 ]
- それらが何を意味するものとして使われているのか、それに基づいてtypedefすべきと思う。
例えばchar*をstringとしてtypedefしたり(C++ならstd::stringがあるけど)、単純に置き換えるんじゃなくて 意味が分かるようにしなければ、結局分かりやすくはならないんじゃないか。
- 202 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 04:37:26 ]
- >>201
普通はそうだが、練習なら良いんじゃないか >>156を見てこれならどうtypedefしたらいいんだろと疑問に思っただけ >>156は宣言構文解釈による頭の体操って感じかな 頭の体操なら現実では使わないものでも良いんじゃないか
- 203 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 04:42:15 ]
- >>201
つまり、windows.hを批判してるってことですね。
- 204 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 04:48:18 ]
- windows.h のそれは、int32_tとかwchar_tとかが無かった時代の産物としては存在意義があると思う。
- 205 名前:202 mailto:sage [2009/03/08(日) 04:55:42 ]
- >>203
本人のポリシーだから良いんじゃないの ま、windowする時は、気に入らんでもwindowsの流儀に従ったほうが無難だろな
- 206 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 05:54:53 ]
- windows.hの場合は囲い込んで、移植させにくくしただけだろ。
gcc+Qtでなんも困らん。
- 207 名前:デフォルトの名無しさん [2009/03/08(日) 09:50:09 ]
- 俺もstdio.hで十分だわ
- 208 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:16:15 ]
- っつか、この世は俺1人で十分だ
- 209 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 10:29:48 ]
- >>208
さっさとジュース買って来い
- 210 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 11:34:40 ]
- つかMSはさっさとstdint.h対応しろと。C99決まってから10年なのに
何をしているのかと。
- 211 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:47:58 ]
- #include <iostream>
using namespace std; #include <math.h> #include <stdio.h> void ChangeToShohwa(int x) { if(1926 < x && x <1989) x -=1925; else x = 0; } int main() { int x; ChangeToShohwa(x); if printf("昭和%d年ですよ",x); else cout<<"昭和じゃないです"<<endl; } : error C2061: 構文エラー : 識別子 'printf' : error C2181: else 文が if と一致しません。
- 212 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:51:56 ]
- 教えてください。
お師匠
- 213 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:03:52 ]
- >>212
それコンパイラか頭のバグ コンパイラ何? 頭は何?
- 214 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:06:59 ]
- >>211
ifだけじゃだめだろ この場合if(x)かな? 他もひどすぎて、思ったとおりには実行されないと思うが
- 215 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:08:52 ]
- >>213
VIsual C++ 2008 頭・・?
- 216 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:10:55 ]
- >>214
これのどこがひどいと言うんだ・・・!! シンプルで無駄のないプログラムじゃないか!!
- 217 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:11:45 ]
- >>216
バカは失せろ
- 218 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:14:25 ]
- >>217
すいませんでした 出直してきます
- 219 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:18:15 ]
- >>215 じゃ、頭のバグだな。
int x = 1945; void ChangeToShohwa(int& x) if(x) これで良いだろ
- 220 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:19:12 ]
- >>211から星の煌めきを感じる
- 221 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:20:14 ]
- ていうか、xを改変する意味が分からない
int返せよ
- 222 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:23:40 ]
- >>221
そう言うならおまえがそれやれよ
- 223 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:36:00 ]
- ワンパクでもいいタクマシク育ってほしい。
- 224 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:50:09 ]
- これ、ロベールからの引用じゃろ?
まともに動かなくていいのよ。この後、参照の話が出てきて まともに動かない理由とちゃんと修正されたバージョンのコードが記載されてるから。 しかし、ロベールは2000年の記事じゃから古いぞ。 使っているコンパイラもVC++6で著者自身が 環境依存はいやだと書いているくらいだし。
- 225 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:58:42 ]
- >>221
Googleのプンソで採用されているコーディング標準では 参照パラメータはすべてconstにせよってあった。 まぁ、それはさすがに行き過ぎだと思うけど 関数の可読性という点ではなるほどとも思う。
- 226 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:31:38 ]
- プンソって何?と一瞬思ったがオプソか。
- 227 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:58:21 ]
- >>221
>>145
- 228 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:02:07 ]
- 西暦と昭和を同じ変数で扱うのが気持ち悪いってことじゃねーの?
- 229 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:22:01 ]
- 西暦形式で格納されてる変数がいつのまにか(ではないけど)
和暦形式に代わってるとか死ねとおもうね
- 230 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:05:10 ]
- 年クラスを作って、get西暦とget和暦メソッドを用意するべきでしょうか。
- 231 名前:デフォルトの名無しさん [2009/03/09(月) 00:07:37 ]
- 時刻クラスを基本クラスとして、西暦クラスと和暦クラスを派生させるんだろ。
- 232 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:12:49 ]
- 出来事 vector に年月変換機能を備えたイテレータが美しいと思うよ。
- 233 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:07:34 ]
- 日単位で持っておいて、月以上に変換するときは暦クラス通すようにすれば。
- 234 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 03:14:07 ]
- 「和暦表示じゃないと、絶対困る!」
って言われること、けっこう良くあるけど、 天皇が暗殺されたら、どうするのかね?
- 235 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 03:48:14 ]
- 簡単に追加修正できるようにSQLite、CSV、XMLででも持っとけよ。
そんなの昭和64年からの常識だろ。
- 236 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 08:07:31 ]
- 天皇が暗殺されても今までの和暦がなくなる訳じゃないしなぁ。
- 237 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 08:37:29 ]
- 西暦だって、新宗教に宗旨替えして新西暦0年にリセットするかもしれないし、
イスラムが再び勃興してイスラム暦に切り替わるかもしれない。 UTCみたいな無色透明な基準年が必要だな。
- 238 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:31:35 ]
- UTCのどこが無色透明だって?
基準だったら皇紀でもいいわけだろ。
- 239 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:50:40 ]
- いやぁおまいらの講義はみてて勉強になります。
小生も美しいコード書けるようになりたいですハイ。 弟子入りさせて貰えませんか?
- 240 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:55:34 ]
- 地球の誕生年を元年にすればいいじゃん。
俺が小学生の頃、46億年前に地球ができたって聞いたから今は46億18年だな。
- 241 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:59:49 ]
- 地球の紀元は今後変動する可能性があるので基準にできません。
- 242 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:04:54 ]
- じゃあ宇宙で。
ビッグバン歴
- 243 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:07:09 ]
- 同じ理由で却下
- 244 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:44:56 ]
- それにしても、1926年は殆ど昭和じゃないんだがなぁ。
同じように、1989年も殆ど昭和じゃないし。
- 245 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:51:46 ]
- VCでコンソールアプリを作成し起動します。その後外部のPGから、
SendKeysやPostmessage,標準入力などでキー送信を送ろうとしているのですが、 SendKeysの場合:通常のキーは受け付けるがファンクションキーは駄目 Postmessage、標準入力の場合:何も受け取らない となります。 ファンクションキーを送信したいのですがどうすればいいのでしょうか? アドバイスお願いいたします。 ・DOSプロンプトだと標準入力はちゃんと受け付けるが、コンソールアプリは受け付けない ->DOSプロンプトとコンソールアプリの仕組みは別物?
- 246 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 11:31:49 ]
- 送れないこともないだろ?
今どうやってんの、C++/CLIなのか?
- 247 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 11:35:00 ]
- >>245
PostMessageやSendMessageがダメなのは知ってる。 他は知らない。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 11:54:27 ]
- >>246
> 送れないこともないだろ? > 今どうやってんの、C++/CLIなのか? VC++6.0MFCコンソールアプリ で作りました。送る方はVB.NET2005です。 PostMessageはWM_CLOSEは送れたようです。その他は SendKes.Send(chr(0)) SendKes.Send(chr(62)) とするとchr(62)は送れるんですが、chr(0)は無視されますっていうか SendKes.Send(chr(0)) っていうのはVBでは無謀なのかな、でもvbNullStringでも 駄目でした。 それに標準入力で送れないのはなぜなんでしょう?(DOSプロンプトへはおくれるのに)
- 249 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 11:54:41 ]
- [1] 授業単元:趣味
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8957.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: MSC ver.5.1 [3.3] 言語:C パスワードの入出力プログラムをつくりたい。 PASSは4文字とし、1文字入力される毎に'*'を1個表示し、 4文字入力後パスワードをチェック。 PASSが正しければ「システムの使用を許可します」と表示し、 間違っていれば3回再入力させて、3回を超えたらエラーを表示。 (パスワードは予めプログラム内部で定義されているという前提で) こういうプログラムを書いてみたのですが、main以下「*password=1994」を 正解として宣言し、else文の部分でc[i]と*passwordを認識させてprintfで c[i]を表示させたいんですけれどもうまくいきません。 何故でしょう? 何となく原因はわかるのですが、漠然としていて手が出せないんです。 上のコードをみて、名人方のアドバイスをお聞かせ願いたい。
- 250 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:00:25 ]
- >>245
SendInputはどう?
- 251 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:16:23 ]
- >>249
何をやりたいのかの説明がおかしいし、プログラムに至っては支離滅裂だ。 c[i]に文字を入れているのなら、1994なんて数値を入れちゃダメだろ。 初歩からやり直すことをお勧め。
- 252 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:21:31 ]
- >>240
位置エネルギーと一緒で無限遠を元年にすればいい
- 253 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:31:54 ]
- >>249 メモ帳べた書きでコンパイルしてない。好きにしろ。
#include <stdio.h> #include <conio.h> int main(){ const char* password = "1994"; int count = 0; do{ int i; char input_password[4]; printf("パスワードを入力して下さい。(4文字): \n>"); for(i = 0; i < 4; ++i){input_password[i] = getch(); putchar('*');} }while(!strcmp(password, input_password) && count++ < 3); if(count >= 3){ puts("仏の顔も三度まで!\n正式なpasswordがないとシステムは使用できません!"); }else{ printf("password = %s\nシステムの使用を許可します。\n", password); } }
- 254 名前: ◆XD9CNUCqag mailto:sage [2009/03/09(月) 12:33:47 ]
- >>249です。
>>251氏 なるほど、確かにおっしゃるとおりだと思います。 説明不足で申し訳なく。 このプログラムは'1994'というPASSを定義して、c[i]に入力させてそのPASSを 入力させたら正解、それ以外なら間違いで再入力させるといった感じでつくりたかったんです。 そして、私はCを学び初めてほんの1ヶ月くらいの素人でありまして 現在進行形で勉強中の身であります。 初歩から学んでいるつもりなのですが、何分覚えることが沢山すぎて手探りな状況な次第。 もし、よければ勉強するポイントなど上げて貰えると助かるのですがお願いできますでしょうか?
- 255 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:35:41 ]
- 伝統的なポイントな。
1) 初心者です、を免罪符にした発言を慎む。 2) 一歩目から他人に頼るな。努力の跡すら見えないのは相手にされない。
- 256 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:39:56 ]
- 小心者です。
インポ目で他人を頼って(ry
- 257 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:40:16 ]
- >>254
一ヶ月もあれば、パスワード入力くらい書けるようになる。 それができていないのは、初歩からきちんと自分のものにしていないのではないだろうか。 まさかとは思うが、本を読んで理解した気になっただけで書けるようになるとは思っていないだろうな。 まぁ、先ずはもっと単純な文字入力からおさらいしてみようかw
- 258 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:45:28 ]
- 宿題スレに張り付いて課題こなしてたら力量うp。
- 259 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:56:16 ]
- >>253
メモ帳だとその程度か input_passwordが0終端してないぞ
- 260 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:00:26 ]
- 宿題スレは単にバカな質問を受け流すためのハコだからな・・・
- 261 名前: ◆XD9CNUCqag mailto:sage [2009/03/09(月) 13:15:40 ]
- >>255氏
肝に銘じます。 >>257氏 言われてみれば、本を読んでたら出来るようになるとは少なからず思っていました。 でも、実際やってみて全然出来ないどころか、覚えることすら出来ていないことに 自己嫌悪に陥っています。 単純な文字入力から勉強し直してみます。 >>258氏 宿題スレの名人方は、添削するより、ひたすら課題を自分でこなしていく のが好ましいようなので、張り付いてだけじゃ私の力量うpには繋がりませんよね・・・。 参考にはなっていますけども。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:25:08 ]
- >>261
本を読むだけでも相当な勉強になる。 …ただしただ読み流すだけではダメで、理解しながら読まないと、ただ字面を追っているだけになる。。 そして少しでも疑問に思ったら先へ進まないでコーディングしてみる。 この辺は中高生の数学と共通する物がある。 ってな感じが俺の認識。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:25:40 ]
- 実はここまで全て俺の自演
- 264 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:27:35 ]
- >>261
自分で回答するんだよw
- 265 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:29:31 ]
- >>261
自分でも答えを考えるんだよ。
- 266 名前: ◆XD9CNUCqag mailto:sage [2009/03/09(月) 14:34:43 ]
- >>262氏
>…ただしただ読み流すだけではダメで、理解しながら読まないと、 ただ字面を追っているだけになる。 はい、どうやら私は読んで理解したつもりだっただけで 字面を追っていることをこれまで繰り返していただけのようです。 「早くCの知識を身につけたい」という気持ちだけが先走っていたといいますか。 勉強しても早々簡単にはみにつかないものなのにおかしいですね。 >>264氏 もし自分で回答なんかしちゃったりしたらら駄目だしされまくりで 精神的に辛すぎるような気もしますが・・・
- 267 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:24:29 ]
- >>266
ダメだしされて何が悪い。直せばいいじゃないか。 ダメだしも指摘もなければずっと悪いままだぞ。
- 268 名前:デフォルトの名無しさん [2009/03/09(月) 15:43:56 ]
- 昼間に2ちゃんねるに書き込んでる人間なんてスキルも無いロクでもない人間なんだから
講釈なんて聞いても無駄だよ。 自分ができない夢を語っているだけなんだから。
- 269 名前: ◆XD9CNUCqag mailto:sage [2009/03/09(月) 16:46:35 ]
- 困りました・・・
文字入力の基礎からやり直そうと思って勉強し直してるんですけども いつまでたっても目的のパスワードプログラムが出来そうもない・・・ 何となく問題の原因はわかりかけてるんだけど、漠然としてて・・・ そっから全然前に進まない ほんと使えないなぁ・・・私って・・・OTL >>267氏 確かにその通りかもしれません すぐには無理でしょうが、いずれ力量うpしたら実践してみたいと思います。
- 270 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:16:13 ]
- 文字コード、文字列、数値
- 271 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:50:37 ]
- ゆっくりいこう
- 272 名前:デフォルトの名無しさん [2009/03/10(火) 01:04:54 ]
- あるバージョンのgccでは、複数のスタティックライブラリをリンクするとき
liba.aがlibb.aの関数を使用し、libb.aがlibc.aの関数を使用しているとき gcc -o prog main.o liba.a libb.a libc.a の順番に書かないとundefinedなんとかというエラーが出る。 もしも、liba.aとlibb.aの双方が互いの関数を使用している場合、 これらのスタティックライブラリを上記のgccでリンクするにはどうすればよいのか。
- 273 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:46:29 ]
- gcc -o prog main.o liba.a libb.a libc.a liba.a
- 274 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:49:11 ]
- >>272
そうならないようにモジュールの配置を見直す。
- 275 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 07:01:54 ]
- >>272
そういうのを循環参照と言って、良くない設計の兆し。
- 276 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 08:38:45 ]
- gccって、あるバージョンとか噂とか、不確かではっきりしない事を
よく書かれてるな。
- 277 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 12:32:55 ]
- >>272
昔のHP/UXにもそういうの(順序を人間が決めないといけない)があって lorder | tsort で依存関係をトポロジカルソートして makefile に食わせた覚えが。
- 278 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 13:59:34 ]
- /* getchar.c */
# include <stdio.h> int c, cc; main(){ printf ("getcharの実験 Ctrl + Z で終了\n"); while ((c=getchar())!=-1) {putchar('*'); putchar(c);} printf ("getchの実験 スペースキーで終了\n"); while ((cc=getch())!=32) {putchar('*'); putchar(cc);} } このプログラムの「while ((c=getchar())!=-1)」の「!=-1」って 「Ctrl + Z」をあらわしてるんですかね? それと、「while ((cc=getch())!=32)」の「!=32」ってのは 「スペースキー入力」を意味してるんでしょうか? いま、入出力を勉強中なのですが、これがよくわからなくて。 教えて下さい、お願いします。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:02:32 ]
- 32はASCIIコードでスペース
-1はEOFだろ。Ctrl-Zかどうかは環境による。
- 280 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 14:11:10 ]
- >>279
なるほど。 では、上のプログラムを数字の「1994」と入力したら終了するように 書き換えるにはどうすればいいのでしょうか? 自分では、「!=1994」と記述すれば問題ないだろうと思っていたのですが 実行してみると全く終了する気配がありません。 コンパイルも正常に通り、延々と入力させるプログラムに成り果ててしまいました。
- 281 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:15:22 ]
- 数値の1994と比較したいなら
atoi(str) != 1994 まあ普通は strcmp(str, "1994") != 0
- 282 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:29:11 ]
- そのマジックナンバーは「悪い例」として何かに載ってるのかな・・・
- 283 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:32:40 ]
- >>249からの流れか。
ってMSC5.1? MS-DOSの頃のじゃないのかそれw
- 284 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 14:49:37 ]
- >>281
なるほど、atoi関数使って整数文字列を整数値に変換してからでないと いけなかったんですか ということは文頭の#includeにstdlib.hを追加しないといけないのかな ありがとうございます名人 私は名人のようなPGになりたいです! >>283 はい、そうです。 調べてみたらPC9800シリーズに標準装備されてた頃のやつっぽいです。 まぁ、今のところ不自由はしていないので古くてもいいかなって思って 使っています。
- 285 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 16:04:26 ]
- あのーまたまたへたれ過ぎる質問で恐縮なのですが、
/* getchar.c */ # include <stdio.h> int c, cc; main(){ printf ("getcharの実験 Ctrl + Z で終了\n"); while ((c=getchar())!=-1) {putchar('*'); putchar(c);} printf ("getchの実験 スペースキーで終了\n"); while ((cc=getch())!=32) {putchar('*'); putchar(cc);} } この「while ((c=getchar())!=-1)」の「!=-1」の部分を「atoi(str) != 1994 」 に書き直すにはどうしたらいいんでしょうか? 自分でやってみたらえらい不細工な文になってしまってとても見てられたものじゃ なかったもので・・・ご教授願いたいのです
- 286 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 16:14:09 ]
- まずは1文字入力したら配列に追加していく仕組みを作ってみ
別関数にするのがいいけど
- 287 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 16:46:12 ]
- >>285
char str[1024] = {0}; int i = 0; とか宣言して str[ i++ ] = c; を追加
|

|