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

C言語なら、俺に聞け! <15>

レス数が1000を超えています。これ以上書き込みはできません。
0001Dennis RitchieNGNG
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通だ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419

推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50

・前スレ C言語なら、俺に聞け! <14>
http://pc.2ch.net/test/read.cgi/tech/1015286974/l50
0002デフォルトの名無しさんNGNG
お、きたきた
0003デフォルトの名無しさんNGNG
今田げとー
0004デフォルトの名無しさんNGNG
4げとー
0005デフォルトの名無しさんNGNG
fork について聞きたいのですが、
これを使うとプログラム中に子プロセスが作られますが、自分の予想では、
その子プロセスもforkを使って子プロセスを作って、そのまた子プロセス
もforkを使って...という風に無限に続くと思ったのです。しかし
いざプログラムを組んでやってみるとどうやらforkは一回しか使われて
いないようなんです・・・ forkで作られた子プロセスはいったいどういう
動きをするのでしょうか?教えてください。
0006デフォルトの名無しさんNGNG
forkのあと親と同じ状態でスタート
0007デフォルトの名無しさんNGNG
なんだぁ、>>1の名前に期待してたのに・・・
0008デフォルトの名無しさんNGNG
プロフィールが日下部のままなのが笑える
00095NGNG
/*ヘッダは省略*/

int main(void)
{
pid_t pid;
char *message;
int n;

pid = fork();

switch(pid)
{
case -1:
/*エラー*/
exit(1);
break;
case 0:
message = "This is the Child";
n = 5;
break;
default:
message = "This is the Parent";
n = 3;
break;
}

for(; n>0 ; n--){
puts(message);
sleep(1);
}

/*以下省略*/

}

というようなプログラムなのですが(書籍:Linuxプログラミングより) 6さんの言ったことは
”子プロセスはforkの次の行から処理を実行する”ということで合ってますか?
0010デフォルトの名無しさんNGNG
ぜんてってなんだよ。アレンジにしてはひどいな。
0011勉強中NGNG
#include <stdio.h>
static int i = 1;
extern int i ;
int main(void)
{
printf("%d",i);
return 0;
}

エラーにならないのは何故ですか?
これはどういうことでしょうか?
0012デフォルトの名無しさんNGNG
>>1
2ちゃんではリッチーと日下部が同列なのかよ...
0013デフォルトの名無しさんNGNG
子プロセスはfork()から0が帰ってきたように振る舞う。
が正しい。
「次の行から」という認識は間違っているぞ。
0014デフォルトの名無しさんNGNG
>>10
全て=ぜんて
このスレの慣わしです
0015デフォルトの名無しさんNGNG
>>11
どうしてエラーになるの?
0016デフォルトの名無しさんNGNG
staticを外してみよう
0017デフォルトの名無しさんNGNG
extern int i;

は、「 i という識別子が外部スコープにあるからそいつをint型として扱ってくれよろしく。」と読め。

static int i = 1;

は、
「iというint型変数をこのスコープに宣言する。staticなんで他のファイルからは見えないからよろしく。
初期化は1で。」

と読め。

どちらも矛盾していない。


0018勉強中NGNG
ご丁寧にありがとうございました<(_ _)>
確かに矛盾してませんね。
0019デフォルトの名無しさんNGNG
>>17
この場合、出力している i はどっちになる?
0020仕様書無しさんNGNG
static int i;
0021デフォルトの名無しさんNGNG
>>20
extern で手に入れた外部の i を利用するときは?
0022デフォルトの名無しさんNGNG
staticとexternは名前空間が別なのか...
初めて知った。
0023勉強中NGNG
ついでに関数などでexternalなiを使う方法は無いですか?
普通にiを使えばstaticな方を全て指すようになるから無理ですか。

0024デフォルトの名無しさんNGNG
そもそも外部変数を参照しようというのが設計的にしょぼいっツーか
スパゲッティの元なので、

extern int GetXXXDataI();
extern void SetXXXDataI(int i);

でも作って、他のファイルスコープにあるデータは
setter/getterを経由して参照しなさい。
002517NGNG
ついでにいうとお前>>22は何か勘違いをしている。
0026デフォルトの名無しさんNGNG
>>24
禿しく同意
0027デフォルトの名無しさんNGNG
>>24
おれもそんな感じにオブジェクトファイルを
クラス風に見立てていつもやってるんだけど、
これって正しいやり方なのかな?
0028デフォルトの名無しさんNGNG
Cではよくあるやり方でないかい?
0029デフォルトの名無しさんNGNG
>>28
ちと安心した
0030デフォルトの名無しさんNGNG
>>7
次スレはお前がたてろ。
面白くなければ死刑に処す。
0031勉強中NGNG
ごめんなさい、スパゲッテエェはもう作りません。
0032デフォルトの名無しさんNGNG
Σ(´-`).。oO(>>1の名前がリッティジャン・・・haxahaax)
0033デフォルトの名無しさんNGNG
static int i;
int ii;
int main()
{
 ・・・
これら二つの変数が異なるセクションに確保されるのは
言語的に決められているんでしょうか?
0034デフォルトの名無しさんNGNG
識別子が違うし刈りの定義は0で初期化されるし
じゃなくて>>1さーん
リッチィ先生は38歳じゃないよぉ・・。
50〜60歳?いいお年だな( ;´Д`)堪らないねぇハァハァ
0035デフォルトの名無しさんNGNG
違いはスコープだけで、置かれる場所は同じだ。

int ii;は他のスコープからextern int ii;かなにかで参照され得るが、
static int i;は、ファイルスコープ内からしか合法的に参照されることはない。

0036デフォルトの名無しさんNGNG
リッチィ先生のティンポ、、ハァハァ
00375NGNG
>>13
"子プロセスがforkを呼び出しても孫プロセスは作らずに0を返す"
と思っておけばいいでしょうか?
0038デフォルトの名無しさんNGNG
>>37
永遠に子供を産むことが出来ます。
子供の子供の子供の・・・
0039デフォルトの名無しさんNGNG
あるのはプロセスを作った方(=親)と作られた方(=子)という関係だけで、
ある子が、forkでプロセスを作ったとすれば、またそこで親と子の関係がひとつできあがる。

子がforkを呼べば、孫プロセスが作られ、孫プロセスのpidが返る。
0040デフォルトの名無しさんNGNG
そもそもお前らのプロセスはみんな init(0)の子なんだよ。(UNIX系限定)
0041デフォルトの名無しさんNGNG
実際のプログラムを作るときには
プロセスグループ、セッショングループとかが
関係してくるからStevens大先生の本を読むのが
いいよ。
おれはあんまり詳しくないから説明できない、スマソ
0042デフォルトの名無しさんNGNG
子供は、たとえ死んでも 親が生きてる限りゾンビとして残りますよね?
親子の縁を切りたいときはどうすればいいのでしょうか?
0043デフォルトの名無しさんNGNG
setpgid()
0044デフォルトの名無しさんNGNG
ごめん、43は勘違い。うそでした。
0045ちょい教えてNGNG
IEのバージョン6のPCユーザーにメールを送るとアクティブXが
引っかかってメールが開けないらしい。こんなことってあるの?
もし、このアクティブXをメール送信者から制御できるいい方法ってある?
00465NGNG
>>42
どうやるんですか?ギブアップです。
wait使うとか?
0047デフォルトの名無しさんNGNG
>>45
わけわからん。
っていうか、ここで聞く話題なのかよ。
0048デフォルトの名無しさんNGNG
まずウイルスチェックすれ。
0049デフォルトの名無しさんNGNG
誰かこのスレの過去ログ取ってる奴いないか?
いたら是非アップしてほしいのだが。
0050デフォルトの名無しさんNGNG
>>46
- wait()系の関数で終了を待つ
- signal()などでSIGCHLDのハンドラにSIG_IGNを設定する
- sigaction()でSIGCHLDのフラグにSA_NOCLDWAITを設定する(Linuxではダメらしい)
どれでも可。他にも方法があるかも知れない。
0051デフォルトの名無しさんNGNG
あ、これは子が先に死んでもzombieにならない方法だけど、親子の縁を
切るわけじゃないから子から見たppidは変わらないんだな。

>>50の後に更に子がfork()して孫を作って、子はすぐに死ぬようにすれば
残った孫はorphan processとしてinitが引き取ってくれるから、完全に
親子の縁を断ち切れるかな。
0052デフォルトの名無しさんNGNG
仕事は子ではなく孫にやらせよう。
孫を産んですぐ死ぬ。
0053デフォルトの名無しさんNGNG
孫は生めない
0054デフォルトの名無しさんNGNG
そんなときは定番のUnix Programming FAQ。

[どうすればゾンビプロセスができることを防ぐことができますか? ]
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC13

>>52
デーモン作るときの常套手段ですね。
00555NGNG
forkは本屋で参考書を立ち読みしてきて理解しました。
"一回の呼び出しで二回帰る"こんなの自分の持っている本には書いてませんでしたよ・・・

プロセス関係のこと、なんか面白そうなのでいろいろ調べたいと思います。いろいろお世話になりました
0056デフォルトの名無しさんNGNG
>>55
ちょっとまった!
そんなの聞いたこと無いぞ。<二回帰る
0057デフォルトの名無しさんNGNG
>>55
子プロセス自体はmainから始まるんじゃなくてfork()の後から
実行するってだけだよ。その時に親の使っていたメモリ領域を
そっくりそのままコピーする(厳密には最近のOSはどれも
データセクションの書き換え時に初めてコピーするようになってるけど)。
違うのはfork()の戻り値だけ。
0058デフォルトの名無しさんNGNG
制御系のC言語ってどんなのやるの?インラインアセンブラですか
0059デフォルトの名無しさんNGNG
GUIがないだけ。
だまされるな。
*や*る*こ*と*は*同*じ*だ*
0060デフォルトの名無しさんNGNG
>>58
ほぼ一緒。ただやたらとIOポートへのポインタを多用するだけ。
後、intが16ビットで懐かしい気分に陥ってみたり。
006158NGNG
>>60
ありがとうございます。ポインタですか・・・

0062デフォルトの名無しさんNGNG
>>58
インラインアセンブラもたまに使います。
CPUのレジスタに直にアクセスする場合等。
特に割り込み関係。
OS載ってれば別だけど。
0063デフォルトの名無しさんNGNG
インラインアセンブラもなにもCは皮かぶったアセンブラだよ。
ポインタはCの中で特に強くアセンブラ的な要素をもったもの。

asmとcは文法は違うが近い、逆にcとc++は文法は似てるが全く別物。
0064ビル・ジョブスNGNG
>>59
うー・・・現実ははかなり違うぞ・・・今でもROM64KB・RAM16KBなんて環境も
あるからな。
そこで、リアルタイムマルチタスクOS(ビル・ジョブス作)使ってる製品も
多いからな・・・
でも、最近はSH4だからGUIまで作っちまったよ。
0065デフォルトの名無しさんNGNG
>>64
ディスプレイがないのに・・・。

「0x0010000から1KBはボクちん専用VRAM〜♪」

かわいそうな人だ。
0066デフォルトの名無しさんNGNG
>>64
そんな小さな環境でどんなスケジューリングをやってたんですか?
0067デフォルトの名無しさんNGNG
>>64
( ゚д゚)ポカーン
0068ビル・ジョブスNGNG
>>65
おまえなーSH4クラスの製品ならLCDくらい付いてる事を想像できないか?

この言葉、おまえに返すよ、
>かわいそうな人だ。
0069デフォルトの名無しさんNGNG
( ゚Д゚ )ポカーン
0070デフォルトの名無しさんNGNG
>>68
2行16文字のLCD上でGUI・・・かわいそうな人だ。
0071デフォルトの名無しさんNGNG
>>68
是非ともLCD付きのLSIチップを見せてください!
0072デフォルトの名無しさんNGNG
ビル・ジョブスは叩かれる伽羅なんですか?
0073デフォルトの名無しさんNGNG
>>72
そうです。
このスレはビルに混じれ酢付けるアフォを見物するスレなんです。
0074デフォルトの名無しさんNGNG
コテハンを叩くスレはここですか。
情けない。
0075ビル・ジョブスNGNG
>>66
15レベルプライオリティー15、リスケジューリングタイム1ms、カーネルコード8KB、
TCB(タスクコントロールブロック)のRAM容量は実装依存。
もちろん各プライオリティーキューはラウンドロビン。
処理内容はLCD制御、キースイッチ制御、ネットワーク制御、ETC.。
ですが、なにか?
0076デフォルトの名無しさんNGNG
>>72
いや、技術はあるから叩いてもいいんです
それを跳ね返すだけの実力がある。
0077デフォルトの名無しさんNGNG
みんな食い付き良すぎだYO!!
ビル・ジョブスってのは、厨房のフリしてストレス発散したくなった時に使う
共有コテハンなんだからさぁ。
と言ってみるテスト。
0078デフォルトの名無しさんNGNG
>それを跳ね返すだけの実力がある。
プ
0079デフォルトの名無しさんNGNG
>>75
ありがと
0080デフォルトの名無しさんNGNG
>>77
正解
0081デフォルトの名無しさんNGNG
・・・
0082ビル・ジョブスNGNG
こんなカンジのソースコード書いてますが、貴様らに理解できますか?

typedef struct TCB {
UCHAR id; /* My task ID */
UCHAR pid; /* Parent task ID */
UCHAR prior; /* Task Priority */
UCHAR cond; /* Task condition */
REGS *rg; /* Registers */
int wait; /* Sleep time (1ms*n) */
void *handle; /* Waiting msg/event/semaphore handle*/
int ewmode; /* Waiting event mode */
DWORD emask; /* Waiting event mask */
DWORD cputime; /* Used CPU time */
void *isp; /* Initial stack pointer */
struct TCB *prev,*next; /* Previous/Next TCB ptr */
} TCB;

typedef struct QUEUE {
TCB *head, *tail;
} QUEUE;

QUEUE ReadyQ[SYS_PRIORITY_MAX], SleepQ;

void add_ready_queue_head(TCB *t)
{
QUEUE *q = &ReadyQ[t->prior];
t->prev = NULL;
if (!(t->next = q->head))
q->head = q->tail = t;
else
q->head = q->head->prev = t;
}

void add_ready_queue_tail(TCB *t)
{
QUEUE *q = &ReadyQ[t->prior];
t->next = NULL;
if (!(t->prev = q->tail))
q->head = q->tail = t;
else
q->tail = q->tail->next = t;
}
0083デフォルトの名無しさんNGNG
お前がスゴイ!のはわかったって。
0084デフォルトの名無しさんNGNG
ビル・ジョイスはWin使いかよ。萎え〜
82のようなコードは生理的に受け付けない
0085デフォルトの名無しさんNGNG
さっきの環境から言ったら、pidとppidで1バイトで良さそうに
思うのですがどうでしょうか?>ビルさん
0086デフォルトの名無しさんNGNG
ビルは適当に検索して、それらしい単語やコードをコピペしてるだけだろ。
深いところに突っ込むと、ろくに答えないで煽り返してごまかすし。
0087デフォルトの名無しさんNGNG
笑いが止まらぬどころか鼻血がとまんねーよ、オイ
0088デフォルトの名無しさんNGNG
うわぁ、さすがビル・ジョブスさん。さすがです。
0089デフォルトの名無しさんNGNG
TCB制御にint直打ちやNULLマクロつかッてんの初めて見た。
突っ込むときりがないんで、とりあえず、その心意気だけは買って褒め称えるスレにでもするか。
0090祭りだワッショイ!NGNG
真スレ勃ったばっかなのに波乱の予感・・・
0091デフォルトの名無しさんNGNG
ここは、ビルへのツッコミで1000を目指すスレになりました。
0092ビル・ジョブスNGNG
>>85
idとpid・・・で1バイト?ってことは4ビットで15タスク・・・は無理でしょ。
というか拡張性無さ過ぎないか?ETC.の処理もあるし。

>>86、>>87
おーおまえらよくもそこまで言ってくれたな・・・
まーいーや時間の無駄だから。
0093デフォルトの名無しさんNGNG
教科書通りのコード見せられてもなあ。
タスク制御なんてそこらのオタゲーPGでも書けるンだっつーの。
応用コードミセロヤ。
0094執行部NGNG
所詮ビルに故・日下部の代わりは無理か。
次はちゃんとしたのを送るとしよう。
0095デフォルトの名無しさんNGNG
>>94
次の刺客は林あたりをよろしく。
0096デフォルトの名無しさんNGNG
せめてエスピーテーメー級の骨太のやつ頼むぜ。
0097デフォルトの名無しさんNGNG
オイオイサガッテルヨ
ビルサンサイコー
0098デフォルトの名無しさんNGNG
TCB構造体には無駄があると思います。みなさんもそう思いますよね?
ビルさんの出してくれたデータ構造体の叩き台を再検討しましょう!
まずはそれから!!!次に処理。
0099ビル・ジョブスNGNG
>>93
うーん・・・応用って言われてもなー・・・

こんなのでどう?おれの作ったメモリアロケーション(MMUなしバージョン)
だけど、文句しか言えないカワイソーナ貴様には3年がんばっても理解不可能だと
思うけど・・・

typedef struct MCB {
WORD check;
USHORT owner;
DWORD size;
struct MCB *prev,*next;
} MCB;

void *far_malloc(MCB **mh, MCB **mt, void *area, int area_max, int size)
{
MCB *m;
size = (size + (sizeof(int) - 1)) & ~(sizeof(int) - 1);
if (*mt && (size > area_max ||
(DWORD)(*mt)+((*mt)->size+sizeof(MCB)+size) >= (DWORD)(area)+area_max))
return (void*)NULL;
if (!*mh) {
*mh = (MCB*)area;
(*mh)->check = MCB_CHECK_CODE;
(*mh)->owner = Running->id;
(*mh)->size = size + sizeof(MCB);
(*mh)->prev = (*mh)->next = NULL;
*mt = *mh;
return (void*)((DWORD)(*mh)+sizeof(MCB));
}
m = (MCB*)((DWORD)(*mt)+(*mt)->size);
m->check = MCB_CHECK_CODE;
m->owner = Running->id;
m->size = size + sizeof(MCB);
m->prev = *mt;
m->next = NULL;
*mt = (*mt)->next = m;
return (MSG*)((DWORD)(m)+sizeof(MCB));
}
0100ビル・ジョブスNGNG
int far_mfree(MCB **mh, MCB **mt, void *p)
{
MCB *m;
p = (void*)((DWORD)(p)-sizeof(MCB));
if (!*mh || ((MCB*)p)->check != MCB_CHECK_CODE) return NG;
((MCB*)p)->check = 0;
if (*mh == (MCB*)p) {
if (!(*mh = (*mh)->next)) *mt = NULL;
else (*mh)->prev = NULL;
return OK;
}
if (*mt == (MCB*)p) {
*mt = (*mt)->prev;
(*mt)->next = NULL;
return OK;
}
for (m = (*mh)->next; m; m = m->next) {
if (m == (MCB*)p) {
m->prev->next = m->next;
m->next->prev = m->prev;
break;
}
}
return OK;
}
0101デフォルトの名無しさんNGNG
>>99
素朴な疑問。普段からコメントは書かずにやってるの?
0102ビル・ジョブスNGNG
>>101
ソースコードそのものが最高のコメント。
0103デフォルトの名無しさんNGNG
全然thread safeジャナイシヨ..
教科書通りのコードはツマラネエツゥノ
0104デフォルトの名無しさんNGNG
インデント汁!
0105ビル・ジョブスNGNG
>>103
おまえアフォ?
割り込み禁止区間で動作するコードだよ!ドシロウトは黙ってな。
なにが「全然thread safeジャナイシヨ..」だよ。
テメー自身、言ってる意味分かってんのか?クソ小僧が・・・。
0106デフォルトの名無しさんNGNG
まじめに聞くが、メモリをページ単位で管理しようという気はないのか?

マルチタスクOS書いてるつもりだろうが、
それではアプリケーションごとに気を遣うべき項目が多すぎてやってられんぞ?
何世代も前の思想だ。

お前が凄いと思っているコードはおそらく凄くも何ともないし
教科書通りのコードなんて、誰だって読めば理解できるし書けるんだ。

そんなコード自慢するためにいままでPGやってたなら、全くの無駄足だったな。
少なくともここ20年は時代の流れに取り残されている。
0107デフォルトの名無しさんNGNG
ビルの宿題添削スレってここですか?
0108デフォルトの名無しさんNGNG
あんまりビルをいじめるなよ。
0109デフォルトの名無しさんNGNG
テスト
0110ビル・ジョブスNGNG
>>106
おまえもアフォか?
>MMU無しバージョン
ってわざわざ書いただろ?

まーそれはテメーが真性アフォーKって事でいーとしても、
貴様の言う「ページ単位で管理」って仮想記憶含めてって事か?
それともプロテクションって事か?
制御系界では、確かにデバッグ中はOS毎逝ってしまうシーンは
良くあるが、それはプログラム設計やデバッグ手法でカバーできる。
ユーザープラットフォームじゃないからな。
ましてやリアルタイム応答が必要な分野で「シコシコ」ページを並べ替え
してられねーんだよ。「割り込み応答300ns以内」とか約束できるか?
ちなみにP4+WindowsXPでも無理だよ。理由は分かりますか?

もう寝るから、暇なヤツはカキコしとけ!
0111デフォルトの名無しさんNGNG
胃の中の蛙だっけ?
0112デフォルトの名無しさんNGNG
RTだろうがタスク制御してるなら優先ページを決めてUICのカウントを減らすくらい、OS屋なら常識だろ。おい。
300ns程度で根を上げ点じゃネエヨ。

お前がいじってんのはOSをまねて作ったただの時分割タスク切り替えシステムだぼ家。
0113デフォルトの名無しさんNGNG
ビルさん、>>112さん。色々と勉強になります。
0114デフォルトの名無しさんNGNG
飽きたから寝る。

ビルサンスゴーイ
0115デフォルトの名無しさんNGNG
>>49過去ログあったよ。
だけどURLを貼り付けるとなぜか名無しのERRORが出る。
んーん。。
とりあえず一つだけで挑戦。
【C言語なら俺に聞け!】
http://piza.2ch.net/tech/kako/967/967985026.html
0116デフォルトの名無しさんNGNG
>>115
感謝! とりあえず1-6と、12 14はゲトしたYO。
後は過去ログ移行中かなあ・・・。
0117デフォルトの名無しさん NGNG
http://pc.2ch.net/tech/kako/1003/10034/1003418249.html
http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
0118デフォルトの名無しさんNGNG
あ、上手くいった!!
0119三村NGNG
>>111
食ったのかよっ!
0120デフォルトの名無しさんNGNG
井の中の蛙
0121デフォルトの名無しさんNGNG
>>117
サンクス。
取り逃した10, 11,13はhtml化待ちだーね。マターリ待つべさ…。
0122Dennis RitchieNGNG
Hello World!
0123デフォルトの名無しさんNGNG
make love!
0124デフォルトの名無しさんNGNG
>>123
make error:"love!" is not found.
0125デフォルトの名無しさんNGNG
make: *** No rule to make target `love!'. Stop.
0126デフォルトの名無しさんNGNG
考えることはみんな一緒w
0127デフォルトの名無しさん NGNG
            ヘ-+------+--+-----+ヽ_
          /:::|:::::::|:::::::::::::/::::::/::::::::::::::/:::::::/`\_
       / ̄\::::::|:::::/:::......-―――--..........__/:::::::::::::::\
   ┌ー ̄::::::::::::ヽ::|:::..-^ ̄            ^ ヽ、:::::::::\
   ヽ::::::::::::::::::::::::::::/                  \::::::::ヽ
    ヽ:::::::::::::::::::::::/             ::::       \:::::ヽ
    ヽ::::::::::::::::::/      ,,,,;;:::::::::::::::  ::::::::  ,,,,;;::'''''  \::::|_
     ):::::::::::::::|      "   __  ::::*:::::    __    ヽ:|::::ヽ
     /::::::::::::::::|       - '"-ゞ'-'  ::;;;;:   '"ゞ'-'    l::::::::ヽ
    /::::::::::::::::::|             ノ::ii:ヽ::          l::::::::::|
    |::::::::::::::::::::|            /::::;リ:::l::::         |::::::::::::|
    |:::::::::::::::::::::l           ...l::::;リ:::/::         /:::::::::::::|
    .|::::::::::::::::::::::l          . /:ア/:::        /:::::::::::::::i
    l:::::::::::::::::::::::::l          ./::`^:::::        /:::::::::::::::::/
    ヽ::::::::::::::::::::::::l         /::::::::::        /:::::::::::::::::::/
     /:::::::::::::::::::::::l        /:::::::::::::      /::::::::::::::::::::::/
     /::::::::::::::::::::::::i __-ー--=;;;::::::::::::::  ....::::/:::::::::::::::::::::::/
    ./:::::::::::::::::::::::::::i":::::::::::::::  ヾ─ 、/"ヽ:/::::::::::::::::::::::::::::l
     ヽ::::::::::::::::::::::丶::::::::::   /   il   .ヽ:::::::::::::::::::::::::::/
       \::::::::::::::::::::ヽ:::::::  /    l !    ヽ:::::::::::::::::::/
         ii::::::::::::::::::` -::-/     / .i     ヽ::::::::/
          ----- ̄丶/     lヽ       ヽ/
                /      l ^ヽ..      ヽ
                /      l   ヽ      .ヽ
               l       .l    ヽ      /
               丶      l     ヽ      .l
               ヽ      l     l     /
                ヽ___../      .ヽ---/
            うそはうそであると見抜ける人でないと
           (抜けるAAになるのは)難しい
0128デフォルトの名無しさんNGNG
スレ立て直すか?
0129デフォルトの名無しさんNGNG
いたたたたたたたたたた
0130デフォルトの名無しさん NGNG
メモ帳作りました。評価してください。
http://isweb42.infoseek.co.jp/computer/bkgm/memotest.exe
0131デフォルトの名無しさんNGNG
ふつーexe直リンするか?
0132デフォルトの名無しさんNGNG
>>130
大丈夫か?
怖くて実行できねえよ。
0133デフォルトの名無しさんNGNG
つーか、おまえのHPみれねえヨ。
0134デフォルトの名無しさんNGNG
ついでにいうとActiveXは萎えるから常にOff。
HPい変なもん貼り付けるんじゃないヨ
0135デフォルトの名無しさんNGNG
ハァ? SCS?? 厨房氏ねよ!!
ってなんだ・・ハッキングされてんの?
0136130NGNG
>131-135
あなた方のIPを抜かせてもらいました。
晒されたくなければ謝罪してください。
0137デフォルトの名無しさんNGNG
>>136
むしろ是非晒してください。お願いします(藁

0138デフォルトの名無しさんNGNG
おーい、まだかー?
0139デフォルトの名無しさんNGNG
ウォッチ板にはっちまうか?
0140デフォルトの名無しさんNGNG
痛い>>136からIPアドレスを晒してもらうスレ。
0141デフォルトの名無しさんNGNG
ぼくじぶんのあいぴいむかしからいちどでもぬかれてみたかったんだ
0142厨房NGNG
VC++6.0漏ってます。ソースで公開している不利ーそふとのコンパイルの仕方教えてください。
0143デフォルトの名無しさんNGNG
>>142
当て字がむかつくから教えない。
0144デフォルトの名無しさんkNGNG
gcc使いなさい。./configureで一発、かもよ
0145消防NGNG
142です。ちゃんと「垢でミック板」飼いました。おしえてちょー。
0146デフォルトの名無しさんNGNG
>>145
当て字がむかつくから(以下同文)
0147初心者NGNG
VC++6.0持ってます。ソースで公開しているフリーソフトのコンパイルの仕方教えてください。
0148デフォルトの名無しさんNGNG
普通ソースと一緒にメイク方法を書いたファイルが有るだろう?
0149デフォルトの名無しさんNGNG
VC用に書かれたソースかどうか調べろ。
unix用とかBCC用だとそのままだとコンパイルできない場合もある。
0150初心者NGNG
VCでいけるみたいですが、unix用とかBCC用だとどうすればいいのですか?
0151デフォルトの名無しさんNGNG
makefileがunix用に書かれてたりしたら
cygwinとかについてるmakeコマンドを使う。

makefileがBCC用に書かれていたりしたら
BSD互換のmakeかBCCのmakeを使う。

ソースプログラムがunix用だったら、
cywginのgccとかでコンパイルしてみて動くことを祈る。

ソースプログラムがBCC用だったら、
あきらめてBCCをダウンロードしてインストールする。

最後の手段は、自分でがんばってソースとmakefileを書き直す。
だ。

がんばれ。

gccのOS/2ポーティングとかやったなあ、むかし。
0152初心者NGNG
>151さま ありがとうございました。やってみます。
0153デフォルトの名無しさんkNGNG
つーか、PCーUNIX使いはれ。
WindowsはCの基礎を勉強するにはむいてない。
一ヶ月それで色々と試してからでも遅くない。
0154デフォルトの名無しさんkNGNG
あ、ごめん。勉強する予定はないのね。失礼
0155デフォルトの名無しさんNGNG
>>150
VC持ってて、VCで行けるようなら気にするな。
unix用とかBCC用なら、unixとかBCCでmakeするんだよ。
0156デフォルトの名無しさんNGNG
でじゃびゅ…
0157デフォルトの名無しさんNGNG
自分で答えを予測する賢さと
初心者と言われぬ程度のプライドぐらいもて。
0158デフォルトの名無しさんNGNG
初心者と名乗らぬ程度のプライドぐらいもて。
と言いたい。
0159デフォルトの名無しさんNGNG
「初心者です」を恥ずかしいと思わなくなったら技術者としてお終いだな。
調べることすら放棄するのか?といいたい。
0160デフォルトの名無しさんNGNG
もっと OS の話しろ。
0161デフォルトの名無しさんNGNG
ビルはコード漏洩の件について上司に見つかり、別室で待機中です。
パソコンも窓も電話もない、本ですら持ち込み禁止のアイデアルーム(自称)で
次の仕事を考えています。
0162ビル・ジョブスNGNG
>>161
おいおい・・・おれが代表取締役だが・・・なにか?
次はシステムコールのソースでも見せてやろうか?
2ちゃんも落ちたなー・・・コード晒せるツワモノ居ないのか?
0163デフォルトの名無しさんNGNG
代表戸締まり役 ビル・ジョブス
0164デフォルトの名無しさんNGNG
ここは珍コード晒すスレではありません。
0165デフォルトの名無しさんNGNG
どっかの本で見たようなコードを晒すところでもありません。
0166デフォルトの名無しさんNGNG
何をするところですか?
0167デフォルトの名無しさんNGNG
C言語に関する質問をしつつアホを晒すスレです。
0168デフォルトの名無しさんNGNG
>>166
ここが2ちゃんで無ければ、普通に質疑応答するスレなんだろうけどな・・・
0169デフォルトの名無しさんNGNG
>>168
2chではどんなスレッドでもネタや煽りが欠かせないってことか。
0170デフォルトの名無しさんNGNG
ネタや煽りをも許容するのです。
便所の落書きレベルの掲示板に仕事の質問するようなやつがいる時代ですから。
0171デフォルトの名無しさんNGNG
>>170
べつにええやん。
実務でも、便所の落書きレベルのコードしか書けないヤツも居るし・・・
0172デフォルトの名無しさんNGNG
便所の落書きひとつで、おまえらのプロジェクトの完成に貢献できるのなら
それはそれでよいのです。
0173デフォルトの名無しさんNGNG
>>99
素朴な疑問

・WORD と USHORT ってなにが違うの?
・なぜ int はそのまま使うの?
・ポインタを DWORD にキャストしても大丈夫なの?
・アライメントは取らなくていいの?(8バイトとか16バイトとか)
・なぜ NULL を void* にキャストするの?
・MSG* ってなに?
0174デフォルトの名無しさんNGNG
>>173
・1バイトの変数か符号無しの1ビット整数か。
・WORD DWORD3をしらんのかと小一時間。
・構造体とか取ってる。
・NULL は 0とdefineされていてそのままではアドレスではないからです。
・知るか。
0175デフォルトの名無しさんNGNG
ビルからの愛のメッセージの詰まった構造体へのポインタにきまってんだろ。
0176デフォルトの名無しさんNGNG
すごいアホな質問ですが、聞いてください
ファイルから一行ずつ呼び出して、その行に特定の文字列を指定した文字列に変換するプログラムを作っているところです。
strstrでサーチしてアドレスを出すところまではいったんですが、その後の変換に何をつかっていいかわかりません。

#Include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE_SIZE 600
#define MAX_ENC_SIZE 64

void errmsg( char *s){
puts(err);
}

int main (int argc, char *argv[]){
char line[MAX_LINE_SIZE];
int line_len;
char from_str[MAX_ENC_SIZE];
char to_str[MAX_ENC_SIZE];
FILE *fp;
int n;
char *p;
if((fp = fopen( argv[1], 'w')) == (FILE *)NULL){
errmsg("file not found\n");
return(-1);
}
strcpy( from_str, argv[2]
strcpy( to_str, argv[3]);
while( fgets( line, MAX_LINE_SIZE, fp){
line_len = strlen( line );
if((p = strstr( line, from_str)) != NULL){
このあとがわかんないっすTT
一致する最初の文字のポインタを取得してもfrom_strをto_strに置き換えるやり方がわかりません。
どなたかヒントください。
お願いします。










0177デフォルトの名無しさんNGNG
とりあえず、
串に色違いの団子が5つ刺さってるとしてだな、
二番目と三番目の団子を皿の上にある、これまた串に刺さったままの三つの団子と
入れ替えて、六段重ねの団子を作りたいと思ったらだなあ、
おまえならどうする?
0178デフォルトの名無しさんNGNG
>>177
では虎を屏風から出してください。
0179デフォルトの名無しさんNGNG
>>176向けに書いたんじゃないの?
0180デフォルトの名無しさんNGNG
>>177
串の長さが足りなくて困る。
0181デフォルトの名無しさんNGNG
>>180
続けよう。串の長さが足りないときはどうするんだ?
0182デフォルトの名無しさんNGNG
>>181
ralloc()
0183デフォルトの名無しさんNGNG
>>181
諦める
0184デフォルトの名無しさんNGNG
>>182
よろしい。さらに続けよう。
では必要な串の長さはいくつかわかるな?
0185デフォルトの名無しさんNGNG
>>176
元のデータ=****−/////


−を888に置き換えたい。


データ置き場=/////
*****888
0186デフォルトの名無しさんNGNG
1行+(置換語−検索語)
0187デフォルトの名無しさんNGNG
>>186
では、6段の団子を、新しい長さの串に並べてくれ。
先頭はもちろん、最初の串にあったはじめの方の二つの団子だ。
0188デフォルトの名無しさんNGNG



strcpy(temp,p);
*p = '\0';
strcat(line,tostr);
strcat(line,temp);
0189デフォルトの名無しさんNGNG
じゃあ、団子を引っこ抜かれて空になった串と、
6段重ねになった串と、二本の串が手元に残ったわけだ。

古い串は捨てて、新しい串を、お客様にお出しなさい。
0190176NGNG
>>177-188さん
こんなにも早いスレありがとうです(゜ーÅ)
できたら報告します。
できなくても報告します(;´Д`)b
0191デフォルトの名無しさんNGNG
>>190
ttp://www.asahi-net.or.jp/~bx5k-wtnb/dosv/20.htm
VC用だが一番最後に置換関数がある。
0192デフォルトの名無しさんNGNG
>>181
先生!新しい串がありませんでした!!
0193デフォルトの名無しさんNGNG
fopen() を使ったファイルオープンに関してなんですけど、書き込み
モードでオープンしたとき (ただオープンしただけ)、以前の内容は
即座に破棄されるのでしょうか。それとも何かを書き込んだタイミングで
初めて破棄されるのでしょうか。またそのへんの振る舞いは規格で
厳密に規定されているんでしょうか。よろしくお願いします。
0194デフォルトの名無しさんNGNG
規格はしらんがオープンに成功した時点で元ファイルはサイズ0になってるはずだぞ。
fcloseするまでは本当に0なのかどうかは保証されないだろうが。
0195ビル・ジョブスNGNG
>>173
・WORD と USHORT ってなにが違うの?
WORDは16BITの値、USHORTは16BITの符号無し整数

・なぜ int はそのまま使うの?
SHとかってintのほうが効率がいーんだよ

・ポインタを DWORD にキャストしても大丈夫なの?
「ポインタの型のサイズを無視して演算したい」という意思表示。

・アライメントは取らなくていいの?(8バイトとか16バイトとか)
どこ?データならコンパイラに任せてるけど?
メモリーアロケーション?ならsizeof int;でしてるよ。
>size = (size + (sizeof(int) - 1)) & ~(sizeof(int) - 1);

・なぜ NULL を void* にキャストするの?
#define NULL (char*)0 // だから

・MSG* ってなに?
メッセージ構造体。
あーおれのOSはネットワーク透過なメッセージ通信がウリだから。

以上でいいー?
0196デフォルトの名無しさんNGNG
>>194さん
サイズを0にしてからオープンするということでよろしいのですよね。
ありがとうです。
0197176NGNG
>>188さんのをヒントにしてやりますた。
後ファイルへ書き込めば完成のはずです(;´Д`)b
実はこれファイル操作のプログラム書くのはじめてなんですよ。
#Include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE_SIZE 600
#define MAX_ENC_SIZE 64

void errmsg( char *s){
puts(err);
}

int main (int argc, char *argv[]){
char line[MAX_LINE_SIZE];
int line_len;
char from_str[MAX_ENC_SIZE];
int from_len;
char to_str[MAX_ENC_SIZE];
char temp[MAX_LINE_SIZE]; /*一時的に保存する*/
FILE *fp;
int n;
char *p;
if((fp = fopen( argv[1], 'w')) == (FILE *)NULL){
errmsg("file not found\n");
return(-1);
}
strcpy( from_str, argv[2]);
from_len = strlen( from_str );
strcpy( to_str, argv[3]);
while( fgets( line, MAX_LINE_SIZE, fp){
line_len = strlen( line );
if((p = strstr( line, from_str)) != NULL){
strcpy(temp, ( p + from_len ));
*p = '\0';
strcat(line, to_str);
strcat(line, temp);
}
              //ここらへんにfprintfつかって書きこみ
}
}

れすくれたひとありがとうございます
0198デフォルトの名無しさんNGNG
微妙な間違いはあるが、大体理解したようなのでよし。
0199170NGNG
>>198
ありがとう(゜ーÅ)
0200デフォルトの名無しさんNGNG
func(unsigned char* cIn)となっている関数の引数ってどう与えればいいの?
文字列だっていうんで、初期化時に、
 unsigned char* cIn = "hoge";
とするとコンパイラにおこられるし、
 char* cIn = "hoge";
 func((unsigned char*) hoge);
とやるとコンパイラはとおるんだけど、このキャストはなんか間違ってる気がするし・・・
0201デフォルトの名無しさん NGNG
charの宣言って0よりうえじゃないんだっけ。
unsignedつける必要あるのかなぁ

まちがってたらスマソ
0202デフォルトの名無しさんNGNG
>>201
私もそんな気がするんですが、なぜかこの関数ではunsignedで定義されちゃってるんで、
どうにもならないんです。
自分ではこの関数を代えられないんで、なんとかunsigned charの文字列作って
送り込まないと・・・
0203デフォルトの名無しさんNGNG
/JオプションでOKだったりして(w

VCならそれはおそらくMBCSを期待してるだろうから

TCHAR, TCHAR *, const TCHAR *を渡せばよい。
func(_T("文字列"));
func((LPCTSTR)cIn);
0204デフォルトの名無しさんNGNG
#include <stdio.h>

void func(unsigned char *ustr)
{
    printf("%s\n", ustr);
}

void main()
{
    unsigned char *hoge = "test";
    func(hoge);
}

BCC55と、VC6でコンパイル無事に通った。
見当違いしてたらすまん。

>>201
charは、処理系依存のはず。
0205デフォルトの名無しさんNGNG
charの符号は、処理系によって異なると思われ。
キャストでいいんじゃネーノ?この場合。
そのfuncの中身次第だけど。
0206デフォルトの名無しさんNGNG
>>203
TCHARかぁ、なるほど。
今手元にないんでちょっと明日試してみます。
ありがとうございました。

#/Jオプションって何だろ・・・日本語モードかな?
0207デフォルトの名無しさんNGNG
funcはunsinged charのサイズに依存した処理をしてるみたいです。

だったらunsigned shortにしといてくれれば幸せだったのに・・・
0208デフォルトの名無しさんNGNG
>>204
あれ?うちもVC6なんですが、なにかオプションでも違うのかしら。
これもあすためしてみます。
0209デフォルトの名無しさんNGNG
サイズはsingnedもunsignedも同じ。
自分の指定する文字列がどっちでも同じ(0〜127の範囲)なら
そのまま通してしまうのも有りかも。

unsigned char *cin=(unsigned char *)"hoge";
では通らない?

ちなみにVC6だと、
unsigned char *cin="hoge";
では/W3までは文句言われなかった。
0210デフォルトの名無しさんNGNG
ただたんに拡張子が .cppなんでC++で処理されてるんだろ。
Cだったらcharの符号有り無しくらいで大げさな文句は言わない。
0211デフォルトの名無しさんNGNG
>>200
>>205も書いてるけど、そのキャストは間違ってない。
0212204NGNG
>>210
お、*.cppにしたらVCが怒った。
解決法は既出なので省略。

ついでにBCCは問題なく通った。
0213デフォルトの名無しさんNGNG
calloc関数はメモリーを確保したあとに、1バイトずつ0に初期化しているんですか?
それにしては速いと思うのですが。
実際、mallocで得た領域をmemsetで0に初期化するよりも遙かに速いです。
0214デフォルトの名無しさんNGNG
>>213
うちの calloc.c (FreeBSD)は
if ( (p = malloc(size)) )
bzero(p, size);
てなってた。
0215デフォルトの名無しさんNGNG
>>213
ttp://www.itboost.co.jp/c/c_08.php より引用
| システムに bzero 関数が存在する場合は、memset を
| そちらで置き換えたほうがプログラムが高速になります。

とのこと。
0216レベル1NGNG
今日の昼にCを始めたんだけど、早速挫折。
printfとscanfを使って、一年の秒数を計算するプログラムを組んだけど
ありえない数字が出てくる。なんで?
#include <stdio.h>
int main(void)
{
int Days;

printf("一年は何日ですか?");
scanf("%d",&Days);

printf("一年は%d秒です。",Days*24*60*60);
return 0;
}
うるう年も考慮した俺的に渾身の作なんだけど、何がいかんのかわからん。
ネタじゃないんで、レベル1だけど誰か教えてちょんまげ。
int型に入らんのかとも思ったけど32ビットどうのこうので、有効内だと思う。
あと、void ッテ何?
0217デフォルトの名無しさんNGNG
>>216
Cで変数名に大文字使うのやめなさい。

で、どんな数字が出てくる?
ぱっと見変なところ無いけど。

後、voidは無しってことだ。取りあえずは。
0218レベル1NGNG
実行すると、
13184秒って出る。
voidはまぁ気にせんでええのね。変数名は小文字が吉と。メモメモ・・・
0219デフォルトの名無しさんNGNG
Daysにどんな値が入っているかを調査せよ。
つーかscanfはレベル30くらいで使うもんだが。
0220デフォルトの名無しさんNGNG
>>218
そりゃintが16bitのコンパイラ使ってるんでは?
0221レベル1NGNG
調査?
どうやって?レベル1なのですまそ。
printfでDaysを表示すればいいのかな?やってみる
0222デフォルトの名無しさんNGNG
>>221
int days -> long days;

printf("%d ->%dl
0223デフォルトの名無しさんNGNG
>>216
> うるう年も考慮した
ちょとワラタ。ゴメン。
で、13184 ってのは、365*24*60*60 を 2^16 で割った余り。
つまり、そのコンパイラでは int は 16ビットだということ。
Days を long に、“scanf("%d",〜”を“scanf("%ld",〜”に変えてやってみ。
0224デフォルトの名無しさんNGNG
>>223
printfのほうだろ。
0225レベル1NGNG
なるほど。32ビットとか16ビットとかはコンパイラによって違うのね。
LSIのフリーのを使ってるので。
ちなみにDaysを表示したら365だった。
これからlong型でやってみる。
0226デフォルトの名無しさんNGNG
>>218
コンパイラなに使ってんだ?
変えたほうがよくないか?
0227デフォルトの名無しさんNGNG
変数大文字は俺は容認だがなぁ。
0228173NGNG
>>195
先生わかりません。

>・WORD と USHORT ってなにが違うの?
>WORDは16BITの値、USHORTは16BITの符号無し整数
う〜ん、でも
> WORD check;
> USHORT owner;
この部分の使い分けがよくわからないんです。

>・なぜ int はそのまま使うの?
>SHとかってintのほうが効率がいーんだよ
なるほど!

>・ポインタを DWORD にキャストしても大丈夫なの?
>「ポインタの型のサイズを無視して演算したい」という意思表示。
typedef unsigned char byte_t;
(byte_t*)m + size
のようにした方がポインタ安全な気がするのですが間違いでしょうか?

>・アライメントは取らなくていいの?(8バイトとか16バイトとか)
>どこ?データならコンパイラに任せてるけど?
>メモリーアロケーション?ならsizeof int;でしてるよ。
>>size = (size + (sizeof(int) - 1)) & ~(sizeof(int) - 1);
far_malloc() で得たメモリに double や long double などを格納してアドレ
スエラーが起こる処理系や、DMA 転送を行って DMA が逝ってしまうハードウェ
アがあるかもしれませんが、気にしすぎでしょうか?

>・なぜ NULL を void* にキャストするの?
>#define NULL (char*)0 // だから
(*mh)->prev = (*mh)->next = NULL;
はコンパイルエラーや警告は出ないのでしょうか?

>・MSG* ってなに?
>メッセージ構造体。
>あーおれのOSはネットワーク透過なメッセージ通信がウリだから。
far_malloc() はメッセージ構造体を専用に確保するためのものだったんですね!
0229レベル1NGNG
でけた。
Daysもdaysに直した。
ふと疑問に思ったんだけど、int(long)型で、daysともう一つなんか変数作って
そこに入力した一年の日数を入れる必要はない?そんで
days=作った変数*24*60*60;を最後のprintf関数の前に入れる。
そんでpirntf("一年は%ld秒です",days);みたいな。
0230デフォルトの名無しさんNGNG
>>229
それでも良いよ。

後、

days *= 24 * 24 * 60;

と言う技も使える(あまり推奨しない)
0231レベル1NGNG
両方動く事は確認したけど、どっちがいいとかあったら教えてちょんま
あと、できたので、教えてくれた人達ありがとう。
0232デフォルトの名無しさんNGNG
どっちがいいかといえばその三の

int secs;

secs = days * 24 * 24 * 60;

だろ。
そういえば、閏秒には対応しないの?
0233レベル1NGNG
それは変数名からそれがいいってことだよね?
ようはdays以外にもういっこ変数作るが吉と。
うるう秒ってのが、俺自身理解できてないから無理。
0234デフォルトの名無しさんNGNG
printf("一年は%ld秒です。 閏秒がある年なら1を足してください。",days*24*60*60);
0235デフォルトの名無しさんNGNG
>>233
うるう秒は、気象庁が突然発表する。なので予測不可能。
>>234
ワラタ。けど現実的。
0236デフォルトの名無しさんNGNG
まぁ普通はそこまで必要無いわな。

ちょっと気になっただけなんだけど、過去の閏秒の情報って何処かから取得出来る?
現時点の情報なら、GPSか電波時計監視すれば出来そうなもんだけど。
0237デフォルトの名無しさんNGNG
>>236
1個めのリンクに載ってたよん。
http://www.google.com/search?hl=ja&ie=Shift_JIS&oe=Shift_JIS&q=%82%A4%82%E9%82%A4%95b&lr=lang_ja
0238デフォルトの名無しさんNGNG
>>237
ありがと。
動的に取得する方法無いかなと思ってたんだけどね。
もう少しリンク辿ってみます。
0239デフォルトの名無しさんNGNG
>>238
動的に取得するには、ちきゅーの軌道を精密に計算すれば良いのかも。
0240デフォルトの名無しさんNGNG
>>239
それで算出出来るなら、予報で何年も先まで出るでしょ。
0241239NGNG
>>240
いやはや、まったくもって。
0242デフォルトの名無しさんNGNG
原子時計がいきなりずれる。
0243デフォルトの名無しさんNGNG
ここで出されるコードってインデントが入ってなくて見にくいので、
行頭のスペースとタブを「&nbsp;」に書き換えるコード作ってみた。
どっか変なところある?

#include <stdio.h>
#include <ctype.h>

#define LINESIZE 1024
#define TABSIZE 4
#define SPACESIZE 1

int istabsp(int);

int main(void){

    char line[LINESIZE];
    int line_ptr;

    int tabsize = TABSIZE;
    int spacesize = SPACESIZE;

    while(fgets(line, sizeof(line), stdin) != NULL){
        for(line_ptr = 0; 0 != istabsp(*(line + line_ptr)); ++line_ptr){
            if(*(line + line_ptr) == '\t'){
                while(0 < tabsize--){
                    fprintf(stdout, " ");
                }
            }else if(*(line + line_ptr) == ' '){
                while(0 < spacesize--){
                    fprintf(stdout, " ");
                }
            }
            tabsize = TABSIZE;
            spacesize = SPACESIZE;
        }

        fprintf(stdout, "%s", line + line_ptr);
    }

    return 0;
}

int istabsp(int c){
    if(c == '\t' || c == ' '){
        return 1;
    }else{
        return 0;
    }
}

このレス自身もこのプログラムとおしてみた。
0244243NGNG
いちおううまくいったみたいね。
使いたい人は使ってくれ。
っつーかお前らコード見にくいので使って下さいお願いします。
0245243NGNG
<ctype.h> は必要なかったね。
istabsp のところで、書き直す前 isspace 使ってたときのなごりじゃ。スマソ
0246デフォルトの名無しさんNGNG
漏れは、コピペするときにemacsで置換してる。
0247243NGNG
重大なバグをハケーソ。(W

最奥の while ループ(2か所)の中にある、

fprintf(stdout, " "); --> fprintf(stdout, "&nbsp;");

です。
投稿したときに "&nbsp;" が " " に変換されてしまった。
0248デフォルトの名無しさんNGNG
なんか最近異様にこのスレ書き込まれるのが早いですね。
Part12ですらdat落ちしてないよ。
0249デフォルトの名無しさんNGNG
お?   とかは大丈夫なのか。
  & "
0250デフォルトの名無しさんNGNG
皆逝き急いでるんだよ
0251249NGNG
>>243
すまん便乗。どうやらいけるみたいなので、作ってみた。
先頭しか変換しない、って仕様が謎だったので全置換。
先頭以外を置換しない理由ってあるかな?

#include <stdio.h>

#define TABSIZE 4

void encode_putchar(char c);

int main(int argc, char *argv[])
{
    FILE *fp;
    char c;

    fp = fopen(argv[1], "r");

    while (1){
        c = fgetc(fp);
        if (feof(fp)) break;
        encode_putchar(c);
    }

    return 0;
}

void encode_putchar(char c)
{
    int i;
    switch (c){
        case ' ':
            printf("&nbsp;");
            break;
        case '\t':
            for(i = 0; i < TABSIZE; i++){
                printf("&nbsp;");
            }
            break;
        case '&':
            printf("&amp;");
            break;
        case '"':
            printf("&quot;");
            break;
        default:
            putchar(c);
            break;
    }
}
0252デフォルトの名無しさんNGNG
>>248

「ビル・ジョブス と(ヤツをかまう)愉快な仲間達」が
多大なる貢献をしていると思われる。(W
0253デフォルトの名無しさんNGNG
>>251
だめじゃん。
0254243NGNG
>>249

> 先頭しか変換しない、って仕様が謎だったので全置換。
> 先頭以外を置換しない理由ってあるかな?

きちんと調べてないけど、投稿時に、

「行頭のタブ」と「行頭のスペース」は削除、
「その他の場所にあるタブ」と「その他にある一個以上のスペース」はスペース一個に変換。
される模様。

その他にあるかな。

とにかく行頭のインデントさえあればいいと俺は思った。
0255243NGNG
ちなみに、
stdin と stdout を使っているのはリダイレクトを想定してるから。

./program < hogehoge.c > hogehoge.txt

とか。
0256251NGNG
>>253
あら…何処がダメ?俺からは無事できてるように見えるけど…。
エラーチェックとかだったら許して。

/*改良版*/
#include <stdio.h>
void f(char c){int i=4;switch(c){case ' ':printf(" ");break;case '\t':
while(i--)printf(" ");break;case '&':printf("&");break;case '"':
printf(""");break;default:putchar(c);break;}}void main(int i, char **v){
FILE*fp;char c;if((fp=fopen(v[1],"r"))!=NULL) while ((c=fgetc(fp))!=EOF)f(c);}
0257デフォルトの名無しさんNGNG
どうせやるならクリップボード監視しろよ
0258251NGNG
うげ、コピーするもの間違えたすまん逝ってくる。

#include <stdio.h>
void f(char c){int i=4;switch(c){case ' ':printf("&nbsp;");break;case '\t':
while(i--)printf("&nbsp;");break;case '&':printf("&amp;");break;case '"':
printf("&quot;");break;default:putchar(c);break;}}void main(int i, char **v){
FILE*fp;char c;if((fp=fopen(v[1],"r"))!=NULL) while ((c=fgetc(fp))!=EOF)f(c);}
0259デフォルトの名無しさんNGNG
>>254
投稿時じゃなくてブラウザの表示時な。
HTMLをインデント整えて書けるようにそうなってるんだと思うけど。

>>256
ここ7行スレかよ!!。(w
0260デフォルトの名無しさんNGNG
ついでに、かちゅに組み込んでくれ。
0261デフォルトの名無しさんNGNG
これって

a<TAB>b
aa<TAB>b
aaa<TAB>b
aaaa<TAB>b

bのカラムはそろうの?
0262デフォルトの名無しさんNGNG
そんなもんWEBではそろえなくてヨシ。
0263デフォルトの名無しさんNGNG
>>256
七行かぶれかっこわるい。
あれはあのスレでやるからかっこいいんだ。
0264デフォルトの名無しさんNGNG
なんで
0265243NGNG
>>251

'"' -> '\"'

とか。
0266デフォルトの名無しさんNGNG
>>251 " もエスケープしないといけないんだっけ。コンパイルできたから
良いかと思ってたよ。…逝ってきます。
0267243NGNG
>>261
「これ」ってのが何指してるのかわからんけど、
「この板」を指すものとして、実験してみた結果は以下。

a b
aa b
aaa b
aaaa b


タブ一個はスペース一個になるみたいね。

>>266
イってらっしゃい。早く帰って来てね。(W

0268デフォルトの名無しさんNGNG
Perl なら一行で済むな・・
while (<>) { s/\s/ /g; print; }

Perl をローカルで動かせるなら
perl -e "while (<>) { s/\s/ /g; print; }" < 入力ファイル
で行けるから試してみそ。



0269268NGNG
しもた。二重にミスってた。訂正。

Perl のスクリプトとしてファイル用意するなら。
while (<>) { s//&nbsp/g; print; }

ワンライナー
perl -e "while (<>) { s/ /&nbsp;/g; print; }" < 入力ファイル
0270918NGNG
またミスってた・・分かってもらえるとは思うけど。

Perl のスクリプトとしてファイル用意するなら
while (<>) { s/ /& /g; print; }

ワンライナーは >>269 でいい。

鬱だな、しかし。
0271仕様書無しさんNGNG
shでsedつかえばいっしょ
0272268NGNG
>>271
そりゃ、あればね。
Windowsな人だったら、CGIの確認用にローカルでperl入れてる人もいるかもしれないし、
ちょっとは現実解かなと思ったのみで。
0273デフォルトの名無しさんNGNG
regexでなんとか置換できないかと思ったんだけど、
調べてるうちに、漏れも>>271と同じ結論に達して、結局萎えた。
0274デフォルトの名無しさんNGNG
  test
0275デフォルトの名無しさんNGNG
あ、みんなソースって でそろえてたのか…。
漏れはタブ1個=全角スペース2個でそろえてたよ…。
0276275NGNG
&nbsp;が消えた。鬱。
0277デフォルトの名無しさんNGNG
ていうか、ソースをここに書き込む前にテストしろよ…
0278デフォルトの名無しさんNGNG
 
&nbsp
&amp;nbsp
0279デフォルトの名無しさんNGNG
vi で %s/ / /g
してから Ctrl+A, Ctrl+V でいいじゃん。
0280デフォルトの名無しさんNGNG
外部リンケージはプログラム全体で共有されえる。
内部リンケージは翻訳単位にユニーク。
リンケージを持たない(自動変数など)はブロックにユニーク。

でいいのですか?
0281デフォルトの名無しさんNGNG
>>279
>  してから Ctrl+A, Ctrl+V でいいじゃん。
こんなこと言う人はvi使いじゃないです。
vim6でmswin.vimをsourceしてたとしても邪道す。

でもおれはカーソルキーを使います。
0282280NGNG
教えてください〜
0283デフォルトの名無しさん NGNG
質問です。
UNIXで(他は特にためしてないですが)fopenを連続で行うと
256回目近辺で失敗してしまいます。
ディスクリプタの数は設定して増やしているのですが
fopenの数とは異なるようです。
openでfopenの代わりとなる関数を作成するしかないのでしょうか?
ソケットをそれなりに使用していると1つもfopenが成功しないという
状況が発生してしまいます・・・
0284デフォルトの名無しさんNGNG
OS名もっと詳しく
0285デフォルトの名無しさんNGNG
>>284
自分へのレスと受けてよろしいのでしょうか・・・?
Solaris7です。
よろしくおねがいします。
0286デフォルトの名無しさんNGNG
>>285
ためしに、open()が257回以上呼べるのか調べてみるべし。
0287286NGNG
>>286
自己レス。でもやっぱり1プロセスから開けるFDの限界は
256のような〜〜。
>>283のいう「FD増やした」てーのは、OS全体で開ける数
増やしたっつーことじゃないかな?
0288仕様書無しさんNGNG
>>234-235
微妙に違うと思われ ヽ(;´д`)ノ
閏秒は、2秒足したり1秒引いたり2秒引いたりもするっぽい。
0289仕様書無しさんNGNG
>>200
てか、引数の定義はともかく、内部的な処理の仕様はどうなん?
具体的に言えば、
引数の型の定義が unsigned char* なのだからして、
呼び出し側で const unsigned char* を与えちゃってるのは、どうよ?
0290デフォルトの名無しさんNGNG
>>287
ご参考まで
http://www.minq.se/products/pureload/doc/html/gettingstarted/gettingstarted8.html
>To increase number of file descriptors allowed per
>process (256 is default in Solaris 8). Use the ulimit
>or limit command in the shell you are using to start
>manager and tasks space server. To be able to increase
>number of file descriptors to more than 1024, you must
>modify the /etc/system file:
>
># set hard limit on file descriptors
>set rlim_fd_max = 4096
># set soft limit on file descriptors
>set rlim_fd_cur = 1024
>
>These settings will increase the default to 1024 with a max
>limit of 4096.
>
>Note: The system must be rebooted to initiate changes in /etc/system.
0291デフォルトの名無しさんNGNG
大した事じゃなんですが質問します。

よく、DWORDからWORDに落とす時など

WDORD dwBefore = 0x12345678
WORD wAfter = (WORD)dwBefore & 0xffff;

とか0xffffでANDとったりしますが
これって必要な物なのでしょうか。

取りあえず無くてもVCの場合はきちんと動きますが。
0292仕様書無しさんNGNG
>>291
>取りあえず無くてもVCの場合はきちんと動きますが。

てか、境界はコンパイル時のオプション次第でしょ。
0293287NGNG
>>290
おぉ、すごい。参考になりますた。
0294デフォルトの名無しさんNGNG
>>243 >>249
今更だけどさらに便乗。
カラムを揃えてみたけど、サイズ膨れすぎ(;´Д`)

#include <stdio.h>

#define NBSP    "&nbsp;"
#define AMP     "&amp;"

#define TABSIZE     4

int main(void)
{
    int i;
    int c;
    int space;
    int length = 0;

    while ((c = fgetc(stdin)) != EOF) {
        switch (c) {
            case '\t':
                if (length >= TABSIZE)
                    space = TABSIZE - length % TABSIZE;
                else
                    space = TABSIZE - length;
                for (i = 0; i < space; i++)
                    fputs(NBSP, stdout);
                length += space;
                break;
            case ' ':
                fputs(NBSP, stdout);
                length += 1;
                break;
            case '&':
                fputs(AMP, stdout);
                length += 1;
                break;
            case '\n':
                fputc(c, stdout);
                length = 0;
                break;
            default:
                fputc(c, stdout);
                length += 1;
                break;
        }
    }
    return 0;
}
0295デフォルトの名無しさんNGNG
>>292
291のコードで「境界」がなんの関係があんの?
0296デフォルトの名無しさんNGNG
WindwosXPでC言語プログラムをしていてHTMLの"SUBMIT"などのタグを取得するにはどうすればよいのでしょうか?
昔自動垢取りソフトなどがありましたがああいうものを作る場合どうすればよいのでしょうか?
"tab"キーを押せばアクティブな領域?画移動するので移動事態は特に問題ないと思うのですがタグを取得できません
ここなら”書き込む”という領域を押したようにしたいのです
0297デフォルトの名無しさんNGNG
>>294
#define LT "&lt;"
#define GT "&gt;"
も考慮しる!

つうか sed を使うという結論になったんでは?
0298デフォルトの名無しさんNGNG
>>296
タグを取得ってどういうこと?
0299デフォルトの名無しさんNGNG
cgi getしてパースしてpostしたいんだろうが鼬飼い
0300デフォルトの名無しさんNGNG
イタチってこう書くのか...
0301デフォルトの名無しさんNGNG
>>299
さん
正直意味わかりません
いたちの漢字はinfoseekの辞書で読めました...
タグ取得しなくてよいのでしょうか?
0302301NGNG
板違い
了解です
と、言ってもどこに行けば?
探して移動します
0303デフォルトの名無しさんNGNG
>>302
初心者板が相当
0304デフォルトの名無しさんNGNG
アビバ逝け
0305デフォルトの名無しさんNGNG
阿鼻馬池
0306デフォルトの名無しさんNGNG
3日で300レスとは・・・
さすがリッチィだけはある。
0307デフォルトの名無しさんNGNG
なんでGPLなソフトはpthread中心に書き換えようとしないのでしょうか?
0308デフォルトの名無しさんNGNG
というかPC-UNIXで去年でたPOSIXをサポートするつもりはあるんでしょうか?
0309デフォルトの名無しさんNGNG
thread unsageな関数が沢山あるとしても、それらを扱う専用のスレッドを
用意すれば事足りると素人は思ってしますのですがどうでしょうか?
0310デフォルトの名無しさんNGNG
お前が書け
0311デフォルトの名無しさん NGNG
(void*)0
これをヌルポインタとしてはいけないの?
0312デフォルトの名無しさんNGNG
C FAQ嫁。
それでもわからなかったらまた来い。
0313デフォルトの名無しさんNGNG
>>308
%nm /lib/libpthread.so.0 | grep [^_]pthread
これだけでもかなりあると思うが。
0314279NGNG
>>281
分かったよ。じゃあ V して G して y して :new して p すれば
オーケーか? 操作的にはどちらも一瞬で出来るが。
0315デフォルトの名無しさんNGNG
プログラム全くの初心者なのですが、Cを独学で勉強しようと思ってます。
やっぱり参考書などを見ながら勉強するんですよね?
やはり数をこなすしかないでしょうか?
いきなり32ビットのをやるより、ちゃんと16ビットのからやってくべきですよね?
0316デフォルトの名無しさんNGNG
>>315
んなこたーない
0317デフォルトの名無しさんNGNG
>>315
Win32の話と見た。
0318デフォルトの名無しさんNGNG
独学一番。
0319デフォルトの名無しさんNGNG
>>315
コンソールプログラムから始めるのが普通だな
http://pc.2ch.net/test/read.cgi/tech/1016722820/
で本探して嫁
0320デフォルトの名無しさんNGNG
独習C これ最強
0321デフォルトの名無しさんNGNG
C++やれ
 ++
0322デフォルトの名無しさんNGNG
>>315
どうせまともなプログラマになるのは、数年先なんだから
いっそのことC#でもやったら?
0323デフォルトの名無しさんNGNG
C言語って変数の宣言ってどうやるの?
0324デフォルトの名無しさんNGNG
int a;
0325デフォルトの名無しさんNGNG
もうちょいまじめにかく

void main()
{
int a;

a=5;

printf("%d\n",a);
};
てな感じ

つーかそれも知らないなら、ネットやってるどころじゃないぞ
0326デフォルトの名無しさんNGNG
なに?intって? なんかの略?
0327デフォルトの名無しさんNGNG
記憶クラス 型 識別子;
0328323NGNG
cやったことないから・・・
古い言語やってるもので。

a を宣言して5を割り当てて
そのあとなにしてるの?
0329デフォルトの名無しさんNGNG
それを知ってどうしようというのだ?
0330デフォルトの名無しさんNGNG
>>326
こんなところで聞いてないでK&Rを読め。
やるなら早く読め、嫌なら帰れ。
0331デフォルトの名無しさんNGNG
>>328
print ってゆーくらいだから 多分表示してるんだろーなー

くらいの想像力はないの?
0332323NGNG
>>331
そんぐらい想像つくわ
厳密に聞いてんの
0333デフォルトの名無しさんNGNG
>>323
教えてもらっててその態度はいかがなものかと
0334デフォルトの名無しさんNGNG
整数(integer)型変数aを宣言し
aの領域に5をピットコピーし
書式化出力関数printfにフォーマット文字列と、
aの内容5を値で渡す。

制御は端から落ちてプログラムを抜けOSに返る。
0335323NGNG
スマソ・・・
0336323NGNG
printfは関数なのね。なるほど。
しかし、「制御は端から落ちてプログラムを抜けOSに返る」
このフレーズがいまいちピンとこないです。
もう少し詳しく教えていただければと・・・

0337デフォルトの名無しさんNGNG
そして5分が経過した
0338323NGNG
そして6分が・・・
0339323NGNG
そして7分が・・・・・
0340デフォルトの名無しさんNGNG
>323
ネタだよね。
それとも天然?

334よりつっこんだ話になるとそれはもうCの話じゃない。
そういうことを考えなくてすむから高級言語というのだ。

>制御は端から落ちてプログラムを抜けOSに返る。
この表現はわしもよくわからんが雰囲気はつたわる。
0341デフォルトの名無しさんNGNG
NetBSDのソースだけ欲しいのですがどこで手にはいるんでしょうか?
0342デフォルトの名無しさんNGNG
ソースはカーネルのソースです、ブルドック出されても困です。
0343323NGNG
天然でごわす。
0344336 K&R呼んでね♪NGNG
戻り値無しの関数は制御が定義の閉じ大カッコまで行くと
勝手に制御が返る。
明示的に書くと
void main(void)
{
 int a;
 a = 5;
 printf("%d\n",a);
 return;
}
本当はmainは状態を返したほうがいいので
int main(void)
{
 int a;
 a = 5;
 printf("%d\n",a);
 return 0;
}
0345323NGNG
voidはどういういみでせう?
お馬鹿でスマソ・・・
0346デフォルトの名無しさんNGNG
>>345
全部訊くつもりかよ。
0347デフォルトの名無しさんNGNG
そういう初歩的な質問は、レス消費してしまうので、
C言語をyahooで検索して、C言語のサイトにいった方がいいと思う
こんな夜中に急に気になったのかい?
0348K&R見れつーんだよNGNG
ここは1から10まで手解きしてくれるお勉強スレではありません。
自分でなんとかしろっつてんだろゴルァ( ゚д゚)
0349オドオドとした態度の小心者で、オタク人間NGNG
Cプログラマには
int main()派とvoid main()派がいるように思います。
int main()派の理屈はわからんでもないんですが、
void main()派の人はなぜvoid にこだわるのでしょうか?
教えてください
0350デフォルトの名無しさんNGNG
宗教戦争に参戦することにのみ
生きがいを見出しているからです。
0351ごめんなさいNGNG
345だけみて書きこんでしまいました。死にます。
0352デフォルトの名無しさんNGNG
> int main()派の理屈はわからんでもないんですが、

int main()派の理屈を教えてください。
0353デフォルトの名無しさんNGNG
>>349
戻り値を返す先が無い処理系を使っているからです。
0354デフォルトの名無しさんNGNG
>>353
例えばどんな処理系ばあるんでしょうか?
0355デフォルトの名無しさんNGNG
>>354
OSがないとか
0356デフォルトの名無しさんNGNG
>>355
組み込みってmain関数から始めるんですか?

カーネルにはmain関数なんて当然ないですよね。
main関数自体OSを前提とした関数だと思うんですが
この考えは間違ってますか?
0357デフォルトの名無しさんNGNG
main関数そのものはカーネルにはないだろうなあ。俺の脳内妄想カーネルにはあるけど。
mainが実行開始エントリという意味上のものであるなら、
カーネルにもmainはある。
0358デフォルトの名無しさんNGNG
fopenでNULLが返ってきた場合もfcloseするべきですか?
0359デフォルトの名無しさんNGNG
必要なしです。
0360デフォルトの名無しさんNGNG
fclose(NULL)でクラッシュする処理系、昔あろました。
0361デフォルトの名無しさんNGNG
あろました。
0362353NGNG
>>354
355正解。DSPです。
仕込めばmain以外から始める事も出来るけど、通常はmainから始まります。
実際は割り込みベクタ0から始まって、そこからmain呼んでるだけなんだけど。
0363デフォルトの名無しさんNGNG
fclose は成功すると 0 を返し、失敗すると EOF を返すそーですが、
失敗とゆーことは、ファイルはまだ閉じられていないんでしょーか?
そのファイルを閉じるにはどうすれば?
0364デフォルトの名無しさんNGNG
>int main()派の理屈を教えてください
ANSIがそうなっているからだろ。
ANSIに準拠していないCなら何も返さなかったりint以外を返してもいいんだろうけど。
ついでにint main(void)か int main(int argc, char **argv)ね。

逆にvoid main()の理屈がわからんぞ。
たぶん本にそう書いてあったからというくらいだとおもうけど、、。
0365デフォルトの名無しさんNGNG
"w"の場合はfcloseの成功を確認する必要があるねえ。
"r"でオープンしたやつのfcloseは気にしたことないなあ。
0366デフォルトの名無しさんNGNG
C99ではvoid main()もありうるようですが
void main()派はC99を根拠にしてるわけじゃないに1200リッチー
0367デフォルトの名無しさんNGNG
mallocしてfreeしない派の理屈を教えてください。
0368デフォルトの名無しさんNGNG
グローバル変数使いまくり派の理屈を教えてください。
0369デフォルトの名無しさんNGNG
>>367
OSを信頼してるから。
0370デフォルトの名無しさんNGNG
>>368
大丈夫staticでスコープを限定してるし、
一つのファイルに二、三個しか関数無いから(藁
0371デフォルトの名無しさんNGNG
>>367
手に入れたものを手放したくないから
0372デフォルトの名無しさんNGNG
>>364
揚げ足取りでスマソだが、それを言うならint main(int argc, (un)signed char **argv, char **envp)だろ。
(un)signedは付けとかんと。

void main(...)ってのは、8年位前にBorland系(つってもTurbo系)の参考書で見た気がする。
あのころのBorland系って、何でもC++(自称Better C)でコンパイルしようとしてたし。
たしか明示的に書いとかないと、いきなりエラー返したんじゃないかな。返り値を返すべきとか言ってさ。

初心者さんにHello World書かせるのに、K&Rに書いてあるコードと違いすぎるのはどうかなってことじゃないか。
return 0;とかreturn (EXIT_SUCCESS);とかつけとくと、何に返してるんだ?ってことになるし。
実際、void main(void)にしてて、関数の途中でいきなりexit(0);とかしてる本もあったし。

そうゆう参考書見て書いてた奴だったら、返り値が無いときには、癖でvoid main(...)って書くんじゃないかな。
そのころからやってる奴でも、C Mag,とかでやってた奴は、ちゃんとint main(...)で書くし。
0373デフォルトの名無しさんNGNG
>一つのファイルに二、三個しか関数無いから(藁
変数はそれでいいかも(いやよくないが)しれないけど関数はファイルスコープか全部丸見えか
どっちかしかないのに1つのファイルに関数2,3個だと。
小一時間以下略。

もっとも聞いた話では1ファイル1関数という規約を採用しているところがあったそうだ。
関数名とファイル名を合わせておいてls, dir, エクスプローラで関数一覧がでるから
便利という発想らしい。いつの時代の話なんだか。
0374デフォルトの名無しさんNGNG
いや、ここはボケるところなんだが・・・
0375デフォルトの名無しさんNGNG
いや、じゅうぶんボケになっとるが…
0376デフォルトの名無しさんNGNG
void main() が糞

ってことを書くときちがい片岡が来襲するぞ(w
0377デフォルトの名無しさんNGNG
片岡ってmalloc/freeじゃなかったか?
0378デフォルトの名無しさんNGNG
ようわからんが、void main()ってK&R第1版の影響では?
0379デフォルトの名無しさんNGNG
>>373
1ファイル1関数、
しかもその関数は数千行におよび(以下略)

Fortranの時代の名残(くせ)かなぁともおもったです。
0380デフォルトの名無しさんNGNG
freeした後のNULLチェックはどうですか?
どっかでコーディング規約になってたんですが。
0381デフォルトの名無しさんNGNG
>>378
int main() ってのはmainを呼んだ人に値を返したいから 戻り値があるの。
わかる?

返す人がいなきゃ void main() でいーんだよ。
0382デフォルトの名無しさんNGNG
>>381
OSが返してほしいって言ってます。
0383デフォルトの名無しさんNGNG
>>382
うらやましいよ・・・OSがある環境って。
0384デフォルトの名無しさんNGNG
BIOSが返してほしいって言ってます。
0385デフォルトの名無しさんNGNG
>>380
free(p); p = NULL;
という話?
0386デフォルトの名無しさんNGNG
>>384
ますますうらやましいよ・・・BIOSがある環境って。
0387デフォルトの名無しさんNGNG
ますますうらやましいよ・・・pcがある環境って。
0388デフォルトの名無しさんNGNG
ますますうらやましいよ、電気が使えるなんて
0389デフォルトの名無しさんNGNG
ueayamashi-yo! nihongo ga nyu-ryoku dekiru nante!!
0390デフォルトの名無しさんNGNG
うらやましいよ生きているなんて
0391デフォルトの名無しさんNGNG
OSサイコー。BIOSサイコー。pcサイコー。電気サイコー。日本語サイコー。
生きてるってスバラシー!

これで、世の中にバグがなけりゃーね。
0392デフォルトの名無しさんNGNG
>>391
自分のバグなら直せば済む。
OSやコンパイラのバグなら、大抵は回避すれば済む。
イヤなモンには違い無いが。

それ以上に逝ってよしなのは、客と営業のワガママだYO!!
これさえ無ければ・・・
0393デフォルトの名無しさんNGNG
>>392
客と営業が"あんなの"なのは仕様ですので。
0394デフォルトの名無しさんNGNG
最近は必要なくても
int main(int argc, char *argv[])って書いてるな。
後から引数受け取らせたくなることもあるし
必要なければおとなしく0返しとけば良いし。
あ、自分用のちょこっとしたツールの話ね。
0395デフォルトの名無しさんNGNG
>>372
> 揚げ足取りでスマソだが、それを言うならint main(int argc, (un)signed char **argv, char **envp)だろ。
> (un)signedは付けとかんと。
ハァ? いったいどこの方言ですか? デマばらまく前に規格書くらい読め。
0396ビル・ジョブスNGNG
あげ!
0397sageNGNG
sage
0398デフォルトの名無しさんNGNG
>>394
使わない引数書いておくと警告でるじゃん。
(チェックの厳しいコンパイラだと)
0399デフォルトの名無しさんNGNG
>>398
警告は意味がわかっててかつ問題なければ無視していいと思うけど。
>自分用のちょこっとしたツールの話
って書いてるし。
0400デフォルトの名無しさんNGNG
ちょと場合が違うけどBCBでボタンのクリックイベント書くときとか
Sender使わないからって消したりしないしね。
0401デフォルトの名無しさんNGNG
401げとずざー

ついでにage
0402デフォルトの名無しさんNGNG
厨な質問で申し訳ないんですが、
"key value"な形式のdot-fileを舐めるプログラムの常套手段を教えてください。
定番の手法を見つけることが出来ませんでした・・・
0403デフォルトの名無しさんNGNG
>>402
fgetsで行取得、strtokで分解。
0404デフォルトの名無しさんNGNG
for i in .* ; do cut -d ... <$i ; done
0405仕様書無しさんNGNG
>>328
「古い言語」って何だよ。どの言語なのかハッキリと言え。
C言語より古いってことか? なにを言いたいのかサッパリ判らん。

COBOL しか知らないっていうならデータ型を知らないのも
さもありなん、って感じだが、
そうでもないのなら…
よーし、おじさんが泣いちゃうぞ! ( ´Д⊂ヽウエーン
0406デフォルトの名無しさんNGNG
>>402

VCL使えるならTIniFileしかないっしょ!
これマジで便利よぉ!!
0407デフォルトの名無しさんNGNG
なんか急に落ち着いたな、このスレ。

このぐらいのすたれ具合がたまらん。(W
0408デフォルトの名無しさんNGNG
すたれage
0409デフォルトの名無しさんNGNG
Cはそろそろ終わりですかな
なんちゃって
C#の件をMSDNの最新号で読んだのでいるのですがMSはじゅんすいなCをもう見ていないのですね
0410仕様書無しさんNGNG
>>409
「MSはじゅんすいなCをもう見ていない」なら、
MSのほうが終わっちゃったのではないか、と小一(略)
0411デフォルトの名無しさんNGNG
glibcライブラリの関数とダブった名前の自作関数を使ったら、
ld にダメだ死されたんですが、
gcc で自作関数の方を優先してリンクするにはどうやったらいいですか?
0412仕様書無しさんNGNG
>>411
マクロで一方の名前を変える。
0413デフォルトの名無しさんNGNG
セマフォってどういう場合に役に立つのですか?
ロックファイルで十分だとおもうのですが・・・
0414デフォルトの名無しさんNGNG
ロックファイルの何百倍も速くて確実。
0415デフォルトの名無しさんNGNG
ロックファイルはmutexの替わりにしかならない。
0416デフォルトの名無しさんNGNG
しかもスレ違い。
0417デフォルトの名無しさんNGNG
■■ 究極のCコンパイラ C± (void)C ■■

Cコンパイラの新しい動きとして、ANSIの規格案とCにクラスの概念を持ち込んだものが
注目されている。今回、Letace社から発売されたC±は、今までのCと違うかのように見せかけながら、
ちっとも変わらないという点がいままでのCと違う部分である。一方、(void)Cコンパイラは、ANSI規格
をオブジェクト出力にまで適応しオブジェクトをまったく出さないのでコンパイル時間が事実上ゼロと
いう高速なコンパイラとなっている。
0418デフォルトの名無しさんNGNG
>>417
有料コンパイラなんかいらん。
0419デフォルトの名無しさんNGNG
>>417
それ、昔のパロディ版アスキーのネタでしょ? (笑)
Letace社(多分Latice社のパロディ)ってのが時代を感じさせるのう…。
0420デフォルトの名無しさんNGNG
■■ 奇病「WAIDS」全米に蔓延 ■■

米国では現在、ハッカーの間で「WAIDS」と呼ばれる奇病が広まりつつあるという。この病気、別名「ウィンドウ症候群」と呼ばれ、
「最近の高性能マシンに変態的とも言える愛慕の情をだくあまり、ひどい時には死ぬ場合もある」(スピアチャッカー・ジョーンズ・
セロニアス・モンク、ニューヨーク市マッシュ病院コンピュータ病理学ソフトウェア教授)とのこと。「マルチウィンドウズ!」と口
走るのが初期症状とみられており、病状が進行すると車のワイパーを見ただけで視覚神経が萎縮してその場に倒れたり、ホテルなどの
自動ドアに土下座したりといった発作が起こるという。さらに末期になると、「マルチジョブ!」と叫びながら二つの全く異なった動
作をし始めるという。治療にあたってモンク教授は「多くのソフトが発達して、マルチウィンドウが普通のものになれば自然に消滅す
るはず……」とWAIDSに楽観的だが、コンピュータの進歩に伴って第二、第三のWAIDSが発生することも考えられ、日本に上陸する可能
性と合わせて今後も予断を許さない。
0421デフォルトの名無しさんNGNG
そんなあなたに処方箋

昔のPC:Ah!Ski の想い出
http://pc.2ch.net/test/read.cgi/i4004/1008819977/
0422デフォルトの名無しさんNGNG
>>420
わからなくもない。
0423デフォルトの名無しさんNGNG
おいお前ら!
質問はねーのかよ!!
0424デフォルトの名無しさんNGNG
なんでこんな時間に書き込んでいるんですか?
0425デフォルトの名無しさんNGNG
>>424
あと1時間後に納品チェックが始まるのにバグが見つかったから
0426初心者NGNG
アプリケーションヘッダーってなんですか?
使用スタック領域のことがかいてあるって聞いたんですけど
0427デフォルトの名無しさんNGNG
>>426
なんだろうねぇ。
どこでその言葉聞いたの?>アプリケーションヘッダ
0428デフォルトの名無しさんNGNG
くらぇ! 「アプリケーション・ヘッダァーーーッ!」

スタンド攻撃ですか?
0429デフォルトの名無しさんNGNG
オラオラオラオラオラオラオラ〜〜!!!
0430初心者NGNG
某プログラムサイトの掲示板で
0431名無しさん@MeadowNGNG
無駄無駄無駄無駄無駄無駄無駄無駄ぁぁぁ!!!!
0432デフォルトの名無しさんNGNG
>>427
UDP/IP の件でなければ
ロードモジュールの話だろう。
0433デフォルトの名無しさんNGNG
昔はパソコンと呼ばずにマイコンって読んでたの?
0434デフォルトの名無しさんNGNG
パーコンと読んでいました。
0435デフォルトの名無しさんNGNG
>>433
漏れの始めた頃はマイコンと呼ばれていた。
パソコンって呼び方が出てきた時、すげー違和感有ったよ。

って全然スレ違いだ( ゚Д゚)ゴルァ!
http://pc.2ch.net/i4004/
ここでも逝け。
0436デフォルトの名無しさんNGNG
質問。

typedef union
{
struct
{
unsigned char R;
unsigned char G;
unsigned char B;
unsigned char A;
};

struct
{
unsigned int Gray;
};

struct
{
unsigned int Bin;
};
} PIXEL;

これで

const PIXEL PRGB_BLACK = {0, 0, 0, 0};

ってやりたいんだが無理で、

const PIXEL PRGB_BLACK = {0};

これだったら通る。RGBAので初期化したいんだがどうすればいいのでしょう。
共用体は最初のメンバなら初期化できるってCFAQに書いてあったんだけど……
コンパイラはBorland C++ Compiler 5.5
コンパイラがダメなだけかなあ
0437およよNGNG
共有体とは何ぞや?
0438デフォルトの名無しさんNGNG
無責任な発言ですが、キャストする、とか。
0439デフォルトの名無しさんNGNG
>>436
共用体を使わない。
0440ビル・ジョブスNGNG
質問の根幹からどれるけど、
どうしても、宣言と同時に初期化する必要あるんだ?
ちなみにGDI+だとARGBだよ。
0441ビル・ジョブスNGNG
スマソ。
質問の根幹からそれるけど、
どうしても、宣言と同時に初期化する必要あるんだ?
ちなみにGDI+だとARGBだよ。
0442デフォルトの名無しさんNGNG
質問の根幹からどれるけど、
どうして二重投稿なんだ?
0443436NGNG
GDI+とかとは関係ないライブラリを作ってるんよ。

んで、
DrawLine(int x1, int y1, int x2, int y2, const PIXEL pixel);
って関数があるもんで、黒とか白とかは定義済みのやつを渡したいなあと。
そして、それはライブラリのコードの中に封じ込めたいんで、宣言後初期化するとなると、
初期化関数でもよばせるしかない。それはちょっとかっこわるいんで、できれば宣言と同時に初期化したいのです。
0444デフォルトの名無しさんNGNG
>>436
#pragma pack(push, 1)
typedef union {
 DWORD RGBA;
 DWORD Gray;
 DWORD Bin;
 struct {
  BYTE R, G, B, A;
 };
} PIXEL;
#pragma pack(pop)
#define PIXEL_RGBA(r, g, b, a) {( (a << 24) | (b << 16) | (g << 8) | (r) )}

PIXEL pix = PIXEL_RGBA(1, 2, 3, 4);

こうしちゃだめなん?
0445436NGNG
>>444
なるほど。素晴らしい。
どうもありがとうございます。
0446デフォルトの名無しさんNGNG
>>436
いわゆる無名構造体は処理系の拡張機能なのだが、
先頭にダミーを置いてやればbccでも通る。

typedef union
{
 struct {unsigned char R, G, B, A;} dummy;
 struct {unsigned char R, G, B, A;};
 unsigned int Gray;
 unsigned int Bin;
} PIXEL;
0447436NGNG
>>446

構造体に名前つけないのは拡張機能なのですか……
全然しらんかった。
サンクスです〜
0448デフォルトの名無しさんNGNG
>>446
てか、この場合わざわざ無名にする意味がわからん。
おしえてください。おながいします。
0449デフォルトの名無しさんNGNG
GCCでmath.hに掲載されている関数を使うにはどうすればいいのですか?
普通にコンパイルしても使えませんよね?
オプションが必要なのでしょうか?

もう一つ質問させてもらいます。
無償の統計用のライブラリってありますか?
0450デフォルトの名無しさんNGNG
gcc -lm
0451デフォルトの名無しさんNGNG
>>449
普通に
#include <math.h>
ってやっても、何故使えないんだろう?
                         (((( ;゚д゚)))ガクガクブルブル
0452デフォルトの名無しさんNGNG
>>451
なぜ震えてる(藁

>>449
>>450 が正解
0453デフォルトの名無しさんNGNG
ありがとうございました。
みなさんはlibm.aというライブラリがある事をどうして知っているのですか?

とても不思議です。常識じゃないですよね?
man gccでもでてこないし。
0454デフォルトの名無しさんNGNG
>>453
大学1年のときに教官から教わった。
0455デフォルトの名無しさんNGNG
スレッドを使うときは
-pthread
とかこういうのはマニュアル読むしかないよ
0456デフォルトの名無しさんNGNG
ぐぐった
0457デフォルトの名無しさんNGNG
>>453
以前ここで見た(ワラ
0458デフォルトの名無しさんNGNG
>>453
いや常識だと思う。マジレス
0459名無しさん@EmacsNGNG
いや常識かどうかという問題じゃないと思う。マジレス
0460459NGNG
あ、何でもない。逝ってくる
0461デフォルトの名無しさんNGNG
gcc使い始めたら、たいていは通る道だと思うから、
そういう意味で常識に1票。
0462デフォルトの名無しさんNGNG
nmでgrepすればわかるじゃん。
0463デフォルトの名無しさんNGNG
man gccじゃわからんだろう。
man sinならわかるかもよ。
0464デフォルトの名無しさんNGNG
man sinでもでてこないですね。
まぁこれはガキ大将から一人エッチを教えてもらうのと同じなのかも。
0465デフォルトの名無しさんNGNG
メーリングリストとか掲示板とかチェックしてたら、
一回くらい目にするんじゃないの?
>>1にあるFAQにも載ってるし。
0466デフォルトの名無しさんNGNG
man ld
0467デフォルトの名無しさんNGNG
どなたかリングバッファの実装(非同期書きこみ、非同期読み出し)についての
実例や詳細解説文献等について教えてくれませんかぁ?
0468デフォルトの名無しさん NGNG
初歩的な質問ですみません。
ドライブ内やディレクトリ内にある、全てのファイル名を取得するには
どのようにコーディングしたら良いのでしょうか?
ご回答よろしくお願いします。
0469デフォルトの名無しさんNGNG
それはC言語の範疇じゃない。
環境書かないと。
0470デフォルトの名無しさんNGNG
>>468
一応マジレスしとくと
readdir()とかFindFirstFile()とか調べれ
0471468NGNG
すみません、Windows環境です。
サブディレクトリ内のファイル・ディレクトリ名も取得したいのですが...
よろしくお願いします。
0472468NGNG
>>470
ありがとうございました。
ちょっと調べてみます。
0473デフォルトの名無しさんNGNG
>>468
禿しくガイシュツな気がするが・・・
man opendir
0474デフォルトの名無しさんNGNG
Windows環境ならたぶんちがうな。UNIXしか触らんので
識者求む。
0475デフォルトの名無しさんNGNG
>>447
無名共用体はC++の標準機能だけど
ここはC言語スレだから拡張機能でいいのか
0476デフォルトの名無しさんNGNG
無名共用体は標準だけど無名構造体は非標準
0477デフォルトの名無しさんNGNG
おいROMっている奴、質問はないのか?(怒)
0478デフォルトの名無しさんNGNG
>>477
怒るなよ。マターリと質問を待とうぜ。
0479デフォルトの名無しさんNGNG
>>477
ではひとつ。

関数ポインタの配列を使ったリフレクションもどきのコード
を教えてください。とりあえずテンプレートになりそうな
疑似コードで結構です。

まずはイディオム的に覚えたいのです。
0480デフォルトの名無しさんNGNG
リフレクションという機能をご存知でしょうか。リフレクションとは,クラス・インタフェイス・オブジェクトに関する情報を取得するための仕組みです。
リフレクションは,Javaプログラムの開発ツール(クラスブラウザ・デバッガ・GUIデザイナなど)を作るときに欠かせない機能です。
0481デフォルトの名無しさんNGNG
>479
void *TMyClass_GetMethodAddress(const char *MethodName)
みたいのをすべてのクラス(というか構造体)に対して作れば
JavaやRubyなんかのリフレクションは超簡単に実装できるよ。
でもすべて手動で書かないといけないので面倒極まりない。
0482デフォルトの名無しさんNGNG
K&Rの演習をやってたんですが、

printf("signed char min = %d\n", -(char)((unsigned char) ~0 >> 1));
printf("signed char max = %d\n", (char)((unsigned char) ~0 >> 1));
printf("unsigned char max = %u\n", (unsigned char) ~0);

ってやると上から1、-1、65535になるのは何が悪いのでしょうか?
0483デフォルトの名無しさんNGNG
gcc 2.96 でやってみた
signed char min = -127
signed char max = 127
unsigned char max = 255
になった。
0484デフォルトの名無しさんNGNG
bcc5.5、vc++6で >>483 と同じ結果になった。
0485デフォルトの名無しさんNGNG
C言語は永久に不滅です。
0486デフォルトの名無しさんNGNG
>>483-484
コンパイラ変えたら上手くいきました。
ありがとうございます。
0487デフォルトの名無しさんNGNG
>>486
どのコンパイラ使ってたんだ?
0488デフォルトの名無しさんNGNG
>>487
LSIC-86 Ver3.30c 試食版です。
0489デフォルトの名無しさんNGNG
ところで、signed charの最小値は-128ね。
0490デフォルトの名無しさんNGNG
>>489
1の補数なら127だYO!
0491490NGNG
×127
○-127
0492デフォルトの名無しさんNGNG
試食版っていうネーミングは好きだなぁ(独り言)
0493 NGNG
floatを高速にintに変換する方法を教えろ!
高速にだぞ
0494デフォルトの名無しさんNGNG
float f;
int i = *(int*)&f;
0495デフォルトの名無しさんNGNG
>>494
DQNでごめんなさい。
なんでそれだと早いの?なんかおもいっきしプロ技に見えるのは俺だけ?

0496デフォルトの名無しさんNGNG
んなことしたら正常な値がとれないぞ。
http://www.stereopsis.com/FPU.html
0497デフォルトの名無しさんNGNG
ネタだろう。。。
0498デフォルトの名無しさんNGNG
>>490
ANSI−Cは2の補数を保証してるYO!
0499デフォルトの名無しさんNGNG
Cプログラマ必読のWEBページってありますか?
ライブラリが集結したようなのとか?
0500500getNGNG
⊂(ΦωΦ⊂ )⊃≡フフフ・・
0501デフォルトの名無しさんNGNG
>>499
http://pc.2ch.net/tech/index.html
0502デフォルトの名無しさんNGNG
code projectとか。
0503デフォルトの名無しさんNGNG
ttp://www.codeguru.com/

これのC言語版みたいなページがあればお願いします。

#自分がVC++プログラマだった時にこのページを知っていたら
人生が変わっていたと思う。

今はUnixプログラマ
0504nanashiNGNG
void ex(void)
{
int a;

printf("1or2を選択 : ");
scanf("%d", &a);

switch(a){
case 1: printf("1");
break;
case 2: printf("2");
break;
default: printf("1か2を選択\n");
ex();
}
}

こういうswitchの使い方はありですか?
0505デフォルトの名無しさんNGNG
マア イインジャネーノ。
0506デフォルトの名無しさんNGNG
switch使ってもいいこんなくだらないことで再帰するな
0507デフォルトの名無しさんNGNG
こういう場合再帰ではなくループで書くのが定石
それからscanfの戻り値をちゃんとチェックしとけよ
0508デフォルトの名無しさんNGNG
ctrl+Zとかctrl+Dで無限再帰であぼーんキボンヌ。

ホストでコレやればCPU使いまくりで課金で逝けるな。
0509nanashiNGNG
ループですか 分かりました
こんな時間にレスありがとうございました
0510デフォルトの名無しさんNGNG
>>498
してないYO!
でたらめ言うなYO!
負数の内部表現は処理系依存だYO!
0511デフォルトの名無しさんNGNG
>>504
というか、この場合switch以外を使うメリットが感じられないのだが。
0512デフォルトの名無しさんNGNG
>>504
whileならどうよ。スキーリすんじゃねぇの?
0513デフォルトの名無しさんNGNG
あれで再帰を使うとは。。。schemerだな?
0514デフォルトの名無しさんNGNG
末尾再帰マンセー!
0515デフォルトの名無しさんNGNG
do-whileの典型じゃないの?
0516デフォルトの名無しさんNGNG
定期age
0517デフォルトの名無しさんNGNG
long(a+b)とlong a + long b の違いを教えていただけないでしょうか?
0518デフォルトの名無しさんNGNG
マルチポストね。
どうりで。
0519デフォルトの名無しさんNGNG
ANSIのC規格書はどこにありますか?
0520デフォルトの名無しさんNGNG
>>519
当然の事ながらANSIに有るそうだけど、有料との事。
0521デフォルトの名無しさんNGNG
ガビ━━(゚д゚;)━━ン
有料ナンレスカ・・・(ノД`)
0522デフォルトの名無しさんNGNG
つか、ANSIは規格書が大事な収入源。
0523520NGNG
>>519,521
C-FAQの5.2参照。
0524520NGNG
スマソ. 11.2。
0525デフォルトの名無しさんNGNG
Cでリフレクション実装したいって、喧嘩売ってるとしか思えない・・。
0526デフォルトの名無しさんNGNG
喧嘩age
0527デフォルトの名無しさんNGNG
つか、意味無いじゃん。
0528デフォルトの名無しさんNGNG

struct kozotai {
int i;
char c;
};

struct kozotai kozo;

と定義したとき、
kozo.cはメモリー上でkozo.iのすぐ後にくることは保証されていますか?
0529デフォルトの名無しさんNGNG
>528
保証されていません。
メモリ上でパディング(詰め物)がある場合がありそれは実装依存です。
0530デフォルトの名無しさんNGNG
>>528
隙間あるってのもあるけど、順序が逆になっていてもおかしくはない。
0531デフォルトの名無しさんNGNG
メンバーの順序が保証されてなかったら、シリアライズがめんどーじゃん。
0532デフォルトの名無しさんNGNG
>>531
そういうもんだからしかたない。
0533デフォルトの名無しさんNGNG
>>531
つーか、シリアライズのためには
バイト境界を弄る (C言語の範疇外。コンパイラの起動オプションや
#pragma で設定)とか、隙間をパディングするとか、
初期化と参照時に一工夫が必要であるとか、
また union を使うといった技術を併用することが必要。
しかもプラットフォーム依存。

だからといって、C言語だから面倒だというのはおそらく不当な謂いで
あり、COBOL の人などに聞かせてごらんなさいよ、
ここいらの話を、あぁた。
0534デフォルトの名無しさんNGNG
シリアライズってなんですか?
0535デフォルトの名無しさんNGNG
C FAQにもメンバをひとつずつ保存するのが一番移植性高いって書いてあるしね。
0536デフォルトの名無しさんNGNG
>>530
K&Rのp.265には、
「構造体のメンバーは、宣言の順序に増えていくアドレスをもつ」
と書いてあるんですが…。
0537デフォルトの名無しさんNGNG
>>536
そうだね。
ごめん。かんちがいしてた。
0538デフォルトの名無しさんNGNG
win9x系のOSで配列の範囲を超えて値を書き込んだりして、
OSごと逝ってしまうってことはありえるの?

0539デフォルトの名無しさんNGNG
普通のアプリではあまり無いが、できないことはない。
0540デフォルトの名無しさんNGNG
#include <stdio.h>

void main()
{
    struct{
        char c;
        int n;
    }a;
    printf("%d\n", sizeof(a.c));
    printf("%p, %p\n", &(a.c), &(a.n));
}
---
1
0012FF84, 0012FF88
---
まあ、普通はこうなるだろな。多少開きができてる。
0541デフォルトの名無しさんNGNG
ABIって何ですか?
0542デフォルトの名無しさんNGNG
こっちが聞きてーよ
0543デフォルトの名無しさんNGNG
>win9x系のOSで配列の範囲を超えて値を書き込んだりして、
>OSごと逝ってしまうってことはありえるの?
ある。

というのはメモリ上のクリティカルな部分を破壊することがあり得るから。
たとえばカーネルそのものとか大事な環境変数とかを書き換えてしまうと
OSごと死ぬだろう。
といってNT系が全く大丈夫と言うわけではない。だが9.x系に比べたら天と地の差だ。
0544デフォルトの名無しさんNGNG
>>542
ウケタ(w
0545デフォルトの名無しさんNGNG
>>541
http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=ABI&Find=Find
お好きなのを。

まあ、たぶん↓のことだと思うけど。
http://computers.yahoo.co.jp/dict/semicon/mpu/37.html
0546デフォルトの名無しさんNGNG
>>542
ワラタ・・・
0547デフォルトの名無しさんNGNG
>>543
(´−`).。oO( ハゲドー )
数MBも書き込もうとすると、とんでもないことに ,,,ヽ(;´д`)ノ
0548デフォルトの名無しさんNGNG
この板って5行プログラミングみたいなことはやらないの?
0549デフォルトの名無しさんNGNG
>>548
(;´д`).。oO( やってみぃ )
0550デフォルトの名無しさんNGNG
>>548
確か昔そんなスレを見たような気が・・・
0551デフォルトの名無しさんNGNG
只今あるソフトを移植してるのですが、
pase error before `size_t'
というエラーが死ぬほどでます。これを出ないようにするにはどうしたら
いいでしょうか?
一つにはコンパイルオプションとして-ansiをつければいいというのが
あるそうなのですが、それでも出るものは出てしまいます。

なにか方法があれが教えて下さい。
コンパイラはgcc、OSはLinuxです。
0552デフォルトの名無しさんNGNG
何を移植しているのか、もしくは
移植源の環境(OS コンパイラ 使用ライブラリ)

最低限これだけは書いてこい
0553デフォルトの名無しさんNGNG
>>551
実際のコード見てみないと原因はわからん気がする
0554デフォルトの名無しさんNGNG
何を移植してるのかはちょっと一身上の都合でバラスわけにはいかないのですが、
移植もとのプログラムはFreeBSD,gcc,libcです。よろしくお願いします。

このエラーがどういったときに出たりするものなのか体験済みであれば
それを教えて下さい。
0555デフォルトの名無しさんNGNG
>>553
エラーもなにもlibc用のヘッダーファイル内でそのエラーが出るんですよ
0556デフォルトの名無しさんNGNG
configure.inとMakefile.amを書き直せ
0557デフォルトの名無しさんNGNG
551のpaseはparseです。すみません
0558デフォルトの名無しさんNGNG
七行プログラミング
http://pc.2ch.net/test/read.cgi/tech/984182993/
0559デフォルトの名無しさんNGNG
ヘッダーファイルにバグがあるとか?
0560デフォルトの名無しさんNGNG
>>556
automakeは簡単に使えるようになるんでしょうか?
0561デフォルトの名無しさんNGNG
ところで、
size_tって基本的にはunsigned intなんでしょうか?
0562デフォルトの名無しさんNGNG
自己レスです。エラーの原因は分かりました。
ただ単にsize_tをtypedefしてるヘッダーを取り込んでいない
ことでした。でも、今度はそれがどのヘッダーをインクルードすれば
いいのかさっぱり、、、
0563デフォルトの名無しさんNGNG
size_t は stddef.h でしょう。たぶん。
0564デフォルトの名無しさんNGNG
>>555
parse error before なんちゃらかんちゃら
は、結構よく出るよ。
で、原因はそのなんちゃらかんちゃらの「前」にあるので、その行は問題なし。
#defineとかtypedefとか#ifdefあたりが、コンパイル環境のヘッダファイルと
微妙に矛盾してんじゃないかな。
プリプロセッサの出力結果を見てみよう。
0565564NGNG
ガーン。既に解決・・・
0566デフォルトの名無しさんNGNG
>>563
Linuxはdebianを使っているのですが、これのlibc-devに含まれている
<linux/stddef.h>では例の有名なNULLゼロか非かのもとが定義されている
だけでした。

>>564
ありがとうございます。
#include<stdio.h>
size_t st;
int main(){}
とすればコンパイルは通るのですが、
stdio.hの行をコメントアウトするととたんにコンパイルが
通らなくなります。そのときのエラーメッセージはこうです。
test.c:2: parse error before `t'
test.c:2: warning: data definition has no type or storage class

これは先のケースと同じものでした。parse errorが重要なのではなくて
その下の行でした。あんまり沢山でてたので見落としてました。
0567デフォルトの名無しさんNGNG
C言語でキーボードから入力した
二進数、八進数、十六進数を十進数に変換するにはどうすればいいでしょうか。
0568デフォルトの名無しさんNGNG
strtolとか、sscanfとか。
0569デフォルトの名無しさんNGNG
>>567
どのへんまでできていて、どのへんに困ってるの?
0570デフォルトの名無しさんNGNG
>>569
実は全然……
桁の重みをどうやって表現しようか考えているけどちょっと分からない。
数字を一つ一つバラすのかと思ってみたがcharを使うのかな
でもそれだと文字列扱いに……
0571デフォルトの名無しさんNGNG
筆算での求め方は分かってるのか?
0572デフォルトの名無しさんNGNG
とりあえず。
2進数だと「1」の入っている桁に
2のN乗といった重みを加えて足していけば出るはず。
0573デフォルトの名無しさんNGNG
size_tの定義されてあるところが分かりました。
嬉しいので報告させていただきます。

<linux/types.h>で
typedef __kernel_size_t size_t;
となっていて、
<asm/posix_types.h>で
typedef unsigned int __kernel_size_t;
と定義されていました。

皆さんどうもありがとうございました。
0574デフォルトの名無しさん NGNG
このスレレベル高くて初心者には荒らせねぇ。
鬱だ・・・また出直すとするか。
0575573NGNG
ところでまた別のエラーのが沢山出てきました。
こういったヘッダーファイルの依存関係を解決する手段として
automakeは使えるんでしょうか?automakeがなんなのかさぱーり
分かりません。

>>574
漏れがレベルを極端に下げています。申し訳ありません。
0576575NGNG
リスンソケットって何ですか?
0577デフォルトの名無しさんNGNG
↑新手の荒らし手法だな(藁
0578576NGNG
私は573のひとではありません。
おんなじ時間に書きこみをしたみたいです
0579576NGNG
荒らしではありません。ごめんなさい
0580デフォルトの名無しさんNGNG
listenで検索
0581デフォルトの名無しさんNGNG
>>573
gccでコンパイルするアプリはAutoconf、Autoまけは基本だ。
makefileが書けるならこことか読みながらMakefile.amを書いて見るのがいい。
http://www.ainet.or.jp/~inoue/gnu/autoconf.html
0582デフォルトの名無しさんNGNG
>>567
それって大抵の本に必ずと言っていいほど載ってないか?
頭から一文字づつ読んで

n = n * 重み + その桁の値;

でループ回せ。
0583デフォルトの名無しさんNGNG
#if define(XXX)と
#ifdef XXXは
何が違うんでしょうか?
0584デフォルトの名無しさんNGNG
トークンが違う

効果は同じただの短縮
0585デフォルトの名無しさんNGNG
>>584
こんな時間に即レス、、、どうもありがとうございます。
#if defined(XXX)の間違いでしたね。
ちなみにこれだと
#if defined(XXX) && defined(YYY)
なんてこともできるみたいですね。
0586デフォルトの名無しさんNGNG
おまいら!今日びC言語なんてやってんじゃねぇ!
VC++7.0a遂に発表されたぞ!MFCも7.0になるぞ!

http://natto.2ch.net/test/read.cgi/denpa/1016241454/
0587569NGNG
>>570
とりあえずバラしかただけど、10進数以下なら、「0」の文字コードぶん引けばいいので、
char in[] = "12034";
v = in[0] - '0';
ってな感じで、この場合 v に 1 が入るなりよ。
16進数の場合は、アルファベットも混じってくるので、場合分けするなり
なんなりしてね。
0588デフォルトの名無しさんNGNG
#ifdefと#ifndefってなんですか?
0589デフォルトの名無しさんNGNG
>>588
え?マジで知らないの?
0590デフォルトの名無しさんNGNG
最近無知荒らしが酷いな。
0591>588NGNG
#ifdefはマクロがdefineされているとき#endif(もしくは#else)との間を残す、プリプロセッサ
#ifndefは逆
0592デフォルトの名無しさんNGNG
>>588
マクロを定義する際に再定義してしまう可能性がある時によく使うかな。。。
プリプロセッサに「マクロを再定義してんじゃねーよ!」って言われないように。
0593デフォルトの名無しさんNGNG
とりあえずヘッダを2重インクルードしないようにするために使う。
0594デフォルトの名無しさんNGNG
>>593
そーですな。
#define hogehoge
とか
#define hogehoge 1
とか
#define HogeMainH
なんつー感じの定義なんかと一緒にね。
0595デフォルトの名無しさんNGNG
#defineの再定義は問題ないんですか?
Waringしか出ないのでいいのかと・・
0596デフォルトの名無しさんNGNG
typedef struct{
int foo;
double bar;
char baz[256];
} aaa;

typedef struct{
int foo;
double bar;
} bbb;

aaa a;
bbb b;
とした場合、
*(*bbb)&a = b;
は
a.foo = b.foo;
a.bar = b.bar
と同じ結果を期待できますか?
0597デフォルトの名無しさんNGNG
できたとしてもやるもんじゃないヨカーン。
コピーするなら同じ型同士で、あと(*bbb)は(bbb*)。
0598デフォルトの名無しさんNGNG
>>596
自分でソースを書いて実行してみたか?
それすらせずに質問するのはどうかと思うぞ。

恐らく殆どの処理系で、思ったとおりに動作するだろうが、
気分的には>>597に激しく同意する。
0599デフォルトの名無しさんNGNG
構造体のメンバの並びは実際にメモリに割り付けられる順とは何の関係
も保証されていない。
0600デフォルトの名無しさんNGNG
>>599
>>536
0601デフォルトの名無しさんNGNG
順番は大丈夫だけど、メモリ配置はパディングが入って狂うかもしれない。
0602デフォルトの名無しさんNGNG
ちょっと質問
ポインタのポインタありますよね。
int *pointer;
int **temp;

temp = &pointer;

ってすると思いますがなぜ
int **tempにする必要があるのですか?

ポインタのポインタとは言えただのint型のポインタに違いは無いのだから。
int *temp;
temp = &pointer;

で理屈ではあっていると思うのですが?

それとも決まりだからしょうがないって感じなのでしょうか?
**tempにしなければいけない理由は?
お願いします。
0603デフォルトの名無しさんNGNG
>>602
int型へのポインタの実体は、intデータを指す。
int型へのポインタのポインタの実体は、int型へのポインタを指す。
全然違います。
0604デフォルトの名無しさんNGNG
>>602
例えば、

void main(void)
{
FILE *fi;
foo(fi)
}

void foo(FILE *fi)
{
fi = fopen("bar", "r");
}

とやってもうまくいかないよ。

void main(void)
{
FILE *fi;
foo(&fi)
}

void foo(FILE **fi)
{
*fi = fopen("bar", "r");
}

としなければならない。それと同じこと。

それからこれは極論になるが、int ***********p; なんてのも作れる。ほとんど
使い道ないけど。
0605デフォルトの名無しさんNGNG
あっちなみに>>604は、main関数の foo(fi); の後で、fiを使った処理を行うものと
仮定しているよ。
0606デフォルトの名無しさんNGNG
さんくすこ
0607デフォルトの名無しさんNGNG
603の説明でよいのだが初学者が陥りやすい点なので重ねて強調しておきたい。

>ポインタのポインタとは言えただのint型のポインタに違いは無いのだから

これはおそらくポインタの値を表示させると(ふつうは)アドレスが表示されるからそのように感じているのだろう。
しかしポインタはアドレスではない。ポインタとはオブジェクトを指すものであり間接演算子を適用したときに
その実体にアクセスできることが保証されているだけである。

型の名前は変数の宣言から識別子をのぞいたものであるから以下の宣言での変数aの型は
int a;  //int型
int *a; //int *型
int **a; //int **型



0608デフォルトの名無しさんNGNG
VC++6で、下のようなコードを書くと最後の行でエラーがでるんですが、何故?

struct aho
{
unsigned char baka;
};

struct aho sine;

sine.baka=0;
0609デフォルトの名無しさんNGNG
>>608
どんなエラーが出るのかくらい書きなさい。
0610デフォルトの名無しさんNGNG
error C2143: 構文エラー : ';' が '.' の前に必要です。
error C2501: 'sine' : 識別名を宣言するのに、型が指定されていません。
error C2371: 'sine' : 再定義されています。異なる基本型です。
'sine' の宣言を確認してください。
error C2143: 構文エラー : ';' が '.' の前に必要です。
って出ます。こんなの初めて
0611デフォルトの名無しさんNGNG
>>608
main関数がないからです。
0612デフォルトの名無しさんNGNG
>>611
Windowsなのですが、WinMainはあります
0613デフォルトの名無しさんNGNG
いや、そうじゃなくて。
初期化する場所が間違ってるってこと。
0614デフォルトの名無しさんNGNG
>しかしポインタはアドレスではない。ポインタとはオブジェクトを指すものであり

ポインタってアドレスじゃないの??
0615デフォルトの名無しさんNGNG
>>614
ポインタは演算ができる
0616デフォルトの名無しさんNGNG
>>615
どういう事ですか?
0617デフォルトの名無しさんNGNG
>>616
ポインタは、アドレスではなく、あくまでもアドレスを保持する変数である。
0618デフォルトの名無しさんNGNG
型がついてるので、単純にアドレス、で済ますわけにはいかない。
0619デフォルトの名無しさんNGNG
>>617
それについて詳しく載っているサイトや本はありますか?
ポインタがアドレスじゃないとは私にはあまりに刺激的過ぎます。
今までアドレスだと思い込んでプログラム組んできました。
0620デフォルトの名無しさんNGNG
アドレスのアドレスって
結局アドレスのような気がしますが型が違うという事でしょうか?
0621デフォルトの名無しさんNGNG
なんか頭悪げな奴が一匹…
0622デフォルトの名無しさんNGNG

あほか、おまえしめるぞ
0623デフォルトの名無しさんNGNG
このサイトで質問してみなさい。タイムラグがあるかもしれませんが、
各種方面の方々が懇切丁寧に教えてくれます。
http://www.pp.iij4u.or.jp/~nabe/c/
0624620NGNG
アドレスのアドレスはアドレスなワケで
コンピュータはどこからデータなのかどうやって分かるんですか?
0625デフォルトの名無しさんNGNG
int *temp,*pointer,i;
pointer = &i;
temp = (int*)&pointer;
*(int*)(*temp)=40;
こういうことがやりたいというなら、ご随意に。
死にたいと言うものを止めはいたしませぬ。

>624
わかりはしない。デレファレンスされたときに、それを
アドレスとして扱う、というだけのはなし。
0626デフォルトの名無しさんNGNG
>>620
int **p = &&i;
(´-`).。oO(どうしてこれは駄目なんだろう?)
0627デフォルトの名無しさんNGNG
>>624
アドレスのアドレスは確かにアドレスですが、どんどんその値が参照するに
つれて変わっていくでしょ?

int i;
int *p;
int **pp;

p = &i;
pp = &p;

とした時、pはiのアドレスを保持しますが、ppはあくまでもpのアドレスを保持
するのであって、iのアドレスを保持するわけではありません。
ここまではわかりますか?

では、ppを使ってiを参照しようと思ったら、**pp のように、*を二個つけなけ
ればいけないわけ。

pp->p->i のように二段になっているというのがその理由です。おわかり?
0628デフォルトの名無しさんNGNG
結局、アドレスだし、コンピュータには
変数がアドレスか値かは区別できないよ。

ただ、コンパイラがソースを解釈する時に混同しないように
各言語でポインタ用の型を用意しているんだよ。

int *a;
int *b;
a=&b;
これが成立したら、
*a
がbのポインタを指すのか、bの内容を指すのかコンパイラは判断できないからね。
0629デフォルトの名無しさんNGNG
>>626
&&i はオカシイ。
変数iのアドレスを参照するのが&iだから、
&&iは何を指す?
ちなみに、
int **p=(int **)&i;
なら問題ないけど。確実にバグる。
0630デフォルトの名無しさんNGNG
(アドレスつったって、オフセットかもしんないし、物理アドレスかもしんないし、仮想アドレスかもしんないし、
リニアアドレスかもしんないし、ハンドルかもしんないし、セグメントディスクリプタかもしんないし…
「アドレス」っていう単語には、あまり意味が無い気もする・・・)
0631デフォルトの名無しさんNGNG
>&&iは何を指す?
テンポラリオブジェクト、かなぁ。
0632629NGNG
>>631
スマソ。テンポラリオブジェクトって分からんわ。
そういえば、論理演算子に&&あるやん。
0633デフォルトの名無しさんNGNG
>>631
ここは C スレだよ?
0634デフォルトの名無しさんNGNG
>>625
int *temp,*pointer,i;
pointer = &i;
temp = (int*)&pointer;
*(int*)(*temp)=40;

これってどうダメなんですか?
0635デフォルトの名無しさんNGNG
>>634
これはダメじゃないけど、ポインタの意味をねじ曲げて使っている。
tempはint * なのに、int ** に無理矢理コンパイラを騙している。
しかも見た目はint * なので、なおさらたちが悪い。
これは単なる遊びだと思って下さい。間違っても真似しないように。
0636aNGNG
>>634
打つのが面倒臭いから
0637デフォルトの名無しさんNGNG
>>635
なるほど、理解しました
要するに奇妙なコードは最初から書くなってことですね
0638Disca ◆NAfP6znE NGNG
現在、データベースなるものを自力で作ろうとしているのですが、
データの検索、データの追加時に、fread(fget)などで修得すると思うのですが、
64KByte(GlobalAlloc(Windows環境での普通割り当て値)のデータファイルを、
64KByteのバッファを用意して、まるごと読み込んでから検索した方が速度的に早いのか…。
それとも、小さなバッファを用意して、こまめに fread or fget or fgetc でも早く検索
できるのでしょうか?。

それと、fread などでファイルから読み込む時には、ファイルからダイレクトに入出力しているのでしょうか?
お願いいたします。
0639デフォルトの名無しさんNGNG
>>637
いや、奇妙なコードを書ければ、それはそれで意味あるぞ。
最高に読みにくいCのコードを集めてコンテストしてるおバカなサイトがある。
http://www0.us.ioccc.org/years.html
0640鈴木証人NGNG
お答えします。それはですね、あなたですね、でーたーべーす、
というものですね、はなはだ、曲解、ないし、勉強をしていない、
と、こうですね、思わざるをえないんです。
0641デフォルトの名無しさんNGNG
変数にアドレスを格納しきれないとき、
エラーが起きる。
例えばintをcharにしたときとか。

#これでいいのかな?
0642デフォルトの名無しさんNGNG
これからCを勉強しようとしているものです。
質問なのですが、とあるところに、Cを勉強中はブルースクリーンになってしまうことが多いので、
メインのPCではプログラムを組まないほうがよいとあったのですが、本当でしょうか?
0643デフォルトの名無しさんNGNG
>>642
心配しすぎだ。
バックアップさえこまめに取っていれば、大抵は問題無い。
但し、仕事で使うPCや、他人と共有するPCなら避けた方が無難。
0644デフォルトの名無しさんNGNG
NTでやれ、NTで。
ユーザープログラムごときでOSが死ぬことはないから
0645デフォルトの名無しさんNGNG
>>638
素直にDBクラス使うとかはだめなの?
速さを求めるなら、自力よりは速いと思うけど。
0646デフォルトの名無しさんNGNG
>>638
漏れは>>645に禿同なのだが、とりあえず置いておく。

データがシーケンシャルなら、まとめて読み込む。
ランダムなら、必要な箇所のみ読み込む。
どちらにしても、システムコールの呼び出し回数を少なく押さえる事を考慮する。

但し本当に速度を求めたいなら、両方書いて速度を比較しる。
0647デフォルトの名無しさんNGNG
>>643-644
98と2kがあって、98のほうで遊んでみようかと思ってたんですけど、メインの2Kでやって
問題無いですかね。
今まではPerlしかやってないので。
0648デフォルトの名無しさんNGNG
>>647 やってみればわかることをイチイチ聞くな。
0649デフォルトの名無しさんNGNG
ていうか
>Cを勉強中はブルースクリーンになってしまうことが多い
初めて聞いた
0650デフォルトの名無しさんNGNG
>>647
2kでブルースクリーンになることは稀だと思うぞ。
95系だとOS道連れに死んでくれるからやめておけ。
0651デフォルトの名無しさんNGNG
>>624
もう解決しちゃってるぽいけど、一応。
>>628が書いてるように、Cコンパイラは、コンパイルする時、
ちゃんと「どんな型のポインタなのか」を意識しています。
char *char_p = 0;
int *int_p = 0;
double *double_p = 0;

int_p += 10;
char_p += 10;
double_p += 10;

printf("char_p=%p\n",char_p);
printf("int_p=%p\n",int_p);
printf("double_p=%p\n",double_p);

上の3つの表示結果、それぞれ違うわけね。

で、>>625がたまたまうまく動くマシンというのは、例えばi386互換
CPUで、アドレス幅とintのサイズがたまたまどちらも32bitで同じになってる時だね。
int *p;

printf("pのサイズは%dバイト\n",sizeof(p));
printf("*pのサイズは%dバイト\n",sizeof(*p));
(ほんとはsizeof()が返す値は「バイト」じゃなくて、charのサイズの何倍なのか・・・らしい?)
int *pをchar *pとか、double *pとか、char **pとかに変えて実験してみよう。
0652デフォルトの名無しさんNGNG
>アドレスのアドレスはアドレスなワケで
全然違う。それに今はなしているのはポインタの話だ。
char *a; int *b; double *c; int **d;
とかあってこれらのポインタとしての値(値は事実上アドレスといってもいい)が等しくても
*で逆参照したときはそれぞれの型に従ってその変数の値が取り出させる。

ポインタがあることでビットオーダー、バイトオーダーとかその変数がどれだけのメモリを
割り当てられているのかなどプログラマが管理しなくてすむようになっている。

もう一度強調する。ポインタはアドレスではない。
実装の仕方は規定には無いので嘘にナル可能性もあるが事実上は
「アドレスと型情報の2つ併せて」ポインタ

>それについて詳しく載っているサイトや本はありますか?
この板でもよくあがる前橋和弥「C言語ポインタ完全制覇」がいい。語り口に癖があるので
嫌いな人はだめかもしれないけど。Hpもあるんだけどそこ読んで口調が嫌いじゃなければ
読んでみる価値がある。

ttp://member.nifty.ne.jp/maebashi/programmer/pointer.html
0653デフォルトの名無しさんNGNG
>>652
struct test
{
int *a;
char *b;
};

test.a = (int *)0x00001f;
test.b = (char *)0x00001f;

疑似共用体。
0654デフォルトの名無しさんNGNG
>変数にアドレスを格納しきれないとき、エラーが起きる。例えばintをcharにしたときとか。
>#これでいいのかな?

たぶん誤解しているので説明する。
普通、アドレスはアドレスなのでint *のポインタの「値」もchar *のポインタの「値」も
サイズは同じであることが多いだろう(保証されているわけではない)。だから桁あふれとかで
格納しきれないというようなイメージを持っているのなら全く理解していないことになる。

>コンピュータはどこからデータなのかどうやって分かるんですか?
ポインタ=アドレスと思っているのが間違い。
アドレスからデータを取り出すためにポインタがある。アドレスだけ渡されてもコンピュータは
(プログラムは、コンパイラは?どの表現がベターかわからないけど何となくわかるよね)
どのように値を取り出せばいいのかわからない。例えばintという型がわかればそのアドレスから
sizeof(int)分のサイズを読み込んでintとして扱う。
0655デフォルトの名無しさんNGNG
registerやvoratileなどと言う予約語がありますがあれはどういうときに使うのですか?

またunionと言う共用体がありますがあれはstructと言う構造体とはどこが違うのでしょうか?

また関数ポインタと言うのは変数にポインタを持っている関数と言うことでよいのでしょうか?
void *function(*var1, *var2){};
というように、
プログラミング言語Cを見ても関数ポインタのことはさっぱりです。

また、プログラマから見たOSはAPIだ、と聞いたことがありますがあれはドいうことなのでしょうか?
プログラム書くときにAPIを使いこなせないとそのOSのプログラムはかけないと言うことでよいのでしょうか?
WINDWOSでプログラムするときにはWIN32を皆さんは暗記はしなくてもイメージは覚えているのでしょうか?
その上でプログラム上必要な関数は自作するのでしょうか?
どんな命令を作って、どんな命令をAPIから拾ってくるか、と言うイメージがうまくできません。
なかなか初心者以前の入門者の質問で申し訳ございませんがお答えいただけましたらよろしくお願いいたします。

たくさん質問があって申し訳ございませんが、ご回答よろしくお願いいたします。
0656デフォルトの名無しさんNGNG
>>655
register:レジスタを変数に割り当てる−>メモリからのロードが必要なくなるので高速に。制限あり。
voratile:最適化を行わない変数。メモリマップドIOなどの場合必須。

共用体:>>653参照。

関数ポインタ:全然違う。
関数のアドレスを指すことのできるポインタ。
http://www2.muroran-it.ac.jp/circle/mpc/qanda/prog0000.html

OSはAPI:そのまんま。プログラマから見てOSは巨大なライブラリである。

イメージ:?そう言うAPIがあったことだけは記憶している。後はリファレンスを検索。

自作:当たり前です。他に誰が作ってくれると?

0657デフォルトの名無しさんNGNG
>>656
変数をレジスタに割り当てるだな・・・。鬱。

総評としては「検索くらいしろ。Cの参考書くらい読め。」ってとこかな?
0658デフォルトの名無しさんNGNG
>>656様。
registerやvoratileはアプリ屋などでは使用しているのでしょうか?
私は使用したことがありません。
関数ポインタも同じです。

また、APIですがWindowsでインターネットやりたくてもネットにつないでも、
その先ブラウザソフトがないとWebが見れないのと同じで、プログラムするときにAPIでネットにつなぐAPIがあっても、その先ブラウザ用のプログラムを自分で用意する(自分で書く)必要があると言うことでよいのでしょうか?
なかなかうまくイメージできません。
昔M$のDMでシェアウェアなどは普通、APIを組み合わせて普通は作るとありましたが、あれは本当のことなのでしょうか?
0659デフォルトの名無しさんNGNG
>>658
上:アプリ屋って・・・何さ?

下:
最近のWindows環境では話が変わってきたけどね。
一番浅い部分で話すとWindowsAPIはprintfなどと同じ「関数」である。
よってWindowsプログラムはすべてAPIの順列である。

最近のWindowsでは各種機能のコンポーネント化が進んできてIEの機能を
まるまる利用できたりもする。

CがC++に進化したようにWindowsも手続き型からオブジェクト指向型に進化していると言える。
0660デフォルトの名無しさんNGNG
registerとautoは指定したことありませんなぁ。
0661デフォルトの名無しさんNGNG
> 変数をレジスタに割り当てるだな・・・。鬱。

どっちでもいいんだけどね。

あと、「割り当てる」じゃなくて「割り当ててほしいというヒントをコンパイラに
伝える」だな。
まあ、コンパイラが最適化をするときにはこの修飾子は無視されると思う。
0662デフォルトの名無しさんNGNG
volatile(voratileじゃないぞ)は揮発性という意味がある。
使いどころは、マルチスレッドプログラム(あるいは割り込み処理があるプログラム)
において変数が非同期に書き換わる可能性がある場合、だな。
メモリマップトIOも非同期に書き換わる変数の一例だね。

メインループ:
volatile int muststop = 0;

while( muststop == 0 ){ // check stop flag
doProcess();
}

割り込み処理:
interrupt_routine(){
  muststop = 1;
}

てな場合に、muststop変数をvolatile宣言しておかないと、
コンパイラの最適化によって、メインループがmuststop変数のチェックを
しなくなる可能性がある。

変わりネタとしては、コンパイラの最適化にバグがあると疑わしい場合に、
最適化を妨げるために使うとか。
0663デフォルトの名無しさんNGNG
>655
前橋マンセーと思われると何だけど
ttp://member.nifty.ne.jp/maebashi/programmer/pointer.html
の下の方に関数へのポインタの話があるので読んでみて。

それから初心者以前の入門者などと名乗っているけどそうなのかい?
もし本当に初心者というなら疑問に思うことが的はずれというか何というか。
やっと分数を覚えたくらいの学力で微分方程式の解法のことを心配していても
しょうがないでしょ。

もし予防線張っといて入門者といっているだけならもう一度K&Rを読みなさい。
0664デフォルトの名無しさんNGNG
>>661
って優香、registerはコンバイラの最適化を妨げることさえある。レジスタの
多いRISC系CPUだとあまり問題にならないだろうが、x86のような貧弱な
レジスタセットだと、思い切ってコンパイラに任せてしまった方がいい結果が
得られることが多い。
0665デフォルトの名無しさんNGNG
だからヒントに過ぎないと・・・
レジスタ少ないCPU用の最適化コンパイラは、まず無視するから問題なし。

まあ、特別な事情が無い限り付ける必要はないね。
0666デフォルトの名無しさんNGNG
>>665
inlineもヒントですね。C++だけど。
registerはたまに強制するコンパイラがあると聞きましたが。でも強制しても、
手持ちのレジスタを使い切ってしまえばどうせ使えなくなるけど。

話は変わるけど、コンパイラが吐き出すアセンブリ出力を見ていると面白いね。
僕はC言語をそうやって勉強しました。今もそうしています。
0667sageNGNG
突っ込みどころが多すぎてどこから手をつけるべきかわからんな。
0668デフォルトの名無しさんNGNG
>>667
なにか言いたいけど、反論が怖くて何も言えない人。
0669デフォルトの名無しさんNGNG
>>667
あんたがどの発言を指してるかわからないばっかりに>>655-666全員ドキドキだ。
0670デフォルトの名無しさんNGNG
>667
663だ。いいたいことがあるならはっきり言え。

俺はいつでも訂正する用意がある。
無視ぶっこいて逃げ出す用意もある。

待ってるぞ。
0671デフォルトの名無しさんNGNG
>>670
いや、多分あんたじゃない。突っ込むに値しないし。
0672667NGNG
思わせぶりに言ってみただけです。
ごめんなさい。
0673デフォルトの名無しさんNGNG
俺は例の初心者に対して言っていたのだとてっきりおモってたんだが(藁
0674デフォルトの名無しさんNGNG
まあまあみんなマターリしようよ。
せっかくvoidタンも去ってくれたんだし。
0675デフォルトの名無しさんNGNG
sizeof(int *)とsizeof(char *)が違う処理系もあり得ると、文献で
見たことがある。

実物は無いけど
0676デフォルトの名無しさんNGNG
>>675
えぇーっ!!??
0677デフォルトの名無しさんNGNG
ある人に、ハードディスクを逆回転させることができると
聞いたのですがやりかたがわかりません。教えてください。
よろしくお願いします。
0678デフォルトの名無しさんNGNG
>>675
何の文献だそりゃ?
0679デフォルトの名無しさんNGNG
民明書房館
0680デフォルトの名無しさんNGNG
>>677
ハァ?マジで知らないの?
0681デフォルトの名無しさんNGNG
>>677
手でまわす
0682677NGNG
教えてください。マジでしらないです。。
0683Disca ◆NAfP6znE NGNG
>>645
>>646
ありがとうございます。自力でデータベースプログラムを作ります。
シーケンシャン方法なので、一度にファイルごとバッファに入れようと考えています。
0684むぅ-01Fb ◆Muu/FbRQ NGNG
(´∀`)<シーケンシャン方法なので、一度にファイルごとバッファに入れようと考えています。)

  むぅ?
    ∩∩ 
   (゜x゜ )○
0685デフォルトの名無しさんNGNG
(´-`).oO(メモリに全部読み込めるなら、なんで最初からそうしないんだろう・・・
0686デフォルトの名無しさんNGNG
>>683 >>684
トリップ付きコテハンとはめずらしいな。
このスレでは初めて見た。
0687ポインタ大好きおやじNGNG
ガーン・・・ポインタ話が終わってしまったようだ・・・・・
もう少し早くPC復旧させればよかった。
0688デフォルトの名無しさんNGNG
俺のポインタもコンパイルエラーを吐きそうです
0689Disca ◆NAfP6znE NGNG
>>684
>>685
自爆(自笑)してしまいました。スマソ。
0690Disca ◆NAfP6znE NGNG
今考えているのが、64KByteまでのデータだったら、
ファイルごとバッファに入れようかと考えています。
もし、64KByte以上だったら、数回に分けて(64KByteに区切って)バッファに格納して
各回ごとに処理をしようと考えています。

そこで質問なのですが、
http://www.bohyoh.com/CandCPP/C/Library/index.html
標準ライブラリで、ファイルのバイト数を収得する関数はありますでしょうか…?
MFCなら、_fstat などがありますが…。
0691デフォルトの名無しさんNGNG
>>690
MFCじゃなくて標準ライブラリじゃない?
0692デフォルトの名無しさんNGNG
>>690
ふつー、fseek()とftell()だけど、なんで分割読み込みするのに
ファイルサイズを知る必要があるのかわからん。
while(fread(...))
で済むんでわ?
0693デフォルトの名無しさんNGNG
関数のプロトタイプにも仮引数名を書いた方がいいですか?
0694デフォルトの名無しさんNGNG
>>693
int copy_some_data(char* dst, char* src);
int copy_some_data(char*, char*);

どっちがいい?
0695デフォルトの名無しさんNGNG
>>694
わかりやすいのは上だけど、格好良いのは下ですね。
0696sageNGNG
微妙。
でもだいたいはいらない。
0697デフォルトの名無しさんNGNG
>694
前者に決まってる
後者を薦めるのはツールを使えない愚か者
0698Disca ◆NAfP6znE NGNG
>>691 >>692
ありがとうございます。
ちなみに、64KByte以下の場合ですが、
あまり効果はないのですが、ファイルサイズがわかっていたら
最初に確保するバッファサイズの節約になるかと思ったためです。

>>692
ftell ありがとうございます。今まで以下のでやろうとしていたのが恥ずかしいいくらいです。

void main(int argc, char *argv[], char *envp[])
{
  FILE *pFile, *pHead, *pTail;
  if((pFile= fopen("data.txt", "rb")) == NULL)
  pHead= pTail= pFile;

  fseek(pHead, 0, SEEK_SET);
  fseek(pTail, 0, SEEK_END);
  printf("%d Byte\n", pTail - pHead);
  fclose(pFile);
}
ちなみに結果は、0Byteです。
無理だろうとは思っていましたが…。
0699デフォルトの名無しさんNGNG
>>694
漏れも前者。
なんでかっつーと、関数の宣言をコピペするだけでいいので、楽だから。
0700デフォルトの名無しさんNGNG
>>699
あはは。
コピーした後にわざわざ変数名を消している俺は馬鹿だ(笑)
0701700 NGNG
今だ!ゲットー
0702700NGNG
>>701
わりぃ、馬鹿なうえに邪魔までしてしまって。
0703デフォルトの名無しさんNGNG
> int copy_some_data(char* dst, char* src);
int copy_some_data(char* dst, const char* src);
ちゃんとconstつけよう。
0704デフォルトの名無しさんNGNG
>>703 char* ならそうでしょうね。

int convert_some_data(struct MyStruct* result, struct MyStruct* source, int condition);
int convert_some_data(struct MyStruct*, struct MyStruct*, int);

float inner_product(float x1, float y1, float z1, float x2, float y2, float z2);
float inner_product(float, float, float, float, float, float);

コードそのものがなるべくドキュメントであったほうがよいというハナシは
誰が言い出したんだっけな。
0705デフォルトの名無しさんNGNG
くぬーす?
0706デフォルトの名無しさんNGNG
おはつです
CでCGIを書こうと奮闘しているのですが
(鯖はrimnet、OSはFreeBSD Ver.3改)
とりあえず書いたら、IEでは問題ないのだけど
NS4.7/6.2で見ようとするとError500 Internal Server Errorでます
原因がわかりません。
教えてください
ttp://members.tripod.co.jp/mod5/enter.c.txt
0707デフォルトの名無しさんNGNG
問題の切り分けをしようという気はないのか?
まずは"perl"で問題を再現させる最小のコード書いてみろ。
つか板違い
0708デフォルトの名無しさんNGNG
>if(length>MAXLEN) {printf("CONTENT_LENGTH>MAXLEN\n");exit(0);}
たとえばこことか。

>buf=((s[++i]>='A') ? s[i]-'A'+10 : s[i]-'0');
こう、なんつーか、スゴいコードを書くんだな‥‥
4eとかは無視かい。

0709デフォルトの名無しさんNGNG
>>678
C言語辞典だかそういう名前の本で、色々なハードウェアでの
型の大きさが一覧になっていた。

NECだか日立の見慣れない型式のハードウェアだったと記憶している
誤植かなとも思ったが、3とか4とかが混ざっていたので本当だったのでは
0710デフォルトの名無しさんNGNG
プログラムとしてC言語の構文を覚えたりアルゴリズムやデータ構造を覚えたり、設計手法などにも目を通したのですが(プログラミング作法という書籍を購入してきて)プログラムができません。
基本情報処理資格も取得したのですが自分で1からは書けません。
会社には所属したことは無く、完全に独学で学んでおります。

私には何が足りないのでしょうか?
あきらめるしか方法が無いのでしょうか?

最近思っているのですが、作りたいものが無いのかもしれない、とも思ってきました。
入社して社会人としてプログラムしても良いのでしょうか?
0711デフォルトの名無しさんNGNG
>>710
独学・趣味でプログラム作ると
1.作りたいものがある(≒解決したい問題がある)
2.適当に作ってみる
3.使ってみて不便な点をどんどん拡張
4.無理な拡張してプログラムが破綻
5.コードをいったん全部捨てて最初から作り直す(3.へ戻る)
っていうサイクルを繰り返して
企画・設計・コーディング・デバッグ・メンテナンスを
一通り覚えるもの(と思ってるん)だけど、
1.が欠けてるのはある意味致命的かも。
趣味でやるにはCは色気がなさ過ぎるので別の言語を試してみることをお勧めする。

あるいは無理してやりたいことを見つける必要はなくって
いっそ仕事としてやってみるといかも。
足りないのは実務経験だけみたいだから適切に仕事をあてがってもらえば
何とかやっていけると思うよ。
>アルゴリズムやデータ構造を覚えたり、設計手法などにも目を通したのですが
ここら辺の知識がまったくない厨房でも平気で会社入ってくるからね。
0712デフォルトの名無しさんNGNG
>>710
そんな堅苦しく考えてたってプログラミングはできやしねーよ。
俺なんて授業がつまらないからゲームを作ったり、エロゲーのセーブデータを
書き換えようと常駐型バイナリエディタを作ってみたり。
作りたいものを作ろうとする気力も無いならば今すぐプログラマー気取りなんざ
やめちまえ。そういうのを厨房っつーんだよ。
0713デフォルトの名無しさんNGNG
>>710
ああ、俺の友達にもいるよ。そう言う奴。
人のプログラムを改造して課題こなしてきたからプログラムの解析は得意。
今、お互い就職活動なんだ。
一緒に同じ企業に行ったんだよ。
『君の学科は情報系だけどどんなことしてるの?』
「あ、プログラミング。」
『いやいや、他にもさ・・・』
「えっと、プログラミング。」
勝てると思ったよ。
0714706NGNG
>>707
Perlは全くわかりません
>>708
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/
ここから丸パクリした部分です
0715デフォルトの名無しさんNGNG
>>713
勝てるね。
0716デフォルトの名無しさんNGNG
勝てるかどうかは>>713次第だろ。怪しそうだが。
>>710みたいなのは、デバッグ要員として意外と重宝されるぞ。
0717デフォルトの名無しさんNGNG
あの構文木ってなんですか?
コンパイラと何か関係がありますか?
0718デフォルトの名無しさんNGNG
>>717
ありますよ。構文解析の時に非常に有用。コンパイラ関係の本には必ず載ってます。
0719デフォルトの名無しさんNGNG
俺含めて、勝ち組みってのはコーディングなんかしないね、実際。
0720デフォルトの名無しさんNGNG
>719
フリーター業界の勝ち組みサンですか?
0721デフォルトの名無しさんNGNG
>>719
かと言ってプログラマのお茶組んだりコピー取ったりは勝ち組とは言わないぞ。
0722デフォルトの名無しさんNGNG
プログラムのトレースログを取りたいと思っています。
そこで質問なんですが
複数のプロセスから単一のファイルへの書き込みの定石みたいなものが
ありましたら教えてください。
一つのログ=1行です。
ファイルが壊れるのを一番恐れています。
0723デフォルトの名無しさんNGNG
mutexかセマフォ(1)使え
0724デフォルトの名無しさんNGNG
>722
stderrに出力してリダイレクト
歯痛制御なんぞOSに任せろ
0725710NGNG
わざわざお答えありがとうございました。
私は自分では、今まで作ったものは、リモートでの電源ON/OFFくらいしかありません。
win9xならまだしもwin2000やwinxpではadminでの場合しかネット越しに電源は落ちません。
話になりませんね。
もっと実用的なものを作る知恵がないのです。

明日にでも職安に行ってみます。
考えてばかりではいけませんので
今は職安混んでいて行くのいやなんですけどね。
就職浪人していていますが、無職だとろくなことを考えませんのでそろそろ仕事もしないといけないですし。
どうもありがとうございました。
0726710NGNG
あげてしまいました。
失礼いたしました。
0727デフォルトの名無しさんNGNG
int fd, nread; /*fdはファイルデスクリプタとして使用*/

/*何らかの処理*/

ioctl(fd, FIONREAD, &nread);  ←?


というような記述があるプログラムの中で出てきたのですが、
解説がなく何をやっているのかわかりません。
0728デフォルトの名無しさんNGNG
この ioctl(fd, FIONREAD, &nread);  の行は
なにをやっているのか教えてください。
0729デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=C%8C%BE%8C%EA%81@ioctl&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=
検索汁!(`д´)
0730デフォルトの名無しさんNGNG
>>727
一応ヒントを出すと、そのfdが何に繋がってるかによって、
違うんだなーこれが。
該当するデバイスのmanか、デバイスドライバのソースを見ると
わかるよん。
0731727NGNG
ども 解りました。kbhitと同じような働きをするのですね。
”標準入力にデータがあるかを調べるのでは無く、fdに関連づけられている先の物(?)を調べる。”
ということであってますか?
0732田部NGNG
age
0733デフォルトの名無しさんNGNG
>>693
(;´д`).。oO( 原人かよ! )
てか、なんのために関数プロトタイプを宣言するのか、小一時間(略)
0734デフォルトの名無しさんNGNG
>>706
デバグの方法を先に覚えてから
CでCGIしてくれ〜
ってか、なんつーか、
(;´д`).。oO( core 消せ )
0735デフォルトの名無しさんNGNG
カレントドライブ内のファイル名を表示
させたいんだけど、どうすればいい?
0736デフォルトの名無しさんNGNG
>>735

dir
ls
0737デフォルトの名無しさんNGNG
>>735
opendir
findfirst
あたりで検索してみれ。
0738名無しNGNG
明快C言語(入門)をマスターしたら
次は何をしたらいいでしょう?ステップアップするには??
0739デフォルトの名無しさんNGNG
>>738
K&Rを穴が開くほど嫁。
0740735NGNG
>>737
サンクス!
0741デフォルトの名無しさんNGNG
>>738
組め、悩む前にアプリを作れ。
出来たら公開しろ、ソース付きで公開しろ
そして叩かれて強くなれ
#俺はやだけど(w
0742デフォルトの名無しさんNGNG
まともなアプリじゃなきゃ、誰もソースなんて見ないけどな。
0743738NGNG
取りあえずK&R読みます。
まだ、アプリつくれないんで
他にこれやれってのあります?
0744デフォルトの名無しさんNGNG
つまり、ベースィックはC言語でつくられたのであり、
C言語は神様ですか?
0745デフォルトの名無しさんNGNG
MASMは最初、Pascalで書かれていました。
神様はPascalです。
0746デフォルトの名無しさんNGNG
C言語を勉強したきゃ人間コンパイラーを一度してみる
こったな。つまり、Cのコードをアセンブラーに手で
やってみろ。その逆も有効だね。
0747デフォルトの名無しさんNGNG
スレ違いだけど、アセンブラ勉強するときに
これ読んどけ!って本はなにかなあ。

それとも本なんて使わないものなのだろうか?
0748デフォルトの名無しさんNGNG
>>747
敢えて言うなら仕様書かと。
0749デフォルトの名無しさんNGNG
アセンブラ未経験なら 「はじめて読む486」。
多少慣れているなら、仕様書。
0750デフォルトの名無しさんNGNG
>>743
まだアプリが作れない?
アプリ作りながら学べやー。



とりあえずダンプ作れ。ダンプ、これ基本。
0751デフォルトの名無しさんNGNG
>>750
自動車工学は専門外なので無理です。
0752デフォルトの名無しさんNGNG
Cは神様です
そのCを作った>>1はもはや語るまでもありません。
そう俺のオナペット(略)
0753デフォルトの名無しさんNGNG
読み出し専用モードでオープンしたファイルを、"クローズせずに"書き込み専用にモードを変更することはできますか?
0754753NGNG
環境はLinux+gccです。
0755デフォルトの名無しさんNGNG
「はじめて読む486」
って、プロテクトモード系の話が中心やなかった?
セグメントディスクリプタとか、IDTとか、V86モードとか。
アセンブラ未経験にはあまりおすすめできないと
思うのだが如何。
0756デフォルトの名無しさんNGNG
freopen()
0757デフォルトの名無しさんNGNG
>753
なぜr+で開いておかないのか小一時間(略
0758753NGNG
>>756
それは内部でファイルをクローズしますよね?
0759デフォルトの名無しさんNGNG
>>757
あ!! r+があったんだ・・・・・
+ってw+とa+だけと勘違いしていました・・・・
ありがとうございます。
0760デフォルトの名無しさんNGNG
初めてよむ8086っていいよ。
俺でもわかったもん
0761名無しさん@EmacsNGNG
C言語1日目です。これからもよろしく。

#include <stdio.h>

int main()
{
puts("\x1b[0;1;33m信号が黄色で表示します");
red();
blue();
puts("\x1b[0m表示を既定の属性に戻しました");

return 0;
}


void red(void)
{
puts("\x1b[0;1;31m赤です");
}

void blue(void)
{
puts("\x1b[0;1;34m青に変わりました");
}

これをgccでコンパイルすると
example003.c:15: warning: type mismatch with previous implicit declaration
example003.c:6: warning: previous implicit declaration of `red'
example003.c:15: warning: `red' was previously implicitly declared to return `int'
example003.c:20: warning: type mismatch with previous implicit declaration
example003.c:7: warning: previous implicit declaration of `blue'
example003.c:20: warning: `blue' was previously implicitly declared to return `int'
と出るのですがどういけないのでしょうか。
書籍のを丸写しのはずいなんですが…。
0762デフォルトの名無しさんNGNG
C言語の中級者と上級者の違いはなんですか?
0763デフォルトの名無しさんNGNG
>>761
関数のプロトタイプがないから。
0764デフォルトの名無しさんNGNG
Cを極めてその限界にぶち当たって
他言語に鞍替えすることができたら上級者。
0765デフォルトの名無しさんNGNG
>>762
リストがなんたるか分かる。とリストが実装できる。の差。
もうちょっとメタに。
あるアルゴリズムの仕組みが理解できる。とあるアルゴリズムを使って自分の目的を達成できる。
0766デフォルトの名無しさんNGNG
>>761
mainは一番最後に。一応基本。
0767デフォルトの名無しさんNGNG
>>766
そうか?
0768デフォルトの名無しさんNGNG
>>762
上級者じゃねぇからわかんねぇよ。
俺はまだ初心者でいたいね。気が楽だし。
0769デフォルトの名無しさんNGNG
>>766
それは違うと思うが・・・
0770761NGNG
>>763,766
さんくす。
mainを最後に持ってきたら無事出来ました。

> mainは一番最後に。一応基本。
そうなんですが。書籍のサンプルには>>761にように
書いたあるのですがね。
0771761NGNG
う、>>767,769さん。
違うのですかね…。
0772デフォルトの名無しさんNGNG
>>770
プロトタイプもきちんと書いておけよ。
複数のファイルにわけることが多いんだから。
0773デフォルトの名無しさんNGNG
>>770
無事っつーか、mainの位置よりプロトタイプ書く方がはるかに常識なんで、ぜひ書いてくれ。
0774773NGNG
仕事的にな。
0775767NGNG
>>771
「一応基本」に対して「そうか?」とレスしただけ。
俺は一番上に書いているけどな。
Apacheなんかはかなり下の方だね。一番下じゃないけど。
0776デフォルトの名無しさんNGNG
たしかcだとプロトタイプのない関数は
int func();と解釈されるので、戻り値がvoidで再定義をした扱いになっているんだと思う
0777761NGNG
>>772
> プロトタイプもきちんと書いておけよ。
まだ、それは習ってませんね。
索引でプロトタイプを引いてみて調べてみます。
0778デフォルトの名無しさんNGNG
>>777
関数の宣言をコピペしてセミコロンをつけるだけ。
0779761NGNG
>>778
> 関数の宣言をコピペしてセミコロンをつけるだけ。

void blue(void);
void red(void);

これを付ければ出来ました。
本では何も触れられてないが、どうしてだろう…。
0780773NGNG
>>777
あと、関数への引数についても勉強しなけりゃいけないだろうが、
まぁ焦らず少しずつでもいいから確実に覚えていくが吉。
がんばれよ〜。
俺はもうソフトやめて畑耕すからよ〜。
0781デフォルトの名無しさんNGNG
>>779
関数のプロトタイプはANSIが標準化したものだからもっと昔に書かれた本とか?
・・・・・なわけないか。
0782デフォルトの名無しさんNGNG
.cに書くプロトタイプなんて牛乳に入れたクリープみたいなもんだ。
0783デフォルトの名無しさんNGNG
>>768
お前じゃねえよ
0784761NGNG
>>781
技評 はじめてのC言語 完全入門 2001/6
0785デフォルトの名無しさんNGNG
牛乳にクリープ入れると、コクがでておいしくなるよ。
0786デフォルトの名無しさんNGNG
>>782
ん?ヘッダーファイルを別途用意してそれにかけってこと?
小さなプログラムなら.cに書いてもいいんじゃネーノ?
0787773NGNG
>>782
まぁ極めて単純であるが故に、だな。
0788デフォルトの名無しさんNGNG
どっち派?

int hoge( void )
{
return hoge();
}

int hoge( void ){
return hoge();
}

漏れは後者
0789773NGNG
俺も後者。
0790デフォルトの名無しさんNGNG
>>788
後者。
自然に)の後で改行するね。ifやforの場合は改行しないけど。
0791790NGNG
間違った。前者。
0792デフォルトの名無しさんNGNG
>>788
それは一列という意?
だったら
int hoge(void)
{ return hoge(); }
0793デフォルトの名無しさんNGNG
漏れは前者。

ところで、
int main() or void main()
じゃなくて、ただ
main()
じゃだめ?
0794デフォルトの名無しさんNGNG
ごめん。あげちゃった。
0795デフォルトの名無しさんNGNG
俺mallocしてfreeしない派
0796デフォルトの名無しさんNGNG
>>793
戻り値がint型でも明示的に書いた方がよくないか?
0797デフォルトの名無しさんNGNG
俺fopenしてfcloseしない派
0798デフォルトの名無しさんNGNG
俺void main(void)派
0799デフォルトの名無しさんNGNG
俺関数でchar *p;してreturn p;する派
0800デフォルトの名無しさんNGNG
俺、pthread_mutexattr_initしてpthread_mutexattr_destroyしない派
0801デフォルトの名無しさんNGNG
俺CでOO派
0802デフォルトの名無しさんNGNG
俺は>>790氏と同じ。
if,for,whileとか構造体定義は改行無しで関数は改行あり
0803デフォルトの名無しさんNGNG
俺Cはyacc/lexでしか書かない派
0804デフォルトの名無しさんNGNG
俺mainの中全部インラインアセンブラ派。
0805デフォルトの名無しさんNGNG
if (hoge)
  {
    hoge;
    fuga;
  }

派
0806デフォルトの名無しさんNGNG
if(ahya){
ahyahya();
}
else{
giko();
}

派。

} elseの方がよいらしいけど。
0807デフォルトの名無しさんNGNG
>>796
やっぱりそうなのかな?
ってか、変なことになる前にそうするべきですね。

ちなみに、基本的に
if (hoge)
{
hoge;
fuga;
}
派だけど、1つだけなら
if (hoge)
fuga;
派
0808773NGNG
Cら樺派、なんつってな。







スマソ、もう寝るわ。
0809デフォルトの名無しさんNGNG
>>807
俺も。
ifとelseをいっぱい書くときは改行すらしない。
0810デフォルトの名無しさんNGNG
俺
if(foo);
 bar;
派
0811デフォルトの名無しさんNGNG
elseをつけると

if (hoge)
  {
    hoge;
    fuga;
  }
else
  {
    foo;
    bar;
  }

派

結構見やすいな。
0812デフォルトの名無しさんNGNG
    if (x == 0) {
} else if (x == 1) {
} else if (x == 2) {
} else {
}

こういう書き方・・・しない?
0813デフォルトの名無しさんNGNG
ついでに。単文の場合は改行しない。

if (hoge) hoge;
else fuga;
0814デフォルトの名無しさんNGNG
>>812
よくするみたいだけど俺は嫌い(わがまま)
0815デフォルトの名無しさんNGNG
>>812
激しくしない。合わせても結局後で桁を変えないと
いけなくなる罠。しかも変えるのを忘れる罠。
0816814NGNG
あ、} elseという書き方をよくするという意味ね。
0817デフォルトの名無しさんNGNG
漏れはしない。
>>811に一票。
0818812NGNG
>>814
   if (x == 0) {
}
else if (x == 1) {
}
else {
}

これでもいい。else ifと先頭のifをそろえるかって事
0819Ritchie先生風にNGNG
if(exp) {
 
} else if(exp) {
 
} else {
 
}

switch(exp){
case const-exp:
case const-exp:
default:
}
0820デフォルトの名無しさんNGNG
>>788
漏れ、できるだけ行数けちる派。
つまり後者。
しかたなく単独で { 書くケースは、
int hoge() {
 au();
 {
  int tmp;
 }
}
の3行めみたいなとき。
0821デフォルトの名無しさんNGNG
'モナー ギコ'
という文からA=モナー、B=ギコってかんじにスペースで区切った文字列を読み込みたいんですけど、
この場合fgetsするのかfgetcするのかはたまたsscanfするのか。
どれがいいんでしょう?
一長一短なかんじがして、なんか混乱しますた。
0822デフォルトの名無しさんNGNG
>>821
strtok()
0823デフォルトの名無しさんNGNG
>>822
strという文字配列に入れるとしたら
strtok(str, ' ');
ということ?
0824デフォルトの名無しさんNGNG
fgets(buf, sizeof(buf), fp);
pMonar = strtok(buf, ' ');
pGiko = strtok(NULL, ' ');
0825デフォルトの名無しさんNGNG
>>821
fetgs()
sscanf()
0826デフォルトの名無しさんNGNG
K&Rの95ページの関数getopで、
ungetchを呼び出すとき何故EOFだけ除く必要があるのか教えてください。
0827デフォルトの名無しさんNGNG
  ∬∬∬∬    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ∬ ´Д `∬  < 改革に反対するなら、わたしの方から自民党を打ち壊す!
  ( つ[賞]つ    \__________
  | | |
  (__)_)
0828デフォルトの名無しさんNGNG
ungetchでEOFをもどすことはできない。
0829デフォルトの名無しさんNGNG
つーか、なんでEOFだけ除いているのか?を自分で考えられないようであれば
K&Rを呼んでいる意味はない。
0830デフォルトの名無しさんNGNG
以前、MySQLについて質問したDiscaです。
C言語(Win環境)でMySqlを動かしたいのですが、
具体的なサイトを教えていただけないでしょうか…。
お願いいたします。
0831デフォルトの名無しさんNGNG
>>830
http://www.mysqlfromc.net/
0832デフォルトの名無しさんNGNG
>>830
ちゃんとぐぐるった?
http://www.google.com/search?hl=ja&q=mysql+c%8C%BE%8C%EA&lr=lang_ja
0833デフォルトの名無しさんNGNG
ファイルの内容をすべて消す方法はwやw+で開く以外にありますか?
0834デフォルトの名無しさんNGNG
unlink
0835デフォルトの名無しさんNGNG
>>834
man 2 unlinkで調べてみました。
これをオープンしている間に使えばよいのですね。
ありがとうございました。
0836835NGNG
ということはwやw+で開いた時はopen()した後に自動的にunlink()を使っているのかな。
0837デフォルトの名無しさんNGNG
>open()した後に自動的にunlink()を使っているのかな。
open後のunlinkと、wでfopenするのは同じではない。
0838デフォルトの名無しさんNGNG
ExcelやWordのようなソフト(アイコンをダブルクリックで起動して、
上書き保存ボタンとか終了ボタンとかあるやつ)はCだけで作れるものでしょうか?
今、LSI-C試食版で勉強中ですが文字ばかりなのでこの先不安です。
そういうソフトはVC.NETのC++で作らないとダメですか?
0839デフォルトの名無しさんNGNG
Cだけじゃ無理だけど、OSのシステムコールとか使えばできる
0840デフォルトの名無しさんNGNG
>>838
可能です。
0841デフォルトの名無しさんNGNG
関係ないけどおまえら元気か?
0842名無しさん@お腹いっぱい。NGNG
>>841
なんとかw
0843デフォルトの名無しさんNGNG
>>841
最近すぐ元気がなくなる上になかなか立ち直らない
0844デフォルトの名無しさんNGNG
>>841は自殺する気
0845デフォルトの名無しさんNGNG
>>843
早めの5月病ってところじゃないか?
0846Disca ◆NAfP6znE NGNG
>>831 見れないです(日本語しかよめないです、スマソ)
>>832 グーグりました。
なかなか、C言語でのMySQLのAPIライブラリ解説が無くて…。
良いサイトがあればお願いします。
0847デフォルトの名無しさんNGNG
>>846
日本でMySQLといえばhttp://www.mysql.gr.jp/。
マニュアルの翻訳も載ってます。API解説は
http://www.mysql.gr.jp/jpdoc/3.23.x/manual.ja_Clients.html#C
のあたり。

っていうかスレ違いの気が…
0848847NGNG
スレ違いついでにもうひとつ、Soft Agencyのサイトも。
http://www.softagency.co.jp/mysql/index.html
0849デフォルトの名無しさんNGNG
>>839氏と>>840氏ではどちらが正しいのだろう・・・
0850デフォルトの名無しさんNGNG
>>838
Cを使えばなんだってつくれるぞ!
UNIX(ワークステーション)っていうOSはC言語で作ったんだから。
Cコンパイルしてできるアセンブラの知識が有れば、
なんだって作れると思われ
0851デフォルトの名無しさんNGNG
>>849
Windowsプログラミングのバイブルといわれていた
「プログラミングWindows」はいまだにCでかかれている。
0852デフォルトの名無しさんNGNG
>>849
両方正しい。よく読んでケロ
0853おしえて〜NGNG
整数の引数のビットを文字列として表示するってどうやればいーの?
たとえばbit(60);ってやったら
11-1100
みたいに4文字ごとに区切り文字を入れろって言われたんだけど・・・
0854デフォルトの名無しさんNGNG
>>853
宿題はえれなちゃんに聞けや。
http://pc.2ch.net/test/read.cgi/tech/1011722640/l50
0855853NGNG
はーい、逝って来ます
0856デフォルトの名無しさんNGNG
unsigned な変数とsignedな変数を相互に変換して元の値が保証される?
unsigned char a = 0xff;
signed char b = a;
a = b;
printf("%d\n",a);
とかやったら255になることは保証される?
0857デフォルトの名無しさんNGNG
あのーC言語を勉強するために家のPCにもソフトいれたいのですが
なにがありますか?
0858デフォルトの名無しさんNGNG
>>856
自分で試せ

unsigned char a = 0xFF;
signed char b = a;

if( b != 255 )
printf( "(゚Д゚)ハァ?\n" );
if( (unsigned char)b != 255 )
printf( " (゚Д゚)ハァ?(゚Д゚)ハァ?\n" );
0859デフォルトの名無しさんNGNG
>>856
fj.comp.lang.cで片山@PFUさんに聞いてくださいです。
0860デフォルトの名無しさんNGNG
>>857
検索かければよかろう。
0861デフォルトの名無しさんNGNG
microsoft visualC++
これでイイの?
0862デフォルトの名無しさんNGNG
>>857
Borland のC++コンパイラを使いな。無料。
Cmagazineに付いてるよ。
0863デフォルトの名無しさんNGNG
C マガ買わなくてもここから落とせばいいような。
http://www.borland.co.jp/cppbuilder/freecompiler/
0864857ですNGNG
>>862-863

ありがとうございました
0865デフォルトの名無しさんNGNG
僕のPCにはコンパイラが標準で付いていました。
0866Disca ◆NAfP6znE NGNG
>>846
>>847
ありがとうございます。
そこ、グーグリました。が…きちんと最後ま探していなかったです。
私はまだまだ検索暖炉と言う事が判明しました。終わり
08677NGNG
Borland のC++コンパイラ
08687NGNG
Borland のC++コンパイラをPCに いれたんですけど
メモ帳でプログラム書いて読み込もうとするんですけど
ファイルが見つかりませんってでますどうして?

0869デフォルトの名無しさんNGNG
ネタですか?
ソフトの使い方ならソフトウェア板に行ってください
08707NGNG
>>869
すいませんでした。もう2度ときません。
あとあまり調子乗らないほうがいいとおもいますよ
0871デフォルトの名無しさんNGNG
>あとあまり調子乗らないほうがいいとおもいますよ
あまり調子乗らないほうがいいとおもいますよ
0872デフォルトの名無しさんNGNG
>>7
環境変数のPATHを設定しましたか?
0873デフォルトの名無しさんNGNG
>>870はバグってますか?
0874デフォルトの名無しさんNGNG
>>873
仕様です。
0875デフォルトの名無しさんNGNG
ちょっと拝見したが、
やはり、Linuxはむずいな!
まったく理解できん......
>>1は分かるの???
0876デフォルトの名無しさんNGNG
Linuxの何を理解しようと…
0877デフォルトの名無しさんNGNG
>>876
カーネル
0878デフォルトの名無しさんNGNG
>>877
サンダース
0879デフォルトの名無しさんNGNG
寒の戻りか?
0880デフォルトの名無しさんNGNG
今夜は冷え込むねぇ…
0881デフォルトの名無しさんNGNG
ところで、
ファイルポインタをブロック単位(構造体など)で
移動できる関数とかってある?
0882デフォルトの名無しさんNGNG
>>875
>>1を誰だと思ってるんだよ。
0883デフォルトの名無しさんNGNG
>>881
sizeof(構造体)*ブロック数 じゃ、だめなの?
0884881NGNG
例えば、int no,char nameの構造体があって、
キーボードひとつ入力するごとにfwrite関数でファイルに出力して
もし同じ番号なら上書きするって感じなんだけど。
fseekとsizeofでいけるかな?試してみます。
0885デフォルトの名無しさんNGNG
C言語は今現在、どのように利用されているのでしょう?
Cだけでソフトを開発するような場面はありますか?
また、Cと他の言語の連携ではどのような組み合わせが一般的なのでしょうか?
0886デフォルトの名無しさんNGNG
PerlからはCとJavaを使えるらしいが
Cからはわからん。
0887デフォルトの名無しさんNGNG
>>885
組み込みソフト開発。その他コンピュータの高水準言語のスタンダード。
DLLの様な仕組みがなければ連携は大変すぎてアフォらしい。

ガタガタ言わずにC覚えろ。知らないとプログラマとは名乗れないぞ・・・。
0888デフォルトの名無しさんNGNG
JNIを使えば、CからJavaを起動できる。
Javaアプリの起動プログラムをCで書くことはある。
0889888NGNG
⊂(`Д´⊂ )⊃==888げっとー
0890デフォルトの名無しさんNGNG
>>885
仕事でCでCGIを組んだよ。CGIライブラリから書いたな。
でもこれは特殊な例かもな。漏れが上司にわがまま言った
だけだから。
0891デフォルトの名無しさんNGNG
>>889
バカハケーン
889なのにカコワル
0892デフォルトの名無しさんNGNG
>>890
なんで特殊な例なの?

ちなみにCでCGIってどうだった?
掲示板が作れればどれも簡単でしょ?
0893デフォルトの名無しさんNGNG
>>890
漏れも、5年くらい前にCでCGI書いたときは、ライブラリ書いたよ。
CGIのインターフェイスの解説書しか手元になかったから。
今なら、特殊っていうか、わざわざそんなんしなくても、って感じだね。

(本当はどういうふうに言うのが良いんだろう、CGIプログラム?)
0894デフォルトの名無しさんNGNG
>掲示板が作れればどれも簡単でしょ?

?
0895デフォルトの名無しさんNGNG
>>894
892は掲示板が一番作るのに苦労すると思っているんだからそっとしといたげて
0896デフォルトの名無しさんNGNG
あ、あんたら解かってない。
掲示板にCGIの全ての技術が詰まってるんよ?
マジデマジデ

あとは肉付けだけ。
0897デフォルトの名無しさんNGNG
896が正解
0898デフォルトの名無しさんNGNG
896は掲示板厨房
0899デフォルトの名無しさんNGNG
そうは思わない。
0900900NGNG
900は俺。
0901デフォルトの名無しさんNGNG
>掲示板にCGIの全ての技術が詰まってるんよ?

ア,CGIのことね。
了解
0902デフォルトの名無しさんNGNG
>>896
最近の掲示板はRDBMSまで使うんか。おおがかりだねぇ。
0903902NGNG
>>901
いや、漏れも最初そう思ったけど、なら>>890>>893の言うように、
ライブラリ書いて終わりだよね。
0904デフォルトの名無しさんNGNG
まぁCGIが理解出来てりゃ後は他のアプリと同じだしな。
0905デフォルトの名無しさんNGNG
902がカコワルイではないか
0906902NGNG
シクシク
0907901NGNG
だって俺CGIのことなんも知らないもん
0908デフォルトの名無しさんNGNG
CGI:C langage Gloval Integer
要するにC言語のint型のグローバル変数のことです。
代表的なものとしてerrnoなどがあります。

Common Gateway Interfaceの略語という説もある。

0909デフォルトの名無しさんNGNG
先生!Cで他のプログラム(.exe)を呼び出すにはどうすればいいんですか!!
0910デフォルトの名無しさんNGNG
system
CreateProcess
CoCreateInstance
ShellExec
ShellExecEx
0911デフォルトの名無しさんNGNG
popen
open2
0912デフォルトの名無しさんNGNG
_topenと_ftopen、どっち使おうかいつも悩む。
バイナリ読み書きしかしないときはやっぱ_topenのほうがいいの?
_ftopenはバファリンでパフォーマンスが向上するってのがちょと気になる。
それぞれの特徴を教えてちょ。
0913デフォルトの名無しさんNGNG
頭痛に効きます。
0914912NGNG
う〜〜ん検索しても見つからないなぁ。
せめてソースが見れればいいんだけどなぁ。
0915rainNGNG
先生っ!!馬鹿にされるかも知れませんがC言語ではDOSプログラムしか作れないって本当ですか?
0916デフォルトの名無しさんNGNG
大嘘です。
0917デフォルトの名無しさんNGNG
うそです。
0918rainNGNG
じゃあちゃんとしたIEみたいなのも(?)作れるって事ですかっ!?
0919デフォルトの名無しさんNGNG
まともな開発で使われていたのはDOS時代までという意味ではホント
0920デフォルトの名無しさんNGNG
作れる人なら作れます。


大嘘です。
0921デフォルトの名無しさんNGNG
>>919
PCでしょぼい仕事しかしたことないやつ。
0922デフォルトの名無しさんNGNG
Cは神です。何でも作れます。
0923rainNGNG
う〜ん・・・BCCでも作れるんですか・・?
0924デフォルトの名無しさんNGNG
>>923
作れる人なら作れます。
0925デフォルトの名無しさんNGNG
先生! IE って「ちゃんとした」アプリなんですか???
0926デフォルトの名無しさんNGNG
hello, worldの次くらいにちゃんとしてます
0927912NGNG
くだらないネタのせいで俺の質問が流れていく・・・
0928デフォルトの名無しさんNGNG
八つ当たりします


氏ね>>924
0929デフォルトの名無しさんNGNG
つーか今からC覚えてどうすんの?
趣味でやるにしてもちょっと凝ったことしようと思ったら
むちゃくちゃプログラム長くなるし、
仕事にしても先細りになることが保証されてるし。
もうちょっと時代の流れを読めよ。
0930デフォルトの名無しさんNGNG
これだからドキュソは・・・。
もう二度とこのスレに来なくていいから>929
0931デフォルトの名無しさんNGNG
>>929はCがわからなかったのでやつあたりしちゃってます。
0932デフォルトの名無しさんNGNG
>>929
じゃあ何がいいんですか?
0933rainNGNG
>>929
それでもいいから来てるんですよ!!
0934デフォルトの名無しさんNGNG
ここは低学歴低賃金の落ちこぼれの集うスレですか?
0935デフォルトの名無しさんNGNG
教えてください
K&Rの演習ができれば取りあえず初心者から抜け出したということになりますか?
最近頑張っているんだけどこの先に不安があるもので・・・
0936デフォルトの名無しさんNGNG
>>934=929
奴辺りですか?(プ
0937デフォルトの名無しさんNGNG
>>935
2chで「あなたはもう初心者ではありません」って言われたら安心するの?不
安でもひたすらプログラム書いた方がいいんじゃないですか?それが楽しくな
いならやめればいいし。
0938rainNGNG
Cを使った代表的なwinアプリってなんですかね?
0939デフォルトの名無しさんNGNG
ピュアCで書かれた代表的なウィンドウズアプリなんてあんのか?
0940デフォルトの名無しさんNGNG
>>938
windows95
0941デフォルトの名無しさんNGNG
wordpadもcだな。
たしか、VSにサンプルついてた
0942デフォルトの名無しさんNGNG
>>929は真っ先にHSPを覚えてしまい、Cに移行できなくなったドキュソです。
0943rainNGNG
>>941
それ聞いて安心しました。どうもありがとうございます。
0944デフォルトの名無しさんNGNG
>>941
ワードパッドはリッチエディット使ってると思うが、アレの内部もCなのか?
0945デフォルトの名無しさんNGNG
>>912
_ftopen と _topen なるものを知らないので何とも言えんが、
名前から察するに高水準/低水準の入出力か?
たぶん _ftopen は中で _topen を呼んでるだろうから、
本気で書くなら _topen の方が多少は速くなるかもしれない。
が、数バイトずつ読んでくみたいな使い方をするなら、どうせ
自前でバッファリングしないことにゃ使い物になんないから、
結局 _ftopen と同じことをやることになるんで、最初からあるものを
使った方がいいのでは。
0946デフォルトの名無しさんNGNG
#include <windows.h>
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
char szWinName[] = "MyWin";
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)
{
    HWND hwnd;
    MSG msg;
    WNDCLASSEX wcl;
    wcl.cbSize = sizeof(WNDCLASSEX);
    wcl.hInstance = hThisInst;
    wcl.lpszClassName = szWinName;
    wcl.lpfnWndProc = WindowFunc;
    wcl.style = 0;
    wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcl.hIconSm = NULL;
    wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcl.lpszMenuName = NULL;
    wcl.cbClsExtra = 0;
    wcl.cbWndExtra = 0;
    wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    
    if(!RegisterClassEx(&wcl)) return 0;
    hwnd = CreateWindow(
            szWinName,
            "Windows 2000 Skelton",
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            NULL,
            NULL,
            hThisInst,
            NULL
            );
    
    ShowWindow(hwnd, nWinMode);
    UpdateWindow(hwnd);
    while(GetMessage(&msg, NULL, 0, 0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message){
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}
これをコンパイル( bcc32 -tW hoge.c ) して実行してみれ。 >> 923
0947デフォルトの名無しさんNGNG
#include <windows.h>
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
WinExec( "explorer", SW_SHOW );
return 0;
}

むしろこれだけでエクスプローラの出来上がりだ、IEも近いぞ。
0948デフォルトの名無しさんNGNG
>>946
なんかWinアプリ作ったこと無いようなソースだな
0949デフォルトの名無しさんNGNG
>>939
秀丸は?って最近は知らんけど。
0950デフォルトの名無しさんNGNG
>>948
どう見てもWinAppのスケルトンですが?
MFCしか使ったこと無い様な発言だな。
0951デフォルトの名無しさんNGNG
>>950
1 RegisterClassでエラー判定しているのに、CreateWindowで判定してない。
2 ウインドウの背景色をGetStockObjectで拾ってきている
3 文字列をASCII前提で書いている
4 文字列定数(クラス名)の定義がconstポインタではない
0952912NGNG
>>945
サンクス!
_topen=>_open,_tfopen->fopenだと思ってくだされ。
やっぱりちまちま読むときはバッファリングが必要ですか。
じゃぁfopenに統一しよう。今後悩まないように。
0953デフォルトの名無しさんNGNG
>>952
そう言う棲み分けじゃないと思うが・・・。
移植性の問題だと・・・。
0954912NGNG
移植性?
fopenと_openで移植性が違うんすか?
0955デフォルトの名無しさんNGNG
あーあこりゃ致命的だな(w
0956912NGNG
>>955
それ漏れ?
マジで、そんな話聞いたこと無いよ。
どっちもANSI互換でしょ?
0957デフォルトの名無しさんNGNG
>>956君じゃないその前の人
0958946NGNG
>>951
まあ、苦情は Herbert Schildt 先生に言ってくれ。
0959デフォルトの名無しさんNGNG
>>957
ほっとしたよ(;´−`)
0960デフォルトの名無しさんNGNG
>939
WWWCがC+SDKだったような。
0961日下部圭子NGNG
http://pc.2ch.net/test/read.cgi/tech/1018453690/l50

新スレ作りました。
スレを使い切るとすぐ倉庫行きになって、見れなくなるので、
使い切る前に早めに移行をおねがいします。
0962endNGNG

0963endNGNG
ゆっくりと・・・


ゆっくりと・・・


だが確実に・・・


沈んでゆく・・・



もう誰にも・・・


止める事は・・・


できない?

0964デフォルトの名無しさんNGNG
test
0965endNGNG
>>964
止めてないw
0966デフォルトの名無しさんNGNG
浮かべーーーーーーーー!!
0967デフォルトの名無しさんNGNG
浮かんだーーーーーーーーー!!
0968デフォルトの名無しさんNGNG
いぇーーーーーーーーーい!!
0969デフォルトの名無しさんNGNG
さげよーーーーーーー!!
0970デフォルトの名無しさんNGNG
もうどうでもいいからさっさと1kまで埋めてくれ
0971デフォルトの名無しさんNGNG
0972デフォルトの名無しさんNGNG

0973デフォルトの名無しさんNGNG
0974デフォルトの名無しさんNGNG
0975デフォルトの名無しさんNGNG
どうせだから何かネタを残すべし。
0976デフォルトの名無しさんNGNG
      |\-/|
    / ̄ ̄ ̄\
    / __・△・__ 丶
   ノ イノノハ) ))ハ |   / ̄ ̄ ̄ ̄ ̄ ̄
   | 川 ● ● 川| <  電気を…
   ∪'丶 ー ノ ''∪   \______
     | ̄ ̄ ̄|
     / ̄ ̄厂ハ
     / )  ○ ( \
   ○ノ     丶○
    (⌒⌒⌒⌒⌒)
     ⌒|⌒|⌒|⌒
        |vv|vv|
     /__|__\
0977デフォルトの名無しさんNGNG
      ノ ' '⌒ \r⌒'、
  ∩  ( ハ( )) \ 、 )    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( )  )(・ (・ _) w'  <  大切にねっ!
  | |  (  ▽  ノノ      \_________
0978デフォルトの名無しさんNGNG
             _
           〃  V/⌒、
         nl/λ   |||  ||
       /⌒つ = 人_ノ、
      /  <Z) ニニ、ヽ___ ヽ
      /  ,  ,) ( ・ノ /⌒l/と二`ヽ,
     /    ̄).,へ、 っ´⌒〈)Y二  〉
   /(ノ  ノ~( /^^'ー=ニイ ) |/_ュ  〉
   / .\/_) ヽヾ___/ノ ヒ'  /
   |    /   `ー――‐'´  ) (、
  .|    /    γ・v・ 、   ,/ |/ ヽ
  |    | /|  (  ,l、 ,)_ λ'(_ノ  \
  |    |/ | (´____,~ )| ヽ\   \
AAは小さめに
0979デフォルトの名無しさんNGNG
  ⌒ ⌒ヽ. 
 ′.从 从 ゝ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ノ从 ゚ -゚从_ < 1000はもらったわね。
  ./ |又|ヘ_   \_________
  .L |_| _/つ ))
  .U ||||| |
  .L_LL|_|
   (__)__)
0980デフォルトの名無しさんNGNG
ラスト20
0981デフォルトの名無しさんNGNG
  ∧ ∧
  (,,・∀・) 
〜(_uu

0982デフォルトの名無しさんNGNG

  / l l | | | | | l ヽ  / ̄ ̄ ̄
  | | ノ   ヘ | |< きたな
  ヽヽ ̄ _  ̄ノ/  \
    / _ ヽ        ̄ ̄ ̄
    | |_| |
    | | | |
   /ゝ__χ__ノヽ
  /   ||ヽ
 /____山_|__ヽ
    | | | |
   ゝ__χ__ノ


0983デフォルトの名無しさんNGNG

     ,  ´ ̄`´ ̄ ̄ ― 、
    /              ヽ
  /      / / || ヽ        ヽ
  !    /  /// | |ヽ\\      !
 |   / // // | ||ヽ\\      i
 l .,-、| 二二    二二_\ ,-、  |   / ̄ ̄ ̄ ̄ ̄
 ! | 6| ´ ( 、)ヽ  ´ ( 、)` |6 |  | < 月島雫です。
  |ヽ_|  "   ,,    ""   |_ノ  |   \_____
  !  \   、__,     ノ  ,,!!
   ゙! !.i i`,、 _   ___ /i.i l !!"
      _ |   ̄  | _
     ̄ \´     `/  ̄
0984デフォルトの名無しさんNGNG
      ______
    /          )))
   /   /// /―――-ミ
   / 彡彡 // /      ヽ))
   / 彡彡 iiiiiiiiiiiiiii  iiiiiiiiii|     
   / 彡彡 < ・ > 、<・ >l
  /    |       ヽ   〉   
  /  ( | |      __)  |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  /   | ≡  /, ―――  |ゝ < 1000は士郎にはやらん
  /   |   |  L ___」 l ヾ  \_________
_ミ  l   ______ノ ゞ_
  |  l ヾ    ー   / |  l
  |  |   \ー    ‐/  |  |
0985デフォルトの名無しさんNGNG
      ____,,,,,,,,,,,,,,,,、、、
    /            )))
   /    ______,,,ノ
   /    l /    \\ヽ|)
   |    | ''''''''''    ''''''''|     
   |    | (  ・ )   ( ・ )l
   |     l        l  |  
   |  ( ~         _)  |
    |   |      ,―――. l   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    l .|ヽ    ー――' /  < あの男にだけは1000はやれない。
    ヾ |  \____ノ    \_________
  __/ヽ\      | l\_  
 ̄     λ ヽ     / .|    ̄
0986デフォルトの名無しさんNGNG
      ,; ⌒  ⌒  ⌒ ヽ 
     (     _____ )
    (   /        ヽ
   (   l   ⌒     ⌒ヽ
   (   ヽ , ―― 、  , ―‐‐、  
    (   〉=| ( ・ ) |⌒| ( ・ ) |
    (  |  ー―‐'  ヽ ―‐'
     ヾ(6 ヽ    (  :::::) 、)   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       l     _____) < くぉら 山岡!
        l   ( ___ヾ'    \_________
       | ヽ _____ノ
   __/ヽ\      | l\_
  ̄   \ λヽ     / .|     ̄

0987デフォルトの名無しさんNGNG
     _______
    /          \
    |    υ       |  
    /  ___   __  |           
   ( | 6--|<・>| =|<・>l -|
    |      ̄  〉  ̄ ̄ |
    |   υ ___   |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |  //‖ ‖    |  <やっぱ山岡はすごいや 
    |   | L ___」  l    \________
    \  ______ノ
     /ヽ       /\  

0988デフォルトの名無しさんNGNG
   ,,.-ヘ-へ-ヘ-'^ー^-ヘ-、ハ-へ-、,,,
 S^;;;:::;;;::;;::;;:;;;:;i'''ヽ;;;/''''i;;::;;:;:;::;;:::;:;;;:;乙
 ろ;;;;;;;;;;;;;;;;;;;;;;;l,,_ _,,l;;;;;;;;;;;;;;;;;;;;乙 / ̄ ̄ ̄ ̄ ̄ ̄
   `b^b^b^b<二>H<二>b^b^b^b′ | 1000ほしいの?
.         ヽ._,ニ、_ /       < えらいねェ〜
        ,r┼---‐|―i_,,,,      \______
   __,,r〜llll/ヘ|___ノ∧| ||| ̄^>、
  〃 ヽモl,|||  |    |__||| /';  l
   〉‐' └、lll_|__,..-‐''";;;;\_,〉 ヽ〈
  l ;  ,.-''"   ~`ヽ;;;;.:=‐''"‐-、  .l
0989デフォルトの名無しさんNGNG
  ┃┃┃┃
  ┃ ┃   /ヨ⌒彡
 ┃  ┃ r/ヲ 冫、 )
      /\ヽ_`__0′ ━   ┃
     ノ;;;:::::::::/       ┃   ∧∧∧∧∧∧∧∧∧∧
    /;;;;;;::|::::/|    ━━┛  < おれは          >
.   〈;;;::::::|:::〈 l    ィ'^'^'"'''z  < コテハンをやめるぞ! >
    ヽ|:::|::::::ヽ.  乂(^ミ、了   < ジョジョー―――ッ! >
    |、|::::::::: ̄`m|ヰ戸 6)    V V V V V V V V V V V
   | 、lヽ:::::::::::lヨ |Eヲ/|ヨ
0990デフォルトの名無しさんNGNG

   ミ髪巛巛川髪髪髪彡
   ミ髪髪髪巛川髪髪髪彡
   髪   /////   髪髪ミ
   髪   ///    髪髪
   | _ヽ /∠__  髪
   |《 ΘΨ 《 Θノ   髪
   |ミミ | | )   = ≡|∂)
   |ミ  Ц/     ≡|ソ   / ̄ ̄ ̄ ̄ ̄
   |ミ       ┓  ≡|  <  グッド>>989!!
   |ミ†三三彡┃ ≡/|    \_____
   |  ¬       / |┐
   |   」     / ノ├ー─ヽ
 /√ヽ──−´ / ノ \
 \> ▼ < ̄/ ┌─┐
    ▲   ┌─-|_ []|
    ■   │  人   |
    ■   │┌──┐|
        └ |__ |
         (     |
         ├── |
          |__ノ

0991デフォルトの名無しさんNGNG
) おのれ
) 1000取り合戦とは面白そうな
) 斬鉄剣の錆にしてくれる!!
)
⌒⌒⌒⌒⌒|/⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒
         , ‐‐‐  、
       /      \
     /         \__,,::::‐―‐::;,__
    _ノ                    ト、
  /                       \
  l     、―‐>‐‐、             \
  \   ir=`''‐,イ>  \トヽ           \
   \_ \fi>i ー   | レ'           \
       | !. ノ  _  ノイヽ.       ┌‐:、ヽ
      ! !、ヽ .//>  | ヽ_____>‐´\|
      ヽ \ ヽ<  /  \_` ‐:.、   \. \
   / ̄ ̄`ヽ、\___/_‐:___ \_`:.‐:..、  \. \
  ./      ̄ ̄ ̄    .\ `‐:..  \ \  \. \_
  |     / ̄,,>―――::、__`‐ト__\ \  >、 >‐`>、
  ヽ    /  「           ``ー――――´ X´_//>、
   \  `   |                      _,L///
    |     \____.,::::::::―――――――‐、  ^L|ヽ, \
    ヽ、    !、      !、   ヽ    \|   |  \__/\/\
     |\    \      !     !、    `i.  !、   \  \ \


0992デフォルトの名無しさんNGNG
                         ∧_∧ /
                        ( ´∀`/)
                        (  /  )
                        |/ | |
                        /(__)_)
0993デフォルトの名無しさんNGNG
         ‐.、‐'´`
      ,i´         ヽ
.     /             \
.   |              \
.    |                 .|
    |  / /  /  / / |  ヽ..|
.  ./  / / .. / / / / |   |.
  | / /  / / /    |    |
   V | ````' ‐   -‐'''''''| |⌒|
    || ,.___   ___,.  | |  )
    ヽ|    |  .    || ノ|
     |   |  `‐-.  |  |
     |   ヽ          |
     ..|   _____  '    |
     /|     __    /   |
     |/|ヽ        /   |/
      / |\ .    /|   /
      | .|  ヽ.  / |
       |   ''"  / ̄ ̄
         Λ   /   
┌────  ────
│またつまらぬ
│ モナーを斬ってしまった
└──────────


0994デフォルトの名無しさんNGNG
             ,. へ、___
            r'        \
            |         ,>
            /‐、__    i´
    ___,――´エ_、    ̄`ー l
    ー―、__、   ー‐、____iニヽ、
     /     ̄`ー、_        ,`>
    i'´        r‐ゝヽ、ー―フ<´´       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  , ―‐´ ̄` ‐、    | iニ!、ヽ‐―´   ,>       | おい、五右衛門
/  / 、   ヽ.   ヽ,、_ヽ.ヽ     (,、    . < 1000は俺のもんだ
  /   \   ト‐;/イ    \\   / ,i、__/レ,i.  \_______________
 ∧     \ |   ヽ. , へ.ヽ ヽ、__、 /   ーノ 
  ヽ.     、ヽ| i  `v、   ̄ヽ、      <ノ          r__、_      ,‐ァ
   ヽ.    Y b/ /ヽ/      ヽト、_、k―´       ,、 ,_,.―'/ニニニl‐¬' ̄ ̄ ̄ ̄ ̄)
    i     i l./  iく                    >;´,,‐――‐、ニハ rf―‐―――´
         | i´`i―〈 ト、          ,‐、_  ,,,‐'''´´  ニニi、‐ ) r‐´
         |/ / ./| ヽ. ̄`ー、__,;;:――´´ `ヽ `<´ ``` `   ニニ`Y´
             _」,, ヽ‐'''''´      ,,ノ|   `i |   `` ``,、_ `ヽ
                      __,,,/  ト‐‐'´L/ヽー―r'''' ̄  `;L/
                    ‐'''´  _,,, ‐―'´     .L___,,,ノ


0995デフォルトの名無しさんNGNG

             _______
            /           \
          /              \
         /                 \
         /                   \
         l         / ̄ヽ        |
         l  /\   /     ヽ       |
         | /   \/        ヽ     |
         |/ ━━    ━━━━━   _  |
         |   / ̄\    ( ̄/\  ヽ / \|
         il  |  / il    ヽ l  )  V    ヽ
         (ヽ  ヽ_ヽ/ /      ̄ミ ミ   | |/ヽ |
          |     /           ||ヽ//
          |    ヽ           ||ヽ/  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          |    ______,  ///  .| んーなこと言うなよ
           |   ´、|  |  | /  ミ |   < 次元
           i    \.  |  レ     ミ    | マターリいこうぜ
            l     ヽ┴/     /|     \________
            \    ━     /  |_
              ヽ       _/  ,/|
               ヽ__ /__/  |、
              ///    \.     |
             / / |    / \.   /
             ̄ ̄ /⌒ヽ/   丶/
               /  ヽ


0996デフォルトの名無しさんNGNG
              _ー‐' ̄' ̄ ̄ ̄ヽ_
            /                \
          /                   \
         /                     \
        /                        ヽ
       /                          ヽ
      /                            |
      /               |              ヽ
     /         \  ヽ  ヽ  ヽ  \       ヽ
     |       ヽ   \  \  \  ヽ  ヽ       ヽ
     |ヽ    (  ヽ\__彡_メ==\_)        |
     \  ゝ \__/__      ヽ ̄|⌒)″)        ヽ
      \   ヽイ /人くヽヽ     \>イ  ノ         \
        \_ \ "\u゙')         /          \
          |   \    j        /            )  ./ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ノ    ヽ    ヽ)      /              |  |  おじさま!
         /     ヽ     iー.、   |              / < 
         |      ヽ、   `´    |           ) /   |  1000は渡しません!
         (        ` .、    /ヽ(       / / /    \________
         \\(\__ヽ\__>‐ イ    |\___// ̄
                   /       |


0997デフォルトの名無しさんNGNG
      /::::::::::>、_
      ,:::::::::::/   i::ヽ、
     ./:::::::::/    .i::::::i ,.:‐:.、 li lヽ
     l::::::::::i .i.    l::::/:::::::ー:::‐:::::::l
     |:::::::::|. |     |::::::::::::;::::::‐::::::::'、
 /  /::::::::::| i'     i'::;/::::::::::::::::::::::ヽ
 i`::‐::::::::::::::!i'     i'V:::::::::::::::::::::::::::::::::::i
 \::::::::::::::::::i     |::::::::::::::::::::::::::::::::::::::::i
   /:::::::::::::|     !:::::::::::::::::::::::::::::::::::::::::::、
  /:::::::::::::::::::i     |:::::::::::::::::::::::::::::::::::::::::::::ヽ
 i:::::::::::::::::::::|     |:::::r‐_ノ‐´―::::::´::::ノ::::::::ヽ
 !;;::::::::::::::::::|     ト::/ ゞi;;ニ> ー‐‐イ:::;:::::::;)
  i::::::::::::::::|     .L,!::!  `" ^´ ,i;;iヲ;''ノ:::::::;;ノ
 , ):::::::::::::;l     !:;:: `     i`´/::::;;;;/  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ヽ‐;:::::::::::|     l/ :.   .'、_ '´, ' イ、   | バカね
  ー‐´!::;!     li、 `、 `‐´ イ::::::::::ヽ.. < 1000は私のものよ
      |   i  .l;;;i  `ト:::::::::::::::::::::::::::/.   | カネニイトメハツケナイワ
      |   i'   l;;;;ヽ_ i::::::::::::::::ノ '‐― 、  \________
     .|.   i   .i;;;;li;ヽヽ!、_,,,      .!
      !      l;;;;;;;;;;;;;;,,         ,ト‐.、
      i     l;;;;;;;;;;;;;;;;;;;,,     `ー:.、l ト、
       !、    l;;;;;;;;;;;;;ヽヽ;;;;,,  .、    /;;/,
       ヽ   l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,  ` 、 /;;/;;;i
        \  !;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,_  .v;;;;;;;;;;;/


0998デフォルトの名無しさんNGNG
               __
        ( ̄ ̄ヽニニ_, )
        冫        |
        / ̄^-―――′ヽ
      / |            ̄\
    /  ヽ______/  /
   く               /
    ー―、___________イl 
      /ヽ| く て .| |.ノ-|(  
      |ヽ | / ´ヽ-^ L^  く |
  ,――/|( )| |    、__ )  / |\――__
/  /  ヽ | |  ____________  | |  \_ | \   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  /     |.| |∠--i-i--i-ヽ| ゝ   \ く  <  1000取りとは許さん逮捕だ
  |      儿 (  ̄ ̄ニ ̄  く    / /   \____________
ヽ \    ヽ\/        )  /  ヽ
、フ  \    \`ヽ_______へ―′  / |   |
   _____フ    |   /  \  |    ̄|   |
   ヽ       |  |    |  |    /   |
0999デフォルトの名無しさんNGNG
             _______
            /           \
          /              \
         /                 \
         /                   \
         l         / ̄ヽ        |
         l  /\   /     ヽ       |
         | /   \/        ヽ     |
         |/ ━━    ━━━━━   _  |
         |   / ̄\    ( ̄/\  ヽ / \|
         il  |  / il    ヽ l  )  V    ヽ
         (ヽ  ヽ_ヽ/ /      ̄ミ ミ   | |/ヽ |
          |     /           ||ヽ//
          |    ヽ           ||ヽ/  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          |    ______,  ///  .| んーなこと言うなよ
           |   ´、|  |  | /  ミ |   < とっつぁん
           i    \.  |  レ     ミ    | 1000モラッタ
            l     ヽ┴/     /|     \________
            \    ━     /  |_
              ヽ       _/  ,/|
               ヽ__ /__/  |、
              ///    \.     |
             / / |    / \.   /
             ̄ ̄ /⌒ヽ/   丶/
               /  ヽ


1000デフォルトの名無しさんNGNG
      ___
    /      \
   /      L  |
   |   ===========‐
   |  | \  / |
   |◯ |  ・   ・ |
   ヽ  ノ   ⌒  |
   /  ̄        ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  /|  )_____ |\< いただき!!
/ λ         ノ  \\________
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。