C言語なら、俺に聞け! <32>
■ このスレッドは過去ログ倉庫に格納されています
0001SHOW-A孫
NGNGいろいろな言語を極めたけど、一番漏れになじんだのはCかな。
Cのことなら父をも超えた。疑問な点があったら漏れに聞け。
便所とメシ食ってる時以外は暇だが、いちいちFAQに載った質問に応えるほど暇じゃないよ。
課題丸投げなら別スレにいってね。あと、至急父に仕事を与えてやってください。
コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002SHOW-A孫
NGNGgcc
http://gcc.gnu.org/
【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003SHOW-A孫
NGNGhttp://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0004SHOW-A孫
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c_faq.html
comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART 5
http://pc3.2ch.net/test/read.cgi/tech/1027593322/
前スレ <31> http://pc3.2ch.net/test/read.cgi/tech/1031340950/
0005SHOW-A孫
NGNG31 http://pc3.2ch.net/test/read.cgi/tech/1031340950/
30 http://pc3.2ch.net/test/read.cgi/tech/1030786546/
29 http://pc3.2ch.net/test/read.cgi/tech/1029605182/
28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/
26 http://pc3.2ch.net/test/read.cgi/tech/1026048820/
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1003/10034/1003418249.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html
0006デフォルトの名無しさん
NGNG0007名無しさん@Emacs
NGNGお疲れ〜。これで粘着がいなくなるといいね。
0008デフォルトの名無しさん
NGNGおつかれ。
しかし、メール欄にvoidを忘れてる。
SHOW-Aがスレ主になっても、伝統は守らねば!
そしれ新スレ上げ
0009デフォルトの名無しさん
NGNGすげー、10歳で父を越えるとは。
将来有望じゃん。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013684
NGNGお疲れ様。
どうもこの684というハンドルは験が悪いようなので、次に質問する時は
また新しいナンバーを使います。
0014デフォルトの名無しさん
NGNG仕事を振るべきなのは祖父の方じゃなかったか?
0015デフォルトの名無しさん
NGNG気にするなよ。
一部のfread厨が騒いでいるだけだから。
でも他のスレでレス番号の684は使えないな(ワラ
0016デフォルトの名無しさん
NGNG確保した2次元配列をつくり、3次元配列の値を2次元配列に代入したいのですが
どうもうまく行きません。全て"0"の値をもつテストデータを3次元配列に格納
してから2次元配列へ
a=xxx[i][j][k];
xx[j][k]=a;
のように代入してからxx[j][k]の値を出力すると
4252620
4252620
0
0
0
0
.
.
.
のように、先頭2つにおかしな整数値が現れます。
どこがおかしいのでしょうか?
0017デフォルトの名無しさん
NGNGソースを見せてもらわないと、文章だけじゃ分からないです…。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGint xxx[ISIZE][JSIZE][KSIZE];
int xx[JSIZE][KSIZE];
だったら、
memcpy (xx, xxx[i], sizeof (xx));
でいけるんじゃないか?完全なコピーではないなら別だが
それはそれとして、おかしくなった原因を必ず突き止めておくべき。
最低でも変数定義、malloc部分、表示部分を見ないとわからない
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG1ビット目使用しないだけ?扱える数増えるの?
0024デフォルトの名無しさん
NGNGそういう拡張をしてはならん、という規定はないと思うから、合法なんじゃない?
そんなの見た事ないけど。>>22がそれを何に使いたいのかも知らないけど。
0025デフォルトの名無しさん
NGNG002616
NGNGvoid main(){
int ***xxx,***yyy,**xx,**yy,a;
// 3次元配列を確保
// 2次元配列を確保
//ファイルオープン
for(i=0 ; i < t ; i++){
for(j=0; j < 128 ; j++){
for(k=0; k < 40 ; k++){
fscanf(fp1,"%5d", &a);
x[i][j][k]=a; //データは全て"0"
}
}
for( m=0 ; m < 6400 ; m++ ){
for(i=0 ; i < t ; i++){
for(j=0 ; j < 128 ; j++){
for(k=0 ; k < 40 ; k++){
a=xxx[i][j][k];
xx[i][m]=a;
}
}
}
}
for( m = 0 ; m < 6400 ; m++ ){
for(i = 0 ; i < t ; i++ ){
xx=xx[i][m];
printf("%d\n",xx);
}
}
}
002716
NGNG配列の動的確保の部分はとりあえず省いています。
0028デフォルトの名無しさん
NGNG002916
NGNGこんなのでやっていますが......。
(一応、失敗はしていないようです)
int ***new_matrix3d( int time, int range, int sector ){
int i,j;
int ***a;
if( ( a = ( int*** )malloc( sizeof( int** ) * time ) ) == NULL ) return NULL;
memset( a, '\0', sizeof( sizeof( int** ) * time ));
for( i = 0; i < time; i++ ) {
if( ( a[ i ] = ( int** )malloc( sizeof( int** ) * range ) ) == NULL ) {
free(a);
return NULL;
}
memset( a[ i ], '\0', sizeof( int* ) * range );
for( j = 0; j < range; j++ ) {
if( ( a[ i ][ j ] = ( int* )malloc( sizeof( int ) * sector ) ) == NULL ) {
free(a);
return NULL;
}
memset( a[ i ][ j ], '\0', sizeof( int ) * sector );
}
}
return(a);
}
0030デフォルトの名無しさん
NGNGrandでは無理ですよね?
0031デフォルトの名無しさん
NGNGゼロクリアならmemset使わないでcallocでいいでしょ。
0032デフォルトの名無しさん
NGNGメモリーの確保に失敗した時、freeするのはaだけじゃまずいでしょ。
メモリーリークの原因になるよ。
0033デフォルトの名無しさん
NGNGfor(i=0 ; i < t ; i++){
・・・
for( m = 0 ; m < 6400 ; m++ ){
for(i = 0 ; i < t ; i++ ){
xx=xx[i][m];<−−−−−−−−??????
printf("%d\n",xx);
}
}
}
?のとこはこれでいいつの?
0034デフォルトの名無しさん
NGNGええ、思いっきり疑似乱数ですから。
数学の本見てその通り実装するのが吉。探せばありそうだけど。
0035デフォルトの名無しさん
NGNGa=xxx[i][j][k];
xx[i][m]=a;
一対一の射像になっていない。>
0036デフォルトの名無しさん
NGNGまず、全然多次元配列になっていない。
003716
NGNG>>31
callocってつかった事が無くて...同じような使い方
ができるとは聞いていますが。
>>32
あ、そうですね。ループして全部開放して
やらないといけないですね。
>>33
そうです。まずいですか?
0039デフォルトの名無しさん
NGNGfor(i〜〜){
for(i〜〜){ と iが2つ重なっているよ。
0040デフォルトの名無しさん
NGNG・多次元配列 a[1,3,5];
・配列の配列の配列 a[1][3][5];
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG#define KSIZE 40
...
int t;
int (*xxx)[JSIZE][KSIZE];
int (*xx)[KSIZE];
...
xxx = malloc (sizeof (int) * t * JSIZE * KSIZE);
xx = malloc (sizeof (int) * JSIZE * KSIZE);
...
とりあえず、こっち↑のほうが余分なループがなくていいと思う。
xxは固定サイズなので、動的に割り当てる必要はないと思うのだが?
0043デフォルトの名無しさん
NGNGxxかえたら迷子にならない?
ポインタの計算元じゃあないの?
0044デフォルトの名無しさん
NGNG一様乱数で検索かければたくさん出てくるじゃん。
っていうか一様乱数って知らなかったから検索かけちまった。
004542
NGNG0046デフォルトの名無しさん
NGNG木構造実装してみ勉強になると思うよ
参考
struct foo{
type Obj;
foo* pParent;
foo** pChild;
};
004742
NGNGint (*xxx)[JSIZE][KSIZE];
int (*xx)[JSIZE * KSIZE];
...
int xxx_size = sizeof (int) * t * JSIZE * KSIZE;
xxx = malloc (xxx_size);
...
xx = xxx; // 内容を一致させるのであれば、ポインタの置き換えで終わり
または
xx = malloc (xxx_size); // 同じサイズ
memcpy (xx, xxx, xxx_size); // コピー
これで終わり?
0048デフォルトの名無しさん
NGNGそういうあなたもポインタを勉強し直してね。
foo *pChild;でしょ。
0049デフォルトの名無しさん
NGNG> foo** pChild;
これに何入れるか教えてあげないと怪我すると思った。
005048
NGNGstruct foo *pChild;だ。
00511
NGNG基本情報の問題なんですけど、ずっとわからなくて次に進めません。
回答や参考書を見てもわからないです。
どなたかわかりやすく教えてください!
--------------------------------------------------------------------------------
次のような3バイトで数値±a×16^nを表現する浮動小数点がある。
| 指数部7ビット | 仮数部16ビット |
┌─┐─────────┐──────────────┐
│ | n | a |
└―┘―――──――――┘―――───────――――┘
↑ ↑ ▲
ビット0 数値全体の符号 小数点の位置
(0:正、1:負)
・仮数部の数値は、絶対値で表す。 0<=a<1。
・指数部のnは、指数部が16^nであることを表す。
・指数部のnの負数は、2の補数で表す。
この形式で表現できる負の数の最大値(0に最も近い値)はどれか。
ア 000001 イ 00FFFF ウ 410001 エ C00001 オ F00FF1
---------------------------------------------------------------------------------
答えは「エ」なんです。でも、やり方がわかりません。
自分で問題を解いた時は、
「この形式で表現できる負の数の最大値(0に最も近い値)はどれか。」
と書いてあるので1 111 1111 1111 1111 1111 1111(2)にしてFFFFFF(16)って
答えがなったんですけど、解答欄にないんです。
005316
NGNGえ.....そんな....。
>>39
あ、ミスです。i〜、j〜です。
>>40
重箱??
>>41
あ、そうでした。
a=xx[i][j];
とかにしないと。
>>42
それでも2次元、3次元つくれるんですね。
(知らなかった)
xxのインデックスも変わる可能性があるので、一応、
動的に割り当てています。
とりあえずありがとうです。
今日は終電近いので帰ります。
(連休も無しだな......とほほ。)
明日またレスします。
0054デフォルトの名無しさん
NGNGあちらこちらに貼るなよ。
荒らすなら例のスレだけにしろよ。
0056デフォルトの名無しさん
NGNGああすまん、木構造って二分木かと思った。
でも、foo **pChild;じゃなくてstruct foo **pChild;にしないとだめじゃない?
005742
NGNG#define JSIZE 128
#define KSIZE 40
main () {
int (*xxx)[JSIZE][KSIZE];
int (*xx)[JSIZE * KSIZE];
int t;
int xxx_size;
//
t = 3;
// xxx
xxx_size = sizeof (int) * t * JSIZE * KSIZE;
xxx = (int (*)[JSIZE][KSIZE]) malloc (xxx_size);
// xx
xx = (int (*)[JSIZE * KSIZE]) xxx; // 内容を一致させるのであれば、ポインタの置き換えで終わり
//
free (xxx);
}
005856
NGNG0060デフォルトの名無しさん
NGNGC++ならね。
0062デフォルトの名無しさん
NGNG拡張子を.cppじゃなくて.cにしてコンパイル。
0063デフォルトの名無しさん
NGNG006442
NGNG>>16
>>57を使うと、常に
(xxx[i][j][k] == xx[i][m]) (ただし m = j * KSIZE + k)
が成り立っている状況を作れる。多次元配列の要素の連続性を利用している
。。。というつもりで作ったけど、バグってたらごめん
0067デフォルトの名無しさん
NGNG1000でマジレスカコイイ!
006846
NGNG0069デフォルトの名無しさん
NGNG配列の末尾にNULLはどう?
0071デフォルトの名無しさん
NGNGそうそう、最初コピペかと思って読んでみたら
0072デフォルトの名無しさん
NGNGこれまた処理系依存とかじゃないの?
007346
NGNG0074デフォルトの名無しさん
NGNG__cdecl
じゃないとだめらしいのですが、この関数はどうやって引数の数を調べるのでしょうか?
0076デフォルトの名無しさん
NGNG引数を右からとか左からとか
VCならヘルプみそ載ってたよ
0077デフォルトの名無しさん
NGNG007874
NGNGちがーう。アセンブラレベルでの話だ
0079デフォルトの名無しさん
NGNG_cdeclと_pascalって。
0082デフォルトの名無しさん
NGNG大抵の環境でintと同じサイズになると言うのは真だけど、
標準で規定されているわけじゃないから、実装依存と言わざるを得ないってところ。
008374
NGNG本読んでたら 79が言うように _cdcelは呼び出し元で引数をPUSH/POPするんだって。
呼び出された側ではドンだけ引数が渡されるかわからないから。
でもそのままだとどっちにしろドンだけ引数が渡されたかわからない気がするのは僕だけ?
0084デフォルトの名無しさん
NGNG008574
NGNGなるほど。printfって引数の数が合ってないときは動作保証なかったしね。
納得っす。ありがとー。
0086デフォルトの名無しさん
NGNGどうやったらクローズ時にファイルが消えるようにできるんだYO!
独り言スマソ
0087デフォルトの名無しさん
NGNG2作ったときからインデックスと分離しておく
3OSの機能
0088デフォルトの名無しさん
NGNGremove()でだめぽ?
0089デフォルトの名無しさん
NGNG>tmpfile
とりあえずこんな妙な英単語はない。
最近の若いもんはテンポラリも知らんのか・・・。
0090デフォルトの名無しさん
NGNG悪い、3以外全然わからん(煽りじゃなくてマジで)
>>88
fcloseも改造すればいいのかな???
fclose時に削除ルーチンを呼ぶ方法がわからないのよ。
0091デフォルトの名無しさん
NGNGCの標準関数にあるはずだけど・・・
0092デフォルトの名無しさん
NGNG省略形くらい大目に見てやってよ
通じるんだから
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGtmpfile()
0095デフォルトの名無しさん
NGNGtmpfileで作成したディスクリプタを判別する方法があるんだろ
#ライブラリ内部で
で、fclose時に自動的に消している、と。
0097デフォルトの名無しさん
NGNGああやっぱりfcloseにしかけがあるんだね。ありがとう。
プログラム終了時に削除ってのはatexitでどうにかなるかな。
0098デフォルトの名無しさん
NGNGで、早速C言語でXBOXを作りたいのですが、C言語はドコで習えばいいのですか?
0099デフォルトの名無しさん
NGNGごめんなさい、実装方法なんて書いたけれど、
本当はtmpfileの仕組みが知りたかっただけなんです。
0100デフォルトの名無しさん
NGNGNOVA行きな!
0101やった〜
NGNG■ このスレッドは過去ログ倉庫に格納されています