■ 2ちゃんねるは、ここのサーバを使ってるです。。。
 .jp ドメインお持ちのお客様大歓迎。maido3.jp
 .fm 取得代行します。(US) maido3.fm
 .ca 取得代行します。(US) maido3.ca
 .com .net .org 取得代行します。(US) maido3.com
 .cc .to .tv 取得代行はじめました。NEW
人気サイト
月々1,000円からの BinboServer.com 2ちゃんねるも使っている Big-Server.com
>> 2ちゃんねる、サーバ監視所

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
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と同じでワラタ



2ちゃんねるは、ここのサーバを使ってるです。。。