1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:38:08 ] 言語の入門者向け解説スレです。 教えて欲しいのではなく宿題を丸投げしたいならこちらへ。 C/C++の宿題を片付けます 108代目 pc11.2ch.net/test/read.cgi/tech/1211980711/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 29 pc11.2ch.net/test/read.cgi/tech/1212329099/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
75 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:22:12 ] >>71 char *p; if(!p) { } はOK. というか C++ では NULL よりは 0 の方が好まれているようです。 >>73 あ な た の 存 在 が 迷 惑 で す。
76 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:23:36 ] 正常な状態を検知するのに否定を使うのはセンスに欠けると思う。
77 名前:71 mailto:sage [2008/06/15(日) 18:27:21 ] ちょっと調べてみた NULLの値が0でなくても、 if(!p) if(p != 0) if(p != NULL) は同じ結果になるようです。 サンクス
78 名前:デフォルトの名無しさん [2008/06/15(日) 18:28:52 ] >>75 ド素人をド素人のままのさばらせておくお前もあいつと同じく迷惑な存在。 www.kouno.jp/home/c_faq/c5.html#3
79 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:31:32 ] >>76 trueが正常とは限らないだろう。例えば、 if (!(p = malloc(n))) { perror("malloc"); return 1; } 正常だった場合の処理; もっとも、この書き方は、コーディング規約で禁止しているところもあると聞くが。 それはともかく、 if (!strcmp(a, b)) ... は頂けないかな。
80 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:38:05 ] >>78 ド素人のスレなので、そこんとこよろしく
81 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:39:12 ] if (!strcmp(a, b)) ... で等しい時に真なんだもんな。 直感に反するわ。
82 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:40:06 ] >>69 んーまあ比較演算子のない条件式を「変」だと思えるピュアな心があればいいんじゃないかな。 ただし、識別子と意味が食い違って紛らわしくなるような場合はいかん。いかんよ。
83 名前:デフォルトの名無しさん [2008/06/15(日) 18:40:47 ] >if(!p) >if(p != 0) >if(p != NULL) >は同じ結果になるようです。 流石ド素人。 なかなか諧謔のセンスがある。 このような頭の悪い人間はプログラミングの世界から手を引いた方がよい。 疑似科学の学者になったほうがよいのではないか?
84 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:42:09 ] >>71 >>77 まあ逝ってきなさい www.kouno.jp/home/c_faq/c5.html
85 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:47:03 ] このおばちゃんは元気でやってるの? この画像がニュースで流れて以来、情報が無いのですが ちゃんと避難できたでしょうか? 2chart.fc2web.com/2chart/obachannnigeteeeeeeeee.html
86 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:58:34 ] >>83 うっかりミスだとわかるだろうに 天下を取ったようなその書き込み もっと大きな気持ちで行こうよ
87 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:04:23 ] いや、人には色々心の傷があるんだよ。触れないでおくも吉
88 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:04:47 ] >>83 のような口調でエラー/警告メッセージを吐くコンパイラがあったとしたら、 俺なら窓から投げ捨てる。
89 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:07:34 ] いやちょっと欲しいかも
90 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:08:34 ] >>82 if (isdigit(c)) ... とかだと比較演算子が現れないけど、これを無理矢理 if (isdigit(c) != 0) ... とか書く訳?
91 名前:デフォルトの名無しさん [2008/06/15(日) 19:11:41 ] >>86 ごめんなさい、今日ちょっとイライラしているんです。 そもそも>>69 を書いたのは私で論争を起こそうと考えたからなんです。 あー、ごめんなさいごめんなさい、CもしたことがないのにCのポインタがナントカとか言って ごめんなさい。人間ド素人は私の方なんです。あぁ、こういうことを平然というから味の素並に 嫌われる元なんですね、ごめんなさいごめんなさい。
92 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:15:29 ] いちいちageる奴にろくなのは居ない
93 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:41:48 ] >>90 真偽を返す関数は逆に比較すべきじゃない。
94 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:06:42 ] >>90 それは特殊だなって見ればわかるじゃん
95 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:10:25 ] 書いてもいいし書かなくてもいい ただ、自分のやり方として首尾一貫するのが大事
96 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:55:51 ] そそ if(p) と if(p != 0) では同じ実行結果となるけどコンパイラが展開したコードは微妙に違うのをだすよね(オプティマイズの指定にもよるけど) てことは置いといてもっと気楽に行こうよ。 そう書いたらダメとか、それは間違ってる・・とかより >>74 や >> 95 に一票(もしかすると同一人?) >>90 は頭を柔らかくね。何年かして、そのプログラム見たときに何か感じるものがあればいいんじゃない?
97 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:03:36 ] pがポインタ型なら全く同じ意味だから、 まともなコンパイラなら同じコードを生成するよ。
98 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:45:51 ] 逆に、違うコードを吐いたところで9割9分くらいは目くじら立てることないと思う。
99 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:55:03 ] GetRandom関数の意味を教えてください
100 名前:デフォルトの名無しさん [2008/06/15(日) 22:55:37 ] >>99 スレ違い
101 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:02:35 ] >>100 すいませn どこいけばいいですか?
102 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:38:08 ] >>97 あああ、ちがうよ〜。 or reg, reg とするか cmp reg,0 とかの話。 >>98 そりゃ目くじらどころかござにも引っかからないだしょ。
103 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:39:16 ] >>78 ん、確かに。失礼しました。
104 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 04:33:31 ] HWND型の比較はどうやってすればいいですか?
105 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 07:28:50 ] ==
106 名前:aaa mailto:sage [2008/06/16(月) 15:30:50 ] scanfで入力させると 例えば int a; printf("数値:"); scanf("%d",&a) 実行結果 数値:●● ってなって入力させると改行がはいるじゃないですか? これを実行結果が 数値:●●センチ のようにできますかね?
107 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:34:43 ] 一般的には無理 環境によっては可能かも知れないが、かなり特殊だと思う
108 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:36:31 ] って言うかC言語の問題じゃなくてOSの入出力インタフェースの問題だな
109 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:41:22 ] 一回画面クリアして書き直すとか
110 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:01:11 ] 例えば3〜入力した数までの数をある法則で計算していく時、 その中から素数を計算から除外したい時はどのようにしたらいいんでしょうか?
111 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:03:13 ] 素数かどうかを判定して素数なら除外する
112 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:03:35 ] >>110 素数判定して除外すればいい。 恐らくは、こんな要領。 for (int ic = 3; ic < inputedNumber; ++ic) { if (isPrime(ic)) continue; someFunction(); otherFunction(); }
113 名前:112 mailto:sage [2008/06/16(月) 17:04:10 ] ちっ、細かく書き過ぎて先を越されたぜ
114 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:01:41 ] 物理シュミレーションをやりたいんだけど、いい入門書ない?
115 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:36:59 ] セグメンテーションエラーをなおす方法としてなにがあります?
116 名前:デフォルトの名無しさん [2008/06/16(月) 19:39:41 ] >>115 デバッガの使い方覚える
117 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:57:35 ] どうやってつかうの?
118 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:00:57 ] べんきょうする
119 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:09:40 ] >>114 分野をはっきりさせないと答えられない。
120 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:15:55 ] >>115 どこまで進んで落ちてるのか調べればいいんじゃ? 適当にprintfいれるとか。
121 名前:デフォルトの名無しさん [2008/06/16(月) 20:19:35 ] 以下のようなデータファイルをfgetsとsscanfを使って読み込みたいのですが、 どうすればよいでしょうか? test.datの中身 1 2 3 4 5 6 7 8 9 10 11 ... 1000 char line[10000]; int a[1000]; FILE *fp; fp=fopen("test.dat","r"); fgets(line, sizeof(line), fp); とすると、lineにtest.datの内容が文字列として格納されます。 ここからsscanfを用いて、1〜1000をa[0]〜a[999]に格納したいです。 繰り返し構文を用いて何とかできませんでしょうか?
122 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:04:37 ] ものすごい初歩的な質問ですが宜しくお願いします。 ためしにファイル名a.cとして文字列を表示させるだけのプログラムでコンパイルを試みたところ Error E2209 a.c1: Unable to open include file 'stdio.h' Warning W8065 a.c 4: Call to function'printf'with no prototype in function main と表示されできません。 なにがいけなかったのでしょうか。
123 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:06:42 ] 標準インクルードパスがちゃんと設定できてないとか?
124 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:12:28 ] >>123 レスありがとうございます。 確認してみましたができてました。 ちなみにプログラムは #include <stdio.h> int main(void){ printf("あああああ\n"); return 0; } ふつうのプログラムです。
125 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:14:37 ] とりあえずプログラムに間違いは全く見受けられないから、 どっかの設定に問題があるとしか。
126 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:18:53 ] >>124 できてないからおかしなことになっとるんじゃ
127 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:19:29 ] 確認させてください。 ボーランド社のコンパイラを使っております。ファイルをC:\Borlandに解凍して、 ↓ 環境変数でPathの末尾に;C:\Borland\BCC55\Binを付け加える ↓ 二つのcfgファイルを作る であっていますか?
128 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:30:22 ] >>121 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6933.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6934.c fgetsとsscanf 不使用 > char line[10000]; 無理
129 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:35:32 ] セミコロン有って98?
130 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:36:03 ] >>120 それをやったのですけど そのプログラムではfread,fseekを使ってるプログラムで ひさしぶりにつかったらどうやって組み立ててたのかわからなくて。 宿題のスレにお願いしたのですけど。 ここにはるとマルチになるので
131 名前:130 mailto:sage [2008/06/16(月) 21:42:14 ] これ a-draw.com/uploader/src/up1643.zip.html このファイルをダウンロードしてもらって解凍してもらいたいんです。 prog.cのファイルを実行してセグメンテーションエラーをとってほしいんです けど。
132 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:42:25 ] すでに現段階でマルチだよ
133 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:46:20 ] >>127 cfg ファイルの中身が間違っている可能性が高い
134 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:49:36 ] >>133 レスありがとうございます bcc32.cfg内は -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" ですよね。 ilink32.cfg内は -L"c:\Borland\Bcc55\lib" ですよね・・・ とくにファイルの移動とかはしていません。デフォルトのままです
135 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:51:49 ] 中身は問題なさそうだな・・・。 んで、そのファイルはどこに置いてる?
136 名前:130 mailto:sage [2008/06/16(月) 21:54:14 ] prog.cですけど きちんと動けばtextフォルダ内にテキストファイルができます
137 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:54:27 ] あいや、cfg ファイルね
138 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:55:16 ] って、質問者からしてちゃうやんけw >>135 は >>134 へのレス。
139 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:56:03 ] ワロタ
140 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:56:32 ] Binに入れています。
141 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:57:47 ] だが断る
142 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:58:11 ] cfg ファイルは非Unicodeのプレーンテキストファイル?
143 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:00:26 ] はい
144 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:01:54 ] C:\Borland\Bcc32\include\stdio.h はある?
145 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:02:12 ] 文字コードはANSIでした。 拡張子もtxtではなくcfgに書き換えています。
146 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:02:32 ] 環境変数かえてから再起動してないってオチでわ?
147 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:03:19 ] コンパイラ走ってるからそのあたりは大丈夫そうに思える。
148 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:04:30 ] 自分のレス番名前に入れろ
149 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:04:32 ] 「登録された拡張子は表示しない」 設定になっているがために 本当は .cfg.txt になってるのが .cfg と表示されている・・・とかはない?
150 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:05:43 ] >>144 ありました。 >>146 何回も再起動しました;; >>147 コマンドプロンプト開いてbcc32でズラズラでてきます。
151 名前:122 mailto:sage [2008/06/16(月) 22:07:27 ] >>149 拡張子は全て表示するようにしています.
152 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:11:37 ] だが断る
153 名前:122 mailto:sage [2008/06/16(月) 22:15:42 ] 蛇足(?)ですが、JDKも導入しています。こちらはフツウに動作してくれます。
154 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:28:52 ] 見てみようと思ったがダウンロードできん。
155 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:43:34 ] >>151 んじゃ、もう Borland は捨てよう。 インスコして即使える VC++ 2008 Express Edition にしよう。
156 名前:122 mailto:sage [2008/06/16(月) 22:51:29 ] >>155 ですね・・・ Visual C++は初めて使う(学校ではUltra-C Proというソフトつかって勉強してました)のですが、まったく仕様がかわりますか? 基本画面を見ただけでごちゃごちゃしていてよくわからないのですが、、、
157 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:52:53 ] コマンドプロンプトからコンパイルする時にインクルードパスを指定してみたら?
158 名前:122 mailto:sage [2008/06/16(月) 22:54:56 ] >>157 コマンドプロンプトの使い方がまったくわかりません;;
159 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:55:52 ] > bcc32.cfg内は > -I"c:\Borland\Bcc55\include" > C:\Borland\Bcc32\include\stdio.h はある? →ありました Bcc使ったこと無いんだが、Bcc55ってのとBcc32ってディレクトリできるん?
160 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:00:56 ] >>159 御免。それ間違えただけ。
161 名前:122 mailto:sage [2008/06/16(月) 23:01:08 ] >>159 >C:\Borland\Bcc32\include\stdio.h これはBcc55の間違いでした。すみません。
162 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:01:28 ] >>156 基本的な使い方はそこいらのサイトに載ってると思う。
163 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:03:23 ] >>160-161 了解です。 bcc -ehoge.exe hoge.c でいいのかな。 インクルードパスを明示的に指定するために bcc -I"c:\Borland\Bcc55\include" -ehoge.exe hoge.c とやってみるか、インクルードファイルをフルパス指定にするために #include "c:\Borland\Bcc55\include\stdio.h" に変えてみるとか。
164 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:04:36 ] って\あやしくね?Windows分かりませんで逃げていい?(汗
165 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:05:15 ] #include の中は \ 1つでいいよ
166 名前:122 mailto:sage [2008/06/16(月) 23:14:16 ] >>162 ちょっとググってみます。 >>163 おぉぉおぉぉぉおお!できました!ありがとうございます! しかし、もうVisualC++をインストールし終えてしまいました^^; でもありがとうございます!
167 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:17:29 ] >>166 お。できたんだ? ってことはコンフィグファイルがうまく効いてないのかしら。 その辺はますます使ったこと無いのでわかりませんが、VCに移行するんですね^^; がんばってねー
168 名前:122 mailto:sage [2008/06/16(月) 23:25:10 ] >>167 VisualC++は使い慣れるのにけっこう時間が必要のようです^^;;; 当分、メモ帳+VisualC++の併用していこうとおもいます。 167さんのアドバイスで新しい書き方を覚えましたし、満足です^^ ありがとうございました。がんばりまうs!
169 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:29:44 ] どうでもいいけどC言語以前の問題だと思う
170 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:31:33 ] さらに入門以前の問題でもある
171 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:51:44 ] >>168 メモ帳使う方が混乱すると思うぞw
172 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:00:15 ] しかし、Visual C++コマンドプロンプトの存在は bcc32.cfgを用意するなどといった手間がない分、Borland C++より優位。 インストーラの力は偉大だ。
173 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:07:07 ] >>168 今までのレス見てて原因分かったぞ bcc32.cfgのincludeを指定してるパスが間違ってるんじゃないのか
174 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:08:15 ] >>134 で特に間違いはないように見えるけど
175 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:09:39 ] 見逃してたwww