C言語なら、俺に聞け! <12>
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001ウルトラハッカー 日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったらオレに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・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/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するようなヤツはこれでも買え。
これでわからない、救いがたいヤツはあきらめろ。
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419
・前スレ C言語なら、オレに聞け! <11>
http://pc.2ch.net/test/read.cgi/tech/1009499565/l50
0002丸投げ
NGNGぜんて?
0003デフォルトの名無しさん
NGNGユーザーが少なくなのはわかるが
言語仕様・処理系・書籍なんかの情報的に
枯れきってるはずなのに...
0004名無しさん@Emacs
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGvoidがいたときに伸びたのはある意味わかるんだが…
0007デフォルトの名無しさん
NGNGFAQも読めない厨房が多いから。
0008デフォルトの名無しさん
NGNG> 言語仕様・処理系・書籍なんかの情報的に
> 枯れきってるはずなのに...
え、C++よりもJavaよりもCの方が新しい言語仕様ですが?
何か勘違いしてません?
0009デフォルトの名無しさん
NGNGどーするとそー読めますか?
0010デフォルトの名無しさん
NGNG私の言いたいことは
Cの言語仕様は最近新しくなったし、
それに伴って処理系も新しくなるだろうし、
書籍も次々に新しい本が出版されているし、
Cは決して枯れきっているわけではないことが言いたいんですが、
何か反論ありますか?
0011名無しさん@Emacs
NGNG0012デフォルトの名無しさん
NGNGmalloc&freeでも延々やりたいのか?
0013デフォルトの名無しさん
NGNGああ、枯れきってないってことですか。ならわかります。
言語仕様が新しい、は、ま、いいでしょう。
0014デフォルトの名無しさん
NGNGまあ入門者が質問してくる内容も大体決まってるわけで。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG初心者はすっこんでろ。
0018
NGNGで作った配列はいつフリーするよ?
関数の中で使っちまうとフリーできないじゃん。
0019デフォルトの名無しさん
NGNGで作った配列はいつフリーするよ?
関数の中で使っちまうとフリーできないじゃん。
0020デフォルトの名無しさん
NGNG真性DQNハケーン!!!
一生VBでも使ってろ(w
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGC言語でも作れますか?
よろしくお願いします。
0023
NGNG関数の中で使わなきゃいいじゃん(W
0024デフォルトの名無しさん
NGNGいい感じに殺伐してるな(笑
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGレスありがとうございます。聞いたことのない言葉なのでちょっと今
検索してみたのですが、やはり一筋縄ではいかないようですね。
SMPEGについてもう少し詳しく勉強してみます。
ありがとうございました。
002718
NGNG教えてくれてもいいじゃないかぁ。
ぷんぷん!
0028デフォルトの名無しさん
NGNGこんな感じでやったら?
void func()
{
struct str {
char *p;
~ str(){ free(p) ;};
} s;
s.p= strdup("aaa") );
・・・この後 s.pを使う・・・
}
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG使い終わったらfree()しる!
0031デフォルトの名無しさん
NGNGいかのコードはなぜうまくいかないのでしょうか?
#include <stdio.h>
char *getStr()
{
char buf[] = "HELLO";
return buf;
}
int main(void)
{
char *str;
str = getStr();
printf("%s\n", str);
return (0);
}
0032デフォルトの名無しさん
NGNGFAQ you!!!
0033デフォルトの名無しさん
NGNG> いかのコードはなぜうまくいかないのでしょうか?
変数のスコープと寿命を良く理解していないから。
0034デフォルトの名無しさん
NGNGうまくいってます。
ただ、あなたの思った結果と違うだけです。
>>1のC FAQ 日本語訳 、良く読みましょう。
0035デフォルトの名無しさん
NGNGfgetsが挙動不審になります・・・
getsはscanfと一緒につかうのはだめだ ってことはわかっているのですが
fgetsはなにか かみ合わせのわるい関数があるのでしょうか
もちろんscanfは読み取っていません
fgets(str,100,stdin) のような感じで いくつかつかっているのですが
発動するところと それをシカトしてとおりすぎていってしまう
場所があるんです
if文の中にあるとかそういうことではなくて、
必ず発動する場所においてあるのですが・・・
003635
NGNG1度エンターキーを押すと なぜか連打されてるとみなされて
次にあるfgetsが作動しなかったみたいです
あるていどcscanfに変えたら作動するようになりました(fgetsとcscanf混在で)
なんでだろう・・・
0038デフォルトの名無しさん
NGNGなぜ、return "HELLO";にしないの?
003931
NGNGサンクスです。分かりました。
0041デフォルトの名無しさん
NGNG同じ現象を再現できる短いコードを載せると、見てるほうもわかりやすい。
004235
NGNGすこし長くなってしまいますが
ソースの一部分だけこぴぺしました
cscanfにして解決したのですが fgetsでやると どうにもうまくいかないです
関数自体は発動するのですが・・・
cscanf("%d",&select); ←ここをfgetsにすると inputs関数内の最初のfgetsをよみとらないです
if(select<1 || select>6){
printf("1から6までの数を入力してください。\n");
return; //強制的にもう一度メニューを出す。
}
switch(select){
case 1: inputs(0); //Yを入れてるのに特に意味はない 再帰でつかいたかっただけ。
break;
case 2: bookserch(0);
break;
case 3: nameserch(0);
break;
case 4: save();
break;
case 5: load();
break;
case 6: exit(0);
break;
}
}
char inputs(char temp){
char str[100],ch='0';
if(temp=='N'){return temp;} //再帰から抜ける。
//書籍名の入力 配列への代入
printf("書籍名を入力して下さい。100文字まで許容します\n");
fgets(str,100,stdin); ←これを読み取らない
if(str[strlen(str)-1]=='\n') str[strlen(str)-1]='\0'; //改行をNULLへ
strcpy(book[nowMAX][0],str);
//著者名の入力 配列への代入
printf("著者名を入力してください。同じく100文字まで許容します\n");
fgets(str,100,stdin); ←これは読み取る
0043デフォルトの名無しさん
NGNG原因はストリームに、ゴミが残ってるせいだと思うのですが、
見た感じだと、fgets()を連続して呼んでるだけなんで、
問題ないように思いますが...
環境がわからないのでなんともいえませんが、改行コードが
おかしくなってるとか、そういうことは無いですか?
0044デフォルトの名無しさん
NGNGbookが char book[BOOK_MAX][MAX_BOONAME_LEN]; とかだとしたら
strcpy(book[nowMAX][0],str);
↓
strcpy(book[nowMAX],str);
それとも、fgets()で入力待ち状態にさえならないってことですかー?
FreeBSDで試しましたが、上のとこ直したら、ちゃんとうごいていますよー
0045デフォルトの名無しさん
NGNGstring[strlen(string) - 1] = '\0';
004644
NGNGあ、char book[MAX_BOOK][MAX_ELEMENTS][MAX_LEN]; で
book[本の番号][0] が書名
book[本の番号][1] が著者名
でしょうか?だとしたら漏れの勘違い。スマソ。
0047デフォルトの名無しさん
NGNG>>42はそうなってるんじゃ?
>>42
cscanf()のとこをfgets()に置き換えた例をキボン。
0048デフォルトの名無しさん
NGNG「読み込まない」ってのはどうやって確認した?
0049yacc聞いてもいいですか
NGNGexpr : expr1 expr2
と書いて、expr2の処理を先に実行させる方法があるでしょうか。
その結果をexpr1の処理の中で使いたいんです。
0050C初心者
NGNGBASICのコマンド(予約語)をCの関数にして
おけばいいとふと思ったのですが根本的に間
違っているような気もします.いかがなもの
でしょうか.
0051初心モノ
NGNGありますか?綺麗に書くコツみたいなものがしりたいのですが,参考になる図書,Webでも
結構ですので,教えてください.よろしくお願いします.
0052デフォルトの名無しさん
NGNG間違ってはいないけど大変そうだね。
005335
NGNGいろいろ回答ありがとうございます
まず変数事態は
book[nowMAX][0]書籍名
book[nowMAX][1]書籍名の
配列テーブルです
それで fgetsは入力待ち状態にもなりません
cprintfをfgetsに置き換えて・・・っていうのは
他でやってるのと同じように
fgetsでまず文字配列に 代入して
改行コードNULL文字に変えて そのあとatoiで整数にしてselectに代入
という手順を踏んでます
で、最初に関数に飛んだときは 1つめのfgetsが発動しなくて
2つめのfgetsは発動するんです。
そして その関数の中で再帰して同じ関数を呼んでいるのですが
その再帰した関数では1つ目も2つ目も正常に働くんです
いったい 最初にfgetsがはたらかないのは なにが原因なのかと・・・
005435
NGNG43-48>>でした すいません タイプみすです(汗
005535
NGNG005635
NGNGbook[nowMAX][0]書籍名
book[nowMAX][1]著者名
の配列テーブルです
0057デフォルトの名無しさん
NGNG機械的にコンバートするツール作るのなら
そんな風なしくみにすると楽だろうけど
手でやるならやってるうちに馬鹿らしくなってすぐ手抜き
(ていうか普通の移植)するだろうね。
0058デフォルトの名無しさん
NGNGデバッガは使える?
失敗するfgets()のあたりで止めて、入力される値とリターン値を確認してみそ。
ちなみに、うちの環境(VC6)で、fgets()を続けてコールしても、普通に動いてました。
char s[100];
printf("入力して下さい。\n");
fgets(s, sizeof s, stdin);
printf("入力して下さい。\n");
fgets(s, sizeof s, stdin);
printf("%s\n", s);
0059デフォルトの名無しさん
NGNG何のために書き直すの?
0060仕様書無しさん
NGNG根本的に間違いです。
同じ名前の単語を作っても、文法が違うんだから
なにも解決しないよ。
(´−`).。oO( BASIC言語のインタプリタを作っちゃうっていうなら、いいけど。 )
006147
NGNGcscanf()を置き換えたfgets()なんだけど、1文字入力だからって、
fgets(buf,2,stdin);
とかしてないよねー?
(第2引数の値をいくつにしたのか知りたい)
0063デフォルトの名無しさん
NGNG代用できるフリーのBASICってないの?
OSのバージョンアップでF-BASICが使えなくなりました、って
ありそうな感じ。
006435
NGNGデバッガつかえないんです・・・
VC++は本当にエディタとコンパイラしかつかってなくて・・・
VC++自体の勉強ももう少ししなければならないですね
まだC言語をやり始めて半月なので 超初心者なんです
ですが とっとと初心者脱出のためにがんばります
>>61
いえ あとで選択肢を増やそうとおもっていたので
第二引数の値は10にしてありました
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNGBasic→Visual Basicは楽かもしれんが、
Basic→Delphi(Object Pascal)はBasic→Cと大差ないと思われ
0067デフォルトの名無しさん
NGNGCのランタイムはwchat_tが1つにつき1文字としているようなのですが、
UNICODE関係を説明したページによると
UTF-16は2バイト、または4バイトで1文字を表現するとなっていました。
今までwchat_tはUTF-16の文字のことだと思っていたのですが、
そうなると、wchat_tが1つにつき1文字とは限らないということになってしまいます。
4バイトで1文字を表している場合、どのように処理すればよいのでしょうか。
それとももしかしてwchat_t!=UTF-16文字なのでしょうか。
0068デフォルトの名無しさん
NGNGwchar_tがUnicodeとは気マット欄。
0069デフォルトの名無しさん
NGNG勝手にUnicode系列と仮定してはいけません。
007067
NGNGそうだったんですか・・・。
Windows&VC++上でとりあえずいけてたのでそう思っていたのですが、違う可能性もあるのですね。
ありがとうございました、大変勉強になりました!
0071デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGwchar_tに何が入るかはロケール依存だよ。
たまたまWindowsではどのロケールでもUnicodeなだけ。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGCではintでもサイズは処理系依存だからな
0076私は31ではありませんが・・・
NGNG気になってしょうがないので、どなたか教えてください。
0077デフォルトの名無しさん
NGNGローカル変数buf[]はgetStr()から戻った時点で
スタックから消滅するからだ。
ちなみに
char buf[] = "HELLO";
を
char *buf = "HELLO";
にすればうまくいくだろう。
0078デフォルトの名無しさん
NGNG[]と""
0079仕様書無しさん
NGNGていうか、戻り値はポインタ型だろ。
で、ポインタが参照している先を見に行くと、
(定義されていたはずの文字列データはスコープが期限切れになって
蒸発しちゃったので)なにも見えなくて当然。
0080デフォルトの名無しさん
NGNGこれの他には
用は値が残ってりゃいいのだから
static char buf[]="HELLO";
でも良い。
008176
NGNGなるほど、上手く動きました。
ありがとうございました。
つまり、たしかにbuf[]の先頭アドレスをmainへ渡してはいるが、
mainに戻った時点で既にスタックが消え去ってしまっている。
ということですね?
008276
NGNGみなさんありがとうございます。
008376
NGNG勉強になりました。ありがとうございます。
0084デフォルトの名無しさん
NGNGストリームに\0が残っているので、
1回目のscanfと2回目のscanfの間にはダミー変数に
\0を読ませなければならない、と聞きましたが、
以下のコードは思った通り(?)に動きます。
ご教授頂けませんか?
ちなみにコンパイラはgcc、OSはFreeBSDです。
#include <stdio.h>
int
main(void)
{
int n1,n2;
printf("Please enter a number:\n");
scanf("%d",&n1);
printf("Please enter the other number:\n");
scanf("%d",&n2);
printf("Your entered number are: %d %d\n",n1,n2);
return 0;
}
0085デフォルトの名無しさん
NGNG一回目の入力値に数値でない入力をするとどうなる?
二回目の入力値をすっ飛ばさないか?
それは君の「思った通りの動作」なのか?
008684
NGNGレスありがとうございます。
2回目の入力をchar型の変数を受け付けるようにすると、
入力をすっ飛ばしました
(こうなることを期待していた、というかそう習いました)。
でもなんで2回目の入力をint型で受け付けたら
入力をすっ飛ばさないのですか?
0087名無しさん
NGNGVisual StudioのVisual C++でグラフィックのプログラムを
本を見ながら作成したのですが、
コンパイルとすると、#include<graph.h>のヘッダーファイルが
開けないというメッセージが出るのですがどうすればいいのでしょうか?
0088デフォルトの名無しさん
NGNG俺つかったことねーや
0089デフォルトの名無しさん
NGNGgraph.hがないからでは?
Cの標準ライブラリにgraph.hはない。
したがってそれは拡張ライブラリであって、すべての環境に
存在しているわけではない。
0090名無しさん
NGNGなるほど。
graph.hがなしでグラフィック処理はできるのですか?
0091デフォルトの名無しさん
NGNGできる。
やりかたは、いろいろある。
VCのマニュアルや、マイクロソフトのホームページや
市販の参考書をみればいくらでも。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGbcc32で試してみたけど
Please enter a number:
hoge ← これを入力
Please enter the other number:
Your entered number are: 0 0
ってならない?
期待した動作って
Please enter a number:
hoge ← これを入力
Please enter the other number:
10 ← ここでの入力が可能
Your entered number are: 0 10
ではないの?
009484
NGNG習った事を試してみたかったので、84のプログラムで、
Please enter a number:
hoge ← これを入力
Please enter the other number:
Your entered number are: 0 0
となって欲しかったんですが、
Please enter a number:
0 ← これを入力
Please enter the other number:
10 ← ここでの入力が可能
Your entered number are: 0 10
となったからびっくりしたんです。
どういう事なんでしょう?
0095名無しさん
NGNG学校にあった、初心者用のCのテキストです
0096デフォルトの名無しさん
NGNGわからない。
ちなみにSunOS+gccでも
> Please enter a number:
> hoge ← これを入力
> Please enter the other number:
> Your entered number are: 0 0
となる
FreeBSDは今手元にないので確認できない
009784
NGNGてことはそんなに私がすごい勘違いをしているわけではないのですね。
ちょっと安心しました。
みなさんいろいろありがとうございました。
0098デフォルトの名無しさん
NGNGPlease enter a number:
0
Please enter the other number:
1
Your entered number are: 0 1
$ ./a.out
Please enter a number:
hoge
Please enter the other number:
Your entered number are: 134518476 134518256
>>84
おわかりか?
0099デフォルトの名無しさん
NGNG$ ./a.out
Please enter a number:
12 34
Please enter the other number:
Your entered number are: 12 34
$ ./a.out
Please enter a number:
23hoge
Please enter the other number:
Your entered number are: 23 134518256
0100デフォルトの名無しさん
NGNG010184
NGNGそれは単にint型の変数にcharが入るからじゃないんですか?
0102デフォルトの名無しさん
NGNG入力が不正かどうか判断できないような関数なんか使うなってことじゃねぇの?
0103デフォルトの名無しさん
NGNG自力で文字コードチェックしる!
0104デフォルトの名無しさん
NGNG.o は生成されるんだけど。
どーすればいいか、おせーて。
HPUXなり。
0105デフォルトの名無しさん
NGNG数学ライブラリをリンクしろ。C FAQ とか、処理系のマニュアル読んだか?
0106104
NGNGゴメソ
数学ライブラリってなんすか。環境変数でリンクするんすか。
Win の開発しかやったことないのに、
いきなり HPUX での prj に放り込まれて、環境面が全然分からんすよ。
010884
NGNGなるほど。そういうことですか。
どうやったら文字コードチェックしたらいいかわかりませんが調べてみます。
でもどっちも数値を入れたら\0がストリームに残っていない(入力が飛ばされないことでわかる)、
のはなぜだかまだわからないんですが。。。
0109デフォルトの名無しさん
NGNG> Win の開発しかやったことないのに、
Win32 でも user32.lib とか dxguid.lib とかリンクするでしょ。
VC6 だと数学関係のライブラリは CRT (libc.lib, libcmt.lib, msvcrt.lib) に入ってるけど、
UNIX だと libc とは別のライブラリに入ってることが多い。だから明示的にリンクする
必要がある、って話。
具体的にどうするのかは、使ってるコンパイラ/リンカ依存なんで、分からん。マニュ
アル読んでくれ、としか言いようがない。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG関数の中に入ろうとすると変な画面が出てきて意味不明です。
一体、何なんでしょう?他の関数には入れるのに。
どうしたもんでしょうか?
0113デフォルトの名無しさん
NGNG全ファイルを、デバッグ情報つきでコンパイルしてる?
0114デフォルトの名無しさん
NGNG0115112
NGNG0116デフォルトの名無しさん
NGNG質問するなら、使ってる開発環境とバージョンぐらい書け。
0117112
NGNG0118デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGそれってもしかして、Microsoft Visual C++ Ver6.0 ですか?
0121コナソ
NGNG0122デフォルトの名無しさん
NGNGカナ?
0123デフォルトの名無しさん
NGNGこれにはちゃんとエラー行まで書いてあるし、
当該行にはたいてい理由も書いてあるが、
まぁ英語の読めない>>112には変な画面が出てきて意味不明なんだろうな。
0124デフォルトの名無しさん
NGNG環境によって、浮動小数点がIEEE754準拠になったり
ならなかったりするみたいだけど‥
0125デフォルトの名無しさん
NGNGreturn strdup("unko");
}
void func2(char *_char){
strcpy(_char,"unko");
}
func1 と func2って、どっちがよろしいと思われてるんだ。
教えてみろ!
0126デフォルトの名無しさん
NGNG訳分からん…
全然違う動作する関数並べられてもな…
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGつーか、char *_charってあたりで厨房大確定。
0129デフォルトの名無しさん
NGNGどっちでもいいよ。
0130125
NGNGC初心者厨房なので違いがわからないのですが
よろしければ説明していただけませんか?
関数内で作り出した文字列を取得したいときに
どっちの関数を使うと、効率的にとか、常識的にとかイイのでしょうか?
0131デフォルトの名無しさん
NGNGfunc1() は、戻り値を“忘れずに”free() しなきゃいけない。その代わり、
文字列サイズが何バイトだろうと受け取れる。
func2() は逆。戻り値は呼び出し元が責任持って確保しておかなきゃだけど
後処理はいらない。
状況によるだろうけど、まぁお好きなやり方で。
0132デフォルトの名無しさん
NGNGとりあえず、func2() は、恐くて使えない。
main() {
char buf[2];
func2(buf);
}
void func2(char *_char){
strcpy(_char,"unko");
}
ってしちゃったらどーしてくれるんだ!
せめてfunc2(char *buf,int buflen);にしてホスイ。
んで、func1()は、「必ず」メモリを確保されてしまうけど、
func2()は呼び出す側の都合で新たにmalloc()してから
呼び出すか、既に確保してあるメモリを使いまわすか
選べるので、漏れならfunc2()にしとく。
でも、あんまり気にしなくてもいいと思う。
とここまで書いたら、>>131が既に答えていた・・・
0133125
NGNG>>131
サンクスです。
なるほど、
int func2(char *buf,int buflen){
.......
strcpy(buf,"unko");
}
にします。
WindowsのAPIがこういう感じのばっかなので。
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG{
while(・・・) {
if(〜) return;
}
}
whileの中で returnするのってなんか美しくないような気がする...
っていうか、安全なんですか?
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG見たところ π/2以上の値も出てきてるみたいだけど、
負の値も出てきてるから、ちゃんと決まってるんだろうか?
0139
NGNG0140切実
NGNGこいつは『これ、ゴマキのケー番』などと言って私の携帯番号を流しました。本物ハッカー様方こらしめてほしいです。
もしくはこいつのこれ以上の個人情報が知りたいです。メールください。お願いします。
ニッポン777@ホットメールドットコムです。
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG東急CATVに電話しろ
0143デフォルトの名無しさん
NGNGちょっと俺のハッキングテクノロジーで
いたいめにあわせておいたよ、
もう二度としませんっていってた
0144デフォルトの名無しさん
NGNG前に(int)をつけるだけじゃダメなんでしょうか?
全部0.000・・・ってなってしまうんですけど・・・。
0145デフォルトの名無しさん
NGNGdouble*からint*は逝ってよし。
それと、intに直した話なのに、
表示が0.000というのは理解できん。
コード出せ、コード。
0146デフォルトの名無しさん
NGNGモチベーション低いのはどうしようもありません。
0147デフォルトの名無しさん
NGNGdouble型の変数にintにキャストした値を入れていないか?
0148デフォルトの名無しさん
NGNG整数型の値をprintfで実数型として(%f)表示しようとするとそうなるけど、
まさかそんなことしていないよね?
0149デフォルトの名無しさん
NGNG0150デフォルトのななし
NGNGデータを保存していたのですが、
データが見られたくないのでバイナリか何かで保存しようと思っています。
その場合どのように直すのがセオリーでしょうか?
0151デフォルトの名無しさん
NGNGハッキングテクノロジーとかってほざいているやつ、ケーサツにでも突き出さないとな!
0152デフォルトの名無しさん
NGNGバイナリの形式をどうするかって話なら、DES か何かの適当な暗号アルゴリズム
を使って暗号化しとけば。(ソースは google 行けば見つかる)
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGちがう
中身は一緒
0157高校生
NGNG仮想関数テーブルとかリンカの修飾方法とかぜんぜんちゃうやん。
0158名無しさん
NGNG「ゴルァ」
http://www.j-wave.co.jp/special/livingintokyo/morley/cgi-bin/images/img20020128211936.wav
「ゴッゴゴゴッゴッ、ゴルァ」
http://www.j-wave.co.jp/special/livingintokyo/morley/cgi-bin/images/img20020128212016.wav
0159デフォルトの名無しさん
NGNG反論も多い言い方だろうけど、同意しとこ。
C言語にやたらと多機能なプリプロセッサを被せた物≒C++
0160デフォルトの名無しさん
NGNGワラタ
不可逆暗号でバイナリ化したら、データファイルの意味が・・・
0161デフォルトの名無しさん
NGNGDESをハッシュの一種と思ってる香具師ハッケーン
0162_
NGNGと思ったら俺がDQNだった。逝ってこよう
0163160
NGNGうお、指摘されて初めて知った・・・
↓読んで出直してきます。
http://www-6.ibm.com/jp/developerworks/security/010316/j_s-rijn.html
ワラテスマソ>>152
0164デフォルトの名無しさん
NGNGDESでもハッシュできるけど?
0165ん?
NGNG0166デフォルトの名無しさん
NGNG使えるね。
0167デフォルトの名無しさん
NGNGCRC はハッシュになるけど
0168デフォルトの名無しさん
NGNGどういうときに使うんだ?
ループに入る前に宣言しちゃえばいいんじゃないの?
0169デフォルトの名無しさん
NGNG関数呼び出しをまたいで状態を保持しておきたいとき。
0170デフォルトのななし
NGNGやたら読みづらいです
#defineマクロだけ展開してくれるツールみたいなものってありますか?
厨房ですまんです(;´Д`)
0171デフォルトの名無しさん
NGNGそのライブラリが参照しているリンクのエラーを
コンパイル時に確かめることは出来ますか?
それともそのライブラリを使ったプログラムを
作りコンパイルして確かめるしかないのでしょうか?
コンパイラはgccです。よろしくお願いします。
0172デフォルトの名無しさん
NGNGていうか、プリプロセッサとかテキストエディタで
できないと思っているのか?
0173デフォルトの名無しさん
NGNGリンクが動的ならプログラムを実行しない限りエラーするかどうかはわからない。
objdump や ldd 使って自分の環境ではエラーしないことは確かめられるかもしれんが。
0174170
NGNG出来るんですか!?
コンパイラのオプションを調べたけどそれらしいものが無かったです。
テキストエディタで手動で置換すれば出来るだろうけど・・
そういえば今まで気にしたこと無かったけど
「プリプロセッサ」ってなんだろう??????
0175171
NGNGそうですか。
libtoolとか関係ありそうなのでちょっと調べてみます。
ありがとうございました。
0176デフォルトの名無しさん
NGNGM-x c-macro-expand
0177デフォルトの名無しさん
NGNG読むほうにソース読み力が無い場合とあるからなぁ…
0178デフォルトの名無しさん
NGNGhttp://sources.redhat.com/autobook/autobook/autobook_toc.html
http://www.iecc.com/linker/
0179171
NGNGmakefileすら下手なの書くのが精一杯なのにこれ以上ツールを
覚えるのはしんどい・・・
でも#ifdefで分けてやるのもちょっとめんどくさくなってきました。
上の二つを覚えると楽できるんでしょうか。
0180デフォルトの名無しさん
NGNG私も知りたい。特にautomakeやautoconfの実践的な本
makeはオライリーのmakeの本で覚えた。
0181171
NGNGhttp://shimaki.hoops.ne.jp/autoconf/book1.html
今ここを見ていろいろといじってるところなんですが、
ちょっと気合入れて覚えないとだめですね。
ヘタレなおれは慣れるまでに2週間ぐらいかかりそうw。
0182171
NGNGどうでしょうか?
automake,autoconf,libtoolの三本立てで。
0183デフォルトの名無しさん
NGNGむしろ歓迎。
0184170
NGNGemacs使ってなくて
Windowsなんですよ。
Win環境で何かご存知使えるものは無いですか?
秀丸のマクロをあたったんだけど無いみたいです。
0185デフォルトの名無しさん
NGNGgccに展開させれば?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG昔この板で立ってた気がするけど、あんまり盛りあがらなかった様な。
実際使ってるやつのリサーチとかしてみると良いと思われ。
大抵そういうやつは2ch見てないんだな・・・
0188デフォルトの名無しさん
NGNGLPBYTE lpData=new BYTE[sz];
このnewで不正な処理が発生するのですが、
考えられる原因は何がありますでしょか。
0189デフォルトの名無しさん
NGNGoperator size_t()内で強制終了するようなことをしてる・・・とか、まさか無いよね?
0190デフォルトの名無しさん
NGNG2000/XPでは大丈夫なのですが、9xでは全く駄目な様です。
0191デフォルトの名無しさん
NGNG0192電波5号
NGNGしんどい
なんでも聞けて
怒らない人いないかなぁ・・・・・
0193デフォルトの名無しさん
NGNGMr.Google。
0194デフォルトの名無しさん
NGNGどの段階で破壊されているのか調べる術はありますでしょか?
0195デフォルトの名無しさん
NGNGvc++なら、_heapchkをばらまく。
いずれにせよ、銀の弾丸は存在しない。
運が良ければ、BoundsChecker、Purifyなどの
境界チェッカ等が役に立つかも。
0196デフォルトの名無しさん
NGNGあ。。。その様な便利な関数が用意されていたんですね。。
問題が出る以前の所で確保しても逝く事が解ったので、
LogPut("********00..");
lpData=new BYTE[4096]; delete lpData
LogPut("ok\r\n");
をあらゆる所にばら蒔いて、なんとか発見・駆除出来ました。
有り難うございました m(_ _)m
0197デフォルトの名無しさん
NGNG同意。2chだと技術的に面白くても
厨房の食いつきが悪そうなスレはどんどん下がっていく。
http://www.ainet.or.jp/~inoue/gnu/autoconf.html
ここ読んで、そのあとに一冊だけあるまともな本を読めばいい。
あとはソースに必ず入ってるconfigure.in,Makefiel.amを
読みまくり、パクル。
0198デフォルトの名無しさん
NGNGわからないことがあったとき調べるんじゃなくて、
時間を作って通して読んどけ。
0199デフォルトの名無しさん
NGNG大学の先輩で、レポートの下調べも彼女にやらせて
口述で報告させてから自分で書く、とかやってる人が居て。ヽ(;´д`)ノ
首尾よく卒業して、就職して。
数年後、リコーン ヽ(´Д`)ノ
∴ うざうざな輩は嫌がられるらしい。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGあれはなんで何ですか?
char argv[]では配列のサイズが指定されていないから駄目なんですか?
0202デフォルトの名無しさん
NGNG配列と、ポインタの配列の違いは解る?
0203201
NGNG[]の方が*より優先順位が高いから
char *argv[]は配列に対するポインタじゃないんですか?
じゃあchar *argvでもいいような気がするんですが...
0204デフォルトの名無しさん
NGNGダメです。
だからその方法で受け取るととても不安定になります。
ウインドウズはそうやってC言語で作られている部分があるために
フリーズしやすく不安定です。
Linuxではvoid main()で作ってあるので頑丈です。
0205デフォルトの名無しさん
NGNG> char *argv[]は配列に対するポインタじゃないんですか
ポインタの配列です。
>>204
わけわからん事書くな。
0206デフォルトの名無しさん
NGNGなら argv[0] は文字列。 argv[1] は文字列。argv[2] は文字列…。
char* argv; じゃ全然ちゃうだろ。
0207201
NGNGレスありがとうございます。
確かにchar *argvじゃ駄目なことはわかりました。
だけどchar *argv[]がポインタの配列てのがよくわかりません。
ポインタの配列とは配列の要素がポインタであるものですよね?
じゃあ、argv[0]もargv[1]もポインタですか?
0208デフォルトの名無しさん
NGNGtypedef char* pchar;
pchar argv[];
こう書けば分かるか?
pchar = char*、charのポインタ
argv[] = pchar型の配列
0209デフォルトの名無しさん
NGNGひょっとして char * はポインタじゃないと思ってます?
0210201
NGNGうわっ!本当にありがとうございます。
優先順位てそういうことだったんですね。
やっとわかりました。
すっごいすっきりしました。
ありがとうございました。
0211デフォルトの名無しさん
NGNGCで制御系プログラムを組むのだが、
レジスタに値をセットするとき、
下記の(1)の様に関数にすると処理が遅くなってしまう。
SetRegister(Address, Data); ----- (1)
仕方なく、
Address = 0xXXXX; ----- (2)
*Address = Data;
とするのだが、見やすくするために、
出来れば(2)をマクロにして1行で書きたい。
これって可能?
基本的な質問で申し訳ない。
0212デフォルトの名無しさん
NGNG0213211
NGNG#define SetRegister(ADDR, DATA) Address=ADDR;*Address=DATA;
数年前、ARMのCコンパイラで動かしたらうまく行かなかったんだが、
なぜかBCCでは動いとる。
0214デフォルトの名無しさん
NGNG#define SetRegB(ADDR,DATA) *((unsigned char *)ADDR) = DATA
#define SetRegW(ADDR,DATA) *((unsigned short *)ADDR) = DATA
こにゃにゃかんじで。
0215
NGNGなんて書いてたころが懐かしいな。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218213
NGNGな〜るほど、こう書けば良いのか。
どうもありがとう。
0219デフォルトの名無しさん
NGNGワードに揃えると聞きましたが、要するに2バイト単位で配置されるのですか?
0220デフォルトの名無しさん
NGNG処理系依存だ。
コンパイラスウィッチで変更できる処理系もある。
0221デフォルトの名無しさん
NGNG> 要するに2バイト単位で配置されるのですか?
16bitマシンの時代はそういう配置が多かったな...
> C言語で典型的な構造体のメモリ配置を教えてください。
で、知ってどうするつもり?
0222デフォルトの名無しさん
NGNG>で、知ってどうするつもり?
気になって仕方が無いのです。
書籍を読んでも構造体のメモリ配置について詳しく説明してるのには一度も出会った事は無いので。
0223デフォルトの名無しさん
NGNG勉強しろ
http://www.pro.or.jp/~fuji/mybooks/cpro/cpro.4.3.1.html
0224デフォルトの名無しさん
NGNG> 書籍を読んでも構造体のメモリ配置について詳しく説明してるのには
> 一度も出会った事は無いので。
Cプログラミング専門課程
4.3 アラインメントを読んで見ろ
http://www.pro.or.jp/~fuji/mybooks/cpro/index.html
0225デフォルトの名無しさん
NGNGメモリ配置について理解したいなら、C 言語ではなくて、その背景にあるプロセッサ
アーキテクチャについて調べる必要がある。Intel や MIPS あたりは Web で資料を
公開してるから、拾ってきて読んでみなよ。
0226224
NGNG0227デフォルトの名無しさん
NGNGこれからそれぞれ巡って勉強したいと思います。
0228デフォルトの名無しさん
NGNG「アライメント」などと書くバカがいるが,
「アラインメント」だ。
0229こんな本を買った
NGNGこれ、どうですか?
0230デフォルトの名無しさん
NGNGいい本ですよ。
0231こんな本を買った
NGNG辞書的な使い方ではなく、本の先頭から順にこなしていく使い方の方がいいですか?
0232デフォルトの名無しさん
NGNG0233こんな本を買った
NGNGそう言わずに教えてくれよ。
0234デフォルトの名無しさん
NGNGどう見ても「全部読む」タイプの本だろ。それは。
0235デフォルトの名無しさん
NGNGアライメント 26,900件
アラインメント 3,260件
正直ネイティブ発音に拘る奴って馬鹿にしか見えん
0236デフォルトの名無しさん
NGNGnValue = *((int*)p);
こう書くしかないでしょうか?なんかもっと簡単な記述ありましたっけ?
0237デフォルトの名無しさん
NGNG馬鹿
0238236
NGNG正: int*
0239デフォルトの名無しさん
NGNGもっとめんどい?
0240ギリギリのところに立ってる名無し
NGNGどなたか方針のヒントをください。
0241デフォルトの名無しさん
NGNGそれはポータビリティーが無いだろ。
0242デフォルトの名無しさん
NGNG仕様は?
0243デフォルトの名無しさん
NGNGどういう環境で仕様の電卓を作りたいか説明出来る?
0244デフォルトの名無しさん
NGNG確かに拘り始めたら、ファイルランチャーとか言えんくなるなw
0245デフォルトの名無しさん
NGNGそれで充分簡単じゃん
0246デフォルトの名無しさん
NGNG「ストレージ」モナー。
0247デフォルトの名無しさん
NGNG> 方針のヒントをください。
yacc lexで検索
または
int main(void){ return system("bc"); }
0248デフォルトの名無しさん
NGNG一応、括弧を一つ外せる。
nValue = *(int*)p;
>>241
ポータビリティのなさでは>>236も>>239も似たようなものだと思うけど。
まあ普通は>>239なんてことはやらんけど。
0249デフォルトの名無しさん
NGNGdata の発音は、ネイティブでもまちがってる率高いらしいしな。
0250デフォルトの名無しさん
NGNGGUI?
0252デフォルトの名無しさん
NGNG> ポータビリティのなさでは>>236も>>239も似たようなものだと思うけど。
ぜんぜん違う。
0253248
NGNGう…そうなんだ。
>>236から>>239への置き換えがまずいケースが思い付かなかったんだ。
逆がダメなのは分かるんだけど。
厨な質問で済まないんだけど、どんな場合だとまずいか教えてくれない?
0254デフォルトの名無しさん
NGNG電卓といってるから、演算子の結合順位無視の逐次計算で構わないんじゃ
ないの。
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG> 演算子の結合順位無視
1+2*3=9になるの?そんな厨房電卓は嫌
0257デフォルトの名無しさん
NGNG仕様、逆ポーランドでいいのかなぁ?
(´-`).。oO(正直、240はギリギリすぎる)
0258デフォルトの 257 名無しさん
NGNG0259236
NGNGそれは面倒くさい…というか、吐かれるコードが違ってくる気が…。
>>248
あ、カッコ外せますね。
>>253
こんな質問するくらいなので詳しくないんですけど、
memcpy の実装によって全然吐かれるコードが違うのと 16ビット8086だと
アドレスがリニアじゃないとか、色々あるような気がします。
やっぱこんな感じに書くしかないんですねぇ…。
ありがとうございました。
0260デフォルトのななしさん
NGNG0261デフォルトの名無しさん
NGNGopencdtrayという関数(?)を使うのは分かったのですが、
googleで調べても、15件くらいしかヒットしないし、内容は
関係ないものが殆どだし・・・。
よろしくお願いします。
026289454
NGNG`ヽ、"'' - ._ _,;:-‐ ''"/
\ ~'' ー ,,__ _ ,,.:::-‐ ''" "~ /
ヽ、 , ヾ'ヽ、__ ./'i~ /
\ |! 丶、\"ーェ''7 / / _..,,ノ
`ヽi`ー-;,___"''ゝー<''~ ,,、-'"~i-ー''"~
、_冫=-:::::::::::~"''"⌒ ̄ ァヽ,.へ,
`ー,-''~::::/::::::: ::::::::::::`>'´,/、丶
/ /:ァ'::::::::,i::::::、:..::: :::....ヽィ'\ノ::::. \
、_, -/ .:ァ' .:シ ::...::::/!| ::::::|'、::::l__::i:::::;i :::::}:::::: `ヽ、,____,
、_ニ=‐{ .:ノ! i, .:{ァ'"メ.l{l ::::| 'l''"}::`|.:::::} :::ト、:: "''==ニ
. `ー-/{./ { |:{.:{ヾツ_..,l,{....:::|. |' `ヽハ:ノ:::l::::|:::ヽ、 `ヾ、
ァ' /'.リ l :l|::ヾ〉.,ィ⌒i `ー'' ' `‐リ::ノ::ノ:::::i、ヽ 丶ト、
. // .:/ .:ハ|:iハi、'、ヾ゚ツ ''"¨ヾ,シ:/|:::: ハ:::}:..、.:: ::l )
// / .:,' .:/:l .l:;:;リ}::} ひ、、 ` 、、-'ソ /::'ノ'ハ::::}::::}:::ノリ
リ { .:/! :{ヽト'^^'リ :` 、_⊂ニつ '' lハ|ノ:ノ_ V ル'/
l. ::{ `ヾ ‘ .-ーレルハ''lー-‐'"|リルy⌒~ /
. ヽ| /´ /#ハ ,.:-‐l#l~ /
{ ,: ./#/ ' .|.#|.. ..ァ'
l .:i/#/ |#.{. ,;'
l ァ'-‐‐-:::;',.__ l.#|/
i ./ ' ~⌒`ヾ、}'
| .{ :::...... }
j .ヾ、_::::::,,:::::::-‐ .....::ノ
l {=-‐-::;;_ ュ `::;;__;;;シ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
http://www.puchiwara.com/hacking/
やっぱコレだねェ〜♪
0263デフォルトの名無しさん
NGNGchar **p;
sizeof(**p);<- 1
*p;<- 0
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNGアドレスを格納する変数のことです。
0266デフォルトの名無しさん
NGNGmain()
{
int a[5]={1,2,3,4,5};
int *p;
int i;
p=a;
for(i=0; i<5; i++)
{
printf("%d",*(p+i));
}
}
で、実行結果が「12345」だと書いてあるのですが、仕組みがわかりません。。
printfの中の「i」は0〜4になるのはわかりますが
同じくprintf中の「p」は0なんですか?
0だから「*(p+i)」が0+0でint a[5]={1,2,3,4,5};の中の「1」が表示されるんですか?
そうすると、次は1+1で「2」が表示されますが、
その次が2+2で「4」が表示されるってことになります。そうすると間違いです。
悩んでいます。どなたか説明してもらえませんか?
0267デフォルトの名無しさん
NGNG診断証
診断の結果、あなたは相当の重症であることが判明しました。
根本的に脳に欠陥があります。
むりにプログラミングなどしようとせずに、おうちでゲームでも
して療養してください。
0268263
NGNGそれはなんとか分かります。
でも、*pの中身が整数定数なのに
なぜ**pがsizeof()の中で参照できる
のかなぞです。
0269デフォルトの名無しさん
NGNGsizeofは参照したりしません。
コンパイラがコンパイル時に定数に置き換えます。
sizeof(p)とやると
pは(charへのポインタへの)ポインタ型だから
アドレスが格納できるサイズ(大抵4byte)
sizeof(*p)も*pは(charへの)ポインタ型なので上に同じく
sizeof(**p)は**pはchar型なので1byte
というように型からコンパイラが判断するのです。
0270デフォルトの名無しさん
NGNGあと、基本的にアドレスってのは整数なので
整数定数でも参照できます。
0271デフォルトの名無しさん
NGNGCは一通り知ってますが、
ふだん使わないのと、手元に本がないので・・
sizeofで指定するメモリの格納場所って
「格納場所の先頭」である必要がありましたっけ?
たとえば
a[5] が確保されてる場合、
a はいいとして、a+1 でもおんなじだったでしょうか?
0272デフォルトの名無しさん
NGNG「格納場所の先頭」である必要があります。
char a[10];
sizeof a; //10
sizeof (a+1); //10でも9でもなくポインタのサイズ(4とか)になる。
つか試したほうが早いんじゃ…つかもう試してたり…
0273デフォルトの名無しさん
NGNGなるほど。
「ポインタの型」を返してしまいますか。
いや、試してGOでも良かったのですが、
規定されてなくて処理系でたまたま動きましたではマズイなと思って。
0274デフォルトの名無しさん
NGNG構造体の値を変数に入れるにはどうしたらいいでしょうか?
double a;
struct tekitou {
double c;
double d;
double e;
};
static struct tekitou kozotai[]{
{1,2,3}
};
i=0
a = kozotai[i].x←ここでエラーが出てしまいます。
よろしくお願いします。
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGかぶった
0278274
NGNG×a = kozotai[i].x
○a = kozotai[i].c;
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNGkozotai[]と{の間に=入れて
i=0 をint i=0;にして.cを.xにしたらコンパイルできたよ。
0281デフォルトの名無しさん
NGNG0282274
NGNG=は入ってます。
iもintで宣言してます。
しかし”文字’…’は認識できませんと出てしまいます。
0283デフォルトの名無しさん
NGNGカット&ペイストを知らんのか?
0284デフォルトの名無しさん
NGNG全角文字(主にスペース)が入ってるんじゃないの?
283じゃないけど、エラーメッセージは1字一句たがえずコピーする、
ソースは問題が再現するものを載せる。常識ね。
0285274
NGNG構造体配列があまりにも長いので…
0286デフォルトの名無しさん
NGNGに同意。
>>285
そういうときは、エラーが再現出来る範囲で出来るだけ短く削れ。
何も問題の出ないソースを貼られても誰も解決できんぞ。
0287274
NGNGどうもありがとうございました。
勉強し直してきます…
0288デフォルトの名無しさん
NGNG...
const int a[5] = {1,2,3,4,5};
...
bar.cで
...
extern const int a[];
...
とするとbar.cでコンパイルエラーが起こるのはなぜ?
0289デフォルトの名無しさん
NGNG想定される理由1:bar.c内で sizeof a とかやっている。
つーかエラーメッセージを書け。
0290デフォルトの名無しさん
NGNGエラー以前にそういう書き方はバグのもとだと思います。
0291デフォルトの名無しさん
NGNGchar **ppListData;
void AddList(char *pData)
{
char **ppListTmp=new char*[iListMax+1];
if (iListMax){
for (int x=0; x<iListMax; x++) ppListTmp[x]=ppListData[x];
// memcpy(ppListTmp, ppListData, sizeof(ppListData));
delete pListData;
}
pListData=pListTmp;
pListData[iListMax]=new char[strlen(pData)+1];
pListData[iListMax][0]=0;
strcat(pListData[iListMax], pData);
iListMax++;
}
この様な流れでpDataをppListDataに追加したいのですが、
memcpyだとエラーが出ます。
よく解らないままsizeof(*ppListData)等ともしてみましたが、
駄目でした。一体何が悪いのでしょうか。
0292デフォルトの名無しさん
NGNGconst 消してみたら?
0293291
NGNG0294デフォルトの名無しさん
NGNG> 一体何が悪いのでしょうか。
C++でSTLを使わずに自作ルーチンを作る行為
0295デフォルトの名無しさん
NGNG> 一体何が悪いのでしょうか。
CのスレでC++の質問をする行為
0296デフォルトの名無しさん
NGNGmemcpy(ppListTmp, ppListData, sizeof(char*)*iListMax);
かなぁ...
0297デフォルトの名無しさん
NGNGエラーとは関係ないと思うけど、
delete pListData;
は
delete[] pListData;
こうしないと。
0298デフォルトの名無しさん
NGNGsizeofの値はコンパイル時に決まるだろ?
newやmalloc()した領域の大きさを返すもんぢゃない。
0299291
NGNGsizeof(char*)*iListMaxで試してみます。 有り難うございました。
0300デフォルトの名無しさん
NGNGごめんなさい、コンパイルじゃなくてリンクの
ときにbar.cのaの宣言違うぞと怒られてるみたいなんですが。
処理系はVisualCです。
複数のファイルにある関数から参照するテーブルを定義する
ときにどうするのが一番綺麗なんでしょうか。
0301デフォルトの名無しさん
NGNGカット&ペイストを知らんのか?(>>283より引用)
0302デフォルトの名無しさん
NGNG全角文字(主にスペース)が入ってるんじゃないの?
283じゃないけど、エラーメッセージは1字一句たがえずコピーする、
ソースは問題が再現するものを載せる。常識ね。(>>284より引用)
0303this==301==302
NGNG0304デフォルトの名無しさん
NGNGerror LNK2001: 外部シンボル ""int const * const a" (?a@@3QBHB)" は未解決です
C++としてコンパイルした時には出るが,
Cとしてコンパイルすると出ない。
よくわからん。
0305デフォルトの名無しさん
NGNGエラーメッセージ読め!
読んだらコピー&ペーストして(以下略)
0306デフォルトの名無しさん
NGNGファイル名をcppからcにしたら直りました。(うーん?)
お騒がせしました。コードとエラーは下記の通りです。
//------foo.c:
#include <stdio.h>
const int iTable[5] = {1, 2, 3, 4, 5};
extern int LookupTable(int);
void
main()
{
LookupTable(1);
}
//---------bar.c:
#include <stdio.h>
extern const int iTable[];
int
LookupTable(int iPos)
{
return(iTable[iPos]);
}
-------------------構成: test - Win32 Debug--------------------
コンパイル中...
foo.cpp
bar.cpp
リンク中...
bar.obj : error LNK2001: 外部シンボル ""int const * const iTable" (?iTable@@3QBHB)" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
test.exe - エラー 2、警告 0
0307デフォルトの名無しさん
NGNGほんとだ・・・
0308デフォルトの名無しさん
NGNGそこでなぜヘルプを(略)
extern const int a[5] = {1, 2, 3, 4, 5};
うりあ。
0309デフォルトの名無しさん
NGNGC++でconstは外部リンケージではないというのは常識だと思うが...
0310デフォルトの名無しさん
NGNGVC6 だと明示的に extern 宣言入れとくと、外からでも見えるみたい。
// Config.hpp
namespace Player {
extern const double SPEED;
}
// Config.cpp
#include "Config.hpp" // これを取ると見えなくなる
namespace Player {
const double SPEED = 1.0;
}
0311デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *p;
int i;
p=a; /* p = a[0] */
for(i=0; i<5; i++) {
printf("%d",*p);
*p++;
}
return(0);
}
0312304
NGNGそーなの?知らんかった。
どっちにしろ、ここはCのスレだ。(開き直り)
0313デフォルトの名無しさん
NGNGポインタがわからない、っていうのはよく聞くけど、ポインタの存在に気がついてないってのは、おもしろかったぞ。
0314デフォルトの名無しさん
NGNG> VC6 だと明示的に extern 宣言入れとくと、外からでも見えるみたい。
「VC6だと」というか、C++のconstは デフォで内部リンケージ、
extern つけると外部リンケージ。
(Cはデフォで外部リンケージ)
0315デフォルトの名無しさん
NGNG> extern つけると外部リンケージ。
古いコンパイラだとこの辺の仕様が違っていたりして...
0316デフォルトの名無しさん
NGNGそれ言い出すときりがない。
0317デフォルトの名無しさん
NGNGいつから「C++でconstは外部リンケージではない
というのは常識」になったんだ?
0318デフォルトの名無しさん
NGNGみんなが見るものはヘッダファイルで宣言すれ。
0319デフォルトの名無しさん
NGNGこの規格が決まったのは大昔だろ。
すくなくとも俺が10年くらい前に読んだ本には書いてあった。
0320デフォルトの名無しさん
NGNG「C++ではdefineじゃなくてconstで定数を」という常識と同じ程度に昔からだと思うが。
0321デフォルトの名無しさん
NGNGなんというか、ファイルの拡張子見て勝手にcとc++を切り替えるって
IDEの仕様としていいのかなぁと思いました。
C++ってCの完全上位互換ってわけではないのですね。
0322デフォルトの名無しさん
NGNG> IDEの仕様としていいのかなぁと思いました。
仕様のぜひはともかくとして、たいていのコンパイラはそういう仕様になってるね。
(オプションで強制指定もできるけど)
まあ、そういうもんだと思ってください。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGあなたに指図される筋合いはありません。何の権限があってそのような事を言うのですか?
以上、素朴な疑問。
0327デフォルトの名無しさん
NGNGなぜあちこちでまったく同じ文を書いているのですか?
以上、素朴な疑問。
0328デフォルトの名無しさん
NGNG(1) p = a; と等価なのは p = &a[0];
(2) *p++; は p++; だろう。この例では * 付けても特に副作用はないが、付ける意味もない。
後はまかせた。
0329デフォルトの名無しさん
NGNGISO/IEC 11578:1996 を入手しないとダメかな?
draft-leach-uuids-guids-01 だけ読んでればいいかな?
0330デフォルトの名無しさん
NGNGで十分だと思うが。
0331Kono Shinji
NGNG0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNG具体的に指摘してホスイ
0334デフォルトの名無しさん
NGNG「*つけたら思った動作にならない」じゃないのかな??
>>311は「一度も動作の確認しないで出来たという」クンかもしれない。
0335334
NGNG0336デフォルトの名無しさん
NGNGLISTの追加処理がとても不安なので添削してほしいです。
typedef struct tagList{
short x;
short y;
short movx;
short movy;
short flg;
char *next;
}LIST;
-----・・・
/*mainから。*/
ladd(&emp,&mblt);/* LIST *emp,*mblt */
---・・・
/*追加処理*/
void ladd(LIST **emp,LIST **tag){
LIST *emp2,*tag2,*temp;
emp2=*emp;
tag2=*tag;
temp=emp2;
tag2=emp2;
emp2=(LIST *)emp2->next;
(LIST *)tag2->next=temp;
*emp=emp2;
*tag=tag2;
return ;
}
#すでにMAINでもう一個別のLIST型のポインタがmallocしたものを持っていて、そこをいじっています。
#MAINの*empは使用していない領域を担当していて、*mbltは自分の弾丸を担当しています。
とりあえず動いているようですが、あまりこういうことしないので動作自体が不安です。
おかしなエラーとかが見えるようでしたら一言お願いします。
0337デフォルトの名無しさん
NGNGtypedef struct tagList{
...
struct tagList *next;
}LIST;
とかするだろう。laddも、
void ladd(LIST *emp,LIST *tag){
emp->next = tag;
tag->next=NULL;
}
とかで済む話ではないのか?
元のtag->next = emp;ってのも、リスト構造としては妙だな。
0338デフォルトの名無しさん
NGNGなにをやりたいのか、具体的に書いて欲しい。
呼び出し側で emp と mblt をどう使うのかも。
少なくとも「LISTの追加」ではなさそうだ。
0340デフォルトの名無しさん
NGNGこれ数行で書ける・・ていうか関数にする必要があるんだろうか、としか
思えない自分に対し、なんぼなんでもそれは無いだろうと思い。
「あ〜、しばらくC使ってないと、全然忘れてるな、文字通り厨房かも・・」
と思ってかなりへこんだ私でした。
ああ。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGのように見えるんだけど。「リストの追加」とはだいぶ違うような。
関数本体を
LIST *ladd(LIST **emp)
{
LIST *temp;
temp = *emp;
*emp = (*emp)->next;
temp->next = temp;
return temp;
}
のようにして、呼び出し側を、
mblt = ladd(&emp);
にする。元ソースとやってることは同じだけどちょっとは読みやすいかな。
関数の動作がこれでいいとすると、laddという名前はなんとかした方がいいと思うぞ。
0343デフォルトの名無しさん
NGNG#define MIN_SX 5U
#define MAX_SX (20U-MIN_SX)
#define MIN_SY 5U
#define MAX_SY (MIN_SY+13U)
数字の後ろについてる「U」ってなに?
0344デフォルトの名無しさん
NGNG0345まじれす
NGNG5Uだと、5以上(少なくとも5)という意味になる。
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG0348343
NGNGたぶん違います。
>345
5以上ということは、6でも7でも256でもいいんですか?
なんだかいい加減だなぁ。「U」を外してコンパイルしても
普通に動いているのが謎です。
>346
原子は関係ないっぽいです。
>347
それも関係ないと思います。
っていうかマジレスください。
分からない命令があれば検索して調べるんですが、
「U」に関してはどう検索していいのかも分かりません。教えて。
0349デフォルトの名無しさん
NGNGサンクス
1U=1.75インチ=約45mm
0350デフォルトの名無しさん
NGNGからかわれてるのは、自分に落ち度があるからだと気づけよ。
とりあえず、プログラミング言語 C を読み直せ。買ってないなら、今すぐ買え。
0351デフォルトの名無しさん
NGNGhttp://www.google.com/search?q=U
っつーか、何か一冊Cの本読め。
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG俺も「U」は知らなかったなぁ・・・
「L」は知ってるけど・・・
long x = 5L;
みたく使う、明示的にlongにするってやつね。
たぶん、Uは明示的にunsignedにするってやつじゃないか?
0354343
NGNGこの本ですか。なんだかそのまんまなタイトルですね。
ttp://www.pro.or.jp/~fuji/computerbooks/c/c.kernighan.html
今度探して買ってきます。
>351
その検索じゃちょっと…。
Cの本は、ずっと前に買った「改訂新C言語入門スーパービギナー編」
という林晴比古の本しか持ってないです。
上のリンク先で林晴比古が糞味噌に貶されていますね。
で、結局「U」ってなんなんですか、と聞くのはちょっとしつこいですか。
0357デフォルトの名無しさん
NGNG知らないことは恥ではないが、
知らない状態に安住するのは恥だ
人に聞く前に調べろよ。
0358デフォルトの名無しさん
NGNGその本だけど、もしかして今まで「プログラミング言語 C」を知らなかった? あれは
C 言語のバイブルだから、何があっても読まないとダメだよ。
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNGこういうことは深夜に聞くといいよ。
深夜ならどんなにアフォな質問を単発スレ立ててしてもちゃんと答えてくれることが昨日わかった。
0361デフォルトの名無しさん
NGNG初心者を騙しちゃダメだって…
0362デフォルトの名無しさん
NGNGUはunsignedだよ。
他にも「F」はfloat型、「LF」だったらdouble型だ。
こんな問題でもったいつけてスレ数を無駄遣いすんな。
1レスで済むだろボケ。
0363343
NGNGなるほど。ひょっとしてunsignedのUかなー、
とは漠然と考えていたんですが、意味が分かりませんでした。
明示的に表す記号なんですね。
>355
インターネットの利用方法としては
直リンする方が健全だと僕も思うんですが、
2chで直リンするとスレと関係ない論争が起こったりするんで…。
>358
知りませんでした。読みます。
>360
昨日は深夜にボコボコにされました。
まぁ、解決ってことで。ありがとうございました。
0364デフォルトの名無しさん
NGNGまあ運が悪かったということで。
親切な人がいるときに聞きなおしましょう。
0365デフォルトの名無しさん
NGNGスマン、てっきりネタだと思ってたから。
0366356
NGNG0367336
NGNG>337
なんだか、大きな勘違いをしていたようです。
追加処理の考え方自体が間違ってるみたいで・・・。
>338
Direct3Dのテンプレートをもらってそれで2Dシューティングを勉強のために作っています。
別のバッファっていうのチャンコ鍋なかんじのバッファなので、empは未使用または使用済みをくっつけていく感じです。
mbltは玉が発生したらそれを管理するためのやつで玉が発生したら未使用から取ってきた領域をくっつけるって感じです。
>340
悪いのは僕です。ごめん。(ぺこり
>341
一度変数のシングルポインタ使ってやってたんだけど、
うまくいかなくて、色々考えてるうちに行き着いたんです。
>342
なんだか僕が扱っているものがListということも怪しくなってきたなぁ。ヤバイ・・・。(汗
名前については考え直します。
話を総合すると、僕が間違ってると解りました。うむぅー。
でも、それが解ったことは収穫です。
日曜もありますので考え直してみたいと思います。
ありがとうございました。
0368デフォルトの名無しさん
NGNGリストのデータ構造と操作方法に関しては一度じっくりと勉強した方がいいが、
実際に使う段になったら 4.4BSD の <sys/queue.h> とか C++ STL の std::list
使ったほうが良いと思われ。
あと聞いた感じ、リストに対して挿入/削除が頻繁に発生しそうだから、単方向
リストよりも双方向リストを使ったほうがいいと思うよ。
0369デフォルトの名無しさん
NGNGシューティングだったら循環リストなんかも良いモナー
0371デフォルトの名無しさん
NGNGint fclose __P((FILE *));
とかありますけど「__P( )」ってなんでしょう?
検索キーワードでも教えてくださーい。
(__P だとソースとかしか出てきませんでした)
0372デフォルトの名無しさん
NGNGstdio.h があるディレクトリの中のヘッダファイルを __P でgrep検索したら
なんか出てくるんじゃない?マクロだからどっかで#defineされてるはず。
0373372
NGNGhttp://www.tomo.gr.jp/users/wnn/0002ml/msg00068.html
こんなの出るじゃないかゴルァ。
ANSI C でも古いCでも、それなりに適切にコンパイル
できるようにするためのおまじないらしいぞ。
0374デフォルトの名無しさん
NGNG循環リストってリングバッファともよばれるやつかな??
日本語で聞くと何か新鮮。意味は同じなのにね。
ところで、関係ないけど、双撃ってかっこよくない?
ん?いやさ、ダブルクリック。
0376デフォルトの名無しさん
NGNGリングバッファっつーと配列による実装(keyboard BIOSとかLZ77系とか)
循環リストつーとポインタによる実装
を連想するのは俺だけか?
0377デフォルトの名無しさん
NGNGいわれてみると「バッファ」って配列っぽいね。
0378374
NGNGそう言われれば、そういう風に覚えるのもいいかなと思えるね。
僕の場合、何かかっこいいからリングバッファっていってる。
区別する時は、頭に「配列の・・・」とか「ポインタの・・・」ってつけると思う。
0379
NGNGwhile(scanf("%s",x) != EOF)
{
root = makenode(x,root);
}
無限ループ状態になるんですけど、なんでですか?
あと、scanfってなにを返すんですか?
0380372
NGNGhttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html
こんなの出るじゃないかゴルァ。
%s とか %d とかに従って代入したデータの個数を返すらしいぞ。
入力エラーが起きない限りEOFは返って来ん。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG一回も使った事無いな。。。。
DOSの時はワークエリアから押し下げ状態読んでやってて、
linuxではキー入力を必要とされる物を作った事が無い。 うーん
0383379
NGNG0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGこれって私が悪いの?
/* test.c */
#include <stdio.h>
typedef struct _val {
int type;
union {
int i;
double d;
};
} val;
int main() {
val data;
data.type = 0;
data.i = 7;
FILE *fp;
if( !( fp = fopen("test", "r") ) ) return -1;
...
fclose(fp);
return 0;
}
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG「エラーでます。なんとかしてくれ」みたいな
ことをいうのは、厨房の証左だな。
0388385
NGNGすいません。
0389デフォルトの名無しさん
NGNGC++コンパイラならそれは問題ないんじゃないの?
0390デフォルトの名無しさん
NGNG拡張子がcだからだめ
0392デフォルトの名無しさん
NGNGおしりに識別しを付けてね。
union {
int i;
double d;
}u;
とか
0393デフォルトの名無しさん
NGNGそれは別に問題ないだろ。無名共用体。
0394392
NGNG逝きながらK&R読む。
039516さい
NGNGどこからはじめるべきですか?
039688さい
NGNGまず腕立て伏せから始めよう。
次は指立て伏せじゃ。
お次ぎは腹筋〜200回じゃぁ〜〜〜〜。
039888さい
NGNGなかなかスジがよろしい。
次はパンチの特訓じゃっ!
打つべし、打つべし〜〜〜〜じゃぁ〜〜〜〜。
ごほっ(吐血
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGHello World
みんなここから始めてる。
040116さい
NGNGこんなもんかぁああ!?
(;´Д`)
⊃ ⊃
040288さい
NGNGだったぞ、わしやぁ、、、
040588さい
NGNGごほっ(吐血
わかい者はええのぉ〜。
あんまり無理するなよ。
0406デフォルトの名無しさん
NGNG040716さい
NGNG無理せず本でも読みます
ところで基礎の基礎でも教えていただけませんか?
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG受け取る文字列が16進の文字列の場合(アドレスを表すテキストデータとか)、
どうやったら正しく数値に変換してもらえるのでしょうか?
そういう関数って、ありますか?
0411デフォルトの名無しさん
NGNGstrtol or strtoul
ヘッダーは<stdlib.h>だったかな。
0412410
NGNG超感謝です。
標準関数でサポートされてたんですね!
ありがとうございました♪
0413411
NGNGあれ使いづらいんだよね・・・
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417BSフジ
NGNG100から500までの時は、大きくする
というような条件分岐をしたいのですが、どのようにするのでしょうか?
case100 >= a && a <= 500
ではへんですし
0418デフォルトの名無しさん
NGNGぜんぜん違いますが
0419デフォルトの名無しさん
NGNGVB使え。
VBならSelect(VBではSwitch)に条件文を書ける。
半分冗談じゃなくて、それくらいが思いつかないならVBで修行した方が良い。
0420デフォルトの名無しさん
NGNG情報圧縮とかで楽できそうだが>27
0421デフォルトの名無しさん
NGNGC言語のswitch文では範囲の指定はできないです。
別のやり方としては、caseの部分を重ねて書く方法もありますが、これだと値があらかじめ特定されてないと使えません。
switch(a){
case 100:
case 200:
case 300:
case 400:
/*ここで処理*/
}
0423デフォルトの名無しさん
NGNGswitch(a>=100&&a<=500){
case 1:
//大きくする
break;
default:
//それ以外
}
0424デフォルトの名無しさん
NGNG>>422
そんなもんだだの言葉面のもんだいだとも思うが。
0425デフォルトの名無しさん
NGNG関数型言語の世界へようこそ。
そのような悩みはすべて消えます。
0426デフォルトの名無しさん
NGNGリングバッファは要素数固定だが、循環リストは普通可変。
0427デフォルトの名無しさん
NGNGそういう議論になってるのはわかってる。
だが全然本質じゃない。
あるアイディアに対して、たまたま二つの実装があるにすぎないし
他の実装方法がないわけでもない。
0429デフォルトの名無しさん
NGNGリストとバッファの違いが分かってない?
リストでは、挿入/削除される各要素は個別に確保/開放される。その要素を
ポインタを使ってリング状につなげば循環リストだし、双方向につなげば双方向
連結リストになる。要素数は一般には制限なし(メモリサイズだけに制限される)
対してバッファは、固定長のメモリ領域。そのバッファを同一サイズのブロック
に分割して使う。ブロックの利用順序として、ブロックを頭から順に使っていって、
使い切ったら頭に戻るような戦略を採用したものがリングバッファ。
一般には
rp 次に読み込む場所
wp 次に書き込む場所
len 使用中のブロックサイズ
という管理データを用いて、
一つ読み込む
rp = (rp がブロックの最後を指していれば 0 に戻す、そうでなければ rp + 1)
一つ書き込む
wp = (wp がブロックの最後を指していれば 0 に戻す、そうでなければ wp + 1)
ってな感じで操作する。入出力が非同期に行われる FIFO 型のデータを貯めて
おくときに便利。
0430デフォルトの名無しさん
NGNGあそこのサイトはCで書いてるのか??
0432BSフジ
NGNGどうりで、検索してもないわけだ
0433デフォルトの名無しさん
NGNGcase 1:
case 2:
case 3:
case 4:
break;
default:
break
}
0434デフォルトの名無しさん
NGNGifをちまちま書きたくなかったら配列にしきい値いれといて、
forで回そうよ。
0435デフォルトの名無しさん
NGNG#define teisuu 100
if((a%teisuu)==0){
case処理;
}else{
default処理;
}
そういう等幅なら、今回はこれがつかえないかな?
0436デフォルトの名無しさん
NGNG0437435
NGNGうわ。switch限定でしたか。
失礼しました。出直してきます。
>417
条件を3項演算子でくくってみてはいかが?
ちょこっと処理食うけどそこに書いてあるようなことができると思うよ。
0438435
NGNGワシ、何見てたんだろ。はぁ。いってきます。
>436
細かな対応には必要でしょう。
うんで、長くなりすぎるなら、一捻りってとこではないでしょうか?
条件変更のとき泣きみるし。
0439435
NGNG438の>243は423です。
失礼しました。
0440デフォルトの名無しさん
NGNGできませんってレスが付かないのかね。
素直にif使え>417
0441デフォルトの名無しさん
NGNG100%無理?
まぁ、ifのほうが楽そうなのは確かだな。
0442434
NGNG>>438の言うとおりの場合もあるんだけど、
int th[] = {0,100,500,550,980,1000,-1};
for(i=0;th[i]>=0 && !(th[i] <= in && in < th[i+1]);i++);
switch(i) {
case 0: ...
case 1: ...
}
0443デフォルトの名無しさん
NGNGこれを使って昔のDOS/V機(’94年頃のWin3.1時代)で実行できるアプリを作りたいのですが、
どうしたらいいでしょうか?
たとえば、以下のような超簡単なプログラム hello.cがあったとします。
#include <stdio.h>
int main(void)
{
printf("Hello\n");
}
これを普通にコンパイルしても、古いAT機上で実行しようとすると
This program cannot be run in DOS mode.
みたいなことを言われてしまいます。
VC++の画面からやっても、またコマンドで
cl hello.c
と打ち込んでコンパイルしてみても、同じです。
いい方法は無いものでしょうか?
0444デフォルトの名無しさん
NGNG今時手に入るのかな。
0445デフォルトの名無しさん
NGNG何かいい手段はないですか?
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNGCマガジンを買うと、いっつもLSI-C試食版がついてるので、
漏れこれ使ってる。
0448デフォルトの名無しさん
NGNGLSI-Cは16ビットじゃなかったか?
http://www.lsi-j.ab.psiweb.com/freesoft/index.html
0449417
NGNGそういう方法もありますか
でも結局回数は、いっしょってことになりますよね
void koudou(void)
{
if(hito.idouCnt > 100 && hito.idouCnt < 200){
hito.x++;
hito.y+=2;
rerutn;
}
if(hito.idouCnt > 200 && hito.idouCnt < 280){
hito.x--;
hito.y+=2;
return;
}
以下似文
}
と言う風に今は、文を書いています
これでは効率悪いですよね?
0450デフォルトの名無しさん
NGNG...
}
else if(hito.idouCnt<200){
...
}
else if(hito.idou<280){
...
}
0451434
NGNG効率も大事だけど、ソースの保守性とバグの混入しにくいコーディングのため、
できるだけ類似した記述の再出現を避け、簡潔にまとめるとカコイイよ。
>>449のようなことがやりたいなら、hito.x++とかhito.y+=2とかもテーブルに
int addX[] = {1,-1,-1,1};
int addY[] = {2,2,-2,-2};
とかで持っておけば、>>442のswitch文も要らなくなるよね。
↓>>1に加えていいんじゃないかと思うくらいお薦め
http://www.pro.or.jp/~fuji/mybooks/cdiag/index
0452451
NGNGhttp://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
0453デフォルトの名無しさん
NGNGタダで落ちてるんですか?
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNGおうよ。
GNUの心意気を感じたかい?
ちなみに、「ストールマンとGNUの仲間たち、あんたらは漢だ!」
と感動して、いてもたってもいられなくなったら、送金してもOK。
http://www.gnu.org/home.ja.html
から「オンライン寄付」を選ぶだけだ。
もちろんお金リソース以外の支援もできる。
http://www.gnu.org/help/help.html
0456453
NGNG0458(゜Д、゜)y−~
NGNGまずは機械語が操れるアメリカ人ハッカーを移籍金10万でヘッドハンティング、と
0459458
NGNGm(_ _)mスマソ。
0460デフォルトの名無しさん
NGNGgccならこういうことはできる。
void koudou(void)
{
switch (hito.idouCnt) {
case 101 ... 199:
hito.x++;
hito.y+=2;
rerutn;
case 201 ... 279:
hito.x--;
hito.y+=2;
return;
}
}
0461デフォルトの名無しさん
NGNG1.同時に3つの重複しない0〜9までの数字を手に入れるにはどうすればいいのですか?
randやsrandを使うと聞いたことがあるのですが、具体的な使い方がわかりません。
2.このソースをみていただけますか?
#include<stdio.h>
int list ( int per);
main()
{
int num;
printf("人は何人いますか?>");
scanf("%d",&num);
list (num);
getch();
}
void list (int per,)
{
char name[per][30];
・
・
・
これでコンパイルするとエラーになってしまいます。なぜでしょうか?配列の宣言には変数は使えないのですか?
ユーザーから入力された分だけの配列を用意するにはどのようにすればいいでしょうか?
他のかたによればプロトタイプ宣言のところもおかしいのだそうです。さっきまちがえて新スレたててしまいました。すみません。
どうぞよろしくおねがいします
0462デフォルトの名無しさん
NGNG158 ペイジに書いてありますね。
「珠玉のプログラミング」の。
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG>{
>char name[per][30];
ここだろうな。
0466デフォルトの名無しさん
NGNG>void list (int per,)
最後のカンマは要らない。
>char name[per][30];
これは無理
char (*name)[30];
name = malloc(per*sizeof(int[30]));
とする。使用後にfree(name);を忘れないように
0467466
NGNG0468デフォルトの名無しさん
NGNG�@だが、考え方を。
srand(seed);//seedはなんでもいいがtime()を使うのが一般的かな?
whileかforを使って、重複を確かめつつループをまわす。
rand()はとんでもない値を返すので、工夫が必要。
実験してみて、つかんでくれ。
こんなとこかな。
0469デフォルトの名無しさん
NGNGというか、「乱数」って言葉は知ってる?
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGmicrosoft visual c++ 6.0でビルドしてできたプログラムを
そのままvisualC上で実行すると、実行後にDOS窓が表示されたまま止まるのですが、
winでさっきのexeファイルを実行するとプログラムが実行された後、すぐに
DOS窓が閉じてしまって結果が確認できません。
終わっても窓を閉じさせないようにはどのようにすればいいのでしょうか?
本にも書いてないし困ってます。どなたか教えてくださいませんか?
0472デフォルトの名無しさん
NGNGVC6なら統合環境から出力読むオプションもあるはずマニュアル読め。
0473デフォルトの名無しさん
NGNGまたは、面倒だけどgetch();をいれる。
後者はあまりいい方法じゃない気がする。
0474デフォルトの名無しさん
NGNG漏れと同じ年、経験年数もほぼ同じ...
C の質問じゃなく C++ なんだけど、STL や ATL に関する書籍でバイブルと言われるようなものってありますか?
「テンプレートを真面目に勉強してみるかな」って、思ってるんですけど...
0475デフォルトの名無しさん
NGNG0476471
NGNGgetch();ですか・・・ちょっと分からないです。勉強してきます。
参考になりました。
0477デフォルトの名無しさん
NGNG糞レスでスマヌ
0478デフォルトの名無しさん
NGNGチャメッケのわからん若造だな(藁
0479今日からC言語はじめました
NGNGmain()
{
int a;
scanf("%d",&a);
a=a*2;
printf("\n\n\n%dです。\n\n\n",a);
}
0480デフォルトの名無しさん
NGNG#include <stdio.h>
#include <malloc.h>
#define ELEMENT_LENGTH 30
static int list(int per);
void main(void)
{
int num;
printf("人は何人いますか? >");
scanf("%d", &num);
list(num);
getch();
}
static void list(int per)
{
char** ppname;
char* ppool;
unsingned long i;
if (per <= 0)
引数エラー処理
else if ((ppname = malloc(per * sizeof char**)) == NULL)
メモリ不足エラー処理
else if ((ppool = malloc(per * ELEMENT_LENGTH)) == NULL)
メモリ不足エラー処理
else {
for (i = 0; i < ELEMENT_LENGTH; i++)
ppname[i] = &ppool[ELEMENT_LENGTH * i];
...
free(ppool);
free(ppname);
...
}
って、感じですかぁ〜。
0481デフォルトの名無しさん
NGNGstdlib.hは?
0482デフォルトの名無しさん
NGNGmalloc() は、malloc.h にも stdlib.h にも入ってるのだ!
0483デフォルトの名無しさん
NGNG君は改行がとても好きですね。
0484デフォルトの名無しさん
NGNGいよっ!この改行野郎っ!
憎いねえ。
0485デフォルトの名無しさん
NGNGあんま関係無いけど、象さんとは言うけど、虎さんって言わないのかねぇ?
0486デフォルトの名無しさん
NGNGこのまま改行道を極めて悩める人類を救ってください。
0487デフォルトの名無しさん
NGNGフーテンの・・・
0488デフォルトの名無しさん
NGNG改行の母です・・(以下略)
0489デフォルトの名無しさん
NGNG| ̄ ̄ ̄ ̄ ̄ ̄|
| ここで改行して|
|______|
. ||
∧∧.||
(*゚ー゚)||
/ つつ
〜( ノ
U U
0490デフォルトの名無しさん
NGNG先生の改行をみて、
自分の今までの生き方と改行への取り組みを恥ずかしく思いました。
ぜひ弟子入りさせてください!!
0491デフォルトの名無しさん
NGNGありがとうございます。まだ動的メモリなるものをいまいち理解していません。もしもよければ、それについてのわかりやすいHPなどあればおねがいします。
0492デフォルトの名無しさん
NGNGわかりやすいHP
http://www.hp.com/jp
0493デフォルトの名無しさん
NGNG十字キー上下で難易度選択するプログラムで悩んでます
*easy
normal ←こんな感じで
hard
while(1){
lvに対応した行に*を表示
waitpad(0xff);
key=joypad();
if{↓ならlvを1増やして*を消す}
if{↑ならlvを1減らして*を消す}
if{Aならゲーム開始}
waitpadup();
}
これだと十字キー押してる間は*が見えなくなるんですよ
十字キー押した時点で*が表示されて
なおかつ連射しないようにするにはどうしたらいいんですか?
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGショートカット作れ。
0496デフォルトの名無しさん
NGNGmalloc.hは標準ではありません
0497479
NGNG意味わかんないです。
つーか僕の奴かなり見やすいと思いません?
これでもC言語暦3日です!
0498デフォルトの名無しさん
NGNGつか、入れても入れなくても可読性に影響の無い改行は、掲示板に載せるときは取れや。
0499sage
NGNGint main()
{
#if 1
char a[]=">>497お前は天才だよくやった";
#else
char a[]="ネタの497は逝ってよし!";
#endif
printf("ともかく、%s。ということだ。\n",a);
return 0;
}
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGputs("\n\n\nこれでも\n\n\nくらえ!\n\n\n。");
わかった?
0502498
NGNG0503417
NGNG0504497
NGNGmain()
{
printf("意味が分かりません。ネタと言うのはは止めてください。");
}
0505デフォルトの名無しさん
NGNGvoid aborn(){
puts("\n\n\n497先生!\n\n\n");
puts("\n\n\nぜひ弟子にしてください!\n\n\n");
}
0506名無しさん@Emacs
NGNG何故かstrcatでsegmentation faultがでしまいます。
以下gdbのbtのコピぺです。
#0 0x400b3885 in strcat () from /lib/i686/libc.so.6
#1 0xbffffb84 in ?? ()
#2 0x4004a507 in __libc_start_main (main=0x80484d0 <main>, argc=1,
ubp_av=0xbffffb84, init=0x804832c <_init>, fini=0x8048580 <_fini>,
rtld_fini=0x4000dc14 <_dl_fini>, stack_end=0xbffffb7c)
at ../sysdeps/generic/libc-start.c:129
そしてその時のソースです。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{
char *foo;
char *goo;
foo=(char *)malloc(128);
goo=(char *)malloc(32);
foo="hogehoge";
goo="hugahuga";
strcat(foo,goo);/*<-どうやらここでバグ発生*/
printf("%s",foo);
}
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNGfoo="hogehoge";
が何をしているのか考えよう。
どうして、strcpyが用意されてるのかな?
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNG本質的な回答は >>507-508 だが、gcc 使ってるなら -Wwirte-string オプションを
指定しておくことを奨める。
文字列リテラルの型が const char * になるから、この手の下らんバグをコンパイ
ル時に見つけられる。
0511デフォルトの名無しさん
NGNGBotlandC++5.5ならこうだろう。
0512506
NGNGで、解決しました。
やっぱり皆さんが指摘した通りでした。
foo="hogehoge";
goo="hugahuga";
の所を、
strcpy(foo,"hogehoge");
strcpy(goo,"hugahuga");
としてやったら無事解決しました。
本当にありがとうございました。
0513デフォルトの名無しさん
NGNGにしても、これって
C言語の美しくないところよね。
0514デフォルトの名無しさん
NGNG(´-`).。oO( プロジェクトのオプションを弄ればいいだろう )
0515デフォルトの名無しさん
NGNG> goo=(char *)malloc(32);
これをする意味が分からない。
char *goo="hugehuge";でいいと思うが。
0516デフォルトの名無しさん
NGNGメモリリークは無視?
0517デフォルトの名無しさん
NGNGexit前のfreeは云々って奴じゃネーノ?
(個人的には使い終わったらexit前でもfreeするくせをつけるべきだと思うが)
0518デフォルトの名無しさん
NGNGすまん、放置してくれ。
0519デフォルトの名無しさん
NGNG(´-`).。oO( そういや日下部さんってどこ行ったんだろ )
0520デフォルトの名無しさん
NGNG(´-`).。oO(けいこタンに処刑されました・・・・)
0521デフォルトの名無しさん
NGNG0(0);
は、VC++6.0ではコンパイルエラーにならないのですが、
BotlandC++ではコンパイルエラーになりますね。
いえ、意味はありませんが…。
0522デフォルトの名無しさん
NGNG教えてください。
0524デフォルトの名無しさん
NGNGありがちょー
0525デフォルトの名無しさん
NGNG相変わらずfjで憎まれ口をたたいております。
http://queen.heart.ne.jp/cgi-bin/browse?msgid=%3C120220020221158931%25void%40merope%2Epleiades%2Eor%2Ejp%3E&ym=200202
0526デフォルトの名無しさん
NGNG正確に言うとVCではC++でコンパイルするとエラーにならないが
Cでコンパイルするとエラーになる。
error C2064: 関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。
0527デフォルトの名無しさん
NGNG(´−`).。oO( クサチューはパケットごとアボーソですが、何か? )
0529522
NGNG533さんのtailってゆうところにどうやったら最後の構造体
がおけるのかやっぱりわかりません。
ちなみに一方通行のリンクリストです。
0531522
NGNG探し方が悪いのか,参考になるのがみつかりません。
自力ではこんなのしか思い浮かばないのですが、、
for(ep=start; ep->next !=NULL; ep= ep->next){
if(ep->next ==NULL){
empdata->next = NULL;
ep->next = empdata;
}
}
これじゃだめですもんね。
0532522
NGNGfor(ep=start;;){
empdata->next = ep->next;
ep->next = empdata;
break;
}
}
0533日下部圭子 ◆ib749tYo
NGNGfor(ep=start; ep->next !=NULL; ep= ep->next){
}
empdata->next = NULL;
ep->next = empdata;
0534デフォルトの名無しさん
NGNG最初? 最後に追加する方法を聞いていたのでは?
最初に挿入するなら
empdata->next=satrt;
satrt=empdata;
最後に挿入するなら
for(ep=start;ep->next;ep=ep->next);
empdata->next=ep->next;
ep->next=empdata;
ただしどちらもstart!=NULLが前提
0536522
NGNGありがとうございました。
0537デフォルトの名無しさん
NGNGint main(int argc, char *argv[])
{
for (int i = 0; i < argc; i++)
cout << argv[i] <<endl;
return 0;
}
( ´∀`)BCCでコンパイル通らないモナー。
0538未婚道程
NGNGぼ、ぼくと付き合って頂けませんか?
0539デフォルトの名無しさん
NGNGstd::cout << argv[i] << std::endl;
または
#include <iostream>
using namespace std;
0540デフォルトの名無しさん
NGNG#include <iostream.h>
0543デフォルトの名無しさん
NGNGcout <<ってなんだろう?C厨の俺にはわからねーなー。
・・・ってスレ違いだろボケ!
http://pc.2ch.net/test/read.cgi/tech/1009071535/
0544デフォルトの名無しさん
NGNG藁多
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGwindows2000を使ってるのですが、表示する文字列を消したり
色を変えたりするにはどうすればいいのですか?
0547デフォルトの名無しさん
NGNGWin2000ではあの特殊な文字は使えなかったような・・・・
専用のヘッダーがあったような気がするけど。
0548デフォルトの名無しさん
NGNGこれなんて読むんですか?
0549デフォルトの名無しさん
NGNG0550537
NGNG<iostream.h>だと通ったんだけど、拡張子って環境依存するもんだから
C++ではつけなくてもコンパイル通る、みたいな事をなんかの本で読んで、
試してみたらひっかかったので。使わないほうがいいってのもそういうことだよね。
レスくれた皆さんありがと。スレ汚しスマソ。
0551デフォルトの名無しさん
NGNGせんちねる
0553Kono Shinji
NGNGSentinel
0554デフォルトの名無しさん
NGNG番兵と歩哨って同じ意味だっけ?
とすると番兵は見回り兵か。
0555540
NGNGいや、<iostream.h>を使わないほうがいい理由は名前の衝突の可能性があるから。
だから名前空間に放り込むほうが良いって偉大なグルが言ってたよ!
漏れも激しくスレ違いスマソ。
0556デフォルトの名無しさん
NGNGコンパイルしようとすると temp =x[i]; のところでエラーがでてしまいます。
どうしたらよいのでしょうか?お願いします。
void sort_employee(struct employee *x, int n){
int i,j;
int temp;
for(i=0; i <(n-1); i++){
for(j=i+1; j<n; j++ ){
if(strcmp(x[i].lname, x[j].lname)>0){
temp =x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
printf("The list alphabetized\n");
}
0557デフォルトの名無しさん
NGNG0558556
NGNGです。よろしくお願いします。
0559デフォルトの名無しさん
NGNG0560556
NGNG0561デフォルトの名無しさん
NGNG構造体じゃないと。
0562デフォルトの名無しさん
NGNG> int temp;
struct employee temp
軽自動車用の駐車場に大型トラックを止めようとしてはいけません。
0563デフォルトの名無しさん
NGNGそもそも、sort_employee( ) の引数の意味を
理解してないでしょ…。
>>560
> なににすればいいんですか?structの配列対しては
っていってるけど、
>>556
> ...(struct employee *x ...
ここに答えが。
0564デフォルトの名無しさん
NGNGvoid hoge(int* arg)
{
*arg = 7;
}
int main(int argc, char* argv[])
{
int* cont;
hoge(cont);
printf("%d\n",cont);
}
ポインタのポインタを使えばやりたい事ができるのは解かりますが
上記の方法で出来ない理由を論理的に教えてください。お願いします。
0565556
NGNGありがとうござい。
0566デフォルトの名無しさん
NGNGポインタのポインタつかえばできるって
何が?
0567デフォルトの名無しさん
NGNG1. cont を使う前に初期化していない。
しかも、
2. そもそも初期化のオペランドとして使うべきアドレスが無い。
てゆーか、
3. そもそも 2. のアドレスにあるべき変数の領域が確保(宣言)されていない。
0568デフォルトの名無しさん
NGNG出力結果が
7
となる事です。
0569デフォルトの名無しさん
NGNG> int* cont;
> hoge(cont);
int cont;
hoge(&cont);
もう一度入門書を読み直しましょう。
0570デフォルトの名無しさん
NGNG変数であって、「int型データ」を入れるための変数ではない。
int cont;
hoge(&cont);
ってやるよね。普通。
0571デフォルトの名無しさん
NGNGポインタのポインタを使ってもできないと思うけど。
ポインタというのはその名の通り、他の変数などをポイントする
(指し示す)のに使うのだが、>>564のcontにはそのポイントする
先が用意されてない。
0572デフォルトの名無しさん
NGNG{
arg = malloc(sizeof(int));
*arg = 7;
}
int main(int argc, char* argv[])
{
int* cont;
hoge(cont);
printf("%d\n",cont);
}
みなさん、レスありがとうございます。
ではこれではどうでしょうか?
普通でないのは解かってるのですが学習用という事でご容赦ください。
0573デフォルトの名無しさん
NGNGよくわかりません。
enum {
red ,
blue ,
green
} ;
はわかります。
ですが、
enum Color {
red ,
blue ,
green
} ;
と書いたときの、Colorってどういうときに役に立つんですか?
あと、
enum Color {
red ,
blue ,
green
} color;
のcolorってどういう時に役に立つんですか?
教えてください、お願いします。
0574デフォルトの名無しさん
NGNG(;´д`).。oO( 「7」だから偶然できただけ。 )
「0.5」とか二億四千万とか「-1」とか「"名無し"」とか…
だったらどーするんだ?
0575デフォルトの名無しさん
NGNG> void hoge(int* arg)
void hoge(int** arg)
> arg = malloc(sizeof(int));
*arg = malloc(sizeof(int));
>*arg = 7;
**arg = 7;
> hoge(cont);
hoge(&cont);
> printf("%d\n",cont);
printf("%d\n",*cont);
free(cont);
最後のfreeについては無くとも問題ないが、好みで入れてみた。
0576デフォルトの名無しさん
NGNG572に文法的なありますか?
お願いします。
0577デフォルトの名無しさん
NGNG> と書いたときの、Colorってどういうときに役に立つんですか?
例えば
enum Color getColor(void);
void setColor(enum Color);
とすれば、見た目わかりやすくないか?
「まともな」コンパイラならば
列挙型以外の値が入れば警告を出すかもしれないだろうし、
enum Color color;とした場合、
「まともな」デバッガならば、colorの値を数値でない値で表示する
0578デフォルトの名無しさん
NGNGint* hoge;
とか書くことがあるけど、これをやってるとついうっかり
int* hoge, hoge2;
なんてやってしまいがちなので、個人的にはお勧めできないなあ。
0579デフォルトの名無しさん
NGNG>>572
そもそもコンパイラが警告(ウォーニング)のメッセージを
表示しているだろが (゚Д゚)ゴルァ
0580デフォルトの名無しさん
NGNGint main()
{
TEST test1, test2;
test1.x = 764; test1.y = -12; test1.z = 109;
test2.x = 764; test2.y = -12; test2.z = 109;
if (memcmp(&test1, &test2, sizeof(TEST)) == 0)
{
puts("等しい"); /* ●一致しない事もある● */
}
return 0;
}
typedef struct {char x; short y; char z;} TEST3;
この場合なら一致しない事があるのも判るけど、
上のソースで一致しない事もあるって本当ですか?
0581デフォルトの名無しさん
NGNG度々すいません
なぜコンパイラが警告のメッセージを表示しているのかが
疑問で仕方がないのです。
お願いします。
0582デフォルトの名無しさん
NGNGエラーメッセージくらい読めや。ゴルァ
0583デフォルトの名無しさん
NGNGなぜこのエラーになるのですか?
void hoge(int* arg)
{
arg = malloc(sizeof(int));
*arg = 7;
}
argはポインターだと思うのですが・・・・
本当にすいません
0584デフォルトの名無しさん
NGNGか?
0585デフォルトの名無しさん
NGNGmalloc()にプロトタイプ宣言がないので、intを返す関数ということに
されてしまったわけね。
#include <stdlib.h> を追加しましょう。
0586デフォルトの名無しさん
NGNG#include <stdlib.h>
void hoge(int* arg)
{
arg = (int*)malloc(sizeof(int));
*arg = 7;
}
int main(int argc, char* argv[])
{
int* cont;
hoge(cont);
printf("%d\n",cont);
}
本当にお世話になっています。
それでこれでの問題点はなんでしょうか?
よろしくお願いします。
0587デフォルトの名無しさん
NGNG一致するに決まてつるだろ・・・多分・・・ロートルに訊いたから・・・だいぶょうじだろう・・・
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG(int*)malloc(sizeof(int));
で確保したポインタが関数を抜けた時点で参照できなくなること。
例えば
void hoge(int arg) { arg = 7; }
int main(int argc, char* argv[])
{
int cont = 0;
hoge(cont);
printf("%d\n",cont);
}
とやっても7が出力されないのと同じ理由。
変数を関数内で書き換えたい場合、ポインタを使うように
ポインタを関数内で書き換えたい場合、ポインタポインタを使う。
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNGつーか、どこがおかしいのか(コンパイル時にワーニングがでるとか、
実行結果がこうなるはずがこうなってるとか)教えてクレヨン。
で、
int* cont;
で宣言しといて、
printf("%d\n",cont);
なわけ?
printf("%d\n",*cont);
っていうのは嫌?
0592デフォルトの名無しさん
NGNGTEST test1, test2; //この直後
memset(&test1,0,sizeof(TEST));
memset(&test2,0,sizeof(TEST));
これを挿入しとけばOK!
0593デフォルトの名無しさん
NGNGずばり、
printf("%d\n",sizeof(TEST));
きぼん。
0594デフォルトの名無しさん
NGNGやっと頭の中が整理できました。
心からありがとうございました。
0595デフォルトの名無しさん
NGNG確かにパディングの問題があるならそうするでしょうけど…。
>>593
typedef struct {short x; char y; char z;} TEST;
これだと4。
typedef struct {char x; short y; char z;} TEST;
これだと6。
サイズが4でも一致しない事があるのかなと…。
0596593
NGNGサイズが4でも一致しないことがあるとすれば、ふしぎだねー。
面白そうなので、else 追加して、そこでtest1,test2の内容を
1バイトずつ書き出してみよう。
0597デフォルトの名無しさん
NGNG一致しない事があるってのはポータビリティーがないってことなのでは?
0598デフォルトの名無しさん
NGNGあと /* ●一致しない事もある● */ と書いたのは
自分じゃないんです。紛らわしくてすみません。
ただ、こんな感じのソースを使うように言われたのですが、
そのまま使っても大丈夫なのか不安だったので…。
0599便乗スマソ
NGNGでもゴミが入らない環境でコンパイルした実行ファイルを
他の実行環境で走らせた場合はどうなんだろう?こりゃオレも知らんのよ(汗
0601デフォルトの名無しさん
NGNG0の時はelse以降で記述と書いてありましたが、こういうふうに厳密に覚えるもんなの?
他の参考書ではif(条件式)があってれば以下を実行、そうでなければelse以降に記述と
してあったけど、そう考えていればまずいことあるんですか?
0602デフォルトの名無しさん
NGNG勉強したてであるのなら、他の参考書のように把握していてかまわない。
しかし、あとになったら厳密な覚え方をしたほうがいい。
0604デフォルトの名無しさん
NGNGちょっと話し外れるが、
if(a=0)
↑こういう記述は間違いだからな。どういう動作をするか分からんぞ!
if(a==0)
↑正確にはこうだ。
0605デフォルトの名無しさん
NGNGif(i = 0) /* if(i == 0)ではない */
printf("if\n");
else
printf("else\n");
どっちのprintfが実行される?
i = 10;
if(0 < i < 15 ) /* if(0 < i && i < 15)ではない */
printf("if\n");
else
printf("else\n");
どっちのprintfが実行される?
0606デフォルトの名無しさん
NGNGif (!a) も危険ですか?
よく if (a)・if (!a) と書いてしまうのですが。。
0607601
NGNG上・・・printf("else\n");
(iに0を代入、評価した値は0であり、else以降が実行される)
下・・・printf("if\n");
if(0 < i < 15 ) を評価した値は1となり、非0の時実行されるprintf("if\n");が実行される)
多分こうだと思うんですが・・・
if(0 < i && i < 15)というのははじめて見ました。正直、意味がわかりません・・・
0608デフォルトの名無しさん
NGNG(´-`).。oO( 「while(1){hoge( );}」なんてゆーソースコードをよくみかけるからだろ?)
0609デフォルトの名無しさん
NGNG> 多分こうだと思うんですが・・・
正解
Cではif文中に条件式でない式を使うことも許される文法なので
(例えばi = 0は代入であり、条件式ではない)
正確に覚えた方が良い。
> if(0 < i && i < 15)というのははじめて見ました。正直、意味がわかりません・・・
日本語にすると「iが0を超え、かつiが15未満」の場合
iが1〜14だと真になる
0610デフォルトの名無しさん
NGNG辞典に
!a は 0 == a と等価って書いてあったよ。(なんでaが右に来るかの
積極的理由は不明)
0611601
NGNGなるほど。ありがとうございます。
2chで「明解」が薦められてる意味はそういうことだったんですね。
0612デフォルトの名無しさん
NGNG& - 論理積
if((0 < i) && (i < 15))
0613デフォルトの名無しさん
NGNGif (a == 0) の書き間違えで
if (a = 0) になるとコンパイルエラーにならないが(警告は出るかも)
普段から if (0 == a) ってやっとくと if (0 = a) でエラーになるから
致命傷にならなくて済む、って説明が「エキスパートCプログラミング」に
あったような。俺もそれ読んで一時期 if (0 == a) 使ってたけど、
すぐやめちゃった(なんか気持ち悪いから)
0614デフォルトの名無しさん
NGNGどうもありがとうございます。周りの誰に訊いてもわかりませんでした。
かなりC言語に詳しい方とお見受けします。
とはいうものの、せっかく説明していただいたのに、今ひとつ
分かっておりません。
>enum Color getColor(void);
>void setColor(enum Color);
>とすれば、見た目わかりやすくないか?
ちょっとこれ、わからないんですけど、これって、enumの
実体を関数に渡している、ってことですよね?
こんなことする必要がある時ってありますかね?
enumって構造体とかと違って、実体を宣言しなくても
つかえるじゃないですか?
例えば、
enum Color { red, green , blue } ;
ってヘッダに書いておけば、greenは1として使える。
関数に実体を渡すっていうことは、その関数が存在してるファイルは
このColorがどんなenumを知っている(宣言されてる)必要があるわけで、
だったら、わざわざ渡さなくてもgreenは1だということはわかってる
はずじゃないですか?
どういうときにenumの実体を宣言したり、関数に渡したりする必要が
あるんでしょう?
全然分からないです、enumは。
0615デフォルトの名無しさん
NGNGenum Boolean{false,true};
0616デフォルトの名無しさん
NGNG(´д`).。oO(またデスマーチだよ...)
(´∀`).。oO(ひろゆき逝け)
(´A`).。oO(ゴルァモルァフォルァ)
(´ω`).。oO(モキュ?)
0617デフォルトの名無しさん
NGNG「実体」じゃなくてタグ名な。単に名前を付けてるだけ。
で、Color と名前を付けることにどんなメリットがあるかというと、
「red, green, blue のいずれかの値を受け取る/返す関数」を
定義したいと思ったときに、いちいち
enum { red, green, blue } getColor(void);
void SetColor(enum { red, green, blue });
なんて書かずに済むこと。
0618デフォルトの名無しさん
NGNGほしかったよなあ。
enum Boolean { false, true } hoge;
とやっておくと、hogeはfalseかtrueしか取ることができないと思いきや、
この後で hoge = 100; とかやってもエラーにならないんだよね。
キャストしないと代入できないくらいの制限を付けてもよかったと
思うんだけど。
0620デフォルトの名無しさん
NGNG> if(a=0)
> ↑こういう記述は間違いだからな。どういう動作をするか分からんぞ!
> if(a==0)
> ↑正確にはこうだ。
全く別のコードだろ。
“どういう動作をするか分からん”って、aに0代入し
その評価値が0なんで偽として扱われるだけ。
右辺値が定数では意味の無いコード、と言うなら分かるが。
0621デフォルトの名無しさん
NGNG↑こういう記述は間違いだからな。
if(a!=0)
↑正確にはこうだ。
0622デフォルトの名無しさん
NGNGあ、なーるほど。理解しましたかもです。
いやいや、完全に勘違いしてました。
つまり、
>ちょっとこれ、わからないんですけど、これって、enumの
>実体を関数に渡している、ってことですよね?
ってのか根本的に勘違いでした。まあどういう勘違いをしていたのかを
書くとややこしくなるんで省略ですが。
ようするに、enumの建前は
enum Color { red, green , blue } color;
って書くと、colorにはredかgreenかblueしか代入できないよ、という
ことなんですね?(実際はできるけど)
なーるほど! 目から鱗です。
615さんの言うとおり、colorには実際int型の変数ならなんでも代入できるし、
color以外のint変数にもredもgreenもblueも代入できちゃうので、これって、
普通のint定数と、普通のint変数じゃん。なんのためにenumがあるんだ?
って感じで、全然意味が理解できてませんでした。
なーるほど! そうなんだ。
いやー、5年悩んでいたことがついに解決しました。どうもありがとうございました。
……この理解であってますよね?
わかってませんでした。
0623デフォルトの名無しさん
NGNGというわけで、>>618さん
激しく同意!!!!!!
0624デフォルトの名無しさん
NGNGcont の値を誰も決めていないぞ。
hoge(cont); で hoge の arg に入る値は、
cont の値 ≡ cont が指しているところ ≡ 初期化してないからゴミの値
だよ。
しかも、hoge() の中では、arg に渡された値を利用しないで
代入で上書きしちゃってる。
>>586 の hoge() がやってることは、「自分で勝手に確保した領域に 7 と書いて、
どこに書いたかは main() に教える手段を用意していない」ということになる。
main()からcontのアドレスを渡してない以上、hoge()の中で何をやっても cont の値は変わらないよ。
0625デフォルトの名無しさん
NGNG> キャストしないと代入できないくらいの制限を付けてもよかったと
> 思うんだけど。
ちなみにg++でコンパイルすると警告が出るぞ。
# 何故かgccでは-Wallを付けても正常にコンパイルする。
0626デフォルトの名無しさん
NGNGすみません、質問です。
以下のような、2次元配列を受け取るhoge()という
関数があった場合のことです。
main()
{
int a [2][3]={
{0,1,2} ,
{3,4,5}
} ;
hoge ( a ) ;
}
このhoge()の宣言方法は
void hoge ( int a [][ 3 ] )
という書き方しかできないですか?
なんだか、以前このような2次元配列を受け取るときには、
ポインタのポインタで受ければいい、という話を聞いたことが
あるような気がして、
void hoge ( int **a )
って書いたらwarningが出るので、あれ?って思っている
ところなんですが。
0627デフォルトの名無しさん
NGNGそら C と C++ の違いっしょ。
0628デフォルトの名無しさん
NGNG両方とも論理積じゃ違いが分からないよ(w
英語だと && はlogical andで & はbitwise andだが、日本語だと
どう表記するんだっけ。
そういや、&や|の演算での優先順位が妙に低いのも、Cの規格の困ったところだな。
うっかり、
if (a & 3 == 1)
なんて書くとはまる。
昔むかしのCで、&&や||を&や|で代用していたなごりらしいが。
0629デフォルトの名無しさん
NGNG> void hoge ( int a [][ 3 ] )
> という書き方しかできないですか?
そうです。ポインタのポインタじゃだめなのは、Cの2次元配列は、
「1次元配列へのポインタの配列」では「ない」から。
> int a [2][3]={
> {0,1,2} ,
> {3,4,5}
> } ;
この配列はメモリ上では、単にintの数が 0 1 2 3 4 5 と
並んで格納されているだけなので、列の数が分からないと
要素の位置が求められないからです。
0630デフォルトの名無しさん
NGNGありがとうございました! やっぱりそうですよね!
0631デフォルトの名無しさん
NGNGすみません、このスレ読んでいて、イマイチわからないところがあるのですが。
アドレスとポインタの区別が付いてません。
僕の理解では、アドレスを格納するものがポインタ、だと思ってました。
だから、a[5]という配列があったとしたら、単純に「a」とだけ書いたら、
それはポインタではなく、アドレスだと思ってました。
が、いろいろな入門書を見ると、「配列のカッコを取ると、それはその配列
へのポインタになる」と書いてありますし、このスレでもそんな感じに
話が進んでます。
この「a」っていうのは、ポインタなんでしょうか? 多分、ポインタとポインタ変数
も混同してるんじゃないかと自分では思ってるんですが。
アドレスとポインタってどう違うんでしょう?
0632デフォルトの名無しさん
NGNG変数というのは、
右辺値 値
左辺値 変数のアドレス
という二つの側面を持っている。これを区別しないと混乱する。(アドレス、という
のは広義のアドレスね。場合によってはオフセットだったりレジスタだったりする
が、細かいことはさておいてくれ)
さて
a = 1;
こう書いたときには a は「値」として評価されるのではなく、a という名前に対応
する「アドレス」 に 1 という「値」を書き込む。
printf("%d", a)
対して、こう書いたときには a は「値」として評価される。a という名前に対応す
るアドレスにかかれた情報を読み出し、それを出力する。
> アドレスを格納するものがポインタ
だいたい OK。厳密には、アドレスを格納する変数がポインタ変数。
> 「配列のカッコを取ると、それはその配列へのポインタになる」
配列変数を右辺値として評価すると、配列の先頭アドレスが得られる。配列変
数を左辺値として評価した場合、具体的には
int a[5];
a = ??:
みたいなコードを書いた場合にはポインタ変数とは全く振る舞いが異なる。だか
ら「配列のカッコを取ると、それはその配列へのポインタになる」というのは、間
違い。
0633デフォルトの名無しさん
NGNGそれはちょーかんたん。
アドレスを格納できるもの(変数とかメモリ空間とか)がポインタ。
アドレス自体はポインタじゃない。
a[5]の認識は、>>631で正しいはず。
間違ってたら訂正ヨロシコ。
0634デフォルトの名無しさん
NGNGいろいろな言い方をするのよ( ´ー`)
0635デフォルトの名無しさん
NGNGだいたい僕の認識であっていたのかな、という気がしています。
が、
>>635さんのおっしゃってることも非常に説得力がある気が
していて、なんか全部ひっくり返されたような気もしてます。
「ポインタ変数」の定義は「アドレスを格納できる変数」で
いいとしても、「ポインタ」って言葉の定義って実ははっきりは
なかったりするんでしょうか?「指すもの」くらいのもので。
0636デフォルトの名無しさん
NGNG634さんでした。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGconst char* p = "もうアフォかと";
const char* const p2 = "バカかと";
0641デフォルトの名無しさん
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
(´┏┓`)< 正直、意外な展開で2ちゃんねる閉鎖♪ なんちて。
( ) \_______
| ⊃|←カタークなる。
(__)_)
0642デフォルトの名無しさん
NGNGconst char* const p2 = "バカかと";
↑これはなんですか?p2が指す値だけでなくp2の値も変更できないという意味ですか?
0643デフォルトの名無しさん
NGNGNULLポインタとか。
でも訂正するつもりはありません。
適当に言っただけなので(w
0644637
NGNG0645デフォルトの名無しさん
NGNGlocaltime()の引数をtime_t型へのポインターにしたのは何故なのでしょうか。
ポインターでなければlocaltime(time(NULL))とかけるのに。
0647637
NGNGすまん。localtime()の引数の由来は知らんのだが、
man localtime したら
>>643
The function localtime() converts the time value pointed at by clock, and
returns a pointer to a ``struct tm'' ...
^^^^^^^^^^^^^^^^^
こんな例も見つけてしまった。
確かに「ポインターを返す」っていうけど、これって「アドレスを格納する
変数を返す」って意味じゃないもんなー。
0648デフォルトの名無しさん
NGNG詳しく手取り足取り指先まで紹介してるサイト教えてください。
0649デフォルトの名無しさん
NGNGツールありませんか?
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG整数や小数は何ケタまで求められるのでしょうか?
<float.h>の中にある以下の記述がそれを示していると思うのですが、僕はこれを見ても具体的な数字が理解できません。わかる方がいましたら教えてください。
#define DBL_DIG 15 /* # of decimal digits of precision */
#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
#define DBL_MANT_DIG 53 /* # of bits in mantissa */
#define DBL_MAX 1.7976931348623158e+308 /* max value */
#define DBL_MAX_10_EXP 308 /* max decimal exponent */
#define DBL_MAX_EXP 1024 /* max binary exponent */
#define DBL_MIN 2.2250738585072014e-308 /* min positive value */
#define DBL_MIN_10_EXP (-307) /* min decimal exponent */
#define DBL_MIN_EXP (-1021) /* min binary exponent */
#define _DBL_RADIX 2 /* exponent radix */
#define _DBL_ROUNDS 1 /* addition rounding: near */
0652デフォルトの名無しさん
NGNG> #define DBL_MIN_10_EXP (-307) /* min decimal exponent */
が10進数で書いたときの最大/最小桁数じゃろ。307桁くらい。
有効なのはそのうち上から15桁だか16桁程度。
0653デフォルトの名無しさん
NGNG#define DBL_MAX 1.7976931348623158e+308 /* max value */
#define DBL_MIN 2.2250738585072014e-308 /* min positive value */
まんま書いてあるじゃん。
桁数、15
最大値、1.7976931348623158x10^308
最小値、2.2250738585072014x10^-308
0654デフォルトの名無しさん
NGNG0655650
NGNGperl -npe "$_ =~ /nmake/make/gi;" か?
つか、メイクファイルをエクスポートする話だよな。
0656デフォルトの名無しさん
NGNGなぜ(g)makeを使いたいのだ?
VC++のIDEが吐いたMakefileをnmakeでコンパイルできるんならそれでいいだろう。
0657デフォルトの名無しさん
NGNG(´-`).。oO( BCB++5も、そうだろ?)
0658デフォルトの名無しさん
NGNG良いソースを読むのが上達の早道、と信じている私はとりあえず
FreeBSDのcatのソースを読み始めました。
そこでいきなりつまったのですが、73行目に次のようなものがありました。
int main __P((int argc, char *argv[]));
この後にmain関数があるのでこれはmain関数では無いとして、
mainと__Pの間のスペースは何なんでしょうか?
こんな関数宣言は勉強してるとき出て来なかったんですが...
それともう一つifndef lintというのがよく出てきますがlintとは何ですか?
こちらはあんまり本質的な問題じゃないので、できたら教えて頂きたい、てかんじですが。
0659デフォルトの名無しさん
NGNG多分、プロトタイプを許すかどうかで (int argc, char *argv) を
展開するかどうかを決めてるんじゃないかな、と。
lint ってのは文法チェッカ。
#ifndef lint
:
#endif
の間は、lint でチェックしないと。
0660658
NGNGありがとうございました。
多分includeしてるヘッダの中で宣言されているマクロなんでしょうね。
探してみます。
0661651
NGNG307桁もあるのに15桁しか有効で無いというのはどういう事なのですか?
あとその15桁のうち整数部分と小数部分の振り分けはそれぞれ何桁なのですか?
0662デフォルトの名無しさん
NGNG有効数字という概念について勉強しる。
浮動小数点の「浮動」とは何が浮動するのかについて考察しる。
0663デフォルトの名無しさん
NGNG「浮動小数点」を理解してないな。
浮動小数点は、数字を
仮数部 各桁の並び
指数部 小数点の位置
に分解して表現する。大雑把には、こんなイメージ。
浮動小数 = 仮数部 * 底^指数部
精度は指数部の桁数によって決まり、表現できる数の範囲は指数部の桁数に
よって決まる。
0664デフォルトの名無しさん
NGNG(;´д`).。oO( 「float」 と 「int」 って聞いたことないかな?)
0665デフォルトの名無しさん
NGNGヲイヲイ
結局精度を決めるのはどっちなんだとつっこんでおく。
0666デフォルトの名無しさん
NGNG浮動小数点を理解しているけど、質問をうまく日本語にできなかったと
仮定して答えるけど、
IEEE形式とIBM形式とも、仮数部の整数部分は0桁だよ。
仮数部の小数部分の桁数や精度などはこちらをどうぞ
http://www.ep.sci.hokudai.ac.jp/~yukiko/work/gtool/netCDF.htm
0667デフォルトの名無しさん
NGNG1 岡田
3 佐竹
2 飯島
こういう風に並んでいるのを、降順にしたいのですが
どうやって名前などをバッファに格納したらいいかなどが・・・分かりません
名前等が、プログラム内部に記述しているものならできるんですが・・・
0668デフォルトの名無しさん
NGNG固定長のバッファ
char buf[MAX_LEN];
とかに fgets(buf,MAX_LEN,fp) でよみこんでおいて、
char *names[MAX_NAMES];
で確保した配列に、
names[index++] = strdup(buf);
てなかんじで、bufを複製しつつその先頭アドレスをしまっていくのがいいよー。
0669デフォルトの名無しさん
NGNGただ、ちょっと自分には難しく思えて・・・
names[index++] = strdup(buf); このあたりもちょっと・・
0670デフォルトの名無しさん
NGNGうに?strdup()ならマニュアルに説明のってるでー。
ほかはどのへんが難しい?
0671デフォルトの名無しさん
NGNG早速なのですが、MAX_LENやMAX_NAMESなどは
#defineで値をあたえておくのですよね?
いくつくらい値を与えておくのか、なども・・・
0672デフォルトの名無しさん
NGNGそれは、あなたが処理するデータ次第でしょ。
名前だったら 32 バイトもとっておけば普通は間に合うと思われ。MAX_LEN
はデータ次第だが、量が予測できないのなら malloc/realloc で動的確保
やね。
0673デフォルトの名無しさん
NGNGそのtxt、データの位置は固定長?
あと何行くらいあるの?
0674671
NGNG約10〜15行で、位置は固定です
0675
NGNGそれとも別々の期間とったほうがいいでしょうか?
違いがよくわからんので、よろしければアドバイスください。
0676デフォルトの名無しさん
NGNG実際>667のような固定長ファイルなの?
1と岡田の間の全角スペースが気になるんですけど…。
あと、名前は全角で何文字分ですか?
0677671
NGNG↑半角スペースです
10 大山
こんな感じになります
名前だけだと、全角で6文字分ですが
数字も一緒に読み込むという形になると思います・・・
自分的には↓をベースにしようと思うのですが、ファイルopenやバッファに格納などが上手くいかないんです
#include <stdio.h>
#include <string.h>
#include <search.h>
int compare( const void *x, const void *y);
void main(){
char a[] = "1 岡田";
char b[] = "3 佐竹";
char c[] = "2 飯島";
char *table[3];
int i;
table[0] = a;
table[1] = b;
table[2] = c;
printf("ソート前\n");
for(i = 0; i<3; i++){
printf("%s\n", table[i]);
}
qsort(table, 3, sizeof( char *), compare);
printf("ソート後\n");
for(i = 0; i<3; i++){
printf("%s\n", table[i]);
}
}
int compare( const void *y, const void *x){
return strcmp( * (char **) x, * (char **) y);
}
0678デフォルトの名無しさん
NGNG>10 大山
名前の位置はずれる事あるのね!
01岡田
10大山
ならよかったのに…。
あとソートしたら
"3 佐竹" "2 飯島" "10 大山" "1 岡田"って順にならない?
0679671
NGNGおっしゃる通り
01岡田
10大山
でした、お手数をおかけして申し訳ありません
0680デフォルトの名無しさん
NGNGint num;
char name[6]; // '\0'入れて[6 + 1]なのかな?
} Chimako;
内部、こんな感じに変更するわけにはいきません?
"01岡田"みたいに文字列でくっついてないとダメなの?
0681671
NGNG01(半角スペース)岡田
という感じで、これひとつで一行ということです
0682デフォルトの名無しさん
NGNGあるファイルで
char a[10];
と宣言されている変数があったとして
他のファイルで
extern *a;
と宣言した後に
a[3]
をアクセスしたらどうなるでしょうか?
0683デフォルトの名無しさん
NGNG漏れの経験から言うと、悲しいことになる。
0684デフォルトの名無しさん
NGNG0685680
NGNG#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_NAMES 6
typedef struct {char num[2]; char _space[1]; char name[MAX_NAMES]; char lfcr[2];} TXTBUF;
typedef struct {int num; char name[MAX_NAMES + 1];} Meibo;
#define Val(s) _Val((s), sizeof(s))
static int _Val(const char * s, int l) {
char buf[128]/* かなり適当 */; memcpy(buf, s, l); buf[l] = '\0'; return (atoi(buf));
}
int compare(const void *y, const void *x) {
Meibo* m1 = (Meibo*)y; Meibo* m2 = (Meibo*)x; return m1->num < m2->num;
}
void main() {
//ファイルオープンもリードも成功するものとして、エラーチェックは無視しました。
Meibo meibo[15]; TXTBUF txtbuf;
FILE* fp;
int i, n;
fp = fopen("名簿.txt", "r");
n = (int)(filelength(fileno(fp)) / sizeof(TXTBUF));
for (i = 0; i < n; i++) {
fseek(fp, (long)sizeof(TXTBUF) * i, SEEK_SET);
fread(&txtbuf, sizeof(char), sizeof(TXTBUF), fp);
meibo[i].num = Val(txtbuf.num);
memcpy(meibo[i].name, txtbuf.name, MAX_NAMES);
meibo[i].name[MAX_NAMES] = '\0';
}
fclose(fp);
printf("ソート前\n");
for(i = 0; i < n; i++)
printf("%02d - %s\n", meibo[i].num, meibo[i].name);
qsort((void*)meibo, n, sizeof(Meibo), compare);
printf("ソート後\n");
for(i = 0; i < n; i++)
printf("%02d - %s\n", meibo[i].num, meibo[i].name);
}
言葉で説明するのムズイ・・・ソースで勘弁してください
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG少なくとも「C言語で卵焼きを作るのは無理だ」という結論がどこかで出ていたような。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG元気弾て?
0690デフォルトの名無しさん
NGNG答え:血をみる事になる
0691デフォルトの名無しさん
NGNG=========
01 岡田
03 佐竹
02 飯島
10 大山
=========
名前が全角2文字の場合
3文字目に全角スペースがちゃんと入ってないと
そのコードではダメだろうね
0692671
NGNGソースまで作って頂けるなんて光栄の至りです
ただ・・・自分のコンパイラではエラーが出てしまって良くわかりませんでした
お気持ち、大変ありがたく頂戴いたします
0693デフォルトの名無しさん
NGNGTABのかわりに全角スペースが入ってるから
エラーになったんじゃない?
0694デフォルトの名無しさん
NGNGそう。そのままだとウチのVCでは↓が大量にでる。
\___test.cpp(68) : error C2018: 文字 '0x81' は認識できません。
0695デフォルトの名無しさん
NGNG\___test.cpp(68) : error C2018: 文字 '0x40' は認識できません。
0696デフォルトの名無しさん
NGNG0697671
NGNGほぼ名簿の人数は表示されてました
ただ、ソートのほうが上手くいってないみたいでした
ソート前とソート後の表示が同じで・・・
0698デフォルトの名無しさん
NGNGえ?表示はどうなってます?こちらではソートできてますよ。
ソート前
01 - 岡田
03 - 佐竹
02 - 飯島
10 - 大竹
ソート後
10 - 大竹
03 - 佐竹
02 - 飯島
01 - 岡田
0699671
NGNGスペースで調節しました
完全な固定長として読み込みました
皆さん、貴重なレスの数々を誠に有難う御座いました
0700デフォルトの名無しさん
NGNG漏れは君の質問に感謝する
0701
NGNG他のファイルでchar a[10];と定義し、extern char *a;と宣言し、
それをa[3]のようにアクセスした場合には、どうも下の動きになる
ようです。(ある本に書いてあった。)
1 シンボルaが指すアドレスを取得し、そこに格納されているポインタを取り出す
2 ポインタの値に、添字のオフセットを加える
3 計算で得られたアドレスにアクセスする
ここの1の所で、文字型配列なのにポインタと思い込んでアクセスする
為にこんな現象が発生するとのことです。
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNGファイルにされ、配列に入れられ、ソートされ…。
0704デフォルトの名無しさん
NGNGあなた”岡田”だったら最悪だね!
0705デフォルトの名無しさん
NGNG作ってわかるCプログラミングってお勧め書なの?
0706デフォルトの名無しさん
NGNGお勧めだ。
買って読んで作者にファンレター出せ。
誤記や誤字を見つけたらついでに教えてやれ。
0707デフォルトの名無しさん
NGNGなんで固定長にするかなぁ
fgets()とsscanf()にしようよ。
0708デフォルトの名無しさん
NGNGおもしろい!その理由は?
0709デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGelse ;
でけたよ・・すげー。
0712デフォルトの名無しさん
NGNGなる!
で?固定長をやめてfgets()とsscanf()にしたい理由をどうぞ?
0713707,668
NGNGえ?
そのほうがデータファイル書くとき楽だし、読み込むのも楽じゃん。
fgets(buf,100,stdin);
sscanf(buf,"%d %s",&(meibo[i].num),meibo[i].name);
はだめ?
0715デフォルトの名無しさん
NGNGなる!
住所・電話番号・家族とかいろんな情報があるとしたら固定長リー
ドの方がいいんじゃない?って考えなら気のきいたサンプルだな!
と思ったんだけどね〜っていうかまんまパクったし(w
0716デフォルトの名無しさん
NGNGランダム初期化のsrand(time(NULL))を
各サブルーチンにあるrand()に適応させたい場合ってどうやってやりますか?
サブルーチンに飛ぶたびに初期化すると、rand()がばらつかないので、少々不便です。
用途はシューティングの色々です。いい方法ありませんか?
お願いします。
0717デフォルトの名無しさん
NGNG> 各サブルーチンにあるrand()に適応
日本語が意味不明です。
0718デフォルトの名無しさん
NGNGよくわからんが、srand()は最初に1回だけやればいいんだよー。
0719716
NGNGsrand()のrand()に関係あるところはグローバルなのかな?
>717
この場合どういう言い回しがいいか良くわからないので、そういってみたんですが、
0721デフォルトの名無しさん
NGNG複数の独立した乱数系列を扱いたいって話か?
rand_rとかerand48とかがライブラリにあったらそれ使えばいいと思う。
0722716
NGNGなるほど、参考になります。
>721
いや、偏らない乱数がサブルーチンでも取れれば何でもいいので、
そういった、高級なもんでもないです。
でも、いつか使う日が来るかもしれないので、心にとめておきます。
レスありがとう。
0723705
NGNG作って分かるCプログラミングの方は立ち読みした感じと
>706の『誤記』と言う部分が気になったので保留。
0724デフォルトの名無しさん
NGNGがんばれ〜。
K&Rを理解できれば、結構実力つくと思う。
ちなみに、K&Rを理解するための解説書ってのもあるらしいので、
困ったらそちらもどうぞ。
0725デフォルトの名無しさん
NGNGこの時
gcc main.c liblary.c -o hoge.exe
とするとmainで必要とされている関数のみがhoge.exeにリンクされ実体がコピーされるのですか?
それともliblaryの全てがhoge.exeに含まれてしまうのでしょうか?
お願いします。
0726デフォルトの名無しさん
NGNGその場合は全部デーす。
普通のいわゆるライブラリは、ちっちゃい *.o ファイルをいっぱいあつめて
ライブラリとして *.a とかにするのよ。で、libmylib.a てのがあるとすると
gcc main.c -lmylib -o hoge.exe
すると、libmylib.a から、必要な *.o だけチョイスしてリンクしてくれるよー。
なので、ごちょっとまとめた liblary.c(.o) を作っちゃうのはあんまりよくないよ。
0727初心者
NGNG説明しているHPってありませんか?。
お勧めがあれば教えてほしいです。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGCVS鯖の用意をするとか、
バックアップ態勢を整えるとか、
バグ管理DBを持ち出してくるとか、
いろいろすることはあるだろう。
0730デフォルトの名無しさん
NGNG特にデフォルト状態から追加しなきゃいけないものはないと思うよ。
cc -v
って動けば、問題なす。
0731デフォルトの名無しさん
NGNG> あちこちからライブラリとってくるとか、
Linux だとデフォルトで開発環境が入らんディストリビューションもあるからな。
ただ、それはディストリビューション依存だから、ここで聞くより Linux 板あたり
のディストリビューションごとのスレで聞いた方が良いと思われ。
(っつか開発者として使うなら Linux より *BSD の方が楽だぞ)
> CVS鯖の用意
一人で使うなら、共用のサーバーは要らん。環境変数 CVSROOT 設定して
cvs -init で終わりだ。それ以上は google 行けば解説がいくらでも見つかる。
> バグ管理DBを持ち出してくるとか、
それは「C言語はじめたい」っつーのとは、またずいぶんとベクトルが違うよう
な。個人作業ならテキストファイルに箇条書きするか、Excel でも使って表に
しときゃ良いって。
本格的にやるなら gnats とか、いくつか選択肢はあるが。(ちなみに、市販の
ものは高いぞ)
0732初心者
NGNGVC++でしかCをやった事なかったもんで
アホな質問してしまいました。
0733デフォルトの名無しさん
NGNG解かりやすいご解答をありがとうございました。
0734417
NGNGprintf(" "" ");
出はエラーが出てしまいます
¥をうまくつかうのでしょうか?
0735デフォルトの名無しさん
NGNG0736417
NGNG0737デフォルトの名無しさん
NGNG| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|人に聞く前に調べろ!|
|_________|
∧∧ ||
( ゚д゚) ||
/ づΦ
1:コンセントを入れてない。
2:放送局からとんでもなく遠くて電波の届かないところにすんでいる。
3:中古で故障品を買った。
4:アンテナが針金
5:裏にMADE IN JAMAICAと書いてある
6:よく見るとメーカー名がS.ONY。
7:リモコンの電池が腐敗している。
8:ブラウン管の中に人が居る。
9:よく見るとブラウン管以外の部品が何一つ無い
10:よく考えたら箱から出してない。
0738デフォルトの名無しさん
NGNG頻繁に参照する場合、データを固定長と可変長のどちらで
格納したほうが速いのでしょうか。
0739デフォルトの名無しさん
NGNG固定でもいいんじゃん?
0740デフォルトの名無しさん
NGNG5にワラタ
0741デフォルトの名無しさん
NGNGデータはドコから読み込むの?ファイル?
0742デフォルトの名無しさん
NGNG心の中から読みます。
0743738
NGNG>>741
ファイルです。
実行開始時に一括してメモリにロードし、
その中身は変更せずに読み出すだけで
ひたすら処理に利用します。
固定長だとメモリが無駄になり遅くなるかと思ったんですけど
0744デフォルトの名無しさん
NGNGひたすら処理、ってのが不思議ワードです。
0745デフォルトの名無しさん
NGNGそのへんの、メモリに読み込むポリシーは、データサイズにかなり依存すると思う。
できるだけファイルを一括して読み込まず、必要なぶんだけ適宜ロード
するようにしたほうが、スケーラビリティ高くなるよ。
ひたすら処理ってのは、読み込んだファイルを先頭から末尾まで
何度も「繰り返し」走査して使用するって意味なら、まぁ一括ロードも
しかたないと思われ。その際は、ファイルに記録してあるデータが
可変長なら当然可変長にしたほうがいいでしょう。
0746738
NGNG0747デフォルトの名無しさん
NGNG簡単な例でいいからソースきぼん
0748教えれ
NGNGコンパイラはLIS C-86試食版だ。
無理なのか?これでは。
具体的なソースもきぼん
0749デフォルトの名無しさん
NGNG画面に蛍光ペンであらかじめ線を引いておく。
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG新制品ですか?
0753デフォルトの名無しさん
NGNG| | ̄| |
| | | |
| | ̄ ̄ ̄ ̄ ̄ ̄ | |
| | | |
| | | |
| | お | |
| | 好 | ―|
| | み .| ↑ |
| | ソ .| 切 |
| | | .| 口 |
| | ス | |
| | | |
| | | |
| |_______| |
| |
|__________|
0754デフォルトの名無しさん
NGNG>新制品ですか?
ふつうに考えろよ。しかも漢字まちがってるし
0755デフォルトの名無しさん
NGNGカラー表示はprintfでできるでしょ!
0756デフォルトの名無しさん
NGNGエスケープシーケンスが使える環境なら良いが、Windows 2000 とかだと NG
だな。Console API 呼び出さんとダメだから Win32 対応のコンパイラが必要
になる。
0757デフォルトの名無しさん
NGNG暗記のクイズゲームを作りたいのですが、それまでの流れが上に表示されていて消すことができません。
それまでの表示をすきなタイミングで消すことはできますか?
おねがいします。
0758デフォルトの名無しさん
NGNGコンソールですか?
CLSみたいなのがほしいの?
0759デフォルトの名無しさん
NGNG作ったプログラムを実行すると黒い画面に白い文字でいろいろとながれるじゃないですか?
それをけして、いってみれば同じ場所に文字が表示されていくようにしたいのです。
0760デフォルトの名無しさん
NGNG>表示をすきなタイミングで消す
CTRL+ALT+DELで消せます。
0761デフォルトの名無しさん
NGNGCONFIG.NTに
devicehigh=%SystemRoot%\system32\ansi.sys
追加するだけでは?
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNGコンソールとはCの最初に書く
#include
のことです。
0764デフォルトの名無しさん
NGNGそれはC++じゃないとできません。
0765デフォルトの名無しさん
NGNG関数でそんな仕事をするものはないですか?たとえば
・
・
・
/*ここまでいろいろな作業をしてきて*/
ここでその関数をつかうとそれまでの黒画面にある白文字が全部消えて
・
・
・
みたいな・・・
0766デフォルトの名無しさん
NGNG>759君
printf("\x1B[2J");
これで解決しませんか?
0767デフォルトの名無しさん
NGNGこっちのほうが確実。
0768デフォルトの名無しさん
NGNGなんかJAVAの話をしてる奴がいるよ・・
0769デフォルトの名無しさん
NGNG実行結果
[2J(その後の文字列)
となってしまいます。
0770デフォルトの名無しさん
NGNGだから766は大うそつきなんだって。
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGC++じゃないとできません。
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG757がキライなのか・・・
766で消去できるぞ!
0775デフォルトの名無しさん
NGNG基本的な質問すぎてもうしわけないのですが
CとC++とはどの程度ちがいますか?C++にいくにはやはりCをしっかりマスターしてからのほうがいいのですよね?
LSI C-86はC++のコンパイラではないですよね?
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGそれを使った具体的なソースを見せていただけませんか?
かんたんなものでいいので。
できればおねがいします
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGしなくても大丈夫!逆にC言語の方が難しいよ!
0780デフォルトの名無しさん
NGNG時代はC#!
0781デフォルトの名無しさん
NGNG本当ですか?
今はCの入門書をマスターしたくらいのレベルです。
簡単なプログラムが書けます。
C++についてのいい書籍やHPご存じでしたら教えていただけませんか?
またC++の利点はなにですか?
0782デフォルトの名無しさん
NGNG>Cの入門書をマスターしたくらいの
しとらん
0783デフォルトの名無しさん
NGNGなんかエスケープシーケンス祭りなのか・・・
↓ここみて、「色」とか「カーソル」とかをキーワードに探すのが吉。
http://www.google.com/search?hl=ja&q=%83G%83X%83P%81%5B%83v%83V%81%5B%83P%83%93%83X%81@%90F%81@%83J%81%5B%83%5C%83%8B&lr=
0784デフォルトの名無しさん
NGNGint main() {
puts("あいうえぽ");
printf("\x1B[2J");
return 0;
}
で試してみたんだけど、「あいうえぽ」って表示されないよ!
つ事は、消去できたんだろう。
0785デフォルトの名無しさん
NGNG0786738
NGNGdata[データの個数][Y][X]
幅はYが24固定、Xが8から24で可変の2次元データを数百個ほど。
固定なら
data = calloc(データの個数*24*24 ,1);
可変なら
data = calloc(データの個数 ,sizeof(char *));
for(i=0 ;i<データの個数 ;i++){
data[i] = calloc(24*Xの幅 ,1);
}
でメモリを確保することになると思うんですけど
アクセスはどっちが速いんですか?
0787デフォルトの名無しさん
NGNG気をつけろ!
これを実行するとOSが壊れることがあるぞ!
なんてやつだ!
0788デフォルトの名無しさん
NGNGマジで落ちる(NT系限定)やつあるけど、>>784はおちねーだろ。
0789デフォルトの名無しさん
NGNGC++の部分って、cinとcoutだけだった・・・。
0790デフォルトの名無しさん
NGNGすみません。僕のではでてしまいます。。。
コンパイラは何をお使いですか?OSはXPなんですが何か影響などあるのでしょうか?
僕のはLSI C-86試食版なのですが・・・
0791デフォルトの名無しさん
NGNG何だと!C++はダメだって〜のかぁあああ!
>781
C++の利点・・・なんだろう?
>782
何故わかる!
>787
だんだん君が好きになってきた・・・うふふ・・・
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNGおめえの目は節穴か?
まず、ansi.sysをぶっこめって言ったろ?
0794デフォルトの名無しさん
NGNGCloneCDを入れていると、うまくCが動かないことがある。
0795デフォルトの名無しさん
NGNG画面制御DLLが感染してるかも。
0796デフォルトの名無しさん
NGNGすみません・・・
どこに入力するのですか?関数の前でしょうか?
0797デフォルトの名無しさん
NGNGシミュレーションとかFFT等、スピードが要求される場合、つまり
速度>メモリ効率
なら迷わず固定でよろしく。
0798デフォルトの名無しさん
NGNG入れてはダメです。
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNGC++は基地外の匂いがするのじゃああ〜〜
言語仕様に萌えが入りすぎなのだあ。
C#!クリーンなる新世界を!
JAVAによる約束は破られたが、C#は諸君を裏切らない。
0802デフォルトの名無しさん
NGNG>>761をよっく見れ。
0803デフォルトの名無しさん
NGNGゴルァァァァ!
0804デフォルトの名無しさん
NGNGえ?マジ?
0805デフォルトの名無しさん
NGNGC++の利点は
毎日プログラムを書くたびにプログラムのパズルが堪能できます。
人生の苦悩も味わえます。
0806デフォルトの名無しさん
NGNGそんなに初心者のOSをぶっ潰したいか!
0808デフォルトの名無しさん
NGNG言うほど速度はかわらんきもしますが・・
データサイズが結構あった場合は、キャッシュに入る入らないも
関係するだろうし。
0809デフォルトの名無しさん
NGNG基地外だと!でもC++ゲンガーは基地外じゃねぇぞ!
>738のサンプルはstd::vectorでやろうかな?
ん〜??まず専用のクラスを作って〜!??
それからテンプレートで〜!?
みたいに、C++らしく書こうとする自分に陶酔するくらいだ!
わっはっはっは!
0810デフォルトの名無しさん
NGNGいや、C++の仕様がクソだと言われても私は反論できないと思うのだ。
0811デフォルトの名無しさん
NGNGまぁそうなんだけど、速度が要求される場合、
ホットスポット(?)を高速化しとく癖をつけるのはいいとおもう。
わずかな違いでも、ループ回数が多ければ塵も積もればだし。
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGプログラミング言語 C++ と C++ Primer でも買って来い。そのぐらいの金を
惜しむヤツに C++ 使うのは無理だぞ。
0814デフォルトの名無しさん
NGNG万能君:http://www.google.ne.jp
0815デフォルトの名無しさん
NGNGhttp://www.2ch.net/
0816デフォルトの名無しさん
NGNGここへお行き
何でも答えてくれるかどうかまでは謎だけど
ここで【C++】の文字を見ると破棄怪我するんだ
0817デフォルトの名無しさん
NGNG地球環境にも良くない。
先祖のタタリもこわい。
AIDSにかかった人もいる。
危ないからC++はやめときなさい。
0818デフォルトの名無しさん
NGNGhttp://www-h.eng.cam.ac.uk/help/tpl/languages/C++/doc/doc.html
0819デフォルトの名無しさん
NGNG/ /_ ⊂ノ | ヽヽ |\
/ / / i 、、 | ヽヽ |\ | \
/ / \ \ Λ_Λ ド ド |ヽ |\ | |
/ / \ \(;´Д`)
/ / ヽ ⌒\
/ ノ 厨房 /> > ∧∧∧∧∧∧∧∧∧∧∧∧∧
/ / 6三ノ < >
/ / \ \ ` ̄ < 逃げろォぉぉーーー!!! >
― / ん、 \ \ < >
―― (__ ( > ) ∨∨∨∨∨∨∨∨∨∨∨∨V
⌒ヽ ’ ・`し' / / ビクッ ∧ ∧ ∧ ∧
人, ’ ’, ( ̄ / ((( ))) Σ(゚Д゚;≡;゚д゚)
Y⌒ヽ)⌒ヽ、 ) | 〜 (; ´Д`) ./ つSつ
\_つ 〜 / つP _つ 〜(_⌒ヽ
〜 人 Y )ノ `J
し'(_)
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG技術書/専門書って、実は厚い方が易しかったりするぞ。薄いヤツは内容を
端折ってるか、説明がすっとばしてあるから。
0822デフォルトの名無しさん
NGNGゴルァァァァ!
0823デフォルトの名無しさん
NGNG乱暴・・・
0824デフォルトの名無しさん
NGNG要求仕様書は満たしておるわ!
しかもバカ向けというおまけ付きでな!
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNGC++を使うと、ガンになるぞ。
地球環境にも良くない。
先祖のタタリもこわい。
AIDSにかかった人もいる。
危ないからC++はやめときなさい。
0827デフォルトの名無しさん
NGNGputchar('\b');
ゴルァァァ!
0828デフォルトの名無しさん
NGNG少なくともおめぇはC++ゴルァじゃねえな?
0829デフォルトの名無しさん
NGNGだっふんだっ!
0830デフォルトの名無しさん
NGNGとかやってみたい今日この頃・・・・
誰かrootで実行してみてくれねーかなー。
0831デフォルトの名無しさん
NGNGバカ向けって言うなよ。。。
だっふんだ!
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNG0835829
NGNG君はC++アイーン?
じゃなかったら、だっふんだっ!禁止!
だっふんだっ!
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNG./ ../ だっふんだゴルァ.exe
0839デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1010414590/
0840デフォルトの名無しさん
NGNGハァ?
0841デフォルトの名無しさん
NGNGだっふんだっ!
0842デフォルトの名無しさん
NGNGゴルァが逝ってどうすんだよ。。。
荒せと?
だっふんだ!
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNGdiff
0850デフォルトの名無しさん
NGNG演算子オーバーロード
0851デフォルトの名無しさん
NGNGテンプレート
0852デフォルトの名無しさん
NGNGtypedef struct
{
int year;
int month;
int dayl
} date;
date型のd1とd2があって、if (d1 > d2) のような比較をやりたいのです。
できれば高速な方法が知りたいです。
0853デフォルトの名無しさん
NGNG/ / )))) オシエテ〜、ハァハァ |
/ /_ ⊂ノ | ヽヽ |\
/ / / i 、、 | ヽヽ |\ | \
/ / \ \ Λ_Λ ド ド |ヽ |\ | |
/ / \ \(;´Д`)
/ / ヽ ⌒\
/ ノ 厨房 /> > ∧∧∧∧∧∧∧∧∧∧∧∧∧
/ / 6三ノ < >
/ / \ \ ` ̄ < 逃げろォぉぉーーー!!! >
― / ん、 \ \ < >
―― (__ ( > ) ∨∨∨∨∨∨∨∨∨∨∨∨V
⌒ヽ ’ ・`し' / / ビクッ ∧ ∧ ∧ ∧
人, ’ ’, ( ̄ / ((( ))) Σ(゚Д゚;≡;゚д゚)
Y⌒ヽ)⌒ヽ、 ) | 〜 (; ´Д`) ./ つSつ
\_つ 〜 / つP _つ 〜(_⌒ヽ
〜 人 Y )ノ `J
し'(_)
0854デフォルトの名無しさん
NGNGそもそも構造体を使わない
0855デフォルトの名無しさん
NGNGint dayl -> day;
です。
0856デフォルトの名無しさん
NGNGmemcmp
0857デフォルトの名無しさん
NGNG普通に比較すれ
0858デフォルトの名無しさん
NGNGC++じゃないとできません
0859デフォルトの名無しさん
NGNGCONFIG.NTに
devicehigh=%SystemRoot%\system32\ansi.sys
追加するだけでは?
0860デフォルトの名無しさん
NGNGそれはif を連発するより遅い!
0861デフォルトの名無しさん
NGNGC++でのやり方オシエテ〜、ハァハァ
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNG0864852
NGNGそんなでいっちょ〜まえに⊂言語を使ってゐつもり?
0865デフォルトの名無しさん
NGNGえすてぃ〜え〜る!
えすてぃ〜え〜る!
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG>できれば高速な方法が
インラインアセンブラ
0869デフォルトの名無しさん
NGNG本当はもっと、int ID;とかchar class;とか16ほどあるのです。
memcmpは580さんのやりとりに、ゴミが入るから一致しない
とか書いてあったから避けたいと思ってます。
よろしくおねがいします。
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNGインラインアセンブラも理解できません。
ごめんなさい。
これしか高速にする方法はないのでしょうか?
0872デフォルトの名無しさん
NGNGDIFF
0873デフォルトの名無しさん
NGNGそうなの?単純にCMPSになるんじゃないんだ…
0874デフォルトの名無しさん
NGNGalignを1バイトに(鬱
0875デフォルトの名無しさん
NGNGyaccというのを使うと速くできるよ
0876デフォルトの名無しさん
NGNGif (d1.year > d2.year) {
return 1;
} else if (d1.year < d2.year) {
return -1;
}
みたいにifステートメントを繰り返す方がいい!
案外速いよ!
memcmpよりもいいよ!
0877デフォルトの名無しさん
NGNG「2次導関数」
です
0878デフォルトの名無しさん
NGNG>高速な方法
一番速いCPUに載せかえる
0879デフォルトの名無しさん
NGNG計算する。
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG厨房発見。
Cが解らないのですか?
それともRuby基地外(藁
0882デフォルトの名無しさん
NGNGすべてマジレスですが何か?
0883デフォルトの名無しさん
NGNGいいえC++アイーソです(藁
0884デフォルトの名無しさん
NGNGものすごいハイレベルな回答。次期ANSIに採用したいような素晴らしい提案も
沢山あった。とくにC++からポインタをなくそうという一連の熱い議論は凄かった。
>>879 なんて凄いぞ、この世のすべての計算を高速化する方法を
かれは惜しげもなくここに書きこんでくれたのだ。
神ですよ、神。
自宅の近くにブラックホールがある人はぜひとも高速化の恩恵に
あずかってほしい。
0885デフォルトの名無しさん
NGNGたしかブラックホールからの距離が2kmを超えるとスピードがガクンと落ちるんだよね。
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGほんと微妙だけど、memcmpよりそれのが速い事が多い。
ってもう漏れもマジレスするわ。
いいかげん飽きてきた。
0888デフォルトの名無しさん
NGNGつうか、なんでこんな質問ばっかりするんだ。
聞く意味がわからん。
0889デフォルトの名無しさん
NGNG終了
0890デフォルトの名無しさん
NGNGもっとオシエテ厨かも〜ん!
なんでも聞いてくれや
俺はまだ残るぞ
0891デフォルトの名無しさん
NGNGそれは自分で調べるより他人に聞いた方がいいから。
0892デフォルトの名無しさん
NGNG構造体を使うってきいたんですけど・・
0893デフォルトの名無しさん
NGNGランがF5で・・・あっウチのMSXのはなしですが
0894デフォルトの名無しさん
NGNG音楽家、ハイドンとかと同じ流派。
0895デフォルトの名無しさん
NGNGC++じゃないと使えません。
0896デフォルトの名無しさん
NGNGBufferの方がイイに決まってる
二分木パルティータは素晴らしい
0897デフォルトの名無しさん
NGNGワンパく坊やめが!
0898デフォルトの名無しさん
NGNGえすてぃ〜え〜る!
えすてぃ〜え〜る!
0899デフォルトの名無しさん
NGNGいきてんのか?
0900デフォルトの名無しさん
NGNG試験が終わって浮かれてる or 絶望してる学生の群れか?
0901デフォルトの名無しさん
NGNGたぶん祭りです。
0902デフォルトの名無しさん
NGNGSTLの事なら何でも聞け!
0903デフォルトの名無しさん
NGNGあれはネタだと思うに100円
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNGLISPのマクロのほうが凄いわ、
青二才は寝てろ!
0906デフォルトの名無しさん
NGNGゴル・・ァ・・・・・
ついに読んでもらえなかった・・
0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNG動くの?それ?
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG風呂に水をたっぷりいれて、鋭い刃物を用いましょう。
0912デフォルトの名無しさん
NGNG>LISPのマクロのほうが凄いわ、
どの辺が凄いの?
#青二才って昔はよくきいたな〜、どんな意味だったかしら^^;
0913デフォルトの名無しさん
NGNG変態っぷり
0914デフォルトの名無しさん
NGNG構造体にポインターが入るとリストっぽくなります。
新だおじいちゃんの遺言によると、そうらしい。
0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNGそんなことも知らなかったの(プププ
低能Winプログラマーは社会のクズ(プ
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNGいまだにSTLをつかっている厨房発見(プププ
クソ言語C++でクソゲイツにお布施ですか?(プ
0919教えたがり厨房
NGNGint ddiff(date *p1, date *p2) { /* バグってても知らん */
int diff;
if ((diff = p1->year - p2->year) == 0) {
if ((diff = p1->month - p2->month) == 0) {
diff = p1->day - p2->day;
}
}
return diff;
}
0920やっぱり厨はダメだね
NGNG>>919 は >>876 宛てじゃなくて >>852 だ
0921デフォルトの名無しさん
NGNG==0 じゃなくて ! ではダメか?
#Cには疎い通りかかりの人間
0922デフォルトの名無しさん
NGNGなんで C++ 使うとゲイツが関係するんだ?
0923デフォルトの名無しさん
NGNGreturn !(!(p1->year - p2->year))*(!(p1->month - p2->month))*(!(p1->day - p2->day))
かなり自身が無いらしい
0924デフォルトの名無しさん
NGNG盆暗だからほっといてあげて!!
0925デフォルトの名無しさん
NGNG>869を見てみ!
日付以外に16データ程あるそうな
これならどうする?
0926デフォルトの名無しさん
NGNG0928919
NGNGd1 と d2 のどっちがデカイ(未来なの)かを知りたかったら、
俺みたいに 正/零/負 の3種類の値を返したほうがいいぜ。(strcmp() と同じだな。)
同じか、違うかだけを知りたいなら >>923 や >> 926 がシンプルでいいね。
0929919
NGNGreturn (p1->year == p2->year) && (p1->month == p2->month) && (p1->day == p2->day);
でいいじゃん。寝よう...
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG田舎もんがっ!
0933デフォルトの名無しさん
NGNGそれは「他のメンバも比較に必要(順序の決定に意味を持つ)」という意味?
もしそうなら、関係のあるメンバを逐一比較するより仕方あるまい。
(関数の名前も変えたほうがいいな。>>919 は日付の比較をするつもりしかない関数名だ。)
>>930 が気になるなら、return の連発と比べて好きなほうでやりゃええ。
int xdiff(xx_t *p1, xx_t *p2) { /* もはや日付ではないので構造体名も変えろや*/
int diff; /* 比較の順序にも気をつけろよ */
if (!(diff = p1->ID - p2->ID)) return diff; /* ID が最も重要なら最初に見れ */
if (!(diff = p1->year - p2->year)) return diff;
if (!(diff = p1->month - p2->month)) return diff;
if (!(diff = p1->day - p2->day)) return diff;
/* 以下同様。文字列のメンバがあるなら diff = strcmp(p1->ss, p2->ss) とでもすれ */
}
/* 大小が気にならないなら >>923 風でいけるのは同様 */
0934デフォルトの名無しさん
NGNG日付型程度ならmemcmpが最速
次が>876のやつ
最低が・・・>919だったよ!
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNGそれは出題(質問)者に言って頂戴
0937デフォルトの名無しさん
NGNG>日付型程度ならmemcmpが最速
日付が同じ場合の時だけだ
日付が違うと>876が最速
意外だな・・・
0938デフォルトの名無しさん
NGNG>919の方が速くなるハズだけど?
うまく最適化できればね。
0939デフォルトの名無しさん
NGNG日付けから先に比較しれ。
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNGmemcmp()より他の2つのほうが2・3倍速くなるんちゃう?
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG0944日下部圭子
NGNGすみやかな移行をお願いします。
http://pc.2ch.net/test/read.cgi/tech/1013990673/l50
0945デフォルトの名無しさん
NGNGtime_t 使えよ (゚Д゚)ゴルァ
0946デフォルトの名無しさん
NGNGが正解に近い。
何で日付の要素をばらばらに比較するという発想しかでてこないのか・・・
比較したい要素のうち、最小単位にマップしろ。
通常は秒にするだろうが、別に日でもかまわん。
0947デフォルトの名無しさん
NGNG「根本から考え直せゴルァ」は、答になってない場合も多い。
0948デフォルトの名無しさん
NGNG>日→月→年の順ってことね。
この順番で調べたら、結局全部調べないと行けないから早くはならないと思うが。
0949940
NGNG年、月が同じで日が違う比較と、月、日が同じで年が違う比較と、どっちが多いかってよーな問題だしょ。
0950デフォルトの名無しさん
NGNG大小比較をするなら、全部比較しなくちゃっていう意味ね。
ゴメソ。
>>940は同じかどうかの話だったの忘れてたよ(つか、引用しれ>俺)
0951デフォルトの名無しさん
NGNGC++なんだから、mutableなユリウス日コンテナと、validフラグを
組み合わせて、operator == の前にそのあたりをホゲれば
いいんでないのか?
0952デフォルトの名無しさん
NGNGできますか?できるならどのような方法でしょうか
おねがいします。
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1013990673/l50
0955デフォルトの名無しさん
NGNGあとはsage進行で。
C言語なら、俺に聞け! <13> By ハイソサエティーハッカー日下部陽一
http://pc.2ch.net/test/read.cgi/tech/1013990673/l50
レス数が950を超えています。1000を超えると書き込みができなくなります。