C言語なら俺に聞け(入門編)Part 125 [sc](★0)
-
- 1
- 2014/02/16(日) 01:49:14.42
-
C言語の入門者向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 124
http://toro.2ch.net/test/read.cgi/tech/1389096769/
★過去スレ
ttp://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
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 166代目
http://toro.2ch.net/test/read.cgi/tech/1381909900/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています
-
- 449
- 2014/03/13(木) 13:32:47.52
-
C# は C言語じゃないから
字面がにてるけど、全く別の言語体系
-
- 450
- 2014/03/13(木) 16:44:34.38
-
JAVAパクっただけだし
それだったら、すべてのOSで使えるようにすればいいのに
だったら、JAVAでいいじゃん
-
- 451
- 2014/03/13(木) 16:47:31.62
-
この間、逆ポーランド記法に変換するプログラムを書いた者です。
このプログラムが、コメントのところから止まってしまうのは何故でしょうか。
https://ideone.com/3oSVvJ
-
- 452
- 2014/03/13(木) 17:33:25.21
-
>>451
流し読みで 47行目 if (*in == '(' && *in == ')') {
中断条件まちがってない? && ではなく || の気配
-
- 453
- 2014/03/13(木) 17:47:54.58
-
なんで疑問形なんだよ
-
- 454
- 2014/03/13(木) 17:48:07.00
-
>>452
printfデバッグしていると、どうやらループにすら入っていないようなのです。
ちなみにコンパイラはgcc、バージョンは4.6.3、OSはUbuntu12.04LTSです
-
- 455
- 2014/03/13(木) 17:48:59.46
-
>>452
曖昧な答えなんかいらねんだよ
お前が実験して成功してからもの言えクズ
-
- 456
- 2014/03/13(木) 17:49:29.16
-
あと、スタックの実装で
*top++ や *top-- はポインタを動かしてる
(*top)++ (*top)-- で指し先を増減しないといかんよ
>>452 の修正+↑の修正で infix_to_postfix() から戻ってくる
が、stack_empty() で無限ループしてる 内容追うのつかれたので あとはまかせた
-
- 457
- 2014/03/13(木) 17:52:44.75
-
>>455
んなもん知るかー
絶対に成立しない条件の記述を見ると、間違いだと思うべ?
(マルチスレッド環境で volatile な変数だと怪しいけど、そういう話ではないからな)
-
- 458
- 2014/03/13(木) 17:57:13.14
-
もとになったプログラムはこちらです
前も貼ったのですが、すみません
https://ideone.com/hPvnFT
push_p(),push_s(),pop_p(),pop_s()をpush(),pop()にまとめただけなのですが、動かなくなってしまいました
ポインタのインクリメント、カッコでくくってもダメでした…
-
- 459
- 2014/03/13(木) 18:23:12.89
-
https://ideone.com/QBPqKE
スタックの実装ミス ( >>456 ) と
push_p push_s pop_p pop_s → push, pop の置き換えが間違ってる
-
- 460
- 2014/03/13(木) 18:38:15.55
-
皆さんありがとうございました。
push()、pop()内のポインタのインクリメント、デクリメントと、stack_empty()の引数にtop_pを渡し、その関数内のpush()を変更することで実行することができました。
ありがとうございました。
-
- 461
- 2014/03/13(木) 21:05:50.39
-
プログラミング?をやってみたいんだけど初心者にオススメの無料ソフト教えて
-
- 462
- 2014/03/13(木) 21:49:07.81
-
>>461
Visual Studio 2008 Express
-
- 463
- 2014/03/13(木) 21:50:54.76
-
なんで古いバージョンだよ
-
- 464
- 2014/03/13(木) 21:58:25.23
-
普通にくらん
-
- 465
- 2014/03/13(木) 22:42:46.43
-
確かにこれからはclangかもしれませんね
最新のFreeBSのCコンパイラはclangらしいですね
-
- 466
- 2014/03/14(金) 00:05:55.19
-
BSDはGNUがきらいだからだよ
-
- 467
- 2014/03/14(金) 00:53:55.02
-
嫌いというか、さすがにGNUは無いだろ。
あの思想は解らなくもないが、最近の活動はキチガイとしか思えん。
-
- 468
- 2014/03/14(金) 04:33:36.56
-
>>467
最近の基地外ぶりはいかほどか?なにかやらかしたの?
-
- 469
- 2014/03/14(金) 11:30:34.42
-
ここ最近は静かなもんだよ
-
- 470
- 2014/03/14(金) 22:24:52.73
-
GCCをモジュール化しようって提案を却下したぐらいか?
プロプライエタリソフトウェアに利用されやすくなるからっつって。
-
- 471
- 2014/03/15(土) 13:29:01.85
-
main()から呼ばれる関数first()、first()のみから呼ばれる関数second()
このようなfirst()second()2つの関数から成るソースからオブジェクトファイルを作成する際、
ヘッダファイルとオブジェクトファイル元のソースの構成は、次の内どれが推奨されますか?
(1)ヘッダにfirst()のみを記述し、ソースはsecond()first()の順に記述する
(2)ヘッダにfirst()second()を記述し、ソースはfirst()second()の順に記述する
(3)その他
-
- 472
- 2014/03/15(土) 13:32:40.24
-
ヘッダにfirst()のみ記述、ソースにsecond()のプロトタイプ, first(), second()の順
-
- 473
- 2014/03/15(土) 13:40:05.92
-
もしsecondが今後別ファイルから呼び出す可能性があるような独立した機能なら
firstとsecondを別のCファイルにしてそれぞれヘッダ作って
main⇒firstのヘッダ、first⇒secondのヘッダ をインクルード
そこまでしないなら472と同じ
-
- 474
- 2014/03/15(土) 13:47:58.45
-
早い解答ありがとうございます
>>472の形で構成することにします
ありがとうございました
-
- 475
- 2014/03/15(土) 13:52:50.30
-
不必要な公開は避けるということだな。
下手に公開すると使っていいのかと勝手に使われてしまったりとか。
こういう公開、非公開の面倒な運用を言語仕様に取り込んで、
public、privateの指定だけでコントロール出来るようにしたのがC++。
-
- 476
- 2014/03/15(土) 14:49:09.18
-
publicな宣言とprivateな宣言と同じファイルに混ぜて書かなきゃいけないのが嫌。
-
- 477
- 2014/03/15(土) 15:01:47.55
-
p_implだっけ?
-
- 479
- 2014/03/15(土) 16:40:22.85
-
>>475
protect さんの居場所はどこに?
-
- 480
- 2014/03/15(土) 16:44:21.87
-
>>479
ドコニモアリマセン
-
- 481
- 2014/03/15(土) 16:46:24.23
-
>>477
ニキビの写真ばかり出てくるのだが‥‥
それはそうとして、いにしえの stdio.h/FILE * と同じ技法なのにどうして別名をつけたがるのだろう、この業界は?
-
- 482
- 2014/03/15(土) 17:08:34.72
-
あちこちでリネームばかりやってるよね
-
- 483
- 2014/03/15(土) 17:38:02.55
-
>>478
main()は別なんでしょ。
-
- 484
- 2014/03/15(土) 17:59:50.75
-
ヘッダにfirst()やsecond()のソース書くの?
-
- 485
- 2014/03/16(日) 09:04:53.31
-
/* first.h */
#ifndef FIRST_H_
#define FIRST_H_
void first(void);
#endif /* FIRST_H_ */
/* first.c */
#include "first.h"
static void second(void);
void first(void)
{
}
static void second(void)
{
}
/* main.c */
#include "first.h"
int main(void)
{
first();
return 0;
}
-
- 486
- 2014/03/16(日) 09:38:04.30
-
firstがmainからしか呼び出されないと分かっているのなら
firstを公開する必要はないと思うしそもそもヘッダすら必要なく一つのファイルに全てを書けばいい
-
- 487
- 2014/03/16(日) 09:48:52.06
-
secondはfirstからしか呼ばれないわけだから
secondをmainに公開する必要はないと思うしfirstをモジュール化することには意味があると思う
-
- 488
- 2014/03/16(日) 09:59:09.99
-
first、 second の実装がでかくなるので ファイルを分けたい
second は first の下請けでしかなく、公開したいのは first
元受け関数は公開 下請けは非公開 こういう需要はあるでそ
-
- 489
- 2014/03/16(日) 10:15:47.43
-
本当にmainとfirst、secondだけで、規模もそんなに大きくなければ、
ファイルを分けるのもめんどくさいので、1つのファイルに書いてしまうけど、
ある程度の規模で特に複数人数での開発とかだと、
公開と非公開に分けるのはかなり重要。
-
- 490
- 2014/03/16(日) 11:16:23.98
-
そもそもfirst()のファイルはmainとは別という質問者の条件なので、
関数の規模にかかわらず、全部mainに書くという答えはおかしい。
-
- 491
- 2014/03/16(日) 12:20:24.10
-
first、secondという関数名から察するに両関数は同じ階層レベルの関数と思われるから
firstを公開するのであればsecondも公開するべきだし
secondがfirstからしか呼ばれないのであればsecondという関数名は不適切で
subFisrtなどに変更するべきだ
-
- 492
- 2014/03/16(日) 12:23:46.91
-
確かに名言はされていないから想像でしかないが
説明するための名前だろう
本質的な部分じゃない
-
- 493
- 2014/03/16(日) 13:08:25.67
-
プログラミングなんかできてもIT奴隷にしかなれないよ
-
- 494
- 2014/03/16(日) 15:12:40.49
-
>>493
じゃあ、できなかったら何奴隷になるんだ?
-
- 495
- 2014/03/16(日) 16:39:41.94
-
性奴隷だろ言わせんな恥ずかしい
-
- 496
- 2014/03/16(日) 18:19:18.53
-
char sexy[] = "char! each!";
-
- 497
- 2014/03/16(日) 18:43:20.79
-
きゃあ!えっち!
-
- 498
- 2014/03/16(日) 18:44:28.09
-
だがかっこいいじゃん
派遣のなかだとプログラマーは上級職なんだし憧れの的だろ
俺みたいに工場の軽作業で組み立てしてる派遣よりかっこいい
ITというのが何よりかっこいい
このページを共有する
おすすめワード