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/
2 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:38] スレタイ間違った。 終了…
3 名前:デフォルトの名無しさん mailto:sage [03/11/09 16:08] 頼むからスレ立てフォームに目立つように「タイトルに#を入れるな」と書いてくれ。
4 名前:デフォルトの名無しさん mailto:sage [03/11/09 16:28] どうして#が無視されるんだろう…
5 名前:デフォルトの名無しさん mailto:sa ge [03/11/09 17:25] クソスレage
6 名前:デフォルトの名無しさん mailto:sage [03/11/09 17:27] C言語スレ無駄に重複させんなヴォケ >>1
7 名前:デフォルトの名無しさん mailto:sage [03/11/09 17:27] >>4 C#厨が嫌われているから
8 名前:デフォルトの名無しさん mailto:sage [03/11/09 17:28] まだC#厨の>>1 か。 「C#最強伝説」とか馬鹿な名前のスレたておって「C#最凶伝説」だろヴォケが
9 名前:デフォルトの名無しさん mailto:sage [03/11/09 17:34] みんな悪かった… 半角#が無視されることを知らなかった…
10 名前:デフォルトの名無しさん mailto:sage [03/11/09 22:54] 2で終了かよ
11 名前:デフォルトの名無しさん mailto:sage [03/11/10 07:05] >>10 ごめん。本とは♯を入れるべきだったんだが、さすがにこのスレタイでは使えない(誰がどう見てもCのスレに見える)
12 名前:デフォルトの名無しさん [03/11/10 21:36] 前の2スレの913に対する指数関数の計算。誰か答えてやれよ! こういうのをマクローリン展開っていうんだ。覚えておけ /* poly.c */ #include <stdio.h> #define N (4) main() { floatt, n, x, y, z; intfact, i, j; y=0 fact = 1 t=1 for(j = 0; j <= 7; j=j+1){ t=t*x; for(i = 1; i<= 8; ++i){ fact = fact * i; y=y+ t/fact; } } }
13 名前:デフォルトの名無しさん mailto:sage [03/11/10 22:43] >>12 はマルチ
14 名前:デフォルトの名無しさん mailto:sage [03/11/11 23:25] >>12 >intfact, i, j; しかしこれはさすがに通らない。
15 名前:デフォルトの名無しさん mailto:sage [03/11/11 23:26] >floatt, n, x, y, z; ついでにこれもな。
16 名前:デフォルトの名無しさん mailto:sage [03/11/12 00:05] tabが落ちただけだろ
17 名前:デフォルトの名無しさん mailto:sage [03/11/15 12:56] >>16 それ以前にここはC#スレ(の残骸)です。
18 名前:デフォルトの名無しさん mailto:sage [03/11/16 05:46] プログラミングが芸術って言うけどソースをAAにするつわものはいないか?
19 名前:デフォルトの名無しさん mailto:sage [03/11/16 10:21] >プログラミングが芸術 その考え、捨てた方が安全。
20 名前:デフォルトの名無しさん mailto:sage [03/11/16 11:17] >>19 そうします・・・ もう少しいい物が作れるようになってから言うようにしますね
21 名前:デフォルトの名無しさん [03/11/21 10:26] >>18 これとか pc2.2ch.net/test/read.cgi/tech/1042802490/21
22 名前:デフォルトの名無しさん mailto:sage [03/11/21 10:33] >>21 ほとんどコメントじゃないですか。
23 名前:デフォルトの名無しさん mailto:sage [03/11/21 10:43] >>21 >>22 に同じくほとんどコメントじゃんw でも何気にワロタ
24 名前:デフォルトの名無しさん mailto:sage [03/11/21 13:01] 1は立て逃げ? 削除依頼ださないの?
25 名前:デフォルトの名無しさん mailto:sage [03/11/21 14:16] [287] 名前: 飛べない削除屋 ★ [ sage ] 投稿日:03/10/18 16:30 ID:??? (引用前略) >>286 スレタイを間違えたという理由では削除できませんです。 また、スレタイの変更はできません。
26 名前:デフォルトの名無しさん mailto:sage [03/11/21 14:22] >>25 マジで? じゃあ、ほっとこうか… それとも再利用する?
27 名前:あふ [03/12/13 01:52] くだ質でながされてしまいました。 画像や音声ファイルなどを実行ファイルに一まとめにしたいのですが、 どうすれば良いでしょうか? C言語、gccですが、Makefileなどで何かすればよいのでしょうか? リンクするとき*.oと一緒にリンクするのですかね?
28 名前:デフォルトの名無しさん mailto:sage [03/12/13 01:56] すいません・・・・もぅ我慢できないっす・・・・ ぬるぽ
29 名前:デフォルトの名無しさん [03/12/13 09:32] >>28 そろそろ八時間経ちますね。
30 名前:デフォルトの名無しさん mailto:sage [03/12/13 09:51] ポインタ不要論 member.nifty.ne.jp/yamazaki/doc/without_pointer.html 説明だけ読むとポインタが参照になっただけでなんにも変わってない気がします。
31 名前:デフォルトの名無しさん mailto:sage [03/12/13 10:15] >>30 文字列処理や動的配列なんかの仕方なくポインタを使わざるを得なかった部分で ポインタを使わなくてすむだけでもだいぶ楽ではあるんだろうけど
32 名前:デフォルトの名無しさん [03/12/13 15:24] C言語統合スレですかここは。 なら質問します。 C言語でお勧めのコンパイラはなんですか?
33 名前:デフォルトの名無しさん mailto:sage [03/12/13 15:28] >>32 GNU C Compiler
34 名前:デフォルトの名無しさん mailto:sage [03/12/13 16:16] >>33 そんなレガシーなモノ!
35 名前:デフォルトの名無しさん mailto:sage [03/12/13 18:21] >>34 何年製のタイムマシンをお使いですか?
36 名前:デフォルトの名無しさん mailto:sage [03/12/13 19:37] gccはGNU Compiler Collectionで、GNU C Compilerだったのは昔の話。
37 名前:34 mailto:sage [03/12/13 19:49] >>36 でも、GNUなCのコンパイラに関してはGNU C Compilerと言う名が残っているよ。 彼はどこにもgccとは書いてないから耐えがたきを耐えて黙ってたんだ。俺は。
38 名前:デフォルトの名無しさん mailto:sage [03/12/13 21:02] GNU Compiler is not C Compiler
39 名前:デフォルトの名無しさん mailto:sage [03/12/13 21:03] >>38 gccはね。大丈夫か?
40 名前:デフォルトの名無しさん mailto:sage [03/12/14 10:12] Gcc is not C Compilerにすべきだったな
41 名前:デフォルトの名無しさん mailto:sage [03/12/14 10:20] >>40 Collectionはどこに消えたんだ?
42 名前:デフォルトの名無しさん [03/12/14 20:15] >>33 どうもありがとうございます
43 名前:デフォルトの名無しさん [04/01/06 22:10] void*の使い方についてお聞きしたいのですが。 bsearchやqsortなどの関数で探したい値の型は何でも探せる ようになってますが、その際にサイズとしてsize_t型を引数として 与えていますよね。 で、探したい値や探す配列はvoid*型の引数として 受け取っているので、size_tで受け取った型にキャストしないと使えない と思うんですよ。 その時size_t型でバイト数はわかるけれども実際にint型なのかlong型 なのかって判らないと思うのですが、どんなふうにしてキャストしてるんでしょうか? 知っている方が居ればご指導下さい。よろしくお願いします。
44 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:17] >>43 自明なので勝手に指定して下さい。
45 名前:デフォルトの名無しさん mailto:sage [04/01/07 10:22] >>43 何書いてあるのかよくわからん。
46 名前:デフォルトの名無しさん mailto:sage [04/01/07 16:23] >>43 bsearchやqsortはポインタの指す中身にはまったく関知しない。 そのために比較関数を渡すようになってる。
47 名前:デフォルトの名無しさん [04/01/17 23:45] ファイルが更新されたというのをCのプログラムへ渡せますか? ディレクトリ内を延々と読み込んで判定するというようなのではなく、 「更新された」という情報をトリガにして読みにいきたいんです。
48 名前:デフォルトの名無しさん mailto:sage [04/01/18 00:14] >>47 FindFirstChangeNotification
49 名前:デフォルトの名無しさん [04/01/18 00:40] >>48 標準の関数ですか?<FindFirstChangeNotification
50 名前:ただし、Windows 限定だけどな。 mailto:sage [04/01/18 09:49] >>49 標準だよ。
51 名前:デフォルトの名無しさん mailto:sage [04/01/18 12:48] Win32標準。
52 名前:デフォルトの名無しさん mailto:sage [04/01/18 12:54] >>51 いいえ、シェル拡張です。
53 名前:デフォルトの名無しさん mailto:sage [04/01/18 13:24] >>52 ふーん、俺の Windows2000 では kernel32.dll にあるみたいなんだけど、君のは違うんだな。
54 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:52] SDKにあるね。FindFirstChangeNotification。 MSDN参照。おしまい。
55 名前:デフォルトの名無しさん mailto:sage [04/02/14 16:39] C++で質問なんですが 2行3列の行列の和を求める関数 int sum(int x[][3],int y[][3],int z[][3]) で仮引数x[][3]をx[][]と出来ないのは何故ですか? また、この関数だとn行3列の行列の和しか出せないのですが n行m列の行列の和を出す関数は作れないんでしょうか?
56 名前:デフォルトの名無しさん mailto:sage [04/02/14 17:05] >>55 >で仮引数x[][3]をx[][]と出来ないのは何故ですか? サイズのわからない型を要素とした配列は定義できないからです。 サイズがわからないと、添え字によるアクセスができないので。 >n行m列の行列の和を出す関数は作れないんでしょうか? 作れます。
57 名前:56 mailto:sage [04/02/14 17:13] 「作れます。」ではあまりに不親切ですね… 一例を書いておきます。 int sum(int *x, const int *y, const int *z, int n, int m) { for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) x[i * m + j] = y[i * m + j] + z[i * m + j]; return 0; }
58 名前:デフォルトの名無しさん mailto:sage [04/02/14 17:28] >56さんありがとうございます。 これで次章に進めます。
59 名前:デフォルトの名無しさん [04/02/16 18:32] 文字列を数値に変換してそれをint型の変数に入れたいのですが 例えば char buf[] = "23456"; int num; こんな形だった場合、numに数値の23456を入れるにはどのようにするんでしょうか? bufに入るのは数字のみです。 よろしくお願いします(´・ω・`)
60 名前:デフォルトの名無しさん mailto:sage [04/02/16 18:33] atoi
61 名前:59 mailto:sage [04/02/16 18:34] sage忘れ&宿題スレと間違いました。。。すいません 首吊って逝ってきます(´・ω・`)
62 名前:デフォルトの名無しさん mailto:sage [04/02/16 21:29] 西成広告 ■ ソフトの総合商社 そふとはうす ■ Windows日本語製品版です。Macもあります。 単位はすべて円です Office 2003 Pro 10,000 WindowsXP Pro 4,000 Windows2000 Pro 4,000 Windows2003 ServerEnterprise 15,000 FrontPage 2003 4,000 OneNote 2003 4,000 Acrobat 6.0 Pro 7,000 AfterEffects 6.0 Pro 15,000 CreativeSuite Premium 20,000 Premiere Pro 10,000 DreamweaverMX 2004 5,000 FlashMX 2004 5,000 FireworksMX 2004 5,000 StudioMX2004 with FlashPro 10,000 LightWave3D 7.5 10,000 Shade6 Pro 10,000 AutoCAD 2004 20,000 AutoCAD LT 2004 12,000 VectorWorks Ver10.5 10,000 RenderWorks Ver10.5 10,000 3DStudioMAX 6J 10,000 NortonSystemWorks 2004 Pro 3,000 NortonInternetSecurity 2004 Pro 3,000 Painter8 5,000 すべてユーザー登録できません。windows日本語製品版です。 ご注文はここ→ chuumon@jumpy.it
63 名前:デフォルトの名無しさん [04/02/19 12:25] デジタルマーズってどうやってつかうのでつか? コンパイルはできまつたが、リンクでおちまつ。
64 名前:デフォルトの名無しさん mailto:sage [04/02/20 18:34] Lineage2, ResonanceAge等の3Dゲームのマクロ or BOTをCで作りたいのですが知識が無くて製作できません お勧めの書籍やツール等あったら教えてもらえないでしょうか? 資金はバイトで貯めた5万円です、BOTを作るにあたってアドバイスなど頂けたら嬉しいです
65 名前:デフォルトの名無しさん [04/02/20 18:35] age忘れました
66 名前:デフォルトの名無しさん [04/02/20 18:55] 質問でふ。 コンパイルして作られる実行ファイルのアイコンを Windowsのデフォルトのアイコンでなくて別のビットマップに したい時はどうしたらよいでしょう? ググったけどわからなかった・・
67 名前:デフォルトの名無しさん mailto:sage [04/02/20 18:56] Windowsでしたらリソースでググって下さい。
68 名前:66 [04/02/20 19:51] >>67 なんかわかったっぽいです。 心から礼を言いたい。
69 名前: mailto:sage [04/02/22 19:19] 列挙型で質問なんですが enum menu{ add, kill }; menu selemenu(void) { int a; return (menu(a)); } int main(void) { menu b; switch( b = selemenu() ) { 略 } return 0; } 私が参考にしている本では上記のように selemenu関数の返却値a(menu型)をmain関数でb(menu型)に代入しています。 しかし、bがint型でもa(menu型)が代入できてしまいます。 なぜですか?
70 名前:デフォルトの名無しさん mailto:sage [04/02/22 19:23] >>69 互換性があるからです。ポインタと配列のようなものです。
71 名前:デフォルトの名無しさん mailto:sage [04/02/22 19:38] まだポインタまで勉強してないんですが 配列の要素一つ一つに型が設定できるとか言う話と関係するんですか? レスありがとうございます。
72 名前:デフォルトの名無しさん mailto:sage [04/02/22 22:02] enum型は int の値に名前を付けて、その集合を定義していると考えればいい。 通常は0から順に値が自動的に当てはめられるが、 enum menu{ add = 10, kill = 20 }; みたいに値を指定することもできる。
73 名前:デフォルトの名無しさん mailto:sage [04/02/22 22:29] あまり詳しいことを言うと混乱するかもしれないので言わないが、 列挙体型の値は int 型へ明示的なキャストなしで変換される。 それは仕様。 で、逆に int 値から列挙体型へは明示的にキャストしないといけない。
74 名前:デフォルトの名無しさん mailto:sage [04/02/23 11:23] >>71 > 配列の要素一つ一つに型が設定できるとか言う話と関係するんですか? 意味不明。
75 名前:デフォルトの名無しさん mailto:sage [04/02/29 18:38] C++で質問なんですが typedefがなんなのかが良くわかりません。 staticやautoは解かるんですが・・・
76 名前:デフォルトの名無しさん mailto:sage [04/02/29 20:50] >>75 ある型に別の名前を付ける予約語です。 Cの時代は構造体のstructが省けなかったのでそれの除去などによく使われていました。
77 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:55] C++だと、名前空間とかクラステンプレートの指定を省略するのによく使われている。
78 名前:デフォルトの名無しさん mailto:sage [04/03/07 13:01] 名前空間はエイリアスが作れるが。 namespace A = B::C::D;
79 名前:デフォルトの名無しさん mailto:sage [04/03/07 13:15] >>78 >>77 が言っているのは typedef std::string string; のような話じゃないか? クラス内では名前空間に対するusingができないから 有効なこともあるかと。
80 名前:デフォルトの名無しさん mailto:sage [04/03/07 13:20] std::stringの実体ってびろーんと長いテンプレートの具体化なんでしょ?
81 名前:デフォルトの名無しさん mailto:sage [04/03/07 13:35] >>79 なるほど。そういうことか。
82 名前:デフォルトの名無しさん mailto:sage [04/03/13 17:45] ポインタについて質問です int* a; a = &b; この場合aがポインタ? ポインタだとすると&bの名前は何でしょうか? それともint* a; a = &b; 二つでポインタ?
83 名前:デフォルトの名無しさん mailto:sage [04/03/13 17:59] >>82 ポインタは「型」について言うときと「変数」について言うときがある。 int* a; /* aは「intへのポインタ」型の変数。単に、aはintへのポインタであるとも言う。 */ a = &b; /* &bは「intへのポインタ」型の式。型が同じなのでaに代入できる。 */
84 名前:デフォルトの名無しさん mailto:sage [04/03/13 18:03] >83 即レスありがとうございます。
85 名前:デフォルトの名無しさん mailto:sage [04/03/13 19:34] >>83 アドレスとポインタは違うものだと思うぞ。
86 名前:デフォルトの名無しさん mailto:sage [04/03/14 18:00] 関数へのポインタに関して質問です double型の引数を受け取って、double型を返却する関数へのポインタfuncを double (*func)(double x) と宣言するそうなんですが int* a = &bとオブジェクトへのポインタを宣言するなら、関数へのポインタの宣言は double* func(double x) になるんじゃないでしょうか?
87 名前:デフォルトの名無しさん mailto:sage [04/03/14 18:04] >>86 int ???; は、"???の型がintである。"と読むといい。 int *a; なら、*aの型がint、 double (*func)(double); なら、(*func)(0.0)の型がdouble double *func(double); なら、*func(0.0)の型がdouble
88 名前:デフォルトの名無しさん mailto:sage [04/03/14 18:56] >87 int* a = &bとint *a = &bは同じ宣言なんですか? >double (*func)(double); なら、(*func)(0.0)の型がdouble double *func(double); なら、*func(0.0)の型がdouble *funcに()のある無しで何か違いはあるんでしょうか?
89 名前:デフォルトの名無しさん mailto:sage [04/03/14 19:06] 関数ポインタと普通のをごっちゃにするなよ
90 名前:デフォルトの名無しさん mailto:sage [04/03/14 19:16] ごっちゃにしてたみたいです; double *func();とするとdouble型へのポインタを返すfunc関数 double (*func)();とすると整数を返す関数へのポインタfunc ってことでしょうか? double *func();とするとdouble型へのポインタを返すfunc関数 は番地を受けとってなにか処理をして番地を渡す関数になるんでしょうか?
91 名前:デフォルトの名無しさん mailto:sage [04/03/14 19:26] ごっちゃになってるのは君の頭だ。と言ってみる。 >>87 > int* a = &bとint *a = &bは同じ宣言なんですか? 同じ。 > *funcに()のある無しで何か違いはあるんでしょうか? ポインタなら変数だから中身を入れ替えられる。 逆に普通の関数は定数だとでも思って。 >>90 > double *func();とするとdouble型へのポインタを返すfunc関数 > double (*func)();とすると整数を返す関数へのポインタfunc doubleを返す関数へのポインタ、ね。 > double *func();とするとdouble型へのポインタを返すfunc関数 > は番地を受けとってなにか処理をして番地を渡す関数になるんでしょうか? 意味不明。引数にアドレスを取るような宣言には見えない。 番地を渡すというのが返すという意味なら、そこは正しい。
92 名前:デフォルトの名無しさん mailto:sage [04/03/14 20:08] なるほど レスありがとうございました。
93 名前:デフォルトの名無しさん [04/03/17 23:10] 素朴な疑問なんだけどfloorって関数があるじゃない。 実数xに対してxを超えない最大の整数を返すやつ。 例:floor(5.3)=5 floor(-1.5)=-2 で、これってなんで戻り値が実数になってるの? double floor(double x) じゃなくて int floor(double x) のほうが自然だと思うのだけど。 何か理由があるんですか?
94 名前:デフォルトの名無しさん mailto:sage [04/03/17 23:14] int(double x) のほうがもっと自然だな
95 名前:デフォルトの名無しさん mailto:sage [04/03/17 23:15] >>93 intの範囲を越えた場合どうしましょう?
96 名前:デフォルトの名無しさん [04/03/17 23:25] >>95 あーなるほど。 どうもありがとん
97 名前:デフォルトの名無しさん mailto:sage [04/03/18 03:32] Web用のCのCGIで、<form>から受け取ったデータの解釈はどうやればいいのでしょうか? 環境変数を得るまではできたのですが・・・ GETとPOST両方教えてください。 Perlはそこそこできますが、Cは初心者です
98 名前:デフォルトの名無しさん mailto:sage [04/03/18 03:49] >>97 www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/index.html
99 名前:デフォルトの名無しさん mailto:sage [04/03/18 03:57] >98 既に見ました。 C++じゃなくてCでありませんか?
100 名前:デフォルトの名無しさん mailto:sage [04/03/18 04:19] >>99 お前、全然読んでねーだろ。
101 名前:デフォルトの名無しさん mailto:sage [04/03/18 05:05] >100 読んでもさっぱりです。 そういえばCって仮想配列むりなんですよね
102 名前:デフォルトの名無しさん mailto:sage [04/03/18 05:59] >100 www.coins.tsukuba.ac.jp/~yas/classes/syspro-2003/2003-06-09/ ここので一応、取得はできました。
103 名前:プログラムだめぽ [04/03/23 20:46] しょぼい質問で悪いのですが(´・ω・`) 下のifとelseifの部分で何も実行しないように 作りたいのですが、エラーがでてしまいます どうすれば解決します? void remove_dead_path(struct survival_path *root){ if(root->upper!=NULL)remove_dead_path(root->upper); if(root->lower!=NULL)remove_dead_path(root->lower); if(root==leaf[0]) ←ここから else if(root==leaf[1]) else if(root==leaf[2]) else if(root==leaf[3]) ←ここまでなにも実行したくない else free(root); }
104 名前:デフォルトの名無しさん mailto:sage [04/03/23 20:51] >>103 if(root==leaf[0]) ←ここから ; else if(root==leaf[1]) ; else if(root==leaf[2]) ; else if(root==leaf[3]) ←ここまでなにも実行したくない ; else free(root);
105 名前:プログラムだめぽ [04/03/23 20:55] >>104 セミコロンつけるだけでよかったのか ありがとう〜助かった。・゚・(ノД`)・゚・。
106 名前:デフォルトの名無しさん mailto:sage [04/03/24 20:18] >>25 この削除人て、アホだろ
107 名前:デフォルトの名無しさん [04/03/29 15:21] あほなのはむしろ>>106 であるという趣旨の書き込み
108 名前:デフォルトの名無しさん [04/04/10 13:58] むしろくそスレほどageる価値があるという趣旨の書き込み
109 名前:デフォルトの名無しさん [04/04/30 21:09] 現在勉強中のC初心者です。 独習Cの次に読むとよさげな本を教えてください。
110 名前:デフォルトの名無しさん mailto:sage [04/04/30 21:41] 独習Cが終わっても、まだそんなこと言ってるのか。
111 名前:デフォルトの名無しさん [04/04/30 21:52] >>110 だめですか?
112 名前:デフォルトの名無しさん mailto:sage [04/04/30 21:54] 猫でも分かるWindowsプログラミング、でもやってみれば?
113 名前:デフォルトの名無しさん [04/04/30 21:57] あ、Windowsプログラミング、興味ありました! そうか、そういけばいいのですね。 すみません、ご親切にありがとうございます!!!
114 名前:デフォルトの名無しさん mailto:sage [04/04/30 23:09] 独習Cの次は初めてのCだ。 間違いない。
115 名前:陽一 mailto:sage [04/05/03 11:59] 分からないときは、 作ってわかるCプログラミング。 分かったら、CCレモンを飲む。 間違いない。
116 名前:デフォルトの名無しさん mailto:sage [04/05/08 16:39] 質問です。 キーボードの入力をscanfとかじゃなくて押された瞬間処理をする関数ってないですか? HSPのstick見たいな奴・・・
117 名前:デフォルトの名無しさん mailto:sage [04/05/08 16:43] >>116 <conio.h>があれば、その中のgetche
118 名前:デフォルトの名無しさん mailto:sage [04/05/08 23:28] >117 具体的な使い方がワカリマセン (´・ω・`)ヘルプで命令が見つからない・・・
119 名前:デフォルトの名無しさん mailto:sage [04/05/09 04:56] ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/ < 先生!やっぱ無限ループですね! __ / / / \________ \ ⊂ノ ̄ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
120 名前:デフォルトの名無しさん mailto:sage [04/05/09 07:38] >>116 それは、windowsアプリにしたほうが楽。
121 名前:116 mailto:sage [04/05/09 15:03] キーボードが打たれたときだけ反応して 打たれてなかったらそのままプログラムを進める。 打たれたキーによって処理をさせる。(Iが押されたら〜とか) そのやり方がワカリマセン getcheだと打たれるまでとまるので・・・ 教えてクレクレ厨でスマソ 吊ってきまつΛ||Λ
122 名前:デフォルトの名無しさん mailto:sage [04/05/10 17:08] # include <conio.h> int c; if(kbhit()) /* キーが押下されている */ c = getch(); else /* 何か別のことをする */;
123 名前:116 mailto:sage [04/05/10 19:33] if(kbhit())のkbhitは何なんでしょうか・・・? あとiが押されたらiが押されたと分かるようにするにはどうしたら・・・?(´・ω・`)
124 名前:デフォルトの名無しさん mailto:sage [04/05/10 20:26] >>123 kbhitはキーボードのキーが押されているかを判定する関数。 iが押されたらgetch()から'i'が返る。 if(kbhit() && getch() == 'i') /* 今iが押されている */
125 名前:116 mailto:sage [04/05/10 21:33] >124 おお とてもわかりやすいです。 アリがd。ニューソクで47氏逮捕祭りか・・・
126 名前:116 mailto:sage [04/05/11 23:21] また迷惑かけに来ました。 if(kbhit()&&getch()=='a'){printf("a");}else if(kbhit()&&getch()=='b'){printf("b");} 上のようにするとキーボードの処理が遅くなります。どうしたら?
127 名前:デフォルトの名無しさん mailto:sage [04/05/12 00:50] kbhitとgetchを複数回使わなければ良いのでは?
128 名前:116 [04/05/12 19:49] >127 それ以外のやり方しらないんで・・・
129 名前:デフォルトの名無しさん mailto:sage [04/05/12 20:34] // なにをしたいのか知らないが、これで参考になるだろ。 #include <stdio.h> #include <stdlib.h> #include <conio.h> #define END_CODE '\n' const char *EndCodeName = "Enter"; int dispatch(int event){ switch(event){ case END_CODE: printf("プログラムを終了します。"); exit(0); default: printf("[0x%02x] が押された。\n", event); } return 0; } main(){ int prev,cur; printf(" ********************\nキーコード表示。\n[%s]で終了します。\n********************\n", EndCodeName); for(;;){ if(!kbhit()) continue; if(prev != (cur = getch())){ dispatch(cur); prev = cur; } } }
130 名前:116 mailto:sage [04/05/12 20:53] >129 ありがとうございます。 とても参考になりました。
131 名前:デフォルトの名無しさん mailto:sage [04/05/12 21:14] C言語で、JPEG画像ファイルを表示させようとした場合、どんなコントロールがありますか? VBだったら、ピクチャーボックスなるものがあるけど、Cで扱えるコントロールにはどんなのがありますか。 当然ウィンドウ上で表示させるということです。
132 名前:デフォルトの名無しさん [04/05/12 21:41] すいません、初歩的な質問なのですが char型の変数って何バイトまで値を格納できますか? ファイルから読んだ値を格納したいのですが、どの程度の大きさまで可能なのか分かりません
133 名前:デフォルトの名無しさん mailto:sage [04/05/12 21:50] char自身は1バイト。 配列ならば・・・・・・自分で試してみろ。 char 2ch[10000000] // About 10M byte とか。エラーが出たら駄目ー。出なかったらOK−
134 名前:デフォルトの名無しさん mailto:sage [04/05/12 22:46] エラトステネスの篩を作ろうと思ったんですが、 配列の個数を1000000000000(1兆)個にしようとすると うまくコンパイルできません。 配列の数をメモリの許す限り使いたい場合はどうしたらよいのですか? とりあえず、配列の数が1兆個あれば問題ないんです。
135 名前:デフォルトの名無しさん [04/05/12 22:53] >>134 1TByte以上のメモリを積んでください。 1.0005TByteくらいのメモリであれば問題無いと思います。
136 名前:134 mailto:sage [04/05/12 23:07] >>135 そんなの無理です。 計算してみたら私の言っていることが いかに無理難題だったかがわかりました。 配列の数をなるべく多くするにはどうしたらいいのですか? メモリの許す限り配列を並べる方法はありますか?
137 名前:デフォルトの名無しさん [04/05/13 00:40] mallocとかでは駄目なのかい?
138 名前:デフォルトの名無しさん mailto:sage [04/05/13 02:00] size_tが32bitだと無理
139 名前:デフォルトの名無しさん mailto:sage [04/05/13 13:23] >>136 Windows2000(XP)だったら2GBが限界だよ。64bitのOSに乗り換えて1TB以上の ディスクアレイを組んでやるしかない。
140 名前:デフォルトの名無しさん mailto:sage [04/05/13 13:41] 「配列の個数」ではなく「配列のサイズ」だろ 配列のサイズの上限は言語処理系のマニュアルに書いてあるはず #メモリ上に乗らないデータを扱うというのは大昔からあるテーマだな
141 名前:136 mailto:sage [04/05/13 18:40] [10000][10000]で一億をやってみたいと思います。 [10000]だったら 9592個の素数を入れれましたので
142 名前:デフォルトの名無しさん mailto:sage [04/05/13 19:33] 配列じゃなくてリストを使ってみたらどうだろう? 動的にメモリを確保していくので可能な限り最大の値まで求められるし、 非素数と判明したノードはすぐに開放 or 再利用できるから、無駄も少ないだろ。 「エラトステネスのふるい」では無いかもしれないが。
143 名前:デフォルトの名無しさん [04/05/13 20:20] あぁ、そんなことしなくてもいいじゃん。 動的に確保して、配列満杯になったら、全てファイルに書き出し。 んでまたそれ以上の数字について調べる。 これだったら、[10000]くらいでいいじゃん。 ただし処理が多少遅くなる可能性もあるけど。 これだったら、パソコンが扱える最大の数字まで、計算できるじゃん。
144 名前:デフォルトの名無しさん mailto:sage [04/05/15 00:39] ファイルをセーブして、そのファイルに変数を保存しておく方法(int型など)は無いですか? 講座などを見てもchar型くらいしかのってないので。 char型から整数を取り出すしかないですかね?
145 名前:デフォルトの名無しさん mailto:sage [04/05/15 00:48] fread&fwrite
146 名前:デフォルトの名無しさん mailto:sage [04/05/15 01:25] fscanf&fprintfでもいい。
147 名前:144 mailto:sage [04/05/15 02:00] う〜ん fprintfとfscanfを使っても保存できるんですが 保存した変数の取り出し方がワカリマセン。ちゃんと保存できているのかも怪しいです。
148 名前:デフォルトの名無しさん mailto:sage [04/05/15 02:14] データ形式は自分で責任持ってください。
149 名前:デフォルトの名無しさん mailto:sage [04/05/16 16:22] ポインタへのポインタはどうやるんですか?
150 名前:デフォルトの名無しさん mailto:sage [04/05/17 02:27] >>149 ポインタへのポインタをつくります。
151 名前:デフォルトの名無しさん mailto:sage [04/05/19 16:18] do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=63 にはってある二つのソースは sosuu[]=2;の配列の中の数字が違うのですが、 sosuu[0]を最初の配列として使用すると 最後に素数を表示するときになって 2番目の素数は1311096です。 と表示されてしまいます。 なぜなんでしょうか?
152 名前:151 [04/05/19 18:29] すいません、どなたもいらっしゃらないようなので あげますね
153 名前:デフォルトの名無しさん mailto:sage [04/05/19 18:53] >>152 sosuu[1]に何も値を代入してないから。 > sosuu[n+1] = sosuukouho; と > m += 1; の間に printf("n = %d, m = %d, sosuu[%d] = %d\n", n, m, n+1, sosuu[n+1]); を入れて確認してみ
154 名前:151 mailto:sage [04/05/19 19:13] >>153 さんわかりました。 if((sosuukouho % sosuu[n] != 0) && (n == m)) の部分の (n==m)ここが原因だったんですね (n==m-1)としたら直りました。 ここが影響したので printf("素数の数は%d個で、最後の素数は%dです。\n",m,sosuu[m]); を printf("素数の数は%d個で、最後の素数は%dです。\n",m,sosuu[m-1]); になおして無事意図したとおりに動くようになりました。 ありがとうございました。
155 名前:デフォルトの名無しさん [04/05/20 21:33] なーんでこのすれは閑古鳥がないてんだよう
156 名前:デフォルトの名無しさん mailto:sage [04/05/20 21:43] >>155 それは、このスレの存在自体が「間違い」だから。 正しくはスレタイをミスっただけなんだが、そのミスが致命的なミスだったわけで・・・。
157 名前:155 mailto:sage [04/05/20 21:52] んじゃ、お気に入りから削除しますね
158 名前:149 mailto:sage [04/05/21 19:48] 二次元配列のポインタの宣言しかたがわかりません char a[2][2],*ptr,*ptr2 ここから自分なりに考えてもコンパイルエラーになります。
159 名前:デフォルトの名無しさん mailto:sage [04/05/21 20:21] >>158 char (*pa22c)[2][2]; /* 2次元配列へのポインタ */ char *a22pc[2][2]; /* ポインタの2次元配列 */
160 名前:デフォルトの名無しさん mailto:sage [04/05/22 17:11] >>159 dクス
161 名前:160 mailto:sage [04/05/25 22:10] またまたポインタの質問です *(pointa + (指定一次元添字 * 二次元要素数) + 指定二次元添字) 某C講座から 上の指定一次元添字と二次元要素数というのはどういう意味なんでしょうか? 指定一次元添字が指定する一次元の配列番号なんですか? 日本語おかしいです。スミマセン
162 名前:デフォルトの名無しさん mailto:sage [04/05/25 23:18] type array[N][M]; type *p = array; array[4][12] = *(p + 4 * N + 12);
163 名前:デフォルトの名無しさん mailto:sage [04/05/25 23:19] >>161 pointa[N * M]; /* pointa[N][M]; みたいに使う */ /* ... */ a = pointa[i * M + j]; /* a = pointa[i][j]の代わり */ なので、 i : 指定一次元添字 j : 指定二次元添字 M : 二次元要素数 と思われます。
164 名前:160 mailto:sage [04/05/25 23:30] M+jとするのはなぜなんでしょうか?
165 名前:デフォルトの名無しさん mailto:sage [04/05/26 22:58] >>164 M + jじゃなくて (i * M)そこに + j している感じで
166 名前:160 [04/05/27 20:14] #include <stdio.h> #include <conio.h> int main() { int *ptr; int a[2][2],b; *ptr = a; a[1][2]=5; b=*ptr[1*2+1]; printf("%d",b); getch(); }
167 名前:160 mailto:sage [04/05/27 20:15] アァ・・・ まちがえて送信してしまった・・・ 166のソースがコンパイルできません int ( *)[2]型はint型に変換できない 無効な間接参照 の二つです。
168 名前:デフォルトの名無しさん mailto:sage [04/05/28 11:26] *p: int型 a: int(*)[2]型 b: int型 *p[1*2+1]: int*型
169 名前:デフォルトの名無しさん mailto:sage [04/05/28 20:10] *p[1*2+1]はおかしい。 これは*(p[1*2+1])と解釈され、p[1*2+1]の型はintだから、*を適用できない。 無効な間接参照とはこのことだろう。
170 名前:デフォルトの名無しさん mailto:sage [04/05/28 20:11] *p[1*2+1]はおかしい。 これは*(p[1*2+1])と解釈され、p[1*2+1]の型はintだから*を適用できない。 無効な間接参照とはこのことだろう。
171 名前:160 mailto:sage [04/05/28 20:35] >168 ptr=(int *)a; としてなかったのが原因ですか。 ptr=(int *)a; *ptr[1*2+1]=70 とやると失敗します。 *(ptr + (1*2)+1)=70とすると動くんですが・・・。 あと*(ptr + (1*2) + 1)とするとptrに(1*2)+1を足してますがptrはどんどん増えていかないのでしょうか?
172 名前:160 mailto:sage [04/05/28 20:36] >168 ptr=(int *)a; としてなかったのが原因ですか。 ptr=(int *)a; *ptr[1*2+1]=70 とやると失敗します。 *(ptr + (1*2)+1)=70とすると動くんですが・・・。 あと*(ptr + (1*2) + 1)とするとptrに(1*2)+1を足してますがptrはどんどん増えていかないのでしょうか?
173 名前:160 mailto:sage [04/05/28 20:39] >168 ptr=(int *)a; としてなかったのが原因ですか。 ptr=(int *)a; *ptr[1*2+1]=70 とやると失敗します。 *(ptr + (1*2)+1)=70とすると動くんですが・・・。 あと*(ptr + (1*2) + 1)とするとptrに(1*2)+1を足してますがptrはどんどん増えていかないのでしょうか?
174 名前:デフォルトの名無しさん mailto:sage [04/05/28 21:13] >>166 のソースを正しくとこうなるんだよね (便宜上aは初期化させてくれ) #include <stdio.h> #include <conio.h> int main() { int (*ptr)[2], a[2][2] = {{0, 1}, {2, 3}},b; ptr = a; a[1][2]=5; b=ptr[1][1]; printf("%d",b); getch(); }
175 名前:160 mailto:sage [04/05/28 23:52] なんか3回も書き込んである・・・orz >>174 おお ありがとうございます。 (*ptr)[2]は*ptrの変数配列ですか? ptr[1][1]と*(ptr+(1*2)+1)ではどっちの方が処理早いですかね?
176 名前:デフォルトの名無しさん mailto:sage [04/05/29 16:03] >>175 最適化でどっちも同じになるだろ
177 名前:デフォルトの名無しさん mailto:sage [04/05/29 19:54] >>175 >(*ptr)[2]は*ptrの変数配列ですか? >>159 参照。 ptrはint[2]へのポインタ。 >ptr[1][1]と*(ptr+(1*2)+1)ではどっちの方が処理早いですかね? この二つは全く意味が違う。 後者はptr[3]と同じで、型はintの配列。
178 名前:177 mailto:sage [04/05/29 20:42] >>160 が理解していないと思われることを補足しておく。 必要がなかったらスルーしてくれ。 まず、二次元配列は、配列の配列である。つまり、 int arr[2][3]; という宣言があるとき、arr[0]やarr[1]はintの配列で、要素数は3である。 ここで、配列はその先頭要素へのポインタに変換されることを思い出して欲しい。 だから、arrはarr[0]へのポインタに変換される。arr[0]はintの配列だから、 変換された後のarrはintの配列へのポインタ、つまり型はint (*)[3]である。 int (*)[3]型の変数pを宣言するにはint (*p)[3];と書く。これが、>>174 で ptr = a; が正しくコンパイルされる理由だ。 次に、配列の要素を指しているポインタに整数nを足すと、 はじめに指していた要素のn個先の要素を指すポインタができる。 これは、その配列が、配列への配列(二次元配列)であっても同じことである。 だから、>>174 の例で*(ptr+(1*2)+1)と書くと、ptrの三番目の要素が得られる。 実際にはptrには二つの要素しかないから、この結果は意味を成さない。 最後に、配列はメモリ上で、各要素が隙間なく並べられる。たとえば、 int arr[2][3]; と宣言した場合、arr[0]とarr[1]が隙間なく並べられる。 このとき、arr[0]やarr[1]も配列だから、これらの各要素も隙間なく並べられる。結果的に、 arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2] と並ぶことになる。 この並びを一次元配列とみなしてアクセスするのが、>>161 の方法である。 このとき、一次元配列の各要素はintであることに注意してくれ。 これを実現するには、添え字を一次元配列用に計算してarr[0][0]へのポインタに足せば良い。 arrはarr[0]へのポインタであってarr[0][0]へのポインタではないから、そのままでは使えない。 そこで、素直に&arr[0][0]と書くか、(int *)arrと強引にキャストする。
179 名前:177 mailto:sage [04/05/29 20:52] #include <stdio.h> #include <conio.h> int main() { int *p, a[2][2] = {{0, 1}, {2, 3}},b; p = &a[0][0]; /* p = (int *)a;と書いても同じ */ a[1][1] = 5; /* a[1][2]は配列の外 */ b = *(p + (1*2+1)); /* b = p[1*2+1]; と書いても同じ */ printf("%d",b); getch(); } >>160 がやりたかったのはこれかな?
180 名前:160 mailto:sage [04/05/29 21:43] >177-179 おお 分かりやすい説明ありがとうございます。 p=&arr[0][0]の方法は2次元以上の配列だと楽ですね。
181 名前:デフォルトの名無しさん [04/06/09 15:05] 調べても分からなかったんで教えてください。 イーサネット接続するときに connect()を使うわけですが これのタイムアウト値を設定したいときどうすればよいのでしょうか。 settimeoutとか見かけたけど使い方が分かりませんでした。
182 名前:デフォルトの名無しさん [04/06/29 16:56] 連立方程式を解くプログラムを教えて下さい〜! ax+by+c=0 dx+ey+f=0 のときx,yをとくような奴です。 C言語でおながいいいい
183 名前:デフォルトの名無しさん mailto:sage [04/06/29 17:07] >>182 代数・幾何学の勉強しなさい。逆行列を作れば簡単に解ける。 理系の大学生なら授業でやると思われ。
184 名前:デフォルトの名無しさん mailto:sage [04/07/04 01:11] 初めまして。色々と試しているのですが、プログラムが作れません。 よろしければ、教えてください。 「チーム研究発表会の評価を集計するプログラムを作る。3人以内の学生メンバーで構成される4 チームが発表会に参加する。評価は調査内容、提案内容、発表資料、発表方法の4つのポイントで 行われ、各々のチームに対して合計点数が付けられる。」 1.評価に必要なデータを全て含むようなチームを表す構造体を作成し、typedefで名前を付けよ。 変数名はできる限り理解しやすいものを考え、各チームのメンバーのフルネームと学籍番号も 分かるようにすること。また、各チームにはチーム番号をつけよ。 という物なのですが、ここまで指定されていたら作れるのが当たりまえなのかもしれませんが、初心者 なものでほぼ手につきません。よろしければ、ヒント的なものでもかまわないので教えてください。
185 名前:デフォルトの名無しさん mailto:sage [04/07/04 10:03] >>184 ヒント こちらで聞いたほうがいいでしょう。 ぼるじょあがC/C++の宿題を片づけますYO! 25代目 pc5.2ch.net/test/read.cgi/tech/1087929711/l50 書き込む前に pc5.2ch.net/test/read.cgi/tech/1087929711/1 を読むことをお忘れなく。
186 名前:184 mailto:sage [04/07/04 19:32] >>185 ありがとうございます。そちらの方で聞いてみます。
187 名前:デフォルトの名無しさん mailto:sage [04/07/09 16:53] 質問です. 循環リストの長所と短所と、どのようなアプリケーションに 循環リストは向いているかを教えてください。
188 名前:デフォルトの名無しさん [04/10/09 22:28:31] すみません。 C言語 dos で msecの時間を表示したいのですが、 どのようにすればよいでしょうか? よろしくお願いします。
189 名前:デフォルトの名無しさん [04/10/09 23:07:53] >>1 > いろんなスレが乱立していますが、 お前が言うことではないな。
190 名前:デフォルトの名無しさん mailto:sage [04/10/15 19:31:51] C/C++ でフリーのライブラリとかでperl相当の正規表現処理 とかテキスト処理とかしてくれるようなものって存在しませんか? あるいはperlのスクリプトをそのまま使えるような・・・ フリーで無ければ有料でも構いませんが。
191 名前:190 mailto:age [04/10/15 19:32:10] age忘れました
192 名前:デフォルトの名無しさん mailto:sage [04/10/15 19:59:47] >>190 C++ならboostでも使っとけ
193 名前:190 mailto:sage [04/10/15 20:34:31] 紹介thx.
194 名前:デフォルトの名無しさん [04/11/09 21:13:39] LSI C-86 超簡単セットアップの Setlsic.batを実行したんですが LSI C-86試食版をF:\LSIC86にセットアップします。 と表示されてドライブを指定できません。 何ででしょうか?
195 名前:デフォルトの名無しさん mailto:sage [04/11/09 21:23:34] >>194 そのSetlsic.batとやらを直接書き換えてみたらどうだ?
196 名前:デフォルトの名無しさん [04/11/11 15:25:53] 今Cのコンパイラしかないプラットフォームで開発をしていまして、 もともとC++で書いていたコードを移植しています。 クラスになっている箇所は、C++のクラスみたいに、 struct AbstractClass{ int (*funcA)(void); int (*funcB)(void); int (*funcC)(void); }; struct ConcreteClass{ struct AbstractClass _super; }; という風に仮想関数テーブルみたいなものを作ってるんですが、 struct ConcreteClass c; struct AbstractClass *abstract; abstract = (struct AbstractClass*)c; abstract->funcA(abstract); とかいちいち先頭に呼び出しのオブジェクトを入れたりするのが面倒だったり、 構造体のメンバのスコープを限定できなかったり、と色々不便です。 C++みたいなシンタクス(仮想関数テーブルとか構造体のメンバのスコープの限定とか)で書けて、 普通のC言語のコードを吐き出してくれるパーサーとかないでしょうか? 以前、昔のC++コンパイラは一旦Cのコードに変換してからコンパイルしていた、と読んだのですが、 今でもそのようなものはありますでしょうか?
197 名前:デフォルトの名無しさん [04/11/11 18:02:27] 今Cのコンパイラしかないプラットフォームで開発をしていまして、 もともとC++で書いていたコードを移植しています。 クラスになっている箇所は、C++のクラスみたいに、 struct AbstractClass{ int (*funcA)(void); int (*funcB)(void); int (*funcC)(void); }; struct ConcreteClass{ struct AbstractClass _super; }; という風に仮想関数テーブルみたいなものを作ってるんですが、 struct ConcreteClass c; struct AbstractClass *abstract; abstract = (struct AbstractClass*)c; abstract->funcA(abstract); とかいちいち先頭に呼び出しのオブジェクトを入れたりするのが面倒だったり、 構造体のメンバのスコープを限定できなかったり、と色々不便です。 C++みたいなシンタクス(仮想関数テーブルとか構造体のメンバのスコープの限定とか)で書けて、 普通のC言語のコードを吐き出してくれるパーサーとかないでしょうか? 以前、昔のC++コンパイラは一旦Cのコードに変換してからコンパイルしていた、と読んだのですが、 今でもそのようなものはありますでしょうか?
198 名前:デフォルトの名無しさん mailto:sage [04/11/11 18:05:37] C++の方のオプションで出来たような希ガス
199 名前:デフォルトの名無しさん mailto:sage [04/11/11 18:11:01] >>196 今まともに使えるのはないっぽい。
200 名前:196 mailto:sage [04/11/11 18:38:21] >>198 gccのman見たけど見つからなかった。 どのコンパイラで使えるかご存知でしたら教えていただけませんか? >>199 一部機能が使えない(関数のオーバーロードとか)くらいなら問題ないんですが、 プリプロセスの結果が怪しい、ってことでしょうか?
201 名前:デフォルトの名無しさん mailto:sage [04/11/11 19:44:30] >>197 >普通のC言語のコードを吐き出してくれるパーサーとかないでしょうか? 普通、そういうのは「パーサー」と呼ばず「トランスレータ」と呼ぶ。 後は自分で調べれ。
202 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:00:30] gccの環境ってどこでDLすればいいんでしょうか? ググッたけれど見つからないので(´・ω・`)
203 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:07:28] >>202 Windows?Linux?
204 名前:202 mailto:sage [04/11/11 20:18:24] Windowsです。 そろそろLinuxに移行しようと思ってるのでLinuxも教えていただければ幸いです。
205 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:23:10] >>204 WindowsならCygwinをインストールするときにgccを指定できるし、 MinGWというフリー環境もある。 Linuxだと大抵のディストリビューションに付属しているので特に問題はないと思う。 debianなどのディストリビューションでは初めから入っているわけではないが、 apt-getなどのツールで一発でインストールできる場合がほとんどなので、 Linuxの場合は開発環境に悩まされる事はほとんどないと思うよ。
206 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:25:56] >>205 即レスありがとうございます。 Cygwinを入れたときに指定していなかったらしいのでMinGWを使ってみます。
207 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:29:32] >>206 もう一度Cygwinのセットアッププログラムを実行して、gccを指定すれば そのままインストールできるけれど。 再インストールではなく追加インストールになる。
208 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:44:11] >>207 MinWinでどれをDLしてよいかわからなかったのでCygwinのほうでやってみます。 とりあえずパッケージ選択時に全部選択しました。疲れたorz
209 名前:デフォルトの名無しさん mailto:sage [04/11/11 20:54:30] Cygwinはデフォルトでgcc3.3.3だから、3.4入れたければ設定替えないとね
210 名前:196 mailto:sage [04/11/11 21:25:17] >>201 ありがとうございまつ。 探したけどもう全然ないんですね(´・ω・`)
211 名前:デフォルトの名無しさん mailto:sage [04/11/11 22:41:57] >>210 Objective-Cならトランスレーターがあるが・・・
212 名前:デフォルトの名無しさん mailto:sage [04/11/11 23:02:50] プログラマさんからみて、unixのソースコードってどうなんでしょう? インターフェース関係ぐらいしか読んでないのでわかりませんが、 やっぱりプロはすごい。
213 名前:デフォルトの名無しさん [04/11/12 21:39:10] #include <stdio.h> main () { int res; char ans; printf("何番目を選びますか?\n"); printf("整数を入力してください。\n"); scanf("%d",&res); if(res == 1) ans = 'A'; else ans = 'B'; printf("%cコースを選択しました。\n",res); return 0; } って本に書いてたんでコンパイルしようとしたら ansに代入した値は使われていない。 と表示されてコンパイルできません。 なんででしょうか?
214 名前:デフォルトの名無しさん mailto:sage [04/11/12 21:47:16] printf("%cコースを選択しました。\n",res); ↓ printf("%cコースを選択しました。\n",ans);
215 名前:213 mailto:sage [04/11/12 22:25:31] >>214 ありがとうございます。 できました。 これで先に進めます。
216 名前:215 [04/11/12 22:31:43] すいません。 次のsampleもできません。 内容は #include <stdio.h> main () [ int res; char ans; printf("何番目を選びますか?\n"); printf("整数を入力してください。\n"); scanf("%d",&res); ans = (res==1) ? 'A' : 'B'; printf("%cコースを選択しました。\n",ans); return 0; } というのものですがどこが変なんでしょうか?
217 名前:デフォルトの名無しさん mailto:sage [04/11/12 22:39:53] >>216 main()の直後の [ を { へ。
218 名前:216 [04/11/12 23:05:27] >>217 コンパイルできました。 こんな質問にも答えてくれてありがとうございます。
219 名前:デフォルトの名無しさん mailto:sage [04/11/15 09:09:01] 目の前にあるバグが見えるか見えないかは経験の問題だからな
220 名前:196 mailto:sage [04/11/16 15:36:24] >>211 禿しくありがとう!! 試してみまつ。
221 名前:デフォルトの名無しさん mailto:sage [04/11/16 21:55:34] @for(i=0;i<5;i++) Afor(i=0;<=5;i++) @は0,1,2,3,4と5回 Aは0,1,2,3,4,5と6回繰り返す という意味合いでいいんですか?
222 名前:デフォルトの名無しさん [04/11/16 22:03:19] あげさせてもらいますよ
223 名前:デフォルトの名無しさん mailto:sage [04/11/16 22:05:55] >>222 氏ね
224 名前:デフォルトの名無しさん mailto:sage [04/11/16 22:08:37] >>221 それであっている。
225 名前:デフォルトの名無しさん mailto:sage [04/11/16 22:09:27] Aは違う
226 名前:デフォルトの名無しさん [04/11/16 22:09:27] いまくだらんプログラム作っていまして、ビルドしたらエラーが12・・・orz 何回も見直したんですが、原因が見いだせなくて・・・ 初歩ですが、どうかよろしくお願いいたします。 /*shm.c*/ #include<stdio.h> #include<conio.h> int main(void){ int age; int seito; printf("▼はENTERを押してください。\nまた、INPUT[というのが出た場合は、整数値を入力してENTERを押してください\n"); printf("A:ちょっと聞きたいことがあるんだよ。いいかな?.....▼\n"); getch(); printf("A:一応、自分刑事で、極秘の捜査中でね。秘密だよ。お願いがあるんだけど年齢教えてくれないかな?▼\n"); getch(); printf("俺の年齢は......INPUT["); scanf("%d", &age); printf("俺の年齢は%dです。", age); printf("A:ありがとう。%d歳なんだね。ところでMONEY IS LIFEという学校をしているかい?捜査中で必要な情報なんでね。知らないか?▼\n",age); getch(); printf("自分がその学校の生徒ということを教える.....YES=1 NO=0.....INPUT["); scanf("%d", &seito);
227 名前:226 mailto:sage [04/11/16 22:09:52] if(age >= 15){ printf("A:ありがとう。君は好青年だね。ところでお金をくれないか?あぁ?残念だったな。いろいろ教えてくれてありがとうよ。あとは金奪ってサヨナラだ。( ゚Д゚)イッテヨシ!▼\n"); }else if(seito == 1){ printf("A:ありがとう。君は好青年だね。ところでお金をくれないか?あぁ?残念だったな。いろいろ教えてくれてありがとうよ。あとは金奪ってサヨナラだ。( ゚Д゚)イッテヨシ!▼\n"); }else{ printf("A:いろいろ教えてくれてありがとう。じゃぁマタね。▼\n"); } getch(); printf("こういう奴には気をつけよう▼!\n"); getch(); printf("おわり。▼\n"); return 0; }
228 名前:221 [04/11/16 22:15:36] ほかのスレで聞いてきます
229 名前:デフォルトの名無しさん mailto:sage [04/11/16 22:15:55] カワイソウナショウネン…
230 名前:デフォルトの名無しさん [04/11/17 00:39:05] >>225 違うかのか?
231 名前:デフォルトの名無しさん mailto:sage ということを言いたいんだろう225は [04/11/17 00:47:59] >>230 とりあえずコンパイルできなかった
232 名前:デフォルトの名無しさん mailto:sage [04/11/17 00:52:13] >>231 すいませんでした。
233 名前:デフォルトの名無しさん [04/11/18 00:45:36] goto文って飛べるの関数内だけだけでしたっけ? その場合にかなり深い位置にある関数内からmainのある位置に戻すいい方法ってありますか?
234 名前:デフォルトの名無しさん mailto:sage [04/11/18 00:54:11] >>233 setjmp,longjmp
235 名前:デフォルトの名無しさん [04/11/18 00:55:09] >>233 gotoは関数内のみ。 もっと飛ぶならlongjmp。
236 名前:デフォルトの名無しさん mailto:sage [04/11/18 00:57:46] >>233 setjmp と longjmp でいけます。
237 名前:233 [04/11/18 01:20:14] >>234-236 ありがとうございます
238 名前:デフォルトの名無しさん mailto:sage [04/11/18 03:23:17] >>226 はスルーなのか・・・ 「人工無能」でぐぐってくれ
239 名前:デフォルトの名無しさん mailto:sage [04/11/18 09:33:22] getch();
240 名前:デフォルトの名無しさん mailto:sage [04/11/18 12:03:53] 再確認。 こ こ は ス レ タ イ ト ル を ミ ス っ た C ♯ ス レ で す にょ
241 名前:デフォルトの名無しさん [04/11/22 15:01:17]
242 名前:デフォルトの名無しさん mailto:sage [05/01/03 17:19:42] UnixとWindows両方で使えるCのZip操作ライブラリが欲しいんですが、どんなのがありますか? zipという単語が一般的過ぎてぐぐってもノイズばかり…
243 名前:デフォルトの名無しさん mailto:sage [05/01/03 17:21:05] 重複スレ = = = = = = = = = = = 終 了 = = = = = = = = = = =
244 名前:デフォルトの名無しさん [05/01/03 17:58:01] じゃあ本スレってどこ?
245 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:00:55] >>244 pc5.2ch.net/test/read.cgi/tech/1104114259/
246 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:11:50] >>242 zlibでいいんじゃないの? Windows端末でもCygwin使えば使えるし。
247 名前:デフォルトの名無しさん mailto:sage [05/01/04 10:26:26] とりあえずexeファイル作りたいんですが どうすればいいんですか。
248 名前:デフォルトの名無しさん mailto:sage [05/01/04 14:12:58] >247 解決
249 名前:247 mailto:sage [05/01/04 15:29:13] >>248 ありがとうございます。 それを使ってみます。
250 名前:デフォルトの名無しさん [05/02/03 00:21:32 ] マルチメディアタイマを使って、8Hz(125ms周期)にある関数を起動させたいのですが、 方法(できればコード)を教えて下さい。
251 名前:デフォルトの名無しさん mailto:sage [05/02/03 00:42:03 ] while(1){foo();sleep(125);}
252 名前:デフォルトの名無しさん mailto:sage [05/02/03 02:59:07 ] >>251 煽りはいいけど、マルチメディアタイマ使ってないですね。
253 名前:デフォルトの名無しさん mailto:sage [05/02/03 03:30:26 ] >>252 悔しい?w
254 名前:デフォルトの名無しさん [05/02/03 06:23:35 ] 1次元配列と2次元配列でたとえば int a[6],b[2][3]を確保して a[0]とb[0][0]、a[1]とb[0][1]、a[2]とb[0][2]、 a[3]とb[1][0]、a[4]とb[1][1]、a[5]とb[1][2]が それぞれ同じアドレスを参照してa[0]を変えたらb[0][0]も一緒に中身が変わるようにしたいんだけど #include <stdio.h> void main(void) { int *a[2]; int b[6]; a[0]=&b[0]; a[1]=&b[3]; } って書き方でいいかな? なんか問題ある気がするんだけど他にいい方法ないかな? あとポインタにするのは2次元配列のほうにしてほしいのよ
255 名前:254 [05/02/03 06:30:01 ] ここC#スレだったのか スレ違いスマソ 他スレ行ってきます
256 名前:デフォルトの名無しさん [05/02/03 14:03:04 ] 【質問】 VC++でdouble型の数字を小数点以下を切り捨ててCString型に変換するにはどうすればいいか? CString strAAA; double dBBB; dBBB = (double)50.0; strAAA.Format(_T("%f"), dBBB); とすると、strAAAには"50.00000" という文字列が入りますが、 strAAAには"50"という文字列を入れたいのです。 どうすればいいのでしょうか?
257 名前:デフォルトの名無しさん mailto:sage [05/02/03 14:10:26 ] >>256 %gにしろ
258 名前:デフォルトの名無しさん [05/02/03 14:17:48 ] >>257 サンクス。 MSDNライブラリで %d や %f に関する説明ページが見つからなかったもので。
259 名前:デフォルトの名無しさん mailto:sage [05/02/03 15:05:03 ] >>258 探し方が悪い。 CString::Format()の説明からリンクを二回手繰れば書いてある。
260 名前:デフォルトの名無しさん mailto:sage [05/02/03 15:19:09 ] っていうか、それ以前に、幼児期の直感教育がしっかりなされていない。 書式がprintfと同じではないかとどうして想像できなかったんだろう。 想像していたら%gを試していたはずだ。 知らなかったとしてもprintfの書式で調べていたはずだ。
261 名前:デフォルトの名無しさん [05/02/03 16:18:18 ] 【追加質問】 double型の数字を7桁にすると ***e+006となってしまうのを、7桁の文字列にしたい。 CString strAAA; CString strBBB; double dCCC; double dDDD; dCCC = (double)1234567; dDDD = (double)123456; strAAA.Format(_T("%g"), dCCC); strBBB.Format(_T("%g"), dDDD); とするとstrAAAには"123456"という文字列が入りますが strBBBには"1.23457e+006"という文字列が入ってしまいます。 strBBBに"1234567"という文字列を入れたい場合はどうすればいいのでしょうか? 最高10桁までちゃんと入るようにしたいんです。
262 名前:デフォルトの名無しさん mailto:sage [05/02/03 16:28:41 ] 多倍長浮動小数点演算ライブラリ使えよ
263 名前:デフォルトの名無しさん mailto:sage [05/02/03 16:45:28 ] >>261 %.7g 7の部分は精度。
264 名前:デフォルトの名無しさん mailto:sage [05/02/03 16:46:59 ] 10桁までなら%.10g
265 名前:デフォルトの名無しさん [05/02/03 16:49:45 ] >>263 >>264 デキターありがとう! >>262 よくわかりません。
266 名前:デフォルトの名無しさん [05/02/03 16:50:59 ] >>259 >>260 しんでしまえ
267 名前:デフォルトの名無しさん mailto:sage [05/02/03 16:55:03 ] >>266 >>259 =>>260 =>>263 =>>264 なんだがね。
268 名前:259 mailto:sage [05/02/03 19:08:08 ] 違うよ。
269 名前:259=268 mailto:sage [05/02/03 19:09:08 ] つーか、260,263,264は私じゃない。
270 名前:デフォルトの名無しさん [05/02/03 20:03:35 ] pc5.2ch.net/test/read.cgi/tech/1106490240/247n- 此処で訊いたら、こう言われましたが、何故かC言語の教本のサンプルはは #include <stdio.h> main() { printf("Hello!"); return 0; } の様に空白欄が在るのに、自分が書いたのに空白欄を作ると 何故か上記のアドレスに出た、エラーが出てしまいます 調べても、本にも書いていませんでした、ご教授お願い致します。
271 名前:デフォルトの名無しさん [05/02/03 20:09:55 ] あれ・・・?空白欄がない。 メモ帳で見るとあるんです。
272 名前:デフォルトの名無しさん mailto:sage [05/02/03 20:28:27 ] ネタかなあ・・ ヒント:全角スペース
273 名前:デフォルトの名無しさん mailto:sage [05/02/03 20:29:44 ] >>270 もしかすると、君は全角スペースを入れているのでないだろうか。 使っても良いのは半角スペースとアルファベット、半角の記号のみ。
274 名前:デフォルトの名無しさん mailto:sage [05/02/03 20:32:56 ] ま、全角スペースを解釈しないコンパイラが悪いんだな。 うんうん。
275 名前:デフォルトの名無しさん mailto:sage [05/02/03 20:33:39 ] それは言えてる。
276 名前:デフォルトの名無しさん [05/02/03 20:34:03 ] ありがとうございました 要は空欄を空けてもいいけど、半角を使えと言う事でしょうか?
277 名前:デフォルトの名無しさん mailto:sage [05/02/03 20:35:38 ] だめだこいつ 全然わかってない・・
278 名前:デフォルトの名無しさん [05/02/03 20:40:51 ] すみません・・・ 簡単に言えば、空欄(スペース)は空けない方がいいですよね?
279 名前:デフォルトの名無しさん [05/02/03 20:43:28 ] ブラウン運動を非整数階微積分するプログラムを作成したのですが、上手く動きません。どこがわるいのでしょうか?? 実行結果は数値を出し、エクセルでグラフ化しています。(window.hが使えないため) #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #define KMAX 100 #define XMAX 300 #define PI 3.14159265358979323846 double gar() {double r = 0.0; int i; for(i = 0; i < 10; i++){r += ((double)rand() / RAND_MAX) - 0.5;} return r;} int main(void) {int x, k; float d; scanf("%f",&d); double ek = PI * 2.0 * 0.7 / XMAX; double a = 5.0 – 2*d; double f[XMAX]; double g[KMAX]; srand((unsigned)time(NULL)); for(k = 1; k < KMAX; k++){ g[k]=pow(( ek * rk ),-a/2);} for(x = 0; x < XMAX; x++){ f[x] = 0.0; for(k = 1; k < KMAX; k++){ double kx = ek * rk * x; f[x] = f[x]+g[k]*(gar() * cos(kx) - gai() * sin(kx));} printf("%g\n",f[x]);} }
280 名前:デフォルトの名無しさん mailto:sage [05/02/03 20:51:47 ] >>278 先頭に付けてもいいのは半角スペースとTABのみ。 スペースを空けるのは括弧同士の対応や意味的な違いを付けるためで、それをインデント を付けるといいます。 これをしないとプログラムが見憎くなります。 的確にスペースを空けてください。
281 名前:デフォルトの名無しさん [05/02/03 20:54:30 ] >>280 ありがとうございます!! とりあえず、半角でスペースを空けたら、何の問題もなく 実行できました。 たぶん、全角だったのでエラー出たみたいでした。
282 名前:ななし [05/02/03 22:14:53 ] どなたかC言語でHTTPリクエストを送信できるようなライブラリを ご存知のかたいらっしゃいませんか? ヘッダーを意識しなくてすむような形のもので!
283 名前:デフォルトの名無しさん mailto:sage [05/02/04 00:40:29 ] WinInet
284 名前:デフォルトの名無しさん mailto:sage [05/02/06 23:45:27 ] 質問です。 以下の環境で、外部バイナリ(画像)ファイルを実行ファイルにリンクしたいのです。 何かスマートな方法はあるのでしょうか? 開発環境OS : FreeBSD 5.3 コンパイラ : gcc 2.95.4 調べたこと : binutils の objcopy でオブジェクトファイルに変換n出来るかなと ドキュメントを流し読みしましたが、出来そうにありません。 以上、よろしくお願いします。
285 名前:デフォルトの名無しさん [05/02/09 12:50:59 ] Labeling.c1: "#include" expect "FILENAME"or<FILENAME> このエラーを回避する方法わかる方いますか?よろしくお願いします
286 名前:285 [05/02/09 13:00:42 ] すみません。なんか初歩的入力ミス見たいです
287 名前:デフォルトの名無しさん [05/02/09 13:14:18 ] ウインドウズプログラミングで仮想キーコードを使って 数字を表示したいのですが、0が表示できません。 keybd_event(VK_NUMPAD0,0,0,0); keybd_event(VK_NUMPAD0, 0, KEYEVENTF_KEYUP, 0); 文法的に誤りがあるのでしょうか? わかる方いましたら、お願いします。
288 名前:デフォルトの名無しさん [05/02/09 13:36:43 ] 誰かFTPサーバのソースプログラム教えてくれない? 今すぐ欲しいから誰かお願いします。Cの初心者なんで、そ んなの簡単だよって思うかもしれませんが、どうかC言語 できる人よろしくお願いします。
289 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:41:16 ] Linuxのソースがあるべ、バカだな
290 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:51:38 ] おい!そいつは初心者だぞ。Linuxのソースの見れる方法も ついでに教えてやれ。たぶんわかっとらんと思うぞ。
291 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:55:53 ] おっしゃるとおりです・・・。教えていただけます?
292 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:56:22 ] 嫌だね、プ
293 名前:デフォルトの名無しさん mailto:sage [05/02/09 14:03:09 ] RFC FTPでぐぐれば仕様書が出てくるからそれで作るのもいいかも
294 名前:デフォルトの名無しさん mailto:sage [05/02/09 14:12:10 ] >>287 VK_NUMPAD0の代わりに'0'にしてみたらどう?
295 名前:デフォルトの名無しさん mailto:sage [05/02/09 14:22:03 ] あのー・・・いまいちよくわかりません・・・。どなたかサンプルプログラム 書けるひといます?もしよかったらここに表示していただけたらと思い ます。それをそのまま打ち込んでいくんで・・・。
296 名前:デフォルトの名無しさん mailto:sage [05/02/09 14:26:11 ] ポート20をリッスン、認証できたら、ポート20のコマンドどうりに ポート21でデータ転送。以上
297 名前:デフォルトの名無しさん mailto:sage [05/02/09 15:11:36 ] 私はCommonArchiverProjectのftp.dllを参考にしたことがあるなぁ。 バグがあって笑えたけど。
298 名前:デフォルトの名無しさん mailto:sage [05/02/09 15:13:55 ] わらってはいけない。只で提供してるんだから。 金取ってるやつには罵詈雑言OK
299 名前:デフォルトの名無しさん mailto:sage [05/02/09 15:16:10 ] いやぁ、使ってる人いないんだろうなぁと。<笑えた 尤も、作者に指摘メール送ったが黙殺されたので、本当のところは知らん。
300 名前:デフォルトの名無しさん [05/02/09 17:03:27 ] #include <stdio.h> void main(void) { int i; char a[5]; for(i = 0; i < 5; i++){ printf("何か1文字入力する\n"); scanf("%c",&a[i]); } printf("%c,%c,%c,%c,%c\n",a[1],a[2],a[3],a[4],a[5]); } 非常に簡単な質問で申し訳ないのですが… このプログラムを実行するとforのi=2,i=4のときのscanfが飛ばされてしまいます。 その後の結果表示も何かおかしいのです。 自分なりに調べてはみましたが、一体何が悪いのかがわかりません。 コンパイラはBorland C++ Compiler 5.5を使っています。
301 名前:デフォルトの名無しさん mailto:sage [05/02/09 17:06:20 ] 改行コードもsacanfだな
302 名前:デフォルトの名無しさん [05/02/09 17:37:54 ] void main(void) { int i; char a[5]; // ←範囲は、0〜4までで 5個 char b[1024]; for(i = 0; i < 5; i++){ printf("何か1文字入力する\n"); scanf("%s",&b); // バッファーフォローの危険性があり、実務だと駄目! a[i] = b[0]; } printf("%c,%c,%c,%c,%c\n",a[0],a[1],a[2],a[3],a[4]); } こんな感じだけど、入力は別関数を作ってね!
303 名前:デフォルトの名無しさん mailto:age [05/02/09 17:48:30 ] ださ
304 名前:デフォルトの名無しさん mailto:sage [05/02/09 18:10:25 ] >>302 突っ込みどころ満載だな。 ・バッファオーバフローの心配するなら指定子で制限しろ。 ・配列のアドレスを渡すな。 ・バッファーフォローなんて俺語を作るな。 ・main()の戻り値を勝手にvoidにするな。
305 名前:デフォルトの名無しさん mailto:sage [05/02/09 18:43:32 ] >>300 最後のprintfところでa[1]~a[5]になってるとこをa[0]~a[4]になおして、 それから一回目の入力で入れたい数字を全部連続でいれてみ?2468って感じで 最後の出力だけはきれいにでるとおもうよw
306 名前:デフォルトの名無しさん [05/02/09 21:05:07 ] >>304 で、模範解答は? 文字列の読み込みって、簡単なようで難しいんだよね。 scanf を使って・・・・
307 名前:300 mailto:sage [05/02/09 21:22:25 ] 300です。 皆さんレスありがとうございます。 あれからも考えてみましたが、やっぱりわかりませんでした。 aの配列というのが不味いのかと思って、a,b,c,d,eと定義してみましたが、これもまた同じ結果になってしまいます。 もうあきらめた方がいいんでしょうか。 バグの原因がわからないと、また再発させそうで非常に気になるんですが…
308 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:31:28 ] scanf使うのが悪い fgetsしてsscanf使え
309 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:35:34 ] >>300 まず1文字目を入力した後、Enterを打つだろ。 そのEnterもscanfの%cで入力されているのだろう。 と、俺は予想した。 #include <stdio.h> int main(void) { int i; char a[5]; for (i = 0; i < sizeof a; i++) scanf("%c%*[^\n]%*c", &a[i]); //%*[^\n]は'\n'が出るまで読み飛ばす指定 //%*cは1文字読み飛ばし('\n'まで読み飛ばしたので当然'\n'を読み飛ばす事になる) printf("%c, %c, %c, %c, %c\n", a[0], a[1], a[2], a[3], a[4]); return 0; }
310 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:41:35 ] >>300 301さんが解答ですよ。 scanf("%c",&a[i]); で一文字読み込んだとき、まだ標準入力のバッファには改行文字が残っているのです。 それが自動的に偶数回のscanf(...)の入力となっています。 scanf("%c",&a[i]); fflush(stdin); として標準入力のバッファをクリアしてあげれば、一文字ずつ入力できます。
311 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:47:26 ] >>310 fflushは出力バッファのフラッシュ用なんで残念! stdinに対しては未定義り!
312 名前:デフォルトの名無しさん [05/02/09 22:49:21 ] >>301-310 皆さんどうもありがとうございました。 おかげで解決しました。
313 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:53:31 ] #include <stdio.h> #include <stdlib.h> int GetStdinToInt() { char buf[256]; int result; char* check; while(1){ fgets(buf, 255, stdin); result = (int)strtol(buf, &check, 0); if(check != buf) break; printf("もう一度入力してください:"); } return result; }
314 名前:310 mailto:sage [05/02/09 22:55:12 ] >>311 そのようですね。今調べて認識しました。 www9.plala.or.jp/sgwr-t/lib/fflush.html 今回の解答は www9.plala.or.jp/sgwr-t/c/sec05.html#s5-4 に書いてありました。
315 名前:302 [05/02/09 23:02:16 ] >scanf("%s",&b); scanf("%s",b); ←訂正すんまそ 最近、JavaとVBしかやってないから・・・・ (ーー
316 名前:310 mailto:sage [05/02/09 23:08:39 ] >>300 fflush(stdin) のかわりに、 fseek(stdin, 0, SEEK_SET); が動作保証されています。 でも、今回の場合は314で2番目のURLに書いてあることが一番いいかも。
317 名前:310 mailto:sage [05/02/09 23:11:50 ] 失礼 fseek(stdin, 0L, SEEK_SET); でした。
318 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:35:32 ] simpson法の中で関数を呼び出してその中で積分の計算を行うプログラムを作っています。 しかし、計算速度がものすごく遅いんですがなにかいい方法ありませんか?
319 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:37:51 ] で、今の計算機は?
320 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:50:30 ] >>318 難しいことやってるんだね、学生さん。 おいらにはよく分からないけど...。 www.mech.tohoku-gakuin.ac.jp/nken/java/new2/simpson.html にjavaだけれどコードがのってますよ。 良かったら参考にしてみたら。
321 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:57:32 ] >>320 thx SSEつかって高速化図ってみます、、
322 名前:デフォルトの名無しさん mailto:sage [05/02/11 00:36:27 ] C言語のバージョン教えてと言われた。 どうやって知ればいいんだろうか。
323 名前:デフォルトの名無しさん mailto:sage [05/02/11 00:41:21 ] sにcharを足すstrcatってないの?
324 名前:デフォルトの名無しさん mailto:sage [05/02/11 00:42:42 ] >>322 seclan.dll.jp/c99d/c99d02.htm#dt19990412 の__STDC_VERSION__
325 名前:デフォルトの名無しさん mailto:sage [05/02/11 01:14:37 ] >>323 ありませんよ。 Cで一般的に言われる文字列というものは、最後がヌル文字'\0'で終わることを前提 としています。提供されるシステム関数strcat()などもそうです。 一文字のcharはそういった関数で使用することはできません。 char dest[100]; char src1[] = "abc"; char src2 = 'x'; int len; len = strlen(strcpy(dest, src1)); dest[len] = src2; dest[len + 1] = '\0'; こんな感じですかね。もっとアクロバット的な方法もあるんでしょうが...。
326 名前:デフォルトの名無しさん mailto:sage [05/02/11 01:49:10 ] int n = c; strcat(s, &n);
327 名前:デフォルトの名無しさん mailto:sage [05/02/11 02:14:49 ] >>326 関数内の自動変数の場合、 int n の場合、cを代入した次のバイトがNULLである保証はありませんよ。
328 名前:デフォルトの名無しさん mailto:sage [05/02/11 02:16:47 ] 補足。 CPUのアーキテクチャによって異なります。 言語としてそういったことに依存すべきではないと言いたかったのです。
329 名前:デフォルトの名無しさん mailto:sage [05/02/11 02:50:54 ] >>327 ん? cは1バイトだから他の3バイトは当然0になるでしょう。 しかしこれは endianによっては右に詰まってだめだと思うので >>328 は正しいと 思うけど。 ちなみにこんなのはどう? sprintf(s, "%s%c", s, c);
330 名前:デフォルトの名無しさん mailto:sage [05/02/11 06:51:06 ] >>329 未定義 >>326 char s2[] = {c, '\0'}; strcat(s, s2);でいいじゃん。 C99ならstrcat(s, (char []){c, '\0'});って書ける筈だけど。
331 名前:デフォルトの名無しさん mailto:sage [05/02/11 10:17:54 ] 私はこんな幹事かな。 sprintf(strchr(str, '\0'), "%c", ch); 或いはこう。 char * p = str + strlen(str); p[0] = ch; p[1] = '\0';
332 名前:デフォルトの名無しさん [05/02/27 16:56:10 ] すみません、妙な質問で恐縮ですが、どなたか教えてください。 sprintf() の s ってどういう意味ですか?f は format の意味だと思うのですが。
333 名前:デフォルトの名無しさん mailto:sage [05/02/27 16:59:08 ] stringじゃない?
334 名前:デフォルトの名無しさん mailto:sage [05/02/27 17:01:38 ] sはsecond。fはfirst
335 名前:デフォルトの名無しさん mailto:sage [05/02/27 18:04:22 ] string ですか。ありがとうございました。 scond ですか(ry
336 名前:デフォルトの名無しさん mailto:sage [05/02/28 12:51:53 ] >>332 printf()「系」とかssanf()「系」とか言う言葉があるよ。 先頭の's'はstring、'f'は自分でオープンしたファイル、付かないものは対象がstdinか stdout。結構系統立てられているんですよ。
337 名前:336 mailto:sage [05/02/28 12:53:07 ] メンゴです。 一行目のssanf()はscanf()でした。
338 名前:デフォルトの名無しさん mailto:sage [05/02/28 14:16:48 ] >>336 さらにva_listを引数に取るvprintf/vscanfも有る。当然fとsも有る。 vscanf系はC99で追加されたものだけど。
339 名前:デフォルトの名無しさん mailto:sage [05/02/28 18:51:54 ] springfというのもある
340 名前:デフォルトの名無しさん mailto:sage [05/02/28 22:45:28 ] さらに最新最強はsnprintf。 渡したchar *のサイズを2つ目の引数で指定でき、 そのサイズを超えて書かないことが保障されているのでやや安全。
341 名前:デフォルトの名無しさん mailto:sage [05/03/02 16:40:40 ] アドレスに関する質問。 型は不明で、要素一つのサイズは分かってる場合。 次の要素にアクセスする方法を教えて下さい。 または次の要素へのアドレスを取得する方法。
342 名前:342 mailto:sage [05/03/02 16:42:50 ] サイズがBYTEだってことに気づかなかった....。 解決しました。
343 名前:デフォルトの名無しさん mailto:sage [05/03/09 14:33:38 ] POINT point[3] = { {0,0} , {1,0} , {0,1} }; っていう初期化はできるんですが point[3] = { {0,0} , {1,0} , {0,1} } という風に値を入れることが出来ません 配列全体に値を入れる方法は無いんですか?
344 名前:デフォルトの名無しさん mailto:sage [05/03/09 16:00:29 ] >>343 配列に代入はできません。 精々コピー用の関数を用意するのが関の山です。 要素数が3で固定ならば、構造体にしてしまえば(直値ではありませんが)代入できなくもありません。
345 名前:デフォルトの名無しさん mailto:sage [05/03/09 16:10:27 ] >344 関数でもつくってそれで入力するようにします ありがとうございました。
346 名前:デフォルトの名無しさん mailto:sage [05/03/10 00:43:33 ] Cって、こういうとこアフォだよなあ
347 名前:デフォルトの名無しさん mailto:sage [05/03/10 19:02:05 ] やっぱりRubyがいいね
348 名前:デフォルトの名無しさん mailto:sage [05/03/13 17:13:30 ] cでコンパイルする際に windres: can't open `obj/EK-MAMEko/ui/mame32k.res' No such for directory make: *** [obj/EK-MAMEko/ui/mame32.res] Error 1 こういうエラーが出て困ってるんだけど これってどういう意味かわかる?
349 名前:デフォルトの名無しさん [05/03/13 17:14:00 ] age
350 名前:デフォルトの名無しさん mailto:sage [05/03/13 18:48:41 ] >>347 いや、Rubyは問題外。
351 名前:デフォルトの名無しさん mailto:sage [05/03/17 00:52:33 ] 変数を入れ替えるときに別の変数を用意せず、 X = X ^ Y, Y = X ^ Y, X = X ^ Y; とするのがよくないのはなぜ?
352 名前:デフォルトの名無しさん mailto:sage [05/03/17 00:56:22 ] >>351 数値以外には使えない XとYが同じ変数を指していると上手くいかない
353 名前:351 mailto:sage [05/03/17 01:17:15 ] >>352 なるほど。 これをプリプロッセスでやって構造体なんかを渡しちゃうとマズーだ。 アリガト。
354 名前:デフォルトの名無しさん mailto:sage [2005/03/22(火) 21:55:06 ] new演算子で作ったオブジェクトをdeleteした後に デストラクタでdeleteすると何か問題ありますか?
355 名前:デフォルトの名無しさん mailto:sage [2005/03/22(火) 23:09:33 ] mallocで確保した領域をfreeで開放しますが、 システムはどのようにして、はじめに確保した領域を知ることができるのでしょうか。
356 名前:デフォルトの名無しさん mailto:sage [2005/03/23(水) 01:23:39 ] >>354 deleteしたら、0を入れておけば大丈夫。 >>355 malloc()で戻されたポインタの指すメモリの直前辺りに管理情報を埋めておくのが一般的。
357 名前:デフォルトの名無しさん [2005/04/03(日) 14:07:55 ] 配列同士の数値の比較をしたいのですが、下記のようだとうまくいきません。 どのようにすればよいのでしょうか? for(i=0;i<5;i++) for(j=0; j<5; j++) if(group[i] == group[j] && i != j) count[i]++;
358 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 15:10:03 ] >>357 j = i
359 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 15:22:36 ] >>357 配列の同じインデックスを持つ要素同士を比較したいのであれば、単純な(一重の)ループでいい。 つーか、>357では日本語の説明が足りんし、コードがおかしいし、何がしたいのか判らんのだが。
360 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 00:24:27 ] すみません。初歩的な質問をさせていただきます。 char *func1(){ return "a"; } char *func2(){ char *s = "a"; return s; } こんな2つの関数があったとして、これらが関数の呼び出し元に返ってきた際に 戻り値のポインタが正しい場所を指し示すことはどこまで(いつまで)保障できるんでしょうか? func1は保障できる、func2はできる、それとも両方できない/できる、どこまでなのか…等。 また、私の勉強不足のせいで、両者のメモリ上での違いがいまいちはっきりしてません。 一応どちらでも動作するにはするんですが、いつか不正な参照とかで 落ちちゃうんじゃないかと気になって怖くて夜も眠れません。 参考になるサイトを教えていただけるだけでも結構ですのでよろしくお願いします。
361 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 01:05:29 ] 規格ではどうか忘れたけど、たいがいいけるはず。 どうしても心配ならstatic const char ret_str[] = "a";とかすれば? あとchar *じゃなくてconst char *を使え。
362 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 01:08:07 ] >>360 定数(リテラル)の寿命はプログラムの開始から終了まで。 関数内で宣言されたauto変数の寿命は、関数の開始から終了まで。 char *func1(){ return "a"; /* "a" を指すポインタを返している */ } char *func2(){ char *s = "a"; /* ポインタ s を "a" を指すポインタで初期化 */ return s; /* ポインタ s の値、つまり "a" を指すポインタを返している */ } つまり、どっちも同じ。 リテラルはいつでもどこからでも参照出来るので、戻り値を使ってても大丈夫。
363 名前:360 mailto:sage [2005/04/04(月) 02:05:28 ] >>361-362 ありがとうございます!だいぶスッキリしました。 リテラルに関しては参照先が不正な値になるんじゃないかとかいう 心配は無用なわけですね。逆の場合(変数、関数のポインタ)は気をつけろと。 すみません。あとここからもう一段階お願いします。 実は言うと今、Unix系ソフトの移植作業をやってまして こいつらと同等の動作をするものを作りました。 char *dirname(char *path); char *basename(char *path); basename()はパス名からディレクトリを除いた部分(ファイル名)を返せばいいので 引数のポインタをそのまま使い回してreturn path+pos;のようにして返してます。 dirname()の方は引数で与えられたパス名からファイル名を除いたものを返すものなので、 関数内でdir[MAX_PATH]のように宣言した配列に、引数の文字列からファイル名部分を 除いたものをstrncpyでコピーなどして、最後にdir(先頭アドレス)を戻り値にしてます。 (ちなみにさっきの質問は"."「カレントディレクトリ」を返す場合でした。) 長すぎるのでまとめると、 ・basename()の戻り値は呼び出し先のローカル変数とは無関係である。 ・dirname()の戻り値は呼び出し先のローカル変数に依存している。 この場合だと、dirで確保していたアドレスは戻り先で参照しても安全なのでしょうか? ちゃんと動くし、自分でも大丈夫だと思ってたのに警告が出たので不安になりました。 やたら長くてすみません。何かこれより良い実装方法がもしあればご教授願います。
364 名前:360 mailto:sage [2005/04/04(月) 02:14:47 ] 何度もすみません。つまりさっき私が言ったdirname()の実装は char *func2(){ char *s = "a"; /* ポインタ s を "a" を指すポインタで初期化 */ return s; /* ポインタ s の値、つまり "a" を指すポインタを返している */ } この場合と同じと考えていいんでしょうか?ってことですね。 私の目には全く同じものに映るのですが、間違いありませんでしょうか。
365 名前:デフォルトの名無しさん [2005/04/04(月) 02:15:23 ] floatがもてる最大値はどのように調べればよいのでしょうか?
366 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 02:30:48 ] >>363-364 const char *func3(void){ const char s[] = "a"; return s; /* ローカルな配列 s へのポインタを返す */ } const char *p; p = func(); /* 0, func() の s へのポインタを受け取る */ printf("%p\n", p); /* 1, これは構わない */ printf("%s\n", p); /* 2, これは駄目 */ 0 は何ら構わない。戻ってきたアドレスをコピーしているだけ。 1 も何ら構わない。コピーしたアドレスを表示しているだけ。 2 は駄目。アドレスの先を参照してしまっているから。 何故参照してはいけなかというと、アドレスの先にある func3() の s の寿命は、 func3() を抜けた時点で既に尽きてしまっているから。 func2(), func3() は全然違う関数。
367 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 02:35:17 ] >>365 float.h にある FLT_MAX マクロで定義されてる。 #include <stdio.h> #include <float.h> int main(void) { printf("%f\n", FLT_MAX); return 0; }
368 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 02:50:42 ] >364 ダメ。変数の寿命について学んでください。 1.関数の引数を変える。 void dirname(char *dest,int dest_size,const char *path) 2.静的に保持する。使用に若干注意が加わる static char dir[] 3.動的に確保する。呼び出し側に解放義務が発生する char *dir = malloc()
369 名前:デフォルトの名無しさん [2005/04/04(月) 03:05:49 ] >>367 thx limit.hしか知らなかった
370 名前:360 mailto:sage [2005/04/04(月) 03:13:01 ] そのまま貼っちゃいます。今はこんな状態です。 char* dirname(char* path) { int pos = strlen(path)-1; int lastPathSepFoundPos = -1; static dir[MAX_PATH]=""; while(pos >= 0) { if (path[pos] == '/' || path[pos] == '\\') { lastPathSepFoundPos = pos; break; } else pos--; } if (lastPathSepFoundPos == -1) return "."; // current dir else{ strncpy(dir,path,lastPathSepFoundPos); dir[lastPathSepFoundPos] = 0; return dir; } } static dir[MAX_PATH]="";をchar dir[MAX_PATH]にすると →警告「ローカル変数またはテンポラリのアドレスを返します」 となってました。今考えてみれば当然ですよね。。 >>368 どうもです。ちょうど昨日、その2を回避策としてやってみてたとこでした。 その注意というのは関数へのアクセスが同時に起こるような場合でしょうか? 条件コンパイル(#ifdef-#endif)等が面倒になりそうですが、 1の方法が一番簡単そうなので、その方向でやってみることにします。
371 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 03:14:54 ] ↑static char dir[MAX_PATH]="";の間違いです。
372 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 12:12:39 ] strrchr 使えば簡単にみえるな・・・
373 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 16:49:40 ] すみません最近C++触ったばかしですみませんが class auのコントラクタ関数 au(string s) : enr(s) {}について 文字列をsに代入し enrを生成する時にsを代入すると読めるのですが なぜ au(string s) { enr(s); }とできないんですか? 個人的に関数内容 { }内 は動作命令のみの記述と解釈すれば au(string s) { enr = s; } はenr = s;という動作命令であるから適応であるが { enr(s); }・・・であるから不適と思ってしまうのですが・・ 書いててよくわからなくなってきた・・ au (string s) : enr(s) {}について なぜ : で区切るのかと enr(s)はなぜ{}内に記述してはいけないのかについて詳しくお願いします
374 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 17:09:15 ] >>373 :の後は初期化。{}の中だとメンバ変数への代入になってしまう。 例えば、 class foo { const int bar; foo() : bar(0) {} }; とした場合、この例のように初期化はできるが、 class foo { const int bar; foo() {bar = 0;} }; このような代入はできない。
375 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 17:33:16 ] >>374 全て解決できました。 どうもありがとです
376 名前:デフォルトの名無しさん mailto:sage [2005/04/19(火) 19:50:11 ] 共用体ってどういうときに使うんですか? また利点とかあるんですか?
377 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 00:05:37 ] すみません。教えてください。 下記のようなプログラムを書くと、結果に必ず0.0が混ざってしまい、困っています。 乱数を3つ表示させたいのですが、0.0を含まないようにするにはどうしたらよいのでしょうか? #include <stdio.h> #include <stdlib.h> #include<time.h> #define N 3 int main(void) { int i,j=0,check; double data[N],dia[N],tmp; srand((unsigned)time(NULL)); printf("\n乱数のつもり:\n"); for (i=1; i<=N; i++) {data[i]=rand()%100+(double)rand()/32768.0;} /* 並替えの計算 */ for (i = 1; i < N - 1; i++) for (j = i + 1; j < N; j++) if (data[j] < data[i]) /* <: 昇順, >: 降順 */ { tmp = data[i]; data[i] = data[j]; data[j] = tmp;}; for (i = 0; i < N; i++) printf("%.1f ", data[i]); /*並替えデータの表示*/ }
378 名前:デフォルトの名無しさん [2005/04/20(水) 00:47:24 ] >>376 それくらい調べろよ。
379 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 01:25:42 ] >>376 メモリの節約 同じメモリブロックを複数の型として解釈したい時
380 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 11:52:18 ] >>377 取り敢えず落ち着け。 深呼吸でもした後、data[] の添え字の範囲が 0〜N-1 だと言うことを思い出せ。
381 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 13:25:48 ] >>376 通信などで、整数型や実数型をバイト列と相互変換したい場合、 ポートアクセスなどでビットフィールドとバイト列を相互変換したい場合などに使う。 メリットは、他の方法に較べて簡便に書けること。 デメリットとしてよく言われる非互換性については、元々汎用的でないコードを書く場合には無視できる。 #勿論、それ相応のコメントは必要。
382 名前:デフォルトの名無しさん [2005/04/23(土) 00:09:57 ] C、C++ある程度覚えるまで、どのくらい掛かった?今から、勉強しようと思うのですが、C→C++→C#か、Javaって感じに逝こうかと思うのですが、C++から移行した人、する人は、C#か、Javaどっち盗ります?←煮たスレあるけどノリで…ゴメソ
383 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 00:19:39 ] >>382 無意味なアンケートするな。
384 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 10:31:57 ] 無意味っていいよね。 まぁ答えてやんなよ。発想の無い、IT土方プログラマーの行く末までを……ハァー
385 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 12:04:48 ] なんでこう勉強する前にウダウダ人に聞くやつが多いんだろう
386 名前:デフォルトの名無しさん [2005/04/23(土) 12:20:20 ] >何でこう勉強する前にウダウダ人にきく奴が、多いのだろう って、自分も聞いてるじゃんWWW プギャー、と云ってみたくなる。まあ、オイラは聞かなかった、お陰でプログラマーなんかになってしまった訳だが…ハァー
387 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 12:23:43 ] ageんなやボケがあああああ、と自分に云ってみるテst すまんです
388 名前:デフォルトの名無しさん [2005/04/26(火) 11:13:11 ] ∧_∧ ( ´∀`) < ぬるぽ
389 名前:デフォルトの名無しさん [2005/04/27(水) 10:54:11 ] 1+2+3+・・・+N を計算する関数を作成せよ。
390 名前:デフォルトの名無しさん mailto:sage [2005/04/27(水) 11:48:18 ] >>389 int f(int N){return((1+N)*N/2);}
391 名前:デフォルトの名無しさん [2005/04/27(水) 11:57:21 ] 1/2/3/・・・/N を計算する関数を作成せよ。
392 名前:デフォルトの名無しさん mailto:sage [2005/04/27(水) 12:05:48 ] >>391 int f(int N){return0;}
393 名前:デフォルトの名無しさん [2005/04/27(水) 12:45:24 ] >>390 感動した >>392 ワロタ
394 名前:デフォルトの名無しさん mailto:sage [2005/04/28(木) 04:36:53 ] >>391 double f(int N){double x=1.0;if(N>1)while(N)x*=(double)N--;return 1.0/x;}
395 名前:394 mailto:sage [2005/04/28(木) 04:42:40 ] あんま変わらんけど、こっちの方が良かったかな…? double f(int N){double x;for(x=1.0;N>1;N--)x*=(double)N;return 1.0/x;}
396 名前:デフォルトの名無しさん [2005/05/04(水) 18:36:51 ] ttp://ex10.2ch.net/test/read.cgi/news4vip/1115125763/18 ↑exitするならfcloseもfreeもしなくていいんだけど  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ってあるんですが、そうなんですか? ファイルディスクリプタはプログラム終了時に閉じられるとしても メモリリークっすよねコレ
397 名前:デフォルトの名無しさん [2005/05/04(水) 19:00:23 ] >>28 ガッ
398 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 19:58:54 ] >>396 大丈夫。真っ当なOSならアプリケーション終了時にきちんと開放する。
399 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 20:06:09 ] >真っ当なOSなら
400 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:08:18 ] OSが真っ当かどうかに関わらず真っ当な規格合致処理系なら、 exit()を呼んでいなくてもmain()からreturnすればファイルは閉じられる。 main()でのreturnはexit()の呼び出しと等価とも書かれている。(他の関数からmain()を呼んだ場合は別だが) しかしfree()の方にはそのような記述は見当たらない。 (free()を呼ばないで終了するとどうなるかということは書いていない)
401 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:14:15 ] >>400 >(free()を呼ばないで終了するとどうなるかということは書いていない) free() を読んで終了すればどうなるかということも書いていないけどな。
402 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:23:14 ] またこの話題か 好きにすれ
403 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:31:48 ] gotoを使うのは不味いのでしょうか? どなたかおすえてください
404 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:57:09 ] Cで質問です。 変数nの値が??のとき、filename??という名前のファイルを開きたい という場合に、fopenの第1引数にはどのように記述すればよいでしょうか? 先にsprintfを使えばできるようですが 直接引数の部分に記述して何とかする方法がないかと思いまして。
405 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 23:19:00 ] >>404 char *filename(int n) { static char buf[100]; sprintf(buf, "filename%d", n); return buf; } fopen(filename(n), ... )
406 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 23:26:43 ] >>405 なるほど!その手がありましたか! おめでとうございます!ありがとうございます! (ノ´Д`)ノ 彡┻┻
407 名前:デフォルトの名無しさん mailto:sage [2005/05/05(木) 19:22:25 ] 次にこんなことをしてハマると見た。 rename( filename(1), filename(2) ); // filename.1 を filename.2 にバックアップ
408 名前:デフォルトの名無しさん mailto:sage [2005/05/05(木) 23:19:39 ] >fopenの第1引数 そもそもパスとか編集しなくていいのか? 素直に >先にsprintfを使え
409 名前:デフォルトの名無しさん mailto:sage [2005/05/05(木) 23:28:04 ] そこでC++ですよ。 std::string filename(int n) {return "filename" + boost::lexcal_cast<std::string>(n);}
410 名前:デフォルトの名無しさん [2005/05/09(月) 09:50:14 ] C言語をはじめたばかりであまりわからないのですが、 ビットシフトはなんの役に立つのでしょうか?
411 名前:デフォルトの名無しさん [2005/05/09(月) 09:51:19 ] p6222ed.kyotac00.ap.so-net.ne.jp/ うはっwwwwwwwwwwwwwww っうぇwwwwww っうぇうぇwww wおkwwwwうはっwww おkwww っwwwwww うぇwww
412 名前:デフォルトの名無しさん [2005/05/09(月) 10:07:08 ] ttp://EAOcf-526p83.ppp15.odn.ne.jp/ おkwwwwwwwwwwwwおkうぇおkwwwwww うはっwwwwwwwwwwwwwwwwwwwwwwwwwwwww うはっうはっwwwwwwwwwwwwwww wwwwwwwwwwwwっっうぇうぇ うはっ
413 名前:デフォルトの名無しさん [2005/05/09(月) 10:14:46 ] pdf791d.tokynt01.ap.so-net.ne.jp/ wwwおkwwwwwwうぇwwwwwwwwwっうぇ w おkwwwっうぇうはっwwwwうぇwww wっうぇうはっwwwwwwwwwwwwwwwwww
414 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 16:35:01 ] >>410 ビットシフトしたいときに役に立つ
415 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 18:01:05 ] あと、2進数の桁をずらしたいときにも役に立つね。
416 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 18:29:55 ] >>410 任意の上位Nビットを取り出したいとかその逆をしたいときとかに。 DWORD dw = 0x12345678; WORD wHigh = dw >> 16; // 0x1234 WORD wLow = dw & 0xffff // 0x5678 DWORD dw2 = dw << 16 | wLow // 0x12345678
417 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 18:16:54 ] <質問> ピクチャポックに表示した画像をマウスドラッグで範囲選択します。 その選択範囲をマウスのドラッグ中、リアルタイムに枠線で囲みたいのですが どういう処理が一般的でしょうか? DrawLineで線を書いたり消したりとかは、おかしいですよね?
418 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 18:53:11 ] >>417 >>1-10 を見ろ。 回答が欲しければ Windows 系のスレに行くんだな。
419 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 20:15:27 ] XOR
420 名前:417 mailto:sage [2005/05/11(水) 23:15:27 ] すまそん。 他で聞いてきます・・・。(・・`)
421 名前:417 mailto:sage [2005/05/12(木) 00:23:25 ] >419 もしかして、私へのヒント? そうだったら、ありがとうございます。 ビット反転させたらいいのかなー。 とりあえず、C#の過去ログ見てます。
422 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 10:11:02 ] int main(void) { double i; for(i=1.0; (int)i<=9; i=i+0.1) { printf("%d", (int)i); printf("%lf ", i); } return 0; } iが5.000000のとき(int)iがなぜ4になるのか分かりません。 小数部を切り捨てて5になると思うのですが。
423 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 11:35:49 ] >>422 誤差の累積。誤差について調べられたし。
424 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 16:14:34 ] >>417 まさしくそれ向けの関数がMFCにあった気がする。
425 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 16:21:49 ] MFCつーか、、、APIであるけど 今はもうXORの時代じゃないのかもなあ
426 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 16:26:18 ] いちおー書いておくか APIなら DrawForcusRect MFCだと CDC::DrawForcusRect それよりも、CRectTracker クラス使ったほうがいいかも
427 名前:426 mailto:sage [2005/05/13(金) 16:39:17 ] ってここC#のスレだった・・・ スレタイで半角#使ったのか・・・
428 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 07:08:29 ] >>427 気にするな ごみスレだ
429 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 09:16:29 ] LSI C-86でコンパイルしてるんですが unknown dimensionっていうエラーは どんな間違いをしてる可能性があるんですか?
430 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 09:45:41 ] >>429 >どんな間違いをしてる コンパイラの選択。 まぁ、恐らくは二重以上の配列で、要素数の指定が漏れているんだろうけど。 int func(int a[][]); とかね。
431 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 10:21:35 ] 二次元と表現せずに二重と表現するのが Cらしいなw
432 名前:デフォルトの名無しさん mailto:sage [2005/07/05(火) 16:40:43 ] クラス継承で教えて class AandB : public A , public B { } というのを作ろうとしたら Aのメンバー関数で A::data() Bのメンバー変数で char * B;;data と名前が衝突していた. B::dataのみにアクセスするにはどうすればいいの?
433 名前:デフォルトの名無しさん mailto:sage [2005/07/05(火) 17:26:48 ] >>432 B::dataでダメなら、using
434 名前:デフォルトの名無しさん mailto:sage [2005/07/05(火) 21:16:22 ] うまくいった class AandB : public A , public B { AandB(){ this -> B::data } } でアクセスできた もうひとつ疑問が class AandB : public A , public B { class B *pB; AandB(): pB(&B) { } } pBにポインターの値を代入したいんだけどできない
435 名前:デフォルトの名無しさん mailto:sage [2005/07/05(火) 22:17:22 ] >>434 class AandB : public A , public B { class B *pB; AandB(): pB(static_cast<B *>(this)) { } }; キャストは要らないが一応書いておいた。
436 名前:デフォルトの名無しさん [2005/07/10(日) 11:50:07 ] namespace your { struct girlfriend { void lips(); }; } namespace my { struct girlfriend { static void lips(); }; class wife : your::girlfriend { public: void kiss() { girlfriend::lips(); } }; } さて、wife::kiss() するとgirlfriend::lips()によって 奪われるのは基底クラスの your::girlfriend::lips() か、 はたまた同じnamespaceにある my::girlfriend::lips() なのか? VC7, gcc3.1 では基底クラス your:girlfriend::lips() で、 BCC564では 名前空間を優先して my::girlfriend::lips() でした。 どっちがせーかいでしょう? 雰囲気からして基底クラスを採るのがスジっぽいけど。
437 名前:デフォルトの名無しさん [2005/07/10(日) 14:17:24 ] みなさん、コンパイラなどする時はコマンドプロントからやっていますか? それとも編集もまとめて出来るフリーツールなど使ってらっしゃいますか? まだプログラミング始めたばかりなんですが、コマンドプロントの方法もやはり覚えといた方がいいんですかね?
438 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 14:31:47 ] プログラムを学習する目的が限定されていて、コマンドプロンプトを使わなくて済むなら、 覚える必要はない。 授業でどうしてもやらなきゃいけないとか。 プログラミング全般に詳しくなりたいなら、覚えておいた方がいい。
439 名前:デフォルトの名無しさん [2005/07/10(日) 19:03:07 ] 学習目的でプログラムを組む際、教科書によってはコマンドプロンプトを前提としているものがある。 だから、教科書しだいかな。 個人的には、ツールを組み合わせることが楽なので、覚えるといいとおもう。
440 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 20:20:05 ] 簡単な、初級プログラムというのはどうしても、コマンドラインを使った処理、 入出力になるからな。憶えるべきというか、憶えないと学習効率が悪いと思うぞ。 世の中に出ている初級者用のC言語情報なんて、ほとんどがコマンドラインを 前提としているからな。
441 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:20:27 ] やはりそうですか 分かりました、ありがとうございました。
442 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 23:02:56 ] IDEかmakeかって話だろ。 そんなの当面どうだっていいだろ。
443 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 19:15:31 ] 質問 int a = 1; if ( a == (int)0) { ... } のように、キャストした方がいいの?
444 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 21:53:36 ] いらない
445 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 22:06:14 ] >>443 ただの整数は元からint型。
446 名前:デフォルトの名無しさん mailto:sage [2005/07/20(水) 17:02:19 ] この速度ならぬるぽ
447 名前:デフォルトの名無しさん [2005/08/09(火) 01:41:05 ] Cを使った開発で質問させて頂きたいのですが ありがちなDBを使った業務システムを開発するときに MFCと.netフレームワークを比べると どちらの開発効率が上でしょうか。 漠然とした質問ですが 主観等々で構いませんので、ご意見いただけますでしょうか。
448 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 01:59:47 ] MFCも.netもCじゃなくC++だが。
449 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 02:00:46 ] ありがちなDBを使った業務システムは開発効率より優先する ものがあるんでねぇ? oo4o+vbに1票
450 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 09:50:43 ] スレ違いだったらすみません。 自分用にデバグしやすいmalloc/realloc/freeを実装してみようと 思っていますが何を参考にすればいいかわかりません。 シンプルで小さい実装のソースがあったらURLを教えて下さい。
451 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 11:50:46 ] void *my_malloc(size_t size) { void *p = malloc(size); ...hoge ...fuga return p; } みたいのじゃだめなのか。 メモリアロケーションを実装するのは大変だと思うが。
452 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 13:21:22 ] #define malloc my_malloc
453 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 14:20:45 ] すみません、質問が悪かったですね。 端的に、mmap を実装してみたいんです。 ある組込の環境で、malloc がかなり遅い 環境があるんですが、自分で実装してみたら それを速くできるのか、それとも自分だともっと 遅くなってしまうのか、興味があったのです。
454 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 16:08:50 ] mmapの実装って環境依存じゃないだろうか。ソースならunix系オープンソースosのを 見ればいいだろうけど、参考にはならないような。それはそのままハードorOSの性能 くさいし。欲しいのは多分メモリプールだろうからやるとしてもmallocをラップして プールするのがいいんじゃないかと。 おもろい文章 www-6.ibm.com/jp/developerworks/linux/041217/j_l-memory.html
455 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 19:51:06 ] >>453 www.uclibc.org/ あたりの実装は参考になるんじゃないかな。 MMUあり、無しの両方に対応する実装がある。
456 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 12:17:32 ] あるファイルが存在するかどうかを確認するにはどうしたらよいのでしょうか? 出来るだけ環境に依存しない方法がよいのですが
457 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 13:06:53 ] >>456 環境依存しないと言うことなら、存在する≒読めるということで fopen(targetFile, "r")が成功するかどうかで判断するのが無難。 まぁ、大抵の環境でaccess()かstat()はあると思うがな。 #某環境では、access()がfopen()で実装されているのは内緒。
458 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 12:41:09 ] K&Rにmalloc/freeの実装が乗ってる。
459 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 23:34:15 ] C言語一通り学んだらDirextXとWINAPIどっちやればいい?
460 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 00:28:38 ] >>459 C++ 特にDirectXをやるのなら絶対。WinAPIをやるのでもなるべく。 そもそもDirectXはライブラリなどで隠されていない限りある程度WinAPIで下準備が要るから、 結局WinAPIの知識が要る。
461 名前:デフォルトの名無しさん [2005/08/31(水) 11:32:56 ] a, bが変数だとして(…の中で変更される可能性あり)、 (1) if (a == b) { while(a == b) { … } // ★ } と (2) if (a == b) { do { … } while (a == b) ; // ★ } は同じ意味ですか? 今(1)のコードで★部分にコードを追加したいので、 (2)に変えても問題ないか知りたいです。
462 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 11:34:53 ] while(a == b) { … } if (a == b) { // ★ } のほうがまだ読みやすくない・・・?
463 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 11:39:19 ] >>461 同じだと思う。 >>462 それは意味が変わってる。
464 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 12:01:38 ] >>461 積極的に(2)に変えたい理由は? 別に(1)のままでもいいと思うのだけど。
465 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 14:03:12 ] 最初に一回無駄な比較が増える
466 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 14:12:57 ] >>462 >461 (…の中で変更される可能性あり)
467 名前: ◆cFJoQcQH2U mailto:sage [2005/08/31(水) 14:16:11 ] 「神戸 330 ふ 1234 この車はどうのこうの(箇条書き)」 sscanfで、上のような文字列を読み取るのに、 "%s %d %s %d %s"を使っているのですが、最後の備考欄に 空白文字が入っているとすべてが読み取れません。 「残りすべての文字列」というマークはありますか? WinXp,VS.netです。
468 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 15:15:43 ] >「残りすべての文字列」というマークはありますか? そんなものは無い。 fgetsで行末まで読んで、読んだ文字列を変換するのが良い
469 名前: ◆cFJoQcQH2U mailto:sage [2005/08/31(水) 15:25:43 ] そうですか・・・ありがとうございます。 fgetsで読んで、4つ目の改行文字以降を読み取ることにします。
470 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 15:28:51 ] "%s %d %s %d %[\x01-\xff]"
471 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 21:45:00 ] 条件演算子の? : は右結合ということですが、 a() { printf("a\n"); return 0; } b() { printf("b\n"); return 0; } c() { printf("c\n"); return 0; } d() { printf("d\n"); return 0; } e() { printf("e\n"); return 0; } f() { printf("f\n"); return 0; } g() { printf("g\n"); return 0; } main() { a() ? b() ? c() : d() : e() ? f() : g(); } とした場合、結果が a e g となりました。 ? : の右結合とは、どの部分に掛かってるんでしょうか?
472 名前:デフォルトの名無しさん [2005/08/31(水) 21:46:37 ] ↑結果を見ると左結合に見える、ということです。
473 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 21:52:57 ] >461 なぜ(2)の形にしたいのかがわからない。 必ず一回余分な判定が入るのが嫌程度なら(1)の書き方をお勧めする。 上から下への流れで読みやすい。 (2)だとループ条件がループの終わりにならないと分からないので 一部の人間からは嫌われてたりする。 自分は(1)はだね。
474 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 21:55:04 ] 参考に void loopfunc(void) { clock_t s[2], e[2], t[2]; int i, j;int a, b; s[0] = clock(); for(j=0;j<100000000;j++){ a = 4568992; b = -5621984; if(a==b){ while(a==b){ a %= b; a *= b; } b %= a; } e[0] = clock(); t[0] = e[0] - s[0]; s[1] = clock(); for(j=0;j<100000000;j++){ a = 4568992;b = -5621984; if(a==b){ do{ a %= b; a *= b; }while(a==b); b %= a; } e[1] = clock(); t[1] = e[1] - s[1]; printf("t[0] = %d\nt[1] = %d\n", t[0], t[1]); }
475 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 22:08:54 ] >>474 if(a==b)の括弧が閉じてないので修正しましたが、 うちの環境では t[0] = 2593 t[1] = 2384 (2)が速いみたいですね。
476 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 22:10:32 ] >>471 C言語の有名なバグです。 条件演算子の仕様的にも左結合で合ってます。
477 名前:デフォルトの名無しさん [2005/08/31(水) 22:16:06 ] >>476 違うよー 1?2?3:4:5 と書けるのは右結合だから。(結果は3) >>471 結合規則と評価順序は関係ないよ。
478 名前:デフォルトの名無しさん [2005/08/31(水) 22:18:25 ] つまり右結合の掛かる場所は、括弧で括ると 1?(2?3:4):5 こういうことね。
479 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 22:21:11 ] >>478 し、知らなかった・・ これでもC言語暦10年なんだが。
480 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:21:11 ] main(argc, argv) int argc; char *argv[]; { ↑↓ main ( int argc, char *argv ) { どうちがうの??
481 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:35:22 ] 上 K&R 下 ANSI 上は古い書き方で、普通は下の書き方を使う。 意味上の差はない。
482 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:37:48 ] と思ったが、よく見ると下のargvがchar*になってやがる。 それ以外は同じ。 あと、戻り値の型もちゃんと明示したほうが良い
483 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:51:47 ] cdeclなら別にどうでもいいよ
484 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:00:31 ] int func(float a) { return sizeof(a); } と int func(a) float a; { return sizeof(a); } では違う結果を返すコンパイラもある。
485 名前:480 mailto:sage [2005/09/01(木) 00:37:29 ] ありがとうございます。 したのargvに[]が無いのは転記漏れでした。申し訳ない。
486 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:38:47 ] なんで? ビット長が違う環境とか?
487 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:44:35 ] >484の後者はfloat aと書いてもdouble aと解釈されるのか。 流石にそこまで古いCは知らないなぁ。
488 名前:デフォルトの名無しさん [2005/10/02(日) 20:41:06 ] 以下の問題を配列を必ず使ってプログラミングしてください。 [課題2] 正整数を入力し、それをローマ数字で表示するプログラムを配列を使って作りなさい。 1000がM, 100がC, 10がX, 1がIであるので、たとえば、123と入力するとCXXIII、1365はMCCCXXXXXXIIIIIと出力できればよい。 <入力例> Input: 3247 <出力結果> MMMCCXXXXIIIIIII お願いします。
489 名前:デフォルトの名無しさん [2005/10/02(日) 20:56:21 ] 初めて投稿します。 STLのiostreamヘッダを汎用テキストマッピングとして利用したいのです。 stringはtypedefで、std::basic_string<TCHAR>〜としたのですがが、 iostreamはどうすればいいんでしょ? なお、MS-Visual C++ ver 6.0で実験しています。 <ソース> #include <tchar.h> #include <iostream> int _tmain(void){ // この coutとwcoutを一つにまとめたい。 std::cout << _T("Hello C++ World!\n") << std::endl; return 0; } 識者の皆様、ご教授お願いしたいです。
490 名前:デフォルトの名無しさん [2005/10/02(日) 21:00:07 ] 関数化してください。 briefcase.yahoo.co.jp/light_blue_8671 問題はいってます
491 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 21:43:22 ] >>489 coutとかは型ではないからtypedefできない。 だからこうするしかないと思う。cinやcerr、clogも同じ。 #ifdef UNICODE #define tcout std::wcout #else #define tcout std::cout #endif
492 名前:デフォルトの名無しさん [2005/10/02(日) 22:22:03 ] >>491 ご返答ありがとうございます。 なるほど、 cin, cout, cerr, clogはIOストリームオブジェクトなので、 defineで置き換えるしかないですか・・・ ご指摘を参考にしてみます。
493 名前:デフォルトの名無しさん [2005/10/02(日) 22:57:40 ] >>488 (前半) #include "ctype.h" #include "string.h" #include "stdlib.h" #include "stdio.h" // 文字 static char code[4][2]={"I","X","C","M"}; int main(void){ int i, j, max, len, dec[4]; char inpbuf[5];// 4桁 + NULL char outbuf[37];// 9文字 x 4桁 + NULL // 初期化 memset(outbuf, 0, sizeof(outbuf)); memset(inpbuf, 0, sizeof(outbuf)); // 入力 printf("input:"); scanf("%5s", inpbuf);
494 名前:デフォルトの名無しさん [2005/10/02(日) 22:59:11 ] >>488 (中) // 入力チェック len=strlen(inpbuf); for (i=0; i<len; i++){ if (!isdigit(inpbuf[i])){ printf("数値を入力してください\n"); return -1; } } i=atoi(inpbuf); if (i>9999 || i<0){ printf("数値は0-9999までの範囲で入力してください。\n"); return -1; } _itoa(i, inpbuf, 10); len=strlen(inpbuf); // バッファを数値に変換して max=len-1; for (i=max; i >= 0; i--){ dec[i]=inpbuf[i]-48; if (dec[i]!=0) max=len-i-1; }
495 名前:デフォルトの名無しさん [2005/10/02(日) 23:00:56 ] >>488 (後半) // 文字列作成 for (i=0; i <= max; i++){ for (j=0; j < dec[i]; j++) strcat(outbuf, &code[max-i][0]); } // 出力 printf("%s\n", outbuf); return 0; } くどいので、部分部分は修正してね
496 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 00:27:12 ] 質問させてもらいます。 SDL_ttfでの表示の際にUnicode文字列が必要なのですが、 S-JISからUnicodeへの変換にはやっぱりICU使うしか無い でしょうか?
497 名前:デフォルトの名無しさん mailto:age [2005/11/01(火) 00:27:50 ] 質問なのでageさせて貰います。
498 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 00:55:13 ] いいえ
499 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 03:39:10 ] ぽいんた〜がわかりまっせ〜ん おしえてくださ〜い
500 名前:ハーピィ mailto:sage [2005/11/01(火) 05:56:56 ] E・∇・ヨノシ <500ゲット♫
501 名前:496 mailto:sage [2005/11/01(火) 10:13:50 ] 変換するのは大げさなのでデータにUTF-8で埋め込むことにしますた。
502 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 18:29:34 ] >>496 ちなみにマルチバイト文字(char型)にShift-JISが使われていれば、mbstowcsという標準関数が使えなくもない。
503 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:32:17 ] 文字コードについてなのですが・・ a b c d eなどはASCIIコードって事はわかってるのですが "あ"とか"い"とかは何コードなのでしょうか strcpy(str,"あ"); printf("0x%X\n",str[0]); printf("0x%X\n",str[1]); とか調べてみたのですが全然判らなくて・・
504 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:48:32 ] > a b c d eなどはASCIIコードって事はわかってるのですが ここで既に終わっている
505 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:52:52 ] ぇー数値ASCIIの数値を当てはめて出力しても期待される文字が出力されましたが
506 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:55:18 ] >>503 Windows系ならShift-JISでUnix系ならEUC-JP。ほかは知らん。 Cとしては文字コードは一定の基準さえ満たせば何でも良いということになっているから、 特定の文字コードに頼り切ったコードは書くな。
507 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:57:36 ] >>502 すみませんorz ありがとうございました
508 名前:デフォルトの名無しさん [2006/01/08(日) 18:59:22 ] 演算についてなんですけど C言語において被除数=0の時の計算っていうのはまずいですよね? 例えば 0/3 0%7 などです。 うちの処理系では例外処理が加えられて0を返すようになってるみたいなんですけど どうでしょうか
509 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 19:44:30 ] んなこたーない。 もし、本当に例外処理が行なわれているとしたら、その処理系は糞未満だ。
510 名前:デフォルトの名無しさん [2006/01/08(日) 19:58:49 ] >>508 0以外を返すのは数学的にもアーキテクチャから見てもおかしい。
511 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 20:00:12 ] 0 で割る方じゃなくて、0 が割られる方なのな。 >C言語において被除数=0の時の計算っていうのはまずいですよね? なんでまずいって思ったの?いずれも答え 0 で数学的にも正しい結果でしょ? どっちかに負数が入る場合は C89 では処理系定義の部分は入るけど、それでも結果自体は 規定されるから例外処理なんてない。 (C99 では 0 方向に丸めるよう規定されてる) 「5.4 整数除算」を参照の事 ttp://seclan.dll.jp/c99d/c99d05.htm#dt19990607
512 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 20:55:50 ] >>509-511 すいません少しこんがらがってました 0が除数である場合の計算でしたorz
513 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 21:38:36 ] >512 手元に C99 の規格書しかないけど、 > 9899:1999 6.5.5/5 >The result of the / operator is the quotient from the division of the first operand by the >second; the result of the % operator is the remainder. In both operations, if the value of >the second operand is zero, the behavior is undefined. ということで未定義動作だから何が起こっても規格準拠だね。
514 名前:デフォルトの名無しさん [2006/01/13(金) 09:35:53 ] こんにちは。質問です。お願いします。 C言語のif文で、条件式の中でfloat型の変数は使えますか? こういう処理なんですが・・・ float fA,fB; : : if(fA != fB) { : } 例えば、for文の条件式とかで浮動少数型の変数を用いるのが 明らかに変なのは分かります。では、if文は、どうなのですか?
515 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 09:56:57 ] >>514 できるけど、やっぱり紙の上での計算と違って誤差が出るから static float tol = 0.0001f; float a,b; if((a-b) < tol) { /***/ } とやるべきだろうね。
516 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 11:05:56 ] >>515 if ( abs(a-b) < tol ) { /***/ } なのでは?tolの値は妥当などうかも疑義がありますが
517 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 11:24:44 ] for(double d = 0.0; d < 100.0; d += 0.5) 誤差だけ気にしなければ別に変じゃないな
518 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 11:40:29 ] 変だよ
519 名前:デフォルトの名無しさん [2006/01/13(金) 15:27:00 ] sin(x)のマクローリン展開から√2の近似を計算するプログラムを作成したいんですが、どなたかご指導ご鞭撻の程お願いします。 sin(π/4)を2倍するところまではわかるんですが、マクローリン展開がどうもよくわからないので
520 名前:514 [2006/01/13(金) 18:21:16 ] 早速の回答を有り難う御座います。 因みに、VC++を使っているのですが、前述の問題に関して Debugモード、或いはReleaseの最適化を外すと 何ら問題が出ないのです・・・ コンパイラのバグなのか、誤差の問題なのか 悩むところです。。
521 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:41:40 ] 自分のソースが悪い、に一票
522 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:55:29 ] >>520 浮動小数点数は同じ値でありながらビットイメージが違う場合も存在するから、 >516 の方法で丸めた方がいいよ。 tol の値は #include <float.h> して FLT_EPSILON 使えばいい。
523 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 20:30:06 ] 見事にC言語のスレになっててワロタw
524 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:10:14 ] 質問です。 #include<stdio.h> #include<string.h> #define N 32 void sorting(char*,char*); main(int argc,char *argv[]){ char read[N*N],Memory[N][N],CASL[N][N][N]; sorting(CASL,read); } void sorting(char *CASL,char *read){ int i=0,j=0,k=0,z=0,I,J; while(1){ I=i*(N*N);J=j*N; if(*(read+z) == '\0') break; else if(*(read+z) == ' '){ *(CASL+I+J+k) = '\0'; j++;k=0; } else if(*(read+z) == '\n'){ *(CASL+I+J+k) = '\0'; i++;j=0;k=0; } else{ *(CASL+I+J+k) = *(read+z); k++; }z++;}} 上記のプログラムでコンパイルするとwarning: passing arg 1 of `sorting' from incompatible pointer type のエラーメッセージがでてしまいます。関数間での受け渡しで発生しているエラーだと思うのですが、どこを直せばいいのでしょうか?教えてください。
525 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:50:26 ] >>524 マルチうぜえ
526 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:50:43 ] >>524 CASL の宣言か、sorting() の引数宣言 (プロトタイプ含む)
527 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 22:23:00 ] floatが整数かどうかの判定ってどうします? if(x - (int)x == 0.0f) で良いの? キャストに頼るのが変な気がするんですが・・・。
528 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:01:34 ] > floatが整数かどうかの判定ってどうします? 移植可能な方法で、判定する方法はない。
529 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:09:40 ] >>528 こら。modfがあるだろ。 ちなみにfloat版はmodff。
530 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:36:58 ] >>529 modf(...) == 0 とするのか? >>527 とたいして変わらんぞ、それ。 浮動小数点に対して == 演算子を使う奴は、大抵バカ であることがまたもや実証されたな...。
531 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:46:27 ] >527だとintの範囲を超えたときに何が起こるかわからんからmodfの方がまし。 そもそも整数かどうかの判定が必要な値にfloatを使っていることがおかしい気がするが。
532 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 09:20:37 ] >>531 整数というか、小数の位が存在するかどうかで処理を変更したかったので。 modfで誤差を考慮しとけば良さそうですね。
533 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 17:17:00 ] >>523 スレタイだけで >>1 を読まない間抜けが多いって事です。
534 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 12:41:38 ] 配列の初期化について質問です。 int test[4] = {10, 100, 50, 1}; などの様に初期化したいのですが、 宣言した後で、このように一気に初期化する方法は無いのでしょうか? 具体的には、配列をクラスのメンバに持っていて、 コンストラクタで初期化したいのですが、 test[0] = 10; test[1] = 100; ・ ・ ・ などのように、一つずつ初期化していくしかないのでしょうか?
535 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 12:52:00 ] >>534 それしかありません。
536 名前:534 mailto:sage [2006/01/24(火) 14:38:34 ] コンストラクタでローカル変数 int l_test[4] = {10, 100, 50, 1}; を作って、それをメンバの配列にmemcpyすることで解決しました。 あまりキレイな解決策ではないですが、 実際は2次元配列で要素が多かったので、どうしても一気に初期化したかったのでした。
537 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 22:06:31 ] > コンストラクタでローカル変数 > int l_test[4] = {10, 100, 50, 1}; > を作って、 まあ、最近のマシンなら気にすることではないのだろうが、 static const をつけておいた方がちと早くなるかもし れない。
538 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 06:19:38 ] 何故vectorかなにかのコンテナを使わないのだろう。
539 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 07:40:22 ] >538 それはさすがにスレ違い。
540 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 17:51:24 ] このスレで「スレ違い」って言われてもな
541 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 16:02:03 ] スレタイに半角の#を入れようとしたのが問題
542 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:59:12 ] >>541 これってCすれじゃなかったのか!!!!
543 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 23:08:23 ] 気付いてない子がいたのか・・・
544 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:17:53 ] for(;;); for(;;) といった文を見たんですがこういう文はどういう働きをするんでしょうか?
545 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:27:06 ] ループ・ザ・インフィニット! ・・・とかって言うとスタンドっぽくね?
546 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:41:02 ] >>544 forの括弧の中の3つのそれぞれの部分は省略できる。 2つのセミコロンの間の継続条件を省略すると無限ループになる。
547 名前:デフォルトの名無しさん [2006/02/03(金) 16:06:33 ] >>546 すいません、ちょっと言葉足らずでした。 for(初期条件;終了条件;加算); for(初期条件;終了条件;加算){ 文; } こんな感じの文だったのですが、 最初のfor文の最後に ; が入った形をみたことがなかったので、 この2個のfor文がどのように動くのかを教えてほしいです。
548 名前:デフォルトの名無しさん [2006/02/03(金) 16:16:08 ] rr
549 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 16:21:58 ] >>547 ↓こう書いたら解る? for(初期条件;終了条件;加算) ;
550 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 16:23:07 ] >>549 何もしないんですね。orz 理解できました。ありがとうございます。
551 名前:デフォルトの名無しさん [2006/02/03(金) 21:35:03 ] #include <stdio.h> int main(){ int *pa[500],*pb[500],*pc[500],*pd[500],*pe[500],*pf[500]; int i; for(i-0;i<500;i++){ *pa[i]=5; *pb[i]=5; *pc[i]=5; *pd[i]=5; *pe[i]=5; *pf[i]=5; printf("%d,%d,%d,%d,%d,%d\n",*pa[i],*pb[i],*pc[i],*pd[i],*pe[i],*pf[i]); } return 0; } このプログラムってかなりやばいよな;
552 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 21:35:49 ] >>551 マルチうざい
553 名前:デフォルトの名無しさん [2006/02/04(土) 16:45:57 ] 構造体についての質問です。 #include<stdio.h> struct string{ char *a;}; struct string data[]={ "a","b","c","d",}; int main(){ struct string *p; char *s; int i; scanf("%s",&s); p=data; for(i=0;i<=3;i++){ if(s==(p+i)->a){ printf("%s\n",(p+i)->a);}} return 0; } 以上をコンパイルして実行した場合、scanfで入力した値がa~dのどれかでも if(s==(p+i)->a)が真と判断されないのですが、間違いについての教唆をお願いします。
554 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 16:57:35 ] >>553 >間違いについての教唆をお願いします。 教え唆すのか?
555 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:13:29 ] そそのかされてどうする俺… 普通に間違いについて教えてほしいです
556 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:23:21 ] たとえば、scanf で "abc" という文字列を読み込んで、 それらの文字一つ一つ( 'a' とか 'b' とか 'c' とか '\0' とか・・・)は メモリの何処に保管されるのさ? 今、値を記憶できる変数の領域は string 構造体のアドレスを保持する p と char のアドレスを保持する s と int の値を保持する i しかないぞ?
557 名前:582 mailto:sage [2006/02/04(土) 18:00:29 ] >>553 よーし、パパそそのかしちゃうぞ。 よくコンパイル通ったな。 構造体のメンバが char へのポインタ1つだけと判っていれば、 構造体配列 = { char*その1, char*その2, ・・・ , char*そのn } なんて初期化が許されるのか ・・・ 知らなかった (マジ ここは、 struct string data[]={ {"a"}, {"b"}, {"c"}, {"d"} }; じゃなきゃ い神埼だと オモテタ。 でも、バグの本質は、>>556 の指摘のとおり。 scanf() で、ポインタ変数にコンソール入力しようとしているが、おまえには特定の char の場所を示すポインタ ( アドレス ) が判るのか? メモリの中身に詳しいヤツ だな。
558 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 18:23:12 ] 本当に唆しているだけだなお前ら。
559 名前:553 mailto:sage [2006/02/04(土) 19:25:32 ] >>556-557 charで*でなく適当な長さの配列を宣言して if()で照会するのは2つの配列[0]に格納した値…ってことですね。 どうみても俺の勉強不足です。本当にありがとうございました
560 名前:デフォルトの名無しさん [2006/02/13(月) 03:43:09 ] 関数を定義するときに void xxx(int yyy) int A; char B; { 〜〜〜 } こんなふうに書かれたものを良く見かけるのですが このときAとBは何か特別なものなんですか?
561 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 08:39:53 ] >>560 void xxx(int yyy) { ...; } ならば、古いスタイルで void xxx(yyy) int yyy; { ...; } となるがそのことだろうか。 それならばプロトタイプ宣言のなかった時代の名残だ。
562 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 10:34:29 ] Borland C Compilerのエラーメッセージについて詳しく解説している 『bcc32_messages』というファイルがあるのですが(中には数百のHTMLが 入っていて、エラーと警告1つ1つに細かい説明が書かれている)、どなたか これの英語版がどこにあるかご存じないでしょうか?
563 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:47:15 ] COMMAND getCommand(char *c) { int i, j, k, l, len; char comtmp[128], fileNametmp[128], comExtmp[128]; COMMAND command; len = strlen(c); for(i=0; i<len+1; i++){ if(c[i] == '-'){ for(j=0; c[i]!='\0'; j++){ i++; if(c[i] == '@'){ comtmp[j] = '\0'; for(k=0; c[i]!='\0'; k++){ i++; /*printf("\nc[%d] = %c\n", i, c[i]);*/ if(c[i] == '>'){ /*printf("\n>>in\n");*/ for(l=0; c[i]!='\0'; l++){ i++; comExtmp[l] = c[i]; printf("\nc[%d] = %c\n", i, c[i]); } }
564 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:48:36 ] if(c[i] == '\0'){ comExtmp[k] = '\0'; command.com = malloc(sizeof(char)*(strlen(comtmp)+1)); command.fileName = malloc(sizeof(char)*(strlen(fileNametmp)+1)); command.comEx = malloc(sizeof(char)*(strlen(comExtmp)+1)); strcpy(command.com, comtmp); strcpy(command.fileName, fileNametmp); strcpy(command.comEx, comExtmp); return command; } fileNametmp[k] = c[i]; } }else if(c[i]!='\0'){ comtmp[j] = c[i]; } } }else if(c[i]=='\0'){ break; }
565 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:52:41 ] } command.com = NULL; command.fileName = NULL; command.comEx = NULL; return command; } 質問です。 このプログラム、-xxxxxx@yyyyyy>zzzzzz (x, y, z は不定) という文字列から command.com = xxxxxx command.fileName = yyyyyy command.comEx = zzzzzzz に文字列を分けて入れるプログラムです。 printfが変なところに3つあるのはデバッグのためなのですが、上から3つ目のprintfをコメントアウトするとバグが起こり、 コメントアウトしないでprintf出力するとバグが起こりません。なぜでしょうか? -insert@123.bmp>rgb と入力した時、fileNameにstrlen()で文字列数を調べたところ、 3番目のprintf()をコメントアウトしなかった場合、7文字と正確に入っていて。 コメントアウトした場合、11文字とでます。 コンパイラーはbccの5.5で、windowsXPを使用しています。 Σ( ゜д゜)うわ プログラム超見づらい。 すみません;;
566 名前:542 mailto:sage [2006/04/22(土) 00:08:46 ] ほら、皆間違えるw
567 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 18:37:12 ] 実行ファイル(***.exe)の作成の仕方がわからないのですが…。
568 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 15:38:33 ] >567 一行目に #!/bin/sh って書いて chmod +x してから、ファイル名に.exeをつけるだけだよ。
569 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 21:47:48 ] 今日はじめてc言語のテキストを買いました。 初心者です。 コンパイル時?に インクルードファイル ’stdio.h’をおーぷんできない とエラーメッセージが出てきました テキスト読んでもわかりません 解決方法があれば教えてください
570 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 22:20:47 ] >>569 きちんとインストールしたか? 特にBorland C++ならbcc32.cfgなど。
571 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 22:41:25 ] >>570 どもです cfgファイルを作ったんですが コンフィグレーションファイル中の オプションの間違い と 難しいですね
572 名前:デフォルトの名無しさん [2006/04/28(金) 07:22:00 ] コンパイルするとstudio.hが見つからないと出るのですが、バグですか?
573 名前:デフォルトの名無しさん [2006/04/28(金) 07:29:26 ] stdio.hだよ。studioじゃない。
574 名前:デフォルトの名無しさん [2006/04/28(金) 11:15:51 ] stdioがスタンダードI/Oだって知らないのかな
575 名前:デフォルトの名無しさん [2006/04/28(金) 17:05:46 ] Cmachineと言うフリーソフト持っている方いませんか? 公開終了してたので・・・orz 持ってる方うpお願いします…
576 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 17:08:37 ] >>575 C のスレと間違うならまだしも、まるっきりスレ違い。 阿呆は帰れ。
577 名前:575 [2006/04/28(金) 17:19:26 ] >>576 書き忘れましたが、C言語のソフトです・・・ あほですいません・・・orz
578 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 21:19:52 ] 初心者で本当にすみません scanf関数を使っていたときに、パラメータに"&"を付け忘れました 俺のPCはあぼーんですか?
579 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 21:30:13 ] >>578 心配なら再起動しろ。
580 名前:578 mailto:sage [2006/04/28(金) 23:13:51 ] >>579 ありがとうございます。 さっき電源落としたんで、後で立ち上げてみます。 授業でscanf習った時に先生に死ぬほど脅されてたんで正直ガクブルです
581 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 00:34:50 ] ワロタ
582 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 01:04:58 ] -|"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" bcc32.cfg コンフィグレーションファイル中の オプション間違い:-|"c:\Borland\Bcc55\include" というエラーが出てしまいます どうすればいいでしょうか? 教えてください。
583 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 02:22:18 ] |とIが区別出来るフォントを使えばいいと思うよ
584 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 12:16:12 ] >>583 ホントですか? 半角入力にですか。 テキストでは |とl の区別がなく書いてあるのでわかりずらいです。
585 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 12:28:03 ] >>583 ありがとうございました |とiの違いですね。
586 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 15:13:16 ] warota
587 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 11:27:23 ] >>580 死ぬほど脅すくらいなら、最初っから教えなきゃいいのになぁ。
588 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 13:47:17 ] LSI C-86 Ver.3.30 試食版のことでお尋ねします、OSはWindows2000です エスケープシーケンスを使いたいと思ってなんとか使えるようにはなりました。 しかし、カーソルを全角用の2文字分の長い方に変えるのはどうやってやったらいいでしょうか
589 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 15:34:00 ] ↑同じ質問を違うスレでしていますが、いろいろ試行錯誤した結果での話です 決してマルチをしようとしたつもりはございません 何なら無視して頂いてもかまいません
590 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 16:20:17 ] それ以前にスレ違いだ。 >>1 を読んでいないことがバレバレだぞ。
591 名前:デフォルトの名無しさん [2006/05/08(月) 16:23:18 ] >>1 よりもスレタイが重要だと思う。
592 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 17:36:16 ] だから間違えたって言ってるだろ
593 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 20:57:59 ] ttp://cgi.2chan.net/up2/src/f137696.txt このコードをCygwinでコンパイルした結果 $ gcc -o client client.c client.c: In function `main': client.c:14: error: storage size of `server_adrs' isn't known とエラー吐かれたのですが、修正方法が分かりません 修正方法教えていただけませんか?
594 名前:593 mailto:sage [2006/05/08(月) 22:09:10 ] すいません、ソースURL間違えてました ttp://namihei.zone.ne.jp/upup/up/56166.txt です、お願いします
595 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 11:45:14 ] >>593 だから激しくスレ違いなんだってばさ。 書き込む前に>1を読むとか直前の数レスを眺めるってこともできないのか? cygwinスレかネットワークスレ辺りで聞いて味噌。
596 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 20:49:10 ] スペースで区切られた文字列を分割する関数を作ります。 ・連続するスペースはひとつの区切りとしない ・スペースがない場合は全ての文字列を返す ・頭や後ろにつくスペースは無視 ・返す文字列がない場合はNULLを返す ・初期値の文字列はNULLを引数に与えている間に変更されないもとする ・#include<string.h>は使わない ですが、さっぱりわかりません。 どうか教えてください。
597 名前:596 [2006/05/09(火) 20:57:45 ] 引数は( char * , const char * )です。 第1引数は区切られた文字列の格納先 第2引数はスペースで区切られた文字列(次の文字列を探す時はNULLを指定) です。
598 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 20:59:26 ] 宿題なら宿題のスレッドへ行くが吉。
599 名前:デフォルトの名無しさん [2006/05/10(水) 00:11:15 ] #include <stdio.h> main(){ float x=0.0; double xx=0.0; long i,n=100000; for(i=1;i<=n;i++){ x=x+1/(float)(i*i); xx=xx+1/(double)(i*i); } printf("from 1/1^2 to 1/%d^2, x(dbl)=%f, x(flt)=%lf\n",n,xx,x); x=0.0; xx=0,0; for(i=n;i>=1;i--){ x=x+1/(float)(i*i); xx=xx+1/(double)(i*i); } printf("from 1/%d^2 to 1/1^2, x(dbl)=%f, x(flt)=%lf\n",n,xx,x); } 1/1^2+1/2^2+・・・+1/100000^2を計算するプログラムを作成せよという問題で、1/1から加えたときと1/100000から加えたときとそれぞれフロートとダブル型の4パーターン 比較する課題なんですが、実行するとバグってしまします。このプログラムのどこおかしいですか?コンパイラはborlandgccです
600 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:16:41 ] >>599 まずおかしいのはスレッドの選び方。ここはC♯のスレッドです。 次におかしいのは日本語。パーターンってなんです? またおかしいのはコミュニケーション能力。バグってしまうだけでは何も通じません。 更におかしいのはコンパイラ。borlandなのかgccなのかはっきりなさい。
601 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:18:13 ] >>600 すげー眠いのでもうだめです。今日はねます。すいませんでした
602 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:18:31 ] >>599 >>595 は見えてますか?
603 名前:デフォルトの名無しさん [2006/05/10(水) 00:23:46 ] ここをC言語のスレとして扱っちゃ駄目なのか? >>599 iが65536以上の時、i*iは32ビットでは表現できないので、オーバーフローしているんだろう。 (double)(i*i)の代わりに(double)i*iとすればいい。
604 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:31:29 ] >>603 動作するようになりましたが、結果がおかしくなりました
605 名前:デフォルトの名無しさん [2006/05/10(水) 00:54:51 ] >>604 ごめん、括弧が要る。 ((double)i*i)
606 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:57:38 ] >>603 >ここをC言語のスレとして扱っちゃ駄目なのか? じゃ、重複スレなわけね。
607 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 01:01:02 ] そういうことになるな。
608 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 13:23:27 ] じゃ削除だね
609 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 15:33:33 ] そういえば3月・4月のスレ削除依頼がまだ処理されてないな。
610 名前:デフォルトの名無しさん [2006/06/03(土) 01:37:14 ] f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める 初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力する方法を教えてください。
611 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:03:53 ] >>610 細かな調整は勝手にやれ #include <iostream> using namespace std; double f(double x){ double fx; fx = cos(x) - x*x ; return fx ; } double bisection(double a, double b,double (*)(double),int prc); int main(){ double a,b; double k; cout << " a : " ; cin >> a ; cout << " b : " ; cin >> b ; k = bisection(a,b, f,100); cout<<"cos(x) - x^2 := " << f(k) << " at " << k << endl; return 0; } (2分法は次)
612 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:04:35 ] 続き double bisection(double a, double b, double (*func)(double ),int prc){ if (func(a)*func(b) >= 0) return a; //意味ないし a で十分w double up, lo , m; if( func(a) > func(b) ){ up = a; lo = b ;} else { up = b ; lo = a; } double workprod; int workint ; int counter=0; while(1){ m= (up + lo)/2; workprod = func(m); workint = ((int)(workprod * 1000000)); // /100.0; if(workint==0){ cout << "counter value = "<< counter <<endl; return m; } if(workint > 0) up=m; if(workint < 0) lo=m; counter++; if (counter > 20000) break; } return 0.0; }
613 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:55:14 ] >>611-612 1.宿題に答えるのはスレ違い 2.>>1 も読めないカスは失せろ
614 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 23:02:06 ] >>613 1? 笑わせるなヨ ここは元々利用価値のないクズスレ 悔しかったら削除依頼出して来いヤw 612も読めねえクズが
615 名前:デフォルトの名無しさん [2006/06/03(土) 23:14:16 ] カススレ晒しage
616 名前:デフォルトの名無しさん [2006/06/03(土) 23:20:45 ] すいません、初心者なのですがdupという関数について教えてください。 openしたファイルポインタAをdupで複製?した場合というのはAをclose すれば複製したファイルポインタもcloseされるのでしょうか? dupの認識が違っていたらすいません
617 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:27:25 ] 単利計算と複利計算を行うプログラムについて、質問させてください。 環境はWindowsXP.VS.NET2003。Win32コンソールアプリケーションです。 void main() { float a,r,c;/*r:金利c:複利*/ int i,y,method; /*預ける年数*/ printf("いくら預けますか?"); scanf("%lf",&a); printf("何年間預けますか?"); scanf("%d",&y); printf("運用方法を設定してください。単利なら0,複利なら1を入力してください。"); scanf("%d",&method); if(method==0){ printf("金利はいくら(%%)ですか?"); scanf("%f",&r); for(i=1;i<=y;i++){ a +=a*(r/100); } printf("元本は%f円になります\n",a); } else if(method==1){ printf("複利はいくら(%%)ですか?"); scanf("%f",&c); for(i=1;i<=y;i++){ a = a*(1+r/100); } printf("元本は%f円になります\n",a); } else printf("終了します。\n"); } ですが、いざ元本を出そうとすると、Stack around the variable 'a' was corrupted. と表示されてしまいます。お力添えの程出来たらよろしくお願いいたします。
618 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 10:03:00 ] >>617 > scanf("%lf",&a); scanf系において%lfはdobuleを意味する。 floatを使う必要なんてない。全部doubleでいい。 そもそもお金が絡むのに浮動小数点数を使ってよいのかという問題もあるが。 void main()を使う必要もない。int main()でいい。
619 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 21:18:38 ] >>618 ありがとうございました。 単利の計算が間違っていた(複利と一緒だったorz)。 ので直しましたが、それ以外はうまくいきました。 小数点以下は二桁まで取ることにしました。 ありがとうございました。
620 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:02:45 ] scanf("%d",&r); scanf("%d",&h); A=ff (r,h); ff=f2; V=ff (r,h); printf ("表面積=%f 体積=%f",A,V); return 0; }(後は省略) この問題でhとrをよみこみたいんですけど こういうふうに書くとどんな数字を読み込んでも答えが0になって しまうんですけどどこが間違ってますかね・ ちなみにscanfのかわりにh=1とかって定義すればしっかり値はでます。
621 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:03:58 ] すいません途中しかコピペしてませんでした。こんな感じです #include <stdio.h> #define PAI 3.14159 double a,b,r,h,A,V; double f1 (double r2,double h2); double f2 (double r2,double h2); main(void) { double (*ff)(double r2,double h2); ff=f1; scanf("%d",&r); scanf("%d",&h); A=ff (r,h); ff=f2; V=ff (r,h); printf ("表面積=%f 体積=%f",A,V); return 0; }
622 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:14:35 ] うはぁ、突込みどころが満載だ。 ・doubleで計算したいならPAIは精度が足りない。 ・そもそもPAIってなんだよw ・変数は極力グローバルに置かない方がいい。 ・f1()とf2()が外部にあるなら、宣言はインクルードファイルで行なう方がいい。 ・関数名は特別な理由でもない限り、中身が判る名前にしよう。 ・main()の戻り値型は書くべき。 ・実験的にやってみたいだけなら止めないが、関数ポインタを使う必然性がない。 ・scanf()で型指定子を%dにするならint *を渡す必要がある。 ・逆に、double *を渡したいなら型指定子は%lfだ。 ・そもそもここはC♯の立て損なったネタスレだ。
623 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:19:13 ] ほんと、ごめんなさい でも解決しました><
624 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:23:44 ] 愚かな俺に教えて下さいまし、みなさま・・・ BYTE byData = 0x0f; byData = byData << 4; (VC .net SP 適用なし) これ実行すると byData が 0 になる。 3 ビットシフトだとちゃんと 0x78 になるのに・・・。 なぜだぁぁぁぁぁ!!
625 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:47:36 ] >>624 自己解決 VC .net のシンボルウォッチのバグですた・・・ おぃおぃ、VC6 から劣化してどーすんのよ MSさん〜〜orz
626 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 05:49:05 ] 2つ整数を入力して商と剰余を求めるんですが・・・ 20-6=14 14-6=8 8-6=2 3回引いたので商が3、剰余は2、というふうに求めろ、という問題です。 商は4、剰余4と出てしまいます。 #include <stdio.h> void main(void) { int a,b,c,d,e,f; printf("2個の正の整数を入力\n"); scanf("%d %d",&a,&b); if (b>=a) { c=b; b=a; a=c; } d=a-b; e=1; while (d>=0) { d=d-b; e=e+1; } printf("商%d 剰余%d",e,d); }
627 名前:デフォルトの名無しさん [2006/07/19(水) 07:17:44 ] d>=0だったら一回余分に計算しちまいますね・・・ 自己解決しました。スレ汚しすんません。
628 名前:デフォルトの名無しさん [2006/08/15(火) 08:13:19 ] 巨大な乱数ファイルの後ろから1文字ずつ消していき、 ファイルサイズを2GByteにすることってできますか? ファイルサイズを取得するまではいけたのですが、 1文字ずつ消す方法がわかりません。 消す方法はありませんか?
629 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:09:04 ] >>628 一文字ずつじゃなきゃいけないの? ファイルサイズを単純に切り詰めるだけでいいならbsd/POSIX系関数で truncate()/ftruncate()なんてのがあるけど。
630 名前:デフォルトの名無しさん [2006/08/15(火) 11:14:03 ] #include <stdio.h> void mystrcpy(char *strA, char *strB); int main(void) { char str1[11], str2[11]; puts("Input str1[11]"); fgets(str1, 10, stdin); mystrcpy(str1, str2); printf("str1 = %s\n", str1); printf("str2 = %s\n", str2); return 0; } void mystrcpy(char *strA, char *strB) { int i; for(i=0; *(strA+i); i++){ *(strB+i) = *(strA+i); } } strcpy関数を自分なりにつくっていたところ、上のようなものができました。 ですがコンパイルして実行すると文字列のコピーはうまくいっているものの、 変な文字列(文字化けした文字)も出力されてしまいます。 どこらへんがおかしいのでしょうか? (環境はWinXPHome、コンパイラがBorland C++ 5.1.1です) また、先週からC言語を勉強し始めたのですが、 ポインタを引数にしたり戻り値として利用するところが自分には少々難しいと感じています。 何かわかりやすい本やウェブサイトがあったら紹介していただけないでしょうか。
631 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:19:39 ] >>630 文字列の終端の'\0'をコピーしていない。
632 名前:630 [2006/08/15(火) 11:31:59 ] おお、まさにその通りです。 助かりました。 while(*(strB++) = *(strA++)); として解決しました。
633 名前:デフォルトの名無しさん [2006/08/15(火) 13:35:40 ] >>629 一文字ずつじゃなくてもいいのですが、 ケツから2MByteくらいを消したいんです。 学校の課題なんで、切り詰めるだけでもばれないとは思いますが・・・。 #もし乱数データじゃなかったらばれるか。 #でもメモリ足りなくて開けないし・・・。
634 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 11:48:34 ] ここってC#スレ?
635 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 08:22:41 ] CとC#を一緒にすんなヴォケ
636 名前:タイトルのシャープが剥がされることも知らないのだろうか mailto:sage [2006/10/15(日) 10:39:11 ] >>635 >1
637 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 10:46:47 ] 立てた奴の意図などどうでも良い。
638 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 14:28:51 ] >>633 き ゃ ぴりん ☆ き っく ! でググれ
639 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 13:56:33 ] 質問です。 const int getHoge(){ return m_nData;} というように、返り値にconstをつける意味はなにかあるのでしょうか? ポインタなどを渡している場合ならわかるのですが、intやshortの場合の必要性がわかりません。
640 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 16:38:07 ] >>639 製作者がconstなんだと叫びたいとき。 というのは冗談だが、Cではともかく、C++では違いが全然ないわけではない。 int foo(); const int bar(); template<typename T> void hoge(T& x); void f() { hoge(foo()); //エラー:xはint&になるが、非constな参照型のインスタンスは右辺値で初期化できない。 hoge(bar()); //xはconst int&になり、constな参照型のインスタンスは右辺値で初期化できるのでエラーにならない。 } まあ普通はこんなことを気にする必要はない。
641 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 17:04:47 ] >>640 ありがとうございます。 微妙な違いですね。 別のことを試してみたところ、const int getHogeは、 int n = getHoge() とできてしまいました。全然constじゃないじゃん! 「エラー値とかだから計算する必要ないでしょ!だからconst!」って使い方をしようかと思ったのですが…。 素直にエラーはenumで型つけてやるほうがよさそうです。 ありがとうございました。
642 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 18:50:47 ] >>641 そりゃぁ代入しちゃえばconst性は失われますがな。 でないと、int foo = 100;すらできなくなってしまう。
643 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 10:06:58 ] /libpathの指定でProgram Filesみたいな空白のある場合ってどうすればいいのでしょうか? #pragma comment (linker, "/libpath:\"/Program Files/XXX/lib\" ") としてみましたがうまく動いていないみたいです includepathの指定も#pragma でできないのでしょうか?
644 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 21:14:26 ] DrawStringでタブ"\t"を表現する方法を教えていただけないでしょうか 検索しようにも上記単語だと難しいので困ってます
645 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 11:40:13 ] 方法 : 描画されたテキストにタブ ストップを設定する msdn2.microsoft.com/ja-jp/library/2c6tzes6 (VS.80).aspx
646 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 12:51:09 ] >>645 ありがとうございます そちらの参照先のように、決められた形(というのでしょうか)で表現したいのではなく 1 \t 222 \t 333 44444 \t 555 と表示する場合に3と5の表示開始位置が揃うようにしたいのですが 方法はないでしょうか
647 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 17:26:01 ] 学校の課題で使うのですが、ガウスの消去法で4行4列の式を解くプログラム乗ってるサイトありますか? サイトから引っ張ってきていいと言われたので・・・ 探したんですけどいっぱいあってどれが正しいのかわかんなくて
648 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:37:54 ] 結果が正しければどれでもいいのでは
649 名前:131 [2007/01/25(木) 21:12:22 ] すみません、誰か分かる人はいませんか? どうしてもC言語でJPEG画像を表示したいんです。 おねがいします。
650 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:22:39 ] 適当に解凍してただのビットマップを取り出せばいい。
651 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:47:22 ] jpeglibとかあるだろ
652 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 22:01:39 ] 次に131がレスするのは2010年頃と予想
653 名前:デフォルトの名無しさん [2007/02/15(木) 23:14:58 ] 質問です!動的メモリ確保をつかったクラスみたいなものを作りたいんですが、 malloc() とfree()を使う方法では一つの関数内で完結させれば上手くいくのですが、 複数の関数でそれをやると上手く行きません。例えば↓では、関数b()で エラーとなってしまいます。何故でしょうか?もう弱り果てています… #include<stdio.h> #include<stdlib.h> void a(int*, int); //メモリ確保 void b(int*, int); //メモリ開放 main(int argc, char* argv) { int size; int* array1; int* array2; size=10; //うまくいく array1 = (int*)malloc(sizeof(int)*size); free(array1); //うまくいかない!(bのところでメモリ領域破壊が…orz) a(array2,size); b(array2,size); } void a(int* array, int size){ array = (int*)malloc(sizeof(int)*size); } void b(int* array, int size){ free(array); }
654 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:24:48 ] > void a(int* array, int size){ array = (int*)malloc(sizeof(int)*size); } arrayはarray2のコピーであり、それを書き換えたところでarray2にmallocの戻り値は代入されない。 したがって未初期化のarray2をbに渡し、それをfreeしようとしてお亡くなりになる。 やるならvoid a(int** array, int size) { *array = (int*)malloc(sizeof(int)*size); }
655 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:40:54 ] >>653 関数a()に渡したarray2は、array2自体が何ら設定されていないのだがあんたの使うコンパイラは警告してくれないのか? オプションで警告レベルを調整できるのなら引き上げておくことを進めておく。 で、件の目的なら>654でもいいがint * a(int size) {return malloc(sizeof(int) * size);}でもいいね。
656 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 01:07:52 ] #include <stdio.h> void f(int i) {i = 42;} void g(int* p) {*p = 42;} int main(void) { int x = 7; f(x); printf("%d\n", x); g(&x); printf("%d\n", x); return 0; } 上と同じ理屈。短絡的に言えば引数経由で値を返したいときには*の数を1個増やすということになる。 #include<stdio.h> #include<stdlib.h> void MyAlloc(int**, int); void MyFree(int*, int); int main(void) { int size = 10; int* array2; MyAlloc(&array2, size); MyFree(array2, size); return 0; } void MyAlloc(int** array, int size) {*array = (int*)malloc(sizeof(int) * size);} void MyFree(int* array, int size) {free(array);}
657 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 19:47:47 ] 共有メモリ上にポインタを利用した連結リスト作成したいけど どうやって作ればいいのですか?
658 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:52:37 ] >654-656 有難う御座いました!なぜダメなのかも解りました。 これで課題の〆切に間に合いそうです.。。
659 名前:デフォルトの名無しさん [2007/03/02(金) 19:45:06 ] Windowsでマイクロ秒まで測る方法を教えてください 環境は、WindowsXP+bcc32です。
660 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 17:46:55 ] >>659 どんなアプリ作ろうとしてんの? そもそもXPはRTOSじゃねーからマイクロ秒でなんらか の値がとれたとしても精度はないよ?
661 名前:デフォルトの名無しさん [2007/03/10(土) 13:47:24 ] Cを勉強したいんですが まず最初に読んだらいい本ってありますか? 種類が多すぎてどれがいいか分からないんですけど
662 名前:デフォルトの名無しさん [2007/03/10(土) 22:36:29 ] 起動されているスレッドを順番に停止する関数を作りたいんですが、 何の関数を使えばいいんですかね? pthread_join()は起動しているスレッドが自分で終了するまで待ってる関数だから 無限ループしているスレッドを終了できなし。 pthred_exit()はpthread_join()の戻り値を引数に使うからpthread_join()使わないと無理だし。 誰かお願いします。教えてください。
663 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:09:47 ] >>661 ナカーマ しかし俺はさっきコンパイルという言葉を知ったモロ初心者><
664 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 16:42:11 ] 推薦図書/必読書のためのスレッド PART34 pc11.2ch.net/test/read.cgi/tech/1173930196/l50
665 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:59:56 ] #include <windows.h> #include <stdio.h> void main() { double a; a = 2/6; printf("%f\n", a); } VC6にて上のように単純に2÷6を計算したら0が出力されます。 0.33333・・・を出したいのですがどうすればいいのでしょうか?
666 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:08:06 ] ↑ 解決済みです
667 名前:デフォルトの名無しさん [2007/05/14(月) 22:11:03 ] windowsXP上でcのプログラミングをしたいのですが フリーのものでコンパイラ、エディタなどでお勧めのものを教えてください なるべく日本語のもので見易さ、編集しやすさ最優先で、 linux上でも動かしやすいものであれば嬉しいです(←これはついでなのでそこまで重要でもない)
668 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 23:51:43 ] 残念ながらcは英語をベースにした言語なので、「日本語のc」はありません。
669 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:39:33 ] 下らないレスするくらいなら相手するなよ… >>667 好きなの選べ ttp://homepage3.nifty.com/mmgames/c_guide/p_compiler.html
670 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:49:55 ] >>667 Linuxなら、どのディストリにもgccが入っているだろうし、vi(vim)かそれが嫌ならemacsがあるだろ。 それを踏まえて、WinXPでもcygwin入れてgccを使えばいいし、取り敢えずvimでいいだろ。
671 名前:下らなさの2乗 mailto:sage [2007/05/15(火) 10:15:29 ] >>668 「c」などという言語はありません。
672 名前:デフォルトの名無しさん [2007/05/20(日) 03:27:08 ] OS:VineLinux コンパイラ:gcc こんばんは、ppm形式(フルカラーraw形式)の画像のピクセルごとの,R,G,Bの色のデータを メモリを動的に確保して1次元の配列にぶち込みました。 これを任意の角度回転しようと考えているのですが、 どうも1次元の配列ですと直交座標で扱いにくく困っています。 そこで新たに二次元配列を動的に確保して・・・とも考えたのですが 元画像、出力画像のデータを取り込んでいるので、得策でもないような気がします。 なんとか直交座標系として扱いつつ、元画像を回転させて出力画像を作る方法ありませんでしょうか? ソースがあるだとかよい案があればよろしくお願い致します。
673 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 03:50:33 ] >>672 座標計算する関数を作ってしまうとか。 pc11.2ch.net/test/read.cgi/tech/1179301993/99
674 名前:デフォルトの名無しさん [2007/05/20(日) 06:03:17 ] printfの書式で14.850000や2.00や5.012000の様に小数点以下で最後に0が続く場合、 その0を省略する方法を教えて下さい。
675 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:16:09 ] >>674 (っ´▽`)っ printf("%.0f\n", d);;
676 名前:デフォルトの名無しさん [2007/05/20(日) 08:19:40 ] ’0’、’1’、’2’、’3’を’-1’、’0’’、’1’、’2’に置き換えるためにhand=C-’0’-1とするのですが、この式の間の『’0’』の存在意義がよくわからないです。
677 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:29:08 ] >>676 (っ´▽`)っ >hand=C-’0’-1 このCには文字が入っているんじゃないかな? このhandには数値が入っているんじゃないかな? Cに'3'が入っている時を例に挙げよう。 '0' = 0x30 = 48 '3' = 0x33 = 51 hand = 51 - 48 - 1 = 2 つまり、文字を数値に変換するために'0'の値を引いているの。 '0'(文字の0)と0(数値のゼロ)は違うのはわかるよね。 メモリに格納される時のビット列が違うの。 2進法で考えると '0'は00110000、0は00000000で格納されるよ
678 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:32:40 ] >>674-675 それよりも%gだろ
679 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:34:52 ] >>674 >>678 (っ´▽`)っ そうだった! %.0fだと小数点以下が全く出なくなっちゃうね☆
680 名前:デフォルトの名無しさん [2007/05/20(日) 08:38:50 ] あっ、はい。文字としての扱いのままでatoiとかはしてありませんでした。 大変ありがとうございます。ところで、、'0' = 0x30 = 48 '3' = 0x33 = 51 とゆう式の流れはまだ学習していません。できれば教えて下さい。
681 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 09:01:43 ] >>680 (っ´▽`)っ 文字コードだよ。 ISOとかそういう偉いところが0x30は'0'を表すって決めたんだよ。 ところで、0x30は「16進法で30」っていう意味だよ。 0xがつくと16進法 0がつくと8進法 ちなみに'\n'は0x0a、'\0'は0x00だよ。
682 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 09:06:10 ] (っ´▽`)っ 最も基本的な文字コード、ASCII ttp://ja.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange 他の文字コードはASCIIを踏襲しているよ。 シフトJISとかunicodeとかもASCIIの文字コードを含んでいるよ。
683 名前:672 [2007/05/20(日) 09:21:35 ] >>673 ありがとうございます。 座標の計算関数はできてはいるんですが、力及ばず入出力を二次元配列でしか設計できませんでした ということでそっちに行ってきます
684 名前:デフォルトの名無しさん [2007/05/20(日) 09:23:06 ] 大変ありがとうございます。やっと理解できました。
685 名前:デフォルトの名無しさん [2007/05/20(日) 10:11:40 ] やっぱわかんないちす。51と48は何を表してるんすか?てか16進法わからないです。
686 名前:デフォルトの名無しさん [2007/05/20(日) 10:19:34 ] やっぱわかりました。十進法ですね。
687 名前:デフォルトの名無しさん [2007/06/05(火) 02:44:30 ] 文字コードの話題がちょうどでてるので、タイムリーに質問。 cygwinでgccでコンパイルするときって、shift-jis以外は使えないんでしょうか? ちなみに、OSはwin-xp proです。 「表」の字がコンパイルしたら、エラーがでました。 んで、色々しらべて、shift-jisがまずくて、他にもエラーがでる文字があるってことまではわかったんですが、 解決法がいまいちわかりませんでしたorz もちろん、ソースの文字コードを色々と丸々かえて、再コンパイルしてみましたが、 完全に文字化けしてしまいました。 解決法とかはありますか? また、もし、他の文字コードを使えるのでしたら、オススメの文字コードとかありますか?
688 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:18:32 ] >>687 つ input-charset いろいろどころか全然調べてないだろ
689 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:31:44 ] ついでにexec-charsetも
690 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 05:00:00 ] んじゃ更に、 input-charset=euc-jp exec-charset=cp932 とか書いてみる。
691 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 03:06:28 ] >>688-690 勉強になりました。 dです。
692 名前:デフォルトの名無しさん [2007/06/13(水) 13:28:58 ] グローバルで宣言してた変数などを ポインタ等使ってローカルでの宣言で実装すると 常時使ってるメモリは少なくなると思うんですけど 速度的にはグローバルで宣言したほうが良いんですか?
693 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 15:33:33 ] >グローバルで宣言してた変数などを >ポインタ等使ってローカルでの宣言で実装すると >常時使ってるメモリは少なくなると思うんですけど >速度的にはグローバルで宣言したほうが良いんですか? グローバルかローカルかと言う議論にポインタは関係ない。 使用メモリを云々するほど広大なメモリを取り扱う話ならヒープを使うべきだ。 速度に関しては、実測が基本。
694 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 16:57:01 ] これの話にポインタは関係ないですけど、 複数の関数で共通した変数使う場合に 普通はグローバルで宣言してしまいますけど ポインタなど使えばローカルの宣言でもイケるけどどっちが速いのか って事を聞きたかったんです。 けど、実測しかないですか。 メモリも抑えなきゃいけないんだけど速度を最重視して作らないいけなくてorz
695 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 17:27:44 ] >>694 >複数の関数で共通した変数使う ために >ポインタなど使えばローカルの宣言でもイケる というのはつまり、malloc() 等でヒープを確保するんだろ? >普通はグローバルで宣言 した場合は static なデータとしてロード時に確保されるわけだが 使用するメモリ量にはまったく差がないし、速度にも有意な差があるとも思えん。 よって益々、>>693 の結論通り。
696 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 17:53:55 ] 速度は変わらないんですね。 それだけ教えていただいて感謝してます。 ありがとうございました。 ただ、メモリ量は差はあると思われます。
697 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 18:12:45 ] スタックとヒープの区別もつかないやつが、「差はあると思われます」と言ってもなあ・・・
698 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 18:30:47 ] メモリ使用の差の話は、静的確保だとプログラムの実行期間中ずっと 確保されたままなのに対して、動的確保だとそうではない、ということだろ。 >常時使ってるメモリは少なくなると思うんですけど
699 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:11:57 ] 寒いなスレ開いちまった。。 間違った事言ったなら質問者と回答者の立場はどうあれ一言くらい・・・
700 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:34:31 ] 初心者とか中級者とか上級者の堺はどのあたりだと思いますか?
701 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:01:11 ] 大阪のあたりじゃね?
702 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 06:08:03 ] 境でした。。すみません
703 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 10:14:38 ] 鳥取のあたりじゃね?
704 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:21:39 ] 東京にも武蔵野市に境がある
705 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:25:12 ] 住所にはないのに、町田市の駅にも境がある。
706 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:27:24 ] 私はあなたたちを少しかいかぶっていたみたいです こんなにイライラするレスを返されたのは初めてではありませんが それでもかなり上位に来るうざさだと思います 日本語が通じてるのにわざと他の意味を探す病気がPGには流行っているみたいですね 私の知り合いもそういうビョーキにかかっている時期がありました 本人はただふざけているだけのようなのですが 周りからしてみればはたはた迷惑です 面白くもなんともないのに本人は延々とボケを続けるんですからね あなた方もそれと同じ事やっているんですけどどうですかわかりませんか 全然面白くないですよ少しはバラエティ番組でも見たらどうでしょうか バラエティ番組見たからってあなたたちが面白い事を言えるとは思いませんが? 冷めるネタくらいは学習できると思いますちょっとあまりにもこれは酷い流れだと思います 更新されてないスレッドでもお気に入り登録にして毎日巡回でもしているんでしょうかね 質問スレで質問する人回答する人、スレは違っても同じだったりすることがよくあるんじゃないでしょうかね けれど同じスレで違うことを聞かばスレ違いと言い別のスレで同じ人が答えたり?面白いですねそういうの このスレの人達は凄くつまらないです一ミリたりとも笑える要素がないと思います 笑えるスレにしてくださいとは言いませんがこういう流れを作るんだったら もう少しひねるとかしてくださいねってくださいね
707 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:30:45 ] もう少しひねるとかしてくださいねってくださいねってくださいねってくださいねってくださいねってくださいね いかん、流石に飽きた。
708 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:39:03 ] >>706 初級とか中級とかワケ解らん質問したのお前なのか? くだらん質問をしたのを反省しろよ
709 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 22:56:03 ] >>706 人の振り見て輪が振りなおせ。そのレスもおもしろくないぞ。 おもしろくしたいと思うなら、まず自分からおもしろいレスというものを見せてほしい。 まあでも、この板にいるような人間なんて、それが本業ではないのだから、 おもしろさを期待するほうが間違っている。 と、やっぱりおもしろくないマジレスを返してみる。
710 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 04:32:22 ] >>706 で、君は誰なの?
711 名前:デフォルトの名無しさん [2007/07/01(日) 21:21:08 ] 数式Parserのライブラリってご存知ないでしょうか? 複素数計算機能を付加したいんですが、 bcに丸投げというのも力づくすぎるような気がしてまして・・・・
712 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:46:54 ] 初歩的な質問で申し訳ないです 文字エンコードについての質問ですが、 HPから特定の文字列を検索して取得するプログラムを作ってたんですが、 対象のサイトの文字コードがEUCの場合、一旦JISに変換して文字列比較をしないといけないですよね? 文字エンコード変換の、簡単なソースを知ってたら教えていただけないでしょうか?
713 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:49:08 ] >>712 EUC⇔SJIS⇔iso2022の変換は難しくないが、どうせUTFとの変換で悩む羽目になるから iconvか何かのライブラリを使っとけ。
714 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:53:46 ] >>713 返信ありがとうございます。 勘違いしてました。 オープン・ソース使ってうまくいかないと思ってたら EUC -> SJIS しなくてはいけないのに SJIS -> EUC としてました。 お手数かけましたm(_ _)m
715 名前:デフォルトの名無しさん [2007/07/02(月) 00:15:07 ] 初歩的な質問ですがよろしくお願いします。 とある関数内で、malloc()でヒープ領域を確保して 得たポインタを別のタスクに投げ渡すという処理をしています。 他のタスクに投げ渡したら領域を確保した関数は、終了します。 malloc()で作った領域は、free()を行うまで領域の確保されているんですよね? 逆にmalloc()のヒープ領域で無く関数内で定義した変数のポインタだと どうなってしまうんでしょうか? 関数終了しても変数のポインタさえ分かればどこからでも 値は取り出せそうなのですが・・・・・。 聞きたいこととしては、 ・malloc()で得た領域は、関数が終了しても参照できますか? ・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか? です。よろしくおねがいます。
716 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 08:42:36 ] >・malloc()で得た領域は、関数が終了しても参照できますか? yes >・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか? int *f(void) { int local; return &local; } みたいなの? それなら、関数終了時点でポインタは無効になる。
717 名前:デフォルトの名無しさん [2007/07/03(火) 01:18:45 ] >>716 レスありがとうございます。 >・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか? の質問に対する例題としては、似たような感じです。 下のようにローカルなスコープで定義した変数を 他タスクに渡して処理を終えた時にもint localのポインタは有効であるか? と言う事が気になってたのです。 丁寧な説明ありがとうございました。 int f( void ){ int local; test(&local); /* 他タスクへイベント要求 */ }
718 名前:デフォルトの名無しさん [2007/07/03(火) 11:19:17 ] 無効
719 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 15:27:36 ] >>717 それだったら test() を終了後も local は使えるよ。 int local は f() からリターンするまで有効。
720 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 17:49:59 ] >>719 質問を読み違えてないか? タスク云々といってるんだから、testが引数をなんらかの形で保存していて、 それがfが終わった後も有効かという話だろ。
721 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 17:53:52 ] testがポインタをグローバルな変数に入れたり、longjmpしたりするんかいな
722 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 17:58:31 ] >他タスクに渡して処理を終えた時 これがどういう・・
723 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 18:05:43 ] 別スレッドに渡したり。
724 名前:デフォルトの名無しさん mailto:age [2007/07/03(火) 23:36:06 ] ただでcをやりたいんですが、なんてソフトをDLするといいですか?
725 名前:デフォルトの名無しさん [2007/07/04(水) 00:42:18 ] 環境は?
726 名前:デフォルトの名無しさん [2007/07/04(水) 00:44:16 ] まあwindowsならBCC(Borland C++Compiler)で間違いないと思うよ。 CもC++もいける。 けどサイトが長い間落ちてるっぽいね よくわからんけど
727 名前:デフォルトの名無しさん [2007/07/04(水) 00:54:28 ] >>726 さん 虫けらLevelの質問ですみません。 今日書店でC++ Buiider 6.0というのを見たんですが、 Buider 6.0ってなんなんですか? 後、聞きたいんですが、 トロイの木馬やキーロガー、白木葉子はどの言語で作れるのでしょうか?
728 名前:デフォルトの名無しさん [2007/07/04(水) 00:57:01 ] そんなものが作りたいなら自力で全部やれ そうでない限り作れん
729 名前:デフォルトの名無しさん [2007/07/04(水) 01:04:35 ] >>728 自力……かぁ(´・ω・`) まぁ…確かになぁー… 甘えてられないか
730 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:03:54 ] くだすれC++Builder(超初心者用)その3 pc11.2ch.net/test/read.cgi/tech/1171219191/ 綴りが違う上に同じレス内でも違うのはどうかと
731 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 09:14:02 ] そういうのは”ログが残らない場所”で聞け てかいろんな意味で貴殿はC/C++やられるのが良いと思う 俺は作った事無いから、作った事ある奴じゃないとわかんないと思うけどな
732 名前:デフォルトの名無しさん [2007/07/04(水) 09:20:18 ] bccぐらい凡人でも猿でも軽々入手できるもんなんだから そんなところで2chの質問スレに頼ってるようじゃ 何も書けんぞマジで 本当にやる気あるのか
733 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 10:57:33 ] いやいや、凡人や猿は何も考えずにVS買うよ 買ってくれておおいに結構
734 名前:デフォルトの名無しさん [2007/07/04(水) 12:21:42 ] >>731 本買おうと思う。 開発環境は…どうなのかな家のPCネット繋がってないから ネットカフェとかしかないんだ
735 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:33:15 ] >>724 KNOPPIX, Debian GNU/Linux, Fedora 7, Vine, Plamo, ...
736 名前:デフォルトの名無しさん [2007/07/04(水) 16:35:05 ] …マイクロソフトのVisual C++ 6.0(開発ツール)って高いんですか?
737 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:38:48 ] いまさらそんなバージョン買うなよ
738 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:49:00 ] どうしよう
739 名前:デフォルトの名無しさん [2007/07/04(水) 17:02:53 ] >>737 今はどんなバージョンがあるんですか? 後…高い?
740 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:04:54 ] VC++6.0 → 2002 → 2003 → 2005 今は2005だな、EEなら無料。 MFCとリソースエディタが無いけどな。
741 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:23:23 ] >>739 Visual C++ 2005 Express Edition 無料 Visual Studio 2005 Standard Edition 3万円弱 Visual Studio 2005 Professional Edition 11万前後
742 名前:デフォルトの名無しさん [2007/07/04(水) 17:26:00 ] >>740 さん 2005って高いんですか?
743 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:31:38 ] >>742 2005のEE=Express Editionは無料 今からプログラミング始めるの? ググる事くらい覚えないと習得できないよ
744 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:06:14 ] >>741 Academic (中身はStandard) 4,800円もあるだろ。
745 名前:デフォルトの名無しさん [2007/07/04(水) 18:06:19 ] >>743 さん ググれますが、携帯からしかネットできないんです んでもって俺プログラミング初めてなんです。 FLASHLITE XHTML PHP かじった程度の人間ですから。 >>741 さんは何を使ってるんですか?
746 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:13:09 ] >>745 自分はProfessional版使ってるよ これから勉強を始めるならExpress版でも十分できる 物足りなくなってから上位のバージョンを買えばいいと思うよ 或いはその頃には次期バージョンが出てるかもしれないし じゃあまずPCでネットする環境を整える事から始めよう
747 名前:デフォルトの名無しさん [2007/07/04(水) 18:15:35 ] >>746 さん 優しいですね(´・ω・`) ありがとう
748 名前:デフォルトの名無しさん [2007/07/05(木) 11:44:35 ] 私のコーディングスタイルは、 グローバル変数 int ThisIsIntExtern //単語の先頭を大文字 ローカル変数 int thisIsIntLocal //単語の先頭を大文字(ただし最初の文字は小文字) 関数 void this_is_function(){ } //全部小文字で、下線でつなぐ #define THIS_IS_MACRO //全部大文字で、下線でつなぐ なんですけれど、変でしょうか?
749 名前:731 mailto:sage [2007/07/05(木) 13:56:16 ] >>734 初心者なら本買ったほうが良いね Visual Studio買う以外の手段には ネットカフェでbcc落としてメモリに入れて持ち帰るって事も出来るんだが手こずるかも 付属のCD-ROMとかにコンパイラが入ってる本を買う手もある けどね、分からない所はすぐぐぐれないとやってらんなくなるかな
750 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:01:16 ] >>748 別に統一されてりゃいいんじゃね? Cのみだけど、俺の場合は グローバル int g_iValue; ローカル int iValue; 関数 int GetValue( void ) 定数 #define VALUE_MAX 基本的に定数以外で"_"を使わない。
751 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:32:34 ] よい子がC言語の勉強実況してるからみてやろうぜ WMPのファイル→URLを開く→matoinu.orz.hm:30000 をコピペ→OK 実況スレ 何でも実況V なんでも実況フリーダム live24.2ch.net/test/read.cgi/livevenus/1183654888/ 面白いぜwwwwww
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 おぉ、確かに間違えてる; ご指摘どうも。