C言語なら俺に聞け( ..
229:デフォルトの名無しさん
08/11/03 17:13:14
>>226
いや、大誤解だと思いますね。>>224 ではなくて、>>>226 が。
>>210 は getchar() の戻り値を char でうけているのが、センスがないというか、そもそも本質を理解していない、というべきか。
もしかして、いつものあなたですか?これはつり?
230:デフォルトの名無しさん
08/11/03 17:17:14
いつものあなたって・・
お前は誰と戦ってるんだ
231:デフォルトの名無しさん
08/11/03 17:22:56
非科学的=厨はマ板にまではびこっている
232:デフォルトの名無しさん
08/11/03 17:25:19
糖質かこいつ
233:デフォルトの名無しさん
08/11/03 17:33:18
どいつ?
234:デフォルトの名無しさん
08/11/03 17:34:13
229
235:デフォルトの名無しさん
08/11/03 17:34:35
>>228
scanfを使うことは必須条件?
あと入力するのは「1234」なのか「1,2,3,4」なのか
前者だったら>>207でできないかな
後者だったらsscanfとかを調べてみるといいかも
236:デフォルトの名無しさん
08/11/03 17:51:07
>>227
ですよね。というか、標準入力からの入力値が、つうつうで getchar() ≒ fgetc() の返り値になるわけではないのですが。
>>230-234
やっぱりIDをつけたほうがいいのでしょうかね。
237:デフォルトの名無しさん
08/11/03 18:04:03
>>228
"%d,%d,%d,%d"と書いたら、それは1,2,3,4と入力させることを意味する
1234と入力するのなら>>207のようにすること
238:デフォルトの名無しさん
08/11/03 18:21:31
fgetsじゃなくてgetsでいいよ
どうせ両関数の仕様すら理解していないんだろ
239:203
08/11/03 18:26:55
スレ汚しすいませんでした。
>>207の方法で1から作り直します。
皆さんご回答本当にありがとうございます。
240:デフォルトの名無しさん
08/11/03 19:38:12
URLリンク(kansai2channeler.hp.infoseek.co.jp)
画面内の球をクリックすると初速度v0で鉛直投げ上げするプログラムです
空中にある状態の球をクリックするとまたその位置から投げ上げされて
球をクリックするたびにどんどん球が上がるようにしたいんですが、
空中の球をクリックしても何も起こしません。
ボールが跳んでるときに、最初にボールがあった場所をクリックするとおかしなことに。
241:デフォルトの名無しさん
08/11/03 19:43:31
あっそう
242:240
08/11/03 20:22:33
どこが間違ってますかね?
243:受付番号001
08/11/03 20:25:58
>>242
いま診てやるから待ってろ
244:デフォルトの名無しさん
08/11/03 20:34:54
たぶんここだな
if(bally+ball >= 500){
KillTimer(hWnd,ID_MYTIMER);
bTimer = FALSE;
mytime = 0;
}
245:質問
08/11/03 20:55:23
ファイルの直ぐ下に任意のファイルの内容を
そのままコピー、連結できる関数ありますか?お願いしますm(__)m
246:デフォルトの名無しさん
08/11/03 20:58:55
>>245
ないです。
247:デフォルトの名無しさん
08/11/03 21:00:06
自分でアペンドモードで開いてコピーしる
248:デフォルトの名無しさん
08/11/03 21:00:38
下はどっちだ?
249:デフォルトの名無しさん
08/11/03 21:02:24
>>245
C/C++の宿題を片付けます 117代目
スレリンク(tech板)
250:245
08/11/03 21:02:52
ということはファイルの内容を読み込んで
fopenのaで逐一書き込んでいくのが最良の方法ですね?
251:デフォルトの名無しさん
08/11/03 21:03:23
system
252:デフォルトの名無しさん
08/11/03 21:06:56
読み込みながらの方が良いだろう。
char buf[4096];
f = fopen(path, "r");
g = fopen(paht, "a");
while (c = fread(buf, 1, sizeof buf, f))
fwrite(buf, 1, c, g)
253:245
08/11/03 21:12:33
ありがとうございましたm(__)m
254:240
08/11/03 21:18:46
>>244
問題ないような気が・・?すみません分からないです
255:受付番号001
08/11/03 22:24:32
>>254
診ましたよ〜。
えーと、これはですね、、、もう手遅れです。 (←うそ)
問題点はボールのY座標の扱いですね。 WndProc内の変数ballyで保持しているY座標と
WM_TIMERメッセージ内で一時的に計算しているY座標とが一致していません。
ballyはウィンドウメッセージを受けるたびに480に初期化されていますので、上に飛んでいる
ボールをクリックしても反応しなく、地面をクリックすると反応してしまうのです。
ballyはWM_CREATメッセージ内だけで初期化しましょう。
また、WM_TIMERメッセージ内では常に地面からの座標計算でボールの高さを計算して
しまっているので、上手くボールにヒットしたらballyの位置から計算しなおす様に変更する
必要があります。
256:デフォルトの名無しさん
08/11/03 22:25:18
>>245
COPYやcatで連結は駄目なの?
257:デフォルトの名無しさん
08/11/03 22:35:13
ソースを読むって言うのはさ
自分とソースを一体化させる作業なんだ
「俺は今どうなっているのか」と考えながら読むんだ
無意識にみんなやってると思うぜ
他の何かがどうなってるかではない、自分がどうなってるか
258:質問
08/11/03 23:27:00
下記の違いを教えていただけますでしょうか?
return
exit
あ、あと
EXIT_FAILUER
ってなんですか?
259:デフォルトの名無しさん
08/11/03 23:28:00
FAILUARE
260:デフォルトの名無しさん
08/11/03 23:28:50
こういう人にはgoogleの使い方を教えたほうが親切なんでしょうか?
261:デフォルトの名無しさん
08/11/03 23:29:38
return は予約語
exit はライブラリ関数
EXIT_FAILURE はマクロ定数
です。
262:デフォルトの名無しさん
08/11/03 23:40:04
return は関数から抜ける
exit はプロセスから抜ける
EXIT_FAILUER は書いた者に聞け(煽り口調で)
263:デフォルトの名無しさん
08/11/03 23:41:28
EXIT_FAILURE はマクロ定数の意味が分りません
264:240
08/11/03 23:44:28
>>255
うまくいきました!
大変わかりやすい説明ありがとうございます!
265:デフォルトの名無しさん
08/11/03 23:51:02
>>257
空気を読むって言うのはさ
自分と空気を一体化させる作業なんだ
「俺は今どうなっているのか」と考えながら読むんだ
無意識にみんなやってると思うぜ
他の何かがどうなってるかではない、自分がどうなってるか
しかし、鏡を見ると、場に合わない容姿・・・
266:デフォルトの名無しさん
08/11/04 00:02:17
int main (void){
int i;
int vx[5];
for(i=0;i<5;i++){
printf("vx[%d]:",i);
scanf("%d", &vx[i]);
}
putchar('\n');
for(i=0;i<5;i++){
printf("vx[%d]=%d\n",i,vx[i]);
}
return (0);
}
上記の配列の要素を読み込んで表示のプログラムを実行したところ
1
2
3
4
5
vx[0]:vx[1]:vx[2]:vx[3]:vx[4]:
vx[0]=1
vx[1]=2
vx[2]=3
vx[3]=4
vx[4]=5
と変な形になってしまい、試行錯誤したところどうやら実行の際に
ファイル名 | more
としていたのが原因のようでした。 moreはその前に書いてたプログラムの際に利用していてそのままでした。
moreは単に一画面ずつ表示するようにするだけなのになぜこのようなことが起きたのでしょうか?
267:受付番号001
08/11/04 00:06:58
>>264
乙! 面白いトレーニングプログラムだねw
わしもSetTimer、KillTimer、WM_TIMERメッセージは、テトリスを作ってみた時に使ったよ。
同じように素のWindows SDKとC言語だけでね。
>>265
大人になれば空気なんて読まなくなる。いや読む必要がなくなるのだ。
その代わり、盤面の様子や流れ、相手のニーズや考えを読むように変化する。
268:デフォルトの名無しさん
08/11/04 00:30:14
自分がmainになるんだよ
mainになって、forなどで値の計算や操作をやっていると考えると
どこがおかしいのか分かりやすい
元々俺がアセンブラ屋だったから
自分に置き換えて「イメージ」する癖がついた
っていうか、みんなイメージしてると思うが!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
269:デフォルトの名無しさん
08/11/04 00:35:49
>>266
printf() の後に fflush(stdout); をおいてみるとどうなりますか?fflush(NULL); ではどうなりますか?
270:デフォルトの名無しさん
08/11/04 00:36:28
>>268
新しい芸ですか?
271:デフォルトの名無しさん
08/11/04 00:36:54
みなさん、Cのソースを組むとき、分かりやすく汎用的に組む為に、具体的にどういうことに気を付けてますか?
たとえば、、、
僕の場合なんですが、
・一行は80文字。
・strcpyよりmemcpy
・独自関数ライブラリのプロトタイプは必ず書く。
・関数の引数が多くなりすぎる時は構造対で渡す。
・関数名はキャメル式に統一。
・入れこは3つ以上にしない。
・繰り返し文は使い分ける。
・構造化プログラミング。mainは目次みたいな感じで、全体が把握でくるような作りに。
・C言語についてのコメントは書かない。
・インクルードヘッダはは使用するものだけ書く。(まとめたりしない)
まだあると思うけど、とりあえずこれくらいかな〜
みんなのも教えてください。
272:デフォルトの名無しさん
08/11/04 00:39:26
>>271
> ・strcpyよりmemcpy
状況にもよりますが、これは賛同しかねます。
273:デフォルトの名無しさん
08/11/04 00:45:27
>>272
あ、すいません。
そうですね。\0つけたい時ありますもんね。
strcpy→strncpyに訂正します。
274:デフォルトの名無しさん
08/11/04 00:50:17
>>271
入れ子2つだけじゃ厳しいなぁ
275:デフォルトの名無しさん
08/11/04 00:52:42
memcpy()でコピーしてるのに、コピーの長さをstrlen()で取ってるコードをこのまえ見たな。
strcpy()でいいじゃんって思うけど。
276:デフォルトの名無しさん
08/11/04 00:53:10
>>271
>一行は80文字。
まあほとんどないことですが、意味の上で 80文字を超えるようであれば、それはそれでこだわりません。
>プロトタイプは必ず書く
前方参照をほとんど行わないので、特に必要性を感じません。
>入れこは3つ以上にしない。
それはそうなんですが、まあ、ええ、ときどき、しばしばやってしまいます。
>キャメル式
初耳です。よろしければ意味を教えてください。
277:デフォルトの名無しさん
08/11/04 00:56:34
>・一行は80文字。
これは無い
278:デフォルトの名無しさん
08/11/04 00:57:33
>>276
Wikipedia項目リンク
279:デフォルトの名無しさん
08/11/04 00:59:40
>>277
そういうスタイルの人もいるよ。
Cだと80くらいでも十分書けるし。
280:デフォルトの名無しさん
08/11/04 01:04:14
いや居るのは知ってるよ
281:デフォルトの名無しさん
08/11/04 01:06:24
>>276
動的独自ライブラリから独自関数を使う場合、引数間違っててもコンパイルが通る。んで、実行時にコア吐いて初めて気付く事がある。プロトタイプ書いてると、コンパイルエラーでるから、書くようにしてる。好みかな。
キャメル式は、確か、ラクダみたいな意味だったかな。大文字と小文字だけでつけるやつ。こういうの。
FileCopy()
区切り方の違いかな。変数はアンダーバー使うし、マクロは大文字とか。
282:デフォルトの名無しさん
08/11/04 01:06:58
ああそう。
283:デフォルトの名無しさん
08/11/04 01:08:54
うん
284:デフォルトの名無しさん
08/11/04 01:08:55
>>281
下位のサブルーチンから書いていって、main()を最後に書くってスタイルの人なんじゃないの?
285:デフォルトの名無しさん
08/11/04 01:09:11
コーディング規約のスレがあったような
ここでもいいんですよ、はい
286:デフォルトの名無しさん
08/11/04 01:10:53
>>281
ん、了解。たしかに分割コンパイルですすめるときは .h にプロトタイプをまとめる、というのは日常的にしますね。読みが浅かったです。
>>278 >>281
キャメル式+ハンガリアンでかいてみることもあります。気分しだいですが。
287:デフォルトの名無しさん
08/11/04 01:16:37
>>284
昔はそういう人も居たし俺もそうだった。技巧賞ノミネート作品のように。
でもある時から改めた。
288:デフォルトの名無しさん
08/11/04 01:18:18
>>275は>>273を読んでないのか
289:デフォルトの名無しさん
08/11/04 01:20:25
>>287
技巧賞とあるんだ
ぐぐるわ
290:デフォルトの名無しさん
08/11/04 01:25:01
>>288
別に責めてるわけじゃないから、気にしなくていいよ。
291:デフォルトの名無しさん
08/11/04 01:25:48
>>287
技巧賞っていうか、Pascalの影響も多分にあると思う。
292:デフォルトの名無しさん
08/11/04 01:28:07
>>286 ハンガリアン記法はダメだろ
293:デフォルトの名無しさん
08/11/04 01:30:20
>>287
さしつかえなければ、かえた理由を教えてください。
たしかに私も厳密な意味で下から上にかいているわけではなく、コンパイルOKれべるですので、技巧賞はむりですね。
294:デフォルトの名無しさん
08/11/04 01:32:58
>>292
私のはいわゆる「アプリケーションハンガリアン」ってやつですね。MicroSoft 流 pszXXX とかいうのは私も嫌いで、これはやらないです。
そもそも全部の変数をハンガリアンにするわけではありません。
節操がないといえば、それまでですが。
295:デフォルトの名無しさん
08/11/04 01:36:38
しかしアプリケーションハンガリアンって、あんまり使う機会がないっていうか。
システムハンガリアンはダメだって言われてるけど、Cのときは、ポインタはpをつけてる。
296:デフォルトの名無しさん
08/11/04 01:41:43
>>269
どちらでも実行結果は変わりませんでした。
297:デフォルトの名無しさん
08/11/04 01:52:53
>>296
more の内容をください。more にも fflush(NULL) をいれるとどうなりますか?
298:デフォルトの名無しさん
08/11/04 01:58:06
fflush(stdout); を入れるのは一つ目のprintfですよね?
C:\081103>1 |more fflush(NULL)
ファイル C:\081103\fflush(NULL) にアクセスできません
1
2
3
4
5
となりました。
299:デフォルトの名無しさん
08/11/04 02:10:06
>>298
いえいえ、more も自作しているのかな、と思って、 fflush() で more のバッファリングも殺してしまおうと思ったわけで、
コマンドラインで fflush を指定するつもりはありませんでした。
more が標準出力をバッファリングしており、自作のプログラムの出力をその都度画面に出力していないのでは?と思いますが、いかがでしょう。
300:デフォルトの名無しさん
08/11/04 02:14:20
ごめんなさい、何言ってるか分かりません・・・
自分の不勉強のようなので出直してきます。
301:デフォルトの名無しさん
08/11/04 02:19:23
>>300
いえいえ、そんなつもりはないです。
バッファリングについてかいておきますね。
printf() で出力した時点で、それが画面にそのままでるわけではなくて、いったん別のところにたくわえられており、
ある程度たまった時点で画面に出力される、という仕組みになっているのが普通です。
たとえば、これは画面ではなくてディスクなんですが、printf()などで一文字ずつ書き込む、なんてディスクがカリカリいって
(ハードウェアの操作には時間がかかることは直感的に感じていただけるものと思います。)なんだか非効率だと思いませんか?
なにかわからないことがあれば遠慮なくきいていただいていいと思いますよ。レスポンスがあるかどうかは運まかせかもしれませんが。
302:デフォルトの名無しさん
08/11/04 03:00:02
strncpyは仕様が腐ってるので使うのやめとき。
303:デフォルトの名無しさん
08/11/04 03:08:05
どう腐ってるの?
304:デフォルトの名無しさん
08/11/04 03:09:44
終端文字列の扱いのこといってんだろう多分
305:デフォルトの名無しさん
08/11/04 09:28:37
strncpy()を使うくらいなら、spritf()を使いこなすか、いっそ自前で管理した方がいい希ガス。
306:デフォルトの名無しさん
08/11/04 13:08:21
つ strncat()
307:デフォルトの名無しさん
08/11/04 16:12:50
spritf
308:デフォルトの名無しさん
08/11/04 16:32:53
>305s/spritf/sprintf/
309:デフォルトの名無しさん
08/11/04 18:24:34
int i,j,k,count;
printf("何段?");
scanf("%d",&count);
for(i = 1;i <= count;i++){
for(j = 1;j <= count-i;j++){
putchar(' ');
}
for(k = 1;k <= i;k++);{
printf("*");
}
putchar('\n');
}
上記のプログラムで右下が直角の三角形が表示されるつもりなのですが
何段?5
----*
---*
--*
-*
*
となってしまいました(半角スペースを-としました)。kがうまくいってないような気がするのですが、ご指摘お願いします。
310:デフォルトの名無しさん
08/11/04 18:35:29
>for(k = 1;k <= i;k++);{
この行に注目。
311:デフォルトの名無しさん
08/11/04 18:44:17
>>310
printf("* %d",k);にしたところ
----*2
---* 3
--* 4
-* 5
* 6
となりました・・・なぜ毎回k=1にならないんだ。
312:デフォルトの名無しさん
08/11/04 18:45:47
>>311
>310
他は見なくていい。
313:デフォルトの名無しさん
08/11/04 18:47:45
>>312
注目したのですがとくにおかしくないような・・・
i回の繰り返し文のはずです。
314:デフォルトの名無しさん
08/11/04 18:53:12
やっと気付きました。 for(k = 1;k <= i;k++);←ここですね{
くだらない質問で失礼致しました。ご指摘ありがとうございました。
315:デフォルトの名無しさん
08/11/05 01:32:51
int k,i,j,n;
printf("何段?");
scanf("%d",&n);
for(k=0;k<=n;k++){
for(i=0;i<(n-k);i++){
printf(" ");
}
for(j=0;j<k;j++){
printf("*");
}
printf("\n");
}
布団入ってから作ったから動くかどうかわからん。
316:デフォルトの名無しさん
08/11/05 01:42:04
do{
if(){
break;
}
if(){
break;
}
}while(0)
時々みるこれどうなのよ?テクッてて見易いとかいうやつは程がしれてるな
317:デフォルトの名無しさん
08/11/05 01:53:25
>>316
while (1) {if()break; if() break;}
とか
for(;;) {if () break; if () break; }
はよくみます。lint にひっかからないように for(;;) {} を使う、ていう意見も。
ループの脱出条件が2つ以上ある、というのであれば、これらのやり方もありだと思います。
318:デフォルトの名無しさん
08/11/05 02:18:01
>>317
論点がずれてる
319:デフォルトの名無しさん
08/11/05 02:22:47
大文字と小文字を区別しないコンパイラはありませんか?
320:デフォルトの名無しさん
08/11/05 02:24:46
そこまで大胆に規格を逸脱した実装は見たことないな。
せいぜいDOS/Windowsでヘッダ名が大文字でも行けるくらいしか知らない。
321:デフォルトの名無しさん
08/11/05 02:39:26
>316
どうなのよってお前の感想どおりだ
322:デフォルトの名無しさん
08/11/05 03:13:09
>>316
別にテクッてるとは思わないがいいんじゃないの
323:デフォルトの名無しさん
08/11/05 08:06:33
>>316
その書き方は嫌いだが goto 禁止なら仕方ないな
324:デフォルトの名無しさん
08/11/05 10:25:39
int main(){
(略)
printf("test\n");
関数(Dname);
}
void 関数(char *fname){
printf("2\n");
}
というプログラムがあったときに、testが表示されて
2が表示されずにセグメンテーションエラーでるのはどこに原因があると考えられますか?
325:デフォルトの名無しさん
08/11/05 10:27:13
略されたところに魔物が棲んでいると考えられます
326:デフォルトの名無しさん
08/11/05 10:58:22
324ですけど解決しました
関数の中の定義した配列のサイズがおおきすぎたためでした。
327:デフォルトの名無しさん
08/11/05 11:33:44
>>316
美しくないとは思ってたんだがそれに近い書き方だ
0じゃなくて条件1個だけど
どう書くべきなの?
条件をいっぱい書くとして抜けるタイミングが異なる場合はどうしたらいい?
328:デフォルトの名無しさん
08/11/05 11:37:59
>>316
初心者なのでよくわからないのですが
これはif ・・・・・ else if ・・・
じゃだめなんですか?
329:デフォルトの名無しさん
08/11/05 11:39:58
>>328
それで組んでもさほど代わらないと思うよ。
むしろネストが増えるし
330:デフォルトの名無しさん
08/11/05 12:04:32
qsortでIPアドレスをキーにソートしたいんですが、うまくいきません。
IPアドレスとchar型の文字列を要素に持つ構造体のソートをしたいのですが
比較関数内にprintfを置いてみると、どうやら比較関数を数回参照しただけで
デバッガが立ち上がってしまいます。
IPアドレスはCSVから読み込んでいますが、5MB程度のCSVなら問題なく読み込み、ソートまでできます。
全く同じフォーマットの150MBのCSVからIPアドレスを全て読み込んでソートしようとするとデバッガが立ち上がります。
比較関数内の数箇所にprintfを置いてみたところ、比較関数の先頭と最後のprintfはセットで表示されるので、
比較関数内ではデバッガは出ていません。
どうやら割り当てされていないメモリ領域を参照しているみたいなんですけど、qsortをする際に変な領域を参照することとかあるのでしょうか。
331:デフォルトの名無しさん
08/11/05 12:08:08
・複数プラットフォームで運用するものでない
・仮に複数プラットフォームがあるとしても、ウチは個別にソースを用意する
・社風なのか、ソースの流用は好まない
なのに、「typedefで調べろよ!んったく何やってんだよもー」
とかグチグチ言い出す不満の塊
お前ストレス解消するために会社来てんのか
332:デフォルトの名無しさん
08/11/05 12:55:18
>>330
デバッガってのはデバッグするためのツールなんだけどね・・・
まぁたぶんスタックが足りないんだろう。どーんと増やしてみては?
333:デフォルトの名無しさん
08/11/05 13:05:48
>>327
ループ条件が存在するならループで書いたって問題ないだろ
334:デフォルトの名無しさん
08/11/05 14:34:11
while(条件式)
if(){
continue;
}
if(){
}
}
1個目のifでcontinueした場合2個目のifはとばされて、whileの頭にもどりますよね?
335:デフォルトの名無しさん
08/11/05 14:46:20
やってみれ
336:デフォルトの名無しさん
08/11/05 14:47:34
なんでその程度の規模のプログラムで聞くかね・・・
さくっとサンプル作って、どういう動きするか
テストしてみればいいじゃん。
337:デフォルトの名無しさん
08/11/05 15:02:59
それがゆとり
338:デフォルトの名無しさん
08/11/05 15:18:58
何度も言うけど、Cは動作の詳細を網羅しない言語だから「やってみろ」はダメ
i=i++とか、やってみてその結果が正しいと思い込んだらどうすんの?
こういうのに素直に答える気がないなら「教科書読み直せ」でいいんだよ
>>334
そうだよ
339:デフォルトの名無しさん
08/11/05 15:22:50
どうもしねーよゆとり
340:デフォルトの名無しさん
08/11/05 15:25:46
>>338
ここで散々論争になってきたようなところは
はまったときに聞けばいいんだよ。
どうせはまるところはそういうところって大体結論でてるんだし。
341:デフォルトの名無しさん
08/11/05 16:21:34
>>340
いつどこでそんな結論が出たの?
むしろ最初から正しい知識を与えないからそういうところではまるんじゃないの
問題にしているのは「やってみて確かめる」という姿勢はトラブルの種を抱えているということで
後になってトラブルが起きてから解決できるかどうかではない
342:デフォルトの名無しさん
08/11/05 17:57:50
>>341
それを言うなら、動作保証の有無を 2ch で聞く姿勢にこそ問題があるだろう
正しい知識だ? そもそもそんなのを与える義理がない者をつかまえて何を説くやら
343:デフォルトの名無しさん
08/11/05 18:57:39
質問です。
プログラムの練習で数のべき乗を計算するプログラムをCで作ってみたのですが、ちゃんと計算してくれません。
出来れば、どこが間違っているか教えていただけないでしょうか?
コードは下記のとおりです。
#include <stdio.h>
double multi(double x,int y);
int main(void){
double a,b,mul;
printf("数字aを入力してください\n");
scanf("%d",&a);
printf("aを何乗するか入力してください\n");
scanf("%d",&b);
mul = multi(a,b);
printf("%d",mul);
return 0;
}
double multi(double x,int y)
{
int i;
double mu;
for(i=1;i<=y;i=i+1)
{
mu*=x ;
}
return mu;
}
344:デフォルトの名無しさん
08/11/05 19:01:12
>>343
scanf("%d",&a); → scanf("%lf",&a);
scanf("%d",&b); → scanf("%lf",&b);
printf("%d",mul); → printf("%f",mul);
double mu; → double mu=1;
345:343
08/11/05 19:10:21
>>344
ありがとうございました。
桶下で、ちゃんと動作するようになりました。
346:343
08/11/05 19:11:26
桶下→おかげ
です。
失礼しました・・・・・
347:デフォルトの名無しさん
08/11/05 19:41:50
%fより%gを使おう。
348:デフォルトの名無しさん
08/11/05 19:45:36
なんかちがうんでげすか?
349:デフォルトの名無しさん
08/11/05 19:55:55
if ( (a=Func()) == 8 )
aにFuncの返り値を代入しつつ比較ってできる?
350:デフォルトの名無しさん
08/11/05 19:58:11
できる
351:デフォルトの名無しさん
08/11/05 20:00:22
>>349
やってみてうまくいかないのか?
352:デフォルトの名無しさん
08/11/05 20:19:04
入門以前に、環境について質問なのですが、Microsoft Visual C++.net ExpressとBCC5.5では、どちらが使い易いですか?
353:デフォルトの名無しさん
08/11/05 20:26:03
どう考えても前者
354:デフォルトの名無しさん
08/11/05 20:29:21
IDEとコンパイラ単体では比較にすらならん
355:デフォルトの名無しさん
08/11/05 20:29:30
>>351
うまくいったが、その動作が保証されてるかどうかを気にしてるんじゃないの?
356:デフォルトの名無しさん
08/11/05 20:43:12
>>342
なぜ問題が?
ネットの情報の信用性云々言い出すならそもそもこんなスレの存在意義自体がない
あと正しい知識を与えろと言ってるのではない
答えたくないなら「やってみろ」ではなく「教科書読め」と返せと言ってるだけ
357:デフォルトの名無しさん
08/11/05 20:47:50
どう答えるかはその人の勝手で、お前がグダグダ言おうとかわらんけどな。
まあ、好きなだけ言っててくれw
358:デフォルトの名無しさん
08/11/05 20:52:58
>>355
推測なんざ聞きたかねえ
すっこんでろ
>>356
教科書じゃねえ、保証者(メーカなり規格なり)が発行する資料で確認することだろうが
だいたい回答者サマがそんなこともわかってないような 2ch で聞くことに問題がないとでも言うのか
359:デフォルトの名無しさん
08/11/05 21:00:47
>>358
教科書を文字通りに取られたか
そこはそういったものに読み替えてくれればいいよ
で、2chで質問することを問題視する君はなんでこのスレにいるわけ?
帰れば?むしろ帰ってくれない?邪魔だから
360:デフォルトの名無しさん
08/11/05 21:02:18
いつものageのバカじゃないか
相手しても無駄っていうかお前も邪魔だからやめろ
361:デフォルトの名無しさん
08/11/05 21:07:35
要するにこのスレを潰したいから荒らしてるんだろ?
362:デフォルトの名無しさん
08/11/05 21:12:26
>>359
いーや、おまえは教科書と言った
それからあんたには邪魔かも知れないが
俺はスレタイどおり参加しているだけで荒らしているわけでもない(スレは荒れているかも知れないがな)
難癖つけられる筋合いはないので勝手にするぜ
おまえこそ正義があるなら運営にでも訴えてはどうだ、あ?
363:デフォルトの名無しさん
08/11/05 21:16:37
printf("%d %d %d", ++i, ++i, ++i);
364:355
08/11/05 21:53:55
>>358
すっこまねえよ。
要はお前が規格に沿った回答、または引用をすることができないから、
2chで質問することに意味がないと思いこんでるだけだろ?
お前が「やってみた?どうだった?」とかアホ面ひっさげたレスをしなければ
規格に沿った回答の密度があがるんだよ。
すっこんでろ。
365:デフォルトの名無しさん
08/11/05 22:04:15
>>364
>>351 をどう読めばそうなるのかは知らんし興味もないが
推測なんざ聞きたかねえ、と言ったはずだ
だからその部分に対しては答えない
すっこまねえのは確かにあんたの勝手だが
それはこちらにも言えることだ
同じ言葉を返しさえすれば痛烈だとでも思っていて自己矛盾に気づかないなら小学生なみだぜ
366:デフォルトの名無しさん
08/11/05 22:05:21
>>365
だからすっけんどろっての
367:デフォルトの名無しさん
08/11/05 22:08:21
>>366
うっせえ ぼけ
368:デフォルトの名無しさん
08/11/05 22:18:24
まだすっこんでないよな?
Cの教科書っていったらK&Rで異論ないと思うんだが、
それで何の問題があるんだ?
369:デフォルトの名無しさん
08/11/05 22:23:38
>>368
甘いんだよ、後出し設定なんか聞いてやらん
370:デフォルトの名無しさん
08/11/05 22:40:38
>>369
お前教科書って聞いて何思い浮かべたの?
371:368
08/11/05 22:42:33
後出しも何も俺>>356じゃねえよ?
寒くなってきたんだから布団にすっこんでぽかぽかになっとけよ
372:デフォルトの名無しさん
08/11/05 22:45:49
で、別人のふりくらいしかすることなくなったわけか
373:デフォルトの名無しさん
08/11/05 22:48:16
このスレには極端にレベルの低い小学生が二人いるのかな
374:デフォルトの名無しさん
08/11/05 22:49:49
よそでやれ
375:デフォルトの名無しさん
08/11/05 22:58:36
次の方どうぞ〜♪
376:デフォルトの名無しさん
08/11/05 23:53:51
>>316
それ好きな人が身近にいる。else ifだとデコボコになるからこれが好きとのこだ。
そいつは、構造対のメンバ名が長い時も、最初にそのメンバのアドレスを短くて意味のわかるポインタに移す。
最初は何でいちいちそんな事すんだよとか思ってたが、正直、そいつのソースは読みやすい。
好みだな
377:デフォルトの名無しさん
08/11/05 23:59:17
確かに、構造体ん中に構造体ある時とか、長くなるね。
378:デフォルトの名無しさん
08/11/05 23:59:33
複数ソースファイルがあるとき
ソースファイルその絡みがあるじゃないですか
例えばその値がどこから来たかを見つけたいとき
どうやればいいのですか。
1.c
から
10000000000000.c
くらいまであるとして
そのうちの23460001.cにある関数から
5986293.cに渡されたとしたら
わからないじゃ
ないですか
5986293.cのincludeには782365.cと23435.cしかない
というように、「渡りに渡って行き着いた」やつは非常に見つけにくい。
379:デフォルトの名無しさん
08/11/06 00:01:30
>>378
それは設計が悪くないか?
380:デフォルトの名無しさん
08/11/06 00:01:38
__FILE__
381:デフォルトの名無しさん
08/11/06 00:01:42
ゲームに限らず、携帯電話やATMなど
「仕事」のソースは例外なく大量のファイルに分かれているのに
「この値はどこから来たのか」
「それをはじき出すものはどこにあるのか」
っていうコメントがないことがほとんどです!!!!!!!!!!!!!!!!!!!!!!!!!!
382:デフォルトの名無しさん
08/11/06 00:04:02
>>378
Java見たら泣くよ
383:デフォルトの名無しさん
08/11/06 00:04:39
今時デバッガ使えば、その時点でどの関数がどの関数を呼び出しているかなんてすぐ分かる。
それとは別に、プログラムを実行させなくても静的に解析するツールだってちらほら存在する。
384:デフォルトの名無しさん
08/11/06 00:06:47
研修期間中に読んだものの中で最長の渡りが
30ファイル先
まず先に値を出す1.c -> それを利用する2.c -> 2.cで出た値を利用する3.c .................................................
30.cだけ見ると、「この値はどこから来たの」ってことしか分からず、
includeを見て追っていくと何十も何百も元のファイルから来てたとわかるのみです。
しかもそのincludeも、標準ライブラリ除いて20くらいincludeされていることもザラで
それら全部調べるとなるとたいへんな時間がかかります!!!!!!!!!!!
今仕事でバリバリやってる人らはどうやって調べているの
と
385:デフォルトの名無しさん
08/11/06 00:07:21
>>378
1.関数呼び出しの構造図を書く
func_a
func_b
func_c
func_d
2.データフローを書く
func_a - x ->func_b
386:デフォルトの名無しさん
08/11/06 00:08:38
関数呼ぶ→さらに中で関数呼ぶ→さらに中で関数呼ぶ→さらに中で関数呼ぶ→さらに中で関数呼ぶ・・・・
きつい時あるね
387:デフォルトの名無しさん
08/11/06 00:09:43
>>386
でも昔のDOSのころのようなミニマムな開発じゃなければ
そういうのはざらでしょ。
388:デフォルトの名無しさん
08/11/06 00:10:14
保守って点から見りゃ、およそ最悪だろ。
389:デフォルトの名無しさん
08/11/06 00:14:51
>>386
みたいなのをどうしても調べにゃならん時に、たどり着いたソースが新規1985年だったのがある。俺産まれた年(笑)
昔の人は英語好きだよね〜JISに対応してなかったのかね〜
390:デフォルトの名無しさん
08/11/06 00:18:22
>>389
時代的にはこんな感じだよ。
マシンによるんじゃないかな?
URLリンク(www.eonet.ne.jp)
391:デフォルトの名無しさん
08/11/06 00:22:45
とりあえずincludeで追いかけるってのはありえない
ライブラリならドキュメントがあるはずだし
ソースがあるならgrepかければ済む
392:デフォルトの名無しさん
08/11/06 00:32:05
for(;;)
{
int d = 0;
(dを用いた適当な処理)
}
と
int d;
for(;;)
{
d = 0;
(dを用いた適当な処理)
}
を比べると上のほうがオーバヘッドが大きいでしょうか?
dはfor文内でしか利用しませんのでスコープを限定したいのですが.
393:デフォルトの名無しさん
08/11/06 00:32:14
以前、関数から参照する外部変数や値の影響についてなどを関数仕様書に書いた。
すると技術の若造が「そういう事は止めてくれ。」と言われた。
「どうして?」の問いに、「そんな事を書いたら分かっちゃうだろ。」の回答。
C言語好きでNE○の系列会社に入社する奴はヲタクなお山の大将が多かった。
394:デフォルトの名無しさん
08/11/06 00:34:30
>>393
ドキュメントとソースの乖離が発生することを懸念して、じゃなくて、分かっちゃうからってところがwww
395:デフォルトの名無しさん
08/11/06 00:35:35
>>393
日本語でおk
396:デフォルトの名無しさん
08/11/06 00:38:36
>>392
{
int d;
for(;;)
{
d = 0;
(dを用いた適当な処理)
}
}
とかは?
これってgccしかできなかったっけ?
>>393-394
意味がわからねえw
397:デフォルトの名無しさん
08/11/06 00:40:28
メーカー製の場合、見えてはいけないものが多い。
特に地上デジタル放送関連は、結局はドライバで制御している以上、
「バレるとB-CASなしでも見られてコピーし放題」って芸当も出来るようになる。
398:デフォルトの名無しさん
08/11/06 00:50:07
コメントなしね〜HTMLならしかたないとこあるけどね〜
399:デフォルトの名無しさん
08/11/06 00:52:21
>>397
外に見せる?資料と内部では違うだろ・・
内部のものまで「書かない」が徹底されてるのか?
400:デフォルトの名無しさん
08/11/06 00:56:22
>396
VC6なんで出来るけどステートメントが深くなるからあんまりやりたくないです.
それよりfor文の中に入れたときに何度もdが宣言されるけどそのときのオーバヘッドが気になります.
401:デフォルトの名無しさん
08/11/06 00:57:17
>>393 ソフトさんですか。
402:デフォルトの名無しさん
08/11/06 00:59:12
オーバーヘッド気になるなら実測なりアセンブリ見るなりすればいいだろ。
403:デフォルトの名無しさん
08/11/06 00:59:44
for(ここにおけば?;;)
vc6だとグローバルスコープだったような気がするけど
でもそれはc++だったような期もするけど
404:デフォルトの名無しさん
08/11/06 01:03:51
>>400
宣言文は実行ステートメントではないから、
実行時のオーバヘッドにはならないだろ。
405:デフォルトの名無しさん
08/11/06 01:06:48
____
.ni 7 /ノ ヽ\ 内部にも見せないよ
l^l | | l ,/) / /゚ヽ /゚ヾ\ .n 以前、それで営業がポカやらかしたし
', U ! レ' / / ⌒ ⌒ \ l^l.| | /) 絶対に流出させられないから
/ 〈 | (____人__) | | U レ'//)
ヽ\ |lr┬-l| / ノ /
/´ ̄ ̄ノ ゙=ニ二" \rニ |
`ヽ l
406:デフォルトの名無しさん
08/11/06 01:41:40
B-CAS廃止されたんじゃなかったか?
407:デフォルトの名無しさん
08/11/06 01:48:54
まだよ
408:デフォルトの名無しさん
08/11/06 01:51:04
>>401
妙に納得した。
>>392
そのケースなら、コンパイラはどちらも同じようにコンパイルしてしまう。
スコープを限定してくれた方が読むにも判り易いからどんどん限定してくれたまえ。
# それこそ某N∈Sみたいな所の仕事だと全て関数の先頭で宣言しろとか言われかねないけど。
409:393
08/11/06 02:10:15
>>397
そういうカッコいい理由ならまだいいんだがw
NE○の通信系には変な田舎者の高専や専卒出身の奴が多いのは確かだよ。
カモフラージュ気取りのアメージングコード、騙しの#includeなどは当たり前。
例えば、ANSIの定数をコソーリとトリッキーなビットシフトで何重にも再定義してたりで
デバッガで動かすと、EOFが5に見えたりするんだが、奴らはその自分達の技術に対する
他人の反応を見て楽しんでたんだよ。(家で人知れず独りでオナニーしてろってwww)
>>401
昔はT芝相手で設計部門向けのCADなどのソフトもやってましたよ。その他にも監査に
似た評価・検証系もしてたので、よく使うコンパイラ数本のC標準ライブラリのヘッダやソースまで
ほぼ暗記してました。
410:デフォルトの名無しさん
08/11/06 09:12:19
>>352
遅レスだけど、エラーの指摘はTURBO C1.0対MS-C3.0の頃からborlandの方が出来が良い。
使いやすさじゃ勝負にならないけど、学習用途なら色々動かして、気に入った物を使うといいよ。
411:デフォルトの名無しさん
08/11/06 09:12:56
悪いがマ板でやってくれ
412:デフォルトの名無しさん
08/11/06 15:14:28
>>378
やっぱ一回実行して呼び出しスタック覗くのが一番早い気が。
gdbにもあったはずなんで、大抵の環境で可能だと思う。
413:デフォルトの名無しさん
08/11/06 17:19:50
fnameに/home/usr01/c_nara_orenikike/1th/2th/3th/4th/5th/6th/7th/8th/3.data
とかはいってたとして、次のファイル操作
printf("%s",fname);
if((fp = fopen(fname, "rb")) == NULL ) {
fprintf(stderr,"ERR;入力ファイル error;read_inputfile\n");
exit(EXIT_FAILURE);
}
これをかいて実行すると開けないってエラーがでるんですけども。なぜだと
考えられますか?ちなみに、emacsから/home/usr01/c_nara_orenikike/1th/2th/3th/4th/5th/6th/7th/8th/3.data
だと開けます。開けるからわからないんですけど。ファイルネームにラストに改行はいってるみたいで。
ただそれでエラーがくるのかと。3.dataはバイナリのデータです。
414:デフォルトの名無しさん
08/11/06 17:26:44
改行入ってたら、実際のファイルの名前にも改行入ってないと開けないぞ
415:デフォルトの名無しさん
08/11/06 18:13:23
>ただそれでエラーがくるのかと
ファイルを指す文字列をどう解決するかは当然OSに依存する
あいにく君の使っている環境は、末尾の\nを排除してファイルを探すことができなかった
それだけのことであって、そもそもCの話ではない
416:デフォルトの名無しさん
08/11/06 18:14:42
C言語を志すならばやはりK&Rは買わないとダメでしょうか?
417:デフォルトの名無しさん
08/11/06 18:17:30
別になくても困りはしないよ
418:デフォルトの名無しさん
08/11/06 18:19:39
もちろんあったほうがいいけど必須ではないよ
CFAQを読んだ上で、規格合致ギリギリのラインを攻め込んだりしない限り問題ないと俺は思う
419:デフォルトの名無しさん
08/11/06 18:20:37
>>416
K&R自体は買わなくても他に手はいくらでもあるが
たかが3千円弱の自己投資をためらうようならお先真っ暗だ
420:デフォルトの名無しさん
08/11/06 18:22:34
買ったけど内容は入門書と変わらない
正直要らないよ
421:デフォルトの名無しさん
08/11/06 18:24:44
K&Rってのは、C言語をマスターしている人間が買う入門書。
マスターしてるなら買うわけないじゃん、と思うだろうが
まさにその通り。
あの本は、読んでる人間はC言語を完全にマスターしてること前提で書いている。
辞書で言うならこんな感じだな
レバレッジ
株用語のひとつ。
リスクヘッジ
リスクをヘッジすること。
ってな
422:デフォルトの名無しさん
08/11/06 18:56:30
>>416
優れた医者は毒を薬とするという例えがあるようにその本を毒とするか薬とするかは自分次第
他人の評価を聞いて悩むより本屋でちょっと覗いてみて興味を持ったら買うのが一番
図書館で借りたって良いんだしさ
百聞は一見に如かずだよ
423:デフォルトの名無しさん
08/11/06 19:50:09
>>416
そうそう、積読の価値はあると思います。いつか、ふとしたときに手にとって、おもわず読みふけってしまう、ということがあると思います。
424:デフォルトの名無しさん
08/11/06 21:41:57
>>421
そんなことはない。
Prefaceに書いてあるとおり、他の言語は知ってるけど、C言語は
知らないって人向け
Cの文法は知ってるけど、書き方を知らないような人にも向いてると思う
425:デフォルトの名無しさん
08/11/06 21:44:04
でも本に書いてあるものは全部よい書き方だと思っちゃうようなひとには向いていない
426:デフォルトの名無しさん
08/11/06 22:04:00
「よい書き方」について論じている本ではないことくらいわかれ・・・・無理なのか?
427:デフォルトの名無しさん
08/11/06 23:00:10
趣味でプログラムを覚えようと思うのですが、最初はC言語でいいんですよね?
おすすめの入門書、サイトがありましたら教えて下さい。
428:デフォルトの名無しさん
08/11/06 23:04:30
>>427
いきなりCだなんて。えっち。
それはともかく、おすすめしない。
429:デフォルトの名無しさん
08/11/06 23:12:41
time_t tp;
time(&tp);
sprintf(buf,sizeof(buf),"%Y%m%d",localtime(&tp));
↑こんな感じのを
sprintf(buf,sizeof(buf),"%Y%m%d",localtime(time(&tp));
↑こんな感じで一行で書きたいんだけど。
もちろん、この書き方が駄目なのは分かるんだけど。
関数の戻り値のアドレスを渡したいんだよねー
430:デフォルトの名無しさん
08/11/06 23:13:07
はじめてのC
431:デフォルトの名無しさん
08/11/06 23:14:31
>>429 上のもダメですが
432:デフォルトの名無しさん
08/11/06 23:16:55
>>429
なんでこだわるの?
433:デフォルトの名無しさん
08/11/06 23:18:29
つーか、それstrftime()の間違いだろ。
434:デフォルトの名無しさん
08/11/06 23:51:25
>>427
C言語に興味があるのならC言語にすればよい。
入門書は、本屋に置いてあるのでいいと思うよ。
例えば、ポニョのとかLepton先生のとかカニハンのおっちゃんのとか。
ああ、でも『はじめての~』は買わない方がいいと思う。
厨房のとき読んでコードギアスの2ndOPになった。
あまり評価高くないけど、河西本とかもオヌヌメ。もう記述が古いけど厨房でも理解できた。
ウェブサイトは、使わない方がいいよ。コピー&ペーストで終わらせようとする衝動に負けるだろうから。
手で打って覚えるんだよ。目でコードの美しさに感動するんだよ。体でプログラミングの楽しさを感じるんだよ。
本気でC言語を使って思い通りにプログラミングできるようになりたければ、
他人の評価は気にせずに自分の直観を信じて本を読んでいった方がいいよ。
そのレビューをした人と自分の言語理解度が必ずしも同じであるわけではないのだから。
1冊読んでいい気になるなよ、そこの自称中級者。
うわっキモ。米大統領選:オバマ氏、共和党地盤・インディアナ州奪取 まで読んだ。
435:デフォルトの名無しさん
08/11/07 00:15:14
猫Cのこのページ
URLリンク(www.kumei.ne.jp)
のPGMをコーディングして実行したんだけど
結果が
「time1=1225984391 time2=0」となってしまう。
printf ("time2=%ld\n",t2)
と単独で出力すればちゃんと「time2=1225984392」になる。
何が間違ってるんでしょうか
436:デフォルトの名無しさん
08/11/07 00:16:03
実行環境はMicrosoft Visual C++ 2008 Express Editionの
Win32 コンソールアプリケーションです
437:デフォルトの名無しさん
08/11/07 01:35:33
TCP/IPのソケットを使って互いに通信するプログラムを作りたいのですが、正直さっぱりわかりません
どこか詳しい説明とサンプルプログラムがあるサイトはないでしょうか?
438:デフォルトの名無しさん
08/11/07 01:38:07
ほれ
URLリンク(x68000.q-e-d.net)
439:デフォルトの名無しさん
08/11/07 02:21:40
>>435
%ld に対応するのは long 型であって、time_t 型ではありません。
long 型と time_t 型のサイズが等しい環境では上手くいくかもしれませんが、
あらゆる環境で常にそれが成立するわけではありません。
440:デフォルトの名無しさん
08/11/07 02:57:52
ネコなんかで勉強しようなんてするから嵌まるんだ。
long(t1)とでもすれば"%ld"で出力されるだろ。
441:デフォルトの名無しさん
08/11/07 09:14:22
>>440
やってみたけどダメです。。。
じっさい、t1のほうは「%ld」でちゃんと出力されてるんですが。
ブレイクポイント設定して見てみるとちゃんと変数の中身は変わってます。
なのに「"\ntime1=%ld time2=%ld\n"」で標準出力するとtime2=0 になっちゃう
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5394日前に更新/118 KB
担当:undef