トップページ⇒tech
1001コメント308KB

C言語なら俺に聞け(入門篇) Part 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/09(木) 00:31:01
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 3
http://pc8.2ch.net/test/read.cgi/tech/1160682950/

過去スレ
Part 1 http://pc8.2ch.net/test/read.cgi/tech/1146700389/
Part 2 http://pc8.2ch.net/test/read.cgi/tech/1153818463/


関連スレ
くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/
06556472006/11/23(木) 14:51:33
×やりたいことはmallocとかでとった領域のサイズをしりたいことでした。
○やりたいことはmallocとかでとった領域に入ってるどこかで入れた内容のサイズをしりたいことでした。
0656ぴゅあ2006/11/23(木) 15:03:28
>>654
>mallocとかってサイズ調整してるみたいだし。
これはコード上より内部的な話なので、考えなくていいと思います
(>mallocとかでとった領域のサイズをしりたいことでした。
mallocの際に必ずサイズを渡している筈なので、それを渡せていればいい…ですね)
0657デフォルトの名無しさん2006/11/23(木) 15:29:16
http://ranobe.com/up/src/up152115.lzh

ファイルからの読み出しで最大値、最小値を表示するプログラムなんですが、
数字以外が含まれるとループし続けてしまいます。
エラーを返すようにしたいのですが、どうすればいいでしょうか?
0658デフォルトの名無しさん2006/11/23(木) 15:30:13
>>657
scanf を使わず getcharを使う
0659デフォルトの名無しさん2006/11/23(木) 15:34:40
>>649 型のサイズもsizeofで書くと失敗しないよ
06606472006/11/23(木) 15:42:34
>>659
配列のサイズのとりかた
unsigned char hoge[255];
printf("length = %d\n", sizeof(hoge) / sizeof(unsigned char);
ですね。ありがとうございます。
0661ぴゅあ2006/11/23(木) 15:49:55
マクロにすると便利かと思ったりするけど
スルーっぽさを漂わせてるみたいだから別にいっか
0662ぴゅあ2006/11/23(木) 16:36:32
My name is pure.
However, it is not a pure mind.
It is a question though is sudden.
Do you think that I am a person in question?
Or, the pretender?
Do you understand?
0663デフォルトの名無しさん2006/11/23(木) 16:41:46
>>660
sizeof(hoge) / sizeof(hoge[0])

hoge が構造体でもどんな型でもつかえる。
0664デフォルトの名無しさん2006/11/23(木) 16:44:04
>>662
my.name = pure;
it = my.
however(it!=pure.mind);
assert(it & (QUESTION | SUDDEN));
you = I == person[QUESTION] ? 1: I==PRETENDER ? 2: ~UNDERSTAND;
06656232006/11/23(木) 17:51:02
>>624
>>625
今さらですが、ありがとうございました
(u)int32_tはピッタリ32bitの事かと勘違いしてました
06666232006/11/23(木) 17:52:46
訂正
(u)int_fast32_tはピッタリ32bitの事かと勘違いしてました
0667デフォルトの名無しさん2006/11/23(木) 18:04:50
>>657
数値の取得にfscanf()を使っているならfgets()+sscanf()にして戻り値をチェックしたまえ。
sscanf()の代わりに、strtol()/strtod()で変換終了点をチェックしてもいいけど。
0668デフォルトの名無しさん2006/11/23(木) 19:46:58
>>657
fscanf()のリターン値のチェックがEOFしかやってないじゃん。
1以外だったらループを抜けるって処理も入ってないと。
0669デフォルトの名無しさん2006/11/23(木) 20:34:20
2つ質問です。

C++では定数はconstで定義することが普通のようですが、Cではどうなんでしょうか?
色々なサイトを見てみると、#defineでやってるのが多いようですが。
なぜconstで定義しないのでしょうか?

もう一つ、ヘッダファイルにconstで定数を定義しようと考えたのですが、どちらが
一般的でしょうが?
1.ヘッダファイルにstatic constで定義する。
2.ヘッダファイルに対応する.cファイルに実体を定義し、ヘッダファイルでexternする。
0670デフォルトの名無しさん2006/11/23(木) 21:16:38
>>669
Cではconstで定義したものを、定数式が要求されるところ
(配列宣言時の要素数やcaseラベルなど)で使うことができない。
そんなCを見て、C++ではconstで定数を定義できるようになった。

だからCでヘッダにconstな変数宣言をおくのは、そもそも一般的ではない。
C++では、staticなしでconst使うが(少なくとも整数型ではそれで問題ないようになっている)。
0671デフォルトの名無しさん2006/11/23(木) 21:25:30
整数型以外だとなにか問題あるケースがあるの?
0672デフォルトの名無しさん2006/11/23(木) 21:50:06
クラスオブジェクトだとコンストラクタ・デストラクタがあるから、
どうなるか俺は規格書を見ないとわからない。
0673デフォルトの名無しさん2006/11/23(木) 22:10:48
ああ,クラスか.
文字列とか,実数でなにかあるのかと思った.
06746692006/11/23(木) 23:26:18
>>670
Cではconst変数と定数は区別しなくちゃいけないんですね。
で、定数と同じ使い勝手を保ちつつ定数に名前を付けるとしたら
#defineしかない、ということですか。
良く分かりました。有難うございました。
0675デフォルトの名無しさん2006/11/24(金) 00:17:32
C言語で違うディレクトリのファイルの内容を書き換えたいんだけど、
どうやってやるんでしょう。
0676デフォルトの名無しさん2006/11/24(金) 00:19:58
>>676
カレントディレクトリのファイルと要領は同じ。開くファイル名を相対パス名にすればいいだけ。
06776752006/11/24(金) 00:32:27
こんな感じにやってみたけど駄目だ。
レスサンクス
if((sfp = fopen(..\fff.txt,"r"))==NULL)
puts("コピー元、オープンできませんでした。");
0678デフォルトの名無しさん2006/11/24(金) 00:33:41
\ → \\
06796752006/11/24(金) 00:34:43
一つ上のカレントディレクトリのファイルを開こうとしてるんだけど。
コンパイルエラーでございます。
0680デフォルトの名無しさん2006/11/24(金) 00:35:03
>>677
..\fff.txt
これ”..\\fff.txt” じゃなきゃダメなんジャマイカ?
0681デフォルトの名無しさん2006/11/24(金) 00:35:20
if((sfp = fopen(..\fff.txt,"r"))==NULL)
↓
if((sfp = fopen("../fff.txt","r"))==NULL)
06826752006/11/24(金) 00:37:26
出来たwww
すげーありがと
またよろしくーーーwww
0683デフォルトの名無しさん2006/11/24(金) 02:05:08
while(1)の(1)は、どんな意味があるのでしょうか?
0684デフォルトの名無しさん2006/11/24(金) 02:06:15
真偽値の真
0685デフォルトの名無しさん2006/11/24(金) 02:12:34
サンクスだす
0686デフォルトの名無しさん2006/11/24(金) 05:51:10
>>674
定数ならenum 使うべき。
0687ぴゅあ2006/11/24(金) 07:52:52
>>686
適材適所でしょ

>>679
ちっちゃいツッコミですけど
>一つ上のカレントディレクトリ
カレントディレクトリの一つ上の(カレントとは言わない)ディレクトリ
と呼ぶです

>>683
Cでは0(偽)ではない値を真(0以外)と捉えてやってください
whileと組み合わせてwhile(1)は"無限にループさせたい"
0688デフォルトの名無しさん2006/11/24(金) 11:09:26
どっちかと言えば、for (;;) 推奨。
0689デフォルトの名無しさん2006/11/24(金) 11:16:23
それキメェからやめろ。
0690デフォルトの名無しさん2006/11/24(金) 11:26:54
んじゃ、
#define ever (;;)
for ever
とか、
#define _
for (;_;)
とか。
0691デフォルトの名無しさん2006/11/24(金) 12:43:40
#include<math.h>
#include<stdio.h>
#include<string.h>
void wait(int tm)
{int i,j;
for (i = 1;i < tm; i++)
for(j = 1;j < tm; j++){
double x = sin(i) * cos(j);}}
int main(void)
{
int cnt = 0;
char mes[] = "あいうえ";
int len = strlen(mes);
while(1){
int i;
putchar('\r');
for (i = 0;i<strlen(mes);i+=2){
if(cnt + i<len){
putchar(mes[cnt + i]);
putchar(mes[cnt + i+1]);}else{
putchar(mes[(cnt + i) % 8]);
putchar(mes[(cnt + i+1)%8]);}}
wait(2000);
if(cnt < len - 1)
cnt+=2;
else
cnt = 0;
}return(0);}
これを右に流れるようにしたい
0692デフォルトの名無しさん2006/11/24(金) 12:45:30
すれば?
0693デフォルトの名無しさん2006/11/24(金) 12:46:37
while ( "loop forever" )
0694デフォルトの名無しさん2006/11/24(金) 13:05:42
ファイルの一部分の変更の仕方が分かりません。
例えば set の次の0を1に変える方法です。
助言プリーズ
while(*fp[pt] != '\0') && (temp[pp] != '\0')){
if(*fp[pt]== temp[pp]){
pt++;
pp++;
}
else{
pt=pt-pp+1;
pp=0;
}
}
if(temp[pp]=='\0'){
while(*fp[pt] != "A-Z" || *fp[pt] != "a-z" ){
switch(*fp[pt]){
case ' ': pt++; break;
case '0': *fp[pt]='1';
puts("0を1に書き換えました");
break;
case '1': puts("すでに1です。");
break;

}
}
puts("処理は無事、終了しています。");

長くてすみません。
0695デフォルトの名無しさん2006/11/24(金) 13:08:28
while(*fp[pt] != "A-Z" || *fp[pt] != "a-z" ){
この条件が真になるの?
06966952006/11/24(金) 13:23:50
よく見たら常に真の無限ループだった orz

この条件が偽になるの?だな
0697デフォルトの名無しさん2006/11/24(金) 13:27:50
>>694
ちょっと書き替える程度のことでそんなキメーことすんなよ。
0698デフォルトの名無しさん2006/11/24(金) 13:28:41
>>694
man sed
0699デフォルトの名無しさん2006/11/24(金) 13:28:58
>>694
>while(*fp[pt] != "A-Z" || *fp[pt] != "a-z" ){
ローマ字以外の時だけ繰り返すって意味なら
while !((*fp[pt] >= 'A' && *fp[pt] <='Z') || (*fp[pt] >= 'a' && *fp[pt] <= 'z') ){
こんな感じになる
07006942006/11/24(金) 13:31:04
setの次の数字を0から1に変えたくてtemp[]="set"としています。
*fpはFILE型のポインタでchar型でなく、int型としてしか取り扱えない
ようなエラー内容。fopen関数でfpに変更したいファイルを'r+'で
オープンしています。
695の内容はsetの次の数字以外の文字が来たときにはプログラムが終了
するような意図を持って記入しました。英文字が来たら終了の意図です。
自信ないんですが。
0701デフォルトの名無しさん2006/11/24(金) 13:32:24
#include<ctype.h>
while(!isalpha(*fp[pt]))
0702デフォルトの名無しさん2006/11/24(金) 13:33:09
ファイル操作が FILE* fp = fopen() の後
直接 *fp or fp[] で操作する と想像したお前に完敗
07036942006/11/24(金) 13:35:35
なるほどーー,全然違いましたねw>>699
ぐぐってみます>>698
ど素人ですw>>697
0704デフォルトの名無しさん2006/11/24(金) 13:35:57
それってコンパイルできないんじゃ
0705デフォルトの名無しさん2006/11/24(金) 13:46:02
>>704
それでもコンパイルは通るだろ。
char **fpとかじゃねぇの?
07066942006/11/24(金) 16:56:30
解決しました。
レスくれた人、有難う。
勘だらけで内容くちゃぐちゃだけど、
結果オーライ。
0707デフォルトの名無しさん2006/11/24(金) 17:19:43
fork execlで蹴った子プロセスが
終了したか監視したいんだけども

どうやるんざますの?
0708デフォルトの名無しさん2006/11/24(金) 17:34:33
>>707
>>1
0709デフォルトの名無しさん2006/11/24(金) 17:34:55
http://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi62093.txt.html
0710ぴゅあ2006/11/25(土) 00:29:31
>>688-690
あちしの場合はwhile (1)よりfor ( ; ; )を好んで使いますね
賢いコンパイラならwhile (1)をfor ( ; ; )として解釈してくれそうでもあるけど
なんか「キメェ」って感じなので。。。(使い方合ってます?)
(while(1)は、毎回「1だよね」って確認してくれてそうな…)

#define forever() for ( ; ; )
とかすることもあったりするけど(色んなコードを見てるとそんな風にしているのも多くあったりする?し)
サラッと書いて済ますときは(特に)for ( ; ; )だったりですけど

実際while(1)を使うかfor ( ; ; )を使うかはそのときの気分?かな
圧倒的にfor ( ; ; )の方が多いのは間違いないけど

仕様もない話ですが。。。
0711デフォルトの名無しさん2006/11/25(土) 00:37:14
てめえの好みなんか聞いてねえ。
while(1)を最適化しないコンパイラなんて糞コンパイラだ。
for(;;)はANSIが無限ループのために規格化した書き方だ。
0712デフォルトの名無しさん2006/11/25(土) 00:41:07
for (;;) ; /* ひげのおじさん */
for ( ; ; ) ; /* 悲しそう */
while (1) ; /* ょぅι゛ょの割れ目?卑猥です */
0713デフォルトの名無しさん2006/11/25(土) 08:02:35
マジックナンバーを含まないっつーポリシーに従うなら for(;;) の方がベターだとは思うが、
while(1) はもう while(1) というパターンとして認識されてるから、正直どっちでもいいと思うぜ。
0714デフォルトの名無しさん2006/11/25(土) 09:15:28
for (;;)こそパターンとして認識されているだろと俺は思っている。
0715デフォルトの名無しさん2006/11/25(土) 09:51:26
質問なんだけど、bccコンパイラでコンパイルした時に出来るexeファイル
以外のファイルってなんなの?
.makと.objと.tdsなんだけど。
教えてくださらんか。
0716デフォルトの名無しさん2006/11/25(土) 09:53:30
もう一点質問です。
C言語で他の実行ファイルを実行させたい場合、
どういう風に記述すればいいのだろうか。
0717デフォルトの名無しさん2006/11/25(土) 09:56:35
漏れは
while (1==1)
だな。
0718デフォルトの名無しさん2006/11/25(土) 11:08:35
>>715
.makはコンパイル時には作られないだろう
BCCDeveloperかなんか使ってるんじゃねーの?
ちなみに.makはメイクファイルといってコンパイルやリンク時の手順を記述したもの
自分で書いたりIDEが吐いてくれたメイクファイルを元にコンパイル等を実行する。

tdsは何か忘れた

.objは純粋にコンパイルしたときに作られるオブジェクトファイル

本来EXEを生成するには
・hoge.cをコンパイルしてhoge.objを生成
・hoge.objと必要なライブラリ等をリンクしてEXE生成
という大まかに分けて2つの手順を踏む必要があるが、
bccは-cオプションをつけない限り、リンクも自動的にやってくれるようになっている

間違ってるかもしれないけど、大体こんな感じ
07197152006/11/25(土) 11:32:22
>>718
回答どうもありがとう!
0720ぴゅあ2006/11/25(土) 13:21:20
>>716
system関数周りとかexec系の関数辺りとかを見てみれば

>>714
当然パターンとしてコンパイラは認識する筈だけど
中身(式)なしのforがどうなるかだろうけど

アセンブラをずっとやっているときにCが出てきて
アセンブラからCを中から見て理解したけど(特にポインタとか)
中身なしのforは中身なしのコードで出てきてた記憶はあるけど

いずれにしても余程変なことでもしてなきゃ
好みで選んでいいだろうと思うけど

>>711
ANSI Cが定められたのを知っても特に興味も沸かなくて
気にしてこなかったけど
あちしがずっと好んでだけで使ってきてたことを
適切であっただろうとわざわざ立証してくれてありがとう
0721デフォルトの名無しさん2006/11/25(土) 13:27:59
あちこちのスレにしゃしゃり出てくる人がウザイですー
0722デフォルトの名無しさん2006/11/25(土) 13:43:27
>>721
?
0723デフォルトの名無しさん2006/11/25(土) 13:52:57
C言語なら俺に聞け(入門篇) Part 4
http://pc8.2ch.net/test/read.cgi/tech/1162999861/l50

Cなら俺に聞け(応用編)
http://pc8.2ch.net/test/read.cgi/tech/1163246166/l50

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/l50

くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/l50

渡辺篤史のGoogle Code Search探訪
http://pc8.2ch.net/test/read.cgi/tech/1160188096/l50


どこに質問していいのか分かりません
ビットシフトについてなんですが・・・
0724デフォルトの名無しさん2006/11/25(土) 14:10:21
ここでおk?
0725デフォルトの名無しさん2006/11/25(土) 14:34:11
>>721
夏休みはまだ早いぞ
0726デフォルトの名無しさん2006/11/25(土) 15:22:47
おkおk
0727デフォルトの名無しさん2006/11/25(土) 19:40:35
ファイルの中身を配列に入れて配列を表示させると順番が
ぐしゃぐしゃです。
助言くれーー。
0728デフォルトの名無しさん2006/11/25(土) 19:42:03
ソース見せないと
0729デフォルトの名無しさん2006/11/25(土) 19:42:32
#include "sengen.h"


#define NUM 500


int main(){

FILE *fp;
int ch;
int chx[NUM]={0};
int i=0;
0730デフォルトの名無しさん2006/11/25(土) 19:43:09
if((fp=fopen("C:\\tools\\ten.bat","r"))==NULL)
puts("読み取りオープン失敗");
else{

puts("元の内容");
while((ch=fgetc(fp)) != EOF){
chx[i]=ch;
putchar(chx[i]);
i++;
}
}
putchar('\n');
0731デフォルトの名無しさん2006/11/25(土) 19:44:09

puts("配列chxの内容");

for(i=0;i<NUM;i++)
putchar(chx[i]);


getchar();
return 0;
}

07327272006/11/25(土) 19:45:04
さらすのに手間取りました

07337272006/11/25(土) 19:47:51
NUM=1000にしてもだめです。
07347272006/11/25(土) 19:58:04
NUM=2000にしたらできました。でもファイル読み込みのときって
設定配列数オーバーしても関係ないんですね。
>>720どうもありがとう、ぐぐってみます!
0735デフォルトの名無しさん2006/11/25(土) 20:06:58
>>727
iがNUM以上になるのを何故放置するのか?
0736デフォルトの名無しさん2006/11/25(土) 20:08:50
>>727
#include <stdio.h>
#define SIZE 1000
main(){FILE *fp; int i, c, chx[SIZE];
if((fp=fopen("C:\\tools\\ten.bat","r")) ==NULL) puts("どんまい");
else {puts("もとの");
for (i=0; i<SIZE && (c=fgetc(fp))!=EOF; i++) putchar(chx[i]=c);
chx[i]='\0';}

getchar(); puts("\nはいれつのなか");

for (i=0; i<SIZE && chx[i]; i++) putchar(chx[i]);
getchar();return 0;}
0737デフォルトの名無しさん2006/11/25(土) 20:25:04
fclose はしないのかにゃ
0738デフォルトの名無しさん2006/11/25(土) 20:26:48
fclose()は省略しても、まあ、問題ないな。
0739デフォルトの名無しさん2006/11/25(土) 20:28:00
>>736
#define SIZE 1000
for (i=0; i<SIZE
chx[i]='\0';
’SIZE’以上のファイルだと i は1000になって chx のサイズオーバー
0740デフォルトの名無しさん2006/11/25(土) 20:59:53
>>739
>>737
ゴメンなさい。反省してます。
07417162006/11/25(土) 22:12:56
ファイル実行させるソースを書きたいんだけど
こんな感じにやって駄目でした。
#include <stdio.h>
#include <process.h>
int main(){
execv("C:\\tools\\ten.bat",NULL);
getchar();
return 0;
}
ヒントいただけないでしょうか
0742デフォルトの名無しさん2006/11/25(土) 22:30:57
system() 使っとけ。
07437162006/11/25(土) 22:57:04
#include <stdio.h>
#include <process.h>
int main(){
system("C:\\tools\\ten.bat");
getchar();
return 0;
}
あっさりできたw
どうもありがとうございます。
0744デフォルトの名無しさん2006/11/26(日) 01:26:50
バイナリファイルへの読み書きについて、構造体単位で扱うことは可能でしょうか?
1個の構造体では出来たのですが、一つのファイルに二つ以上入れたとき、一つ目のデータが破棄されてしまうのです。

具体的には
1、no番目の構造体データをfseek(fp,no*sizeof(str),SEEK_SET)後fwrite(&str_a,sizeof(str),1,fp)で入力。
2、別のnoについて同様に入力。
3、確認の為、no番目のデータををfseek(fp,no*sizeof(str),SEEK_SET)後fread(&str_b,sizeof(str),1,fp)でstr_aにコピー。
4、printfでstr_bの中身を見ると、0になっている。
コンパイルエラーは起きないし、もちろんメモリ保護違反等も起きてないのですが…
0745デフォルトの名無しさん2006/11/26(日) 01:28:58
>>744
ソースコードを晒して
0746デフォルトの名無しさん2006/11/26(日) 01:30:59
>>744
んでstr_bはどこで読み込んでんの?
0747デフォルトの名無しさん2006/11/26(日) 01:48:46
int main(void)
{
int no,sel;
str_a alpha;
FILE *fp;
printf("plz input no\n");
scanf("%d",&no);
printf("plz input RorW(W=1,R=2)\n");
scanf("%d",&sel);
switch (sel){
case 1:
fp=fopen("data.bin","wb");
fseek(fp,sizeof(str_a)*no,SEEK_SET);
printf("plz input a,b,c\n");
scanf("%d%d%d",&alpha.a,&alpha.b,&alpha.c);
fwrite(&alpha,sizeof(str_a),1,fp);
break;
case 2:
default:
fp=fopen("data.bin","rb");
fseek(fp,sizeof(str_a)*no,SEEK_SET);
fread(&alpha,sizeof(str_a),1,fp);
break;
}
printf("%d\t%d\t%d\n",alpha.a,alpha.b,alpha.c);
fclose(fp);
return 0;
}

上で書いたまんまのソースはいじりまくってしまったので申し訳ないですけど、↑で。
もちろん、同じ状況である事は確認しました。
0748デフォルトの名無しさん2006/11/26(日) 01:54:52
と、肝心の構造体を書き忘れました。

typedef struct
{
int a,b,c;
} str_a;

です。
0749デフォルトの名無しさん2006/11/26(日) 01:54:54
>>747
noはゼロじゃなくていきなり 1 から初めてんの?
多分最初のfseek()が失敗してるよ。戻り値をみてみ。
0750デフォルトの名無しさん2006/11/26(日) 02:02:34
貼ってあるソースコードで書いているとおりに動作したぞ。
期待した動作と違うって事だろうから、エスパー解答
fp=fopen("data.bin","wb");
↓
fp=fopen("data.bin","r+b");
0751デフォルトの名無しさん2006/11/26(日) 02:04:05
>749
no=0とno=1でfseekの戻り値見てみましたが、0でした。
fseekの引数でnoを(no-1)にしてnoを1と2で試してみましたが、やっぱりno=1を読むと0 0 0になってしまいました。
戻り値の意味が間違ってるならごめんなさい。
0752デフォルトの名無しさん2006/11/26(日) 02:07:13
>>751
0なら成功してますね。
>>750
あっそういう事か。ファイルを上書きして消してしまってるという事ね。
元のファイルを残したいならr+bだな。
0753デフォルトの名無しさん2006/11/26(日) 02:11:07
>750
それで試したら無事表示できました、ありがとうございます!
オープンモード、もう一度勉強しなおしてきます。

>751
わかりづらくて申し訳ありませんでした。
上書きはwbやwb+とはまた別の書き方なんですね…

こんな深夜にお付き合い頂き、ありがとうございました。
0754デフォルトの名無しさん2006/11/26(日) 10:26:00
せめて構造体の前後に#ptagma pack(0)みたいなやつでも入れといたほうがいいよ。
■ このスレッドは過去ログ倉庫に格納されています