facebook twitter hatena line google mixi email
★お気に入り追加


■ このスレッドは過去ログ倉庫に格納されています

  • 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ではコピペ荒らしは禁止されています

ここまで見た
  • 446
  •  
  • 2014/03/13(木) 12:50:27.78
失礼します
フォーム上にPDFを表示させたいと思い、COMのaxAcroPDFコントロールを使ってみたのですが
配置して実行してみると、以下のようなエラーが出てきます

COMException はハンドルされませんでした
クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))

すこしぐぐってみたところ、製品がインストールされてなかったりしてdllが足りないと出るエラー?のようですが
インストールも、AcroPDF.dllの存在も確認しています
どなたか解決法をご存知の方がいればお願いします

ここまで見た
  • 447
  •  
  • 2014/03/13(木) 13:14:35.11
>>446
スレ違いです。ここは主にC言語の環境に依存しない辺りを初心者が突っ込みあいをするスレです。

ここまで見た
  • 448
  •  
  • 2014/03/13(木) 13:21:10.86
>>447
一応C#上だったんですがスレ違いですか
よくわからないので立てるまでもないスレに行ってきます

ここまで見た
  • 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だっけ?

ここまで見た
  • 478
  •  
  • 2014/03/15(土) 16:23:16.11
>>472
ごめん>>472の利点が解んない。

ヘッダなしで
second(){}
first(){ second() ;}
main(){ first() ; }

でいいじゃん。

ここまで見た
  • 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
きゃあ!えっち!

お絵かきランド
フリック回転寿司
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード