1 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:37] いろんなスレが乱立していますが、統合的なスレッドがないので立てました。 質問もOK 関連スレ C#って死滅する理由がないよね! Part4 pc2.2ch.net/test/read.cgi/tech/1042464104/ C#最強伝説 pc2.2ch.net/test/read.cgi/tech/1061208152/ C#とJava、どっちをおぼえればいいの? pc2.2ch.net/test/read.cgi/tech/1006715468/ C#Builder Professional 質問箱 pc2.2ch.net/test/read.cgi/tech/1062433418/ 関連リンク dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_Sharp/
752 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:29:59 ] 大学の講義などでC言語を教える立場に立つ為にはどれほどの勉強が必要なのでしょうか ちなみに私は今までさまざまなプログラムを作成してきていてそれなりにCを使えるようになったと思うのですが その先はどうやって勉強すればいいのか? というのは将来、教授になりたいのですが 近い将来に助手になったときにプログラミングを学生に教える立場になるわけです Webサイトで先生方の講義資料などを拝見してみますと、自分の知識力の低さを痛感するばかりです とはいっても詳細な入門書レベルの内容なら全て空で説明するくらいはできるのですが 問題はその先なのです
753 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 12:55:24 ] >>752 入門書なんていう役に立たないものを基準にしている辺りでダメ過ぎ。
754 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:30:11 ] >>753 プログラミングの講義はプログラミング言語の使い方を教える講義です 役に立つか立たないかという有用性は、工学的には非常に重要な要素ですが それはプログラムを作る者それぞれの価値基準に基づくものであり 教える人間が考える有用性を基準に講義すべきでは無いと思います
755 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:41:22 ] >>752 講義資料を見て自分はまだ知らないと気づいた事って何?
756 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 14:14:29 ] 最初から本買わせればいいじゃん あなたは本に書いてあること繰り返し説明する手間も省けるし 学生も本読めば済む気だるい講義を飛ばしてさっさと応用を学べる、万々歳
757 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 16:26:13 ] 講師なら言語の歴史や規格についても詳しくないとやだな。 環境依存のコードをさも標準かのように教えられたらたまったもんじゃない。 Cだけじゃなくアセンブラとかにもある程度精通してて欲しい。 少なくとも、例えばswitchとif-elseの羅列が最適化で大抵マシン語レベルで同じになるとか位は。 あとは、同じことを100回聞かれても折れない心と、mainが1000行あっても 解読できる根性があればいいんじゃね?
758 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:25:40 ] ちゃんと教えないと自分が凄く読みずらいコードを数十人分解読する羽目になるわけか 考えただけでおそろしくなた
759 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:44:38 ] ×読みずらい △読みづらい ○読み難い
760 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:55:09 ] × △読みづらい ○ ○読みづらい
761 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 06:20:06 ] やんでるか?お前ら 神経質なのはプログラミングだけで良いんだぞ
762 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:35:10 ] ×やんでるか? ○やんでるのか?
763 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:38:28 ] やってるか?
764 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:42:29 ] あめならやんでるよ。
765 名前:デフォルトの名無しさん [2007/07/12(木) 13:22:48 ] C言語をはじめようと、近所の図書館で「C言語を256倍使うための本」 なる本を借りてきたのですが、最初の数ページ目にCをやる前に、 パスカルとアセンブラをやれ、とあったのですが俺はどうすれば?
766 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 14:04:33 ] そんなクソ本やらずにサイトでも見てやれ Programing PlaceとかWisdomsoftとか
767 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:41:57 ] Wisdomの人って若いよなー。 1981年って事は、今25〜26歳か。 自分の努力不足が身に沁みる。
768 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:52:00 ] 256倍使うための本シリーズは全部糞本だから^^; くだらねー本量産してんじゃねーと思う^^;
769 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:51:25 ] >>765 その本はあれだ、当時のマニア本だから。今勉強するために読む本じゃない。
770 名前:765 [2007/07/23(月) 22:10:38 ] レスをくれた人たちへ。 とりあえずアセンブリをやろうとMIPSの教本を同じ図書館で入手。 最初の数ページ目にC言語を先に理解しておく必要があるとあり、 無限回廊に突入。
771 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:18:50 ] >>770 >769
772 名前:デフォルトの名無しさん [2007/07/25(水) 18:15:09 ] 型の一時的な変換に関しての質問です。 もともと整数型,char型のデータをある関数内では実数型として扱わなければならないので 下のコメントのように別の配列を用意しました。 代入する際にキャスト変換(double)を使って型を合わせようとしたのですが 'double **' 型は 'int **' 型に変換できない(関数 main(int,char * *) ) 2 番目のパラメータは int ** 型として定義されているので double ** 型は渡せない(関数 main(int,char * *) ) というように実数型に変換したつもりなのに整数型のままだったりするようです。 どうすれば正しく型変換できるでしょうか #include<stdio.h> int main(int argc, char **argv) { unsigned char *data={1,0,1,1}; int **P={{1,0}, {0,1}}; //この2つが本来のデータ型 double a; int i,j; double *data2, **P2; //コピー。ある関数function内でdouble型で扱う必要がある for (i=0;i<2;i++) { for (j=0;j<2;j++) { P2[i][j] = (double) P[i][j]; //型を合わせるために(double)でキャスト変換 } } for (i=0;i<4;i++) data2[i] = (double) data[i]; function(a,P2,data2); } void function (double x, double **y, double *z) //ある型変数の型定義
773 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:17:39 ] まてまて、配列でも構造体でもないものを{ }で初期化できないだろ。
774 名前:デフォルトの名無しさん [2007/07/26(木) 07:27:42 ] ポインタだけ宣言して領域の確保がされてないし いきなり2次元配列でコピーしてるし 2次元配列のポインタだけ渡しても大丈夫な関数なのか
775 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:07:59 ] 上から下まで勘違いでできているな
776 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 05:01:05 ] でも文字列だけ定数置けるのって理論的におかしいよな。
777 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 07:36:20 ] 別に
778 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 07:36:39 ] >>776 const int という意味ではないんだよね
779 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 10:22:05 ] tonosiki.mbnsk.net/uploader/src/up1495.jpg この問題の(3)と(4)が分かりません。 どうか教えて頂けないでしょうか・・・? よろしくお願い致します。
780 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 10:35:21 ] Object not found!
781 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 10:54:58 ] >>779 pc11.2ch.net/test/read.cgi/tech/1180856695/469
782 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 20:15:17 ] 蔵書整理してたら秘伝C言語問答ポインタ編が amazonのユーズド価格がクソ高くなってるの発見したんだがなんなの?
783 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 18:28:16 ] とりあえず出してるだけだろ 自由に設定できるんだし
784 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:07:47 ] あ、値段設定って自由なんだ。 絶版本て高く売れるのかな。
785 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 03:18:00 ] 本にもよると思う なんか絶版になった参考書は高く売れたりするとか 前アマゾンで本を売りまくってる人の番組中にやってたよ
786 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 02:31:50 ] 質問させてください。 以下のエラーメッセージが表示されてリンクに失敗しています。 考えられる原因があったら教えてください。 undefined reference to `__stdoutp'
787 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 03:02:32 ] 回答させてもらいます。 以上の情報では詳細の回答ができません。 より詳細な回答が必要なら情報をください。 __stdoutpが見つからない。
788 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 18:03:01 ] 何をどうしたら出たのか
789 名前:デフォルトの名無しさん [2007/09/09(日) 12:45:04 ] 質問です。 外部から提供されているヘッダーファイルにエクスポート用の関数が記述されており、 ヘッダーに手を加えずにこの関数に処理を追加したいと考えています。 そこで、#define で関数名の変更を試みたのですが、 error C2084: 関数は既に本体を持っています。 となってしまいました。 ヘッダーは今後も修正が入りそうなので、手を加えるのは回避したいのですが、 何か良い方法はあるでしょうか。 --test.h--(外部提供のヘッダーの例) extern "C" void __stdcall test(int a, int b) { printf("%d + %d = %d\n", a, b, a+b); } --test_ex.h--(関数名を置き換えて、代わりにエクスポートさせたい関巣をを記述) #define _test(a,b) test(a,b) #include "test.h" #undef _test extern "C" void __stdcall test(int a, int b) { printf("合計出力\n"); _test(a, b); }
790 名前:デフォルトの名無しさん [2007/09/09(日) 13:20:43 ] >>789 #define test(a,b) _test(a,b) #include "test.h" #undef test じゃないか?
791 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:04:35 ] >>790 あ、あれ。オオボケしてました。 意図した通りになりました。ありがとうございます。
792 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 23:30:44 ] VC++ Express 2005 の C/CLI で質問良いですか? 関数に System::String ^XX を引数渡しして関数内でXXに値をセット させようとしてるんですけど、これってひょっとして無理ですか? String のメンバ関数って新規にインスタンスを作る関数はあるんですけど、 既存コントラスタの内容を「変更する」メンバ関数が無いんですけど・・・。 WCHAR やら char を素直に引数に使った方が良いんでしょうか・・・ VC Express 2005 + WindowsSDK で Get/WriteProvateProfileString のラッパークラスをマネージドで作ってるんですけど、 これってひょっとしてかなり無謀ですか?API呼び出しはさすがにアンマネージドですが・・・ そもそも、VCのマネージドコードってひょっとして誰も使ってない? .Net勉強するなら素直にC#でしょうか? VCで.Netの勉強がてらマネージドでガリガリ書いてるんですけど、 まさか全然イミネェータイムしてます?
793 名前:デフォルトの名無しさん [2007/10/22(月) 00:52:02 ] System::Stringは書換不能な文字列。 どうするかというと、例えばSystem::String^% XXにするという手がある。 msdn2.microsoft.com/ja-jp/library/h9t2463y (VS.80).aspx ネイティブで言えば、これでは呼出元に反映されないから、 void f(char const* p) { p = "hoge"; } こうするというのと同じこと。 void f(char const*& p) { p = "hoge"; } .NETの勉強についてだが、<C++を十分に理解しているのなら>、 C++/CLIでも構わないと俺は思う。逆にC++をよくわかっていないのなら、 素直に.NETに関してはC#で勉強すべき。
794 名前:デフォルトの名無しさん mailto:age [2007/10/22(月) 00:59:14 ] ステレオで広がる初音ミク音源検索 youtv.atspace.com/?rSTV=STEREO+%E5%88%9D%E9%9F%B3%E3%83%9F%E3%82%AF
795 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 09:31:07 ] >>793 動きました、ありがとうございます! 基本的な事なんでしょうが、個人レベルで言語理解は難しいですね・・・。 クラス自体を static ref に出来なかったりと色々苦労してます(汗 C++は「わかってるつもり」ですが、<static_cast>やら<reinterpret_cast>やらで また勉強し直す必要がありそうです。 C#はwiki見た感じだと文法が凄く変わってるので一度じっくり 勉強しないと駄目ですね・・・ まさかC#がここまで市場を謁見するとは思いませんよ、普通(汗 APIが恐ろしいほど使いにくいC#に需要があるとは・・・
796 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 11:14:49 ] >まさかC#がここまで市場を謁見するとは思いませんよ、普通(汗 席捲だろ。とてもそうは見えないが。
797 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:46:00 ] 質問なのですが、表示される文字の大きさを変えるにはどうすればいいのでしょうか?
798 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:55:43 ] モニターを買い換える。
799 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 00:06:56 ] >>797 それは「文字のサイズを変える」プログラムはどうすればいいか?ってことだよな?
800 名前:デフォルトの名無しさん [2007/10/26(金) 14:12:47 ] アセンブラって何?
801 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 14:19:17 ] アセンブリ言語のプログラムを機械語のプログラムに変換するプログラム
802 名前:デフォルトの名無しさん [2007/10/31(水) 11:38:23 ] C++を学習するのに適切な書籍、WEBを紹介してください。 機械語、Cなどの言語は習得済です。
803 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:23:45 ] 質問です。 バイナリファイルを開いて、ファイルの先頭から順番に0、1を判別していきたいのですがどうすればいいでしょうか? rbでファイルを開いてから後がどうしていいのかさっぱりわかりません。
804 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:41:13 ] getc(fp) でファイルの先頭から順番に 1 バイトずつ読み込める
805 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:54:45 ] mmapとSystem Vの共有メモリって、 どちらにどういう長所短所があるんでしょうか。
806 名前:デフォルトの名無しさん [2007/12/08(土) 04:59:38 ] bcc5.5って実行が長いプログラムだと途中で止まるとか仕様ある?
807 名前:デフォルトの名無しさん [2007/12/08(土) 05:28:15 ] ないだろ
808 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 06:11:57 ] だよな。同じプログラムを100回動かそうと思ってやってんだけど90回はできて100回はできない・・・
809 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:23:24 ] pink.gazo-ch.net/bbs/27/img/200512/550933.jpg
810 名前:デフォルトの名無しさん [2007/12/09(日) 00:33:09 ] >>808 そりゃどっかにバグがあんだよ。 勘だけど、メモリがらみと見た。
811 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:14:10 ] int型のiを文字列に直す方法はありますか? コンパイラはgcc, 言語はC言語です。 あとstrcatが3つ以上の引数をとれないようなのは仕様ですか?
812 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:24:10 ] > int型のiを文字列に直す方法はありますか? sprintf,snprintf > あとstrcatが3つ以上の引数をとれないようなのは仕様ですか? 三つ目に何渡す気だ
813 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:35:00 ] いや "a" + i + "b" のようなことがしたいので、 strcat("a", i, "b"); と出来たらなと。
814 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 00:08:17 ] C++をやりましょう。 簡単にできますから。
815 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 12:01:51 ] >>814 サーセン本線はRubyでして。
816 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:24:37 ] sprintf()でなにが不足なんだ? sprintf(buf, "%s%d%s", "a", 3, b);
817 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 13:06:42 ] 教えてください。union ビットフィールド型を引数としてわたしたいのですが、 それは可能なのでしょうか?
818 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:25:45 ] >>817 なんでできないと思ったの?
819 名前:817 mailto:sage [2008/01/15(火) 20:56:24 ] >>818 union { /* WCER */ unsigned char BYTE; /* Byte Access */ struct { /* Bit Access */ unsigned char B7:1; /* Bit 7 */ unsigned char B6:1; /* Bit 6 */ unsigned char B5:1; /* Bit 5 */ unsigned char B4:1; /* Bit 4 */ unsigned char B3:1; /* Bit 3 */ unsigned char B2:1; /* Bit 2 */ unsigned char B1:1; /* Bit 1 */ unsigned char B0:1; /* Bit 0 */ } BIT; /* */ } WCER; /* */ このような定義がある場合に関数funk()の引数にWCER.BIT.B1を渡し、 関数内でB1の値を変更したいのですが、コンパイラが直接ビット操作のマシン語に置き換えるために、 引数や変数にはビット情報を保持できないと思っています。 その操作が必要なアドレスやビット位置を引数として渡して操作することは可能と思うのですが 処理速度を求めるためにビット直接操作したいのです。
820 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:58:41 ] WCERごと渡せばいいんでないの?
821 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:08:10 ] 速度が欲しくて1ビット単位の書き換えとか頭おかしいんじゃね?
822 名前:817 mailto:sage [2008/01/15(火) 23:53:14 ] >>820 ありがとうございます。 WCERではなく、結合先によってビット位置が異なっています。 >>821 マイクロ秒単位で処理をつめていますので毎回ビット位置計算をすると相当な重さになってしまいます。
823 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:00:24 ] ビットフィールド使うのをやめるといいと思うんだ
824 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:15:46 ] >このような定義がある場合に関数funk()の引数にWCER.BIT.B1を渡し、 >関数内でB1の値を変更したいのですが、コンパイラが直接ビット操作のマシン語に置き換えるために、 >引数や変数にはビット情報を保持できないと思っています。 いいえ。ビットフィールドは渡せませんが、ビット情報は渡せます。 >処理速度を求めるためにビット直接操作したいのです。 いいえ。ビットフィールドを直接扱うことが最速とは限りません。 >WCERではなく、結合先によってビット位置が異なっています。 「結合先」ってなんですか? 自分語りをされても困りますが。 >マイクロ秒単位で処理をつめていますので毎回ビット位置計算をすると相当な重さになってしまいます。 いいえ。そんなのんびりした処理をするのなら多少重くてもなんら影響しません。 そもそも、ビット位置の計算は決して重い処理じゃありません。 結論。 >823
825 名前:デフォルトの名無しさん [2008/01/21(月) 20:09:47 ] Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。 プロのプログラマでもあまりにレベルが低い人が多すぎます。 そんな人に限って、自分のレベルの低さを自覚していない、、、 本人は構わないかもしれませんが、その下についた新人プログラマは たまったものではありません。(私が経験しました。) 今になって分かりました。 彼らもまた、理解できていなかったのです。 プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。 私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。 私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、 今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。 と、嬉しいコメントをたくさんもらいました。 そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。 興味がある方はどうか、下のサイトをみてみてください。 mori.eco.to/
826 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 10:31:13 ] よし、NG追加
827 名前:デフォルトの名無しさん [2008/01/30(水) 20:22:40 ] すいません、c言語初心者なのですが以下のプログラムがうまくいかないのですがなんででしょうか? 修正点教えてもらえませんか? #include<stdio.h> #include <string.h> #define STR_SIZE 256 int main(int argc, char *argv[]) { int cnt; int pri_cnt; int n; int k; int sort_cnt1; int sort_cnt2; char temp[1]; if(argc < 3) { printf("\nUsage : %s STRING1 STRING2 [STRING3 ...\n\n",argv[0]); return 1; } printf("\n** String data **"); for(cnt = 1 ; cnt < argc ; cnt++) { printf("\n%s",argv[cnt]); } printf("\n** Changed string **");
828 名前:デフォルトの名無しさん [2008/01/30(水) 20:23:32 ] for(cnt = 1; cnt < argc ; ++cnt) { k = strlen(argv[cnt]); for(n = 0; n < k ; ++n) { argv[cnt][n] = argv[cnt][n] - 0x20; } } for(sort_cnt1 = 1 ; sort_cnt1 < argc ; sort_cnt1++) { for(sort_cnt2 = sort_cnt1+1 ; sort_cnt2 < argc ; sort_cnt2++) { if(argv[sort_cnt1] > argv[sort_cnt2]) { temp = argv[sort_cnt2]; argv[sort_cnt2] = argv[sort_cnt1]; argv[sort_cnt1] = temp; } } } for(pri_cnt = 0 ; pri_cnt < cnt ; pri_cnt++) { printf("\n%s",argv[pri_cnt]); } return 0; }
829 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:26:33 ] #include <iostream> #include <string.h> using namespace std; int main() { char str[256] = "<a href=\"localhost\ ">link</a>" "<a href=\"localhost\ ">link2</a>"; char *ptr; int i = 0; ptr = str; while(1) { ptr = strstr(ptr,"http://"); if(!ptr) break; ptr += 7; i++; } printf("http://の出現数は%dです。\n",i); return 0; } http://の出現回数を数えているのですが、 悪い点、改善点等のご指摘を下さい。
830 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:08:31 ] >>827 そのプログラムの目的と、どううまくいかないのかくらい書け。 >>829 お前もだ。 取り敢えず、C++ならstring.hではなくcstringをインクルードしとけ。 strの文字数は、その場合は自分で256に決めずにコンパイラに任せておけ。 流れを説明し易いように、iなんて変数名でカウントするのはやめておけ。 ptrを初期化しないで後から代入しているが、宣言時に初期化してしまえ。
831 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:51:15 ] 「g++43でコンパイルできないんだけど、どう修正したら いいの?」とかいう質問はここでいいんでしょうか?
832 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:16:36 ] いいよ もしソースが長いなら直接貼らずにどっかうpれ
833 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:19:07 ] >>831 他のコンパイラでコンパイルできると言うのなら、g++の問題だろうからgccスレがいいんじゃね? そうじゃなくて、たまたま使ったのがg++だと言うのなら、ここでもいいと思うけど。
834 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:39:27 ] >>833 「他のコンパイラ」のほうの問題かもしれないだろ C++だとそういうケースがよくある
835 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:01:39 ] upstreamの開発者の人にも一応pingは したのですが、 具体的には downloads.sourceforge.net/mecab/mecab-0.96.tar.gz をg++43でコンパイルしようとすると param.h:34: error: explicit template specialization cannot have a storage class というエラーが出てコンパイル出来ない、という問題です。 bugs.debian.org/cgi-bin/bugreport.cgi?bug=461727 (私自身はdebianのmecabのメンテナではありません)
836 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:03:21 ] 因みにg++41では問題ないです。
837 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:04:50 ] gcc.gnu.org/ml/gcc-patches/2007-06/msg01075.html g++の変更の論拠がここに書いてあるな。標準の7.1.1-1を見ると確かにエラーが正しいように見える 回避策は、 1. 単に32行目のstaticを削除する これでg++-4.3ではちゃんとstatic扱いになるはずだけど、g++-4.2だとそうならないので複数定義エラーになる 2. lexical_cast自体を非staticにする 別にこれをstaticにする理由はないと思うので、20行目と32行目のstaticを削る この場合、特殊化をヘッダに置いたままにしておくと複数定義になってまずいので、 ヘッダには宣言だけにして定義をparam.cppに移すか、あるいは単にinlineを付けるのでもいい 3. lexical_castを削除する grepしてみたら使われてないようなので
838 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:35:02 ] >>837 何だか32行目のstaticを外す方向がいい気がするけど (何で lexical_castがstatic扱いなのか今のところ良く分からない ので) そうすると確かにg++43ではコンパイルが通りますがg++41では 多重定義だといってはねられますね... lexical_cast自体はparam.hの後の方で使われているっぽいです。 1.か2,かの方向で検討してみます。有難うございました。
839 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:45:36 ] >>838 >lexical_cast自体はparam.hの後の方で使われているっぽいです。 見逃がしてた、ありがとう でも非staticテンプレートからstatic関数を参照するのはODR違反のような気がする lexical_castを非staticにするのが良いかと思う
840 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:51:25 ] char *p[10]; みたいなことをしたいのですが どうすればいいでしょうか?
841 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:35:55 ] >>840 それで正しい宣言になってる(pはchar *の配列)けど、何をしたいんだ?
842 名前:840 mailto:sage [2008/02/05(火) 11:02:37 ] >>841 ありがとうございます。 windowsプログラミングでエディットボックスの中身を 複数保存できるようにしたかったのでこのようなことが できるかわからなかったので質問させていただきました。
843 名前:デフォルトの名無しさん [2008/02/15(金) 17:21:49 ] メモリを確保し、 char *buf = (char *)calloc((int)dwSize+1,sizeof(char)); そこに、abcdefという文字列を入れます。 cの部分のみを読み取り、それがcであるか否かの判定をしたいのですが、 どうすれば出来ますでしょうか?
844 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:24:34 ] if(buf[2] == 'c') ... こういうこと?
845 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:28:45 ] for(int i=0; i<=100; i++) と for(int i=0; i<=100; ++i) の結果が違わないのは何故でしょうか
846 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:37:15 ] >>845 i++と++iは同じ副作用を持つから。 この二つの式は違う値をもつ(前者ならインクリメント前のもの、後者は後のもの)けど、 for文の三番目の式は、副作用だけ利用されて値は捨てられるから、この違いが現れない
847 名前:デフォルトの名無しさん [2008/02/15(金) 18:41:19 ] ありがとうございます。 >>843 です。 abcdefからbcを見つけ出しeまで抽出したいのですが、 どうすれば出来ますでしょうか?
848 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:49:22 ] >>847 char * pbc = strstr(buf, "bc"); if (pbc == NULL) ...; // not found. char * pe = strchr(pbc, 'e'); if (pe == NULL) ...; // not found. char newBuf[pe - pbc + 1 + 1]; sprintf(newBuf, "%.*s", pe - pbc + 1, pbc);
849 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:11:42 ] >>846 なるほど 後者は0に+1されてからiが代入されて 1からループが始まるのかと思ってました ありがとうございました
850 名前:デフォルトの名無しさん [2008/02/16(土) 00:29:08 ] 本当にありがとうございます。 解決しました。 buf[2]のみをダイアログ上のエディットコントロールに対し、 SendDlgItemMessageを使い書き込みたいのですが 出来ません。 どうすれば出来ますでしょうか?
851 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:11:10 ] >>850 「ありがとう」と言われても、あんたが何者なのか誰も知らんから誰にも伝わらんぞ。 で、3行目以降についてもいきなり書かれても何のことやら判らん。 状況説明もできないのなら、なにもできるわけないだろ。
852 名前:デフォルトの名無しさん [2008/02/16(土) 02:24:07 ] 状況説明 SendDlgItemMessageでエディットコントロールにbuf[2]を送ったが エディットコントロールに文字列が追加されない。
853 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:16:18 ] ・環境は? ・buf[2]ってなに? ・SendDlgItemMessageをどう使って送ったの? ・あんた馬鹿?
854 名前:デフォルトの名無しさん [2008/02/16(土) 03:59:08 ] >>853 WindowsXP bufについて>>843
855 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:30:26 ] 実際のコードを貼らない質問者なんてスルーでいいべさ。
856 名前:デフォルトの名無しさん [2008/02/16(土) 15:17:30 ] わかりました。 簡略化したコード char *buf = (char *)calloc((int)dwSize,sizeof(char)); ↓ ReadFile(hFile,buf,dwSize,&numOFRead,0);//ファイル内容abcde ↓ SendDlgItemMessage(hWndDlg,IDEDIT, EM_REPLACESEL,0,(LPARAM)((LPSTR)buf[2]));
857 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:27:01 ] >>856 buf[2]は'c'という文字であって"c"という文字列じゃないから、それは動かない まず"c"という文字列を用意して、それを渡す char content[2]; content[0] = buf[2]; content[1] = '\0'; SendDlgItemMessage(hWndDlg, IDEDIT, EM_REPLACESEL, 0, (LPARAM)content);
858 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:29:42 ] SendDlgItemMessageAを使った方が、って書こうと思ったけど、 comctl32.dllバージョン6だと、それはそれで面倒なことになる気がするから、書かないでおく。
859 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:26:08 ] 皆様へ ありがとうございます!!
860 名前:デフォルトの名無しさん [2008/02/16(土) 16:31:38 ] csvファイルを読み込んで任意の値で描画する方法を教えてください。 CSVは x,y,value\nで数百行。 二次元配列 M[50][50] ///max 二次元配列 M[X][Y] にcsvのxをX,yをYでセット 二次元配列 M[x][y] にvalueを代入 ※x,yはint valueはstr6バイト forループでM[X][Y]を0,0から49,49までvalueを表示させる。 ※空値の場合はカンマをセット イメージ aaaba,,,bbbb,,,,,,,,,asdass,,,,・・・ cccdse,,,,,,,,,,,,,,,,,,,,,,,,,,,bnvmde,,・・・ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,bredkgalkser,・・・ ,・・・ @ファイル読み込み Ax,y,valueセット B描画 ↑ Bの描画でvalueがAで最後にセットされた値しか出てきません。 どなたか教えてください。
861 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:36:29 ] >>860 丸投げしたいなら宿題スレへ、ヒントが欲しいなら質問箇所を絞って、エスパー希望なら鼬害。 >860=>859なら死ね。
862 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 22:35:00 ] >>861 死ねよ低モラル野郎
863 名前:デフォルトの名無しさん [2008/02/22(金) 22:31:23 ] C99のinlineがc++のinlineと違うのでむかついた
864 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:46:04 ] >>863 どこがどう違うの?
865 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:59:46 ] int array[3] = { 0, 1, 2 }; この配列の array[3]の中身がNULLというのは保証されていますか? 違いましたらforeachって、どういう中身になっているのか教えてください
866 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:15:10 ] array[3]は存在しません アドレスは取れますが、参照しようとしたり代入しようとすると未定義動作 foreachって何の言語よ?
867 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:18:25 ] 何の言語でも、array[3]へのアクセスができない言語なら 配列の要素数が3であるということを把握してループしているだろうということは容易に想像できる。
868 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:23:44 ] C#じゃねーの?
869 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:33:19 ] >>865 C#なら配列の長さを調べることができるから for (int i = 0; i < array.Length; i++) { 〜 } ってやればいいんじゃね
870 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:07:04 ] そもそもarray[3]はポインタじゃないのに何でNULLになるんだよ…
871 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:10:44 ] たぶんあちこちでNULL文字とかNULL終端といった言葉が使われてるせいかと
872 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:55:05 ] 糞入門書の弊害か… ASCIIの0の略語はNULLじゃなくてNULだな。 ja.wikipedia.org/wiki/ASCII#ASCII.E5.88.B6.E5.BE.A1.E6.96.87.E5.AD.97 混乱起こすから「ヌル文字」とか区別して書くべき。
873 名前:865 mailto:sage [2008/02/23(土) 16:21:31 ] >>867 3個である事を前提にループさせるんですね 発想が悪かったみたいです。。。 終端ばっかり調べようとしてました 配列のサイズ取得して割ったら出来ました ありがとうございます
874 名前:デフォルトの名無しさん [2008/03/06(木) 22:24:02 ] サイトからダウンロードしたMicrosoft Windows SDKのIMGファイルが1.32GBもあって大きすぎてCDに入らないんですけどどうやってインストールするんですか??
875 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:26:53 ] 300行で1つの関数と、それと同等の処理を30行の関数が100個で構成するのとでは何が違うのでしょうか? スタックがどうのこうのとブツブツ上司が呟いたのだが、なにが問題なのでしょうか
876 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:48:44 ] >>874 Daemon ToolsでマウントするとかDVDに焼くとか。
877 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:52:01 ] >>874 CDじゃなくてDVD用でしょそれ
878 名前:300 * 1 < 30 * 100 mailto:sage [2008/03/07(金) 01:04:42 ] >>875 プログラムの規模が違う。
879 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:49:11 ] その関数が呼び出されてスタックに詰まれる量が違う 300行分のコードが詰まれるのと 30行分のコードが詰まれるかの違い けど、其れだけでブツブツ言うとも考えにくいので 他の問題があったのではと予想 明日聞くんだな
880 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:48:30 ] >300行分のコードが詰まれるのと >30行分のコードが詰まれるかの違い はぁ? コードが詰まれる? どこの実装ですか? おたくさまの脳内?
881 名前:デフォルトの名無しさん [2008/03/08(土) 20:35:29 ] int *ptr; int array[10]; for(ptr=array; ptr<array+10; ptr++) { *ptr = 0; } array+10は何を表しているのですか?
882 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:39:22 ] arrayの終端。
883 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:23:37 ] >>880 そんな質問の仕方じゃ答えてあげないよ とりあえず関数作って自動変数のメモリを表示させて確認する作業に戻るんだ
884 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:39:23 ] そりゃ自動変数は積まれるだろうよ コードが積まれるってのは訳分からん
885 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:11:31 ] なんだ、>879の阿呆は未だ自分の間違いに気付いていなかったのか。 とっくに尻尾を丸めて引き篭もっているのかと思った。
886 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:15:35 ] コードを詰む=スタックに実行アドレス(IP)を詰む という意味なら通じるが、普通コードを詰むとは表現しないな
887 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:28:02 ] >>886 詰むなよ。ゲームオーバーじゃねぇか。
888 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:58:55 ] んあ? よくわからない コードをじゃなくて 「実行アドレスを積む」なら俺リアルで恥かかない・・・? コードって全体をさしてるものと思ってたんだけど。 処理のみの部分をいうのかな
889 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:26:33 ] 実際に実行命令をスタックに積んでるわけじゃないから
890 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:05:39 ] ほんとはよく知らないんですよ 誰も質問答えないのに見かねてしまった ごめんね、適当答えて。 まとめると 関数に入ったら 変数はスタックに詰まれる 処理はスタックに詰まれない てことですね ( 信じるかどうかは貴方次第! 掘り返し875の違いを、ソースを見ずに言える事は、 やはり上司に聞けとしか、言えないですね
891 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:08:55 ] >>890 >878は読めないんですか? 特に名前の辺りは。
892 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:13:17 ] 例えばgooなどでああいう回答してもポイント貰えませんよ 自分はそんな目的ではありませんけども
893 名前:デフォルトの名無しさん [2008/03/12(水) 08:20:49 ]
894 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:22:47 ] でもコード量が十倍も違うなら、それが一番重要な差異だろ
895 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 08:59:59 ] >>893 可能です。 以上。 ↓次どうぞ
896 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:20:29 ] VC++.NET の質問良いでしょうか? 1.UAC ダイアログを「インストール」ボタン押下時にのみ出したい 1つの EXE でWindowsサービスのインストール、アンインストール、 Windowsサービスの実行の機能を入れたんですが、 VISTA のユーザーアカウント制御機能(UAC)のせいで、 「管理者で実行」でプログラムを立ち上げないと上手く動きません。 フォームの「インストール」ボタンをクリックした時だけ ユーザーアカウント制御のダイアログを出すように出来ませんか? 常時Admin権限で動作ってのも都合悪いのですが・・・ ユーザーに Admin 権限を持つのユーザー名、パスワードを入れて下さい、 なんて画面を作った所で「???」だろうし ( VISTA インストール時に Admin パスワード入力しませんものねぇ。) 2.Windows サービスの設定ファイル、XXX.ini ってどこに置けばいいんですか? VISTA だと users 以下に入っちゃう空気ですが、exe と 同じ位置だとNG? PC汚染を覚悟の上で windows 以下に入れるのが良い?? 教えて君ですがよろしくお願いします。 UAC の情報ねーんですよぉぉぉ!!(絶叫
897 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:40:07 ] >>896 1 任意のタイミングで昇格は不可能ではないが、面倒そうなんで、 管理者権限が必要な部分だけ別プロセスにすることを勧める。 2 複数ユーザが同時ログオンしたら破綻するという点で、 Windowsフォルダもアウト、常考。
898 名前:デフォルトの名無しさん [2008/06/15(日) 12:50:03 ] スタックに関してよくみかける記述について1つ疑問。 1)スタックはLIFO(Last In First Out)方式であり 後に入れたデータから先に読みだされる 2)関数の引数及びローカル変数はスタックに積まれる さて、問題。 int add(int a, int b) { int c; c = b; c = a+c; return c; } という関数があった場合、スタックにはこのように データが積まれると考えられる。 変数 c (ローカル変数) 変数 a 変数 b (最後の引数から積まれる) (スタック領域の先頭アドレス) 1)に従えば、データはc->a->bの順番でしか取り出せない はずだが、プログラムでは明らかにaより先にbの値を参照 して値を読みだしている。これはスタックのルールに 反するのではないか? あなたはこの疑問を明確に説明できますか?
899 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:33:21 ] >>898 int add(int a,int b); では、内部的に struct { int a,b; int c;//ローカル変数用 }add_param; を積んでるんだと考える。 スタックに一度に積めるデータの単位は別に固定じゃない スタックは抽象概念だからね。
900 名前:898 mailto:sage [2008/06/15(日) 13:52:30 ] 899さんの考えではint型変数a,b,cを含んだ構造体を一度に PUSHしたから、取り出すのも同時にPOPできる・・・だから 変数を使用する順番は関係ないのだ、とこういう理屈でしょうか? そうだとしたら何かおかしくありませんか? ヒントですが898の日本語の文章はわざと誤解を生じるような 表現が使われています。スタックの本質は、PUSHにしろPOPに しろ、それは必ずスタックポインタの遷移を伴う操作でなければ ならないということです。POPするということはスタックから データを取り除く、つまり”そのデータはもう使わないよ” という意味ですよね? さて、898で私が書いた"値を参照" する行為は果たしてPOPでしょうか? ここをじっくり考えると何が問題だったか見えてくると 思いますよ。
901 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:04:38 ] 何かおかしくありませんか?と書いてどこがおかしいのか指摘しないのはどうよwww ともあれ、関数呼びだしに使われるスタックとデータ構造の議論でいうスタックは似ているが別のものってことで
902 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:06:55 ] 寧ろ、struct {int a, b;}をスタックから取り出していると捉えてもいいかもしれない。 その後の仮引き数やローカル変数がスタックに積まれるかどうかは実装依存だし。
903 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:20:03 ] スタックといっても色々あって、pushされたら、popするまで 一切アクセスすることが出来ないものもあれば、アクセスでき るものもある。 Cの関数の引き数用のスタックは、当然アクセスできるタイプが 使われる。問題はスタックポインタをどうやって関数は知らされたか だが、まぁ隠しグローバル変数(register属性)とでも思って桶
904 名前:898 mailto:sage [2008/06/15(日) 14:34:42 ] >>ともあれ、関数呼びだしに使われるスタックとデータ構造の議論でいうスタックは似ているが別のものってことで こういう中途半端な理屈で自分を納得させて学習を止めてしまうのが 一番良くありません。疑問があれば納得するまで調査するべきです。 私はCを勉強したての頃に前述の疑問を持ちその理由がよく説明 できませんでした。そこで自分なりに調べた結果、出した結論が 以下の答えです。 1)スタックはLIFO(Last In First Out)方式であり 後に入れたデータから先に読みだされる という記述の”読みだされる”というのがあたかもPOP をしたかのように誤解を与える記述ですが、実際は内部の 動作としては”値を読みだす(参照する)行為”は”POP操作” ではありません。スタックポインタが移動してないからです。 (続く)
905 名前:898 mailto:sage [2008/06/15(日) 14:35:26 ] 898のスタック構造は若干、はしょった部分があり正確には 関数add()内部でのスタック構造はこんな感じになります。 ebpレジスタ 変数 c (ローカル変数) 関数の戻り先アドレス 変数 a 変数 b (最後の引数から積まれる) (スタック領域の先頭アドレス) そして関数内部ではesp(スタックポインタ)を一旦ebpレジスタ に格納したうえで(アセンブラではmov (ebp,esp) )、変数a,変数b への参照を以下のように行っています。 変数a dword ptr[ebp+12] 変数b dword ptr[ebp+16] 変数c dword ptr[ebp+4] add()関数内部の処理はこれらをアキュムレータで演算しているに 過ぎません。 (続く)
906 名前:898 mailto:sage [2008/06/15(日) 14:37:19 ] 関数を抜けるときに初めてPOPが行われます。 1)変数cをPOP 2)POPで呼び出し元に復帰 3)変数aをPOP 4)変数bをPOP ※実際にはPOPを行わずにスタックポインタの値を進める事で 代用する場合が多いです。 結局、関数の中でスタックに積まれた引数やローカル変数の値 を使用することはスタックからそのデータを取り出した(POPした) わけではないのだから、スタックの定義と全く矛盾しませんよ ということを言うためにこんなまわりくどい説明をしました。 でも、案外誤解している人って多いかもしれないと思います。 なお、これらは日経BP社の「プログラムはなぜ動くのか」という 本の第10章「アセンブリ言語からプログラムの本当の姿を知る」 を読めば完全に理解できると思います。 (終)
907 名前:898 mailto:sage [2008/06/15(日) 14:58:50 ] >>903 ここはCに関するスレッドなので、スタックの概念や実装についても Cの範疇でのみ回答しております。
908 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:00:23 ] >>904-906 だから、その話を踏まえて「似ているが別のもの」って言ったんだよ Cの普通の実装で使われる呼び出しスタックは、配列上に構築したスタックと同じで、 スタックポインタからのオフセットを指定することで任意の要素のO(1)読み書きができるけど、 これは「スタック」というデータ構造が元々持ってる機能ではないってこと 基本的な意味でのスタックでは、値を取り出すにはpopするしかない そこを混同してると>>898 みたいな疑問が生まれる
909 名前:898 mailto:sage [2008/06/15(日) 15:12:50 ] あらま、詳しいお方でしたのね。失礼。
910 名前:ebpなんて、極一部のCPUにしかないレジスタ持ち出すなよpgr mailto:sage [2008/06/15(日) 15:19:18 ] つーか、Cの仕様レベルでの話に実装を持ち出す>905はいかがなものかと。
911 名前:898 mailto:sage [2008/06/15(日) 15:55:18 ] >>910 正論だ。まったくもって正論だ。 「プログラムはなぜ動くのか」の本にもPentiumなどのx86系 マイクロプロセッサ用アセンブリ言語を対象として解説する って書いてあった。どんなレジスタが使われるかはコンパイラ 依存だとも・・・。説明不足でした。まあ実装はちょっと置いといた としても、なぜに「スタック」という名前なのに下のデータにアクセス できてしまうのかという疑問については解決ってことで...(苦しい)
912 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:44:45 ] ポーランド記法で計算を行う為のアルゴリズムを教えてください。
913 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 08:28:06 ] CPUのスタックはスタックポインタいじればどこでもアクセスできるだろ 引数の渡し方も呼び出し規約で変わる fastcallだとレジスタ渡しだし
914 名前:デフォルトの名無しさん [2008/06/16(月) 17:48:41 ] C#での質問です。 string[] str = new string[10]; char[,] moji = new char[10,30]; このstrにファイルを読み込んで文字列として格納したものを、 mojiにコピーするにはどうしたら良いのでしょうか? ToCharArray()を使おうと思ったのですが上手くいかずに困っています。 どなたかご鞭撻の程宜しくお願いします。
915 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:15:25 ] ここがC#のスレッドに見えたんだろうか。
916 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:37:02 ] >>915 >>1 を見ればC#スレにしか見えないだろ。 >>914 ジャグ配列で良ければ、ToCharArrayが使える。 矩形のchar[,]でないといけないなら、自分でループ回す方法しか俺には思い浮かばない。 char[][] moji = new char[str.Length][]; //別にnew char[10][]でも for (int i = 0; i < str.Length; i++) { moji[i] = str[i].ToCharArray(); }
917 名前:914 [2008/06/17(火) 09:18:37 ] >>916 さん わざわざお答え頂きありがとうございます。 なるほど、出来なかった理由は宣言の時点での間違えだったのですね。 大変助かりました。
918 名前:914 [2008/06/17(火) 17:11:58 ] 連投してすみません; 914の者ですが 配列mojiにstring型の文字列を格納することは出来たのですが、 もう一つmojiと同じ方の多次元配列を用意して、 それにmojiをコピーしたいのですが上手くいきません; Array.Copyなどを使えば動作はするのですが、配列の中身が変わっておらず どうすればいいのか分かりません。 度々すみませんが、宜しくお願いします。
919 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:45:18 ] >>917 いいえ、「間違え」ではありません、「間違い」です。
920 名前:914と918 [2008/06/18(水) 16:53:48 ] 918のものですが自己解決しました。 お騒がせしてしまい、すみません; >>919 おぉ、確かに間違えてる; ご指摘どうも。