[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/11 11:18 / Filesize : 195 KB / Number-of Response : 805
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 21



1 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 06:24:18 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 20
pc11.2ch.net/test/read.cgi/tech/1192455273/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 99代目
pc11.2ch.net/test/read.cgi/tech/1194262698/

411 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:16:27 ]
>>409
あっすいませんでした

412 名前:デフォルトの名無しさん [2007/11/16(金) 22:17:24 ]
>>408
あ、そういうことか!!
どうもありがとうございました

413 名前:デフォルトの名無しさん [2007/11/16(金) 22:37:56 ]
>>402
「最適化しないだって?」
「ああ、今日はそんな気分なんだ」
「まったく気まぐれな奴だよ」

414 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:52:46 ]
>>402
#define donotoptimize volatile

415 名前:デフォルトの名無しさん [2007/11/16(金) 22:56:56 ]
違うとおもいますよ。
綿密な計画と設計思想に基づいてボラタイルに したんです。
気まぐれで ボラッたわけでは ありません。

416 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:23:58 ]
なぜmainはmainという名前にしたんだろう、startの方がよくない?と思ったことはあります

417 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:25:04 ]
だったらstopも要ると思わないか

418 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:36:50 ]
多分main,subで分けて書いたからじゃないかな。

419 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:46:05 ]
>>417
関数の名前にしちゃうとその辺の理屈あわせが難しくなるよね
>>418
ああなるほど

関係ないけどmain"メソッド"には今でも違和感がある…



420 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:36:08 ]
mainメソッド……てJAVA?

421 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:07:26 ]
Cから始めた自分には違和感なかったけど、よくよく考えたら不思議な名前のメソッドだな。

422 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:17:27 ]
mainと言いつつ、主要な処理は他のところでやってるしね。

423 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:22:01 ]
主要な流れ、ということじゃないか?
主要な処理を他でやっていても、
全体通してのメインの流れを定めるのがmain関数

int main(){
first_step();
second_step();
third_step();
return 0;
}

424 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 03:51:36 ]
構造体のメンバの数って制限あるのですか?

425 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:08:36 ]
そりゃあるだろうが、限界まで使ったこと無いな。


426 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:18:17 ]
ハード側の限界にぶつかったことならあるが、規格の限界は知らないな

427 名前:デフォルトの名無しさん [2007/11/17(土) 19:17:14 ]
MFCって何?

428 名前:デフォルトの名無しさん [2007/11/17(土) 20:24:04 ]
>>427
ググれ

429 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:33:33 ]
HTMLのform解析をしたいのですが、
<form action="./int.php" method="post">
<input type="text" name="id" value="C">
<input type="submit" name="button" value="押す">actionは./int.php
methodはPOST
typeはtext、nameはbutton valueはC
というように<>内をそれぞれ抽出したいのですが、どのようにしたら出来ますでしょうか?



430 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:36:57 ]
オイラだったら perl でやる。rubyも好いらしい。


431 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:42:25 ]
字句解析はCよりPerlを勉強した方がはるかに楽だよ

432 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:01:25 ]
>402

volatileは「最適化抑制」という意味じゃない。
「値が外的要因(ハードウェアなど)によって変化しうる」という意味。


433 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:05:27 ]
>429

Win系だったらMFCや.NET Framework、UNIX系ならPerlを使ったほうがいいな。

Cでやるしかない、という場合だったら、methodなどのキーワードの後の"...;"の中を一々抽出するしかないな。


434 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:08:04 ]
>>429
どっかから正規表現のライブラリ持ってくるのが楽じゃない?

435 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:11:01 ]
HTMLのライブラリだって、探せばありそう。

436 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:19:45 ]
>>435
たとえばWindowsならMSHTMLとかだな。

437 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 23:34:44 ]
レスありがとうございます。
まずはCだけで頑張ってみます。

438 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:04:55 ]
>>と>=で処理する式が違うんですけど、
プログラムを作るとき、どう区別すべきですか?

439 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:08:11 ]
違うってわかってるんなら、区別できてるってことじゃないか



440 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:20:31 ]
for(;i<10;)

for(;i<=9;)
の違いがわからんってこと?

441 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:23:01 ]
>>は非常に左が大きいだけど
>=は以上ってことだし。

442 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:29:57 ]
if(A>>B)    C=A
elseif(B>>A)   C=B
elseif(A>=B) C=A+1;
elseif(B>=A) C=B+1;

の条件分岐を作りたいんだけど
区別どうすればいいのかってね。




443 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:33:32 ]
>if(A>>B) C=A
 
AがBより非常に大きいってことを言いたいのなら、
コンピュータは 「非常に」 なんて曖昧な条件は理解できないので、
どのくらいかを具体的に指示してやらないとだめ。

if (A >= B + 1000) C = A;
とか
if (A >= B * 10000) C = A;
とか。

444 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:34:25 ]
>>>は非常に左が大きいだけど
C言語でそんな比較演算子は無い
単なる大小比較( > )にし問題を書き換えなさい

445 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:59:48 ]
きっとビットシフトだ

446 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:12:45 ]
良くも悪くもコンピュータは正直だから、命令されたことしかやらない。
「〜よりは大きいが常識の範囲内で」とか言われても判断できるわけがない。

447 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:37:40 ]
おれもビットシフトだと思って、何のことだか全然わからんかった。
「非常に左が大きい」て何だよw


448 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:38:50 ]
以前にも同じような質問してきた奴が居たから俺はわかった

449 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:23:39 ]
unsigned A; の下位 B ビット以外が0であることを
判別する関数をつくりなさい。(10点)




450 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:30:08 ]
int f(unsigned A, int B) { return !(A >> B); }

451 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:38:36 ]
bool func(unsigned A, unsigned B) {return A >= (1 << B);}

452 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 08:44:45 ]
後出しなのに・・・

453 名前:デフォルトの名無しさん [2007/11/18(日) 09:15:50 ]
すみません、まだC初めて一週間足らずの初心者ですが質問させてください。

課題で
void printIPAddress( unsigned int address )
{
printf("%d.%d.%d.%d",
(address & 『 @ 』 ) >> 24,
(address & 『 A 』 ) >> 16,
(address & 『 B 』 ) >> 8,
(address & 『 C 』 ));
}
ア.0x000000ff イ.0x0000ff00 ウ.0x00ff0000 エ.0xff000000

とありまして、@〜Cにア〜エから適切なものを選択して関数を完成させるというものです。
ネットなどで色々検索して、答はたぶん@:エ A:ウ B:イ C:アじゃないかと思ってるのですが
どうしてそれが正解?なのかがわかりません。(そもそも正解かどうかすらわかりません)

考え方としては例えば@:エなら0xff000000は11111111 00000000 00000000 00000000で
>>24というのが右に24bit(3byte)移動するという意味なんだろうか?と思ってるんですが
3byte移動したら11111111が一番→にきて後ろについてたたくさんの0は前に行くんでしょうか?
それがどうして正解?なんでしょうか?他のもの(例えば0x000000ffとか)が入ってはいけないんでしょうか?
&を使ってるという事は論理積を理解できてないとこの問題は理解できないんだと思うのですが
本や解説を見てる時はふんふんなるほどと思っても実際こうやって問題にされると全くわからなくてお手上げです…

長文すみませんがどなたかご教授お願いします。
もしスレチならどこか該当スレに誘導お願いします。
(最初ふらっとCスレに書き込もうとしたら1000スレ達成しちゃってました…)

454 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:27:51 ]
>>453
論理演算とビットシフトでググればわかりそうなもんだが…

&はand演算だから、左右どちらも1なら真=1になる。そうでなければ0になる。
例えば、11001100 & 11000000の結果は11000000になる。
これを右に6ビットシフトすれば00000011が得られる。

455 名前:デフォルトの名無しさん [2007/11/18(日) 09:38:37 ]
アドレスは、
11100010  上位ビット
01100011  
00100100  
11011100  下位ビット

のように格納されている

0ビットシフトさせてff = 11111111とand取れば下位ビットが出てくる
8ビットシフトさせてff = 11111111とand取れば下から二つ目が出てくる

456 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:42:04 ]
>>452
インライン展開するときに、Bが定数なら>451の方が効率がよくなる。

457 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:49:08 ]
効率とか言うレベルじゃなくて、単純に間違ってるだけだろw

458 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 10:03:48 ]
11000000 10101000 00000001 00000001 (3232235777 = 192.168.101.1)
11111111 00000000 00000000 00000000 (4278190080 = 0xff000000)
----------------------------------
11000000 00000000 00000000 00000000 (3221225472 = and後)
00000000 00000000 00000000 11000000 (192 = 24ビット右シフト後)

ビットシフトした後には0が入る。つまり1ビットシフトはx2か/2と同等。
これで理解できなければ諦めてくれ。

459 名前:453 mailto:sage [2007/11/18(日) 11:44:35 ]
なるほどっ!
すごくわかりやすい解説ありがとうございます。
ビットシフト自体は皆さんのご説明ですぐに理解できたのですが

「だからどうして@:エ、A:ウ・・・・・になるの?」というところが
なかなか理解できずレスに時間かかりました><

ただ少しばかり>>458さんに確認も含めた質問があるのですが
もしご覧になってたらお時間あればレスいただけませんか?
一行目の(192.168,101.1)というIPアドレスが最初はどこから出てきたのかさっぱり???だったのですが
これはわかりやすく例をあげるために適当?に書いてくれたのかな?と解釈しました。それでよろしいでしょうか?
あと、同じくカッコの中の3232235777や4278190080、3221225472という数字がイマイチピンとこないのですが
これはそれぞれ110000001010100000000010000001という2進法の数値を10進法で現してるものでしょうか?
(ググレ!でしたらすみません・・・ビット換算表はぐぐって今見てるのですが数字が大きすぎて・・・orz)

結局、最初の質問であった「どうして@:エA:ウ・・・になるのか?」という質問についてはやっと理解できました。
みなさんご親切にどうもありがとうございました^^




460 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:08:51 ]
>>459
ああ、スマン間違ってる。458の2進数表記だと192.168.1.1になるね。

IPアドレス自体は例として適当に書いただけ。
数字の部分は1バイトずつにそれぞれ192、168、1、1と当てはめたものを
4バイトのunsigned int型変数addressの10進数として表現したもの。

ちなみにこの処理は欲しい部分を切り取るのによく使われる方法で「マスク」等と呼ばれたりする。
まあ頑張ってや〜。

461 名前:デフォルトの名無しさん [2007/11/18(日) 12:51:48 ]
C言語によるリスト構造について質問させてください。

連結リストに末尾からデータを蓄えて指定した数字を削除し
削除後のリストを画面に表示するプログラムを作りたいのですが、
手元にある参考書を見たり、ネットで調べても分らなかったので
どなたかご教授お願いします。

462 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 12:58:05 ]
www.google.co.jp/search?q=%E3%81%94%E6%95%99%E6%8E%88
ネットで調べてわからなかったらここで聞いてもわからないんじゃない?

まずは指定した数字が何番目にあるか判定するプログラムを作ってみて、
それができたら一つ前のデータと一つ後ろのデータを連結するように書いてみればいいんじゃない?
宿題スレにいって丸投げするのが一番早いと思うけど。

463 名前:デフォルトの名無しさん [2007/11/18(日) 13:04:03 ]
>>462
ありがとうございます。宿題スレいってみます。

464 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:18:47 ]
www.uploda.org/uporg1118116.txt.html
こういうプログラムを作ったのですが
これに「平均点順に並び替えて表示する」という操作を加えたいのですがよくわかりません。
お願いします。

465 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:31:47 ]
>>464
そのプログラムを自分で作れるなら出来ると思うけな

466 名前:459 mailto:sage [2007/11/18(日) 17:32:31 ]
>>460さん、レスありがとうございました^^
マスクという処理方法については
名前だけ知ってたものの具体的にどういうものかまだ知りませんでした。
数字についてはまだピンときてないので引き続き2進数10進数16進数についても色々勉強してみます。


また何かわからない事ありましたら皆さんよろしくお願いします!

467 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:05:59 ]
>>465
よくわからないでございます

468 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:10:51 ]
>>467
普通のソートと同じ

469 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:12:50 ]
そうなの?
ちょっとやってみる。thx



470 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:40:46 ]
n番目のcellのポインタを呼び出す関数(*cell getcell(n)とか)でも作って、
バブルソートで比較しては入れ替えを繰り返せばいいんじゃないか。
for(i=0;i<MAX-1;i++)for(j=0;j<i;j++){
x=getcell(j);
y=getcell(j+1);
if(x->heikin > y->heikin){xとyの入れ替え}
}
cellごと入れ替えるにはもう一個前にもアクセスせんといかんから、
cell内の値だけ入れ替えるのが楽なのかなぁ。

471 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:46:08 ]
その変数がnanかそうでないかを判断するにはどうすればいいですか?

472 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 19:24:18 ]
有名なイディオムx != x(IEEE 754なら確実;あほなコンパイラでない限り)
C99のisnan
一部の独自関数_isnan

473 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 21:18:54 ]
NGワード:ご教授

474 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:36:19 ]
ANSI-Cについて質問です。

#include <stdio.h>
int main(int argc, char *argv[])
{
int x = 10;
printf("x=%d¥n", x);
char *s = "foo"; /** should be error? **/
printf("s=%s¥n", s);
return 0;
}

というコードを gcc -Wall -ansi hoge.c としてコンパイルすると何のエラーもなくコンパイルできてしまったんですけど、
Cでは文のあとに変数宣言できましたっけ?できなかったと思うのですが。
今までダミーのブロックを使ってたけど、いらないということでしょうか。
なおGCCは4.0.1です。


475 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:46:34 ]
>>474
従来のCではダメ
C99ならOK

476 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:21:09 ]
>>475
なるほど!さんくす
ちなみによく知られているコンパイラのうち、C99に対応していないものはありますか。
変数宣言が先頭じゃなくていいのは大変便利なのでぜひ使いたいんですけど、世の中の対応状況次第ではやめとこうと思います。
調べてみたらGCCはver3から対応しているみたいでした。今のGCCはver4が主流だと思うので、GCCは大丈夫ですね。

477 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:20:14 ]
途中宣言はキモイから使いたくないな。

478 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:24:47 ]
途中宣言ってわけわからなくなったりしないのかな?

479 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:32:23 ]
>>476
Visual C++は対応していない。
世間一般ではGCCのようなC99に対応しているCコンパイラのほうが珍しい。

ブロック途中での変数宣言はC++だと当然の機能なんだけどね。



480 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:41:20 ]
自己参照構造体がイミフ
最初に用意したポインタの示す値をNULL(ストッパーの役割)にして
んで次に用意したポインタの示す構造体の内部の自己参照ポインタには、その直前にあった構造体のアドレスを代入して。
繰り返すごとにどんどん構造体が繋がるってのはわかるんだけど、
例えば先頭から10個目の構造体内部を書き換えたい!って場合はどうすりゃいいの?
予め10個目ってわかるように変数で振っとけばいいの?

481 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:45:40 ]
>>480
構造体を先頭から辿るときに、いま何個目かわかるように、その辿った回数を数えとけばいい

482 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:48:20 ]
結局ソレが一番無難ですかー。
習ってたものでは一つ一つに入力の際でも、内部処理としての変数でもカウントアップさせるようなものを用意して、
その番号に直。
か、または、たどる時に何個かこっちが指定するって感じですか・・・。
難しそうだ('A`

483 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:10:58 ]
つまり、何番目にアクセスしたいという要求が頻繁にあるときには、
そういう線形リストは向いていない。配列が向いている。

484 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:11:35 ]
>>480
自己参照構造体というか、線形リストのことでしょ。

485 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:49:54 ]
なるほど・・・勉強になります。

486 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:50:37 ]
>>479
狭い世間なんだね。

487 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:55:07 ]
なんか妄想してる奴がいるな

488 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:56:02 ]
構造体のメンバのアドレスって構造体の先頭のアドレスから
求められるものなの?

489 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:56:54 ]
>>478
途中宣言のほうが格段に読みやすい。



490 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:00:33 ]
関数の長さによるだろ。

491 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:03:41 ]
関数の長さによらず、途中宣言のほうが読みやすい。

492 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:10:17 ]
こんばんは
大学の課題のことで質問です。
文字列をクイックソートで並ぶかえるプログラムなのですが、エラーが出来ます。
void your_sort(char *s[NS][WC]) {

int pivot;
int l_hold,r_hold;
int x=0;
int left = 0;
int right = WC-1;
l_hold = left;
r_hold = right;
pivot = (left+right)/2;
while(x<WC){

while(left < right)
{
while(strcmp(&s[x][right],&s[x][pivot])>0)
right--;
if(left =right)
{
s[x][left] = s[x][right];
left++;
}


493 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:12:09 ]
>>492
コンパイラの警告は無視しないできちんと対処しましょう。
もしそのコードで警告が出ないようなら、コンパイラのオプションを見直しましょう。
もし警告レベルを換えても警告が出ないようなら、そんなコンパイラは投げ捨てましょう。

494 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:12:23 ]
while((strcmp( &s[x][pivot],&s[x][left])<0) &&(left <right))
right--;
if(left != right)
{
s[x][left] = s[x][right];
left++;
}
while((strcmp( &s[x][pivot], &s[x][left])>0)&&(left < right))
left++;
if(left != right)
{
s[x][right] = s[x][left];
right--;

}
left = l_hold;
right = r_hold;
if(left < pivot)
your_sort(s[x][pivot-1]);
if(right > pivot)
your_sort(s[x]pivot+1,right);
}
x++;
}
エラー:cpp(39) : error C2664: 'strcmp' : 1 番目の引数を 'char **__w64 ' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
どこがおかしいのか教えて下さい

495 名前:宿題スレへ逝け mailto:sage [2007/11/20(火) 00:16:14 ]
>どこがおかしいのか教えて下さい
あんたの頭。

496 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:26:48 ]
>>474
今更っぽいけど、ちょい補足。
-ansiはc89相当だけど、gcc拡張機能として途中の宣言が出来るので何も言われない。
厳密にc89を適応したければ-pedanticか-pedantic-errorsを-ansiと一緒に指定する。

でもコレやると//でのコメントとかですら怒られるけどな。

497 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:32:57 ]
>>495
いつもならこういう煽りは見ていて腹立たしくなるが今回は同意してしまった。

498 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 08:15:27 ]
>>494
>どこがおかしいのか教えて下さい

strcmp の 1 番目の引数がおかしいって書いてあるじゃん

499 名前:デフォルトの名無しさん [2007/11/20(火) 15:25:31 ]
bool 型同士の比較演算の結果はどうなるのでしょうか?
true / false それぞれが何らかの整数に変換されてから
比較されるのでしょうか?



500 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:09:59 ]
>>499
trueは非0、falseは0としてコンパイラが評価する。

501 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:14:20 ]
>>499
C言語にbool型なんて無い。

502 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:40:31 ]
>>501
c99はcではないとでも?

503 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:50:14 ]
それ_Boolのtypedef。
1と0を保持する整数型で、比較演算では結局int型に格上げされるはず。

504 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:25:48 ]
文字列0.051/0.056/0.095/0.010 msから
2番目の要素、上の文字列だと0.056を文字列検索かけてうまくとる方法教えてください

505 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:28:52 ]
>>504
これでいいのかな?
#include <stdio.h>

int main(void){
char str[]="文字列0.051/0.056/0.095/0.010 msから";
char second_value[100];

sscanf(str, "%*[^/]/%[^/]", second_value);
puts(second_value);

return 0;
}

506 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:41:44 ]
>>505
ありがとう、うまくいきました。
私が書いた正規表現が間違ってたみたいです。


507 名前:476 mailto:sage [2007/11/20(火) 21:55:54 ]
>>479
遅れましたが、情報サンクスです。
VisualC++が対応していないというのは驚きですね。C++とみなしてコンパイルすればいいんだろうけど。
>>496
細かい情報ありがとう。-ansiで厳密なANSI準拠にならないというのはなんか間違ってる気がする。UIとして。


508 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 01:12:45 ]
>厳密なANSI準拠
ここに矛盾を感じない人には丁度いいのでは?

509 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:18:11 ]
もうテンプレに、このスレはC89用って書いとけよ



510 名前:デフォルトの名無しさん [2007/11/21(水) 10:26:43 ]
C90 じゃなくて?

511 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:30:37 ]
うん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<195KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef