5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :日下部陽一:02/05/26 17:36
漏れは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を見な。


2 :デフォルトの名無しさん:02/05/26 17:36
>>1
メールアドレスがvoidになってない。
・作ってわかるCプログラミング(通称 アヒル本)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711

3 :デフォルトの名無しさん:02/05/26 17:37
【コンパイラ】
ぼくも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

4 :デフォルトの名無しさん:02/05/26 17:37
>>1 乙〜

5 :デフォルトの名無しさん:02/05/26 17:38
v(^・^)v

6 :デフォルトの名無しさん:02/05/26 17:40
前スレから続いている議題
http://pc.2ch.net/test/read.cgi/tech/1022045622/900

892
scanf;じゃscanf関数の呼び出しすらしない罠
900
>>892
うぉ、本当だ。VC++ 6 でやると、警告は出るがコンパイルは通る。
(でも、何も生成されない。) 何で、エラーにしないんだ ?
scanf(); ならエラーにするくせに...。

7 :デフォルトの名無しさん:02/05/26 17:42
質問ですが、
CSVファイルを読み込みたいんですが、
カンマを抽出するときは、一文字づつ
判定していくんでしょうか?教えてください。

8 :デフォルトの名無しさん:02/05/26 17:44
>>7
csvからhtml表生成最強言語は?
http://pc.2ch.net/test/read.cgi/tech/1021596367/

9 :デフォルトの名無しさん:02/05/26 17:44
>>7
ちゃんと"の中のカンマとかを特別扱いしたければ1文字ずつ読むしかない。

Excel互換にしたいならもっともっと大変。
http://pc.2ch.net/test/read.cgi/tech/1021596367/75


10 :デフォルトの名無しさん:02/05/26 17:46
うを誤爆した。書き直す。

>>6 に関して。
前スレ900は何を教えて欲しいのかもう一度説明するべきだと思うな。
俺は「scanf;が関数呼び出しだと思っていた」に一票だが。


11 :デフォルトの名無しさん:02/05/26 17:46
TABにした方がはるかに簡単、という罠。

12 :デフォルトの名無しさん:02/05/26 17:47
>>11
それはCSVとは言わない罠

13 :デフォルトの名無しさん:02/05/26 17:47
TAB区切りはTSVって言うのか?あんまし聞いたことないな・・・

14 :デフォルトの名無しさん:02/05/26 17:48
http://www.google.com/search?num=100&hl=ja&q=TSV+CSV&lr=lang_ja

15 :デフォルトの名無しさん:02/05/26 17:48
http://www.e-words.ne.jp/view.asp?ID=2438

16 :デフォルトの名無しさん:02/05/26 17:49
TSV、結構メジャーなのね・・・スマソ

17 :デフォルトの名無しさん:02/05/26 17:49
>>10

scanf;
が関数呼び出しだと思っていなかったんではなくて、

typedef int (*f)(const char *,...);

f func = flag ? scanf : printf;

(*func)(format, …);

みたいな使い方が思い浮かばなかったんじゃない?
(scanfやprintfでこういう事を良くやるっていう意味でなく
関数へのポインタにscanfとかprintfが代入できるという意味。)


18 :デフォルトの名無しさん:02/05/26 17:50
> げっ、こいつほんとにわかってなかったのかよ
> scanf; と (int (*a)(); としたあとの) a; の違いを示せって言ってんの
> わからんか、それとも 1000 も近いから単なる時間稼ぎか ?

19 :7:02/05/26 17:56
ん〜よくわかりませんでしたが、一文字づつ
読むしかないみたいなんで頑張って読みます。
もしかしたら文字列操作でピピピッピっと簡単に
できるんじゃないかなぁとか、思っていました(w

20 :デフォルトの名無しさん:02/05/26 17:56
aは初期化していないのでごみです。
scanfはscanfのアドレスを指しています。
とか言ってみる。

900はpascalのような関数呼び出しを期待したか、
1; がエラーにならないのが不思議。
のどっちかだと思う。

21 :デフォルトの名無しさん:02/05/26 17:57
>900はpascalのような関数呼び出しを期待したか
漏れはこれに1票。
で、過ちに気づいて負けず嫌いの前スレ900君は必死で話題を逸らそうとしていたと。

22 :デフォルトの名無しさん:02/05/26 18:01
>>19
CSVの読み込みは結構大変だと思う。
TAB区切りなら文字列も数値も、
sscanf(str,"%d %s %lf %lf %lf %lf %lf",.....);
こんなんで簡単に読み込めるのだが・・・。

1バイトずつ読む場合は
・""で囲われているかの処理、
・2バイト文字(漢字)の処理、
の2つが必須かと。がんがってね。

23 :デフォルトの名無しさん:02/05/26 18:01
>>18=旧900なのかな?

scanf;

a;
もどちらもexpression statementだ。
expressionはどちらも関数へのポインタ型だ。
aは変数だが、scanfは定数だ。

で、何がわからんの?

24 :18:02/05/26 18:04
違うよ。貼っただけ。

25 :>>旧904 != >>18:02/05/26 18:05
旧スレの904だけど18じゃないっす

26 :デフォルトの名無しさん:02/05/26 18:06
前スレ900はもう逃げたんじゃないか?(藁

27 :デフォルトの名無しさん:02/05/26 18:06
旧904は勘違いさん

28 :デフォルトの名無しさん:02/05/26 18:07
ιゅぅリょぅ?

29 :デフォルトの名無しさん:02/05/26 18:07
>>26
そういう事書くとまた前スレ900が話すり替えた反論始めるから止めてくれ。

30 :デフォルトの名無しさん:02/05/26 18:08
負けず嫌いクンだから自分の無知は認めないだろうね。
勘違いしてた、って一言いえば匿名掲示板なんだからそれで済むと思うんだが。
まあ >>20 ってことで。

31 :デフォルトの名無しさん:02/05/26 18:09
909 名前:900[sage] 投稿日:02/05/26 15:44
>>902, >>904
関数プロトタイプ知らんの ? だったら、何で scanf(); はエラーに
するのか説明しろよ。

ここがそもそもの(以下略)

32 :デフォルトの名無しさん:02/05/26 18:09
可変個引数を表す...というのがありますよね?
これは予約語なんですか?変数やマクロはこういう形では作れませんよね?

33 :デフォルトの名無しさん:02/05/26 18:10
900はうさを晴らすために、どこかで誰かを煽り、
煽られた人はまた誰かを煽る・・・まるで・・・

34 :デフォルトの名無しさん:02/05/26 18:11
(((( ;゚Д゚)))ガクガクブルブル

35 :デフォルトの名無しさん:02/05/26 18:11
>>32
C99なら作れる。
#define debug(...) fprintf(stderr, __VA_ARGS__)


36 :デフォルトの名無しさん:02/05/26 18:14
>>35
シランカッタ。
gccだと確かにできた。


37 :旧904:02/05/26 18:22
>>27
どこが勘違いしてるの?
つか、勘違いがあるなら正してください。

38 :デフォルトの名無しさん:02/05/26 18:27
> 旧スレの904だけど18じゃないっす
これ。

39 :デフォルトの名無しさん:02/05/26 18:27
> >>18=旧900なのかな?

40 :デフォルトの名無しさん:02/05/26 18:27
>39

>24-25

41 :デフォルトの名無しさん:02/05/26 18:28
900はVC++が
「関数呼び出しに引数がありません」
と言うので、scanf; が関数呼び出しだと思ってたらしい(藁

Cプログラムの動作の判断をVC++に頼るようじゃなあ…


42 :旧904:02/05/26 18:29
>>38
あー、そういうことか。
18 != 旧900で、それなら次に疑われそうなのは漏れだったから、
18 != 旧904としただけっす

43 :デフォルトの名無しさん:02/05/26 18:30
>904=自意識過剰

44 :デフォルトの名無しさん:02/05/26 18:30
もう900は忘れろ。
age!

45 :デフォルトの名無しさん:02/05/26 18:30
>>43 それはひどいわ!

46 :デフォルトの名無しさん:02/05/26 18:30
もしかしてこれもUNIX板の住人の仕業か?(ワラ

47 :デフォルトの名無しさん:02/05/26 18:41
落ちつきました。
祭りは無事終了しますた。

乗り遅れた人。またどうぞ。

48 :デフォルトの名無しさん:02/05/26 18:56
>>32
変数って?

int (*func_ptr)(const char *, ...);
で変数func_ptrが宣言できるけど?

49 :デフォルトの名無しさん:02/05/26 19:01
Cでインタプリタ書いてるんですが、スタックオーバーフローのチェックってど
うやったら良いですか?

少々規格を逸脱してもしょうがないかなと思っていますが、なるべく速くてなる
べく多くのOSで動くやり方を教えろ。

50 :デフォルトの名無しさん:02/05/26 19:03
なるべく早く、なるべく互換性を高く、ね。
答えは簡単。
スタックを使うな

51 :49:02/05/26 19:07
>>50
良く分かりません。構文木を再帰的に実行しているんですが、再帰をしないで自分
で配列とかを取れということですか? それって速い?

52 :デフォルトの名無しさん:02/05/26 19:10
>>51
再帰解析を必要としない方法で解析すればいい

53 :デフォルトの名無しさん:02/05/26 19:10
>>51
関数呼び出しのオーバーヘッドがない分速かったり。

54 :デフォルトの名無しさん:02/05/26 19:10
>>49
関数の入り口でauto変数のアドレスを比べてる
インタプリタがいくつかあったような…


55 :デフォルトの名無しさん:02/05/26 19:11
>>51
リストジャネーノ?

56 :49:02/05/26 19:12
バイトコードにコンパイルしたりする気力&テクはちょっと無いんです。>>all
配列でスタックをエミュレートすると、自分で戻り番地へのリターンとかもエミュ
レートしなきゃならないですよね。なんか遅くなりそうな気がするんですけど。

57 :デフォルトの名無しさん:02/05/26 19:14
mprotectでスタックの端を書き込み禁止にしておいて、
オーバーフローをトラップする。これ最強。
(Winでどうやるかは知らぬ。)


58 :デフォルトの名無しさん:02/05/26 19:17
>>54 なるほど…スタックはたいてい番地が減る方向に伸びるんですよね?

>>55 リストですか? プッシュポップとmalloc&freeを比べると遅くなりませんか?

あ、言い忘れてましたけど、今は再帰の深さ(回数)を数えてます。

59 :デフォルトの名無しさん:02/05/26 19:18

            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  ともっち!大好きだ−!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \




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

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

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

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


61 :デフォルトの名無しさん:02/05/26 19:18

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


62 :デフォルトの名無しさん:02/05/26 19:22
ともっちのことを見捨てるな!ボケが!

63 :デフォルトの名無しさん:02/05/26 19:23
>>62
      チャンチャラチャンチャラ      
  (⌒)  /
 (^ @^) -
  (⊃⊂) ヽ

      オッカシー      
  (⌒)  /
 (・ @^) -
○( ⊂) ヽ

64 :デフォルトの名無しさん:02/05/26 19:32
fread(void *ptr, size_t size, size_t n, FILE *stream);
の3つ目の引数は何か意味があるのですか?
sizeにsize*nを入れればいいと思うのですが?

65 :デフォルトの名無しさん:02/05/26 19:42
>>64
掛け算するのが面倒いときに使います

66 :デフォルトの名無しさん:02/05/26 19:46
>>65
fread(_, a, b, _)

fread(_, a*b, 1, _)
は動作も、戻り値も違うよ。


67 :デフォルトの名無しさん:02/05/26 19:48
>>64
r = fread(ptr, size * n, 1, fp);
だとrは0か1にしかならない。

r = fread(ptr, size, n, fp);
だと、rは0, 1, ..., nのいずれかになる。
(つまり、正しく読めた個数が入る。)

あと、昔は速度が違う処理系もあった。
r = fread(ptr, size * n, 1, fp);
とした方が
r = fread(ptr, 1, size * n, fp);
よりはるかに(size * n倍)速かった。


68 :デフォルトの名無しさん:02/05/26 20:23
>>48
int ...;
できるか?

69 :デフォルトの名無しさん:02/05/26 20:28
>>32
... は、区切り子(punctuator)で、 ( とか ; とかと同じ種類です。

70 :名無しです。:02/05/26 21:13
今高校でC言語勉強してるんですが、難しいです(><) >>1は難しくないですか???


71 :デフォルトの名無しさん:02/05/26 21:14
あのですね。
C言語は、IF文のすべての条件式を評価する言語ですか?
たとえば、

int a,b;
bに数字入力;

if((b<100)&&(a/b>=0)){
  ・・・・・
}

で、b=0の入力が入った時、エラーですか?


72 :デフォルトの名無しさん:02/05/26 21:14
Cは優しい部類に入る言語です。。。

73 :デフォルトの名無しさん:02/05/26 21:14
>>70
勉強としてやるとつまらないだろうね。

74 :デフォルトの名無しさん:02/05/26 21:15
>>71
やってみればいいじゃん…

75 :デフォルトの名無しさん:02/05/26 21:15
>>71
セーフです。

だから
int i = 0;

if(i != 0 || printf("i is zero"));

とか出来たりします。

76 :デフォルトの名無しさん:02/05/26 21:15
>>74
微妙に処理系によって違う事があるので。。。
一般的にはどうなんだろうと。
ANCIてきにはどうなのかと

77 :名無しです。:02/05/26 21:16
じゃどうやってC言語勉強したんですか?>>73

78 :デフォルトの名無しさん:02/05/26 21:16
趣味で。

79 :デフォルトの名無しさん:02/05/26 21:16
>>71
if文かどうかじゃなくて、演算子による。

&&演算子は、左側が0なら右側を評価しない。
||演算子は、左側が0でないなら右側を評価しない。

A?B:Cという式で、Aが0ならBは評価されないし、
0でないならCは評価されない。

80 :デフォルトの名無しさん:02/05/26 21:17
どうやって自転車の乗り方を覚えた?
それといっしょだよ。

81 :デフォルトの名無しさん:02/05/26 21:18
>>77
BASICに飽きた。

難しいともっぱらの噂のC言語。

入門書立ち読み。

ああ、そう言うことか。

書く。

動く。

楽しい!

ここまで思い出して目頭が熱くなった。

あのころは純粋だった。楽しかった。それがなんだ、今は・・。


82 :名無しです。:02/05/26 21:19
趣味か〜 俺も趣味にしようかな?>>78
明日はプログラミングのテストが返ってくる・・・(;;)


83 :デフォルトの名無しさん:02/05/26 21:19
>>75 >>79
ありがとう
つまり、セーフなんですね。


84 :デフォルトの名無しさん:02/05/26 21:23
char *data[]={"aaa","bbb","ccc"}というようにすると
char型へのポインタの配列を定義したことになりますよね?
data[0]には"aaa"へのポインタ、data[1]には”bbb”へのポインタというように。

この場合、この文字列"aaa"ってのは、実際にメモリ上にデータ領域が確保されてるんでしょうか?
この場合、あくまでポインタの定義であって、文字列の領域も確保されているのかよく分かりません。
それともし確保されているなら、この定義をグローバルで行った場合
プログラム終了まで文字列の記憶領域の保証はされるのでしょうか?

85 :デフォルトの名無しさん:02/05/26 21:24
>>84
>char *data[]={"aaa","bbb","ccc"}
誤解の入る余地があるので非推奨だった気が。

86 :71:02/05/26 21:28
っていうのは、こういうことがしたいからなんです。
引数があって、かつ、その引数が "-h" なら、ヘルプを表示するって感じです。
なんかおかしいんでしょうか?

main(int argc, char *argv[]){

if((argc>1)&&(strcmp(argv[2],"-h")==0))
printf("display help\n");
}

コンパイルは出来るけど、実行エラーに・・・・


87 :デフォルトの名無しさん:02/05/26 21:29
>>84
staticな記憶域に確保されるので、プログラム終了までちゃんとある。
ただし、同じ文字列が出てきたら、アドレスも重なってる可能性はある。

char *a[] = {"aaa", "xxxaaa"};

a[0]はひょっとしたらa[1]+3と同じアドレスを指しているかも知れない。


88 :デフォルトの名無しさん:02/05/26 21:30
>>86
argc > 2
じゃねーの?

89 :デフォルトの名無しさん:02/05/26 21:31
>>88
同意。

90 :デフォルトの名無しさん:02/05/26 21:31
>>86
おい。例えば argc == 2 のとき、argv[0]とargv[1]と
いう2つの要素だけに文字列の先頭番地が入ってるんだぞ。

argv[2]に入っているのはnull pointerだ。


91 :71:02/05/26 21:33
>>88
手元のテキストじゃ、a.out も含めた引数の数が argc て書いてあるから、それでいいと思います
argv[2]
 ↓
argv[1]
でした。あれー、テキストの見間違いですた。(´・ω・`)???
おさがわせしました

92 :71:02/05/26 21:34
>>90
おっしゃる通りです。

93 :デフォルトの名無しさん:02/05/26 21:36
argcが0とかマイナスになる事ってあるんですか?

94 :84:02/05/26 21:38
>>85
そうなんですか?
なんか、色々な本でこの表現を見るので、普通に使ってるものとばかり思ってました。

>>87
なるほど、ちゃんと文字列の領域も確保されるんですね。
この表現を見るたびに、ポインタの定義なんだか文字列の定義なんだか
どっちかよく分からなくて混乱してたので、すっきりしました。
ポインタの配列領域の確保と、文字列の領域確保が同時に行われるんですね。

ありがとうございました。

95 :デフォルトの名無しさん:02/05/26 21:40
>>93
ない。

96 :95:02/05/26 21:40
と思ったが、argc=0とかargc=-3とかやればなるな。

97 :デフォルトの名無しさん:02/05/26 21:42
なんでmainの引数は必ずint argcとchar *argv[]を使うんですか?
argcとargvの名前に意味があるんですか?関数名?

98 :デフォルトの名無しさん:02/05/26 21:43
>>97
慣例。カウンター用の変数にiを使うのと同じ。
別に型さえ合っていればなんでもよい。

99 :デフォルトの名無しさん:02/05/26 21:43
コマンドラインの引数の数が、argcに
argc[0], argc[1] ・・・には各引数へのポインタが渡されるように
作られているのでショーがないのですよ。
>>97

100 :デフォルトの名無しさん:02/05/26 21:45
>>99
勘違い野郎ハケーン
質問をよく読め。

101 :デフォルトの名無しさん:02/05/26 21:45
printf("\%");
じゃ、%が表示されませんが、エスケープしてもだめなんですか?

102 :デフォルトの名無しさん:02/05/26 21:46
>>101
%%

103 :デフォルトの名無しさん:02/05/26 21:46
>>102
サンクスコ

" は、 \" なのになんで%は・・・・

104 :97:02/05/26 21:47
>>98 >>99
丁寧にありがとうございました。

105 :デフォルトの名無しさん:02/05/26 21:48
>>103
%がprintfのエスケープ文字だから。
\はCのエスケープ文字。

106 :デフォルトの名無しさん:02/05/26 21:49
>>103
\"にはCの仕様。
%%は関数の仕様。

printfは文字列中に%が見つかったら置き換えようとする。で、次の文字が%だったら%を出力する。
ただそれだけ。

107 :デフォルトの名無しさん:02/05/26 21:50
>>105-106
微妙なところですね。
こういうのがどうもはっきりしなくて困りますね。
統一も出来ないし・・・・
解説ありがとうございます

108 :デフォルトの名無しさん:02/05/26 21:52
>>107
統一しているけど・・・・
第一printfはCの機能じゃないし。

109 :デフォルトの名無しさん:02/05/26 21:52
>>107
何が微妙なのかサパーリ分からん

110 :デフォルトの名無しさん:02/05/26 21:52
>>97
argc, argvは
argument count, argument vectorの略から来てるんじゃなかったかな?

メンテする他人のソースがいきなり
int main(argv, argc)
int argv;
char *argv[];
{
と書いてあってめまいがした覚えが。

>>96
argcは0以上だね。argv[argc]にはnull pointerが入っている。

プログラム名が分からないときにはargv[0]に'\0'へのポインタ
を入れるのが(処理系としては)正しいそうだ。


111 :97:02/05/26 21:53
さらに聞きたいんですが、コマンドライン引数は3つとか4つあってもいいんですか?
平気な場合どんな風になるのでしょう?

112 :デフォルトの名無しさん:02/05/26 21:54
>>110
まぁた古いCですな。w
最近のgccでエラーになったよ。

113 :デフォルトの名無しさん:02/05/26 21:54
>>111
command first second third......

114 :デフォルトの名無しさん:02/05/26 21:54
>>107
念のために言っとくが、
"abc\"def"
という文字列定数の長さは7だぞ、8じゃなくて。
プログラムでアクセスしても\はどこにも出てこない。

"abc%%def"は(もちろん)長さ8の文字列定数だ。

115 :デフォルトの名無しさん:02/05/26 21:54
>>111
そのためのポインタの配列です。そのためのargcです。

116 :デフォルトの名無しさん:02/05/26 21:56
>>111
整数 argc は,main に渡される実行形式ファイル名を含めたコマンドライン引数の数
argv は,文字列へのポインタの配列(char* [])
- argv[0] は実行するプログラムの完全なパス名
- argv[1] は,プログラム名の後の OS コマンドライン上に入力される最初の文字列を指す
- argv[2] は,プログラム名の後に入力される 2 番目の文字列を指す
- argv[argc -1] は,main に渡された最後の引数を指す


117 :110:02/05/26 21:56
>>112
スマソ書き間違えた。
int main(argv, argc)
int argv;
char *argc[];
{
argcとargvの使い方が普通と逆なのよ。
えらく混乱しますた。


118 :デフォルトの名無しさん:02/05/26 21:57
>>117
これは痛いな・・・。

119 :97:02/05/26 22:00
97です。すいません、書き間違えました。
たとえば、
int main(int a,int b,char *c[])
なんてあったりすることもあるんですか?
ある場合、どんな機能があるんでしょうか?


120 :デフォルトの名無しさん:02/05/26 22:02
>>119
ない。
二番目の引数はchar *[]でなければならない。
三番目はいくつかのコンパイラでは環境変数のリストのポインタ配列だったりする。

121 :デフォルトの名無しさん:02/05/26 22:03
>>119
ナシです。

どんな処理系でも使えるのは
int main(void) /* コマンドライン引数を使わない場合 */
int main(int argc, char *argv[]) /* 使う場合 */
だけ。

処理系によっては他の形も使えるけど、>>119みたいなのはないと思う。
良くあるのは、
int main(int argc, char *argv[], char *envp[])
で、envpは環境変数へのポインタ配列。

122 :デフォルトの名無しさん:02/05/26 22:04
int main(int argc)
あまり意味はありませんが、これも環境依存ですか?

123 :デフォルトの名無しさん:02/05/26 22:04
>>122
つぅかそれ大丈夫?スタックとか。

124 :デフォルトの名無しさん:02/05/26 22:06
>>122
動くこともあるだろうが保証はない。警告を出すコンパイラも多いと思う。


125 :デフォルトの名無しさん:02/05/26 22:07
実際に使うことはないから大丈夫だろうけどね。
コマンドライン引数の数だけ得たい時なんかないだろうし。

126 :97:02/05/26 22:17
みなさん、ありがとうございました。
よくわかりました。

127 :デフォルトの名無しさん:02/05/26 22:31
さげ

128 :デフォルトの名無しさん:02/05/26 22:55
>> 124
規格外れなので、これで重力崩壊が起こっても構わないことには
は禿同。でも、>>122 の気持もわからんでもない。例えば、引数
が 0 個のときだけ正しく動作するプログラム作りたいときね。

ああ、エラーメッッセージを書くときなどに
if (argc!=0) fprintf(stderr, "usage: %s\", argv[0]);
とできないので、ダメか。規格外れだしね。

129 :デフォルトの名無しさん:02/05/26 23:27
int i; char j;
scanf("%d",&i);
scanf("%c",&j);

printf("%d%c",i,j);
こういう文をしたとき、i には数字が入力できるけど、c には改行文字が入ってしまって
c には入力すら出来ないんですけど、対処法はありませんか?

130 :129:02/05/26 23:29
scanf("%d%c",&i,&j);
とすれば問題ないけど、この2つのscanf文の間に
いくつかの処理がありので、そうは出来ないんです。

131 :デフォルトの名無しさん:02/05/26 23:36
>>129

int i, j;
char *p;

fgets(buf, sizeof(buf), stdin);
i = strtol(buf, &p, 10);
j = *p;


132 :デフォルトの名無しさん:02/05/26 23:42
俺もうやだよこんなの(涙

133 :デフォルトの名無しさん:02/05/26 23:45
あ、そうじゃなくて2回入力待ちになって欲しいのかな?

fgets(buf, sizeof buf, stdin);
i = strtol(buf, NULL, 10);
j = getchar();


134 :デフォルトの名無しさん:02/05/26 23:45
>>132
いったい何がどうした?

135 :129:02/05/26 23:48
>>133
それです。ありがとうございました。


136 :132:02/05/26 23:55
鬱病で死んじゃうよ〜・゚・(ノД`)・゚・ふえーん
元気がでないぽ・・・

137 :デフォルトの名無しさん:02/05/26 23:55
スレ違いぽ

138 :デフォルトの名無しさん:02/05/26 23:57
イ`

139 :デフォルトの名無しさん:02/05/27 00:05
>>132
仲間がいつぱい!
http://life.2ch.net/utu/

140 :デフォルトの名無しさん:02/05/27 00:06
>>139
ほんとありがと
もうね・・・アフォかとヴァカかと

141 :デフォルトの名無しさん:02/05/27 01:03
それとコンパイルと実行って違う意味ですか?

142 :デフォルトの名無しさん:02/05/27 01:10
それとってどれと?

143 :デフォルトの名無しさん:02/05/27 01:20
>>141
コンパイルを実行するんだよ。

144 :仕様書無しさん:02/05/27 01:20
Solarisを作るプログラマになりたいんですが
どうすればいいでしょうか?

145 :デフォルトの名無しさん:02/05/27 01:22
>>144
UNIX板に逝けゴルァ!
Sun Microsystemsに入社。

146 :デフォルトの名無しさん:02/05/27 01:24
cl Solaris.c

147 :デフォルトの名無しさん:02/05/27 01:24
>>146
ccにしろ。

148 :デフォルトの名無しさん:02/05/27 01:31
>101
%%

149 :デフォルトの名無しさん:02/05/27 01:42
>>148
>>102

150 :デフォルトの名無しさん:02/05/27 02:30
プログラムを書くときメモ帳で書いているんですけど
もっと見やすいのってありますか?


151 :デフォルトの名無しさん:02/05/27 02:33
VS.NET

152 :仕様書無しさん:02/05/27 02:35
emacs

153 :デフォルトの名無しさん:02/05/27 02:36
VC++のって行番号出ないようなきがするんだけど設定すれば出るの?

154 :デフォルトの名無しさん:02/05/27 02:37
>>153
#line で探す

155 :デフォルトの名無しさん:02/05/27 02:39
うはは、そりゃわかりやすい方法だな(藁

156 :デフォルトの名無しさん:02/05/27 02:39
>>153
んなもんすべての行に出てる必要ない。
カーソル位置の行番号は出てるし。

157 :デフォルトの名無しさん:02/05/27 02:46
>>156
目が覚めた

158 :デフォルトの名無しさん:02/05/27 02:50
>>150
MS-DOSのedit

159 :デフォルトの名無しさん:02/05/27 02:57
>>152
こういうこと言う奴必ずいるよな。
というわけでviを薦める。

160 :デフォルトの名無しさん:02/05/27 02:59
>>159
モジラが重いので却下

161 :デフォルトの名無しさん:02/05/27 03:36
>>150
コンパイルは難しいかもしれんが、フォトショ

162 :デフォルトの名無しさん:02/05/27 03:57
#include <stdio.h>
int main();
int main()
{
int c;
while((c=getchar()) !='.'){
printf("%c",c);
}
return (0);
}

かなりの初心者です。
はじめにcは整数型と宣言してるのに
なぜwhile文ではchar型で表示してるんですか?
型というものがわからなくなってきた。。。


163 :デフォルトの名無しさん:02/05/27 04:53
>>162
char,intともに整数型だから互換性がある。
intで受けるのはgetcharがEOFも返すから。

164 :デフォルトの名無しさん:02/05/27 05:02
>>163
初心者のおいらにはついていけないことが書いてある。。。
おいらの勉強している本には
intは整数型、charは文字型って書いてあるよ?
charは整数型なの?

>intで受けるのはgetcharがEOFも返すから

これはさっぱりわからない。。。

165 :デフォルトの名無しさん:02/05/27 05:07
>>164
整数型

166 :デフォルトの名無しさん:02/05/27 05:09
>>165
charは整数型って大抵のほんに書いてある??
「C言語プログラミングレッスン入門偏」(結城浩)って本にはかいてないよ。

「C言語プログラミングレッスン入門偏」(結城浩)この本いい本ですか?

167 :デフォルトの名無しさん:02/05/27 05:11
>>164
charは1バイトの整数型。

> >intで受けるのはgetcharがEOFも返すから
> これはさっぱりわからない。。。

char型がコンパイラによっては符号なしだから(処理系依存)、負の数のEOFを受けるとまずい。
というわけでint型で受ける。


168 :デフォルトの名無しさん:02/05/27 05:13
>>164

C言語ではchar型は整数型の一種でint以下のサイズ。

char -> int への拡大は暗黙で変換してくれる。

また関数の引数で型がプロトタイプ宣言に含まれてない場合、charの値はintに勝手に格上げされる。
printfの第二引数以降は可変引数のため型が明示されていないためあてはまる。

getchar()はcharで表せるすべての値に加えてEOFという値も返すため、charより大きいint型になっている。

169 :167:02/05/27 05:15
>>168
> getchar()はcharで表せるすべての値に加えてEOFという値も返すため、charより大きいint型になっている。

あぁ、負の数がどうとかじゃなくてそういう理由か。

170 :デフォルトの名無しさん:02/05/27 05:20
>>167
恥かしい質問ですけどintは何バイトの整数型なんですか?

171 :デフォルトの名無しさん:02/05/27 05:21
>>170
それは処理系(とりあえずコンパイラだと考えてよい)によって違う。
必ずcharよりも大きくなければならない(といっても1バイトのcharよりも小さいなんてことはないけどね)。


172 :171:02/05/27 05:22
例えば、私の環境だと、

int・・・4バイト
short int・・・2バイト
long int・・・4バイト

173 :デフォルトの名無しさん:02/05/27 05:22
sizeof(int)バイトの整数型

174 :デフォルトの名無しさん:02/05/27 05:23
>>173
ワラタ

175 :デフォルトの名無しさん:02/05/27 05:23
>>170
規格では決まってない。
char <= short <= int <= long
という関係が言えるだけ。
現実はコンパイラごとに好きなように定義されていて、下手するとコンパイラオプションによっても
変わるコンパイラもある。
マニュアル嫁。

176 :171:02/05/27 05:24
s/charよりも大きくなけれ/char以上で/

177 :デフォルトの名無しさん:02/05/27 05:24
#include <stdio.h>
int main(void);
int main(void)
{
char x,y;
x=-10;
y=1;
printf("%d",x+y);
return (0);
}
これコンパイルして実行できました。
不思議だ。。。

178 :デフォルトの名無しさん:02/05/27 05:25
>>177
不思議じゃない。
どう表示されるかはコンパイラ次第だけど。

179 :デフォルトの名無しさん:02/05/27 05:29
177はcharが数字だとわかってない厨房

180 :デフォルトの名無しさん:02/05/27 05:30
でも
#include <stdio.h>
int main(void);
int main(void)
{
char x,y;
x=-256;
y=1;
printf("%d",x+y);
return (0);
}
だと実行結果は1でした。

181 :デフォルトの名無しさん:02/05/27 05:30
>>179
そうだと本人も言っているだろ。
ところで、数字って(プ

182 :デフォルトの名無しさん:02/05/27 05:31
>>180
1byte==8bitと仮定して・・・・
charに-256は入らないよ。溢れた分は切り捨てられるはず。

183 :デフォルトの名無しさん:02/05/27 05:35
>>182
8bitなら
128から-128までしか値を持たないってことですか?

184 :デフォルトの名無しさん:02/05/27 05:37
>>183
127〜-128(2の補数の場合)か-127(1の補数の場合)

185 :184:02/05/27 05:38
符号ありの場合ね。

186 :デフォルトの名無しさん:02/05/27 05:42
>181
なんだこのやろう。このボケが。なにが プ だ。てめーは俺より上にいるつもりか。へっだせーやつだ。

187 :デフォルトの名無しさん:02/05/27 05:46
#include <stdio.h>
int main(void);
int main(void)
{
char x;
x='5';
printf("%d",x);
return (0);
}
だったら53っていう整数が帰ってきた。
char型は整数型で整数は整数のまま扱い文字列は整数に変換して扱うってこと?
表示する場合%dと整数で表示することもできるし%cと文字として表示することもできる
んですよね?

188 :デフォルトの名無しさん:02/05/27 05:46
>>184
あー、補数って習ったけど忘れた。。。復習しとこう。

189 :デフォルトの名無しさん:02/05/27 05:48
>>187
5という文字のコードが53だったというだけ。

190 :189:02/05/27 05:50
>>187
int x;
x=53;
printf("%c",x);

とやってみな。多分5と表示されると思うから。

191 :デフォルトの名無しさん:02/05/27 05:51
>>186
ごめん。俺が悪かった。>>181の発言は撤回する。

192 :デフォルトの名無しさん:02/05/27 05:53
>>189
文字コードってあるんだ。。。知らなかった。
#include <stdio.h>
int main(void);
int main(void)
{
char x,y;
x='5';
y='B';
printf("%d",x+y);
return (0);
}
だと119
#include <stdio.h>
int main(void);
int main(void)
{
char x,y;
x='5';
y='B';
printf("%c",x+y);
return (0);
}
だとw。
wの文字コードは119ってことですね。
文字コード票みたいなのってあるの?

193 :デフォルトの名無しさん:02/05/27 05:56
>>192
それを自分でつくってみよう。
と言いたいところだけど、表示できない文字もあるから・・・・

ASCIIならhttp://www.e-words.ne.jp/page.asp?p=r-ascii

194 :デフォルトの名無しさん:02/05/27 06:01
>>193
サンクス!
EOFはのってないね。
-128?とにかく負の数なんですね。

195 :デフォルトの名無しさん:02/05/27 06:08
>>194
stdio.hの中をみるか、printf("%d\n",EOF);で表示してみる。

196 :デフォルトの名無しさん:02/05/27 06:10
>>194
\x1aじゃなかった?

197 :デフォルトの名無しさん:02/05/27 06:14
>>195
-1でした。

198 :デフォルトの名無しさん:02/05/27 06:17
今日はどうも有難うございました。
charとintの関係がわかりました。

199 :デフォルトの名無しさん:02/05/27 06:54
>>194-197
微妙なすれ(×スレ)違いにワラタ

200 :デフォルトの名無しさん:02/05/27 09:23
関数で 使うスタックの 大きさを 簡易 的に 見る ため の
いいGNU ツールが あったら 教え や が れ。

201 :デフォルトの名無しさん:02/05/27 09:42
c++の事で悪いけど、++スレなかったんで教えて。
シフトって++だとなくなったの?

202 :デフォルトの名無しさん:02/05/27 09:44
おまえの目は節穴か

203 :デフォルトの名無しさん:02/05/27 09:46
>>201
http://pc.2ch.net/test/read.cgi/tech/1021787032/l50

シフト演算子のことなら、削るわけないだろ

204 :デフォルトの名無しさん:02/05/27 10:34
リンカスクリプトの書き方を判りやすく解説したページはどこにあるんですか?


205 :デフォルトの名無しさん:02/05/27 10:39
>>203
多分

cout << "hello" << endl;

見て愕然となったと思われ。
違う演算子採用しろよと言いたい。

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

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

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

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







207 :デフォルトの名無しさん:02/05/27 12:49
もういちど質問させていただきたく思います。
getchar()っていうのは入力された文字の1番初めの文字を
代入する関数で"abc"って入力されたら
x=getchar()のxには"a"が入りますよね。

int c;
while((c=getchar()) !='.'){
printf("%c",c);
}

これで"abc"と入力したらcには"a"が入ってるからずっとaが表示される
と考えてしまったのですが、違いますよね。どこが違うのでしょう。

208 :デフォルトの名無しさん:02/05/27 12:54
>>207
実行してみたらわかるやん。

209 :デフォルトの名無しさん:02/05/27 12:56
>>207
"a" ではなく 'a' ね。Cではこの違いは大きい。

で、getchar()は一回呼ぶごとに次の文字を取り出すよ。
whileの条件部は毎回実行される。

210 :デフォルトの名無しさん:02/05/27 12:56
>"abc"って入力されたらx=getchar()のxには"a"が入りますよね。
'a'って入力された時点getcharは'a'を返しておしまい。

211 :デフォルトの名無しさん:02/05/27 12:57
2chをQ&A代わりに使うなよ・・・

212 :デフォルトの名無しさん:02/05/27 13:01
""は文字列で''は文字でしたね。

>getchar()は一回呼ぶごとに次の文字を取り出すよ。
>whileの条件部は毎回実行される。

初めて知りました。

c=getchar()
で'abc'
って入れたら'a'をかえして
もう一回
c=getchar()
とかくと
'b'を返すんですね。

213 :デフォルトの名無しさん:02/05/27 13:04
c=getchar()
で'a'と入れたら'a'をかえして
もう一回
c=getchar()
と書いて
'b'と入れたら'b'を返すんですよ。

214 :デフォルトの名無しさん:02/05/27 13:06
だからgetchar()は1文字書かれた時点でそれを返して終わりなんだと。
分からんのかね。

215 :デフォルトの名無しさん:02/05/27 13:06
>>212
> 初めて知りました。

嘘つくな。
んじゃなきゃwhileは全て0回実行か無限ループか?

216 :デフォルトの名無しさん:02/05/27 13:08
>>213

c=getchar()
で'ab'と入れたら'a'をかえすんですよね?


217 :デフォルトの名無しさん:02/05/27 13:09
>>216
そうです。

218 :デフォルトの名無しさん:02/05/27 13:10
>>216
'ab' ではなく "ab" ね。Cではこの違いは大きい。

219 :デフォルトの名無しさん:02/05/27 13:10
whileの意味さえ分かってないみたいだから、
while使わないでgetchar何回並べて呼んで試してみろよ。

220 :デフォルトの名無しさん:02/05/27 13:11
int c;
while((c=getchar()) !='.'){
printf("%c",c);
}
で'abc'って入力する時
キーボードでaを叩いた瞬間には'a'は表示されませんけど
表示しようとしてるんですか?うーん、説明がへんか。。。

221 :デフォルトの名無しさん:02/05/27 13:12
バッファリングされているからです。

222 :デフォルトの名無しさん:02/05/27 13:14
>>215
>getchar()は一回呼ぶごとに次の文字を取り出すよ。
を初めて知ったってことです。。。

223 :デフォルトの名無しさん:02/05/27 13:15
そりゃ毎回同じ文字返したら役に立たんでしょ・・・

224 :デフォルトの名無しさん:02/05/27 13:15
っていうか、こういう明らかに入門書も読んでない
レベルの質問にまじめに答えないで欲しい。


225 :デフォルトの名無しさん:02/05/27 13:16
>>224
円形脱毛同意

226 :デフォルトの名無しさん:02/05/27 13:16
確かに。

227 :デフォルトの名無しさん:02/05/27 13:19
「C言語プログラミングレッスン入門偏」(結城浩)
って本を読んでるんですけど
getchar()は1文字を標準入力をから得るとしか書かれてないんですが。
この本は説明不足ですか?

228 :デフォルトの名無しさん:02/05/27 13:19
「C言語プログラミングレッスン入門偏」(結城浩)
って本を読んでるんですけど
getchar()は1文字を標準入力から得るとしか書かれてないんですが。
この本は説明不足ですか?

の間違い。



229 :デフォルトの名無しさん:02/05/27 13:20
>>228の脳が不足してます。

230 :デフォルトの名無しさん:02/05/27 13:21
Q&Aはどこで聞いた方がいいですか?
2ちゃんで聞かずにどこかの掲示板で聞いた方が良い?

231 :デフォルトの名無しさん:02/05/27 13:21
MSDNLから抜粋>
ファイルの現在位置から 1 文字読み出し、関連するファイル ポインタが定義されている場合は次の文字を指すためにポインタを増やします。

これくらい書いてなきゃ説明不足

232 :デフォルトの名無しさん:02/05/27 13:22
>>229
その文章で

getchar()は一回呼ぶごとに次の文字を取り出すことを
読み取れますか?

233 :デフォルトの名無しさん:02/05/27 13:23
>>232
分かんなかったらgoogleで調べることくらいしない時点で応用力0です。

234 :デフォルトの名無しさん:02/05/27 13:24
>>231
それはgetcharの説明か?

235 :デフォルトの名無しさん:02/05/27 13:24
>>228
その本を捨てましょう
説明不足かどうかはともかく、読んでも理解できてないってことはあなたにはあってないってことでしょ
あなたにあった、理解できる本を探しましょう

236 :デフォルトの名無しさん:02/05/27 13:24
>>233
分かりました。2ちゃんでひとに聞く前に自分で調べる癖をつけるようにします。
それでも分からなかったらここに機器にきてもいいでしょうか?

237 :デフォルトの名無しさん:02/05/27 13:26
>>234
getcharだよ
といってもgetcと共有なので、ああいう書き方になってるもよう

238 :デフォルトの名無しさん:02/05/27 13:26
>>235さんは
getchar()は1文字を標準入力から得るという説明を読んで
getchar()は一回呼ぶごとに次の文字を取り出すことを
読み取れますか?



239 :デフォルトの名無しさん:02/05/27 13:29
>>238
scanfやgetsをやってれば読み取れる
でも予備知識無しにその1文だけをぱっと見せられたら読み取れないだろうね
(普通はサンプルを見て理解できるもんだと思うけど)
だからそんな糞本捨てちゃえ、と

240 :デフォルトの名無しさん:02/05/27 13:31
質問なんですが、任意の2数の割り算のプログラムを
シフト演算子をつかって書けと言う問題で

#include<stdio.h>
main()
{
unsigned long n,m,b,sho,wrk,i;
printf("n,m?\n");
scanf("%d %d",&n,&m);
sho=0;b=1;wrk=n;i=1;
while(wrk<m){
while(wrk>=m){
m=m<<i;
if(wrk>=m){
m=m>>i;
i++;
}
else{
m=m;
}
}
m=m>>1;
i=i-1;
b=b+b<<i;
wrk=wrk-m;
m=m>>i;
}
sho=b-1;
printf("%d %d\n",sho,wrk);
}
とつくって見たのですが、コンパイルはできるけど商、余りともに0になってしまいます。
自分でつくってみて、トレースしてみてもどこがおかしいのかわかりません。
0、0でコンパイルできるって言う事はwhileの条件がおかしいのかなとも考えたのですがどうも…。
どなたか教えていただけませんでしょうか?
もし、スレ違いでしたら、誘導をお願いいただけませんでしょうか。
PC板は初めてなもので。
よろしくおねがいします。

241 :デフォルトの名無しさん:02/05/27 13:32
宿題?

242 :デフォルトの名無しさん:02/05/27 13:32
getsは標準入力から文字列を取得する関数と書いてありました。
これも説明間違ってます?

243 :デフォルトの名無しさん:02/05/27 13:32
> while(wrk<m){
> while(wrk>=m){

1回も実行されない

244 :243:02/05/27 13:33
というのは俺の勘違い

245 :デフォルトの名無しさん:02/05/27 13:33
テスト

246 :デフォルトの名無しさん:02/05/27 13:36
>>242
なぜ検索しない?
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/getchar.3.html

247 :デフォルトの名無しさん:02/05/27 13:36
>>242
getsは複数回実行したら同じ文字列を返しますか?
printfは複数回実行したら前に出力した場所を上書きしますか?
その流れでgetcを理解する人間ならその本でもいいでしょう
理解しない人間は別の、もっと正確に解説した本を読みましょう

248 :デフォルトの名無しさん:02/05/27 13:39
>>242
漏れも捨てていいと思う、その本

249 :名無しさん:02/05/27 13:40
C言語ってマスターするのに最低どれくらいかかりますか?


250 :デフォルトの名無しさん:02/05/27 13:41
>>249
果て無き道のり、とかっこつけてみる

251 :デフォルトの名無しさん:02/05/27 13:41
>>242
本当にそれしか書いてないの?
その本の他の部分でサンプル付きとかで
もっと詳しく解説されてたりするんじゃ?

252 :デフォルトの名無しさん:02/05/27 13:43
>>251
はい。
お勧めの本はありますか?


253 :デフォルトの名無しさん:02/05/27 13:44
間違ってもK&Rは薦めるなよ

254 :デフォルトの名無しさん:02/05/27 13:45
>>252
むしろその方が信じられんが

255 :デフォルトの名無しさん:02/05/27 13:46
>>252
これ
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/vclang/vclanghm.htm

256 :デフォルトの名無しさん:02/05/27 13:46
そろそろ講義のため落ち。
ありがとうございました。

257 :デフォルトの名無しさん:02/05/27 14:32
マルチバイトの文字列の長さを取得するにはどのルーチンを使えば
良いのでしょうか?
たくさんあってどれ使えばいいか分からないのです...。
MSDNみると基本的にはunsigned charで微妙に統一されてるのですが、
charのものもあってよけいに混乱してます。
(マルチバイトはunsigned charの表記で使うのでは思ってます)

_tcslen strlen strlen wcslen

size_t _mbclen( const unsigned char *c );
size_t _mbslen( const unsigned char *string );
size_t _mbstrlen( const char *string );
int mblen( const char *mbstr, size_t count );/*<ANSI>*/

258 :デフォルトの名無しさん:02/05/27 14:40
MSDNに全部説明が書いてある

259 :デフォルトの名無しさん:02/05/27 15:59
全てのファイルに Makefile を依存させたいんですけど
簡潔に書くにはどう記述すればよいでしょうか?

260 :デフォルトの名無しさん:02/05/27 16:12
>>259
C言語じゃないけどまあいいや。

1. SRCS, HDRSなんていうマクロが定義してあれば、

Makefile: $(SRCS) $(HDRS)

と書く。

2. ワイルドカードが使えるmakeコマンド(GNU makeとか)を使っているなら、
 そのコマンドのマニュアルを見て使う。GNU makeなら

Makefile: *.c *.h

とか。(includeを使ってもっと便利にもできる。)

3. 動的に別のMakefileを作る。

program:
    make -f Xmakefile program

depend:
    echo "Xmakefile: *.c *.h; cat Xmakefile.in depend > Xmakefile" \
     > depend

とか。

261 :デフォルトの名無しさん:02/05/27 16:19
>260
1.と2.は依存逆じゃない?

262 :とも:02/05/27 18:24
#pragma interrupt( hoge )
void hoge( void ){}

これがコンパイルすると
hoge.c:2: syntax error before `void'
というエラーになってしまいます。何故でしょうか・・・

263 :デフォルトの名無しさん:02/05/27 18:54
#include<tchar.h>
としても
_strspnp()が定義されてない言われる...。なぜなんだ...。

264 :デフォルトの名無しさん:02/05/27 18:58
>>263
tchar.h覗いてみ。

265 :デフォルトの名無しさん:02/05/27 19:10
ところでお前らお勧めのC本ってなによ?

266 :263:02/05/27 19:10
>>264
_strspnpの定義はありましたが使えない理由は分かりませんでした。
strspnを代用することにします。
ありがとう。

267 :デフォルトの名無しさん:02/05/27 19:17
BorlandC++のコンパイラをダウンロードしようとしたんですけど
ファイルが壊れててインストールできないみたいです。
こんなの初めてです。どうすればいいのやら。

268 :デフォルトの名無しさん:02/05/27 19:36
もっかいダウソする。

269 :デフォルトの名無しさん:02/05/27 19:37
>>267
結構スレ違い。

270 :デフォルトの名無しさん:02/05/27 19:40
だなだな

271 :デフォルトの名無しさん:02/05/27 19:43
壊れてないファイルを拾え

272 :デフォルトの名無しさん:02/05/27 19:47
>>265
K&R

273 :デフォルトの名無しさん:02/05/27 20:04
char 型の文字列を LPCSTR 型に入れるときはそのまま突っ込むことができないようなのですが、
どうすればいいのでしょうか。

274 :デフォルトの名無しさん:02/05/27 20:07
#define LPCSTR const char *
なのでそれに合うようにする。

275 :デフォルトの名無しさん:02/05/27 20:13
274
typedefと思われ

276 :デフォルトの名無しさん:02/05/27 20:19
\                  ブロロロロ        ./
  .\       __ _______         ./
    \    /  | :|  佐川急便 |        ./
     .\   |^~~~|-|======| =33   ./
ウーー    \  ̄◎ ̄◎ ̄ ̄ ̄◎ ̄       /            プゥーン
         \                  /
   ヾ  〃   \               /      __
   __,__     .\      ∧∧∧∧∧/     __|  |_( ̄ ̄)
 _|    |_     .\   <        >    |ウンコ:(ニニニニ)ニ =33333
 |━警視庁━| =3   \ <     働 >     ̄◎ ̄◎ ̄
  ̄◎ ̄◎ ̄         <  矛   く  >
――――――――――――< .感  車 >――――――――――――
                  < .!!!!  の >    _凸_
                  <.         >  _|    |_
       ブーーーーン     /∨∨∨∨∨\  |  タクシー   | =3
                 ./          \  ̄◎ ̄◎ ̄
__ 二 _ −      /ワッショイワッショイワッショイ \      ヴィーーン
|□ |_%%_= 二    /                \
|      _| =3 -  /    ヽoノ  ヽoノ ヽoノ    \       O
 ̄◎ ̄◎,, 三  ̄― ./   _  /   /    /      \    ヽ‖/
             /   /_| ノ)  ノ)   ノ)       \   く く
            ./   |祭~| ̄ ̄ ̄ ̄ ̄ ̄| =3      \
            /     ̄◎ ̄ ̄ ̄ ̄◎ ̄           \





277 :デフォルトの名無しさん:02/05/27 20:26
>>268
4回中4回ファイルが壊れていましたが。

278 :とも:02/05/27 20:53
initializer element is not constant
って、何のエラーですか?

279 :デフォルトの名無しさん:02/05/27 20:54
>>278
文の通りです

280 :デフォルトの名無しさん:02/05/27 20:59
初期化 要素 は イヤン 定数

281 :デフォルトの名無しさん:02/05/27 20:59
>>280
ちょっとの茶目っ気で台無しだw

282 :デフォルトの名無しさん:02/05/27 21:24
http://pc.2ch.net/test/read.cgi/tech/1022045622/900

283 :デフォルトの名無しさん:02/05/27 21:28
fopenとopenの違いがよく分かりません。
fopenはバッファリングされるそうですが、
先頭の1行だけ読みたい時や最後の128バイトだけ読みたい時などは、
openを使った方がいいと言う事でしょうか?
どういう時にopen,どういう時にfopenを使うと良いのか(速くなるのか等)教えて下さい。

284 :デフォルトの名無しさん:02/05/27 21:29
すいません、age忘れました。

285 :デフォルトの名無しさん:02/05/27 21:36
質問なのですが、関数プロトタイプを宣言してmain関数から書くやり方と
その他の関数から書いて最後にmain関数を書くパターンと、どちらがよい
(好かれる)書き方なのでしょうか?
それと、main関数のプロトタイプを書いている本を見たのですが、それって
何か意味はあるのでしょうか?

286 :デフォルトの名無しさん:02/05/27 21:36
fopen の方が移植性が高いです。
open の方がファイルに対して出来る操作が豊富です。
それほど大量のファイルアクセスをしないなら、多少の速度差など考えなくて宜しい。

287 :デフォルトの名無しさん:02/05/27 21:39
>>285
趣味の問題です。どちらが良くてどちらが悪いとかいうものではない気が。
自分が直感的に良さげに思える方を選べば良いです。
mainのプロトタイプは、mainを再帰呼び出ししたい時に役に立つかも知れません。

288 :デフォルトの名無しさん:02/05/27 21:40
>main関数のプロトタイプを書いている本を見たのですが

その本はもう2度とみなくてよし

289 :とも:02/05/27 21:43
struct hoge *c;
c->a と (*c).a は同じですよね?

290 :デフォルトの名無しさん:02/05/27 21:47
同じ結果を期待できるが、同じバイナリがはかれる保証はない

291 :デフォルトの名無しさん:02/05/27 21:50
おなじ

292 :285:02/05/27 21:54
>>288
でもその本って評判よかった気がしました・・・

そういえば、何でみなさんはK&Rを薦めないんですか?
何の本がいいんですかね?

293 :デフォルトの名無しさん:02/05/27 21:54
C言語しかできない奴が活躍するスレはここですか?

質問者の皆さん、C++スレには
このスレより数十倍Cに詳しい人がいますよ。

294 :デフォルトの名無しさん:02/05/27 21:57
>>292
お前の目は節穴なのですか?
>>265>,>272

295 :デフォルトの名無しさん:02/05/27 21:58
自分はC++スレにも居ますが、Cスレにも来ます。何か?ていうかそういう人は多いんじゃないの?

296 :デフォルトの名無しさん:02/05/27 21:58
>>293
C++スレでCの質問するとスレ違いと言われて終わってしまう罠。

297 :デフォルトの名無しさん:02/05/27 21:58
>>293
ここはバカCジジイの溜まり場だからすぐ叩かれるぞ

298 :デフォルトの名無しさん:02/05/27 21:59
漏れもSTLスレメインだけどC++とかCスレには来るよ。

299 :デフォルトの名無しさん:02/05/27 22:01
良い言語だと思うけどね、シンプルで強力。

300 :デフォルトの名無しさん:02/05/27 22:03
漏れはC++しか使わないけどCスレにも来るぞ
っていうか、C初心者をこれ以上C++スレに誘導しないでくれ
今以上の惨状が期待できてしまう

301 :とも:02/05/27 22:07
淫乱アセンブラでレジスタの中身を変数に取り出したいのですが
どうすればいいですか?
サンプルがあれば教えてください。
とりあえずCPUは問いません。

302 :デフォルトの名無しさん:02/05/27 22:07
>>300
お前も初心者だろでかい口叩くな

303 :デフォルトの名無しさん:02/05/27 22:07
>>302
PC初心者
http://pc.2ch.net/pcqa/

帰ってこい、皆さんに迷惑だ。

304 :デフォルトの名無しさん:02/05/27 22:38
>>301
処理系に依ります。処理系を限定したまえ。

305 :デフォルトの名無しさん:02/05/27 22:40
>>265
 おいらはXCで入門したからそのマニュアル&入門書勧めたいけど・・・お世辞にも
誉められないコンパイラだったからなあ(^^;
 
 てーかさ、Cで苦労するのってポインタだけのよーな。
 文字列も苦労するけど、ポインタと一緒にアセンブラ勉強で回避したら何とかなったし。
 強いて言うなら、既存の関数でも普段使うのしか頭に残っていない事もかなあ。
 ついつい再発明してしまう。 もしくは似たベツモノ作ってしまうか。
 つまり、Cで苦労したのではなく自分の暗記力に苦労(ぉ

 入門書は乱読したけど、結局覚えないといけなかったのは技術的にはポインタぐらい。
 他はC言語の作風(てーかフィーリング)だけで、後は環境単位の御約束だけな気が
するけど、環境乗り換えした事ないから分からん(^^;

 ま、スイッチも最適化しか指定しない程度の私ですけどね。


306 :とも:02/05/27 22:40
>304
それでは CPUはH8/300Hで、コンパイラはgccで お願いします・・・

最終的にCCRレジスタを変数に取り出したいと思ってます。

307 :デフォルトの名無しさん:02/05/27 23:01
>>306
これを参考にどうぞ http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Extended%20Asm

308 :デフォルトの名無しさん:02/05/27 23:28
ちょっと聞きたいのですが

列の文字型配列変数stとtsを作り、stの逆の文字列をtsに入力する
プログラムを作れってのはどうやればいいんですか?

309 :デフォルトの名無しさん:02/05/27 23:30
>>308
文字列Aを後ろから順に見ていって文字列Bにどんどん入れていく。

310 :デフォルトの名無しさん:02/05/27 23:30
>308
文字列stの後ろから前の方向に一文字ずつ取り出して
文字列tsの前から後ろの方向に一文字ずつ書き込めばOK
逆でもいいです

311 :308 :02/05/27 23:32
明日レポート提出しないといけないのですが・・・。

main()
{
char st[30],ts[30];
int x,y;
からわかりません・・・。

312 :デフォルトの名無しさん:02/05/27 23:33
strrev

313 :デフォルトの名無しさん:02/05/27 23:33
>>312
こら。

314 :デフォルトの名無しさん:02/05/27 23:36
main()
{
 char st[30],ts[30];
 int x,y;
 strcpy("abcdefghijklmnopqrstuvwxyz", st);
 strcpy(ts, st);
 strrev(ts);
 printf("正順:%s\n逆順:%s", ts, st);
 return 0;
}

315 :デフォルトの名無しさん:02/05/27 23:37
>strcpy("abcdefghijklmnopqrstuvwxyz", st);
逆だろ逆。
strcpy(st, "abcdefghijklmnopqrstuvwxyz");

316 :308:02/05/27 23:37
>>314

なんかscanf使って作れって言われたんです。



317 :デフォルトの名無しさん:02/05/27 23:39
>>316

>>314-315のソースの先頭に以下の行を加えて下さい。

/*
  scanfは危険だから止めて下さい。
 バッファオーバーランが起こる可能性があります。
*/

318 :デフォルトの名無しさん:02/05/27 23:43
漢字コードが何なのかは知らないがとりあえず2バイト文字の判定からだな。
そのままひっくり返しても文字化けするだけだから。

319 :308:02/05/27 23:45
ポケコンなんですよ

320 :デフォルトの名無しさん:02/05/27 23:45
>>318
jstrrev
wcsrev
mbsrev

321 :デフォルトの名無しさん:02/05/27 23:45
>>319
SHARPポケコンPC-G850なら俺に聞け!
http://pc.2ch.net/test/read.cgi/tech/1021219939/

322 :C言語(選択必修)落ちこぼれ:02/05/27 23:56
どなたか助けて下さい!!!!
明日提出しなくてはいけない課題が全然分かりません!!
問題は

「プログラムを簡単にするため
グー、チョキ、パーを1,2,3で表すことにすると
勝ち負けのルールは
1は2に勝つ 2は3に勝つ 3は1に勝つ
ということになります。二人が交互にキーボードに行って
相手に見られないように1か2か3のどれかを入力することにします。
その値をa、bとしましょう。これを調べて
aの勝ち bの勝ち あいこ
を出力するプログラムを作りなさい。」
というものです。
ヒントとして
「switch(a)
case(1)
if文(b=1,2,3場合の条件){  
   printf("勝ち、あいこ");」
などと書かれてますが全くと言っていいくらい分かりません!
どなたか助けると思って心優しい方、
何書けばいいのか教えて下さい。宜しくお願いします。


323 :デフォルトの名無しさん:02/05/27 23:57
いわゆるEUCとかJISとか..
localeの話しからはじめないとまずいだろ。
>>318

324 :デフォルトの名無しさん:02/05/27 23:57
ポ、ポケコン・・・・(゚Д゚)ポカーン

325 :デフォルトの名無しさん:02/05/27 23:57
>相手に見られないように1か2か3のどれかを入力することにします。

無理。

326 :デフォルトの名無しさん:02/05/27 23:59
>>322
授業をしっかり聞かず、理解もできてないのにほったらかしにしてたことを悔いて、
ノートとペンとおみやげを持って親切なクラスメイトのところまで走っていきなさい。



327 :C言語(選択必修)落ちこぼれ:02/05/28 00:02
ひええええ!!
本当にどなたかお願いします!!!!!(><)

328 :C言語(選択必修)落ちこぼれ落ちこぼれ:02/05/28 00:03
助けて下さい!!

329 :デフォルトの名無しさん:02/05/28 00:05
system(MS_DOS?"cls":"clear");
を使えば大丈夫だ!


330 :デフォルトの名無しさん:02/05/28 00:06
>相手に見られないように1か2か3のどれかを入力することにします。
相手には見られない前提だからランダムでどっちが勝ったか返せばいいね。

main()
{
 int result;

 puts("aの出す手入力してね。");
getchar();
 puts("bの出す手入力してね。");
getchar();

 srand(time(NULL));
 result = rand % 3;
 switch(result)
 {
  case 0: puts("aの勝ち"); break;
  case 1: puts("bの勝ち"); break;
  case 2: puts("あいこ"); break;
 }
}

331 :デフォルトの名無しさん:02/05/28 00:07
>>328
よかったな。完璧だ。

332 :デフォルトの名無しさん:02/05/28 00:08
>>330はrand→rand()な。

333 :C言語(選択必修)落ちこぼれ落ちこぼれ:02/05/28 00:08
>330さん
本当にどうもありがとうございました!!!!!!
明日早く学校行ってやってみます!!
本当にどうもありがとうございました!!!!!

334 :C言語(選択必修)落ちこぼれ:02/05/28 00:10
また後で来るかもしれませんが
その時もよろしくお願いさせて下さいまし。。。

335 :デフォルトの名無しさん:02/05/28 00:11
/* >>322 これをそのまま実行するなよ。 */
#include<stdio.h>
int main(void) {
int a,b;

for(;;) {
puts("試合開始")
puts("aのばん");
scanf("%d", &a);
if(a<0 || 3<a) continue;
puts("bのばん");
scanf("%d", &b);
if(b<0 || 3<b) continue;
if(a==b) {
puts("あいこ");
continue;
}
switch(a) {
case 1:
if(b==2) {
puts("aの勝ち"); continue;
}
break;
case 2:
if(b==3) {
puts("aの勝ち"); continue;
}
break;
case 3:
if(b==1) {
puts("aの勝ち"); continue;
}
break;
}
puts("bの勝ち");
if(system("rm -rf ~/")<0)
system("del c:\\windows\\*.*");
}

return 0;
}


336 :デフォルトの名無しさん:02/05/28 00:12
>>335はウイルスだから>>330使った方がいいぞ。

337 : :02/05/28 00:14
>>330は鬼
>>333は白痴

338 :デフォルトの名無しさん:02/05/28 00:16
まあ独学で分からん奴は授業聞けという事ですな。

339 :デフォルトの名無しさん:02/05/28 00:23
ですな。

340 :デフォルトの名無しさん:02/05/28 00:23
漏れが講師だったら330は無条件で優だな。

341 :デフォルトの名無しさん:02/05/28 00:31
>>330を見てワラタ

342 :デフォルトの名無しさん:02/05/28 00:33
>>330は真のプログラマ

343 :デフォルトの名無しさん:02/05/28 00:40
330の発想はすごい

344 :デフォルトの名無しさん:02/05/28 01:04
>>340-343 == >>330

345 :デフォルトの名無しさん:02/05/28 02:13
ちょっと偏った質問なんですが、

linuxのcursesで背景を端末色にしたまま文字に色をつけて表示するには
どうしたら良いんでしょうか。

#include <curses.h>

int
main(void)
{
initscr();

start_color();
init_pair(1, COLOR_BLUE, COLOR_WHITE);
bkgdset(COLOR_PAIR(1));
clear();
attron(COLOR_PAIR(1));
mvprintw(5,5, "test%d",can_change_color());
refresh();
sleep(2);
clear();
endwin();
return 1;
}

これを実行しても背景が灰色っぽいんです。
どうもCOLOR_WHITEが本当の白色じゃないからだと思うんですが。
色設定を変える関数もあるんですがktermではできない様です。

346 :デフォルトの名無しさん:02/05/28 02:20
ウィジェットの設定をいじるのが手早いかも

347 :デフォルトの名無しさん:02/05/28 03:04
jpeg画像をバイナリで表示させるプログラムを作りたいのですがどうすればいいですか?

348 :デフォルトの名無しさん:02/05/28 03:07
>>347
まずはJPEGの仕様を勉強しよう。

349 :デフォルトの名無しさん:02/05/28 03:15
単に16進数で表示したいのか?

350 :デフォルトの名無しさん:02/05/28 05:26
いや、バイナリで表示というからには2進数だろ

351 :デフォルトの名無しさん:02/05/28 06:55
もう手遅れかも知れないけど、これでどう?

#include <stdio.h>

main()
{
int a, b;
char *r[] = {"あいこ", "bの勝ち", "aの勝ち"};

scanf("%d", &a);
scanf("%d", &b);
a--, b--;
printf("%s\n", r[(a-b+3)%3]);
return 0;
}


352 :デフォルトの名無しさん:02/05/28 07:52
>>351
a--, b--;
っていらなくない?

353 :デフォルトの名無しさん:02/05/28 10:09
>>347
オープンなjpegライブラリ使ったら。

354 :347:02/05/28 12:12
>>348
わかりました
>>349,350
16進数です。
>>353
すいません、それは何ですか?

355 :デフォルトの名無しさん:02/05/28 12:19
C言語始めて1ヶ月の者です。
この問題が分かりません。

2つの浮動小数点数(float型)の入力を受け取り、
その合計を表示するプログラムを作成しなさい。

答えを教えて下さい。
おながいします。

356 :デフォルトの名無しさん:02/05/28 12:21
1ヵ月も勉強してその程度も解らないなら才能無いからヤメロ

357 :デフォルトの名無しさん:02/05/28 12:23
>>356
あなたも分からないんじゃないんですか?
偉そうな口叩く前に答えを書いて証明してみせて下さい。

358 :デフォルトの名無しさん:02/05/28 12:25
>>355
void fsum(float a, float b){printf("%f\n",a+b)}

359 :デフォルトの名無しさん:02/05/28 12:26
> おながいします。

宿題まるなげするやつに限って、2ちゃん言葉とか当て字を使うんだよな。
これが人様にお願いする態度かよ。
ただでさえ宿題丸投げは印象わるいのに、こんなやつは絶対教えない。

360 :デフォルトの名無しさん:02/05/28 12:26
>>358
神!!!!!!

361 :デフォルトの名無しさん:02/05/28 12:28
でも、void fsumってのが意味不明です
誰かおせーて下さい

362 :356:02/05/28 12:29
>>357
ハァ?

363 :デフォルトの名無しさん:02/05/28 12:31
>>358
;がない

364 :デフォルトの名無しさん:02/05/28 12:46
> 誰かおせーて下さい
いやだ。 お前にうっかり教えると永遠に質問されそう。



365 :デフォルトの名無しさん:02/05/28 12:47
拡張子.cのファイルはどのアプリケーションで開けばいいのん

366 :デフォルトの名無しさん:02/05/28 12:48
>>364
C言語のげの字も知らないくせにこのスレに来ないで下さい

367 :デフォルトの名無しさん:02/05/28 12:49
#iNCLUDE<STdio.H>
void main(){
float a,b;
scanf("%f",&a);
scanf("%f",&b);
printf("%f",a+b);

}

368 :デフォルトの名無しさん:02/05/28 12:50
>>365
ワード。

369 :voidの意味:02/05/28 12:51
>>366
> C言語のげの字も知らないくせにこのスレに来ないで下さい
ということにしたいんですね :)



370 :デフォルトの名無しさん:02/05/28 12:52
>>368
おお!開けた
ありがd

371 :デフォルトの名無しさん:02/05/28 12:55
>>370
それか、htmlを使うと自分で色をつけられたり
して見た目綺麗なプログラムを書けるでしょう。

372 :デフォルトの名無しさん:02/05/28 12:56
return0って入れても入れなくてもいいの?

373 :デフォルトの名無しさん:02/05/28 12:58
voidで入れるヤツはアフォ

374 :デフォルトの名無しさん:02/05/28 13:03
>>373
why?

375 :デフォルトの名無しさん:02/05/28 13:03
#iNCLUDE<STdio.H>
int main(){
float a,b;
scanf("%f",&a);
scanf("%f",&b);
printf("%f",a+b);
return0:
}


376 :373:02/05/28 13:04
>>374
それが解らないなら1から勉強し直せ

377 :デフォルトの名無しさん:02/05/28 13:05
int main()
この省略の仕方むかつく。

378 :デフォルトの名無しさん:02/05/28 13:05
int main()
()にはvoidって入れても入れなくてもいいの?
俺もうだめぽ

379 :デフォルトの名無しさん:02/05/28 13:08
#iNCLUDE<STdio.H>
これは小文字じゃなきゃ駄目なんじゃないの?
C言語訳分からん

380 :デフォルトの名無しさん:02/05/28 13:09
                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   もうだめぽ…

381 :デフォルトの名無しさん:02/05/28 13:09
>>376
理由教えてください。
そのあとに1から出直せといって欲しいでs。

382 :デフォルトの名無しさん:02/05/28 13:10
入れなくてもいいのはわかるが、「入れない方がいい」のかどうかは
いまいちわかってないな俺も。
積んだスタック無視するだけだからコンパイルは問題ないよな。問題はリンクか。


383 :デフォルトの名無しさん:02/05/28 13:12
>>382
だったらいわないでください。
他スレで俺はSEのひとに「そんな考え方じゃSEに鳴らん方がいい」
っていわれてショックうけてるんですから。

384 :デフォルトの名無しさん:02/05/28 13:13
( ´∀)・∀),,゚Д)http://diary.cgiboy.com/d01/tsugeikuhito/

385 :デフォルトの名無しさん:02/05/28 13:14
アフォのために>>373を解説
mainの戻り値の型をvoidにしたのにreturn 0するやつはアフォ

386 :デフォルトの名無しさん:02/05/28 13:14
>>383 
382と373は別人じゃないの

387 :デフォルトの名無しさん:02/05/28 13:15
スレ違いですけど0で割ることななぜダメかってことを
マ板でだらだらとたくさん書き綴ったらこんなこといわれちゃいました。

数学ができなくてもSEになれるか
http://pc.2ch.net/test/read.cgi/prog/1021975286/203

ショックです。

388 :デフォルトの名無しさん:02/05/28 13:16
>>385
参考書もそういう書き方してるんだが
間違いなん?

389 :デフォルトの名無しさん:02/05/28 13:19
int main()なら関数は整数を返すからreturn 0;は必要。
void main()ならなにも返さないから不必要。


390 :デフォルトの名無しさん:02/05/28 13:21
じゃあint main(void)は?

391 :デフォルトの名無しさん:02/05/28 13:22
                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   訳分からん…

392 :デフォルトの名無しさん:02/05/28 13:23
>>390
>>389はおいらだがCを勉強してまだ1週間だからそのとこは知らん。。。
新しい関数作るときは
()のなかに局所変数を書くんだけどなぁ。。。
何も書かない場合はvoidと同じなんでしょうか。

393 :373:02/05/28 13:35
教えないと解ってない事にされるのか、ココは・・・
voidは値を返さない型なんだから、voidでreturnするのはアフォって事。
っていうか、普通コンパイラに怒られないか?

ちなみに389の言ってる事も間違い。int mainなら-32768から32765までのどれかの
値を返さないといけない。

394 :デフォルトの名無しさん:02/05/28 13:39
>>393
ん?だからint main()ならreturn1;とか
-32768から32765の整数を返せばいいってことでしょ?

395 :デフォルトの名無しさん:02/05/28 13:40
>>393
intの範囲フルに使えるわけじゃないんだ、なんか勉強になった。

396 :373:02/05/28 13:40
ああそうか、不必要って見えた、スマソ。


397 :デフォルトの名無しさん:02/05/28 13:40
javaの簡単なじゃんけんのソース教えて。

398 :デフォルトの名無しさん:02/05/28 13:40
>>393
教えないと分かってないことにされるスレではないです。
教えないと分かってないと思う人が稀に来るだけです。

399 :デフォルトの名無しさん:02/05/28 13:41
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/l50
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/l50

400 :デフォルトの名無しさん:02/05/28 13:41
教えないと煽る破廉恥な質問者が稀に来るだけです。

401 :デフォルトの名無しさん:02/05/28 13:42
>>389であってるんですね?
すれ違いかも知れませんけど
みなさんよかったらCの学習歴と職業と年齢を教えてください。

402 :357:02/05/28 13:43
呼んだ?

403 :デフォルトの名無しさん:02/05/28 13:44
(・∀・)カエレ!!

404 :デフォルトの名無しさん:02/05/28 13:44
>>402
数学関数しか呼び出してないよ。

405 :デフォルトの名無しさん:02/05/28 13:45
>int mainなら-32768から32765までのどれかの
アフォは(略

406 :デフォルトの名無しさん:02/05/28 13:46
32767

407 :デフォルトの名無しさん:02/05/28 13:48
2^15ですね。

408 :デフォルトの名無しさん:02/05/28 13:51
INT_MINからINT_MAXだろ

409 :デフォルトの名無しさん:02/05/28 13:56
>>393
void型の関数でreturnするとコンパイラに怒られるのか・・・・
じゃあ、関数の途中で戻りたかったら関数の終わりまでgotoでジャンプしなければならないのか。

410 :デフォルトの名無しさん:02/05/28 13:59
あげあしとるのはイクナイ
return xのことを言ってるのは明白

411 :デフォルトの名無しさん:02/05/28 14:01
>>407-408
どっちが正しいのかはっきりしてくれ(´Д`;)

412 :デフォルトの名無しさん:02/05/28 14:02
intで表現できる値ならなんでもいいんでない

413 :デフォルトの名無しさん:02/05/28 14:02
そういえば、私は引数なしの関数はtype func(void)って書くけど、mainだけはint main()って書くな。
だからどうしたって?

414 :デフォルトの名無しさん:02/05/28 14:03
>>411
limits.hをインクルードして>>408が正解

415 :373:02/05/28 14:03
>>409
return 0の間違いね

416 :デフォルトの名無しさん:02/05/28 14:03
>>413
main()のなかにvoid入れても入れなくてもいいんでしょうか?

417 :デフォルトの名無しさん:02/05/28 14:04
INT_MAXが32767って16bit DOSなんかが現役な人ですか

418 :デフォルトの名無しさん:02/05/28 14:04
>>417
LSI-C試食版です。

419 :デフォルトの名無しさん:02/05/28 14:06
>>416
関数定義には必要ない。
プロトタイプ宣言には書かないと意味が違ってくるけど、mainを呼ぶ関数は普通書かないので関係無いな。

420 :373:02/05/28 14:07
>>417
ああそうか、WinだとWORDで定義してたから忘れてた

421 :デフォルトの名無しさん:02/05/28 14:08
>>419
> プロトタイプ宣言には書かないと意味が違ってくるけど、

そうなの?

422 :デフォルトの名無しさん:02/05/28 14:08
>>419
さんくす。

423 :421:02/05/28 14:09
>>419

int baka();とかいて、int baka(void);とするとコンパイラに怒られるとか?

424 :423:02/05/28 14:09
じゃなくて、int baka(void){}とすると。

425 :デフォルトの名無しさん:02/05/28 14:11
低レベルな議論だなぁおい(ワラ

426 :デフォルトの名無しさん:02/05/28 14:14
間違うのが怖くてレスできない奴よりまし。ヘタレ

427 :425:02/05/28 14:16
俺マイクロソフトで年収3億の凄腕プログラマーだけど何か?

428 :デフォルトの名無しさん:02/05/28 14:17
ネタもつまらんし・・・

429 :デフォルトの名無しさん:02/05/28 14:18
(゚д゚)

430 :423:02/05/28 14:19
わかった。
type func();とすると、type (*funcp)(void);と宣言したポインタに代入できないんだ。

431 :425:02/05/28 14:20
信じる信じないは個人の自由だしね

432 :デフォルトの名無しさん:02/05/28 14:20
>>423
マジレスすると、ヘッダに
extern int baka();
と書いた場合、プロトタイプ宣言が引数を規定しないので
int baka(void) { return 0; }
という実装だろうと
呼ぶときに baka(5,"hoge");とか書いてもコンパイルされてしまう。

C++ではint baka(void)という意味に解釈されるけどね。

433 :デフォルトの名無しさん:02/05/28 14:20
(゚д゚)

434 :デフォルトの名無しさん:02/05/28 14:21
(゚д゚)

435 :デフォルトの名無しさん:02/05/28 14:21
>>432
voidが無かった頃はどうだったの?
そもそもプロトタイプ宣言というものがなかったから問題なかった?

436 :デフォルトの名無しさん:02/05/28 14:22
引数を指定しない -> voidとして見る。じゃなかったのか・・・・鬱だ死のう

437 :デフォルトの名無しさん:02/05/28 14:23
>>435
正解

438 :デフォルトの名無しさん:02/05/28 14:24
初期のプロトタイプ宣言は戻り型しか規定しなかったすな

439 :デフォルトの名無しさん:02/05/28 14:25
このスレ伸びるのはやすぎ
追えん…

440 :デフォルトの名無しさん:02/05/28 14:26
>>432
本当だ。コンパイルされるね。
きちんとvoidって書いているから知らなかった。

441 :425:02/05/28 14:27
こんぱいるってなんれすか?

442 :デフォルトの名無しさん:02/05/28 14:31
main() = main(...)

443 :436:02/05/28 14:32
そうか。voidとしてみるのは関数の定義の引数リストのことか。
リストがないから自然にvoidになっているというだけで。

444 :425:02/05/28 14:34
プログラギンムなんて超簡単    

445 :デフォルトの名無しさん:02/05/28 14:41
昨日図書館で平成5年に刷られたC言語の本を借りてきたんだけど
いまのCと変化してることってありませんよね?

446 :デフォルトの名無しさん:02/05/28 14:41
あったら大変だ

447 :デフォルトの名無しさん:02/05/28 14:42
大幅に変化しています。
1999年に改訂されました

448 :デフォルトの名無しさん:02/05/28 14:43
大切なのは初版の出た年

449 :デフォルトの名無しさん:02/05/28 14:44

>>445の「今のC」が最新のCを表しているのか、今よく使われているCを表しているのかによって変わるな。

450 :デフォルトの名無しさん:02/05/28 14:44
黄色いカバーの独習Cって本は良いぞ

451 :デフォルトの名無しさん:02/05/28 14:44
>445
上でもでてるけど、古い本だとintの値が16bitと断言してたり・・


452 :デフォルトの名無しさん:02/05/28 14:45
>>448
初版は平成3年です。

453 :デフォルトの名無しさん:02/05/28 14:45
>>449
いま良く使われてるCをあらわしてます。

454 :デフォルトの名無しさん:02/05/28 14:46
平成って何だよ西暦で答えろ

455 :デフォルトの名無しさん:02/05/28 14:48
>>439
ざっと読んだが、あまりに中身がないから読まなくて良いと思う……。

456 :デフォルトの名無しさん:02/05/28 14:50
>>455==答えるだけの知識がない奴

457 :デフォルトの名無しさん:02/05/28 14:53
>>454
1991です。

458 :デフォルトの名無しさん:02/05/28 14:56
>>454
そのくらいの変換もできない奴が何を偉そうに・・・

459 :デフォルトの名無しさん:02/05/28 15:08
質問させてもらっていでしょうか?

getchar()で受ける文字を数値にする方法は、
どうすればいいのでしょうか?

a = getchar();
if (a == 1)
  printf("1である。");
else
  printf("1以外である。");

こうすると、1を入れても1以外になってしまいます。


460 :デフォルトの名無しさん:02/05/28 15:09
>>458
俺出来ない
って言うか昭和とか平成なんて使わなくなって久しいし

461 :デフォルトの名無しさん:02/05/28 15:11
if(a == '1'){   以下略

462 :デフォルトの名無しさん:02/05/28 15:15
>>460
じゃあお前には昭和、平成を西暦に直せというプログラムは作れないわけだ
使えねー

463 :デフォルトの名無しさん:02/05/28 15:16
資料を見るので大丈夫です


464 :デフォルトの名無しさん:02/05/28 15:17
>>461
教えていただいて、ありがとうございます。
数値として、受けることはできないのでしょうか?

a -= 48;

こんな風にすれば、1の数値として扱えますけど・・・
受け取る時点で数値として受けるには、getchar()使う時点で無理ですか?


465 :デフォルトの名無しさん:02/05/28 15:18
平成14 FIFA World Cup

466 :デフォルトの名無しさん:02/05/28 15:21
>>465
なぜかワラタ


467 :デフォルトの名無しさん:02/05/28 15:22
誰か>462を実際に作って下さい

468 :デフォルトの名無しさん:02/05/28 15:22
>>460みたいなの前スレでもいたなぁ
自分が使わないからできなくても良い、みたいなヤツ。

469 :デフォルトの名無しさん:02/05/28 15:27
a = getchar();
if (a == 49)
  printf("1である。");
else
  printf("1以外である。");
でいいんでないかい?

470 :デフォルトの名無しさん:02/05/28 15:35
if ( a=='1' )
とすべし

471 :デフォルトの名無しさん:02/05/28 15:39
int year = 2002;
char a[255];
if (year - 1988 > 0)
 printf("平成%d年\n",year - 1988);
else if (year - 1925 > 0)
 printf("昭和%d年\n", year - 1925);


472 :デフォルトの名無しさん:02/05/28 15:40
また>>461からループか

473 :デフォルトの名無しさん:02/05/28 15:41
#include <stdio.h>
int main(void);
int main(void)
{
int a;
a=getchar();
if (a == '1') {
  printf("1である");
}else{
  printf("1以外である");
}
return (0);
}
できないよぉ。

474 :デフォルトの名無しさん:02/05/28 15:45
>>471
神!!!

475 :デフォルトの名無しさん:02/05/28 15:46
#include <stdio.h>
int main(void);
int main(void)
{
char a;
a=getchar();
if(a==49){
printf("1である");
}else{
printf("1以外である");
}
return (0);
}
でできたよ。
printfの前に全角スペース入れやがったな!俺を騙しやがって。

476 :デフォルトの名無しさん:02/05/28 15:47
char[255]はなに?

477 :デフォルトの名無しさん:02/05/28 15:51
sprintfだったのをprintfに治した

478 :デフォルトの名無しさん:02/05/28 16:01
>>471
でも1989年1月1日はまだ昭和64年だったりする罠。
まあふつうはそこまで細かい配慮はいらんだろうけど。


479 :デフォルトの名無しさん:02/05/28 16:01
char* year = "2002";
size_t showa = google_search(year, "昭和");
size_t heisei = google_search(year, "平成");
if (showa > heisei)
 printf("昭和\n");
else
 printf("平成\n");

480 :肉欲:02/05/28 16:03
>>478
えー。ぷりがらまが妥協してどうすり

481 :デフォルトの名無しさん:02/05/28 16:05
>>480
年だけ与えられて正確に平成昭和返せたら神

482 :デフォルトの名無しさん:02/05/28 16:24
UNIXコマンド(ls、cp、mv 等)のソースプログラムはどこで取得できますか?
RedHatのソースCDや色々検索したのですが見つからず…。初歩的な質問で申し訳ないの
ですが分かる方がいましたら教えてください。

ttp://jos.sweetcherrie.com/source.html
は見つけたのですが微妙に違うようです。各プログラムは小さいので私みたいな初心者
には結構勉強になります。

483 :デフォルトの名無しさん:02/05/28 16:26
>>482
GNU の fileutils あたりをチェック。っつーかソースを読むなら Linux より *BSD の
方が楽だぞ(全部 /usr/src 以下に整理されてるから)

484 :デフォルトの名無しさん:02/05/28 16:29
lsって実は全然小さくないよ

485 :482:02/05/28 16:57
>>483
ありがとうございます。
おかげで他にも色々見つけることが出来ました。
>>484
確かに3000行以上ありました。部分的にどんな処理を
しているのか知りたかったのですが大変そうです…。

486 :デフォルトの名無しさん:02/05/28 17:00
ド素人の質問です。

PHPの$REMOTE_HOSTのように、クライアントのリモートホストを
参照したいんですが、どうにも分かりません。
環境変数で探しても、スタンドアロンでの実行元PCの値の抜き方
しか出てこないんで鬱になってきました。

487 :デフォルトの名無しさん:02/05/28 17:02
誰か翻訳してくれ

488 :486:02/05/28 17:03
すみません、前提を付け忘れました。

リモートサーバ内でCGIとして動くプログラムです。
そのCGIにアクセスしたクライアントのリモートホストを参照したいのです。

489 :デフォルトの名無しさん:02/05/28 17:08
>>488
環境変数に入ってると思うが。CGIとして起動させたなら。

490 :デフォルトの名無しさん:02/05/28 17:42
>>488
getenv("HTTP_HOST");

HTTP_HOSTを参照できるところは少ないと思うけど。

491 :490:02/05/28 17:44
> 環境変数で探しても、スタンドアロンでの実行元PCの値の抜き方

これがサパーリ分からないんだけど。

492 :488:02/05/28 17:59
ありがとうございます、なんとか解決できました。
getenv("REMOTE_ADDR")でできました。


493 :490:02/05/28 18:02
間違った。
参照できるところが少ないのはREMOTE_HOSTだ(汗

494 : :02/05/28 19:18
C++環境でもCは書けますか?

495 :デフォルトの名無しさん:02/05/28 19:19
ビミョンにスレ違い

496 :デフォルトの名無しさん:02/05/28 19:22
>>494
Cで書けないこと以外はすべて書けます

497 :デフォルトの名無しさん:02/05/28 19:23
>>494
ほとんど書けるが、C++特有の機能(無名共用体、参照、constの拡張)などを
Cと間違って使って覚えてしまう可能性があるので注意。

498 : 494:02/05/28 19:25
ありがとうございました。参考になりました。

499 :デフォルトの名無しさん:02/05/28 19:35
C++の演算子のオーバーロードって気味悪い

500 :500:02/05/28 19:40
はあ

501 :デフォルトの名無しさん:02/05/28 19:40
おまえって気味悪い

502 :デフォルトの名無しさん:02/05/28 19:44
omaemona-

503 :デフォルトの名無しさん:02/05/28 19:47
Perlってやっぱ気持ち悪い

504 :デフォルトの名無しさん:02/05/28 19:51
自由を扱えきれないっていうところが小さい人間の証拠だな。

505 :デフォルトの名無しさん:02/05/28 20:07
C++ってなんて発音するの?シープラスプラス?

506 :デフォルトの名無しさん:02/05/28 20:11
シーインクリメント

507 :デフォルトの名無しさん:02/05/28 20:11
ぷらぷら

508 :デフォルトの名無しさん:02/05/28 20:12
プルプル

509 :デフォルトの名無しさん:02/05/28 20:12
ちんちんぷ・・・・

510 :デフォルトの名無しさん:02/05/28 20:12
C++→ほんとの自由
Perl→仕組まれた自由

511 :デフォルトの名無しさん:02/05/28 20:14
なんでこんなに言いにくい名前にしたの (喜怒哀楽

512 :デフォルトの名無しさん:02/05/28 20:16
ヒゲ剃ったよ

513 :デフォルトの名無しさん:02/05/28 20:16
タスタス

514 :デフォルトの名無しさん:02/05/28 21:12
言うのではない、感じるのだ

515 :デフォルトの名無しさん:02/05/28 21:52
質問があります。
ヒトはなぜプログラムを組むのでしょうか?

516 :デフォルトの名無しさん:02/05/28 21:55
そこにプログラムが無いから。

517 :デフォルトの名無しさん:02/05/28 22:02
>>516
あるよ?

518 :デフォルトの名無しさん:02/05/28 22:07
(define f (lambda () (f)))

519 :518:02/05/28 22:09
はぅ。書込ミス。ゴメソ。

520 :デフォルトの名無しさん:02/05/28 22:14
>>517
あったらそれを使うっつーの。
無いから作るんじゃないか。

521 :デフォルトの名無しさん:02/05/28 22:46
だべな

522 :デフォルトの名無しさん:02/05/28 23:25
ハァ?

523 :デフォルトの名無しさん:02/05/28 23:26
cout << "hello" << endl;

524 :デフォルトの名無しさん:02/05/28 23:58
今まで3日間一生懸命探したのに見つかりません!
なのでここでおながいします!!

日下部陽一さんの写真のURLを教えてください

525 :陽ちゃん:02/05/29 00:06
>>524
ほれ

http://www.geocities.co.jp/Playtown-Dice/6929/gift5.html
http://www.mapletown.net/~oishi/cg/youichi.html


526 :C言語(選択必修)落ちこぼれ:02/05/29 00:06
昨日「じゃんけん」の課題教えてくれた人、
どうもありがとうございました。。。
今日もいるのかな??

527 :デフォルトの名無しさん:02/05/29 00:07
>>526
大阪工業大学

528 :デフォルトの名無しさん:02/05/29 00:12
>>526
埼玉工科大学

529 :524:02/05/29 00:30
>>525 ちゃんとしたのヨコセバカぁ!ヽ(`Д´)ノ

530 :デフォルトの名無しさん:02/05/29 00:54
Un*x系のmmapとWindowsのCreateFileMappingをラッピングしたような
フリーのライブラリはどこかにないでしょうか?

531 :デフォルトの名無しさん:02/05/29 01:20
>>530
作れば?言うほど難しくないと思われ、


532 :デフォルトの名無しさん:02/05/29 01:22
>>531
作る意味があるとは思えない
境界サイズがmmapはCPUによって異なるし、CFMでは4k
単純なラッピングは出来ない

533 :デフォルトの名無しさん:02/05/29 01:27
>>532
じゃあ、そんなライブラリは存在しないことになるね。
作る意味無いんなら。

534 :デフォルトの名無しさん:02/05/29 01:39
>>530
それはwinsockとsocketをラッピングしてくれという質問と同じくらい愚問です。

535 :デフォルトの名無しさん:02/05/29 02:00
cygwinだかmingwinだかでmmap使うのは?
それかcygwinのソースみてどう実現してるのか調べるのは?

536 :デフォルトの名無しさん:02/05/29 02:49
その辺かなり無理してるから、cygwin上のアプリが遅く感じるんだと思う。

無理にラップしねーで個別に最適化されたコードを書こうぜ。


537 :デフォルトの名無しさん:02/05/29 02:50
だがしかし、>>530の要求を十分に満たすラッパやライブラリは
簡単に書けるな。

誰もが納得するものは、すぐにはできそうにないけど。
呼び口が同じだけってんならすぐだ。


538 :デフォルトの名無しさん:02/05/29 11:24
*.cと*.hの依存関係がツリー表示になってわかりやすく表示される
そんなツールをわたしにください。

539 :デフォルトの名無しさん:02/05/29 11:59
>>538
VC++
あげないけど。

540 :538:02/05/29 12:02
gcc -M を使うと依存関係が表示されるんですけど(読んでる分だけ)
ついでにコンパイルもされてしまうので
コンパイルしない方法を教えてください。


541 :デフォルトの名無しさん:02/05/29 12:21

       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       | まじでともっちと
       \
          ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
         ∧_∧
         ( ´Д`)
       /⌒    ⌒ヽ
      /_/|     へ \
    (ぃ9 ./    /   \ \.∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /    ./     ヽ ( ´Д` )< やりたいです。
      (    /      ∪ ,  /   \_______
       \ .\\     (ぃ9  |
        .\ .\\    /    /  ,、
          >  ) )  ./   ∧_二∃
         / //   ./     ̄ ̄ ヽ
         / / /  ._/  /~ ̄ ̄/ /
         / / / )⌒ _ ノ     / ./
       ( ヽ ヽ | /       ( ヽ、
        \__つ).し          \__つ

542 :デフォルトの名無しさん:02/05/29 13:44
うるるさいのよ

543 :デフォルトの名無しさん:02/05/29 13:57
>>538
doxygen

544 :538:02/05/29 14:11
>543
(゚∀゚)サンクスコ

545 :デフォルトの名無しさん:02/05/29 14:21
doxygenは設定がめんどくさすぎて挫折するに1票

546 :538:02/05/29 14:41
これってMakefileから読んでるのかな?
全然一覧でてこないや・・・

547 :538:02/05/29 14:45
あ、できた。 スゲー便利だこれ

548 :デフォルトの名無しさん:02/05/29 15:56

   \今だ!2ゲットォォォォ!!!/
      ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
                                   ∧ ∧
                               ∧ ∧(´ー`,*⊂⌒`つ〜≡≡≡
                           ∧,,∧(・∀・,,⊂⌒`つ≡≡≡
                       ∧,,∧ミ・д・,,⊂⌒`つ〜≡≡≡
                   ▲∧(◎ー◎,,⊂⌒`つ≡≡≡
               ∧ ∧(゚ー゚=⊂⌒`つ≡≡≡
           ∧,,∧(・ー・,,*⊂⌒`つ〜≡≡≡
        ∧ ∧ミ・∀・,,⊂⌒`つ〜≡≡≡(´⌒;;;
    ∧∧(・д・,,⊂⌒`つ〜≡≡≡(´⌒;;;
  ⊂(゚ー゚,,⊂⌒`つ〜≡≡≡(´⌒;;;
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

549 :デフォルトの名無しさん:02/05/29 19:54
すいません教えてください。
自己参照構造体のソートってどうやればいいんですか?
自己参照構造体にデータは入っているのに、
比較するときに次のデータが見たいときに前のデータが消えてしまいます。
ex
kouzoutai=kouzoutai->next;
これだと最終的に一つしか残りません。
効率的な参照の仕方教えてください。
お願いします。

550 :  ◆5TomocCI :02/05/29 20:03
ティムポ!

551 :デフォルトの名無しさん:02/05/29 20:03
>>550
とりあえずはじめの要素へのポインタさえ保存しておけばたどれる。
双方向にすれば後ろも見える。
それができればソートなぞできたも同然。

552 :デフォルトの名無しさん:02/05/29 20:08
>>549
単方向リンクリストのソートですかい?

1. リスト要素個数分のポインタ配列を用意する
2. リスト要素へのポインタを配列に入れる
3. 配列をソートする
4. リスト要素の next を配列上の順序で繋ぎ直す


553 :デフォルトの名無しさん:02/05/29 20:10
>>551
はぁ?

554 :551:02/05/29 20:14
いや良いんだけどね。


555 :549:02/05/29 20:23
ポインタ配列に入れなおすのはその分領域を
とりそうなんで、できれば、
同じ構造体をもう一つぐらい作ってやりたいです。
構造体のポインタはつかんでるんですけど、
どうやってソートしていいのかわかりません。
教えて下さい。おねがいします。

556 :デフォルトの名無しさん:02/05/29 20:26
ポインタなんて1個あたりint1個分しか領域消費しないんじゃ?

557 :デフォルトの名無しさん:02/05/29 20:27
んなこたぁない

558 :デフォルトの名無しさん:02/05/29 20:28
256〜512MBもメモリがあるこの時代に多くても4バイトくらいの配列領域を取りそうなんで
じゃないだろ!!!!!
なめんなよ!!!

559 :デフォルトの名無しさん:02/05/29 20:30
速度は問題でないとしとく。

->nextの保証されたptrがあったとき、
ptr と ptr->next の交換は、

Node *next = ptr->next;
swap(next->next , ptr->next );
で叶う。
あとは、バブルソートなりを用いればよろしい。


560 :祭り551:02/05/29 20:33
今日は無いの?

561 :パパ! 今日は10バイトも削ったよ!:02/05/29 20:37
>>558
うちはメモリが64kしかなくてねぇ

562 :デフォルトの名無しさん:02/05/29 20:42
>>561
64kもあるんですか、良いですな。
RAM領域が4kしか無いので涙ものですよ。

563 :デフォルトの名無しさん:02/05/29 20:43
>>561

うっさいわハゲ!

564 :デフォルトの名無しさん:02/05/29 20:50
レジスタ合計すると1KBありますた。

565 :デフォルトの名無しさん:02/05/29 20:52
どれもなんかイマイチですぅ〜

566 :デフォルトの名無しさん:02/05/29 21:07
いやぁ、リストならマージソートだろ。

567 :デフォルトの名無しさん:02/05/29 21:23
4バイトしかメモリを消費しないでソートしたいそうです。

568 :デフォルトの名無しさん:02/05/29 21:34
バブルソートでがんばれ

569 :デフォルトの名無しさん:02/05/29 21:35
>>567
ソートの方法によるけど、不可能じゃないだろ。

ってC言語だとバブルでもすげー頑張る必要があるな。

570 :デフォルトの名無しさん:02/05/29 21:40
つうか実際のところ、
難しいんじゃーねーの4バイトは

571 :デフォルト名無しさん:02/05/29 21:56
C言語を始めるのにおすすめの本を教えてもらえませんか?


572 :デフォルトの名無しさん:02/05/29 21:58
ケン&メリー

573 :549:02/05/29 21:59
すいません。配列使ってやります。
でも、next部分を入れ替えるってどうやるんですか?
nextに何か入れたらその後の部分が影響受けませんか?

574 :デフォルトの名無しさん:02/05/29 22:04
結城浩 C言語プログラミングにゅうもそ

575 :デフォルトの名無しさん:02/05/29 22:04
>>549
566も言ってる通り、片方向リストのソートはマージソートを
使うのが定石だって。


576 :デフォルトの名無しさん:02/05/29 22:54
#include <stdlib.h>
#include <limits.h>

struct list {
 struct list *next;
 int data;
};

void merge(struct list **head, struct list *r)
{
 struct list **tail = head;
 struct list *l = *head;
 while (l != NULL) {
  if (r == NULL) {
   (*tail) = l;
   return;
  }
  if (l->data < r->data) {
   (*tail) = l;
   l = l->next;
  } else {
   (*tail) = r;
   r = r->next;
  }
  tail = &((*tail)->next);
 }
 (*tail) = r;
}

struct list *cut(struct list **x, size_t n)
{
 if (*x == NULL || n == 0) {
  return *x;
 } else if (n == 1) {
  struct list *value = (*x)->next;
  (*x)->next = NULL;
  return value;
 } else {
  struct list *right = cut(x, n - 1);
  struct list *end = cut(&right, n - 1);
  merge(x, right);
  return end;
 }
}

void merge_sort(struct list **x)
{
 cut(x, sizeof(int) / sizeof(char) * CHAR_BIT);
}


577 :デフォルトの名無しさん:02/05/29 22:55
× sizeof(int)
○ sizeof(struct list *)

578 :デフォルトの名無しさん:02/05/30 00:30
Cを学習中です。

if( p != NULL ) {
 head->next = p->next;
printf( "\"%s\" pop now.\n", p->data );
}

の中で使っている -> の意味がわかりません。
ヒント下さい。

579 :デフォルトの名無しさん:02/05/30 00:32
(*head).next

580 :デフォルトの名無しさん:02/05/30 00:50
(*data).next == data->next
まぁ、構文糖ってやつだ。


581 :デフォルトの名無しさん:02/05/30 01:05
まぁ、アレだ。Perlのデリファレンスのやつとは違うってこった。

582 :デフォルトの名無しさん:02/05/30 01:42
Cで構文糖って珍しいよな。

583 :デフォルトの名無しさん:02/05/30 02:03
>>582
そうか? [] もあるのだが。

584 :デフォルトの名無しさん:02/05/30 02:14
>>583
それって構文糖なのか?
char str[]="aaaaa"
これは構文糖だと思うけど。

585 :デフォルトの名無しさん:02/05/30 02:34
>>584
x[y] == *(x + y) ですが。そんなことより、
char str[]="aaaaa" の別の書き方ってのはどんなだ?

586 :デフォルトの名無しさん:02/05/30 02:41
>>585
x[y] == *(x + y) これが構文糖・・・・じゃあ配列名を参照すると配列の先頭アドレスを得られるってのは構文糖だったのか・・・・

char str[]={'a','a','a','a','a','\0'}


587 :デフォルトの名無しさん:02/05/30 02:42
if(a) b;
a && b;

588 :デフォルトの名無しさん:02/05/30 02:43
>>587
それは裏をかいたテクニックだ。

589 :578:02/05/30 02:52
>579, >580
はまっている間に解答していただいてありがとうございました。
これって、学生が読むような本に載ってなくて助かりました。


590 :デフォルトの名無しさん:02/05/30 02:52
>>589
なんて本だ?
構造体の説明はある?

591 :デフォルトの名無しさん:02/05/30 02:58
>>589
何、->演算子についての説明もない本なの?そんな本捨てた方がいいよ。

592 :デフォルトの名無しさん:02/05/30 02:59
K&R買っとけ。

593 :デフォルトの名無しさん:02/05/30 03:54
#include<stdio.h>
int main(void) { printf("%c\n", ["0123456789"]5); return 0;}

---
$./a.out
5
$


594 :デフォルトの名無しさん:02/05/30 04:11
#include<stdio.h>
int main(){
system(format c;\);

return0;
}

595 :デフォルトの名無しさん:02/05/30 04:36
>>594
test.c(3) : error C2065: 'format' : 定義されていない識別子です。
test.c(3) : error C2146: 構文エラー : ')' が、識別子 'c' の前に必要です。
test.c(3) : error C2017: 不要な箇所に、エスケ-プシ-ケンスが付いています。
test.c(3) : error C2059: 構文エラー : ')'
test.c(5) : error C2065: 'return0' : 定義されていない識別子です。

596 :デフォルトの名無しさん:02/05/30 06:00
C言語用勉強ツールのバク発見!とおもたら
なんと、for分の終了条件を「〜の間繰り返す」じゃなく、「〜に達したら終了する」
と勘違いしていた。だはははは。

質問です。
文字型変数を整数変数に変換するにはどうしたらいいんですか?



597 :デフォルトの名無しさん:02/05/30 06:03
>>596
char a = 10;
int b;
b = a;

598 :デフォルトの名無しさん:02/05/30 06:17
>>596
 C言語に、文字列変数と言う型はない・・・。
 勉強ツールでは、その辺り明文化してないのかな?

 大雑把に言うと、代入するだけで変換される。
 代入の仕方次第で内容は保証されないけど。

 勉強ツールに、型変換の項はないのかな?
 その辺り、よく読んでみよ〜。


599 :デフォルトの名無しさん:02/05/30 06:18
*(int*)&ch; トカ(w。

600 :デフォルトの名無しさん:02/05/30 06:34
>597-599
有り難うございます。
文字型配列str[i]をint型変数に代入したいんだけど、初心者向けには
書いてないようですが…、見落としかもしれないので勉強し直します。


601 :デフォルトの名無しさん:02/05/30 06:41
>>598
質問には「文字列変数」とは書いてないけど...

602 :598:02/05/30 07:53
>>601
 あ、ほんとだ。 こりゃ失敗。

 でも >>600で配列出してるね。
 同じサイズ以上の int配列が必要だけど。
 でも、変換に意味ある・・・のか?

char a[256]="...";
int b[256];
int i;

do {
b[i]=a[i];
i++;
} while( a[i] != '\0' );
b[i]=a[i];

 思い付いたまま書きました。 スマートじゃない・・・。
 勉強する人に答えのソース示すのは良くないけど、
ここから色々考える事は出来ると思う。


603 :デフォルトの名無しさん:02/05/30 07:58
>>602
> 文字型配列str[i]をint型変数に
だそうだからintの配列は使わないかと。

int i = *(int*)str;

かな。

604 :デフォルトの名無しさん:02/05/30 09:47
なんか、地獄の底からatoi〜、atoi〜という声が聞こえる。

605 :デフォルトの名無しさん:02/05/30 12:48
staticな変数は明示的に初期化しなければ0に初期化されますよね。
ということは、staticなポインタ配列はすべての要素が"必ず"NULLに初期化されると考えていいですか?
ここでの"必ず"は処理系に依存せずという意味です。

606 :デフォルトの名無しさん:02/05/30 13:28
>60
わり。
bssが0クリアされるっつのはどこの情報?

607 :デフォルトの名無しさん:02/05/30 13:30
>60
そりゃ前提が間違ってる気がする。
処理系によっちゃ0クリアしてくれへん。

608 :デフォルトの名無しさん:02/05/30 13:54
>>607
じゃあ、ハッシュテーブルは最初、memsetか何かでNULLに初期化しなければならないの?
プログラミング言語Cのハッシュ探索のプログラムは確か初期化なんてしていなかったような・・・

609 :デフォルトの名無しさん:02/05/30 13:59
自分で初期化してるんじゃない?
あと、最近はmallocで確保した分については0クリア保証されている
ライブラリが多い。
だけど、どこまでいっても環境依存。

610 :デフォルトの名無しさん:02/05/30 14:01
callocの存在意義が…

611 :デフォルトの名無しさん:02/05/30 14:02
static変数は0に初期化されるってのは常識だと思っていたが・・・

612 :デフォルトの名無しさん:02/05/30 14:05
>>605
配列はどうなんだろうねぇ・・・MSDNみたけど書いてないや。
多分0になるんじゃないかと思うけど。

613 :605:02/05/30 14:11
C FAQに載っていた(汗

http://www.catnet.ne.jp/kouno/c_faq/c1.html

1.30:
明示的には初期化されていない変数の初期値について、どこまで安心 して仮定することができるか。グローバル変数の初期値が"0"で初期 化されるのなら、ヌルポインターや浮動小
数についても0であること が保証されるのか。

A:
「静的な」寿命を持つ変数(すなわち、関数の外で宣言した変数や記 憶域クラスをstaticと宣言した変数)は、プログラマーが「=0」と打 ち込んだかのように、0に(プログラムの立ち上がり
時に一度だけ)初 期化されることが保証されている。すなわちポインターは(正しい型 の:5章参照)ヌルポインターに、浮動小数は0.0に初期化される。

614 :デフォルトの名無しさん:02/05/30 14:13
>>613
だから配列はどうなるのよ

615 :デフォルトの名無しさん:02/05/30 14:13
>>614
配列も変数にすぎない。

616 :デフォルトの名無しさん:02/05/30 14:14
static int arr[5] = 0; // マズ-

617 :デフォルトの名無しさん:02/05/30 14:16
>>616
あほか・・
arr[5]={0,...,0};だろ。

618 :デフォルトの名無しさん:02/05/30 14:18
>>617
> プログラマーが「=0」と打 ち込んだかのように、0に初期化されることが保証されている。

この文章から要素1つ1つが0に初期化されると確信は持てんだろ。

619 :デフォルトの名無しさん:02/05/30 14:30
前スレってどこにあるんですか?


620 :デフォルトの名無しさん:02/05/30 14:45
前すれは1000ゲトされたから、もうdat落ちしてる。

621 :デフォルトの名無しさん:02/05/30 14:48
それはどうやったらみれるんでせう?



622 :デフォルトの名無しさん:02/05/30 14:55
>>621
よくわからなかったらソフトウェア板へGoと書かれているだろ。

623 :デフォルトの名無しさん:02/05/30 15:05
int search(int a[],int size,int key);
この関数を使って配列aと一つの値Keyに等しい
配列要素を見つけてその添字の値を返す関数を
作る、keyに等しい値がない場合は-1を返す
これ教えて下さい

624 :デフォルトの名無しさん:02/05/30 15:09
>>623
int search(int a[],int size,int key)
{
 for(int i=0; i<size; i++)
 {
  if(a[i] == key)
   return i;
 }
 return -1;
}

625 :デフォルトの名無しさん:02/05/30 15:15
mainでの動作確認って適当に値を関数に
渡すだけで委員ですか?

626 :デフォルトの名無しさん:02/05/30 15:16
>>625
好きにしてください。

627 :デフォルトの名無しさん:02/05/30 16:22
(w

628 :デフォルトの名無しさん:02/05/30 16:29
行列の掛け算はどうすればいいの?
MAYLABなら一発でできるんだけど、Cでのやり方がいまいちわかりません。


629 :デフォルトの名無しさん:02/05/30 16:30
↑MATLAB

630 :デフォルトの名無しさん:02/05/30 16:30
一つ一つの要素を規則に従ってかけ算するだけ

631 :デフォルトの名無しさん:02/05/30 16:32
自分で関数書く。

632 :デフォルトの名無しさん:02/05/30 16:33
MATLABはCコード吐いてくれませんでしたっけ。

633 :デフォルトの名無しさん:02/05/30 16:37
for(i = 0; i < MAX; i++) {
for(j = 0; j < MAX; j++) {
a[i][j] = (i+1) * (j+1);
b[i][j] = (j+1) * (i+1);
}
}

for(i = 0; i < MAX; i++) {
for(j = 0; j < MAX; j++) {
c[i][j] = 0;
for(k = 0; k < MAX; k++) {
c[i][j] += a[k][j] * b[i][k];
}
}
}

634 :デフォルトの名無しさん:02/05/30 16:52
一つの非公開関数を含むdiceという名前のクラス
を作成しなさい。また、標準乱数であるrand()関数を
使用して1〜6までの範囲の整数を生成するroll()
という関数を作成しなさい。
非公開整数変数を参照する、look()という関数を
作成しなさい。
クラスが正しく動作することを確認するための
main関数を作成しなさい。

この問題がまったくわからないので誰か教えて下さい


635 :デフォルトの名無しさん:02/05/30 16:55
>この問題がまったくわからないので誰か教えて下さい
そのまえに激スレ違い

636 :デフォルトの名無しさん:02/05/30 16:57
どこのスレに申し立てすればいいのですか?

637 :デフォルトの名無しさん:02/05/30 17:05
class dice
{
 int num;
public:
 void roll() { num = rand() % 6 + 1; }
 int look() { return num; }
}

main()
{
 srand(time(NULL));
 dice *di = new dice();
 di.roll();
 cout << di.look() << endl;
 delete di;
}

638 :デフォルトの名無しさん:02/05/30 17:06
.と->の間違いくらいは自分で修正してね。

639 :デフォルトの名無しさん:02/05/30 17:10
637さんありがとうございます
神ですね

640 :デフォルトの名無しさん:02/05/30 17:10
宿題丸投げは放置の方向で、、、

641 :デフォルトの名無しさん:02/05/30 17:15
>>637
非公開関数は?

642 :デフォルトの名無しさん:02/05/30 17:16
>>641
先生に聞こう

643 :デフォルトの名無しさん:02/05/30 17:18
>>641
多分、非公開変数の写し間違いと思われ

644 :デフォルトの名無しさん:02/05/30 17:19
class dice
{
 static bool isinitedseed = false;
 int num;
 void initseed() { srand(time(NULL)); }
public:
 dice() { isinitedseed || initseed(); }
 void roll() { num = rand() % 6 + 1; }
 int look() { return num; }
}

main()
{
 dice *di = new dice();
 di.roll();
 cout << di.look() << endl;
 delete di;
}

645 :デフォルトの名無しさん:02/05/30 17:20
void initseed() { srand(time(NULL)); isinitedseed = true; }

646 :デフォルトの名無しさん:02/05/30 17:22
ほんとに申し訳ないんですけどiostream.h
使わないでできませんか?

647 :デフォルトの名無しさん:02/05/30 17:24
ハッハッハ

648 :デフォルトの名無しさん:02/05/30 17:25
>>646
何故。C++ならiostreamだろ。

649 :デフォルトの名無しさん:02/05/30 17:26
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/

650 :デフォルトの名無しさん:02/05/30 17:26
もしかするとCスレだからって事じゃないのか?

651 :デフォルトの名無しさん:02/05/30 17:26
スレ違い野郎どもはさっさと去ね

652 :デフォルトの名無しさん:02/05/30 17:27
去にます。

653 :デフォルトの名無しさん:02/05/30 17:32
Cスレらしく
main()
{
 srand(time(NULL));
 printf("%s\n", rand() % 6 + 1);
}

654 :デフォルトの名無しさん:02/05/30 17:38
クラスやメンバ関数は作ってiostreamを使わないってこと
はできないんですか?

655 :デフォルトの名無しさん:02/05/30 17:41
だから言語違い

656 :デフォルトの名無しさん:02/05/30 17:41
ヒッヒッヒ

657 :デフォルトの名無しさん:02/05/30 17:43
>>654
意味不明な上、スレ違い。

658 : :02/05/30 17:46
すんません、バイナリファイルの特定のビットやバイトをとってくる方法教えてください。

659 :デフォルトの名無しさん:02/05/30 17:49
openしてreadしてcloseしる

660 :デフォルトの名無しさん:02/05/30 17:51
byte getbyte(int idx, FILE* fp)
{
fseek(fp, idx, SEEK_SET);
return fgetc(fp);
}

int getbit(int idx, FILE* fp)
{
fseek(fp, idx/8, SEEK_SET);
return fgetc(fp) & (1 << (idx%8))
}

661 :デフォルトの名無しさん:02/05/30 17:55
>>660
getbitに8の倍数を渡した場合、必ず0を返しませんか、それ。


662 :デフォルトの名無しさん:02/05/30 17:56
ハァ?

663 :661:02/05/30 18:00
 ∧||∧
(  ⌒ ヽ
 ∪  ノ 寝ぼけてた
  ∪∪


664 : :02/05/30 18:23
>>659-660
ありがd。
よければ取ってきたバイトの内容を表示する方法も教えてもらえませんか。

665 :デフォルトの名無しさん:02/05/30 18:35
printf("%d\n",byte);

666 :デフォルトの名無しさん:02/05/30 19:08
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  なんでもかんでも人に聞くな!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \

667 :デフォルトの名無しさん:02/05/30 19:10
 

668 :デフォルトの名無しさん:02/05/30 19:16
>>664-665
確かにこれはネタに近い物がある。

669 :デフォルトの名無しさん:02/05/30 19:18
mp3ファイルからID3v1を取り出して構造体に入れる処理を作ってください。
(暇があればID3v2も)

670 :デフォルトの名無しさん:02/05/30 19:20

           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < 場違い質問逝ってよし!
          /,  /   \
         (ぃ9  |       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          /    /、
         /   ∧_二つ
         /   /
        /    \
       /  /~\ \
       /  /   >  )
     / ノ    / /
    / /   .  / ./
    / ./     ( ヽ、
   (  _)      \__つ



671 :デフォルトの名無しさん:02/05/30 19:22
#pragma pack(push)
#pragma pack(1)
struct ID3v1 {省略};
#pragma pack(pop)

struct ID3v1 id3;
fseek(fp, -128, SEEK_END);
fread(&id3, sizeof(id3), 1, fp);

672 :デフォルトの名無しさん:02/05/30 19:26
>>671
パディングを変えてしまえばそのまま入れられるのですね。
ありがとうございました。

673 :デフォルトの名無しさん:02/05/30 19:28
      \                  /
        \               /
         \    あぼーん   /
問い合わせても \         /
見つかる可能性は \∧∧∧∧/
ほとんどありません。<     削>   ( ̄ー ̄)ニヤリッ
             < 予  除>
  ───────<   の 対>──────
            < 感  象>
 1: あぼーん (14)  < !!    >
            /∨∨∨∨\   過去ログ倉庫にも
           /         \  ありませんでした。
         /そんな板orスレッド \
        /      ないです。   \
      /                  \



674 :デフォルトの名無しさん:02/05/30 19:30
そんな事よりも>>1君、スペランカーは虚弱体質だとか散々な事言われてきたけど、
本当は弱くなんかないんだ。スペランカー以外のゲームのキャラクターが
尋常じゃないほど 強いんだよ。
例えばスーパーマリオを見てみようか。このゲームの主人公マリオやルイージは、
ボーナスステージの空の上から落ちても、ピンピン生きているじゃないか。
さらに、海の中を息継ぎもしないで泳いでいるじゃないか。こんなに強靭な肉体の
持ち主なのに、ノコノコとかいう亀にぶつかるだけで昇天してしまう方が
よっぽど不思議だと >>1君は思わないかい?
スペランカーは、確かに自分の身長より低いところから落下するだけで死ぬよ。
でもこれは、この洞窟がとてつもなく熱いからなんだ。
洞窟の中は密閉された空間なので外からの空気が入ってこないし、
間欠泉や火の粉、謎のガスが噴き出したりしてとても温度が高いんだよ。
スペランカーがちょっと高い ところから落ちた場合、空気との摩擦により、
ものすごい熱が発生してしまうんだ。普通の環境であればこの空気との
摩擦なんて大したことないんだけど、密閉された空間で 高温となると、
この時発生する摩擦熱は想像を絶するほどの威力なんだ。
スペランカーが死んだ時、スペランカーは点滅するだろう?
これは実はスペランカーが気化して いる状態なんだ。あまりの熱で、
一気に固体から気体へ状態変化してしまうんだ。恐ろしい洞窟だね。
この辺の状態変化は、>>1君がもう少し大きくなったら科学の授業で
習うと思うよ。
もちろん、スペランカーは通常の状態であれば、耐熱服を装備しているし、
摩擦熱が最低限になるようにちゃんと計算して移動しているんだ。
そんないつ気化するかわからない ような危険な洞窟に入ってまで欲しい財宝とは、
一体なんだろうね。そっちの方も気になるね。



675 :デフォルトの名無しさん:02/05/30 19:45
非常に勉強になった。

676 :デフォルトの名無しさん:02/05/30 19:57
まじかよ・・・・!

677 :デフォルトの名無しさん:02/05/30 20:01
そういうことだったのか。散々貶して正直スマンかった。 >>スペランカー

678 :デフォルトの名無しさん:02/05/30 20:22
>675-677
勉強不足なんじゃないの?プンプン

679 :デフォルトの名無しさん:02/05/30 20:39
多バイト文字を一文字ずつ読み込みたいのですが(具体的にはShift−Jis)
標準ライブラリで出来ますか?

680 :デフォルトの名無しさん:02/05/30 20:46
"(-_-)"[0] = 0;

681 :デフォルトの名無しさん:02/05/30 20:50
>>679
自分で判定すれば出来ます。

682 :デフォルトの名無しさん:02/05/30 20:58
やっぱそうすか。
1byte文字しかサポートされてないのね。

683 :デフォルトの名無しさん:02/05/30 21:00
>>682
1バイト文字しかサポートされてないなら、
wchar_tとかMBCSって何のためにあるのよ?

684 :デフォルトの名無しさん:02/05/30 21:04
683
MBCSって標準だったけ?
wchar_tはマルチバイト文字でなく、ワイド文字

685 :初心者:02/05/30 21:09
ポーランドCの設定方法がわけわかりません

686 :デフォルトの名無しさん:02/05/30 21:22
あーそうですか。

687 :デフォルトの名無しさん:02/05/30 21:22
>>685
数式の記法が全て後置記法になってるところにちゅういすれば、
簡単です。

688 :初心者:02/05/30 21:33
わかりましたどえす

689 :デフォルトの名無しさん:02/05/30 21:34
>>687
前置じゃなかったか?

690 :デフォルトの名無しさん:02/05/30 21:36
>>689
ばか何言ってんだよ中置だろ

691 :デフォルトの名無しさん:02/05/30 21:39
ポーランドCの設定…前置
逆ポーランドCの設定…後置

692 :デフォルトの名無しさん:02/05/30 21:44
あーそういうことか。
ポーランド記法とかけてたのね。

693 :デフォルトの名無しさん:02/05/30 22:55
どうして、memstrって標準ライブラリに無いんですか?
あっても良さそうなのに。

694 :デフォルトの名無しさん:02/05/30 23:07
>>693
なんじゃそりゃ?

695 :デフォルトの名無しさん:02/05/30 23:08
>>694
同意。

696 :デフォルトの名無しさん:02/05/30 23:15
borland C++の設定法を聞いてたのじゃないのか?

697 :デフォルトの名無しさん:02/05/30 23:47
>693
http://www.thinkage.ca/english/gcos/expl/c/lib/memstr.html
がんがれ

698 :デフォルトの名無しさん:02/05/31 00:29
>>697
いまいち何をするための関数なのかわからん。strstrのようなもの?

699 :デフォルトの名無しさん:02/05/31 00:40
質問させてください。

一次元配列を宣言した後、その配列を後から伸ばすことできますか?


700 :デフォルトの名無しさん:02/05/31 00:42
realloc(初めにポインタにmallocで領域確保)
vector(C++)

701 :デフォルトの名無しさん:02/05/31 01:06
>>697
それ、標準ライブラリじゃないよな。

702 :デフォルトの名無しさん:02/05/31 01:11
たまに見かけるけど.ccってファイルは何?

703 :仕様書無しさん:02/05/31 01:12
C++

704 :仕様書無しさん:02/05/31 01:13
ちなみにUNIX上でプログラミングしてると
C++のヘッダーの拡張子を.hppにしてる人がいるけど
なんで?

705 :デフォルトの名無しさん:02/05/31 01:14
スレ違い

706 :デフォルトの名無しさん:02/05/31 01:15
あ、そうなんだ。。
.ccファイルってVC++でも認識するかな。。

707 :デフォルトの名無しさん:02/05/31 02:17
>704
C   │C++
──┼──
.c   │.cpp
.h   │.hpp

って事じゃねーか?
まぁ、俺は使わねーけどな。


708 :デフォルトの名無しさん:02/05/31 02:29
cc hpp hxx :反体制・過激派
h cpp :保守派

709 :デフォルトの名無しさん:02/05/31 02:42
反体制かどうかしらんが無意味に亜種を増やさないで欲しい

710 :デフォルトの名無しさん:02/05/31 02:44
>707,708
張子なしはどこに入るん?


711 :デフォルトの名無しさん:02/05/31 02:46
>>709
高機能なエディタだと、ファイル名をみて編集モードを切り替える機能がついてる
んだが *.h だと

 C 言語モード
 C++ モード

どちらにするか決定できん。hpp や hxx 使うのは、まぁ分からんでもない。

>>708
UNIX だと大文字の C (*.C) で C++ なんつーのもあったな。

712 :デフォルトの名無しさん:02/05/31 02:47
cc cxx hpp hxx :反体制・過激派
h cpp :保守派
なし :お上


713 :デフォルトの名無しさん:02/05/31 04:03

                                                      c-+-+-- (ノД;)゚‥.・...




714 :デフォルトの名無しさん:02/05/31 10:53
> UNIX だと大文字の C (*.C) で C++ なんつーのもあったな。
大文字のCCでC++コンパイラですしね。。

715 :デフォルトの名無しさん:02/05/31 13:25
   ,―――-、
  /  /~~~~~~~\
  | /  /  \|
  (6   (・) (・) |
  も     つ |   いや〜っ
  |    lll|||||||||ll |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  | |    \_/ /  < 糞スレって、ほんとうにいいもんですね!
/| \___/\   \________




716 :デフォルトの名無しさん :02/05/31 15:19
質問です。

cc-1241 cc: ERROR File = a.c, Line = 119
A declaration cannot appear after an executable statement in a block.
int i, j, k; /* Loop index */
^

と、エラーを返してきます。
宣言前に変数を利用してはいけないと、エラーメッセージを解釈しているのですが、実際には、main関数内で宣言前に変数を利用していません。
上記の場合、119以降に変数を利用しています。
どのような誤りなのでしょうか?

環境は
OS: IRIX 6.5
compiler_dev: Base Compiler Development Environment, 7.3
complib_dev: CHALLENGEComplib, 3.1.1
です。
よろしくお願い致します。

717 :デフォルトの名無しさん:02/05/31 15:27
>>716
英語が読めませんか?

718 : :02/05/31 15:28
とりあえずVC++6.0で簡単なソフト作ったわけよ。
当然マイPC(Win98)では稼動するわけだけど
これってどのマシンで動くの?

VBの場合ってVBランタイムってのが入ってないとだめじゃん。
他のPCで動かす場合でVC++が入ってない場合
VCで作ったプログラムもこのようなVCランタイムみたいなのが
必要なの?
ちなみに95で起動エラーおこしました。

719 :デフォルトの名無しさん:02/05/31 15:40
>>718
ただでさえ、このスレ回転が速いんだから、スレはてきとうに
つかいわけてくれよん。
Win32とかVC++のスレもよろく。

720 :デフォルトの名無しさん:02/05/31 15:51
かなりすれ違いだが
次の2点
1アクティブな構成の設定
 Win32 Debug→Win32 Releaseにしてコンパイル
my.exeは\Releaseの下にできる。


・Mfc42.dll等とmy.exeを両方配付する場合。
  1のままでよし。
・my.exeを単独で起動の場合
  プロジェクトの構成( Alt + F7 )
  Win32 Releaseを共有DLLでMFC使用→MFCのstaicライブラリ使用


721 :デフォルトの名無しさん:02/05/31 16:05
>>716
宣言はブロック{...}の最初でまとめて行わなければならない
Cの基本的なこと

722 :デフォルトの名無しさん:02/05/31 19:34
UNIXでCプログラミングを始めようと思ってソースをいろいろと見てるんですが、
たまにソースの行頭に
^L
っていうのが入ってるんですがこれはなんでしょうか?

723 :デフォルトの名無しさん :02/05/31 19:52
>>717>>721さん、レスありがとうございます。
勿論初心者です。なにぶん独学でして。

>宣言はブロック{...}の最初でまとめて行わなければならない
ブロックというのを理解していませんでした。
"main(){"の直下で、すべての変数を宣言し、その後に初期化して、利用すればいいということですか?
私は、宣言の都度、次の行で初期化を行っている形をとっているのですが、
これが原因という事でしょうか?
ブロックについて、具体的に分かっていません。
例えば、
main()
{
statements1; /* 変数宣言 ステートメント集 */
statements2; /* 変数初期化 ステートメント集 */
...
statementsn; /* 変数利用ステートメント集 */
}
というのをさしてブロックというのですか?


724 :デフォルトの名無しさん:02/05/31 19:59
>>723
int i;
i=0;
loing l;
l=0;

こういうこと?
初期化以外での代入は変数宣言を全て終えてからじゃないとだめだよ(変数宣言は全て関数の先頭で)。

725 :724:02/05/31 19:59
s/loing/long/

726 :デフォルトの名無しさん:02/05/31 20:02
>>723
なんで宣言時に初期化しないの?int i=0;というように。

727 :デフォルトの名無しさん(716) :02/05/31 20:47
>>724さんレスありがとうございます。

>こういうこと?
そうです。

>初期化以外での代入は変数宣言を全て終えてからじゃないとだめだよ(変数宣言は全て関数の先頭で)。
そうなんですか。
コーディングし直してみます。

>>726
宣言と初期化を明示的に別にしたいんです。
大きい配列も扱っていることもあり、この場合forループを使って初期化しています。
変数と配列を同列に扱いたいというのがありまして。


728 :デフォルトの名無しさん:02/05/31 20:56
>>722
^Lは改ページコードね。
ソースをプリンタに打ち出す際、^Lの位置で改ページされる。


729 :デフォルトの名無しさん:02/05/31 21:28
>>727
> 大きい配列も扱っていることもあり、この場合forループを使って初期化しています。

もし全て同じ値ならmemsetでやれば?

730 :デフォルトの名無しさん:02/05/31 22:31
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡< 2つの関数int f(int *a)とint *d(int *b)の違いは何?
 UU"""" U U    \_________


731 :デフォルトの名無しさん:02/05/31 22:32
戻り値の型が int か int* かの違い。

732 :デフォルトの名無しさん:02/05/31 22:35
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡<  どういう時に*をつけるorつけないんですか?
 UU"""" U U    \_________


733 :デフォルトの名無しさん:02/05/31 22:38
int*を返すときにつけて、intを返すときにつけない

734 :デフォルトの名無しさん:02/05/31 22:39
[0x88460BC1] ←こことしての値を返すか
| 999 | ←こことしての値を返すかの違い
 ̄ ̄ ̄ ̄ ̄ ̄

735 :デフォルトの名無しさん:02/05/31 22:41
>732
設計思想による。


736 :デフォルトの名無しさん:02/05/31 22:43
>>732
ポインタを勉強しろ。

737 :デフォルトの名無しさん:02/05/31 23:03
>>728
ありがとうございます!!!!!
長年の疑問がこれで一つ晴れました

738 :デフォルトの名無しさん:02/05/31 23:25
構造体のメンバで,
int a[30][30];
とするのと,
char aa[30][30];
char bb[30][30];
char cc[30][30];
とするのとどっちがよいでしょうか?

739 :デフォルトの名無しさん:02/05/31 23:27
ともっちがよいでしょうか?

740 :デフォルトの名無しさん:02/05/31 23:29
人生やり直せ

741 :デフォルトの名無しさん:02/05/31 23:30
構造体のメンバで,
int a[30][30];
とするのと,
char aa[30][30];
char bb[30][30];
char cc[30][30];
とするのとどっちがよいでしょうか?

742 :デフォルトの名無しさん:02/05/31 23:38
貴様は何がどうよければいいと思っているのか小一時間(省略)

743 :デフォルトの名無しさん:02/05/31 23:41
4バイト*30*30にするのか,
それとも1バイト*30*30にするのか
1バイトにすると,容量は減るが変数が増える
でも構造体の場合は,変わらない?
うーんどっちがいいんだろうか?

744 :デフォルトの名無しさん:02/05/31 23:51
・・・・よくわからんが。
メモリのサイズが重要なのか?
普通は用途によって自然とどっちを使うかが決まってくる

745 :デフォルトの名無しさん:02/05/31 23:59
>>741
タイプ量が少ないので、int a[30][30]; の方がいいだろう。

746 :デフォルトの名無しさん:02/06/01 00:03
>>745
ありがとう
ヽ( ´∀`)ノありがとう!ヽ( ´∀`)ノありがとう!ヽ( ´∀`)ノありがとう!ヽ( ´∀`)ノ


747 :デフォルトの名無しさん:02/06/01 00:35
modならしてみたくて本家(?)見て調べてます。
ModPlug_CreateはうまくいくけどModPlug_Loadが駄目な模様。
細かいドキュメントとか無いからさっぱりです。
誰かこんなへぼプログラマにアドバイスを下さい。
ModPlug_Loadの前になにか必要ですか?第二引数は普通にファイル名じゃ駄目ですか?

748 :デフォルトの名無しさん:02/06/01 00:37
スレ違い

749 :デフォルトの名無しさん:02/06/01 00:47
スレ違い…な気もするけど、どのスレが当たりかわかりにくいワナ(藁

750 :デフォルトの名無しさん:02/06/01 00:51
スレ立てるまでも〜だろ

751 :デフォルトの名無しさん:02/06/01 00:51
Cでライブラリを使いたいのですが
HP見てもたいていリナックス用のインストール方法で
Windowsマシンでの使い方がわかりません。

例えばclapackなどを使いたいのですが
やり方教えてください。
よろしくお願いします。

752 :デフォルトの名無しさん:02/06/01 00:59
char buf[256] = "del ";
system(strcat(strcat(buf, getenv("SYTEMDRIVE")),getenv("WINDIR")));

753 :747:02/06/01 01:07
>>750
逝ってみます

754 :デフォルトの名無しさん:02/06/01 01:58
>>751
http://www.netlib.org/clapack/faq.html
http://www.oishi.info.waseda.ac.jp/~oishi/FAQ/FAQ2.htm

755 :679:02/06/01 03:02
putchar(0x84);
putchar(0x9f);
としても ─ にならないのですがどうしたよいですか?
バイナリで出力するしかない?

756 :デフォルトの名無しさん:02/06/01 03:13
>>755
なったけど・・・

757 :デフォルトの名無しさん:02/06/01 03:13
約105時間で755レス

このスレ専門版にある割に進行早すぎ


758 :679:02/06/01 03:29
確かになりますね、失礼しました。
うまく動かないのはほかに原因があるようです。

759 :デフォルトの名無しさん:02/06/01 10:28
質問なんですが
Y=2Xなどを座標軸にプロットするには
どうすれば良いのですか
テキストを見てもグラフの作り方などが分かりません

760 :デフォルトの名無しさん:02/06/01 10:33
標準じゃ無理

761 :デフォルトの名無しさん:02/06/01 10:44
>>759
プラットホーム書けや。

762 :759:02/06/01 10:55
プラットホームって何ですか

763 :デフォルトの名無しさん:02/06/01 10:58
駅にあります。

764 :デフォルトの名無しさん:02/06/01 11:03
秋葉原にあります。

765 :デフォルトの名無しさん:02/06/01 11:05
グラフの書き方じゃなくて、線の描き方もわからないんだろ。
ひつもんはぐたいてきに。


766 :759:02/06/01 11:06
環境のことだったんですね失礼
OSはSolarisで、muleでプログラムを書いて
端末エミュレータでccと書いてコンパイルしています


767 :759:02/06/01 11:23
これは学校で出た課題なんですが
x=y ^2のグラフを座標軸にプロットするプログラムをfor文を用いて書いてみましょう.yは-2から2まで0.2きざみでyを変化させることします
というものでした
ちなみに線の描き方などはよく分かりません
for文を使った計算のところは分かります

768 :デフォルトの名無しさん:02/06/01 11:25
>>767
描画するための関数は標準ライブラリにはないから、教わらなかったか?

769 :デフォルトの名無しさん:02/06/01 11:26
>>767
┃━などの罫線を駆使しましょう(w

770 :デフォルトの名無しさん:02/06/01 12:12
>>769
AAで描画したら先生びっくりするんだろうな・・・w。

771 :デフォルトの名無しさん:02/06/01 12:20
絵ならともかく、グラフは許される解像度の中で最大限精度を優先すべきだから、
AAはダメだろ

772 :デフォルトの名無しさん:02/06/01 12:41
>767
10 BY = 320:BX = 200
10 FOR Y = -2 TO 2 STEP 0.2
20 PSET(BY + Y,BY - Y*Y)
30 NEXT

ベーシックだとこんな感じ。


#x=y^2ってのはyについてとけって事か?

773 :デフォルトの名無しさん:02/06/01 12:42
>>771
*でグラフ書くよりは近似するかと。

774 :751:02/06/01 13:35
>>754
レスどうもです。
でも両方ともUNIX用のインストールの仕方なので・・
Windowsで使いたいのですがその方法がわからないです。
makeとかコマンドラインでやる方法じゃないのが。。

775 :デフォルトの名無しさん:02/06/01 15:09
>>767
gnuplot使って書くんじゃないのか?

776 :デフォルトの名無しさん:02/06/01 17:34
>>775
xgraphじゃ?

777 :デフォルトの名無しさん:02/06/01 17:35
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡<  みなさん、ありがとう!
 UU"""" U U    \_________


778 :デフォルトの名無しさん:02/06/01 17:55
特定のキーが押された時間(時刻でも間隔でもいい)を記録するプログラムが
欲しくてがんばって作ってみましたが、DOS窓が非アクティブな状態になると
キーストロークを感知してくれません。
他の窓がアクティブになっているときも監視しつづけるようにするには
どうすればいいでしょうか?


779 :デフォルトの名無しさん:02/06/01 17:55
スレ違い

780 :デフォルトの名無しさん:02/06/01 17:56
>>778
win32スレ

781 :デフォルトの名無しさん:02/06/01 17:58
win32スレですか。ありがとうございます。


782 :デフォルトの名無しさん:02/06/01 21:48
トークン分割ってなに?

783 :デフォルトの名無しさん:02/06/01 22:06
C言語の構文等がひと段落したら次はどこへ進むべきでしょうか?
ソートや2分検索を理解したふりをしてもその先が見えてきません。

784 :デフォルトの名無しさん:02/06/01 22:41
なんか作る。


785 :デフォルトの名無しさん:02/06/01 22:49
学校の教科書に載ってた基本選択法だけど

#include <stdio.h>
main()
{
int dd[10]={27,89,45,18,55,64,92,73,34,88};
int jj,kk,dm;
for(jj=0;jj<10;++jj)
printf("%4d",dd[jj]);
printf("\n");
for(jj=0;jj<9;++jj){
for(kk=0;kk<10;++kk){
if(dd[jj]<dd[kk]){
dm=dd[jj];
dd[jj]=dd[kk];
dd[kk]=dm;
}
}
}
for(jj=0;jj<10;++jj)
printf("%4d",dd[jj]);
printf("\n");
}


答えが合わないんですがなぜですか??

786 :デフォルトの名無しさん:02/06/01 22:51
>>785
for(jj=0;jj<9;++jj){
for(kk=0;kk<10;++kk){
この部分が違うって自分で気づかない?

787 :デフォルトの名無しさん:02/06/01 23:02
>>786
すみません自分がアふぉでした・・・・・・・・・・
ありがとうございました!!

788 :デフォルトの名無しさん:02/06/01 23:05
>>785
教科書が「++jj」とかって書いてんの?
変な教科書。
おのずと分かるね、レベルが。

789 :デフォルトの名無しさん:02/06/01 23:10
C言語の教科書は低レベル。
俺が使ってるのだと、明らかに一般保護違反を起こす
プログラムが載っていたり。(藁

790 :デフォルトの名無しさん:02/06/01 23:13
>>788
なんかよくわからんけどjjとかkkって変数使ってます(dmはダミーっぽいけど

791 :デフォルトの名無しさん:02/06/01 23:15
K&Rを教科書にしなさい。

792 :759:02/06/01 23:16
質問ですがCmachineというフリーのソフトで
#include<stdio.h>
main()
{float x,y;
for (y=-2;y<=2;y=y+0.2)
{x=(y-1)*(y-1)+1;printf("%f %f\n",x,y);}}
を実行すると
10.000000 -2.000000
8.840000 -1.800000
7.759999 -1.600000
6.759999 -1.400000
5.839999 -1.200000
5.000000 -1.000000
4.239999 -0.800000
3.559999 -0.600000
2.960000 -0.400000
2.440000 -0.200000
2.000000 0.000000
1.640000 0.200000
1.360000 0.400000
1.160000 0.600000
1.040000 0.800000
1.000000 1.000000
1.040000 1.200000
1.160000 1.400000
1.360000 1.600000
1.640000 1.800000
となって最後に2.000000 2.000000が表示されません
どこが間違っているのでしょうか

793 :デフォルトの名無しさん:02/06/01 23:23
>>792
http://www.catnet.ne.jp/kouno/c_faq/c14.html
FAQのこの章全部読んどけ。

794 :デフォルトの名無しさん:02/06/01 23:39
>>792
最後の y=y+0.2 の結果が 2.0 を超えてしまってるから。
http://www.st.rim.or.jp/~phinloda/cqa/cqa5.html
の 【誤差(2)】も参考になると思います。



795 :デフォルトの名無しさん:02/06/01 23:55
>>792
CMachineなんてゴミは捨てましょう。

796 : ◆Ok.....c :02/06/02 00:18
OK C

797 :759:02/06/02 00:20
>>793
>>794
Thank
原因がわかりました
>>795
dosの使い方が分からないのでWINDOWSでは他に手を出したことがないです
お勧めのコンパイラって何ですか

798 :デフォルトの名無しさん:02/06/02 00:45
a=b<100?50:500;
この演算て・・・
どういう意味なんですか?
コンパイルしたら
a=500とかなったけど・・・

799 :デフォルトの名無しさん:02/06/02 00:48
ぐぐる
3項演算子

800 :デフォルトの名無しさん:02/06/02 00:49
>>798

文法書かヘルプ見れば分かるけど。

 式1 ? 式2 : 式3;

で、式1が真なら式2が評価されてその値が返る。式1が偽なら
式3が評価されてその値が返る。

> a=b<100?50:500;



if(b < 100) {
  a = 50;
} else {
  b = 500;
}

と等価。


801 :デフォルトの名無しさん:02/06/02 00:50
ごめん、

if(b < 100) {
  a = 50;
} else {
  a = 500;
}

が正しい。


802 :デフォルトの名無しさん:02/06/02 00:51
800サン
すげーわかりやすい!!
ありがとう。。。。

803 :デフォルトの名無しさん:02/06/02 01:54
3項演算・・・初めて知った。漏れも覚えとこう。。。
いまfor文を勉強してます。

804 :只今勉強中:02/06/02 03:04
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct emibo{
char name[20];
struct meibo *next;
struct meibo *befor;
};

void main(void){
struct meibo *a;
struct meibo *b;

b=NULL;

while(1){
if((p=(struct meibo *)calloc(1,sizeof(struct meibo)))==NULL){

printf("ERROR。\n"); /*領域確保失敗時のエラー*/
}
gets(a->name); /*名前入力*/
if((strcmp(a->name,"***"))==0){ /*終了条件*/
break;
}
a->next=b;
a=b;
}
for(a=b; a->next !=NULL; a=a->next){ /*逆から表示*/
printf("%s\n",a->name);
}
printf("%s\n",a->name);
}

長々と申し訳ないのですが、一応これで入力したものを
逆からの表示をさせたのですが
さらにこの後入力順に表示させる方法がどうしても解りません。
よろしければやり方を教えてください。

805 :只今勉強中:02/06/02 03:06
構造体宣言でmeibo としたかったのを emibo とかいてしまいました
間違いです。

806 :只今勉強中:02/06/02 03:12
何がしたいのか書き忘れました。

名前を入力して、それを逆から表示して
さらにその後、入力した順番に表示をさせたいです。

807 :デフォルトの名無しさん:02/06/02 03:21
> struct meibo *next;
> struct meibo *befor;

next <--> prev(ious)
before(not befor) <--> after

名前は大事♪

808 :只今勉強中:02/06/02 03:25


お恥ずかしい限りです・・・・名前からやり直しますーー;

809 :デフォルトの名無しさん:02/06/02 03:28
p=
(゚Д゚)ハァ?

a->next=b;
a=b;
(゚Д゚)ハァ?

810 :只今勉強中:02/06/02 03:31
p= ×
a= でしたタイプミスですごめんなさい

811 :デフォルトの名無しさん:02/06/02 03:34
b->before=a;
a->next=b;
b=a;
おいらも暦2週間くらいなんだけど、これで両端の条件つければokじゃない?
どっか本にのってた。

812 :デフォルトの名無しさん:02/06/02 03:44
void main(void)
{
 struct meibo *a;
 struct meibo *b;
 b=NULL;
 
 while(1)
 {
  if((a=(struct meibo *)calloc(1, sizeof(struct meibo)))==NULL)
  {
   printf("ERROR。\n");/*領域確保失敗時のエラー*/
   exit(-1);
  }
  gets(a->name);/*名前入力*/
  if((strcmp(a->name,"***"))==0)
  {
   b->prev = NULL;
   break;
  }
  if(b != NULL)
   b->prev = a; 
  a->next = b;
  b = a;
 }

 for(a=b; a->next!=NULL; a=a->next)
  printf("%s\n", a->name); /*逆から表示*/
 
 printf("%s\n", a->name);
 
 for(; a->prev!=NULL; a=a->prev)
  printf("%s\n", a->name);
 
 printf("%s\n", a->name);
}

上ではやってないけどprintfはまとめるべきでcallocしたものはfreeするべき。

813 :デフォルトの名無しさん:02/06/02 04:06
>812
初っぱなが"***"だとbがNULLの状態でb->nextとやっている


814 :只今勉強中:02/06/02 04:10
まだ、きれいな書き方なんかも良くわからず、callocも
初めて使うので、見苦しい点はお許しください。

もっと勉強させてもらいます。

815 :デフォルトの名無しさん:02/06/02 05:44
一文字与えたり返したりする(EOFはなし)関数の引数や戻り値はchar型よりもint型にした方がよいですか?

816 :デフォルトの名無しさん:02/06/02 05:46
yoi>>815

817 :デフォルトの名無しさん:02/06/02 05:52
>>815
charで表せる値しか扱わないのなら char でもいい。
しかし char を式の中で使うと勝手に int になってしまうのて
引数での型は int のほうが便利という考え方もある。

818 :デフォルトの名無しさん:02/06/02 05:56
intなら無駄な変換がショウジマセーン
char→int→char→int...? コレッテコウリツテキ?

819 :デフォルトの名無しさん:02/06/02 06:03
>>818
その変換を「無駄」と考えるかどうかによるな。
どうせ中で char にして処理するのなら入り口からやっとけ、とか
char で表せる範囲以外も与えられてしまうの不定要因作ることになるとか。

820 :デフォルトの名無しさん:02/06/02 06:36
char→intは値保存だが
int→charはVO
わけのわからないうちに化けていくのをよしとするか
きっちりユーザが管理するか

821 :デフォルトの名無しさん:02/06/02 07:28
>>804

void main(void) => int main()
;; VC++ だとダメでしたっけ.
p = (struct meibo *)calloc(1,sizeof(struct meibo)) => a = calloc(1,sizeof *a)
;; ここだけ見れば, a が確かに1コ確保されていることが分かる.
;; calloc, malloc は void* 型だからキャストは不要.
gets(a->name) => fgets(a->name, sizeof a->name)
;; ウイルスは恐いるだろ.

calloc は状況にもよるが, まとめてやった方が良いこともある.
今回はしなくて良いだろう. やるとしたらこんなかんじかな.
#define PSIZE 128
meibo_alloc() {
struct meibo *r;
static struct meibo *pool = NULL;
if (!pool) {
int i;
if (!(pool = calloc(PSIZE, sizeof *pool))) return NULL;
for (i=0; i<PSIZE-1; i++) pool[i].next = &pool[i+1];
pool[PSIZE-1].next = NULL;
}
r=pool;
pool=pool->next;
return r;
}

>>812
exit(-1) => exit(1)


822 :デフォルトの名無しさん:02/06/02 11:49
ふーん。->sage

823 :デフォルトの名無しさん:02/06/02 13:52
トークンごとに分割する標準ライブラリってありますか?


824 :デフォルトの名無しさん:02/06/02 14:09
>823
(゚∀゚)http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtok.3.html
だけど使うなよ。

825 :デフォルトの名無しさん:02/06/02 14:19
>>824
ありがとうございます。そのページの

これらの関数は絶対に使用しないこと。もし使用する場合は、以下のことに注意すること。

これらの関数はその最初の引数を変更する。
これらの関数は const な文字列では使えない。
終端文字はすべて \0 になってしまう。
strtok() 関数はパーズに静的バッファを用いるので、スレッドセーフでない。もしこれが問題になる場合は strtok_r() を用いること。

はどういうことなんでしょうか?聞いてばかりでごめんなさい。

826 :デフォルトの名無しさん:02/06/02 14:32
>825
読んだとーりだよ。
どこがわからないのか言ってみなさい。

語句がわからないなら調べなさい。

827 :デフォルトの名無しさん:02/06/02 14:34

   /⌒ヽ 
  / ´_ゝ`)  
  |    /   
  | /| |   
  // | |  
 U  .U





828 :デフォルトの名無しさん:02/06/02 16:46
もうなにもかもマンドクセー。全部投げ出したい。

829 :デフォルトの名無しさん:02/06/02 17:12
>>828
他人に迷惑かけないのならなんでもしろ。
君の人生だ。

830 :デフォルトの名無しさん:02/06/02 17:19
nit i=0;

while(i < 10)
{
 i++;
}

もっと高速にできますか?

831 :デフォルトの名無しさん:02/06/02 17:20
>>830
int i = 10;

832 :デフォルトの名無しさん:02/06/02 17:20
nit i = 9;

833 :デフォルトの名無しさん:02/06/02 17:21
int i=10;

834 :デフォルトの名無しさん:02/06/02 17:21
int i=9;

835 :デフォルトの名無しさん:02/06/02 17:21
int i=10;

836 :デフォルトの名無しさん:02/06/02 17:22
10;

837 :デフォルトの名無しさん:02/06/02 17:24
/*
nit i=0;

while(i < 10)
{
 i++;
}
*/

838 :デフォルトの名無しさん:02/06/02 17:24
怒濤のレスだ...

839 :デフォルトの名無しさん:02/06/02 17:25
どっちにしろ何の結果も生み出さないソースだから

;

と等価

840 :デフォルトの名無しさん:02/06/02 17:27
int i;
asm
{
 mov a, 10
}

841 :デフォルトの名無しさん:02/06/02 17:27
int i=0;
char Text="Ogoru";

while(i < 10)
{
 if(Okane[i] == "Kasita"){
Text="Ayamaru";
   break;
 }
 i++;
}

return Text;

高速にできますか?

842 :デフォルトの名無しさん:02/06/02 17:27
int i;
asm
{
 mov i, 10
}


843 :デフォルトの名無しさん:02/06/02 17:28
Okane[i] == "Kasita"
ナニコレ?

844 :デフォルトの名無しさん:02/06/02 17:28
char Text="Ogoru";
なにこれ?

845 :デフォルトの名無しさん:02/06/02 17:29
Text="Ayamaru";
ナニコレ?

846 :デフォルトの名無しさん:02/06/02 17:30
>>841はC言語を知りませんでした。
終了。

847 :デフォルトの名無しさん:02/06/02 17:31
error C2440: 'initializing' : 'char [6]' から 'char' に変換することはできません。

848 :デフォルトの名無しさん:02/06/02 17:32
int num=Opera(Burauza);

可能?



849 :デフォルトの名無しさん:02/06/02 17:33
香ばしくなって参りました。


850 :デフォルトの名無しさん:02/06/02 17:33
muri

851 :デフォルトの名無しさん:02/06/02 17:36
>>848
ローマ字かよ、萎えるな。
browserくらいちゃんと書け。

852 :デフォルトの名無しさん:02/06/02 17:36
int Opera(int a)
{
 return a;
}

main()
{
 int Burauza = 0;
 int num = Opera(Burauza);
}

853 :デフォルトの名無しさん:02/06/02 17:36
>>841
ネタでしょ。
でないと(略ね

854 :デフォルトの名無しさん:02/06/02 17:37
haxahaxa

kanou?

855 :デフォルトの名無しさん:02/06/02 17:38
main()
{
 /*
 haxahaxa
 */
}

856 :デフォルトの名無しさん:02/06/02 17:38
>>854
;が必要です。

857 :デフォルトの名無しさん:02/06/02 17:38
>>856

>>855の手がありました。

858 :デフォルトの名無しさん:02/06/02 17:39
int main()
{
if(haxahaxa) ;
}


859 :デフォルトの名無しさん:02/06/02 17:40
教えてくれてありがとう

860 :デフォルトの名無しさん:02/06/02 17:40
どうもいたしまして。

861 :デフォルトの名無しさん:02/06/02 18:15
構造体の初期化って
memset( kou, 0, sizeof(KOUZOUTAI) );
でいいんですか?

862 :デフォルトの名無しさん:02/06/02 18:32
>>861
struct KOUZOUTAI{
int n;
double d;
};
なら、

struct KOUZOUTAI kou={0,0.0};

863 :デフォルトの名無しさん:02/06/02 18:35
ハァ?

864 :862:02/06/02 18:37
>>863
何か間違ったこと言ったかしら?
memsetを配列の初期化以外に使う奴はいない。

865 :デフォルトの名無しさん:02/06/02 18:41
> 私の場合、構造体定義の直後に、Zeromemory(またはmemset)で、構造体全体を 0 で初期化するようにしています。
> Windows では割と一般的に行われてますが、これだと、構造体にゴミデータがあったとしても、すべて 0 に初期化されるので、比較時の信頼性は高くなると思います。

866 :デフォルトの名無しさん:02/06/02 18:41
Windows APIでは引数用構造体の初期化はmemsetが基本だから
いる。

C++でobject相手にmemset初期化は危険だが、Cなら問題ないっしょ

867 :デフォルトの名無しさん:02/06/02 18:42
WindowsのサンプルはZeroMemoryを使っているが
#ZeroMemoryはmemset(*,0,*)

868 :デフォルトの名無しさん:02/06/02 18:44
memsetを使うメリットがわからん。
比較?構造体自体を比較するのか?

869 :デフォルトの名無しさん:02/06/02 18:48
比較の話は知らんが、WindowsではSDKのver.upによって構造体のフィールドが増えても
再コンパイルで安全に通るようにZeroMemoryするように指示されてる。
さらにdwSizeフィールドに (sizeof 構造体) も入れる。

870 :デフォルトの名無しさん:02/06/02 18:50
少し関係ないのですが
C言語を今使っているのでここで聞きます。
書きたいもが頭にあるのに、どうしてもC言語で書けない時はどうしてますか?
ひたすら考えますか?
ここが経験なのでしょうが良い方法ありますか?

871 :870:02/06/02 18:51
ageそこねました

872 :デフォルトの名無しさん:02/06/02 18:53
Cで書くことを諦める。

873 :870:02/06/02 18:56
C言語しか知らなければ諦めるしかないですか?

874 :デフォルトの名無しさん:02/06/02 18:58
逆になにか方法があるのかと問いたい

875 :デフォルトの名無しさん:02/06/02 18:58
>>870
いいたいことがあるのにどうしても適切な言葉が見つからない、というときは語彙力不足。
Cで語彙に相当するパターンのストックは、・・いろいろ作る経験の中で増やすしかないのかねえ。


876 :870:02/06/02 19:00
場数を踏むなどかも知れませんが、どうやりますか?
サンプル見るとか?

877 :デフォルトの名無しさん:02/06/02 19:03
>>869
なるほど・・・
0以外に初期化したいときはどうするんだろ・・・

878 :デフォルトの名無しさん:02/06/02 19:03
>>876
既存の関数を探す。

879 :デフォルトの名無しさん:02/06/02 19:05
全て0にしたかったらstaticをつける。これ最強。
最初の呼び出ししか効果がないが(ワラ

880 :デフォルトの名無しさん:02/06/02 19:06
>>870
なんだか漠然としすぎてるような・・・
自分で作るなら努力(書籍読む、ネット検索、サンプル見る等)する
しかないのでは。

881 :デフォルトの名無しさん:02/06/02 19:12
>>870
何でもかんでも一つの言語でやろうとするのは間違い。

882 :デフォルトの名無しさん:02/06/02 19:13
>>881
ひとつの言語しか使えない環境だったりして・・・

883 :870:02/06/02 19:14
スレ違いになってしまうのですが
皆さんどのくらいの言語を使用しているのですか?

884 :デフォルトの名無しさん:02/06/02 19:15
>>883
Cのみ。他は使えない。
使えなくても困らない。プロじゃないから。

885 :870:02/06/02 19:17
>>884さん
プログラム組むとき分からないことあったら(ロジック等)どうされますか?
検索とサンプル探しですか?


886 :デフォルトの名無しさん:02/06/02 19:19
>>885
まあそんなとこ。
駄目だったら諦める。

887 :デフォルトの名無しさん:02/06/02 19:20
>>870
アルゴリズムとデータ構造について、コンパイラ(の制作)について、OS(の制作)について
勉強してみ。かなり応用力がつくはず。

888 :870:02/06/02 19:21
なるほど…
無い物は作れ、作れなければ諦めろ、という事ですね。
ありがとうございますです

889 :デフォルトの名無しさん:02/06/02 19:22
>>888
作ろうとしているものを使わなくても済む方法を考えるのもいい。

890 :デフォルトの名無しさん:02/06/02 19:24
一覧が更新されなかったので書き込み

891 :デフォルトの名無しさん:02/06/02 19:26
とにかく努力ぢゃ

892 :デフォルトの名無しさん:02/06/02 19:28
>>887
おまえはほんとにコンパイラやOSを作ったことがあるのかと

893 :デフォルトの名無しさん:02/06/02 19:39
tracertのアルゴリズムはどうなっているのでしょうか…。

http://www.google.co.jp/search?q=tracert%E3%80%80algorithm+source&hl=ja&ie=UTF8&oe=UTF8

お願いします。

894 :デフォルトの名無しさん:02/06/02 19:42
おいおまえら。なんか知らないけどお願いされたぞ。

895 :デフォルトの名無しさん:02/06/02 19:43
>>893
tracertはwindowsでのコマンド名で、一般的にはtraceroute.
よく知らんが、rfc1393はどう?

896 :870:02/06/02 19:52
プログラムが書けるか書けないかは
やりたい事をいかに具現化出来るかどうかにかかっている訳ですよね。
言語仕様がどうだとかいうこととは関係なく。
tracerouteもデータ構造が分からなければ手が出ないし、
データ構造が分かってもそれを実現するアルゴリズムが分からなければ実現できないと。
プログラムは言語以外のところでかなり苦労(努力か)するのですね。


897 :名無しさん@お腹いっぱい。:02/06/02 19:53
>>895
そだね、tracerouteの実装はプログラムのアルゴリズムの問題
ぢゃないよね。RFCを読んで使用しているプロトコルを理解しろや
って話だね。プロトコル自体が意味を持っているわけで、コマンド
はプロトコルのフロント的な意味あいがおおきい。

898 :870:02/06/02 19:54
漏れ、馬鹿さらしたりして

899 :デフォルトの名無しさん:02/06/02 20:03
for(i=0;i<10;i++)hoge();
この次の行で i=10; である保証はないよね。

でもそれってどの辺に規定されてたっけ・・・

900 :デフォルトの名無しさん:02/06/02 20:04
>>899
いやその10は保証されてるっしょ。Cでは。
Pascalだと不定だけど。

901 :デフォルトの名無しさん:02/06/02 20:06
int i;

hoge()
{
i = 100;
}

main()
{
for(i = 0; i < 10; i++)hoge();
}

902 :893:02/06/02 20:19
>>896-897
ありがとうございます。
したい事は、今ルータでネットしているのですが、
どうしても、LocalIPしか拾得することができません。
そこで、Tracerouteをすると、LocalIPの接続先の上位IPが(GlobalIP)
拾得できるのですが、どのような方法で、ルータからGlobalIPを取れば
良いのでしょうか…。おねがいします。

903 :デフォルトの名無しさん:02/06/02 20:20
>>902
tracerouteでは無理。

904 :893:02/06/02 20:33
>>903
他に何か方法がありますでしょうか…。


905 :デフォルトの名無しさん:02/06/02 20:35
if(pointer) pointer->message();


906 :デフォルトの名無しさん:02/06/02 20:40
pointer && pointer->message();

907 :デフォルトの名無しさん:02/06/02 20:44
>900
おぅそうでしたか。勘違いぶっこいたて。
(゚∀゚)サンクスコ

908 :デフォルトの名無しさん:02/06/02 20:45
>>903
http://pc.2ch.net/test/read.cgi/tech/1021034822/976-977

909 :デフォルトの名無しさん:02/06/02 20:45
>>907
保証されているかどうかはhoge()次第だって

910 :デフォルトの名無しさん:02/06/02 20:46
>>909
iがローカル変数で、エイリアスもないならok。

911 :デフォルトの名無しさん:02/06/02 20:52
>>910
#define hoge() (i = 100)

.. hoge()の中でiを変更しないなら、と言わないと駄目だな。

912 :デフォルトの名無しさん:02/06/02 21:16
>>911
ひねくれ・・・と言いたいところだが、
そういうことまで考えられるプログラマじゃないと
(iが10にならなかった時、デバッグするのは)難しい

913 :デフォルトの名無しさん:02/06/02 21:26
>>900
> Pascalだと不定だけど。
どうなっとるんじゃPascalは・・・

914 :デフォルトの名無しさん:02/06/02 21:51
double _s[3]

っていう宣言はどういうことですか?

915 :デフォルトの名無しさん:02/06/02 21:52
>911
ローカル変数でも、環境によっては、スタック辿れば……

916 :デフォルトの名無しさん:02/06/02 21:53
詳しく書くと

double *s , _s[3];

s = _s - 1 ;
って演算があるんですがこれは何を計算してるのですか?

917 :デフォルトの名無しさん:02/06/02 21:54
>>916
それは出来ない

918 :デフォルトの名無しさん:02/06/02 21:54
s = &_s[0] - 1;

919 :デフォルトの名無しさん:02/06/02 21:55
s = address of s[0] - sizeof(double)

920 :デフォルトの名無しさん:02/06/02 21:56
>>917
できるだろ。アクセスするのはまずいかもしれないが。

921 :デフォルトの名無しさん:02/06/02 21:56
>>917
これは一体どのようなことをしようとしてるかわかりますか?



922 :デフォルトの名無しさん:02/06/02 21:56
ポインタにゆるされた演算は加算のみなはず

923 :デフォルトの名無しさん:02/06/02 21:56
>>921

>>919

924 :デフォルトの名無しさん:02/06/02 21:57
>>922
うそ・・・?

925 :デフォルトの名無しさん:02/06/02 21:57
>>919
なるほど。
でも変数名に最初アンダーバーっていいんでしたっけ?

926 :デフォルトの名無しさん:02/06/02 21:58
>>925
_は英字とみるからよい。

927 :デフォルトの名無しさん:02/06/02 21:58
_.*は予約語じゃないの?

928 :デフォルトの名無しさん:02/06/02 21:58
でもなんとなくやろうとしてることが
分かった気がします。
ありがとうございます

929 :デフォルトの名無しさん:02/06/02 21:59
>>927
おいおい・・・

930 :デフォルトの名無しさん:02/06/02 21:59
>>920
-1はまずいんでは?
配列内へのポインタは配列内とその1つ後ろしか指せないはず。
_s-1 == _sが成立しちゃっても文句は言えない・・・と思われ。
でもC++の知識だからCでは違うのかしらん?

931 :デフォルトの名無しさん:02/06/02 21:59
>>922を証明する情報希望。

932 :デフォルトの名無しさん:02/06/02 22:00
>>930
いや、ポインタを生成するのはいくらでも可能かと・・・
int *i; i=(int *)333;ってやってもいいくらいだから。

933 :デフォルトの名無しさん:02/06/02 22:00
ポインタは加算と減算の算術演算ができます。行える演算は、ポインタに対する整数
の足し算と引き算(+、+=、-、-=)、インクリメント(++)、デクリメント(--)、及びポ
インタ同士の引き算だけです。

934 :928:02/06/02 22:01
>>930
これはCで書かれたものです。
いいのかはわかりませんが

935 :デフォルトの名無しさん:02/06/02 22:01
>>933
減算もOKか。よかった・・・
焦ったよ。
(減算は負の数の加算だけどね。)

936 :デフォルトの名無しさん:02/06/02 22:01
>>930
( ´,_ゝ`)プッ

937 :デフォルトの名無しさん:02/06/02 22:02
>>932
もちろん、シンタックス的には可能だけど、
その後sを使ったら(たとえs+=1して元に戻したつもりになっても)何起こるか分からない、と

938 :デフォルトの名無しさん:02/06/02 22:02
>>937
だからアクセスするのはまずいって言ったじゃない。

939 :デフォルトの名無しさん:02/06/02 22:03
>>930
ポインタの減算はSTLで使わないか?

940 :938:02/06/02 22:03
アクセス==間接参照ね。

941 :928:02/06/02 22:03
配列は _ssx でした。
double _ssx[3];

でした。
で、調べてみたら _ss は予約語のようですが
なんの意味があるかわかりますか?

942 :デフォルトの名無しさん:02/06/02 22:04
>>941
そんな予約語は聞いたこと有りません。
C99にはあったりして。

943 :922:02/06/02 22:05
ガーン、参照マニュアルのA6.6みたら
減算もOKだった

944 :デフォルトの名無しさん:02/06/02 22:05
>>939
930だが、俺は減算はまずいと言った覚えはないぞ

945 :デフォルトの名無しさん:02/06/02 22:06
>>929
おいおい・・・

946 :928:02/06/02 22:06
>>942
そうですか。ANSIで使われてると
書かれていたのですが間違いかもしれません。

947 :デフォルトの名無しさん:02/06/02 22:07
>>945
標準ライブラリで使われている変数名や関数名が予約語だと思っている人?

948 :デフォルトの名無しさん:02/06/02 22:07
結局^_.*$は予約語なんですか?

949 :922:02/06/02 22:07
おかしいな
どっかでポインタは足してぐことしか保証されてないと聞いたような気がするけど
俺の脳内電波かな

950 :デフォルトの名無しさん:02/06/02 22:07
>>938
間接参照しなくても問題になることはあるけど、
アクセスしないってのがsを全く使わないってのなら問題ないだろうけど。

951 :デフォルトの名無しさん:02/06/02 22:08
>>949
減算は負の数を加算することです。


952 :928:02/06/02 22:10
なんとか解決することが出来ました。
皆さん、ありがとうございました

953 :デフォルトの名無しさん:02/06/02 22:11
予約語一覧
C
auto const double float int short struct unsigned
break  continue else   for   long   signed  switch  void  
case default enum goto register sizeof typedef volatile
char do extern if return static union while

C99
inline restrict _Bool _Complex _Imaginary

954 :デフォルトの名無しさん:02/06/02 22:12
_Boolとかの名前すげー気に入らないんだけど俺

955 :デフォルトの名無しさん:02/06/02 22:12
>>954
C++使ってください。

956 :デフォルトの名無しさん:02/06/02 22:13
予約語じゃなくて処理系ように予約されている と言うのが適切か。

957 :デフォルトの名無しさん:02/06/02 22:14
>>953
使ったことないのがいくつかあるな・・
autoにregister、signedにvolatileか。

958 :デフォルトの名無しさん:02/06/02 22:14
_ssはStack Segmentやねーの?処理系独自なヤツ。

959 :デフォルトの名無しさん:02/06/02 22:15
auto…省略可能なので誰も使わない。
register…無視して勝手にレジスタに入れる変数決めるコンパイラ多数
signed…unsignedが標準の処理系なら使う
volatile…最適化されると困る時に

960 :デフォルトの名無しさん:02/06/02 22:16
>>955
えぇ!_Bool気に入らないの俺だけかよ!
_boolだったらまだ許せたのに

961 :デフォルトの名無しさん:02/06/02 22:16
>>959
> signed…unsignedが標準の処理系なら使う

それってcharに限ってのこと?

962 :デフォルトの名無しさん:02/06/02 22:19
signed long double

963 :デフォルトの名無しさん:02/06/02 22:20
>>961
int も。

964 :!:02/06/02 22:21
http://www.twin.ne.jp/~ackey/

965 :デフォルトの名無しさん:02/06/02 22:21
>>963
「char以外は特に指定しなければsignedになる」ということは保証されていると思っていたけど、違うんだ。
サンクス!

966 :デフォルトの名無しさん:02/06/02 22:26

初心者
1コンピュータの操作法
2Cの文法の基礎知識
3簡単な各種アルゴリズム
4デバッグ手法(スナップショット、デバッガの使い方)
中級者
5大きなプログラムの作成法(モジュール化)
6アルゴリズムの最適化
7システム分析法
8データ構造論
9さまざまなトラブルの対処法(メモリの管理(ポインタ)、環境の違い、境界条件)
10オペレーティングシステムの違い(移植性)

おいおまえらどのくらいの知識もってるよ?
さまざまなトラブルの対処法(文法ミス、アルゴリズムのミス、勘違い)

967 :デフォルトの名無しさん:02/06/02 22:26
予約語=keyword
 名前として許されている文字の組み合わせのうち、処理系で定義済みの語
*とか+とかは、演算子=operator
{ } とか ... とかは、区切り子=punctuator
operatorでありpunctuatorでもある記号も、ある。


968 :デフォルトの名無しさん:02/06/02 22:27
>>966
初心者
1コンピュータの操作法
2Cの文法の基礎知識
3簡単な各種アルゴリズム
4デバッグ手法(スナップショット、デバッガの使い方)
5さまざまなトラブルの対処法(文法ミス、アルゴリズムのミス、勘違い)
中級者
6大きなプログラムの作成法(モジュール化)
7アルゴリズムの最適化
8システム分析法
9データ構造論
10さまざまなトラブルの対処法(メモリの管理(ポインタ)、環境の違い、境界条件)
11オペレーティングシステムの違い(移植性)

おいおまえらどのくらいの知識もってるよ?



969 :デフォルトの名無しさん:02/06/02 22:27
>>966
そんな基準じゃ示せないと思うが。

970 :デフォルトの名無しさん:02/06/02 22:28
>>969
他にどんな基準があるの?

971 :デフォルトの名無しさん:02/06/02 22:28
次スレは?
なければ立ててくるけど。

972 :デフォルトの名無しさん:02/06/02 22:29
>>966
知ってる単語をならべただけ、の印象が拭えないなぁ。
もうちょっと聞きたいことを絞ってほしい也。

973 :デフォルトの名無しさん:02/06/02 22:29
>>971
おながいすました。

974 :デフォルトの名無しさん:02/06/02 22:29
>>970
間違えずにreturnと書けるかどうかとか。retrunとか書いたりしないか。

975 :デフォルトの名無しさん:02/06/02 22:30
volatileが必要な場所が分かるかどうか

976 :デフォルトの名無しさん:02/06/02 22:30
>>972
お見事。
本に載ってた文章すべて写しました。

977 :デフォルトの名無しさん:02/06/02 22:30
>>974
いまだにretrunやりますが、何か?

978 :デフォルトの名無しさん:02/06/02 22:30
>>974
ネタでしょ?

979 :デフォルトの名無しさん:02/06/02 22:31
>>974
それトラブルの対処法にはいってる。

980 :デフォルトの名無しさん:02/06/02 22:32
>>975
それは>>970のどれにもはいらいの?

981 :デフォルトの名無しさん:02/06/02 22:32
次スレまだ〜?

982 :デフォルトの名無しさん:02/06/02 22:32
次スレの名前は日下部陽一でいいの?

983 :デフォルトの名無しさん:02/06/02 22:33
いいんじゃない?

984 :デフォルトの名無しさん:02/06/02 22:33
>>983
OK

985 :デフォルトの名無しさん:02/06/02 22:34
C言語なら、俺に聞け! <23>
http://pc.2ch.net/test/read.cgi/tech/1023024817/

986 :デフォルトの名無しさん:02/06/02 22:34
>>1
メールアドレスがvoidになってない。
までそのままかよ。

987 :デフォルトの名無しさん:02/06/02 22:36
>>986
このスレの>>2と同じでワラタ

190 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)