- 1 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:10:57 ]
- このスレは標準Cのみの限定スレです。
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 質問する前には最低限検索を。 エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。 C FAQ 日本語訳 www.kouno.jp/home/c_faq/ Cプログラマ必読 ・プログラミング言語C(通称 K&R) www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244 他の過去ログはここに nssearch.hp.infoseek.co.jp/clang/ 前スレ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131 pc11.2ch.net/test/read.cgi/tech/1170338926/ GUIなどの標準Cではできない事の質問、ソース丸投げ、宿題、書籍 は 専門の別スレッド↓があるのでそこへさようなら。 【初心者歓迎】C/C++室 Ver.42【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1188748806/ C/C++の宿題を片付けます 95代目 pc11.2ch.net/test/read.cgi/tech/1187944110/ 【このスレ住人としての心得】 ビットシフトはなんの役に立つのでしょうか でググれ
- 194 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:46:58 ]
- 代入と初期化は違うんだよ!
初期化を怠ると、後でひでーめに遭うんだよ! むしろ初期化は強制すべきなんだよ!
- 195 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:51:24 ]
- そんな事言ってる君らはどのコンパイラ使ってるの?
- 196 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:54:37 ]
- Kylix
- 197 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 18:59:33 ]
- >>189
ありがとうございます。勉強になりました。
- 198 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:01:38 ]
- >>194
私をお呼びですか?フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
- 199 名前:デフォルトの名無しさん [2007/09/23(日) 20:02:50 ]
- >194
代入を禁止したらいい。
- 200 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:09:43 ]
- ・変数の初期値は必ず決める
・変数への代入は可能な限り行わない(変数を使いまわさない) でもコンテナとかポインタ先への間接代入はしょうがないよね。
- 201 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:24:46 ]
- 関数型言語でおk
- 202 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:41:26 ]
- C++でもSICPの問題がとけるんだからきっとCでも解けるさ
- 203 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 21:14:28 ]
- >>191
>>192 どこに初期化ができないCコンパイラがあるというんだ? だれもブロックの途中だなんて一言も言ってないわけで、宣言できる場所でなら初期化代入は必ずできるわけだが。
- 204 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 21:29:25 ]
- 構造体変数のコピー初期化ができないコンパイラには遭ったことがある。
struct s a = {...}; /* これはいける */ struct s b = a; /* こっちはエラー */
- 205 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 21:31:01 ]
- >>204
スレタイに注目。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 21:46:28 ]
- >>204
こいつ最高にアホ。
- 207 名前:204 mailto:sage [2007/09/23(日) 21:47:18 ]
- >>205 何か問題でも?
- 208 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:03:51 ]
- K&Rならいざしらず、ISOその他では204ができないといけないことになっている。
- 209 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:08:32 ]
- ビットフィールドは、ビット演算を使わないように気を付ければ移植性は問題無しですか?
- 210 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:15:17 ]
- >>209
メモリ上のレイアウトを意図したビットフィールドの使い方には移植性に問題があります。 ビット演算を使うかどうかは、あんまり関係ないでしょう。
- 211 名前:209 mailto:sage [2007/09/23(日) 22:47:20 ]
- >>210
どうもありがとう。 ちなみに、処理速度的にはやっぱりビットフィールド使うとたいていの場合遅くなるもんですか? どっちみち今やってるプログラムはメモリの制約があるので使わざるを得ないんですが…
- 212 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 22:55:49 ]
- >>211
遅くなることのほうが多いだろうけど、使い方とコンパイラの実装の相性による。 速度は実測が基本。
- 213 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:19:46 ]
- プログラミングが上達するコツ
pc11.2ch.net/test/read.cgi/tech/1190555031/
- 214 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:50:47 ]
- clock()が本来返すべき値がclock_tの範囲を超えた場合ってどうなるんですか?
- 215 名前:デフォルトの名無しさん [2007/09/24(月) 21:55:11 ]
- If the processor time used is not available or its value cannot be represented, the function shall return the value (clock_t)-1.
- 216 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:59:26 ]
- >>215
ありがとう。
- 217 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 15:39:42 ]
- int sum;
int dig; とint sum,dig; とはどう違いますか?
- 218 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 15:59:30 ]
- 違わない
- 219 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 16:17:39 ]
- C99の標準機能だけで、UNIXのsleepコマンドみたいな機能は実現可能ですか?
- 220 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 16:19:40 ]
- whileとforはどう使い分けるべきですか?
- 221 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 17:04:51 ]
- >>219
不可能 >>220 whileとforの仕様を本当に理解していたらそんな出るはずない 教科書読み直せ
- 222 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 17:05:22 ]
- ×そんな
○そんな質問
- 223 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 18:10:20 ]
- そんなあー
- 224 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 18:20:56 ]
- >>223
>>223 >>223 >>223 >>223
- 225 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 21:46:08 ]
- >>219
system("sleep
- 226 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 21:57:02 ]
- ");
- 227 名前:デフォルトの名無しさん [2007/09/26(水) 00:47:34 ]
- JIS X3010 の 6.2.6.2 を読んだだけでは分からなかったのですが
int の負数の表現が 2 の補数で short の負数の表現が 1 の補数 という処理系はありえますか?
- 228 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:08:58 ]
- 灯油を燃やした熱で水蒸気を発生させてタービンを回して発電した電力で水を電気分解して得られた水素と酸素を爆発させてシリンダーを動かしてプロペラに伝えて走るホバークラフトくらいにはありえる
- 229 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:39:47 ]
- 面白くない
- 230 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:46:44 ]
- >>228
ロジン貸そうか
- 231 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:21:00 ]
- int goto;
int while; int for; とかintに関数を使ってもいいですか?
- 232 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:23:13 ]
- >>231
gotoもwhileもforも関数じゃないが、予約語は変数名に使えない。
- 233 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:43:22 ]
- #include <stdio.h>
int main(void) { int kara; int made; int kankaku; int cnt; printf("何cmから:"); scanf("%d",&kara); printf("何cmまで:"); scanf("%d",&made); printf("何cmごと:"); scanf("%d",&kankaku); for (cnt=0; (kara+cnt)<=made; cnt=+kankaku) { printf("%dcm ",kara+cnt); printf("%.2fkg\n",(double)(kara+cnt-100)*0.9); } return (0); } これどこがミスってますか?
- 234 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:43:33 ]
- >>232
thx!
- 235 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:44:21 ]
- >cnt=+kankaku
ですね。thx!
- 236 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:11:09 ]
- while (!cont)
ってどういう意味?
- 237 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:16:18 ]
- !は以外ってこと
contだけのときは、0 !contは!0ってこと。 だから、0以外
- 238 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:55:47 ]
- >>236はどういう意味ですか?
!contっていう部分です
- 239 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:58:11 ]
- 否定ってこと。0のこと。
- 240 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:00:13 ]
- >>239
??? >>238 cont=0; printf("cont=%d !cont=%d\n", cont, !cont); cont=1; printf("cont=%d !cont=%d\n", cont, !cont); cont=2; printf("cont=%d !cont=%d\n", cont, !cont); cont=-1; printf("cont=%d !cont=%d\n", cont, !cont);
- 241 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:03:21 ]
- contの反対ですよ。
- 242 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:08:26 ]
- アホばっか
- 243 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:08:32 ]
- while文は0以外の時に真となりループする。
while(cont)は、contが0以外だったらループする。 while(!cont)は、「contが0以外」以外だったら、つまり0だったらループする。
- 244 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:12:15 ]
- >while(!cont)は、「contが0以外」以外だったら、つまり0だったらループする。
どういう意味?
- 245 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:28:37 ]
- どういう意味もなにも、それ以外の意味は無いんだが…
while ( ! (cont) ) こう書けば分かるかね?論理否定演算子あたりでググってくれ。
- 246 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:15:22 ]
- 釣られすぎ
- 247 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:20:06 ]
- コントです
- 248 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:02:38 ]
- 誰がうまい事言えと・・・
- 249 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:37:50 ]
- 釣りだったのかよ。付き合って損した。こんなことしてもスレ住人が減るだけなのに。
- 250 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 14:54:01 ]
- 型 X と型 Y が signed 付きか unsigned 付きかの違いしかない整数型のとき
X x = A; Y* y = (Y*)&x; のあと (Y)x と *y は同じ結果になりますか? または ISO/IEC 9899:1990 のどのあたりで分かりますか?
- 251 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 15:18:35 ]
- >signed 付き
>unsigned 付き
- 252 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 16:13:37 ]
- #include <stdio.h>
int main(void) { int width,height,i,j; puts("長方形"); printf("幅はいくつ?:"); scanf("%d",&width); printf("高さはいくつ?:"); scanf("%d",&height); for (i=1; i<=height; i++) { for (j=1; j<=width; j++) putchar('*'); putchar('\n'); } return (0); } を採点してください。こうしたほうが、スマートだよとか、 速いよ、とかあれば教えてください。
- 253 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 16:57:42 ]
- ・scanf()は使わない方がいい。
・個数を回すループは 0 から n 未満とするのが一般的。 ・forの中味の行が変わるなら括っておくのが無難。 ・一文字変数は避けた方がいい。 ・(0)は意味がないので 0 で充分。
- 254 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:04:09 ]
- >>252
>>1 > GUIなどの標準Cではできない事の質問、ソース丸投げ、宿題、書籍 は > 専門の別スレッド↓があるのでそこへさようなら。
- 255 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 18:35:24 ]
- >>253
このようなtoy programなら、scanfを使っていけない理由はない。 ループ制御変数はi,jのように1文字にするのが原則。無駄にcounterのようにすると返って読みにくい。
- 256 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 18:50:05 ]
- >>253の他はどうですか?
- 257 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 19:15:16 ]
- csvファイルを読み込んで構造体に格納するとき、
strtok()とsscanf()では、どちらを使う方がいいですか? あるいはもっといい方法ありますか?
- 258 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 20:02:16 ]
- >>257
基本的にscanfファミリーはガッチリフォーマットの決まったレコードや データが空白で区切られたレコードを読むのに最適に出来ている カンマ区切りの可変長データは、それが全部数値ならいいが、 文字列が混ざってると厄介なことになりやすいので、 そういう場合にはstrtokを使ったほうが楽な場合も多い あとは具体的なデータの内容によるとしか言えないが、 "str,ing",255, …みたいなものまで読める完全に汎用なものを作りたいなら strtokでもsscanfでもなく頭っから一文字ずつ読んで解釈するしかない
- 259 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 20:02:30 ]
- #include <stdio.h>
int main(void) { int width,height; puts("長方形"); printf("幅はいくつ?:"); scanf("%d",&width); printf("高さはいくつ?:"); scanf("%d",&height); for (int i=0; i<height; i++) { for (int j=0; j<width; j++) { putchar('*'); } putchar('\n'); } return 0; }
- 260 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 20:40:43 ]
- >>259
C99だね
- 261 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 22:23:26 ]
- ピラミッドの作り方は、法則があるのですか?
scanf("%d",&n); for (i=1; i<=n; i++) { for (j=1; j<n-i+1; j++) putchar(' '); for (j=1; j<=(i-1)*2+1; j++) putchar('*'); putchar('\n'); の for (j=1; j<n-i+1; j++) と for (j=1; j<=(i-1)*2+1; j++) の解説をお願いします。
- 262 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 22:24:24 ]
- >>261
ピラミッドにもいろいろあるので、一概には答えられません。 なんて冗談は兎も角、>1を読んで初心者スレへどうぞ。
- 263 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 22:26:22 ]
- >>262
thx! 移動します
- 264 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 00:18:10 ]
- >>252
そもそも長方形であるためには width>0 && height>0 でないといけないんだから それをチェックすべきじゃないのか?
- 265 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 01:35:27 ]
- >>250
同じ結果になるとは言えない。 と 6.2.6.2 を読んで思った。
- 266 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:25:05 ]
- 相互参照するヘッダってどう書けばよいですか。
文字列ライブラリと、エラーラーブラリのヘッダで、 文字列ライブラリでエラーがあったらエラーライブラリの関数、 エラーライブラリ内では文字列ライブラリを使ってます。 頭が再帰でどうにかなりそおです。
- 267 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:26:38 ]
- ちなみに
どっちかに自分のプロトタイプを置く方法は使いたくありません。 メンテが面倒なのでね。
- 268 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:10:53 ]
- よく使われるこのイディオムじゃ駄目?
--foo.h #if !defined FOO_H #define FOO_H #include "bar.h" ...(本体) #endif -- --bar.h #if !defined BAR_H #define BAR_H #include "foo.h" ...(本体) #endif --
- 269 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:18:55 ]
- >>266,267
文面からすると、関数の呼び出しをヘッダ内で行っている(つまり「定義」を書いている)??? 通常は、ヘッダには、関数の[宣言のみ]書き、定義は別にするから、 互いに参照し合う必要はないはず。
- 270 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:41:32 ]
- うるさいなー
もー C++だってインラインで定義してんじゃん 分けるの面倒なの!
- 271 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:44:20 ]
- >>268
それじゃダメだっつってんだろ
- 272 名前:デフォルトの名無しさん [2007/09/29(土) 00:10:39 ]
- 関数定義がヘッダで行われてるなら、
2つのソースファイルで同じヘッダを読み込んだ時点で 関数の2重定義でリンク通らなくなるだろ。 相互参照云々以前に根本的にバグってる。
- 273 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:18:55 ]
- >>272
ライブラリ使う側からなら何の問題もなし。 バグってるのはお前の頭。
- 274 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:25:01 ]
- >>273
コンパイル出来ない両ライブラリとライブラリを使ってる部分のソース一式どっかにアップするか 日本語勉強し直すか、どっちかにしてくれ。
- 275 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:26:01 ]
- わかんないなら引っ込んでろよ
うぜー
- 276 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:28:43 ]
- 自分だってわからないことがあるから質問に来てるんじゃないのか?
そう邪険にするなよ
- 277 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:29:25 ]
- いや、これが正解なんだけど
- 278 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:29:30 ]
- ヘッダに関数定義書くとかクソすぎだろマジで
- 279 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:29:39 ]
- 事故解決しました
- 280 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:37:26 ]
- ヘッダ2つの中身を一緒にしちゃえば?
んで、片方は#include1行の適当なヘッダ名でっち上げる。 ソース管理楽だよ。
- 281 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:42:48 ]
- >>280
今まさにそうしてるんだよね 気持ち悪いから変えたかったんだけど いまのとこそれしか思いつかない ほんとアホばっかだなここ・・・
- 282 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:26:20 ]
- アホが多いのは否定しない。
- 283 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:30:16 ]
- どんだけバカなんだよ
メンテが面倒だからプロトタイプ書かないとか 気持ち悪いなら他の言語使えば?
- 284 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:36:14 ]
- どう考えても釣りだろう
- 285 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:54:46 ]
- 心の底から言ってるんじゃね?
そう考えると哀れみだけしか浮かんでこないので笑ってスルーできるよ。
- 286 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 05:58:54 ]
- そもそもこのスレで扱う内容なのか?
プロトタイプ宣言と定義が一致しないとエラーになるISO/ANSI/JIS Cはおかしい K&R時代の仕様に戻すべきだとか?
- 287 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 06:37:27 ]
- むしろプロトタイプ宣言があれば凡ミスによるバグが減らせて保守が滅茶苦茶楽になるのにね。
機械にやらせられるところは極力機械にやらせるという発想がないやつはプログラマには向いてないな。
- 288 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 21:53:36 ]
- ファイルをアップロードするCGIをCで作ってます。
バウンダリ文字列で区切られたデータを切り出す際の定跡的な物はありますか?? いまは、 ・CRLFCRLFとなった時点をデータの始まり ・すべて書き込んだ後、CRLFまで戻ってそこをデータの終わりとする って感じでやってます。
- 289 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 22:04:13 ]
- >>288
Cの言語規約には含まれてはいないので、ご自由にどうぞ。
- 290 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 22:51:49 ]
- >>289
いや、規約というかテクニックを教えていただけたらと思いまして。。。
- 291 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 22:56:33 ]
- >>290
スレ違い。
- 292 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 00:16:29 ]
- 議題:このスレの存在意義について
- 293 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 00:17:49 ]
- もちろん規格の範囲内についてを扱う。
それがなんのことやら理解できないやつが>>292みたいな疑問を持つ。
- 294 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 00:20:45 ]
- 低席(なぜか変換できない)
定石(じょうせき)
|

|