[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/22 22:20 / Filesize : 197 KB / Number-of Response : 927
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 111



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/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

152 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:51:12.21 ]
>>149
お前が理解してないのはわかった

153 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:54:57.04 ]
>>150
.soの方は位置独立コードが要求されるから、大抵のOSではコンパイルし直さないと無理。

154 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:59:26.74 ]
すいません教えて下さい。
外部参照について調べていたのですが
例 extern int func( char* );
char*の*はポインタ変数名を続けて書く意味でしょうか?

155 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:02:53.90 ]
>>150
.soは.oをリンクしちゃった結果で、
元のファイル名が失なわれてるから無理。
.aから.soはlinuxならできるような気がするけど、
-fPICじゃないので実行開始時のリンクが遅いかも。

156 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:06:09.23 ]
>>154
外部参照とは関係ないけど、そうだね。
関数プロトタイプでは、仮引数名を省略して型だけ書いてもいいので、
extern int func( char *p );
の意味。

157 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:09:13.54 ]
>>152
こいつみたいな炎上学習法を実践するクズが多くてウザい。
その筆頭がコテハンだから始末が悪い。

158 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:30:59.03 ]
>>156
即答ありがとうございます。m(_ _)m

159 名前:デフォルトの名無しさん [2012/12/14(金) 12:44:36.22 ]
変換仕様%sでscanfを使うときカンマの後に&を付けないのはなんでですか?
付けても変わらないように思えるのですが

160 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:45:07.03 ]
すいませんageてしまいました



161 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:49:13.55 ]
>>159
char array[100];
char *p = array;
とすると、array も &array も同じ値になっちゃうので、
付けてもいいように見えてしまう。
だけど、&p と p は違うので、動作しない。

162 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:50:04.43 ]
char buff[256];
int data;

scanf("%s", buff);
scanf("%s", &buff[0]);
scanf("%d", &data);

163 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 12:52:58.66 ]
>>159
char s[10];
scanf("%s",&s[5]); //(「・ω・)「
scanf("%s",s[5]); //\(^o^)/

164 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 13:20:59.80 ]
>>157
顔真っ赤だな
死ねよゴミ

165 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 14:06:54.49 ]
>>164
ポインタ理解してないチンカスになに言われても全然答えないわけだが。
悔しかったらポインタ理解してから出直すことだ。w

166 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 14:52:01.12 ]
荒らしに構う奴は荒らし

167 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 19:56:54.95 ]
性的リンクって///

168 名前:デフォルトの名無しさん [2012/12/15(土) 00:37:58.89 ]
恥ずかしながら初心者でDXライブラリ使ってるんですが
円と四角が同時に動くみたいな事をこのライブラリを使えばCでも書けるんですが
これって暗にDXライブラリの関数がスレッドの機能があるってことでしょうか?

169 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 00:45:35.61 ]
スレッドなくとも交互に描けば可能。ソースコード確かめろ。

170 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 16:26:48.25 ]
Linuxとかで uint32_t みたいな型を使ってるプログラムがあるんだけど
これを使うと「絶対的に」32ビットの大きさが確保されるの?



171 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 16:33:42.23 ]
それはtypedefの内容による。

172 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 16:37:23.53 ]
名前からしてどんな環境でも32bit unsignedであることを期待しているとは思う

173 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 16:40:17.69 ]
いまどきstdint.hなしの環境使ってるのか?

174 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 17:21:25.76 ]
stdint.h 見たら
typedef unsigned intuint32_t;
と書いてあった。
intって64bit環境だと64bitじゃないの?

175 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 17:25:05.38 ]
違うよ

176 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 18:00:02.58 ]
intは環境によってサイズが違うしlongも違う場合がある。

177 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 18:03:07.80 ]
一言で64ビット環境と言ってもたくさんある。

LPI64: long, pointer, intが64ビット
LP64: long, pointerが64ビット
LLP64: long long, pointerが64ビット

uint32_tはそれぞれの環境で32ビットになるようtypedefされている。

178 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 18:12:15.63 ]
> uint32_tはそれぞれの環境で32ビットになるようtypedefされている。

なるほど。ありがとうございます。

179 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 18:24:39.86 ]
いえいえ

180 名前:デフォルトの名無しさん [2012/12/16(日) 01:06:19.61 ]
c言語ってコンパイルせずにインタプリタで実行して何か問題あるの?
basicと同じ順次実行言語だし何か困るの?って疑問に思いました。



181 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:08:06.30 ]
>>180
無いよ
インタプリタで実行も出来るよ

182 名前:デフォルトの名無しさん [2012/12/16(日) 01:11:33.85 ]
>>181
インタプリタは何言語で作ったら一番良いですか?
やっぱり文字列とかの機能が多いperlとか?

183 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:13:19.03 ]
コンパイル、リンクは1回でいいよ
何回も実行する

184 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:14:39.20 ]
>>182
せっかくだからCで作れやw

185 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:15:11.84 ]
>>182
Rubyは、Cでかかれているそうです。黒魔術もつかわれてる(つかわれてた?)
black art

186 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:18:52.01 ]
C言語で標準正規分布の累積分布関数やその逆関数を計算することは可能でしょうか
エクセルでnormsdist関数やnormsinv関数を使用したファイルを作成したのですが
計算する数値の量が多すぎて1回の再計算で数十秒近く時間がかかってしまうため
直接C言語で計算するプログラムを作ればこの時間を減らせるのかなと考えています
プログラムに関する知識は現時点でゼロです
長くなりましたが、
1.C言語でプログラムを作ることでエクセルによる計算より時間を短縮することは可能か
2.可能だとして、全くの初心者がそのプログラムを作る難易度はどのくらいになるか
 (1日3時間勉強にあてることができるとして、何日かかるかを目安で)
この2点について、どうぞよろしくお願いします

187 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:37:41.73 ]
数値計算ライブラリを使えば速く動いて早く使える。
ゼロから自作するのは手間かかる。

188 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:42:26.89 ]
>>186
まずは計算量を減らす工夫できないか考えるのが先だろう。
アルゴリズムがクソだと言語とかライブラリ変えてもどうにもならない。

189 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:46:33.97 ]
速いかは知らんがこのソフトには累積分布関数の演算できるようだ。CやエクセルからもDLLとして使えると思う。未確認。

GNU Octave 2.1.x 日本語マニュアル
ja.wikibooks.org/wiki/GNU_Octave_2.1.x_%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB/%E7%B5%B1%E8%A8%88

190 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 01:54:12.78 ]
>>187>>188>>189
早速のご回答ありがとうございます
それぞれ試行してみたいと思います
本当にありがとうございました



191 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 02:28:24.48 ]
正規分布くらい自分で実装しても大したことないよ。

192 名前: ◆QZaw55cn4c mailto:sage [2012/12/16(日) 02:48:28.71 ]
ボックスミューラー法とか

193 名前: 忍法帖【Lv=3,xxxP】(1+0:5) mailto:sage [2012/12/16(日) 05:59:51.72 ]
Cってさ、クラス使えないんだよ
知ってた?

194 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 08:51:39.72 ]
またチンカスがトンチンカンな事ほざいてるのか。
チンカスは最強のめるせんぬついすたーをとなえた。えぃっ。wwwww

>>186
excelが遅いんじゃなくて、多分キミのExcelシートの作り方が悪い。
normsdistは標準正規分布表引くだけ、normsinvは逆引きだけの処理なので、非常に高速。
normsdistやnormsinv使わないで値そのままにしても同じくらい時間かかるんじゃないか。
= normsdist(A1)
のセルを
= A1
に変更して時間計ってみろ。

195 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 09:06:40.14 ]
オレはお前がそんなにCを使いこなせていないことを知ってるぞ

196 名前:デフォルトの名無しさん mailto:sage [2012/12/16(日) 09:10:58.95 ]
キサマなぜそれを

197 名前:デフォルトの名無しさん [2012/12/17(月) 16:24:12.08 ]
C言語で音(音楽)を出力させるにはどうしたらよいのでしょうか??

198 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 16:31:42.95 ]
>>197
ハードウェア依存。言語の問題ではない。

199 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 17:08:33.08 ]
音源チップを直接扱うような低水準なことから
DirectXあたりを使った高水準なモノまで
いろいろできる

音源チップ用のコントローラとかなると
そりゃもうデバイスドライバあたりの面倒くささになる

200 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 17:12:11.39 ]
いろいろあるね



201 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 17:31:50.54 ]
Windowsなら
system("start music.mp3");

202 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 17:35:47.80 ]
>>201
最小化した状態で起動するなら
system("start /min music.mp3");

203 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 17:36:05.55 ]
自己解決しました

204 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 20:01:46.44 ]
ベル文字ってあるでしょ
音でないけど…

205 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 20:03:57.70 ]
うちは出るよ。
でも実際に音をならすのは端末の機能。

206 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 20:05:19.32 ]
環境依存?

207 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 20:17:44.73 ]
#include <stdio.h>

int main(void)
{
  int i;
  int N = 10;

  for(i = 0; i < N; i++) {
    printf("\007");
  }

  return 0;
}

208 名前:デフォルトの名無しさん mailto:sage [2012/12/17(月) 20:34:22.05 ]
>>206
うん

209 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 14:44:07.60 ]
>>202
消防以下のレベルに善く答えてあげたな。

210 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 15:44:41.85 ]
関数の引数なしを

void test(){}

と()内にvoidと書かなくても大丈夫?



211 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 15:49:22.94 ]
昔はそう書いた
今ならvoidつけた方がよい

212 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 15:59:02.16 ]
>>211
なんで?

213 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 16:06:52.58 ]
そのまま関数宣言に使ったときにも、引数がないことが明確になるから。

214 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 16:10:18.25 ]
最近はハードの性能も上がり、色々こねくり回すよりも可読性を重視したコーディングが求められるだろうから、
やろうとしていることはなるべく明示した方が良い。

バグ潰しの効率もずいぶん変わるし、何より考えすぎたコードは次の日自分でも何やってんだか分からなくなったり。

215 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 16:34:01.01 ]
>>213
>そのまま関数宣言に使ったときにも、引数がないことが明確になるから。

それ、チェック機能の弱い、古いコンパイラ時代の常識。

216 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 16:36:09.14 ]
Cだと書いた方がいいね
他の言語(C#とか)だと書かないと自動的に引数なし扱いになるけど

217 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 17:03:29.86 ]
なるけどね

218 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 17:41:21.75 ]
まぁ一応書いておくだろ

219 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 18:28:18.40 ]
宣言なら書かないといけないけれど、定義ならどっちでもいいよ。Cは。

220 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 19:07:08.53 ]
定義をコピペして関数プロトタイプ宣言にするから自分は書くけどね



221 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 19:46:48.09 ]
どっちでもいいならすこす長くてもわかりいいほうにしとけってばっちゃが

222 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 20:11:10.05 ]
ありがとうCではちゃんと記述する
それ以外は略してもいいという認識で行く

223 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 21:00:22.85 ]
Cなら略してもいいのだ。他の言語では、voidの意味になってしまう

224 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 21:35:50.50 ]
C#ってvoid書くとコンパイルエラーになるよね

225 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 22:56:50.25 ]
なるよね

226 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:05:38.14 ]
ネー

227 名前:デフォルトの名無しさん [2012/12/18(火) 23:10:46.83 ]
unionとstructってどう違うんですか?

struct{int a, double b, char c,char d[10][10]}←できる
union{int a, double b, char c, char d[10][10]}←できる

228 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:14:38.62 ]
たしか、unionとstructってメモリに展開した時に違いが発生するんだよね?
unionは1つの連続した領域として取られるハズ

229 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:14:49.55 ]
unionは、どれか1つのメンバしかメモリに載らない

230 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:16:10.57 ]
1つの代入した、もう1つのメモリ上の領域は破壊(塗り潰す)される



231 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:16:15.65 ]
>>228
あやふやなら回答しない方がいい

232 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:16:52.60 ]
確実な回答おがないしましゅ

233 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:17:39.48 ]
確実な回答が欲しいなら、自分で仕様書なり調べろ

234 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:19:03.78 ]
それならそうと一番最初に家よks

235 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:26:51.91 ]
unionはメンバ中で一番に大きいメモリサイズで領域を確保する
d[10][10]の領域の中に、int a, double b, char cの先頭を指してる
だから、どれか代入すると他のメンバ変数はメモリ上に載せることが出来ない

236 名前:デフォルトの名無しさん [2012/12/18(火) 23:31:36.87 ]
>>235
最小のプログラムでunionの場合structと比べてこれができないっていう
例を教えて下さい。

237 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:34:55.94 ]
できる
struct Foo a;
a.a = 10;
a.b = 0.1;
できない
union Bar b;
b.a = 10;
b.b = 0.1;

printfでconsoleにでも出力汁

238 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:36:51.35 ]
自己解決しました。

239 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:38:26.58 ]
1つだけ、今後のアドバイスすると、プログラマにはならない方がいいよ
君には向いてないから

240 名前:デフォルトの名無しさん [2012/12/18(火) 23:38:41.91 ]
>>237
ランタイムエラーだったけどありがとうございます。
さすればunionって欠陥品ということでしょうか?



241 名前:デフォルトの名無しさん [2012/12/18(火) 23:41:06.74 ]
うn

242 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:41:42.63 ]
省メモリで組む必要がある組込み用途で必要

243 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:46:24.41 ]
sizeof演算子で、structとunionの大きさ確認しろ

244 名前:デフォルトの名無しさん mailto:sage [2012/12/18(火) 23:59:23.38 ]
struct アレやコレを一緒にまとめて入れておく。
union ひとつの場所に、ある時はアレ、またある時はコレと使い分ける。

245 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 00:06:59.28 ]
入門での中途半端な文法レベルなら、rogueなり、
tux racerなり落としてきて使い方眺めた方が早い
飯食うなら、枕元にBSDのコード置くぐらいのことした方が良い

246 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 07:47:18.99 ]
良いね

247 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 10:53:20.83 ]
もっとも、c++,javaでヤドカリ本の暗記した方が潰しがきくけどね

248 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 11:24:42.62 ]
スレタイ読めないヴァカがいるぞ

249 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 14:57:04.28 ]
>>248
お前だ

250 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 21:34:21.71 ]
cで何かするならgtkあたりがベター
cの入門なら、gnome付属のゲームでも読めば?

大学講座の単位なんて飾りですw
入門者には、それが分からんのですw



251 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 21:55:21.74 ]
何か今日あった?
入門スレでしか暴れられない方々が多いな。

252 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 22:49:52.00 ]
多いね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<197KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef