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

このエントリーをはてなブックマークに追加
1伝説の日下部陽一
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

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

・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
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

・前スレ
<20> http://pc.2ch.net/test/read.cgi/tech/1021459016/

他のリンクは>>2-を見な。
2伝説の日下部陽一:02/05/22 14:34
コンパイラ

ぼくも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
3デフォルトの名無しさん:02/05/22 14:35
(゚Д゚)/
お疲れー
4デフォルトの名無しさん:02/05/22 14:52
ともっち大好き!!!
5デフォルトの名無しさん:02/05/22 14:52
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  ともっち!大好きだ−!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
6デフォルトの名無しさん:02/05/22 14:52
ともっち!ハァハァ!
糞壁だと質問が付きにくい、という罠。
もはや知らん人の方が多いと思われ。
\ママ〜また1000横取りされちゃったよ〜
 \やつら殺してやりたいよ〜
  \__________
      ∨    ∧_∧
           " 。  。 ミ   / ̄ ̄ ̄ ̄ ̄
            ゝ∀ く  < あらあら、まあまあ
           ∧_∧  |   \_____
        三  (    とノ
      三   /   つ |
     三  _ ( _  /|  |
        (_ソ(_ソ(_ )
てめーら、ともっちで立て直せ!
10デフォルトの名無しさん:02/05/22 14:54
僕は、17歳高校2年生。
3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。

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

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

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



11デフォルトの名無しさん:02/05/22 14:55
                     ノ⌒)
         ∧_∧     ( _ノ、ノ
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)

12ともっち:02/05/22 14:56
僕は、17歳高校2年生。
3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。

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

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

プライベートな質問に関してはスレの950が過ぎたあたりから受け付けますので
それまでそういったことは、なるべく謹んでください。
13デフォルトの名無しさん:02/05/22 14:56

                     ノ⌒)
         ∧_∧     ( _ノ、ノ
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)
我慢できない、、、、
くだらんことで荒らすなよ。
ともっちスレはマ板にあるだろ!
いい加減にしろよ!!
17991:02/05/22 15:02
というわけで前スレよりやってきました。
>>前スレ994さん

その参考書には、「C言語ではグラフィックに対して
規定の書き方が米国の委員会では定まっていないため
いろいろあるから、オーソドックスなものをここに記す。」
みたいな事を書いていたのですが、
そのgraphics.hないので困ってます。
そこで、グラフィックソフトのglibw32.libをDLし
解説どおり.cfgのIとLにパスを書いたのですが、
うまくincludeできません。#include"glibw32"
としても、コンパイルしかけたあとに
外部シンボルがどうとか言ってエラーになります。
DOS上で「bcc32 〜.cpp glibw32.lib」とすれば
うまく表示できます。フォルダの階層も間違いなく
指定できてるように見えるのですが…。う〜ん。
18デフォルトの名無しさん:02/05/22 15:02
元祖ともっちスレで最初にホモねたふったの私です。
申し訳ありません>C墓のみなさん

みなさん、ここは技術板です。
プライベートなネタはマ板でよろしくお願いします。
http://pc.2ch.net/prog/
>>17
#include <graphics.h>
はヘッダーを取り込むだけ。
標準以外のライブラリはコマンドラインなりで明示的に指定しないとリンクできない
#pragma comment(lib, "glibw32.lib")
これで出来るかもしれない
21デフォルトの名無しさん:02/05/22 15:06
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  誰になんと言われようとも俺はともっちのことが好きだ−−−!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
>>21
ともっちは俺のだから、見てるだけにしといてね
23991:02/05/22 15:11
>>20
わかりました。やってみます。
ただ、今は学校の図書館なのでコンパイルできる環境がないです。
テキストにコピーして持って帰って試してみます。
このスレ、回転が速すぎ。
Win32のスレとか、VC++のスレとか、使い分けて分散して欲しい。
>>24
でも質問の内容はCの構文と標準関数が殆どだよ。
26do?f?l:02/05/22 15:54
Cプログラムをコンパイルして出来る
実行形式ファイル名って自分で変えられる

・・・よね?
>>26
御心配なく。
a.outをwin.exeにリネームしてもコンソールにhollo worldがでてきましたから。
>>27
horror word?
a.outをmicrosoft.comにリネームしたら・・・

大量のcoreファイルが出力されました。
>>25
せめて、宿題は宿題スレに行ってほしいと思う今日このごろ。
31デフォルトの名無しさん:02/05/22 17:01
age
>>26
単なるファイルだからできる。
できるけどWinなら使えなくなる可能性はある。
33デフォルトの名無しさん:02/05/22 18:39
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  >>19なんでてめえがあやまってんだよ!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
34デフォルトの名無しさん:02/05/22 18:50
DE キタ━━(゚∀゚)━━ァ!

35クラカーの卵:02/05/22 19:38
pythonってどうなんでしょうか?
36質問:02/05/22 19:40
{
// TODO: この位置にコントロール通知ハンドラ用のコードを
追加してください

CWnd * h=GetDlgItem(IDC_PICT1);
CDC * pDC=h->GetDC();

CButton*r1=(CButton*)GetDlgItem(IDC_RADIO1);//チェックボタン
CButton*r2=(CButton*)GetDlgItem(IDC_RADIO2);
CButton*r3=(CButton*)GetDlgItem(IDC_RADIO3);
CPen p,*oldp;
if (r1->Getcheck())
p.CreatePen(PS_SOLID,1,RGB(255,0,0));
else if (r2->Getcheck())
p.CreatePen(PS_SOLID,1,RGB(0,255,0));
else
p.CreatePen(PS_SOLID,1,RGB(0,0,255));
oldp=pDC->SelectObject(&p);

pDC->Ellipse(20,20,150,150);//円を書く

pDC->SelectObject(oldp);

}


--------------------構成: a02 - Win32
Debug--------------------
リソースをコンパイル中...
コンパイル中...
a02Dlg.cpp
C:\VC++6.0DATA\TEST1\a02\a02Dlg.cpp(186) : error C2039:
'Getcheck' : 'CButton' のメンバではありません。
c:\program files\microsoft visual
studio\vc98\mfc\include\afxwin.h(2704) : 'CButton'
の宣言を確認してください。
C:\VC++6.0DATA\TEST1\a02\a02Dlg.cpp(188) : error C2039:
'Getcheck' : 'CButton' のメンバではありません。
c:\program files\microsoft visual
studio\vc98\mfc\include\afxwin.h(2704) : 'CButton'
の宣言を確認してください。
cl.exe の実行エラー

a02.exe - エラー 2、警告 0

なんで??
GetCheck ?
>>36
これほど親切なエラーメッセージより分かりやすい説明は漏れには出来ん
39質問:02/05/22 20:07
CBottunの宣言ってなんなのさー
ちゃんと宣言してるのに。しだりないってか?
>>37=39もしかしてブビ上がり?
4140:02/05/22 20:10
スマソ>>37

>>36=39もしかしてブビ上がり?
せめてタイプミスなんかは自分で解決してほしい。
さらに言えば質問する前にスレを選んで欲しい。
43質問:02/05/22 20:16
GetCheckってとこがまちがってるの?
>>42
三村 (;´д`).。oO( Typo かyp! )
>>35
こっちへ。
Pythonお勉強スレッド Part2
http://pc.2ch.net/test/read.cgi/tech/1020718991/l50
localtime って static 変数へのポインタ返すの?

連続して呼んだら結果失われる?
>>46
その通り。結果を残しておきたかったら、どこかにコピーしなければならない。
48デフォルトの名無しさん:02/05/22 22:09
質問があります。

C言語でのブール値の扱いについてなんですが、
 #define FALSE 0
 #define TRUE (!FALSE)
ってありますが、
これって
#define FALSE 0
#define TRUE 1
でも同じですよね、
!FALSEの式の値は1なので。。。。(組み込みの演算なので)

厨房の漏れに教えてください。

(´-`).。oO(CにTRUE、FALSEなんてあったっけ?)
50785:02/05/22 22:12
ないから定義してるんだRO
つか、true, false使えよ。
5250:02/05/22 22:13
しまった。785って。。。(鬱
5348:02/05/22 22:15
>50
そうです。

C99には_Bool型ってのがあるらしいけど。。。


!は非ゼロをゼロに
ゼロを非ゼロにします。
K&Rか規格書でも読みなさいな
そうそう。
strcmpの戻り値は1,0,-1のどれかだと思っている人も多い。
5648:02/05/22 22:40
>54
それは資料等を見て、知っておりますが、

int i;

i= !0;
printf("%d",i);

ってやると
1
という結果が得られるのですが、
是は処理系依存?

vc++とgcc(cygwin)ではそうなったのですが。
もしかしたら、 組み込みのブール値扱いになって、!0自体の式の値が1に
なって、こういう結果になるのかなって思いまして。。。
>>47

そうか、ありがとう。
なんで構造体直接返さないんだろう。
58デフォルトの名無しさん:02/05/22 22:42
>>56
処理系依存。
strcmp()の戻り値って、0と!0だけじゃ都合悪いの?
>>59

それだと辞書順ソートができないだろうが。
6154:02/05/22 22:48
スマソ
K&Rには0か1しかならないと書いてあった。
>>59
strcmpは同じかどうかを判断するための関数じゃなくて、大小を比較するための関数。
63デフォルトの名無しさん:02/05/22 22:49
>>61
何ページ?
>>57
構造体を=を使ってそっくりそのまま代入できると保証されたのはANSI Cからだからじゃない?
!演算子は0か1を返すと規格で定められている。
結果の型はint。

処理系依存じゃないよ。
>>65
そうなのか。
じゃあこれからはi=1の代わりにi=!0を使おう。
構造体の値を返す関数って標準ライブラリにはないんじゃない?
似たことをやるときも「結果はここへ書け」というアドレスを引
数として渡すのがC伝統のスタイル。

最近Unixで追加されたリエントラントなバージョン(localtime_r
とかasctime_rとかstrtok_rとかgethostbyname_rとか)もその
スタイルになっている。
そりゃ構造体がでかかったらオバーヘドがイパーイかかってだめYO
strcmp()って大小比較する関数だったんだ、、
勉強になる、感謝
そうか、やはり値を返すと効率悪いからかな。
必要なときは自分でコピーしろと。Cらしいな。
FILE *fopen(const char*, const char*);
この戻り値から推測するに、、、
fopen()でどこかにFILE構造体の変数を宣言して、fclose()で変数解放って寸法でしか?
ストリームとか全然分からないけど
>>71
そういう時はライブラリのソースを読むのが一番よい。
73デフォルトの名無しさん:02/05/22 23:29
超初心者に超やさしいサイト教えてください・・・
71じゃないけど
やぱーりメモリ確保して解放してたのね。
ライブラリてソースややこし。
#if の嵐。
>>73
猫んどけ。
>>73
http://www.bekkoame.ne.jp/~medaka/r_c/c_class.html
↑ここなんかなかなかわかりやすいと思うのだが・・・・
>>76
いやしかし、しょっぱなから void main()とやっているな・・・・・
やっぱり勧めるのやめようかな・・・・・
78デフォルトの名無しさん:02/05/22 23:50
くだらない質問でスマソ
int *p ;
p = (int *)malloc(0) ;
これって、pの値は処理系依存ですか?
それとも、NULLになるんですか?
不定だよん。
8048:02/05/23 00:00
54さん
65さん

ありがとう〜。

組み込みのブール値扱いでよかったんですね。

8178:02/05/23 00:05
>>79
不定って、もしかして、あの
「何が起きても、おかしくない」
っていう不定ですか
>>78
そうそう
コンピュータがいきなり壊れても
突然ペットの犬(ジェニファー)が死のうとも
突然アナルにバイブが差し込まれても文句は言えない。
83shige:02/05/23 00:09
malloc(0) の動作は処理系依存であり、NULL を返すかユニークなポインタを返すかのいずれかになる (ISO/IEC 9899:1990 7.10.3)。処理系に依存するため、特定の動作を期待したプログラムは書かない方が良いだろう。

ちなみに、malloc(0) がユニークなポインタを返す場合は、malloc() がふつうに返すポインタと同じで、malloc() が管理する領域に "少なくとも 0 バイト" の領域を作ってその先頭のアドレスを返すだけである。NULL を返さない理由としては、

n バイトの領域を確保する
その n バイトの領域を使う
最後にその n バイトの領域を解放する
という一連の処理で、n が 0 か 1 以上かで場合分けしなくてすむようになるから、というのが考えられる。

8478:02/05/23 00:23
>>83
かなり怪しいお名前ですが、ありがとうございます
なんだC++がわからなくて荒らして他のはおまえか
86デフォルトの名無しさん:02/05/23 00:34
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C++
( ΦωΦ)=○)'3') ←shige = matumoto = Ruby
"A >>>>>> B" は、「Aは遥かな道のりを経てBへと進化する」と読みます。
そこの所をお間違えなく。
89デフォルトの名無しさん:02/05/23 00:53
入門するときはやはり本を買ったほうがいいのかな・・・・?
90デフォルトの名無しさん:02/05/23 01:40
K&RのP22、文字数のカウントすつところでテキスト通り
long nc;
nc=0;
while(getchar() != EOF)
++nc;
printf("%ld\n",nc);
ってやってるのに、testとタイプしても何も表示されません。
次の
double nc;
for(nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n",nc);
でも文字数がカウントされるはずなのに何も表示されません。
ご教授ください
>>90
WindowsならCtrl+Z、UNIXかまたはWindowsでもcygwinならCtrl+Dを押して
EOFを入力すること。
9290:02/05/23 01:50
>>91
おお、できました。
勝手に最後をEOFと見てくれないんですね。
勉強になりました。
93 :02/05/23 01:52
>>90
test とタイプした後、EOF の入力として CTRL-D をタイプする。(UNIX or Linux)
Windows or DOS なら CTRL-Z だっけ?
このスレかどっかでも議論になってたな。
もしくは
>>92
一行読み込んだ時点で最後と見なされる仕様だと
二行目以降が扱えないじゃん・・・
>>94
そんな時は全体をwhile (1)かfor (; ; )などで囲めばよい。
>>79
malloc(0)の値は不定じゃないです。
>>96
不定だよ。C++のnewと混同してない?
>>96
free(0)が無害なのと混同してるだろ。
99デフォルトの名無しさん:02/05/23 03:09
>>96
realloc(p,0)がfree(p)と等価なのと混同しているだろ。
100ズダー
101デフォルトの名無しさん:02/05/23 03:18
>>83 ホンモノですか?
10296:02/05/23 03:19
不定じゃないってば。みんなてきとーなこと言わないで。

7.20.3 Memory management functions

If the size of the space requested is
zero, the behavior is implementation-defined: either a null
pointer is returned, or the behavior is as if the size were
some nonzero value, except that the returned pointer shall
not be used to access an object.

「null pointerを返すか、あたかもnonzeroの引数が渡されたかのように振る
舞う(ただし返されたポインタはオブジェクトをアクセスするのには使えない)。
どちらになるかは処理系定義。」
>>102
不定じゃないけど処理系依存。
どちらにしろ迷惑。
つーかmalloc(0)なんて無意味なことはやめろ。
NULLにもなりうるのか?
うーんそりゃ困った・・・
10596:02/05/23 03:24
>>103
おれはやってないよ。
単に間違いをただしただけでなぜ怒る?負け惜しみ?
106デフォルトの名無しさん:02/05/23 03:25
>>105
いや、レスの後半は質問した奴に対するレス。
>>96
禿しく外出のことを今さら書いて
鬼の首でも取ったように偉そうに…
108デフォルトの名無しさん:02/05/23 03:29
0に限らず、mallocに定数を渡すことってある?
>>108
え? sizeof(struct nantoka)って定数だろ。
110デフォルトの名無しさん:02/05/23 03:38
>>109
ああ、リスト、二分木構造があったか・・・
111C初心者:02/05/23 04:13
C言語でRS232Cからシリアル通信で

D,5,5

と送信するだけのプログラム書いてもらえませんでしょうか?
すいません。Cがまだ未熟なもんで・・・これさえできません。
お願いします
#include "comm.h"

int main()
{
 return send_comm(1, "D,5,5");
}
113デフォルトの名無しさん:02/05/23 05:21
C99 ではこうなってるね。

A non-null pointer returned by a call to the calloc,
malloc, or realloc function with a zero requested size
is used to access an object (7.20.3).
>>113
C++のnewと同じだね。考え方は。
>>111
Windowsならこうなる。OSとか処理系とか書けよ。
hCommDev = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
str[0] = 'D';
str[1] = '5';
str[2] = '5';
WriteFile( hCommDev,(void *)str, 3, &WriteByte, NULL );
116デフォルトの名無しさん:02/05/23 09:05
Cの初心者です
二次方程式の解なんですが、
ax2+bx+C=0
b2−4ac<0が虚数解になる旨を表示するソースプログラムはどう書けばいいんですか?
というか、数学が苦手分野なので解かりません
どなたか教えて下さい
(2乗がわかりづらくてスミマセン)
課題丸投げなら別スレにいけ。
>>116
printf("虚数解になる\n");
>>116
× b2−4ac<0が虚数解になる
○ ax・・・=0が虚数解になる

ifをつかえ
120デフォルトの名無しさん:02/05/23 10:32
y/n入力させてループさせようとしてるのですが
scanfを飛ばしてloopに行ってしまいます・・・
ソースの一部↓
printf("RU = %f\n",RU);
printf("続けますか?(y/n)");
scanf("%c",&flag);
printf("\n");
if(flag='y') goto loop;
else ;
120
==
122デフォルトの名無しさん:02/05/23 10:37
>>116
b*b-4*a*c<0
123デフォルトの名無しさん:02/05/23 10:41
>>121
ミスの指摘ありがとうございます。修正しました。
しかし、今度はscanfを飛ばしてプログラム終了してしまいます・・・
124デフォルトの名無しさん:02/05/23 10:51
>>120
scanf("%c", &flag);

read(0, &flag, sizeof flag);

では駄目か?
それともscanf関数を使う縛りがある?
>>123
fflush(stdin);
scanf("%c",&flag);

scanf(" %c",&flag);
/*input bufferの振る舞いは実装依存*/
126デフォルトの名無しさん:02/05/23 11:12
>>124
同じ結果です・・・
127デフォルトの名無しさん:02/05/23 11:15
>>125
出来ました。ありがとうございます。
しかし、何が悪かったのかわからない・・・
>>127
fflush(stdin)でできたということは、標準入力に残っていた文字が原因だったということでしょう。

fflush(stdin)はやらない方が良い方法なんだけど。
>>128
実装依存だからね。
>>129
じゃなくて、同じ実装でも毎回同じ結果とはかぎらない。
131デフォルトの名無しさん:02/05/23 11:59
未定義の動作(undefined behavior)
・何が起っても不思議ではない。

未規定の動作(unspecified behavior)
・規定された何通りかの動作のうちいずれかになる。

処理系定義の動作(implementation-defined behavior)
・未規定の動作のうち、どれになるか処理系が文書で明示しなければならない
 もの。
132デフォルトの名無しさん:02/05/23 12:23
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < おなにしますた
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /     
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д`) < しますた
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) スマタ     
    / ./     ( ヽ、     / /⌒> )     ゚(  )−          
   (  _)      \__つ  (_)  \_つ     / >     
一番小っこいのがいないな
134拡大:02/05/23 12:33
 (゚д゚) スマタ
 ゚(  )−
 / >    . モミジマンジュー
       ↑
135デフォルトの名無しさん:02/05/23 12:34

           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < おなにしますた
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /     
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /ω\\     ( ´Д`) < しますた
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) スマタ     
    / ./     ( ヽ、     / /ω> )     ゚(  )−          
   (  _)      \__つ  (_)  \_つ     / >     
136笑む獅子:02/05/23 12:46
自前のライブラリ.libはどうやって使うの?
136
プロジェクトに追加する。
link時に混ぜる
139笑む獅子:02/05/23 12:52
>>137
ねぇ聞いてるの?
ねぇーってばー!
140笑む獅子:02/05/23 12:53
>>138
ばかー!
気持ち悪いハゲだな
>>136
VC++のcl.exeなら/link [.libファイル名]
/linkは別に指定しなくても良い罠
144笑む獅子:02/05/23 14:51
みんなそうやっておしえてくれないんだから、
ヘッダファイルになんて書けば良いの?
sample.lib
include<sample.h>
int main(){

}
145笑む獅子:02/05/23 14:52
ぼくたんが使ってるのはbcc32.exe(無料)
bcc32 source.c sample.lib

もしくは、
#include <voke.h>
#pragma comment(lib, "voke.lib")

int main()
{
}
147笑む獅子:02/05/23 15:00
ぼくたんが買った本にはpragmaが載ってなかった・・・糞本でした。
共立出版の聖書を買うべきだった・・・
148笑む獅子:02/05/23 15:02
ぼくたんの経験だとライブラリファイルとヘッダファイルは同じファイル名でした。
149笑む獅子:02/05/23 15:08
>>146
なんでそうなるの?
変な事例として
何も書かないint main(){}
test.cをコンパイル
>bcc32.exe test.c
するとtest.obj , test.exeが出来る
>tlib test.lib +test.obj
このtest.lib
を使うのにその方法はどうかと
voke.libをtest.libに直せヴォケ
以降、笑む獅子は無視してください。
ボケは何をやってもボケ。
153哀む師仔:02/05/23 15:34
こんにちわ。エヘ
みーんなだーいきらい
154哀む師仔:02/05/23 15:36
>>150
人格破綻者ですか?
>>154
うざいな。お前。消えろ。
教えてもらう気がないならこのスレに顔をだすな。
156 :02/05/23 15:41
学習意欲満々だよコレマジ
157 :02/05/23 15:44
あちこちにおちてるライブラリ集には
ヘッダに知らない文法で宣言してあるよみ
>>155
秋葉原人らしからぬ言動だな。。けしからん!「萌え」と言え!
159 :02/05/23 15:50
つべこべ言わずに教えろみ
別スレに書いたらこちらへ誘導されたのでこちらに改めて書きます。
私はUNIXでemacsとgccコンパイラを用いてC言語を勉強しています。
先日、fork()を習ったのですがfork()が一体どういう仕組みなのか分かりません。
fork()は自分自信を複製するものだということで
fork();
printf("A\n");
と記述すればAが2つ出力されることは分かりました。
ところが先生が例として書いたプログラムの中に
i=fork();
というのがでてきました。こうなると、iに一体何が代入されているのか分かりません。
i=fork();
fork();
printf("%d\n", i);
などとしてあるとi=0 i=0 i=4836 i=4836の4つがこの順番で表示され
fork();
i=fork();
printf("%d\n", i);
とされてあるとi=0 i=4851 i=0 i=4852のようにこの順番で表示されるのですが、
何がどのようになって、なぜこのように順番が変わって結果が表示されるのかが
さっぱり分かりません。
もしよろしければどうか教えてください。
あの〜リンク先読んだ者ですけど
ある程度までは説明があるのですけれども
肝心なものから逃げています
つまりそれは.libと.hなのですみ
萌えーーー
>160
man fork
>>160
C言語の質問と言うよりUNIXの質問だな。
しかもマニュアルすら読んでないことが明らかだ。
まずは >>163 のとおり。
165デフォルトの名無しさん:02/05/23 16:53
線形探索法の問題です教えてください。
配列aと一つの値Keyを引数とし、Keyに等しい値を持つ配列要素を見つけてその
添字の値を返す関数を作れ、Keyに等しい値がない場合は-1を返す
関数原型は次のとおりとする。
int search(int a[], int size, int Key );
スティーブンス嫁
pragma使わなくても出来ないの?
define使ってたような・・・
168デフォルトの名無しさん:02/05/23 16:56
スティーブンスってなんですか?
{
int i;
for(i = 0;i < size;i++)
if(a[i] == Key)
return i;
return -1;
}
>>165
宿題は宿題スレで…
それにしてもレベル低すぎるぞ
>>165
探索法の中でも最も単純な方法じゃないか。
もしもしーーー
俺に聞けって言うから悩みを相談してるのに、救済措置もないのかYO!

174165:02/05/23 17:03
すいません助かりました!
>>172
どの悩みじゃ?
このスレは回転速いから自分の質問を上げたレス番号を>>xxxで示すよろし
{
 unsigned i, j, k, index;
 srand(time(0));
 for (i = 0; i < (unsigned)-1; i++)
 for (j = 0; j < (unsigned)-1; j++)
 for (k = 0; k < (unsigned)-1; k++) {
  index = rand() % size;
  if (a[index] == Key)
  return
 }
 return -1;
}
>>176
(unsigned)-1・・・・
limits.hのUINT_MAXでいいような・・・
>>176
殴られたい?
179165:02/05/23 17:14
さっきの者ですが関数をmainで確認するのはどうしたらいいんですか?
簡単な質問ですいません一昨日はじめたばっかなんで
>>179
main関数からsearch関数を呼ぶ。
181笑む名無し:02/05/23 17:16
>>178
お前は人殺し認定委員会鑑査に任命された。
よって、
>>181
abort();
183笑む名無し:02/05/23 17:20
>>175

>>167の事じゃないの?
184165:02/05/23 17:22
引数はどうしたらいいんですか?
>>167
は質問になってないぞ。どれかのの途中だろ?
int main()
{
int array[] = {0,1,2,3,4,5},index, n;
char buf[256];

puts("0〜5まで探したい値を入力してね(^-^)"):

if((index = serach(array, sizeof array, atoi(gets(buf)))) != -1)
printf("それはarray[%d]に入ってるよぉ〜♪", index);
else
puts("んなもんありゃしない(´-`)y-~~");

return 0;
}
>>184
どうしたらいいですか。って、あなた自分でint search(int a[], int size, int Key );と定義したんでしょ?
それに見合う引数を渡せばいいの。

int ia[]{4,2,92,54,222,8,1};
search(ia, sizeof size/sizeof(int), 8);

とか。
>>186
1バイトのchar型以外はsizeof arrayをsizeof(type)で割らないと。
なにげに潜む186の罠
190187:02/05/23 17:28
× int ia[]{4,2,92,54,222,8,1};
○ int ia[]={4,2,92,54,222,8,1};
191187:02/05/23 17:29
しかもsizeof sizeってなんだよ(T_T)
sizeof iaだろ(T_T)
もう嫌(T_T)
1921:02/05/23 17:30
200ゲットーーーーーーーーーーー
193165:02/05/23 17:32
atoiとかまだ使えないんですけど、
stdio,stdlibをちょろっとやったんで
ああ失礼。
最初のputsにセミコロンとsearchとsizeof array/ sizeof(int)を適当に修正してちょ
>>193
まあ、ゆっくり一つずつ確実に覚えてゆこうよ。
196笑む名無し:02/05/23 17:35
ぼくたんがこんなに苦労してるのは、買うべき物を買わず、無料で済ませようとしているがゆえの暗中模索
買っちゃえばいいんだよな〜
いまさらvc6++,bcb5もな・・
C#ってもううってんの?いくら?VBより早い?学割きく?
msからパンフとどいたよ、ムチャクチャ高いYO
197質問:02/05/23 17:35
char a[20];

とかの[20]ってどういう意味があるの?
これがないとエラー出る場合とない場合あるけど。
198165:02/05/23 17:35
まあ全部ネタですが
>>197
要素数。
int array[]={1,2,3};とやった場合は必要な要素数をコンパイラが自動的に判断してくれるからOK
  |-□□-| 200ですね
   \ - /
char a[20];

関数内だったら定義も兼ねて20バイトのメモリ領域が割り当てられる。
初期化している場合に限り添え字はつけなくても構わない。
その時は代入している数をコンパイラが数えて必要量確保してくれる
202201:02/05/23 17:42
  |-□□-| 202ですね
   \ - /
203165:02/05/23 17:47
ありがとうございます!
もう一ついいですかね?
2つの整数の最大公約数を求める関数を作りたいんですけど
最大公約数がMAX(x,y)だとすると
MAX(x,y)==MAX(y,x%y)
で大丈夫ですかね?
もうちょっと本を読んでから質問してホスイ・・・
最大公約数を求めるのってユークリッド互除法を使うんでしょ?
206165:02/05/23 17:51
すいません
そういう難しい言葉だとわからないんですけど....
だめ。何より名前がだめすぎるgcdね。
(;´-`).。oO(最大公約数ってなんだっけ?・・・・)

・・・・

(;;;´-`).。oO(そろそろ引篭ってないで数学でもやり直すかなぁ)
>>194
sizeof array/ sizeof(int) って
(sizeof array) / sizeof(int) じゃないとまずくない?
sizeof演算子は / より優先度高いし。

さらにいえば (sizeof array) / (sizeof array[0])にしたいけど
>>208
36と24の最大公約数は12とかだったような・・・・
やべー、小学校からやり直さないと!
>>203
googleで 最大公約数 検索しる
>>209
優先度が高いから括弧は必要ないんじゃない?
213209:02/05/23 18:03
>>212
あー、ぼけてた。サンクス
寝不足はいかんな…
214スレ立てようと思ったけどやめた:02/05/23 18:27
ある部分をコメントにするとき、なんて言うのでしょうか?

コメントアウト? コメント化?

じゃあコメントしてある部分を元に戻すのは? コメントイン?
なんかおかしい・・・

コメントにする行為、コメントを外す行為
を対義語として納得できるような単語をみんなで考えませんか?
コメントアウト->萌
コメント除去->萎
コメンタイズ、アンコメンタイズ
217214:02/05/23 18:31
一発で明確な答えが得られないということは、やはり
かなり深い問題だったようですね。
マジメに議論したらそれだけでこのスレが終わりそうだから
やっぱスレ立てたほうがいいかな。
でもマ板向けっぽいしなぁ。
隠蔽と公表でいいじゃん。
>>214
ここではなく、マ板なら需要あるべ。
スレ立ててみぃ。
てか、ここでヤルなよ (゚Д゚)ゴルァ
220214:02/05/23 18:38
>>218
「そこの行を隠蔽して、こっちの関数を公表ね」
とか業務で通じますか?通じやしませんよ。
221218:02/05/23 18:39
>>220
ネタにマジレスですか。
さっさとマ板に逝けよ。
>>216に納得できない>>214はマ板に逝ってよし
>>220
っていうか、口で伝えるなら自分でやれば半分以下の時間で終わるぞ
224214:02/05/23 18:49
  ノ     ∧     /) ∧
  彡  ノW \从/V  W \   ミ
  (  ノ        |      ノ \)
  ∩V      、、 |       >V7
  (eLL/ ̄ ̄\/  L/ ̄ ̄\┘/3)
  (┗(      )⌒(      )┛/
   ~| \__/ |  \__/ |~     / ̄ ̄ ̄ ̄ ̄ ̄
    爻     < |  ;     爻    <更新するなら早くしろ、でなければ帰れ
    ~爻     \_/  _, 爻~      \______
     ~爻__/⌒ ̄ ̄ ̄~~ヽ_ 爻~
     /    ー ̄ ̄\_ ̄\
  _一‘     < ̄ ̄\\\J
<\       ー ̄ ̄ヽ_ヽJ   ̄\_
  \     _ニニニヽ )       ~\
   \  _/⌒|\ ヽ_~~ ~⌒\_
  __/~    V \_|     ~\_
227 :02/05/23 21:08
void (*po[])()={one,two,three,four,five,six,cancel};
scanf("%d",&no);

(*po[no])( haich1);
ってあってますか?ポインタ関数
228デフォルトの名無しさん:02/05/23 21:08
http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
ここの2番目の質問の答えで
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
とかいてあるんですがこれをDOSプロンプトを
開いて打てということでしょうか??
>>228
>BCC32.CFGを作成しなければなりません
230デフォルトの名無しさん:02/05/23 21:21
>>229
作り方を教えてください。
232デフォルトの名無しさん:02/05/23 21:35
>>231
自分で作ってみたいんでですけどむずかしいですか?
>>232
メモ帳でもつかえ。
DOSプロンプトがお気に入りなら、
一.DOS プロンプトを開いて
二..BCC をインストールしたディレクトリに移動し
三.以下のように打ち込む。ctrl+z で終了だ。
>copy con BCC32.CFG
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
classの中で構造体の初期化は出来ないんですか?
struct a{ int x,y;};
class b {
struct a c={1,2};
};
235 :02/05/23 22:01
12345678秒などというのを
〜年〜日〜時〜分〜秒または
〜y〜d〜h〜m〜sと変換するようなうまい関数はないでしょうか?
なければ、modでちくちくやるしかないんでしょうかね?
>>234
スレ違いだけど一応答えておきます。
struct a {
int x, y;
a(int i, int j) { x = i; y = j; }
};

class b {
struct a aa;
b() : aa(1, 2) {}
};
以降の議論はC++相談室で。
>>235
localtime()
239デフォルトの名無しさん:02/05/23 22:21
>>233
メモ帳使ったとしたらどうやって作るの??
面倒かもしれないけど教えてくれたらうれしいです。
240デフォルトの名無しさん:02/05/23 22:23
>>239
説明書がついているはずだぞ?
>>239
すまん。白状するとメモ帳の使い方を知らんのだよ。
秀丸なら目を瞑ってでも使えるのだがな。
>>241
起動してみればわかるだろが。
Windowsの標準的なUIだし、機能少ないし。
・・・
>>242
ネ(中略)マジレ(中略)ルイ!
ネ(カ)マ ジレ(ンマ サクラギ)ルイ?
241はネタに見えない。
239を小ばかにしてるネタにしか見えない。
 ネタ VS マジ
カーン
    (゚д゚)
    ( ×) ファイッ
    / >
ネタに一票。
つーか厨房板でやれ。
239 がネタだろ…
両方ネタの罠
つまらんネタはうざいな。
253デフォルトの名無しさん:02/05/23 22:51
failed.
239はネタ(or 天然)
241はネタ
242はなんつーか、なんか通じない人
なんか242がかわいそう・・・・
しかたないけどね。
>>255 やさしいひと・・・ ハァハァ
257デフォルトの名無しさん:02/05/23 23:20
>>239ですけどネタじゃないです。
天然と思われてます??
まじでわかりません。
ファイル名がBCC3
拡張子が.cfgのファイルを作るってことでしょうか?
ネタじゃなければ天然だ
259デフォルトの名無しさん:02/05/23 23:24
>>257
メモ帳を起動して、
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
を入力する。
BCC32.CFGという名前をつけて保存する。
場所はBinだったかな?
260デフォルトの名無しさん:02/05/23 23:31
>>258さんくす!
>>258
>copy con BCC32.CFG
の意味とかあんまり知らないもので。。。
239 はプログラミングやる前に Windows の使い方を勉強してくれ。
262デフォルトの名無しさん:02/05/23 23:34
>>260は以下の間違い。
>>259さんくす!
>>258
>copy con BCC32.CFG
の意味とかあんまり知らないもので。。。
263デフォルトの名無しさん:02/05/23 23:35
うえからC系5スレがならんでる・・・
がんがれ
265デフォルトの名無しさん:02/05/23 23:37
>>261
"cd c:\"
"mkdir bcc"
"cd bcc"
とか操作をよく理解してないです。
それらを勉強するのにいいサイト若しくは書籍ないですか?
>>265
MS-DOSって書かれた書籍まだ書店にいくつか残ってるから買って。
DOSを勉強してがんがれ
誰かBCCのインストーラとIDEもどき作る!
\300程度のシェアウェアなら案外売れるかも。
>>265
コンパイルだけなら勉強するまでもなかろうよ。
必要なコマンドは10個もないだろ。
>>268
IDEじゃなかったかもしれんが、CPadは似たようなことができなかったか?
271デフォルトの名無しさん:02/05/23 23:39
>>269
どんなの??
10こ書いてくれません?
272デフォルトの名無しさん:02/05/23 23:40
>>268
IDEって??
273デフォルトの名無しさん:02/05/23 23:40
>>266
ありがとう。探してみます。
>>271
cd
dir
del
ren
bcc32
どーしてもBCC32.cfg.txtになります、たすけてください。
>>274
autoexec.batの編集とかは?
正直、239のレベルでは、bccをインスコできても、
まともにつかえるとも思えない。
知識の無い香具師は、金で購え。
VC、BCB買え。本買え。
278デフォルトの名無しさん:02/05/23 23:42
ilink32.cfg:
-L"c:\Borland\Bcc55\lib"
これも必要?
>>275
笑えない。
280デフォルトの名無しさん:02/05/23 23:42
>>275
名前を変えて

もうネタとしか思えないんだけど(笑)
>>275
ren BCC32.cfg.txt BCC32.cfg
>>276
メモ帳につっこんで直接書き換える。
>>277
同意。

技術、時間、金

どれか一つがあればPC道は成せる。
284デフォルトの名無しさん:02/05/23 23:43
>>274
意味も教えてやれ。
285デフォルトの名無しさん:02/05/23 23:44
>>277
勉強しますよ。
単にDOSの命令を知らなかっただけです。
286デフォルトの名無しさん:02/05/23 23:45
プリコンパイルヘッダとは、
> プリコンパイルヘッダーファイルは,ディスクにあるシンボルテーブルのイメージをファイルに格納しておき,
> 後でそのファイルをディスクから読み込むだけで済むので,すべてのヘッダーファイルを再び解析する必要がなく,
> コンパイル速度が著しく向上します。
> 特に複数のソースファイルの中に同じヘッダーファイルが入っているような場合は,
> シンボルテーブルをディスクから直接読み込む方が,ヘッダーファイルのテキストを解析するよりはるかに高速です。
(C++Builderのヘルプより)
だそうです。
どうするかと言うと、bcc32.cfgの後ろに
-H
-Hs
を追加します。
-Hsは-Hcでもいいのですが、-Hsだと-Hcほどメモリを使用しないらしいです。
で、bcc32.cfgはこうなります。

bcc32.cfg:
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
-H
-Hs
cd /?
dir /?
del /?
ren /?
bcc32 /?
>>287
ヘルプを見ろってことか。
289デフォルトの名無しさん:02/05/23 23:47
>>283
>>277
お前はその三つのどれがあったのだ?
>>275
保存するときにファイル名を "" で囲め。
>>289
俺?多分時間。

時間があれば試行錯誤によって技術力は向上する(効率は知らんが)。
技術があれば効率が上がり時間を有効利用できる。

で、金が何を生み出すかと言えば・・・俺にはわからない。
逆に金なんてない方が人間工夫する。
レベル云々言うのはやめろよー。勉強すればいいんだから。
>>292
に、しても分相応って言葉がある。
294デフォルトの名無しさん:02/05/23 23:53
>>292
まぁな。239がまともにbccをまともに使えるようになるかどうかわは
わからん。まともに使えると思えないといった277の気持ちもわかるが。
295デフォルトの名無しさん:02/05/23 23:54
>>293
お前はBCCインストールするとき全て
失敗せずにわからないとこもなくできたのか?
>>294
やる気と根気があればなんとかなると思うよ。
俺はできたよ
298デフォルトの名無しさん:02/05/23 23:56
>>297
cd
dir
del
ren
bcc32
の意味とかわかってたんだろ?
delとrenは今でも知らない
300デフォルトの名無しさん:02/05/23 23:59
>>298
メモ帳を起動して、
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib
を入力する。
BCC32.CFGという名前をつけて保存する。
この作業は難しくなかった?っていうかどこにも
かいてなかったでしょ。俺もインストールするとき
まったくわからんかった。
>>298
まぁ、質問した彼も勉強する姿勢はしっかり持ってるんだから許してやろう。
コマンドの使い方を聞くんじゃなくて参考文献を聞いてくるんだ。PCQAのアフォより遙かにまし。
まぁ、彼にはWindowsとDOSの基礎からきっちり学んでもらうとして。w
>>300
readme.txtは通常、説明書ファイルです。
303デフォルトの名無しさん:02/05/24 00:01
>>300
あれ?確か書かれていたような気がするよ?
304!298:02/05/24 00:03
>>300
ヘルプに書いてなかったか?
そうか、ついに、readmeをよむという風習すら失われたかのか……
>>303
ちゃんと書いてあるよ。
307デフォルトの名無しさん:02/05/24 00:06
>>305
readmeでなくhelp
308306:02/05/24 00:06
うお、誤爆・・・
309デフォルトの名無しさん:02/05/24 00:09
-IC:\Borland\Bcc55\Include
-LC:\Borland\Bcc55\Lib

じゃなくて

-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"

どっちが正しい?
>>309
スペースを入れろ。
>>309
パスにスペースはいるなら下
入らないなら従来バージョンの上でも動く。

ってとこじゃないの?
312デフォルトの名無しさん:02/05/24 00:13
初期化されたstatic変数がメモリ上でROMに配置される処理系があったとします。
はぁ
314デフォルトの名無しさん:02/05/24 00:14
現実にはありません。それを踏まえて聞いて下さい。
315デフォルトの名無しさん:02/05/24 00:15
bcc32.cfg ファイル
ilink32.cfg ファイルはなぜダウンロードしたファイルにのなかになくて
自分で作らないといけないのでしょうか??
316デフォルトの名無しさん:02/05/24 00:16
>>315
BCCをインストールする場所によって中身が変わるから。
>>315
使いたいライブラリによって…以下同文
318デフォルトの名無しさん:02/05/24 00:21
インストール先を決めた時にファイルを作成するということはできないんでしょうか??
>>318
そういうツールをつけてもいいかもね。
インストール後、ダブルクリックでOKという感じで。
>>318
(インストーラがあれば)できるだろうがそうはなっていない。
現実を見なさい。営利団体のフリーのソフトに何を期待している?
>>320
手軽さ。
と言ってみたい。

それなら買えってことになるんだけど。
ターゲットが、お勉強する人の為ではなく
他のユーザーの引き抜きだから
インストールしても、ヘルプも見ない奴には使わせねーぞ
って言う某社の意気込み
readme読みなさい。

2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib

ちゃんと書いてあるよ。この説明が初心者にわかりやすいかどうかは別にしてもだ。
325デフォルトの名無しさん:02/05/24 00:49
>>318
bcc のインストーラーは Cマガジン についてなかったか?
>>325
>>231 で紹介した。その返事が >>232 だった。
327デフォルトの名無しさん:02/05/24 01:28
>>326
自分で作るなんてえらいじゃないかー。
>>231の使ったからいまの議論がどうも理解できん。
328初心者:02/05/24 01:33
コンパイルしたときに、
warning:unknown escape sequence: '\' followed by char code 0x48
っていうエラーがでるんですが、何がいけないのでしょう。
この行には  printf("番号の順にソートする\n");
とだけしか書いてないんですが・・
>>328
\nのnが全角になっていたりしない?
>>328
コンパイラは何?
gccだとSJISで書かれた漢字では通らん文字があるぞ。
EUCで上記を書き直すか、\をどっかの2バイト文字の後に入れる。
332?:02/05/24 01:50
\番号の順にソートする\n
or
番\の順にソートする\n
333初心者:02/05/24 01:57
>>329
なってませんでした
>>330
コンパイラはgccです
>>331
なるほど。確かめてみます。
334デフォルトの名無しさん:02/05/24 02:00
 ママ〜 やったよ〜ム板のチンカスどもに勝ったよ〜
 \__  ______
      ∨    ∧_∧
           " ,  、 ミ   / ̄ ̄ ̄ ̄ ̄
            ゝ∀ く  < あらあら
           ∧_∧  |   \_____
        三  (    とノ
      三   /   つ |
     三  _ ( _  /|  |
        (_ソ(_ソ(_ )
335初心者:02/05/24 02:01
ちなみに、今構造体をソートするところで手がとまってます。
うーん。。どうやるんだろ・・
比較の方法でいこうと思うんですが、値をいれかえていくとき、
たとえばkou[1]って構造体の中身とkou[2]って中身を入れ替えたいときって、
もうひとつ記憶するやつがいりますよね?tempとか適当において。
その型っていうのは何なんだろう・・
int じゃないし、char でもない・・・ う〜ん
336デフォルトの名無しさん:02/05/24 02:06
便乗ですが、LinuxのgccでSJISでも「表示」とかの文字が問題なく
コンパイルできるようにするにはどうしたらいいんでしょう?

けっこう頑張って調べたのですが挫折しました。
>>335
struct HOGE {
 int a;
 char c;
} hoge;

として
struct HOGE temp;
でコピーできる。
338初心者:02/05/24 02:19
>>337
なるほど!!
あぁ、腑におちた時って快感。。
>>328
0x48って'H'だね。\Hって文字の並びがその行のどこかにあるね。
340初心者:02/05/24 02:43
ううん・・ 構造体のソート、
temp = kou[i];
kou[i]= kou[j];
kou[j]= temp;
じゃまずいのかな・・ tempの中身もkouと同じ型を同じ分だけ揃えてるし・・
imcompatible types in assignment って相変わらずいわれてる・・

>>339
実は、隠れてるのか!あっちゃ、まずいんですね。
341 :02/05/24 02:51
struct foo { ... };
struct foo kou[???];
struct hoge { ... };
struct hoge temp;
ってしているだろ。

struct hoge { ... };
struct hoge kou[???];
struct hoge temp;
ってするんだよ。
>>340
同じ型を揃えてる・・・ってことは
struct {
} temp;
struct {
} kou[10];
とやってる?
struct KOU {
} kou[10];
struct KOU temp;
とやるんだよ。
343342:02/05/24 02:53
がぁ・・・かぶったソマソ
344341:02/05/24 02:59
してる/やってる?→やる
仲良くしよう。
345デフォルトの名無しさん:02/05/24 03:49
gccとBorland C++の違いって何?
トヨタとニッサンの違いがわからんか?
なら人間やめな(省略)
gcc=日本語対応してない(ダメ文字がある)、C99のかなりの機能が使える
トヨタもニッサンも、ほとんどの国の人間にとっては
単なる、メイドインジャパン だろ?
それが分からない位で人間やめてたら(省略)
349336:02/05/24 04:35
>>336
どなたか、gccでのSJISの通し方、ご存知でないですか?
nkf で euc にして通したらいい
けど、そもそもコンソールで sjis/eucj 読めるの?
351336:02/05/24 05:13
>>350
nkfってことはいったんソースを全部書き換える必要があるのでしょうか?
makefileでさくっと処理する書き方はありますか?

Windows上でソースの開発をしてるのでLinuxでは
直接読めなくての構わないのです。
Linux上で表示する場合は、内部でEUCに変換するコードをかましてます。
makeってコンパイラと全く関係ない処理も出来たりして
353336:02/05/24 05:47
>>352
なるほろ・・・。
ワーク用のディレクトリを作って、そこでまとめて変換して
コンパイルすれば良さそうですね。
EUC変換コードを外さないと・・・。

gcc、SJIS対応オプションとか追加してくれないかな・・・。
djgpp(MSDOS用gcc)には SJIS パッチ作った日本人がいたよ。
gcc 2.95 だから同じバージョンならそのパッチあてたら通るように
なるかもね。gcc を make しなきゃならんが。。
それとも誰かが作っているかもしれない。漏れは知らないけど。。
355デフォルトの名無しさん:02/05/24 06:35
みなさん、なぜそんなに詳しいのですか??
仕事で使うからですか?
趣味ですか?
学生ですか?
>>355
例えば中2からプログラムを始めるとする。
大学卒業時にはキャリア9年の日曜プログラマの誕生だ。
357デフォルトの名無しさん:02/05/24 07:16
>>312の続きです

 ただし、初期化なしで宣言された場合はRAMに配置されます。その場
合、初期値は自動的にゼロになることが保証されています。
 ROMに配置されることを回避しつつ、これを任意の値に初期化する
ためにはどのようにすればよいでしょうか?
358デフォルトの名無しさん:02/05/24 07:17
こんな感じかな?
.SUFFIXES .sjis
.sjis.c:
nkf -e < $> > $@
a.c:
>>357
bss
360336:02/05/24 08:13
>>354
パッチあててgccをmakeですか・・・。
DJGPPの2.7.2用ならここにあるようでした。
http://www.st.rim.or.jp/~jack/djgpp-jp.html
gccはこれかな?ただうちのは2.96なので合わないかも。
http://www2.airnet.ne.jp/pak04955/patch.htm

>>358
nkf -e < $> > $@
makefile初心者なものでこの意味を勉強してみます。
361デフォルトの名無しさん:02/05/24 10:27
ともっち!!
362デフォルトの名無しさん:02/05/24 10:34
初歩的な質問ですいませんが、教えてください。

連番のファイル名を作りたいのです。例えばfile001.txt,file002.txt,,,のような。
このときに便利のいい関数あるいは作り方はあるのでしょうか?

sprintf(filename,"file%3d.txt",i);
のような書き方では「file 1.txt」になりますよね。。。
363デフォルトの名無しさん:02/05/24 10:36
うーむ。俺も知らんなぁ。
数値から文字列にする時の効率のいい処理ってあるのかしら....
364デフォルトの名無しさん:02/05/24 10:36
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < おなにしますた
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /     
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /ω\\     ( ´Д`) < しますた
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) ボクモ男デス     
    / ./     ( ヽ、     / /ω> )     ゚(  )−          
   (  _)      \__つ  (_)  \_つ     /ω>     
file%03d
"file%03d.txt" かな?
ディレクトリとファイルの判別するにはどうしたらいいのですか?
関数とかあれば教えてください。
368362:02/05/24 11:24
> 365,366

ありがとうございます、その通りです。
素早いレスに感謝!
369デフォルトの名無しさん:02/05/24 12:22
へぇ、そんなコードで解決できるんだ。
今夜早速やってみよっと!
370デフォルトの名無しさん:02/05/24 12:34
任意のファイル内に指定した文字列があるかどうか判定するには
どうすれば良いでしょうか?
grep
>>370
はっきり言って標準ライブラリないの関数の機能くらい覚えてくれ。
sting.hなんてただでさえ使うこと多いんだから。最近は少ないか。

strstr
>>367
> ディレクトリとファイルの判別するにはどうしたらいいのですか?
残念ながらCの標準関数にはディレクトリをどうにかする関数はない。
ディレクトリの配下を調べるためにも非標準の関数をつかわなければならない。

unixの場合、(winは知らん)
stat関数でファイルの状態を取得し、
S_ISREG()、S_ISDIR()マクロでファイルかディレクトリかを判定できる。
>>372
多いだろ(w
>>373
Win(っていうかDOS)はFindFirstとFindNextにフラグ与えればよかったと思う。
ありそうな関数が標準ライブラリにない場合は、
大抵は標準関数を少し工夫して使うと希望通りに動作するね。
定番はitoaの代わりにsprintfを使うことだね。
>>374
いや、みんなCStringとかさ・・・。C++だけど。
って言うか可変長文字列犯罪的に便利です。
法規制すべきです。w
>>375
GetFileAttributesで。
>>367
標準ライブラリにはない。OS依存。
WinならGetFileAttributes(filename)&FILE_ATTRIBUTE_DIRECTORY
Unixならstat(filename, &stat_buf), S_ISDIR(stat_buf.st_mode)
>って言うか可変長文字列犯罪的に便利です。
いつの時代の人間ですか?
381NOT 377:02/05/24 13:05
>>380
あなたの意見を聞きたい。
>>380
標準ライブラリだけで生きてたころ・・・。
今でもmalloc,realloc使いまくりの俺はどうなるんだろ・・・・
384デフォルトの名無しさん:02/05/24 13:06
みなさん、学生?
>>384
はい。
雇ってください。
386デフォルトの名無しさん:02/05/24 13:13
>>385
なぜCに詳しいんですか?独学ですか?
>384
今日、中間テストで分からなかったので、適当に解答欄をCソースで埋めておきました

こんな漏れでも、PGできますか?
>>386
学校で一通り習った後、独学で。
389デフォルトの名無しさん:02/05/24 13:22
>>387
高校生かよ、俺が高校生の時代パソコンなんて触らせてもらえなかった。
というかパソコンなんて家になかった。
390デフォルトの名無しさん:02/05/24 13:22
>>388
大学?
>>390
専門学校
392デフォルトの名無しさん:02/05/24 13:33
>389
家にPCなかったら、ちとキツいなぁ
張り切ってC勉強してきます。えっへん
>>392
むかつくのでタイーホ
>>392
まず、紙のキーボードで#include1000回。
stdio.hの書き取り100回&丸暗記。
それを一週間続ければPCを使わせてやろう。
精進せぇよ。
>>394
VC++6.0付属のstdio.hの中身を丸暗記してきます!!
396デフォルトの名無しさん:02/05/24 13:48
私は女性の体の仕組みを詳しく丸暗記できるくらいまで調べてきます。
397デフォルトの名無しさん:02/05/24 13:49
C言語とはちと内容が違うが、8進数ってどんなプログラムに
使われているんですか?
ふと気になったもので・・・
>394
stdio.h の丸暗記・・・
>>379
UNIXのファイルシステムのpermissionだ。
400デフォルトの名無しさん:02/05/24 13:52
ディレクトリの内容調べるプログラム作ってるんですけど
フォルダの中にファイルがいくつあるか分からないじゃないですか?
んで、char* pFile[1000];とかやっちゃうと1000個までしか調べられませんよね。

いくつあるか分からない場合、その場に応じて拡張?できるような変数の確保の仕方ってどうやるんですか?
>>397

UNIXシステムコールのopen関数のフラグとか。

#define O_RDONLY 01
#define O_WRONLY 010
etc
>>400
malloc,calloc,realloc
char *pFile[1000]
凄いなぁ
404デフォルトの名無しさん:02/05/24 13:57
>>401
どうもありがとうござんす。
>>404
誤爆しているけど、>>399にも言えよ。
406デフォルトの名無しさん:02/05/24 14:07
文字列を比較する時に、比較対象が複数ある場合の効率良い比較方法ありませんか?

例を挙げると

char word[] = "apple";
BOOL flag = FALSE;

if (strcmp(word, "apple") == 0) {
 flag = TRUE;
else if (strcmp(word, "orange") ==0) {
 flag = TRUE;
else if (strcmp(word, "lemon") ==0) {
 flag = TRUE;
}

この場合、判定が3つだからまだ良いですけど、判定対象が100個とかあった場合に
if文を100個連ねるのはスマートじゃない気がします。
何か良い方法は無いでしょうか?
>>406
system("awk 〜 >a.txt");
fp = fopen("a.txt","r");

ごめん。
>>406
並列でやる方法も考えればあるけどバカらしい。
>>406
ステートマップを作るか、ツリーを作る
どっちにしろ死ぬほど面倒。
lex
比較の対象になる文字列をテーブルにしておくのは駄目なのかな。
>>406

int main()
{
char *keywordlist={"aaa","bbbbb","cc"};

if(lookup("bbbbb",keywordlist,sizeof keywordlist/sizeof keywordlist[0]))
printf("あった\n");
else
printf("なかった\n");
return 0;
}

int lookup(const char *str,char *list[],size_t size)
{
int i;
for(i=0;i<size;i++)
if(strcmp(str,list[i])==0) return 1;

return 0;
}
>>412
ちょっとの工夫で一気にシンプルだね。
戻り値は何個目の項目が該当するか返したほうがいいかも。
結局ifで判定する羽目に・・・w
>>413
じゃあ、return 0;return i;にして、return 0をreturn -1に。
呼び出し側の条件式も変えないと・・・
415406:02/05/24 14:22
>>407
え?ちょっとよく分かりません。すいません。

>>408-409
やはり、if文100個の方がマシでしょうか?

>>411
テーブルというのは、
char *word[] = { "apple","orange","lemon",・・・・・"banana" }
みたいに比較対象のデータを持つという意味ですか?
これでループでまわして判定するんですよね?
見た目は分かりやすそうですが、手間は同じような感じになりますね。
>>415
ん?実行スピードはほとんど変わらないかもしれないけど、
手間は大幅に減るだろ。
>412
char *keywordlist={"aaa","bbbbb","cc"};
*keywordlist[]。一応つっこみ
>>411 そうです、>>412さんのと同じです。
対象が何万もあって、更に何回も調べるようなら、線形探索は不利だな。
qsort()とbsearch()を組み合わせるとよいかも。
420406:02/05/24 14:25
あ、レス書いてる間に>>412さんがテーブルのプログラム書いてくれましたね。
やはりそれだと見た目は非常にすっきりしてますね。
結局はif文判定と同じですけど。
ループか、ループ展開の差しかないかな、結局。
>>417
あ、全然気づかなかった(汗
>>420
だって、結局総当り。

例えば工夫してデータ[1][1],データ[2][1],データ[3][1]・・・データ[1][2],データ[2][2],データ[3][2],・・・
の順位比較して該当しなくなったものから検索対象から外していく。とか。

でも、そこまでする必要があるのかは疑問。
やっぱり最強の二分探索だろ。
テーブルにあらかじめ整列して入れておけばいいんだし。
424デフォルトの名無しさん:02/05/24 14:36
二分探索が最強なら最弱は何ですか?
2分だとO(n log n)だけどツリーだとO(n)だ
>>424
バカサーチ
以前ニフティのどこかのフォーラムで最遅、最弱のアルゴリズムを
考えるっていうスレッドがあったな。
428406:02/05/24 14:39
>>416
あ、手間という意味をちょっと違う意味で書いてしまいました。
人間が書く時は手間は減りますね。
if文を処理するPC上の手間という意味で使ってました。

>>419
>>423
今の私のレベルじゃちょっと実装方法がよく分からないので、勉強してみますね。

>>422
そうですね。とりあえず、テーブルにデータを持ってループさせるやり方で
やってみることにします。
その後、>>419さんや>>423さんの方法を考えてみたいと思います。
>>428
qsortとbsearchはCの標準関数。自分で実装する必要はない。
そのアルゴリズムを勉強することはよいことだけど。
ていうかね、100子や1000固定度ならリニアサーチで問題ない。
圧縮とかそういうんでなければあんまり気にする必要はない
>>430
俺もそう思うんだけどね、やけに効率にこだわるから・・・・
結論

やって遅かったら悩め。
>>432
try&errorカコワルー
と言ってみるテスツ
>>433
金魚をバズーカ砲で攻撃するよりはスマートかと。
戦車でイモほり、ってのもあったな。ナツカスィ。
>>434
毒物でもなめてみて死んでみてください

二分木以外にもハッシュ表とかTrieとかいろいろあると思うけれども。
メモリに収まらないくらいでかくなるならB木とか。
今回の用途ならハッシュ表が一番適している気がする。

メモリ容量に糸目をつけないならTrieが最も速い。
>>436
PCのいいところはちょっと位失敗しても失うものは電気代くらいなところです。
1000個の文字列をリニアサーチして気にならんのか…
2分木より100倍、ハッシュと比べるとそれ以上遅いだろうに。

まあ、用途によっては気にならんのかな。
コンパイラが100倍おそくなったりスクリプトの実行が100倍
おそくなったら気になるわな。
ハッシュって変換式考えるのめんどくさくない?
文字列からハッシュ表参照する式って。
>>441 いちいち考えんでも先人のをそのまま利用すれば良いと思う。
おれが良く使うのは、
unsigned int h = 0;
while (*str) {
 h = (h << 3) ^ *str++;
}
文字列なら最初の4バイトそのままとかで十分では?
あとはハッシュ表サイズ(素数)で割った余りを取ればよい。
>>439
試してみた。
長さ1024バイトの文字列10240個をリニアサーチしたら700ms弱でした。
どう考えても気にならないでしょう、この程度。
ハッシュ表って別に素数じゃなくても良いと思うんだけどー
ダメなの?
>>444
だから用途によるだろ。
コンパイラやインタプリタで変数名や関数名1個ごとに700msもかかってたら
やってられねーって。

ちょっと工夫すれば(10240個でも)1ms未満にできるわけだから。
447444:02/05/24 16:07
もちろんサーチ対象と先頭1023バイトは一致、最後の1バイトのみ不一致の文字列で計測
448444:02/05/24 16:09
>>446
ちょっと工夫したソース出してください。
どう考えても1023バイト不一致で1ms未満は不可能ですが。
事前にハッシュ表作るのは、勿論×で。
>>445
割る前の数値の作り方が単純だと、素数で割らないと偏る。
均一に分布しないとハッシュの意味がない。

極端な話、文字列の最初の4バイトを1024で割ったら、結局
下位10ビット以外を捨ててることになる。
>>443
最初の4バイトをそのままって意味が分からんけど。
そのままどう使うの?
各アスキーコードを足すの?
>>449
なるほど。
しかし、それだと比較ごとに除算で非効率になるから、
ハッシュ関数を練った方が良いと思う。
静的に決定できるなら、gperfとかで一発だけどね。
>>448
ん?ああ、一回700msじゃなくて全体でか。

検索一回あたりの比較回数では、
リニアサーチ: 最悪10240回、平均5120回
二分探索: 最悪14回、平均13と14の間
ハッシュ: 最悪???回、平均1〜2回

だから、二分探索だと731分の1くらいになる。
>>450
unsigned hash = *str++;
if (*str) hash = (hash << 8) + *str++;
if (*str) hash = (hash << 8) + *str++;
if (*str) hash = (hash << 8) + *str++;
>>449
code = *(int32_t*)&string % 65521;
とかでしょ
>>451
gperfは除算使うんじゃなかったっけ。
つーか、カナーリ複雑な演算だった気がする。
衝突がないから比較は1回ですむけど。
>>454
それ、境界があってないとひどいことになるような。
規格的には未定義動作だよね。
>>455
ああ、説明が悪かったね。
素数で除算するより、シフトで解決した方が早いから
テーブルのサイズは2^nにするべきだと考えていたんで。
勿論、動的の場合。

静的ならgperfで
>>456
unionにしとけばよい。
http://eieweb.yz.yamagata-u.ac.jp/~aito/ADT/hashfunc.html
除算法とは,キーをハッシュ表のサイズで割った余りを使う方法である.キーの値を
K,ハッシュ表のサイズをMとすると,

h(K) = K mod M

となる.ただし除算法には問題があって,表のサイズMが素数でないとあまり良いハ
ッシュ関数にならない.特に,M=2nのときには最悪で,キーの下nビットだけしかハ
ッシュ関数に使われない.

やっぱり式考えるの面倒くさそうだな・・・。
>>442あたりの式を適当に使っておけば良いのかな。
>>447
>もちろんサーチ対象と先頭1023バイトは一致、最後の1バイトのみ不一致
>の文字列
>で計測

つまり文字列の種類はたかだか255個しかない表?
どんな表だ(藁
462デフォルトの名無しさん:02/05/24 16:39
ランダムに並んでいるデータから一回だけ探索するなら線形探索が一番速いよね?
どんなに要素が多くても。
>>461
なぜ煽ってるんだかサッパリ分からないんだけど?
文字列の種類は検索対象1種類、検索文字列1種類
最後の1バイトが違うだけの2種類だ
単純なリニアサーチでもっとも遅くなる状況を作ったんだけど。
最近のUnixならたいていhsearchというハッシュ検索ライブラリが
入ってるからそれ使えばよい。なければソースを持ってくる。

お勉強ならいちから書いても良いけど。
>>462
検索することなんか気にせずランダムに配列に入れちゃったデータなら
そうだろうね。

でも「ランダムにやって来るデータを、あとで1回だけ検索する」なら
どう考えてもハッシュとかの方が速いだろ。

>>463
ふつうそれだと表の大きさは2にしかならんのとちゃう?
467462:02/05/24 16:51
>>465
ああ、入力されるごとに処理できるようならハッシュの方が速いね。
一行ずつ読みとりながらハッシュテーブルに登録するとかね。
>>466
std::vector< std::string > sv(10240, pattern);
これなら表のサイズは10240個だけど。
469デフォルトの名無しさん:02/05/24 17:01
#include <stdio.h>
int main(void);
int main(void)
{
printf( "%d\n",1.1 );
return (0);
}
は間違ったぷろぐらむですけど
実行すると
-1717986918という値が帰ってきます。
なぜですか?
ていうかさ、元ネタ自体がお勉強だったんだし、
リニアサーチのベタ比較で何も問題ないだろ。
そらお勉強でもレスポンスが帰ってくるのに何十秒もかかるなら考えた方が良いが、
>>444で試したような最悪なケースでも1秒以下なんだからそれで良いじゃないか。

それを横から>>439みたいなのが出てきたからややこしくなっただけでさ。
>>469
結果が未定義だから。浮動小数点数を無理矢理intの表現で読むと、
そのように見えると言うこと。
>>469
(int)1.1とやれば思い通りになるかも。
473デフォルトの名無しさん:02/05/24 17:08
>>472
小数点以下は切り下げなんですね。
474デフォルトの名無しさん:02/05/24 17:10
昨日、一昨日Borland C++の設定の仕方を聞いたものなんですけど
やっとCを勉強できる状態になりました。
475デフォルトの名無しさん:02/05/24 17:12
>>474
おめでと

age
476デフォルトの名無しさん:02/05/24 17:54
> ていうかさ、元ネタ自体がお勉強だったんだし、

え。仕事だろ?

> >>444で試したような最悪なケースでも1秒以下なんだからそれで良いじゃ
> ないか。

まああんたはリニアサーチ以外知らなかったんだろうが、「効率の良い方法」
聞いてるやつにそんなの教えるなって。

> それを横から>>439みたいなのが出てきたからややこしくなっただけでさ。

掲示板に横からも後ろからもあるかい(w
477[email protected]:02/05/24 17:57

「高性能ビデオスタビライザー」です↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

店頭販売価格は、13900 円なんですが、
今回だけ、破格の 7700 円に設定して
おります。

購入希望の方は、メールを下さい。

不安な方は、落札をして頂いても
構いません。
>>439=476
まぁ、なんと思っても良いけど。
漏れはひたすら最適化ばかり気にしてる最適化厨は嫌いだから、
この辺にしといてくれや
479デフォルトの名無しさん:02/05/24 18:24
プログラムを強制終了する場合どうすればいいんですか?

ctrl+Z?
Ctrl C
Alt Ctrl Del
2日で480って。。。
>>479
CTL+D
483デフォルトの名無しさん:02/05/24 18:38
#include <stdio.h>
int main(void);
int main(void)
{
int limit;
limit=100;
int a[limit];
return (0);
}
これどこが間違ってるんですか?
> これどこが間違ってるんですか?
基礎が。
485デフォルトの名無しさん:02/05/24 18:41
>>484
あなたの人格もねw
>>484
配列に限界がないところが
ハァ?
>>485
逆ギレしないでくさい。あーくさ。
489デフォルトの名無しさん:02/05/24 18:46
>>488
すまそ。配列のa[]の中に変数を入れたらダメってこと?
次の1には
エラーメッセージの読めないヤシはカエレ!!
を付け足してほしい
>>489
正解。
#define LIMIT 100
#include <stdio.h>
int main(void)
{
  int a[LIMIT];//俺が悪いんじゃない!変数名を適当に決めた>>483の責任だ!
  return 0;
}
493デフォルトの名無しさん:02/05/24 18:50
Cでは関数内での変数宣言は関数の先頭でまとめてやらないといけないんじゃないの?
というか、どうして代入文の後に宣言文があるのですか?
ここCスレ…
かぶった。ケコーン!
496484:02/05/24 18:52
だから基礎が間違ってるって言ったろ!な!な!

なーんつって。
>>496
自分の星に帰れ。
>>494
代入文の後に宣言文があるのはだめなの?
int limit=100;
int a[limit];
のようにコンパイル時にサイズが決まるものはよかったような・・・・

int limit;
limit=100;
int a[limit];
なんてやるのは駄目だと思うけど。
500499:02/05/24 18:56
あ、やっぱりだめだ。
>>499
そうだったんか。
俺、今までmalloc使うものだとばかり思ってたよ。あはははは
c++でconst int x = 100;ならok
Cスレです。
>>501
malloc使うのはサイズが分からないときだけでしょ。
↓がC99なら可変長配列が使えると言い出す。
C++ならできます
C99なら可変長配列が使える
>>504
int limit=100;
int a[limit];
ができるならサイズ計算して動的に確保できるな、っていうボケだごるぁ。
>>505
というかおまえが言ってる
>>508
コンパイラが融通が聞けば、コンパイル時に分かるじゃない。
>>510
互換性が電子の渦の中に消失するという罠
512510:02/05/24 19:03
× 聞けば
○ 利けば
それが出来るのはgccだけ
gccは可変長配列を使っているだけだと思われ。
C99準拠に向けて動き出す前から可変長配列使えたよ<GCC
enum
{
 BUFSIZE = 1024,
 ...
};
char buf[BUFSIZE];
はCでもOK?
>>515
C99のアイディアのかなりの部分はgccから来ていると思われ。

>>516
OK。
>>513
なこたーない。IntelのコンパイラでもSunのccでもDEC(Compaq)のccでも
SGI(Cray)のccでも使える。

(つか、使えないと行列演算ライブラリさえまともに書けない。)
のに、VC++6.0では使えない。
使えなくても困らないけど。
>>519
まあ、行列演算ライブラリをVC6で書いたりはしないだろうな。
>>520
別に可変長配列じゃなくてもヒープに確保すればいいじゃねーかよ
VCで書いた行列演算ライブラリあるし、そんなこと言ってる奴には
一生かかっても使うことも作ることも出来ない。
Sunのコンパイラよりは遙かに賢いしな<VC
行列同士の乗算を素直に書くと、

#define N ...
double a[N][N], b[N][N], c[N][N];

int i, j, k;
for (i = 0; i < N; i++) {
 for (j = 0; j < N; j++) {
  double x = 0.0;
  for (k = 0; k < N; k++) {
   x += b[i][k] * c[k][j];
  }
  a[i][j] = x;
 }
}

となるが、これをライブラリにする(つまりNを可変にする)
には、可変長配列が使えないと今どき番地計算を自分でシコ
シコ書く馬鹿みたいなコードになるか、あるいは効率の悪い
jagged array(1次元配列へのポインタ配列)になる。
>>521
SunのコンパイラとVCをどうやって比べたの?
524デフォルトの名無しさん:02/05/24 21:03
UNIX/C のライブラリを解説している本 or Web Site はありませんか?
教えてください。
ライブラリって標準ライブラリのこと?
どの本でも解説してるでしょ。
>>525
多分、各種POSIX準拠の関数のことだと思う。
>>526
Linuxでも作るんかいな。
去年出たPOSIXって関数がすんごい増えてるけど、
あんなのに準拠したライブラリを持つようなOSは出てくるのかな?

それよりなんでこのスレ、二日で半分以上使ってるわけ??
>>529
POSIXとSingle Unix Specificationを統合したやつだよね。
ほとんど現状追認(+多少のclean up)じゃないの?
>>529
マ板に行かずにネタや雑談する人が増えたから。
>>531
プログラム板とプログラマ板の違いってなに??
ム    マ
人 <=> 技術
ネタ
534デフォルトの名無しさん:02/05/25 01:18
>>533
逆だなぁ〜
SHIFT-JIS <-> EUC <-> UNICODE
の変換をしたんですが、どうするのが一番知的で
かっこいいですか?
なんかのライブラリとかツールを使う
>>534
アホな質問が多いから、そう感じるだけで>>533が正しい
まぁ、そのうち(すでに?)どうなるかは分からんが
538535:02/05/25 01:29
すいません、フリーなライブラリってあるのでしょうか?
探したけど、見つかりませんでした。
539533:02/05/25 01:32
スマソ。ムとマ間違えた。紛らわしいな。
一応分割時の状況とかもわかってたんだけど。

ムギ板/ギ板という略称を申請
>>538
nkf
unicodeには対応していないけど。

で、なんでここで聞く?:-)
541540:02/05/25 01:45
ああ、ライブラリか・・・・
俺のライブラリを使う。非公開。なんてね。

unicode ⊃ sjis,eucj だから完全にスルーな変換はできないよ。
つか、誰でも知ってることですが。。。
ほら、そこらへんは、実体参照とかで。
544デフォルトの名無しさん:02/05/25 10:48
はぁ、今夜も一人で自分のティムポ、いじろっと!
545猫大好き ◆MwneRkSI :02/05/25 11:01
ファイルポインタに関する質問なのですが
CGI などを作るときにファイルの指定はどのようにしたらいいのでしょうか?

例えば、c:\dir\myfile.txt というファイルを開こうと思ったら
fopen("c:\dir\myfile.txt","w") 処理;

でできますか? また、UNIXの場合には
/dir/myfile.txt などのように指定すればいいのでしょうか?
>>545
特に間違ったことは言ってない。
自分を信じて取りあえず試してから来いよ・・・。
fopen("c:\\dir\\myfile.txt","w");
だな。
>>545
とりあえずfopenの戻り値を受け取らないと使えないな。
>>548
ファイル開くだけみたいだから良いんじゃないの...。(モードが "w" だから、
単に空のファイル作るだけとかさ。)

>>545
まず、>>547 の忠告聞いた上で、>>546 に従いな。でも、多分 CGI 故の
ディレクトリ指定ではまりそうだから、そうなったら WebProg 板へ逝け。
550猫大好き ◆MwneRkSI :02/05/25 13:38
わかりました。
ありがとうございました。
551デフォルトの名無しさん:02/05/25 13:38
ともっち!
... fopen("c:\\\\dir\\myfile.txt","w")
じゃないのか?

いずれにせよ、データファイルの位置はインストール時に
指定できるようにしないとしないと困るだろ。シェルスク
リプトやバッチファイルから環境変数で与えるとか。

UnixでもWinでも動くようにするつもりならなおさら。

まあコンパイル時に設定ファイルの絶対パスだけコードに
埋め込んじゃう(あとのパスは設定ファイルに書いとく)と
いうのもアリかもしれんけど。
553デフォルトの名無しさん:02/05/25 13:53
\                  ブロロロロ        ./
  .\       __ _______         ./
    \    /  | :|  佐川急便 |        ./
     .\   |^~~~|-|======| =33   ./
ウーー    \  ̄◎ ̄◎ ̄ ̄ ̄◎ ̄       /            プゥーン
         \                  /
   ヾ  〃   \               /      __
   __,__     .\      ∧∧∧∧∧/     __|  |_( ̄ ̄)
 _|    |_     .\   <        >    |ウンコ:(ニニニニ)ニ =33333
 |━警視庁━| =3   \ <     働 >     ̄◎ ̄◎ ̄
  ̄◎ ̄◎ ̄         <  矛   く  >
――――――――――――< .感  車 >――――――――――――
                  < .!!!!  の >    _凸_
                  <.         >  _|    |_
       ブーーーーン     /∨∨∨∨∨\  |  タクシー   | =3
                 ./          \  ̄◎ ̄◎ ̄
__ 二 _ −      /ワッショイワッショイワッショイ \      ヴィーーン
|□ |_%%_= 二    /                \
|      _| =3 -  /    ヽoノ  ヽoノ ヽoノ    \       O
 ̄◎ ̄◎,, 三  ̄― ./   _  /   /    /      \    ヽ‖/
             /   /_| ノ)  ノ)   ノ)       \   く く
            ./   |祭~| ̄ ̄ ̄ ̄ ̄ ̄| =3      \
            /     ̄◎ ̄ ̄ ̄ ̄◎ ̄           \
>>549
プログラム終了時まで開きっぱなしはよくない。
main()
{
puts("Hello,world!");
}
556デフォルトの名無しさん:02/05/25 14:32
                +      .
          +            .  ,,;;-;_               .
  *           ,,--'''""`ヽ'   -/"~   ̄`ヽ、    +
      .      /       ヾ''"         ~`ヽ   
          /       _,,,...  ヽ;:  /""ヽ    ヽ         .
   +       /       ;'"  "\ l /;:;;:::-'''"ヽ,   i    *
      .   /       /::::::::-'''''"~        ヽ,   .|,
  .        /       |;:"               ヽ   !  .      +
          /       /                 |  |
      *   /       人           "'':;;::''''' i,  |     .
         i        ';  ,,,,;;:::::::'''"   .:   ,,,,,, ヽ ヽ 
         |        |  "  ,,,,,,,,, .::    ;''“”`  |  |  *
   +      |        |:   ;::''“”“~` ::::.      ... |. i      .
          |        i::     .:.:.:.:.::.. :::::  i  .:.::.:.:.| ,;|   
          |       ヽ.   .:.:.:;:;:;:;:::.:.. :::: , _〉 .:.:;:;:.:.:| ,| .   
       +   |        ノ::    ::.:.:.:.:.:.:      :.:.:.:.:.| |,      .
           |       人::::..        ___,,,,,,,,...:;-'  |  |  +
.. *         |     ;:'" `、ヽ      'ヾ,...  ..ノ  /  |        +
           |        ヽ:: \       ::::::   ./  |       .
           |        ::;|::.  `ヽ、_       /'|ヽ./"
    +      ,/.   ::::::::::::;;:::人:.     `'''----―'' .|: ヽ    *
         /;:;:;:;;:;;;;;;;;;;;;/   `ー、          ;-'"  \ー-、
  .         ,.-'"  \       \      ;:-''"    .|   `-:;;,,
         /.      \      "''''-ヽ、,.-''"      |
    ,,..-‐'''""          ヽ    ,.-''"\ : /―――-:;/
ともっちがかわいいと見抜けるようでないと、(ム板を使うのは)難しい。
。・゚・(ノД`)・゚・。
http://www.asahi.com/obituaries/update/0525/002.html
558デフォルトの名無しさん:02/05/25 16:21
ポインタ配列で格納されている値の変数を複数個、returnコードで返すことって出来るでしょうか?

559デフォルトの名無しさん:02/05/25 16:34
>>558
(゚д゚)ハァ?
returnの戻り値は、ひとつだけ。
そこで、ポインタの配列を返すようにみせかけるためには、先頭ポインタを使う。

ポインタの配列の先頭ポインタを返すことで、
受け取ったほうでポインタの配列をたどり、
ポインタ配列のポイントする(指し示す)値を得ることはできる。

このポインタの配列の、先頭のポインタを返す

■→値
■→値
■→値
■→値
■→値
561デフォルトの名無しさん:02/05/25 16:37
>>560
その方法やるときは、格納した要素数の情報も返さないといけないから、
結局は参照渡しが必要なのではないでしょうか?
562デフォルトの名無しさん:02/05/25 16:38
だいたい、一番下の白い四角をどうやって判断するわけよ?
文字列のときはいいかもしれんが、、、、
構造体に配列の先頭と数を入れて返す
564デフォルトの名無しさん:02/05/25 16:40
>>563
うまい!!
STLのpairの真似をする。
566デフォルトの名無しさん:02/05/25 16:43
>>563の考えはうまいかも知れんけど、無意味な
構造体の定義が増えてしまいそうなので、私は発想力のほうは
認めるが、実用性では認めない。

やはり参照渡しを使うべきだと思う。
関数を知っていて、参照渡しを知らないとなるとdqnだ。
> 関数を知っていて、参照渡しを知らないとなるとdqnだ。

関数を知っていて、参照渡しを知らないのはただの初心者。
たいした条件でもないのにそれに沿った答えを出せない奴の負け惜しみカコワルイヨ
568デフォルトの名無しさん:02/05/25 16:56
>>562
ポインタ配列だろ?
NULLを入れればいいじゃないか。
569568:02/05/25 16:58
NULLを途中に含む配列ならだめだけど:-)
570デフォルトの名無しさん:02/05/25 17:13
ポインタ渡して変更してもらえば
>>570
それでは「returnで返す方法」という質問の意図に沿っていません。
そしてそれを一般に「参照渡し」と呼ぶような気がします。
まあ答えは出とるわけだし
>>554
もうその手の話題はやめようよ。
574デフォルトの名無しさん:02/05/25 17:36
↑うるせえバカ
最後のポインタは最初のポインタと同じものを指す、という約束にすれば?
もしかして俺って天才
577デフォルトの名無しさん:02/05/25 17:51
↑氏ねアフォ
578デフォルトの名無しさん:02/05/25 17:54
質問させてください。
mainの中である番号i(int型)を取得し、そのiを別の関数に渡して、その
番号に対応した文字列をmainに返すというプログラムをつくりたいのですが、
int main(void)
{
char day(int);
int i;
printf("曜日コード入力\n"); scanf("%d",&i);
printf("%s\n",day(i));
}
char day(int j)
{
switch(j){
case 1: return ("月曜日");
case 2: return ("火曜日");

〜〜〜中略〜〜〜

default :return ("不正なコードです");
}
}
とし、コンパイルしたところ、case1からdefaultまでの各行に対して
warning: return from incompatible pointer type
と言われました。そこで、
int main(void)
{
char* day(int);//ここを変更
int i;
printf("曜日コード入力\n"); scanf("%d",&i);
printf("%s\n",day(i));
}
char* day(int j)//ここを変更
{
switch(j){
case 1: return ("月曜日");
〜〜〜以下省略〜〜〜

としたところ、エラーもでず実行することも可能でした。これまで関数を
ポインタとして定義する(と言う表現でいいのかどうかわかりませんが)
ということをした事が無いのでなにか違和感があるのですが、こういう
やり方で何か問題はありますか?
あるいはもっと他に一般的なやり方があるのでしょうか?
ちなみにコンパイラはcygwinのgcc2.95.3-5を使いました。
>>575
空の配列を表現できない。
複数の要素が同じポインタを指す可能性のある配列には使えない。

よって、>>576 は、単なるバカと決定しました。
580デフォルトの名無しさん:02/05/25 17:55
char day(int);

これは何?
char (*day)(int);ならわかるけど。
581580:02/05/25 17:58
>>578
char *day(int);
int型の値を受け取り、char型へのポインタを返す関数
定数を返す時は関数の戻り型に const を付けよう。
それでいい。
文字列を返したい場合、関数の戻り値は
char *
だ。
文字列は、文字の配列だから、先頭ポインタで返す。
"STR"は、[S],[T],[R],[\0]という配列のことだから、
[\0]を出力関数が見つけて、そこで出力が終わる。
>>578
> 関数をポインタとして定義する
と言う考え方が間違い。たんに、「char へのポインタを返す関数」を定義してる
だけ。通常これで問題ない。
585581:02/05/25 18:00
あ、関数へのポインタじゃなくて関数のプロトタイプか。
関数内に書くとは珍しい・・・
>>582
うん ? 単なる標語か ? 今回の話には関係ないと思うが...。
それとも文字列リテラルだから const char *day() にしろと言いたい
のか ?
>>579
つーことは、そのどっちもとっくに気付いているおれはやっぱり天才
>>586
だろうな。
戻り値には普通つけないと思うが・・・・
普通つけない→付けたほうがいい時でも、サボるやつが多い
>>587
普通すぐ気付くし、多分みんなとっくに気付いていると思って書き込ま
ない。うれしそうに書き込むのは、バカだけ。
>>587
そう、チミは天才、よって、チミはもうここで学ぶものは無いから、来なくていいよ。
578です。
間違ってはいないということですね。
constについてはよく知らないのでまた勉強しておきます。
どうもありがとうございました。
const -> constant
594デフォルトの名無しさん:02/05/25 18:33

595デフォルトの名無しさん:02/05/25 18:39
答えを出すことじゃなくて、人の意見を批判することのほうに
考えが向いてしまっている奴は、低レベルな奴だと思う。
それが2ch流。
>>595
じゃあ君は低レベルなんだ。
>>595
ボクみたいな、人の意見に批判すら出来ない程度のヤシはどうですか?
もちろん答えなんて出せません
599デフォルトの名無しさん:02/05/25 18:45
>>597
オマエモナ
>>595
自分の発見した方法の問題点について考察することなしに、
天才を気取る奴は低レベルな奴だと思う。
それと、ほとんどが批判でなく指摘。
「批判する奴は低レベル」と中傷をぶちかます奴はなんと定義されますか?
また、クラスとして使えますか?
602デフォルトの名無しさん:02/05/25 18:48
ふーん。
中傷と抽象がかかってる?
漏前らなんかみんなファックユーじゃ
>>596,597
 お前ら、558への解答は、できないわけありませんよね?
606デフォルトの名無しさん:02/05/25 18:49
>>558
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  うざいぞ!!氏ね!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
もしかして俺って天才くんの話でないのか
608デフォルトの名無しさん:02/05/25 18:51
---------------------------終了---------------------------------
(´ー`)y-~~~ほざけ
 (_  ̄ ( 0 0 ) ̄_) y-~~~ ほざけ
僕は営業だけど、いつも優秀な外注のソフト屋さんに接してるけど、ここの雰囲気、意外だなあ。
いくら稚拙な解答でも、ケチだけつけて、「当たり前だから」とか「分かってたから」書かなかったとか後になって言っておしまい。って、なんだなあ。
きっと頭のいいひとたちなんだろう(僕が見たソフト屋さんはみんなそうでした)から、よいよい解を与える努力をすればいいのに。
糞営業の分際でなにほざいてんだ(´ー`)y-~~~
613デフォルトの名無しさん:02/05/25 19:00
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < >>611うるせー馬鹿!
          /,  /   \_____________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
       /  /~\ \
       /  /   >  )
     / ノ    / /
    / /   .  / ./.    (゚д゚) <バカ
    / ./     ( ヽ、    ゚(  )−
   (  _)      \__つ   / >
>>611
みんなその辺は心得ていて、

「論拠無き発言はネタ」

とフィルタリングしてる。
たまにウブなのかアフォなのかしらんが騒ぐ奴が居るが。
615デフォルトの名無しさん:02/05/25 19:02
>>614
お ま え は ば か だ !
まあまあ、>>595 もなんか書いてみたかったんだよ。許してやってくれ。
>>614
 そうですか。世間知らずなソフト屋さんも若干名ここにはいらっしゃるということですね。残念だけど僕もフィルタリング(わら)の技術を磨こうと思います。
 じゃあROMに戻ります。失礼しました。
618始めて1週間・・:02/05/25 19:24
あの質問なんですが下のプログラムはなぜちゃんと動いてくれないのですか?
コンパイラのエラーとかですかね?やっぱり?・・・

#include < stdio.h >
void main()
{
char s[256] = "hello,world";

fprintf(stdin,"%s\n",s);
}
619始めて1週間・・ :02/05/25 19:26
こうでした(^^;
X コンパイラのエラーとかですかね?
○ コンパイラのバグとかですかね?
stdinじゃなくてstdoutではないだろうか。
>>618
fprintf(stdout,"%s\n",s);
>コンパイラのエラーとかですかね?やっぱり?・・・

コンパイルもせずに動いてくれないと言っている

ネタ

面白くない

放置
#include <stdio.h> が正しい。

<と>の横にスペースを入れるとコンパイルエラーになる
処理系があるから、スペースを入れないよう習慣づけるべき。
624始めて1週間・・ :02/05/25 19:29
stdoutってなんですか?
初めて聞きます・・・・(汗
stdoutの代わりに間違ってstdin突っ込んで、コンパイラのバグかよ、おめでてーな
放置って書いて放置されてなかったら恥ずかしいよね
>>624
じゃあ stdin は知ってんのかよ・・・?それの同類だ。調べれ。
#define stdin stdout
ちょとエラー出るけど、我慢しる
>>571
> そしてそれを一般に「参照渡し」と呼ぶような気がします。
イワネーよバカ。
Cに参照渡しがあったらC++いらねー(ってのは嘘だが
>>628
いや、ダメプログラマ・・・。
631始めて1週間・・ :02/05/25 19:41
親切にどうもです(;;)
授業中寝ててstdinもなんなのかよくわからないままやったのが
悪かったのでしょうか・・・
ちょっと本を読んでみます(;;)
>>629
禿同
>631
質問するまえにこれからは、予め本やネット等で調べてからにしようね
今頃・・・ニヤニヤ
禿同?ニヤニヤ
636nero:02/05/25 19:46
ioctl を使って cd-rom から データを取りたいのですが、
トラック越えのデータ取得はデキマスカ?
マルチセッションの cd から検索したいのです。
ioctlなんてものを知ってるなら、
cdda2wavあたりのソースを見るのが早いんでないか?
638 :02/05/25 19:54
639デフォルトの名無しさん:02/05/25 20:14
くだらないやりとりだな。
640教えてほしいです!:02/05/25 20:15
HTMLのことなんですけど、
ページを開くと他にも次々にページがでるようにしたいんですけど
どうやるかわかる人いますか?
いたらおしえてほしいです!お願いします!!!
ブラクラ?
642デフォルトの名無しさん:02/05/25 20:17
>>640
場違い。氏ね!
643デフォルトの名無しさん:02/05/25 20:18
復活させようという気はないのかね?
644デフォルトの名無しさん:02/05/25 20:18
>>640
屑は氏ね
>>640
テーマに沿った板ならオールマルチポストは有効だ。
間違って答えるアフォが居るから。
でも、板違いでそれやったところで痛いだけ。

次はWebProgに行ってバカにされるんだろうな・・・。
646デフォルトの名無しさん:02/05/25 20:20

                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   もうだめぽ…
647デフォルトの名無しさん:02/05/25 20:21
     \         ∧∧    ミ _ ドスッ    .     /
      ..\        (   ,,)┌―─┴┴─――┐ .  .  /
   ∧∧  \      /   つ.もうだめぽ   .  .│   /  
   /⌒ヽ)   \  〜′ /´.└―─┬┬─――┘. /
  i三 ∪     \ ∪ ∪      .││ _ε3 ./  λ...... λ...... λ......
 ○三 |       \         ゛゛'゛'゛    ./
  (/~∪         \    ∧∧∧∧∧. / λ...... λ..... λ......
  三三  もう       \ . <          >
  三    だめぽ     \<     .だ .>    もう
三三   三          . < 予   .め .>     だめぽ
――――――――――――< 感  .す  >――――――――――――
                  < !!!!   れ >
                  <.     の >
                    ∨∨∨∨∨

                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   もうだめぽ…
648デフォルトの名無しさん:02/05/25 20:21
>>640
こんなゴミ野郎と同じ日本人かと思うとものすごく不愉快なんですが。
背中の辺りがぞわぞわします、マジで氏んで欲しい。
649デフォルトの名無しさん:02/05/25 20:22
------------------------終了-------------------------------------
650教えてほしいです!:02/05/25 20:55
>>642
お前が氏ね!FUCK OFF!
わからないからいえないんだろ!
ドアホ!
memcpy()とstrcpy()の違いが分かりません。
void*かchar*の違いだけだと思うのですが、、、
ご教授お願いします。
>>651
memcpy() は、'\0' があってもコピーする。(だから、バイト数が必要)
>>652
あ、、、なるほど。ども、ありがとです
>>651
str*は'\0'より後ろは処理(strcpyならコピー)しない
>>654
どもども、thanxです

勉強のためにmemcpy()を自作したいのですが、(第1,2)引数は何の型にキャストすればよろしいでしょうか?
やはり、const char*でしょうか?
バイト単位だから、char*型かな?
>656
なるほど。。。どもどもthanx、勉強逝ってきます
>>655
第1引数は、const char * じゃまずいだろ。書き込むんだから...。
>658
あ、すいません。ですよね、途中で気付きました(汗
>>655
第一引数(destination)はchar *
第二引数(source)はconst char *じゃないすか。
661デフォルトの名無しさん:02/05/25 21:19
任意のバイト数の型をつくることは不可能ですよね・・・?
配列や構造体ではなくて。
>>660
どもどもthanx。やっとdestの意味が分かりました^^;;
>>662
運命とか思っていたか?
>>663
いえいえ、自爆かと
665memcpy厨:02/05/25 21:29
malloc()って自作できるものなんですか?
>>665
コンパイラだって、OSだって自作は可能
>>665
プログラミング言語Cに作り方のひとつが載っていた。
668665:02/05/25 21:35
>>666
そうだった。。。凄いなC

>>667
マヂっすか。気になりますね。。今度探しときます。情報thanx
>>668
おいおい、>>666 は、「C だけで」と言ってるわけじゃねーぞ。
コンパイラは、いいとして OS を C だけで作るのはちょっと無理かと...。
K&Rにmallocの作り方載ってるだろ。
OS依存にしたくないなら巨大な配列取っとけばよろしい。
お勉強ならそれで十分。
>>669
そうなんすか、、、脳内修正しときます
>>670
K&R持ってない罠。本屋に頼んどきます
関係ないけど、林晴比古さんはダメらしいですね。何故でしょうか?
自分、あれから入ったのですが、、、
お勉強のためのOSモドキ(デバイスは仮想)なら書けるね。
実際そうやってCだけで書かれたOSもあったと思う。
nachosだっけ。CPUから全部エミュレートしてるやつ。

でかいファイルを仮想のディスクにしてファイルシステム
とか書いてみるときっと勉強になると思う。
673デフォルトの名無しさん:02/05/25 22:15
fgetsの説明を見るとファイル終了でNULLを返すとありましたが、
NULが返ってきた後にまたfgetsを読んでも
すべてNULLが返ってくるとしていいんですか?
>>671
K&Rはやめとけもっといい本はいくらでもある
>>671
大きい本屋に行くと Lion's Commentary Unix という本が売ってるはず。
Unix 第 6 版のカーネルのソースコードを整形してコメントをつけたもの。
たった 1 万行程度の アセンブラ(数百行くらい) + C で OS が成り立っている。
内容を理解するのは難しいと思うので
目次を立ち読みしてリッチーカコイイとか思ってくれ。
676673:02/05/25 22:17
fgetsを読んでも->fgetsを呼んでも
>>673
はっきり書いてあるのは見たこと無いけど常識的に
考えてそうだと思う。一度fgetsがNULLを返して、
その後ファイルの最後に書き込んでファイルが大きく
なったらどうかわからんが。
>>672
ファイルシステムっすか。。
一時期ファルダを指定して、そこから最下層までアーカイブ、管理みたいなのは考えたことはあるんですけどねぇ
それすら作ってないですから、、
>>674
忠告thanx。どうもです^^;; でも、一応見て判断してみます
>>675
難しそうですが見てみたいので、探してみます。情報ども。
679673:02/05/25 22:24
>>677
一応自分で試してみると
すべてNULLが帰ってきました。(読み込んでいるファイルはいじってないです)
が、たまたまなのかな?と思いまして。
>>679
fseekとかrewindしてファイルポインタを動かせばEOFは解除されるからNULLじゃなくなるよ。
そーでなけりゃ、ずっとEOF状態のままだから(大体それ以上読み込むデータ無いんだし)NULLを返します。
C言語でpingコマンドを使いたいのですが、どうすれば良いですか?
>>681
system 関数で呼び出すとか。
>>681
ICMPを泣きながらながら実装。
>>683
おもしろい わらった
>>675
>たった 1 万行程度の アセンブラ(数百行くらい) + C
本当は何行なんだ?
>>685
オリジナルが何行だったかは知らないけど、
本のはコメントついて 9800 行ちょい。
もっと短かったんじゃないかな。
687681:02/05/26 00:18
>>682-683
まだまだ勉強不足であることがわかっただけでも儲けものです。
ありがとうございました。
>>681
Win用なら
http://mio.servequake.com/~takky/programs/
の「プログラムパーツの部屋」の「マイクロソフトWinsock用ICMP資料」
が役に立つかも(HPの管理者がwinsock.comのをまとめたもの)。
ていうか、pingとtracerouteのソースそのもの。
689デフォルトの名無しさん:02/05/26 02:26
あるファイルの中に構造体
typedef strcut{
int foo;
} HOGE;
というのがあるとき、このファイルの外から
このHOGEは見えるのですか?
見えないけど、同じ(互換な)定義を書けば使うことはできる。
691689:02/05/26 02:39
>>690
じゃあ、あるファイルだけで使いたい構造体があるときは
そのファイルで普通に定義すればいいんですか?
>>691
そーです。
693689:02/05/26 02:41
>>692
わかりました。ありがとうございます。
694デフォルトの名無しさん:02/05/26 03:41
#include<stdio.h>
#include<stdlib.h>
int main(){
int i;

char a[10];
for(i=0;i<10;i++)
a[i]=' ';

scanf("%s",a);

for(i=0;i<=10;i++){
if (a[i]==' '){
printf("atari");

}
printf("%c\n",a[i]);
printf("%c\n",a[3]);

}
return(0);
}
このプログラムで数字を入力している途中スペースキーをおして、
再び数字を入力した場合、打ち込んだ数字をどうやって全部だすかおしえてください
>>694
質問の意味がよくわかりませーん。
>>694
スペースを押してしまったらバックスペースでやり直せばいいです
697デフォルトの名無しさん:02/05/26 04:42
>>694
for (i=0; i<10; i++) {
  if (a[i] != ' ')
    printf("%c\n", a[i]);
}

C言語勉強して、間のない初心者なのですが・・・
こんなのでしょうか???
>>672
ファイルシステム面白そうです。

仮想デバイスは1ブロック512バイト固定で、
size_t get_size(); //ブロック数を返す
int read_block(int blocknum, char *buf); //1ブロック読む。
int write_block(int blocknum, char *buf); //1ブロック書く。
が使えて、それを使って
open, close, read, write, mkdir, unlink, rename,
rmdir, stat, lseekくらいができれば良いですかねえ?
699デフォルトの名無しさん:02/05/26 05:47
#1〜#256って文字列を作るのに以下のようにすると変になります。
なんで?

char hoge2[3];
char sharp[2];
strcpy( sharp, "#");
for(int i=1;i<256;i++) {
_itoa( i, hoge2, 10);
strcat(sharp,hoge2);
printf("%s ",sharp);
}
これじゃない?
> char sharp[2];
初めから
printf("#%d ", i);
ってやっちゃえば
702699:02/05/26 05:56
char buff[200];
・・・
sprintf(buff,"#%s",hoge2);

てな感じでいけました。徹夜明けなのでぼけーっとしてます。
ありがとう>>700,701
みんな朝早いね。それとも。。。
>>702
まだぼけーっとしてるみたいだが、701の言うようにprintf使えばいいじゃん。
>>703
二日寝て二日起きるんだよ、今日は起きる日
>>705
長寿のおばあちゃんみたいな生活
>>705
負けますた、ワラタ
二年近く夏休みが続いていますが何か?
709デフォルトの名無しさん:02/05/26 07:51
>697


できました。ありがとうございます。
初心者ではじめてまだ2週間で、困ってたんです。
>>698
本来は、OS スレに行くべきだろうが、まあ続かんだろうから...

> size_t get_size(); //ブロック数を返す
> int read_block(int blocknum, char *buf); //1ブロック読む。
> int write_block(int blocknum, char *buf); //1ブロック書く。

何故 get_size() の戻り値は size_t で、read_block(), write_block() の
blocknum は int なのかと...。ついでに、今時なら普通...
int write_block(size_t blocknum, const void *buf);
だと思うぞ。

> open, close, read, write, mkdir, unlink, rename,
> rmdir, stat, lseekくらいができれば良いですかねえ?
mkdir, rmdir をサポートすると言うことは、階層ディレクトリサポートすると
言うことだよね。だったら、chdir/getwd とかもいると思うし、link が無い
なら、unlink なんてわけわかの名前じゃなくて素直に remove (もしくは
delete (C なら良いが、C++ だとバッティングするか...) とか Erase) の方が
良いと思うぞ。あと、ディレクトリの検索関係は、どうするんだ ? ディレクトリ
を直接オープンして、ライブラリで処理と言うことで良いか ?
unlinkを「わけわか」と言っているところで あれ? と思ってしまったが・・・
712710:02/05/26 09:34
あと、ファイルシステムの初期化 (newfs とか) と、オープンできない
ファイルの状態を調べる必要があるなら fstat とかも必要かも...。
C言語で、

int a,b,c;
a=0;
b=0;
b=b++;
c=a++:

ってやったばあい、a,b,c の値はどうなるのでしょうか
>>713
b=b++;
の一行の動作は未定義です。
>714
ばかじゃねーの?
>>714
未定義にも限度があるよな。良く検討した?
これで b=0とかb=100になることはありえねーだろ。 ちったー脳つかえ
717Not 714:02/05/26 11:41
>>716
限度があっても未定義は未定義だろ。
>>715
ばかじゃないよ。
K&R第2版P66嫁。 
719ここミレ:02/05/26 11:46
>>716
未定義という言葉がまずかったのなら、こう言いましょうか。
b=b++; の結果のbは、0か1になりますが、それは処理系依存です。
で、「未定義」の意味はC FAQを参照、っと
ttp://www.catnet.ne.jp/kouno/c_faq/c11.html#33
つーことは「不定」になるのか。この場合。
>>716
そうとは限りませんよ。どんなことが起こっても不思議ではありません。
ttp://www.catnet.ne.jp/kouno/c_faq/c3.html#3
>>720君も>>724を読んでね。
726デフォルトの名無しさん:02/05/26 11:56
b=b++;なんて阿呆なことはやめようよ。ヽ(´ー`)ノ
喧嘩もやめようよ。ヽ(´ー`)ノ
727デフォルトの名無しさん:02/05/26 11:57
プログラマとして不適正な人が多いね・・・
じゃあ実際にコンパイラを作ったとしてだ
b=b++;
を、キミ達ならどうアセンブラに落とすのよ?
不定だからっつって、これをアセンブルして
くれないコンパイラは今の世には無いぜ。

一般的なコンパイラを4つほど試したが
b=0;
b=b++;
は全て b=1 となった。ま、当然だな。
順当に考えれば b=b ; b++; という順に評価するってこと。
誰が作ったってこーなるよ。
>>727
ソースで配布するときに相手にコンパイラを指定するのは馬鹿だろう。
一般的なコンパイラとは何か4つ示してほしいが…
>>727
存在するコンパイラがどうなっているかなんて問題じゃないんだよ。
規格がどうなっているのかが問題なんだよ。
ここは特定のコンパイラ専用のスレッドじゃない。
>>728 >>729
おいおい放置しろよ
オレが君達に言いたいのは、不定だからといって思考を止めるな、ということ。

現実に書けるコードなんだから(書くことの是非は置いといて)
書かれてしまったものについて きちんと動作を検証してみろってことだ。
自分が書いたコードでなくとも、例えば不出来な部下がこういうコードを書き
それが元でトランザクションを破壊された狂ってしまったデータを復旧する
などの事態に陥ったときに これらの事象を理解しうる知恵と知識を持て。
>729
規格を疑え。
だいたいそれなら、コンパイルエラーにするなりなんなりといった
予防処置がコンパイラに取られてしかるべきじゃあないのかね?
>>731
俺だったらその部分だけ書き直すが・・・
>>731
誰も思考は止めていない。
ただ、コンパイラがこうだから…を重視するプログラマーか
仕様を重視するプログラマーかの違い。

はっきりいって、前者の方が駄目だけど、現実多いんだろうなって感じたり
だから放置を覚えろよ親切君
736デフォルトの名無しさん:02/05/26 12:14
x^2-3x+1=0のプログラムを教えてください
>>736
宿題は自分でやれ
main(){ printf("x^2-3x+1=0\n");}
739727:02/05/26 12:15
>>735
いや、馬鹿な奴にはしっかり教えとかないといけないだろ?
誰が作ったってこーなるよ。
>>735
だから放置を覚えろよ自治厨君
(゚∀゚)盛り上がってまいりました!
放置って739のことかと思った。
>>742
一名以外はそう思ってるよ。
>>731
> これらの事象を理解しうる知恵と知識を持て。
そう言う知識をもってたら、やることは...
> きちんと動作を検証してみろってことだ。
では無いだろ。普通 >>733 みたいにするよ。検証したって、コンパイラ変われば
(もっと言うと、ソース変わっただけで) 結果が変わるかもしれないから、無駄だ
よ。

>>732
> 予防処置がコンパイラに取られてしかるべきじゃあないのかね?
まあ、お前らみたいな厨房が増えてきたから、警告ぐらい出してもいいかもね。
でも、コンパイラだけでもどうしようもないケースがあることは覚えておいた
方が良いぞ。
>>732
ししょー、規格を疑ったら
わたしはなにを頼りに生きていきばいいんでしょうか……。
>744
失格

>745
自分を信じろ
747デフォルトの名無しさん:02/05/26 12:28
 ∧_∧   ∧_∧   ∧_∧   ∧_∧      ∧_∧
 ( ・∀・)   ( `ー´)  ( ´∀`)  ( ゚ ∀゚ )    ( ^∀^)
 (    つ┳∪━━∪━∪━━∪━∪━∪━┳⊂     つ
 | | |  ┃ 僕達を信じてプログラム    ┃ | | |
 (__)_) ┻━━━━━━━━━━━━━━┻ (__)_)
>>742
>>739の言うこともあらかた納得はできるけどね。
>規格を疑え。

いや、規格がすべて正しいのです。
規格がそうだと言えば、現実に存在するコンパイラの方が間違いなのです。
最新100レスの中にFreeBSDユーザーはいらっしゃいますか?
>>750
満載だと思われ(w
x^2-3x+1=0を解くプログラムを教えてください
>>744
コンパイラだけでどうしようもないケース ってのも良く考えれば酷い話だよな。
if文のカッコの中の代入にWarningを出すよりも前にやることいっぱいあるよな。
つーかif文の中で変数に代入して何が悪いんだよコンチクショー
赤い帽子の糞犬ならいますが…
755デフォルトの名無しさん:02/05/26 12:34
>>736
意味わかんねーぞ
xと2の排他的論理和はともかく
3xなんてサフィックスはないし
左辺値を示さない式に代入はおかしいし
セミコロンも抜けてんじゃねーかよ

聞きたいことをちゃんと表現してみろよ
これじゃいかにも筋悪そうだぜ、お前
最新100レスの中に相対論否定論者はいらっしゃいますか?
最新100レスの中に裁判好きはいらっしゃいますか?
二次方程式って必ず解けるんだっけ? 虚数って出てきたっけ?
一般解の方程式もう忘れちゃったよ・・・緑チャートどこしまったかなぁ
3 x=x^2+1
x=1/3(x^2+1)
x0=1.00

すいません。聞きたいこともやっぱ理解してないかもしれません。
Cも捨てたもんじゃないね
b = b++;
は「未定義な動作」ですから、何が起きても規格では許されます。

コンパイラが警告を発しても発しなくても
コンパイルが正常に終了してもしなくても
リンカが正常に終了してもしなくても
できあがったファイルが何らかの動作をしてもしなくても
規格通りです。
>>753
>つーかif文の中で変数に代入して何が悪いんだよコンチクショー

そーだねぇ。熟練者は = と == ってあんまし間違わないからねぇ。
それに初心者は警告を見ないという罠。
      ヽ ̄ ゙̄\    _____________________________
       \  ヽ \ /
         ヽ    ゙! < n = n++; でないとノーベル賞を取るのは難しい
          /      | \_____________________________
       /     ,.イ
      ∠___/ :|`ヽ.、
          ノ     '!   \-、
     _,.=''1      ヽ,   `'
      ヽ'" i|       |
         !       |
相対論否定論者?
765デフォルトの名無しさん:02/05/26 12:40
>>759
・2次方程式の解き方
・Cの文法
別々に聞いたほうがよさそう
>>761
そーなの?
未定義のコードって、それを実行すれば結果は未定義だけど、
その部分が if とかで飛ばされたりして実行されない限り、何も起きないものだと思ってた。
>761
そんなコンパイラ誰も都川ねーよ
768デフォルトの名無しさん:02/05/26 12:41
>>762ワラタ
770デフォルトの名無しさん:02/05/26 12:42
>>766
正確には「未定義の動作」だからね。
動作させなければ関係ないはずだよね。
>>720-721
規格で言うところの「未定義」と「処理系依存(処理系定義)」は違う。

後者は処理系が定義してドキュメントしなければならない。定義通り動作しなければ
ならないから、ユーザはその処理系を使う限りにおいてその仕様に依存することが
できる。

前者はその必要がなく、contextやrace condition、最適化オプションなどによって
挙動が変わることも許されるし、極端なことを言えば一部の処理系やアーキテクチャで
コアを吐いたりCPUを停止したりする結果になるとしても規格上は関知しない。
772デフォルトの名無しさん:02/05/26 12:43
>>771
ドキュメント化の必要がない、
というと「未規定」もあるよね。
> 一般的なコンパイラを4つほど試したが
> b=0;
> b=b++;
> は全て b=1 となった。ま、当然だな。
> 順当に考えれば b=b ; b++; という順に評価するってこと。
> 誰が作ったってこーなるよ。

b=0
b=b+++b+++b+++b;
はいくつっすか?
1になるやつとか3になるやつとかありますけど。
774デフォルトの名無しさん:02/05/26 12:45
>>773
未規定の動作を含んでいて
bに格納される結果は未定義です
√2って存在しないのを証明しました。
nxt は未定義です。
>>710

> mkdir, rmdir をサポートすると言うことは、階層ディレクトリサポートすると
> 言うことだよね。だったら、chdir/getwd とかもいると思うし、link が無い
> なら、unlink なんてわけわかの名前じゃなくて素直に remove (もしくは

linkは忘れてました。
あとcreatも。
でもchdir/getwdは要らないと思います。(それはプロセスが持つものです。)
>773
そりゃそうだろ。
それは b=b++; の問題とは全く異質の問題で
基本構文解析の順番がコンパイラごとにどう規定されてるか違うんだから
動作が異なるのは十分ありえる話だ。
小泉純一郎が俺を嵌めようとしてCの規格を変えようとしている。
任天堂を訴えてやる
>>773
「未定義の動作」だからコアダンプしても不思議はない。

「誰がやってもこうなる」とか言ってる香具師はただの煽りか
鞭だから虫せい。
手元のperlでは

$ perl -e '$i = 0; $i = $i++; print "$i\n"'
0

となったりする。処理系の書き方なんていくらもある。

規格が定義していないことを利用してアグレッシブな最適化をすることも
できるし、そうしたときに i = i++; がレジスタやスタックを破壊して、
i == -11041 などとなるかもしれないという想像力は必要だろう。


なんてことをわざわざ書く漏れは言わせた厨房もろとも逝ってよし。
任天堂を訴えてやる 子どもを巻き込んでな
>>778
うわバカがきた!
784デフォルトの名無しさん:02/05/26 12:51
>>778
いや、この場合の構文解析はコンパイラごとに違わないはずだぞ

b=((b++)+(b++)+(b++)+b);
これ以外の解釈をするコンパイラはバグだぜ
構文解析の順番(フ゜
お帰り馬鹿>>778
>>784
構文解析器の規格を疑え。
仕様も結構だがもっと実装を研究しろよ。

それよりも、規定されてない 言語仕様のほうに疑問を感じるけどな。
未定義 とか自慢げに言ってないでさっさと規定しろ ってオレは言いたい。
>>788
剥げどう
>>778
構文解析と出力コードとどう関係あるんだよ。

>>783
同意だが念のため言っておくと
括弧で実行順序を完全に規定できるわけじゃないよ。
>>788
だったら、参画しろよ。
こんなところでうだうだ言ってないでさ
規定しちゃったら最適化を制限するだろーが。
アーキテクチャによってどの結果が一番速いか違うときはどうする?
例えば、post incrementモードはあるがpre incrementモードがない
PDP-11, VAX-11, 68kファミリとか。
793デフォルトの名無しさん:02/05/26 12:56
>>788
未定義や未規定を残してあるのは
粋な計らいって場合もあるぞ
例えば
a=b++ + c++;
のaとbとcへの副作用の順が決まってないのは
機械語のオートインクリメントに直訳させるためとかな
>>788
全部規定しやったらコードが遅くなったり大きくなったりするが...
スーパースカラーだとどうするんだよ。
体で覚えれ
796歌丸:02/05/26 12:57
おまえらそろそろヴァカのデバッグはあきらめませんか。
カッコつかないし、何言い出すか未定義です。
797783:02/05/26 12:58
>>790
そりゃそうだ*p++とかな
>>788
「実装を研究しろよ」と偉そうにのたまうのは勝手だがお前こそ実装を研究しろよ。
>>798
激しく同意
今、>>798が真理を突きました(・∀・)!

801783もとい784:02/05/26 12:59
わりいレス番間違えた
>>797
いや、そうじゃなくて
例えば2項演算子のどのオペランドを先に評価するかは、
,と?:と&&と||以外は未規定。
803デフォルトの名無しさん:02/05/26 13:01
b=b++なんて馬鹿な書き方をしなければ済む問題だろ。
>>797

いや、そうじゃなくて
例えば2項演算子のどのオペランドを先に評価するかは、
,と?:と&&と||以外は未規定。
805784:02/05/26 13:02
あ、そっちか
b=c()+d();
でcとdの実行順序が未規定ってことか
806783=802=804:02/05/26 13:03
う、二重カキコしちゃった。スマソ
UNIX板のおにいさん(おじさん)達こわーい(w
808784:02/05/26 13:04
>>806どした?
>>807
誤爆か?
810デフォルトの名無しさん:02/05/26 13:06
811784:02/05/26 13:07
>>803ま、それにつきるわな
>>810
・・・・・・・。ネタ臭いと思ったら・・・・・

>>713
死ね!
今、板間を越えた交流が始まる。
sequence pointっていう言い方がもろにsuperscalerを意識した
言い方だよね。もし順序を全部規定して演算子ごとにsequence
pointを作るとしたら、非常に逐次的なコードになるだろう。
最近のCPUだとせっかく4つとか6つとか演算器があるのに1度に
1つずつしか使えなくなる。しかも、逐次的にするにはわざわざ
そのための命令を演算命令の間にたくさん挟まなければいけない。

プログラムによるが、たいていのプログラムで性能は確実に半
分以下、下手したら2〜3割に落ちると思う。
815784:02/05/26 13:11
>>812
そりゃねーだろ
おめーだって幽霊じゃあんめえ
未定義の動作について何度説明しても別にかまわないと思う。
実際に誤解してるアフォは多いんだから、その価値はあるよ。
817784:02/05/26 13:13
>>816禿同
>>816
fflush(stdin)を堂々と正当な方法だと説明しているサイト多いね。
819[email protected]:02/05/26 13:17

「高性能ビデオスタビライザー」です↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

店頭販売価格は、13900 円なんですが、
今回だけ、破格の 7700 円に設定して
おります。

購入希望の方は、名前の所にも書いて
ある、[email protected] 迄、
メールを下さい。

不安な方は、落札をして頂いても
構いません。
(゚∀゚)盛り下がった?
もうちょっと盛り下げてくれると助かる。このスレ速すぎて追うのが大変。
822デフォルトの名無しさん:02/05/26 13:25
blueBacksのC言語の本、イィとおもう?
823デフォルトの名無しさん:02/05/26 13:25
なんかつまんなくなったな
教えて君たちが一斉に帰っちまったか
824デフォルトの名無しさん:02/05/26 13:28
「規格を疑え」って言ってたやつはネタじゃなくてマジだったと思うな。
実は片岡だったんじゃないか?
質問です。
main()
{
 char c;
 while((c = getchar()) != EOF))
  putchar(c ^ 0xFF);
}
というコードだと途中で入力の途中にEOFがあると止まってしまいますよね。
バイナリファイルを入力させたいときなどはどうすればよいのでしょうか?
規格を疑うのも一理あるんじゃないか。
なんでコンパイラによって扱いが違うのか不思議に思う事がある。
>>826
EOFはバイナリファイルの"中"に入ることはありえない
× char c;
○ int c;

入力の途中にEOFは無い。
>>826
int c; にしなさい。
んで、途中に EOF があることはない。
なぜなら getchar() の戻り値は int 型であり、0〜255 または EOF のどれかで、全部で257通りあるから(charが処理系依存つう話は突っ込まないで頂戴)。
EOF は一般的には -1 になってたりする。
831デフォルトの名無しさん:02/05/26 13:36
>>826
getcharの戻り値はintだバカ
>826
EOFの定義をヘッダを漁って見てみるといいと思うよ
833784:02/05/26 13:37
>>827例えば?
834デフォルトの名無しさん:02/05/26 13:39
>>830
charは処理系依存しないよバカ
常に1byteなんだよ
……あ、signed/unsignedは依存するかも……
>>834
charは1バイトだが、1バイトが8ビットっつう定義はない。
>b=0
>b=b+++b+++b+++b;
>はいくつっすか?
>1になるやつとか3になるやつとかありますけど

例えばこんなとこ
>834
おいおい・・・charが常に1バイトなんて、誰が決めたんだ?
お前らの好きな規格をもって ここに示してみろ。
このスカポンタンが!
838784:02/05/26 13:41
>>834
バイトマシンじゃない機種ではどうなってる?
>>834
ヲイヲイ
840デフォルトの名無しさん:02/05/26 13:42
>>835
あ、そうかも。
すいません。勉強になりました。
バカバカ言ってる奴は普段馬鹿にされてるバカなのか
842デフォルトの名無しさん:02/05/26 13:42
>>841
そうです。てへへ。
>>841
>>840
そのようだ
844デフォルトの名無しさん:02/05/26 13:44
叩き甲斐のないヤツだ
getchar()の戻り値は、次の二つの意味が重畳されている。
・ファイル終端に達していたら EOF
・終端でなければファイルの内容から1バイト取り出した値

リファクタリングの知識がある今だと行儀のいい仕様とは言えないな。
846784:02/05/26 13:45
>>836(=827?)

>>792 とか >>814 とか、見た?
847仕様書無しさん:02/05/26 13:46
>>845
じゃぁどうすればいいの?
規格にはbyteが「アドレッシングの単位」で「characterを保持できる
だけの大きさがある記憶領域」だと書いてある。(8bitだなんてどこにも
書いていないが、characterを保持するには最低8bit以上必要。)

また「sizeof charは常に1」とも書いてある。

だから本当はbyteサイズ >= charサイズだが、余ったビットを使う方法なんて
ないし、余らせても処理系にメリットはないと思われるので、実質上
byteサイズ==charサイズと思っていて問題はない。
>>845
_Bool getchar(char *value)として、valueの指す先に値を書かせる?
>>847
もちろん、成功不成功の出力と、入力された値を返すインタフェースを別にするのさ
たとえば、関数の戻り値は成功不成功のtrue/falseだけにして、
入力値はポインタ1個渡してそこに入れてもらうようにするとか
getchar()は値を返すがEOFだと例外を投げる、って方が使いやすいな…
レジスタで受け取れるし。

(Javaでさえそうはしてないが。)
Cの規格に例外ってあるの?
>>851
JavaのreadChar()はEOFExceptionを投げる。
>852
例外というか、穴だらけ。
使い物になると思わない方がいい。
855784:02/05/26 13:52
>>851
setjmpっすか? volatile出てきますね
856851:02/05/26 13:52
>>852
ないです。

>>853
そうだった。read()しか考えてなかった。
>>851
そんな貴方には C++ の basic_istream をどうぞ。exceptions でEOF例外を発するように出来ます。ここはCスレなので。
errnoでエラーを示すことにしてみるとか・・・
859仕様書無しさん847:02/05/26 13:55
例外使うなら、isEofも必要じゃない?
(注)Iteratorはそれで遅いなんて言われている。
860仕様書無しさん847:02/05/26 13:56
うーん、Cでも、eof, select 使うと遅いね。
>>854
フ゜ばっかじゃねーの
862仕様書無しさん847:02/05/26 13:57
>>861
同士 (^^;;
863784:02/05/26 13:57
feof

板違いはやめれ
例外違い
>849 の方式が素直だよね。

char c;
while ( getchar(&c) ) {
 cを処理
}
と書ける。
> 例外というか、穴だらけ
(w
#define eof()  feof(stdin)
>>858
do {
 c = getchar();
}while (! errno);
とか?
errnoって最近かなり不便だよね。
マルチスレッドを使うときはグローバル変数にできないので
変なマクロになっている。

>>859
isEofってのはPascal流だな。
例外とか使わないとしたらまっとうなアプローチだと思うけど、
while (! isEof(stdin)) {
 c = getchar();
}
は、実行効率で今の仕様に負けると思う。
869784:02/05/26 14:01
>>854
>>852が言ってる例外はgotoだと思うぞ
>>865
でもcをレジスタに割り当てられなくなるよね。
マクロ展開しても速くならないんじゃないか?
871knk:02/05/26 14:05
このスレは俺が乗っ取った。ともっちには渡さないよ。
872784:02/05/26 14:06
>>870
えー速くなる?

jmp_buf j;
if(setjmp(j)==0){
register char c;
while(c=getchar(j)){
 cを処理
}
}
873847:02/05/26 14:07
>>868
なるほど
MSVCみたいなコンパイラならバイナリは同一かと思われ。
874784:02/05/26 14:09
あり、whileの判定しくってる...鬱だ
875847:02/05/26 14:11
ワロタ
jmp_buf j;
if(setjmp(j)==0){
register char c;
while(1) {
c=getchar(j);
 cを処理
}
}
876784:02/05/26 14:12
>>875おっしゃるとおり
877デフォルトの名無しさん:02/05/26 14:20
SJISの漢字は混ざった文字列で改行'\n'を見つけるコードを書きたいのですが、
マルチバイト文字列関数の_mbsstr()を使えば、どんな場合でも問題なく
見つけてくれるのでしょうか?

EUCの文字列を処理するときでもOKですか?
どこかにいい説明ページがあればURLお願いします。
>>877
\nだったら漢字考慮せずとも大丈夫っしょ
>>875
jmpbuf渡さなきゃダメかな? ま、いいけど。
マクロ展開すると
c = (--*(p)->cnt > = 0 ? *(p)->ptr++ & 0377: fillbuf(p, j));
みたいになるよね。jはたいてい使わないからけっこう速くなると思うけど。
880877:02/05/26 14:37
>>878
'\n'は2バイト目にも出てこないんですね。
ご指摘ありがとうございました。

http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/w/whatKanji.html
>シフトJISコードは第1バイトとして 0x81 - 0x9f までと 0xe0 - 0xfc まで、
>第2バイトとして 0x40 - 0xfc まで(0x7fを除く)を使う。
>このため、シフトJISは上記の半角コードと混在できる。
>しかし、制御文字として使われる \(バックスラッシュまたは円記号)などが
>第2バイトの領域に入っているために問題が生じることがある。
>
>EUCコードは第1、第2バイトとも 0xa1 - 0xfe までであるが
881847:02/05/26 14:43
>>879
そのままで(・∀・)イイ!!という事でしょうか。
882784:02/05/26 14:44
>>879
ああ、マクロ展開って言ってたっけ
そんならそうかも
883784:02/05/26 14:47
>>879
ところでjmp_buf渡さない手って?
>>883
例えば名前を固定にするとか、スタックにするとか。

スタックってのは、setjmp(&j)じゃなくて
push_ioerr_jmpbuf(&j)みたいにする。使うときは
TRY〜CATCHみたいなマクロにすればそれほど面倒はない
んじゃないかな。
今でもgetcharはマクロになってるのかな?
規格だと「関数としてリンクできないといけない。
でも同じ名前のマクロを用意しても良い。」となってるけど。
886784:02/05/26 14:56
>>884
スタックを2本にするってこと?
887デフォルトの名無しさん:02/05/26 15:06
C言語の中で、UNIXコマンド使うにはどうすればいいんでしょう?
>>887
system()
889784:02/05/26 15:10
言いっぱなしで悪いが急用ができた
失礼する
890デフォルトの名無しさん:02/05/26 15:10
>>888
どうもありがとうございますた。
system("コマンド");
ですね。
エンターキーを押すまで、入力待ち状態で
エンターキーを押したら次の処理に進むようにしようと思います。
変数を使わずに実現するにはどうすればいいでしょうか?

scanf; じゃなにも起こらないようです。
>>891
scanf;じゃscanf関数の呼び出しすらしない罠
while(getc != 0x0A);
while(getchar() != 0x0A);
普通にscnaf("%s",dummy);
"変数を使わずに"だそうだが?
>>896
system("pause > nul");

DOS限定。
Makefileで、ビルトインルールを使わせないようにしたいんですけどどうすればいいでしょうか?

.c.o:
  $(CC) $(OPTS) -S $<
  $(CC) $(OPTS) -o $<
ってやりたいんですけどビルトインルールに cc -o $< がある(?)ので
余計なコトをされてしまいます。
>>894でいいんじゃない。Macじゃなければ大体使えそうだし。
>>892
うぉ、本当だ。VC++ 6 でやると、警告は出るがコンパイルは通る。
(でも、何も生成されない。) 何で、エラーにしないんだ ?
scanf(); ならエラーにするくせに...。

>>891
何で、変数使っちゃダメなの ? >>895 みたいにそれとわかる変数使えば
いいと思うが
dummyのサイズをどうすればいいか分からない。
仮にEnter入力待ちの時にタッチタイピングの練習し始めたり、
物のせてスペースキーが押しっぱなしになって3日放置されたりしたらどうする?
>900
エラーじゃないからエラーにならない。
int a;
a;
これもエラーじゃない。
903891:02/05/26 15:36
考えてくれた人どうもです。

>>900
>何で、変数使っちゃダメなの?

わざわざこの処理の為に変数用意するのはどうかな?
と思ったのです。

>>894さん
の方法でうまく行きました。ありがとうございました。
while(getchar()!=10);でもうまくいったみたいです。。。(decか、hexの違い!?)

>>900
int a;
a;
とか
main(int argc, char** argv)
{
argc; argv;
}
とか出来る
関数は関数ポインタの扱い。
scanfは絶対に必要な場合以外使わない。
絶対に必要な事は無いに等しい。
908891のつづき:02/05/26 15:41
ただですね、そのenter入力待ちの時に入力するするenterが、
その前の処理の入力で、”入力終了に使うenter" を間違えて読んでしまって
入力待ちにならないんです。

scanf("%s",string_data"); @
while(getchar()!=0x0a);   A
909900:02/05/26 15:44
>>902, >>904
関数プロトタイプ知らんの ? だったら、何で scanf(); はエラーに
するのか説明しろよ。
900はアフォです。
>>909
激しく同意
>>909
関数ポインタって知ってますか?
913904:02/05/26 15:47
>>909
煽られても困るんだが?
関数プロトタイプがあるからscanf()がエラーになる。
変数を単体で式として記述すると、何も起こらない
>>908
を回避するために、

scanf("%s",string_data"); @
while(getchar()!=0x0a);   A
while(getchar()!=0x0a);   A
と、するのは邪道ですか? きれいなプログラム、すっきりしたプログラムという点
から見て意見求む!
>>914
scanf使わなければ解決。
>>915
ムムッ
むむむ
char string_data[1024], *pstr;
pstr = string_data;
while(*pstr++ != '\n')
 *pstr = (char)getchar();
while(getchar() != '\n');
char string_data[1024], *pstr;
pstr = string_data;
do{ *pstr = (char)getchar(); } while(*pstr++ != '\n');
*pstr = '\0';
while(getchar() != '\n');
920900:02/05/26 16:00
>>913
あんたら、VC++ 6 のエラーメッセージ見た事ないのか ?
> 「関数呼び出しに引数リストがありません。」
俺が言いたいのは、関数呼び出しと認識してるんなら、エラーにしろよ。
と言うことだけだよ。
関数ポインタとか、変数を単体で式として記述 とか言うんなら、
なんで、
int (*a)();
a;
が警告にもならないか説明しろよ。
Makefile が変更されたら無条件にコンパイル全部やり直したいときは
どうすればいいですか?
全ファイルにMakefileを依存させるようにMakefile記述するのはダサいッスよね?
922904:02/05/26 16:03
>>920
K&RなりISOなり仕様書読めよ
int (*a)();
a;
a は変数だろうが。
これは関数呼び出しとして認識してないよ
a という式だって言うの。
a()で関数呼び出しになるから、始めて引数がチェックされるんだって。
>920
なんでそれがエラーにならないかというと ; で区切られてるのは、実は全部 値 なんです。

a = 1;
↑この式は1です。

a;
↑この式も1です。

scanf;
↑この式は &scanf です。

scanf(&a);
↑この式は scanf()の戻り値です。
なんで4日でスレがなくなるんだか。。。
密かに祭りでもやってんの?
>>923
なんかわかりやす(・∀・)イ!!
3つ目 &scanf がどういう値なのかよくわからんが(w
アフォを無視せずに謝らせようとするからです。
>>924
そう、ただいま scanf(); 祭り実施CHU!
928結論:02/05/26 16:08
こんなわかりにくい言語にしたやつが(・A・)イクナイ
>>900=928
>>900必死だな
931928:02/05/26 16:10
>>929
違うって・・・マジで。
わかりにくいッて言うならPerlにも言えよ
>>950以降で最初に回答した人、次スレよろしこ。
void *func = scanf;
func("%s", buf);
935928:02/05/26 16:15
>>932
perlは、精気表現がきついもんなぁ。
あとはCっぽいから、結局、Cがわかりにくい。
>>928
馴染め。

>>925
scanf(関数)のある場所。

この辺はアセンブリを知ってる人は有利なのかな?
937900:02/05/26 16:15
>>922
> a は変数だろうが。
> これは関数呼び出しとして認識してないよ
> a という式だって言うの。
じゃあ、scanf; ってなんなんだよ。式じゃねーのか ?
>>937
scanf; != 式とは>>922は一言も書いてませんが?
>>937
;(セミコロン)が付いたら式かどうか疑ってみんさい。
そういう時はscanfは式なの?
ケコーンしちゃうの?

って聞くの。
>>934



void (*func)(const char*, ...) = scanf;
func("%s", buf);
941925:02/05/26 16:24
>>936
さんくすこ。
精進します。
でも、アセンブラはやらないでしょう。Cでおなかいっぱい
942900:02/05/26 16:26
>>938-939
scanf; って言うのが...
1. 式って言うなら、int (*a)(); a; との違いはなんだ ?
2. 関数呼び出しだって言うなら、何でプロトタイプ宣言のエラーに
  しないんだ ?
3. どっちとも違うって言うなら、なんなんだ ?
って聞いてるだけだよ。>>922 は質問の意図はわかってるだろうから
余計なことはさまないでよね。
関数呼び出しでは無い事は確か
944デフォルトの名無しさん:02/05/26 16:33
うむむ祭りに乗り遅れた(´・ω・`)しょぼーん
>>944
ガンバ♪
946891:02/05/26 16:35
>>943
関数呼び出しかと思って、あんな事>>891書いてたよ。
何にも起こらなかったけどね。
>>946
初心者は(#・∀・)カエレ!!
互換性のある型!!
(´・ω・`)しょぼーん

>>942

;が付いたら文。
でscanfは式。
>>936
に書いてあるとおり、scanfのアドレスを返す。
printf("%p\n",scanf);とかやってみ。

> int (*a)(); a;
これやるとBCC32では警告が出るんですが…
こうやって宣言した関数ポインタかscanfとかの関数名に()がつくと関数の呼び出しとなる。
a;はアドレスを返すだけ。でも使ってないだけ。
951950:02/05/26 16:44
次スレ立てます。
scanf;
は正しい式だから、ANSI準拠に従う以上、エラーにしちゃいけない。
警告を出すかどうかは処理系実装者の任意だけど。
何を意味するかというと、scanf関数の関数ポインタを取得して、それを何もしない。
呼び出すわけでもなく。
ただ単に式の値は捨てられる。
って感じ?
配列のポインタ配列の識別子にアドレス演算子がいらないように関数にも要らない!
互換性のある型!!

int ia[10];
int (*iap)[10] = ia;//&iaでもよい無くてもよい

コンパーチブル!!
954950:02/05/26 17:00
駄目だった。スレ立てすぎらしい。

代わりに立てて >>957
>>953
> int ia[10];
> int (*iap)[10] = ia;//&iaでもよい無くてもよい
アドレスは同じでも型は同じか?
printf("%p", scanf);
957900:02/05/26 17:04
>>943, >>950, >>952
だから...
> 1. 式って言うなら、int (*a)(); a; との違いはなんだ ?
に誰か、答えられるの ? (特に、>>910-912 みたいに偉そうに書いてた奴、
どうよ。単なる煽り屋さんか ?)

>>950
>> int (*a)(); a;
> これやるとBCC32では警告が出るんですが…
なんてでてます ? また、int a; a; でもでるのかな ?
(処理系の名前忘れたけど、"無効な式です" とか言う警告が出る奴はある。)
>>957
次スレよろしこ。
次スレ1もvoidで頼む。
960デフォルトの名無しさん:02/05/26 17:11
今話題になっているSHARPポケコンPC-G850内蔵のC言語ってどうなんでしょう。
900が何を騒いでいるのかわからんのだけど。

int scanf(const char *, ...);
というプロトタイプがあるとき、

scanf; はエラーじゃない。
int (*)(const char *,...)型の式の後ろに;をつけた文になる。

scanf(); はエラーだ。
int scanf(const char *,...)を、矛盾する引数で呼び出したから。
                       ^^^^^^^^^^^^^^
int (*a)(int);

a; // エラーじゃない
a(); // エラー
a(1); // エラーじゃない
963904:02/05/26 17:14
>>957
煽りやさんはあんただろ。
> 1. 式って言うなら、int (*a)(); a; との違いはなんだ ?
a()と int(*a)();a;の違い?
前者は引数なし関数aの呼び出し
後者は引数なし関数ポインタaの宣言と式aのみから成り立った文。
ちゃんとひよこ本のリンクはれや、ゴルァ!
あー、ひょっとして900は、他の一部の言語(Modula-2とかRubyとか)
みたいに、
scanf;

scanf();
も同じように引数0個の関数呼び出しになると思ってたのかな?

Cだと、()を付けない限り関数呼び出しは起きないんだよ。
誰かスレ立てろ
俺は立てすぎらしい
967ダックソンW世:02/05/26 17:24
GNU + Cygnus + Windows = Cygwin (・∀・)イイ!
968900:02/05/26 17:24
>>963
げっ、こいつほんとにわかってなかったのかよ。>>942 の「>>922
質問の意図はわかってるだろうから」て言うのは、取り消しだ。

誰が、「a()と int(*a)();a;の違い?」を問題にしてんだよ。
scanf; と (int (*a)(); としたあとの) a; の違いを示せって言ってんの
わからんか、それとも 1000 も近いから単なる時間稼ぎか ?
俺が立ててみます。ちょいお待ちを。
970904:02/05/26 17:28
>>968
あんた偉そうだな、いちいち過去ログ見るのも億劫だから適当に書いただけだ。
それならほとんど違いはないよ、違いは関数のアドレスか、関数ポインタの値か、それだけ。

971969:02/05/26 17:33
俺もスレ立てすぎでした・・・。
誰か頼む。
テンプレ

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

日下部陽一


漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

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

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

・前スレ
<21> http://pc.2ch.net/test/read.cgi/tech/1022045622/

他のリンクは>>2-10を見な。
> うぉ、本当だ。VC++ 6 でやると、警告は出るがコンパイルは通る。
> (でも、何も生成されない。) 何で、エラーにしないんだ ?
> scanf(); ならエラーにするくせに...。

この発言を馬鹿にされて逆ギレしてただけじゃなかったの?
900は「scanf();はエラーになるのにscanf;やa();がなぜ
エラーでないのかワカリマシェン。誰か教えて〜(泣」
って言ってるんじゃないの?

答は出てるんだが。
かぶせられた
>>968
>scanf; と (int (*a)(); としたあとの) a; の違いを示せって言ってんの

へ?何が違うの?
976950:02/05/26 17:35
警告 W8019 a.c 5: コードは効果を持たない(関数 main )
と出る。

>>968
scanf; は文だって…
例えば
int (*a)(const char *, ...);
a = scanf;
として
a(どうのこうの);
とすればscanfとして動く。
a = printf;
と、途中で変えることもできる。

ようは
int a[256];

int *a;
との違いみたいなもん。
問題がすりかわってる悪寒・・・
978日下部陽一:02/05/26 17:37
http://pc.2ch.net/test/read.cgi/tech/1022402165/
新スレです。移動願います
979サンプル:02/05/26 17:39
#include <stdio.h>

int main(){
int (*a)();
int hage;
a = scanf;
a("%d",&hage);
a = printf;
a("%d\n",hage);

scanf = printf; /*エラーだよ*/
return 0;
}
こんなもんで。
あとは邪推してくれ。
前スレ900は何を教えて欲しいのかもう一度説明するべきだと思うな。
俺は「scanf;が関数呼び出しだと思っていた」に一票だが。
>>980
単なる()の付け忘れだろ。何をそんなに熱くなってるんだか・・・。

しかし、scanf;でコンパイル通るのか。
関数ポインタがごろんと転がっているだけの感じだがな。
0x44548883;
とかいう感じで。
前スレ900?
熱いのは900れす
>>979
int (*a)(cont char *,...);じゃなくていいの?
985980:02/05/26 17:51
新スレに書いたつもりが誤爆しました。
http://pc.2ch.net/test/read.cgi/tech/1022402165/10
に書き直した。
986950:02/05/26 17:51
>>977
・・・正解!

まあ scanf; a; ってのはたいした違いは無いよね。
1; と 2; の違いを言えってなもんだし。
むしろ
printf("hoge\n");
a = 3;
とかとも違いが無い(printfもintを返すし、代入式も値がある)。
つまり値が返されても値を受け取らなかったらそれは無視されるってこと。

俺は疲れた。
アセンブリ勉強してくれ。
pascalはやらないでくれ。
あれは900宛てじゃ
      ,, ,=、  ,, , =、
     ff | }!、,、〃 / ″このスレ怖いー!!
      ,リ/ .ノ*´jコ`)'〃
    {{ { ′   v' 《
     ヾ.\.   \ヾ
     _,,二、》   ;  \. 三,_
  (( ゙ー=、`″〃 \. \-‐' ,))
        ゙ー=″     ゙' 一'
>>984
int (*a)();
という宣言なら、どんな実引数で呼び出しても文法上はOK。

ただしこの宣言だと、可変長引数のプロトタイプ宣言をされた
関数は呼び出せない。(呼び出すと未定義の動作になる。)
とある質問だけで、100レスもつくとは。。。。
(((( ;゚Д゚))))ガクガクブルブル
>>990
おいおい、NULLの話なんかいくつレスが付いたと思ってるんだ?
992900:02/05/26 18:20
>>973
> 900は「scanf();はエラーになるのにscanf;やa();がなぜ
> エラーでないのかワカリマシェン。誰か教えて〜(泣」
> って言ってるんじゃないの?
バカ。>>920 見ろ。俺が言いたいのは、scanf; が警告出るのに、a; が警告
でないのは、何でだ。ってことだ。(要は、VC は (この点に関しては) バカ
だと言ってるだけだよ。)

いいかげん、scanf(); と scanf; の違いを偉そうに語るのはやめてくれ。

>>976
なるほど、BCC はちゃんと警告出るわけだ。int a; a; でもてるんだろう
なァ...。
993900:02/05/26 18:22
>>902, >>904
関数プロトタイプ知らんの ? だったら、何で scanf(); はエラーに
するのか説明しろよ。
>>920の時点で問題がすりかわってる罠
900さん熱いね。
よーし、パパどうでもいい話なのでこのままコソーリ1000狙ちゃうぞー
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
ああ、そういうこと。VC++の警告メッセージが違ってると。ふーん。

あれ、ひょっとしてVC6って、
scanf;
でscanf();と同じコードが出るの?
だったらコンパイラのバグだね。
いまだ!
1000900:02/05/26 18:27
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。