C言語なら、俺に聞け! <20>
レス数が1000を超えています。これ以上書き込みはできません。
0001ともっち
NGNG・comp.lang.c FAQ
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・前スレ
<19> http://pc.2ch.net/test/read.cgi/tech/1020756993/
リンクは>>2-4あたり
0002デフォルトの名無しさん
NGNG0003ともっち
NGNG3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。
今ゲームを開発しているのですが、兄さんは僕自身を開発するとか
言って、なかなかプログラミングに集中させてくれません。
質問するたびに僕の体を触ってくるので正直困っちゃってます。
ぼく自身、そういうのは好きだけど、それだけじゃゲーム作りが進まないので、
ここに質問させてください。よろしくお願いします。
FAQ的な質問ならぼくも回答します。間違いがあれば、先輩方の訂正を
お待ちしております。
なお、課題の○投げは一応別スレへ、ということでお願いします。
プライベートな質問に関してはスレの950が過ぎたあたりから受け付けますので
それまでそういったことは、なるべく謹んでください。
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGティムポ、萎えちゃった?
0006デフォルトの名無しさん
NGNGhttp://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/
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/
0007デフォルトの名無しさん
NGNGコンパイラ
ぼくもgccは好きです!
http://gcc.gnu.org/
タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/l50
Win32用の開発環境のみ。
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
------------------------ ライセンスや機能などに問題あり ---------------------
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
その他
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
0008デフォルトの名無しさん
NGNG{
hoyuji();
}
void hyouji()
{
katakana();
hiragana();
}
void katakana()
{
namae();
tosi();
}
void namae()
{
printf("なんていうの?");
}
という感じで,関数を何回も入っていく場合は,皆さんはだいたい何回程度に抑えていますか?
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG必要ならいくらでも。
ただし、中を見なくても関数名を見れば何をしているか分かるようにすべし。
0011デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1018453690/
http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
http://pc.2ch.net/test/read.cgi/tech/1020756993/
http://pc.2ch.net/test/read.cgi/tech/1021459016/
0012デフォルトの名無しさん
NGNG・・・
0013デフォルトの名無しさん
NGNGhttp://www.excite.co.jp/world/url/body/?wb_url=http%3A%2F%2Fvagina.rotten.com%2Fmotorcycle%2F&submit=%83E%83F%83u%83y%81%5B%83W%96%7C%96%F3&wb_lp=ENJA&wb_dis=2&wb_co=excitejapan
0014デフォルトの名無しさん
NGNGCって多くの人が学んでいるのだなぁ
0015デフォルトの名無しさん
NGNGC覚えてれば大体の構造化言語は使えるから。
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG大学や専門学校のプログラミングの授業で採用しているところが多いと思うし。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGおかげでCの糞スレも多いという事実
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGおまえなんかにゃきかねーよーだ
0022デフォルトの名無しさん
NGNG{
int i, j;
int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
int b[3][2] = { {6, 3}, {4, 5}, {1, 2} };
int c[2][2];
mat_mul(a, b, c);
for(i = 0; i <2; i++){
for(j = 0; j <2; j++){
printf("%d ", c[i][j]);
}
printf("\n");
}
}
質問してみます。
返却値返せって出る・・・何で?
0023デフォルトの名無しさん
NGNG素人かい・・・。returnが無いぞ。
0024デフォルトの名無しさん
NGNGしかしUnixでやったときはreturn無しでも上手くいったのに・・・
ちなみにgnuwinだとreturnつけてもエラーが・・・(´・ω・`)
[main] C:\root\home\a.exe 1079 (0) handle_exceptions: Exception: STATUS_ACCESS_V
IOLATION
[main] a 1079 (0) handle_exceptions: Dumping stack trace to a.exe.core
0025デフォルトの名無しさん
NGNG多分C++のプログラムと解釈されて、mainにreturnがなくても警告でなく
なってるんじゃない?
0026デフォルトの名無しさん
NGNG>int main(void)
反論の余地はないよ。WindowsだからとかC++だからとか。
0027デフォルトの名無しさん
NGNG反論の余地があるよ。C++だったら。
C++ は main という名前の関数は特別扱いで、末尾に return が無い場合は暗黙に return 0; があるものとされます。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG分割に意味があれば、幾らでも。
でも、おいらオバカだからパーツとしての関数(標準関数みたいな純粋な機能)以外は、あまり分割しないなあ。
初期化、ファイル読み込み、メイン、終了処理とかって感じで、相当に単純だと思う。
所詮、上から下にしか処理を書けない非オブジェクト指向な人間なんで(^^;
0032デフォルトの名無しさん
NGNGint main()
{
char *text="ShiftShift";
for( int i=0; i<=10000; ++i )
{
fputs( "\r", stdout );
fwrite( text+i%5, 1, 5, stdout );
}
}
0033デフォルトの名無しさん
NGNGすいません。私バカなんで。。。
xとbitsは何に使うんでしょうか?
003429
NGNGスイマセン.ポインタとかファイルストリームは使わないでください。・゚・(ノД`)・゚・。
0035デフォルトの名無しさん
NGNG回転シフトって何か曖昧な表現無しで説明して。
その後もう一回>>30を読んでみて。
003629
NGNG右回転シフトの場合(1bitずつシフトする)
1.ある変数値aの一番右にあるビットをbに格納
2.aを右に1bitシフト
3.aの最上位ビット(一番左)にbを入れる
この3ができません。
003729
NGNG|演算見落としてました。||これだと勘違い(恥)
アリガトウゴザイマス。・゚・(ノД`)・゚・。
0038デフォルトの名無しさん
NGNGunsigned にすんの忘れんなよ
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧∧
(゚Д゚ ) (´´
アアン ! ∧∧⊂ ヽ/ (´⌒(´
⊂(=^_^;=⌒ `つ つ≡≡≡(´⌒;;;≡≡≡
し' ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
ドッコイショ・・・・・・・・・
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ (´´;;
∧∧∧∧ (´;;
〃 (=^_^;=)Д-)
〃 ⊂(。(。 つと| グィッ
〃 > y ) /〜))
.し'し' U
何見てんだゴルァ!!
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄
パ ∧∧ ∧∧ パ
ン (=^_^;=)゚Д゚) ン
(.ノ(し⊂ニノ ))
ミナイデェ > y ) /≡〜
.し'し' U
0041デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG根本の原因のともっちにはマジ責任とって氏んでほしい
0044デフォルトの名無しさん
NGNGヘッダーを内部ようと公開用の二種類作るのは
変でしょうか?プログラム構成に関しては色々と
本に書いてあったりしますが、ヘッダーの良い
書き方なんかについて言及してるものは少ないですよね。
Linuxでいえば
linux/include
linux/asm-i386
みたいに分ける感じの方がいいのかな?
0045デフォルトの名無しさん
NGNGlinux/include/asm-i386
の間違いです、すみません。
0046デフォルトの名無しさん
NGNGダブルで1000げっと、おめでとう!
http://pc.2ch.net/test/read.cgi/tech/1020756993/1000
http://pc.2ch.net/test/read.cgi/tech/1013917354/1000
ついでに1までとってるね。(w
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG別に普通じゃないか?
0049デフォルトの名無しさん
NGNGwhatever I choose
And I'll sing the blues if I want
0050悩むこと1週間
NGNGやっぱ2chの力は凄いわ、サンクス
0051デフォルトの名無しさん
NGNGI can't swim - but my soul won't drown
I do believe - I got flare
I got speed and I walk on air
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG心配でオナニーに気合いが入りません。
だって、これが最後かも・・・って考えてしまうと、
つい、未来の為にとっておこうって思っちゃうんですよ。
いや、それでもイクんですけどね、一応は。
でもこれじゃいけないなぁって後から悩んじゃう訳なんですよ。
限り有る精子をもっと有効(中田氏)に使わなきゃって。
あぁ、出たらどうしよう!
0054デフォルトの名無しさん
NGNGそしたらポロってとれちゃって
どうすればいいですかね?
血が止まんなくて大変です。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGcase Masyeri:
まるいち
break;
case Syokubutumonogatari:
まるに
break;
case Vidarusasuunn:
まるさん
break;
}
まるいち、まるに、まるさんの部分に10行以上の長い文を書くのってへんですか?
SEの入社試験とかのソースでそんなふうに書いたらあかんですか?
それよりだったら,その部分を関数にまとめた方がいいですか?
0058デフォルトの名無しさん
NGNG>SEの入社試験とかのソースでそんなふうに書いたらあかんですか?
その会社ほんとにSE業なのか・・・?転職?
0059デフォルトの名無しさん
NGNGシャンプーの綴りくらい。。。
0060デフォルトの名無しさん
NGNG俺は別に100行くらい書くけど。
もちろん関数に分割できればそれに越したことはないけど。
0061デフォルトの名無しさん
NGNGおれもヘタレかもしれん。
0062デフォルトの名無しさん
NGNGそーすると、アンダースコアひとつで始まる名前は、ローカル変数には自由に使って何の問題もない?
0063PNPO
NGNGか?みんなどういう方法でマスターしていったんだ?
0064デフォルトの名無しさん
NGNG薄い本買って読んで猿のように書いた。
後、QUICK Cのヘルプは最大限活用した。
0065デフォルトの名無しさん
NGNGクローズ処理でエラーが発生したら、つまりこのファイルはクローズされないんでしょうか?
もしそうなら、クローズするためにもう一度 fclose してもまたエラーになりそうですが、そーすると結局どうすれば FILE* を解放できるんでしょうか???
0066デフォルトの名無しさん
NGNG何かを作りたくて一所懸命&楽しい、ってゆう状態にもっていく工夫をして下さい。
それができないようだと我慢の勉強になってしまいます。
0067デフォルトの名無しさん
NGNGfcloseが失敗するのは見た事ないです
でもそうなったら処理系依存の話になっちゃうんじゃないでしょか?
0068デフォルトの名無しさん
NGNG某WIN32系の本に影響されて俺はswitch部はジャンプテーブル的に
使っています。理由はやり方こそ違えど60さんと同じ。1つの関数
に違う処理を突っ込みすぎると変数の再利用などでグチャグチャに
なりやすいからです。
>>67
不正なFILE*を渡せば・・・(w
006968
NGNG61さんだった・・・メンゴ
0070デフォルトの名無しさん
NGNGディスクとCPUが非同期になっているため、プログラムの
終了後にエラーがくる場合があるからです。
また、mallocがNULLを返さないOSもあります。
これも実際に使用するまで取らないからです。
将来、これらの関数を全部voidにして、
シグナルや例外処理およびプログラム終了後の
ハンドラ登録方式にでもにまとめるべきかと。
0071デフォルトの名無しさん
NGNG実装側でグローバルネームスペースで使うマクロが
存在する可能性があるのでオススメできないぞ。
0072デフォルトの名無しさん
NGNGfwriteでdisk fullは取れるYO!
0073デフォルトの名無しさん
NGNG書き込み処理を行ったものについてfcloseがエラーを返したら、
書き込みが失敗したとみなすべきですね。
0074初心者
NGNG%2dとはどういう意味ですか
0075PNPO
NGNGサンキュー!
猿のように書いたって、本に書いてる例題プログラムとかをやった
っていうこと?
>>66
サンキュー!
なんか精神的につらそうだな〜・・・
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG0079初心者
NGNG%dはどの本にもでているんですが%2dはどこを調べてもでてないんですよ
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNGexitする。
あるいはmainでreturnする。
0083デフォルトの名無しさん
NGNG%2d→2桁右寄せで出力するということだ
ちなみに、%02d、こうすれば0もつけてくれるぞ。
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG(´ー`)。oO(そんな事も書いてない本って、どんな本だろう?)
0086デフォルトの名無しさん
NGNG思いっきりSCANDISKしたほうがいいとおもうな。完全オプションつきで。
0087初心者
NGNGありがとうございます。
助かりました。
0088デフォルトの名無しさん
NGNG初心者はわからないことがあるたびに検索せずに
質問してくるんじゃないかと・・・
0089
NGNGいるみたいだな。。。。
0090デフォルトの名無しさん
NGNGどう控えめに見ても君がヴァカだ。
0091デフォルトの名無しさん
NGNGすぐ人に聞く人はプログラミングの楽しみの90%を逃しているよ。
どうせ宿題小僧なんだろうけどさ
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGと煽る君がとてもかわいいよ。。。。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG今回ばかりは質問が「%2dって何ですか?」だもんな・・・
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG普通は%02dか%.2dだろ
0099デフォルトの名無しさん
NGNGこんな邪悪なことしてたことある人いる?
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG#define _(a) a&&a
:
if (10 < _(foo) < 100)
こんなことしてた奴もいる。てか漏れ(藁
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGで、振りかえってみて、あの頃の自分が恥ずかしい、と。
0105102
NGNG0106デフォルトの名無しさん
NGNGワロタ
0107デフォルトの名無しさん
NGNG先輩からへッダを渡されてこの中身のbitio.cを作れと言われました。
先輩は、殺気立っててあんまりしつこく聞けません。
よろしくお願いします。少しでも良いです。ヒントをお願いします。
#ifndef bitio_h
#define bitio_h
#include <stddef.h>
typedef struct bitout BITOUT;
extern BITOUT *bitout_open(const char *filename);
extern void bitout_close(BITOUT *);
extern void bit_write(BITOUT *, size_t nbits, unsigned long bits);
extern void bit_flush(BITOUT *);
typedef struct bitin BITIN;
extern BITIN *bitin_open(const char *filename);
extern void bitin_close(BITIN *);
extern unsigned long bit_read(BITIN *, size_t nbits);
typedef void (*ioerr_handler)(const char *fmt, ...);
extern ioerr_handler bitio_error; // Default: print and die.
#endif
0108デフォルトの名無しさん
NGNG仕様書みたいなのはないのか?
なければ先輩の頭をキーボードでぶん殴っていいです
0109デフォルトの名無しさん
NGNGその先輩に↓を見るように言うんだ
http://pc.2ch.net/test/read.cgi/tech/1021459016/107
それで解決
・・・しなければ上司に助けを求めろ
0110デフォルトの名無しさん
NGNGえっとへッダを印刷したプリンタ用紙に
「可変長ビットI/Oモジュール: 最大32bit」
と鉛筆で殴り書きしてありますた。
これだとマウスでシバクくらい良いでしょうか?
0111デフォルトの名無しさん
NGNG最適な助言としては・・・「諦めてさっさと逃げ出せばーか」ですが、、、
どうしても知りたきゃ情報圧縮の本でも読みなさい。
0112デフォルトの名無しさん
NGNGunsigned int tmp;
short shift;
FILE *fp;
};
0113デフォルトの名無しさん
NGNGいえ、キーボードで死なない程度に殴ってください。
ついでにあなたも自分の顔をマウスで殴ってください。
すまんが、これはどういうプログラムの一部なんだ?
bitio.cはなにをするんだ?
http://www.google.co.jp/search?q=bitio.c&ie=UTF8&oe=UTF8&hl=ja&lr=
Googleで検索すると圧縮関係が多くヒットするけど、そっち方面とは関係あるか?
0114デフォルトの名無しさん
NGNGこのヘッダ見てやりたいことがわからない奴はプログラマ辞めたほうが良い
と思う。くらいに自明でありがちなパターンだよーん。
0115デフォルトの名無しさん
NGNG君もディスプレイに頭突っ込みなさい。
ビットリードライトは可変長の操作が必要なハフマンとかの圧縮アルゴ
では当たり前の部品だ。
0116デフォルトの名無しさん
NGNG0117114
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG#include <stdio.h>
#include "bitio.h"
struct bitout {
unsigned long bitbuf;
size_t nbits;
FILE *fp;
};
void bit_write(BITOUT *out, size_t nbits, unsigned long bits)
{
if (out->nbits + nbits > 8) {
putc((out->bitbuf << (8 - out->nbits)) |
(bits >> (nbits - 8 - out->nbits)),
out->fp);
nbits -= (8 + out->nbits);
}
while (nbits > 8) {
putc(bits >> (nbits - 8), out->fp);
nbits -= 8;
}
out->bitbuf = bits;
out->nbits = nbits;
}
0120119
NGNG0121デフォルトの名無しさん
NGNGそりゃそうだが、他人事とはいえウソ書いちゃまずいかと思って念のため。。。
今から頭つっこむんで、当分書き込めませーん。じゃあ逝ってきます。
0122デフォルトの名無しさん
NGNGに有利にした符号ってだけであって、あまり関係ないと思うよ。
0123shige
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG間違ってるYO!
putc((out->bitbuf << (8 - out->nbits)) |
(bits >> (nbits - (8 - out->nbits))),
out->fp);
nbits -= (8 - out->nbits);
だろ。
ついでに他も添削しちゃる。
void bit_write(BITOUT *out, size_t nbits, unsigned long bits)
{
if (out->nbits + nbits > 8) {
nbits -= (8 + out->nbits);
putc((out->bitbuf << (8 - out->nbits)) | (bits >> nbits),
out->fp);
}
while (nbits > 8) {
nbits -= 8;
putc(bits >> nbits, out->fp);
}
out->bitbuf = bits;
out->nbits = nbits;
}
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG教育的配慮?
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG自分でできないその先輩を殴っていいよ。
0135デフォルトの名無しさん
NGNGあのヘッダを見ても本当にその先輩が自分で出来ないとか思うか?
107はそのレベルから見ても員数外要員だと思うんだが
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNGこんな車輪の再発明を予備要員にさせる「現場」っつーのが思いつかん。
一番ありそうなのは学校の課題のバカ同士での擦り付け合いって気が・・
0138デフォルトの名無しさん
NGNGマトモな現場ではなさそう。
0139デフォルトの名無しさん
NGNG本気で言ってるなら、自分でビット入出力のモジュール書いてみろ
0140デフォルトの名無しさん
NGNGちゃんと説明してごらん。いや是非アフォな俺のためにしてください。
:
:
つか書いたことあるけど(w
0141デフォルトの名無しさん
NGNG正直俺も知りたいのでAGE
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNGどうやってCで書けばいいでしょうか?
0144139
NGNG未出力分との整合を取るコードを書かなければいけないし、
そもそもbit単位でのファイルI/Oは、シリアライズ以外での利用方法が無いから、
読み書きを同時に行うメリットがない。
どうしてもランダムアクセスにする必要があるなら、
ファイルIOとビットバッファを分離して、
ファイルから一部(または全部)をメモリに読み込んだ後に処理すべき。
0145デフォルトの名無しさん
NGNG絶対値が大きいほうの項との符号を比べちゃだめ?
0146デフォルトの名無しさん
NGNGaがオーバフローしているときはどうするの?
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGは??? お前138の言ってることがわかってる?
構造体を別にする必要が無いって意味だぞ。107を良く見直せ。
0149デフォルトの名無しさん
NGNG馬鹿がbitoug_open()で開いて、bit_read()を発行する可能性もあるが。
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGコンパイルにチェックが走って通らない方が何倍も安全なんだから
0152デフォルトの名無しさん
NGNGaってなんだよ(w
まあ数値だけからって言いたいんだろうけどさ。どうしてもなら演算直後
にasm使うとか(間に別の演算が無いという保証は無いが)。
0153デフォルトの名無しさん
NGNGwhile(??){
a/=2.1;
b=3.0/a;
}
なんてやっているとそのうちbがオーバフローしますよね
そのときに,それ以上計算がされないように食い止めたいのです
0154デフォルトの名無しさん
NGNGa/=2.1;
b=3.0/a;
}
0155デフォルトの名無しさん
NGNG環境わかんないけどSIGNALはつかえねーの?
0156デフォルトの名無しさん
NGNG詳しくないんだけど、それって演算誤差の方が支配的なんでは・・・?
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG単純なシリアライズが殆どと自分で逝っておきながらこんな例を出すのはちょっ
と屁理屈くさい気もせんではないが、まあ typedef ではチェックできない
のは確かか。なんか上手い手ないのかね。
0160デフォルトの名無しさん
NGNG先生!
(fabs(foo-bar)< e)
でOKっすか?
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGぐあっ,,確かに。
http://www-utheal.phys.s.u-tokyo.ac.jp/docs/manual/fitsio/node40.html
>defines certain special values that are used to represent such
>quantities as Not-a-Number (NaN), denormalized, underflow,
>overflow, and infinity.
この辺が答えかな? つーかあなたのような人が先輩か先生だったらなあ・・・
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGwin32だと status87()(statusfp()), control87()(controlfp()) とか
でFPフラグを弄ったり見たりできるようですね。Linuxでは__setfpucw()で
OKなのかな?
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGむしろ全国の先生・先輩の方が、自分で勝手に調べてくれるタイプの生徒・後輩を
熱望してると思うよ(w
0169デフォルトの名無しさん
NGNGb が大きくなるか小さくなるかは、分子と分母の関係から分かりますよね。
で、計算前の b と計算後の b を比較して、大きくなる筈なのに小さかったらオーバーフローでは?
0170デフォルトの名無しさん
NGNGあとは>>155のいうようにsignal()でSIGFPEでも捕まえてみるのは?
オーバーフローしたあとで捕まえて間に合うのか知らんけど。
ところで実数でも>>169のいうようにラップアラウンドするの?ビット的にはどっちかの無限大だかNaNだかになりそうな気が。
0171デフォルトの名無しさん
NGNGこれだめ?
0172ともっち
NGNG0173デフォルトの名無しさん
NGNGhttp://www.informatik.uni-frankfurt.de/doc/man/hpux/fpgetsticky.3m.html
0174わからへん。。。
NGNGファイルの文字の出現比率を表示するプログラムを書きなさい。
「英字、数字、空白、改行、その他」の文字ごとに表現比率を表示しなさい。
0175デフォルトの名無しさん
NGNGなんだいともっち
お兄さんが頭の上から足先まで何でもみてあげるよ
さあ、脱いでごらん
0176デフォルトの名無しさん
NGNGctype.hをインクルドしよう
0177デフォルトの名無しさん
NGNG1文字ごとに頻度を数えるなら、
#include <limits.h>
unsigned count[UCHAR_MAX];
に頻度を記録しとけば良いだろう。
文字種ごとの頻度は、
#include <ctype.h>
unsigned class_count[4];
として、文字cについて、
class_count[!!isalpha(c) + !!isdigit(c) * 2 + !!isspace(c) * 3]++;
すればよい。
0178お兄さん
NGNGint cbuf, sum, alpha, digit, space, newline, other;
sum = alpha = digit = space = newline = other = 0;
while((cbuf=getchar()) != EOF){
if(isalpha(cbuf)) alpha++;
else if(isdigit(cbuf)) digit++;
else if(cbuf != '\n' && isspace(cbuf)) space++;
else if(cbuf == '\n') newline++;
else other++;
sum++;
}
if(sum > 0)
printf("英字(%d%%)\n"
"数字(%d%%)\n"
"改行以外のスペース(%d%%)\n"
"改行(%d%%)\n"
"その他(%d%%)\n",
alpha%sum,
digit%sum,
space%sum,
newline%sum,
other%sum
);
else
printf("いやーん\n");
0179お兄さん
NGNG死んできます・・・(_A_;)
0180デフォルトの名無しさん
NGNGgetcharだと標準入力から読んじゃうぞ〜
fgetcでしょ。
0181デフォルトの名無しさん
NGNG>unsigned class_count[4];
>class_count[!!isalpha(c) + !!isdigit(c) * 2 + !!isspace(c) * 3]++;
だめじゃん。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG省略という言葉を知らないんですか?
0185デフォルトの名無しさん
NGNGまた使い古された煽りを
0186デフォルトの名無しさん
NGNG古臭かったか(鬱
>>107の先輩を煽ったつもりなんだが。
こういう奴ってautoとかも書いているのかなー
0187デフォルトの名無しさん
NGNGさすがにauto書いていたら珍人物だな
そんな珍しいソースを読んでみたいな
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGついてるな。なぜだろう?
0190デフォルトの名無しさん
NGNGisalphaとisdigitとisspaceはたかだか1つしか真にならないと思うけど。
0191デフォルトの名無しさん
NGNGそりゃあたりまえだろう
0192デフォルトの名無しさん
NGNGへ?
>>107みたいなへッダだと略すのが当たり前で
標準へッダだと略さないのが当たり前なの?
ヨクワカラナイ…
0194デフォルトの名無しさん
NGNG君のために extern を付けてあげたくなっちゃうんだな(w
0195デフォルトの名無しさん
NGNG「英字、数字、空白、改行、その他」ごとにカウントするんでしょ?
0196デフォルトの名無しさん
NGNG後から読む俺様のためにも、だ!ボォゲェ!
0197デフォルトの名無しさん
NGNGunsigned class_count[5];
class_count[!!isalpha(c) + !!isdigit(c) * 2 + !!isspace(c) * 3 +
(c == '\n') * 4]++;
0198デフォルトの名無しさん
NGNGちゃんと係数かかってるジャン??
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGまだダメ。
0201デフォルトの名無しさん
NGNG揚げ足とりというか、仕様をみたしてないじゃん。
(出題者の意図がわからんけど)
0202デフォルトの名無しさん
NGNG答えを完璧にするのは質問した奴の仕事。教えた奴は基礎的なことがあってれば
あとはどうでもいい。そこまで質問君に優しくしてやる必要はない。
0203デフォルトの名無しさん
NGNG英字はclass_count[1]に、
数字はclass_count[2]に、
空白はclass_count[3]に、
改行はclass_count[4]に、
その他はclass_count[0]に、
それぞれ入ると思うんだが。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGオーバーランするね。
0206デフォルトの名無しさん
NGNGisdigit(c)
isspace(c)
(c == '\n')
ってどれか同時に真になるの?
0207デフォルトの名無しさん
NGNG(c == '\n')
あ、これか。しかしそれこそ質問者に悩んでほしい問題だが。
0208デフォルトの名無しさん
NGNG201は>>177のこと言ってるんだけど。。。
0209デフォルトの名無しさん
NGNG(c == ' ' || c == '\f' || c == '\t' || c == '\v')
とか書くんかな。
0210デフォルトの名無しさん
NGNGそんな技巧に走ってバグるなら、スナオにifで書けばいいじゃん。
禿同
0212デフォルトの名無しさん
NGNG0213??????B?B?B
NGNGありがとう。
0214デフォルトの名無しさん
NGNGどこが?
0215デフォルトの名無しさん
NGNGuid知りたければどうすればいいですかね?
0216getpwnam
NGNG0217デフォルトの名無しさん
NGNG216の言う通り
getpwnam
0218デフォルトの名無しさん
NGNGvoid main (void)
{
int a,b,c;
scanf("%s %s %s",&a,&b,&c);
printf("%5s\n",a);
printf("%11s\n",b);
printf("%16s\n",c);
}
コンパイルエラーはないんですが
実行するとエラーが出るのですが原因わかりますか?
メモリがどうたらこうたら初心者でスマソ
0220デフォルトの名無しさん
NGNGひょっとすると218は直接答えが出てこないと自分への回答だと理解
しない完全他力本願タイプなんでは・・・?(w
0221デフォルトの名無しさん
NGNGもしかして昨日の%2dと同じ奴なのか?
0222デフォルトの名無しさん
NGNGいや、219を読んでますよ
0223デフォルトの名無しさん
NGNG違う
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNGa, b, c は数値型なのに文字として扱っている。
まぁ、例えていうと高校生を小学生扱いしたり、
男の子を女の子扱いするとグレてしまう。
数値型a, b, cも自分らしい扱いをされなかったので
グレてしまったのだ
0226デフォルトの名無しさん
NGNGa,b,cを文字列の変数として扱いたいんですがどうすればいいんでしょうか?
0227デフォルトの名無しさん
NGNGchar a[1024],b[1024],c[1024];
0228デフォルトの名無しさん
NGNG甘ったれんな。ちゃんと努力しろ。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG参考書買ってきて読め。もしくは、C なんか使うな。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGどう考えても>>228だろうな。
基礎の基礎くらいは調べて欲しいものだ
0233デフォルトの名無しさん
NGNGおーできた
ありがとうございます!
0234デフォルトの名無しさん
NGNGすぐ質問は最低だと思ふ。
0236デフォルトの名無しさん
NGNG読んでるって(w
0237218
NGNG初心者用のスレ立てたほうがよくないか?
0238デフォルトの名無しさん
NGNGもしかして試したのか?(-_-;)
0239デフォルトの名無しさん
NGNG初心者以前の問題
やる気がないようにしか感じない
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG30分もたたずに音を上げることじゃない
0242ひよこ名無しの4
NGNGアウトソーシングならある程度受け付けますが。
0243デフォルトの名無しさん
NGNG0244218
NGNG>>227か?試した。
>>239
やる気はあるよ。でも最初がわからないととっつきにくい
数学だって掛け算できなければ積分やろうとはおもわないだろ
それと俺の中では同じ。
まだ素人中の素人だ。自分自身でもわかってる。
勘弁してくれ
0245デフォルトの名無しさん
NGNGプログラムに関してはここに真っ先に来るんじゃない?
0246デフォルトの名無しさん
NGNG(怒)
だったら配列の大きさはそんなにいらないだろくらい言えよ(-_-;)
0247デフォルトの名無しさん
NGNGその考えが根本的に間違ってる。
素人だから何でも聞いていいというわけじゃない。
文字列の格納の仕方くらいCを始めてから一日で覚えられる範囲だろが
0249デフォルトの名無しさん
NGNGん?本当は分かっているけどみんなを試したんじゃないの?
0252デフォルトの名無しさん
NGNG散るぞ。ついでにハウツー丸暗記法で覚えると応用が効かないよ。プログ
ラマの多くは怠け者だから何度かこういったミスをしてるから初心者に厳
しくあたるんだよん。ってーことは覚えておいてほしいな。
0253デフォルトの名無しさん
NGNG218じゃないが了解。
0254デフォルトの名無しさん
NGNGどの言語を使っても結局言語に使われるだけ。
0255デフォルトの名無しさん
NGNG配列がわからないとな…
努力のカケラも見えんな
0256デフォルトの名無しさん
NGNGわからなくて他人に聞いた悔しさのバネより
自分で解決した時のうれしさの方がより強いバネになる
0257デフォルトの名無しさん
NGNG>自分で解決した時のうれしさ
を是非味わってほしいです。こればっかりは人に聞いてしまうと
喜び半減なので
0258デフォルトの名無しさん
NGNGsocket関数使ってhttpでweb上のページ読むツール作ってるんですが、
串ってどうやって通せばいいかわかる人いますか?
connect()関数に渡すSOCKADDR_IN構造体をどうにかするんでしょうか?
0259デフォルトの名無しさん
NGNGRFCを見てプロキシの説明参照。
ヒント。
プロキシに繋ぐ−>GET 目的のドメイン/目的のファイル
0260デフォルトの名無しさん
NGNGソフト何買えばいいの?
折れxpだからC++.netってやつで十分かな?
0261デフォルトの名無しさん
NGNGフリーで十分
0262デフォルトの名無しさん
NGNGこのスレの上の方を見て。
0263デフォルトの名無しさん
NGNGフリーで十分なの!?
.netとか言う奴はいらない??
0264デフォルトの名無しさん
NGNGやはり以前にも似た話題が出たのか…鬱
0265デフォルトの名無しさん
NGNG勉強でしょ?
フリーで十分。
0266デフォルトの名無しさん
NGNG当たり前だろ
覚えるのにわざわざ.net買ってたら金がいくらあってもたらんわ
0267デフォルトの名無しさん
NGNGめじろを落としてこい。
0268デフォルトの名無しさん
NGNGよりによって・・・昔アレ¥10k位してたよね?
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGVS.netのアカデミック買いなさい。WindowsXPも付いてくるよ♪
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNGint main()萌え言語
0273デフォルトの名無しさん
NGNGもっと
いれて
きもちいい
だめ
ああ
いく!いっちゃぅぅぅ
など。
0274デフォルトの名無しさん
NGNGあいうえお作文かと思っちゃったよ
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGああああああん!
ほしいのぉ!もっとぉ!
かたいの頂戴!
しょうてんさせて!
ねぇ!お願い!
>>274
こんなの?
0277デフォルトの名無しさん
NGNGそれC++。
オブジェクト指向であんなものやこんなものを挿(略
0278デフォルトの名無しさん
NGNGおまえ上手いなぁ
0279デフォルトの名無しさん
NGNG何・・?このスレ・・・・・
/ヽ /ヽ
/ ヽ / ヽ
______ /U ヽ___/ ヽ
| ____ / U :::::::::::U:\
| | // ___ \ ::::::::::::::|
| | | | | U :::::::::::::|
| | .|U | | ::::::U::::|
| | | ├―-┤ U.....:::::::::::::::::::/
| |____ ヽ .....:::::::::::::::::::::::<
└___/ ̄ ̄ :::::::::::::::::::::::::|
|\ | :::::::::::::::::::::::|
\ \ \___ ::::::::::::::::::::::::|
0280デフォルトの名無しさん
NGNG∩∩
| |.| |
γ_ _ヽ
( .・.・ ) <もういいからshine・・・)
 ̄ ̄
0281258
NGNGありがとう。
でも、RFCの日本語のページ読んだんですが、概念的なことしか書かれてなかったように思え、
いまいちわかりませんでした。
まずproxyサーバーに繋ぐってことなのだろうか?
検索してもやり方が載ってるページが見つからない。
もうちょっとヒントくれる人いませんか?
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG翼嫁
http://x68000.startshop.co.jp/~68user/net/
0284
NGNG0285デフォルトの名無しさん
NGNG概念的?? いきなり36ページ当たりに
Note that the proxy MAY
forward the request on to another proxy or directly to the server
specified by the absoluteURI. In order to avoid request loops, a
proxy MUST be able to recognize all of its server names, including
any aliases, local variations, and the numeric IP address. An example
Request-Line would be:
GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
とかいうのがある気がするんだが。資料から必要な情報だけ抜き出すコツは
早めにつかんでおいたほうが良いよ。
0286デフォルトの名無しさん
NGNGあ、串はhttpからいるのね。勉強になった。
0287デフォルトの名無しさん
NGNGstruct _locus *next;
int value;
}LOCUS
があって、void new_dna(LOCUS **dna_header,int n_bits)という関数でリストを作成してつなげたいのですが、ヘッダがどうなってるのかわかりません。
教えていただけないでしょうか?
0288
NGNGへっだって、**dna_headerのこと?
何がわからんの?
0289デフォルトの名無しさん
NGNG0290287
NGNG0291デフォルトの名無しさん
NGNG0292
NGNG・関数形はそれじゃないとダメなのか?
・引数(n_bits)の意味教えろよ
0293デフォルトの名無しさん
NGNGして全部その順番にくっつけるのかな〜とか位は妄想できるけど、
君の提示した情報だけでプログラムが作れると思う?
まずは仕様をちゃんと固めなさいな。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG消化し切れてない問題は宿題スレで・・・・
0297デフォルトの名無しさん
NGNG教えてください・・・結構考えたけどわからんかったんよ。
0299デフォルトの名無しさん
NGNGとしてここを使おうとするんだろう・・・・
0300デフォルトの名無しさん
NGNGリストの大きさって、何?
バイト数?ビット数?要素数?
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNGだからさあ・・・んなことは凡そ想像はつくけど>>293読めい
0304デフォルトの名無しさん
NGNG0306293
NGNG何をしたいのかちゃんとしたレスポンスないとこっちは何もできないよ。
0307287
NGNG全部その順番にくっつけるでおねがいします。
0308
NGNGなんでリストなのに**が必要なの?リストなら*で充分だろ?
0309
NGNGfor(i=0;;){ locus[i]=(LOCUS*)malloc(sizeof(LOCUS));}
new_dna(locus,i);
みたいなことがしたいのか?
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGなんかプログラマの卵と話をしてるってよりは、お客さんと話ししてる気分(w
0312デフォルトの名無しさん
NGNGあるからな(あったからな。。。)
いい勉強になるだろ。。。
0313デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG>>287で分かるやつがいたら神
0316デフォルトの名無しさん
NGNG勉強にはならないよ。当然あり得る帰結で書いてみて後はトライアンドエラーなんだから。
少なくともボランティアでやる気にはなれんし、それを期待するのは聊か図々しいと思う。
>>287
まず日本語を勉強しなおしてくれ。
0318デフォルトの名無しさん
NGNG漏れの仕事はそんなのばっかしだが。。。
0319デフォルトの名無しさん
NGNGみんなそうだよ。素人さん相手の時は・・・
0320デフォルトの名無しさん
NGNG・リスト中最後の要素のnextの値はどうなるのか
・生成後のvalueの値はどうなるのか
・リストは一度にmallocで割り当ててもいいのか
それとも個々の要素ごとにmallocしなければいけないのか
・途中でmallocに失敗した場合はどうするのか
0322仕様書無しさん
NGNGヘッダは多分、こうなっているのではないでしょうか?
dna.h
#ifndef dna_h
#define dna_h
typedef struct _locus{
struct _locus *next;
int value;
}LOCUS
void new_dna(LOCUS **dna_header, int n_bits);
#endif
0323デフォルトの名無しさん
NGNGLOCUSの後ろに;がほしい
0324デフォルトの名無しさん
NGNG0327ーーーーー
NGNGリストってほんとに分かってるのか?
一応リストの作り方かいとくな。
LOCUS *locus = (LOCUS*)malloc(sizeof(LOCUS)),*head;
head = locus;
for(作りたいだけ){
locus->next = (LOCUS*)malloc(sizeof(LOCUS));
locus = locus->next;
}
こんなかんじ。
あとはエラー処理とかしる。
0328デフォルトの名無しさん
NGNG最後の要素の次なんてないです。
終了の意味が分かりません、
0329デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGそのポインタに要素を追加するんだろ、きっと。
void new_dna(LOCUS **dna_header, int n_bits)
{
while (n_bits > 0) {
LOCUS *locus = malloc(sizeof(LOCUS));
if (locus == NULL) {
エラー;
}
locus->next = *dna_header;
**dna_header = locus;
}
}
0332デフォルトの名無しさん
NGNGn_bits-- するの忘れてた。
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNGそこまで解ってるなら、あとはCの文法が解らないのかな?
それは置いといて、さっきから「はよ教えんかい!」みたいな態度は感心しないな。
0335デフォルトの名無しさん
NGNG確かにconstじゃないけど引数の値を操作するのはいかがなものかと。
0336デフォルトの名無しさん
NGNG親切のふりしてプログラミング技術を見せびらかす火魔神と
たま〜にマジで引っかかって熱くなる親切な人が
火花をチラシ合うスレはここですか?
0337デフォルトの名無しさん
NGNGby value なのはいーじゃんと思う。
0338デフォルトの名無しさん
NGNG> なお、課題の○投げは一応別スレへ、ということでお願いします。
0339デフォルトの名無しさん
NGNG他に引数がLOCUS**型をしてる理由を思いつかんのだが。
ありがちなパターンだろ。
0340287
NGNG0341デフォルトの名無しさん
NGNG有害なだけジャン。
0342デフォルトの名無しさん
NGNG掛布さんの解説でした。
0343デフォルトの名無しさん
NGNGそれじゃ釣れない。
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG初心者ってわけでもないんですが、
前からちょっと悩んでる事があるんで
教えてつかあさい。
unsigned intが32bitのマシンで、
unsigned int bitmap[N];
という32Nビットのビットマップがあるとき、
「nビット連続して1が立っているのは、先頭から何ビット目か」
を探すのはどうやったら速いでしょう?アセンブラはナシで。
あ、ちなみにLSB, MSBの順序はどっちでも良いです。
0350349
NGNG0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNGnは32より大きくなることもあるのか?
0354デフォルトの名無しさん
NGNG{
int i, j, count = 0;
unsigned int bitmap[N];
for (i = 0; i < N; i++) {
for (j = 0; j < 32; j++) {
if ( (bitmap[i] >> (32 - j)&1 ) {
count++;
if (count == n)
return i * 8 + j;
}
else
count = 0;
}
}
return -1;
}
0355デフォルトの名無しさん
NGNG0356アマグラマ1号 ◆r6Wx8cCc
NGNG0357デフォルトの名無しさん
NGNGいや言いたいことは分かるんだけどさ
0358デフォルトの名無しさん
NGNG0359アマグラマ1号 ◆r6Wx8cCc
NGNG0360デフォルトの名無しさん
NGNGXビット目が0
n-1ビット読み飛ばして1行目へ
Xビット目が1
前後n-1ビットを調べる
見つからなかったらn-1ビット読み飛ばして1行目へ
見つかったらループ抜ける
0の多いデータ中なら速い・・はず
0361349
NGNG-(1 << n)
でnビットのマスク作って、ワード単位でANDとって逝くのが
速いんじゃないかと…
n > 32の時は、
xビット1の並び
32ビット全部1がyワード
zビット1の並び
x + z = n % 32
y = n / 32
というパターンを探すのかな、とか。
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNGじゃぁ、自分で作れよ。
だいたいn<=32だったら楽だろ
0364349
NGNGやりたいんですけど、うまい方法無いですかね。
0365アマグラマ1号 ◆r6Wx8cCc
NGNG#define BITSOF(type) (sizeof (type) * 8)
int search(unsigned* bitmap, int N, int n)
{
const unsigned bits = BITSOF(*bitmap);
const unsigned maxbit = 1 << (bits - 1);
for(int i = 0, jmin = 0; i < N * bits + n - 1;)
{
for(int j = n - 1; j >= jmin; j--)
{
if((bitmap[(i + j) / bits] & (maxbit >> (i + j) % bits)) == 0)
{
i += j + 1;
jmin = n - (j + 1);
goto NOT_RET;
}
}
return i;
NOT_RET:;
}
}
0366アマグラマ1号 ◆r6Wx8cCc
NGNG最後に return -1; でも追加。
0367デフォルトの名無しさん
NGNG0368アマグラマ1号 ◆r6Wx8cCc
NGNGすんまそん。
0369デフォルトの名無しさん
NGNGint bl[256] ; /* 左(上の桁)から数えた時に1が並んでる桁数 */
int bm[256] ; /* 1バイト内で1が並んでる最大のビット数 */
int br[256] ; /* 右(下の桁)から数えた時に1が並んでる桁数 */
実際にはこんな感じ
0 → 00000000 → bl[1]=0, bm[1]=1, br[1]=0 ;
1 → 00000001 → bl[1]=0, bm[1]=1, br[1]=1 ;
2 → 00000010 → bl[2]=0, bm[2]=1, br[2]=0 ;
3 → 00000011 → bl[3]=0, bm[3]=2, br[2]=2 ;
:
127 → 01111111 → bl[127]=7, bm[254]=7, br[254]=7 ;
128 → 10000000 → bl[128]=1, bm[254]=1, br[254]=0 ;
:
253 → 11111101 → bl[253]=6, bm[253]=6, br[253]=1 ;
254 → 11111110 → bl[254]=7, bm[254]=7, br[254]=0 ;
255 → 11111111 → bl[255]=8, bm[255]=8, br[255]=8 ;
後は、キャストして、適当に計算すれば、それなりに速そうな気が…
0370デフォルトの名無しさん
NGNG× 0 → 00000000 → bl[1]=0, bm[1]=1, br[1]=0 ;
○ 0 → 00000000 → bl[0]=0, bm[0]=0, br[0]=0 ;
0371デフォルトの名無しさん
NGNG| まじでともっちと
\
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ´Д`)
/⌒ ⌒ヽ
/_/| へ \
(ぃ9 ./ / \ \.∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ ./ ヽ ( ´Д` )< やりたいです。
( / ∪ , / \_______
\ .\\ (ぃ9 |
.\ .\\ / / ,、
> ) ) ./ ∧_二∃
/ // ./  ̄ ̄ ヽ
/ / / ._/ /~ ̄ ̄/ /
/ / / )⌒ _ ノ / ./
( ヽ ヽ | / ( ヽ、
\__つ).し \__つ
0372デフォルトの名無しさん
NGNGでも結構いるんだよね。そういうひと。
例の先輩とか(ワラ
0373デフォルトの名無しさん
NGNGよほど無駄なことをしなければどんな方法でも対して変わらない気がする。
わかりやすい方法でいいと思うんだけど。
0374デフォルトの名無しさん
NGNGお前の発言って、どんな問題に対しても言える事だな。(w
#define EvaluateAlgorithm(algorithm)\
(isdull(algorithm)?MUDANAKOTO_YARISUGI:DOREDEMO_ONAJI)
0375どうでもいい回想(その1)
NGNG「やはり、これは・・・」
「・・・コンパイラに問題ありですね。」
「ベンダーのサポートを受けましょう。」
「コンパイラのライセンスは他プロジェクトからのコピーなので、
今回その選択肢はありません。」
「何ィ〜!!」
〜おしまい〜
0376どうでもいい回想(その2)
NGNG「・・・やはり、これは・・・」
「・・・コンパイラに問題ありですね。」
「ループカウンタにはintを用いよ、という事ですね。」
「全ソースを見直しましょう。」
(お、お前ら、ループカウンタにcharを使うんじゃねえ〜!!
それでメモリ節約したつもりかぁ〜!!)
「さて、今後をどうするかですが・・・」
「ベンダーに連絡しますか。」
「・・・サポート期間は3年前に切れています。」
「阿呆かぁ〜!!ベンダーに連絡しても、
『新バージョンのご案内』が来て終わりじゃあ〜!!」
ちなみにその時の出張先会社のチームの人達は、
ヘッダーの最初と最後につける
#ifndef __XXX_H
#define __XXX_H
#endif
を全く使っていませんでした。
あと、「#defineマクロは小文字で最後は_c」というコーディングルールも持ってました。
〜おしまい〜
0377デフォルトの名無しさん
NGNGキモイです。
0378デフォルトの名無しさん
NGNGってことは、3pですか?
0379デフォルトの名無しさん
NGNGネタだろうけどワラタ
0380デフォルトの名無しさん
NGNGあほか。
0381デフォルトの名無しさん
NGNG前にメンバとして使っていたものが出てきてしまいます。
今は,メンバとして,使っていないんですが。
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNGを関数に引数として送りたいのですが,うまくいきません
Kansuu(Hairetu,100);
void Kansuu(char *Hanregu)
{
printf("モナー\n");
}
0384デフォルトの名無しさん
NGNGとかにせんと。
つかなんで はいれぐ?
0385デフォルトの名無しさん
NGNGおちゃめごころから
0386385
NGNGchar Hairetu[20][20];
Kansuu(&Hairetu);でアドレスを渡し、
void Kansuu(char *Hai)
{
Hai[0][0]=5;
}
というような感じで,アドレスを参照して,数字を入れたいのですが
>>384
関数の部分はそれでいいんですよね?
0387デフォルトの名無しさん
NGNG使える?
0388manko chinko
NGNG>Kansuu(&Hairetu);でアドレスを渡し、
&は必要ないですね。
0389386
NGNGKan(Hairetu[20];
void Kan(char TempHani[][20])
{
}
関数の宣言はvoid(char *);です。
0390デフォルトの名無しさん
NGNGchar Hairetu[20][20];
とかになってるのだろうから、
Kan(Hairetu[20]);
では呼ばれたがわに渡されるのは一次元の配列(ポインタ)と等しくなる。
だから呼び出すときは
Kan(Hairetu);
だけでオッケー。
void Kan(char TempHani[][20])
はおかしい。[][20]がおかしい。
なぜ入れ替わってるか?
void Kan(char TempHani[20][20])
と
void Kan(char *TempHani[20])
も試してみること。
あと慣れるまでは2次元配列を使わないことをお勧めする
(それかほかの関数を呼び出さないように)。
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG人の話聞けよ。
0393デフォルトの名無しさん
NGNG0394manko chinko
NGNG>>393
???
0395デフォルトの名無しさん
NGNGっていうかscanfの解説なんて入門書だったら必ず載ってますよね。。。
>>395
???
0396manko chinko
NGNG>っていうかscanfの解説なんて入門書だったら必ず載ってますよね。。。
載ってますね。で、何がいいたいんでしょうか?:-)
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGってどういうこと?VC++のエディタとかの話?
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNG(*ptr).data = 10; ←(w
0406デフォルトの名無しさん
NGNG表面上の知識の欠落を笑うよりも、
(おそらくは独力で)構造体への
ポインタの操作が有用だという事に
気づいたそのセンスに活目すべし。
漏れには、こんな些細な事を(wっている奴
なんかより、このコードを書いた奴の方が
ずっと将来性がある様に見受けられるが。
0407デフォルトの名無しさん
NGNGそだね。同意。
0408デフォルトの名無しさん
NGNG知識の欠落と断じるのは早いのでは?
私の場合は間接参照を嫌って>>405のように書く場合もあります。
でもこれって少数派かなぁ?
0409超初心者です
NGNGこれを用いるにはライブラリ部にどのような行を加えたらよいか?
0410超初心者です
NGNG0411デフォルトの名無しさん
NGNGライブラリ部ってなんですか?
>>410
ありません。
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG0414超初心者です
NGNGっていう問題を教えてください
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGsyukudaitoha kgiraneedaro baka?
0417デフォルトの名無しさん
NGNGネタならさげるように
0418f
NGNG0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG最近よく見かけますが、誰も読んでないと思うんです。
0422デフォルトの名無しさん
NGNGいらない。>>7をミロ
0423f
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNGあるだろ。
昔はみんなああやってた。
0426f
NGNG0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG皆後者には答えるが前者には答えないという罠
0431デフォルトの名無しさん
NGNG>>425が答えてるぞ。
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGGUIのリソースエディタがない
0435sage
NGNGこれはどうしようもない事なのでしょうか??
DOSプロンプトの仕様が違うとか・・・。
ネットで見つけた、DOSプロンプトアプリ上のグラフィック関数なんか
コンパイラできても表示が意味不明で・・・。
0436デフォルトの名無しさん
NGNGDOSリアルタイムで知らない人か?
その辺から勉強した方が良いと思われ。
0437デフォルトの名無しさん
NGNG○ WinXPでは、Win9X用に作った
0438デフォルトの名無しさん
NGNG初心者学生で、先生の言うとおりにしてるだけなんで
全く意味不明です。
VC++6.0を明らかに使いこなせてない・・・。
0439シッタカなので信用するな
NGNG(or Win32Api使ってても、CopyMemoryとか基本的なのしか使ってない)
のだったら多分Win9x でもWinXPでも変らんと思うよ
0440デフォルトの名無しさん
NGNGまぁ、今更ですし、他のやり方と比べてないので
速いかどうかも、分かりませんが、せっかく作ったので…
といっても、結構、手を抜いてる為
返る値は、一致した後のintの添字だったりしますので
必要な場合は、breakの前で適当に処理して下さい
size_t search ( unsigned int *ip, size_t size, size_t n ) {
unsigned int table, ret, n06, n12, count = 0 ;
static unsigned short search_table [256] = {
0x0000, 0x0041, 0x0040, 0x0082, 0x0040, 0x0041, 0x0080, 0x00c3,
0x0040, 0x0041, 0x0040, 0x0082, 0x0080, 0x0081, 0x00c0, 0x0104,
0x0040, 0x0041, 0x0040, 0x0082, 0x0040, 0x0041, 0x0080, 0x00c3,
0x0080, 0x0081, 0x0080, 0x0082, 0x00c0, 0x00c1, 0x0100, 0x0145,
0x0040, 0x0041, 0x0040, 0x0082, 0x0040, 0x0041, 0x0080, 0x00c3,
0x0040, 0x0041, 0x0040, 0x0082, 0x0080, 0x0081, 0x00c0, 0x0104,
0x0080, 0x0081, 0x0080, 0x0082, 0x0080, 0x0081, 0x0080, 0x00c3,
0x00c0, 0x00c1, 0x00c0, 0x00c2, 0x0100, 0x0101, 0x0140, 0x0186,
0x0040, 0x0041, 0x0040, 0x0082, 0x0040, 0x0041, 0x0080, 0x00c3,
0x0040, 0x0041, 0x0040, 0x0082, 0x0080, 0x0081, 0x00c0, 0x0104,
0x0040, 0x0041, 0x0040, 0x0082, 0x0040, 0x0041, 0x0080, 0x00c3,
0x0080, 0x0081, 0x0080, 0x0082, 0x00c0, 0x00c1, 0x0100, 0x0145,
0x0080, 0x0081, 0x0080, 0x0082, 0x0080, 0x0081, 0x0080, 0x00c3,
0x0080, 0x0081, 0x0080, 0x0082, 0x0080, 0x0081, 0x00c0, 0x0104,
0x00c0, 0x00c1, 0x00c0, 0x00c2, 0x00c0, 0x00c1, 0x00c0, 0x00c3,
0x0100, 0x0101, 0x0100, 0x0102, 0x0140, 0x0141, 0x0180, 0x01c7,
0x1040, 0x1041, 0x1040, 0x1082, 0x1040, 0x1041, 0x1080, 0x10c3,
0x1040, 0x1041, 0x1040, 0x1082, 0x1080, 0x1081, 0x10c0, 0x1104,
0x1040, 0x1041, 0x1040, 0x1082, 0x1040, 0x1041, 0x1080, 0x10c3,
0x1080, 0x1081, 0x1080, 0x1082, 0x10c0, 0x10c1, 0x1100, 0x1145,
0x1040, 0x1041, 0x1040, 0x1082, 0x1040, 0x1041, 0x1080, 0x10c3,
0x1040, 0x1041, 0x1040, 0x1082, 0x1080, 0x1081, 0x10c0, 0x1104,
0x1080, 0x1081, 0x1080, 0x1082, 0x1080, 0x1081, 0x1080, 0x10c3,
0x10c0, 0x10c1, 0x10c0, 0x10c2, 0x1100, 0x1101, 0x1140, 0x1186,
0x2080, 0x2081, 0x2080, 0x2082, 0x2080, 0x2081, 0x2080, 0x20c3,
0x2080, 0x2081, 0x2080, 0x2082, 0x2080, 0x2081, 0x20c0, 0x2104,
0x2080, 0x2081, 0x2080, 0x2082, 0x2080, 0x2081, 0x2080, 0x20c3,
0x2080, 0x2081, 0x2080, 0x2082, 0x20c0, 0x20c1, 0x2100, 0x2145,
0x30c0, 0x30c1, 0x30c0, 0x30c2, 0x30c0, 0x30c1, 0x30c0, 0x30c3,
0x30c0, 0x30c1, 0x30c0, 0x30c2, 0x30c0, 0x30c1, 0x30c0, 0x3104,
0x4100, 0x4101, 0x4100, 0x4102, 0x4100, 0x4101, 0x4100, 0x4103,
0x5140, 0x5141, 0x5140, 0x5142, 0x6180, 0x6181, 0x71c0, 0x8208
} ;
/* 続きます */
0441440
NGNGn12 = n06 << 6 ;
for ( ret = 0 ; ret < size ; ret++ ) {
table = search_table[ ( ( *(ip+ret) ) >> 24 ) ] ;
if ( ( count + table ) >= n12 || ( table & 0x03c0 ) >= n06 ) break ;
count = ( table > 0x08000 ) ? count + 0x08000 : ( table & 0x0f ) << 12 ;
table = search_table[ 0x0ff & ( ( *(ip+ret) ) >> 16 ) ] ;
if ( ( count + table ) >= n12 || ( table & 0x03c0 ) >= n06 ) break ;
count = ( table > 0x08000 ) ? count + 0x08000 : ( table & 0x0f ) << 12 ;
table = search_table[ 0x0ff & ( ( *(ip+ret) ) >> 8 ) ] ;
if ( ( count + table ) >= n12 || ( table & 0x03c0 ) >= n06 ) break ;
count = ( table > 0x08000 ) ? count + 0x08000 : ( table & 0x0f ) << 12 ;
table = search_table[ 0x0ff & ( *(ip+ret) ) ] ;
if ( ( count + table ) >= n12 || ( table & 0x03c0 ) >= n06 ) break ;
count = ( table > 0x08000 ) ? count + 0x08000 : ( table & 0x0f ) << 12 ;
}
return ret ;
}
0442440
NGNGあまり大きくないので、(掲示板に書き込むには大き過ぎたようですが)
速さの事も考えると、そのままでも良いかなと…
nが9以上の場合は、( table & 0x03c0 ) >= n06 ) の部分が必要ないので
8以下と、9以上で、分けて処理をした方が良いかも
#define BIT 8
unsigned short *mkstable ( void ) {
unsigned short num, left, max, right, buf1, buf2 ;
unsigned short *search_table ;
search_table = (unsigned short *) malloc ( sizeof (short int) << BIT ) ;
if ( search_table ) {
for ( num = 0 ; num < ( 0x01 << BIT ) ; num++ ) {
left = max = right = 0 ;
while ( ( ( 0x01 << ( BIT - 1 ) ) >> left ) & num ) left++ ;
buf1 = 0 ;
do {
buf2 = 0 ;
while ( ( 0x01 << buf1++ ) & num ) buf2++ ;
if ( max < buf2 ) max = buf2 ;
}
while ( buf1 < BIT ) ;
while ( ( 0x01 << right ) & num ) right++ ;
*(search_table+num) = ( left << 12 ) | ( max << 6 ) | right ;
}
}
return search_table ;
}
0443デフォルトの名無しさん
NGNGちょと面白そうなので、俺も参加。
int search( /* 返り値 -> 1:見つかった, 0:見つからなかった */
unsigned char *a, /* 検索の対象のポインタ */
int l, /* 検索する対象のサイズ(バイト単位) */
int sp, /* 検索対象のパリティー */
int sc, /* 検索対象のビット数 */
int *fp, /* 検索結果の位置(バイト)*/
int *fb /* 検索結果の位置(ビット) */ )
{
struct { int l, r, f; } t[ 256 ], *b;
int i, j, c[ 8 ], n, d = 0;
for( i = 0 ; i < 256 ; i ++ ) {
int p = ( i >> 7 ), q, r, s;
b = &t[ i ];
for( c[ n = 0 ] = 0, q = p, j = 8 ; -- j >= 0 ; c[ n ] ++ )
if( q != ( r = ( ( i >> j ) & 1 ) ) ) {
c[ ++ n ] = 0;
q = r;
}
n ++;
b->l = ( ( sp == p ) ? c[ 0 ] : 0 );
for( b->f = -1, s = 0, q = p, j = 0 ; j < n ; j ++, q = !q ) {
if( ( sp == q ) && ( sc <= c[ j ] ) )
b->f = s;
s += c[ j ];
}
b->r = ( ( sp != q ) ? c[ n - 1 ] : 0 );
}
for( n = 0 ; n < l ; n ++ ) {
b = &t[ a[ n ] ];
if( sc <= b->l + d ) {
*fp = n - 1 - ( ( d - 1 ) / 8 );
*fb = 8 - d % 8;
return 1;
}
if( b->f != -1 ) {
*fp = n;
*fb = b->f;
return 1;
}
if( b->r != 8 )
d = 0;
d += b->r;
}
return 0;
}
0444443
NGNG#include <stdio.h>
int main( void )
{
unsigned char t[] = { 0x06, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, };
int tfp, tfb;
if( search( t, sizeof( t ), 1, 10, &tfp, &tfb ) )
/* 1が連続して10ビット立っている位置を検索する */
printf( "%dバイト目の%dビット目で見つけました\n", tfp, tfb );
else
printf( "見つかりません\n" );
return 0;
}
0445デフォルトの名無しさん
NGNG正確に動く(バグが無い)のはあくまで最低条件なんだから、
絶対マッチしないパターンを作り出してパフォーマンスをはかるテストルーチン書いてくれ
0446443
NGNGまぁ、ご希望とあらば・・・
てすと(Ver 1.1)
int main( void )
{
unsigned char t[] = { 0x06, 0x01, 0x80, 0x00, 0x00, };
int tfp, tfb;
time_t start, end;
int r;
time( &start );
r = search( t, sizeof( t ), 1, 10, &tfp, &tfb );
/* 1が連続して10ビット立っている位置を検索する */
time( &end );
if( r )
printf( "%dバイト目の%dビット目で見つけました\n", tfp, tfb );
else
printf( "見つかりません\n" );
printf( "検索時間:%f\n", difftime( end, start ) );
return 0;
}
0447デフォルトの名無しさん
NGNGレベルヒクッ!
0448443
NGNGスマソ、バグはけーん。
*fp = n - 1 - ( ( d - 1 ) / 8 ); ==> *fp = n - ( d + 7 ) / 8;
*fb = 8 - d % 8; ==> *fb = 7 - ( d + 7 ) % 8;
ここらへん、テキトーに -1 とかつけただけだったからなぁ
(今回もそうだけど・・・)。
>>447
つーか、「てすと」っていったって usage の意味で
つけただけのコードなんだけど・・・
速いかどうかは自分で動かして評価すればいいだけじゃん?
0449デフォルトの名無しさん
NGNG「何に使うのか」
「現在どの程度の速度で、それでどうして不満なのか」
を明らかにしてないくせに、
>>361で
>でnビットのマスク作って、ワード単位でANDとって逝くのが
>速いんじゃないかと…
こういうのが早そうだから誰かコーディングして的な発言してたり
どうしようもない屑野郎だよな
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG文字列検索とか?ソートとか?
0454デフォルトの名無しさん
NGNGハァ?
0455デフォルトの名無しさん
NGNGまあ「お題」もらって暇つぶせたからいいんじゃね〜の?
どうせこのスレ他にやることないんだし。
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNGいいえ。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGだからといってlongをdoubleに変換して何も失わないという
わけではない。
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGmainで再帰呼び出しやっても良いものですか?
0462デフォルトの名無しさん
NGNGやってみて、自分で判断しろ
0463デフォルトの名無しさん
NGNGどんな質問にも使える万能の答登場。
0464デフォルトの名無しさん
NGNGまさに伝家の宝刀
0465デフォルトの名無しさん
NGNGしかし実は何も答えていないという罠。
0466デフォルトの名無しさん
NGNG伝家の宝刀を抜かれた相手は決まってそう言うんだよ・・・
0467デフォルトの名無しさん
NGNGしゅーりょーーーーーーーーー
0468デフォルトの名無しさん
NGNG「〜のやり方を教えてください」って質問の場合はどーすんだよぉ。
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNGだからそれくらいやってみろっつってんだろバカ
0471デフォルトの名無しさん
NGNGint main(int argc, char **argv){
if(argv)
printf("%d\n",argc*main(argc-1,NULL)) ;
else
return argc?argc*main(argc-1,NULL):1 ;
return 0 ;
}
0472デフォルトの名無しさん
NGNG{
return main();
}
0473デフォルトの名無しさん
NGNG書き込むんですか?linux/fs.hみたいな必須のファイルに
staticな関数がガリガリか書かれているのを見ると萎えます。
それとも様々なターゲットに向けて書かれているからしょうがないので
しょうか?
今はLinuxは辞めてNetBSDでカーネルの勉強しようとかと思ってます。
0474デフォルトの名無しさん
NGNGインライン展開したいからに決まってるだろヴォケ。
へッダに書かなきゃどこに書くんだよ。
0475デフォルトの名無しさん
NGNGそれなら普通はインライン関数用のファイルを作るもんじゃないの?
NetBSDのソースは読んでないからしらないが。
0476デフォルトの名無しさん
NGNGインライン関数用のファイルってへッダじゃないの?
0477デフォルトの名無しさん
NGNGそう。だから型の定義とは何で別にしないのかと。
0478デフォルトの名無しさん
NGNGでも本当に凄いPGは言葉遣いもいやなくらい丁寧
0479デフォルトの名無しさん
NGNGファイルシステムで使うマクロ定義は当然fs.hに書くよね?
だったらファイルシステムで使うインライン関数定義も
fs.hに書くのが当然だろ。
0480デフォルトの名無しさん
NGNGfs_types.h
fs_constants.h
fs_macros.h
fs_functions.h
等々と分けろと?
C++でプログラム書くときにもクラス定義とメソッド定義と定数定義を
分けるのかね。
0481デフォルトの名無しさん
NGNGそんなもんですか。
今まで自分がやってきた方法が変なのか。。。鬱だ
0482デフォルトの名無しさん
NGNGC++スレに逝けアフォども
0484彦一
NGNG0485デフォルトの名無しさん
NGNG1つのファイルで定義した方がいいように思うが、
>>481 は今までどうやってたのよ?
0486483
NGNG0487デフォルトの名無しさん
NGNG恥かしいからあんま突っ込まないでくれ(泣
C++でクラスの定義と実際のメソドはべつに書くよね?
それと一緒で単純に関数マクロは別ファイルにしてた。
0488デフォルトの名無しさん
NGNG\\ ∧_∧∧_∧ ∧∧
\ ( ´_ゝ`) `∀´>・∀・)*゚∀゚)
> ⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ
/ へ \ へ \ へ \ へ \ へ \
/ / \\ \\ \\ \\ \\
レ ノ ノヽ_つノ ヽ_つ ヽ_つ ヽ_つ
/ / / / / / / / / /
/ /| / /| / /| / /| / /|
( / | ( / | |\_|\_|\_|\_|\________
| | ヽ | | ヽ /
| |、 \ | ともっちと、やりたい・・・
| / \ ⌒l |
| | ) / \__________________
ノ ) し'
(_/
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGどこにアロー演算子が解説してない書籍があるんだ?
それともアロー演算子は知らなくてもいいとおもってるんじゃ、、、、、
0491デフォルトの名無しさん
NGNGそんなに大勢でともっちとやるの?
ともっちがかわいそうだよ。
0492デフォルトの名無しさん
NGNG一番右側にある腕らしきものは何ですか?
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG擦違い。逝ってよし。
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNGlongとpointerは同じビット長であることが
重要なことなんですか。
0500デフォルトの名無しさん
NGNGずさ
by ともっち
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG∧_∧ ( )
( ´Д`) //。
/⌒ ⌒ヽ// 。
/_/| // 。
(ぃ9 ./ /// 。
/ //3
( ///
\ .\\
.\ .\\
> ) )
/ //
/ / /
/ / /
( ヽ ヽ
\__つ)
ともっち!我慢できないよぅ!
0503デフォルトの名無しさん
NGNGポインタに対して数値演算(アドレスの上位xxビットで表を引くとか)
ができないと欝だし、数値演算の結果をポインタに変換できないのも
困る。なので、ポインタと同じサイズの整数型が1つはホスィー。
0504デフォルトの名無しさん
NGNGそれを言うならintとポインタな気もする。
0505デフォルトの名無しさん
NGNG128bitのアドレス空間は
この先20年はないものと考えていいですよね?
0506デフォルトの名無しさん
NGNGでも64bitUNIXはintは32bitのままなんですよね?
0507デフォルトの名無しさん
NGNG勉強不足でした。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGMoore's Law(メモリは3年で4倍)が正しいとして、
32bitで不足ぎみになったのが1990年ごろとすると、
64bitで不足するのは2038年ごろか。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNGというふうに(unsigned long)をつけるべくらしいですが,皆さんはやっていますか?
0513デフォルトの名無しさん
NGNGなんでつけるべくなの?
0514デフォルトの名無しさん
NGNG(size_t)の方が良くないか?
0515デフォルトの名無しさん
NGNG処理系によって大きな値が帰ってくる場合があるから?
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNGsize_t型を知らないんだろ。きっと
0519デフォルトの名無しさん
NGNGキタ━━(゚∀゚)━━ァ!
しかしIntelはムズイです
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGってすればいいのかな?
0522デフォルトの名無しさん
NGNGさっさとキャストはいらんという結論に達してくれ。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNGヘッダ見てsize_tの定義見てみる。
0525デフォルトの名無しさん
NGNGなんで要ると思うの?
0526デフォルトの名無しさん
NGNGsize_t型を受け取る関数に
size_t型をの値を渡すんだから
キャストが要るわけない。
0527デフォルトの名無しさん
NGNG文字列検索とか?ソートとか?
0528デフォルトの名無しさん
NGNG論理的思考のことをそんなみょうちくりんな言葉で表現する人間は詐欺っちです。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGそう言われてC言語の瑣末に飛躍するところなんか、的を射た指摘だったっぽいな
0531デフォルトの名無しさん
NGNGロジック構築能力−>授業でその英語聞いた−>トランジスタトランジスタロジック−>パソコン?−>PC−>難しい−>C言語−>ウマー
0532デフォルトの名無しさん
NGNGEquational Logic理論を構築する能力のことだ。
Cとは全くといってよいほど無縁。
0533デフォルトの名無しさん
NGNG0534阿呆
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1020785918/174-
あともうひといきなんです。
誰かお願い!
0535デフォルトの名無しさん
NGNG0536アクビ
NGNGまず、データファイルから1行を読み込んで、
char *s="a1.a2.a3.a4";
strtok(s,',');
strtok(NULL,',');・・・
としてa1、a2、a3、a4を取得しています。
でも、データが
"a1,,,a4"
の場合、a1とa4しか取得できません。
a2とa3がNULLであることまで知りたいのですがどうしたらいいでしょうか?
#とりあえず前処理として、",,"を",@,"などに置換してなんとかしようとしたのですが、
#だいぶ冗長な処理になってしまいそうで困っています。
0537
NGNGデータの形式がそこまでばっちり決まってるんなら自作すれば?
0538デフォルトの名無しさん
NGNG君の用途には使えないよ。
.@.に置き換えるのは良いアイデアだけど、いっそのこと、Cの勉強がてら自分で作っちゃえば?
0539
NGNG0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGCライブラリの中でも一番気持ち悪い関数だぞ
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGアホか?
入力長が定まらないデータに対してscanfなんか使えるかよ
0544デフォルトの名無しさん
NGNGホントに上限がないという仕様なのか?
んじゃ1行読み込むのもfgets使わないんだな?
実用上4096文字とかで足りるなら、
fgetsとsscanfで十分じゃん。
0545デフォルトの名無しさん
NGNG問題を刷りかえるなよ。
scanfとsscanfは違うだろ。
0546デフォルトの名無しさん
NGNGんじゃ「fgetsとsscanfでいいじゃん」
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGそれぐらい数分で作れよ。
0549デフォルトの名無しさん
NGNG長さを越えたら動かないのは同じだと思うんですが、なぜsscanfだと
いいんですか?
0550デフォルトの名無しさん
NGNGもうあるんだからいいじゃん。
これに使わないなら(s)scanfは何のため?
0551デフォルトの名無しさん
NGNG想定外のデータがきたとたん、あぼーん。
0552デフォルトの名無しさん
NGNG(使い方が下手れなだけでは…)
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNGじゃあどうするの?
カンマまでgetcで切り出すにしても、
文字列の長さにはどっかで限度があるでしょ?
0555デフォルトの名無しさん
NGNGヒープ使えば?
足りなかったらreallocで伸ばしていけばいいし。
0556デフォルトの名無しさん
NGNGでも、入力の仕様決めといてfgets使った方が良いと思うな。
長すぎたらエラーにすれば良い。
いちいちそんな趣味的なことやってたら時間が無駄すぎる。
0557デフォルトの名無しさん
NGNGcsvは入力の仕様なんて決まってねーんだよ
適当にやるか、ある出力例に対して準拠するか、ぐらいしかない。
>いちいちそんな趣味的なことやってたら時間が無駄すぎる。
この程度で趣味的ですか。
おめでてーやつ。
0558デフォルトの名無しさん
NGNGハァ? >>536は汎用CSVライブラリ作ろうとしてるのかよ?
単にCSV形式でフィールド数や内容も定まったデータだろ?
>>536みたいな初心者にCSV一般を読み取るようなライブラリ
書かせる工数かけるならそれこそCSVライブラリ買った方が
安いじゃねーか馬鹿が。
ライブラリ使わずにいちいち車輪の再発明するのは日曜プロ
グラマのすることだよ、この給料泥棒が。
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG仕様決まってないなら自分で書くこともできないじゃないか。
0567デフォルトの名無しさん
NGNGどう違うか30秒ほどなやんだ。
0568デフォルトの名無しさん
NGNG一行処理はこんな感じでうか?
while((c=fgetc(stdin)) != '\n'){
if(c == ','){
while((c=fgetc(stdin)) == ',')
fprintf(stdout," NULL");
if(c == '\n'){
fprintf(stdout, " NULL");
break;
}
fputc(' ',stdout);
}
fputc(c, stdout);
}
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNGなんか凄いDQNなコード...
fgetc(stdin)とか
fputc(..., stdout)とか
fprintf(stdout, ...)とか
もうやめてって感じ。
EOFの処理もしてないしさー。
だいたいこれ何? 前処理フィルタ?
どうせなら読み込むコード書いてくれよ。
0571568
NGNG前処理フィルタって?
たしかになんだろね・・これ
よくわからないことはやらなきゃよかったよ〜( ´Д⊂ヽ
0572デフォルトの名無しさん
NGNGなにをするプログラムなのか解説求む(ワラ
0573デフォルトの名無しさん
NGNGコンマが連続してる時は中身が無いと見なしてでNULLを入れます
手抜きだから使い物にならんけど・・(T-T)
0574デフォルトの名無しさん
NGNG0575CHI-CHI
NGNGRS232CのOn/offを切り替える、プログラムってどんな感じになりますか?お願いします。
0576デフォルトの名無しさん
NGNG( ´Д` )< キャー!!
/, / \___________
(ぃ9 |
/ /、
/ ∧_二つ
/ /
/ \
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG(つか、教科書に載ってるコードじゃん。)
CSV使いたい人はこれで解決。
0579デフォルトの名無しさん
NGNG0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNGtypedef struct{
char *h[0];
char *k;
char *v;
}FORM;
というコードを書いてコンパイルできていたのですが、bccではh[0]の行でエラーが出てしまいました。
h[0]とkが常に同じ、h[1]とvが常に同じ、というコードにしたいのですが、
一般的にはどう書いたらいいのでしょうか。
0582デフォルトの名無しさん
NGNG(実装依存とおもうけど)
0583579
NGNGそうですか・・・・・
でももうprintf("わかりませんでした");と書いて提出したので
解決しました
0584デフォルトの名無しさん
NGNGつーか、char *h[0]って何?
0585デフォルトの名無しさん
NGNG⊂ ヽ ⊂ ヽ ⊂ ヽ ⊂ ヽ ⊂ ヽ
\\ ∧_∧∧_∧ ∧∧
\ ( ´_ゝ`) `∀´>・∀・)*゚∀゚)
> ⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ
/ へ \ へ \ へ \ へ \ へ \
/ / \\ \\ \\ \\ \\
レ ノ ノヽ_つノ ヽ_つ ヽ_つ ヽ_つ
/ / / / / / / / / /
/ /| / /| / /| / /| / /|
( / | ( / | |\_|\_|\_|\_|\________
| | ヽ | | ヽ /
| |、 \ | ともっち!俺たち準備はOKだよ!
| / \ ⌒l |
| | ) / \__________________
ノ ) し'
(_/
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNGchar *h[];
にしたら通るんでないかい? どっちにせよ,コンパイラ依存の領域
0588デフォルトの名無しさん
NGNG( ´Д` )< >>586 おまえがばかだ!!
/, / \___________
(ぃ9 |
/ /、
/ ∧_二つ
/ /
/ \
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG( ´Д` )< ともっち!はやくやらせろ!
/, / \___________
(ぃ9 |
/ /、
/ ∧_二つ
/ /
/ \
0591デフォルトの名無しさん
NGNGノ ⌒)
∧_∧ (__/
( ´Д`) / / 。
/⌒ ⌒'/ / 。
/_/| / / 。
(ぃ9 ./ / // 。
/ / /3
( / //
\. \\
\. \\
> ) )
/ //
/ / /
/ / /
( ヽ ヽ
\__つ)
我慢できない、、、、
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG0594これどーすか?
NGNGvoid afo(char *y,char *x);
void afoo(char *x,char *y);
main()
{
char a[] = ">>238は";
char b[] = "一度逝け";
char c[13];
afo(c,a);
afoo(c,b);
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);
}
void afo(char *y,char *x)
{
while(*x)
*y++ = *x++;
*y = '\0';
}
void afoo(char *x,char *y)
{
while(*x)
x++;
while(*y)
*x++ = *y++;
*x = '\0';
}
このCのコードと同じことなんてJAVAでやれば11行で終わる。
0595デフォルトの名無しさん
NGNGどーもこーもバカ
0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGJavaの入出力周りは知らないがそれくらいかかりそうな予感
変数宣言*3、printf*3、括弧*2、関数の頭 = 9行
Cの場合さらに#includeが2つで計11行になりますた
もちろん圧縮すれば3行だけど
0599デフォルトの名無しさん
NGNG大きさ0の配列はCだと使えない。一部のコンパイラ
だと拡張機能として使える(gccとか)。
>>587
char *h[];
という書き方は、「2つ以上メンバを持つ構造体の
最後のメンバ」としてなら許される。途中では
だめ。
union使って問題なしと思うが。
0600デフォルトの名無しさん
NGNGそんな漏れに最終試験問題を出題してください。
0601デフォルトの名無しさん
NGNGC言語のコンパイラを書きなさい(5点)。
0602デフォルトの名無しさん
NGNG入力行の長さに制限のないCSV読み込みルーチンを書きなさい(20点)。
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG入門書っていわれても。レベルが全然わからん。しかも入門書で最終?恐るべき自惚れ。
0606デフォルトの名無しさん
NGNGPOSIX互換のOSを(以下略
0607600
NGNGお前らはCのコンパイラ書けますか?
Cのコンパイラを書けるというのはどの程度のレベルなんですか?
0608デフォルトの名無しさん
NGNGマジレス。書ける。
既存のコンパイラより良いコードを出せとか言われると自信がないが。
レベル…遅いコードでも良いならRMSレベルでなくても書けるだろ。
情報系大学院出た人間ならたいてい書けるはず。
0609デフォルトの名無しさん
NGNGint main( int argc, char * argv[] )
{
str comLine[MAX_PATH+99];
sprintf( comLine, "c:\\Progrm....\\cl.exe %s", argv[1]);
return system( comLine );
}
/*はい5てん*/
0610デフォルトの名無しさん
NGNGC++ならともかく、単にCなら面倒だけどそれほどむずかしくもない。
言語仕様書とターゲットプロセッサの資料などがあれば。
実用に耐えるレベルにするために、コンパイル・リンク速度向上(プリコンパイルヘッダとかインクリメンタル〜とか)、
最適化、ライブラリ整備などまできっちりやるとかなりつらいが・・
C++コンパイラで標準完全実装(loki, boostが完全に動くとか)だとつらそうだー
0611600
NGNGガ━━(゚Д゚;)━━━ン!!!!!
Cのコンパイラが書けてもたいしたことないのか。
プログラミングの道は険しい…
またもマジレス。
入門終えた漏れは次は何をすればいい?
0612デフォルトの名無しさん
NGNGワラタ
ってか、スレ立てた本人はどこへいった
0613デフォルトの名無しさん
NGNG0614600
NGNG漏れは現役高専生です。
今2年生で
電気情報工学科なのですがプログラミングの授業が
全くないので独学で勉強しますた。
0615デフォルトの名無しさん
NGNG初級へと進むんだろな。
書きたいプログラムがあるなら書きなさい。
書いてるうちに「プログラミング作法」とかが
何を言ってるのか分かるようになるんじゃない?
あとは他の言語も覚えると新しい概念が身につく(かも)。
SchemeとJavaは是非やっとくべきだと思う。
0616デフォルトの名無しさん
NGNGLISP インタプリタでも作ると面白いカナ。
0617デフォルトの名無しさん
NGNG最初はwc, head, tail
あと、prとかワイルドカード展開するプログラムとかxargsとか。
0618デフォルトの名無しさん
NGNG機械語やアセンブラの知識は必要ないの?
0619デフォルトの名無しさん
NGNG感想: call-with-current-continuation がプログラムを破壊的に変化させそう。
0620デフォルトの名無しさん
NGNG書いた書いた。
正規表現マッチングなんかもおもしろい。
0621デフォルトの名無しさん
NGNG機械語は必ずしも不要だろうけど
アセンブラは必須だね。
0622デフォルトの名無しさん
NGNG・・・ネイティブコンパイラ作るなら。バイトコードでもいいんでない?
0623デフォルトの名無しさん
NGNGint match(const char *pattern, const char *string);
patternがstringとマッチするなら0で無い値、マッチしないなら0を返す。
pattern中の文字'?'は任意の1文字とマッチする。
'*'は0文字以上の任意の文字列とマッチする。
それ以外の文字は、その文字自身とマッチする。
0624デフォルトの名無しさん
NGNGそのあとにネイティブコードを作るときはやっぱりアセンブラだよね。
Cでもできるのかな。
0625デフォルトの名無しさん
NGNGネイティブコードを生成すること自体はCでも書けるだろ。
知識は必要だろうけど。
0626デフォルトの名無しさん
NGNGpatternの中に*や?がひとつも含まれていなかったら、strcmp(string,pattern)と等価?それともstrstr(string,pattern)と等価?
0627デフォルトの名無しさん
NGNGアセンブリ言語コードを出力すればいいんじゃないの?
そういうコンパイラも多い。
0628デフォルトの名無しさん
NGNGgccとか?
0629デフォルトの名無しさん
NGNGstrcmpと等価ということで。
0630デフォルトの名無しさん
NGNGそう。UnixのたいがいのCコンパイラと
8bitのころのPCのたいがいのCコンパイラ。
DOSだとLSI-C86もそうじゃなかったっけ。
0631デフォルトの名無しさん
NGNGちょっとやってみよう。
再帰使うとうまくゆくかな・・・
0632631
NGNG0633デフォルトの名無しさん
NGNG出題者は再帰を使う回答を用意しますた。
0634デフォルトの名無しさん
NGNGじゃあ補足すると、これぐらいは全部通ればとりあえず合格?
あんまり書くと長くなりすぎるから省略。
assert( match("abc", "abc") != 0 );
assert( match("abc", "abcd") == 0 );
assert( match("?bc", "abc") != 0 );
assert( match("a?c", "abc") != 0 );
assert( match("ab?", "abc") != 0 );
assert( match("ab?", "ab") == 0 );
assert( match("ab*", "abc") != 0 );
assert( match("ab*", "ab") != 0 );
assert( match("a*c", "abbbbbc") != 0 );
assert( match("a*c", "abc") != 0 );
assert( match("a*c", "ac") != 0 );
// 最長一致なら以下のチェック.
assert( match("a*c", "acc") != 0 );
assert( match("a*d*g", "adgabcdefg") != 0 );
0635デフォルトの名無しさん
NGNG#include <stdio.h>
int main(int argc, char **argv)
{
if (argc != 3) {
fprintf(stderr, "usage: %s pattern string\n", argv[0]);
return 1;
}
printf("%smatched\n", match(argv[1], argv[2]) ? "" : "un");
return 0;
}
テストドライバその2
#include <stdio.h>
#include <string.h>
char line[1024];
int main(int argc, char **argv)
{
if (argc != 2) {
fprintf(stderr, "usage: %s pattern\n", argv[0]);
return 1;
}
while (fgets(line, sizeof(line), stdin) != NULL) {
char *eol = strchr(line, '\n');
if (eol != NULL) {
*eol = '\0';
}
if (match(argv[1], line)) {
puts(line);
}
}
return 0;
}
0636デフォルトの名無しさん
NGNG同じテストを何度でも繰り返せ、実行一発で結果がわかる。
0637623
NGNGあ、そうですね。そのテストのほうが良いかも。
ちなみに>>634で用意したテストプログラムは、
その1: patternとstringをコマンドライン引数で与えて
matchedまたはunmatchedをプリントする。
その2: patternをコマンドライン引数で与えて
標準入力から1行ずつ読み込み、マッチする行だけ出力する。
いずれもpatternはちゃんとクオートしないと切ねぇことになる。
0638617=623
NGNGむか〜しワタスィが書いた超簡易grepモドキそのものです。
0639600
NGNG逝ってきます…
0640631
NGNGやりなおそう。
0641631
NGNG0642634
NGNGいかん、このassertだと * があったら無条件で1返せば通ってしまう(笑)
ので追加。
assert( match("a*c", "ab") == 0 );
あと複合系(もっと要る気が)
assert( match("a**?*", "ab") != 0 );
assert( match("a**?*", "a") == 0 );
0643631
NGNG0644デフォルトの名無しさん
NGNGが別のモジュールCを呼んで...という具合にモジュールAを頂点とし
て呼ばれているモジュールすべてを洗い出すにはどうやって調べて
いけばよいのでしょうか?モジュールA、B、Cなどすべてのモジュ
ールのソースはあります。どなたか効率よく調べる方法がありましたら、
教えてくださいませんか。
0645631
NGNGだめですよね?(^_^;)
0646仕様書無しさん
NGNG0647デフォルトの名無しさん
NGNGこのへんはどう? http://ctool.sourceforge.net/
他にもいろいろあるはず。
0648デフォルトの名無しさん
NGNGクロスリファレンスや呼び出しツリーを作ってくれるツールを使えば?
0649デフォルトの名無しさん
NGNGもれはソースブラウザ(M$)でしらみつぶしかな。
0650623
NGNG出題者が用意した回答です。
あんまり叩かないで(w
int match(const char *pattern, const char *string)
{
while (*pattern) {
switch (*pattern) {
case '?':
if (! *string) {
return 0;
}
pattern++;
string++;
break;
case '*':
pattern++;
do {
if (match(pattern, string)) {
return 1;
}
} while (*string++);
return 0;
default:
if (*pattern++ != *string++) {
return 0;
}
}
}
return ! *string;
}
0651631
NGNGint match(const char *pattern,const char *str)
{
for(;*str||*pattern;str++,pattern++){
if(*pattern=='?'){
str++,pattern++;
continue;
}
if(*pattern=='*'){
while(*pattern=='?'||*pattern=='*')
pattern++;
if(*pattern=='\0'){
return 1;
}
while(*str!=*pattern){
str++;
}
}
if(*str!=*pattern)
return 0;
}
return 1;
}
0652651
NGNGでないとどこが間違っているのかわからない(T_T)
0653
NGNG0654デフォルトの名無しさん
NGNGどの正規表現?
.と*だけで良いなら何とか…
(正規表現の文法自体は正規文法でないという罠)
0655644
NGNGありがとうございます。ckrefを使用してみます。
0656651
NGNGの部分を
for(;;str++,pattern++){
if(*str||*pattern){
break;
}
に変えたら成功した・・・・
もしかしたらforについて勘違いしている部分があるかも(汗
0657
NGNGグループとかは無理ですか?
0658651
NGNGもしかしたらcontinueした時はforの条件式が評価されないんですか?
0659デフォルトの名無しさん
NGNGPerlの正規表現だと、それこそちょっとしたコンパイラ書くくらいの
手間がかかると思われ。
グループって[a-z]みたいなやつ?
暇潰しの課題にはちょっと面倒すぎるなあ。
0660651
NGNGforについての間違った認識を正すことが出来てよかったです。
ありがとうございました。
int match(const char *pattern,const char *str)
{
for(;*str||*pattern;str++,pattern++){
if(*pattern=='?')
goto loopend;
if(*pattern=='*'){
while(*pattern=='?'||*pattern=='*')
pattern++;
if(*pattern=='\0')
return 1;
while(*str!=*pattern)
str++;
}
if(*str!=*pattern)
return 0;
loopend: ;
}
return 1;
}
0661
NGNGU(MA|FO)
みたいに
0662デフォルトの名無しさん
NGNGfor(;*str||*pattern;str++,pattern++){
は条件式が真ならループは続いて、
for(;;str++,pattern++){
if(*str||*pattern){
break;
}
はifの条件式が真ならループを抜ける。
前者と後者じゃまったく逆の処理じゃないの?
0663デフォルトの名無しさん
NGNGすみません。
if!(*str||*pattern)) break;の間違いです。
0664663
NGNGif(!(*str||*pattern)) break;
0665デフォルトの名無しさん
NGNGif (*str) って書くなら、素直に if (*str != '\0') って書け。
省略すればいいって訳じゃないぜ。
if (isalpha(XXX)) とか、if (found) はこう書くべきだがな。
0666デフォルトの名無しさん
NGNG同意
0667デフォルトの名無しさん
NGNGstaticな局所変数を使いました?
0668デフォルトの名無しさん
NGNG>goto loopend;
continue;じゃいかんの?
Cの文法に躍らされてる気がする。
そんなにまちがえるなら素直に状態遷移書けばいいのに
0669デフォルトの名無しさん
NGNG聞く前に質問の仕方をもっと勉強しろ
0670デフォルトの名無しさん
NGNG可変長バッファサイズを持ったFIFOを実装したいんだけど、何か良い例ないですかね?
staticなサイズで組むと格納するデータサイズが小さいものの場合、かなりメモリーが
無駄になっちまうので。 どう実装しようかずっと悩んでるんだけど(w
0671デフォルトの名無しさん
NGNGそうだそうだ!
ちゃんと if ((*str != 0) != 0) と書け!
いや、もっとちゃんと if (((*str != 0) != 0) != 0) と書け!!!!
0672デフォルトの名無しさん
NGNG8バイト単位とかでリストでも作ったら?
0673デフォルトの名無しさん
NGNG双方向リストとか。
0674デフォルトの名無しさん
NGNG局所かどうかはともかくstaticな変数は使うな。
0675デフォルトの名無しさん
NGNGFIFOなら片方向でいいんじゃない?
メモリーサイズ気にしてるのに。
まあ個人の勝手だけどさ!
0676674
NGNG「使うよね」ってこと(汗
0677デフォルトの名無しさん
NGNGこの場合、8バイト単位のリストにまたがってしまうデータ長の場合、
どう管理するんでしょうか? 管理はなるべく単純にしたいんだけど。
>>673
むむむ、おもしろそうだけど、どう利用するのか良くわからん(w
0678デフォルトの名無しさん
NGNG>>673
片方向リストは既に固定長サイズでやってみてできています。
問題はリスト構造というよりもどうやって可変長サイズを実装
するかなのですが。
0680デフォルトの名無しさん
NGNG上の方を見て。
0681デフォルトの名無しさん
NGNGAddの出来ないリストなんて!
・・・って言うかそれはリストなのか?
0682デフォルトの名無しさん
NGNGC++のdequeの構造はどう?
適当な大きさのブロックをリンクリストで繋ぐ。
先頭のブロックが空になったら開放。末尾が満杯になったら次のブロックを確保してリンク。
ついでに一個開放したた余剰ブロックはプールしてつぎの確保に使い回すとか
0684デフォルトの名無しさん
NGNGキューみたいに先入れ先出しのこと。
0685デフォルトの名無しさん
NGNGん? FIFOだからそれでいいんだろ? 何番目にAddするなんて意識しなくていいんだから
0686デフォルトの名無しさん
NGNG何番目にAddする=インサート
0688デフォルトの名無しさん
NGNGトコロテン
0689デフォルトの名無しさん
NGNG可変長サイズの意味がわからん。
レコードが可変長という意味?
Tlink *link = malloc(sizeof(LINK) + 必要なデータサイズ );
link->next = next;
memcpy((void*)(link + 1),データ,データサイズ);
0690689
NGNG>というのはたまに使うけど。
と続く予定だった。
0691687
NGNGだって管理が楽なんだもん
0692デフォルトの名無しさん
NGNG片方向でも普通は可変長だろ
0693デフォルトの名無しさん
NGNGよほどメモリーが惜しくなければ。
0694デフォルトの名無しさん
NGNG普通片方向でも可変長でしょう。
staticにバッファとらずにmalloc使えって
0695デフォルトの名無しさん
NGNG普通って、どこの普通?
0696デフォルトの名無しさん
NGNG京浜急行の普通(列車)
0697694
NGNG0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGあたま悪いんだ!
0700デフォルトの名無しさん
NGNG>>682
なるほどそのつど malloc() して繋げたり、入らなくなったら消したりするわけですね
>>689
>レコードが可変長という意味?
ええそうです。
なるほどやはり、動的に取ったメモリーセルをリストとして消したり貼ったりというのが
一般的なやりかたのようですね。
>>691
双方向リストで管理が楽になるというのは不用なものを消したり付け足したりする
時の場所を探すのが楽になるという事でしょうか?
0701デフォルトの名無しさん
NGNGchar *data; /* 可変長のデータへのポインタ */
struct elem *next;
};
typedef struct {
struct elem *head;
struct elem *tail;
} queue;
int queue_init(queue *q)
{
struct elem *dummy_head = malloc(sizeof(struct elem));
if (dummy_head == NULL) {
return -1;
}
dummy_head->next = NULL;
q->head = q->tail = dummy_head;
return 0;
}
int is_empty(queue *q)
{
return q->head == q->tail;
}
int enq(queue *q, char *item)
{
struct elem *new_elem = malloc(sizeof(struct elem));
if (new_elem == NULL) {
return -1;
}
new_elem->data = item;
new_elem->next = NULL;
q->tail->next = new_elem;
q->tail = new_elem;
return 0;
}
char *deq(queue *q)
{
struct elem *first;
char *value;
if (is_empty(q)) {
return NULL;
}
first = q->head->next;
value = first->data;
q->head->next = first->next;
free(first);
return value;
}
0702デフォルトの名無しさん
NGNG双方向にしてもメリットがない時の資源の節約
0703デフォルトの名無しさん
NGNGやっぱりそれだけ?
0704701
NGNGstruct elemをまとめて取ったほうが速い。
0705デフォルトの名無しさん
NGNG>>701
具体例をありがとうございます。非常に良くわかりました。(w
0706デフォルトの名無しさん
NGNG割り込まれると困るクリチカルな時間が短くなる
0707デフォルトの名無しさん
NGNGその語尾は気に入らないな。
0708デフォルトの名無しさん
NGNGそんなにもある
0709デフォルトの名無しさん
NGNGポインタの参照より加算のが速いんで、
使い方によっては>>689に一票。
0710701
NGNG701のコードだとstruct elemが他のモジュールには見えないが、
リストに続けてデータ本体を書くと、同時にmalloc, freeしなきゃ
ならんよね。
まあ、その方が良い事もあるだろうが。
0711デフォルトの名無しさん
NGNGchar *data; /* 可変長のデータへのポインタ */
struct elem *prev;
struct elem *next;
};
typedef struct elem queue;
void queue_init(queue *q)
{
q->prev = q->next = q;
}
int is_empty(queue *q)
{
return q->next == q;
}
int enq(queue *q, char *item)
{
struct elem *new_elem = malloc(sizeof(struct elem));
if (new_elem == NULL) {
return -1;
}
new_elem->data = item;
new_elem->next = q;
new_elem->prev = q->prev;
q->prev->next = new_elem;
q->prev = new_elem;
return 0;
}
char *deq(queue *q)
{
struct elem *first;
char *value;
if (is_empty(q)) {
return NULL;
}
first = q->next;
value = first->data;
q->next = first->next;
first->next->prev = q;
free(first);
return value;
}
…つか、普通はinsertとdeleteを作って、それを使って
enqとdeqを書くんだと思うけどね。
0712デフォルトの名無しさん
NGNGmallocしたりfreeしたり、するしかないの? データの出し入れが激しい処理の場合
やばくない?
0713デフォルトの名無しさん
NGNG持ちまわるデータのサイズが不変とかいう条件なら、
手間がいくらか減るんでいいかもね。
0714デフォルトの名無しさん
NGNG出し入れにリンク自体はfreeする必要無いんじゃない?
freeは完全に使い終わった後だけにして、
空のリンクとしてリサイクルすればかなり速くなるよ。
0715714
NGNGページ/ブロック単位でメモリ確保するとか。
0716デフォルトの名無しさん
NGNGvoid queue_pool_init()
{
int i;
struct elem *block = calloc(sizeof(struct elem), N);
if (block == NULL) {
abort(); /* いやホントは何か言うんだろうけど */
}
for (i = 0; i < N - 1; i++) {
block[i].next = block[i + 1];
}
block[N].next = NULL;
free_list = block;
}
struct elem *queue_malloc()
{
struct elem *v;
if (free_list == NULL) {
queue_pool_init();
}
v = free_list;
free_list = free_list->next;
return v;
}
void queue_free(struct elem *v)
{
v->next = free_list;
free_list = v;
}
0717デフォルトの名無しさん
NGNGもしかしてリアルタイムで作ってるの?
体力あるなー。
0718どうでもいい回想(その3)
NGNG今年の四月、あるミッションを申し渡されました。
開発済み製品のコードに関するサポートです。
その製品に問題が発生した時の解析・修正が主要業務となります。
そのコードを見ていた何日日目に、脳天を突き抜けるかのような衝撃が・・・って、言い過ぎですね。
マルチタスキング環境においては、動的確保したバッファをタスク間メッセージバッファに使うのが定番ですが・・・
何と、そのコードは、auto変数の領域を堂々とメッセージバッファに使っていたのでした。
普通、こんな真似をすれば、プログラムは「即死」です。
恐る恐る調べてみると、うまい具合に「死なない」ように作られていました。
(おそらく、動作テストに適合するためだけに手を入れた結果と思われます。)
前任者へ話を聞くと、「母体をそのまま持ってきたはず」という回答が・・・
(ちなみに、その『前任者』は『作者』ではありません。)
件の「製品」は、全国津々浦々で今もバリバリ動いていますが、
その「母体」もまた、全国でバリバリ動いています。
(続いていいですか?)
0719デフォルトの名無しさん
NGNGならいいじゃん。
終了。
0720デフォルトの名無しさん
NGNGANSI C のインタープリタなんて無いでしょうか?
外部ライブラリを簡単に呼び出せて後でコンパイルも可能みたいな開発環境
があったら凄く重宝すると思うのですが。
0721デフォルトの名無しさん
NGNG>普通、こんな真似をすれば、プログラムは「即死」です。
そう思ってるのは君だけかもな。
0722デフォルトの名無しさん
NGNGstaticなら困るけどautoならthread-safeじゃねーの?
autoだって「動的に確保」することには違いないし。
まあ、まだ必要な間に解放されちゃったら困るけどさ。
0723デフォルトの名無しさん
NGNG> ・・・・メッセージバッファに使うのが定番ですが・・・
定番にこだわるのはよくない。
0724デフォルトの名無しさん
NGNG製品、フリーソフト、
腐るほど(ってほどないかもしれないけど)あるよ。
メンテされずに腐ってるかもしれないが。
0725デフォルトの名無しさん
NGNGコンパイラでも要求は満たしてる気がするが。
0726どうでもいい回想(その3・その2)
NGNGこんな腐ったコード、即刻この世から消し去るのが正しい選択でしょうが、
「製品コード」という理由で、半ば力尽きる結果となりました。
「製品」である以上、「実動作不良」や「クレーム」がない以上、手を入れる事は許されません。
さて、そうしているうちに、今月始め、そのミッションには形のみ所属する事となりました。
その「製品」の開発元の業績不振の影響が響いてきたためです。
(無論、昨今の不況の影響もあります。)
最悪、その製品に関しては、サポート体制自体が崩壊する事も有り得るでしょう。
・・・と、書かせていただきました。
これまでの書き込みを拝見するに、皆様の能力は、私に10倍します。
世の中から腐ったコードがなくなるよう、努力して下さい。
ポインタ表現で「&が抜けてる」レベルなら、それこそコンパイル時に気付く問題です。
もっと大きなレベルで、その力を役立てて下さい。
・・・という事で、時々勉強に覗きに参ります。
長文失礼しました。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNGそれだけの記述じゃ腐ってるのはコードか君の頭か
判断がつかん。
0729デフォルトの名無しさん
NGNGがドキュンという結論ですな。
帰ってよし。
0730720
NGNGgtk+ などの外部ライブラリを呼び出せるかは不明ですがちょっと漁ってみます。
http://pcroot.cern.ch/root/Cint.html
0731デフォルトの名無しさん
NGNGchar *data; /* 可変長のデータへのポインタ */
struct elem *prev;
struct elem *next;
};
って、
struct elem {
struct elem *prev;
struct elem *next;
char data[1];
};
とかにしない?
0732デフォルトの名無しさん
NGNGcernってあのCERNか?
0733デフォルトの名無しさん
NGNGがいしゅつ。
>>689
>>709-710
>>713
あと、C99だと
struct elem {
struct elem *prev;
struct elem *next;
char data[];
};
と書ける。
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNGC99はまだ時期尚早。
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGいくらでもいる。
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGいるだろうけど、今から書くなら自動的にC99になるだろうね。
Unix系はとっくに、Winでもそろそろ処理系はC99準拠になったし。
過去のソフトのメンテならC99は使えないところも多いだろう。
0740デフォルトの名無しさん
NGNG出るのが遅すぎた。
>>739
妄想はそれぐらいにしとけ
0741デフォルトの名無しさん
NGNG欝だ…
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGいやだったら他の言語を使えよ。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0747720
NGNG以下、引用・・・ だそうです。ソースコードも公開されているらしいので、
Zaurus/Linux に移植したら面白いかもしれません(バイナリは 1.2MB)。
CINT は CERN で開発されている ROOT というデータ解析システムのマクロ
言語として開発されたものです。 したがって,ISO/IEC C++ 完全互換を目指した
ものではなく, むしろ ANSI C をほぼ含む C++ のかなり大きなサブセットと解す
べきものです。
http://www.matsusaka-u.ac.jp/~okumura/c/
たとえばWWWの開発で有名なCERN(欧州原子核共同研究機関)での標準
言語に選ばれています.
http://www.cqpub.co.jp/hanbai/books/30851.HTM
0748デフォルトの名無しさん
NGNG遅すぎたってどういう意味?
いずれみんな切り替わるでしょ?
教科書も処理系も新規格対応になるんだから。
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGC99に対応してない処理系はANSI/ISO準拠と言えない。
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNGANSIが出来たときも嫌がってた奴はいたけど、今はもういない。
時間の問題と思われ。
0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNGUnixからスーパーコンまで、ベンダー製コンパイラはとっくにC99だよ。
0755726
NGNGそういえば言い忘れていたので一応申し上げます。
UNIXでのmsgsnd(でしたっけ?msgsnd??)とは異なり、件の環境で使われていたXXX_sndmsgは、
メッセージのコピーは作成せず、そのままバッファが渡されます。
よって、auto変数をメッセージバッファに使う場合、
「メッセージバッファは(内部ルール上)構造体イメージ」→「そのタスクのスタック領域がメッセージとなる可能性極めて高し」→
「他のタスクから、そのタスクのスタックに対する読み書きが可能」
という罠が待っていたのでした。
0756デフォルトの名無しさん
NGNG無視無視。
0757デフォルトの名無しさん
NGNGクソコンパイラはそういうところで点数稼がないとな
0758デフォルトの名無しさん
NGNG_Boolとか_Comprexとか使えんの?
マジで?
標準pragmaも全部対応してる?
そんな話聞いたこと無いぞ
0759デフォルトの名無しさん
NGNGあとはMSがその気になれば、それで世の中ぜんぶC99になるんじゃねえの?
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGずいぶん便利になったものだと思うが。
0762デフォルトの名無しさん
NGNGIntel C++もvectorC++もまだだな。
当然、open watcomも。DMCはしらん
0763デフォルトの名無しさん
NGNGC++Builder6ってC99対応してる?
アップグレードしてないのでわからんが、カタログ見る限り言及がないから対応してないような・・
0764デフォルトの名無しさん
NGNGC++がメインでCはおまけ。
0765デフォルトの名無しさん
NGNGサポートしてるよ。MS以外。
0766デフォルトの名無しさん
NGNGIntelとBorlandはどうなんだ?
0767デフォルトの名無しさん
NGNGPCではC99のベンリな機能が使えないので羨ましいと。
みんなして「あのブドウはすっぱい」と(w
0768デフォルトの名無しさん
NGNG具体的にC99に準拠してるっていうコンパイラあげてみろよ
「MS以外」はいいから
0769デフォルトの名無しさん
NGNG「PCでは」じゃなくて「Winでは」と言え。
gcc3.xには_Boolも_Complexもpragmaもあるよ。
_Complexは2.xからあるけど。
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG5割以上はサポートしてないとおかしいよな。
CW Comeau Kaiとかの標準対応だけがウリのコンパイラ上げてもしゃーない。
実用になるモノじゃないとな
0772デフォルトの名無しさん
NGNGC99になると何が困るの?
今までのプログラムが動かなくなるわけじゃないんだから
別にいいんでは?
0773デフォルトの名無しさん
NGNGhttp://www.comeaucomputing.com/
対応してる感じ?
Dinkumと組んでるのかー
0774デフォルトの名無しさん
NGNGgccって標準C99準拠してないんだがどーよ?
準拠に向かっているだけなんだが。
pragma ≒ 標準pragma
0775747
NGNG0776デフォルトの名無しさん
NGNGうになったら使うだろうな。
0777デフォルトの名無しさん
NGNG中途半端に仕様が複雑化するだけ。
0778デフォルトの名無しさん
NGNGは・げ・ど・う
今までうまく使えたんだからC99なんて使わなくてよい。
0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNGない頭をフル回転させて考えてみたけど
どう考えても使い道が分からないんですよね
てな訳で、こんな時には便利だぞ〜って
使い方を知ってる人は教えて下さい
0782デフォルトの名無しさん
NGNG>>773
0783デフォルトの名無しさん
NGNGstdinから読んでみた。
やべー・・・読まなきゃよかった。
もどしとこ・・・(-_-)
0784デフォルトの名無しさん
NGNGそうだね。
無くても困らないんだよね。C->C++みたいなシフトならともかく。
gccの独自拡張と同レベル。
末尾再帰展開でもしてくれるんなら、おおっ!とか思ったけど。
0785デフォルトの名無しさん
NGNGワラタ
0786783
NGNGそれを戻したいとき。
0787デフォルトの名無しさん
NGNGたとえば数字だけを読むルーチンで
読んだ結果が数字じゃなかったらungetcしてリターン
0788デフォルトの名無しさん
NGNGその、hogeの意味はなんですか?
0789デフォルトの名無しさん
NGNG論争になるよ。
bar,baz,fooも。
0790デフォルトの名無しさん
NGNG名前に意味がないときに付ける名前
0791デフォルトの名無しさん
NGNG結局一つだけ?
0793デフォルトの名無しさん
NGNGカミーユ?
0794デフォルトの名無しさん
NGNG0795781
NGNG787は確かに、あった方が便利ですねって
良く考えると、結局783と同じなのかな…
0796デフォルトの名無しさん
NGNGこもー
0797デフォルトの名無しさん
NGNG漏れが使ってるSun Workshop 6のCコンパイラは
ISO/IEC 9899:1999準拠と明記してあった。
0798デフォルトの名無しさん
NGNGコミューじゃないの? って自信ないけど
0799デフォルトの名無しさん
NGNGしらん。
シャトーと同じように読んでみただけ。
0800デフォルトの名無しさん
NGNG0801米山
NGNG余裕でした。
0802デフォルトの名無しさん
NGNG二回使う。
0803デフォルトの名無しさん
NGNG駄目じゃん?
0804デフォルトの名無しさん
NGNGそうなの?
0805デフォルトの名無しさん
NGNG知らん。
でもおれは1文字だけ戻すようにしてる。
なんでだろ?
0806デフォルトの名無しさん
NGNGプログラミング言語Cに保証されるのは1文字だけだと書かれている。
0807デフォルトの名無しさん
NGNG理由があった筈なのに?
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNGねなきゃ。
0810デフォルトの名無しさん
NGNGやおい
やまなし
おちなし
いみなし
0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNG全国的にやっぱそう?
友達から同じ様に聞いた。
0813デフォルトの名無しさん
NGNGそうだよ。
0814デフォルトの名無しさん
NGNG深夜だから成せる技ですな。
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNGfseek(fp,-2L,SEEK_CUR);
0818デフォルトの名無しさん
NGNGungetcを使わなくても良い関数にする
0819デフォルトの名無しさん
NGNGそれstdinだと無理っぽいね。
あとテキストモードでも微妙。
あ、ケチつけてるわけじゃないよ?ほんとに。
0820デフォルトの名無しさん
NGNG分かっている。
俺だってstdinにfseekなんて使いたくねー(ワラ
0821デフォルトの名無しさん
NGNGネタでしょ
0823デフォルトの名無しさん
NGNGらっぱじゃないよ。
好きなだけgetc/ungetc呼べるようにできるよ。
0824822
NGNG0825デフォルトの名無しさん
NGNGの解決方法がまともかな。
freadやらは別途対応しないと使えなくなるが。
0826デフォルトの名無しさん
NGNGfgetposとfsetposで、無理やり戻せないかな…
0827デフォルトの名無しさん
NGNGtypedef struct {
FILE *fp;
char ungetbuf[好きなだけ];
} FILEEX;
/*インタフェース*/
FILEEX*fex_open(const char *filename, const char *mode);
void fex_close(FILEEX*);
int fex_getc(FILEEX*);
int fex_ungetc(FILEEX*,int);
/*
お好みで
long fex_read(FILEEX*,const void *,long);
long fex_write(FILEEX*,void *,long);
*/
0828デフォルトの名無しさん
NGNGtypedef struct {
FILE *fp;
char ungetbuf[好きなだけ];
size_t pos;/*常にスタックトップを指す*/
} FILEEX;
0829デフォルトの名無しさん
NGNGint fex_ungetc(FILEEX *fexp,int c) {
return fexp->ungetbuf[fexp->pos++] = c;
}
int fex_getc(FILEEX *fexp) {
return (fexp->pos)?fexp->ungetbuf[--fexp->pos] : fgetc(fexp->fp);
}
0830デフォルトの名無しさん
NGNGかといってリストにしたら遅そうだが。
0831デフォルトの名無しさん
NGNGint abcd_1,abcd_2,abcd_3,abcd_4,abcd_5;
とあったとき、
void print_function_name(int *hoge);
という関数に変数のポインタを渡して、この関数の中で、
変数の名前、abcd_3、という「文字列」を印字したいのですが。
対応表の文字列リストを作っておく、という方法しかないでしょうか?
0832デフォルトの名無しさん
NGNGポータブルにはそれしかないだろうな。
システムに依存してよくて、externな変数だけでいいんなら、
バイナリからアドレスと名前の対応を抜き出す方法がたいがい
ありそうだが。
0833デフォルトの名無しさん
NGNGprint_function_name(&abcd_1, #abcd_1);
みたいに。
(ナンデfunction_nameナノニヘンスウ名ヲプリントスルンダロ)
0834デフォルトの名無しさん
NGNGありがとうございます。
グローバル変数なのですが、システム依存するのは危険なので
対応リストを作ってみます。
>#abcd_1
こんな書き方C言語でできましたっけ?
ともあれ、関数名、変数と関数を間違いました・・・突っ込みサンクス
0836デフォルトの名無しさん
NGNG(1) TRACE("i = %d, j = %d\n", i, j);
とすると、#define DEBUG 1のときだけ
i = 100, j = 20
のように表示して、それ以外の時は何も表示しない
ようにしたいのです。こういう可変引数のマクロはどう
やって書いたら良いですか?
(2) funcという関数が、他のどの関数から何回呼ばれた
か数えたいのです。呼び出し側のソースは変えたくない
のですが、良い方法はないでしょうか?
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNG(1)
可変引数のマクロ・・・分らん。関数にしる!
(2)
プロファイルを取れば分ります。
もしくは関数を呼び出すだけのhoge()関数を作って、
今の関数をhoge_himitu()とかにするとか。
0839デフォルトの名無しさん
NGNG#define TRACE(x) printf x
#else
#define TRACE
#endif
TRACE(("i = %d, j = %d\n", i, j));
static cnt = 0;
++cnt;
か
コンパイラ付属のプロファイラを使え
なんでお前らCFAQよまねえの?
0840デフォルトの名無しさん
NGNGこんなコード見たら本人に突っ込んどくべきですか?
問題ない?
0841デフォルト値名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG何か仕様みたいのあるの? 下位nビットは0、とか
0845デフォルトの名無しさん
NGNG0847841
NGNG多分何を考えてるのかお見通しだと思いますが。
0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNG(1)
#if DEBUG
#define TRACE(fmt, ...) printf(fmt, __VARARGS__)
#else
#define TRACE(fmt, ...)
#end
(2)
#define func(x) func0(__func__, x)
呼ばれる側をfunc0という名前にしろ。第1引数に関数名
文字列が渡されてくるので、それをハッシュ表に登録しろ。
これらのコードが使えないコンパイラはさっさと捨てろ。
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG∧_∧ ( _ノ、ノ
( ´Д`) / / 。
/⌒ ⌒'/ / 。
/_/| / / 。
(ぃ9 ./ / // 。
/ / /3
( / //
\. \\
\. \\
> ) )
/ //
/ / /
/ / /
( ヽ ヽ
\__つ)
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGhttp://natto.2ch.net/denpa/へ逝ってください。
0856デフォルトの名無しさん
NGNGいや、冗談抜きにCハカーの人は386の一バイトのオペコードぐらい
覚えてるのかなーと思ったからさ。覚えるっていっても256個しか
ないからたいしたことないけど。
0857デフォルトの名無しさん
NGNGハイソサイエティハッカーの日下部陽一は覚えています。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGマジですか?やっぱり日下部先生凄い。
日下部先生ならhexl-modeでプログラミングしてそうだ。。。
ところで、次スレの1はまた日下部先生にしようよ。
やっぱり先生が一番だよ。
0860デフォルトの名無しさん
NGNG〜にしよう。だって?何言っているの?
本人が立てるに決まっているだろ。
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNG(゚д゚) NOP ダケダ!
~( )−
/ >
0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNG市販のVisual C++,C++ Builder etc
を買ったほうがいいですか?
落とせるCとどう違うんですか?
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNGコンパイルが簡単。
HELPが充実。
デバッガ、エディタ、ライブラリが圧倒的に強力。
効率が10倍ぐらい違うと思う。
0868デフォルトの名無しさん
NGNGthanks a lot!
0869デフォルトの名無しさん
NGNGKako(・∀・)EE!!
0870デフォルトの名無しさん
NGNG女は?
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGここは戦場だぞ!
0873デフォルトの名無しさん
NGNG0874ガンオタ
NGNGやっぱ戦場にも女性進出は必要だよ。
0875デフォルトの名無しさん
NGNGマクロス見ろ
0876デフォルトの名無しさん
NGNGザブングル見ろ
0877デフォルトの名無しさん
NGNGどういうコンパイラが必要なんでしょうか?
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNGコマンドラインコンパイラ。
MS-CとかTurbo-CとかBDS-CとかHITECH−Cとか・・・
0880デフォルトの名無しさん
NGNGexeを走らせたいのがWindows98のフロッピーで起動するDOSと言いたかったんです。
Freeなものはあるのでしょうか。
0881デフォルトの名無しさん
NGNGLSI-Cが最適だと思われ。インストールしても1Mないし。
Vectorで検索しれ
0882デフォルトの名無しさん
NGNGTurboC 1.01とか。Borlandのサイトから落とせたはず。
いらないライブラリとか削ればフロッピー運用も可能かも。
LSI-Cよりもビルド速度は速いし。
0883デフォルトの名無しさん
NGNGありがとうございます。
早速試してみます。
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNGなぜここで聞く・・・・
マ板にでも逝けよ。
0886デフォルトの名無しさん
NGNGマ板ってどこですか?
0887デフォルトの名無しさん
NGNGプログラマ板
http://pc.2ch.net/prog/
ネタ・愚痴中心の板。
0888デフォルトの名無しさん
NGNGありがとうございます
忠告どおり逝ってみます
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGそんな奴腐るほどいるぞ
0894デフォルトの名無しさん
NGNG例えば俺とかお前とかな。
0895デフォルトの名無しさん
NGNGへーそうなんだって俺もわかんないけど
サブルーチンならなんとなく分かります
0896デフォルトの名無しさん
NGNG自分で調べろよ。
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=assembler&sw=0
0897デフォルトの名無しさん
NGNG・REM
・END
・INPUT
・LET
この五つのの意味を教えてください。
できればそこのURLを貼っていただくとありがたいです
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNGどう罵倒しようか…
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNGStandard I/O
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNGあ、そうだったですね、ありがとうございます。
そうするとスタンダード インプット オンプットの略ってことですかね?
どういう意味なんだろう
0904デフォルトの名無しさん
NGNGいっぱいあって分からんです
0905デフォルトの名無しさん
NGNG小さいのがいっぱい萎える
0906デフォルトの名無しさん
NGNGマイクロソフトのc++が使いやすそうですよ
0907901ではないが
NGNGスタンダード インプット アウトプットだ。
0908デフォルトの名無しさん
NGNGアウトプットだよ。
標準入出力
0909デフォルトの名無しさん
NGNG僕も最近,C言語を習得しようと思ってるので
お互いに頑張りましょう
0911デフォルトの名無しさん
NGNGスタンダードが標準っていう意味なら
GLAYのALL STANDARD IS YOUは
すべての標準はあなたに??
バカですいません
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG考えたこともなかったが。
0914デフォルトの名無しさん
NGNGdouble b;
...
...
if(b==a){
}
実際にbが45.72の場合にもif文の中に入ってくれないんですけど、
どうしてなんでしょうか。。。
0915デフォルトの名無しさん
NGNGとは限らんが。
0916デフォルトの名無しさん
NGNGなんで浮動小数点型が「見た目ぴったりの厳密な値」と思う
やつがこんなに多いんだろうね。==で比較しちゃいかん、
と言うのは初歩の初歩だと思うんだが。
0918デフォルトの名無しさん
NGNGんじゃないかとおもうんだな。
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNGんだんだ。昔、そういう仮定のもとに書かれたチャセンという
ぷろぐらむが、まさにそういう罠でコンパイルできなかった。
こういう誤解が広まるのはこまるね。
0924デフォルトの名無しさん
NGNGif ( fabs(a - b) <= DBL_EPSILON) {
}
0925デフォルトの名無しさん
NGNGキタ━━(゚∀゚)━━ァ!
0926925
NGNG語僕しますた
0927デフォルトの名無しさん
NGNG二つの値が十分に近いって奴だな。
C Fuck Youか何かに載っていたような・・・
0928デフォルトの名無しさん
NGNGさらに誤字ですか。
0929925ぐらい?
NGNGCでカレントディレクトリからある条件(たとえば二桁の数字とか)
のフォルダのみを取得する方法はありませんでしょうか?
よろしければソースで示していただけると助かります。
最近Cを始めたのですが、
本を見てもフォルダの扱いってあまり書いて無いんですね。
(自分の読み方が悪いのかもしれませんが)
お助けいただけたら幸いです。
0930デフォルトの名無しさん
NGNGCの標準規格ではディレクトリ内のファイル(ディレクトリ)名を得る方法は定義されていない。
0931デフォルトの名無しさん
NGNG組み込み系などディレクトリがない環境もあるからね。
man fnmatch(3)
0932デフォルトの名無しさん
NGNGプラットフォーム依存。
たいていの処理系だと、それ用のライブラリがあるのでマニュアル見るしかない。
WINだとFindFirstFile(), FindNextFile()
POSIX準拠OSだとopendir(), readdir(), closedir()
0933925ぐらい?
NGNGご親切にありがとうございます。
それにしても定義されていないのですか。
するとこれはC++などの領域に入るものであるということなのでしょうか。
自分はVC++を使用しているのですが、
もしC++で上で書いたようなことが出来るようでしたら
お教えいただけませんでしょうか。
たびたび申し訳ありません。
0934デフォルトの名無しさん
NGNG違う違う。
>>932の言うようにOSごとに、可能ならば多くの場合ライブラリが用意されている。
0935デフォルトの名無しさん
NGNGa^=b^=a^=b
って式は、undefined なんですよね。
0937デフォルトの名無しさん
NGNGへー、fnmatchなんてのがあるんだ。知らなかったよ。
ところで、組み込み系だとファイル自体なかったりしないか?(w
(freestanding environmentというやつね。)
fopen()があるのにopendir()等が規格に入らなかったのは何故だらう?
0938デフォルトの名無しさん
NGNG>>932に書かれている関数をMSDNライブラリで調べる。
0939デフォルトの名無しさん
NGNGファイルのない環境までは考えていなかったとか。
元々OS記述用言語だし。
0941デフォルトの名無しさん
NGNGglob + fnmatch が便利。つーか挙げるなら glob だった。
ソースがほしいみたいなこといってたから挙げたけど、
使うだけなら FindFirstFile opendir でいいか。
0942デフォルトの名無しさん
NGNGうん。
>>939
規格だとfopen()もfclose()もmalloc()もexit()もとにかく全部の標準ライブ
ラリが使える環境(hosted environment)と、fopen()やfclose()やmalloc()
などが使えない環境(freestanding environment)の2種類を想定してるよね。
で、fopen()が使える環境だと「ファイル名」とか「ファイル」って概念はあ
るのに、ファイル名の一覧を取れないのはなぜなんだろうね。
0943デフォルトの名無しさん
NGNG式がundefinedというより、1つの式の中で同じlvalueの値を複数回
変えようとする「ことが未定義な動作」だ。
0944デフォルトの名無しさん
NGNGシーケンスポイントにaとbがそれぞれ2つか?
0945デフォルトの名無しさん
NGNG取れるのが名前だけじゃ不便だし、
ファイルシステムがOSにより様々だから規定しようがなかった
0946935
NGNGいいアルゴリズムっていうか小技を教えて
ってスレで出ていた小技なのですが、
誰も突っ込まないので、ちょっと心配になったんです。
(もちろん、花っから、こんな馬鹿なコードは使うつもり
はありませんでしたが。。。)
0947デフォルトの名無しさん
NGNGbは問題なかろ。問題はaだよな。
>>945
そうかもね。不便でもないよりましだった気もするが。
もし入れるとしたら、「ディレクトリ名」なんてのは指定できないから
カレントディレクトリのリストしか取れない。しかもchdirも入れられ
ない、か。うーん。やっぱりあってもしょうがないか?
0948デフォルトの名無しさん
NGNG実際の処理の中ではどう使われてるんでしょう?
自分で汎用的なものをつくるとき、任意のオブジェクトをソートするときは
どうするのかなーと思って。
ソートして入れ替え処理が出てきたとき(Dataが要素の型とすると)
Data work = array[i];
array[i] = array[j];
array[j] = work
とworkのための領域(Data型一個の領域)が必要だと思いますが、
この領域はどう確保してるんですか?
malloc(size)とかだと重いような気がします。
質問がわかりにくくてすいません。
0949デフォルトの名無しさん
NGNGqsortに渡すのは「void*の配列」じゃないかな。
sortされるのはvoid*であって、実体ではない。
0950デフォルトの名無しさん
NGNGvoid qsort(void *base, size_t nelem, size_t width, int (_USERENTRY *fcmp)(const void *, const void *));
このプロトタイプ宣言のうち、widthをひとかたまりとしてソートします。
だから、workのための領域は必要ありません。
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG難しくないよ。慣れの問題だよ。
0953デフォルトの名無しさん
NGNGだとすると、qsortの第一引数はvoid **じゃないとおかしいし、
第三引数は不要になっちゃうよ(sizeof(void *)に決まってるから)。
sortされるのは実体でしょう。
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/lib/libc/stdlib/qsort.c?rev=1.11&content-type=text/plain
これはFreeBSDのlibcのqsort()のソースね。
実際の交換を行っているのはswapcode()というマクロで、
(サイズがlongの場合は特例でswap()の中で交換している)
配列要素をcharまたはlong単位で分割して交換処理をやってるみたい。
他のOSのqsort()も似たようなものではないかと。
0954948
NGNG>workのための領域は必要ありません。
普通のソートしか知らないので、入れ替えるときに
work領域を使わない方法というのがちょっとわからないんですが・・・。
qsortってc言語でかかれてるんですか?
もしそうなら、一度ソースを見てみたいです。
0956デフォルトの名無しさん
NGNG要するに、ライブラリ関数の中で勝手に交換の為のwork領域を用意して
くれるという事だよ。
0957デフォルトの名無しさん
NGNGこれで作ったプログラムをDOS上で動かすことはできるんですか?
0958デフォルトの名無しさん
NGNGできる
0959デフォルトの名無しさん
NGNGPureDOSの上で動かせるプログラムが作れるでしょう。
「DOSで動かす」のDOSがWin32Consoleの頭悪い表現なら、
答えは「できます」
そのほかは
できません
0960デフォルトの名無しさん
NGNGheapsort のアルゴリズムの都合で
ソートするオブジェクト一個分の作業領域があれば便利なんですな。
ちなみに、最悪の場合を考えると、
heapsort の方が qsort (quicksort) よりがぜん有理。
平均の場合は qsort の方が早いけど
オーダは同じなので、最悪の場合が
気になるようなクリティカルな場合は
heapsort の方がいいかも。
たとえば、4.4BSD 由来の qsort は、同じ値のキーが
多数ある場合、死ぬ程遅いのでこういう時に真っ当な
qsort を持って来るのが面倒なら heapsort を使うって感じ。
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG元のデータ以外は定数個しか要らない。
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGそこまでソートに速さを求めるプログラム組んでんだ。。。
。。それとも単なる追求心?
0965デフォルトの名無しさん
NGNGソートでハマッたことのある人は多いと思う。
思ったより遅くて。
0966デフォルトの名無しさん
NGNG多数のデータから上位10件を表示するのに、ソート使ったら怒られました。
(まあ、確かにえらい遅かったが…)
0967デフォルトの名無しさん
NGNGソートしないでどうやるの?
0968デフォルトの名無しさん
NGNG君は多数のデータから1番大きい数字を探す時もソートを使うんですね
0969966
NGNGえーっと、priority queueを使えと言われたが、
良くワカランかったので上位10個ソート済みの
配列を持ってた(w
データなめ終わったとき配列内に残ってたやつ
が上位10個。
0970デフォルトの名無しさん
NGNGちょっと考えてみた。
たとえば、n件のデータのトップ10をとるなら
qsortだと最速でO(n*log(n))、最低速だとO(n*n)。
一方、全要素をなめて最大値を探すのはO(n)だから
これを10回繰り返せばトップ10が出るからオーダーはO(n*10)
あと、n>>10だと仮定すればO(n)だな。
結果としてオーダーを見るとソートするより最大値取得を
必要な回数だけ繰り返す方が早い。
ちなみに、priority queueを使えば操作自体はO(n)ですむけど
1件当たりの処理がちょっと重くなるから場合によって使い分ければ良いと思う。
0971デフォルトの名無しさん
NGNG操作は O(log(m)) だから、
n 個のデータの上位 m 個を求めるには
O(n log(m)) で済む。
(全部のデータをプライオリティキューにするのでは無くて
これまでに見たことがあるデータの上位 m 個だけをキューに
しておけば良いから。)
0972971
NGNG「大きい順んに m 個」
と言う場合、ヒープは小さい順に並べるのね。
そしたら、ヒープにある m 個のデータのうち
最小の奴だけは O(1) で取り出せ、それを更新する手間が
O(log(m)) になるから...
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG何を言っているのかよくわからんが、scanf系関数で数字列以外が入力された場合のことなら、戻り値をチェックすればよい。
0977デフォルトの名無しさん
NGNGでも実際には、データを全部メモリ上に持つ(そして何度も見る)のと
1パスで良い(全部同時に持つ必要はない)のはだいぶ違うね。
0978デフォルトの名無しさん
NGNG場合どのようなやりかたがあるでしょうか?
char workdate[15];
strcpy(workdate, "20020522135930");
これが
"20020522140030"
になってほしいのですが。
いったん日時型かなにかに変換するのかなと思ったりしていますが
わからないのでよろしくお願いします。
0979デフォルトの名無しさん
NGNGsscanf(workdate, "%04d%02d%02d%02d%02d%02d", &year, &month, &date, &hour, &min, &sec);
0980デフォルトの名無しさん
NGNGNULL文字は入れんでええのかえ
0981デフォルトの名無しさん
NGNG数値の入力にscanfを直接使うのはC言語では推奨されない。
全てを文字列として読み込み、その後、sscanfで処理すべし。
0982デフォルトの名無しさん
NGNG15でよかよ、ワシのミスじゃ。スマソ
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG0985(@_@)?
NGNG自動的に'\0'を入れないようだけど何故'\0'を付けないの?
付けた方が使いやすいと思うんだけど
0986伝説の日下部陽一
NGNG以降しる!
C言語なら、俺に聞け! <21>
http://pc.2ch.net/test/read.cgi/tech/1022045622/l50
0987デフォルトの名無しさん
NGNGそういう仕様だからです。
文句はK&Rに言いましょう。
0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG気持ちよかった。いつかともっち
0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNGgraphics.hがはいってないっす。
どこにああるの?
0992デフォルトの名無しさん
NGNGいつかともっち
0993991
NGNGあっちでききます。
0994デフォルトの名無しさん
NGNGいつの処理系だ?
TurboC++か?
使っている参考書が古すぎて最近のでは動かんぞ。
そのソースは諦めるべし。
09951000!!
NGNG/ ・ / ';,
/ '; / '; 1000 ワショーイ…
/ ;______/ ;
/ \
/ / \ \
/´ ( ) |____| ( ) |
| ///// ( | :| ) ///// |
| ( ) :| | ( ( |
| ) ( | | ) ) |
| ( ) '; / ( ( /
\ ) ( \/ ) ) ../
ヽ ........:::
09961000!
NGNG∧ ∧
/ ・ / ';,
/ '; / '; 1000 ワショーイ…
/ ;______/ ;
/ \
/ / \ \
/´ ( ) |____| ( ) |
| ///// ( | :| ) ///// |
| ( ) :| | ( ( |
| ) ( | | ) ) |
| ( ) '; / ( ( /
\ ) ( \/ ) ) ../
ヽ ........:::
0997991
NGNGじゃあ、glibw32.libをDLして使うしかないのかな?
参考書、確かに無茶古いの使ってます。
0998デフォルトの名無しさん
NGNG∧ ∧
/ ・ / ';,
/ '; / '; 1000 ワショーイ…
/ ;______/ ;
/ \
/ / \ \
/´ ( ) |____| ( ) |
| ///// ( | :| ) ///// |
| ( ) :| | ( ( |
| ) ( | | ) ) |
| ( ) '; / ( ( /
\ ) ( \/ ) ) ../
ヽ ........:::
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。