【初心者歓迎】C/C++室 Ver.12【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【歴代スレ】
1:http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
2:http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
3:http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
4:http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
5:http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (dat落ち)
6:http://pc5.2ch.net/test/read.cgi/tech/1082182233/(dat落ち)
7:http://pc5.2ch.net/test/read.cgi/tech/1086373839/(dat落ち)
8:http://pc5.2ch.net/test/read.cgi/tech/1091264964/(dat落ち)
9:http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
10:http://pc5.2ch.net/test/read.cgi/tech/1097416187/
11:http://pc5.2ch.net/test/read.cgi/tech/1099190154/
【ラウンジ】質問、回答が長い時はココを使うと見やすい
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
関連スレは>>2-5ぐらい
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG★初心者にVisual C++を教えるスレ★ Part15
http://pc5.2ch.net/test/read.cgi/tech/1097880265/l50
■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/l50
C++Builder相談室 Part12
http://pc5.2ch.net/test/read.cgi/tech/1099238936/l50
GCCについて part4
http://pc5.2ch.net/test/read.cgi/tech/1090062751/l50
cygwin + mingwn + gcc 相談室
http://pc5.2ch.net/test/read.cgi/tech/1058134693/l50
タダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/l50
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/l50
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
Turbo C++ 5.0 プログラミング
http://pc5.2ch.net/test/read.cgi/tech/1030878794/l50
0004デフォルトの名無しさん
NGNGC言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100956766/l50
C++相談室 part37
http://pc5.2ch.net/test/read.cgi/tech/1098543578/l50
プログラマー軍団がC/C++の宿題を解決します 34代目
http://pc5.2ch.net/test/read.cgi/tech/1100530682/l50
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/l50
C++は難しすぎ 難易度:2
http://pc5.2ch.net/test/read.cgi/tech/1071697977/l50
C言語の第一歩
http://pc5.2ch.net/test/read.cgi/tech/1031374980/l50
0005デフォルトの名無しさん
NGNG★C言語で遊ぼう!★
http://pc5.2ch.net/test/read.cgi/tech/1028269762/l50
プリプロセッサについて熱く語るスレ。
http://pc5.2ch.net/test/read.cgi/tech/1058203590/l50
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/l50
フリーコンパイラー使えよ。
http://pc5.2ch.net/test/read.cgi/tech/1061384369/l50
C、C++の最適化について語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1084676298/l50
ラウンジでC言語
http://etc3.2ch.net/test/read.cgi/entrance/1093006298/l50
0006986=991=993
NGNG書いてから言うのもなんだけど、fgetc()の仕様忘れてるから適当に書いちゃったよw
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG--
#define PARAMETER_NUMBER 162905984
#include <stdio.h>
char parameter[PARAMETER_NUMBER];
int main(void)
{
printf("%d\n", sizeof(parameter));
}
--
上記プログラム(といえるほどのものではありませんが)をgccでコンパイルして実行したところ
正常にsizeofの結果を表示してくれるのですが、
#define行を
#define PARAMETER_NUMBER 162905985
とするとコンパイルできるものの実行してもsizeofの結果を返してくれません。
この問題を回避する方法、つまり
グローバル変数領域を確保し、かつ正常にプログラムを実行する方法を
教えていただけませんでしょうか。
メモリは不足していない(と思います)し、また同じプログラムをlinuxやsolarisでコンパイルした場合は
同様の現象は再現できません。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNGこっちの方が気になって仕方が無い
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGVisual Windows for BC++
BC++5.5用ウィンドウズ統合開発環境(Borland C++ Compiler 5.5付)
と
C/C++統合開発環境 WideStudio for WIN32
C/C++/Perl/Ruby/Python によるGUIアプリケーション統合開発環境
は、本屋でよく売っているようなC言語の本。たとえば、
「猫でもわかるC言語プログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/4797325089/qid=1101141909/br=1-1/ref=br_lf_b_0/250-1392570-1726612
を買えば、ソフトの使い方の違いはあっても
使えるものでしょうか?
0017デフォルトの名無しさん
NGNGどのような組み合わせで買うのがいいですか?
一応大学の理系学部生です。
0018デフォルトの名無しさん
NGNG日本語喋れ
>>17
実際に見てみて自分に合うやつを一冊買ってそれ仕上げればいいんじゃないか?
0019デフォルトの名無しさん
NGNG初心者用の本ならどれも内容はだいたい同じ。書いてあるコードもどんな環境でも通るもののはず。気に入ったものでよいのでは?
定番の本(CならいまだにK&R?)は読んで損はないと思うが、最初からそれだけで理解しやすいかはかなり疑問。
最終的にGUIプロミングがやりたいのであっても、楽をしようとして、いきなりwindowsプログラミングや
C++の本だけ買うのは、おすすめしない。たぶん挫折するし、楽がしたければVB等を覚える方ががマシだと思う
0020デフォルトの名無しさん
NGNGncbを1度消してビルドしなおしてもだめでした。
どうすれば検索できるようになりますか?
0021デフォルトの名無しさん
NGNGMinGW(gcc3.4.2)でも動いた
char parameter[PARAMETER_NUMBER] = { 1 }; で初期化したら
巨大な .exe が生成されたがそれでも 162905985 が出力された
0022モウモウ
NGNG.ncb は VC でプロジェクトを開いている間じゅうロックされるので、
検索することはできないと思いますよ。
プロジェクトを閉じれば検索できるでしょう。
(.ncb がどういうファイルなのか知ることのほうが先かも)
0023デフォルトの名無しさん
NGNGttp://v.isp.2ch.net/up/3cc2006c584d.txt
↑のプログラムをコンパイルしたら
エラー E2206 report-b.c 29: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 report-b.c 29: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2379 report-b.c 34: ステートメントにセミコロン(;)がない(関数 main )
エラー E2379 report-b.c 35: ステートメントにセミコロン(;)がない(関数 main )
と、エラーがでて困っています。
しかし、素人目で見て何が間違っているのか、というより合っているはずなのに…と
なって先に進めず、どうすればいいのかがわかりません。
申し訳ありませんが、ここがおかしいからこのエラーが出ると指摘してもらえませんでしょうか?
お願いしますm(_ _)m
ちなみにOSはXP homeでエディタにはAOKさんのC言語を始めよう!というのを使用させて
貰ってます。
0024デフォルトの名無しさん
NGNGありがとうございます。
とりあえず、自分に合いそうなダイテルとK&Rを買うつもりでヨドバシまで行ってきます。
0025デフォルトの名無しさん
NGNG29行目に全角のスペースを使ってるのと、
C言語では
2sin(s)のような直感的な書き方は出来ず、
r / (2*sin(s))と書かなきゃいけない
0026デフォルトの名無しさん
NGNG素早い返答ありがとうございます!
おかげさまでちゃんとコンパイルすることができました。
これで続きを書くことが出来ます。本当にありがとうございましたm(_ _)m
0027デフォルトの名無しさん
NGNGそのエディタに2バイト空白を見せる機能がないなら捨てることをお勧めしておく。
ついでに言えば、タブ文字や改行文字も見えるほうがいい。
0028デフォルトの名無しさん
NGNGメモ帳ってどうやって棄てればいいですか?
0029デフォルトの名無しさん
NGNGVisualStudioのエディタもデフォルトでは表示してくれないわけだが(´・ω・`)
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGそれがどうかしましたか?
0033デフォルトの名無しさん
NGNG.txt っていうファイルを開くとエラーが出てくるようになりました
0034デフォルトの名無しさん
NGNG. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 世の中、メモ帳だけじゃねえんだ
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ 適当なエディタにでも乗り換えろ
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
0035デフォルトの名無しさん
NGNG1.ドキュメントの 1 行目の左余白に、次の拡張子を入力します。ピリオドを忘れないでください。
.LOG
2.[ファイル] メニューの [名前を付けて保存] をクリックします。
注
このドキュメントを開くたびに、コンピュータの内部時計の日付と時刻がドキュメントの最後に書き込まれます
0036デフォルトの名無しさん
NGNGオスキナモノ ドウゾ
(=゚ω゚)っ[ edlin, ed ]
0037デフォルトの名無しさん
NGNGttp://www.vector.co.jp/soft/win95/writing/se041174.html
ttp://www.vector.co.jp/soft/win95/writing/se215749.html
0038デフォルトの名無しさん
NGNGhttp://www.vector.co.jp/soft/win95/writing/se041174.html
http://www.vector.co.jp/soft/win95/writing/se215749.html
0039デフォルトの名無しさん
NGNG.log 小文字だと出ないね
0040デフォルトの名無しさん
NGNGありがとうございます。
便利だからこれからもメモ帳使うことにしますた
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG(Windowsなら)
0043デフォルトの名無しさん
NGNGどのような意味があるか教えてください。
例
li.push_back(line.length() > 80 ? line.substr(0, 80) : line);
0044デフォルトの名無しさん
NGNGA ? B : C
Aを評価し、真ならBを、偽ならCを評価する。
0045デフォルトの名無しさん
NGNG> 例
> li.push_back(line.length() > 80 ? line.substr(0, 80) : line);
li.push_backに渡される引数が、line.length() > 80の評価結果によって
変化する。
line.length() > 80がTRUEであれば、line.substr(0, 80)
line.length() > 80がFALSEであれば、lineが引数として渡される。
って、丁寧に説明書いて手気づいたのだが、これって、
最近そこらにマルチされてるテキスト行長によるソートの
課題の一部なのでは、、、、
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1100530682/303
0048●
NGNG0050デフォルトの名無しさん
NGNG>118
ちょと解読&考えてみた。
・作業用に最大80個のファイルを作成する
・文字の数によって、1〜80の作業ファイルのいずれかに追記する。
何文字の行があるのか0と1で表す配列で持つ(領域80個)
・行数の少ないところから、作業用ファイルの最初から、順に出力する
これ、メモリほとんど使わないYo!
0051デフォルトの名無しさん
NGNG005247
NGNGlist<>.sort()は安定的。
23.2.2.4 list operations -31
Notes: Stable: the relative order of the equivalent elements is preserved.
0053デフォルトの名無しさん
NGNGstd::list::sort 自体が stable だったのか にゃんにゃん
0054デフォルトの名無しさん
NGNGつー事は多分内部的にはマージソートだにゃ
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGつ�I
0057デフォルトの名無しさん
NGNGその要素の番号をiteratorで指さなきゃならないと思うのですが、
今、別のint型のvector B に、削除したいVector Aの要素の番号が
何個か入っているとしたら、どんな感じで書けばよいのでしょうか。
vectorBの内容はvectorAのサイズ内の数値が
(5,2,4,8)等のように適当に入っています。
0058デフォルトの名無しさん
NGNGvector<int>::iterator end = B.end();
for (; it != end; ++it)
A.erase(A.begin() + *it);
0059デフォルトの名無しさん
NGNGそれ先頭から削除されるたびにインデックスがズレてバグらないか
0060デフォルトの名無しさん
NGNG効率悪いけど
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGちょっと違うことで質問があります
今メモ帳を使ってプログラム書いてるのですが
誤字や;の付け忘れなどがあった時
コンパイル前にその誤字の部分が赤く又は色がついて表示される
エディタって無いものでしょうか?
0063デフォルトの名無しさん
NGNGそんな細かいことをいちいち質問する気か
0064デフォルトの名無しさん
NGNGもう少しかじれ
>>62
画面のプロパティ→デザイン→ウインドウの文字 を赤にする
0065デフォルトの名無しさん
NGNG>>62
メモ帳ではなく、統合開発環境を使え。エディタの問題ではない。
0066デフォルトの名無しさん
NGNG>>65
サンクス
BCC Devを使ったりしてるんだけど
何かいまいちなのよね
Visual C++.netは使いやすいです?
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGAPIスレで答えは出ているじゃないか。
0069デフォルトの名無しさん
NGNGなんで?
使いやすいエディタ使えばいいじゃん。
0071デフォルトの名無しさん
NGNGシンタックスエラーを色分け表示してくれるエディタなんてあるの?
0073デフォルトの名無しさん
NGNGコンパイル前に、だからエディタでの話でしょ。
しかし、「;付け忘れ」を判定するのは難しそうだが。そういうエディタは実際あるんですか?
;付ける間まで注意表示みたいなのをいちいち出されるのもウザそう。
0074デフォルトの名無しさん
NGNGWM_PAINT:
としようとして
WM_PAIMT:
にしてしまったら Mもところだけ色がつくとか
そういう機能がついている物
なさそう?
0075デフォルトの名無しさん
NGNG付いたような。VS 2005だけだっけか?
0076デフォルトの名無しさん
NGNGemacsやその派生ならできるでしょ。
マクロを書く必要はあるけど。
ただ、>>62に使いこなせないのは間違いない。
もちろん俺にも使いこなせない。
>>74
そういう場合にMのところだけに色ってのは難しいと思うけど、
あらかじめ登録した語の色を変える機能がついたエディタは多いから、
主要なメッセージ名や構造体名は登録しておいたらいいんでは?
0077デフォルトの名無しさん
NGNGVS.NET2002、2003でもVC#では出るんじゃないかな
0078デフォルトの名無しさん
NGNG後は辞書をカスタマイズすれば無問題。
0079デフォルトの名無しさん
NGNGa[1]=1
a[2]=2
a[3]=3
という配列があるとします
この配列のa[1]=1がいらなくなったので
a[0]=0
a[1]=2
a[2]=3
のように効率よく変換できる方法ってないのでしょうか?
頻繁にこういう操作を繰り返さないとだめなんで…
0080デフォルトの名無しさん
NGNGC++なら問答無用でstd::list
0081デフォルトの名無しさん
NGNGご返答有り難うございます
std::listを調べてみます
0082デフォルトの名無しさん
NGNG勉強するのは無理ですかね?
0083デフォルトの名無しさん
NGNG両方並行して
0084デフォルトの名無しさん
NGNG今クラスである語が終盤を迎えていて来週から言語なんですが、
さっぱり分からずって感じです。独学でならそのようにできると思うのですが・・・
とりあえずある語を完璧に理解することは必要ということですよね?
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGどっかの低級PGが勝手に実装してくれるもの
自分は使い方だけ知ってりゃいい。
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG結局ある語的思想がないと言語は扱えないってことですよね?
0090デフォルトの名無しさん
NGNGお前の言ってるある語って具体的に何よ。
0091デフォルトの名無しさん
NGNG学生身分に答えていただいてすいません
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG使えます
0097デフォルトの名無しさん
NGNGもちろん使えますよ。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG使えます
0100デフォルトの名無しさん
NGNGつかえないのは
あなた自身です
0101デフォルトの名無しさん
NGNG空気読め
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNGなんだかアルゴリズムの意味自体よく分かってなさそうだが
お前の言うアルゴリズムはプログラマにとって絶対必要なものではないかもしれない。
けれどお前がテスト通るためには必要なんだろ。だったらあきらめて勉強しろ
0104デフォルトの名無しさん
NGNG辞書の内容を覚えていなくてもいい
辞書のひき方を覚えていればいいのだ
って言葉を思い出した
0105デフォルトの名無しさん
NGNG社会人になったらその辞書をすぐに引き出せるようにしてればいい
みたいなのだよね
話は戻って、アルゴリズムは快適になるための道具
プログラムを組むには必須ではないけど、あれば便利
なので、プログラムになれてきたらその必要性を感じて来るんジャマイカ?
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNGこれが原因でなくても(勉強中は特に)、
コンパイラのオプションで、警告は最大にしておくこと。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNGのにはどうすればいいんですか?
0112デフォルトの名無しさん
NGNGCでfprint等を使ったやつです。
0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG遅くなりました。
#include <stdio.h>
#define N 5
main()
{
float data[N];
int i,ndata=N;
char filename[100];
FILE *fp;
printf("input filename =");
scanf("%s",filename);
fscanf(fp,"%5d\n",&ndata);
printf("%5d\n",ndata);
for(i=0;i<ndata;i++){
fscanf(fp,"%f %f",&data[i]);
printf("%5.1f %5.1f\n",data[i]);
}
fclose(fp);
}
0115デフォルトの名無しさん
NGNG微妙すぎるw
・fp いつオープンする?
・scanf() %5dの5は必要?
・%f%f なにがしたいの?
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGとりあえず突っ込むところ多すぎ。初心者用の本を読み直しましょう。
それと、読み取るファイルの内容や、どのように表示したいかも書かないと答えにくいよ。
学校の宿題なら専用スレへどうぞ
0118デフォルトの名無しさん
NGNGポインタの書籍で柴田さんと前橋さんの書籍がありますが
どちらの方がおすすめですか?
0119デフォルトの名無しさん
NGNG愚問だな
両方買って自分で考えろ
0120デフォルトの名無しさん
NGNGなかなか使いやすいじゃない
コンパイルエラーのところダブルクリックするとそこに飛んでくれるし
Ctrl+F5でテストランが出来るのがすげぇ
メモ帳+コマンドプロンプトでやってたときがバカばかしいな・・・
0121デフォルトの名無しさん
NGNGネタだとしてもおもしろくない
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGそれが喪前にとってのVC++.netの価値なわけだな。
マクロエディタと同程度か。
0125デフォルトの名無しさん
NGNG入門者なんだろ。その調子で頑張れ。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGそのうちWINではC++覚える利点が全く無くなったりしてな。
ま、俺は当分MFCとCOMでやっていくつもり。
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGpthread_killを使いたいのですが、その生成したスレッドだけでなく、
mainまで死にます。
mainは生かしたままで、そのスレッドのみ殺すにはどうすればいいでしょうか。
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGpthread_create(&th, ...);
です。
pthread_kill(th, 9);
で、mainまで落ちます。
0134デフォルトの名無しさん
NGNGwhile(!kbhit());
と等価なLINUX+gccのコードを教えてくだされ。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGint kbhitForLinux(void);
while (!kbhitForLinux());
/* ここにkbhitForLinux()の実装を書こうとしたが余白が足りないので割愛 */
0137デフォルトの名無しさん
NGNGフェルマーみたいな奴だな
0138デフォルトの名無しさん
NGNGC programming language
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGgcc固有じゃないよ
0141デフォルトの名無しさん
NGNGローマ字だけでオナニーできるって聞いたんですが
本当なんですか?
0142デフォルトの名無しさん
NGNG@
/(x)/
y
| |
これで抜けます。
0143デフォルトの名無しさん
NGNG/(x)/
y
| |
0144デフォルトの名無しさん
NGNG私的解釈として
変数名や関数名にローマ字で宣言してるソースを見て
ナニってるということにしますた(`・ω・´)
0145デフォルトの名無しさん
NGNGローマ字以外の何で宣言するの?
アンダーバーと数字だけ?
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGローマ字=ローマ字綴りと私的解釈をしたわけで…(´・ω・`)
0150デフォルトの名無しさん
NGNGいろいろ検索してみたのですが、どうもやり方の書いてあるところを発見できませんでした。
教えてください!
OSはXPで、BCCを使っています。
0151デフォルトの名無しさん
NGNGWindows プログラミングを勉強しないとだめかな。
簡単なライブラリならそこらへんに落ちてるかもしれませんが。
0152デフォルトの名無しさん
NGNG手っ取り早くグラフを書きたいだけならテキストでデータを吐き出して
グラフィックはグラフソフト(Excel gnuplot R)に任せるとか?
Excelみたいにウィンドウにグラフを表示したいんならこれじゃだめだけど
0153デフォルトの名無しさん
NGNGただ、Cが"まとも"に出来ればの話だが
OpenGLスレ
http://pc5.2ch.net/test/read.cgi/tech/1100085657/
0154デフォルトの名無しさん
NGNGまだ全くの初心者なので、とりあえず、Windowsプログラミングを勉強してみます!
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGどうせすぐに変わるものなんだから。
本質でもないし。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGSDKとMFCと.net Frameworkのどれがいいんでしょうか?
楽なほうがいいんだけど。
0160デフォルトの名無しさん
NGNG一番楽なのは .net Framework だろう。
その次に MFC で、最後に SDK。
WTL というものもあるが。
0161デフォルトの名無しさん
NGNGそういうのが可能だとしたら、どうやって宣言を書けばよいでしょうか。
0162デフォルトの名無しさん
NGNG0163161
NGNGありがとうございます。VC6++使ってるんですが、
std::vector<std::set<int> >
↑のスペースって必要なんでしょうか?
ただの「決まり」ってことで覚えればよいですか?
スペース入れないとコンパイルエラー、
入れると警告が沢山出るもののエラーはでません。
0164デフォルトの名無しさん
NGNGスペース入れないとコンパイルエラーになるのは、>> 演算子と解釈されるから
0165デフォルトの名無しさん
NGNGtypedef std::set<int> set_int;
std::vector<set_int>
0167デフォルトの名無しさん
NGNGSetTimer(1, 10, 0) として、10ミリ秒ごとに OnTimer を実行させているのですが、
計測したところ1秒間に64回ほどしか実行されていませんでした。
これはPCの処理能力の問題なのでしょうか? それとも SetTimer の精度の問題でしょうか?
WM_TIMER メッセージがメッセージキューにたまっているようには見えませんでした。
また、これを解決して確実に1秒間に100回処理を行なわせる方法はないでしょうか?
0168デフォルトの名無しさん
NGNG皆様に助けてもらいたいのですが、今,VC++6.0 MFCでプログラム
を作成しています。
VC++6.0 MFCの月間予定表を使用し、日付を選択させれたら
テキストに年と週番号を表示するプログラムを作成しています。
ですが、どうしても、選択した日付が表示されません。
ソースは
SYSTEMTIME tm;
CString strYear; // 表示用文字列
CTime t; // 時間を扱うクラス
t = m_month.GetCurSel(&tm);
strYear = t.Format("%Y%U");//
m_ed1.SetWindowText(strYear); // 表示
を実行すると例えば2004年11月26日を選択しても1970と表示されます。
休日ですがみなさんのお力を私に貸してください。
お願いします。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGない
0171デフォルトの名無しさん
NGNG精度の問題、そもそもWM_TIMERメッセージの優先度も低い。
精度の高い処理を行いたいなら、TimeGetTimeなりを使うと良いよ
0172デフォルトの名無しさん
NGNGなんだそれ?
よくそこまででたらめに作れるな。
関数の仕様ぐらい嫁
0173デフォルトの名無しさん
NGNGなんだそれ?
よくマルチにレス出来るな。
板の仕様ぐらい嫁
0174デフォルトの名無しさん
NGNG.net frameworkが一番楽なのはいいけれど
覚えやすさで言えば次はsdkだろ。ひたすら細かい処理書かないといけないから面倒なだけで
使い方自体は覚えやすいと思うぞ
それよりもMFCの方がクラスライブラリの仕様とか理解するのが初心者には面倒だと思う。
意味も分からず、こう書けって説明するなら楽だが。
0176デフォルトの名無しさん
NGNGできれば、コマンドプロンプトで実行した時に表示される内容も取り込めるとよいのですが。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGDOS窓非表示の設定があるな
オープンソースだしソース見ればわかるだろう
0181デフォルトの名無しさん
NGNGソース=ドキュメントですね(`・ω・´)
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNGwsprintf(str, "%d",num);
MessageBox(hwnd,str,"suuji",MB_OK);
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGC++は難しすぎ 難易度:2
http://pc5.2ch.net/test/read.cgi/tech/1071697977/504
0187183
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGそこだけじゃなく、あちこち書いているっぽい。
>>183
>188も言うようにマルチはダメ。
VC++でもコンソールアプリにしておけば普通にprintf()も使える。
GUIでやりたいのかCUIでやりたいのか、そこをはっきりさせた方がいい。
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG勝手にいじるな
以上
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGぐぐる、Windowsサービス
0194194
NGNGmainとファンクションを5つほどつくりました。
mainではファンクション1だけを呼び出します。
ファンクション1の中で必要に応じてファンクション2〜5を呼び出したいのですが、
全部実行されてしまいます。
どのようにすれば個別のファンクションだけ呼び出せますか?
今はこんな感じです。
main
{Function1()}
Function1()
{int chose;
if(chose =2)
Function2()
if(chose=3)
Function3()
・・・・・
それぞれのファンクションではテキストファイルを読み込み
それをブラウザに表示させる動作を行います。
テキストファイルを表示語はファンクション1にもどりたいです。
上手く説明できなくて申し訳ありませんが、どなたか解決方法を教えてください。
環境はDevC++のバージョン4.0です。
0195デフォルトの名無しさん
NGNG初心者がよくやる間違い。
0196194
NGNGvoid Function1() 今はこのようになってます。
{int chose; これで2を入力するとファンクション2にいけるのですが
if(chose =2) 3を入力してもファンクション2にいってしまいます。
{Function2()} なぜなのかわかりません。
elseif(chose=3)
{Function3()}
ファンクション1〜5はすべてvoidです。
0197デフォルトの名無しさん
NGNG「if (chose = 2) 〜」は「chose = 2; if (chose) 〜」と同じ意味。
「if (2) 〜」は「if (true) 〜」と同じ意味。よって「〜」は常に実行される。
君、いくら何でも素質ないよ?
0198194
NGNG変えてみましたが変化がありません、もう少し詳しく書いてみます。
main{ Function1()}
void Function1()
{int chose =0; cin >> chose;
if(chose =2)
{Function2();} こんな感じです。
else if(chose =3) それともう一つ質問ですが、
{Function3()} Function2〜5からFunction1に帰りたいのですが
そのような場合はどうすればいいのでしょうか?
return Function1();をFunction2()にいれて見ましたが反応してません。
0199デフォルトの名無しさん
NGNG0200194
NGNG素質がないのはわかってます。
ご指摘どうも。
やりたくなくてもやらなくてはならないのでやってます。
switchつかったほうがめんどくさくないですかね?
0202デフォルトの名無しさん
NGNG↑ ↑
=がひとつ!! =がふたつ!!!!!!!
0203デフォルトの名無しさん
NGNGいいかげんにしる!
=は代入だっつってるだろ
int main(void) {
Function1();
return 0;
}
void Function1(void) {
int chose = 0;
cin >> chose;
if(chose == 2) Function2();
else if(chose == 3) Function3();
}
0204デフォルトの名無しさん
NGNGクリックリしたい・・・。
0205デフォルトの名無しさん
NGNGstdout, in, errをパイプで繋ぐ。
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG#include "io.h" /* or -I/path/to/src <io.h> */
#inlcude "utils.h"
#include "private.h"
と
#include "xyz_io.h"
#include "xyz_utils.h"
#include "xyz_private.h"
のどちらが好ましいか、と聞きたくなったのです。
それとも
src/ *.c ソースファイル
include/
include/xyz/ *.h ヘッダファイル
のようなディレクトリ構成にして
#include <xyz/private.h> /* -I/path/to/include */
の用にした方がよいでしょうか?
0209デフォルトの名無しさん
NGNG好みで決めればいいんじゃない?
大きめのプロジェクトなら後者が多い気はするけど。
0210デフォルトの名無しさん
NGNG後者ってのはディレクトリで分ける方な!
0212デフォルトの名無しさん
NGNG>>211
ところで main に型書かなくても動くのか?
あと、初心者だから仕方ないけど、
インデントとか空白も意識しような。
色々なパターンがあってどれがいいとは言えないけど、
ひとつのプロジェクト内では統一するに越したことはない。
0213デフォルトの名無しさん
NGNG関数の戻り値の方なら書かなくても動く。
がしかし、>194はそれ以前にプログラムとしては省略しすぎなので評価する意味がない。
0214デフォルトの名無しさん
NGNGお前も初心者だろ。
0215デフォルトの名無しさん
NGNGそのクラスにvectorのメンバ変数が存在します。
このままだと普通に保存できないんですが、どうしたらいいんでしょうか?
このvector変数はprivateになってます。
STLのスレに書いたんですが誰も来ないのでこっちにしました
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGもう滅ぼされてます;; なので助けてください
0218デフォルトの名無しさん
NGNGおいらが回答しようかと思ってたんだが…
マルチポストしたから、もう回答してやんない。残念でした。
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG演算結果に 1.#QNB
と出るのですが何を意味しているのでしょうか?
とんでもなく大きな数字にでもなってしまったとかですか?
コンパイラVisual C++ 6.0を使っています。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG"A"のASCIIコード+1番目の配列ということでしょうか?
0223デフォルトの名無しさん
NGNGそれに+1なのでAのあとの\0を指すポインタが[]内の式の結果。
式全体の意味は無茶苦茶。多分単なるバグ。
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG寝ている赤ちゃん
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGかっわい〜!
GJ!
GJ!
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG"A"のことを語っているのに
必死で反論しているのは恥ずかしいぜ
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGa[ 'A' + 1 ]
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGどなたかご教授願います.
template <class T> class Hoge
{
public:
T *GetNext(void);
private:
T *abc;
}
T *Hoge<class T>::GetNext(void)
{
return abc->GetNext();//不可能?
}
GetNext()を実装した型をTとして渡しても
こういった使い方は出来ないものなんでしょうか?
0237デフォルトの名無しさん
NGNGあと void は消せ
0238デフォルトの名無しさん
NGNGにするか、
T *abc; の private: を public: にするか、
どっちかだろ?
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241236
NGNG書き直したので何卒もう一度お願いします。
class HogeNode
{
public:
void SetNext(HogeNode *next) {this->next = next;}
private:
HogeNode *next;
}
template <class T> class HogeList
{
public:
void Add(T *t);
private:
T *first;
T *last;
}
void Hoge<class T>::Add(T *t)
{
last->SetNext(t);//不可能?
last = t;
}
こんな感じで匿名(?)のTのメンバ関数を呼ぶことは不可能なのでしょうか?
0242236
NGNGではなく
void HogeList<class T>::Add(T *t)
でした... すみません
0243デフォルトの名無しさん
NGNG可能
>>242
>void HogeList<class T>::Add(T *t)
void HogeList<T>::Add(T *t)
だよ
0244236
NGNG<T>に変えてみたのですがコンパイルで蹴られてしまいます
error C2027: 認識できない型 'T' が使われています。
もしかして別の問題なのでしょうか?
ちなみにコンパイラはVC7.1です
0245デフォルトの名無しさん
NGNGこれでどうだ?
class HogeNode
{
public:
void SetNext(HogeNode *next) {this->next = next;}
private:
HogeNode *next;
};
template <class T> class HogeList
{
public:
void Add(T *t);
private:
T *first;
T *last;
};
template <class T>
void HogeList<T>::Add(T *t)
{
last->SetNext(t);//不可能?
last = t;
}
0247デフォルトの名無しさん
NGNG>ますます別の問題のような気がしてきました...
そう思う
>error LNK2019: 未解決の外部シンボル
のあとは?
0248236
NGNGhogeList = new HogeList<HogeNode>();
という風に書いています.
0249236
NGNG続きはこんな感じです.
Test error LNK2019: 未解決の外部シンボル "public: __thiscall HogeList<class HogeNode>::HogeList<class HogeNode>(void)" (??0?$HogeList@VHogeNode@@@@QAE@XZ) が関数 "public: __thiscall Test::Test(void)" (??0Test@@QAE@XZ) で参照されました。
0250デフォルトの名無しさん
NGNG>public: __thiscall HogeList<class HogeNode>::HogeList<class HogeNode>(void)
これはHogeListのコンストラクタだよね
Test::Test(void)の実装が書かれたファイル名と245の内容が書かれたファイル名は?
それと
> template <class T>
> void HogeList<T>::Add(T *t)
> {
> last->SetNext(t);//不可能?
> last = t;
> }
は
template <class T>
inline
void HogeList<T>::Add(T *t)
{
last->SetNext(t);//不可能?
last = t;
}
に
0251236
NGNGHogeListに書いていたコンストラクタを消して
コンパイラに自動生成してもらったらビルドできました
ということはコンストラクタの書き方が間違ってたっぽいです
この場合コンストラクタはどう書けばいいのでしょうか?
> それと
> > template <class T>
> > void HogeList<T>::Add(T *t)
> > {
> > last->SetNext(t);//不可能?
> > last = t;
> > }
> は
> template <class T>
> inline
> void HogeList<T>::Add(T *t)
> {
> last->SetNext(t);//不可能?
> last = t;
> }
> に
EfficientC++にもinline書いてました
付け忘れてはいけませんね
0252デフォルトの名無しさん
NGNGこんな感じ
template <class T>
class HogeList
{
public:
void Add(T *t);
HogeList ();
private:
T *first;
T *last;
};
template <class T>
inline
HogeList<T>::HogeList ()
{
}
0253236
NGNG別段普通ですよね...
それなのになぜかリンクできないorz
ここまでくれば何かの見落としだと思うのであとは自力で頑張ってみます
色々と勉強になりました
ありがとうございました
0254デフォルトの名無しさん
NGNGtemplate <typename T>
class HogeList
{
public:
void Add(HogeList<T>* t) {
this->first = t;
}
HogeList();
private:
HogeList<T>* first;
HogeList<T>* last;
};
template <typename T>
inline HogeList<T>::HogeList() {}
int main()
{
HogeList<int> hl;
hl.Add(new HogeList<int>());
}
0255デフォルトの名無しさん
NGNG0256236
NGNGその後、悪戦苦闘したのですが、
どうやらテンプレートの場合は関数の定義を
ヘッダファイルの中に書かないといけないのですね。
リンク時にコンストラクタがどうしても見つからない理由が
やっとわかりました。
0257デフォルトの名無しさん
NGNG「テンプレートは高機能マクロと思え」
※マクロよりはるかに便利だけど
0258デフォルトの名無しさん
NGNG250で
>Test::Test(void)の実装が書かれたファイル名と245の内容が書かれたファイル名は?
と書いたのはそれ疑ってたんだけどね
>どうやらテンプレートの場合は関数の定義を
>ヘッダファイルの中に書かないといけないのですね。
基本的にはそうなんだけど
明示的に実体化しておけばその限りでないです
明示的な実体化は
例えばHogeListに渡すテンプレートパラメータが予め
HogeNodeとHageNodeしかないのなら
メンバ関数を定義した実装ファイル(.cpp)の最後で
template class HogeList<HogeNode>;
template class HogeList<HageNode>;
みたいにやります
0259デフォルトの名無しさん
NGNG明示的な実体化のときにはtemplateは書かない気がする。
0260デフォルトの名無しさん
NGNGsystem("iexplore.exe");
とやるとDOS窓が開いてしまうのがかっこ悪いです。
DOS窓が開かない方法を知りたいのですが
win32APIとかで別プログラムを起動させる方法ってありますか?
0261デフォルトの名無しさん
NGNGもちろんだ
0262デフォルトの名無しさん
NGNG付けるのが正解のような気がする
規格の14.7.2
0263デフォルトの名無しさん
NGNG自分では見つけられませんでした。
検索しますんでキーワードおしえてください。
0264デフォルトの名無しさん
NGNGこんなすれがあるんだよ↓
Win32APIしつもんばこ びるど25
http://pc5.2ch.net/test/read.cgi/tech/1101393155/
0265デフォルトの名無しさん
NGNGCreateProcess() や ShellExecute()
0266デフォルトの名無しさん
NGNGども
0267デフォルトの名無しさん
NGNGconst INTPTR p;
は
int * const p;
だったなんて!
MSがLP〜なんて余計なもの作るから悪いんだ!
0268デフォルトの名無しさん
NGNGVisual C++ 6.0 で以下のソースをビルドしても、rand() で生成される乱数が
常に 41 にしかならないようなんですが、何か間違ってますか?
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
int magic; // 乱数を格 納
int guess; // ユーザの予想を格納
magic = rand(); // 乱数を生成、格納
cout << "Enter yout guess:";
cin >> guess;
if ( guess == magic )
{
cout << "*** Right ***";
}
cout << magic; // 実際に生成された乱数を確認
return 0;
}
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGsrand() 使いましょう。
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNGhttp://www.google.co.jp/
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGMSDN libraryの rand の項目も見てたんですが、
ちゃんと読んでなくて、
「srand 関数を使って疑似乱数ジェネレータを初期化してから、rand 関数を呼び出してください。」
と書いてるのを見てませんでした
ごめんなさい
ハーバート・シルトの標準講座 C++ のサンプルだったんですが、
ちょっとぐらい説明がほしかったなぁ・・・
0275デフォルトの名無しさん
NGNGなってる。<rand、srand
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGC++ で Java のリフレクションに近いような機能を実装することは
できるのでしょうか?
例えば
int function() {
・・・ // この関数の中で "function" という文字列を取得したいです。
}
0279デフォルトの名無しさん
NGNGするなよ。
0280デフォルトの名無しさん
NGNG間にクラスを1個挟めばリフレクションまがいのことはできそうだけど、
あまり意味はなさげ。
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG__func__
0283デフォルトの名無しさん
NGNGBOOST_CURRENT_FUNCTION
0284デフォルトの名無しさん
NGNGリフレクションは全然違うと思うんだけど。
0285デフォルトの名無しさん
NGNG>>278
>int function() {
> ・・・ // この関数の中で "function" という文字列を取得したいです。
>}
0286デフォルトの名無しさん
NGNGリフレクションとか関係ないですか、そうですか。
0287デフォルトの名無しさん
NGNGさぁ?
278は明らかに汁
0288278
NGNG最小限しか書いていませんでした。
やりたいことはあるクラスからメソッド名を抜いてきて
テストコードとドキュメントを生成したいと考えています。
0289デフォルトの名無しさん
NGNGできなさそうだがな。
0290デフォルトの名無しさん
NGNG無理。ソース読んで生成するしかない。
河童とDoxygenは知ってるか?
0291278
NGNGありがとうございます。
DoxyGen にはかなりお世話になっております。
河童は知らなかったのでダウンロードしてみました。
すごく使えそうなので使ってみたいと思います。
あと、しつこくて申し訳ないのですが、
__FUNCTION__ もしくは __func__ が実装されていない
コンパイラ(ARM7)を使用している場合、
関数中で関数名を抜くことはできますでしょうか?
すいません、よろしくお願いします。
0292デフォルトの名無しさん
NGNG直書きしろ。いや、関数名取ろうとなんて考えるな。
0293278
NGNGhttp://www.garret.ru/~knizhnik/cppreflection/docs/reflect.html
を参考に、もう少しだけがんばってみようと思います。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGのような関数に、メンバ関数を渡したいんですがうまい方法はないでしょうか?
class A {
public: void callback() {...}
};
A a;
void callback_wrapper(){
a.callback();
}
main() {
set_callback(a.callback); //エラー
set_callback(callback_wrapper);//ださい
set_callback(mem_fun_pointer_to_global_fun_pointer<A>(a,callback));//できることなら
}
0296デフォルトの名無しさん
NGNGラッパー書け
0297デフォルトの名無しさん
NGNGstaticなメンバ関数しか出来ないような希ガス。
メンバ関数へのポインタってアドレス取っても変なアドレスになるしな。
仮想関数ならなおさら。
0298デフォルトの名無しさん
NGNGtemplate <class T>
void set_callback(T* pthis, void (T::* func)()) {
// 保持
// 使う
(pthis.*func)();
}
0299デフォルトの名無しさん
NGNGclass Test {
static int i;
public:
Test() {}
static void print() {
std::cout << "i = " << i << std::endl;
}
static void set(int j) { i = j; }
};
int Test::i;
int main()
{
Test t;
t.set(10);
t.print();
void ((*func)()) = static_cast<void ((*)())>(&t.print);
func();
}
0300デフォルトの名無しさん
NGNGint* c = new int[N];
for (int i = 0; i < N; ++i)
c[i] = a[i] + b[i];
return c;
}
これってコンパイルとラン可能ですよね?
自分でやってみたら、動いたんですけど。。。
でもエラーとか不利点とか、あるみたいで、それがいまいち、よく分からないんですが。。。
ポインターって、関数で、&パス(リファレンス)できないですよね?
なんでですか?
0301デフォルトの名無しさん
NGNGおいおいdeleteは?
それから&*ってすればポインタのリファレンス取れるぞ。
0302295
NGNG最終的にはそうなるんだけど、なんとかその処理を自動化できないかと思いまして。
set_callback(mem_fun_pointer_to_global_fun_pointer<A>(a,callback));
↓なんか変態的な処理
//どっかグローバルな場所
void generated_wrapper() {
a.callback();
}
//関数内
set_callback(generated_callback);
みたいな。
>>298のようにset_callback側のラッパを書くにしても、最終的に
set_callbackにvoid (*)()を渡してやらねばならないのでコマル
0303デフォルトの名無しさん
NGNGだから標準C++の仕様ではどうあがいても(ry
0304デフォルトの名無しさん
NGNGclass A {
int i;
public:
explicit A(int n) : i(n) {}
void callback() { std::cout << "num : " << i << std::endl; }
};
template <class T>
class myCallback {
typedef void (T::* cbFunc)();
T* _obj;
cbFunc _func;
public:
myCallback(T* obj, cbFunc func) : _obj(obj), _func(func) {}
void exec() { (_obj->*_func)(); }
};
int main()
{
A a(10);
myCallback<A> cb(&a, &A::callback);
cb.exec();
}
こんなんじゃダメか?
0305295
NGNGあースマソ
グローバル関数ポインタを要求する既成のライブラリがあって、
それをどうにかしたいんですよ。
でも冷静に考えるとかなり複雑な処理をする必要がある……
これはあきらめたほうがいいかもわからんね。
0306デフォルトの名無しさん
NGNG気づくのが遅いよ池沼
0307デフォルトの名無しさん
NGNG(・3・)
0308デフォルトの名無しさん
NGNGサンクという方法もあるが、素直にラッパー書いたほうが簡単かもね。
0309デフォルトの名無しさん
NGNGWindowsAPIのコールバック関数みたいにユーザー定義の値を別に渡せないのか?
0310デフォルトの名無しさん
NGNG「既存の」じゃなければ関数オブジェクトをお奨めするところだが。
0311デフォルトの名無しさん
NGNGreallocした返り値のアドレスが元のアドレスとは異なる可能性があることを
考慮していないのはマズイのではないでしょうか?
つまり、char *buffer が仮に"ABCDEFGH"を指しているとして、
char *p1 = buffer + 1; /* *p1 == 'A' */
char *p2 = buffer + 2; /* *p2 == 'B' */
char *p3 = buffer + 3; /* *p3 == 'C' */
char *temp = realloc(buffer, size_hoge);
if (temp == NULL) { /* blah */ }
buffer = temp;
bufferがreallocで別の所に飛ばされればp1, p2, p3はもう無効ですよね?
それを避けるためにはint p1, p2, p3のようにオフセットで管理するよう変更しなければならないですよね?
0312デフォルトの名無しさん
NGNG確かにそのコードはマズイね。
reallocに成功した時点でbufferはdeallocateされてるから
p1,p2,p3を再割り当てするかオフセット管理しないと…
0313デフォルトの名無しさん
NGNGどれに対するレス?
「プログラミング作法」ではそんなコーディングしてないよね?
0314デフォルトの名無しさん
NGNGint main(void){
int a[2];
int *p;
int cnt;
a[0]=1;
a[1]=2;
a[2]=3;
*p=a;
for(cnt=0; cnt<3; cnt++ )
{
printf("Input data %d\n",*p[cnt]);
}
return 0;
上のプログラムをコンパイルしたらエラーが出ました。ポインターの部分というのは分かるのですが
すいませんご指導お願いします。
ex.c:12: warning: assignment makes integer from pointer without a cast
ex.c:16: invalid type argument of `unary *'
0315デフォルトの名無しさん
NGNGpの型はint*
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG*p=a; は代入式に決まっておろうが、という突っ込みはさておき。
int *p;
これで宣言/定義されたint型ポインタは p だよ。
int* p;
上と同じだが、この方が判りやすいかも。
0318デフォルトの名無しさん
NGNG*p=a;そのポインタpにaを代入・・・つまり、先ほどのプログラムを実行するには
*p=a[2]とすればいいのですかね?
0319デフォルトの名無しさん
NGNGinvalid type argument of `unary *'
0320デフォルトの名無しさん
NGNGinvalid type argument of `unary *'
0321デフォルトの名無しさん
NGNGp=1←pに1を代入
*p=1←*p(=pが指しているint変数)に1を代入
0322デフォルトの名無しさん
NGNG違う。
p = aでいい。
pに配列aの最初のアドレスを代入。
配列の添え字を省略した場合、最初の添え字のアドレスを指すのは理解してるよね。
あとint a[2]と定義してるのにa[2]に代入するのは危険。
定義時の添え字は全体の個数、実際に使うのは添え字0からの数。
printfのところは*p[cnt]ではなく、p[cnt]でいい。
#include<stdio.h>
int main(void)
{
int a[3];
int cnt;
a[0] = 1;
a[1] = 2;
a[2] = 3;
p = a;
for( cnt=0 ; cnt<3 ; cnt++ ) {
printf("Input data %d\n", p[cnt]);
}
return 0;
}
0323デフォルトの名無しさん
NGNGint *p;
が抜けてた。
ポインタは難しいけど、理解すればカンタンだよ
0324デフォルトの名無しさん
NGNGすいませんたびたび
0325デフォルトの名無しさん
NGNG*(p[cnt])
あるいは
(*p)[cnt]
プログラム的にはどっちもエラーだな。
0326デフォルトの名無しさん
NGNG前者が正解
0327デフォルトの名無しさん
NGNG#include <stdio.h>
class PIYO{
private:
int *A;
public:
const int *Get_A( void ){
return A;
}
PIYO( void ){
A = new int;
*A = 6;
}
};
int main( void ){
class NEKO Hoge;
int *B = ( int * )Hoge.Get_A();
//かえられてしまう
*B = 3;
const int *C = Hoge.Get_A();
printf( "%d" , *C );
return 0;
}
0328デフォルトの名無しさん
NGNGそんなキャストするやつが悪い。
0329デフォルトの名無しさん
NGNG>>328に激しく同意
そんなこといったらどんなprivateメンバだって((void *)&Hoge)[1]とかやれば変えられてしまう。たぶん
0330デフォルトの名無しさん
NGNGこんな感じでしょうか?
でもエラーなんですか・・・
0331デフォルトの名無しさん
NGNGなんでconst int *Bにしないの?
0332デフォルトの名無しさん
NGNG配列とポインタは似て非なる物。
0333デフォルトの名無しさん
NGNG#include<stdio.h>
int main(void)
{
int a[3];
int cnt;
int *p;
a[0] = 1;
a[1] = 2;
a[2] = 3;
p = a;
for(cnt=0 ; cnt<3 ; cnt++) {
printf("Input data %d\n", p[cnt]);
}
return 0;
0334デフォルトの名無しさん
NGNG*(p[cnt])だと、内容の内容になってわけわかめ。
ポインタの本一冊買って勉強するといいよ。特にメモリの事詳しく説明してる本。
0335デフォルトの名無しさん
NGNGこうすれば問題なく動く。
#include<stdio.h>
int main(void)
{
int a[3];
int cnt;
int (*p)[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
p = &a;
for(cnt=0 ; cnt<3 ; cnt++) {
printf("Input data %d\n", (*p)[cnt]);
}
return 0;
}
0336デフォルトの名無しさん
NGNGなるほど!わっかりました!すいません日曜の朝にこれからも精進していきます
0337デフォルトの名無しさん
NGNG関数ポインタに格納することはできるのでしょうか?
class class1{
public:
    void (*proc)();
    void method();
}c1;
c1.proc = c1.method;
6行目 error C2440: '=' : 'void' から 'void (__cdecl *)(void)' に変換できません。
0338デフォルトの名無しさん
NGNGc1.proc=class1::method
0339デフォルトの名無しさん
NGNGpublic:
void (class1::*proc)();
void method();
} c1;
c1.proc = c1::method;
0340デフォルトの名無しさん
NGNGありがとん
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGそのP.135に書いてある以下のサンプルコードがコンパイルできません。
どなたかアドバイスをお願いします。
【ソースコード】
#include <iostream>
#include <string>
using namespace std;
class MyClass {
static string class_string;
public:
static void SetString(string str) { class_string = str; }
static string Show() { return class_string; }
};
static MyClass::class_string = "MyString";
int main()
{
cout << MyClass::Show() << endl;
MyClass::SetString("Changed!");
cout << MyClass::Show() << endl;
return 0;
}
0343342
NGNGlist6-3.cxx:29: error: ISO C++ forbids declaration of `class_string' with no
type
list6-3.cxx:29: error: `static' may not be used when defining (as opposed to
declaring) a static data member
list6-3.cxx:29: error: conflicting types for `int MyClass::class_string'
list6-3.cxx:14: error: previous declaration as `std::string
MyClass::class_string'
list6-3.cxx:29: error: invalid conversion from `const char*' to `int'
【動作環境】
OS: FedoraCore 1
コンパイラ: gcc 3.3.2-1
よろしくお願いします。
0344デフォルトの名無しさん
NGNG+ string MyClass::class_string = "MyString";
0345デフォルトの名無しさん
NGNG→
string MyClass::class_string = "MyString";
0346345
NGNG0347344
NGNG何読んでるか知らんが窓から投げ捨てておけ
0348デフォルトの名無しさん
NGNG標準C++の基礎知識(柏原正三 著:ASCII)と書いてあるが。
0349デフォルトの名無しさん
NGNG>>342の1行目
0350デフォルトの名無しさん
NGNG頭を縫うハメになったことがあるから窓からものを投げ捨てるのは良くないと思うのです。
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNGorz
0353デフォルトの名無しさん
NGNGそれは禁句
0355デフォルトの名無しさん
NGNGRuby最強!
0356デフォルトの名無しさん
NGNGその本持ってるから見てみた。P135じゃなくて134だと思うが
string MyClass::class_string = "MyString";
になってた。
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG> あと通常 inline からは static データメンバに正常にアクセス出来ない
聞いたこと無いな。ほんとか?
0360デフォルトの名無しさん
NGNGつC++ FAQ
0361デフォルトの名無しさん
NGNGとコンパイルすると警告出ますが、対応教えてくださいませませ。
0362デフォルトの名無しさん
NGNGabsじゃなくて?
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG俺も聞いたこと無い。
思いつくキーワードで手当たり次第ぐぐってみたけど見つからないんだけど
ほんとなのかな?
0365デフォルトの名無しさん
NGNGエスパー乙
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNGわしも聞いたことない。
普通に考えてそんなことあり得ないと思うんだけど。
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNG知らない癖になんで偉そうなんだ?無知を誇るな。いい加減にしなさい。
0370デフォルトの名無しさん
NGNG少なくとも俺はそんなの聞いたこと無い。
0371デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNGソースを示してからそのセリフ吐きなよ。
ドラフトのどこにそんな事が書いてあるんだ?知ったか君。
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG明示的な inline で怒られるのってなんで?
普通にソース書く分ではエラーは出ないけど
実際その関数を呼び出すとなるとエラーなんだよね…(´・ω・`)
ついでだからおせーてちょ
0382デフォルトの名無しさん
NGNGソース貼ってみ。
0383デフォルトの名無しさん
NGNG//ここから hoge.h
class Hoge{
private:
inta;
public:
Hoge(){ a = 10; }
void hage();
};
//ここから hoge.cpp
inline void Hoge::Mage(){
a = 100;
std::cout << a << std::endl;
}
//ここから main.cpp
int main(int argc, char *argv[]){
Hogehoge;
hoge.Mage();
returnEXIT_SUCCESS;
}
言われて書いてみた。で、新たに不思議なことが。
↑のソースをmain.cpp内に全て書いたら問題なかったんだけど
クラス宣言を hoge.h, メンバ関数を hoge.cpp で書いた時は
Hoge error LNK2019: 未解決の外部シンボル "public: void __thiscall Hoge::hage(void)" (?hage@Hoge@@QAEXXZ) が関数 _main で参照されました。が出るよ…
もちろんファイル分けたときはインクルード個別にしてるし、インクルードガードもちゃんとしてます
最初に確認したのはVC6.0だったけど、今はこれ VC7.1 です
0384デフォルトの名無しさん
NGNG結構お馬鹿な疑問(?)でしょうが、よろしくおねがいします
0385デフォルトの名無しさん
NGNG確かにC++ FAQsの
FAQ 16.04 Can inline functions safely access static data members?
で、「No!」ってはっきり書いてあるね。
0386デフォルトの名無しさん
NGNGinline関数の定義はその関数を使用するすべてのコンパイル単位に必要。
0387デフォルトの名無しさん
NGNG#include <iostream>
//#include "hoge.h"
class Hoge{
private:
inta;
public:
Hoge(){ a = 10; }
void hage();
};
inline void Hoge::hage(){
a = 100;
std::cout << a << std::endl;
}
int main(int argc, char *argv[]){
Hogehoge;
hoge.hage();
returnEXIT_SUCCESS;
}
これで上記のエラーが出ます
何度もすみません。・°・(ノД`)・°・。
0388デフォルトの名無しさん
NGNGURL 教えてくれないか?
0389デフォルトの名無しさん
NGNG↓これとは違うんだな。
ttp://www.parashift.com/c++-faq-lite/
んで、理由は?
0390デフォルトの名無しさん
NGNG上記で言うと具体的にどこでどのように書くのでしょう?
ミス続きなのでごめんなさい(´・ω・`)
0391デフォルトの名無しさん
NGNGinline関数はヘッダに含めなさい
0392デフォルトの名無しさん
NGNGclass Hoge の定義と同じファイルに書いてしまう。
0393デフォルトの名無しさん
NGNGインライン関数はコンパイル時に展開処理されるので、
関数呼び出し位置から、その関数の定義が見えていなければならない。
非インライン関数はリンカで最終的に結合されるため、
コンパイル段階では宣言のみが見えていればいい。
>>390
ヘッダファイルに定義を書く
0394デフォルトの名無しさん
NGNGなるほど
つーことは明示的 inline と 暗黙の inline は
読みやすさに気を配る人は前者、
特に気にしない人は後者みたいな認識でいいのかな?
付き合ってくれてありが�d
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG×>>390,,391
○>>391,392
社会人になるまでに直さなきゃ
今日はとっとと寝ときます
0397デフォルトの名無しさん
NGNG意訳になるけど、
ユーザー定義型のstaticデータメンバが初期化されるのが保証されているのは
staticメンバの定義があるのと同じコンパイル単位の、non-inline関数が呼び出される前だから、
もし別のコンパイル単位からnon-inline関数を呼び出す前にinline関数を呼び出してしまうと
初期化される前にstaticメンバを利用してしまう可能性がある
らしい。日本語版は売り切れてて持ってないから間違ってるかもしれない(´・ω・`)
サンプルソースを引用すると
// Hoge.hpp
class Hoge {
public:
static void f() throw();
static string g() throw();
private:
string s_;
};
inline string Hoge::g() throw() { cout << s_; return s_; }
// Hoge.cpp
#include "Hoge.hpp"
string Hoge::s_ = "Hello";
void Hoge::f() throw() { cout << s_; } // OK 初期化は保証されている
// main.cpp
#include "Hoge.hpp"
int main() { Hoge::g(); } // s_は初期化されているか?
0398デフォルトの名無しさん
NGNG+ static string s_;
0399デフォルトの名無しさん
NGNG__declspec(selectany)使ってヘッダにstaticメンバを書いたらどうなるんだろう
0400デフォルトの名無しさん
NGNGその理由が問題にしているのはこれだろう。
3.6.2/3 から引用。
"If the initialization is deferred to some point in time after the first statement of main,
it shall occur before the first use of any function or object defined in the same translation unit as the object to be initialized."
簡単に訳すと、
「初期化がmainの最初の文よりも後に遅らされるとすれば、
同じ翻訳単位で定義されているどの関数、オブジェクトの
最初の使用よりも前で無ければならない。」
(最後の"as the object to be initialized"がよくわからない)
397の意訳では、
「関数、オブジェクトの使用」を「non-inline関数の呼び出し」に限ってしまっているのが、
規格の意図とは違うと言えるだろう。
0401デフォルトの名無しさん
NGNGなるほど… 原文では
Static data members are guaranteed to be initialized
before the first call to any non-inline function within
the same source file as the static data's definition.
となってたもんで。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGソース内で、Aという関数の引数にBという関数の戻り値を使っています。B(C)がエラーとして-1を返した時に、A(-1);となるので、
そのばあいA関数内でexit(-1);が呼び出されるようにしているのですが、ウォッチウィンドウにA(B(C))と打って、
Bの返り値が-1だった時に、VC++が異常終了してしまいます。(以降.dswを削除しないと起動しません。)
ウォッチウィンドウでBの返り値が-1だった時にA()を呼び出さないようにするにはどうしたらいいのでしょうか。。
ちなみにA((B(C)!=-1)?B(C):999)では動きませんでした。。(999はとりあえずの例です。)
長文すみません。。
0404デフォルトの名無しさん
NGNGソース内で、Aという関数の引数にBという関数の戻り値を使っています。B(C)がエラーとして-1を返した時に、A(-1);となるので、
そのばあいA関数内でexit(-1);が呼び出されるようにしているのですが、ウォッチウィンドウにA(B(C))と打って、
Bの返り値が-1だった時に、VC++が異常終了してしまいます。(以降.dswを削除しないと起動しません。)
ウォッチウィンドウでBの返り値が-1だった時にA()を呼び出さないようにするにはどうしたらいいのでしょうか。。
ちなみにA((B(C)!=-1)?B(C):999)では動きませんでした。。(999はとりあえずの例です。)
長文すみません。。
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGベテランの人の意見をお聞かせ願いますか?
隠蔽したいときは隠蔽する、的な解はいりません
0408デフォルトの名無しさん
NGNG>隠蔽したいときは隠蔽する
これ以外の回答は有り得ないのだが?
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG隠蔽する必要があれば隠蔽する
これだな。
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNG例えばdata_on_001_times.dat、data_on_002_times.dat ・・・
みたいに、何回目のデータかわかるように名前をつける
(ファイル名に変数を使う?)ことってできるんでしょうか?
できるならやり方を教えて欲しいです。
0413デフォルトの名無しさん
NGNGsprintf
0414デフォルトの名無しさん
NGNG0415412
NGNGありがとうございます。
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNGだれかがFAQをまとめてくれるとみんながハッピー。
0418デフォルトの名無しさん
NGNGボタンを押してる間ずっと数値が増えるようなプログラムを作りたいです
ご指導ご鞭撻をお願い致します
0419デフォルトの名無しさん
NGNGこっち
C++Builder相談室 Part12
http://pc5.2ch.net/test/read.cgi/tech/1099238936/l50
0420デフォルトの名無しさん
NGNG一番簡単に済ませるにはOnMouseDown/OnMouseUpで
Threadを動かすといいね。
--- Unit1.cpp
IncrementThread* itp;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
itp = new IncrementThread(false); // Labelをインクリメントする
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
itp->Terminate();
delete itp;
}
0421デフォルトの名無しさん
NGNG__fastcall IncrementThread::IncrementThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall IncrementThread::Execute()
{
while (!Terminated)
Synchronize(IncrementLabel);
}
//---------------------------------------------------------------------------
void __fastcall IncrementThread::IncrementLabel()
{
int i;
i = Form1->Label1->Caption.ToIntDef(0) + 1;
Form1->Label1->Caption = AnsiString(i);
}
0422デフォルトの名無しさん
NGNG制御する。上のプログラムは省略してあるが。
0423デフォルトの名無しさん
NGNGどうしたらいいですか?ご教授お願いします。
0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNGMFCでデザインしているならダイアログのプロパティ。
0427デフォルトの名無しさん
NGNGofstream outStream;
ousStream.open("file.txt",ios::app)
このios::appって、なに?
0428デフォルトの名無しさん
NGNG「ファイルの末尾に追加」を示すフラグ
0429デフォルトの名無しさん
NGNGclass hoge { public: int i; };
class mage { public: void * h; };
class Visitor
{
public:
virtual void visit (hoge* X) { }
virtual void visit (mage* X) { }
};
class DerivedVisitor : public Visitor
{
public:
void f (hoge * X) { visit (X); }
void visit(mage * X) { }
};
っていうコードがあったとき、DerivedVisitor::f() の中からの visit 呼び出しでエラーになるっす。
(続く)
0430429
NGNG> gcc testmain.cpp
testmain.cpp: In member function `void DerivedVisitor::f(hoge*)':
testmain.cpp:14: error: no matching function for call to `DerivedVisitor::visit
(hoge*&)'
testmain.cpp:15: error: candidates are: virtual void
DerivedVisitor::visit(mage*)
-----------
VC↓
-----------
...\testmain.cpp(14) : error C2664: 'DerivedVisitor::visit' : 1 番目の引数を 'hoge *' から 'mage *' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
-----------
Visitor::visit ってやれば回避できるのは解るんだけど、知りたいのはそういうことじゃなくて、なんでここで仮想関数呼び出しじゃなくて、ふつうのメソッド呼び出しになっちゃうんだ?っていうのが疑問。
Visitor を継承した時点で、visit(mage *) は vftable に登録されるんじゃ無いのかとかそういうC++の言語構造がわかんなくなった。
どうなってるん?
0431429
NGNG> gcc testmain.cpp
testmain.cpp: In member function `void DerivedVisitor::f(hoge*)':
testmain.cpp:14: error: no matching function for call to `DerivedVisitor::visit
(hoge*&)'
testmain.cpp:15: error: candidates are: virtual void
DerivedVisitor::visit(mage*)
-----------
VC↓
-----------
...\testmain.cpp(14) : error C2664: 'DerivedVisitor::visit' : 1 番目の引数を 'hoge *' から 'mage *' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
-----------
Visitor::visit ってやれば回避できるのは解るんだけど、知りたいのはそういうことじゃなくて、なんでここで仮想関数呼び出しじゃなくて、ふつうのメソッド呼び出しになっちゃうんだ?っていうのが疑問。
Visitor を継承した時点で、visit(mage *) は vftable に登録されるんじゃ無いのかとかそういうC++の言語構造がわかんなくなった。
どうなってるん?
0432デフォルトの名無しさん
NGNG仮想関数に関数の多重定義解決を混ぜるな。
ほぼ間違いなく意図通りの動作をしない。
今の例で言うと、'DerivedVisitor::visit(mage *)が仮想関数 'Visitor::visit(hoge *)を
隠蔽しているため、DerivedVisitor::visit(mage *)は仮想関数として処理されない。
virtualを付けても無駄です。
0433デフォルトの名無しさん
NGNG俗に言う(本当に言われてるかは知らん)
「名前が隠される」状態。
0434429
NGNG-------
class Visitor;
class base { public: virtual void accept(Visitor * v) = 0; };
class hoge : public base{ public: void accept(Visitor * v); };
class mage : public base{ public: void accept(Visitor * v); };
class Visitor
{
public:
void visit (base* X) { X->accept(this); }
virtual void visitHoge(hoge* X) { /* default action */}
virtual void visitMage(mage * X) { /* default action */}
};
class DerivedVisitor : public Visitor
{
public:
void f (hoge * X) { visit (X); }
void visitMage(mage * X) { }
};
void hoge::accept(Visitor * v) { v->visitHoge(this); }
void mage::accept(Visitor * v) { v->visitMage(this); }
-------
visitHoge とか、visitMage とか妙な感じだ。マクロとかテンプレート(ここで使えるのか?)とか使いたくないから、これで我慢するしかないのかな?
ありがとう、432,433。
0435429
NGNG仕様かー を 隠蔽かー に読み替えてくれるとありがたい。
だからどうしたって感じだけど。
0436デフォルトの名無しさん
NGNGDerivedの中に、
using Visitor::visit;
の行を入れればよい。
Visitor::のvisitという名前が、現在の名前照合空間に含まれるようになる。
0437デフォルトの名無しさん
NGNG1.5秒ごとに特定フォルダをチェック。
↓
2.そこへホストからファイルがftp転送(PUT)されてくる。
↓
3.転送されたファイルを見つけたら、別の場所へコピーする。
↓
4.1へ戻る。
しかし、3の段階でファイルが転送中にもかかわらず、ファイルをコピーしようとして失敗します。
これはftp転送の仕様上、ファイルが少しずつ出来上がっていくからだと思いますが、
転送が完全に終わるまでコピーしない(転送が終わったかどうか判断する)方法をご教授ください。
0438デフォルトの名無しさん
NGNGダウンロード終了(してプログラムがファイルを閉じる)まではCreateFileのdwShareを0にするとオープンできないはずだから、
それを使ったらどうだ?オープンできたら、ついでにReadFile/WriteFileあたりを使って自分でコピーしたらどうだ。
0439429
NGNG0440デフォルトの名無しさん
NGNGCreateProcessではSW_HIDEで指定しても無理だということになってるのでよろしくお願いします。
0441デフォルトの名無しさん
NGNG何がやりたいんだ。
0442デフォルトの名無しさん
NGNGでもプロンプトがでてしまうのでどうにかならないかと思い質問しました。
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGそれならCreateProcessでDERACHED_PROCESSを指定すればいいだけ。
0445デフォルトの名無しさん
NGNGありがとうございました。やってみます。
0446デフォルトの名無しさん
NGNGostream& operator << (ostream& os, const Date& d){
os << d.month << d.day << d.year;
return 0;
}
この関数もあるわけなんだけど、このostreamをintとかvoidみたいに使っているのが
いまいち、よくわからないんです。
osっていうのが、ファイルだから、それを受け渡しするときに使うってこと?
でも、なんでosをreturnする必要あるんですか?
ファイルは、存在するわけだから、またメインなり、どこかで、開けばいいんじゃないんですか?
0447デフォルトの名無しさん
NGNGマルチ氏ね
0448デフォルトの名無しさん
NGNGreturn 0;
0449デフォルトの名無しさん
NGNGマジレスすると、
std::cout << foo << bar << std::endl;
のようにosを返しておくと便利。
ついでに言えば、ostreamはファイルそのものじゃない。
まぁ、C++の入門書でも読んでらっしゃい。
0450デフォルトの名無しさん
NGNGそもそもcoutとか使ったことあるのか?
0451デフォルトの名無しさん
NGNGこの版では Locale の話などが追加されているそうです。
http://www.amazon.co.jp/exec/obidos/ASIN/0201700735/qid=1102483504/sr=1-1/ref=sr_1_10_1/250-5642937-2086640
この原著を買うか 3rd の(悪名高い)翻訳を買うかで悩んでいるのですが、新
訳の話があるならそっちの方がいいかな、と考えています。どんなもんでしょ
うか。
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNGttp://www.research.att.com/~bs/3rd.html
0455デフォルトの名無しさん
NGNGcharの比較をしたいのです。
char c; の中は0〜9まで、A〜Cまで。
とチェックしたいのですが、どうしたらよいでしょうか?
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG言語ならC/C++の前に日本語習え
0458デフォルトの名無しさん
NGNG('0' <= c && c <= '9') || ('A' <= c && c <= 'C')
0459デフォルトの名無しさん
NGNGif (isdigit(c) || toupper(c) - 'A' < 'C' - 'A')
なんたら;
else
ほげ;
0-9とA-Fならisxdigitが使える。
0460デフォルトの名無しさん
NGNGでもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
0461デフォルトの名無しさん
NGNGお願いするとこ間違ってるよ
0462デフォルトの名無しさん
NGNGお前に人生のうまい渡り方を教えてやりたいよ。
基礎からすべてをたたき込めなんて大仕事をタダで引き受けさせようとする
お前の根性を叩き直してやりたい。
0463デフォルトの名無しさん
NGNGお願いします
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG開発環境は.NETの2003アカデミック番でGSLIBってのを使ってるっす
0466デフォルトの名無しさん
NGNG僕もわかりません。
学校の先生に聞いてください。
0467455
NGNG>459
ありがとうございました。
>457
すいません、今そっちも勉強中です。
0468デフォルトの名無しさん
NGNG┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃ ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??
また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)
0469デフォルトの名無しさん
NGNGこれ以上マルチするとアク禁要望出す?かもなー
0470デフォルトの名無しさん
NGNG挿入の仕方、削除の仕方による
0471デフォルトの名無しさん
NGNG【初心者歓迎】なんてスレだから質問してみたのですが、
カキコした自分が馬鹿でした。
頼りにならない人しかいないなんて知らなかった。
0472デフォルトの名無しさん
NGNG質問の仕方が悪いよ。一意に取れない。
0473デフォルトの名無しさん
NGNG┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃ ┃
┗━┻━┻━┻━┻━┻━┛
で合ってる
53削除するとこうなる
┏━┳━┳━┳━┳━┳━┓
┃10┃ ┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
これでいいか?分かったら帰れ
0474デフォルトの名無しさん
NGNG面白がってあちこちにコピペ貼りしているだけ。
釣り釣られ〜
0475デフォルトの名無しさん
NGNGスルーできないのが普通だからな
0476デフォルトの名無しさん
NGNGでもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
全裸で
0477デフォルトの名無しさん
NGNGHSPスレ行け。
0478デフォルトの名無しさん
NGNG全裸で
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGもうそのコピペも飽きた
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGC++で、あるクラスへのポインタの配列を格納する場所を
newするにはどう書けばよいのでしょうか?とりあえず
TEST **ppTest;
ppTest = new (TEST*)[100];
のように書いてみたらエラーが出ます。正しい書き方を教
えてもらえないでしょうか。
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNGstd::auto_ptr や std::vector, deque 等の使用を考えましょう
0485デフォルトの名無しさん
NGNGアホ
0486デフォルトの名無しさん
NGNG使うけどね
0487デフォルトの名無しさん
NGNGそれ使うとstd::mem_funが動かなくなるから嫌だ。
boost::mem_fn使えばいいけど。
0488デフォルトの名無しさん
NGNGさらにアホ
0489デフォルトの名無しさん
NGNGおまえもアホ
0490デフォルトの名無しさん
NGNG俺もアホ
0491デフォルトの名無しさん
NGNGアホ大杉
0492デフォルトの名無しさん
NGNGppTest = new TEST*[100];
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG言ってみたかっただけ。
誰もしらんだろうな…。
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG入れておく方法はないでしょうか?
実行形式ならスタティックリンクできるんですが、
libXXXだとどうやったらいいのやらわかりません。
0497デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNGOS:FreeBSD
コンパイラ: cc
という環境で、次のように定義します。
int i;
char msg0[255],msg1[255],msg2[255];
msg0 = "message 0";
msg1 = "message 1";
msg2 = "message 2";
このように定義したmsg0〜2をforループのなかで順に呼び出したいとき、
つまり変数名の一部としてiを展開するにはどうすればいいのでしょうか?
msgiでは別の変数名になってしまいます。
for (i=0;i<3;i++){
printf("%s",msg???);
}
0500デフォルトの名無しさん
NGNGそれはギャグのつもりか?
0501499
NGNG私は大真面目ですが、無知です。
言語使用上、不可能ということでしょうか?
ほかにうまいやり方は無いものですかね?
0502499
NGNG0503デフォルトの名無しさん
NGNGCではこんな書き方は許されてない(動くけど)。
自分が何をやっているのかも理解できてない。
とりあえず君にCは無理なので、2,3年BASICで
勉強してきた方が良いと思われ。
0504デフォルトの名無しさん
NGNG二次元配列にすればいいだけじゃないか。
char msg[3][256];
それが無理ならポインタを使え。
char *pMsg[3] = {msg0, msg1, msg2};
0505499
NGNG定数の文字列の定義は、次の形が推奨されると了解しました。
(K&R百回読んで逝って来ます)
const char msg0[]="hoge";
>504
ポインタを使う方法で望む動作ができました。
ありがとうございました。もっと勉強します!
0506デフォルトの名無しさん
NGNG釣りなんだろうが、つまらないしウザイのでマジレスしとく
初心者用の本の配列のところでも読め
そして自分の馬鹿さが分かったら、プログラミングなんてあきらめろ
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG有名だからって理由だろうが、たぶんお前にはK&R読むのは無理だ。
格好付けていないで、初心者用の本先に読め
それとここくらい目を通してから質問しろ
ttp://www.kouno.jp/home/c_faq/c_faq.html#contents
0510デフォルトの名無しさん
NGNG>Cではこんな書き方は許されてない(動くけど)。
動かねぇよ!
>char msg0[255],msg1[255],msg2[255];
>msg0 = "message 0";
配列名への値の代入なんて出来る処理系があるならうp汁。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG新しいCの本買ったら?
あなたにはK&Rは向いてないよ。
0513デフォルトの名無しさん
NGNG>('0' <= c && c <= '9') || ('A' <= c && c <= 'C')
これが顔文字をつかったAAに見えてしかたありません。もうそろそろ足を洗ったほうがいいでしょうか?(Cから)
0514デフォルトの名無しさん
NGNG他の言語でも大して変わらんと思うが。
精々 'A' が "A" になるくらい。
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518Rubyist!
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGAAっぽいプログラムを書くスレ
http://pc5.2ch.net/test/read.cgi/tech/1102065747/
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGなんだよ
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG#include<string.h>
#difine NAME_MAX 19
#difine BUF 256
{
printf("Input Name : ");
scanf("%s",&buf[0]);
if(strlen(&buf[0]) <= NAME_MA
{
strcpy(&data.name[0],&buf
break;
}
printf("\n Sorry");
}
twice_no(&data);
display_data(data);
return 0;
}
void twice_no(Person *pdata)
{
pdata->no *= 2;
return;
}
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG解答編持って無くて未だに模範解答を知らない
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGhttp://www.cs.wustl.edu/~schmidt/ACE.html
ってどうですか?使ったことのある人の感想などあったら教えてください。
0537デフォルトの名無しさん
NGNG"C++"はCを"インクリメントしたもの"
と解釈するのはどうか
つまり前者はCとは別物の値であり
後者はCに付加価値を与えたもの
いまいち伝わらないか…
まぁでもこういう話はいくらでも出てるんだろうな
0538デフォルトの名無しさん
NGNG/ || ̄ ̄|| <⌒ヽ ))
| ||__|| < 丿
| ̄ ̄\三⊂/ ̄ ̄ ̄/
| | ( ./ /
0539デフォルトの名無しさん
NGNG伝わる伝わらない以前に完全に意味不明だ
0540デフォルトの名無しさん
NGNGC++でインクリメントした奴とは別にCを置き去りにしてきましたとか…
0541デフォルトの名無しさん
NGNGだからまだインクリメントされていない、不完全なわけよ
作者の言い訳のために後置なのよ
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG↑↑
袋竿
0544デフォルトの名無しさん
NGNG逆に言えば最初のコンパイラがアセンブリ言語や機械語を直接吐き出すものだったら++Cになっていたと思うよ。
0545デフォルトの名無しさん
NGNGその特定のパブリックメンバはオブジェクトの値というほどのものではなく、operator==を定義するのは無理があります。
std::pairのsecondのようなかんじです。
ファンクタを作ってfind_ifするのも大げさな感じです。
boostのラムダ以外でさらりと実装する方法はありますでしょうか?
プライベートメンバ変数でgetterがあればboost::bindでさらりとかけるようですが。。。
0546545
NGNG0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGいけなくはないが、newしたものをreallocするとかは駄目だよ。
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG金額を入力して、総計を求めるプログラムを作っています。
コンパイルに失敗するのですが、どこがおかしいのかわかりません。
WinXP LSI-C試食版使用
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGあぷろだがJPGじゃないと対応して無いので。
拡張子を変えただけなので中身はテキストです。
ビューアでも一応見れますが整形されていません。
IEならキチンと見れます。
0554デフォルトの名無しさん
NGNGコンパイルに失敗したとき何かメッセージは出ないの?
0555Rubyist!
NGNGどうせ最終行に改行がないとかそんなのだろ。
0556デフォルトの名無しさん
NGNG俺もLSI Cでコンパイル&実行できた。
インクルードフォルダとかの設定がまずいんじゃないか?
0557デフォルトの名無しさん
NGNG改行入れたらできた・・・
わけがわからん。
どうもありがとうございました。
LSIC以外を検討します。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNGLSI-Cはコンパイラオプションによっては最終行に改行がないと正しくコンパイルできなくなる。
コードパーサの問題ではなく、コードジェネレータの問題なのでエラーが起きず、
実行して初めて異常動作に気付くケースもある。
#気付けばいいほうか。
0562デフォルトの名無しさん
NGNGgccならワーニングがでるな。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGつまりポインタの参照先は固定で、参照先の数値のみ書換可能ということ。
*const宣言だと動的確保が出来なくなっちゃうのでconst_cast使うしかないですかね?
0570デフォルトの名無しさん
NGNG宣言と同時に初期化しろ。
int *const p = new int[n];
0571デフォルトの名無しさん
NGNGそれは考えたのですが、そのポインタをクラスのメンバとして宣言し、
特定のメソッドが呼ばれた時に任意の領域を確保しようとした場合に
どうすりゃいいのかな?と(コンストラクタが呼ばれた時点では
サイズが不明)。説明不足で申し訳ありません。
例えば画像を扱うクラスで、画像データをロードする関数が呼ばれた
時に、その画像のサイズの大きさのメモリを確保したりとかです。
ポインタをprivateにして、publicな関数で参照渡しにすればいける
とは思うのですが、func()[x][y]みたいな書き方はスマートじゃ
無いかなと思ったもので。
privateなポインタとpublicなポインタの両方を用意しておけば、
publicの方の参照先を変更されても最悪メモリリークは防げるけれど
他に方法はありませんかね?
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGちったあ改行してよ・・・
0574デフォルトの名無しさん
NGNGってことね
0575デフォルトの名無しさん
NGNGあのう、横槍スマンが、
int* const p = new int(n);
と書きたかったのですか?
0576デフォルトの名無しさん
NGNGむぉっ、スマートポインタの存在を忘れてました…。
クラス設計にツッコまれると何も言えないです・・・。もっと勉強します。
0577デフォルトの名無しさん
NGNG自己解決というかクラス設計を見直した結果、添え字の演算子をオーバーロード
することで全て解決しました。やっぱダメな設計でした。
ありがとうございました。
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGemacsとか?
0580デフォルトの名無しさん
NGNG参照って何 具体的な使用例とか、詳しいサンプルとかほしいなぁ
お勧めのホームページとか、あったら教えて欲しいし
お願いしますね
0581デフォルトの名無しさん
NGNGint *p = &n;
*p = 1;
cout << n;
↓
int n;
int& r = n;
r = 1;
cout << n;
0582デフォルトの名無しさん
NGNGお前なめてんのか?
なにマルチポストしてんだよ。
0583デフォルトの名無しさん
NGNG↓この3行がどういう処理をしているのか教えて下さいです。
if(sum & 0x80000000){
sum = (sum & 0xffff) + (sum >> 16);
}
0584デフォルトの名無しさん
NGNGsumの最上位ビットが立っていたら、sumの値を
(sumの下位16ビット) + (sumの上位16ビット) にする
0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNGLINUX環境でCプログラム中の各関数が何クロック使ったのか調べたいのですが、
クロック数を調べるためのコマンドってありますか?
gprofを使ってやってみたのですが、単位が秒なので正確にわかりませんでした。
0588デフォルトの名無しさん
NGNG画面に出力するプログラムを作成せよ。
但し各処理ごとに加算:add 減算:sub 乗算:mul 除算:divとして関数を作成すること。
(除算の結果は実数で)
C言語についてです。わかりません
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGIP のチェックサム -- 1の補数演算
http://4049.nwr.jp/comp/ip_csum.html
0591588
NGNG0592デフォルトの名無しさん
NGNGTCP/IPヘッダのチェックサム部分の計算じゃないかな
0593デフォルトの名無しさん
NGNG但し掛け算の計算はmulとして関数を作成すること。
おしえてくだされ
0594デフォルトの名無しさん
NGNGインラインアセンブラ使っていいなら
RDTSC を使う
ttp://yosirin9.hp.infoseek.co.jp/tips/no1/tips_no1.htm
ttp://yosirin9.hp.infoseek.co.jp/tips/no2/tips_no2.htm
0595デフォルトの名無しさん
NGNG簡単すぎ
ちょっとは自分で考えれ
0596デフォルトの名無しさん
NGNGTSCでいいのならLinuxだと
#include <asm/msr.h>
unsigned long long hoge;
rdtscll (hoge);
みたいに取れるけど...
>Cプログラム中の各関数が何クロック使ったのか
とはちょっと違う
0597デフォルトの名無しさん
NGNG588と二人で仲良く宿題スレに逝け
0598デフォルトの名無しさん
NGNGreturn a*b;
}
main(){
for(UINT i=1;i<10;i++){
for(UINT j=1;j<=10;j++)
if(j<10)
printf("%d, ",(int)mul(i,j));
else
printf("\n");
}
}
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGあるフォルダ(ファイルの数は不定)からファイルを
ランダムに1つづつ取り出す(同じのが選ばれないように)。
という事がしたい時、
動的な配列に格納して乱数かなんかで1つづつ取り出す
という方針でよいのでしょうか?
0602601
NGNG○あるフォルダ(ファイルの数は不定)からファイル名を
0603デフォルトの名無しさん
NGNGa+=i;
}
などとやったとき、iの寿命はどこまでになるのでしょうか。
0604デフォルトの名無しさん
NGNG}まで
0605デフォルトの名無しさん
NGNGforの内部
0606604
NGNG0607デフォルトの名無しさん
NGNG0608603
NGNGfor(int i=0; i<10; i++){
a+=i;
}
printf("%d\n",i);
とやるとエラーもなくちゃんと表示できるんです
これってiはまだ生きてるって事なんですよね?
0609デフォルトの名無しさん
NGNGたぶんVisual C++6.0使ってるんだと思うけど、単にコンパイラが規格に準じてないだけ。
いい加減VC6なんか捨ててしまえ。
0610デフォルトの名無しさん
NGNGあ わ て ん ぼ♥
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNG#include <stdio.h>
void reverse(char *s)
{
char *p,c[100];
p=&c;
p = s;
for(;*p;)*p++;
*p--;
for(;*s;)*s++ = *p--;
}
main()
{
char s[100];
printf("文字列を逆から表示します.");
scanf("%s",s);
reverse(&s);
printf("%s",s);
}
0613612
NGNGスレ違いでした。
0614デフォルトの名無しさん
NGNGp=&c;
0615デフォルトの名無しさん
NGNG0616612
NGNG0617デフォルトの名無しさん
NGNGint a[4] = {1, 2, 3, 4};
int *p;
int **pp;
の時、a は配列 a[4] の先頭アドレスを示すという事でした。
p = a;
などです。
では
&a
は一体何になるんでしょうか??
p = &a;
pp = &a;
など試してみましたがいずれも
warning: assignment from incompatible pointer type
になります。しかし
printf("%p %p", a, &a);
などとすると、内容は同じようです。
&a
の正体は一体なんなんですか…??
こんな構文がないなら、構文エラーになってもおかしくないと思うんですが…。
0618Rubyist!
NGNGreverse(char *string)
{
char *h, *t;
if (*string == '\0')
return string;
h = string;
t = string + strlen (string) - 1;
while (h < t) {
char c;
c = *h;
*h = *t;
h++;
*t = c;
t--;
}
return string;
}
0619デフォルトの名無しさん
NGNGint (*p)[4] = a;
0620デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main(void)
{
char s[100];
printf("文字列を逆から表示します.");
scanf("%s",s);
strrev(s);
printf("%s",s);
return 0;
}
0621612
NGNGその通りやったらできました!
でも中身理解するのに時間かかりそうです…。
ありがとうございます!
>>620
おお!確かにできます!!
こんな簡単にできるもんなんですね!
でもreverseって逆にする関数を別に作らないとダメっぽいので…。
ありがとうございました。
0622617
NGNGわかりました!これは…、そのまんま文字通り「配列へのポインタ」ですよね。
(タイプミスでたぶん int (*p)[4] = &a; ですね)
なんだかちょっと混乱してきましたが。「配列へのポインタ」は多次元配列専用のものではないという事か(?)。
とにかく疑問解決しましたありがとうございます。
0623デフォルトの名無しさん
NGNGそうやって他人のソースの流用ばかりして
ポインタの理解できていないまま次へ次へと進んでも前進とは言えない
0624デフォルトの名無しさん
NGNGまた、どういう時に使い分けたらいいのですか?
0625デフォルトの名無しさん
NGNGここ読め
ttp://www.kouno.jp/home/c_faq/c_faq.html#contents
ttp://kmaebashi.com/programmer/pointer.html
0626デフォルトの名無しさん
NGNGまた、その逆もありますか?
0627デフォルトの名無しさん
NGNG参照先の変更
0628デフォルトの名無しさん
NGNG無効な値を取る場合があるときはポインタ.。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG考えるな、感じろ
0631デフォルトの名無しさん
NGNG強いて言えばポインタ
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGポインタこそ王道。
0634デフォルトの名無しさん
NGNGリファレンスだろ
0635デフォルトの名無しさん
NGNGおまえ最悪
0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG参照はあまりいじれない。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGの10を動的配列にしたいんだけど
Cで、どうやって書けば良いですか?
0640デフォルトの名無しさん
NGNGbuf[0]=new char[要素0のサイズ];
buf[1]=new char[要素1のサイズ];
....
buf[99]=new char[要素99のサイズ];
0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNGchar buf2 = malloc(10*1000);
int i;
for(i = 0; i <10; i++)
buf[i] = bu2[i * 1000];
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNG出せる最大のバイトで宣言されてるの?
これって慣習、それとも何かの規約で保証されてる?
std::size_tも同じ?
0645デフォルトの名無しさん
NGNG最高に頭悪そうな発言してください in ム板 (3)
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
0646639
NGNGありがとうございました。
0647デフォルトの名無しさん
NGNGあるプログラム(A)から、他のプログラム(B)を呼び出すプログラムを組んでいます。
・Bは簡単なCUIのコンパイラです。引数に指定されたファイルを読み、
文法に問題がなければファイルを出力し、エラーならば各種エラーメッセージを表示します。
・Aは、BのGUIフロントエンドです。裏でBを呼び出し、その結果を利用します。
AからBの呼び出しはsystem関数を使えばいいのですが、そうすると
Bが標準入出力やエラー出力に流したメッセージが、コマンドプロンプトに垂れ流しに
なってしまいます。
これらのメッセージをAが受け取り、解釈したいのですが、どのようにすればいいのか
わかりません・・・・
できれば標準C/C++の範囲内に収まるようなやり方があればいいのですが・・・
0648デフォルトの名無しさん
NGNGさすがにこれは無理
0649デフォルトの名無しさん
NGNG>標準C/C++の範囲内に収まるようなやり方があればいいのですが・・・
ない
UNIX環境についてはpipe exec forkで検索
Windows/Linux環境の差異を吸収するようなライブラリは???
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNGa[0] = 'a';
a[1] = 'b';
a[2] = 'c';
a[3] = '\0';
とした場合、a[4]以降にはメモリ上どんな値が入ってるのでしょうか?
\0(NULL)ではないのでしょうか?
0654デフォルトの名無しさん
NGNG不定です。決まっていません。
0655デフォルトの名無しさん
NGNG不定
0656デフォルトの名無しさん
NGNGありがとうございます。勉強になりました。
0657デフォルトの名無しさん
NGNGa[9] = '\0';
printf("%s",a);
0658デフォルトの名無しさん
NGNGあふぉ
0659デフォルトの名無しさん
NGNG不定
おせっかいなコンパイラは0(\0)を入れてくれることもある
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNGただ単にsizeofの結果の符号無し整数型としか書かれていない。
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNGsize_t ってその architecture で
最良の performance を出せる
最大の unsigned int で宣言されてるの?
これって慣習?
それとも何かの規約で保証されてる?
0664デフォルトの名無しさん
NGNGunsigned int ってその architecture で
最良の performance を出せる
最大の bit で宣言されてるの?
これって慣習?
それとも何かの規約で保証されてる?
0665デフォルトの名無しさん
NGNG#include <string.h>
struct x{
int num;
char *str;
};
void disp(struct x data){
printf("%d, %s\n", data.num, data.str);
}
void main(){
char str[] = "abcde";
struct x data1 = { 1, str };
struct x data2;
data2 = data1;
disp(data1);
disp(data2);
*(data1.str) = 'A';
disp(data1);
disp(data2);
}
ポインタはコピー元とコピー先で同じアドレスを指しますので、
どちらか一方のポインタの指すデータを書き換えた場合は、
もう一方のデータも書き換えられることになります。
だそうです。いろいろ試したんですが、なぜか作動しません。
0666デフォルトの名無しさん
NGNGのstrを"他の文字"に変えると無事にコンパイルができました。
0667デフォルトの名無しさん
NGNG文字列リテラルを書き換えた場合の動作結果は不定だよ。
0668デフォルトの名無しさん
NGNGこうしろ
struct x data1 = {1};
struct x data2;
data1.str = str;
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGfopenを使ってファイルを開いておいて
引数としてファイルポインタを与えたほうがいいのでしょうか?
それとも、ファイル名を文字列として与えて、
関数内でfopenを行ったほうがいいのでしょうか?
0673デフォルトの名無しさん
NGNG16KBずつ読み込んでそれを送信しているのですが、正しく表示されるのは最初の16KBの部分だけ(多分)で、
それ以降の部分は原型がないくらいに乱れています。
オフセット辺りが問題かと思って色々変えてみたのですが解決しません。
よろしくお願いします。
該当部分のソースです。
0674デフォルトの名無しさん
NGNG* 変数は全てローカル変数。送信ファイルのフォルダと受信ファイルのフォルダは別です。
*/
//送信部分
hFile=CreateFile(FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
memset(&buf,'\0',sizeof(buf));
SetFilePointer(hFile,0,0,FILE_BEGIN);
ReadFile(hFile,buf,sizeof(buf),&read_size,NULL);
while(read_size){
send(socket_c,buf,read_size,0);
memset(&buf,'\0',sizeof(buf));
SetFilePointer(hFile,read_size,0,FILE_CURRENT);
ReadFile(hFile,buf,sizeof(buf),&read_size,NULL);
}
CloseHandle(hFile);
//受信部分
hFile=CreateFile(FileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
memset(&buf,'\0',sizeof(buf));
SetFilePointer(hFile,0,0,FILE_BEGIN);
bl=recv(socket_c,buf,sizeof(buf),0);
while(bl){
WriteFile(hFile,buf,bl,&write_size,NULL);
memset(&buf,'\0',sizeof(buf));
SetFilePointer(hFile,bl,0,FILE_CURRENT);
bl=recv(socket_c,buf,sizeof(buf),0);
}
CloseHandle(hFile);
0675デフォルトの名無しさん
NGNGテキストファイルそのものを操作するならファイル名。
中身しか興味が無いならファイルポインタ。
ファイル名を渡せばそれをremoveしたり出来るし、
ファイルポインタならファイルを途中から渡したりstdinを渡したり
出来るからな。
0676673-674
NGNG送信・受信のファイル読み込み時にSetFilePointerを使っていたのが問題だったようです。
SetFilePointerを使わなくてもポインタは自動的に移動するということが分かりました。
俺のソースだとそこからさらに移動させていたことになります。
お騒がせしました。
0677デフォルトの名無しさん
NGNGテキストファイルしか操作しませんので、
ファイル名を渡そうと思います。
remodeとかはよく分かりませんので調べてみます。
ありがとうございました。
0678デフォルトの名無しさん
NGNGconst MyClass &でないといけないとコンパイラに怒られてしまいます
こういうのは普通どうするのでしょうか?キャスト?
0679デフォルトの名無しさん
NGNGどんなコード書いてるのか知らんが、お前の書き方が悪いだけだよ
0680678
NGNGえぇぇ、stl::listになんらかの変数のポインタを入れたいことって無いですか?
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG入れられるんだよ。入れられないのはお前の書き方が悪いだけだって言ったんだよ。
0683678
NGNGlist<MyClass> *myClassList = new list<MyClass>;
MyClass *myClass = new MyClass();
myClassList()->push_back(myClass);
0684デフォルトの名無しさん
NGNG×list<MyClass>
○list<MyClass*>
0685678
NGNGなるほどそういう問題だったんですね!
0686デフォルトの名無しさん
NGNG逆じゃない?ファイル名を渡すってことはファイル名を使った
APIを使いたいときにかぎるっていうことを>>675を言ってるんだと
思う。だから、ファイルポインタを渡すべきだと思う。
0687デフォルトの名無しさん
NGNG以下のソースで、int型のメンバポインタは作れるのですが、
void型のメンバポインタを作ろうとすると、エラーが出てしまいます。
汎用のメンバポインタというものは作れないのでしょうか?
class A{
};
int A::*ptr_int;
void A::*ptr_void; //エラー2182
int main()
{
}
0688デフォルトの名無しさん
NGNGvoid 自体に汎用とか総称の意味はないのでは…?
0689デフォルトの名無しさん
NGNGISOの8.3.3 pointer to membersより
A pointer to member shall not point to a static member of a class (9.4),
a member with reference type, or "cv void".
~~~~~~~~~~~~
0690デフォルトの名無しさん
NGNG継承によるポリモーフィズムを使う方向が正解では。
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNGexit関数の引数に入れる数字
例えばexit(0)の
0に当たるところです。
そこに入れる数字に何か意味はあるのですか
教えてください。
0693デフォルトの名無しさん
NGNGttp://www.bohyoh.com/CandCPP/C/Library/exit.html
ちょっとは自分で調べような。
0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGありがとうございます
とりあえずまとめてみます
exit(0)または、exit(EXIT_SUCCESS)は、正常終了時
その他は、異常終了
このEXIT_SUCCESS,(EXIT_FAILURE)はstdlib.hにマクロ定義されている
0696695
NGNGEXIT_SUCCESSの中身は、0でした
EXIT_FAILUREの中身は、1でした
とりあえず、0が成功、1が失敗と覚えます
0697687
NGNGありがとうございました。
よく分からなかったのですが、void型は使えないということで納得します。
ソースを見直したら、int型のメンバポインタで問題なさそうだったので、
それでやってみることにしました。
0698デフォルトの名無しさん
NGNG//hoge.hpp
class Hoge {
public:
hoge() {...}
int fuga(){
...
}
hage() {
...
}
};
ってヘッダ内に全部書いてるんだけど、後でこの実装部分を.cppに移そうとすると
非常に面倒で困るわけです。
なにかこのへんを補助してくれるツールなどご存知ありませんか?
0699デフォルトの名無しさん
NGNGenum Value{a=1, b, c};
void func(Value val)
{
//hogehoge
}
プログラム中でfuncを使おうとすると、
//エラー
func(a);
gccは「Valueとintに互換性がないよ」といったエラーを吐きます。
func((Value)a);とすればコンパイルは通るのですが、
これってgccでは普通なんでしょうか?MSのclでは問題はでないようなんですが・・・
0700デフォルトの名無しさん
NGNGVS.net2003ではエラーになったYO
たぶんVC6.0が糞なだけだYO
0701デフォルトの名無しさん
NGNGえっ!?
通るのが普通なんじゃないんですか?
うちのg++(3.3.4)は警告なしで通るんですが
0702デフォルトの名無しさん
NGNGちょっと待ておまえさっきはgccで通らずVCで通るとか言ってただろ。
コンパイラのバージョンとオプションくらい書いとけ
0704デフォルトの名無しさん
NGNGenum Value { a=1, b, c };
なら
void func(enum Value val)
じゃないといかんかと。それが嫌であれば
typedef enum _Value { a=1, b, c} Value;
とか。
C++ではenumもstructも特に書かなくても使える
0706704
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG例えば、
struct Foo { int hoge[2][2]; };
Foo foo[2][2];
Foo *p = foo;
こんなとき、p を使って foo[1][1] の hoge[1][1] にアクセスしたいときは
どう書けばいいんですか?
0715デフォルトの名無しさん
NGNG0716714
NGNG即レスどうもです。
でもFoo *p = foo;はできたと思うんですが…(ちなみにBCC)
わかり易くしようと思ってstructにしたんですけどclassの場合どう
でしょうか?
0717デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGstruct Foo { int hoge[2][2]; };
Foo foo[2][2];
Foo (*p)[2] = foo;
int hage = p[1][1].hoge[1][1];
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNG一次配列の時と勘違いしているのでは
>>718
強引にキャストしているから代入できているようにみえるだけ。
0727デフォルトの名無しさん
NGNG例えば、コンパイラをCUIで作って、エディタをGUIで作って、コンパイラからエラーメッセージをエディタに受け渡す様なそんな感じで。
0728デフォルトの名無しさん
NGNGええ可能です
お使いの開発環境はそうなっていませんか?
0729727
NGNGなってますが、それをどうやってC++で実装すれば良いのやら………
ファイルに書き出して読み込むという方法は直ぐに思いつくのですが、
もっとスマートな方法があると思うので……例えば、プロセス間の通信とかは不可能なのでしょうか?
0730デフォルトの名無しさん
NGNGWin32ならパイプ(NT系のみ)とか。メールスロットとか。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGあと、メッセージのやり取りでも。
アプリ間のプロトコルを自分で決めちゃえば
かなりのことが出来るはず。
0733デフォルトの名無しさん
NGNG>>729の中の人、調べてみたら?
0734デフォルトの名無しさん
NGNGクリップボードと関係あるみたい。
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG名無しさんなら9xでもパイプは使えるよ。
0737デフォルトの名無しさん
NGNGGetExitCodeProcess で終了コードを取得できないか?
0738698
NGNG0739デフォルトの名無しさん
NGNG適当なエディタでマクロでも組んだら?
インクルードファイルの関数定義をコピーしてクラス名追加してインデントを整えるのと、
インクルードファイルの方は関数本体をセミコロンに変えるだけでしょ。
0740714
NGNG配列の配列 int array[N][N]; は式の中では配列へのポインタに成る、
というのはわかったんですがこれがポインタのポインタにならない
というのは違和感を感じます。
後ろの[N]は配列を配列として扱っているということなんでしょうか?
あと int (*p)[2] のカッコは必要なんですか?よろしくお願いします
0741デフォルトの名無しさん
NGNGint *p[2];だと「『intへのポインタ』の配列[要素数2]」になる。int *(p[2]);と同じ。
int (*p)[2];は「『intの配列[要素数2]』へのポインタ」になる。
違和感は慣れるしかない。
0742デフォルトの名無しさん
NGNGTの配列はTへのポインタになる。
∴配列の配列は配列へのポインタになる。
0743デフォルトの名無しさん
NGNG対コンピュータの思考ルーチンをどうしていいか全くわからないので。
0744デフォルトの名無しさん
NGNG'a'のような1文字も_T('a')と書いた方がいいんでしょうか?
0745デフォルトの名無しさん
NGNGそう。
…って俺も理由を深く考えたことなかったんだけど
_T('ア') とかの場合に特に意味があるんだよね、きっと?
0746デフォルトの名無しさん
NGNGTCHARならそうしろ。
char/CHARなら_Tはつけるな。
個人的にはCランタイムはUnicodeにする意味はないと思う。
どうせ内部でShiftJISに戻していたりするんだろうし。
俺はWin32APIが絡んでくるときだけ_Tとかを使っている。
0747714
NGNGレスどうもです。なんかわかってきました
int *p[2];は配列でint (*p)[2];はポインタというのがミソですね
ここは親切さんが多くて助かります。ありがとうございました
0748デフォルトの名無しさん
NGNGC言語で(表示はDOSの真っ暗に〇× 0は空欄4は―で何もないという意味)
簡単な〇Xゲームを作ろうとしているんですが
下記のようにC配列で判定、S配列で表示しようと考えたのですが
結局ifでc[i][j]=???でprintfで表示するしかないんじゃあS配列いらんなあ(汗
という考えになったんですけど どうにかなりませんでしょうか?
int c [5][5]={
{0,1,2,3},
{1,4,4,4},
{2,4,4,4},
{3,4,4,4}
};
//0123 456で−〇Xの判定
char s [8][15]={
" ",
"1",
"2",
"3",
"−",//4
"〇",//5
"×",//6
};
0749デフォルトの名無しさん
NGNGたしかにsは要らなさそうだ。
それよりその1文字変数名はやめろ。
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGchar *s[] = {
" ",
"○",
"×",
"−",
};
0752デフォルトの名無しさん
NGNG2次元配列の勉強をしていまして
1つは判定というか内部的な処理
2つ目の配列はそれに対応する反応ってな具合にできるんじゃないだろうか?
と素人考えになったんであえて2つ使ってます。
発展させれば0のときはこの画像、1の時は別の画像出す
みたいなのにも応用できる物が出来そうだな・・・と
変数名はscanとかに変えておいたほうがいいですね。申し訳ない
0753デフォルトの名無しさん
NGNG何をしようとしてるのか良く分からんのでコード書いてくれ。
0754デフォルトの名無しさん
NGNG???
やりたい事は printf("%s",s[c[i][j]]) ではないのか?
0755デフォルトの名無しさん
NGNG余計分からなくなるに
1gotoかける
0756デフォルトの名無しさん
NGNGfunc( int*& a );
とある場合にどのように、引数を渡せばいいのでしょうか?
0757デフォルトの名無しさん
NGNGint*&はintへのポインタへの参照。
意味としてはtypedef int *PINT; func(PINT& a);と同じで、これならわかるよな。
0758756
NGNG早速のレスありがとうございます。
ということで、
int* a;
func(a);
なのですね。
もうすこし、参照とポインタについて調べてみます。
ありがとうございましたm(__)m
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNG例えばこういうことができる。(戻り値を使えとかそういうツッコミはするな)
void func(int*& a)
{
a = new int;
}
0761デフォルトの名無しさん
NGNG#define SAFE_RELEASE(p) { p->Release(); p = 0; }
template <class T>
void safe_release(T*& p)
{ p->Release(); p = 0; }
0762デフォルトの名無しさん
NGNG>>761
なるほど、良くわかりました。thx!
0763デフォルトの名無しさん
NGNGどうでもいいけどそれはIUnknwon*&でいいんじゃないか?
全部そこから継承されているんだし。
0764デフォルトの名無しさん
NGNGI???* から IUnknown* に暗黙の変換が行われたとして、
変換結果のポインタはテンポラリだから IUnknown*& には渡せないかもしれない。
0765デフォルトの名無しさん
NGNGwhile(!feof(fp)){
file_length++;
}
のようにfeof関数を使うと正しくバイト数が
分かりません。
どのように書けばいいですか?
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG省略しましたが、ファイルの内容は読んでます。
バイトが0x1Aの地点でfeofによりwhile文を抜ける
んですけど、どう書けば正しいですか?
宜しくお願いします。
0768デフォルトの名無しさん
NGNG読んでるなら、読んだ時に読んだサイズを足していけ。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG> バイトが0x1Aの地点でfeofによりwhile文を抜ける
ttp://www.kouno.jp/home/c_faq/c12.html#38
0771デフォルトの名無しさん
NGNGEasy Link Libraryの質問掲示板や、専用スレなどは無いでしょうか?
公式HPが無くなってしまったため、困っています。
もしご存知の方いらっしゃいましたら、教えてください。
0772デフォルトの名無しさん
NGNGもし初心者から一歩前へ進みたいと思うなら、そのライブラリとは極力かかわらない方が
良いですよ。
0773デフォルトの名無しさん
NGNGint *ptr と int* ptr はどちらも同じ意味なのでしょうか?
0774773
NGNG0775デフォルトの名無しさん
NGNGそんな低レベルの質問するな
0776デフォルトの名無しさん
NGNGはい、同じ意味です。
ところで、int *ptr;もしくはint* ptr;で宣言された変数ptrは何型になるか
解かりますか?
実は、これはint*型なのです。
ですから、意味としてはint* ptr;の方がわかりやすいですね。
ちなみに*ptrは、ptrが指すアドレスに記録されているint型の値のことですね。
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNGint* ptr, n;
とか書くと混乱するわけだが。
0779デフォルトの名無しさん
NGNGまぁね。
0780デフォルトの名無しさん
NGNGint *foo() と書くか
int* foo()
と書くかで悩むなぁ。
0782デフォルトの名無しさん
NGNG俺はint *p; int *func();派
「式の中で*pと書くとint型の値が得られる」と読む。funcも当然同様。
0783デフォルトの名無しさん
NGNG念のため混同しないように関数だけint* func();にしてる。
変数はint *p;
やっぱり統一した方がいいんでしょうか?
0784デフォルトの名無しさん
NGNGスタイルを統一するのは読みやすいコード作りの第一歩。
0785デフォルトの名無しさん
NGNGってあるんですか?
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGそんなときのtypedef
typedef int *PINT;
PINT func();
0788デフォルトの名無しさん
NGNGそんなときのtypedef
typedef int *PINT;
PINT func();
0789デフォルトの名無しさん
NGNGアフォか。構造体へのポインタ使うたびに typedef するつもりかよ。
0790デフォルトの名無しさん
NGNG共同開発するときはちょっとばかし気をつけたほうが良いけど
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNGif の条件をどうすればよいのかわかりません。
ヒントだけでもお願いします。
int n = 0;
char data[64];
while(1){
printf("data[%d]=", n++);
scanf("%s", data);
if(data == '\0'){
break;
}
}
0793デフォルトの名無しさん
NGNG家でBorlandのCコンパイラをダウンロードしてコマンドプロンプトを開いてみたのですが、
C:\Documents and Settings\user>
ってなってて、どうも学校のとは違います。
terapad等をしても
「'terapad'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
と出て何もできません。
C:>にするにはどうすればよいのでしょうか?
0794デフォルトの名無しさん
NGNGterapadはパスが通ってないからじゃない?
terapad.exeまでのフルパスを打つか、パスを通せば OK
パスの通し方は検索すれば見つかります。
0795デフォルトの名無しさん
NGNGC:\>になりました。ありがとうございました!
これからパスの通し方を勉強してきます
0796デフォルトの名無しさん
NGNGdata[0]
>793
コマンドプロンプトを開くショートカットのプロパティで、ディレクトリを設定する。
Terapadは、ぐぐってインストールし、pathを設定する。
0797デフォルトの名無しさん
NGNGこういう事か?
#include <stdio.h>
#include <string.h>
int main(void)
{
char data[64];
while (1) {
fgets(data, sizeof(data), stdin);
data[strlen(data) - 1] = '\0';
if (*data == '\0')
break;
else
printf("data = %s\n", data);
}
return 0;
}
0798793
NGNG環境変数のPATHを編集で「;C:\BORLAND\BCC55\BIN」と追加したのですが、やはり
「'terapad'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
と出ます。
どうすればいいのでしょうか・・・
「;C:\BORLAND\BCC55\BIN」を付け加える前の部分に問題があるのでしょうか?
0799デフォルトの名無しさん
NGNGそれはBCCへのパスであってterapadへのパスではない。
0800デフォルトの名無しさん
NGNGWindowsXPか?マイコンピュータを右クリック→プロパティ→詳細設定→環境変数で、ユーザの
環境変数のPATHに追加して、再起動してみな。
0801デフォルトの名無しさん
NGNGTerapadをインストールしろ
0802デフォルトの名無しさん
NGNGバッチリです!
でも、ちょっとコードの意味わかめなんで勉強してきます!
0803793
NGNGレスありがとうございました。
terapadをダウンロードして再起動して
terapadへのパスの通し方は「C:\Program Files\TeraPad\TeraPad.exe "%1"」と打てばできるそうなのでやってみたのですが、
「'Program'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
と出てきてしまい、またダメでした・・
0804デフォルトの名無しさん
NGNGのところで、
C:\>"C:\Program Files\TeraPad\TeraPad.exe" test.c
とすれば、test.cが編集できる。
これを
C:\>TeraPad test.c
で出来るようにしたいなら、"C:\Program Files\TeraPad"にPATHを通す。
0805793
NGNGありがとうございました。
上のは理解できたのですが、下の、"C:\Program Files\TeraPad"はどこで設定するのですか?
いろんな窓が開いててちょっと混乱気味です・・すみません・・
terapadの「表示」→「オプション」→ブラウザのパス設定とかは違いますよね?
0806デフォルトの名無しさん
NGNGscanf や fgets で入力された文字列の最後に'\0'が入るのではなく、
data[64]='\0' で、あとは未定義(?)ということでしょうか?
あと、fgets を scanf に入れ替えるとうまく動きませんが、
両者の違いは何ですか?
0807デフォルトの名無しさん
NGNGC:\BORLAND\....と同じように。
>806
fgetsは、最後に改行文字が入るから
0808793
NGNG朝からお騒がせしてすみませんでした・・・
0809デフォルトの名無しさん
NGNG普通scanfで中止する時は 戻り値がEOFか調べる
0810デフォルトの名無しさん
NGNG読み込み先のファイルの変更はどうすればいいのでしょうか?
0811デフォルトの名無しさん
NGNG鼬害。
terapadの使い方くらいterapadに同梱されてるだろ。
0812デフォルトの名無しさん
NGNG関係ない質問に答えていた俺にも原因の一端はあるのだが。
0813デフォルトの名無しさん
NGNG荒らしてしまってすみませんでした。
もう時間なのでここで消えます。失礼しました・・
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNGchar data[64];と宣言しているのにdata[64]に代入するとは何事。
0816デフォルトの名無しさん
NGNG相手のレベルを考えてから言えよな
ほっとけ
0817デフォルトの名無しさん
NGNGHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
でパス通せたりする
0818デフォルトの名無しさん
NGNG普通環境変数のPathに設定するかと…?
0819デフォルトの名無しさん
NGNGちょとまて。そこに書いたってパスは通らないんじゃないか?
0820デフォルトの名無しさん
NGNGそうだよ。
>>817
そこはアプリケーションを指定して実行からでしか有効でない。
0821デフォルトの名無しさん
NGNGBASICの香りが
0822デフォルトの名無しさん
NGNG[] でないなら BASIC なんだが...
0823デフォルトの名無しさん
NGNG返すマクロって書けるでしょうか?
hoge(3)が7(2進数で00000111)を返すような感じです。
関数になってしまうような長いのなら書けるのですが、コンパイ
ル(プリプロセス?)時に定数になるものは書けるでしょうか?
0824デフォルトの名無しさん
NGNG#define hoge(n) ((1ul<<(n))-1)
0825デフォルトの名無しさん
NGNG#define hoge1 0x01
#define hoge2 0x03
#define hoge3 0x07
#define hoge4 0x0F
#define hoge5 0x1F
#define hoge6 0x3F
#define hoge7 0x7F
#define hoge8 0xFF
0826デフォルトの名無しさん
NGNGありがとうございました!
一応逆アセンブルして確かめてみましたが、きっちり定数に
なっていました。これですっきりできます。
0827デフォルトの名無しさん
NGNGメルセンヌ数を知らんのか。
0828デフォルトの名無しさん
NGNGBOOSTみたいなことやってるな…
0829デフォルトの名無しさん
NGNG#define hoge(n) ((n == 1) ? 0x01 : (n == 2 ? 0x03 : (n == 3 ? 0x07 : (n == 4 ? 0x0F : (n == 5 ? 0x1F : (n == 6 ? 0x3F : (n == 7 ? 0x7F : (n == 8 ? 0xFF : 0)))))))
0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG三項演算子を使うと難しいことをやっているように見えるから。
0832デフォルトの名無しさん
NGNG下のプログラムでは間違ってると思うのですがどこが違うか教えて頂けませんか?
自分の考え方は、素数は素数未満の2以上の数では割り切れないので
if((i>j)&&(i%j==0))で、素数以外の数を表しているつもりです・・。
初心者なので、根本的に間違っていたらすみません・・。よろしくお願いします。
#include <stdio.h>
main()
{
int i,j;
for(i=2;i<101;i++)
for(j=2;j<101;j++)
{
if((i>j)&&(i%j==0)) ;
else printf("%d\n",i);
}
}
0833デフォルトの名無しさん
NGNGmain()
{
int i,j;
for(i=2;i<=100;i++)
{
for(j=2;j<=i;j++){if(i%j==0) break;}
if (i==j) printf("%d\n",i);
}
}
0834832
NGNGありがとうございます。833さんのは余りが0の時にbreakでif (i==j)に行くという事ですかね…。なんか答えが、
#include <stdio.h>
main()
{
int i,j,prime;
for(i=2;i<100;i++)
{
prime=1;
for(j=2;j<=i/2;j++)
if(!(i%j)) prime=0;
if(prime) printf("%d\n",i);
}
}
となっていたので、真似して
#include <stdio.h>
main()
{
int i,j,prime;
for(i=2;i<101;i++)
{
prime=1;
for(j=2;j<101;j++)
if((i>j)&&(i%j==0)) prime=0;
if(prime) printf("%d\n",i);
}
}
としてみてたらできました。primeの意味が良く分かりませんが…。
0835832
NGNGたぶん上に2が表示されていると思うのですが、2も表示させるにはどう設定を変更したら
良いのでしょうか?良かったら教えて下さい・・。
0836デフォルトの名無しさん
NGNGお前…
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNGなるほど!ありがとうございます。
0839デフォルトの名無しさん
NGNGC++でのoperatorの挙動についてです。
使用する環境は以下のとおりです。
【コンパイラ・環境】
gcc(2.9.5、3.1、3.3.2)とVS.NET
【質問内容】
myclassクラスのメンバ関数として
myclass operator + (myclass & ao)
{
myclass ret;
ret.i = i + ao.i;
return ret;
}
とし、main関数内でmyclassのオブジェクトa,b,c,dを作成した状態で、
d=a+b+c;
は当然問題なくできますが、
d=a+(b+c);
などとしますと、コンパイラがgccの場合、(b+c)が参照として渡せないとしてエラーがはかれます。
解決策としては、メンバ関数の引数にconstを書けばいいのですが、VS.NETではconstを記述しなくても
コンパイルされます。
このあたりの挙動がよくわかりません。
尚、VS.NETでは、retを返すと、(b+c)に対し新たにmyclassの一時
オブジェクトが生成されるようですが、gccでは、d=a+(b+c)の演算が終了するまで
返されたretのオブジェクトが保持されるようです(ここがconst?)。
0840デフォルトの名無しさん
NGNG0841839
NGNGご回答ありがとうございます。
参照を引数にしているので、その値を書き換えられるのを避けるために
constを書くのは分かるのですが、それをコンパイル時に「警告」ではなく
「エラー」にしてしまうのが分からないのです。
また、+演算子のオーバーロードを行う場合、引数に渡したオブジェクト
(当然参照されている状態)を変更したいという稀な場合もないともいえないと
思います(それが組み込み型などの演算と挙動が違う悪い書き方だとしても)。
0842デフォルトの名無しさん
NGNG例えば文字列リテラル(const char*)の書き換えを
警告で済ましていい事だと思うか?
0843デフォルトの名無しさん
NGNG0844839
NGNG設問ありがとうございます。
よくないんですか(よくないとしたらどこが)?
0845デフォルトの名無しさん
NGNGconst「に出来る」のではなく、const「でなければならない」のです。テンポラリ
オブジェクトはその式の実行が終わった時点で消滅するので変更を加える
ことにまったく意味がないからです。どうしても関数内で変更を加えたければ、
右辺を参照ではなく値渡しで受け取ればよいでしょう?
0846839
NGNG文字列リテラルは書き換え不可な領域に格納されているはずなので、
エラーが出てしかるべきだとは思います。
ですが、今回の+演算子の引数に参照を持たせているというだけで、
それをconstにしなければならないわけではないと思います。
実際、constを引数に記述しなくてもd=a+b+cはできるわけですし。
挙動が.NETとgccで違うところを見ると、ANSIの規格とは別の
独自拡張がどちらかになされているのかと思ってしまいます。
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGテンポラリオブジェクトを受け取るためにconst参照にするのです
0849839
NGNG今.NETとVC++6.0で以下のプログラムをコンパイルしようとしたらエラーでした。
#include <iostream>
using namespace std;
class myclass
{
public:
int i;
myclass( int ai = 0 ){ i = ai; }
const myclass operator + (const myclass & ao);
};
const myclass myclass::operator + (const myclass & ao)
{
myclass ret;
ret.i = i + ao.i;
return ret;
}
int main()
{
myclass ob1( 1 ), ob2( 2 ), ob3( 3 ), ob4( 4 );
ob3 = ob1 + ob2 + ob4;//エラー!
ob3 = ob1 + (ob2 + ob4);//できる!
cout<<ob3.i<<endl;
return 0;
}
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGだから だろ?
0852デフォルトの名無しさん
NGNG仕様に忠実で悪いことがあるの?
0853デフォルトの名無しさん
NGNGってか return myclass(i + ao.i); ってしないとRVO効かないぞ
0854839
NGNGですが、
ob3 = ob1 + (ob2 + ob4);
↑これできるんですよね。はじめ(ob2 + ob4)で、ob4はmyclassなんですが、const myclassの参照として
引数に渡され、テンポラリなconst myclassオブジェクトが返されると。
その後、ob1+テンポラリオブジェクトなわけですが、引数はconst myclassのテンポラリオブジェクトが
渡され、結果がまたconst myclassなテンポラリオブジェクトとして返される。
このイメージでいるんですが、それならob3 = ob1 + ob2 + ob4;もできるような
気がするんですよね。
あ、ちなみにgccでもできませんでした。
0855839
NGNGconst myclass operator + (const myclass & ao) const
ですが、戻す型がconst myclassってだけで、const関数にする必要はないと思うのですが。
return myclass(i + ao.i);
としても、しないでも結果は変わりませんでした。
0856853
NGNG(const tmp).operator+(ob4);
だけど、operator+がc指定されてないからダメなんじゃないの?
0857853
NGNGRVOは今回の話と関係ないので忘れてくれ
(気になるんだったらEffective C++ か More Effective C++ の
どちらかに書いてあったと思うんでそれ参照)
0858839
NGNGconst myclass operator + (const myclass & ao) const
って、つまりoperator+自身をconst指定するってことですね。
これやったらちゃんとできました。
まだconstに関して混乱してますが、あともう少しといった感じです。
ありがとうございます!
0859デフォルトの名無しさん
NGNG_DEBUGが定義されていれば実行する。定義されていなければ実行しない
というように切り替えたいと考えています。
そこで以下のように考えました。
void func( const char *hoge, ... ) という可変引数を引数に持つ関数があります。
引数にしたものを 画面に表示する printfと同様の処理を行います。
_DEBUGが定義されていなければこれは実行されません。
上記のように 実装するにはどうしたらいいんでしょうか?
#define func( const char *hoge, ... ) とできればいいんですが、できないので
何か解決方法があれば教えてください。
0860デフォルトの名無しさん
NGNGっ[ C99 ]
0861デフォルトの名無しさん
NGNG#ifdef _DEBUG
#define FUNC func
#else
#define FUNC
#endif
と別名定義してFUNCを使えばいいだけじゃねーの?
0862デフォルトの名無しさん
NGNG#ifdef _DEBUG
#define dprintf printf
#else
inline void dprintf(...) {}
#endif
0863デフォルトの名無しさん
NGNG#define FUNC func の部分
引数の部分はあえて省略してかいているんですか?
この引数は可変引数なので マクロに登録できないんですよ
0864デフォルトの名無しさん
NGNG関数の名前の部分だけの マクロ登録ってやっていいかどうか
自分では判断しかねたんですが、これしか方法がないようですので
使うことにします。
ありがとうございました。
0865デフォルトの名無しさん
NGNG__VA_ARGS__
0866デフォルトの名無しさん
NGNGいや本当にそれが使えたら不満ないんですが
VCコンパイラでは使えないんですよ
0867デフォルトの名無しさん
NGNGMFCのTRACEでは
#define FUNC 1 ? (void)0 : func
ってやってる。
最適化の段階で消されるんだろう。
0868デフォルトの名無しさん
NGNGどんなツール使ってますか?私は、会社で使ったことある人がいるから、
C++仕様書工房ってソフト使ってますがどうにもなれません。何かいいソフト
ありますか?100万ステップ目視管理はさすがに辛いというか自分には無理です。
0869デフォルトの名無しさん
NGNG手書きのグラフ。
0870デフォルトの名無しさん
NGNGすみません。MFCはできるだけ避けたいと思っていますので。
それと実行してみてわからないことがあったんですが
#ifdef _DEBUG
#define dprintf printf
#else
inline void dprintf(...) {}
#endif
で、デバッグ用の処理ができたんですが、この部分をdprintf.lib というstatic library にして、
また別のプログラムを作ります(以下のプログラム)
[ヘッダ部分]
#pragma comment( lib, "dprintf.lib" );
#include "dprintf.h"
void func();
[ソース部分]
void func() {
dprintf( "test\n" );
}
↑をstatic library 化して func.lib とする。
0871870
NGNG>>870
また違うプログラムAから func() を呼び出すとき、
そのプログラムAがデバッグで実行しようが、リリースで実行しようが
funclib の中には dprintfの結果がもうすでに書き込まれているので
変化はないんでしょうか。
func.lib がデバッグで作られたか、リリースで作られたかによって
プログラムAでの表示に違いがでると考えていいんでしょうか。
とすると、func.lib と dprintf.lib 各一つずつ用意して、プログラムAで
デバッグ文字を表示するときと、しないときにわけるようにはできないんでしょうか。
どなたか解決策を教えてください。
0872デフォルトの名無しさん
NGNGそもそも、そのdprintf.libは意味をなしてない事に気がつかないか?
0873デフォルトの名無しさん
NGNGVCなら単純にデバッグ版func.lib(func_d.libとでもしといて)とリリース版func.lib
をプログラムAのコンパイラオプションで選択すりゃいいし、
#ifdef _DEBUG
#pragma comment(lib, "func_d.lib")
#else
#pragma comment(lib, "func.lib")
#endif
と書いてもいいだろうし、どちらにせよデバッグ版とリリース版1つずつ用意して
どちらをリンクするかを決めりゃいい
0874デフォルトの名無しさん
NGNGdprintf では printfを実行してますけど、実際は 可変引数の関数を実行するもので
printfとは違う処理を行ってます。
>>873
やっぱり 2つ用意するしかないんですか><;;
ありがとうございました。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGまた苦労と気取りですか。
0879839
NGNGgccでは
・テンポラリオブジェクトを自動でconst扱い
・constオブジェクトで非constメンバ関数が使用できてしまう(warningは出る。constはずし?)
です。
VC++では自動的にconstにしてしまうとかないので、ANSI規格というか仕様にちゃんと準拠な感じです。
gccの勝手な(?)独自拡張が混乱のもとでした。
0880デフォルトの名無しさん
NGNG0881839
NGNGconst myclass operator + (const myclass & ao)const
{
cout<<"operator+の呼び出し"<<endl;
myclass ret;
ret.i = i + ao.i;//iはmyclassメンバ
return ret;
}
とやると、return myclass(i+ao.i);と記述したと同様にRVOが働くみたいです。
コピーコンストラクタは呼ばれませんでした。VC++ではちゃんとreturn myclass(i+ao.i);と書かないとRVOは働きません。
0882デフォルトの名無しさん
NGNG0883839
NGNGというつもりで言っています。
g++はコンパイラコレクションの一部ということで。
0884デフォルトの名無しさん
NGNGテンポラリであることと const であることは無関係。
型 T のテンポラリも、型 T const のテンポラリも存在する。
型 T のテンポラリに対しては非 const メンバ関数を呼び出すことができる。
言語の規格では、型 T のテンポラリは T& を初期化することができない。
型 T のテンポラリで T& を初期化できるのは VC++ の挙動がおかしい。
VC++ の挙動がおかしいのは歴史的な事情による。
0885839
NGNGmyclass ob1,ob2,ob3,ob4
というのがある場合(初期化は省略しました)、
ob3=ob1+ob2+ob4
という演算を行う際、operator+関数のオーバーロードを用意しますが、
その型(戻り型、operator+関数の呼び出し元オブジェクトの型、引数の型)
をどうするのかということで悩んでいました。
ob1+ob2を評価し、そのテンポラリオブジェクトを戻し、
テンポラリオブジェクト+ob4という流れになるかと思いますが、
その際、gcc(g++)ではconst扱いになるようで、VCでは戻り型に忠実でした。
0886デフォルトの名無しさん
NGNG何を調べて「const扱いになる」とか、「戻り型に忠実」とか言ってんの?
0887839
NGNGtypeidではconstかどうかまでは当然分かりませんので、実際に
プログラムを書いてみて、エラーやwarningとしてはかれていることからです。
環境はXcode(gcc3.3)とVS.NET2003です。
忠実は言い過ぎかもしれませんが、そのままの挙動をしていたので。
0888デフォルトの名無しさん
NGNGエラーや警告を「そのまま」貼れ。ソースも一緒にな。
typeid で const ってわかんなかったっけ?
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892839
NGNGclass myclass
{
public:
int i;
myclass( int ai = 0 ){ i = ai; cout<<"コンストラクタの呼び出し"<<endl;}//コンストラクタ
myclass(const myclass & ob){ i = ob.i; cout<<"コピーコンストラクタの呼び出し"<<endl;}//コピーコンストラクタ
~myclass(){cout<<"デストラクタの呼び出し"<<endl;}//デストラクタ
myclass operator + (myclass & ao);
};
myclass myclass::operator + (myclass & ao)
{
cout<<"operator+の呼び出し"<<endl;
//myclass ret;
//ret.i = i + ao.i;
//return ret;
return myclass(i+ao.i);
}
int main()
{
myclass ob1( 1 ), ob2( 2 ), ob3( 3 ), ob4( 4 );
const myclass ob5(100);
ob3 = ob1 + ob2 + ob4;
cout<<ob3.i<<endl;
//ob3 = ob1 + (ob2 + ob4);//このままだとVCではOK。g++ではエラー。
cout<<ob3.i<<endl;
return 0;
}
main関数内でob1〜ob5までをいろいろ組み合わせて足してみています。
typeidではオブジェクトの型は分かると思いますが、修飾子の判断までは
どうなんでしょう。
0893839
NGNGをXcode1.5(gcc3.3)で実行すると以下のようなエラーが出ます。
error: candidates are: myclass myclass::operator+(myclass&)
error: no match for `myclass& + myclass' operator
当然、operatorの引数にconstをつければ問題ないんですが。
これはob2+ob4のテンポラリオブジェクトがg++においてconst扱いに
なるからかと思うのですが、どうなんでしょうか?
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNG0896839
NGNGできるからやるといった話ではなく、単にgcc(g++)の仕様が
把握できずに、戸惑っているんです。
例えば、(仮に正しいとした上で)演算中のテンポラリオブジェクトが
自動でconst扱いされるのは、そのオブジェクトが不可変であるべきだと
いうことからそうなったのであれば、なぜconstオブジェクトが非const
メンバ関数を呼び出すことを許すのかといったことです(実際はwarning
出ますが、c++の仕様では禁止されているはずです)。
gccでの挙動がc++の仕様ではなく、独自の拡張であるのなら、
様々な環境下で、それぞれにあわせたコーディングを考えないといけない
ので、厄介だーと思ったのです。
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG>>884を読んでどこが納得できない?
0899デフォルトの名無しさん
NGNGつまりテンポラリオブジェクトが自動でconstになるのは正しいのかどうか?
ということじゃないんか?
0900839
NGNG納得してます.constとテンポラリ,それぞれが無関係であることは.
>899
そういうことです.補足すいません.
正しいかどうかと言いますか,gcc(g++)はそうじゃないのですか,
と書いたところ,少し話がずれてきてしまいまして.
gccはそういう仕様だから,そうなる.
ということがはっきりすれば良いだけなんです.
0901デフォルトの名無しさん
NGNGこれはgccの方が正しいのであって、VCの方が独自拡張だぞぃ。
0902デフォルトの名無しさん
NGNGあんたの立場と何がしたいのかをもっと具体的に。
>868だけじゃ、他人のソースを読むのに手頃なツールが欲しいのか、
C++仕様書工房を使いこなしたいのか、コード管理ツールが欲しいのか、
愚痴を言いたいのか判らん。
0903デフォルトの名無しさん
NGNG839ではないですが、同じ疑問がある者です。
その式は
ob1.operator+( ob2.operator+(ob4) );
と解釈されると思いますが、ob2.operator+(ob4)から返されるのはmyclassのオブジェクトですから
ob1.operator+に渡してエラーになる、というのがどうも納得いきません。
constを明示的に指定しなくてもテンポラリオブジェクトはconstと解釈されるため、
myclass&を引数に取るob1.operator+には渡せない、ということでしょうか?
0904デフォルトの名無しさん
NGNGこれは規格にも書かれているはずだし、g++も正しく実装している。
単に、非const参照を非constテンポラリで初期化できないだけだ。
0905デフォルトの名無しさん
NGNGなるほど、納得しました。
const参照を非constテンポラリで初期化 ならばOKなわけですね
0906デフォルトの名無しさん
NGNGピンポーン
0907839
NGNGすいません!そういうことだったんですね!
今度はちゃんと理解しました.
非const参照を非constテンポラリで初期化できないのはC++の仕様である
ということですね.
で,ob1+ob2ができるということは
非const参照は(非)constオブジェクト(テンポラリじゃない)で初期化は
できるってことですかね.
0908デフォルトの名無しさん
NGNGそりゃ普通のオブジェクトで参照を初期化できなかったら
参照渡しができなくなるかと…
0909839
NGNGconst参照ならできる・・・.記憶領域の関係で?コンパイラの最適化の関係で?
理由はわかりませんけど,そういう仕様ならそれに従うしかないですね.
ありがとうございました!
0910839
NGNG>型 T のテンポラリに対しては非 const メンバ関数を呼び出すことができる。
に関連してですが,g++が
型 T const(テンポラリ)オブジェクトに対して非 const メンバ関数を呼び出すことができる。
ということができてしまうのは,よろしくないですよね.
0911デフォルトの名無しさん
NGNG○ 非const参照をテンポラリで初期化できない
0912デフォルトの名無しさん
NGNGできねーよ。やってみてから言え。
0913デフォルトの名無しさん
NGNG自分のバカさ加減にあきれ気味です…。
#include<stdio.h>
int main(void)
{
double r;
scanf("%f\n",&r);
printf("r=%fです\n",r);
return 0;
}
単純に「5」と入力したら、「r=5です」
と表示させたいだけなのですが…。
ナニがおかしいのでしょうか…?
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNGEnterキー押していない?
0916デフォルトの名無しさん
NGNGfloat : %f
double : %lf
long double : %Lf
0917839
NGNG非const参照をconstテンポラリで初期化できないのはそのままですね.
>912
できねーんですよ.そうなんです,できないはずなんです.
でもXcodeで実行するとエラーではなくwarningはくだけでコンパイルされるんです.
constが無効化するのかもしれませんが.
0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNGありがとうございました。
無事、表示できました。
もう少し自分のバカ脳味噌とつき合ってみます。
0920839
NGNG0921デフォルトの名無しさん
NGNGエラーや警告を「そのまま」貼れ。ソースも一緒にな。
>>918
聞いた事無いな。どんなの?
まさか -Dconst= とか?
0922839
NGNG警告はですね
passing `const myclass' as `this' argument of `myclass myclass::operator+(myclass&)' discards qualifiers
となっています.
ソースは
>>892
です.その中でob3=ob5+ob2とやってみると,constなob5が非constメンバ関数operatorを呼び出せてしまいます.
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGそれ、エラーになってないか?
警告ならメッセージの先頭に warning と書いてあるはずだぞ。
0925839
NGNGそうですか.いやXcode1.5(gcc3.3)でやるとそうなるんですよね.
Darwin(BSD?)版のgccだとよろしくないかもしれません.
linux等でエラーになるのなら,それはそれで問題ないですね.
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG> いやXcode1.5(gcc3.3)でやるとそうなるんですよね
だったら先にそう書けこのバ
0929デフォルトの名無しさん
NGNGchar buf[100];
strcpy(buf, "abc");
dp.push_back(buf);
とするとうまく格納されるのですが、
char buf[100];
buf[0] = 'a'; buf[1] = 'b'; buf[2] = 'c'; buf[3] = '\0';
dp.push_back(buf);
とするとdp[0]dp[1]と呼び出した時に
何も表示されなかったり、全て最後に格納した内容が表示されたりするんです
何が原因でしょうか?
0930デフォルトの名無しさん
NGNG君が言っている「うまく格納される」は、1つの関数の中にdpもbufも
入っているときに過ぎない。ある関数の中で
int hoge(){
char buf[100];
...
としていたとして、この関数を抜けたところでbufそのものが消滅して
いるから、dpがこの関数の外にスコープを持っていた場合、bufの
先頭アドレスを持っているdpの内容も当然破綻する。
0931デフォルトの名無しさん
NGNG{
char s1[]="Hello",s2[]="World",s3[20];
cout << strcat(s1,s2) << endl;
cout << s1 << endl //下のプログラムと違う箇所
<< strcpy(s3,s1) << endl;
return 0;
}
これをコンパイルして実行すると
HelloWorld
HelloWorld
HelloWorld
と出力されるのですが、
int main()
{
char s1[]="Hello",s2[]="World",s3[20];
cout << strcat(s1,s2) << endl
<< s1 << endl //上のプログラムと違う箇所
<< strcpy(s3,s1) << endl;
return 0;
}
これをコンパイルして実行すると
HelloWorld
HelloWorld
Hello
となるのです。
二つのプログラムの相違点が、このような出力の違いを生み出しているのは分かるのですが、
何故このような違いが現れるのか、御教授お願いします。
ちなみにコンパイラはBCC5.5.1です。
0932デフォルトの名無しさん
NGNG何やってんのよ…
ポインタや配列を一から勉強し直してください
0933デフォルトの名無しさん
NGNGああ、本当だ。
ここは、s1[15]="Hello"のように十分な配列を確保しておかなければならなかったorz
0934デフォルトの名無しさん
NGNGs1の配列を十分に確保したけど、それでも>>931と同じ結果になるorz
0935デフォルトの名無しさん
NGNG副作用完了点 または シーケンスポイント でググれ。
一応その場合について言っておくと、
strcpy(s3,s1)がstrcat(s1,s2)より先に呼ばれたからそうなっただけ
0936デフォルトの名無しさん
NGNGポインタの配列のの問題ではない。関数の引数の評価順序の問題。
cout << strcat(s1, s2) << s1 << strcpy(s3, s1);は、operator<<()を書き下すと
operator<<(operator<<(operator<<(cout, strcat(s1, s2)), s1), strcpy(s3, s1));ということ。
途中でostream& std::operator<<(ostream&, const char*);が呼び出されるわけだが、
関数の引数の評価順序は規格により未定義。
例えば、関数の引数が右から評価されるような処理系において、最初にstrcpy(s3, s1)が
実行される。当然s3は"Hello"となる。つまり、君の環境でそのコードをコンパイルしたら、
たまたま右から引数が評価されたわけだ。
当然左からでも中央からでも不規則でもかまわない。よってそのコードは環境によって
動作が変わる。
以上のことから関数の引数の評価順序に依存するようなコードは、一般的には書いては
ならないとされている。初心者がほぼ必ず一度ははまる罠。
0937デフォルトの名無しさん
NGNG0938デフォルトの名無しさん
NGNG一番素直な実装ではあるんだが。
0939デフォルトの名無しさん
NGNG丁寧な解説、感謝します。
この場合、問題解決の方法としては、>>931の下のプログラムのように、
cout << (文1) << endl;
cout << (文2) << endl;
という風にすれば、処理系に依存しないプログラムになるということですね。
0940デフォルトの名無しさん
NGNG違う、下ではなく上であったorz
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGSt->menba[0][0]=1;と書くと大丈夫なのですが
int i;
i=0;
St->menba[0][i]=1と項番に変数を入れると値が変更されていません。
なぜなんでしょうか。
0943デフォルトの名無しさん
NGNG0944942
NGNG0945デフォルトの名無しさん
NGNGとりあえず問題部分のソース晒せ
0946942
NGNG{
for(cntA=0;cntA<10;cntA++)
{
for(cntB=0;cntB<10;cntB++)
{
(St+cnt)->menba[cntA][cntB]=1;
}
}
}
だいたいこんな感じです。cntA,cntBを使わずに数字を直でいれれば値が変わるのですが
そうしてしまうと、ソースが無駄に長くなってしまうので悩んでいます。
0947デフォルトの名無しさん
NGNG値が変わったかどうかは何で確認したの?
0948デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1104814358/
0949デフォルトの名無しさん
NGNG配列の範囲外をアクセスしている悪寒。
構造体の定義を晒してみ。
0950942
NGNGもう少し自分でやって出来なかったらもう一回質問に来ます。
0951942
NGNGやっぱり範囲外にアクセスしていたみたいです。
書き込みしてくれた皆様、ありがとうございました。
0952初質の人
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1104843249/
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNGすでに何かデータが入っているかを調べるにはどうすればいいですか?
データが存在しないのにアクセスするとエラーになるし・・・
0956デフォルトの名無しさん
NGNG>map<"1234">
なんだその表現は。
map::findで調べればいいじゃない
0957デフォルトの名無しさん
NGNGfind, count, lower_bound等
Effective STL くらいは読んでおくと後が楽だよ
0958957
NGNG確か初期値が返ったと思うのだが
(禿本にもそう書いてなかったっけ?)
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG何をしようとしてる?
0962デフォルトの名無しさん
NGNG処理速度とかバグとかは検証して使ってないけど。
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGmakeで必要ファイルをアーカイブするところまで作っておくと楽だよ。
VCのプロジェクトファイルとかでそれが出来るかどうかはしらないけど、
多分できるんじゃない?
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG処理の前後でタイマの数値取って差分出せばいいだけだろ
0967デフォルトの名無しさん
NGNGプロファイル汁。
0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNGWindowsSDKで、RICHEDITをCreateWindowExで作成しているのですが、親ウィンドウから、
どの文字(英数字のみ)が入力されたかを知るにはどうしたらいいのでしょうか。
メッセージキューに何が入るのかがわからないのです・・・コントロールは始めて使いますので
(というかどうやったら入るのかもわからないのですが・・・たぶん入っている・・・みたいな_no)
0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNGcase WM_CHAR:の処理を加工して規定の処理をしたいデータをDefWin~Procに渡せば、文字の制限など簡単。Beep参照
0972デフォルトの名無しさん
NGNGhttp://school4.2ch.net/test/read.cgi/kouri/1102125273/
なんともム板にふさわしいスレタイではないか。「真」だ!!!
0973デフォルトの名無しさん
NGNG値型
class1 c1;
ポインタ型
class1 *c1 = new c1;
どっちが適しているんですか?
0974デフォルトの名無しさん
NGNG知らん。情報少な過ぎ。
0975デフォルトの名無しさん
NGNG場合によりますー ポインタの方が良く使うかもしれませんが…
あまり使いたくありませんね…^^; にゃんにゃん
0976デフォルトの名無しさん
NGNGC#ではC++のポインタ型に似た式です
一人で書いたと思われるソースで
値型とポインタ型を使い分けていた人がいたので
気になったのですが
0977デフォルトの名無しさん
NGNG場合によるって書かれてるじゃん
0978デフォルトの名無しさん
NGNGポインタを使うしかないときだけポインタをつかいましょうー にゃんにゃん
0979デフォルトの名無しさん
NGNG>ポインタを使うしかないとき
っていうのは派生クラスのオブジェクトで
基本クラスのメンバ関数を呼び出すときとかのことですよね?
ありがとうございました
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982969
NGNGどうもありがとうございます。ただ、WM_CHARにブレークポイントを設定しても
引っかかってくれません。Spy++で見ると、たしかにWM_CHARは送られているのですが・・・
親ウィンドウでWM_CHARを取得するのに、何かをSendMessageしたりとかしないと
いけないのかなぁと思ったのですが・・・m(_ _)m
0983デフォルトの名無しさん
NGNGその前にRICHEDITのサブクラス化は?
0984969
NGNGttp://wisdom.sakura.ne.jp/system/winapi/win32/win64.html
を見てうまくやることができました。
>case WM_CHAR:の処理を加工して規定の処理をしたいデータをDefWin~Procに
というのもうまくできました。。どうもありがとうございます☆
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG...
#include<math.h>
...
double i,j;
for(i=0;i<20;i+=1){
for(j=0;j<15+15*sin(2*i*M_PI/20);j+=1)putchar(' ');printf("*\n");
}
0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。