1 名前:デフォルトの名無しさん [2007/05/08(火) 19:39:26 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 11 pc11.2ch.net/test/read.cgi/tech/1176800483/ 過去スレ Part 1 ttp://pc8.2ch.net/test/read.cgi/tech/1146700389/ Part 2 ttp://pc8.2ch.net/test/read.cgi/tech/1153818463/ Part 3 ttp://pc8.2ch.net/test/read.cgi/tech/1160682950/ Part 4 ttp://pc8.2ch.net/test/read.cgi/tech/1162999861/ Part 5 ttp://pc8.2ch.net/test/read.cgi/tech/1165022193/ Part 6 ttp://pc10.2ch.net/test/read.cgi/tech/1167325490/ Part 7 ttp://pc10.2ch.net/test/read.cgi/tech/1170064980/ Part 8 ttp://pc11.2ch.net/test/read.cgi/tech/1171946674/ Part 9 ttp://pc11.2ch.net/test/read.cgi/tech/1173284217/ Part 10 ttp://pc11.2ch.net/test/read.cgi/tech/1174290325/ 関連スレ C/C++の宿題を片付けます 86代目 pc11.2ch.net/test/read.cgi/tech/1176996941/ くだすれC言語(初心者用) Part.2 pc11.2ch.net/test/read.cgi/tech/1172099763/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/l50 はきだめC/C++下級者の質問箱 2 pc11.2ch.net/test/read.cgi/tech/1156206091/l50 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
477 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:54:07 ] struct ABC { char name[10]; char initial[10]; char home[10]; };と構造体を設定 struct ABC data[10][10]; int i,j; for(i=0;i<10;i++){ for(j=0;j<10;j++){ strcpy(data[i][j].name,NULL); strcpy(data[i][j].name,NULL); strcpy(data[i][j].name,NULL); } } 一部ですけども、その二次元配列の中身の全ての各部門の初期化をしたいのですけど この時点でセグメンテーション違反がおきるわけです。
478 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:55:21 ] strcpy(data[i][j].initial,NULL); strcpy(data[i][j].home,NULL);です
479 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:57:10 ] 馬鹿だろ。 strcpy(data[i][j].name, "");
480 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:04:35 ] >>479 ありがとさん
481 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:07:04 ] まあ data[i][j].name = '¥0'; ってやった方がいいとは思うけど初期化だから別にいいか。
482 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:07:45 ] うわ。間違い data[i][j].name[0] = '¥0'; こう
483 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:54:50 ] 大学でC言語を習っています。 ifやforといった基本的なことは理解しているつもりである程度プログラムは書けます。 今、アルゴリズムの授業を受けているのですがポインタや構造体が理解できません。 参考書に載っているソースを自分で打ち込んで実行したり、少し変えたりしているのですがどうも暗記っぽくなっています。 そのため「○○をポインタと構造体を利用して作れ」と言われても何からしたらいいかわからない状態で。 ポインタや構造体はC言語で一番重要と言われているので是非自分のものにしたいです。 皆さんはどうやってポインタや構造体を理解していきましたか?
484 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:57:33 ] サンプルコードをいくつか読めばそれで理解できた。
485 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:10:22 ] 使ってりゃ理解できた
486 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:11:48 ] >>483 わからないところは図を描いて理解。 デバッガで全変数表示してつながり・変化を確認。
487 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:12:40 ] くそなげえプログラム書いてたら飯なんてどうでも よくなって4時間経過w
488 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:30:41 ] さっき構造体での二次元配列はどのようにすればいいのかを聞いたものですけど その二次元配列data[i][j]において 1行さすのはdata[i]でいいのはわかるのですけど 1列をさすのはどうおけばいいですかね?
489 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:44:39 ] 基礎からやり直せ
490 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:46:59 ] >>488 列は無理。
491 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:47:08 ] >>488 メモリの配置を想像してみろ。 列は分断されていて連続したメモリとしてアクセスする方法はない。
492 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:57:08 ] >>483 ポインタのイメージがつかめない場合はその都度アドレスと中身を表にして書いて理解 ポインタpのpと*pと&pの違い,あるいは変数aのaと*aと&aの違いが わかっていれば大丈夫のはず なぜポインタが必要かっていう設計思想を知りたければアセンブラとかを 学んでみるといいいかも >>488 他の言語なら実装されてたりするけど C言語ではそういう便利な機能は基本的に用意されてない
493 名前:デフォルトの名無しさん [2007/05/13(日) 23:12:11 ] 転職してプログラマになりたいんだ。 そのためにCとC++をマスターしたいんだが…。 それで今は一応C言語の基礎を終わらせたんだけど C言語で関数やアルゴリズムやAPIなども覚えてから C++行ったほうがいいのかな? それとも先にC++でオブジェクト指向とか把握してから いろんなこと手を出した方が良いかな?
494 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 23:15:29 ] さっさとC++池 今時Cなんてほとんど使わないからC++からCのコードを利用する際の最低限の知識さえあれば十分。
495 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 23:16:05 ] ぶっちゃけ経験年数のが大事。 マの真っ当な評価なんてマ以外に出来るわけがないんだから。
496 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 23:22:16 ] あらためてアルゴリズムを考えてみると その列であてはまるのは1つだから 列指定にしなくてよかった。
497 名前:デフォルトの名無しさん [2007/05/13(日) 23:23:21 ] >>494 Cは使わないのか じゃC++の勉強にいこうかな まだCでコードとか書けないけど大丈夫かな・・・ >>495 年齢が30前後とかだと未経験じゃプログラマになるの難しいかな?
498 名前:デフォルトの名無しさん [2007/05/13(日) 23:29:01 ] >>497 おまいさんはマ板にお逝き。
499 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 00:00:23 ] >>497 どんなプログラムの仕事がしたくてどんな会社かによる なんか実用的(ゲームでもいい)なプログラムひとつでも組んでると 就職のときにアピールにはなる とりあえずマ板へ池
500 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 01:50:07 ] プログラムの処理がどの程度完了しているのかを示すことを試みたのですが, うまくいきませんでした.具体的には,以下のことをしました. #include<stdio.h> int main(){ int i, j; for(j=0; j<10000; j++){ for(i=0; i<100000; i++){ } if((j%1000)==0)printf("*"); } printf("\n"); return(0); } j が10000ループされますが,1000ループごとに * を1つ出力し, * が10個になったら処理完了を知らせるというものです. 上のソースコードのようにしてみたところ,j のループを出てから * が10個同時に表示されてしまいます. どのように書けばよいのでしょうか?お願いします.
501 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:02:37 ] >500 ちゃんとjのループの途中で*が表示されてるけど? ただ、1000個ごとなら(i%j)==999だろう。
502 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:07:08 ] バッファフラッシュしなきゃいけないとかそーいう問題じゃないの? 環境は?
503 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:09:42 ] ANSI C準拠だったら整数の範囲って32767までじゃなかった?
504 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:16:56 ] >>500 for(i=0; i<100000; i++){ i 使って無いじゃんwwww ワロタw
505 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:18:50 ] int に10000も入れれませんwww 基本からやり直せよwww
506 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:19:42 ] >>500 if((j%1000)==0){ printf("*"); fflush(stdout); } という話か?
507 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:20:26 ] >>504-505 釣りにしても ひどい
508 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:22:24 ] C とC++ の違いを分かってない人がいっぱいいるので一応書いておく Cの構造体には変数しか設定できないのですが C++は構造体の中に関数を入れれます。それがクラスって呼ばれるものです C++でヤリなされw
509 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:23:17 ] 何かの処理の進捗状況を表示する部分について質問してるんでしょ。 単にその処理の部分は省略しただけなんじゃないか?
510 名前:500 mailto:sage [2007/05/14(月) 02:25:02 ] >>501-508 レスありがとうございます. >>502 さん及び>>507 さんのもので,求めていた結果を得ることが出来ました. これからfflushをググってみます. >>504-505 が釣りかどうかすら分からない自分が悔しいです. 勉強に励みます.ありがとうございました.
511 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:26:59 ] 進捗状況ってさ ソースに printf("処理○○終わり"); って書いていけばいいんじゃないの? 完成したら消せばいいわけだし
512 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:28:26 ] だからfflushはだめだってw
513 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:30:15 ] ほかっとけ 初心者だぞ相手はwww
514 名前:500 mailto:sage [2007/05/14(月) 02:31:20 ] >>509 実際は処理内容が含まれますが,それとは別に処理内容を全部消したもの (>>500 そのもののソースファイル)を作成して実行しても * が一度に出力された ので質問をしにきました. >>511 1試行で数分かかる繰り返し計算処理なので,何%終了したのかを概数でも 良いから表示させたかったのです. >>512 駄目なのですか??
515 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:32:26 ] マロックにサイズオブ使わずそのまま数字書いてるとか goto使いなんだろうよ
516 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:33:37 ] >>514 目的が達成できたんならそれで問題ないよ 環境依存だから、他の環境に持っていくことがあるなら問題だけど
517 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:34:10 ] つうかさ 関数の再帰使わなかったら 処理スピードなんか大して変わらんよ 何千万行でも数行でも・・・
518 名前:500 mailto:sage [2007/05/14(月) 02:37:48 ] >>516 今の環境のみで動かすものなので これで大丈夫です.皆さん,ありがとうございました.
519 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:50:38 ] お ま い ら 難 し く 考 え す ぎ
520 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 02:58:24 ] >>508 クラスの肝は派生できる事。 派生無しにクラスを語っても意味がない。
521 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:01:07 ] C++はスレ違い
522 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:05:30 ] >>516 の言ってる環境依存ってfflushの事か? 確かに入力ストリームに対するfflushは未定義動作だが 出力ストリームに対しては正常に機能したと思うが違ったか?
523 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:08:10 ] お前ら もう質問者はいなくなったぞw
524 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:16:47 ] rand()で作った変数を for()等でループにかけることって 実際問題 どうゆう場合ですか?
525 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:17:47 ] 頭の悪い質問に頭の悪い回答者 このスレほんとゴミ化したな・・・
526 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:23:18 ] >>512 中途半端な知識でゴミ回答するんじゃないよ
527 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:30:23 ] じゃあ 頭のいい質問しましょw 関数のポインタと、配列のポインタ等の置き場が勝手に割り付けられると聞いたのですが 実際はどのように割り付けてるんですか? 出来ればコンパイル自体のソースをもちいて答えていただきたいと思います
528 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:31:25 ] >>524 質問の意味がよく分からんが 10体の敵がそれぞれランダムに動く場合とか?
529 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:32:34 ] >>527 メモリの話か?
530 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:33:24 ] >>527 ポインタの置き場って何? コンパイル自体のソースって何?
531 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:34:03 ] おーい!機械語読める奴探してるらしいぞw
532 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:34:55 ] メモリの割付だおw
533 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:39:15 ] よーわからんな 関数が置かれるアドレスの話か? なぜそこでポインタが出てくるんだ? 配列も置かれるアドレス? なぜ普通の変数じゃなくてわざわざ配列? ローカルとグローバルによっても違うし もうちょっと問題を整理してくれんか
534 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:47:40 ] >>527 そんなもん環境依存だろ・・・
535 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:49:24 ] 【内容】浮動小数点型(float、double等)を使用せず整数型(int)のみを使用し 「√」計算を行える計算機を作る 【どこが分からないのか?】全部wごめん 【どうして欲しいのか】代わりにソースを書いて欲しい
536 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:51:40 ] 宿題は帰れ。 最近の学校は開平も教えないから困る。
537 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:53:53 ] 開平ってなんですか?
538 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:55:44 ] ググれ
539 名前:デフォルトの名無しさん [2007/05/14(月) 05:58:55 ] >>537 波平の双子の兄さんだよ。
540 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 06:53:39 ] >>537 灘、駒場、麻布と並ぶ名門です。
541 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 09:26:01 ] C >>>>>>>>>>>>>>>>> C++ C++は究極の中途半端言語
542 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 09:40:57 ] C++に挫折したそうです
543 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 13:59:59 ] >>535 intしか「√」内に入らないということでよろしいか?
544 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 14:01:04 ] >>543 お前意味が分からんw 整数しか入らないか?って聞けよwww
545 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 14:07:39 ] 一番簡単な整数「9」を計算し「3」を出すプログラムを作りソースを書け 話はそこからだw
546 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 14:48:06 ] そのまえにルートがなんなのか学んだほうがいいw
547 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 14:58:35 ] >>535 確認だが正整数の間違いじゃないか? そうでないとしたら複素数使わんと駄目だぞ
548 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:00:21 ] 0でも問題ないだろ。
549 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:00:56 ] 出題者がアホなのか質問者がアホなのか。 後者だろうけど。
550 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:01:52 ] 宿題野郎にヒントなんて与えなくていいよ。
551 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:02:58 ] 負数を与えたら死ぬようにすりゃいいじゃん。
552 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:03:41 ] >>548 おまえひょっとして-9は整数に入らないとか思ってないよな?
553 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:04:17 ] >>552 0は正整数に入らないと思ってる。
554 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:04:54 ] >>552 おまえひょっとして0は正整数入るとか思ってないよな?
555 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:06:58 ] 負数が入っても絶対値の平方根に i つけりゃいいだけじゃん。
556 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:11:16 ] おk 言い直し 非負整数でおk
557 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:14:10 ] 誤爆にレス付けてるアホどもってよっぽどやることがないんだね。
558 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:15:51 ] つか整数か非負整数いずれにしてもなんで出題者はそんなのに限定してるんだ? 実数じゃなにか問題があるのか?
559 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:17:35 ] ヒント:宿題
560 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:20:01 ] >>557 どのレスが誤爆なんだ? ちょっとよく分からん
561 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:22:14 ] 宿題スレのテンプレに似てると思ったんじゃないか?
562 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:30:15 ] 宿題スレってはじめて見てみたがひどいな 写し放題じゃねーかwwww 先生は宿題スレもチェックしとくべきだなw
563 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:34:55 ] してるんじゃない? そうでなくとも、まったく同じ答えが複数きてたらばれるだろう
564 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:38:04 ] 教授からここの宿題スレを使うなと警告が来た例もあるらしいよ
565 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:40:44 ] そういうことするやつってそのへんは抜かりなくて少し変えてたりする 普段の態度や小テストで理解度見てたらだいたい自分でやったかどうか想像付くんだけど さすがに人数多いといちいちチェックするのはめんどくさいw 院生に採点まかせっきりだったりもするからな
566 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:41:00 ] うざい
567 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:43:56 ] でも先輩友人の繋がりで写すのはどこでも常態化してるだろ。 それのネット版だ。 大してかわらんだろ。
568 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:37:23 ] char a[5] = "unko" どこにNULLが入っていますか? 6個目?
569 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:38:08 ] 何でデバッガ使わないの?
570 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:42:01 ] >>568 |壁|д゚) あのさ 教科書きちんと読もうよ NULLと¥0と0の違いをきちんと理解しろw
571 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:43:59 ] >>568 先頭を一個目と数えて五個目にNUL文字が入っている。六個目は存在しない。
572 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:44:58 ] NULL 値アドレスなし、値0、ポインタの値として使用できる \0 値アドレスなし、値0 0 値アドレス有り、値0
573 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:51:17 ] 値アドレスって何ですか?
574 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:52:04 ] イミフな空白はなんですか?
575 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:54:28 ] >>572 あなたはなにをいいたいんですか
576 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:55:53 ] >>535 問題の趣旨を考えてみたw 10/3を計算すると3.33333333333333333・・・・と続くが小数点以下が増えていけば4という端数が発生する COBOLでやれよと言いたいwなぜにcでww
577 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:57:07 ] ttp://www.psl.ne.jp/perl/pdojo00b.html ちっちっち、なんか勘違いしていないかね?NULLポインタとNULL文字とはまた別物だよ?