1 名前:デフォルトの名無しさん mailto:sage [2012/12/09(日) 23:18:13.67 ] C言語の入門者向け解説スレッドです。 ★前スレ C言語なら俺に聞け(入門編)Part 110 toro.2ch.net/test/read.cgi/tech/1353148538/ ★過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 161代目 toro.2ch.net/test/read.cgi/tech/1354070278/ ★C++言語については避けてください。C++対応明記スレへどうぞ。 ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。 # サイズが大きい場合はアップローダ等を利用してください。 codepad.org/ ideone.com/ ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
49 名前:デフォルトの名無しさん mailto:sage [2012/12/10(月) 22:30:36.13 ] テキスト以外はバイナリだとおそわりました
50 名前:デフォルトの名無しさん [2012/12/10(月) 22:33:19.27 ] ちんこ
51 名前:デフォルトの名無しさん [2012/12/10(月) 22:39:16.47 ] tinko
52 名前:デフォルトの名無しさん [2012/12/10(月) 22:42:05.04 ] ちんぽいんぽ
53 名前:デフォルトの名無しさん [2012/12/10(月) 22:44:25.71 ] いんきんたむし
54 名前:デフォルトの名無しさん mailto:sage [2012/12/10(月) 22:54:39.71 ] >>43 まぁ、そんな感じでいい
55 名前:デフォルトの名無しさん [2012/12/10(月) 22:56:04.81 ] ちんこくさい
56 名前:デフォルトの名無しさん [2012/12/10(月) 22:58:11.42 ] 皮でちんちんを包む
57 名前:デフォルトの名無しさん [2012/12/10(月) 23:02:19.27 ] ちんちんがぁ?
58 名前:デフォルトの名無しさん [2012/12/10(月) 23:06:54.55 ] ちんちんのぉ?
59 名前:デフォルトの名無しさん [2012/12/10(月) 23:10:38.14 ] 金玉がソファーにはりついて気持ち良い
60 名前:デフォルトの名無しさん [2012/12/10(月) 23:12:48.13 ] ちんちん
61 名前:デフォルトの名無しさん mailto:sage [2012/12/10(月) 23:16:28.23 ] >>54 ありがとうございます…
62 名前:デフォルトの名無しさん [2012/12/10(月) 23:16:42.99 ] 床オナはちんちんの事をこれっぽっちも考えてない
63 名前:デフォルトの名無しさん [2012/12/10(月) 23:29:26.61 ] ちんぽこりん
64 名前:デフォルトの名無しさん [2012/12/10(月) 23:31:44.13 ] ぽこちん祭り
65 名前:デフォルトの名無しさん mailto:sage [2012/12/10(月) 23:36:46.19 ] mallocしたメモリは関数の呼び出し元・呼び出し先のどちらでfreeするのがいいのでしょうか? 普通に考えれば呼び出し先で、freeすることはほとんど無いはずなのですが GUIのWindowみたいにいつ終わるかわからないものは、呼び出し先でfreeするのがベストかと思います。
66 名前:デフォルトの名無しさん mailto:sage [2012/12/10(月) 23:54:06.07 ] >>65 巣からでてくんな main以外★mallocの後にfree不要と言うバカいるの? toro.2ch.net/test/read.cgi/tech/1352812333/
67 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 00:02:45.66 ] 山ほどあるcで書かれたコード嫁
68 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 00:26:52.67 ] 後片付けは自分でしなさいとこだわる人もいるだろうけど、 手紙なら読んだ人が処分するよね。 相手が読むのだけを待って、読み終えたら自分で片付けなくては いけないなんて効率悪いと思う。 ただ、誰が片付けるかは明確にしておかないといけないけど。
69 名前: ◆QZaw55cn4c mailto:sage [2012/12/11(火) 00:59:33.94 ] >>37 >グローバルの時代に 聞くからに、とっても悲惨な時代だと、どーしても思うのですが
70 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 22:20:56.06 ] てs
71 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 22:23:22.11 ] てすと
72 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:28:07.76 ] #include <stdio.h> int uruu(int year); int main(void) { int a,b; int lastdays=0; int i; scanf("%d %d ",a,b); for(i=a;i<b;i++){ if(uruu(i)==1){ lastdays+=366; } else{ lastdays+=365; } printf("%d",lastdays); } int uruu(int year){ if(year%400==0){ return 1; } else if(year%100==0){ return 0; } else if(year%4==0){ return 1; } else{ return 0; } }
73 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:28:43.89 ] ↑ごめんインデントが汚いけれど 何がいけないの?
74 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:30:19.25 ] >>73 何がやりたいのか書かれてないのがいけない
75 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:32:44.96 ] ごめん 年度二つ入力して閏年考慮した上で、その間の日数を求めたい。 これはそのひな形。 とりあえず、動かないんだ。
76 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:33:55.62 ] scanfに整数わたしてる
77 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:34:10.21 ] >>75 scanf &
78 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:35:37.89 ] ごめん、それも忘れたたけど まだ動かない
79 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:36:37.18 ] どうなることを期待して、何が出るかくらい書け
80 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:38:30.82 ] インデントつけないのが悪いな。{ } が合ってない。
81 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:38:38.98 ] 例えば 2000、2007といれると 2000=閏年=366 2001=平年=366+365 みたいになることを期待してるんだけど
82 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:41:26.01 ] その期待に対して、何が出るか聞いてんだよ
83 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:48:17.40 ] for(i=a; i<=b;i++)
84 名前:デフォルトの名無しさん mailto:sage [2012/12/11(火) 23:50:47.46 ] if(year%400==0){ ↓ if((year%400) == 0) %と=どっちが優先か忘れたけど
85 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 00:02:49.12 ] その前に、main()の } が足りないみたいだけど、コンパイル通るのか
86 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 00:06:34.15 ] ごめん、出来た。 けど、結局何がいけなかったのか分からない。
87 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 00:22:04.32 ] さっきのと比較しろや
88 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 08:38:08.83 ] int ndays(int y,int m) { int days; int month; int data[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; days=month[m]; if(uruu(y)==1 && m==2) { days+=1; } return days; } この関数なのですが、何か問題がありますか? プロトタイプ宣言もしてあるのですが、動作しません。
89 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 08:42:14.92 ] >>88 >days=month[m]; わからんけど、ここな気がする
90 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 08:43:17.40 ] days=data[m]; こうじゃね?
91 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 09:00:03.38 ] 「動作しない」と「コンパイルできない」くらい区別してくれ
92 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 11:36:21.71 ] time_tに変換してdifftime()すればいいものを。 課題とか実験とかなら判るけど、馬鹿に限って手を抜くことをしないからなぁ。
93 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 11:47:03.49 ] 入門編でしか暴れられない奴が言ってもなあ。
94 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 12:26:49.69 ] difftimeを知ってるならもう中級者
95 名前:デフォルトの名無しさん [2012/12/12(水) 14:01:42.04 ] 数字の末尾が2,4,6,8であるかどうかの確認ってどうするんでしたっけ?
96 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 14:11:13.33 ] わからない
97 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 14:32:35.90 ] お年玉葉書か。
98 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 14:34:24.52 ] >>95 bool isLastDigit2468(int value) { char foo[20]; char digit = foo[sprintf(foo, "%d", value) - 1]; return digit == '2' || digit == '4' || digit == '6' || digit == '8'; }
99 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 14:38:57.74 ] >>95 i%10&&!(i%2)
100 名前:デフォルトの名無しさん [2012/12/12(水) 14:45:35.40 ] 今日からC言語を覚えます! みんなよろしく\(^o^)/
101 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 15:26:00.55 ] やだ
102 名前:デフォルトの名無しさん [2012/12/12(水) 15:28:25.73 ] >>101 冷てぇなおいw
103 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 15:46:27.85 ] >>100 Cを憶えると犯人予備軍にされる恐れがあるから注意な 警察「犯人は「Cシャープ(音楽記号)」というプログラミング言語を利用してウイルスを作成」 hayabusa3.2ch.net/test/read.cgi/news/1355285251/
104 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 16:02:56.20 ] ideone.com/z0Vmld ctrl + d押しても^Dとしか表示されなくてbreak出来ないんだけどどうすればいいの
105 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 16:10:58.52 ] >>104 マルチ。
106 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 16:18:00.84 ] >>105 だって前に向こうで聞いたらここは解説するところじゃねーって怒られたんだもん
107 名前:デフォルトの名無しさん [2012/12/12(水) 16:22:34.60 ] >>98 ありがとうございます。ついでにもう一つ教えてください Cでboolというのありました? cppで確認用に int main() { int num; num = 123654; if (isLastDigit2468(num) == true ) { cout << num << "の末尾は2,4,6,8のいずれか\n"; } } てのはできたんですが。
108 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 16:22:41.26 ] みずほFG次期システム実況スレ kohada.2ch.net/test/read.cgi/prog/1355294277/24
109 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 17:16:16.17 ] >>107 あるよ stdbool.hで定義されてる
110 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 17:26:03.07 ] あるね
111 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 17:51:59.64 ] >>106 そういう書き込みするやつは、大抵回答してない。
112 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 18:02:53.44 ] 古いプログラムでは、boolのところがBOOLかintになってる
113 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 18:20:01.61 ] BOOLなのに0と1と-1が返ってくるGetMessage()なんてのもある
114 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 18:22:53.83 ] WindowsのBOOLはintじゃなかったっけ
115 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 18:29:18.74 ] 調べたら、そうだったw
116 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 19:01:39.84 ] 107です。皆さん、ありがとう
117 名前: 忍法帖【Lv=11,xxxPT】(1+0:5) mailto:sage [2012/12/12(水) 19:07:30.32 ] ライフゲームのセルの初期配置パターンをtmp.txtから読み込んで、cells.txtに書き込んで、世代、セル数、セル配置を表示したい main関数の最後辺りを弄ってたらバスエラーになるように その前でもセル数が0で変わらないまま codepad.org/qBhlee6g 友人がこのプログラムならできたと言ってた(課題も解けてた)がいつの間にかに正しい結果が出ないように codepad.org/QHlDoA1i 経験者が見たところ、ぱっと見良さそうなコードみたいですが、何かおかしい所があればお願いします。
118 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 19:09:07.54 ] >>99 の人にも礼を言うのわすれてました。ありがとう ちと難しかったですw
119 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 19:10:05.93 ] >>104 こちらの環境(Scientific Linux 6.3 + gcc 4.4.6)だと、 Ctrl+d で scanf() の戻り値が -1 になって break するけど、 そちらの環境(Windows?)だと Ctrl+d で抜けるのが利かないのかな。 例えば、 > if (scanf("%s", data[i].name) != 1)/* Ctrl+Dが押されたらbreakでループを抜ける */ > break; ↓ > scanf("%s", data[i].name); > if (data[i].name[0] == 'q' && data[i].name[1] == '\0') /* 'q'が入力されたらbreakでループを抜ける */ > break; 'q' とかで終了するよう改造してみたらどうだろうか? あるいは、Windowsなら conio.h の _getch() と _ungetch() を組み合わせてみるとか…
120 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 19:16:14.07 ] >>117 > codepad.org/qBhlee6g 116行目無限ループ
121 名前: 忍法帖【Lv=11,xxxPT】(1+0:5) mailto:sage [2012/12/12(水) 19:34:52.29 ] >>120 Control-Zで止める仕様です 因みにtmp.txtを読まずに乱数を発生させるタイプは上手くいってます codepad.org/fo3Tn2CJ
122 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 19:45:24.78 ] >>119 自分で一通り調べて色々やってみたら if (scanf("%s", data[i].name) != 1) この行の1をEOFにするだけでCtrl+Dでループから抜けられるようになった ありがとう
123 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 20:02:28.17 ] >>117 tmp.txtから正しく読まれているのだろうか?
124 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 22:18:54.48 ] 苦しんで覚えるC言語というサイトのドラッグへの対応という項目をやっていたところ、 「ドラッグされたファイル名を表示するプログラム」が書かれていたのですが使い方が分かりません。 visual C++のデバック開始で開かれるプロンプトにテキストファイルなどをドラッグすればいいのですか?
125 名前:デフォルトの名無しさん mailto:sage [2012/12/12(水) 22:31:27.04 ] うん
126 名前: 忍法帖【Lv=40,xxxPT】(1+0:5) mailto:sage [2012/12/13(木) 00:27:13.78 ] >>123 filename使うの止めてファイル名指定して直で読み込むようにしたらできました ありがとうございます
127 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 01:20:57.17 ] 問題は const char *filename にあったのか?
128 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 01:30:41.44 ] なにもしてないけど壊れたってのと同じかほりがするお! ファイルの実体を置いたりとか他にコード弄ったとか色々あるんじゃあないのかよ?
129 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 01:34:39.26 ] ここに質問書き込むような初学者は、知らない・理解してないに加えて、 ”表現が間違ってる”事が多いから、コードをアップロードした方が誤解が少ないんだけどね。
130 名前:124 mailto:sage [2012/12/13(木) 01:45:11.04 ] 自己解決しました。 調べてみたらVistaだとドラッグしてもパスが表示されないのですね。
131 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 11:02:24.31 ] 自作関数を作っているのですが int bmilarger(Person data[ ], int n, double v) { int i; int cnt=0; for(i=0;i<n;i++) { if(data[i]>=v) { cnt=cnt+1; } } return cnt; } if文の所で'>=' : struct に対して正しくありません。 と出てしまいます。どこを修正すればいいのでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 11:10:28.75 ] if(data[i].bmi>=v)
133 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 11:10:36.93 ] data[i]は構造体だから、その中のどのメンバーとvを比較したいか指定する。 data[i].bmi>=v みたいに。
134 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 11:16:28.73 ] すいません、ありがとうございました。 感謝します。 いまいち構造体の意味が分かっていないのでしょうか?
135 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 11:20:22.73 ] 扱う対象が値(整数、文字、実数、、)なのかデータの塊(構造体)なのか意識しないと
136 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 12:49:43.31 ] だね
137 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 16:00:11.30 ] うん、ありがとうね
138 名前:デフォルトの名無しさん mailto:sage [2012/12/13(木) 16:12:13.11 ] いえいえ
139 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 00:24:15.07 ] int a; int* p; p = &a これはpにaのアドレスが入るんですよね。 そうすると&pはaのアドレスではなくpのアドレスが入りますよね。 例えばpのアドレスからpの型分だけ中身を参照するとして、 アドレスpからaのアドレスから同じ分だけの領域の中身を参照出来るように するにはどうすればいいでしょうか。
140 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 00:43:13.64 ] >例えばpのアドレスからpの型分だけ中身を参照するとして、 >アドレスpからaのアドレスから同じ分だけの領域の中身を参照出来るように 日本語がわからんぞ int a = 10; int* p = &a; int** pp = &p; printf("%d",**pp); //=>10 こういうこと?
141 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 00:47:07.78 ] >>139 ttp://ideone.com/dKjOxp
142 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 01:31:47.30 ] pからaの値を得たいって言ってるだけじゃないの? ideone.com/nas9Tg
143 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 08:36:59.65 ] >>142 多分ポインタpへのポインタからaの値を参照したいんだと思う。 だから>>140 かな。
144 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 10:08:50.25 ] 「&pはaのアドレスではなくpのアドレスが入る」とか、ポインタを理解していれば出てこない。 わかってないんだろうな。記述方法だけ覚えてもしょうがない。
145 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 10:21:00.94 ] じゃあどう言えばいいの
146 名前:デフォルトの名無しさん [2012/12/14(金) 10:25:10.72 ] .a と .so の区別がつかないんだけど .soは動的リンク用で.aは性的リンク用という認識でいいの? .saってなに?
147 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:01:37.69 ] >>146 > .a と .so の区別がつかないんだけど > .soは動的リンク用で.aは性的リンク用という認識でいいの? それで合ってる > .saってなに? こっちが聞きたい
148 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:28:40.94 ] >>146 ttp://www.hi-ho.ne.jp/babaq/linux/libtips.html > スタティックライブラリは、コンパイル時にコードがプログラムに組込まれます。 > モジュールサイズが大きくなりますが、別のマシンにバイナリで配布したときに > そのライブラリがなくても動作します。 .a で終わるファイルです。 > 共有ライブラリは、プログラムの実行時にロードされます。マシンによっては、 > その共有ライブラリがなかったり、バージョンが違ったりして、動作しないことがあります。 > .so と .sa で終わるファイルです。.sa は、古い a.out 形式で使われた共有ライブラリです。
149 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:42:38.66 ] >>145 言い方だけ学んでも意味がない。 Cのポインタを理解すれば正しい言い方をおのずと使うようになる。