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

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

■ このスレッドは過去ログ倉庫に格納されています
0001きょうはいいテンキーです。日下部陽一NGNG
漏れは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

K&Rで挫折するような救いがたいやつはこれでも読め
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711

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

・前スレ C言語なら、俺に聞け! <17>
http://pc.2ch.net/test/read.cgi/tech/1019372139/l50
0583デフォルトの名無しさんNGNG
>>582
正しいんですね。ありがとうございました。

間違っていなくてよかった。
0584修正NGNG
NULL についてまとめておく

・定数の "0" は、文脈によってヌルポインタ、または整数の 0 として解釈される。ただし、可変長引数、またはプロトタイプをもたない関数の引数に現れた場合は整数の 0 として解釈される。
また、整数型とポインター型とで多重定義している関数の引数では、解釈は実装依存となる(C++ 限定)。
・ヌルポインタのビットパターンは実装依存である。
・条件式にヌルポインターが現れた場合、偽となる。
・ヌルポインタとヌルポインタとは等しい。
・ヌルポインタとその他のポインタとは、常に等しくない。
・ポインタ型によりヌルポインタのビットパターンが異なる場合があるが、コンパイラは(騙されない限り)正しい型を知っているので、比較は正しく行われる。

・NULL は 定数 "0" がヌルポインタとして解釈される場合のみ、定数 "0" の代わりに使用できる。他の文脈では、結果が実装依存となる。(NULL を整数 0 の代わりに使用してはいけない)
・NULL の定義方法は処理系により決定される。(#undef NULL は合法)
0585デフォルトの名無しさんNGNG
>>577
echo ^[[0\;1m
てな感じでechoしよう。^[ は実際は'\x1b'ね。
0586デフォルトの名無しさんNGNG
>・ヌルポインタとヌルポインタとは等しい。
、、、
0587577NGNG
>>585
レスありがとうございます
でも できなかったです
bccがだめなんでしょうか?
0588デフォルトの名無しさんNGNG
>>587
WindowsNT,2000,XPを使っているとみた。
0589577NGNG
XP使ってます
XPだと色変えれないんでしょうか?
0590親切な人NGNG

追随を許さない、RX-2000�V !!!

注目のオークションにも適用されてるね↓
http://search.auctions.yahoo.co.jp/search/auc?p=RX-200
0591デフォルトの名無しさんNGNG
>>589
少なくともエスケープシークウェンスでは無理。
何かライブラリがあると聞いたが。
0592デフォルトの名無しさんNGNG
>>589
DOS/Vで使えたっけ?
ANSIsysか何かが必要だった気が。
0593デフォルトの名無しさんNGNG
>>589
コマンドプロンプトはDOSではないがね。
0594デフォルトの名無しさんNGNG
32bit consoleアプリじゃだめ。
LSI-Cとか使いなさい
0595デフォルトの名無しさんNGNG
>>586
Any two null pointers shall compare equal.
というISOの規格そのままだと思うが何か?

(もっと細かく言うなら、「どの型のヌルポインタ
も互いに等しい」と書くべきかも知れんが。)
0596デフォルトの名無しさんNGNG


570 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 15:40
>>569
過去ログ読んでくれ。もうたくさんだ。


571 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 15:57
次のスレには、ぜひ、NULL、0==var、main()の戻り値については議論しないように書いて欲しい。


572 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 16:04
>>571
不毛な揚げ足取りはやめましょうとかで良いんじゃないの?w


573 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 16:10
それぞれの議論へのポインタを置くか、
2ch向けのFAQ書くかだなあ。

十数年前の暇な学生の頃だったらやってたかも。

0597デフォルトの名無しさんNGNG
と、言うわけでスレッド立ててよそでやってもらえませんか?
0598デフォルトの名無しさんNGNG
じゃあmalloc()したものはすべて(略
0599デフォルトの名無しさんNGNG
>>597

>584 で終わっているんじゃないの。
0600デフォルトの名無しさんNGNG
「FAQ歓迎若者限定C言語質問スレ(オサーン立ち入り不可)」
というのを作ってみるとか。
で、このスレは廃墟に…
0601デフォルトの名無しさんNGNG
初心者板になぞらえて「もの凄い勢いで誰かがCの質問に答えるスレ」とか(ワラ
で、このスレはあっちのくだ質のように廃墟に・・・
0602デフォルトの名無しさんNGNG
くだらない質問でもレスをいただけるスレッド(C専用)
とか…
0603デフォルトの名無しさんNGNG
sprintfとwsprintfの違いはなんでしょうか?
0604デフォルトの名無しさんNGNG
wsprintfは制限があるけど、TCHARベースで使うことが出来る
しかし、それはcじゃなくてWin32APIスレの方が適切だ
0605デフォルトの名無しさんNGNG
少なくともwsprintfは浮動小数点関係が処理できなかったよね。
0606603NGNG
今,wsprintf(mes,"%s:",a[1].Name);
とやって表示しようとしたら表示できず、
 sprintf(mes,"%s:",a[1].Name);
とやったらOSが落ちました。
なぜでしょう?
0607デフォルトの名無しさんNGNG
>>606
mesが不適切の可能性。
a[1].Nameが不適切の可能性。

なめてるのか?
0608デフォルトの名無しさんNGNG
>>606
コンセント抜けたんじゃない?
きにするな
がんがれ
0609603NGNG
 a[1].Nameのメンバのnameを確認してみたところLPSTRになっていたので,
charにかえてみたところうまくいきました。
0610デフォルトの名無しさんNGNG
じつはうまくいってないヨカーン
0611デフォルトの名無しさんNGNG
>>610
領域破壊ですかね?
0612603NGNG
うう・・・OS落ちまくりです

 sprintf(mes,"%sのなまえはなんでしょうかね?",a[1].Name);
としたところOSが落ちました。
char mes[256];
aのメンバNameはchar Name[256];

です
0613デフォルトの名無しさんNGNG
まともなOS使えば?
0614デフォルトの名無しさんNGNG
>>612
OSは何?
0615デフォルトの名無しさんNGNG
実はaの分メモリ確保してないとか?
0616デフォルトの名無しさんNGNG
1. a[1].Name に正しいデータが入ってない。 >デバッガかなんかで確かめれ。
2. a[1].Name に228文字以上入ってる。

のどっちかだろう。
0617デフォルトの名無しさんNGNG
>>612が落ちるの意味を間違ってるだけだろ。
本当にその程度で落ちてるなら、確かにOSかえたほうがいい。
0618デフォルトの名無しさんNGNG
おおかたa[1].Nameに'\0'がなくてアクセスしてはならないところまでアクセスしてしまっているんだろうな。
きちんと初期化しないとね。

(a[1].Name="aaaa"とかやっていたらわらえるんだが)
0619デフォルトの名無しさんNGNG
昔SunOS 3.xでscanf("%s"で128バイト以上読むとリブートしたっけなー
0620デフォルトの名無しさんNGNG
while("むげんるーぷ") printf("\t\b\b");で学校のWin2000が落ちたなー
0621デフォルトの名無しさんNGNG
>>620
それだと確実にNTが落ちるんじゃない?
0622デフォルトの名無しさんNGNG
>>621
2chにスレが立っていたのでやってみたら本当に落ちてちと焦った。
0623603NGNG
a[1].Nameには、ナナシと入っています

>>614
Win98です
>>617
画面が真っ白のままなんで,強制終了しました
>>618
多分大丈夫だと思いますが,確認してみます。
char aNameTable[][256]={
  "ナナシ","ナナシ","ナナシ","ナナシ","ナナシ"
};
strcpy(a[i].Name,aNameTable[i]);
としています
なんかここがだめそう?
0624デフォルトの名無しさんNGNG
>>623
256バイトもいるのかと小一時間・・・
0625デフォルトの名無しさんNGNG
>>623
iの値は?

>>624
必要なくても256バイトは取る。これ常識・・・・・・じゃないな。
0626603NGNG
iの値は,0から4までです
for文で回しています
for(i=0;i<5;i++){
  strcpy(a[i].Name,aNameTable[i]);
}
です
0627デフォルトの名無しさんNGNG
>>626
で、配列aの要素は少なくとも5は取っているんだな?
0628603NGNG
はいそうです。
 sprintf(mes,"%sのなまえはなんでしょうかね?",a[1].Name);
の部分をコメントにして実行したら大丈夫なんですが
0629デフォルトの名無しさんNGNG
っていうか、全ソース上げれば一発じゃないか?
でかいなら、再現できる最小を
0630デフォルトの名無しさんNGNG
やってみたが全然問題ないぞ?(当たり前だが)
コンパイラがおかしいんじゃネーノ?
0631デフォルトの名無しさんNGNG
>>630
新事実が出てきそうな予感。
0632デフォルトの名無しさんNGNG
ソースまだぁ?マチクタビレター

おお、地震だ!
0633603NGNG
コンパイラはVC6.0です。
ここに問題があると思うんですが,
sprintf(mes,"%sのなまえはなんでしょうかね?",a[1].Name);
FontData=SetMyFont(255,255,255,"MS ゴシック",18,0);
SetRect(&Src,20,380,470,630);
DrawText(FontData.hdc,mes,-1,&Src,DT_LEFT | DT_NOCLIP | DT_WORDBREAK);
DeleteFont(FontData);

で、SetMyFontでフォントを設定,FontDataで必要な情報を得ています。
0634デフォルトの名無しさんNGNG
>>633
sprintfより下の関数がわからん。
他の人頼む。
0635デフォルトの名無しさんNGNG
>>633
>>629
0636603NGNG
>>632
すんません。OS落ちてました。
なんか実行したら,画面が480*640の状態になって,デスクトップが表示されたままだったんで,
ALT+CTR+DELで再起動していました
0637デフォルトの名無しさんNGNG
>>636
縦長やねー
0638デフォルトの名無しさんNGNG
シェルについて今ならっていて、レポートとして原理を書くとこ
なのですが、いまいち簡潔にまとめて説明することができません。
どこか詳しく説明しているとことかないですか?ここで教えていただけ
るとよりうれしいのですが。
0639デフォルトの名無しさんNGNG
>>638
コマンド起動させるだけのプログラム。
0640デフォルトの名無しさんNGNG
>>638
かいがら。
以上。
0641デフォルトの名無しさんNGNG
>634 ここに問題があると思うんですが

ここで問題になっているのは、sprintfでのフリーズだろ?
だったら、それ以前の箇所でマズイ事が起こっているから、sprintfで失敗が起こる。
sprintf以降をさらされてもしょうがない。

原因を特定できない人間が勝手に問題の発生箇所を決めつけるな。
コンパイル&実行出来る最小限のソースを張り直せ
0642デフォルトの名無しさんNGNG
昭和シェル
http://www.showa-shell.co.jp/
0643デフォルトの名無しさんNGNG
>>603
ソースあげるかそのまま友達に配るかどっちかにしてくれ。
0644デフォルトの名無しさんNGNG
>>641
sprintfよりも前とは限らないぞ。
sprintfが原因で後でフリーズしているのかもしれない。
0645デフォルトの名無しさんNGNG
追加

myshellとcshllとの違いって何?
0646デフォルトの名無しさんNGNG
>>641
誤爆だよね・・・・?
0647デフォルトの名無しさんNGNG
>>646
スマソ誤爆デス

>>644
まぁ、確かにそうだね。
sprintfを中心に話題が進行してたんで、
そういうもんだと勝手に思いこんでました
0648デフォルトの名無しさんNGNG
>>645
お前の怪しげなプログラムかUNIXで少なからずシェアを持っているシェルかの違い。
0649デフォルトの名無しさんNGNG
>>633
ためしにさ、
sprintf()の部分を、
strcpy(mes,"あうあうあうあうあうあうあうあうあうあうあうあうあうあ");
とかにしてみると、どうなる?
0650デフォルトの名無しさんNGNG
>>638
こちらへどんぞ。
UNIX超初心者専用スレッド Part.2
http://pc.2ch.net/test/read.cgi/unix/1017325687/
0651デフォルトの名無しさんNGNG
>>648
シェアって何?
0652デフォルトの名無しさんNGNG
>>651
http://dictionary.goo.ne.jp/cgi-bin/ej-more_print.cgi?MT=share&ID=EJ-277600.txt&sw=0
0653デフォルトの名無しさんNGNG
>>651
共有する。
0654デフォルトの名無しさんNGNG
次はこれかな?
http://www.kfc.co.jp/
0655デフォルトの名無しさんNGNG
>>654
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
0656603NGNG
すごい削りましたが,これがソースです。
jpgをzipにかえてください。
ttp://sylphys.ddo.jp/imgboard/img-box/img20020505000221.jpg
0657デフォルトの名無しさんNGNG
http://sylphys.ddo.jp/imgboard/img-box/img20020505000221.jpg
0658デフォルトの名無しさんNGNG
どう考えてもFontDataからhdcをとってるあたりがおかしい。
VCスレに逝け。
0659デフォルトの名無しさんNGNG
>>656
解凍すると0バイトの"WINDOWS 98"というファイルが出てくるけど?
0660デフォルトの名無しさんNGNG
削りすぎててソースはいってねえよ
0661デフォルトの名無しさんNGNG
>>655
シェルの次はカーネルだろ
0662デフォルトの名無しさんNGNG
>>661
そこまで読めるかヴォケ!
0663603NGNG
みすりましたこっちです
ttp://sylphys.ddo.jp/imgboard/img-box/img20020505001003.jpg
0664デフォルトの名無しさんNGNG
http://sylphys.ddo.jp/imgboard/img-box/img20020505001003.jpg
0665デフォルトの名無しさんNGNG
>>663
プロジェクトを全てアップしたのかよ!
いいのか?
0666デフォルトの名無しさんNGNG
>>660
ワラタ
0667603NGNG
ttp://sylphys.ddo.jp/imgboard/img-box/img20020505001230.jpg
これが正解です。今度はlzhに変えてください。
0668603NGNG
あげみすりました
こっちです
ttp://sylphys.ddo.jp/imgboard/img-box/img20020505001300.jpg
0669デフォルトの名無しさんNGNG
ゲ
DirectXでバグ持ちか。
現在Win長期間労働記録更新中なんで、試す気にならない。
バグ取りは親切な人に任せとけ
0670デフォルトの名無しさんNGNG
正直、CyaraData.h とやらがないぞ。
0671デフォルトの名無しさんNGNG
必要なヘッダーファイルがなくてコンパイルできない。
0672デフォルトの名無しさんNGNG
すみませんでした。
削りすぎたようです。なかみはこれです。
#ifndef _CYARADATA_H_
#define _CYARADATA_H_
typedef struct{
char Name[256]; //名前
int MaxHp; //最大HP
int MaxWp; //最大WP
int Hp; //HP
int Wp; //WP
int Lev;
int Ata;
int Def;
int Ex;
int NextEx;
int Mov;
int Waza_Max;
POINT Pos;
int Type;
int IdouFlg;
int Koudou;
}PLAYER;
#endif
0673603NGNG
http://sylphys.ddo.jp/imgboard/img-box/img20020505002128.jpg

申し訳ないです
今回は無圧縮です
0674デフォルトの名無しさんNGNG
・・・
0675デフォルトの名無しさんNGNG
せめて関係ないビットマップとか、その読み込み周辺は削ろうね。
人に見てもらうんだから。
0676603NGNG
>>673
よその603さんですか?
0677デフォルトの名無しさんNGNG
マジデ━━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(゚  )━(∀゚ )━(゚∀゚)━━━!!!!!
0678デフォルトの名無しさんNGNG
Cursorsyori.hもねーよ(藁
0679603NGNG
>>678
それは,使ってないから,削除してください
0680デフォルトの名無しさんNGNG
>>679
使っていないなら書くなよ(T_T)
0681デフォルトの名無しさんNGNG
>>679
PLAYER の定義箇所どこ〜〜〜?(泣
0682681NGNG
>>680
すまん。>>672見てなかった・・・
■ このスレッドは過去ログ倉庫に格納されています