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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001ともっちNGNG
C言語質問すれです

・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デフォルトの名無しさんNGNG
ともっちはいらん
0003ともっちNGNG
僕は、17歳高校2年生。
3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。

今ゲームを開発しているのですが、兄さんは僕自身を開発するとか
言って、なかなかプログラミングに集中させてくれません。
質問するたびに僕の体を触ってくるので正直困っちゃってます。
ぼく自身、そういうのは好きだけど、それだけじゃゲーム作りが進まないので、
ここに質問させてください。よろしくお願いします。
FAQ的な質問ならぼくも回答します。間違いがあれば、先輩方の訂正を
お待ちしております。

なお、課題の○投げは一応別スレへ、ということでお願いします。

プライベートな質問に関してはスレの950が過ぎたあたりから受け付けますので
それまでそういったことは、なるべく謹んでください。

0004デフォルトの名無しさんNGNG
立て直します。
0005デフォルトの名無しさんNGNG
>>4
ティムポ、萎えちゃった?
0006デフォルトの名無しさんNGNG
・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/

推薦図書/必読書のためのスレッド 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
void mainloop()
{
 hoyuji();
}
void hyouji()
{
 katakana();
 hiragana();
}
void katakana()
{
 namae();
 tosi();
}
void namae()
{
 printf("なんていうの?");
}
という感じで,関数を何回も入っていく場合は,皆さんはだいたい何回程度に抑えていますか?
0009デフォルトの名無しさん  NGNG
ネタはいいから・・・>>8
0010デフォルトの名無しさんNGNG
>>8
必要ならいくらでも。
ただし、中を見なくても関数名を見れば何をしているか分かるようにすべし。
0011デフォルトの名無しさん  NGNG
http://pc.2ch.net/test/read.cgi/tech/1016519243/  
http://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
>>9
・・・
0013デフォルトの名無しさんNGNG
とりあえず、分からなければエキサイトのこのカテゴリへ
http://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デフォルトの名無しさんNGNG
もう20かい。
Cって多くの人が学んでいるのだなぁ
0015デフォルトの名無しさんNGNG
>>14
C覚えてれば大体の構造化言語は使えるから。
0016デフォルトの名無しさんNGNG
ていうかパート2以降のスレなら20くらいまであっという間なのは普通な気が。。
0017デフォルトの名無しさんNGNG
>>14
大学や専門学校のプログラミングの授業で採用しているところが多いと思うし。
0018デフォルトの名無しさんNGNG
だな。それで質問多い→回答多い→あっという間
0019デフォルトの名無しさんNGNG
>>14
おかげでCの糞スレも多いという事実
0020デフォルトの名無しさんNGNG
プログラマのたしなみでしょ。Cは。
0021デフォルトの名無しさんNGNG
>>1
おまえなんかにゃきかねーよーだ
0022デフォルトの名無しさんNGNG
int main(void)
{
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
>>22
素人かい・・・。returnが無いぞ。
0024デフォルトの名無しさんNGNG
。・゚・(ノД`)・゚・。 スイマセン上手くいきました(bcc55)

しかし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
>>23
多分C++のプログラムと解釈されて、mainにreturnがなくても警告でなく
なってるんじゃない?
0026デフォルトの名無しさんNGNG
>>24-25

>int main(void)

反論の余地はないよ。WindowsだからとかC++だからとか。
0027デフォルトの名無しさんNGNG
>>26
反論の余地があるよ。C++だったら。
C++ は main という名前の関数は特別扱いで、末尾に return が無い場合は暗黙に return 0; があるものとされます。
0028デフォルトの名無しさんNGNG
C言語質問ホンスレ!
0029デフォルトの名無しさんNGNG
回転シフトするプログラムが欲しいです。お願いします。
0030デフォルトの名無しさんNGNG
(var << x) | (var >> bits - x)
0031デフォルトの名無しさんNGNG
>>8
 分割に意味があれば、幾らでも。
 でも、おいらオバカだからパーツとしての関数(標準関数みたいな純粋な機能)以外は、あまり分割しないなあ。
 初期化、ファイル読み込み、メイン、終了処理とかって感じで、相当に単純だと思う。
 所詮、上から下にしか処理を書けない非オブジェクト指向な人間なんで(^^;
0032デフォルトの名無しさんNGNG
>>29

int main()
{
char *text="ShiftShift";
for( int i=0; i<=10000; ++i )
{
fputs( "\r", stdout );
fwrite( text+i%5, 1, 5, stdout );
}
}
0033デフォルトの名無しさんNGNG
>>30
すいません。私バカなんで。。。
xとbitsは何に使うんでしょうか?
003429NGNG
>>32
スイマセン.ポインタとかファイルストリームは使わないでください。・゚・(ノД`)・゚・。
0035デフォルトの名無しさんNGNG
>>33
回転シフトって何か曖昧な表現無しで説明して。
その後もう一回>>30を読んでみて。
003629NGNG
xとbitsわかりました。
右回転シフトの場合(1bitずつシフトする)
1.ある変数値aの一番右にあるビットをbに格納
2.aを右に1bitシフト
3.aの最上位ビット(一番左)にbを入れる
この3ができません。
003729NGNG
スイマセンワカリマシタ
|演算見落としてました。||これだと勘違い(恥)
アリガトウゴザイマス。・゚・(ノД`)・゚・。
0038デフォルトの名無しさんNGNG
>>37
unsigned にすんの忘れんなよ
0039デフォルトの名無しさんNGNG
ラジャー!
0040デフォルトの名無しさんNGNG
今だ!パコンパコンパンパンしながら500ゲットォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ∧∧
       (゚Д゚ )           (´´
アアン !  ∧∧⊂  ヽ/       (´⌒(´
   ⊂(=^_^;=⌒ `つ つ≡≡≡(´⌒;;;≡≡≡
      し' ̄ ̄   (´⌒(´⌒;;
            ズザーーーーーッ


ドッコイショ・・・・・・・・・
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄      (´´;;
      ∧∧∧∧        (´;;
  〃 (=^_^;=)Д-)
 〃 ⊂(。(。 つと| グィッ
   〃  > y ) /〜))
      .し'し' U


何見てんだゴルァ!!
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄
  パ  ∧∧ ∧∧  パ
  ン (=^_^;=)゚Д゚)  ン
     (.ノ(し⊂ニノ ))
ミナイデェ > y ) /≡〜
     .し'し' U
0041デフォルトの名無しさんNGNG
ともっちと俺
0042仕様書無しさんNGNG
>>41
前スレあまってるだろ
0043デフォルトの名無しさんNGNG
つーかちょー迷惑なんですけど
根本の原因のともっちにはマジ責任とって氏んでほしい
0044デフォルトの名無しさん  NGNG
あるライブラリを書いているときに、
ヘッダーを内部ようと公開用の二種類作るのは
変でしょうか?プログラム構成に関しては色々と
本に書いてあったりしますが、ヘッダーの良い
書き方なんかについて言及してるものは少ないですよね。

Linuxでいえば
linux/include
linux/asm-i386
みたいに分ける感じの方がいいのかな?
0045デフォルトの名無しさん  NGNG
linux/include/linux
linux/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デフォルトの名無しさんNGNG
(((((,;,゚д゚) イモイモムシムシ
0048デフォルトの名無しさんNGNG
>>44
別に普通じゃないか?
0049デフォルトの名無しさんNGNG
I'm free to be whatever I
whatever I choose
And I'll sing the blues if I want
0050悩むこと1週間NGNG
トケタ━━(゚∀゚)━━ァ!

やっぱ2chの力は凄いわ、サンクス
0051デフォルトの名無しさんNGNG
I get up - when I'm down
I can't swim - but my soul won't drown
I do believe - I got flare
I got speed and I walk on air
0052デフォルトの名無しさんNGNG
アヒャ━━(゚∀゚)━━ァ!
0053デフォルトの名無しさんNGNG
(;´Д`)赤玉って本当に出るんですか?
心配でオナニーに気合いが入りません。
だって、これが最後かも・・・って考えてしまうと、
つい、未来の為にとっておこうって思っちゃうんですよ。
いや、それでもイクんですけどね、一応は。
でもこれじゃいけないなぁって後から悩んじゃう訳なんですよ。
限り有る精子をもっと有効(中田氏)に使わなきゃって。
あぁ、出たらどうしよう!
0054デフォルトの名無しさんNGNG
さっきまた旦那のあれ掃除機で吸ったんですよ
そしたらポロってとれちゃって
どうすればいいですかね?
血が止まんなくて大変です。
0055デフォルトの名無しさんNGNG
>>53
>>54

いいかげん許容範囲を超える。やめろ。

あと、いつまでも「ともっち」言ってるやつら、他のスレでやってくれ。

いくらなんでも最近荒れすぎ。
0056デフォルトの名無しさんNGNG
これはジョブズ師匠が出てきてくれないと収まらないな
0057デフォルトの名無しさんNGNG
switch(Syanpu){
case Masyeri:
まるいち
break;

case Syokubutumonogatari:
まるに
break;

case Vidarusasuunn:
まるさん
break;
}

まるいち、まるに、まるさんの部分に10行以上の長い文を書くのってへんですか?
SEの入社試験とかのソースでそんなふうに書いたらあかんですか?
それよりだったら,その部分を関数にまとめた方がいいですか?
0058デフォルトの名無しさんNGNG
>>57
>SEの入社試験とかのソースでそんなふうに書いたらあかんですか?

その会社ほんとにSE業なのか・・・?転職?
0059デフォルトの名無しさんNGNG
>>57
シャンプーの綴りくらい。。。
0060デフォルトの名無しさんNGNG
>>57
俺は別に100行くらい書くけど。
もちろん関数に分割できればそれに越したことはないけど。
0061デフォルトの名無しさんNGNG
{}でカコッてローカル変数を分けることかな。
おれもヘタレかもしれん。
0062デフォルトの名無しさんNGNG
アンダースコアひとつで始まる名前は、グローバル ネームスペースで使う名前として実装によって予約されています?

そーすると、アンダースコアひとつで始まる名前は、ローカル変数には自由に使って何の問題もない?
0063PNPONGNG
独学でCやりたいんだけど結局、入門書読んではじめるのが一番いいの
か?みんなどういう方法でマスターしていったんだ?
0064デフォルトの名無しさんNGNG
>>63
薄い本買って読んで猿のように書いた。
後、QUICK Cのヘルプは最大限活用した。
0065デフォルトの名無しさんNGNG
fclose はエラーが発生すると EOF を返すらしいです。
クローズ処理でエラーが発生したら、つまりこのファイルはクローズされないんでしょうか?
もしそうなら、クローズするためにもう一度 fclose してもまたエラーになりそうですが、そーすると結局どうすれば FILE* を解放できるんでしょうか???
0066デフォルトの名無しさんNGNG
>>63
 何かを作りたくて一所懸命&楽しい、ってゆう状態にもっていく工夫をして下さい。
 それができないようだと我慢の勉強になってしまいます。
0067デフォルトの名無しさんNGNG
>>65
fcloseが失敗するのは見た事ないです
でもそうなったら処理系依存の話になっちゃうんじゃないでしょか?
0068デフォルトの名無しさんNGNG
>>57
某WIN32系の本に影響されて俺はswitch部はジャンプテーブル的に
使っています。理由はやり方こそ違えど60さんと同じ。1つの関数
に違う処理を突っ込みすぎると変数の再利用などでグチャグチャに
なりやすいからです。


>>67
不正なFILE*を渡せば・・・(w
006968NGNG
>理由はやり方こそ違えど60さんと同じ

61さんだった・・・メンゴ
0070デフォルトの名無しさんNGNG
fwrite/fcloseで書き込みエラーは取れません。
ディスクとCPUが非同期になっているため、プログラムの
終了後にエラーがくる場合があるからです。
また、mallocがNULLを返さないOSもあります。
これも実際に使用するまで取らないからです。
将来、これらの関数を全部voidにして、
シグナルや例外処理およびプログラム終了後の
ハンドラ登録方式にでもにまとめるべきかと。
0071デフォルトの名無しさんNGNG
>>62
実装側でグローバルネームスペースで使うマクロが
存在する可能性があるのでオススメできないぞ。
0072デフォルトの名無しさんNGNG
>>70
fwriteでdisk fullは取れるYO!
0073デフォルトの名無しさんNGNG
>>65
書き込み処理を行ったものについてfcloseがエラーを返したら、
書き込みが失敗したとみなすべきですね。
0074初心者NGNG
ちょっとお聞きしたいのですが%dというのはPrintfで数値という意味ですが
%2dとはどういう意味ですか
0075PNPONGNG
>>64
サンキュー!
猿のように書いたって、本に書いてる例題プログラムとかをやった
っていうこと?
>>66
サンキュー!
なんか精神的につらそうだな〜・・・
0076デフォルトの名無しさんNGNG
君はあれかね、本は読まないタイプの人間かね
0077デフォルトの名無しさんNGNG
void fclose(); ぢゃないの?
0078デフォルトの名無しさんNGNG
ぢゃないの。
0079初心者NGNG
>>76
%dはどの本にもでているんですが%2dはどこを調べてもでてないんですよ
0080デフォルトの名無しさんNGNG
君はマニュアルが読めない類の人種みたいだね。
0081デフォルトの名無しさんNGNG
ふーん。
0082デフォルトの名無しさんNGNG
>>65
exitする。
あるいはmainでreturnする。
0083デフォルトの名無しさんNGNG
>>74
%2d→2桁右寄せで出力するということだ
ちなみに、%02d、こうすれば0もつけてくれるぞ。
0084デフォルトの名無しさんNGNG
%*d は?
0085デフォルトの名無しさんNGNG
>>79
(´ー`)。oO(そんな事も書いてない本って、どんな本だろう?)
0086デフォルトの名無しさんNGNG
65
思いっきりSCANDISKしたほうがいいとおもうな。完全オプションつきで。
0087初心者NGNG
>>83
ありがとうございます。
助かりました。
0088デフォルトの名無しさんNGNG
俺がいつも心配なのはこういう初心者の質問に逐一教えていくと
初心者はわからないことがあるたびに検索せずに
質問してくるんじゃないかと・・・
0089 NGNG
近頃の剥いたでは煽る・罵る・貶めるだけで質問に答えられんヴァカが
いるみたいだな。。。。
0090デフォルトの名無しさんNGNG
>>89
どう控えめに見ても君がヴァカだ。
0091デフォルトの名無しさんNGNG
つーか検索しなくてもフォーマット文くらいなら試してみればよいのに・・・
すぐ人に聞く人はプログラミングの楽しみの90%を逃しているよ。
どうせ宿題小僧なんだろうけどさ
0092デフォルトの名無しさんNGNG
関係ないけどやっぱ名前を空白にする人ってのはゲハ癖の抜けない厨房クンなのかな?
0093デフォルトの名無しさんNGNG
>>89
と煽る君がとてもかわいいよ。。。。
0094デフォルトの名無しさんNGNG
(´・∀・`)へー
0095デフォルトの名無しさんNGNG
質問内容によっちゃ>>89のが当てはまる場合もあるが
今回ばかりは質問が「%2dって何ですか?」だもんな・・・
0096 NGNG
多分本に乗ってても読めないんだと思う。
慣れるしかないんだけど
0097デフォルトの名無しさんNGNG
%2dのわからない君にこそ、倉薫をお薦め・・・
0098デフォルトの名無しさんNGNG
%2dなんてあんまりつかわねーよ
普通は%02dか%.2dだろ
0099デフォルトの名無しさんNGNG
printf("%*s", space, "");

こんな邪悪なことしてたことある人いる?
0100デフォルトの名無しさんNGNG
使うか使わないかの話ではなくそれくらい調べろよという話だ
0101デフォルトの名無しさんNGNG
だな
0102デフォルトの名無しさんNGNG
>>99
#define _(a) a&&a
 :

if (10 < _(foo) < 100)

こんなことしてた奴もいる。てか漏れ(藁
0103デフォルトの名無しさんNGNG
>>89は、%2dがわからないとき「%2d」で検索する、に1票。
0104デフォルトの名無しさんNGNG
>>102
で、振りかえってみて、あの頃の自分が恥ずかしい、と。
0105102NGNG
穴があったら入れたい
0106デフォルトの名無しさんNGNG
>>105
ワロタ
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
>>107
仕様書みたいなのはないのか?
なければ先輩の頭をキーボードでぶん殴っていいです
0109デフォルトの名無しさんNGNG
>>107
その先輩に↓を見るように言うんだ
http://pc.2ch.net/test/read.cgi/tech/1021459016/107
それで解決


・・・しなければ上司に助けを求めろ
0110デフォルトの名無しさんNGNG
>>108
えっとへッダを印刷したプリンタ用紙に
「可変長ビットI/Oモジュール: 最大32bit」
と鉛筆で殴り書きしてありますた。

これだとマウスでシバクくらい良いでしょうか?
0111デフォルトの名無しさんNGNG
やりたいことも整理できずに、ヘッダそのままもってくるあなたへの
最適な助言としては・・・「諦めてさっさと逃げ出せばーか」ですが、、、

どうしても知りたきゃ情報圧縮の本でも読みなさい。
0112デフォルトの名無しさんNGNG
struct bitout {
unsigned int tmp;
short shift;
FILE *fp;
};
0113デフォルトの名無しさんNGNG
>>110
いえ、キーボードで死なない程度に殴ってください。
ついでにあなたも自分の顔をマウスで殴ってください。

すまんが、これはどういうプログラムの一部なんだ?
bitio.cはなにをするんだ?

http://www.google.co.jp/search?q=bitio.c&ie=UTF8&oe=UTF8&hl=ja&lr=
Googleで検索すると圧縮関係が多くヒットするけど、そっち方面とは関係あるか?
0114デフォルトの名無しさんNGNG
>>108
このヘッダ見てやりたいことがわからない奴はプログラマ辞めたほうが良い
と思う。くらいに自明でありがちなパターンだよーん。
0115デフォルトの名無しさんNGNG
>>113
君もディスプレイに頭突っ込みなさい。
ビットリードライトは可変長の操作が必要なハフマンとかの圧縮アルゴ
では当たり前の部品だ。
0116デフォルトの名無しさんNGNG
>>114=先輩登場、という罠。
0117114NGNG
残念ながら俺様はのんきな大学院生(w
0118デフォルトの名無しさんNGNG
グレイ符号とかかな。
0119デフォルトの名無しさん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;
}
0120119NGNG
ずれた。欝。
0121デフォルトの名無しさんNGNG
>>115
そりゃそうだが、他人事とはいえウソ書いちゃまずいかと思って念のため。。。

今から頭つっこむんで、当分書き込めませーん。じゃあ逝ってきます。

0122デフォルトの名無しさんNGNG
gray code は隣接する符号を1ビットだけ変化するように構成して誤りチェック
に有利にした符号ってだけであって、あまり関係ないと思うよ。
0123shigeNGNG
データ圧縮ハンドブックの付録ディスケットに、
0124デフォルトの名無しさんNGNG
baka
0125デフォルトの名無しさんNGNG
Ruby!!!!!!
0126デフォルトの名無しさんNGNG
>>119
間違ってる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デフォルトの名無しさんNGNG
which endian?
0128デフォルトの名無しさんNGNG
インディアン関係無い
0129デフォルトの名無しさんNGNG
つーか吐き出した部分削るの忘れてるし(w
教育的配慮?
0130デフォルトの名無しさんNGNG
1bitを書きつづけると楽しいことになりそうだね
0131デフォルトの名無しさんNGNG
unsigned long のインディアン嘘つかなーい?
0132デフォルトの名無しさんNGNG
出力する方向がwriteのMSBからかLSBからか決めなくていいのか?
0133デフォルトの名無しさんNGNG
だからさっきからインディアンって・・・
0134デフォルトの名無しさんNGNG
>>107
自分でできないその先輩を殴っていいよ。
0135デフォルトの名無しさんNGNG
>>134
あのヘッダを見ても本当にその先輩が自分で出来ないとか思うか?
107はそのレベルから見ても員数外要員だと思うんだが
0136デフォルトの名無しさんNGNG
使えない107を何とかして使ってやろうという心意気を感じる
0137デフォルトの名無しさんNGNG
正直実は演習問題かなんかなんだろ?
こんな車輪の再発明を予備要員にさせる「現場」っつーのが思いつかん。

一番ありそうなのは学校の課題のバカ同士での擦り付け合いって気が・・
0138デフォルトの名無しさんNGNG
BITINとBITOUTを別にしてるところあたり微妙な気もするけど、確かに
マトモな現場ではなさそう。
0139デフォルトの名無しさんNGNG
>BITINとBITOUTを別にしてるところあたり微妙な気もするけど
本気で言ってるなら、自分でビット入出力のモジュール書いてみろ
0140デフォルトの名無しさんNGNG
>>139
ちゃんと説明してごらん。いや是非アフォな俺のためにしてください。
:
:
つか書いたことあるけど(w
0141デフォルトの名無しさんNGNG
>>139
正直俺も知りたいのでAGE
0142デフォルトの名無しさんNGNG
オーバフローやアンダーフローをif文で判定するにはどうすればいい?
0143デフォルトの名無しさんNGNG
オナニー大好きとプリントアウトしたいんですが、
どうやってCで書けばいいでしょうか?
0144139NGNG
ランダムアクセスで読み書きを行えるようにすると、
未出力分との整合を取るコードを書かなければいけないし、
そもそもbit単位でのファイルI/Oは、シリアライズ以外での利用方法が無いから、
読み書きを同時に行うメリットがない。

どうしてもランダムアクセスにする必要があるなら、
ファイルIOとビットバッファを分離して、
ファイルから一部(または全部)をメモリに読み込んだ後に処理すべき。
0145デフォルトの名無しさんNGNG
>>142
絶対値が大きいほうの項との符号を比べちゃだめ?
0146デフォルトの名無しさんNGNG
>>145
aがオーバフローしているときはどうするの?
0147デフォルトの名無しさんNGNG
puts("\0(´д`)y-~~sineyo");
0148デフォルトの名無しさんNGNG
>>144
は??? お前138の言ってることがわかってる?
構造体を別にする必要が無いって意味だぞ。107を良く見直せ。
0149デフォルトの名無しさんNGNG
んじゃー、構造体を使い回す意味ってある?
馬鹿がbitoug_open()で開いて、bit_read()を発行する可能性もあるが。
0150デフォルトの名無しさんNGNG
人間素直に認めることも大事だと思うがどうか?
0151デフォルトの名無しさんNGNG
プログラマの責任とか、中でフラグを持ってassert()するとか言うなよ。
コンパイルにチェックが走って通らない方が何倍も安全なんだから
0152デフォルトの名無しさんNGNG
>>146
aってなんだよ(w
まあ数値だけからって言いたいんだろうけどさ。どうしてもなら演算直後
にasm使うとか(間に別の演算が無いという保証は無いが)。
0153デフォルトの名無しさんNGNG
たとえば,
while(??){
a/=2.1;
b=3.0/a;
}
なんてやっているとそのうちbがオーバフローしますよね
そのときに,それ以上計算がされないように食い止めたいのです
0154デフォルトの名無しさんNGNG
while(b == 3.0/(a/2.1) * (a/2.1) ){
a/=2.1;
b=3.0/a;
}
0155デフォルトの名無しさんNGNG
>>153
環境わかんないけどSIGNALはつかえねーの?
0156デフォルトの名無しさんNGNG
>>154
詳しくないんだけど、それって演算誤差の方が支配的なんでは・・・?
0157デフォルトの名無しさんNGNG
>>154
なんとなくできそうな気がしました
>>155
わかんないっす

もう時間なので,また来ます
ありがとう
0158デフォルトの名無しさんNGNG
浮動小数の比較に==はキケン
0159デフォルトの名無しさんNGNG
>馬鹿がbitout_open()で開いて、bit_read()を発行する可能性もあるが。

単純なシリアライズが殆どと自分で逝っておきながらこんな例を出すのはちょっ
と屁理屈くさい気もせんではないが、まあ typedef ではチェックできない
のは確かか。なんか上手い手ないのかね。
0160デフォルトの名無しさんNGNG
>>158
先生!
(fabs(foo-bar)< e)
でOKっすか?
0161デフォルトの名無しさんNGNG
eはどうやって決める?
0162デフォルトの名無しさんNGNG
ヘッダに書いてある EPSILON の値
0163デフォルトの名無しさんNGNG
オーバーフローした場合の値がそのチェックで正常に通るか規定されてないと思うが
0164デフォルトの名無しさんNGNG
>>163
ぐあっ,,確かに。

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デフォルトの名無しさんNGNG
俺は俺みたいなのが先輩や先生だったら萎える
0166デフォルトの名無しさんNGNG
ちょっとお勉強してきました。
win32だと status87()(statusfp()), control87()(controlfp()) とか
でFPフラグを弄ったり見たりできるようですね。Linuxでは__setfpucw()で
OKなのかな?
0167デフォルトの名無しさんNGNG
どうせ依存ならインラインアセンブラを使った方がいい
0168デフォルトの名無しさんNGNG
>>164
むしろ全国の先生・先輩の方が、自分で勝手に調べてくれるタイプの生徒・後輩を
熱望してると思うよ(w
0169デフォルトの名無しさんNGNG
>>153
 b が大きくなるか小さくなるかは、分子と分母の関係から分かりますよね。

 で、計算前の b と計算後の b を比較して、大きくなる筈なのに小さかったらオーバーフローでは?
0170デフォルトの名無しさんNGNG
errnoでEDOMかERANGEかHUGE_VALあたりをチェックしてみては?
あとは>>155のいうようにsignal()でSIGFPEでも捕まえてみるのは?
オーバーフローしたあとで捕まえて間に合うのか知らんけど。

ところで実数でも>>169のいうようにラップアラウンドするの?ビット的にはどっちかの無限大だかNaNだかになりそうな気が。
0171デフォルトの名無しさんNGNG
http://sdx1.uky.edu/cgi-bin/man.cgi?section=all&topic=fegetexceptflag
これだめ?
0172ともっちNGNG
お兄さんがた、おしえてください!
0173デフォルトの名無しさんNGNG
空栗鼠はこっちしかサポートしてないかな?

http://www.informatik.uni-frankfurt.de/doc/man/hpux/fpgetsticky.3m.html
0174わからへん。。。NGNG
だれか教えて下さい。

ファイルの文字の出現比率を表示するプログラムを書きなさい。
「英字、数字、空白、改行、その他」の文字ごとに表現比率を表示しなさい。
0175デフォルトの名無しさんNGNG
>>172
なんだいともっち
お兄さんが頭の上から足先まで何でもみてあげるよ
さあ、脱いでごらん
0176デフォルトの名無しさんNGNG
>>174
ctype.hをインクルドしよう
0177デフォルトの名無しさんNGNG
>>174
1文字ごとに頻度を数えるなら、

#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お兄さんNGNG
>>174

int 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デフォルトの名無しさんNGNG
>>178
getcharだと標準入力から読んじゃうぞ〜
fgetcでしょ。
0181デフォルトの名無しさんNGNG
>>177
>unsigned class_count[4];
>class_count[!!isalpha(c) + !!isdigit(c) * 2 + !!isspace(c) * 3]++;

だめじゃん。
0182デフォルトの名無しさんNGNG
map<char, int>で・・・あ、Cスレだった(w
0183デフォルトの名無しさんNGNG
と言ってみるテスト。
0184デフォルトの名無しさんNGNG
関数にexternをつけている人は何を考えているんですか?
省略という言葉を知らないんですか?
0185デフォルトの名無しさんNGNG
>>184
また使い古された煽りを
0186デフォルトの名無しさんNGNG
>>185
古臭かったか(鬱
>>107の先輩を煽ったつもりなんだが。
こういう奴ってautoとかも書いているのかなー
0187デフォルトの名無しさんNGNG
>>186
さすがにauto書いていたら珍人物だな
そんな珍しいソースを読んでみたいな
0188デフォルトの名無しさんNGNG
extern "C"
0189デフォルトの名無しさんNGNG
俺の使ってるコンパイラに附属してるへッダだと関数は全部externが
ついてるな。なぜだろう?
0190デフォルトの名無しさんNGNG
>>181 何がダメなの?
isalphaとisdigitとisspaceはたかだか1つしか真にならないと思うけど。
0191デフォルトの名無しさんNGNG
>>189
そりゃあたりまえだろう
0192デフォルトの名無しさんNGNG
>>191
へ?
>>107みたいなへッダだと略すのが当たり前で
標準へッダだと略さないのが当たり前なの?

ヨクワカラナイ…
0193デフォルトの名無しさんNGNG
>>192

へッダで関数にexternつけるのは別に普通だよ。

>>184 はただのネタ。
0194デフォルトの名無しさんNGNG
linker & loader を勉強すればどっちでも良いがかわいいコンピュータ
君のために extern を付けてあげたくなっちゃうんだな(w
0195デフォルトの名無しさんNGNG
>>190
「英字、数字、空白、改行、その他」ごとにカウントするんでしょ?
0196デフォルトの名無しさんNGNG
>>194
後から読む俺様のためにも、だ!ボォゲェ!
0197デフォルトの名無しさんNGNG
>>195
unsigned class_count[5];
class_count[!!isalpha(c) + !!isdigit(c) * 2 + !!isspace(c) * 3 +
(c == '\n') * 4]++;
0198デフォルトの名無しさんNGNG
>>195
ちゃんと係数かかってるジャン??
0199デフォルトの名無しさんNGNG
何だ揚げ足取りだったのか・・・
0200デフォルトの名無しさんNGNG
>>197
まだダメ。
0201デフォルトの名無しさんNGNG
>>199
揚げ足とりというか、仕様をみたしてないじゃん。
(出題者の意図がわからんけど)
0202デフォルトの名無しさんNGNG
>>201
答えを完璧にするのは質問した奴の仕事。教えた奴は基礎的なことがあってれば
あとはどうでもいい。そこまで質問君に優しくしてやる必要はない。
0203デフォルトの名無しさんNGNG
>>201

英字はclass_count[1]に、
数字はclass_count[2]に、
空白はclass_count[3]に、
改行はclass_count[4]に、
その他はclass_count[0]に、
それぞれ入ると思うんだが。
0204デフォルトの名無しさんNGNG
まさか初期化のことを言ってるんじゃ・・・・
0205デフォルトの名無しさんNGNG
>>197
オーバーランするね。
0206デフォルトの名無しさんNGNG
isalpha(c)
isdigit(c)
isspace(c)
(c == '\n')

ってどれか同時に真になるの?
0207デフォルトの名無しさんNGNG
isspace(c)
(c == '\n')
あ、これか。しかしそれこそ質問者に悩んでほしい問題だが。
0208デフォルトの名無しさんNGNG
>>203
201は>>177のこと言ってるんだけど。。。
0209デフォルトの名無しさんNGNG
isspace使わないとなると面倒だなー。
(c == ' ' || c == '\f' || c == '\t' || c == '\v')
とか書くんかな。
0210デフォルトの名無しさんNGNG
>>207
そんな技巧に走ってバグるなら、スナオにifで書けばいいじゃん。
0211 NGNG
>>210
禿同
0212デフォルトの名無しさんNGNG
ヘルパーの関数かマクロにしちゃっても良いけどね。
0213??????B?B?BNGNG
解決しました。
ありがとう。
0214デフォルトの名無しさんNGNG
>>193
どこが?
0215デフォルトの名無しさんNGNG
ここが適当かどうかわからないんですがFreeBSDでユーザ名から
uid知りたければどうすればいいですかね?
0216getpwnamNGNG
どう考えてもUNIX板へどうぞ
0217デフォルトの名無しさんNGNG
>215
216の言う通り
getpwnam
0218デフォルトの名無しさんNGNG
#include <stdio.h>
void 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);
}
コンパイルエラーはないんですが
実行するとエラーが出るのですが原因わかりますか?
メモリがどうたらこうたら初心者でスマソ
0219デフォルトの名無しさんNGNG
http://www.kumei.ne.jp/c_lang/index_c.html
0220デフォルトの名無しさんNGNG
>>219
ひょっとすると218は直接答えが出てこないと自分への回答だと理解
しない完全他力本願タイプなんでは・・・?(w
0221デフォルトの名無しさんNGNG
また書式絡みかよ。
もしかして昨日の%2dと同じ奴なのか?
0222デフォルトの名無しさんNGNG
>>220
いや、219を読んでますよ
0223デフォルトの名無しさんNGNG
>>221
違う
0224デフォルトの名無しさんNGNG
この時期何かあるの? 落ちこぼれ研修生?
0225デフォルトの名無しさんNGNG
>>218
a, b, c は数値型なのに文字として扱っている。

まぁ、例えていうと高校生を小学生扱いしたり、
男の子を女の子扱いするとグレてしまう。

数値型a, b, cも自分らしい扱いをされなかったので
グレてしまったのだ
0226デフォルトの名無しさんNGNG
>>225
a,b,cを文字列の変数として扱いたいんですがどうすればいいんでしょうか?
0227デフォルトの名無しさんNGNG
>>226
char a[1024],b[1024],c[1024];
0228デフォルトの名無しさんNGNG
>>226
甘ったれんな。ちゃんと努力しろ。
0229デフォルトの名無しさんNGNG
俺は上の二人のうちどっちが親切か即答できない(w
0230デフォルトの名無しさんNGNG
>>226
参考書買ってきて読め。もしくは、C なんか使うな。
0231デフォルトの名無しさんNGNG
>>226は悲惨だ・・・
0232デフォルトの名無しさんNGNG
>>229
どう考えても>>228だろうな。
基礎の基礎くらいは調べて欲しいものだ
0233デフォルトの名無しさんNGNG
>>227
おーできた
ありがとうございます!
0234デフォルトの名無しさんNGNG
参考書っていうか219さんが折角リンクくれたのに、努力もせずに
すぐ質問は最低だと思ふ。
0235227NGNG
>>232
例を言われても余りうれしくないな。
0236デフォルトの名無しさんNGNG
>>234
読んでるって(w
0237218NGNG
まあ、俺が悪かったスマソ
初心者用のスレ立てたほうがよくないか?
0238デフォルトの名無しさんNGNG
>>237
もしかして試したのか?(-_-;)
0239デフォルトの名無しさんNGNG
>>237
初心者以前の問題

やる気がないようにしか感じない
0240デフォルトの名無しさんNGNG
ここは十分初心者向け・・・
0241デフォルトの名無しさんNGNG
218はなぜ非難されてるか全く理解してないと思う。努力ってのは読み始めて
30分もたたずに音を上げることじゃない
0242ひよこ名無しの4NGNG
PCQAに立てますか?
アウトソーシングならある程度受け付けますが。
0243デフォルトの名無しさんNGNG
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>C
0244218NGNG
>>238
>>227か?試した。
>>239
やる気はあるよ。でも最初がわからないととっつきにくい
数学だって掛け算できなければ積分やろうとはおもわないだろ
それと俺の中では同じ。
まだ素人中の素人だ。自分自身でもわかってる。
勘弁してくれ
0245デフォルトの名無しさんNGNG
>>242
プログラムに関してはここに真っ先に来るんじゃない?
0246デフォルトの名無しさんNGNG
>>244
(怒)
だったら配列の大きさはそんなにいらないだろくらい言えよ(-_-;)
0247デフォルトの名無しさんNGNG
>>244
その考えが根本的に間違ってる。
素人だから何でも聞いていいというわけじゃない。
文字列の格納の仕方くらいCを始めてから一日で覚えられる範囲だろが
0248218NGNG
>>246
素人だから配列の意味がわからないんだよ
勘弁してくれ
>>219みて勉強するから
0249デフォルトの名無しさんNGNG
>>248
ん?本当は分かっているけどみんなを試したんじゃないの?
0250218NGNG
>>247
はい、がんばります
0251218NGNG
>>249
まじでわからなかったんだよ!
この悔しさをばねに勉強するよ、、、
0252デフォルトの名無しさんNGNG
218にいいことを教えてあげよう。楽して手に入れた知識はあっという間に
散るぞ。ついでにハウツー丸暗記法で覚えると応用が効かないよ。プログ
ラマの多くは怠け者だから何度かこういったミスをしてるから初心者に厳
しくあたるんだよん。ってーことは覚えておいてほしいな。
0253デフォルトの名無しさんNGNG
>>252
218じゃないが了解。
0254デフォルトの名無しさんNGNG
すべての手続き型言語の基礎と言ってもいいCで工夫や試行錯誤が出来なければ
どの言語を使っても結局言語に使われるだけ。
0255デフォルトの名無しさんNGNG
>>248
配列がわからないとな…

努力のカケラも見えんな
0256デフォルトの名無しさんNGNG
>>251
わからなくて他人に聞いた悔しさのバネより

自分で解決した時のうれしさの方がより強いバネになる
0257デフォルトの名無しさんNGNG
入門者の人には厳しいお言葉はとりあえず置いといて、

 >自分で解決した時のうれしさ

を是非味わってほしいです。こればっかりは人に聞いてしまうと
喜び半減なので
0258デフォルトの名無しさんNGNG
質問。
socket関数使ってhttpでweb上のページ読むツール作ってるんですが、
串ってどうやって通せばいいかわかる人いますか?
connect()関数に渡すSOCKADDR_IN構造体をどうにかするんでしょうか?
0259デフォルトの名無しさんNGNG
>>258
RFCを見てプロキシの説明参照。
ヒント。

プロキシに繋ぐ−>GET 目的のドメイン/目的のファイル
0260デフォルトの名無しさんNGNG
今からC、C++を勉強しようと思うんだけど
ソフト何買えばいいの?
折れxpだからC++.netってやつで十分かな?
0261デフォルトの名無しさんNGNG
>>260
フリーで十分
0262デフォルトの名無しさんNGNG
>>260
このスレの上の方を見て。
0263デフォルトの名無しさんNGNG
>>261
フリーで十分なの!?
.netとか言う奴はいらない??
0264デフォルトの名無しさんNGNG
上の方ねスマソ
やはり以前にも似た話題が出たのか…鬱
0265デフォルトの名無しさんNGNG
>>263
勉強でしょ?
フリーで十分。
0266デフォルトの名無しさんNGNG
>>263
当たり前だろ
覚えるのにわざわざ.net買ってたら金がいくらあってもたらんわ
0267デフォルトの名無しさんNGNG
>>263
めじろを落としてこい。
0268デフォルトの名無しさんNGNG
>>267
よりによって・・・昔アレ¥10k位してたよね?
0269デフォルトの名無しさんNGNG
.NET SDK もフリーだけどね
0270デフォルトの名無しさんNGNG
やっぱ基本はCでコンソールでしょう。

VS.netのアカデミック買いなさい。WindowsXPも付いてくるよ♪
0271デフォルトの名無しさんNGNG
C言語って何ですか?
0272デフォルトの名無しさんNGNG
>>271
int main()萌え言語
0273デフォルトの名無しさんNGNG
>>271
もっと
いれて
きもちいい
だめ
ああ
いく!いっちゃぅぅぅ

など。
0274デフォルトの名無しさんNGNG
>>273
あいうえお作文かと思っちゃったよ
0275デフォルトの名無しさんNGNG
(゚Д゚)?
0276デフォルトの名無しさんNGNG
>>271
ああああああん!
ほしいのぉ!もっとぉ!
かたいの頂戴!
しょうてんさせて!
ねぇ!お願い!

>>274
こんなの?
0277デフォルトの名無しさんNGNG
>>276
それC++。

オブジェクト指向であんなものやこんなものを挿(略
0278デフォルトの名無しさんNGNG
>>276
おまえ上手いなぁ
0279デフォルトの名無しさんNGNG

何・・?このスレ・・・・・

             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       // ___   \  ::::::::::::::|
  | |       |  |   |     U :::::::::::::|
  | |      .|U |   |      ::::::U::::|
  | |       | ├―-┤ U.....:::::::::::::::::::/  
  | |____ ヽ     .....:::::::::::::::::::::::< 
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::::::::::::::::::::|



0280デフォルトの名無しさんNGNG
>>279
  ∩∩
  | |.| |
 γ_ _ヽ
 ( .・.・ ) <もういいからshine・・・)
   ̄ ̄
0281258NGNG
>>259
ありがとう。
でも、RFCの日本語のページ読んだんですが、概念的なことしか書かれてなかったように思え、
いまいちわかりませんでした。
まずproxyサーバーに繋ぐってことなのだろうか?
検索してもやり方が載ってるページが見つからない。
もうちょっとヒントくれる人いませんか?
0282デフォルトの名無しさんNGNG
プロキシにソケット繋ぐ−>GET 目的のドメイン/目的のファイル HTTP/1.0\r\n\r\n
0283デフォルトの名無しさんNGNG
>>281
翼嫁
http://x68000.startshop.co.jp/~68user/net/
0284 NGNG
c++;
0285デフォルトの名無しさんNGNG
>>281
概念的?? いきなり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
>>285
あ、串はhttpからいるのね。勉強になった。
0287デフォルトの名無しさんNGNG
typedef struct _locus{
struct _locus *next;
int value;
}LOCUS
があって、void new_dna(LOCUS **dna_header,int n_bits)という関数でリストを作成してつなげたいのですが、ヘッダがどうなってるのかわかりません。
教えていただけないでしょうか?
0288 NGNG
>>287
へっだって、**dna_headerのこと?
何がわからんの?
0289デフォルトの名無しさんNGNG
正直今日一番意味わからにゃい質問・・・
0290287NGNG
void new_dna(LOCUS **dna_header,int n_bits)関数をどう作ったらいいかわかりません。
0291デフォルトの名無しさんNGNG
ヘッダとの関連は・・・?
0292 NGNG
>>290
・関数形はそれじゃないとダメなのか?
・引数(n_bits)の意味教えろよ
0293デフォルトの名無しさんNGNG
あのさあ。そりゃあ無理に類推すればLOCUS*形の配列をn_bits個(?)走査
して全部その順番にくっつけるのかな〜とか位は妄想できるけど、
君の提示した情報だけでプログラムが作れると思う?
まずは仕様をちゃんと固めなさいな。
0294デフォルトの名無しさんNGNG
0以上9以下の整数をランダムにキーボードから入力するとき、全ての整数が少なくとも1回入力された時点でアラートを鳴らし、総入力回数を出力するプログラムを作成せよ
0295デフォルトの名無しさんNGNG
>>294には答えるなよ
0296デフォルトの名無しさんNGNG
>>294
消化し切れてない問題は宿題スレで・・・・
0297デフォルトの名無しさんNGNG
ひでぇw
教えてください・・・結構考えたけどわからんかったんよ。
0298287NGNG
>>292
すいません、関数形はそれじゃないとだめです。n_bitsはリストの大きさです。
0299デフォルトの名無しさんNGNG
なぜ彼らは助け合いの場としてではなく、努力もせずに便利な回答集
としてここを使おうとするんだろう・・・・
0300デフォルトの名無しさんNGNG
>>298
リストの大きさって、何?
バイト数?ビット数?要素数?
0301287NGNG
>>300
要素数。
0302デフォルトの名無しさんNGNG
努力したヽ( ´ー`)ノ
0303デフォルトの名無しさんNGNG
>>301
だからさあ・・・んなことは凡そ想像はつくけど>>293読めい
0304デフォルトの名無しさんNGNG
n_bitsが要素数とどうやって想像しろと・・・
0305293NGNG
>>304
消去法(w
無理な想像だが多分あってると思うんだな。
0306293NGNG
大体287は俺が想像を書いたからそれでもう我々に通じた、とでも思ってるのかい?
何をしたいのかちゃんとしたレスポンスないとこっちは何もできないよ。
0307287NGNG
LOCUS形の構造体をmallocでとってきて、n_bits個
全部その順番にくっつけるでおねがいします。
0308 NGNG
リストの要素数?つなげるリストの数ってこと?
なんでリストなのに**が必要なの?リストなら*で充分だろ?
0309 NGNG
LOCUS *locus[MAX];

for(i=0;;){ locus[i]=(LOCUS*)malloc(sizeof(LOCUS));}
new_dna(locus,i);

みたいなことがしたいのか?
0310デフォルトの名無しさんNGNG
出来たけどLOCUSの仕様が分からんので貼り付けない
0311デフォルトの名無しさんNGNG
つかこんなお粗末な仕様では自信を持って貼り様がないじゃん。
なんかプログラマの卵と話をしてるってよりは、お客さんと話ししてる気分(w
0312デフォルトの名無しさんNGNG
仕事でもひどい仕様書から、妄想してプログラム組まんといかん時が
あるからな(あったからな。。。)
いい勉強になるだろ。。。
0313デフォルトの名無しさんNGNG
やりたいことが整理できてないってのは殆どのクライアントの共通項だよね
0314287NGNG
>>310
>>287にあります。とりあえず貼り付けてください、お願いします。
0315デフォルトの名無しさんNGNG
>>314
>>287で分かるやつがいたら神
0316デフォルトの名無しさんNGNG
>>312
勉強にはならないよ。当然あり得る帰結で書いてみて後はトライアンドエラーなんだから。
少なくともボランティアでやる気にはなれんし、それを期待するのは聊か図々しいと思う。

>>287
まず日本語を勉強しなおしてくれ。
0317**NGNG
ほんの僅かな情報から仕様を自己妄想できるようになれれば一人前のSEだ。
無論、仕様を詰めるのも重要だけどな。。。

で、>>287よ>>309でやりたいことはあってるのか?
0318デフォルトの名無しさんNGNG
>>316
漏れの仕事はそんなのばっかしだが。。。
0319デフォルトの名無しさんNGNG
>>318
みんなそうだよ。素人さん相手の時は・・・
0320デフォルトの名無しさんNGNG
俺が分からないこと
・リスト中最後の要素のnextの値はどうなるのか
・生成後のvalueの値はどうなるのか
・リストは一度にmallocで割り当ててもいいのか
 それとも個々の要素ごとにmallocしなければいけないのか
・途中でmallocに失敗した場合はどうするのか
0321287NGNG

>>317
mallocはnew_dnaで呼び出して欲しいです。
0322仕様書無しさんNGNG
>>287
ヘッダは多分、こうなっているのではないでしょうか?

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デフォルトの名無しさんNGNG
>>322
LOCUSの後ろに;がほしい
0324デフォルトの名無しさんNGNG
解決だね(^o^)
0325322NGNG
>>323
うわちゃ、鬱!

といいますか、ネタなので。
・・・しかし>>287のような質問では、漏れのようなヘタレPGに答えられるのは
この程度です。
0326287NGNG
>>320
nextはつぎのリストを指します。 valueの値は0でいいです。 個々でmallocして欲しくて、メモリ確保に失敗したら、終了します。お願いします。
0327ーーーーーNGNG
>>287
リストってほんとに分かってるのか?
一応リストの作り方かいとくな。

LOCUS *locus = (LOCUS*)malloc(sizeof(LOCUS)),*head;
head = locus;

for(作りたいだけ){
  locus->next = (LOCUS*)malloc(sizeof(LOCUS));
  locus = locus->next;
}

こんなかんじ。
あとはエラー処理とかしる。
0328デフォルトの名無しさんNGNG
>>326
最後の要素の次なんてないです。
終了の意味が分かりません、
0329デフォルトの名無しさんNGNG
リストの宿題が出たので教えてください、って事?
0330287NGNG
>>326
mallocするたびにnextにNULLを入れておきます。エラーメッセージを表示して強制終了です。
0331デフォルトの名無しさんNGNG
dna_headerが指すポインタがリストの先頭を指してて、
そのポインタに要素を追加するんだろ、きっと。

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デフォルトの名無しさんNGNG
う、しまった。
n_bits-- するの忘れてた。
0333デフォルトの名無しさんNGNG
287はなぜ通じないか理解できナインだろうな・・・
0334デフォルトの名無しさんNGNG
>>330
そこまで解ってるなら、あとはCの文法が解らないのかな?

それは置いといて、さっきから「はよ教えんかい!」みたいな態度は感心しないな。
0335デフォルトの名無しさんNGNG
>332
確かにconstじゃないけど引数の値を操作するのはいかがなものかと。
0336デフォルトの名無しさんNGNG
初心者のふりしてネタを振る常連と
親切のふりしてプログラミング技術を見せびらかす火魔神と
たま〜にマジで引っかかって熱くなる親切な人が
火花をチラシ合うスレはここですか?
0337デフォルトの名無しさんNGNG
>>335
by value なのはいーじゃんと思う。
0338デフォルトの名無しさんNGNG
>>3

> なお、課題の○投げは一応別スレへ、ということでお願いします。
0339デフォルトの名無しさんNGNG
>>335
他に引数がLOCUS**型をしてる理由を思いつかんのだが。
ありがちなパターンだろ。
0340287NGNG
みなさんありがとうございました。331さんのを考えてみます。
0341デフォルトの名無しさんNGNG
初心者のふりって、、、仕様もまとまってないネタなんてスレにとって
有害なだけジャン。
0342デフォルトの名無しさんNGNG
>>336
掛布さんの解説でした。
0343デフォルトの名無しさんNGNG
仕様がまとまってたらネタじゃなくて「問題」じゃん。
それじゃ釣れない。
0344デフォルトの名無しさんNGNG
微妙にバグを残す331は神
0345デフォルトの名無しさんNGNG
>>343「お題」は歓迎だけどそういう意味での「ネタ」はごめんだな
0346デフォルトの名無しさんNGNG
ほんとだポインタのポインタが・・・(w
0347デフォルトの名無しさんNGNG
どこですか?ポインタのポインタはサパーリわかりません。
0348デフォルトの名無しさんNGNG
まあコンパイラがゴネるから初心者でもわかるでしょ。ダイジョーブダイジョーブ
0349デフォルトの名無しさんNGNG
んじゃ、お題…というか何と言うか。
初心者ってわけでもないんですが、
前からちょっと悩んでる事があるんで
教えてつかあさい。

unsigned intが32bitのマシンで、
unsigned int bitmap[N];
という32Nビットのビットマップがあるとき、
「nビット連続して1が立っているのは、先頭から何ビット目か」
を探すのはどうやったら速いでしょう?アセンブラはナシで。
あ、ちなみにLSB, MSBの順序はどっちでも良いです。
0350349NGNG
歩測: 2ワードにまたがってるときもちゃんと見つけたいデス
0351デフォルトの名無しさんNGNG
難しそう。一度寝てから考えます。おやしゅみなさい
0352デフォルトの名無しさんNGNG
>>349
nは32より大きくなることもあるのか?
0353349NGNG
>>352
うーん。nは無制限に死体ですが、「n < 32のとき限定だけど速い版」
とかも歓迎です。

あ、1と0は逆でも良いです。とにかく速いほう。
0354デフォルトの名無しさんNGNG
int search_なんとか(size_t n)
{
 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デフォルトの名無しさんNGNG
s/32 - j/31 - j/
0356アマグラマ1号 ◆r6Wx8cCc NGNG
BM法使えば速そう。
0357デフォルトの名無しさんNGNG
0,1しかないのにBM法って(w

いや言いたいことは分かるんだけどさ
0358デフォルトの名無しさんNGNG
テーブルと継続フラグを使ってバイト単位でサーチするのが最速でしょ
0359アマグラマ1号 ◆r6Wx8cCc NGNG
まぁ、表は作らなくていいですね。
0360デフォルトの名無しさんNGNG
速いかどうか分からんけど

Xビット目が0
 n-1ビット読み飛ばして1行目へ
Xビット目が1
 前後n-1ビットを調べる
  見つからなかったらn-1ビット読み飛ばして1行目へ
  見つかったらループ抜ける

0の多いデータ中なら速い・・はず
0361349NGNG
自分では、
-(1 << n)
でnビットのマスク作って、ワード単位でANDとって逝くのが
速いんじゃないかと…

n > 32の時は、

xビット1の並び
32ビット全部1がyワード
zビット1の並び

x + z = n % 32
y = n / 32
というパターンを探すのかな、とか。
0362デフォルトの名無しさんNGNG
first fitのmallocでも作るつもりか?
0363デフォルトの名無しさんNGNG
>>361
じゃぁ、自分で作れよ。
だいたいn<=32だったら楽だろ
0364349NGNG
や、BM法みたいな(途中で1個でも0があったら、その次まで飛ばす)
やりたいんですけど、うまい方法無いですかね。
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デフォルトの名無しさんNGNG
それのどこがCだよ
0368アマグラマ1号 ◆r6Wx8cCc NGNG
う、for(int i とかやっちゃってますね...。
すんまそん。
0369デフォルトの名無しさんNGNG
1バイト単位でテーブル作る
int 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
>>293
でも結構いるんだよね。そういうひと。
例の先輩とか(ワラ
0373デフォルトの名無しさんNGNG
>>349
よほど無駄なことをしなければどんな方法でも対して変わらない気がする。
わかりやすい方法でいいと思うんだけど。
0374デフォルトの名無しさんNGNG
>>373
お前の発言って、どんな問題に対しても言える事だな。(w

#define EvaluateAlgorithm(algorithm)\
    (isdull(algorithm)?MUDANAKOTO_YARISUGI:DOREDEMO_ONAJI)
0375どうでもいい回想(その1)NGNG
〜約1年前の某ミッションにて〜
「やはり、これは・・・」
「・・・コンパイラに問題ありですね。」
「ベンダーのサポートを受けましょう。」
「コンパイラのライセンスは他プロジェクトからのコピーなので、
今回その選択肢はありません。」
「何ィ〜!!」
〜おしまい〜
0376どうでもいい回想(その2)NGNG
〜約4年前の出張先での某ミッションにて〜
「・・・やはり、これは・・・」
「・・・コンパイラに問題ありですね。」
「ループカウンタにはintを用いよ、という事ですね。」
「全ソースを見直しましょう。」

(お、お前ら、ループカウンタにcharを使うんじゃねえ〜!!
それでメモリ節約したつもりかぁ〜!!)

「さて、今後をどうするかですが・・・」
「ベンダーに連絡しますか。」
「・・・サポート期間は3年前に切れています。」
「阿呆かぁ〜!!ベンダーに連絡しても、
『新バージョンのご案内』が来て終わりじゃあ〜!!」

ちなみにその時の出張先会社のチームの人達は、
ヘッダーの最初と最後につける
#ifndef __XXX_H
#define __XXX_H
#endif
を全く使っていませんでした。
あと、「#defineマクロは小文字で最後は_c」というコーディングルールも持ってました。
〜おしまい〜
0377デフォルトの名無しさんNGNG
>>371
キモイです。
0378デフォルトの名無しさんNGNG
>>371
ってことは、3pですか?
0379デフォルトの名無しさんNGNG
>>376
ネタだろうけどワラタ
0380デフォルトの名無しさんNGNG
>>374
あほか。
0381デフォルトの名無しさんNGNG
構造体のメンバを参照するときに,Kou[Num]で「.」を入力した時,
前にメンバとして使っていたものが出てきてしまいます。
今は,メンバとして,使っていないんですが。
0382デフォルトの名無しさんNGNG
clwだかを削除
0383デフォルトの名無しさんNGNG
char Hairetu[20][20];
を関数に引数として送りたいのですが,うまくいきません
Kansuu(Hairetu,100);

void Kansuu(char *Hanregu)
{
 printf("モナー\n");
}
0384デフォルトの名無しさんNGNG
void Kansuu(char Hanregu[20][]);
とかにせんと。
つかなんで はいれぐ?
0385デフォルトの名無しさんNGNG
ありがとん
おちゃめごころから
0386385NGNG
ごめん。うまくいかんかった。
char Hairetu[20][20];

Kansuu(&Hairetu);でアドレスを渡し、

void Kansuu(char *Hai)
{
 Hai[0][0]=5;
}
というような感じで,アドレスを参照して,数字を入れたいのですが

>>384
関数の部分はそれでいいんですよね?
0387デフォルトの名無しさんNGNG
ソースコード解析ツールのQACってどうなん?
使える?
0388manko chinkoNGNG
>>386
>Kansuu(&Hairetu);でアドレスを渡し、

&は必要ないですね。
0389386NGNG
できましたが,どうも関数の宣言がおかしいようです

Kan(Hairetu[20];

void Kan(char TempHani[][20])
{

}

関数の宣言はvoid(char *);です。
0390デフォルトの名無しさんNGNG
宣言が
char 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デフォルトの名無しさんNGNG
void Kan(char array_2d[][20]);
0392デフォルトの名無しさんNGNG
>>386
人の話聞けよ。
0393デフォルトの名無しさんNGNG
scanf("%d",a);     ←(w
0394manko chinkoNGNG
っていうか多次元配列の渡し方は入門書だったら必ず載ってますよね....

>>393
???
0395デフォルトの名無しさんNGNG
>>394
っていうかscanfの解説なんて入門書だったら必ず載ってますよね。。。

>>395
???
0396manko chinkoNGNG
>>395
>っていうかscanfの解説なんて入門書だったら必ず載ってますよね。。。
載ってますね。で、何がいいたいんでしょうか?:-)

0397デフォルトの名無しさんNGNG
scanf("%s",&a);     ←(w
0398デフォルトの名無しさんNGNG
取 り あ え ず お 前 ら ポ イ ン タ の 使 い 方 復 習 し て こ い
0399デフォルトの名無しさんNGNG
scanf("%s",&*&(&a)[0]);     ←(w
0400デフォルトの名無しさんNGNG
>>381
ってどういうこと?VC++のエディタとかの話?
0401デフォルトの名無しさんNGNG
変なやつがいるな
0402デフォルトの名無しさんNGNG
2人はいるな。
0403デフォルトの名無しさんNGNG
片方は間違いなく14歳コテハンクズ野郎だ
0404デフォルトの名無しさんNGNG
初心者が足を引っ張り合うスレはここですか?
0405デフォルトの名無しさんNGNG
struct ...

(*ptr).data = 10;    ←(w

0406デフォルトの名無しさんNGNG
>>405
表面上の知識の欠落を笑うよりも、
(おそらくは独力で)構造体への
ポインタの操作が有用だという事に
気づいたそのセンスに活目すべし。

漏れには、こんな些細な事を(wっている奴
なんかより、このコードを書いた奴の方が
ずっと将来性がある様に見受けられるが。
0407デフォルトの名無しさんNGNG
>>406
そだね。同意。
0408デフォルトの名無しさんNGNG
>>406
知識の欠落と断じるのは早いのでは?
私の場合は間接参照を嫌って>>405のように書く場合もあります。
でもこれって少数派かなぁ?
0409超初心者ですNGNG
教えてください!ANSICライブラリではmathと呼ばれるものがある。
これを用いるにはライブラリ部にどのような行を加えたらよいか?
0410超初心者ですNGNG
すべてのcプログラムでで定義されなければならない関数の名前はなんですか?
0411デフォルトの名無しさんNGNG
>>409
ライブラリ部ってなんですか?

>>410
ありません。
0412デフォルトの名無しさんNGNG
main
0413デフォルトの名無しさんNGNG
-lm
0414超初心者ですNGNG
1変数のマイナス演算子と2変数の減法演算子との異なる点を挙げよ。
っていう問題を教えてください
0415デフォルトの名無しさんNGNG
宿題は別スレいけバカ
0416デフォルトの名無しさんNGNG
>>415
syukudaitoha kgiraneedaro baka?
0417デフォルトの名無しさんNGNG
414
ネタならさげるように
0418fNGNG
やっぱりwinアプリをCで作る場合はVCを買った方が良いだろうか?
0419デフォルトの名無しさんNGNG
そうだよ
0420デフォルトの名無しさんNGNG
いらない
0421デフォルトの名無しさんNGNG
>>416
最近よく見かけますが、誰も読んでないと思うんです。
0422デフォルトの名無しさんNGNG
>>418
いらない。>>7をミロ
0423fNGNG
でもBCCってムズくない?BCCだけで出来てるwinアプリってあんのかな?
0424デフォルトの名無しさんNGNG
ある
0425デフォルトの名無しさんNGNG
>>423
あるだろ。
昔はみんなああやってた。
0426fNGNG
マジ!?知らなかった・・・。そっか、builderとかは割と最近なのか・・・。
0427デフォルトの名無しさんNGNG
まあ俺はVCを勧めるがな。
0428デフォルトの名無しさんNGNG
まあ俺はAVを勧めるがな
0429デフォルトの名無しさんNGNG
まぁ俺はソープを勧めるがな
0430デフォルトの名無しさんNGNG
>でもBCCってムズくない?BCCだけで出来てるwinアプリってあんのかな?
皆後者には答えるが前者には答えないという罠
0431デフォルトの名無しさんNGNG
>>430
>>425が答えてるぞ。
0432デフォルトの名無しさんNGNG
bccってリソースコンパイラついてないだろ
0433デフォルトの名無しさんNGNG
429はひきこもり
0434デフォルトの名無しさんNGNG
リソースコンパイラは当然ついている。
GUIのリソースエディタがない
0435sageNGNG
WinXPでは、Win98等で作ったプログラムが動かない場合があるそうなのですが、
これはどうしようもない事なのでしょうか??
DOSプロンプトの仕様が違うとか・・・。

ネットで見つけた、DOSプロンプトアプリ上のグラフィック関数なんか
コンパイラできても表示が意味不明で・・・。
0436デフォルトの名無しさんNGNG
>>435
DOSリアルタイムで知らない人か?
その辺から勉強した方が良いと思われ。
0437デフォルトの名無しさんNGNG
× WinXPでは、Win98等で作った
○ WinXPでは、Win9X用に作った
0438デフォルトの名無しさんNGNG
435です。sage間違えてしまった・・・。

初心者学生で、先生の言うとおりにしてるだけなんで
全く意味不明です。

VC++6.0を明らかに使いこなせてない・・・。

0439シッタカなので信用するなNGNG
コンソールアプリで標準関数しか使ってない
(or Win32Api使ってても、CopyMemoryとか基本的なのしか使ってない)
のだったら多分Win9x でもWinXPでも変らんと思うよ
0440デフォルトの名無しさんNGNG
>>349
まぁ、今更ですし、他のやり方と比べてないので
速いかどうかも、分かりませんが、せっかく作ったので…
といっても、結構、手を抜いてる為
返る値は、一致した後の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
 } ;

/* 続きます */
0441440NGNG
 n06 = ( n & 0x000fffff ) << 6 ;
 n12 = 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 ;
}
0442440NGNG
テーブルは、下のようにして作ったものですが
あまり大きくないので、(掲示板に書き込むには大き過ぎたようですが)
速さの事も考えると、そのままでも良いかなと…
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
>>349
ちょと面白そうなので、俺も参加。

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;
  }
0444443NGNG
てすと

#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
>>444
正確に動く(バグが無い)のはあくまで最低条件なんだから、
絶対マッチしないパターンを作り出してパフォーマンスをはかるテストルーチン書いてくれ
0446443NGNG
>>445
まぁ、ご希望とあらば・・・
てすと(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














                         レベルヒクッ!
0448443NGNG
>>443
スマソ、バグはけーん。

*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デフォルトの名無しさんNGNG
ここで質問すると、言葉足らずが、屑野郎にまで昇華する罠。
0451デフォルトの名無しさんNGNG
実装方法が分かっていながら自分で実装するという姿勢を見せないのはどう考えても屑野郎だろ
0452デフォルトの名無しさんNGNG
( ´・∀・`) へー
0453デフォルトの名無しさんNGNG
ロジック構築能力が必要だといわれましたが,C言語ではなんの部分に当たるの?
文字列検索とか?ソートとか?
0454デフォルトの名無しさんNGNG
>>453
ハァ?
0455デフォルトの名無しさんNGNG
>>451
まあ「お題」もらって暇つぶせたからいいんじゃね〜の?
どうせこのスレ他にやることないんだし。
0456デフォルトの名無しさんNGNG
doubleとlongって、longのほうが表現できる数値の範囲は広いですよね?
0457デフォルトの名無しさんNGNG
>>456
いいえ。
0458デフォルトの名無しさんNGNG
dobule型のほうが広いんですか。ありがとうございました。
0459デフォルトの名無しさんNGNG
>>458
だからといってlongをdoubleに変換して何も失わないという
わけではない。
0460デフォルトの名無しさんNGNG
単純に比較していいものなのか?扱い方が全然違うけど。
0461デフォルトの名無しさんNGNG
しつもんです。
mainで再帰呼び出しやっても良いものですか?
0462デフォルトの名無しさんNGNG
>>461
やってみて、自分で判断しろ
0463デフォルトの名無しさんNGNG
>>462
どんな質問にも使える万能の答登場。
0464デフォルトの名無しさんNGNG
>>462
まさに伝家の宝刀
0465デフォルトの名無しさんNGNG
>>463
しかし実は何も答えていないという罠。
0466デフォルトの名無しさんNGNG
>>465
伝家の宝刀を抜かれた相手は決まってそう言うんだよ・・・
0467デフォルトの名無しさんNGNG
じゃ、今後このスレの答は「やってみて、自分で判断しろ」に統一ってことで。

しゅーりょーーーーーーーーー
0468デフォルトの名無しさんNGNG
ばかだなぁ。
「〜のやり方を教えてください」って質問の場合はどーすんだよぉ。
0469デフォルトの名無しさんNGNG
main()で再帰するやり方を教えてくだちい
0470デフォルトの名無しさんNGNG
>>469
だからそれくらいやってみろっつってんだろバカ
0471デフォルトの名無しさんNGNG
#include <stdio.h>

int 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
int main()
{
return main();
}
0473デフォルトの名無しさんNGNG
なんでLinuxはヘッダーファイルに共通関数みたいなのを
書き込むんですか?linux/fs.hみたいな必須のファイルに
staticな関数がガリガリか書かれているのを見ると萎えます。
それとも様々なターゲットに向けて書かれているからしょうがないので
しょうか?

今はLinuxは辞めてNetBSDでカーネルの勉強しようとかと思ってます。
0474デフォルトの名無しさんNGNG
>>473
インライン展開したいからに決まってるだろヴォケ。
へッダに書かなきゃどこに書くんだよ。
0475デフォルトの名無しさんNGNG
>>474
それなら普通はインライン関数用のファイルを作るもんじゃないの?
NetBSDのソースは読んでないからしらないが。
0476デフォルトの名無しさんNGNG
>>475
インライン関数用のファイルってへッダじゃないの?
0477デフォルトの名無しさんNGNG
>>476
そう。だから型の定義とは何で別にしないのかと。
0478デフォルトの名無しさんNGNG
言葉遣いの汚いPGは案外良いやつ
でも本当に凄いPGは言葉遣いもいやなくらい丁寧
0479デフォルトの名無しさんNGNG
>>475
ファイルシステムで使うマクロ定義は当然fs.hに書くよね?

だったらファイルシステムで使うインライン関数定義も
fs.hに書くのが当然だろ。
0480デフォルトの名無しさんNGNG
>>477
fs_types.h
fs_constants.h
fs_macros.h
fs_functions.h
等々と分けろと?

C++でプログラム書くときにもクラス定義とメソッド定義と定数定義を
分けるのかね。
0481デフォルトの名無しさんNGNG
>>479
そんなもんですか。
今まで自分がやってきた方法が変なのか。。。鬱だ
0482デフォルトの名無しさんNGNG
Cにインライン関数なんてありません
C++スレに逝けアフォども
0483デフォルトの名無しさんNGNG
>>482
http://seclan.dll.jp/c99d/c99d07.htm#dt19990802
0484彦一NGNG
メール欄は要チェックや!
0485デフォルトの名無しさんNGNG
型とその型のデータに対する操作は
1つのファイルで定義した方がいいように思うが、
>>481 は今までどうやってたのよ?
0486483NGNG
がびーん
0487デフォルトの名無しさん NGNG
>>485
恥かしいからあんま突っ込まないでくれ(泣
C++でクラスの定義と実際のメソドはべつに書くよね?
それと一緒で単純に関数マクロは別ファイルにしてた。
0488デフォルトの名無しさんNGNG
 ⊂ ヽ ⊂ ヽ ⊂ ヽ ⊂ ヽ ⊂ ヽ
   \\ ∧_∧∧_∧     ∧∧
     \ ( ´_ゝ`) `∀´>・∀・)*゚∀゚)
      >  ⌒ヽ  ⌒ヽ  ⌒ヽ  ⌒ヽ  ⌒ヽ
     /    へ \ へ \ へ \ へ \ へ \
    /    /   \\   \\ \\ \\ \\
    レ  ノ    ノヽ_つノ ヽ_つ ヽ_つ ヽ_つ
   /  /  /  /  /  /  /  /  /  /
  /  /|  /  /| /  /| /  /| /  /|
 (  / | (  / |  |\_|\_|\_|\_|\________
  |  | ヽ |  | ヽ /
  |  |、 \    | ともっちと、やりたい・・・
  | / \ ⌒l  |
  | |   ) /  \__________________
 ノ  )   し'
(_/
0489デフォルトの名無しさんNGNG
このやろ、おれのことを晒し上げかよ!ま、いいや
0490デフォルトの名無しさんNGNG
>>406
どこにアロー演算子が解説してない書籍があるんだ?
それともアロー演算子は知らなくてもいいとおもってるんじゃ、、、、、
0491デフォルトの名無しさんNGNG
>>488
そんなに大勢でともっちとやるの?
ともっちがかわいそうだよ。
0492デフォルトの名無しさんNGNG
>>488
一番右側にある腕らしきものは何ですか?
0493デフォルトの名無しさんNGNG
(´-`)。oO(…書き間違えたのか?…)


0494デフォルトの名無しさんNGNG
(´-`)。oO(…ともっち今ごろなにしてるのかな…)
0495デフォルトの名無しさんNGNG
顔4個で、体が5個・・・ (((( ;゚Д゚)))ガクガクブルブル
0496デフォルトの名無しさんNGNG
Cを勉強するならどんな本が良いですか?
0497デフォルトの名無しさんNGNG
>>496
擦違い。逝ってよし。
0498デフォルトの名無しさんNGNG
ともっち!だ〜い好き!
0499デフォルトの名無しさんNGNG
C言語はLP64の玲にあるように、
longとpointerは同じビット長であることが
重要なことなんですか。
0500デフォルトの名無しさんNGNG
500げっと!
ずさ
        by ともっち
0501デフォルトの名無しさんNGNG
( -_-)=○)'Д') >>500
0502デフォルトの名無しさんNGNG

         ∧_∧       ( )
         ( ´Д`)    //。
       /⌒    ⌒ヽ//   。
      /_/|     //    。
    (ぃ9 ./    ///     。
       /   //3      
      (  ///        
       \ .\\    
        .\ .\\   
          >  ) ) 
         / //  
         / / /  
         / / / 
       ( ヽ ヽ 
        \__つ)

ともっち!我慢できないよぅ!
0503デフォルトの名無しさんNGNG
>>499
ポインタに対して数値演算(アドレスの上位xxビットで表を引くとか)
ができないと欝だし、数値演算の結果をポインタに変換できないのも
困る。なので、ポインタと同じサイズの整数型が1つはホスィー。
0504デフォルトの名無しさんNGNG
>>499
それを言うならintとポインタな気もする。
0505デフォルトの名無しさんNGNG
どうでもいい話なんですが、
128bitのアドレス空間は
この先20年はないものと考えていいですよね?
0506デフォルトの名無しさんNGNG
>>504
でも64bitUNIXはintは32bitのままなんですよね?
0507デフォルトの名無しさんNGNG
>>506
勉強不足でした。
0508デフォルトの名無しさんNGNG
ともっち!じゃあ体の勉強しようか!
0509デフォルトの名無しさんNGNG
体、環、群か。代数だね。
0510デフォルトの名無しさんNGNG
>>505
Moore's Law(メモリは3年で4倍)が正しいとして、
32bitで不足ぎみになったのが1990年ごろとすると、
64bitで不足するのは2038年ごろか。
0511デフォルトの名無しさんNGNG
カカンカンage!
0512デフォルトの名無しさんNGNG
(unsigned long)sizeof(int);
というふうに(unsigned long)をつけるべくらしいですが,皆さんはやっていますか?
0513デフォルトの名無しさんNGNG
>>512
なんでつけるべくなの?
0514デフォルトの名無しさんNGNG
>>512
(size_t)の方が良くないか?
0515デフォルトの名無しさんNGNG
>>513
処理系によって大きな値が帰ってくる場合があるから?
0516デフォルトの名無しさんNGNG
(l)  ←マムコ
0517デフォルトの名無しさんNGNG
既出。うざい。
0518デフォルトの名無しさんNGNG
>>514
size_t型を知らないんだろ。きっと
0519デフォルトの名無しさんNGNG
ムーアの法則
キタ━━(゚∀゚)━━ァ!
しかしIntelはムズイです
0520デフォルトの名無しさんNGNG
sizeofの戻り値はもともとsize_tじゃないか?
0521デフォルトの名無しさんNGNG
memset(a,0,(size_t)sizeof(int));
ってすればいいのかな?
0522デフォルトの名無しさんNGNG
>>521
さっさとキャストはいらんという結論に達してくれ。
0523デフォルトの名無しさんNGNG
いらんの?なんで?
0524デフォルトの名無しさんNGNG
>>523
ヘッダ見てsize_tの定義見てみる。
0525デフォルトの名無しさんNGNG
>>523
なんで要ると思うの?
0526デフォルトの名無しさんNGNG
たとえば>>521のコードなら
size_t型を受け取る関数に
size_t型をの値を渡すんだから
キャストが要るわけない。
0527デフォルトの名無しさんNGNG
ロジック構築能力が必要だといわれましたが,C言語ではなんの部分に当たるの?
文字列検索とか?ソートとか?
0528デフォルトの名無しさんNGNG
>>527
論理的思考のことをそんなみょうちくりんな言葉で表現する人間は詐欺っちです。
0529デフォルトの名無しさんNGNG
マルチポストのマルチンコ大王がいるな
0530デフォルトの名無しさんNGNG
>>527
そう言われてC言語の瑣末に飛躍するところなんか、的を射た指摘だったっぽいな
0531デフォルトの名無しさんNGNG
>>530
ロジック構築能力−>授業でその英語聞いた−>トランジスタトランジスタロジック−>パソコン?−>PC−>難しい−>C言語−>ウマー
0532デフォルトの名無しさんNGNG
>>527
Equational Logic理論を構築する能力のことだ。
Cとは全くといってよいほど無縁。
0533デフォルトの名無しさんNGNG
マルチンコ大王 キタ━━━(`Д´)ノ━━━!!
0534阿呆NGNG
マルチポストは嫌われるようなので別スレのリンク貼っておきます。
http://pc.2ch.net/test/read.cgi/tech/1020785918/174-
あともうひといきなんです。
誰かお願い!
0535デフォルトの名無しさんNGNG
知るか。
0536アクビNGNG
csv形式の文字列からデータを取得しようと思っています。
まず、データファイルから1行を読み込んで、
   char *s="a1.a2.a3.a4";
   strtok(s,',');
   strtok(NULL,',');・・・
としてa1、a2、a3、a4を取得しています。

でも、データが
"a1,,,a4"
の場合、a1とa4しか取得できません。
a2とa3がNULLであることまで知りたいのですがどうしたらいいでしょうか?

#とりあえず前処理として、",,"を",@,"などに置換してなんとかしようとしたのですが、
#だいぶ冗長な処理になってしまいそうで困っています。

0537 NGNG
strtokってあまり使ったこと無いからな。。。
データの形式がそこまでばっちり決まってるんなら自作すれば?
0538デフォルトの名無しさんNGNG
連続した区切り文字は一つの区切りとして処理されちゃうから
君の用途には使えないよ。

.@.に置き換えるのは良いアイデアだけど、いっそのこと、Cの勉強がてら自分で作っちゃえば?
0539 NGNG
どっかにcsvデータ取得ライブラリとかあるんじゃないの?
0540デフォルトの名無しさんNGNG
splitみたいなのを自分で実装しろ。
0541デフォルトの名無しさんNGNG
strtokなんて使うなよ
Cライブラリの中でも一番気持ち悪い関数だぞ
0542デフォルトの名無しさんNGNG
scanfでいいじゃん。
0543デフォルトの名無しさんNGNG
>>542
アホか?
入力長が定まらないデータに対してscanfなんか使えるかよ
0544デフォルトの名無しさんNGNG
>>543
ホントに上限がないという仕様なのか?
んじゃ1行読み込むのもfgets使わないんだな?

実用上4096文字とかで足りるなら、
fgetsとsscanfで十分じゃん。
0545デフォルトの名無しさんNGNG
>>544
問題を刷りかえるなよ。
scanfとsscanfは違うだろ。
0546デフォルトの名無しさんNGNG
わかった。

んじゃ「fgetsとsscanfでいいじゃん」
0547デフォルトの名無しさんNGNG
男らしくないな。
0548デフォルトの名無しさんNGNG
たかだかカンマと改行識別するだけだろ。
それぐらい数分で作れよ。
0549デフォルトの名無しさんNGNG
すいません。マジで分からないんですが、scanfでもfgetsでも想定した
長さを越えたら動かないのは同じだと思うんですが、なぜsscanfだと
いいんですか?
0550デフォルトの名無しさんNGNG
>>548
もうあるんだからいいじゃん。
これに使わないなら(s)scanfは何のため?
0551デフォルトの名無しさんNGNG
ふつー書式入力なんて使わねーよ
想定外のデータがきたとたん、あぼーん。
0552デフォルトの名無しさんNGNG
>>551
(使い方が下手れなだけでは…)
0553デフォルトの名無しさんNGNG
csvは横にだらだら長い事あるからfgetsだと不安な感じ。
0554デフォルトの名無しさんNGNG
>>553
じゃあどうするの?
カンマまでgetcで切り出すにしても、
文字列の長さにはどっかで限度があるでしょ?
0555デフォルトの名無しさんNGNG
>>554
ヒープ使えば?
足りなかったらreallocで伸ばしていけばいいし。
0556デフォルトの名無しさんNGNG
なるほど…

でも、入力の仕様決めといてfgets使った方が良いと思うな。
長すぎたらエラーにすれば良い。

いちいちそんな趣味的なことやってたら時間が無駄すぎる。
0557デフォルトの名無しさんNGNG
>>556
csvは入力の仕様なんて決まってねーんだよ
適当にやるか、ある出力例に対して準拠するか、ぐらいしかない。
>いちいちそんな趣味的なことやってたら時間が無駄すぎる。
この程度で趣味的ですか。
おめでてーやつ。
0558デフォルトの名無しさんNGNG
>>557
ハァ? >>536は汎用CSVライブラリ作ろうとしてるのかよ?
単にCSV形式でフィールド数や内容も定まったデータだろ?

>>536みたいな初心者にCSV一般を読み取るようなライブラリ
書かせる工数かけるならそれこそCSVライブラリ買った方が
安いじゃねーか馬鹿が。

ライブラリ使わずにいちいち車輪の再発明するのは日曜プロ
グラマのすることだよ、この給料泥棒が。
0559デフォルトの名無しさんNGNG
マァマァオチツイテ
0560デフォルトの名無しさんNGNG
ワラタ
0561デフォルトの名無しさんNGNG
なにか書こうと思ったけどみんな解決ズミなのね ショボーン (・v・)/
0562デフォルトの名無しさんNGNG
http://cm.bell-labs.com/cm/cs/tpop/csvgetline2.c
0563デフォルトの名無しさんNGNG
べるらぼぉ〜
0564デフォルトの名無しさんNGNG
工数って嫌な言葉だ
0565デフォルトの名無しさんNGNG
エ数ならいい?
0566デフォルトの名無しさんNGNG
>>557はホントにアホだな〜
仕様決まってないなら自分で書くこともできないじゃないか。
0567デフォルトの名無しさんNGNG
>>565
どう違うか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デフォルトの名無しさんNGNG
ともっち!
0570デフォルトの名無しさんNGNG
>>568
なんか凄いDQNなコード...

fgetc(stdin)とか
fputc(..., stdout)とか
fprintf(stdout, ...)とか
もうやめてって感じ。

EOFの処理もしてないしさー。

だいたいこれ何? 前処理フィルタ?
どうせなら読み込むコード書いてくれよ。
0571568NGNG
DQNって言われたよ〜( ´Д⊂ヽうえーん
前処理フィルタって?
たしかになんだろね・・これ
よくわからないことはやらなきゃよかったよ〜( ´Д⊂ヽ
0572デフォルトの名無しさんNGNG
>>571
なにをするプログラムなのか解説求む(ワラ
0573デフォルトの名無しさんNGNG
コンマで区切られた要素間にスペースを入れて出力するもんでうぅ・・
コンマが連続してる時は中身が無いと見なしてでNULLを入れます
手抜きだから使い物にならんけど・・(T-T)
0574デフォルトの名無しさんNGNG
しまったageてもた・・・
0575CHI-CHINGNG
あの、教えてほしいんですけど、RS232Cでモーターを制御したいんですけど、
RS232CのOn/offを切り替える、プログラムってどんな感じになりますか?お願いします。
0576デフォルトの名無しさんNGNG
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )< キャー!!
          /,  /    \___________    
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \



0577デフォルトの名無しさんNGNG
http://www.adwin.com/adwin/products/industry/23_micom_c/note_01.html
0578デフォルトの名無しさんNGNG
>>562のライブラリは良さげだね。
(つか、教科書に載ってるコードじゃん。)

CSV使いたい人はこれで解決。
0579デフォルトの名無しさんNGNG
質問してもいい?
0580デフォルトの名無しさんNGNG
と訊かれると「だめ」としか言えないな。成り行き上。
0581デフォルトの名無しさんNGNG
LSIC86を使っていたのですが、

typedef struct{
char *h[0];
char *k;
char *v;
}FORM;

というコードを書いてコンパイルできていたのですが、bccではh[0]の行でエラーが出てしまいました。
h[0]とkが常に同じ、h[1]とvが常に同じ、というコードにしたいのですが、
一般的にはどう書いたらいいのでしょうか。
0582デフォルトの名無しさんNGNG
unionじゃだめなのか?
(実装依存とおもうけど)
0583579NGNG
>580
そうですか・・・・・
でももうprintf("わかりませんでした");と書いて提出したので
解決しました
0584デフォルトの名無しさんNGNG
>>581
つーか、char *h[0]って何?
0585デフォルトの名無しさんNGNG

 ⊂ ヽ ⊂ ヽ ⊂ ヽ ⊂ ヽ ⊂ ヽ
   \\ ∧_∧∧_∧     ∧∧
     \ ( ´_ゝ`) `∀´>・∀・)*゚∀゚)
      >  ⌒ヽ  ⌒ヽ  ⌒ヽ  ⌒ヽ  ⌒ヽ
     /    へ \ へ \ へ \ へ \ へ \
    /    /   \\   \\ \\ \\ \\
    レ  ノ    ノヽ_つノ ヽ_つ ヽ_つ ヽ_つ
   /  /  /  /  /  /  /  /  /  /
  /  /|  /  /| /  /| /  /| /  /|
 (  / | (  / |  |\_|\_|\_|\_|\________
  |  | ヽ |  | ヽ /
  |  |、 \    | ともっち!俺たち準備はOKだよ!
  | / \ ⌒l  |
  | |   ) /  \__________________
 ノ  )   し'
(_/
0586デフォルトの名無しさんNGNG
うるせーばか
0587デフォルトの名無しさんNGNG
>>584 長さ0の文字配列のポインタ

char *h[];
にしたら通るんでないかい? どっちにせよ,コンパイラ依存の領域
0588デフォルトの名無しさんNGNG
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )< >>586 おまえがばかだ!!
          /,  /    \___________    
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
0589デフォルトの名無しさんNGNG
( ´_ゝ`)フーン
0590デフォルトの名無しさんNGNG
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )< ともっち!はやくやらせろ!
          /,  /    \___________    
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
0591デフォルトの名無しさんNGNG

                     ノ ⌒)
         ∧_∧     (__/
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)

我慢できない、、、、
0592デフォルトの名無しさんNGNG
AA貼りつけてるやつ、他板でやれ
0593デフォルトの名無しさんNGNG
AAしろぶたは氏んでね。
0594これどーすか?NGNG
#include<stdio.h>
void 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
>>594
どーもこーもバカ
0596デフォルトの名無しさんNGNG
11行もかかるのかよ(藁
0597デフォルトの名無しさんNGNG
そして11倍遅い。
0598デフォルトの名無しさんNGNG
>>596
Javaの入出力周りは知らないがそれくらいかかりそうな予感
変数宣言*3、printf*3、括弧*2、関数の頭 = 9行
Cの場合さらに#includeが2つで計11行になりますた
もちろん圧縮すれば3行だけど
0599デフォルトの名無しさんNGNG
>>581
大きさ0の配列はCだと使えない。一部のコンパイラ
だと拡張機能として使える(gccとか)。

>>587
char *h[];
という書き方は、「2つ以上メンバを持つ構造体の
最後のメンバ」としてなら許される。途中では
だめ。

union使って問題なしと思うが。
0600デフォルトの名無しさんNGNG
おいお前ら、漏れはとりあえずCの入門書を終えました。
そんな漏れに最終試験問題を出題してください。
0601デフォルトの名無しさんNGNG
>>600
C言語のコンパイラを書きなさい(5点)。
0602デフォルトの名無しさんNGNG
>>600
入力行の長さに制限のないCSV読み込みルーチンを書きなさい(20点)。
0603デフォルトの名無しさんNGNG
Cコンパイラを作るよりCSV読み込みを作るほうが4倍むずかしいのか
0604デフォルトの名無しさんNGNG
こ。。こんぱいらで5点か。。
0605デフォルトの名無しさんNGNG
>>600
入門書っていわれても。レベルが全然わからん。しかも入門書で最終?恐るべき自惚れ。
0606デフォルトの名無しさんNGNG
>>600
POSIX互換のOSを(以下略
0607600NGNG
マジレス。
お前らはCのコンパイラ書けますか?
Cのコンパイラを書けるというのはどの程度のレベルなんですか?
0608デフォルトの名無しさんNGNG
>>607
マジレス。書ける。
既存のコンパイラより良いコードを出せとか言われると自信がないが。

レベル…遅いコードでも良いならRMSレベルでなくても書けるだろ。
情報系大学院出た人間ならたいてい書けるはず。
0609デフォルトの名無しさんNGNG
/*ネタデスマソ*/
int main( int argc, char * argv[] )
{
str comLine[MAX_PATH+99];
sprintf( comLine, "c:\\Progrm....\\cl.exe %s", argv[1]);
return system( comLine );
}
/*はい5てん*/
0610デフォルトの名無しさんNGNG
>>607
C++ならともかく、単にCなら面倒だけどそれほどむずかしくもない。
言語仕様書とターゲットプロセッサの資料などがあれば。

実用に耐えるレベルにするために、コンパイル・リンク速度向上(プリコンパイルヘッダとかインクリメンタル〜とか)、
最適化、ライブラリ整備などまできっちりやるとかなりつらいが・・

C++コンパイラで標準完全実装(loki, boostが完全に動くとか)だとつらそうだー
0611600NGNG
>>608
ガ━━(゚Д゚;)━━━ン!!!!!
Cのコンパイラが書けてもたいしたことないのか。
プログラミングの道は険しい…
またもマジレス。
入門終えた漏れは次は何をすればいい?
0612デフォルトの名無しさんNGNG
>>609
ワラタ
ってか、スレ立てた本人はどこへいった
0613デフォルトの名無しさんNGNG
高専で「コンパイラ」とかいう教科書を使った授業、受けました。低いところを眺めてみると、そういうレベルっつうことで・・・。
0614600NGNG
>>613
漏れは現役高専生です。
今2年生で
電気情報工学科なのですがプログラミングの授業が
全くないので独学で勉強しますた。
0615デフォルトの名無しさんNGNG
>>611
初級へと進むんだろな。

書きたいプログラムがあるなら書きなさい。
書いてるうちに「プログラミング作法」とかが
何を言ってるのか分かるようになるんじゃない?

あとは他の言語も覚えると新しい概念が身につく(かも)。
SchemeとJavaは是非やっとくべきだと思う。
0616デフォルトの名無しさんNGNG
>>611
LISP インタプリタでも作ると面白いカナ。
0617デフォルトの名無しさんNGNG
俺は最初Unixのコマンド(のサブセット)いろいろ書いて練習したYO!
最初はwc, head, tail
あと、prとかワイルドカード展開するプログラムとかxargsとか。
0618デフォルトの名無しさんNGNG
CのコンパイラってCの知識だけでつくれるの?
機械語やアセンブラの知識は必要ないの?
0619デフォルトの名無しさんNGNG
Scheme・・・ずいぶん最近だけど、興味半分にいろいろサイト見て回ってみた。
感想: call-with-current-continuation がプログラムを破壊的に変化させそう。
0620デフォルトの名無しさんNGNG
>>617
書いた書いた。
正規表現マッチングなんかもおもしろい。
0621デフォルトの名無しさんNGNG
>>618
機械語は必ずしも不要だろうけど
アセンブラは必須だね。
0622デフォルトの名無しさんNGNG
>>618
・・・ネイティブコンパイラ作るなら。バイトコードでもいいんでない?
0623デフォルトの名無しさんNGNG
じゃあ入門卒業試験の課題としてこれはどうだ。

int match(const char *pattern, const char *string);

patternがstringとマッチするなら0で無い値、マッチしないなら0を返す。

pattern中の文字'?'は任意の1文字とマッチする。
'*'は0文字以上の任意の文字列とマッチする。
それ以外の文字は、その文字自身とマッチする。
0624デフォルトの名無しさんNGNG
トークンきりだし、構文解析、構文チェックまではCで書けるとして、
そのあとにネイティブコードを作るときはやっぱりアセンブラだよね。
Cでもできるのかな。
0625デフォルトの名無しさんNGNG
>>624
ネイティブコードを生成すること自体はCでも書けるだろ。
知識は必要だろうけど。
0626デフォルトの名無しさんNGNG
>>623
patternの中に*や?がひとつも含まれていなかったら、strcmp(string,pattern)と等価?それともstrstr(string,pattern)と等価?
0627デフォルトの名無しさんNGNG
>>624
アセンブリ言語コードを出力すればいいんじゃないの?
そういうコンパイラも多い。
0628デフォルトの名無しさんNGNG
>>627
gccとか?
0629デフォルトの名無しさんNGNG
>>626
strcmpと等価ということで。
0630デフォルトの名無しさんNGNG
>>628
そう。UnixのたいがいのCコンパイラと
8bitのころのPCのたいがいのCコンパイラ。
DOSだとLSI-C86もそうじゃなかったっけ。
0631デフォルトの名無しさんNGNG
>>629
ちょっとやってみよう。
再帰使うとうまくゆくかな・・・
0632631NGNG
いや再帰じゃないな・・・
0633デフォルトの名無しさんNGNG
>>632
出題者は再帰を使う回答を用意しますた。
0634デフォルトの名無しさんNGNG
>>623
じゃあ補足すると、これぐらいは全部通ればとりあえず合格?
あんまり書くと長くなりすぎるから省略。

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
テストドライバその1

#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
assert並べるほうがいいな。
同じテストを何度でも繰り返せ、実行一発で結果がわかる。
0637623NGNG
>>634
あ、そうですね。そのテストのほうが良いかも。

ちなみに>>634で用意したテストプログラムは、

その1: patternとstringをコマンドライン引数で与えて
matchedまたはunmatchedをプリントする。

その2: patternをコマンドライン引数で与えて
標準入力から1行ずつ読み込み、マッチする行だけ出力する。

いずれもpatternはちゃんとクオートしないと切ねぇことになる。
0638617=623NGNG
テストドライバその2の方は、
むか〜しワタスィが書いた超簡易grepモドキそのものです。
0639600NGNG
サパーリ出来ません。
逝ってきます…
0640631NGNG
末尾に*がくると失敗するなぁ・・・・
やりなおそう。
0641631NGNG
あ、ちなみに私はあの入門書を読み終えたばかりの人じゃないです。
0642634NGNG
>>634
いかん、このassertだと * があったら無条件で1返せば通ってしまう(笑)
ので追加。
assert( match("a*c", "ab") == 0 );

あと複合系(もっと要る気が)
assert( match("a**?*", "ab") != 0 );
assert( match("a**?*", "a") == 0 );
0643631NGNG
と思ったけどできた。
0644デフォルトの名無しさんNGNG
あるモジュールAが別のモジュールBをよんで、さらにモジュールB
が別のモジュールCを呼んで...という具合にモジュールAを頂点とし
て呼ばれているモジュールすべてを洗い出すにはどうやって調べて
いけばよいのでしょうか?モジュールA、B、Cなどすべてのモジュ
ールのソースはあります。どなたか効率よく調べる方法がありましたら、
教えてくださいませんか。
0645631NGNG
末尾が?で終わるときに失敗するんですが、いいですか?
だめですよね?(^_^;)
0646仕様書無しさんNGNG
M-.
0647デフォルトの名無しさんNGNG
>>644
このへんはどう? http://ctool.sourceforge.net/
他にもいろいろあるはず。
0648デフォルトの名無しさんNGNG
>>644
クロスリファレンスや呼び出しツリーを作ってくれるツールを使えば?
0649デフォルトの名無しさんNGNG
644
もれはソースブラウザ(M$)でしらみつぶしかな。
0650623NGNG
あんまり引っ張っても何なので…
出題者が用意した回答です。
あんまり叩かないで(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;
}
0651631NGNG
ギブアップ 末尾に?があると失敗します。

int 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;
}
0652651NGNG
Visual C++の方に持っていって、デバッガにかけてみよう。
でないとどこが間違っているのかわからない(T_T)
0653 NGNG
ついでに正規表現版まで作ってくれ!!
0654デフォルトの名無しさんNGNG
>>653
どの正規表現?
.と*だけで良いなら何とか…

(正規表現の文法自体は正規文法でないという罠)
0655644NGNG
>>647,648,649
ありがとうございます。ckrefを使用してみます。
0656651NGNG
for(;*str||*pattern;str++,pattern++){
の部分を
for(;;str++,pattern++){
if(*str||*pattern){
break;
}
に変えたら成功した・・・・
もしかしたらforについて勘違いしている部分があるかも(汗
0657 NGNG
とりあえずperlでつかえるくらい。。ナンチッテ

グループとかは無理ですか?
0658651NGNG
あ!!
もしかしたらcontinueした時はforの条件式が評価されないんですか?
0659デフォルトの名無しさんNGNG
>>657
Perlの正規表現だと、それこそちょっとしたコンパイラ書くくらいの
手間がかかると思われ。

グループって[a-z]みたいなやつ?
暇潰しの課題にはちょっと面倒すぎるなあ。
0660651NGNG
やっと出来ました・・・・
forについての間違った認識を正すことが出来てよかったです。
ありがとうございました。

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 NGNG
orとかは?

U(MA|FO)

みたいに
0662デフォルトの名無しさんNGNG
>>656
for(;*str||*pattern;str++,pattern++){
は条件式が真ならループは続いて、
for(;;str++,pattern++){
if(*str||*pattern){
break;
}
はifの条件式が真ならループを抜ける。
前者と後者じゃまったく逆の処理じゃないの?
0663デフォルトの名無しさんNGNG
>>662
すみません。
if!(*str||*pattern)) break;の間違いです。
0664663NGNG
じゃなくて、
if(!(*str||*pattern)) break;
0665デフォルトの名無しさんNGNG
あのなぁ。
if (*str) って書くなら、素直に if (*str != '\0') って書け。
省略すればいいって訳じゃないぜ。
if (isalpha(XXX)) とか、if (found) はこう書くべきだがな。
0666デフォルトの名無しさんNGNG
>>665
同意
0667デフォルトの名無しさんNGNG
strtokを書いたことがある方に聞きます
staticな局所変数を使いました?
0668デフォルトの名無しさんNGNG
>>660
>goto loopend;
continue;じゃいかんの?

Cの文法に躍らされてる気がする。
そんなにまちがえるなら素直に状態遷移書けばいいのに
0669デフォルトの名無しさんNGNG
>>667
聞く前に質問の仕方をもっと勉強しろ
0670デフォルトの名無しさんNGNG

可変長バッファサイズを持ったFIFOを実装したいんだけど、何か良い例ないですかね?
staticなサイズで組むと格納するデータサイズが小さいものの場合、かなりメモリーが
無駄になっちまうので。 どう実装しようかずっと悩んでるんだけど(w
0671デフォルトの名無しさんNGNG
>>665
そうだそうだ!
ちゃんと if ((*str != 0) != 0) と書け!
いや、もっとちゃんと if (((*str != 0) != 0) != 0) と書け!!!!
0672デフォルトの名無しさんNGNG
>>670
8バイト単位とかでリストでも作ったら?
0673デフォルトの名無しさんNGNG
>>670
双方向リストとか。
0674デフォルトの名無しさんNGNG
>>667
局所かどうかはともかくstaticな変数は使うな。
0675デフォルトの名無しさんNGNG
>>673
FIFOなら片方向でいいんじゃない?
メモリーサイズ気にしてるのに。
まあ個人の勝手だけどさ!
0676674NGNG
「使うんじゃない」という意味でなく
「使うよね」ってこと(汗
0677デフォルトの名無しさんNGNG
>>672
この場合、8バイト単位のリストにまたがってしまうデータ長の場合、
どう管理するんでしょうか? 管理はなるべく単純にしたいんだけど。

>>673
むむむ、おもしろそうだけど、どう利用するのか良くわからん(w
0678デフォルトの名無しさんNGNG
↑670


>>673
片方向リストは既に固定長サイズでやってみてできています。
問題はリスト構造というよりもどうやって可変長サイズを実装
するかなのですが。
0679673NGNG
>>675
そうか。いつも双方向で書いてたよ(欝
片方向だと先頭と末尾へのポインタを持つのかな?
空の時どうなるの?
0680デフォルトの名無しさんNGNG
>>668
上の方を見て。
0681デフォルトの名無しさんNGNG
>>678
Addの出来ないリストなんて!

・・・って言うかそれはリストなのか?
0682デフォルトの名無しさんNGNG
>>677
C++のdequeの構造はどう?
適当な大きさのブロックをリンクリストで繋ぐ。
先頭のブロックが空になったら開放。末尾が満杯になったら次のブロックを確保してリンク。

ついでに一個開放したた余剰ブロックはプールしてつぎの確保に使い回すとか
0683 NGNG
FIFOってなんですか?
0684デフォルトの名無しさんNGNG
>>683
キューみたいに先入れ先出しのこと。
0685デフォルトの名無しさんNGNG
>>681
ん? FIFOだからそれでいいんだろ? 何番目にAddするなんて意識しなくていいんだから
0686デフォルトの名無しさんNGNG
>>685
何番目にAddする=インサート
0687 NGNG
漏れ可変長のキューライブラリなら作成したことあるよ
遠い昔だけど。
0688デフォルトの名無しさんNGNG
FIFO: First In First Out
トコロテン
0689デフォルトの名無しさんNGNG
>>673
可変長サイズの意味がわからん。
レコードが可変長という意味?
Tlink *link = malloc(sizeof(LINK) + 必要なデータサイズ );
link->next = next;
memcpy((void*)(link + 1),データ,データサイズ);
0690689NGNG
切れた。
>というのはたまに使うけど。
と続く予定だった。
0691687NGNG
そん時は双方向リスト使ってやってますた。
だって管理が楽なんだもん
0692デフォルトの名無しさんNGNG
>>678
片方向でも普通は可変長だろ
0693デフォルトの名無しさんNGNG
普通は双方向にする。
よほどメモリーが惜しくなければ。
0694デフォルトの名無しさんNGNG
>>678
普通片方向でも可変長でしょう。
staticにバッファとらずにmalloc使えって
0695デフォルトの名無しさんNGNG
>>693
普通って、どこの普通?
0696デフォルトの名無しさんNGNG
>>695
京浜急行の普通(列車)
0697694NGNG
かぶりまくってる。鬱だ
0698デフォルトの名無しさんNGNG
単方向リストを使うメリットって何?
0699デフォルトの名無しさんNGNG
>>698
あたま悪いんだ!
0700デフォルトの名無しさんNGNG
670
>>682
なるほどそのつど malloc() して繋げたり、入らなくなったら消したりするわけですね

>>689
>レコードが可変長という意味?
ええそうです。
なるほどやはり、動的に取ったメモリーセルをリストとして消したり貼ったりというのが
一般的なやりかたのようですね。

>>691
双方向リストで管理が楽になるというのは不用なものを消したり付け足したりする
時の場所を探すのが楽になるという事でしょうか?
0701デフォルトの名無しさんNGNG
struct elem {
 char *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
>698
双方向にしてもメリットがない時の資源の節約
0703デフォルトの名無しさんNGNG
>>702
やっぱりそれだけ?
0704701NGNG
実際にはいちいちmalloc, freeせずに
struct elemをまとめて取ったほうが速い。
0705デフォルトの名無しさんNGNG
670
>>701
具体例をありがとうございます。非常に良くわかりました。(w
0706デフォルトの名無しさんNGNG
むりやりこじつけると
割り込まれると困るクリチカルな時間が短くなる
0707デフォルトの名無しさんNGNG
>>705
その語尾は気に入らないな。
0708デフォルトの名無しさんNGNG
>>703
そんなにもある
0709デフォルトの名無しさんNGNG
>>701
ポインタの参照より加算のが速いんで、
使い方によっては>>689に一票。
0710701NGNG
>>709
701のコードだとstruct elemが他のモジュールには見えないが、
リストに続けてデータ本体を書くと、同時にmalloc, freeしなきゃ
ならんよね。

まあ、その方が良い事もあるだろうが。
0711デフォルトの名無しさんNGNG
struct elem {
 char *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デフォルトの名無しさんNGNG
ところでやっぱり可変長のキュー管理って、データの出し入れする度に、
mallocしたりfreeしたり、するしかないの? データの出し入れが激しい処理の場合
やばくない?
0713デフォルトの名無しさんNGNG
>>709
持ちまわるデータのサイズが不変とかいう条件なら、
手間がいくらか減るんでいいかもね。
0714デフォルトの名無しさんNGNG
>>712
出し入れにリンク自体はfreeする必要無いんじゃない?
freeは完全に使い終わった後だけにして、
空のリンクとしてリサイクルすればかなり速くなるよ。
0715714NGNG
つーかなるべくmalloc/freeは呼ばずにいた方がいいよ。
ページ/ブロック単位でメモリ確保するとか。
0716デフォルトの名無しさんNGNG
struct elem *free_list;

void 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
>>716
もしかしてリアルタイムで作ってるの?
体力あるなー。
0718どうでもいい回想(その3)NGNG
板違い・スレ違いですいません。

今年の四月、あるミッションを申し渡されました。
開発済み製品のコードに関するサポートです。
その製品に問題が発生した時の解析・修正が主要業務となります。

そのコードを見ていた何日日目に、脳天を突き抜けるかのような衝撃が・・・って、言い過ぎですね。
マルチタスキング環境においては、動的確保したバッファをタスク間メッセージバッファに使うのが定番ですが・・・
何と、そのコードは、auto変数の領域を堂々とメッセージバッファに使っていたのでした。
普通、こんな真似をすれば、プログラムは「即死」です。
恐る恐る調べてみると、うまい具合に「死なない」ように作られていました。
(おそらく、動作テストに適合するためだけに手を入れた結果と思われます。)
前任者へ話を聞くと、「母体をそのまま持ってきたはず」という回答が・・・
(ちなみに、その『前任者』は『作者』ではありません。)
件の「製品」は、全国津々浦々で今もバリバリ動いていますが、
その「母体」もまた、全国でバリバリ動いています。
(続いていいですか?)
0719デフォルトの名無しさんNGNG
>うまい具合に「死なない」ように作られていました
ならいいじゃん。
終了。
0720デフォルトの名無しさんNGNG
C 言語そのものの話題と言うよりは開発環境の話になってしまうのですが、
ANSI C のインタープリタなんて無いでしょうか?
外部ライブラリを簡単に呼び出せて後でコンパイルも可能みたいな開発環境
があったら凄く重宝すると思うのですが。
0721デフォルトの名無しさんNGNG
>>718
>普通、こんな真似をすれば、プログラムは「即死」です。
そう思ってるのは君だけかもな。
0722デフォルトの名無しさんNGNG
>>718
staticなら困るけどautoならthread-safeじゃねーの?
autoだって「動的に確保」することには違いないし。

まあ、まだ必要な間に解放されちゃったら困るけどさ。
0723デフォルトの名無しさんNGNG
>>718
> ・・・・メッセージバッファに使うのが定番ですが・・・

定番にこだわるのはよくない。
0724デフォルトの名無しさんNGNG
>>720
製品、フリーソフト、
腐るほど(ってほどないかもしれないけど)あるよ。
メンテされずに腐ってるかもしれないが。
0725デフォルトの名無しさんNGNG
>>720
コンパイラでも要求は満たしてる気がするが。
0726どうでもいい回想(その3・その2)NGNG
(716の続きです。)
こんな腐ったコード、即刻この世から消し去るのが正しい選択でしょうが、
「製品コード」という理由で、半ば力尽きる結果となりました。
「製品」である以上、「実動作不良」や「クレーム」がない以上、手を入れる事は許されません。

さて、そうしているうちに、今月始め、そのミッションには形のみ所属する事となりました。
その「製品」の開発元の業績不振の影響が響いてきたためです。
(無論、昨今の不況の影響もあります。)
最悪、その製品に関しては、サポート体制自体が崩壊する事も有り得るでしょう。

・・・と、書かせていただきました。
これまでの書き込みを拝見するに、皆様の能力は、私に10倍します。
世の中から腐ったコードがなくなるよう、努力して下さい。
ポインタ表現で「&が抜けてる」レベルなら、それこそコンパイル時に気付く問題です。
もっと大きなレベルで、その力を役立てて下さい。

・・・という事で、時々勉強に覗きに参ります。
長文失礼しました。
0727デフォルトの名無しさんNGNG
>>726を晒しあげ
0728デフォルトの名無しさんNGNG
>>726
それだけの記述じゃ腐ってるのはコードか君の頭か
判断がつかん。
0729デフォルトの名無しさんNGNG
実は>>718 >>726
がドキュンという結論ですな。
帰ってよし。
0730720NGNG
と思ったら CINT という C, C++ のインタープリタがありました。
gtk+ などの外部ライブラリを呼び出せるかは不明ですがちょっと漁ってみます。

http://pcroot.cern.ch/root/Cint.html
0731デフォルトの名無しさんNGNG
struct elem {
 char *data; /* 可変長のデータへのポインタ */
 struct elem *prev;
 struct elem *next;
};
って、
struct elem {
 struct elem *prev;
 struct elem *next;
 char data[1];
};
とかにしない?
0732デフォルトの名無しさんNGNG
>>730
cernってあのCERNか?
0733デフォルトの名無しさんNGNG
>>731
がいしゅつ。

>>689
>>709-710
>>713

あと、C99だと
struct elem {
 struct elem *prev;
 struct elem *next;
 char data[];
};
と書ける。
0734デフォルトの名無しさんNGNG
しない。
0735デフォルトの名無しさんNGNG
>>733
C99はまだ時期尚早。
0736デフォルトの名無しさんNGNG
マジな話、今どきC99使ってないやつっているの?
0737デフォルトの名無しさんNGNG
>>736
いくらでもいる。
0738デフォルトの名無しさんNGNG
VC++6.0って98年に出たんだからC99未対応だよな?
0739デフォルトの名無しさんNGNG
>>736
いるだろうけど、今から書くなら自動的にC99になるだろうね。
Unix系はとっくに、Winでもそろそろ処理系はC99準拠になったし。

過去のソフトのメンテならC99は使えないところも多いだろう。
0740デフォルトの名無しさんNGNG
C99なんて意味ない。
出るのが遅すぎた。
>>739
妄想はそれぐらいにしとけ
0741デフォルトの名無しさんNGNG
C99使えないってことは、いまどきallocaとか書くわけですか?
欝だ…
0742デフォルトの名無しさんNGNG
毎日C99しか使ってませんが何か?
0743デフォルトの名無しさんNGNG
>>741
いやだったら他の言語を使えよ。
0744デフォルトの名無しさんNGNG
もうC99の話はやめよう。
0745デフォルトの名無しさんNGNG
allocaなんか使ってる奴は居ない
0746739NGNG
>>740
どのへんが妄想なの?
ひょっとして未だにM$はC99対応してくれないとか?
0747720NGNG
>>732
以下、引用・・・ だそうです。ソースコードも公開されているらしいので、
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
>>740
遅すぎたってどういう意味?

いずれみんな切り替わるでしょ?
教科書も処理系も新規格対応になるんだから。
0749デフォルトの名無しさんNGNG
VC.NETもC99未対応でしょ?
0750デフォルトの名無しさんNGNG
C99ができた時点で以前の規格はobsoleteだろ。
C99に対応してない処理系はANSI/ISO準拠と言えない。
0751デフォルトの名無しさんNGNG
C99対応に向かってるのってgccとcode-worriorだけでしょ
0752デフォルトの名無しさんNGNG
まあまあ。
ANSIが出来たときも嫌がってた奴はいたけど、今はもういない。
時間の問題と思われ。
0753デフォルトの名無しさんNGNG
リッチーもC99の方向性には否定的だったんじゃないの?
0754デフォルトの名無しさんNGNG
>>751
Unixからスーパーコンまで、ベンダー製コンパイラはとっくにC99だよ。
0755726NGNG
おお、たくさんレスが・・・
そういえば言い忘れていたので一応申し上げます。
UNIXでのmsgsnd(でしたっけ?msgsnd??)とは異なり、件の環境で使われていたXXX_sndmsgは、
メッセージのコピーは作成せず、そのままバッファが渡されます。

よって、auto変数をメッセージバッファに使う場合、
「メッセージバッファは(内部ルール上)構造体イメージ」→「そのタスクのスタック領域がメッセージとなる可能性極めて高し」→
「他のタスクから、そのタスクのスタックに対する読み書きが可能」
という罠が待っていたのでした。
0756デフォルトの名無しさんNGNG
C99なんて特に便利な機能は追加されていないでしょ。
無視無視。
0757デフォルトの名無しさんNGNG
>>754
クソコンパイラはそういうところで点数稼がないとな
0758デフォルトの名無しさんNGNG
>>754
_Boolとか_Comprexとか使えんの?
マジで?
標準pragmaも全部対応してる?
そんな話聞いたこと無いぞ
0759デフォルトの名無しさんNGNG
要するにMS以外は全部もうC99なんだろ?
あとはMSがその気になれば、それで世の中ぜんぶC99になるんじゃねえの?
0760デフォルトの名無しさんNGNG
>>726が浮いてるな(w
0761デフォルトの名無しさんNGNG
http://seclan.dll.jp/c99d/c99d01.htm
ずいぶん便利になったものだと思うが。
0762デフォルトの名無しさんNGNG
gccは準拠してないし、bcc5.6も準拠してないんだが。
Intel C++もvectorC++もまだだな。
当然、open watcomも。DMCはしらん
0763デフォルトの名無しさんNGNG
Borlandはどうよ?
C++Builder6ってC99対応してる?
アップグレードしてないのでわからんが、カタログ見る限り言及がないから対応してないような・・
0764デフォルトの名無しさんNGNG
つーかVC++やBCCはCなんてどうでもいいんでしょ。
C++がメインでCはおまけ。
0765デフォルトの名無しさんNGNG
_Complexも_Boolも#pragmaも、今売ってるコンパイラならたいてい
サポートしてるよ。MS以外。
0766デフォルトの名無しさんNGNG
>>765
IntelとBorlandはどうなんだ?
0767デフォルトの名無しさんNGNG
つまりあれだ。
PCではC99のベンリな機能が使えないので羨ましいと。
みんなして「あのブドウはすっぱい」と(w
0768デフォルトの名無しさんNGNG
>>765
具体的にC99に準拠してるっていうコンパイラあげてみろよ
「MS以外」はいいから
0769デフォルトの名無しさんNGNG
>>767
「PCでは」じゃなくて「Winでは」と言え。

gcc3.xには_Boolも_Complexもpragmaもあるよ。
_Complexは2.xからあるけど。
0770デフォルトの名無しさんNGNG
内部定義できない時点でC99はクソ
0771デフォルトの名無しさんNGNG
大抵対応してるんだから、Windows環境も含むすべてのコンパイラで
5割以上はサポートしてないとおかしいよな。
CW Comeau Kaiとかの標準対応だけがウリのコンパイラ上げてもしゃーない。
実用になるモノじゃないとな
0772デフォルトの名無しさんNGNG
>>768
C99になると何が困るの?

今までのプログラムが動かなくなるわけじゃないんだから
別にいいんでは?
0773デフォルトの名無しさんNGNG
Modern C++ Designに出てた Comeau って
http://www.comeaucomputing.com/
対応してる感じ?
Dinkumと組んでるのかー
0774デフォルトの名無しさんNGNG
>>769
gccって標準C99準拠してないんだがどーよ?
準拠に向かっているだけなんだが。

pragma ≒ 標準pragma
0775747NGNG
俺も浮いてるっぽい。悲しひ。
0776デフォルトの名無しさんNGNG
C99は、まあ、別にどうでも良いが機能が減るわけじゃないんで使えるよ
うになったら使うだろうな。
0777デフォルトの名無しさんNGNG
C99、出されてもそれほどメリットは無いんだよね。
中途半端に仕様が複雑化するだけ。
0778デフォルトの名無しさんNGNG
>>777
は・げ・ど・う

今までうまく使えたんだからC99なんて使わなくてよい。
0779デフォルトの名無しさん NGNG
でも、さすがに今時トラディショナルCで書いてるヤシはいないよな。
0780デフォルトの名無しさんNGNG
結局製品名が挙がってこないな
0781デフォルトの名無しさんNGNG
ungetc って、どんな時に使うと便利なの?
ない頭をフル回転させて考えてみたけど
どう考えても使い道が分からないんですよね
てな訳で、こんな時には便利だぞ〜って
使い方を知ってる人は教えて下さい
0782デフォルトの名無しさんNGNG
>>780
>>773
0783デフォルトの名無しさんNGNG
>>781
stdinから読んでみた。
やべー・・・読まなきゃよかった。
もどしとこ・・・(-_-)
0784デフォルトの名無しさんNGNG
>>777
そうだね。
無くても困らないんだよね。C->C++みたいなシフトならともかく。
gccの独自拡張と同レベル。
末尾再帰展開でもしてくれるんなら、おおっ!とか思ったけど。
0785デフォルトの名無しさんNGNG
>>783
ワラタ
0786783NGNG
例えば、','まで読みたいとすると、','を読まなければならないでしょ?
それを戻したいとき。
0787デフォルトの名無しさんNGNG
>>781
たとえば数字だけを読むルーチンで
読んだ結果が数字じゃなかったらungetcしてリターン
0788デフォルトの名無しさんNGNG
よく変数でhogeってありますよね?
その、hogeの意味はなんですか?
0789デフォルトの名無しさんNGNG
>>788
論争になるよ。
bar,baz,fooも。
0790デフォルトの名無しさんNGNG
>>788
名前に意味がないときに付ける名前
0791デフォルトの名無しさんNGNG
>>782
結局一つだけ?
0792789NGNG
あ、意味か。由来じゃなくて。
>>790の通りだね。
0793デフォルトの名無しさんNGNG
Comeauってなんて読むの?
カミーユ?
0794デフォルトの名無しさんNGNG
コーマン
0795781NGNG
お〜
787は確かに、あった方が便利ですねって
良く考えると、結局783と同じなのかな…
0796デフォルトの名無しさんNGNG
>>793
こもー
0797デフォルトの名無しさんNGNG
今まで知らなかったがマニュアル見てみると、
漏れが使ってるSun Workshop 6のCコンパイラは
ISO/IEC 9899:1999準拠と明記してあった。

0798デフォルトの名無しさんNGNG
>>796
コミューじゃないの? って自信ないけど
0799デフォルトの名無しさんNGNG
>>798
しらん。
シャトーと同じように読んでみただけ。
0800デフォルトの名無しさんNGNG
ungetcに2文字戻したい場合は、どうしますか?
0801米山NGNG
800GET

余裕でした。
0802デフォルトの名無しさんNGNG
>>800
二回使う。
0803デフォルトの名無しさんNGNG
>>802
駄目じゃん?
0804デフォルトの名無しさんNGNG
>>803
そうなの?
0805デフォルトの名無しさんNGNG
>>804
知らん。
でもおれは1文字だけ戻すようにしてる。
なんでだろ?
0806デフォルトの名無しさんNGNG
あ、本当だ。
プログラミング言語Cに保証されるのは1文字だけだと書かれている。
0807デフォルトの名無しさんNGNG
>>805
理由があった筈なのに?
0808デフォルトの名無しさんNGNG
>>801って何?
0809デフォルトの名無しさんNGNG
うわ、もう3時だ。
ねなきゃ。
0810デフォルトの名無しさんNGNG
>>808
やおい

やまなし
おちなし
いみなし
0811デフォルトの名無しさんNGNG
>>808 シッ見てはいけません!
0812デフォルトの名無しさんNGNG
>>810
全国的にやっぱそう?
友達から同じ様に聞いた。
0813デフォルトの名無しさんNGNG
>>812
そうだよ。
0814デフォルトの名無しさんNGNG
雑談スレと化してますな。
深夜だから成せる技ですな。
0815デフォルトの名無しさんNGNG
で、ungetcに2文字入れたい様なケースはどうなの?
0816デフォルトの名無しさんNGNG
つーか、お前らもう少しスレを長持ち汁!
0817デフォルトの名無しさんNGNG
>>815
fseek(fp,-2L,SEEK_CUR);
0818デフォルトの名無しさんNGNG
>>815
ungetcを使わなくても良い関数にする
0819デフォルトの名無しさんNGNG
>>817
それstdinだと無理っぽいね。
あとテキストモードでも微妙。
あ、ケチつけてるわけじゃないよ?ほんとに。
0820デフォルトの名無しさんNGNG
>>819
分かっている。
俺だってstdinにfseekなんて使いたくねー(ワラ
0821デフォルトの名無しさんNGNG
>>819
ネタでしょ
0822821NGNG
>>821
ネタではないけどね。
ungetcはstdin以外にも使えるから。
0823デフォルトの名無しさんNGNG
getc/ungetcにラッパーを被せる。
らっぱじゃないよ。
好きなだけgetc/ungetc呼べるようにできるよ。
0824822NGNG
名前間違った。
0825デフォルトの名無しさんNGNG
>>823
の解決方法がまともかな。
freadやらは別途対応しないと使えなくなるが。
0826デフォルトの名無しさんNGNG
やった事ないから分からんけど
fgetposとfsetposで、無理やり戻せないかな…
0827デフォルトの名無しさんNGNG
FILE型をラップしたFILEEX型を作る。
typedef 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デフォルトの名無しさんNGNG
あ、バッファの現在位置を忘れてた
typedef struct {
 FILE *fp;
 char ungetbuf[好きなだけ];
 size_t pos;/*常にスタックトップを指す*/
} FILEEX;
0829デフォルトの名無しさんNGNG
実装をちょびっと
int 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デフォルトの名無しさんNGNG
変数名をファイルに吐き出すことは可能でしょうか?

int abcd_1,abcd_2,abcd_3,abcd_4,abcd_5;

とあったとき、
void print_function_name(int *hoge);
という関数に変数のポインタを渡して、この関数の中で、
変数の名前、abcd_3、という「文字列」を印字したいのですが。

対応表の文字列リストを作っておく、という方法しかないでしょうか?
0832デフォルトの名無しさんNGNG
>>831
ポータブルにはそれしかないだろうな。

システムに依存してよくて、externな変数だけでいいんなら、
バイナリからアドレスと名前の対応を抜き出す方法がたいがい
ありそうだが。
0833デフォルトの名無しさんNGNG
変数のアドレスと変数名と両方渡せば?
print_function_name(&abcd_1, #abcd_1);
みたいに。

(ナンデfunction_nameナノニヘンスウ名ヲプリントスルンダロ)
0834デフォルトの名無しさんNGNG
>>832-833
ありがとうございます。
グローバル変数なのですが、システム依存するのは危険なので
対応リストを作ってみます。
>#abcd_1
こんな書き方C言語でできましたっけ?
ともあれ、関数名、変数と関数を間違いました・・・突っ込みサンクス
0835トレドミンMAXNGNG
>>834
#〜はプリプロセッサが処理します。

それにしてもこの時間にこれだけスレが伸びるとは…
0836デフォルトの名無しさんNGNG
ついでに質問ですが
(1) TRACE("i = %d, j = %d\n", i, j);
とすると、#define DEBUG 1のときだけ
i = 100, j = 20
のように表示して、それ以外の時は何も表示しない
ようにしたいのです。こういう可変引数のマクロはどう
やって書いたら良いですか?

(2) funcという関数が、他のどの関数から何回呼ばれた
か数えたいのです。呼び出し側のソースは変えたくない
のですが、良い方法はないでしょうか?
0837デフォルトの名無しさんNGNG
gprof?
0838デフォルトの名無しさんNGNG
>>836
(1)
可変引数のマクロ・・・分らん。関数にしる!
(2)
プロファイルを取れば分ります。
もしくは関数を呼び出すだけのhoge()関数を作って、
今の関数をhoge_himitu()とかにするとか。
0839デフォルトの名無しさんNGNG
#if (DEBUG == 1)
#define TRACE(x) printf x
#else
#define TRACE
#endif

TRACE(("i = %d, j = %d\n", i, j));

static cnt = 0;
++cnt;
か
コンパイラ付属のプロファイラを使え

なんでお前らCFAQよまねえの?
0840デフォルトの名無しさんNGNG
srand( rand() );
こんなコード見たら本人に突っ込んどくべきですか?
問題ない?
0841デフォルト値名無しさんNGNG
CってC++みたいなデフォルト値使えないんですか?
0842デフォルトの名無しさんNGNG
べき
0843デフォルトの名無しさんNGNG
つかえない
0844デフォルトの名無しさんNGNG
ポインタをint(C99ならintptr_t)にキャストしたときの数値って
何か仕様みたいのあるの? 下位nビットは0、とか
0845デフォルトの名無しさんNGNG
ない
0846844NGNG
>>845
thx 簡潔な回答ね
0847841NGNG
答えもらっといてから補足で悪いんですが、引数のって意味ですね。
多分何を考えてるのかお見通しだと思いますが。
0848840NGNG
>>842 うむ、やはりそうですか。
控えめに問い詰めるてみることにします。
0849デフォルトの名無しさんNGNG
>>844 そもそもDSPなんかアドレス単位が 32bitってのもあるし
0850デフォルトの名無しさんNGNG
>>836

(1)
#if DEBUG
#define TRACE(fmt, ...) printf(fmt, __VARARGS__)
#else
#define TRACE(fmt, ...)
#end

(2)
#define func(x) func0(__func__, x)

呼ばれる側をfunc0という名前にしろ。第1引数に関数名
文字列が渡されてくるので、それをハッシュ表に登録しろ。

これらのコードが使えないコンパイラはさっさと捨てろ。
0851デフォルトの名無しさんNGNG
ともっち大好きあげ
0852デフォルトの名無しさんNGNG
                     ノ⌒)
         ∧_∧     ( _ノ、ノ
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)
0853836NGNG
みなさんありがとうございます。

>>837-839
呼ばれた回数をプログラムの中で使いたいのです。

>>850
試してみました。
うまくいきそうです。
ありがとう。
0854デフォルトの名無しさんNGNG
ターゲットのオペコードマップは覚えないとダメでしょうか?
0855デフォルトの名無しさんNGNG
>>854
http://natto.2ch.net/denpa/へ逝ってください。
0856デフォルトの名無しさんNGNG
>>855
いや、冗談抜きにCハカーの人は386の一バイトのオペコードぐらい
覚えてるのかなーと思ったからさ。覚えるっていっても256個しか
ないからたいしたことないけど。
0857デフォルトの名無しさんNGNG
>>856
ハイソサイエティハッカーの日下部陽一は覚えています。
0858デフォルトの名無しさんNGNG
x86なんぞ覚えてもあと数年しか役に立たんだろ,と思いつづけて早15年
0859デフォルトの名無しさんNGNG
>>857
マジですか?やっぱり日下部先生凄い。
日下部先生ならhexl-modeでプログラミングしてそうだ。。。

ところで、次スレの1はまた日下部先生にしようよ。
やっぱり先生が一番だよ。
0860デフォルトの名無しさんNGNG
>>859
〜にしよう。だって?何言っているの?
本人が立てるに決まっているだろ。
0861デフォルトの名無しさんNGNG
インタラプトのオペコードは0xCDなヨカン
0862デフォルトの名無しさんNGNG
俺は486用のデバッガ作ったよ。でも今思い出せるのはな・・・

    (゚д゚) NOP ダケダ!
   ~(  )−
    / >
0863デフォルトの名無しさんNGNG
あ、INT3も思い出した
0864デフォルトの名無しさんNGNG
INTも覚えてるな。
0865デフォルトの名無しさんNGNG
いまからCを勉強したいのですが
市販のVisual C++,C++ Builder etc
を買ったほうがいいですか?
落とせるCとどう違うんですか?
0866デフォルトの名無しさんNGNG
男は黙ってgcc
0867デフォルトの名無しさんNGNG
>>865
コンパイルが簡単。
HELPが充実。
デバッガ、エディタ、ライブラリが圧倒的に強力。
効率が10倍ぐらい違うと思う。
0868デフォルトの名無しさんNGNG
>>867
thanks a lot!
0869デフォルトの名無しさんNGNG
>>866
Kako(・∀・)EE!!
0870デフォルトの名無しさんNGNG
>>866
女は?
0871デフォルトの名無しさんNGNG
女子供はニガテだ
0872デフォルトの名無しさんNGNG
女子供はすっこんでろ!
ここは戦場だぞ!
0873デフォルトの名無しさんNGNG
女も第一線で戦います!
0874ガンオタNGNG
考えてみれば富野ってフェミニストだよな。
やっぱ戦場にも女性進出は必要だよ。
0875デフォルトの名無しさんNGNG
>>874
マクロス見ろ
0876デフォルトの名無しさんNGNG
>>874
ザブングル見ろ
0877デフォルトの名無しさんNGNG
Windows98のDOS(?)で動かすには
どういうコンパイラが必要なんでしょうか?
0878デフォルトの名無しさんNGNG
x86互換のリアルモードで走るプログラムを吐くスーパーコンパイラが必要です
0879デフォルトの名無しさんNGNG
「DOSを動かす」でなく「DOSで動かす」コンパイラだから16ビットの
コマンドラインコンパイラ。
MS-CとかTurbo-CとかBDS-CとかHITECH−Cとか・・・
0880デフォルトの名無しさんNGNG
コンパイルする環境はWindows or DOSで
exeを走らせたいのがWindows98のフロッピーで起動するDOSと言いたかったんです。
Freeなものはあるのでしょうか。

0881デフォルトの名無しさんNGNG
>>880
LSI-Cが最適だと思われ。インストールしても1Mないし。
Vectorで検索しれ
0882デフォルトの名無しさんNGNG
>>880
TurboC 1.01とか。Borlandのサイトから落とせたはず。
いらないライブラリとか削ればフロッピー運用も可能かも。
LSI-Cよりもビルド速度は速いし。
0883デフォルトの名無しさんNGNG
878〜882>>
ありがとうございます。
早速試してみます。
0884デフォルトの名無しさんNGNG
数学できなくてもシステムエンジニアになれますかね?
0885デフォルトの名無しさんNGNG
>>884
なぜここで聞く・・・・
マ板にでも逝けよ。
0886デフォルトの名無しさんNGNG
ご忠告ありがとうございます。
マ板ってどこですか?
0887デフォルトの名無しさんNGNG
>>886
プログラマ板
http://pc.2ch.net/prog/

ネタ・愚痴中心の板。
0888デフォルトの名無しさんNGNG
>>887
ありがとうございます
忠告どおり逝ってみます
0889デフォルトの名無しさんNGNG
アセンブラ分からなくてもCプログラマと名乗っていいんですか?
0890デフォルトの名無しさんNGNG
Cでまともなプログラムが書けるなら名乗っても許す
0891デフォルトの名無しさんNGNG
ポインタとか構造体とか分からなくてもCプログラマと名乗っていいですか?
0892デフォルトの名無しさんNGNG
アセンブラって何ですか? 藁
0893デフォルトの名無しさんNGNG
>>889
そんな奴腐るほどいるぞ
0894デフォルトの名無しさんNGNG
>>893
例えば俺とかお前とかな。
0895デフォルトの名無しさんNGNG
>>893
へーそうなんだって俺もわかんないけど
サブルーチンならなんとなく分かります
0896デフォルトの名無しさんNGNG
>>892
自分で調べろよ。
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=assembler&sw=0
0897デフォルトの名無しさんNGNG
既出ですが、BASICの
・REM
・PRINT
・END
・INPUT
・LET
この五つのの意味を教えてください。
できればそこのURLを貼っていただくとありがたいです
0898デフォルトの名無しさんNGNG
stdio.hっの名称ってどういう由来ですか?
0899デフォルトの名無しさんNGNG
>>897
どう罵倒しようか…
0900デフォルトの名無しさんNGNG
900
0901デフォルトの名無しさんNGNG
>>898
Standard I/O
0902デフォルトの名無しさんNGNG
分かりましたURLありがとうございます>896
0903デフォルトの名無しさんNGNG
>>898
あ、そうだったですね、ありがとうございます。
そうするとスタンダード インプット オンプットの略ってことですかね?
どういう意味なんだろう
0904デフォルトの名無しさんNGNG
厨房ですけどC言語はじめるにはどのソフト買えばいいでしょうか
いっぱいあって分からんです
0905デフォルトの名無しさんNGNG
アセンブラなんか萎える
小さいのがいっぱい萎える
0906デフォルトの名無しさんNGNG
>>904
マイクロソフトのc++が使いやすそうですよ
0907901ではないがNGNG
>>903
スタンダード インプット アウトプットだ。
0908デフォルトの名無しさんNGNG
>>903
アウトプットだよ。
標準入出力
0909デフォルトの名無しさんNGNG
>>904
僕も最近,C言語を習得しようと思ってるので
お互いに頑張りましょう
0910デフォルトの名無しさんNGNG
>>907
>>908
そういえばそうだった、ありがとうございます!
0911デフォルトの名無しさんNGNG
関係ないけど
スタンダードが標準っていう意味なら
GLAYのALL STANDARD IS YOUは
すべての標準はあなたに??
バカですいません
0912デフォルトの名無しさんNGNG
あんたが基準だ じゃねーの?
0913デフォルトの名無しさんNGNG
そういえば、stdin,stdout,stderrってFILE *型の"大域変数"だったんだな。
考えたこともなかったが。
0914デフォルトの名無しさんNGNG
const double a=45.72;
double b;
...
...

if(b==a){

}
実際にbが45.72の場合にもif文の中に入ってくれないんですけど、
どうしてなんでしょうか。。。
0915デフォルトの名無しさんNGNG
>>913
とは限らんが。
0916デフォルトの名無しさんNGNG
>>954
なんで浮動小数点型が「見た目ぴったりの厳密な値」と思う
やつがこんなに多いんだろうね。==で比較しちゃいかん、
と言うのは初歩の初歩だと思うんだが。
0917デフォルトの名無しさんNGNG
>>916

>>954は浮動小数点の疑問を書くのですか?
0918デフォルトの名無しさんNGNG
914サソの疑問は %f じゃなく %e で差をとって見てみると良く分かる
んじゃないかとおもうんだな。
0919デフォルトの名無しさんNGNG
最初は誰もわからんだろ >>こんなに多い
0920デフォルトの名無しさんNGNG
このスレなんでこんなに人気があるの?
0921デフォルトの名無しさんNGNG
Cだから
0922デフォルトの名無しさんNGNG
今日中に新スレになる予感
0923デフォルトの名無しさんNGNG
>> 915
んだんだ。昔、そういう仮定のもとに書かれたチャセンという
ぷろぐらむが、まさにそういう罠でコンパイルできなかった。
こういう誤解が広まるのはこまるね。
0924デフォルトの名無しさんNGNG
>>914
if ( fabs(a - b) <= DBL_EPSILON) {
}
0925デフォルトの名無しさんNGNG
Singleton

キタ━━(゚∀゚)━━ァ!
0926925NGNG
あ、こりゃ失礼
語僕しますた
0927デフォルトの名無しさんNGNG
>>924
二つの値が十分に近いって奴だな。
C Fuck Youか何かに載っていたような・・・
0928デフォルトの名無しさんNGNG
>>926
さらに誤字ですか。
0929925ぐらい?NGNG
失礼します
Cでカレントディレクトリからある条件(たとえば二桁の数字とか)
のフォルダのみを取得する方法はありませんでしょうか?
よろしければソースで示していただけると助かります。

最近Cを始めたのですが、
本を見てもフォルダの扱いってあまり書いて無いんですね。
(自分の読み方が悪いのかもしれませんが)
お助けいただけたら幸いです。
0930デフォルトの名無しさんNGNG
>>929
Cの標準規格ではディレクトリ内のファイル(ディレクトリ)名を得る方法は定義されていない。
0931デフォルトの名無しさんNGNG
>>929
組み込み系などディレクトリがない環境もあるからね。
man fnmatch(3)
0932デフォルトの名無しさんNGNG
>>929
プラットフォーム依存。
たいていの処理系だと、それ用のライブラリがあるのでマニュアル見るしかない。
WINだとFindFirstFile(), FindNextFile()
POSIX準拠OSだとopendir(), readdir(), closedir()
0933925ぐらい?NGNG
>>930
ご親切にありがとうございます。
それにしても定義されていないのですか。
するとこれはC++などの領域に入るものであるということなのでしょうか。

自分はVC++を使用しているのですが、
もしC++で上で書いたようなことが出来るようでしたら
お教えいただけませんでしょうか。
たびたび申し訳ありません。
0934デフォルトの名無しさんNGNG
>>933
違う違う。
>>932の言うようにOSごとに、可能ならば多くの場合ライブラリが用意されている。
0935デフォルトの名無しさんNGNG
識者の方にお伺いしますが、
a^=b^=a^=b
って式は、undefined なんですよね。
0936925ぐらい?NGNG
>>931-932,>>934
や、そうなのですか。勘違いして申し訳ありません。
自分の環境はWIN2000なのでそれでご教授いただけますと助かります。
0937デフォルトの名無しさんNGNG
>>931
へー、fnmatchなんてのがあるんだ。知らなかったよ。

ところで、組み込み系だとファイル自体なかったりしないか?(w
(freestanding environmentというやつね。)

fopen()があるのにopendir()等が規格に入らなかったのは何故だらう?
0938デフォルトの名無しさんNGNG
>>936
>>932に書かれている関数をMSDNライブラリで調べる。
0939デフォルトの名無しさんNGNG
>>937
ファイルのない環境までは考えていなかったとか。
元々OS記述用言語だし。
0940925ぐらい?NGNG
>>938
わかりました。いろいろありがとうございました。失礼します。
0941デフォルトの名無しさんNGNG
>>937
glob + fnmatch が便利。つーか挙げるなら glob だった。
ソースがほしいみたいなこといってたから挙げたけど、
使うだけなら FindFirstFile opendir でいいか。
0942デフォルトの名無しさんNGNG
>>935
うん。

>>939
規格だとfopen()もfclose()もmalloc()もexit()もとにかく全部の標準ライブ
ラリが使える環境(hosted environment)と、fopen()やfclose()やmalloc()
などが使えない環境(freestanding environment)の2種類を想定してるよね。

で、fopen()が使える環境だと「ファイル名」とか「ファイル」って概念はあ
るのに、ファイル名の一覧を取れないのはなぜなんだろうね。
0943デフォルトの名無しさんNGNG
>>935
式がundefinedというより、1つの式の中で同じlvalueの値を複数回
変えようとする「ことが未定義な動作」だ。
0944デフォルトの名無しさんNGNG
935
シーケンスポイントにaとbがそれぞれ2つか?
0945デフォルトの名無しさんNGNG
>>942
取れるのが名前だけじゃ不便だし、
ファイルシステムがOSにより様々だから規定しようがなかった
0946935NGNG
ありがとうございます。
いいアルゴリズムっていうか小技を教えて
ってスレで出ていた小技なのですが、
誰も突っ込まないので、ちょっと心配になったんです。
(もちろん、花っから、こんな馬鹿なコードは使うつもり
はありませんでしたが。。。)
0947デフォルトの名無しさんNGNG
>>944
bは問題なかろ。問題はaだよな。

>>945
そうかもね。不便でもないよりましだった気もするが。

もし入れるとしたら、「ディレクトリ名」なんてのは指定できないから
カレントディレクトリのリストしか取れない。しかもchdirも入れられ
ない、か。うーん。やっぱりあってもしょうがないか?
0948デフォルトの名無しさんNGNG
qsortの引数に配列の要素の大きさを指定する場所がありますが、
実際の処理の中ではどう使われてるんでしょう?
自分で汎用的なものをつくるとき、任意のオブジェクトをソートするときは
どうするのかなーと思って。

ソートして入れ替え処理が出てきたとき(Dataが要素の型とすると)
Data work = array[i];
array[i] = array[j];
array[j] = work
とworkのための領域(Data型一個の領域)が必要だと思いますが、
この領域はどう確保してるんですか?
malloc(size)とかだと重いような気がします。

質問がわかりにくくてすいません。
0949デフォルトの名無しさんNGNG
>>948
qsortに渡すのは「void*の配列」じゃないかな。
sortされるのはvoid*であって、実体ではない。
0950デフォルトの名無しさんNGNG
>>948
void qsort(void *base, size_t nelem, size_t width, int (_USERENTRY *fcmp)(const void *, const void *));
このプロトタイプ宣言のうち、widthをひとかたまりとしてソートします。
だから、workのための領域は必要ありません。
0951デフォルトの名無しさんNGNG
ポインタってむずいな。
0952デフォルトの名無しさんNGNG
>>951
難しくないよ。慣れの問題だよ。
0953デフォルトの名無しさんNGNG
>>949 ちょっと待った。
だとすると、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()も似たようなものではないかと。
0954948NGNG
>950
>workのための領域は必要ありません。
普通のソートしか知らないので、入れ替えるときに
work領域を使わない方法というのがちょっとわからないんですが・・・。

qsortってc言語でかかれてるんですか?
もしそうなら、一度ソースを見てみたいです。
0955948NGNG
>>953
と思ったらソースをどうも。
しっかり読んで見ます。でも難しそー。
0956デフォルトの名無しさんNGNG
>>955
要するに、ライブラリ関数の中で勝手に交換の為のwork領域を用意して
くれるという事だよ。
0957デフォルトの名無しさんNGNG
Win me でVisual C++を使ってます。
これで作ったプログラムをDOS上で動かすことはできるんですか?
0958デフォルトの名無しさんNGNG
>>957
できる
0959デフォルトの名無しさんNGNG
そのVCのヴァージョンが1.5とかなら、
 PureDOSの上で動かせるプログラムが作れるでしょう。
「DOSで動かす」のDOSがWin32Consoleの頭悪い表現なら、
 答えは「できます」
そのほかは
 できません
0960デフォルトの名無しさんNGNG
FreeBSD について来る heapsort は malloc してますね。
heapsort のアルゴリズムの都合で
ソートするオブジェクト一個分の作業領域があれば便利なんですな。
ちなみに、最悪の場合を考えると、
heapsort の方が qsort (quicksort) よりがぜん有理。
平均の場合は qsort の方が早いけど
オーダは同じなので、最悪の場合が
気になるようなクリティカルな場合は
heapsort の方がいいかも。
たとえば、4.4BSD 由来の qsort は、同じ値のキーが
多数ある場合、死ぬ程遅いのでこういう時に真っ当な
qsort を持って来るのが面倒なら heapsort を使うって感じ。
0961デフォルトの名無しさんNGNG
「VCを使って作ったプログラム」というところがみそ。
0962デフォルトの名無しさんNGNG
作業領域もheapsortが有利だね。
元のデータ以外は定数個しか要らない。
0963デフォルトの名無しさんNGNG
ガーソ...Linuxにはheapsortなんてついてこないようだ
0964デフォルトの名無しさんNGNG
みんなすごいね。。。
そこまでソートに速さを求めるプログラム組んでんだ。。。

。。それとも単なる追求心?
0965デフォルトの名無しさんNGNG
>>964
ソートでハマッたことのある人は多いと思う。
思ったより遅くて。
0966デフォルトの名無しさんNGNG
>>965
多数のデータから上位10件を表示するのに、ソート使ったら怒られました。
(まあ、確かにえらい遅かったが…)
0967デフォルトの名無しさんNGNG
>>966
ソートしないでどうやるの?
0968デフォルトの名無しさんNGNG
>>967
君は多数のデータから1番大きい数字を探す時もソートを使うんですね
0969966NGNG
>>967
えーっと、priority queueを使えと言われたが、
良くワカランかったので上位10個ソート済みの
配列を持ってた(w

データなめ終わったとき配列内に残ってたやつ
が上位10個。
0970デフォルトの名無しさんNGNG
>967
ちょっと考えてみた。

たとえば、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
大きさ m のヒープを作れば、一回のデータ追加の
操作は O(log(m)) だから、
n 個のデータの上位 m 個を求めるには
O(n log(m)) で済む。
(全部のデータをプライオリティキューにするのでは無くて
これまでに見たことがあるデータの上位 m 個だけをキューに
しておけば良いから。)
0972971NGNG
いい忘れたけど、
「大きい順んに m 個」
と言う場合、ヒープは小さい順に並べるのね。
そしたら、ヒープにある m 個のデータのうち
最小の奴だけは O(1) で取り出せ、それを更新する手間が
O(log(m)) になるから...
0973デフォルトの名無しさんNGNG
一番大きなものを探すだけなら、配列内の要素を全て一度だけ見ればOKだろ?
0974デフォルトの名無しさんNGNG
int型の変数に数字以外を入力すると表示させる方法がわかりません
0975デフォルトの名無しさんNGNG
↑「数字以外が入力された」を表示させるでした。
0976デフォルトの名無しさんNGNG
>>974-975
何を言っているのかよくわからんが、scanf系関数で数字列以外が入力された場合のことなら、戻り値をチェックすればよい。
0977デフォルトの名無しさんNGNG
O(n log n)とO(n log m)って、まあせいぜい数倍の違いってことか。

でも実際には、データを全部メモリ上に持つ(そして何度も見る)のと
1パスで良い(全部同時に持つ必要はない)のはだいぶ違うね。
0978デフォルトの名無しさんNGNG
日時を文字列で持っているのですが、これを1分進めたいという
場合どのようなやりかたがあるでしょうか?
char workdate[15];
strcpy(workdate, "20020522135930");
これが
"20020522140030"
になってほしいのですが。
いったん日時型かなにかに変換するのかなと思ったりしていますが
わからないのでよろしくお願いします。
0979デフォルトの名無しさんNGNG
int year, month, date, hour, min, sec;
sscanf(workdate, "%04d%02d%02d%02d%02d%02d", &year, &month, &date, &hour, &min, &sec);
0980デフォルトの名無しさんNGNG
とりあえずworkdate[16];
NULL文字は入れんでええのかえ
0981デフォルトの名無しさんNGNG
>>974
数値の入力にscanfを直接使うのはC言語では推奨されない。
全てを文字列として読み込み、その後、sscanfで処理すべし。
0982デフォルトの名無しさんNGNG
しまった(*ノД゚)
15でよかよ、ワシのミスじゃ。スマソ
0983デフォルトの名無しさんNGNG
次スレは日下部先生でひとつよろしく
0984デフォルトの名無しさんNGNG
立ててみるぞ。
0985(@_@)?NGNG
strncpyはコピーすべき文字数がコピー元の文字列長より少なかったら
自動的に'\0'を入れないようだけど何故'\0'を付けないの?
付けた方が使いやすいと思うんだけど
0986伝説の日下部陽一NGNG
次スレ
以降しる!

C言語なら、俺に聞け! <21>
http://pc.2ch.net/test/read.cgi/tech/1022045622/l50
0987デフォルトの名無しさんNGNG
>>985
そういう仕様だからです。
文句はK&Rに言いましょう。
0988デフォルトの名無しさんNGNG
ANSIじゃないの?
0989デフォルトの名無しさんNGNG
今まで我慢してたけど、昨日ともっちで初めてオナニしたよ。
気持ちよかった。いつかともっち
0990デフォルトの名無しさんNGNG
いつかともっち
0991デフォルトの名無しさんNGNG
Includeフォルダに
graphics.hがはいってないっす。
どこにああるの?
0992デフォルトの名無しさんNGNG
>>991
いつかともっち
0993991NGNG
あいた!すれ残り数ぜんぜん見てなかった。
あっちでききます。
0994デフォルトの名無しさんNGNG
>>991
いつの処理系だ?
TurboC++か?
使っている参考書が古すぎて最近のでは動かんぞ。
そのソースは諦めるべし。
09951000!!NGNG
              ∧            ∧
              / ・           / ';,
             /  ';          /  ';  1000 ワショーイ…
             /   ;______/   ;
          /                  \
         /    /          \     \
        /´   (  ) |____|  (  )      |
       |  /////  (  |     :|    )  /////    |
       |    (   ) :|      |  (   (       |
        |    )  (  |     |   )   )      |
        |   (   ) ';    /   (   (     /
         \  )  (   \/    )   )  ../
           ヽ              ........:::
09961000!NGNG

              ∧            ∧
              / ・           / ';,
             /  ';          /  ';  1000 ワショーイ…
             /   ;______/   ;
          /                  \
         /    /          \     \
        /´   (  ) |____|  (  )      |
       |  /////  (  |     :|    )  /////    |
       |    (   ) :|      |  (   (       |
        |    )  (  |     |   )   )      |
        |   (   ) ';    /   (   (     /
         \  )  (   \/    )   )  ../
           ヽ              ........:::

0997991NGNG
TurboC++です。
じゃあ、glibw32.libをDLして使うしかないのかな?
参考書、確かに無茶古いの使ってます。
0998デフォルトの名無しさんNGNG

              ∧            ∧
              / ・           / ';,
             /  ';          /  ';  1000 ワショーイ…
             /   ;______/   ;
          /                  \
         /    /          \     \
        /´   (  ) |____|  (  )      |
       |  /////  (  |     :|    )  /////    |
       |    (   ) :|      |  (   (       |
        |    )  (  |     |   )   )      |
        |   (   ) ';    /   (   (     /
         \  )  (   \/    )   )  ../
           ヽ              ........:::

0999デフォルトの名無しさんNGNG
1000かも
1000デフォルトの名無しさんNGNG
最後
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。