トップページ⇒tech
987コメント239KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001日下部陽一NGNG
漏れは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を見な。
0002デフォルトの名無しさんNGNG
>>1
メールアドレスがvoidになってない。
・作ってわかるCプログラミング(通称 アヒル本)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711
0003デフォルトの名無しさんNGNG
【コンパイラ】
ぼくもgccは好きです!
http://gcc.gnu.org/
タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/l50

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【製品版。有料】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
0004デフォルトの名無しさんNGNG
>>1 乙〜
0005デフォルトの名無しさんNGNG
v(^・^)v
0006デフォルトの名無しさんNGNG
前スレから続いている議題
http://pc.2ch.net/test/read.cgi/tech/1022045622/900

892
scanf;じゃscanf関数の呼び出しすらしない罠
900
>>892
うぉ、本当だ。VC++ 6 でやると、警告は出るがコンパイルは通る。
(でも、何も生成されない。) 何で、エラーにしないんだ ?
scanf(); ならエラーにするくせに...。
0007デフォルトの名無しさんNGNG
質問ですが、
CSVファイルを読み込みたいんですが、
カンマを抽出するときは、一文字づつ
判定していくんでしょうか?教えてください。
0008デフォルトの名無しさんNGNG
>>7
csvからhtml表生成最強言語は?
http://pc.2ch.net/test/read.cgi/tech/1021596367/
0009デフォルトの名無しさんNGNG
>>7
ちゃんと"の中のカンマとかを特別扱いしたければ1文字ずつ読むしかない。

Excel互換にしたいならもっともっと大変。
http://pc.2ch.net/test/read.cgi/tech/1021596367/75
0010デフォルトの名無しさんNGNG
うを誤爆した。書き直す。

>>6 に関して。
前スレ900は何を教えて欲しいのかもう一度説明するべきだと思うな。
俺は「scanf;が関数呼び出しだと思っていた」に一票だが。
0011デフォルトの名無しさんNGNG
TABにした方がはるかに簡単、という罠。
0012デフォルトの名無しさんNGNG
>>11
それはCSVとは言わない罠
0013デフォルトの名無しさんNGNG
TAB区切りはTSVって言うのか?あんまし聞いたことないな・・・
0014デフォルトの名無しさんNGNG
http://www.google.com/search?num=100&hl=ja&q=TSV+CSV&lr=lang_ja
0015デフォルトの名無しさんNGNG
http://www.e-words.ne.jp/view.asp?ID=2438
0016デフォルトの名無しさんNGNG
TSV、結構メジャーなのね・・・スマソ
0017デフォルトの名無しさんNGNG
>>10

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

typedef int (*f)(const char *,...);
…
f func = flag ? scanf : printf;
…
(*func)(format, …);

みたいな使い方が思い浮かばなかったんじゃない?
(scanfやprintfでこういう事を良くやるっていう意味でなく
関数へのポインタにscanfとかprintfが代入できるという意味。)
0018デフォルトの名無しさんNGNG
> げっ、こいつほんとにわかってなかったのかよ
> scanf; と (int (*a)(); としたあとの) a; の違いを示せって言ってんの
> わからんか、それとも 1000 も近いから単なる時間稼ぎか ?
00197NGNG
ん〜よくわかりませんでしたが、一文字づつ
読むしかないみたいなんで頑張って読みます。
もしかしたら文字列操作でピピピッピっと簡単に
できるんじゃないかなぁとか、思っていました(w
0020デフォルトの名無しさんNGNG
aは初期化していないのでごみです。
scanfはscanfのアドレスを指しています。
とか言ってみる。

900はpascalのような関数呼び出しを期待したか、
1; がエラーにならないのが不思議。
のどっちかだと思う。
0021デフォルトの名無しさんNGNG
>900はpascalのような関数呼び出しを期待したか
漏れはこれに1票。
で、過ちに気づいて負けず嫌いの前スレ900君は必死で話題を逸らそうとしていたと。
0022デフォルトの名無しさんNGNG
>>19
CSVの読み込みは結構大変だと思う。
TAB区切りなら文字列も数値も、
sscanf(str,"%d %s %lf %lf %lf %lf %lf",.....);
こんなんで簡単に読み込めるのだが・・・。

1バイトずつ読む場合は
・""で囲われているかの処理、
・2バイト文字(漢字)の処理、
の2つが必須かと。がんがってね。
0023デフォルトの名無しさんNGNG
>>18=旧900なのかな?

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

で、何がわからんの?
002418NGNG
違うよ。貼っただけ。
0025>>旧904 != >>18NGNG
旧スレの904だけど18じゃないっす
0026デフォルトの名無しさんNGNG
前スレ900はもう逃げたんじゃないか?(藁
0027デフォルトの名無しさんNGNG
旧904は勘違いさん
0028デフォルトの名無しさんNGNG
ιゅぅリょぅ?
0029デフォルトの名無しさんNGNG
>>26
そういう事書くとまた前スレ900が話すり替えた反論始めるから止めてくれ。
0030デフォルトの名無しさんNGNG
負けず嫌いクンだから自分の無知は認めないだろうね。
勘違いしてた、って一言いえば匿名掲示板なんだからそれで済むと思うんだが。
まあ >>20 ってことで。
0031デフォルトの名無しさんNGNG
909 名前:900[sage] 投稿日:02/05/26 15:44
>>902, >>904
関数プロトタイプ知らんの ? だったら、何で scanf(); はエラーに
するのか説明しろよ。

ここがそもそもの(以下略)
0032デフォルトの名無しさんNGNG
可変個引数を表す...というのがありますよね?
これは予約語なんですか?変数やマクロはこういう形では作れませんよね?
0033デフォルトの名無しさんNGNG
900はうさを晴らすために、どこかで誰かを煽り、
煽られた人はまた誰かを煽る・・・まるで・・・
0034デフォルトの名無しさんNGNG
(((( ;゚Д゚)))ガクガクブルブル
0035デフォルトの名無しさんNGNG
>>32
C99なら作れる。
#define debug(...) fprintf(stderr, __VA_ARGS__)
0036デフォルトの名無しさんNGNG
>>35
シランカッタ。
gccだと確かにできた。
0037旧904NGNG
>>27
どこが勘違いしてるの?
つか、勘違いがあるなら正してください。
0038デフォルトの名無しさんNGNG
> 旧スレの904だけど18じゃないっす
これ。
0039デフォルトの名無しさんNGNG
> >>18=旧900なのかな?
0040デフォルトの名無しさんNGNG
>39

>24-25
0041デフォルトの名無しさんNGNG
900はVC++が
「関数呼び出しに引数がありません」
と言うので、scanf; が関数呼び出しだと思ってたらしい(藁

Cプログラムの動作の判断をVC++に頼るようじゃなあ…
0042旧904NGNG
>>38
あー、そういうことか。
18 != 旧900で、それなら次に疑われそうなのは漏れだったから、
18 != 旧904としただけっす
0043デフォルトの名無しさんNGNG
>904=自意識過剰
0044デフォルトの名無しさんNGNG
もう900は忘れろ。
age!
0045デフォルトの名無しさんNGNG
>>43 それはひどいわ!
0046デフォルトの名無しさんNGNG
もしかしてこれもUNIX板の住人の仕業か?(ワラ
0047デフォルトの名無しさんNGNG
落ちつきました。
祭りは無事終了しますた。

乗り遅れた人。またどうぞ。
0048デフォルトの名無しさんNGNG
>>32
変数って?

int (*func_ptr)(const char *, ...);
で変数func_ptrが宣言できるけど?
0049デフォルトの名無しさんNGNG
Cでインタプリタ書いてるんですが、スタックオーバーフローのチェックってど
うやったら良いですか?

少々規格を逸脱してもしょうがないかなと思っていますが、なるべく速くてなる
べく多くのOSで動くやり方を教えろ。
0050デフォルトの名無しさんNGNG
なるべく早く、なるべく互換性を高く、ね。
答えは簡単。
スタックを使うな
005149NGNG
>>50
良く分かりません。構文木を再帰的に実行しているんですが、再帰をしないで自分
で配列とかを取れということですか? それって速い?
0052デフォルトの名無しさんNGNG
>>51
再帰解析を必要としない方法で解析すればいい
0053デフォルトの名無しさんNGNG
>>51
関数呼び出しのオーバーヘッドがない分速かったり。
0054デフォルトの名無しさんNGNG
>>49
関数の入り口でauto変数のアドレスを比べてる
インタプリタがいくつかあったような…
0055デフォルトの名無しさんNGNG
>>51
リストジャネーノ?
005649NGNG
バイトコードにコンパイルしたりする気力&テクはちょっと無いんです。>>all
配列でスタックをエミュレートすると、自分で戻り番地へのリターンとかもエミュ
レートしなきゃならないですよね。なんか遅くなりそうな気がするんですけど。
0057デフォルトの名無しさんNGNG
mprotectでスタックの端を書き込み禁止にしておいて、
オーバーフローをトラップする。これ最強。
(Winでどうやるかは知らぬ。)
0058デフォルトの名無しさんNGNG
>>54 なるほど…スタックはたいてい番地が減る方向に伸びるんですよね?

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

あ、言い忘れてましたけど、今は再帰の深さ(回数)を数えてます。
0059デフォルトの名無しさんNGNG

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


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

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

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

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

                     ノ⌒)
         ∧_∧     ( _ノ、ノ
         ( ´Д`)    / /  。
       /⌒    ⌒'/ /    。
      /_/|       / /     。
    (ぃ9 ./    / //      。
       /   / /3
      (   / //
       \. \\
         \. \\
          >  ) )
         / //
         / / /
         / / /
       ( ヽ ヽ
        \__つ)
0062デフォルトの名無しさんNGNG
ともっちのことを見捨てるな!ボケが!
0063デフォルトの名無しさんNGNG
>>62
      チャンチャラチャンチャラ      
  (⌒)  /
 (^ @^) -
  (⊃⊂) ヽ

      オッカシー      
  (⌒)  /
 (・ @^) -
○( ⊂) ヽ
0064デフォルトの名無しさんNGNG
fread(void *ptr, size_t size, size_t n, FILE *stream);
の3つ目の引数は何か意味があるのですか?
sizeにsize*nを入れればいいと思うのですが?
0065デフォルトの名無しさんNGNG
>>64
掛け算するのが面倒いときに使います
0066デフォルトの名無しさんNGNG
>>65
fread(_, a, b, _)
と
fread(_, a*b, 1, _)
は動作も、戻り値も違うよ。
0067デフォルトの名無しさんNGNG
>>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倍)速かった。
0068デフォルトの名無しさんNGNG
>>48
int ...;
できるか?
0069デフォルトの名無しさんNGNG
>>32
... は、区切り子(punctuator)で、 ( とか ; とかと同じ種類です。
0070名無しです。NGNG
今高校でC言語勉強してるんですが、難しいです(><) >>1は難しくないですか???
0071デフォルトの名無しさんNGNG
あのですね。
C言語は、IF文のすべての条件式を評価する言語ですか?
たとえば、

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

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

で、b=0の入力が入った時、エラーですか?
0072デフォルトの名無しさんNGNG
Cは優しい部類に入る言語です。。。
0073デフォルトの名無しさんNGNG
>>70
勉強としてやるとつまらないだろうね。
0074デフォルトの名無しさんNGNG
>>71
やってみればいいじゃん…
0075デフォルトの名無しさんNGNG
>>71
セーフです。

だから
int i = 0;

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

とか出来たりします。
0076デフォルトの名無しさんNGNG
>>74
微妙に処理系によって違う事があるので。。。
一般的にはどうなんだろうと。
ANCIてきにはどうなのかと
0077名無しです。NGNG
じゃどうやってC言語勉強したんですか?>>73
0078デフォルトの名無しさんNGNG
趣味で。
0079デフォルトの名無しさんNGNG
>>71
if文かどうかじゃなくて、演算子による。

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

A?B:Cという式で、Aが0ならBは評価されないし、
0でないならCは評価されない。
0080デフォルトの名無しさんNGNG
どうやって自転車の乗り方を覚えた?
それといっしょだよ。
0081デフォルトの名無しさんNGNG
>>77
BASICに飽きた。
↓
難しいともっぱらの噂のC言語。
↓
入門書立ち読み。
↓
ああ、そう言うことか。
↓
書く。
↓
動く。
↓
楽しい!
↓
ここまで思い出して目頭が熱くなった。
↓
あのころは純粋だった。楽しかった。それがなんだ、今は・・。
0082名無しです。NGNG
趣味か〜 俺も趣味にしようかな?>>78
明日はプログラミングのテストが返ってくる・・・(;;)
0083デフォルトの名無しさんNGNG
>>75 >>79
ありがとう
つまり、セーフなんですね。
0084デフォルトの名無しさんNGNG
char *data[]={"aaa","bbb","ccc"}というようにすると
char型へのポインタの配列を定義したことになりますよね?
data[0]には"aaa"へのポインタ、data[1]には”bbb”へのポインタというように。

この場合、この文字列"aaa"ってのは、実際にメモリ上にデータ領域が確保されてるんでしょうか?
この場合、あくまでポインタの定義であって、文字列の領域も確保されているのかよく分かりません。
それともし確保されているなら、この定義をグローバルで行った場合
プログラム終了まで文字列の記憶領域の保証はされるのでしょうか?
0085デフォルトの名無しさんNGNG
>>84
>char *data[]={"aaa","bbb","ccc"}
誤解の入る余地があるので非推奨だった気が。
008671NGNG
っていうのは、こういうことがしたいからなんです。
引数があって、かつ、その引数が "-h" なら、ヘルプを表示するって感じです。
なんかおかしいんでしょうか?

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

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

コンパイルは出来るけど、実行エラーに・・・・
0087デフォルトの名無しさんNGNG
>>84
staticな記憶域に確保されるので、プログラム終了までちゃんとある。
ただし、同じ文字列が出てきたら、アドレスも重なってる可能性はある。

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

a[0]はひょっとしたらa[1]+3と同じアドレスを指しているかも知れない。
0088デフォルトの名無しさんNGNG
>>86
argc > 2
じゃねーの?
0089デフォルトの名無しさんNGNG
>>88
同意。
0090デフォルトの名無しさんNGNG
>>86
おい。例えば argc == 2 のとき、argv[0]とargv[1]と
いう2つの要素だけに文字列の先頭番地が入ってるんだぞ。

argv[2]に入っているのはnull pointerだ。
009171NGNG
>>88
手元のテキストじゃ、a.out も含めた引数の数が argc て書いてあるから、それでいいと思います
argv[2]
 ↓
argv[1]
でした。あれー、テキストの見間違いですた。(´・ω・`)???
おさがわせしました
009271NGNG
>>90
おっしゃる通りです。
0093デフォルトの名無しさんNGNG
argcが0とかマイナスになる事ってあるんですか?
009484NGNG
>>85
そうなんですか?
なんか、色々な本でこの表現を見るので、普通に使ってるものとばかり思ってました。

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

ありがとうございました。
0095デフォルトの名無しさんNGNG
>>93
ない。
009695NGNG
と思ったが、argc=0とかargc=-3とかやればなるな。
0097デフォルトの名無しさんNGNG
なんでmainの引数は必ずint argcとchar *argv[]を使うんですか?
argcとargvの名前に意味があるんですか?関数名?
0098デフォルトの名無しさんNGNG
>>97
慣例。カウンター用の変数にiを使うのと同じ。
別に型さえ合っていればなんでもよい。
0099デフォルトの名無しさんNGNG
コマンドラインの引数の数が、argcに
argc[0], argc[1] ・・・には各引数へのポインタが渡されるように
作られているのでショーがないのですよ。
>>97
0100デフォルトの名無しさんNGNG
>>99
勘違い野郎ハケーン
質問をよく読め。
0101デフォルトの名無しさんNGNG
printf("\%");
じゃ、%が表示されませんが、エスケープしてもだめなんですか?
0102デフォルトの名無しさんNGNG
>>101
%%
0103デフォルトの名無しさんNGNG
>>102
サンクスコ

" は、 \" なのになんで%は・・・・
010497NGNG
>>98 >>99
丁寧にありがとうございました。
0105デフォルトの名無しさんNGNG
>>103
%がprintfのエスケープ文字だから。
\はCのエスケープ文字。
0106デフォルトの名無しさんNGNG
>>103
\"にはCの仕様。
%%は関数の仕様。

printfは文字列中に%が見つかったら置き換えようとする。で、次の文字が%だったら%を出力する。
ただそれだけ。
0107デフォルトの名無しさんNGNG
>>105-106
微妙なところですね。
こういうのがどうもはっきりしなくて困りますね。
統一も出来ないし・・・・
解説ありがとうございます
0108デフォルトの名無しさんNGNG
>>107
統一しているけど・・・・
第一printfはCの機能じゃないし。
0109デフォルトの名無しさんNGNG
>>107
何が微妙なのかサパーリ分からん
0110デフォルトの名無しさんNGNG
>>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'へのポインタ
を入れるのが(処理系としては)正しいそうだ。
011197NGNG
さらに聞きたいんですが、コマンドライン引数は3つとか4つあってもいいんですか?
平気な場合どんな風になるのでしょう?
0112デフォルトの名無しさんNGNG
>>110
まぁた古いCですな。w
最近のgccでエラーになったよ。
0113デフォルトの名無しさんNGNG
>>111
command first second third......
0114デフォルトの名無しさんNGNG
>>107
念のために言っとくが、
"abc\"def"
という文字列定数の長さは7だぞ、8じゃなくて。
プログラムでアクセスしても\はどこにも出てこない。

"abc%%def"は(もちろん)長さ8の文字列定数だ。
0115デフォルトの名無しさんNGNG
>>111
そのためのポインタの配列です。そのためのargcです。
0116デフォルトの名無しさんNGNG
>>111
整数 argc は,main に渡される実行形式ファイル名を含めたコマンドライン引数の数
argv は,文字列へのポインタの配列(char* [])
- argv[0] は実行するプログラムの完全なパス名
- argv[1] は,プログラム名の後の OS コマンドライン上に入力される最初の文字列を指す
- argv[2] は,プログラム名の後に入力される 2 番目の文字列を指す
- argv[argc -1] は,main に渡された最後の引数を指す
0117110NGNG
>>112
スマソ書き間違えた。
int main(argv, argc)
int argv;
char *argc[];
{
argcとargvの使い方が普通と逆なのよ。
えらく混乱しますた。
0118デフォルトの名無しさんNGNG
>>117
これは痛いな・・・。
011997NGNG
97です。すいません、書き間違えました。
たとえば、
int main(int a,int b,char *c[])
なんてあったりすることもあるんですか?
ある場合、どんな機能があるんでしょうか?
0120デフォルトの名無しさんNGNG
>>119
ない。
二番目の引数はchar *[]でなければならない。
三番目はいくつかのコンパイラでは環境変数のリストのポインタ配列だったりする。
0121デフォルトの名無しさんNGNG
>>119
ナシです。

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

処理系によっては他の形も使えるけど、>>119みたいなのはないと思う。
良くあるのは、
int main(int argc, char *argv[], char *envp[])
で、envpは環境変数へのポインタ配列。
0122デフォルトの名無しさんNGNG
int main(int argc)
あまり意味はありませんが、これも環境依存ですか?
0123デフォルトの名無しさんNGNG
>>122
つぅかそれ大丈夫?スタックとか。
0124デフォルトの名無しさんNGNG
>>122
動くこともあるだろうが保証はない。警告を出すコンパイラも多いと思う。
0125デフォルトの名無しさんNGNG
実際に使うことはないから大丈夫だろうけどね。
コマンドライン引数の数だけ得たい時なんかないだろうし。
012697NGNG
みなさん、ありがとうございました。
よくわかりました。
0127デフォルトの名無しさんNGNG
さげ
0128デフォルトの名無しさんNGNG
>> 124
規格外れなので、これで重力崩壊が起こっても構わないことには
は禿同。でも、>>122 の気持もわからんでもない。例えば、引数
が 0 個のときだけ正しく動作するプログラム作りたいときね。

ああ、エラーメッッセージを書くときなどに
if (argc!=0) fprintf(stderr, "usage: %s\", argv[0]);
とできないので、ダメか。規格外れだしね。
0129デフォルトの名無しさんNGNG
int i; char j;
scanf("%d",&i);
scanf("%c",&j);

printf("%d%c",i,j);
こういう文をしたとき、i には数字が入力できるけど、c には改行文字が入ってしまって
c には入力すら出来ないんですけど、対処法はありませんか?
0130129NGNG
scanf("%d%c",&i,&j);
とすれば問題ないけど、この2つのscanf文の間に
いくつかの処理がありので、そうは出来ないんです。
0131デフォルトの名無しさんNGNG
>>129

int i, j;
char *p;

fgets(buf, sizeof(buf), stdin);
i = strtol(buf, &p, 10);
j = *p;
0132デフォルトの名無しさんNGNG
俺もうやだよこんなの(涙
0133デフォルトの名無しさんNGNG
あ、そうじゃなくて2回入力待ちになって欲しいのかな?

fgets(buf, sizeof buf, stdin);
i = strtol(buf, NULL, 10);
j = getchar();
0134デフォルトの名無しさんNGNG
>>132
いったい何がどうした?
0135129NGNG
>>133
それです。ありがとうございました。
0136132NGNG
鬱病で死んじゃうよ〜・゚・(ノД`)・゚・ふえーん
元気がでないぽ・・・
0137デフォルトの名無しさんNGNG
スレ違いぽ
0138デフォルトの名無しさんNGNG
イ�`
0139デフォルトの名無しさんNGNG
>>132
仲間がいつぱい!
http://life.2ch.net/utu/
0140デフォルトの名無しさんNGNG
>>139
ほんとありがと
もうね・・・アフォかとヴァカかと
0141デフォルトの名無しさんNGNG
それとコンパイルと実行って違う意味ですか?
0142デフォルトの名無しさんNGNG
それとってどれと?
0143デフォルトの名無しさんNGNG
>>141
コンパイルを実行するんだよ。
0144仕様書無しさんNGNG
Solarisを作るプログラマになりたいんですが
どうすればいいでしょうか?
0145デフォルトの名無しさんNGNG
>>144
UNIX板に逝けゴルァ!
Sun Microsystemsに入社。
0146デフォルトの名無しさんNGNG
cl Solaris.c
0147デフォルトの名無しさんNGNG
>>146
ccにしろ。
0148デフォルトの名無しさんNGNG
>101
%%
0149デフォルトの名無しさんNGNG
>>148
>>102
0150デフォルトの名無しさんNGNG
プログラムを書くときメモ帳で書いているんですけど
もっと見やすいのってありますか?
0151デフォルトの名無しさんNGNG
VS.NET
0152仕様書無しさんNGNG
emacs
0153デフォルトの名無しさんNGNG
VC++のって行番号出ないようなきがするんだけど設定すれば出るの?
0154デフォルトの名無しさんNGNG
>>153
#line で探す
0155デフォルトの名無しさんNGNG
うはは、そりゃわかりやすい方法だな(藁
0156デフォルトの名無しさんNGNG
>>153
んなもんすべての行に出てる必要ない。
カーソル位置の行番号は出てるし。
0157デフォルトの名無しさんNGNG
>>156
目が覚めた
0158デフォルトの名無しさんNGNG
>>150
MS-DOSのedit
0159デフォルトの名無しさんNGNG
>>152
こういうこと言う奴必ずいるよな。
というわけでviを薦める。
0160デフォルトの名無しさんNGNG
>>159
モジラが重いので却下
0161デフォルトの名無しさんNGNG
>>150
コンパイルは難しいかもしれんが、フォトショ
0162デフォルトの名無しさんNGNG
#include <stdio.h>
int main();
int main()
{
int c;
while((c=getchar()) !='.'){
printf("%c",c);
}
return (0);
}

かなりの初心者です。
はじめにcは整数型と宣言してるのに
なぜwhile文ではchar型で表示してるんですか?
型というものがわからなくなってきた。。。
0163デフォルトの名無しさんNGNG
>>162
char,intともに整数型だから互換性がある。
intで受けるのはgetcharがEOFも返すから。
0164デフォルトの名無しさんNGNG
>>163
初心者のおいらにはついていけないことが書いてある。。。
おいらの勉強している本には
intは整数型、charは文字型って書いてあるよ?
charは整数型なの?

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

これはさっぱりわからない。。。
0165デフォルトの名無しさんNGNG
>>164
整数型
0166デフォルトの名無しさんNGNG
>>165
charは整数型って大抵のほんに書いてある??
「C言語プログラミングレッスン入門偏」(結城浩)って本にはかいてないよ。

「C言語プログラミングレッスン入門偏」(結城浩)この本いい本ですか?
0167デフォルトの名無しさんNGNG
>>164
charは1バイトの整数型。

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

char型がコンパイラによっては符号なしだから(処理系依存)、負の数のEOFを受けるとまずい。
というわけでint型で受ける。
0168デフォルトの名無しさんNGNG
>>164

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

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

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

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

あぁ、負の数がどうとかじゃなくてそういう理由か。
0170デフォルトの名無しさんNGNG
>>167
恥かしい質問ですけどintは何バイトの整数型なんですか?
0171デフォルトの名無しさんNGNG
>>170
それは処理系(とりあえずコンパイラだと考えてよい)によって違う。
必ずcharよりも大きくなければならない(といっても1バイトのcharよりも小さいなんてことはないけどね)。
0172171NGNG
例えば、私の環境だと、

int・・・4バイト
short int・・・2バイト
long int・・・4バイト
0173デフォルトの名無しさんNGNG
sizeof(int)バイトの整数型
0174デフォルトの名無しさんNGNG
>>173
ワラタ
0175デフォルトの名無しさんNGNG
>>170
規格では決まってない。
char <= short <= int <= long
という関係が言えるだけ。
現実はコンパイラごとに好きなように定義されていて、下手するとコンパイラオプションによっても
変わるコンパイラもある。
マニュアル嫁。
0176171NGNG
s/charよりも大きくなけれ/char以上で/
0177デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void);
int main(void)
{
char x,y;
x=-10;
y=1;
printf("%d",x+y);
return (0);
}
これコンパイルして実行できました。
不思議だ。。。
0178デフォルトの名無しさんNGNG
>>177
不思議じゃない。
どう表示されるかはコンパイラ次第だけど。
0179デフォルトの名無しさんNGNG
177はcharが数字だとわかってない厨房
0180デフォルトの名無しさんNGNG
でも
#include <stdio.h>
int main(void);
int main(void)
{
char x,y;
x=-256;
y=1;
printf("%d",x+y);
return (0);
}
だと実行結果は1でした。
0181デフォルトの名無しさんNGNG
>>179
そうだと本人も言っているだろ。
ところで、数字って(プ
0182デフォルトの名無しさんNGNG
>>180
1byte==8bitと仮定して・・・・
charに-256は入らないよ。溢れた分は切り捨てられるはず。
0183デフォルトの名無しさんNGNG
>>182
8bitなら
128から-128までしか値を持たないってことですか?
0184デフォルトの名無しさんNGNG
>>183
127〜-128(2の補数の場合)か-127(1の補数の場合)
0185184NGNG
符号ありの場合ね。
0186デフォルトの名無しさんNGNG
>181
なんだこのやろう。このボケが。なにが プ だ。てめーは俺より上にいるつもりか。へっだせーやつだ。
0187デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void);
int main(void)
{
char x;
x='5';
printf("%d",x);
return (0);
}
だったら53っていう整数が帰ってきた。
char型は整数型で整数は整数のまま扱い文字列は整数に変換して扱うってこと?
表示する場合%dと整数で表示することもできるし%cと文字として表示することもできる
んですよね?
0188デフォルトの名無しさんNGNG
>>184
あー、補数って習ったけど忘れた。。。復習しとこう。
0189デフォルトの名無しさんNGNG
>>187
5という文字のコードが53だったというだけ。
0190189NGNG
>>187
int x;
x=53;
printf("%c",x);

とやってみな。多分5と表示されると思うから。
0191デフォルトの名無しさんNGNG
>>186
ごめん。俺が悪かった。>>181の発言は撤回する。
0192デフォルトの名無しさんNGNG
>>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ってことですね。
文字コード票みたいなのってあるの?
0193デフォルトの名無しさんNGNG
>>192
それを自分でつくってみよう。
と言いたいところだけど、表示できない文字もあるから・・・・

ASCIIならhttp://www.e-words.ne.jp/page.asp?p=r-ascii
0194デフォルトの名無しさんNGNG
>>193
サンクス!
EOFはのってないね。
-128?とにかく負の数なんですね。
0195デフォルトの名無しさんNGNG
>>194
stdio.hの中をみるか、printf("%d\n",EOF);で表示してみる。
0196デフォルトの名無しさんNGNG
>>194
\x1aじゃなかった?
0197デフォルトの名無しさんNGNG
>>195
-1でした。
0198デフォルトの名無しさんNGNG
今日はどうも有難うございました。
charとintの関係がわかりました。
0199デフォルトの名無しさんNGNG
>>194-197
微妙なすれ(×スレ)違いにワラタ
0200デフォルトの名無しさんNGNG
関数で 使うスタックの 大きさを 簡易 的に 見る ため の
いいGNU ツールが あったら 教え や が れ。
0201デフォルトの名無しさんNGNG
c++の事で悪いけど、++スレなかったんで教えて。
シフトって++だとなくなったの?
0202デフォルトの名無しさんNGNG
おまえの目は節穴か
0203デフォルトの名無しさんNGNG
>>201
http://pc.2ch.net/test/read.cgi/tech/1021787032/l50

シフト演算子のことなら、削るわけないだろ
0204デフォルトの名無しさんNGNG
リンカスクリプトの書き方を判りやすく解説したページはどこにあるんですか?
0205デフォルトの名無しさんNGNG
>>203
多分

cout << "hello" << endl;

見て愕然となったと思われ。
違う演算子採用しろよと言いたい。
0206デフォルトの名無しさんNGNG
僕は、17歳高校2年生。
3ヶ月前まではこんなことを言って皆さんをハァハァさせてしまいました。
http://pc.2ch.net/test/read.cgi/tech/1014370940/
だけど、それから優しいお兄さんたちにいろいろと教えてもらいながら、
勉強することで、C言語を大体マスターすることができました。

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

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

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





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

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

これで"abc"と入力したらcには"a"が入ってるからずっとaが表示される
と考えてしまったのですが、違いますよね。どこが違うのでしょう。
0208デフォルトの名無しさんNGNG
>>207
実行してみたらわかるやん。
0209デフォルトの名無しさんNGNG
>>207
"a" ではなく 'a' ね。Cではこの違いは大きい。

で、getchar()は一回呼ぶごとに次の文字を取り出すよ。
whileの条件部は毎回実行される。
0210デフォルトの名無しさんNGNG
>"abc"って入力されたらx=getchar()のxには"a"が入りますよね。
'a'って入力された時点getcharは'a'を返しておしまい。
0211デフォルトの名無しさんNGNG
2chをQ&A代わりに使うなよ・・・
0212デフォルトの名無しさんNGNG
""は文字列で''は文字でしたね。

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

初めて知りました。

c=getchar()
で'abc'
って入れたら'a'をかえして
もう一回
c=getchar()
とかくと
'b'を返すんですね。
0213デフォルトの名無しさんNGNG
c=getchar()
で'a'と入れたら'a'をかえして
もう一回
c=getchar()
と書いて
'b'と入れたら'b'を返すんですよ。
0214デフォルトの名無しさんNGNG
だからgetchar()は1文字書かれた時点でそれを返して終わりなんだと。
分からんのかね。
0215デフォルトの名無しさんNGNG
>>212
> 初めて知りました。

嘘つくな。
んじゃなきゃwhileは全て0回実行か無限ループか?
0216デフォルトの名無しさんNGNG
>>213

c=getchar()
で'ab'と入れたら'a'をかえすんですよね?
0217デフォルトの名無しさんNGNG
>>216
そうです。
0218デフォルトの名無しさんNGNG
>>216
'ab' ではなく "ab" ね。Cではこの違いは大きい。
0219デフォルトの名無しさんNGNG
whileの意味さえ分かってないみたいだから、
while使わないでgetchar何回並べて呼んで試してみろよ。
0220デフォルトの名無しさんNGNG
int c;
while((c=getchar()) !='.'){
printf("%c",c);
}
で'abc'って入力する時
キーボードでaを叩いた瞬間には'a'は表示されませんけど
表示しようとしてるんですか?うーん、説明がへんか。。。
0221デフォルトの名無しさんNGNG
バッファリングされているからです。
0222デフォルトの名無しさんNGNG
>>215
>getchar()は一回呼ぶごとに次の文字を取り出すよ。
を初めて知ったってことです。。。
0223デフォルトの名無しさんNGNG
そりゃ毎回同じ文字返したら役に立たんでしょ・・・
0224デフォルトの名無しさんNGNG
っていうか、こういう明らかに入門書も読んでない
レベルの質問にまじめに答えないで欲しい。
0225デフォルトの名無しさんNGNG
>>224
円形脱毛同意
0226デフォルトの名無しさんNGNG
確かに。
0227デフォルトの名無しさんNGNG
「C言語プログラミングレッスン入門偏」(結城浩)
って本を読んでるんですけど
getchar()は1文字を標準入力をから得るとしか書かれてないんですが。
この本は説明不足ですか?
0228デフォルトの名無しさんNGNG
「C言語プログラミングレッスン入門偏」(結城浩)
って本を読んでるんですけど
getchar()は1文字を標準入力から得るとしか書かれてないんですが。
この本は説明不足ですか?

の間違い。

0229デフォルトの名無しさんNGNG
>>228の脳が不足してます。
0230デフォルトの名無しさんNGNG
Q&Aはどこで聞いた方がいいですか?
2ちゃんで聞かずにどこかの掲示板で聞いた方が良い?
0231デフォルトの名無しさんNGNG
MSDNLから抜粋>
ファイルの現在位置から 1 文字読み出し、関連するファイル ポインタが定義されている場合は次の文字を指すためにポインタを増やします。

これくらい書いてなきゃ説明不足
0232デフォルトの名無しさんNGNG
>>229
その文章で

getchar()は一回呼ぶごとに次の文字を取り出すことを
読み取れますか?
0233デフォルトの名無しさんNGNG
>>232
分かんなかったらgoogleで調べることくらいしない時点で応用力0です。
0234デフォルトの名無しさんNGNG
>>231
それはgetcharの説明か?
0235デフォルトの名無しさんNGNG
>>228
その本を捨てましょう
説明不足かどうかはともかく、読んでも理解できてないってことはあなたにはあってないってことでしょ
あなたにあった、理解できる本を探しましょう
0236デフォルトの名無しさんNGNG
>>233
分かりました。2ちゃんでひとに聞く前に自分で調べる癖をつけるようにします。
それでも分からなかったらここに機器にきてもいいでしょうか?
0237デフォルトの名無しさんNGNG
>>234
getcharだよ
といってもgetcと共有なので、ああいう書き方になってるもよう
0238デフォルトの名無しさんNGNG
>>235さんは
getchar()は1文字を標準入力から得るという説明を読んで
getchar()は一回呼ぶごとに次の文字を取り出すことを
読み取れますか?

0239デフォルトの名無しさんNGNG
>>238
scanfやgetsをやってれば読み取れる
でも予備知識無しにその1文だけをぱっと見せられたら読み取れないだろうね
(普通はサンプルを見て理解できるもんだと思うけど)
だからそんな糞本捨てちゃえ、と
0240デフォルトの名無しさんNGNG
質問なんですが、任意の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板は初めてなもので。
よろしくおねがいします。
0241デフォルトの名無しさんNGNG
宿題?
0242デフォルトの名無しさんNGNG
getsは標準入力から文字列を取得する関数と書いてありました。
これも説明間違ってます?
0243デフォルトの名無しさんNGNG
> while(wrk<m){
> while(wrk>=m){

1回も実行されない
0244243NGNG
というのは俺の勘違い
0245デフォルトの名無しさんNGNG
テスト
0246デフォルトの名無しさんNGNG
>>242
なぜ検索しない?
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/getchar.3.html
0247デフォルトの名無しさんNGNG
>>242
getsは複数回実行したら同じ文字列を返しますか?
printfは複数回実行したら前に出力した場所を上書きしますか?
その流れでgetcを理解する人間ならその本でもいいでしょう
理解しない人間は別の、もっと正確に解説した本を読みましょう
0248デフォルトの名無しさんNGNG
>>242
漏れも捨てていいと思う、その本
0249名無しさんNGNG
C言語ってマスターするのに最低どれくらいかかりますか?
0250デフォルトの名無しさんNGNG
>>249
果て無き道のり、とかっこつけてみる
0251デフォルトの名無しさんNGNG
>>242
本当にそれしか書いてないの?
その本の他の部分でサンプル付きとかで
もっと詳しく解説されてたりするんじゃ?
0252デフォルトの名無しさんNGNG
>>251
はい。
お勧めの本はありますか?
0253デフォルトの名無しさんNGNG
間違ってもK&Rは薦めるなよ
0254デフォルトの名無しさんNGNG
>>252
むしろその方が信じられんが
0255デフォルトの名無しさんNGNG
>>252
これ
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/vclang/vclanghm.htm
0256デフォルトの名無しさんNGNG
そろそろ講義のため落ち。
ありがとうございました。
0257デフォルトの名無しさんNGNG
マルチバイトの文字列の長さを取得するにはどのルーチンを使えば
良いのでしょうか?
たくさんあってどれ使えばいいか分からないのです...。
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>*/
0258デフォルトの名無しさんNGNG
MSDNに全部説明が書いてある
0259デフォルトの名無しさんNGNG
全てのファイルに Makefile を依存させたいんですけど
簡潔に書くにはどう記述すればよいでしょうか?
0260デフォルトの名無しさんNGNG
>>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

とか。
0261デフォルトの名無しさんNGNG
>260
1.と2.は依存逆じゃない?
0262ともNGNG
#pragma interrupt( hoge )
void hoge( void ){}

これがコンパイルすると
hoge.c:2: syntax error before `void'
というエラーになってしまいます。何故でしょうか・・・
0263デフォルトの名無しさんNGNG
#include<tchar.h>
としても
_strspnp()が定義されてない言われる...。なぜなんだ...。
0264デフォルトの名無しさんNGNG
>>263
tchar.h覗いてみ。
0265デフォルトの名無しさんNGNG
ところでお前らお勧めのC本ってなによ?
0266263NGNG
>>264
_strspnpの定義はありましたが使えない理由は分かりませんでした。
strspnを代用することにします。
ありがとう。
0267デフォルトの名無しさんNGNG
BorlandC++のコンパイラをダウンロードしようとしたんですけど
ファイルが壊れててインストールできないみたいです。
こんなの初めてです。どうすればいいのやら。
0268デフォルトの名無しさんNGNG
もっかいダウソする。
0269デフォルトの名無しさんNGNG
>>267
結構スレ違い。
0270デフォルトの名無しさんNGNG
だなだな
0271デフォルトの名無しさんNGNG
壊れてないファイルを拾え
0272デフォルトの名無しさんNGNG
>>265
K&R
0273デフォルトの名無しさんNGNG
char 型の文字列を LPCSTR 型に入れるときはそのまま突っ込むことができないようなのですが、
どうすればいいのでしょうか。
0274デフォルトの名無しさんNGNG
#define LPCSTR const char *
なのでそれに合うようにする。
0275デフォルトの名無しさんNGNG
274
typedefと思われ
0276デフォルトの名無しさんNGNG
\                  ブロロロロ        ./
  .\       __ _______         ./
    \    /  | :|  佐川急便 |        ./
     .\   |^~~~|-|======| =33   ./
ウーー    \  ̄◎ ̄◎ ̄ ̄ ̄◎ ̄       /            プゥーン
         \                  /
   ヾ  〃   \               /      __
   __,__     .\      ∧∧∧∧∧/     __|  |_( ̄ ̄)
 _|    |_     .\   <        >    |ウンコ:(ニニニニ)ニ =33333
 |━警視庁━| =3   \ <     働 >     ̄◎ ̄◎ ̄
  ̄◎ ̄◎ ̄         <  矛   く  >
――――――――――――< .感  車 >――――――――――――
                  < .!!!!  の >    _凸_
                  <.         >  _|    |_
       ブーーーーン     /∨∨∨∨∨\  |  タクシー   | =3
                 ./          \  ̄◎ ̄◎ ̄
__ 二 _ −      /ワッショイワッショイワッショイ \      ヴィーーン
|□ |_%%_= 二    /                \
|      _| =3 -  /    ヽoノ  ヽoノ ヽoノ    \       O
 ̄◎ ̄◎,, 三  ̄― ./   _  /   /    /      \    ヽ‖/
             /   /_| ノ)  ノ)   ノ)       \   く く
            ./   |祭~| ̄ ̄ ̄ ̄ ̄ ̄| =3      \
            /     ̄◎ ̄ ̄ ̄ ̄◎ ̄           \



0277デフォルトの名無しさんNGNG
>>268
4回中4回ファイルが壊れていましたが。
0278ともNGNG
initializer element is not constant
って、何のエラーですか?
0279デフォルトの名無しさんNGNG
>>278
文の通りです
0280デフォルトの名無しさんNGNG
初期化 要素 は イヤン 定数
0281デフォルトの名無しさんNGNG
>>280
ちょっとの茶目っ気で台無しだw
0282デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/tech/1022045622/900
0283デフォルトの名無しさんNGNG
fopenとopenの違いがよく分かりません。
fopenはバッファリングされるそうですが、
先頭の1行だけ読みたい時や最後の128バイトだけ読みたい時などは、
openを使った方がいいと言う事でしょうか?
どういう時にopen,どういう時にfopenを使うと良いのか(速くなるのか等)教えて下さい。
0284デフォルトの名無しさんNGNG
すいません、age忘れました。
0285デフォルトの名無しさんNGNG
質問なのですが、関数プロトタイプを宣言してmain関数から書くやり方と
その他の関数から書いて最後にmain関数を書くパターンと、どちらがよい
(好かれる)書き方なのでしょうか?
それと、main関数のプロトタイプを書いている本を見たのですが、それって
何か意味はあるのでしょうか?
0286デフォルトの名無しさんNGNG
fopen の方が移植性が高いです。
open の方がファイルに対して出来る操作が豊富です。
それほど大量のファイルアクセスをしないなら、多少の速度差など考えなくて宜しい。
0287デフォルトの名無しさんNGNG
>>285
趣味の問題です。どちらが良くてどちらが悪いとかいうものではない気が。
自分が直感的に良さげに思える方を選べば良いです。
mainのプロトタイプは、mainを再帰呼び出ししたい時に役に立つかも知れません。
0288デフォルトの名無しさんNGNG
>main関数のプロトタイプを書いている本を見たのですが

その本はもう2度とみなくてよし
0289ともNGNG
struct hoge *c;
c->a と (*c).a は同じですよね?
0290デフォルトの名無しさんNGNG
同じ結果を期待できるが、同じバイナリがはかれる保証はない
0291デフォルトの名無しさんNGNG
おなじ
0292285NGNG
>>288
でもその本って評判よかった気がしました・・・

そういえば、何でみなさんはK&Rを薦めないんですか?
何の本がいいんですかね?
0293デフォルトの名無しさんNGNG
C言語しかできない奴が活躍するスレはここですか?

質問者の皆さん、C++スレには
このスレより数十倍Cに詳しい人がいますよ。
0294デフォルトの名無しさんNGNG
>>292
お前の目は節穴なのですか?
>>265>,>272
0295デフォルトの名無しさんNGNG
自分はC++スレにも居ますが、Cスレにも来ます。何か?ていうかそういう人は多いんじゃないの?
0296デフォルトの名無しさんNGNG
>>293
C++スレでCの質問するとスレ違いと言われて終わってしまう罠。
0297デフォルトの名無しさんNGNG
>>293
ここはバカCジジイの溜まり場だからすぐ叩かれるぞ
0298デフォルトの名無しさんNGNG
漏れもSTLスレメインだけどC++とかCスレには来るよ。
0299デフォルトの名無しさんNGNG
良い言語だと思うけどね、シンプルで強力。
0300デフォルトの名無しさんNGNG
漏れはC++しか使わないけどCスレにも来るぞ
っていうか、C初心者をこれ以上C++スレに誘導しないでくれ
今以上の惨状が期待できてしまう
0301ともNGNG
淫乱アセンブラでレジスタの中身を変数に取り出したいのですが
どうすればいいですか?
サンプルがあれば教えてください。
とりあえずCPUは問いません。
0302デフォルトの名無しさんNGNG
>>300
お前も初心者だろでかい口叩くな
0303デフォルトの名無しさんNGNG
>>302
PC初心者
http://pc.2ch.net/pcqa/

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

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

 ま、スイッチも最適化しか指定しない程度の私ですけどね。
0306ともNGNG
>304
それでは CPUはH8/300Hで、コンパイラはgccで お願いします・・・

最終的にCCRレジスタを変数に取り出したいと思ってます。
0307デフォルトの名無しさんNGNG
>>306
これを参考にどうぞ http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Extended%20Asm
0308デフォルトの名無しさんNGNG
ちょっと聞きたいのですが

列の文字型配列変数stとtsを作り、stの逆の文字列をtsに入力する
プログラムを作れってのはどうやればいいんですか?
0309デフォルトの名無しさんNGNG
>>308
文字列Aを後ろから順に見ていって文字列Bにどんどん入れていく。
0310デフォルトの名無しさんNGNG
>308
文字列stの後ろから前の方向に一文字ずつ取り出して
文字列tsの前から後ろの方向に一文字ずつ書き込めばOK
逆でもいいです
0311308 NGNG
明日レポート提出しないといけないのですが・・・。

main()
{
char st[30],ts[30];
int x,y;
からわかりません・・・。
0312デフォルトの名無しさんNGNG
strrev
0313デフォルトの名無しさんNGNG
>>312
こら。
0314デフォルトの名無しさんNGNG
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;
}
0315デフォルトの名無しさんNGNG
>strcpy("abcdefghijklmnopqrstuvwxyz", st);
逆だろ逆。
strcpy(st, "abcdefghijklmnopqrstuvwxyz");
0316308NGNG
>>314

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

0317デフォルトの名無しさんNGNG
>>316

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

/*
  scanfは危険だから止めて下さい。
 バッファオーバーランが起こる可能性があります。
*/
0318デフォルトの名無しさんNGNG
漢字コードが何なのかは知らないがとりあえず2バイト文字の判定からだな。
そのままひっくり返しても文字化けするだけだから。
0319308NGNG
ポケコンなんですよ
0320デフォルトの名無しさんNGNG
>>318
jstrrev
wcsrev
mbsrev
0321デフォルトの名無しさんNGNG
>>319
SHARPポケコンPC-G850なら俺に聞け!
http://pc.2ch.net/test/read.cgi/tech/1021219939/
0322C言語(選択必修)落ちこぼれNGNG
どなたか助けて下さい!!!!
明日提出しなくてはいけない課題が全然分かりません!!
問題は

「プログラムを簡単にするため
グー、チョキ、パーを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("勝ち、あいこ");」
などと書かれてますが全くと言っていいくらい分かりません!
どなたか助けると思って心優しい方、
何書けばいいのか教えて下さい。宜しくお願いします。
0323デフォルトの名無しさんNGNG
いわゆるEUCとかJISとか..
localeの話しからはじめないとまずいだろ。
>>318
0324デフォルトの名無しさんNGNG
ポ、ポケコン・・・・(゚Д゚)ポカーン
0325デフォルトの名無しさんNGNG
>相手に見られないように1か2か3のどれかを入力することにします。

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

0327C言語(選択必修)落ちこぼれNGNG
ひええええ!!
本当にどなたかお願いします!!!!!(><)
0328C言語(選択必修)落ちこぼれ落ちこぼれNGNG
助けて下さい!!
0329デフォルトの名無しさんNGNG
system(MS_DOS?"cls":"clear");
を使えば大丈夫だ!
0330デフォルトの名無しさんNGNG
>相手に見られないように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;
 }
}
0331デフォルトの名無しさんNGNG
>>328
よかったな。完璧だ。
0332デフォルトの名無しさんNGNG
>>330はrand→rand()な。
0333C言語(選択必修)落ちこぼれ落ちこぼれNGNG
>330さん
本当にどうもありがとうございました!!!!!!
明日早く学校行ってやってみます!!
本当にどうもありがとうございました!!!!!
0334C言語(選択必修)落ちこぼれNGNG
また後で来るかもしれませんが
その時もよろしくお願いさせて下さいまし。。。
0335デフォルトの名無しさんNGNG
/* >>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;
}
0336デフォルトの名無しさんNGNG
>>335はウイルスだから>>330使った方がいいぞ。
0337 NGNG
>>330は鬼
>>333は白痴
0338デフォルトの名無しさんNGNG
まあ独学で分からん奴は授業聞けという事ですな。
0339デフォルトの名無しさんNGNG
ですな。
0340デフォルトの名無しさんNGNG
漏れが講師だったら330は無条件で優だな。
0341デフォルトの名無しさんNGNG
>>330を見てワラタ
0342デフォルトの名無しさんNGNG
>>330は真のプログラマ
0343デフォルトの名無しさんNGNG
330の発想はすごい
0344デフォルトの名無しさんNGNG
>>340-343 == >>330
0345デフォルトの名無しさんNGNG
ちょっと偏った質問なんですが、

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ではできない様です。
0346デフォルトの名無しさんNGNG
ウィジェットの設定をいじるのが手早いかも
0347デフォルトの名無しさんNGNG
jpeg画像をバイナリで表示させるプログラムを作りたいのですがどうすればいいですか?
0348デフォルトの名無しさんNGNG
>>347
まずはJPEGの仕様を勉強しよう。
0349デフォルトの名無しさんNGNG
単に16進数で表示したいのか?
0350デフォルトの名無しさんNGNG
いや、バイナリで表示というからには2進数だろ
0351デフォルトの名無しさんNGNG
もう手遅れかも知れないけど、これでどう?

#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;
}
0352デフォルトの名無しさんNGNG
>>351
a--, b--;
っていらなくない?
0353デフォルトの名無しさんNGNG
>>347
オープンなjpegライブラリ使ったら。
0354347NGNG
>>348
わかりました
>>349,350
16進数です。
>>353
すいません、それは何ですか?
0355デフォルトの名無しさんNGNG
C言語始めて1ヶ月の者です。
この問題が分かりません。

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

答えを教えて下さい。
おながいします。
0356デフォルトの名無しさんNGNG
1ヵ月も勉強してその程度も解らないなら才能無いからヤメロ
0357デフォルトの名無しさんNGNG
>>356
あなたも分からないんじゃないんですか?
偉そうな口叩く前に答えを書いて証明してみせて下さい。
0358デフォルトの名無しさんNGNG
>>355
void fsum(float a, float b){printf("%f\n",a+b)}
0359デフォルトの名無しさんNGNG
> おながいします。

宿題まるなげするやつに限って、2ちゃん言葉とか当て字を使うんだよな。
これが人様にお願いする態度かよ。
ただでさえ宿題丸投げは印象わるいのに、こんなやつは絶対教えない。
0360デフォルトの名無しさんNGNG
>>358
神!!!!!!
0361デフォルトの名無しさんNGNG
でも、void fsumってのが意味不明です
誰かおせーて下さい
0362356NGNG
>>357
ハァ?
0363デフォルトの名無しさんNGNG
>>358
;がない
0364デフォルトの名無しさんNGNG
> 誰かおせーて下さい
いやだ。 お前にうっかり教えると永遠に質問されそう。

0365デフォルトの名無しさんNGNG
拡張子.cのファイルはどのアプリケーションで開けばいいのん
0366デフォルトの名無しさんNGNG
>>364
C言語のげの字も知らないくせにこのスレに来ないで下さい
0367デフォルトの名無しさんNGNG
#iNCLUDE<STdio.H>
void main(){
float a,b;
scanf("%f",&a);
scanf("%f",&b);
printf("%f",a+b);

}
0368デフォルトの名無しさんNGNG
>>365
ワード。
0369voidの意味NGNG
>>366
> C言語のげの字も知らないくせにこのスレに来ないで下さい
ということにしたいんですね :)

0370デフォルトの名無しさんNGNG
>>368
おお!開けた
ありが�d
0371デフォルトの名無しさんNGNG
>>370
それか、htmlを使うと自分で色をつけられたり
して見た目綺麗なプログラムを書けるでしょう。
0372デフォルトの名無しさんNGNG
return0って入れても入れなくてもいいの?
0373デフォルトの名無しさんNGNG
voidで入れるヤツはアフォ
0374デフォルトの名無しさんNGNG
>>373
why?
0375デフォルトの名無しさんNGNG
#iNCLUDE<STdio.H>
int main(){
float a,b;
scanf("%f",&a);
scanf("%f",&b);
printf("%f",a+b);
return0:
}
0376373NGNG
>>374
それが解らないなら1から勉強し直せ
0377デフォルトの名無しさんNGNG
int main()
この省略の仕方むかつく。
0378デフォルトの名無しさんNGNG
int main()
()にはvoidって入れても入れなくてもいいの?
俺もうだめぽ
0379デフォルトの名無しさんNGNG
#iNCLUDE<STdio.H>
これは小文字じゃなきゃ駄目なんじゃないの?
C言語訳分からん
0380デフォルトの名無しさんNGNG
                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   もうだめぽ…
0381デフォルトの名無しさんNGNG
>>376
理由教えてください。
そのあとに1から出直せといって欲しいでs。
0382デフォルトの名無しさんNGNG
入れなくてもいいのはわかるが、「入れない方がいい」のかどうかは
いまいちわかってないな俺も。
積んだスタック無視するだけだからコンパイルは問題ないよな。問題はリンクか。
0383デフォルトの名無しさんNGNG
>>382
だったらいわないでください。
他スレで俺はSEのひとに「そんな考え方じゃSEに鳴らん方がいい」
っていわれてショックうけてるんですから。
0384デフォルトの名無しさんNGNG
( ´∀)・∀),,゚Д)http://diary.cgiboy.com/d01/tsugeikuhito/
0385デフォルトの名無しさんNGNG
アフォのために>>373を解説
mainの戻り値の型をvoidにしたのにreturn 0するやつはアフォ
0386デフォルトの名無しさんNGNG
>>383 
382と373は別人じゃないの
0387デフォルトの名無しさんNGNG
スレ違いですけど0で割ることななぜダメかってことを
マ板でだらだらとたくさん書き綴ったらこんなこといわれちゃいました。

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

ショックです。
0388デフォルトの名無しさんNGNG
>>385
参考書もそういう書き方してるんだが
間違いなん?
0389デフォルトの名無しさんNGNG
int main()なら関数は整数を返すからreturn 0;は必要。
void main()ならなにも返さないから不必要。
0390デフォルトの名無しさんNGNG
じゃあint main(void)は?
0391デフォルトの名無しさんNGNG
                 -― ̄ ̄ ` ―--  _         
            , ´  ......... . .   ,   ~  ̄" ー _
          _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、   
         , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ
      ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/
     と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く
    (´__  : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ
         ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: :●::::::::::::::::::::::: : : :_>
            ,_  \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´
          (__  ̄~" __ , --‐一~ ̄
   訳分からん…
0392デフォルトの名無しさんNGNG
>>390
>>389はおいらだがCを勉強してまだ1週間だからそのとこは知らん。。。
新しい関数作るときは
()のなかに局所変数を書くんだけどなぁ。。。
何も書かない場合はvoidと同じなんでしょうか。
0393373NGNG
教えないと解ってない事にされるのか、ココは・・・
voidは値を返さない型なんだから、voidでreturnするのはアフォって事。
っていうか、普通コンパイラに怒られないか?

ちなみに389の言ってる事も間違い。int mainなら-32768から32765までのどれかの
値を返さないといけない。
0394デフォルトの名無しさんNGNG
>>393
ん?だからint main()ならreturn1;とか
-32768から32765の整数を返せばいいってことでしょ?
0395デフォルトの名無しさんNGNG
>>393
intの範囲フルに使えるわけじゃないんだ、なんか勉強になった。
0396373NGNG
ああそうか、不必要って見えた、スマソ。
0397デフォルトの名無しさんNGNG
javaの簡単なじゃんけんのソース教えて。
0398デフォルトの名無しさんNGNG
>>393
教えないと分かってないことにされるスレではないです。
教えないと分かってないと思う人が稀に来るだけです。
0399デフォルトの名無しさんNGNG
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/l50
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/l50
0400デフォルトの名無しさんNGNG
教えないと煽る破廉恥な質問者が稀に来るだけです。
0401デフォルトの名無しさんNGNG
>>389であってるんですね?
すれ違いかも知れませんけど
みなさんよかったらCの学習歴と職業と年齢を教えてください。
0402357NGNG
呼んだ?
0403デフォルトの名無しさんNGNG
(・∀・)カエレ!!
0404デフォルトの名無しさんNGNG
>>402
数学関数しか呼び出してないよ。
0405デフォルトの名無しさんNGNG
>int mainなら-32768から32765までのどれかの
アフォは(略
0406デフォルトの名無しさんNGNG
32767
0407デフォルトの名無しさんNGNG
2^15ですね。
0408デフォルトの名無しさんNGNG
INT_MINからINT_MAXだろ
0409デフォルトの名無しさんNGNG
>>393
void型の関数でreturnするとコンパイラに怒られるのか・・・・
じゃあ、関数の途中で戻りたかったら関数の終わりまでgotoでジャンプしなければならないのか。
0410デフォルトの名無しさんNGNG
あげあしとるのはイクナイ
return xのことを言ってるのは明白
0411デフォルトの名無しさんNGNG
>>407-408
どっちが正しいのかはっきりしてくれ(´Д`;)
0412デフォルトの名無しさんNGNG
intで表現できる値ならなんでもいいんでない
0413デフォルトの名無しさんNGNG
そういえば、私は引数なしの関数はtype func(void)って書くけど、mainだけはint main()って書くな。
だからどうしたって?
0414デフォルトの名無しさんNGNG
>>411
limits.hをインクルードして>>408が正解
0415373NGNG
>>409
return 0の間違いね
0416デフォルトの名無しさんNGNG
>>413
main()のなかにvoid入れても入れなくてもいいんでしょうか?
0417デフォルトの名無しさんNGNG
INT_MAXが32767って16bit DOSなんかが現役な人ですか
0418デフォルトの名無しさんNGNG
>>417
LSI-C試食版です。
0419デフォルトの名無しさんNGNG
>>416
関数定義には必要ない。
プロトタイプ宣言には書かないと意味が違ってくるけど、mainを呼ぶ関数は普通書かないので関係無いな。
0420373NGNG
>>417
ああそうか、WinだとWORDで定義してたから忘れてた
0421デフォルトの名無しさんNGNG
>>419
> プロトタイプ宣言には書かないと意味が違ってくるけど、

そうなの?
0422デフォルトの名無しさんNGNG
>>419
さんくす。
0423421NGNG
>>419

int baka();とかいて、int baka(void);とするとコンパイラに怒られるとか?
0424423NGNG
じゃなくて、int baka(void){}とすると。
0425デフォルトの名無しさんNGNG
低レベルな議論だなぁおい(ワラ
0426デフォルトの名無しさんNGNG
間違うのが怖くてレスできない奴よりまし。ヘタレ
0427425NGNG
俺マイクロソフトで年収3億の凄腕プログラマーだけど何か?
0428デフォルトの名無しさんNGNG
ネタもつまらんし・・・
0429デフォルトの名無しさんNGNG
(゚д゚)
0430423NGNG
わかった。
type func();とすると、type (*funcp)(void);と宣言したポインタに代入できないんだ。
0431425NGNG
信じる信じないは個人の自由だしね
0432デフォルトの名無しさんNGNG
>>423
マジレスすると、ヘッダに
extern int baka();
と書いた場合、プロトタイプ宣言が引数を規定しないので
int baka(void) { return 0; }
という実装だろうと
呼ぶときに baka(5,"hoge");とか書いてもコンパイルされてしまう。

C++ではint baka(void)という意味に解釈されるけどね。
0433デフォルトの名無しさんNGNG
(゚д゚)
0434デフォルトの名無しさんNGNG
(゚д゚)
0435デフォルトの名無しさんNGNG
>>432
voidが無かった頃はどうだったの?
そもそもプロトタイプ宣言というものがなかったから問題なかった?
0436デフォルトの名無しさんNGNG
引数を指定しない -> voidとして見る。じゃなかったのか・・・・鬱だ死のう
0437デフォルトの名無しさんNGNG
>>435
正解
0438デフォルトの名無しさんNGNG
初期のプロトタイプ宣言は戻り型しか規定しなかったすな
0439デフォルトの名無しさんNGNG
このスレ伸びるのはやすぎ
追えん…
0440デフォルトの名無しさんNGNG
>>432
本当だ。コンパイルされるね。
きちんとvoidって書いているから知らなかった。
0441425NGNG
こんぱいるってなんれすか?
0442デフォルトの名無しさんNGNG
main() = main(...)
0443436NGNG
そうか。voidとしてみるのは関数の定義の引数リストのことか。
リストがないから自然にvoidになっているというだけで。
0444425NGNG
プログラギンムなんて超簡単    
0445デフォルトの名無しさんNGNG
昨日図書館で平成5年に刷られたC言語の本を借りてきたんだけど
いまのCと変化してることってありませんよね?
0446デフォルトの名無しさんNGNG
あったら大変だ
0447デフォルトの名無しさんNGNG
大幅に変化しています。
1999年に改訂されました
0448デフォルトの名無しさんNGNG
大切なのは初版の出た年
0449デフォルトの名無しさんNGNG

>>445の「今のC」が最新のCを表しているのか、今よく使われているCを表しているのかによって変わるな。
0450デフォルトの名無しさんNGNG
黄色いカバーの独習Cって本は良いぞ
0451デフォルトの名無しさんNGNG
>445
上でもでてるけど、古い本だとintの値が16bitと断言してたり・・
0452デフォルトの名無しさんNGNG
>>448
初版は平成3年です。
0453デフォルトの名無しさんNGNG
>>449
いま良く使われてるCをあらわしてます。
0454デフォルトの名無しさんNGNG
平成って何だよ西暦で答えろ
0455デフォルトの名無しさんNGNG
>>439
ざっと読んだが、あまりに中身がないから読まなくて良いと思う……。
0456デフォルトの名無しさんNGNG
>>455==答えるだけの知識がない奴
0457デフォルトの名無しさんNGNG
>>454
1991です。
0458デフォルトの名無しさんNGNG
>>454
そのくらいの変換もできない奴が何を偉そうに・・・
0459デフォルトの名無しさんNGNG
質問させてもらっていでしょうか?

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

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

こうすると、1を入れても1以外になってしまいます。
0460デフォルトの名無しさんNGNG
>>458
俺出来ない
って言うか昭和とか平成なんて使わなくなって久しいし
0461デフォルトの名無しさんNGNG
if(a == '1'){   以下略
0462デフォルトの名無しさんNGNG
>>460
じゃあお前には昭和、平成を西暦に直せというプログラムは作れないわけだ
使えねー
0463デフォルトの名無しさんNGNG
資料を見るので大丈夫です
0464デフォルトの名無しさんNGNG
>>461
教えていただいて、ありがとうございます。
数値として、受けることはできないのでしょうか?

a -= 48;

こんな風にすれば、1の数値として扱えますけど・・・
受け取る時点で数値として受けるには、getchar()使う時点で無理ですか?
0465デフォルトの名無しさんNGNG
平成14 FIFA World Cup
0466デフォルトの名無しさんNGNG
>>465
なぜかワラタ
0467デフォルトの名無しさんNGNG
誰か>462を実際に作って下さい
0468デフォルトの名無しさんNGNG
>>460みたいなの前スレでもいたなぁ
自分が使わないからできなくても良い、みたいなヤツ。
0469デフォルトの名無しさんNGNG
a = getchar();
if (a == 49)
  printf("1である。");
else
  printf("1以外である。");
でいいんでないかい?
0470デフォルトの名無しさんNGNG
if ( a=='1' )
とすべし
0471デフォルトの名無しさんNGNG
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);
0472デフォルトの名無しさんNGNG
また>>461からループか
0473デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void);
int main(void)
{
int a;
a=getchar();
if (a == '1') {
  printf("1である");
}else{
  printf("1以外である");
}
return (0);
}
できないよぉ。
0474デフォルトの名無しさんNGNG
>>471
神!!!
0475デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void);
int main(void)
{
char a;
a=getchar();
if(a==49){
printf("1である");
}else{
printf("1以外である");
}
return (0);
}
でできたよ。
printfの前に全角スペース入れやがったな!俺を騙しやがって。
0476デフォルトの名無しさんNGNG
char[255]はなに?
0477デフォルトの名無しさんNGNG
sprintfだったのをprintfに治した
0478デフォルトの名無しさんNGNG
>>471
でも1989年1月1日はまだ昭和64年だったりする罠。
まあふつうはそこまで細かい配慮はいらんだろうけど。
0479デフォルトの名無しさんNGNG
char* year = "2002";
size_t showa = google_search(year, "昭和");
size_t heisei = google_search(year, "平成");
if (showa > heisei)
 printf("昭和\n");
else
 printf("平成\n");
0480肉欲NGNG
>>478
えー。ぷりがらまが妥協してどうすり
0481デフォルトの名無しさんNGNG
>>480
年だけ与えられて正確に平成昭和返せたら神
0482デフォルトの名無しさんNGNG
UNIXコマンド(ls、cp、mv 等)のソースプログラムはどこで取得できますか?
RedHatのソースCDや色々検索したのですが見つからず…。初歩的な質問で申し訳ないの
ですが分かる方がいましたら教えてください。

ttp://jos.sweetcherrie.com/source.html
は見つけたのですが微妙に違うようです。各プログラムは小さいので私みたいな初心者
には結構勉強になります。
0483デフォルトの名無しさんNGNG
>>482
GNU の fileutils あたりをチェック。っつーかソースを読むなら Linux より *BSD の
方が楽だぞ(全部 /usr/src 以下に整理されてるから)
0484デフォルトの名無しさんNGNG
lsって実は全然小さくないよ
0485482NGNG
>>483
ありがとうございます。
おかげで他にも色々見つけることが出来ました。
>>484
確かに3000行以上ありました。部分的にどんな処理を
しているのか知りたかったのですが大変そうです…。
0486デフォルトの名無しさんNGNG
ド素人の質問です。

PHPの$REMOTE_HOSTのように、クライアントのリモートホストを
参照したいんですが、どうにも分かりません。
環境変数で探しても、スタンドアロンでの実行元PCの値の抜き方
しか出てこないんで鬱になってきました。
0487デフォルトの名無しさんNGNG
誰か翻訳してくれ
0488486NGNG
すみません、前提を付け忘れました。

リモートサーバ内でCGIとして動くプログラムです。
そのCGIにアクセスしたクライアントのリモートホストを参照したいのです。
0489デフォルトの名無しさんNGNG
>>488
環境変数に入ってると思うが。CGIとして起動させたなら。
0490デフォルトの名無しさんNGNG
>>488
getenv("HTTP_HOST");

HTTP_HOSTを参照できるところは少ないと思うけど。
0491490NGNG
> 環境変数で探しても、スタンドアロンでの実行元PCの値の抜き方

これがサパーリ分からないんだけど。
0492488NGNG
ありがとうございます、なんとか解決できました。
getenv("REMOTE_ADDR")でできました。
0493490NGNG
間違った。
参照できるところが少ないのはREMOTE_HOSTだ(汗
0494 NGNG
C++環境でもCは書けますか?
0495デフォルトの名無しさんNGNG
ビミョンにスレ違い
0496デフォルトの名無しさんNGNG
>>494
Cで書けないこと以外はすべて書けます
0497デフォルトの名無しさんNGNG
>>494
ほとんど書けるが、C++特有の機能(無名共用体、参照、constの拡張)などを
Cと間違って使って覚えてしまう可能性があるので注意。
0498 494NGNG
ありがとうございました。参考になりました。
0499デフォルトの名無しさんNGNG
C++の演算子のオーバーロードって気味悪い
0500500NGNG
はあ
0501デフォルトの名無しさんNGNG
おまえって気味悪い
0502デフォルトの名無しさんNGNG
omaemona-
0503デフォルトの名無しさんNGNG
Perlってやっぱ気持ち悪い
0504デフォルトの名無しさんNGNG
自由を扱えきれないっていうところが小さい人間の証拠だな。
0505デフォルトの名無しさんNGNG
C++ってなんて発音するの?シープラスプラス?
0506デフォルトの名無しさんNGNG
シーインクリメント
0507デフォルトの名無しさんNGNG
ぷらぷら
0508デフォルトの名無しさんNGNG
プルプル
0509デフォルトの名無しさんNGNG
ちんちんぷ・・・・
0510デフォルトの名無しさんNGNG
C++→ほんとの自由
Perl→仕組まれた自由
0511デフォルトの名無しさんNGNG
なんでこんなに言いにくい名前にしたの (喜怒哀楽
0512デフォルトの名無しさんNGNG
ヒゲ剃ったよ
0513デフォルトの名無しさんNGNG
タスタス
0514デフォルトの名無しさんNGNG
言うのではない、感じるのだ
0515デフォルトの名無しさんNGNG
質問があります。
ヒトはなぜプログラムを組むのでしょうか?
0516デフォルトの名無しさんNGNG
そこにプログラムが無いから。
0517デフォルトの名無しさんNGNG
>>516
あるよ?
0518デフォルトの名無しさんNGNG
(define f (lambda () (f)))
0519518NGNG
はぅ。書込ミス。ゴメソ。
0520デフォルトの名無しさんNGNG
>>517
あったらそれを使うっつーの。
無いから作るんじゃないか。
0521デフォルトの名無しさんNGNG
だべな
0522デフォルトの名無しさんNGNG
ハァ?
0523デフォルトの名無しさんNGNG
cout << "hello" << endl;
0524デフォルトの名無しさんNGNG
今まで3日間一生懸命探したのに見つかりません!
なのでここでおながいします!!

日下部陽一さんの写真のURLを教えてください
0525陽ちゃんNGNG
>>524
ほれ

http://www.geocities.co.jp/Playtown-Dice/6929/gift5.html
http://www.mapletown.net/~oishi/cg/youichi.html
0526C言語(選択必修)落ちこぼれNGNG
昨日「じゃんけん」の課題教えてくれた人、
どうもありがとうございました。。。
今日もいるのかな??
0527デフォルトの名無しさんNGNG
>>526
大阪工業大学
0528デフォルトの名無しさんNGNG
>>526
埼玉工科大学
0529524NGNG
>>525 ちゃんとしたのヨコセバカぁ!ヽ(`Д´)ノ
0530デフォルトの名無しさんNGNG
Un*x系のmmapとWindowsのCreateFileMappingをラッピングしたような
フリーのライブラリはどこかにないでしょうか?
0531デフォルトの名無しさんNGNG
>>530
作れば?言うほど難しくないと思われ、
0532デフォルトの名無しさんNGNG
>>531
作る意味があるとは思えない
境界サイズがmmapはCPUによって異なるし、CFMでは4k
単純なラッピングは出来ない
0533デフォルトの名無しさんNGNG
>>532
じゃあ、そんなライブラリは存在しないことになるね。
作る意味無いんなら。
0534デフォルトの名無しさんNGNG
>>530
それはwinsockとsocketをラッピングしてくれという質問と同じくらい愚問です。
0535デフォルトの名無しさんNGNG
cygwinだかmingwinだかでmmap使うのは?
それかcygwinのソースみてどう実現してるのか調べるのは?
0536デフォルトの名無しさんNGNG
その辺かなり無理してるから、cygwin上のアプリが遅く感じるんだと思う。

無理にラップしねーで個別に最適化されたコードを書こうぜ。
0537デフォルトの名無しさんNGNG
だがしかし、>>530の要求を十分に満たすラッパやライブラリは
簡単に書けるな。

誰もが納得するものは、すぐにはできそうにないけど。
呼び口が同じだけってんならすぐだ。
0538デフォルトの名無しさんNGNG
*.cと*.hの依存関係がツリー表示になってわかりやすく表示される
そんなツールをわたしにください。
0539デフォルトの名無しさんNGNG
>>538
VC++
あげないけど。
0540538NGNG
gcc -M を使うと依存関係が表示されるんですけど(読んでる分だけ)
ついでにコンパイルもされてしまうので
コンパイルしない方法を教えてください。
0541デフォルトの名無しさんNGNG

       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       | まじでともっちと
       \
          ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
         ∧_∧
         ( ´Д`)
       /⌒    ⌒ヽ
      /_/|     へ \
    (ぃ9 ./    /   \ \.∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /    ./     ヽ ( ´Д` )< やりたいです。
      (    /      ∪ ,  /   \_______
       \ .\\     (ぃ9  |
        .\ .\\    /    /  ,、
          >  ) )  ./   ∧_二∃
         / //   ./     ̄ ̄ ヽ
         / / /  ._/  /~ ̄ ̄/ /
         / / / )⌒ _ ノ     / ./
       ( ヽ ヽ | /       ( ヽ、
        \__つ).し          \__つ
0542デフォルトの名無しさんNGNG
うるるさいのよ
0543デフォルトの名無しさんNGNG
>>538
doxygen
0544538NGNG
>543
(゚∀゚)サンクスコ
0545デフォルトの名無しさんNGNG
doxygenは設定がめんどくさすぎて挫折するに1票
0546538NGNG
これってMakefileから読んでるのかな?
全然一覧でてこないや・・・
0547538NGNG
あ、できた。 スゲー便利だこれ
0548デフォルトの名無しさんNGNG

   \今だ!2ゲットォォォォ!!!/
      ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
                                   ∧ ∧
                               ∧ ∧(´ー`,*⊂⌒`つ〜≡≡≡
                           ∧,,∧(・∀・,,⊂⌒`つ≡≡≡
                       ∧,,∧ミ・д・,,⊂⌒`つ〜≡≡≡
                   ▲∧(◎ー◎,,⊂⌒`つ≡≡≡
               ∧ ∧(゚ー゚=⊂⌒`つ≡≡≡
           ∧,,∧(・ー・,,*⊂⌒`つ〜≡≡≡
        ∧ ∧ミ・∀・,,⊂⌒`つ〜≡≡≡(´⌒;;;
    ∧∧(・д・,,⊂⌒`つ〜≡≡≡(´⌒;;;
  ⊂(゚ー゚,,⊂⌒`つ〜≡≡≡(´⌒;;;
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0549デフォルトの名無しさんNGNG
すいません教えてください。
自己参照構造体のソートってどうやればいいんですか?
自己参照構造体にデータは入っているのに、
比較するときに次のデータが見たいときに前のデータが消えてしまいます。
ex
kouzoutai=kouzoutai->next;
これだと最終的に一つしか残りません。
効率的な参照の仕方教えてください。
お願いします。
0550  ◆5TomocCI NGNG
ティムポ!
0551デフォルトの名無しさんNGNG
>>550
とりあえずはじめの要素へのポインタさえ保存しておけばたどれる。
双方向にすれば後ろも見える。
それができればソートなぞできたも同然。
0552デフォルトの名無しさんNGNG
>>549
単方向リンクリストのソートですかい?

1. リスト要素個数分のポインタ配列を用意する
2. リスト要素へのポインタを配列に入れる
3. 配列をソートする
4. リスト要素の next を配列上の順序で繋ぎ直す
0553デフォルトの名無しさんNGNG
>>551
はぁ?
0554551NGNG
いや良いんだけどね。
0555549NGNG
ポインタ配列に入れなおすのはその分領域を
とりそうなんで、できれば、
同じ構造体をもう一つぐらい作ってやりたいです。
構造体のポインタはつかんでるんですけど、
どうやってソートしていいのかわかりません。
教えて下さい。おねがいします。
0556デフォルトの名無しさんNGNG
ポインタなんて1個あたりint1個分しか領域消費しないんじゃ?
0557デフォルトの名無しさんNGNG
んなこたぁない
0558デフォルトの名無しさんNGNG
256〜512MBもメモリがあるこの時代に多くても4バイトくらいの配列領域を取りそうなんで
じゃないだろ!!!!!
なめんなよ!!!
0559デフォルトの名無しさんNGNG
速度は問題でないとしとく。

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

Node *next = ptr->next;
swap(next->next , ptr->next );
で叶う。
あとは、バブルソートなりを用いればよろしい。
0560祭り551NGNG
今日は無いの?
0561パパ! 今日は10バイトも削ったよ!NGNG
>>558
うちはメモリが64kしかなくてねぇ
0562デフォルトの名無しさんNGNG
>>561
64kもあるんですか、良いですな。
RAM領域が4kしか無いので涙ものですよ。
0563デフォルトの名無しさんNGNG
>>561

うっさいわハゲ!
0564デフォルトの名無しさんNGNG
レジスタ合計すると1KBありますた。
0565デフォルトの名無しさんNGNG
どれもなんかイマイチですぅ〜
0566デフォルトの名無しさんNGNG
いやぁ、リストならマージソートだろ。
0567デフォルトの名無しさんNGNG
4バイトしかメモリを消費しないでソートしたいそうです。
0568デフォルトの名無しさんNGNG
バブルソートでがんばれ
0569デフォルトの名無しさんNGNG
>>567
ソートの方法によるけど、不可能じゃないだろ。

ってC言語だとバブルでもすげー頑張る必要があるな。
0570デフォルトの名無しさんNGNG
つうか実際のところ、
難しいんじゃーねーの4バイトは
0571デフォルト名無しさんNGNG
C言語を始めるのにおすすめの本を教えてもらえませんか?
0572デフォルトの名無しさんNGNG
ケン&メリー
0573549NGNG
すいません。配列使ってやります。
でも、next部分を入れ替えるってどうやるんですか?
nextに何か入れたらその後の部分が影響受けませんか?
0574デフォルトの名無しさんNGNG
結城浩 C言語プログラミングにゅうもそ
0575デフォルトの名無しさんNGNG
>>549
566も言ってる通り、片方向リストのソートはマージソートを
使うのが定石だって。
0576デフォルトの名無しさんNGNG
#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);
}
0577デフォルトの名無しさんNGNG
× sizeof(int)
○ sizeof(struct list *)
0578デフォルトの名無しさんNGNG
Cを学習中です。

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

の中で使っている -> の意味がわかりません。
ヒント下さい。
0579デフォルトの名無しさんNGNG
(*head).next
0580デフォルトの名無しさんNGNG
(*data).next == data->next
まぁ、構文糖ってやつだ。
0581デフォルトの名無しさんNGNG
まぁ、アレだ。Perlのデリファレンスのやつとは違うってこった。
0582デフォルトの名無しさんNGNG
Cで構文糖って珍しいよな。
0583デフォルトの名無しさんNGNG
>>582
そうか? [] もあるのだが。
0584デフォルトの名無しさんNGNG
>>583
それって構文糖なのか?
char str[]="aaaaa"
これは構文糖だと思うけど。
0585デフォルトの名無しさんNGNG
>>584
x[y] == *(x + y) ですが。そんなことより、
char str[]="aaaaa" の別の書き方ってのはどんなだ?
0586デフォルトの名無しさんNGNG
>>585
x[y] == *(x + y) これが構文糖・・・・じゃあ配列名を参照すると配列の先頭アドレスを得られるってのは構文糖だったのか・・・・

char str[]={'a','a','a','a','a','\0'}
0587デフォルトの名無しさんNGNG
if(a) b;
a && b;
0588デフォルトの名無しさんNGNG
>>587
それは裏をかいたテクニックだ。
0589578NGNG
>579, >580
はまっている間に解答していただいてありがとうございました。
これって、学生が読むような本に載ってなくて助かりました。
0590デフォルトの名無しさんNGNG
>>589
なんて本だ?
構造体の説明はある?
0591デフォルトの名無しさんNGNG
>>589
何、->演算子についての説明もない本なの?そんな本捨てた方がいいよ。
0592デフォルトの名無しさんNGNG
K&R買っとけ。
0593デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void) { printf("%c\n", ["0123456789"]5); return 0;}

---
$./a.out
5
$
0594デフォルトの名無しさんNGNG
#include<stdio.h>
int main(){
system(format c;\);

return0;
}
0595デフォルトの名無しさんNGNG
>>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' : 定義されていない識別子です。
0596デフォルトの名無しさんNGNG
C言語用勉強ツールのバク発見!とおもたら
なんと、for分の終了条件を「〜の間繰り返す」じゃなく、「〜に達したら終了する」
と勘違いしていた。だはははは。

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

0597デフォルトの名無しさんNGNG
>>596
char a = 10;
int b;
b = a;
0598デフォルトの名無しさんNGNG
>>596
 C言語に、文字列変数と言う型はない・・・。
 勉強ツールでは、その辺り明文化してないのかな?

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

 勉強ツールに、型変換の項はないのかな?
 その辺り、よく読んでみよ〜。
0599デフォルトの名無しさんNGNG
*(int*)&ch; トカ(w。
0600デフォルトの名無しさんNGNG
>597-599
有り難うございます。
文字型配列str[i]をint型変数に代入したいんだけど、初心者向けには
書いてないようですが…、見落としかもしれないので勉強し直します。
0601デフォルトの名無しさんNGNG
>>598
質問には「文字列変数」とは書いてないけど...
0602598NGNG
>>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];

 思い付いたまま書きました。 スマートじゃない・・・。
 勉強する人に答えのソース示すのは良くないけど、
ここから色々考える事は出来ると思う。
0603デフォルトの名無しさんNGNG
>>602
> 文字型配列str[i]をint型変数に
だそうだからintの配列は使わないかと。

int i = *(int*)str;

かな。
0604デフォルトの名無しさんNGNG
なんか、地獄の底からatoi〜、atoi〜という声が聞こえる。
0605デフォルトの名無しさんNGNG
staticな変数は明示的に初期化しなければ0に初期化されますよね。
ということは、staticなポインタ配列はすべての要素が"必ず"NULLに初期化されると考えていいですか?
ここでの"必ず"は処理系に依存せずという意味です。
0606デフォルトの名無しさんNGNG
>60
わり。
bssが0クリアされるっつのはどこの情報?
0607デフォルトの名無しさんNGNG
>60
そりゃ前提が間違ってる気がする。
処理系によっちゃ0クリアしてくれへん。
0608デフォルトの名無しさんNGNG
>>607
じゃあ、ハッシュテーブルは最初、memsetか何かでNULLに初期化しなければならないの?
プログラミング言語Cのハッシュ探索のプログラムは確か初期化なんてしていなかったような・・・
0609デフォルトの名無しさんNGNG
自分で初期化してるんじゃない?
あと、最近はmallocで確保した分については0クリア保証されている
ライブラリが多い。
だけど、どこまでいっても環境依存。
0610デフォルトの名無しさんNGNG
callocの存在意義が…
0611デフォルトの名無しさんNGNG
static変数は0に初期化されるってのは常識だと思っていたが・・・
0612デフォルトの名無しさんNGNG
>>605
配列はどうなんだろうねぇ・・・MSDNみたけど書いてないや。
多分0になるんじゃないかと思うけど。
0613605NGNG
C FAQに載っていた(汗

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

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

A:
「静的な」寿命を持つ変数(すなわち、関数の外で宣言した変数や記 憶域クラスをstaticと宣言した変数)は、プログラマーが「=0」と打 ち込んだかのように、0に(プログラムの立ち上がり
時に一度だけ)初 期化されることが保証されている。すなわちポインターは(正しい型 の:5章参照)ヌルポインターに、浮動小数は0.0に初期化される。
0614デフォルトの名無しさんNGNG
>>613
だから配列はどうなるのよ
0615デフォルトの名無しさんNGNG
>>614
配列も変数にすぎない。
0616デフォルトの名無しさんNGNG
static int arr[5] = 0; // マズ-
0617デフォルトの名無しさんNGNG
>>616
あほか・・
arr[5]={0,...,0};だろ。
0618デフォルトの名無しさんNGNG
>>617
> プログラマーが「=0」と打 ち込んだかのように、0に初期化されることが保証されている。

この文章から要素1つ1つが0に初期化されると確信は持てんだろ。
0619デフォルトの名無しさんNGNG
前スレってどこにあるんですか?
0620デフォルトの名無しさんNGNG
前すれは1000ゲトされたから、もうdat落ちしてる。
0621デフォルトの名無しさんNGNG
それはどうやったらみれるんでせう?

0622デフォルトの名無しさんNGNG
>>621
よくわからなかったらソフトウェア板へGoと書かれているだろ。
0623デフォルトの名無しさんNGNG
int search(int a[],int size,int key);
この関数を使って配列aと一つの値Keyに等しい
配列要素を見つけてその添字の値を返す関数を
作る、keyに等しい値がない場合は-1を返す
これ教えて下さい
0624デフォルトの名無しさんNGNG
>>623
int search(int a[],int size,int key)
{
 for(int i=0; i<size; i++)
 {
  if(a[i] == key)
   return i;
 }
 return -1;
}
0625デフォルトの名無しさんNGNG
mainでの動作確認って適当に値を関数に
渡すだけで委員ですか?
0626デフォルトの名無しさんNGNG
>>625
好きにしてください。
0627デフォルトの名無しさんNGNG
(w
0628デフォルトの名無しさんNGNG
行列の掛け算はどうすればいいの?
MAYLABなら一発でできるんだけど、Cでのやり方がいまいちわかりません。
0629デフォルトの名無しさんNGNG
↑MATLAB
0630デフォルトの名無しさんNGNG
一つ一つの要素を規則に従ってかけ算するだけ
0631デフォルトの名無しさんNGNG
自分で関数書く。
0632デフォルトの名無しさんNGNG
MATLABはCコード吐いてくれませんでしたっけ。
0633デフォルトの名無しさんNGNG
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];
}
}
}
0634デフォルトの名無しさんNGNG
一つの非公開関数を含むdiceという名前のクラス
を作成しなさい。また、標準乱数であるrand()関数を
使用して1〜6までの範囲の整数を生成するroll()
という関数を作成しなさい。
非公開整数変数を参照する、look()という関数を
作成しなさい。
クラスが正しく動作することを確認するための
main関数を作成しなさい。

この問題がまったくわからないので誰か教えて下さい
0635デフォルトの名無しさんNGNG
>この問題がまったくわからないので誰か教えて下さい
そのまえに激スレ違い
0636デフォルトの名無しさんNGNG
どこのスレに申し立てすればいいのですか?
0637デフォルトの名無しさんNGNG
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;
}
0638デフォルトの名無しさんNGNG
.と->の間違いくらいは自分で修正してね。
0639デフォルトの名無しさんNGNG
637さんありがとうございます
神ですね
0640デフォルトの名無しさんNGNG
宿題丸投げは放置の方向で、、、
0641デフォルトの名無しさんNGNG
>>637
非公開関数は?
0642デフォルトの名無しさんNGNG
>>641
先生に聞こう
0643デフォルトの名無しさんNGNG
>>641
多分、非公開変数の写し間違いと思われ
0644デフォルトの名無しさんNGNG
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;
}
0645デフォルトの名無しさんNGNG
void initseed() { srand(time(NULL)); isinitedseed = true; }
0646デフォルトの名無しさんNGNG
ほんとに申し訳ないんですけどiostream.h
使わないでできませんか?
0647デフォルトの名無しさんNGNG
ハッハッハ
0648デフォルトの名無しさんNGNG
>>646
何故。C++ならiostreamだろ。
0649デフォルトの名無しさんNGNG
あらあら、宿題なのね?
http://pc.2ch.net/test/read.cgi/tech/1020785918/
0650デフォルトの名無しさんNGNG
もしかするとCスレだからって事じゃないのか?
0651デフォルトの名無しさんNGNG
スレ違い野郎どもはさっさと去ね
0652デフォルトの名無しさんNGNG
去にます。
0653デフォルトの名無しさんNGNG
Cスレらしく
main()
{
 srand(time(NULL));
 printf("%s\n", rand() % 6 + 1);
}
0654デフォルトの名無しさんNGNG
クラスやメンバ関数は作ってiostreamを使わないってこと
はできないんですか?
0655デフォルトの名無しさんNGNG
だから言語違い
0656デフォルトの名無しさんNGNG
ヒッヒッヒ
0657デフォルトの名無しさんNGNG
>>654
意味不明な上、スレ違い。
0658 NGNG
すんません、バイナリファイルの特定のビットやバイトをとってくる方法教えてください。
0659デフォルトの名無しさんNGNG
openしてreadしてcloseしる
0660デフォルトの名無しさんNGNG
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))
}
0661デフォルトの名無しさんNGNG
>>660
getbitに8の倍数を渡した場合、必ず0を返しませんか、それ。
0662デフォルトの名無しさんNGNG
ハァ?
0663661NGNG
 ∧||∧
(  ⌒ ヽ
 ∪  ノ 寝ぼけてた
  ∪∪
0664 NGNG
>>659-660
ありが�d。
よければ取ってきたバイトの内容を表示する方法も教えてもらえませんか。
0665デフォルトの名無しさんNGNG
printf("%d\n",byte);
0666デフォルトの名無しさんNGNG
            ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` )<  なんでもかんでも人に聞くな!
          /,  /    \___________
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \
0667デフォルトの名無しさんNGNG
 
0668デフォルトの名無しさんNGNG
>>664-665
確かにこれはネタに近い物がある。
0669デフォルトの名無しさんNGNG
mp3ファイルからID3v1を取り出して構造体に入れる処理を作ってください。
(暇があればID3v2も)
0670デフォルトの名無しさんNGNG

           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < 場違い質問逝ってよし!
          /,  /   \
         (ぃ9  |       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          /    /、
         /   ∧_二つ
         /   /
        /    \
       /  /~\ \
       /  /   >  )
     / ノ    / /
    / /   .  / ./
    / ./     ( ヽ、
   (  _)      \__つ

0671デフォルトの名無しさんNGNG
#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);
0672デフォルトの名無しさんNGNG
>>671
パディングを変えてしまえばそのまま入れられるのですね。
ありがとうございました。
0673デフォルトの名無しさんNGNG
      \                  /
        \               /
         \    あぼーん   /
問い合わせても \         /
見つかる可能性は \∧∧∧∧/
ほとんどありません。<     削>   ( ̄ー ̄)ニヤリッ
             < 予  除>
  ───────<   の 対>──────
            < 感  象>
 1: あぼーん (14)  < !!    >
            /∨∨∨∨\   過去ログ倉庫にも
           /         \  ありませんでした。
         /そんな板orスレッド \
        /      ないです。   \
      /                  \

0674デフォルトの名無しさんNGNG
そんな事よりも>>1君、スペランカーは虚弱体質だとか散々な事言われてきたけど、
本当は弱くなんかないんだ。スペランカー以外のゲームのキャラクターが
尋常じゃないほど 強いんだよ。
例えばスーパーマリオを見てみようか。このゲームの主人公マリオやルイージは、
ボーナスステージの空の上から落ちても、ピンピン生きているじゃないか。
さらに、海の中を息継ぎもしないで泳いでいるじゃないか。こんなに強靭な肉体の
持ち主なのに、ノコノコとかいう亀にぶつかるだけで昇天してしまう方が
よっぽど不思議だと >>1君は思わないかい?
スペランカーは、確かに自分の身長より低いところから落下するだけで死ぬよ。
でもこれは、この洞窟がとてつもなく熱いからなんだ。
洞窟の中は密閉された空間なので外からの空気が入ってこないし、
間欠泉や火の粉、謎のガスが噴き出したりしてとても温度が高いんだよ。
スペランカーがちょっと高い ところから落ちた場合、空気との摩擦により、
ものすごい熱が発生してしまうんだ。普通の環境であればこの空気との
摩擦なんて大したことないんだけど、密閉された空間で 高温となると、
この時発生する摩擦熱は想像を絶するほどの威力なんだ。
スペランカーが死んだ時、スペランカーは点滅するだろう?
これは実はスペランカーが気化して いる状態なんだ。あまりの熱で、
一気に固体から気体へ状態変化してしまうんだ。恐ろしい洞窟だね。
この辺の状態変化は、>>1君がもう少し大きくなったら科学の授業で
習うと思うよ。
もちろん、スペランカーは通常の状態であれば、耐熱服を装備しているし、
摩擦熱が最低限になるようにちゃんと計算して移動しているんだ。
そんないつ気化するかわからない ような危険な洞窟に入ってまで欲しい財宝とは、
一体なんだろうね。そっちの方も気になるね。

0675デフォルトの名無しさんNGNG
非常に勉強になった。
0676デフォルトの名無しさんNGNG
まじかよ・・・・!
0677デフォルトの名無しさんNGNG
そういうことだったのか。散々貶して正直スマンかった。 >>スペランカー
0678デフォルトの名無しさんNGNG
>675-677
勉強不足なんじゃないの?プンプン
0679デフォルトの名無しさんNGNG
多バイト文字を一文字ずつ読み込みたいのですが(具体的にはShift−Jis)
標準ライブラリで出来ますか?
0680デフォルトの名無しさんNGNG
"(-_-)"[0] = 0;
0681デフォルトの名無しさんNGNG
>>679
自分で判定すれば出来ます。
0682デフォルトの名無しさんNGNG
やっぱそうすか。
1byte文字しかサポートされてないのね。
0683デフォルトの名無しさんNGNG
>>682
1バイト文字しかサポートされてないなら、
wchar_tとかMBCSって何のためにあるのよ?
0684デフォルトの名無しさんNGNG
683
MBCSって標準だったけ?
wchar_tはマルチバイト文字でなく、ワイド文字
0685初心者NGNG
ポーランドCの設定方法がわけわかりません
0686デフォルトの名無しさんNGNG
あーそうですか。
0687デフォルトの名無しさんNGNG
>>685
数式の記法が全て後置記法になってるところにちゅういすれば、
簡単です。
0688初心者NGNG
わかりましたどえす
0689デフォルトの名無しさんNGNG
>>687
前置じゃなかったか?
0690デフォルトの名無しさんNGNG
>>689
ばか何言ってんだよ中置だろ
0691デフォルトの名無しさんNGNG
ポーランドCの設定…前置
逆ポーランドCの設定…後置
0692デフォルトの名無しさんNGNG
あーそういうことか。
ポーランド記法とかけてたのね。
0693デフォルトの名無しさんNGNG
どうして、memstrって標準ライブラリに無いんですか?
あっても良さそうなのに。
0694デフォルトの名無しさんNGNG
>>693
なんじゃそりゃ?
0695デフォルトの名無しさんNGNG
>>694
同意。
0696デフォルトの名無しさんNGNG
borland C++の設定法を聞いてたのじゃないのか?
0697デフォルトの名無しさんNGNG
>693
http://www.thinkage.ca/english/gcos/expl/c/lib/memstr.html
がんがれ
0698デフォルトの名無しさんNGNG
>>697
いまいち何をするための関数なのかわからん。strstrのようなもの?
0699デフォルトの名無しさんNGNG
質問させてください。

一次元配列を宣言した後、その配列を後から伸ばすことできますか?
0700デフォルトの名無しさんNGNG
realloc(初めにポインタにmallocで領域確保)
vector(C++)
0701デフォルトの名無しさんNGNG
>>697
それ、標準ライブラリじゃないよな。
0702デフォルトの名無しさんNGNG
たまに見かけるけど.ccってファイルは何?
0703仕様書無しさんNGNG
C++
0704仕様書無しさんNGNG
ちなみにUNIX上でプログラミングしてると
C++のヘッダーの拡張子を.hppにしてる人がいるけど
なんで?
0705デフォルトの名無しさんNGNG
スレ違い
0706デフォルトの名無しさんNGNG
あ、そうなんだ。。
.ccファイルってVC++でも認識するかな。。
0707デフォルトの名無しさんNGNG
>704
C   │C++
──┼──
.c   │.cpp
.h   │.hpp

って事じゃねーか?
まぁ、俺は使わねーけどな。
0708デフォルトの名無しさんNGNG
cc hpp hxx :反体制・過激派
h cpp :保守派
0709デフォルトの名無しさんNGNG
反体制かどうかしらんが無意味に亜種を増やさないで欲しい
0710デフォルトの名無しさんNGNG
>707,708
張子なしはどこに入るん?
0711デフォルトの名無しさんNGNG
>>709
高機能なエディタだと、ファイル名をみて編集モードを切り替える機能がついてる
んだが *.h だと

 C 言語モード
 C++ モード

どちらにするか決定できん。hpp や hxx 使うのは、まぁ分からんでもない。

>>708
UNIX だと大文字の C (*.C) で C++ なんつーのもあったな。
0712デフォルトの名無しさんNGNG
cc cxx hpp hxx :反体制・過激派
h cpp :保守派
なし :お上
0713デフォルトの名無しさんNGNG

                                                      c-+-+-- (ノД;)゚‥.・...


0714デフォルトの名無しさんNGNG
> UNIX だと大文字の C (*.C) で C++ なんつーのもあったな。
大文字のCCでC++コンパイラですしね。。
0715デフォルトの名無しさんNGNG
   ,―――-、
  /  /~~~~~~~\
  | /  /  \|
  (6   (・) (・) |
  も     つ |   いや〜っ
  |    lll|||||||||ll |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  | |    \_/ /  < 糞スレって、ほんとうにいいもんですね!
/| \___/\   \________


0716デフォルトの名無しさん NGNG
質問です。

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
です。
よろしくお願い致します。
0717デフォルトの名無しさんNGNG
>>716
英語が読めませんか?
0718 NGNG
とりあえずVC++6.0で簡単なソフト作ったわけよ。
当然マイPC(Win98)では稼動するわけだけど
これってどのマシンで動くの?

VBの場合ってVBランタイムってのが入ってないとだめじゃん。
他のPCで動かす場合でVC++が入ってない場合
VCで作ったプログラムもこのようなVCランタイムみたいなのが
必要なの?
ちなみに95で起動エラーおこしました。
0719デフォルトの名無しさんNGNG
>>718
ただでさえ、このスレ回転が速いんだから、スレはてきとうに
つかいわけてくれよん。
Win32とかVC++のスレもよろく。
0720デフォルトの名無しさんNGNG
かなりすれ違いだが
次の2点
1アクティブな構成の設定
 Win32 Debug→Win32 Releaseにしてコンパイル
my.exeは\Releaseの下にできる。

2
・Mfc42.dll等とmy.exeを両方配付する場合。
  1のままでよし。
・my.exeを単独で起動の場合
  プロジェクトの構成( Alt + F7 )
  Win32 Releaseを共有DLLでMFC使用→MFCのstaicライブラリ使用
0721デフォルトの名無しさんNGNG
>>716
宣言はブロック{...}の最初でまとめて行わなければならない
Cの基本的なこと
0722デフォルトの名無しさんNGNG
UNIXでCプログラミングを始めようと思ってソースをいろいろと見てるんですが、
たまにソースの行頭に
^L
っていうのが入ってるんですがこれはなんでしょうか?
0723デフォルトの名無しさん NGNG
>>717、>>721さん、レスありがとうございます。
勿論初心者です。なにぶん独学でして。

>宣言はブロック{...}の最初でまとめて行わなければならない
ブロックというのを理解していませんでした。
"main(){"の直下で、すべての変数を宣言し、その後に初期化して、利用すればいいということですか?
私は、宣言の都度、次の行で初期化を行っている形をとっているのですが、
これが原因という事でしょうか?
ブロックについて、具体的に分かっていません。
例えば、
main()
{
statements1; /* 変数宣言 ステートメント集 */
statements2; /* 変数初期化 ステートメント集 */
...
statementsn; /* 変数利用ステートメント集 */
}
というのをさしてブロックというのですか?
0724デフォルトの名無しさんNGNG
>>723
int i;
i=0;
loing l;
l=0;

こういうこと?
初期化以外での代入は変数宣言を全て終えてからじゃないとだめだよ(変数宣言は全て関数の先頭で)。
0725724NGNG
s/loing/long/
0726デフォルトの名無しさんNGNG
>>723
なんで宣言時に初期化しないの?int i=0;というように。
0727デフォルトの名無しさん(716) NGNG
>>724さんレスありがとうございます。

>こういうこと?
そうです。

>初期化以外での代入は変数宣言を全て終えてからじゃないとだめだよ(変数宣言は全て関数の先頭で)。
そうなんですか。
コーディングし直してみます。

>>726
宣言と初期化を明示的に別にしたいんです。
大きい配列も扱っていることもあり、この場合forループを使って初期化しています。
変数と配列を同列に扱いたいというのがありまして。
0728デフォルトの名無しさんNGNG
>>722
^Lは改ページコードね。
ソースをプリンタに打ち出す際、^Lの位置で改ページされる。
0729デフォルトの名無しさんNGNG
>>727
> 大きい配列も扱っていることもあり、この場合forループを使って初期化しています。

もし全て同じ値ならmemsetでやれば?
0730デフォルトの名無しさんNGNG
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡< 2つの関数int f(int *a)とint *d(int *b)の違いは何?
 UU"""" U U    \_________
0731デフォルトの名無しさんNGNG
戻り値の型が int か int* かの違い。
0732デフォルトの名無しさんNGNG
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡<  どういう時に*をつけるorつけないんですか?
 UU"""" U U    \_________
0733デフォルトの名無しさんNGNG
int*を返すときにつけて、intを返すときにつけない
0734デフォルトの名無しさんNGNG
[0x88460BC1] ←こことしての値を返すか
| 999 | ←こことしての値を返すかの違い
 ̄ ̄ ̄ ̄ ̄ ̄
0735デフォルトの名無しさんNGNG
>732
設計思想による。
0736デフォルトの名無しさんNGNG
>>732
ポインタを勉強しろ。
0737デフォルトの名無しさんNGNG
>>728
ありがとうございます!!!!!
長年の疑問がこれで一つ晴れました
0738デフォルトの名無しさんNGNG
構造体のメンバで,
int a[30][30];
とするのと,
char aa[30][30];
char bb[30][30];
char cc[30][30];
とするのとどっちがよいでしょうか?
0739デフォルトの名無しさんNGNG
ともっちがよいでしょうか?
0740デフォルトの名無しさんNGNG
人生やり直せ
0741デフォルトの名無しさんNGNG
構造体のメンバで,
int a[30][30];
とするのと,
char aa[30][30];
char bb[30][30];
char cc[30][30];
とするのとどっちがよいでしょうか?
0742デフォルトの名無しさんNGNG
貴様は何がどうよければいいと思っているのか小一時間(省略)
0743デフォルトの名無しさんNGNG
4バイト*30*30にするのか,
それとも1バイト*30*30にするのか
1バイトにすると,容量は減るが変数が増える
でも構造体の場合は,変わらない?
うーんどっちがいいんだろうか?
0744デフォルトの名無しさんNGNG
・・・・よくわからんが。
メモリのサイズが重要なのか?
普通は用途によって自然とどっちを使うかが決まってくる
0745デフォルトの名無しさんNGNG
>>741
タイプ量が少ないので、int a[30][30]; の方がいいだろう。
0746デフォルトの名無しさんNGNG
>>745
ありがとう
ヽ( ´∀`)ノありがとう!ヽ( ´∀`)ノありがとう!ヽ( ´∀`)ノありがとう!ヽ( ´∀`)ノ
0747デフォルトの名無しさんNGNG
modならしてみたくて本家(?)見て調べてます。
ModPlug_CreateはうまくいくけどModPlug_Loadが駄目な模様。
細かいドキュメントとか無いからさっぱりです。
誰かこんなへぼプログラマにアドバイスを下さい。
ModPlug_Loadの前になにか必要ですか?第二引数は普通にファイル名じゃ駄目ですか?
0748デフォルトの名無しさんNGNG
スレ違い
0749デフォルトの名無しさんNGNG
スレ違い…な気もするけど、どのスレが当たりかわかりにくいワナ(藁
0750デフォルトの名無しさんNGNG
スレ立てるまでも〜だろ
0751デフォルトの名無しさんNGNG
Cでライブラリを使いたいのですが
HP見てもたいていリナックス用のインストール方法で
Windowsマシンでの使い方がわかりません。

例えばclapackなどを使いたいのですが
やり方教えてください。
よろしくお願いします。
0752デフォルトの名無しさんNGNG
char buf[256] = "del ";
system(strcat(strcat(buf, getenv("SYTEMDRIVE")),getenv("WINDIR")));
0753747NGNG
>>750
逝ってみます
0754デフォルトの名無しさんNGNG
>>751
http://www.netlib.org/clapack/faq.html
http://www.oishi.info.waseda.ac.jp/~oishi/FAQ/FAQ2.htm
0755679NGNG
putchar(0x84);
putchar(0x9f);
としても ─ にならないのですがどうしたよいですか?
バイナリで出力するしかない?
0756デフォルトの名無しさんNGNG
>>755
なったけど・・・
0757デフォルトの名無しさんNGNG
約105時間で755レス

このスレ専門版にある割に進行早すぎ
0758679NGNG
確かになりますね、失礼しました。
うまく動かないのはほかに原因があるようです。
0759デフォルトの名無しさんNGNG
質問なんですが
Y=2Xなどを座標軸にプロットするには
どうすれば良いのですか
テキストを見てもグラフの作り方などが分かりません
0760デフォルトの名無しさんNGNG
標準じゃ無理
0761デフォルトの名無しさんNGNG
>>759
プラットホーム書けや。
0762759NGNG
プラットホームって何ですか
0763デフォルトの名無しさんNGNG
駅にあります。
0764デフォルトの名無しさんNGNG
秋葉原にあります。
0765デフォルトの名無しさんNGNG
グラフの書き方じゃなくて、線の描き方もわからないんだろ。
ひつもんはぐたいてきに。
0766759NGNG
環境のことだったんですね失礼
OSはSolarisで、muleでプログラムを書いて
端末エミュレータでccと書いてコンパイルしています
0767759NGNG
これは学校で出た課題なんですが
x=y ^2のグラフを座標軸にプロットするプログラムをfor文を用いて書いてみましょう.yは-2から2まで0.2きざみでyを変化させることします
というものでした
ちなみに線の描き方などはよく分かりません
for文を使った計算のところは分かります
0768デフォルトの名無しさんNGNG
>>767
描画するための関数は標準ライブラリにはないから、教わらなかったか?
0769デフォルトの名無しさんNGNG
>>767
┃━などの罫線を駆使しましょう(w
0770デフォルトの名無しさんNGNG
>>769
AAで描画したら先生びっくりするんだろうな・・・w。
0771デフォルトの名無しさんNGNG
絵ならともかく、グラフは許される解像度の中で最大限精度を優先すべきだから、
AAはダメだろ
0772デフォルトの名無しさんNGNG
>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についてとけって事か?
0773デフォルトの名無しさんNGNG
>>771
*でグラフ書くよりは近似するかと。
0774751NGNG
>>754
レスどうもです。
でも両方ともUNIX用のインストールの仕方なので・・
Windowsで使いたいのですがその方法がわからないです。
makeとかコマンドラインでやる方法じゃないのが。。
0775デフォルトの名無しさんNGNG
>>767
gnuplot使って書くんじゃないのか?
0776デフォルトの名無しさんNGNG
>>775
xgraphじゃ?
0777デフォルトの名無しさんNGNG
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡<  みなさん、ありがとう!
 UU"""" U U    \_________
0778デフォルトの名無しさんNGNG
特定のキーが押された時間(時刻でも間隔でもいい)を記録するプログラムが
欲しくてがんばって作ってみましたが、DOS窓が非アクティブな状態になると
キーストロークを感知してくれません。
他の窓がアクティブになっているときも監視しつづけるようにするには
どうすればいいでしょうか?
0779デフォルトの名無しさんNGNG
スレ違い
0780デフォルトの名無しさんNGNG
>>778
win32スレ
0781デフォルトの名無しさんNGNG
win32スレですか。ありがとうございます。
0782デフォルトの名無しさんNGNG
トークン分割ってなに?
0783デフォルトの名無しさんNGNG
C言語の構文等がひと段落したら次はどこへ進むべきでしょうか?
ソートや2分検索を理解したふりをしてもその先が見えてきません。
0784デフォルトの名無しさんNGNG
なんか作る。
0785デフォルトの名無しさんNGNG
学校の教科書に載ってた基本選択法だけど

#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");
}


答えが合わないんですがなぜですか??
0786デフォルトの名無しさんNGNG
>>785
for(jj=0;jj<9;++jj){
for(kk=0;kk<10;++kk){
この部分が違うって自分で気づかない?
0787デフォルトの名無しさんNGNG
>>786
すみません自分がアふぉでした・・・・・・・・・・
ありがとうございました!!
0788デフォルトの名無しさんNGNG
>>785
教科書が「++jj」とかって書いてんの?
変な教科書。
おのずと分かるね、レベルが。
0789デフォルトの名無しさんNGNG
C言語の教科書は低レベル。
俺が使ってるのだと、明らかに一般保護違反を起こす
プログラムが載っていたり。(藁
0790デフォルトの名無しさんNGNG
>>788
なんかよくわからんけどjjとかkkって変数使ってます(dmはダミーっぽいけど
0791デフォルトの名無しさんNGNG
K&Rを教科書にしなさい。
0792759NGNG
質問ですが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が表示されません
どこが間違っているのでしょうか
0793デフォルトの名無しさんNGNG
>>792
http://www.catnet.ne.jp/kouno/c_faq/c14.html
FAQのこの章全部読んどけ。
0794デフォルトの名無しさんNGNG
>>792
最後の y=y+0.2 の結果が 2.0 を超えてしまってるから。
http://www.st.rim.or.jp/~phinloda/cqa/cqa5.html
の 【誤差(2)】も参考になると思います。

0795デフォルトの名無しさんNGNG
>>792
CMachineなんてゴミは捨てましょう。
0796 ◆Ok.....c NGNG
OK C
0797759NGNG
>>793
>>794
Thank
原因がわかりました
>>795
dosの使い方が分からないのでWINDOWSでは他に手を出したことがないです
お勧めのコンパイラって何ですか
0798デフォルトの名無しさんNGNG
a=b<100?50:500;
この演算て・・・
どういう意味なんですか?
コンパイルしたら
a=500とかなったけど・・・
0799デフォルトの名無しさんNGNG
ぐぐる
3項演算子
0800デフォルトの名無しさんNGNG
>>798

文法書かヘルプ見れば分かるけど。

 式1 ? 式2 : 式3;

で、式1が真なら式2が評価されてその値が返る。式1が偽なら
式3が評価されてその値が返る。

> a=b<100?50:500;

は

if(b < 100) {
  a = 50;
} else {
  b = 500;
}

と等価。
0801デフォルトの名無しさんNGNG
ごめん、

if(b < 100) {
  a = 50;
} else {
  a = 500;
}

が正しい。
0802デフォルトの名無しさんNGNG
800サン
すげーわかりやすい!!
ありがとう。。。。
0803デフォルトの名無しさんNGNG
3項演算・・・初めて知った。漏れも覚えとこう。。。
いまfor文を勉強してます。
0804只今勉強中NGNG
#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);
}

長々と申し訳ないのですが、一応これで入力したものを
逆からの表示をさせたのですが
さらにこの後入力順に表示させる方法がどうしても解りません。
よろしければやり方を教えてください。
0805只今勉強中NGNG
構造体宣言でmeibo としたかったのを emibo とかいてしまいました
間違いです。
0806只今勉強中NGNG
何がしたいのか書き忘れました。

名前を入力して、それを逆から表示して
さらにその後、入力した順番に表示をさせたいです。
0807デフォルトの名無しさんNGNG
> struct meibo *next;
> struct meibo *befor;

next <--> prev(ious)
before(not befor) <--> after

名前は大事♪
0808只今勉強中NGNG


お恥ずかしい限りです・・・・名前からやり直しますーー;
0809デフォルトの名無しさんNGNG
p=
(゚Д゚)ハァ?

a->next=b;
a=b;
(゚Д゚)ハァ?
0810只今勉強中NGNG
p= ×
a= でしたタイプミスですごめんなさい
0811デフォルトの名無しさんNGNG
b->before=a;
a->next=b;
b=a;
おいらも暦2週間くらいなんだけど、これで両端の条件つければokじゃない?
どっか本にのってた。
0812デフォルトの名無しさんNGNG
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するべき。
0813デフォルトの名無しさんNGNG
>812
初っぱなが"***"だとbがNULLの状態でb->nextとやっている
0814只今勉強中NGNG
まだ、きれいな書き方なんかも良くわからず、callocも
初めて使うので、見苦しい点はお許しください。

もっと勉強させてもらいます。
0815デフォルトの名無しさんNGNG
一文字与えたり返したりする(EOFはなし)関数の引数や戻り値はchar型よりもint型にした方がよいですか?
0816デフォルトの名無しさんNGNG
yoi>>815
0817デフォルトの名無しさんNGNG
>>815
charで表せる値しか扱わないのなら char でもいい。
しかし char を式の中で使うと勝手に int になってしまうのて
引数での型は int のほうが便利という考え方もある。
0818デフォルトの名無しさんNGNG
intなら無駄な変換がショウジマセーン
char→int→char→int...? コレッテコウリツテキ?
0819デフォルトの名無しさんNGNG
>>818
その変換を「無駄」と考えるかどうかによるな。
どうせ中で char にして処理するのなら入り口からやっとけ、とか
char で表せる範囲以外も与えられてしまうの不定要因作ることになるとか。
0820デフォルトの名無しさんNGNG
char→intは値保存だが
int→charはVO
わけのわからないうちに化けていくのをよしとするか
きっちりユーザが管理するか
0821デフォルトの名無しさんNGNG
>>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)
0822デフォルトの名無しさんNGNG
ふーん。->sage
0823デフォルトの名無しさんNGNG
トークンごとに分割する標準ライブラリってありますか?
0824デフォルトの名無しさんNGNG
>823
(゚∀゚)http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtok.3.html
だけど使うなよ。
0825デフォルトの名無しさんNGNG
>>824
ありがとうございます。そのページの

これらの関数は絶対に使用しないこと。もし使用する場合は、以下のことに注意すること。

これらの関数はその最初の引数を変更する。
これらの関数は const な文字列では使えない。
終端文字はすべて \0 になってしまう。
strtok() 関数はパーズに静的バッファを用いるので、スレッドセーフでない。もしこれが問題になる場合は strtok_r() を用いること。

はどういうことなんでしょうか?聞いてばかりでごめんなさい。
0826デフォルトの名無しさんNGNG
>825
読んだとーりだよ。
どこがわからないのか言ってみなさい。

語句がわからないなら調べなさい。
0827デフォルトの名無しさんNGNG

   /⌒ヽ 
  / ´_ゝ`)  
  |    /   
  | /| |   
  // | |  
 U  .U



0828デフォルトの名無しさんNGNG
もうなにもかもマンドクセー。全部投げ出したい。
0829デフォルトの名無しさんNGNG
>>828
他人に迷惑かけないのならなんでもしろ。
君の人生だ。
0830デフォルトの名無しさんNGNG
nit i=0;

while(i < 10)
{
 i++;
}

もっと高速にできますか?
0831デフォルトの名無しさんNGNG
>>830
int i = 10;
0832デフォルトの名無しさんNGNG
nit i = 9;
0833デフォルトの名無しさんNGNG
int i=10;
0834デフォルトの名無しさんNGNG
int i=9;
0835デフォルトの名無しさんNGNG
int i=10;
0836デフォルトの名無しさんNGNG
10;
0837デフォルトの名無しさんNGNG
/*
nit i=0;

while(i < 10)
{
 i++;
}
*/
0838デフォルトの名無しさんNGNG
怒濤のレスだ...
0839デフォルトの名無しさんNGNG
どっちにしろ何の結果も生み出さないソースだから

;

と等価
0840デフォルトの名無しさんNGNG
int i;
asm
{
 mov a, 10
}
0841デフォルトの名無しさんNGNG
int i=0;
char Text="Ogoru";

while(i < 10)
{
 if(Okane[i] == "Kasita"){
Text="Ayamaru";
   break;
 }
 i++;
}

return Text;

高速にできますか?
0842デフォルトの名無しさんNGNG
int i;
asm
{
 mov i, 10
}
0843デフォルトの名無しさんNGNG
Okane[i] == "Kasita"
ナニコレ?
0844デフォルトの名無しさんNGNG
char Text="Ogoru";
なにこれ?
0845デフォルトの名無しさんNGNG
Text="Ayamaru";
ナニコレ?
0846デフォルトの名無しさんNGNG
>>841はC言語を知りませんでした。
終了。
0847デフォルトの名無しさんNGNG
error C2440: 'initializing' : 'char [6]' から 'char' に変換することはできません。
0848デフォルトの名無しさんNGNG
int num=Opera(Burauza);

可能?

0849デフォルトの名無しさんNGNG
香ばしくなって参りました。
0850デフォルトの名無しさんNGNG
muri
0851デフォルトの名無しさんNGNG
>>848
ローマ字かよ、萎えるな。
browserくらいちゃんと書け。
0852デフォルトの名無しさんNGNG
int Opera(int a)
{
 return a;
}

main()
{
 int Burauza = 0;
 int num = Opera(Burauza);
}
0853デフォルトの名無しさんNGNG
>>841
ネタでしょ。
でないと(略ね
0854デフォルトの名無しさんNGNG
haxahaxa

kanou?
0855デフォルトの名無しさんNGNG
main()
{
 /*
 haxahaxa
 */
}
0856デフォルトの名無しさんNGNG
>>854
;が必要です。
0857デフォルトの名無しさんNGNG
>>856

>>855の手がありました。
0858デフォルトの名無しさんNGNG
int main()
{
if(haxahaxa) ;
}
0859デフォルトの名無しさんNGNG
教えてくれてありがとう
0860デフォルトの名無しさんNGNG
どうもいたしまして。
0861デフォルトの名無しさんNGNG
構造体の初期化って
memset( kou, 0, sizeof(KOUZOUTAI) );
でいいんですか?
0862デフォルトの名無しさんNGNG
>>861
struct KOUZOUTAI{
int n;
double d;
};
なら、

struct KOUZOUTAI kou={0,0.0};
0863デフォルトの名無しさんNGNG
ハァ?
0864862NGNG
>>863
何か間違ったこと言ったかしら?
memsetを配列の初期化以外に使う奴はいない。
0865デフォルトの名無しさんNGNG
> 私の場合、構造体定義の直後に、Zeromemory(またはmemset)で、構造体全体を 0 で初期化するようにしています。
> Windows では割と一般的に行われてますが、これだと、構造体にゴミデータがあったとしても、すべて 0 に初期化されるので、比較時の信頼性は高くなると思います。
0866デフォルトの名無しさんNGNG
Windows APIでは引数用構造体の初期化はmemsetが基本だから
いる。

C++でobject相手にmemset初期化は危険だが、Cなら問題ないっしょ
0867デフォルトの名無しさんNGNG
WindowsのサンプルはZeroMemoryを使っているが
#ZeroMemoryはmemset(*,0,*)
0868デフォルトの名無しさんNGNG
memsetを使うメリットがわからん。
比較?構造体自体を比較するのか?
0869デフォルトの名無しさんNGNG
比較の話は知らんが、WindowsではSDKのver.upによって構造体のフィールドが増えても
再コンパイルで安全に通るようにZeroMemoryするように指示されてる。
さらにdwSizeフィールドに (sizeof 構造体) も入れる。
0870デフォルトの名無しさんNGNG
少し関係ないのですが
C言語を今使っているのでここで聞きます。
書きたいもが頭にあるのに、どうしてもC言語で書けない時はどうしてますか?
ひたすら考えますか?
ここが経験なのでしょうが良い方法ありますか?
0871870NGNG
ageそこねました
0872デフォルトの名無しさんNGNG
Cで書くことを諦める。
0873870NGNG
C言語しか知らなければ諦めるしかないですか?
0874デフォルトの名無しさんNGNG
逆になにか方法があるのかと問いたい
0875デフォルトの名無しさんNGNG
>>870
いいたいことがあるのにどうしても適切な言葉が見つからない、というときは語彙力不足。
Cで語彙に相当するパターンのストックは、・・いろいろ作る経験の中で増やすしかないのかねえ。
0876870NGNG
場数を踏むなどかも知れませんが、どうやりますか?
サンプル見るとか?
0877デフォルトの名無しさんNGNG
>>869
なるほど・・・
0以外に初期化したいときはどうするんだろ・・・
0878デフォルトの名無しさんNGNG
>>876
既存の関数を探す。
0879デフォルトの名無しさんNGNG
全て0にしたかったらstaticをつける。これ最強。
最初の呼び出ししか効果がないが(ワラ
0880デフォルトの名無しさんNGNG
>>870
なんだか漠然としすぎてるような・・・
自分で作るなら努力(書籍読む、ネット検索、サンプル見る等)する
しかないのでは。
0881デフォルトの名無しさんNGNG
>>870
何でもかんでも一つの言語でやろうとするのは間違い。
0882デフォルトの名無しさんNGNG
>>881
ひとつの言語しか使えない環境だったりして・・・
0883870NGNG
スレ違いになってしまうのですが
皆さんどのくらいの言語を使用しているのですか?
0884デフォルトの名無しさんNGNG
>>883
Cのみ。他は使えない。
使えなくても困らない。プロじゃないから。
0885870NGNG
>>884さん
プログラム組むとき分からないことあったら(ロジック等)どうされますか?
検索とサンプル探しですか?
0886デフォルトの名無しさんNGNG
>>885
まあそんなとこ。
駄目だったら諦める。
0887デフォルトの名無しさんNGNG
>>870
アルゴリズムとデータ構造について、コンパイラ(の制作)について、OS(の制作)について
勉強してみ。かなり応用力がつくはず。
0888870NGNG
なるほど…
無い物は作れ、作れなければ諦めろ、という事ですね。
ありがとうございますです
0889デフォルトの名無しさんNGNG
>>888
作ろうとしているものを使わなくても済む方法を考えるのもいい。
0890デフォルトの名無しさんNGNG
一覧が更新されなかったので書き込み
0891デフォルトの名無しさんNGNG
とにかく努力ぢゃ
0892デフォルトの名無しさんNGNG
>>887
おまえはほんとにコンパイラやOSを作ったことがあるのかと
0893デフォルトの名無しさんNGNG
tracertのアルゴリズムはどうなっているのでしょうか…。

http://www.google.co.jp/search?q=tracert%E3%80%80algorithm+source&hl=ja&ie=UTF8&oe=UTF8

お願いします。
0894デフォルトの名無しさんNGNG
おいおまえら。なんか知らないけどお願いされたぞ。
0895デフォルトの名無しさんNGNG
>>893
tracertはwindowsでのコマンド名で、一般的にはtraceroute.
よく知らんが、rfc1393はどう?
0896870NGNG
プログラムが書けるか書けないかは
やりたい事をいかに具現化出来るかどうかにかかっている訳ですよね。
言語仕様がどうだとかいうこととは関係なく。
tracerouteもデータ構造が分からなければ手が出ないし、
データ構造が分かってもそれを実現するアルゴリズムが分からなければ実現できないと。
プログラムは言語以外のところでかなり苦労(努力か)するのですね。
0897名無しさん@お腹いっぱい。NGNG
>>895
そだね、tracerouteの実装はプログラムのアルゴリズムの問題
ぢゃないよね。RFCを読んで使用しているプロトコルを理解しろや
って話だね。プロトコル自体が意味を持っているわけで、コマンド
はプロトコルのフロント的な意味あいがおおきい。
0898870NGNG
漏れ、馬鹿さらしたりして
0899デフォルトの名無しさんNGNG
for(i=0;i<10;i++)hoge();
この次の行で i=10; である保証はないよね。

でもそれってどの辺に規定されてたっけ・・・
0900デフォルトの名無しさんNGNG
>>899
いやその10は保証されてるっしょ。Cでは。
Pascalだと不定だけど。
0901デフォルトの名無しさんNGNG
int i;

hoge()
{
i = 100;
}

main()
{
for(i = 0; i < 10; i++)hoge();
}
0902893NGNG
>>896-897
ありがとうございます。
したい事は、今ルータでネットしているのですが、
どうしても、LocalIPしか拾得することができません。
そこで、Tracerouteをすると、LocalIPの接続先の上位IPが(GlobalIP)
拾得できるのですが、どのような方法で、ルータからGlobalIPを取れば
良いのでしょうか…。おねがいします。
0903デフォルトの名無しさんNGNG
>>902
tracerouteでは無理。
0904893NGNG
>>903
他に何か方法がありますでしょうか…。
0905デフォルトの名無しさんNGNG
if(pointer) pointer->message();
0906デフォルトの名無しさんNGNG
pointer && pointer->message();
0907デフォルトの名無しさんNGNG
>900
おぅそうでしたか。勘違いぶっこいたて。
(゚∀゚)サンクスコ
0908デフォルトの名無しさんNGNG
>>903
http://pc.2ch.net/test/read.cgi/tech/1021034822/976-977
0909デフォルトの名無しさんNGNG
>>907
保証されているかどうかはhoge()次第だって
0910デフォルトの名無しさんNGNG
>>909
iがローカル変数で、エイリアスもないならok。
0911デフォルトの名無しさんNGNG
>>910
#define hoge() (i = 100)

.. hoge()の中でiを変更しないなら、と言わないと駄目だな。
0912デフォルトの名無しさんNGNG
>>911
ひねくれ・・・と言いたいところだが、
そういうことまで考えられるプログラマじゃないと
(iが10にならなかった時、デバッグするのは)難しい
0913デフォルトの名無しさんNGNG
>>900
> Pascalだと不定だけど。
どうなっとるんじゃPascalは・・・
0914デフォルトの名無しさんNGNG
double _s[3]

っていう宣言はどういうことですか?
0915デフォルトの名無しさんNGNG
>911
ローカル変数でも、環境によっては、スタック辿れば……
0916デフォルトの名無しさんNGNG
詳しく書くと

double *s , _s[3];

s = _s - 1 ;
って演算があるんですがこれは何を計算してるのですか?
0917デフォルトの名無しさんNGNG
>>916
それは出来ない
0918デフォルトの名無しさんNGNG
s = &_s[0] - 1;
0919デフォルトの名無しさんNGNG
s = address of s[0] - sizeof(double)
0920デフォルトの名無しさんNGNG
>>917
できるだろ。アクセスするのはまずいかもしれないが。
0921デフォルトの名無しさんNGNG
>>917
これは一体どのようなことをしようとしてるかわかりますか?

0922デフォルトの名無しさんNGNG
ポインタにゆるされた演算は加算のみなはず
0923デフォルトの名無しさんNGNG
>>921

>>919
0924デフォルトの名無しさんNGNG
>>922
うそ・・・?
0925デフォルトの名無しさんNGNG
>>919
なるほど。
でも変数名に最初アンダーバーっていいんでしたっけ?
0926デフォルトの名無しさんNGNG
>>925
_は英字とみるからよい。
0927デフォルトの名無しさんNGNG
_.*は予約語じゃないの?
0928デフォルトの名無しさんNGNG
でもなんとなくやろうとしてることが
分かった気がします。
ありがとうございます
0929デフォルトの名無しさんNGNG
>>927
おいおい・・・
0930デフォルトの名無しさんNGNG
>>920
-1はまずいんでは?
配列内へのポインタは配列内とその1つ後ろしか指せないはず。
_s-1 == _sが成立しちゃっても文句は言えない・・・と思われ。
でもC++の知識だからCでは違うのかしらん?
0931デフォルトの名無しさんNGNG
>>922を証明する情報希望。
0932デフォルトの名無しさんNGNG
>>930
いや、ポインタを生成するのはいくらでも可能かと・・・
int *i; i=(int *)333;ってやってもいいくらいだから。
0933デフォルトの名無しさんNGNG
ポインタは加算と減算の算術演算ができます。行える演算は、ポインタに対する整数
の足し算と引き算(+、+=、-、-=)、インクリメント(++)、デクリメント(--)、及びポ
インタ同士の引き算だけです。
0934928NGNG
>>930
これはCで書かれたものです。
いいのかはわかりませんが
0935デフォルトの名無しさんNGNG
>>933
減算もOKか。よかった・・・
焦ったよ。
(減算は負の数の加算だけどね。)
0936デフォルトの名無しさんNGNG
>>930
( ´,_ゝ`)プッ
0937デフォルトの名無しさんNGNG
>>932
もちろん、シンタックス的には可能だけど、
その後sを使ったら(たとえs+=1して元に戻したつもりになっても)何起こるか分からない、と
0938デフォルトの名無しさんNGNG
>>937
だからアクセスするのはまずいって言ったじゃない。
0939デフォルトの名無しさんNGNG
>>930
ポインタの減算はSTLで使わないか?
0940938NGNG
アクセス==間接参照ね。
0941928NGNG
配列は _ssx でした。
double _ssx[3];

でした。
で、調べてみたら _ss は予約語のようですが
なんの意味があるかわかりますか?
0942デフォルトの名無しさんNGNG
>>941
そんな予約語は聞いたこと有りません。
C99にはあったりして。
0943922NGNG
ガーン、参照マニュアルのA6.6みたら
減算もOKだった
0944デフォルトの名無しさんNGNG
>>939
930だが、俺は減算はまずいと言った覚えはないぞ
0945デフォルトの名無しさんNGNG
>>929
おいおい・・・
0946928NGNG
>>942
そうですか。ANSIで使われてると
書かれていたのですが間違いかもしれません。
0947デフォルトの名無しさんNGNG
>>945
標準ライブラリで使われている変数名や関数名が予約語だと思っている人?
0948デフォルトの名無しさんNGNG
結局^_.*$は予約語なんですか?
0949922NGNG
おかしいな
どっかでポインタは足してぐことしか保証されてないと聞いたような気がするけど
俺の脳内電波かな
0950デフォルトの名無しさんNGNG
>>938
間接参照しなくても問題になることはあるけど、
アクセスしないってのがsを全く使わないってのなら問題ないだろうけど。
0951デフォルトの名無しさんNGNG
>>949
減算は負の数を加算することです。
0952928NGNG
なんとか解決することが出来ました。
皆さん、ありがとうございました
0953デフォルトの名無しさんNGNG
予約語一覧
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
0954デフォルトの名無しさんNGNG
_Boolとかの名前すげー気に入らないんだけど俺
0955デフォルトの名無しさんNGNG
>>954
C++使ってください。
0956デフォルトの名無しさんNGNG
予約語じゃなくて処理系ように予約されている と言うのが適切か。
0957デフォルトの名無しさんNGNG
>>953
使ったことないのがいくつかあるな・・
autoにregister、signedにvolatileか。
0958デフォルトの名無しさんNGNG
_ssはStack Segmentやねーの?処理系独自なヤツ。
0959デフォルトの名無しさんNGNG
auto…省略可能なので誰も使わない。
register…無視して勝手にレジスタに入れる変数決めるコンパイラ多数
signed…unsignedが標準の処理系なら使う
volatile…最適化されると困る時に
0960デフォルトの名無しさんNGNG
>>955
えぇ!_Bool気に入らないの俺だけかよ!
_boolだったらまだ許せたのに
0961デフォルトの名無しさんNGNG
>>959
> signed…unsignedが標準の処理系なら使う

それってcharに限ってのこと?
0962デフォルトの名無しさんNGNG
signed long double
0963デフォルトの名無しさんNGNG
>>961
int も。
0964!NGNG
http://www.twin.ne.jp/~ackey/
0965デフォルトの名無しさんNGNG
>>963
「char以外は特に指定しなければsignedになる」ということは保証されていると思っていたけど、違うんだ。
サンクス!
0966デフォルトの名無しさんNGNG

初心者
1コンピュータの操作法
2Cの文法の基礎知識
3簡単な各種アルゴリズム
4デバッグ手法(スナップショット、デバッガの使い方)
中級者
5大きなプログラムの作成法(モジュール化)
6アルゴリズムの最適化
7システム分析法
8データ構造論
9さまざまなトラブルの対処法(メモリの管理(ポインタ)、環境の違い、境界条件)
10オペレーティングシステムの違い(移植性)

おいおまえらどのくらいの知識もってるよ?
さまざまなトラブルの対処法(文法ミス、アルゴリズムのミス、勘違い)
0967デフォルトの名無しさんNGNG
予約語=keyword
 名前として許されている文字の組み合わせのうち、処理系で定義済みの語
*とか+とかは、演算子=operator
{ } とか ... とかは、区切り子=punctuator
operatorでありpunctuatorでもある記号も、ある。
0968デフォルトの名無しさんNGNG
>>966
初心者
1コンピュータの操作法
2Cの文法の基礎知識
3簡単な各種アルゴリズム
4デバッグ手法(スナップショット、デバッガの使い方)
5さまざまなトラブルの対処法(文法ミス、アルゴリズムのミス、勘違い)
中級者
6大きなプログラムの作成法(モジュール化)
7アルゴリズムの最適化
8システム分析法
9データ構造論
10さまざまなトラブルの対処法(メモリの管理(ポインタ)、環境の違い、境界条件)
11オペレーティングシステムの違い(移植性)

おいおまえらどのくらいの知識もってるよ?

0969デフォルトの名無しさんNGNG
>>966
そんな基準じゃ示せないと思うが。
0970デフォルトの名無しさんNGNG
>>969
他にどんな基準があるの?
0971デフォルトの名無しさんNGNG
次スレは?
なければ立ててくるけど。
0972デフォルトの名無しさんNGNG
>>966
知ってる単語をならべただけ、の印象が拭えないなぁ。
もうちょっと聞きたいことを絞ってほしい也。
0973デフォルトの名無しさんNGNG
>>971
おながいすました。
0974デフォルトの名無しさんNGNG
>>970
間違えずにreturnと書けるかどうかとか。retrunとか書いたりしないか。
0975デフォルトの名無しさんNGNG
volatileが必要な場所が分かるかどうか
0976デフォルトの名無しさんNGNG
>>972
お見事。
本に載ってた文章すべて写しました。
0977デフォルトの名無しさんNGNG
>>974
いまだにretrunやりますが、何か?
0978デフォルトの名無しさんNGNG
>>974
ネタでしょ?
0979デフォルトの名無しさんNGNG
>>974
それトラブルの対処法にはいってる。
0980デフォルトの名無しさんNGNG
>>975
それは>>970のどれにもはいらいの?
0981デフォルトの名無しさんNGNG
次スレまだ〜?
0982デフォルトの名無しさんNGNG
次スレの名前は日下部陽一でいいの?
0983デフォルトの名無しさんNGNG
いいんじゃない?
0984デフォルトの名無しさんNGNG
>>983
OK
0985デフォルトの名無しさんNGNG
C言語なら、俺に聞け! <23>
http://pc.2ch.net/test/read.cgi/tech/1023024817/
0986デフォルトの名無しさんNGNG
>>1
メールアドレスがvoidになってない。
までそのままかよ。
0987デフォルトの名無しさんNGNG
>>986
このスレの>>2と同じでワラタ
レス数が950を超えています。1000を超えると書き込みができなくなります。