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

C言語なら俺に聞け! Part 79

■ このスレッドは過去ログ倉庫に格納されています
0001v(^o^i)dNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンクは>>3-20あたり(誰か適当に貼って)

Cなら俺に訊け! Part 78
http://pc5.2ch.net/test/read.cgi/tech/1083651280/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0153148-149NGNG
>>152
いや、ホント解らなかったんですが、
↑に書き込みしてる内に、色々思いついて試してたら出来てしまって……、
スレ汚し本当にスマソ_| ̄|○
0154デフォルトの名無しさんNGNG
>>153
いや、明らかに出来てないだろ。
0155デフォルトの名無しさんNGNG
>>148-149
突っ込み所満載だな
0156デフォルトの名無しさんNGNG
そもそもCで文字列処理をやろうとした時点で戦略的自滅
0157デフォルトの名無しさんNGNG
やりたいことは、atoi(bundan) ではないの?
0158デフォルトの名無しさんNGNG
関数ポインタが分かりません。

void (*pp[])() = { func1, func2, func3 };
int i;
for (i = 0; i < 3; i++) {
  (*pp[i])();
}
の呼び出してる所、[ ]がある時点ですでに中身参照って意味じゃないんですか?
*pp[i]って、ポインタのポインタみたい。って思うんです。
0159デフォルトの名無しさんNGNG
>>158
もうちょっと質問の形にしてくれる?
何を答えたらいいか、わからんよ。
ちなみに呼び出し行は、
pp[i]();
と書いてもいいよ。
0160デフォルトの名無しさんNGNG
>>158
それは「関数ポインタ」の配列
0161デフォルトの名無しさんNGNG
>>159
そう!それも分からんかったです。
void (*pp)() = func1;のときに、
呼び出すときに、(*pp)();でもpp();でも良いのは何でだろう?と。

あと、>>158のは、うーん、なんというか、
例えばa[5]とかくと、*(a + 5)と同じだと思うんですけど、
だから(**(pp + i))に見えるんですよ、*pp[i]って。
宣言の時アスタ1個しかついてないのに???ってなるんです。
*は中身参照だと教わったんですが、多分まだそれがいまいち理解できてないんだと思います・・・
0162デフォルトの名無しさんNGNG
ポインタ配列の関数間の受け渡しはどういう風にやるんですか?
0163デフォルトの名無しさんNGNG
>>162
ポインタ配列へのポインタを使うのです
0164デフォルトの名無しさんNGNG
>>162
argv(mainの第二引数)と同じ
0165デフォルトの名無しさんNGNG
>>158
中身を参照しただけじゃ関数は呼び出せないから。
呼び出すには()が必要。
[]で配列から要素(関数ポインタ)を取り出し、()で呼び出す。
0166165NGNG
ああなんかすっごーく的はずれな書き込みをしたかも。

関数ポインタはちょっと特殊で、何度間接参照してもOK。
0167デフォルトの名無しさんNGNG
テンプレにあるコンパイラのダウンロードの仕方が分かりません・・・
0168デフォルトの名無しさんNGNG
>>167
どれが?
0169デフォルトの名無しさんNGNG
>>168
GCCです
0170デフォルトの名無しさんNGNG
http://www.cygwin.com/setup.exe
0171デフォルトの名無しさんNGNG
>>169
ftp://core.ring.gr.jp/pub/GNU/gcc/
0172167NGNG
うーん、Unable get set up ini from 〜 って表示されて上手くいきません

Cの勉強がしたいのでとりあえずコンパイルできる環境がほしいのですが
0173デフォルトの名無しさんNGNG
おまえはbccでいいよ
0174デフォルトの名無しさんNGNG
abcで
0175デフォルトの名無しさんNGNG
> Cの勉強がしたいのでとりあえずコンパイルできる環境がほしいのですが

iMac買えば最初から入ってるよ。

ccもviも、

apacheもemacも
rubyもperlもsendmailもxmllintも!
0176デフォルトの名無しさんNGNG
> スイマセン、事故解決しました。
> if(bundan == *reference[l])

空白あけろよ ぼけ
0177デフォルトの名無しさんNGNG
>>175
iMacってLinuxのパクりOSなんですね。
0178デフォルトの名無しさんNGNG
if
(
bundan
==
*
reference
[
l
]
)
0179デフォルトの名無しさんNGNG
>iMacってLinuxのパクりOSなんですね。
>iMacってLinuxのパクりOSなんですね。
>iMacってLinuxのパクりOSなんですね。
0180デフォルトの名無しさんNGNG
>177 も少し調べるなりした方が良いぞ(w
0181デフォルトの名無しさんNGNG
iMacとか言っている>>175には突っ込まないんだな。
0182デフォルトの名無しさんNGNG
>>176
ばーか
0183デフォルトの名無しさんNGNG
>iMac
に入ってるOSは違うの?
0184デフォルトの名無しさんNGNG
OSX以前からあるし。
0185デフォルトの名無しさんNGNG
>>178
それは空白ではないですね。
0186デフォルトの名無しさんNGNG
iMacはiMacだろ? 何か問題でも?

iMacでMS Office買って入れると、Virtual PCがはいるんだけど、

Aquaのウィンドウと、
Windows XPのウィンドウと
Xのウィンドウが
混在して、楽しいですよね。

ちなみに、そのままでccが使えないのはWindowsのウィンドウだけです。
0187デフォルトの名無しさんNGNG
iMac買えば「最初から入ってるよ」。
0188デフォルトの名無しさんNGNG
そそ > 187

なので、買ってすぐにCの勉強できていいよね。
0189デフォルトの名無しさんNGNG
>>188
君には負けたよ。
0190デフォルトの名無しさんNGNG
% man cc
GCC(1) GNU GCC(1)



NAME
gcc - GNU project C and C++ compiler

SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] infile...

Only the most useful options are listed here; see below for the remain-
der. g++ accepts mostly the same options as gcc.
0191デフォルトの名無しさんNGNG
189はごまかしモードに入った!
0192デフォルトの名無しさんNGNG
>>186
いまどきWinアプリをCで作るやつなんていないからな。
0193デフォルトの名無しさんNGNG
いっぱいいるのに。

C、C++、Javaが
3:5:2ぐらいだね。

10万人ぐらいつれてきたら、3万人以上はいる。
0194デフォルトの名無しさんNGNG
学校でやらされた奴が大半
0195デフォルトの名無しさんNGNG
それに 192 はいいわけにはなっていないですね。
ccが入っていないWindows君は、当然C++もJavaも入ってないのです。rubyもperlも! awkさえない!
0196デフォルトの名無しさんNGNG
がっこうでCなんかやるんかー、学校はふつうJavaよね。
Cは社会に出てからっていう人が多い。
0197デフォルトの名無しさんNGNG
K先生にCを習いました!! (学校で)
0198デフォルトの名無しさんNGNG
>>195
ばーか
VBS, CMD, C#, JScript, C#, VB.NETとか入ってるだろ。
そんな古臭い糞ツールはいまどきはやらないんだよ。
0199デフォルトの名無しさんNGNG
>VBS, CMD, C#, JScript, C#, VB.NETとか入ってるだろ。
プ
0200デフォルトの名無しさんNGNG
>>185
改行も空白の一種だが。
0201デフォルトの名無しさんNGNG
>>198
なぜ、「C#」だけ二度も出てくる?
そんなに「C#」を強調したいのか?
0202デフォルトの名無しさんNGNG
>>200
きっと isspace() を使ったことないんだよ
0203デフォルトの名無しさんNGNG
>>195
Windows2000 AdvancedServerにはPerlが入っている。
0204デフォルトの名無しさんNGNG
> きっと isspace() を使ったことないんだよ

isspace()とisblank()、歴史が古いのはどっちでしょう?
また、どっちがより範囲が広いか知ってますか?
(10秒以内に答えられたら500円あげる。
0205デフォルトの名無しさんNGNG
キャストの質問なのですが、
手持ちの解説書には『右辺の変数を左辺の変数にデータ型変換して代入』と
書いてあるのですが、以下の場合の右辺と左辺はどれになるのかわかりません。
てか、(BBB *)って何をしてるのでしょう・・・

stpBBB = (BBB *) cpAAA;

(※stpBBB,cpAAAは構造体で、エリアポインタセーブとして宣言されています)
いくらぐぐってもこんなキャストのやり方でてきません_| ̄|○
0206デフォルトの名無しさんNGNG
> VBS, CMD, C#, JScript, C#, VB.NETとか入ってるだろ。

はいってませんよ > Windowsに
0207デフォルトの名無しさんNGNG
>>205
=の左か右か
0208デフォルトの名無しさんNGNG
> 以下の場合の右辺と左辺はどれになるのかわかりません。
> stpBBB = (BBB *)cpAAA;

右側が右辺
左側が左辺ね

って、もしかして箸を左手でもつほうですか?
0209デフォルトの名無しさんNGNG
>>208
おそらく(BBB *)cpAAAしか注目していない。
0210デフォルトの名無しさんNGNG
>>205
>てか、(BBB *)って何をしてるのでしょう・・・

「BBB *」型に型変換をしている
0211205NGNG
>>207
>>208
すみません。書き方が間違っていたようです。
(BBB *) が何をしてるのかわかりません。
0212デフォルトの名無しさんNGNG
>>210
その手持ちの解説書とやらに書いてあるじゃないか
0213デフォルトの名無しさんNGNG
>>205
藻前、プログラムに向いてないよ
0214デフォルトの名無しさんNGNG
>>206
いつのWindowsの話をなさっているのでしょうか…
0215デフォルトの名無しさんNGNG
>>213
向いていないのはわかっています。
ですが、向いていないからやらないというわけにはいかないのです。
0216デフォルトの名無しさんNGNG
煽りには反応してマジレスはスルーか。
0217デフォルトの名無しさんNGNG
>>216
スルーしたつもりはないのですが失礼しました。

>>209
>>210
「BBB *」型に型変換をしている

*の指す意味がよくわかりません。
0218デフォルトの名無しさんNGNG
>>217
BBB *型は、BBB型のポインタ型
0219デフォルトの名無しさんNGNG
>>218
BBB型のポインタ型ですか・・・
ぐぐってみたら色々出てきましたので見てみます。
ご親切にありがとうございました。
0220元プログラマNGNG
>>205
(BBB *)はキャスト(cast)を行っている。
 機械語でいえば、どちらもアドレスを格納しているのだから
 同じ語長(バイト数)となる。(near , farは考慮せずに言えばだが・・・)
 つまり、アセンブラなら例えば、move a , b といった感じで
 書けるわけだ。
 だが、C言語には型があり、文法でエラーとなる。
 そこが高級言語の窮屈なところでもあり、いいところでもあるわけだが。
 でも型が違っても、語長は同じだし、機械語レベルで言えばアドレスと
 いう値であるから、同じといえば同じなんだな。
 それをC言語で文法チェックで代入できないところを、同じものなら
 代入できるようにしてあげよう!なんて親切な機能がキャストだ。
 わかったかな?

 でも、ついでにいえば、キャストというのはアドレス
 でなくても、無理矢理変換できてしまうから、変なことしていると
 落ちてしまうのだ。
 だが、そういう落ちてしまうようなシステムを作るのはC言語プログラマ
 としては3流だから、無視することとして(おれの作った組み込みは
 ハードが壊れないかぎり絶対に暴走はしないと自信がある!)
 まあ、おれさまのようなちょー一流プログラマになれば
 キャストがあったらいろいろ便利につかえるのだ。
 と、DQNなおれだが、たまには自慢させてくれ。
 以上。
0221デフォルトの名無しさんNGNG
エリアポインタセーブってなに?
0222デフォルトの名無しさんNGNG
>>217
自分も同じで「エリアポインタセーブ」が何だか聞きたいんだけど。
0223デフォルトの名無しさんNGNG
Googleで一件くらいは引っかかると思ってやってみたが・・・
0224デフォルトの名無しさんNGNG
struct AreaPointerSaveだったりして。
0225デフォルトの名無しさんNGNG
>>220
>おれさまのようなちょー一流プログラマになれば
>DQNなおれだが

己のDQNさを自覚しているのも質悪いな。
キャストの説明も間違ってるし。
0226デフォルトの名無しさんNGNG
バカだなおまいら。2万円のPCに1000円程度の雑誌の付録CDROMのOSを入れる。
開発環境は初めからほとんど揃ってる。あとは欲しい言語をダウソして終わりだ。
0227131NGNG
>>140
すみません 少し考えたんですがわかりませんでした・・・
>>145
本当に釣りではないですよ(笑
おっしゃるとおり読む人のことを考えたらどっちがいいのかなぁ?と
思ってレスさしてもらいました
�Aがいいようなのでこれからそうしたいと思います

あと他にこんな書き方のほうがいいぞ!ってあれば教えてください
お願いします&返事ありがとうございました(>Д<)ゝ
0228デフォルトの名無しさんNGNG
> 〓がいいようなのでこれからそうしたいと思います

文字化けしてるぞ!
0229デフォルトの名無しさんNGNG
まる2
0230デフォルトの名無しさんNGNG
>>227 だれかが、その程度のものマクロにしろっていってなかった?
#define MAX(x,y) ((x)>(y)) ?(x) :(y)
0231デフォルトの名無しさんNGNG
MAX(x--,y++);
0232デフォルトの名無しさんNGNG
おい!助けてくれ!

△△△△1
△△△22
△△333
△4444
55555

って表示させるにはどうすりゃいいんだ!
ifを使えってさ!あと△はヌルだってさ!

途中まで考えた!
int i,j;
for(i=1;i>6;i++){
for(j=1;j>6;++)
printf("%d" ←ここらから分かってない。
if(j>i

助けてくれ!マジで!
0233デフォルトの名無しさんNGNG
>>232
とりあえず最初のforループの判定に失敗するがいいのか?
0234デフォルトの名無しさんNGNG
>>232
C/C++の宿題をやらせて、お兄ちゃん 22代目
http://pc5.2ch.net/test/read.cgi/tech/1083050221/l50
0235デフォルトの名無しさんNGNG
>>233
うわ!そんなところから違うのか!ぎゃおす
>>234
誘導ありがとうございます。そちらに逝かせておもらしします。ありがとうごまします
0236デフォルトの名無しさんNGNG
>>232
>あと△はヌルだってさ!
表示しろってか?
0237デフォルトの名無しさんNGNG
>>236
スペースだってさ!もう少しっていうかかなり勉強してくるぜ!誘導先に!
0238デフォルトの名無しさんNGNG
ネットワーク対応ソフトの作り方を教えて下さい
0239デフォルトの名無しさんNGNG
ソケット使え
0240デフォルトの名無しさんNGNG
ソケットって何ですか?
0241デフォルトの名無しさんNGNG
ネットワーク対応ソフトを作るためのライブラリ
0242デフォルトの名無しさんNGNG
>>241
ありがとうございましT。
0243デフォルトの名無しさんNGNG
>>238
標準Cのみでは不可能。
環境スレに行け。
0244デフォルトの名無しさんNGNG
>>243
VC++あります。
スレ違いになりそうなので移動しますね
0245デフォルトの名無しさんNGNG
mallocで割り当てたメモリに対し、二重配列とみなして[][]でアクセスしたいのですが、
どうすればいいのでしょうか?キャストか何かで出来ないでしょうか?

char a[100][1000]; ←このメモリをmalllocで確保したい。
a[20][30] = 'a';
0246デフォルトの名無しさんNGNG
>>245
ムリ

#define Dim(name,x,y)((name)[(y)*100+(x)])

char *a;
a = calloc(100,1000);
Dim(a,20,30) = 'a';

こうやって誤摩化すか、構造体使え
0247デフォルトの名無しさんNGNG
>>245
typedef (*array_type)[1000];
array_type a;

a = (array_type)malloc( sizeof (char [100][1000]) );
a[20][30] = 'a';
0248デフォルトの名無しさんNGNG
誰かルーティングのプログラム教えてくれ〜!!
0249デフォルトの名無しさんNGNG
>>248
激しくスレ違い
0250デフォルトの名無しさんNGNG
c言語を使いたいのですが無料のソフトありませんか?
c++でもcは使えますか?
0251デフォルトの名無しさんNGNG
>>250
>c言語を使いたいのですが無料のソフトありませんか?
>>2

>c++でもcは使えますか?
OK
0252デフォルトの名無しさんNGNG
>>251
そういや>>2だけみると無料だってことが分からないな
■ このスレッドは過去ログ倉庫に格納されています