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

【初心者歓迎】C/C++室 Ver.5【環境依存OK】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。

【初心者歓迎】C/C++室【環境依存OK】
http://pc2.2ch.net/tech/kako/1059/10590/1059041347.html
【初心者歓迎】C/C++室 Ver.2【環境依存OK】
http://pc2.2ch.net/tech/kako/1067/10671/1067189450.html
【初心者歓迎】C/C++室 Ver.3【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1069719929/
【初心者歓迎】C/C++室 Ver.4【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1073473867/

【ラウンジ】質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

関連スレは>>2-3
0002デフォルトの名無しさんNGNG
【関連スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 20代目
http://pc2.2ch.net/test/read.cgi/tech/1075217631/l50
C言語なら俺俺に聞け! Part 73
http://pc2.2ch.net/test/read.cgi/tech/1077095949/l50
C++相談室 part27
http://pc2.2ch.net/test/read.cgi/tech/1074454641/l50
★初心者にVisual C++を教えるスレ★ Part10
http://pc2.2ch.net/test/read.cgi/tech/1074933908/l50
C++Builder相談室 Part8
http://pc2.2ch.net/test/read.cgi/tech/1070222674/l50
GCCについて part3
http://pc2.2ch.net/test/read.cgi/tech/1072484422/l50
Turbo C++ 5.0 プログラミング
http://pc2.2ch.net/test/read.cgi/tech/1030878794/l50
0003デフォルトの名無しさんNGNG
【関連スレ】
【C++】template 統合スレ -- Part3
http://pc2.2ch.net/test/read.cgi/tech/1066493064/l50
プリプロセッサについて熱く語るスレ。
http://pc2.2ch.net/test/read.cgi/tech/1058203590/l50
超初心者にもわかるC言語の本ってないですか?
http://pc2.2ch.net/test/read.cgi/tech/1053091019/l50
タダで最強!フリーC/C++コンパイラ
http://pc2.2ch.net/test/read.cgi/tech/1035882599/l50
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
Borland C++ BuilderX
http://pc2.2ch.net/test/read.cgi/tech/1065260556/l50
C統合・質問スレッド
http://pc2.2ch.net/test/read.cgi/tech/1068359871/l50
くだらない質問でもべっちょ偉そうに聞いていいスレ
http://pc2.2ch.net/test/read.cgi/tech/1069530956/l50
0004デフォルトの名無しさんNGNG
4
0005デフォルトの名無しさんNGNG
perlのcrypt関数と同じ動作をC++でもさせたいのですが、
unistd.hが無いのでその関数が使えません。
どうにかしてC++でcrypt関数を使う事は出来ないでしょうか?
0006デフォルトの名無しさんNGNG
環境書けよバカ
「C++で使いたい」じゃなくて「Windowsで使いたい」だろうが
C++で使いたいならLinuxでも入れとけ
00075NGNG
windowsです
0008デフォルトの名無しさんNGNG
>>6
> 「C++で使いたい」じゃなくて「Windowsで使いたい」だろうが
それがわかるってことは>>5の書き方でも十分だろ。
0009デフォルトの名無しさんNGNG
cout,endlって・・・
CとC++って全然違うじゃん・・・
0010デフォルトの名無しさんNGNG
>>9
合ってるようでズレてるな、その見方。
0011デフォルトの名無しさんNGNG
下記のコードの場合、INIファイルに保持しているウィンドゥハンドルに対し
正しくコマンドライン引数をメッセージとして送信するのですが

//OK:「INIファイルのリード」→「COPYDATASTRUCTを設定」
if ( ParamCount() > 0 ) {
 AnsiString FilePath = ExtractFilePath(Application->ExeName) + "Sample.ini";
 TMemIniFile *Ini = new TMemIniFile( FilePath );
 int i = Ini->ReadInteger( "SECTION1" , "WindHand", 0 );
 delete Ini;

 COPYDATASTRUCT cds;
 cds.dwData = 1;
 cds.cbData = ParamStr(1).Length();
 cds.lpData = (LPVOID)(ParamStr(1).c_str());//コマンドライン引数

 SendMessage((HWND)i,WM_COPYDATA,(WPARAM)Application->Handle,(LPARAM)&cds);
}
001211NGNG
下記のコードの場合はcds.lpDataがAnsiString FilePathを示すポインタに
書き換わってしまいます。

//NG:「COPYDATASTRUCTを設定」→「INIファイルのリード」
if ( ParamCount() > 0 ) {
 COPYDATASTRUCT cds;
 cds.dwData = 1;
 cds.cbData = ParamStr(1).Length();
 cds.lpData = (LPVOID)(ParamStr(1).c_str());//コマンドライン引数

 AnsiString FilePath = ExtractFilePath(Application->ExeName) + "Sample.ini";
 TMemIniFile *Ini = new TMemIniFile( FilePath );
 int i = Ini->ReadInteger( "SECTION1" , "WindHand", 0 );
 delete Ini;

 SendMessage((HWND)i,WM_COPYDATA,(WPARAM)Application->Handle,(LPARAM)&cds);
 AnsiString n = AnsiString((char*)cds.lpData);
 ShowMessage(n); →"c:\Documents a・・・"を表示
}

影響ないと思うんですが、なんででしょうか?
0013デフォルトの名無しさんNGNG
AnsiStringということは、BCBだな?
「AnsiString c_str 注意」とかで検索してみな
0014デフォルトの名無しさんNGNG
ParamStrが返すAnsiStringをどこでも受け取ってないから
すぐ消えちゃうって事だな。なのにc_str()で使おうとしてる。
001511NGNG
>>13
へ〜結構ヒットしました、じっくり読んで見ます。
そういう検索方法もあるんですね、ありがとうございます^^

>>14
ParamStr(1)は壊れてないです。
00165NGNG
(・(ェ)・)
0017デフォルトの名無しさんNGNG
> ParamStr(1)は壊れてないです。

どうやって確かめたの?
0018デフォルトの名無しさんNGNG
まあまあ、初心者が知ったかぶりするのはよくあることさ。
本人が壊れてないって言ってるんだから。

ParamStr関数置いてあるコード領域は壊れてないんだろう。
001911NGNG
単純にSendMessageの後にShowMessage( ParamStr(1) )
で確認しまた。

>>18
>ParamStr関数置いてあるコード領域は壊れてないんだろう。
コード領域?
0020デフォルトの名無しさんNGNG
質問
どなたかMFCのCArrayの使い方を教えていただけませんでしょうか。
「Collect」というサンプルを参考に、int型変数を要素として持つ配列を
作ろうとしているのですが、MFCで作られる全くのSDIスケルトンに、

CArray<int,int> m_iArg;

などとやってもコンパイルが通りません。
試しに、サンプルである「Collect」と同じ宣言で、

CArray<CPoint, CPoint> m_ptArray;

などとやっても全く同じエラーが出ます。ですが、同じマシンで「Collect」を
コンパイルすると通ります。何かincludeでも加えてやれば通るようになるのでしょうか?

ご存じの方がおられましたらご教授ください。
0021デフォルトの名無しさんNGNG
>>19
それは、毎回「別なAnsiStringの実体」が返されてるだけですが。
もちろん文字列の内容は同じですが。
0022デフォルトの名無しさんNGNG
>>20
最低限、どういうエラーが出たかも書かずに回答が帰ってくると思ってるのか?
002311NGNG
>>21
う〜ん、どういう事なのか理解できない・・・
修行が足りないようです(w
0024デフォルトの名無しさんNGNG
>>11 >>19
AnsiStringもstd::stringも、c_str()はその場限りの寿命なんだよ。
c_str()の返すポインタを他の変数に記録して後で使うってのは
どの入門書を見てもダメと書いてあるはずだ。
意味がわからなかったら cds.lpData の値とShowMessage後の
ParamStr(1).c_str()の値を比較してごらん。
0025デフォルトの名無しさんNGNG
>>23
そもそもポインタが分かってないみたいだな
億劫がらずに入門書をよく読み返してごらん
002611NGNG
>>24
了解です、ありがとう^^
0027デフォルトの名無しさんNGNG
>>20
afxtempl.h を include
stdafx.h の中でいい
0028デフォルトの名無しさんNGNG
>>20
ただの配列が使いたいなら、std::vectorを使って欲しい。
0029デフォルトの名無しさんNGNG
C言語をはじめました(windows2000)。ボーランドのフリーのコンパイラで実行すると、

C:\cprog>bcc32 hello.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
hello.c:
警告 W8070 hello.c 5: 関数は値を返すべき(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland となります。

プログラムは、
#include <stdio.h>
main()
{
printf("hello ,world\n");
}

警告 W8070 hello.c 5: 関数は値を返すべき(関数 main )はなにでしょうか。
一応実行はできました。
0030デフォルトの名無しさんNGNG
>>29
入門書よく読んでね
main関数は戻り値を省略するとint型になる
return 0;を追加しとき
0031デフォルトの名無しさんNGNG
>>30
main関数でなくてもだけどな。
0032デフォルトの名無しさんNGNG

大量のデータを処理するプログラムを作ったので、
少しでも処理を早くしようとベンチを取っています。

コードを見やすくするためにユーザー関数を使っていたのですが
それを使わないほうが早くなると思ったのですが、
ベンチを取るたびCPUの動き具合で数秒のズレがあり、
どちらが早いか分からないです。

ユーザー関数は呼び出さないほうが早いのでしょうか?
0033デフォルトの名無しさんNGNG
釣りだな
003432NGNG
釣りではないです。
ユーザー関数を呼び出さないほうが早いとは思うのですが一応教えていただけないでしょうか?
0035デフォルトの名無しさんNGNG
>32
ユーザー関数使うと速くなるらしいけど。
| 具体的には、普通に BASIC を起動した後、起動したいディスクを入れ
| defusr=&h180:u=usr(0):defusr=&h400:u=usr(0)
| と実行するだけです。
| ROM ソフトも後差しすればこの方法で高速モード起動可能らしいです。
0036デフォルトの名無しさんNGNG
dmrが泣いている。
0037デフォルトの名無しさんNGNG
DEF USR0=&HE000
00385NGNG

どなたかご教授お願いします、、
0039デフォルトの名無しさんNGNG
>>38
ほれ
ttp://ghanyan.monazilla.org/trip.html
0040デフォルトの名無しさんNGNG
>>39
意地の悪いやっちゃ(w
0041デフォルトの名無しさんNGNG
ユーザ関数っていうのが何を指したいのか不明だが、C/C++の関数呼び出しには
それなりにコストがかかる。
C++ならinline関数によってある程度カバーできるが。
template+functor+inline、これ最強。
0042デフォルトの名無しさんNGNG
>>39のでcrypt_r()があるでしょ。
一般的に、末尾に_rがつくのは、staticなバッファを返す標準的な関数を
リエントラントにするために、バッファを渡す形式に変更するもの。
0043デフォルトの名無しさんNGNG
まあ、はにゃーんの作者さんがそう思って名付けただろうと想像するだけで
俺は試してないけどね。
0044デフォルトの名無しさんNGNG
>>42
うーんとね、>>5氏は別のスレで同じ質問して>>39のソースについても
ちゃんとレスをもらってるのよ。
それを知ってて>>39のレスしたのかと思ったの
0045デフォルトの名無しさんNGNG
いや、それも知ってるし、C++相談室に書いてるのも知ってるし、
perlしか知らない初心者君が「tripが欲しいわけじゃない」とほざいてるのも知ってるし。

いい加減うざいからさ。
0046デフォルトの名無しさんNGNG
3次元配列として,全ての要素数を変数で定義する方法をご教授ください

int x[a][b][x];
a=10; b=4; c=5;

といった感じで,入力に応じて配列の要素数を変えたいと考えています。
処理の途中で変数を変える処理を行なうため,マクロは用いることができません。

コンパイラはボーランドの5.5です。
初心者丸出しの質問で申し訳ありませんが,ぜひともよろしくお願いします。
0047デフォルトの名無しさんNGNG
malloc(sizeof(int) * a * b *x)とか?
0048デフォルトの名無しさんNGNG
無理です。
2次元配列すら、実行時に変更することは出来ません。
もちろん、一次元配列でも要素数を変更することは出来ませんが。
0049デフォルトの名無しさんNGNG
素直に >>47 の方式で自分でかけ算するか、
ポインタのポインタの配列作ってがんがるか、しなさい
0050デフォルトの名無しさんNGNG
>>46,48

int (*x)[4][3];
int nx = 5;

x = calloc(nx * 4* 3, sizeof(int) );

で x[nx][4][3] のように最も高い次元は、要素数定義が可能(参考文献:望洋 実践編)

ほかは出来るのかもしれんがよく知らん
0051デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c6.html
C FAQに二次元の例があるんで参考にしてみれ
0052デフォルトの名無しさんNGNG
んーとね、それはね
malloc()で確保したメモリを、ポインタを介して
「あたかも配列のように」扱ってるだけなの。
単純な1次元のmalloc()でも同じ。

C99だと2次元以上でも変数が使えるのかな。
005346NGNG
皆さんどうもありがとうございます。

初心者の自分にはかなり難しい話になりそうですが,なんとかやってみます。
0054デフォルトの名無しさんNGNG
>>46
配列に見えるだけで良いのなら、こんな感じ

int ***x ;
int i, j, k, a = 10, b = 4, c = 5 ;
x = ( int *** ) calloc ( a, sizeof ( x[0] ) ) ;
for ( i = 0 ; i < a ; i++ )
{
  x[i] = ( int ** ) calloc ( b, sizeof ( x[0][0] ) ) ;
  for ( j = 0 ; j < b ; j++ )
  {
    x[i][j] = ( int * ) calloc ( c, sizeof ( x[0][0][0] ) ) ;
    for ( k = 0 ; k < c ; k++ )
    {
      x[i][j][k] = i * 100 + j * 10 + k ;
    }
  }
}
printf ( "%d\n", x[5][3][4] ) ;
0055デフォルトの名無しさんNGNG
>>45
答えられなくて逆ギレかよ。悲しいな。
0056デフォルトの名無しさんNGNG
お、来た来たヒステリー
0057デフォルトの名無しさんNGNG
晒しage
0058デフォルトの名無しさんNGNG
逆ギレというのは、質(ry
0059デフォルトの名無しさんNGNG
unistd.h のuniがunixのuniだということはわかってんのかね
0060デフォルトの名無しさんNGNG
いちおー書いとく。
>>5氏
元のスレで解決しているはずなのだが、君が勘違いしてて理解できなかっただけ。
その君の勘違いを>>42氏が正してくれている。

同じ言語のスレならアクティブな回答者はたいてい重複しているから、
中途半端にスレを移動するのは意味がないし、無用な混乱を起こしやすい。
気をつけてくれ。
006120NGNG
>27 >28殿
早速のお答えありがとうございます。解決できました。
0062デフォルトの名無しさんNGNG
また質問です。
複数のモードレスダイアログボックスにWM_PAINTなどのメッセージを送ろうと
考えています。今、親となるCWndにポインタ配列をメンバ関数として持たせ、
ここに登録したCDialogへのポインタに一つずつメッセージを送っていますが、
いまいち美しい方法とはいえないと思います。
SendMessageToDescendantsを使えばすべての子孫ウインドウに対してメッセージを
送ることができるようなことが書いてあったのでやってみましたが、いまいち
うまくいきません。何かよい方法はないでしょうか?
0063デフォルトの名無しさんNGNG
#include <stdio.h>

int main (void)
{

printf ("(′・ω・)<ショボーン\n");
return 0;
}
とやるとコマンドがナンタラカンタラといわれまつ(普通に表示はする)
コンパイラはbcpadとか言う奴でつ
0064デフォルトの名無しさんNGNG
>>62
さすがにそれは、
Win32API質問箱 Build16
http://pc2.2ch.net/test/read.cgi/tech/1073830065/l50

★初心者にVisual C++を教えるスレ★ Part10
http://pc2.2ch.net/test/read.cgi/tech/1074933908/l50

ここらへんで聞いたほうがいいんじゃねーの?
いくら環境依存OKでもさ。

>>63
なんたらかんたらを書けば、だれか答えてくれるぞ。
0065デフォルトの名無しさんNGNG
>64
申し訳ない。移動します。
0066デフォルトの名無しさんNGNG
linux 上で pthread を使ったプログラムをしてみたくて、
http://www-6.ibm.com/jp/developerworks/linux/001222/j_posix2-index.html
を見ながら試してたんだけど、その中の thread3.c が思った動作をしてくれません。

o..o..o.o..o..o.o.o.o.o..o..o..o.ooooooo のような結果のはずが、
....................oooooooooooooooooooo になってしまいスレッドの意味がなく
なってしまいます。

thread_function()中の sleep(1); を pthread_mutex_unlock(&mymutex); の下に
持って来ると期待した結果になりますが、記事を読んだかぎりは、sleep の位置に関係
なく並行して動作しそうなんです。

main()の方のスレッドは、thread_function()中の unlock を待ってて、unlock され
たら main()のスレッドが動くと思ってたんですが、どうして下のような結果になって
しまうんでしょう?
0067デフォルトの名無しさんNGNG
スケジューラの違いかね。
環境にもよるのかもしれない。
http://pc2.2ch.net/test/read.cgi/tech/1037636153/
や
http://pc.2ch.net/test/read.cgi/unix/1010933537/
なら詳しい人がいるかも。
0068デフォルトの名無しさんNGNG
引数に配列を使う場合とポインタを使う場合って何か違いはありますか?
また、引数が構造体の場合と構造体のポインタの場合との違いはありますか?
0069デフォルトの名無しさんNGNG
渡す側が配列を渡そうとポインタを渡そうと、
配列がポインタに格下げされるので同じ事になる。
受け取る側の仮引数の話なら
それこそ、記法の違い以外は全く同じ。

構造体の値渡しとアドレス渡しでは
実行時のオーバーヘッドと、受け取る側での変更を許可するかどうかの違いがある。

http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
0070デフォルトの名無しさんNGNG
linux g++ です。

% g++ -v
gcc バージョン 3.3.3 20040214 (prerelease) (Debian)

以下のソースですが、

#include <vector>
int main() {
std::vector< int > tbl1( 10 ) ;
return 0 ;
}

% g++ aa.cpp
% LeakCheck ./a.out
でコンパイルしてメモリリークチェック付きで実行すると、

# from new @ | size # Pointer Addr
L 0x400a90db 1600 # 0x8049f78
# total allocation requests: 1 ; max. mem used 1 kBytes
# leak 1600 Bytes :-(

のようにメモリリークが見付かります。
tbl1( 10 ) の 10 を 1024 に変えると、メモリリークが出ません。

そういうものなんでしょうか??
0071デフォルトの名無しさんNGNG
(【初心者歓迎】C/C++室 Ver.4【環境依存OK】)を見てもらえばわかりますが・・・)
その緑色の所に初期配置のコマを置いて、そのコマを緑色のマスにだけ1マスずつ
動かせるようにしたいのですが、どのようにしたらいいでしょうか。(チェッカー
というゲーム)コマを動かせるようにするには、WM_PAINTの中に書いたらマズい
ですか?コマの配置は次の通りです。

□●□●□●□●
●□●□●□●□
□●□●□●□●
■□■□■□■□
□■□■□■□■
●□●□●□●□
□●□●□●□●
●□●□●□●□

それと、対コンピュータにするのはどういう方法がありますか?(これについては
もう少しあとでもいいです。)
0072デフォルトの名無しさんNGNG
軽い処理ならコールバックに
書いてしまってもそれほど問題はないよ。
思考ルーチンはきちんと別のスレッドでやる。
0073デフォルトの名無しさんNGNG
>>71
人対人なら

1.WM_LBUTTONDOWN メッセージあたりを拾う
2.マウスの座標がプレイヤーのコマに含まれているか判定(移動元)
3.次のWM_LBUTTONDOWN メッセージを拾う
4.動かせる場所かどうか判定(移動先)
5.動かす(表示)
6.プレーヤーの交代
以下繰り返し

という感じか?
0074デフォルトの名無しさんNGNG
>>5 は先日、Perlスレでパスワードクラックの仕方を聞いてきた厨房かな?
http://pc2.2ch.net/test/read.cgi/php/1075545279/374-394
>パスワードクラックしたけりゃ、Cを使えよ。Cを。
>この種の処理なら、Perlよりも数倍速いぜ。
と言ったヤシがいたけど。おかげでこのスレの住人が迷惑を被ってるわけだ。
0075デフォルトの名無しさんNGNG
どなたか簡単な方法しってましたら教えて。

二本のラインの角度をー180〜180で表記したいのですが。。。
atan2(x,y)だと一本のラインですよね。
単純に引き算したら-180〜180になってくれないんですよね。
0076デフォルトの名無しさんNGNG
>>75
引いた後に -180〜180 に直せばいいじゃん。
0077デフォルトの名無しさんNGNG
struct a {
int i[4];
short s;
};
gccでこの構造体のサイズを18にする方法を教えて下さい。
0078デフォルトの名無しさんNGNG
#pragma pack(1)
__attribute__ ((packed))
すぐ見つかりました。これでできるみたいでした。
0079デフォルトの名無しさんNGNG
ラジアンと角度という落とし穴もあるな
0080デフォルトの名無しさんNGNG
常識かもしれないが、C++のBoostって何?
0081デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=boost&ie=UTF-8&oe=UTF-8&hl=ja&lr=lang_ja
0082デフォルトの名無しさんNGNG
>>81
ようするに色々便利なプログラムがごちゃまぜになったライブラリって事?
その中のどれかが便利だと感じたら導入するって事で良いのかな?
0083デフォルトの名無しさんNGNG
>>75
2本の直線の方向ベクトルをそれぞれ(x1, y1), (x2, y2)として
2本の直線のなす角度は
atan2(x1 * y2 - x2 * y1, x1 * x2 + y1 * y2);
008475NGNG
けっ、マルチかよ。
0085デフォルトの名無しさんNGNG
(x1, y1, 0) × (x2, y2, 0) = (0, 0, x1 y2 - x2 y1) = (0, 0, 1) r1 r2 sin theta
(x1, y1, 0) ・ (x2, y2, 0) = x1 x2 + y1 y2 = r1 r2 cos theta
∴ theta = Tan^-1 [(x1 y2 - x2 y1) / (x1 x2 + y1 y2)]
008611NGNG
>>11
 cds.lpData = (LPVOID)(ParamStr(1).c_str());
問題はParamStr関数が引数をワーク領域にコピーして
そのアドレスを返すようで、そのため壊れてしまうようです。

 AnsiString as = ParamStr(1);
 cds.lpData = (LPVOID)(as.c_str());
 AnsiString FilePath = ExtractFilePath(Application->ExeName) + "Sample.ini";
 TMemIniFile *Ini = new TMemIniFile( FilePath );
 int i = Ini->ReadInteger( "SECTION1" , "WindHand", 0 );
 delete Ini;
 SendMessage((HWND)i,WM_COPYDATA,(WPARAM)Application->Handle,(LPARAM)&cds);
とすると問題ありません。
>>24 氏の言っている「c_str()はその場限りの寿命」というのは
c_str()の認識が間違っているようです。

------------以下 Borland Tipsサイトからのコピペ------------
c_str関数は、AnsiStringクラスの文字列領域へのポインタを返す関数です。

0087デフォルトの名無しさんNGNG
>>86
>c_str()の認識云々
アフォ顔洗って出直せ
AnsiStringクラスの文字列領域が常に不変だと思っているのか?
0088デフォルトの名無しさんNGNG
>>86
>問題はParamStr関数が引数をワーク領域にコピーして
>そのアドレスを返すようで、そのため壊れてしまうようです
意味不明なんだが?
入門書もう一辺読み直したほうがいいよ。
念のため言うておくとParamStrが返すのはAnsiString型のインスタンス
0089デフォルトの名無しさんNGNG
だからぁ
しったかぶりしたがるバカ初心者は無視しろって。
0090デフォルトの名無しさんNGNG
「もしかして釣り?」と思ってしまった。
っつーか

  確 実 に 釣 り だ ろ
0091デフォルトの名無しさんNGNG
ここにいるのは役に立たないクズばかりですね。
もういいです。
009211NGNG
>>87
明示的にdeleteしなかれば、不変だろ
じゃなっから、何時変わるって言うんだ?
>>91
二度と来るなクソ
0093デフォルトの名無しさんNGNG
ParamStr が返すのが AnsiString なら
ParamStr(1) の返すオブジェクトの寿命は
それの含まれてる文の終わりまでだな。
009411NGNG
>>88
訂正
問題はParamStr(1).c_str()が引数をワーク領域にコピーして
0095デフォルトの名無しさんNGNG
結局わけわかめ
0096デフォルトの名無しさんNGNG
>>92
2重に間違い
1:クラスインスタンスに対しdeleteは無用、つか、したらいかん。
2:C++の文字列クラスは領域を自分で再確保する可能性がある。

>>94
だから、引数って、意味しってる?
c_str()は引数取らないよ?

悪いことは言わんから冷静になりや。
んで、C++の入門書きっちり読み。
0097デフォルトの名無しさんNGNG
やっちゃいけないプログラムの例。

#include <iostream>
#include <string>

int main() {
const char* p = std::string("aaa").c_str();
const char* q = std::string("bbb").c_str();
std::cout << p << std::endl;
std::cout << q << std::endl;
}
009811NGNG
>>96
コマンドライン引数な
たしかに冷静になる必要がある
あーむかつく
009993NGNG
俺は無視かよ。
0100デフォルトの名無しさんNGNG
お前らいい加減にシル!

こっちは、紅茶吹いて、キーボード1枚の損害なんだぞ!
0101デフォルトの名無しさんNGNG
>>98
うーん、"引数"を"コマンドライン引数"に置換してもやっぱり変だぞ。>86
このスレの住民は口は悪いが、おかしなところを「おかしい」と指摘してくれているんで
それはすなおに聞く耳もたな。
「C++の基礎をきちんと勉強したほうがいい」というアドバイスに対してもね。
0102デフォルトの名無しさんNGNG
>>100
そんなに紅茶が気に入らなかったんなら
次は十六茶を吹け。
0103デフォルトの名無しさんNGNG
まぁ、「冷静になる必要がある」なんて書きながら
「あーむかつく」なんて書いているようじゃ聞く耳なんて持ってないだろ。
0104デフォルトの名無しさんNGNG
>>102
いや寧ろ、問題は>100の使っているキーボードが紅茶に弱いってことだろ。
と言うわけで、>100は紅茶耐性の高いキーボードを使うようにシル。
0105デフォルトの名無しさんNGNG
>>101
もしかして、テンポラリオブジェクトを作るから
壊れるという主張なのかな。
それなら正しいことを言ってるな。

ワーク領域って言葉は普通こういう風には使わないと思うけど。
0106デフォルトの名無しさんNGNG
>>105
それは>>11に対して散々指摘されていたことなんだが・・・

どうも ParamStr(1).c_str() が、AnsiString型テンポラリオブジェクトのメンバ関数を
呼び出しているという点が飲み込めてないように見えるのだが? はて?
010766NGNG
>>67
スケジューラが・・、ってことで linux のカーネルを 2.6 から 2.4 にしてみたら
期待どおりの動きになった・・。

違和感が残るので誘導先に行ってみます。
0108デフォルトの名無しさんNGNG
質問です
メモリの動的確保、newを多用するのはよくないんですか?
教えてください
0109デフォルトの名無しさんNGNG
よくないって、どういう意味で?
0110デフォルトの名無しさんNGNG
>>109
できたEXEが遅くなるとか?
0111デフォルトの名無しさんNGNG
>>108

だめも何も、使わなきゃいけないときは使わないといけない。
それとな、初心者スレだからこんなコトいうのもなんだけど、

「多用しすぎる」ってなにさ?

プログラムって日本語とかの自然言語と違って、
ちゃんとしたルールの下に構築されてるんだから、
「最大xxまで」「最低xxは許される」というのが決められている。

まずそういうあやふやなことに惑わされる姿勢を何とかした方がいいよ。
0112デフォルトの名無しさんNGNG
.net C++で簡単にマネージ型からアンマネージ型
マネージ型からアンマネージ型の変換を楽にする方法を教えてください
BYTE[]からbyte[]へのコピーとか
0113デフォルトの名無しさんNGNG
C言語の超基礎を終了します(本で言えば入門編)。
次にどこに向かえばよいでしょうか。
最終的には簡単なフリーソフト(windows)を動かしたいです。
0114デフォルトの名無しさんNGNG
簡単なの作ってみると、どこに向かえばいいかもわかる。
0115デフォルトの名無しさんNGNG
>>82
遅レスだが
boostは、標準から漏れた内容を次期標準とすることを
目標としたものだったと思う。
0116デフォルトの名無しさんNGNG
Cで入力を促すメッセイジを表示させたあとにscanfを使用しているのですが、
キーボードで入力する前に値が入力された扱いになってしまうのですが
どうしてなのでしょうか。
0117デフォルトの名無しさんNGNG
>>113
C++入門編とC応用編
011870NGNG
へるぷ…
0119fNGNG
ノ~~~ヽ
( ´ {}`)のいぽー
l|l|l|l|l|l|
(   )
||| 
(__)_)
0120デフォルトの名無しさんNGNG
>>118
vector<int> v;
v.reserve(10);

でもだめ?
0121デフォルトの名無しさんNGNG
>>116
直前に入力された文字列をscanfが読み残しているから。
fgetsを使って1行づつ読んで、数値への変換はsscanfを使えばいい。
012211NGNG
>>103
むかついているから冷静になる必要があるんだよ
わかんねーのかよバ〜カ
0123デフォルトの名無しさんNGNG
で、全然(冷静になることに)成功してないと。
012411NGNG
>>123
うんそう、むかつきが収まらないからな

>>89
>>103
単に煽ってるだけの、こいつらをぶっとす事ができれば収まるんだが
0125デフォルトの名無しさんNGNG
んな事に神経使うより勉強しろ。
最低限の基礎さえ身につけた上で書き込んでいれば
ああまで煽られたりはしない。
0126デフォルトの名無しさんNGNG
ま、こいつには無理だろう。
知能も精神も小学生レベルだからな、どう見ても。
0127デフォルトの名無しさんNGNG
だからぁ、こんなところでむかつくのを表明して悦に入っている辺りが餓鬼だっての。
そもそもこの程度でむかつくくらいなら2chなんかに来なきゃいいだろ。

で、ちっとはAnsiStringについて理解できたのかね。
まぁ、むかつく暇はあってもまともに理解しようと勤める暇はないんだろうがな。
なーに、態度さえ変えればここの連中はちゃんと教えてくれるよ。
0128デフォルトの名無しさんNGNG
Cマガジンありますよね。
あの雑誌はどのくらいのスキルがつけば読み始めたらいいのでしょうか。
0129デフォルトの名無しさんNGNG
>>128
あれってJavaの本じゃなかったっけ?
0130デフォルトの名無しさんNGNG
CもJAVAも載っていますね。読んでも良くわからないです。
Cがメインみたいですけど。
0131デフォルトの名無しさんNGNG
>>128
別にどんなスキルでも。
読んでみて読む価値があると思ったら読めばいい。
全ての記事を読む必要もないし、全ての記事を理解する必要もない。
入門系連載記事に価値を求めるやつもいるかもしれないし、特集記事で
色々なトピックを知りたいだけのやつもいるかもしれない。
後は、それが価格に見合うかどうかだけじゃないかと。
特集記事については今は興味なかったり分からなかったりしても後から
役に立つことはあるかもしれない。

つまり俺が言いたいのは、そんなこと人に聞いてどうするつもりだ?ってこった。
0132デフォルトの名無しさんNGNG
>>129
今は C マガの C は Computer の C らしい。
0133デフォルトの名無しさんNGNG
ヘェ〜
0134デフォルトの名無しさんNGNG
class CParent {
public:
virtual void vTextOut() { cout << "CParent vTextOut()" << endl; }
};

class CExtend : public CParent {
public:
virtual void vTextOut() { cout << "CExtend vTextOut()" << endl; }
};

void main()
{
CExtend Obj;
CParent *pObj = &Obj;
}

こういうソースがあったときに、pObjを使って、
CParent::vTextOut() をコールすることはできますか?
0135デフォルトの名無しさんNGNG
>>134
pObj->CParent::vTextOut();
0136デフォルトの名無しさんNGNG
Windowsの業務アプリをMS, Borland, Metrowerks以外の
コンパイラで開発する事ってありますか?
0137デフォルトの名無しさんNGNG
>>135
ドモドモ。できますた!
013871NGNG
黒色の所に初期配置のコマを置いて、そのコマを黒色のマスにだけ1マスずつ
動かせるようにしたいのですが、どのようにしたらいいでしょうか。(チェッカー
というゲーム)動かせるコマを初期のコマに設定ようにするには、WM_PAINTの中に
描いたらいいですか?コマの配置は次の通りです。(●の所も盤の色は■です)

 □●□●□●□●
 ●□●□●□●□
 □●□●□●□●
 ■□■□■□■□
 □■□■□■□■
 ●□●□●□●□
 □●□●□●□●
 ●□●□●□●□


>>73 WM_LBUTTONDOWN の中に初期のコマを描くように設定するのですか?
   だとするとどんな風に書くのですか?

とりあえず、実行した時に初期のコマを設定する(オセロだったら真ん中に4つ
のコマを描く)にはどうしたらいいか、お分かりになる方はよろしかったら教え
ていただきたいのですが。


0139デフォルトの名無しさんNGNG
>>138
2次元の配列を2つか、3次元の配列を使う。
盤の配置パターンと駒の現在位置
0140デフォルトの名無しさんNGNG
>>138
まず、2次元の配列、 a[8][8] を用意して
0141デフォルトの名無しさんNGNG
その内容が0ならマスだけ、1なら白い駒を2なら黒い駒を
0142デフォルトの名無しさんNGNG
_PAINTのハンドラ内で描く、というのをとりあえずやってみな
0143デフォルトの名無しさんNGNG
あら、Enterで書き込みチェックがいつの間にか入ってた、スマソ
0144デフォルトの名無しさんNGNG
>>141
それだと盤の配色が無い。

0x100 だと黒いマスに駒なし。
0x101 だと黒いマスに白い駒。
0x110 だと黒いマスに黒い駒。
0x000 だと白いマスに駒なし。
0x001 だと白いマスに白い駒。
0x010 だと白いマスに黒い駒。
0145デフォルトの名無しさんNGNG
>>144
いやあまり複雑にするとついてこれないかと思ってさ
0146デフォルトの名無しさんNGNG
>>145
いやあbitで処理しようとしてる時点でネタなんだけどね。
0147デフォルトの名無しさんNGNG
質問者に理解できないネタは空振りになると思うが。
0148デフォルトの名無しさんNGNG
それを言うと配列を理解できてるかどうかも怪しい。

ビットマップの座標範囲と条件文だけで実装したら
ある意味凄いかも?
014971NGNG
なんか難しそうですね。
0150デフォルトの名無しさんNGNG
>>149
大漁だよなー。
015171NGNG
盤のソースは前のスレで教えてもらいましたが、それに上記のようにコマ(動か
せるコマ)を設定したいのです。どんなソースを加えればいいでしょうか。
まだ大漁ではありません。
0152デフォルトの名無しさんNGNG
>>151
オレに20万円で発注しないか? 格安だぞ。
015371NGNG
金の話は一切しておりません。
0154デフォルトの名無しさんNGNG
>>151
じゃ、漏れ様が10万円で個人教師をしてやろうじゃないか。
0155デフォルトの名無しさんNGNG
何がわからないんだかわからん
Cやアルゴリズムの本で勉強くらいはしてるのか?
0156デフォルトの名無しさんNGNG
>>151
まえスレの何番かな?
0157デフォルトの名無しさんNGNG
宿題スレ20に書き込んでる。
っていうか、そのうち「デバイスコンテキストって何ですか」とでも
聞きそうな感じだな。
0158デフォルトの名無しさんNGNG
キングにするには? とか、
連続飛びをするには? という質問も来そう

さっきチェッカーのルールをぐぐったw
0159デフォルトの名無しさんNGNG
チェッカーのソースなんてその辺に落ちてるだろ。
0160デフォルトの名無しさんNGNG
見つけてやったぞ。漏れってムッ茶親切。
http://users.pandora.be/ai/chess/download.html#StrategicGames
0161デフォルトの名無しさんNGNG
>>156
【初心者歓迎】C/C++室 Ver.4【環境依存OK】のかなり下の方にある。
0162デフォルトの名無しさんNGNG
>>157
宿題スレ20ってどこ?
0163デフォルトの名無しさんNGNG
>>162
ぼるじょあがC/C++の宿題を片づけますYO! 20代目
http://pc2.2ch.net/test/read.cgi/tech/1075217631/l50
0164デフォルトの名無しさんNGNG
>>160
これ以外に、Win32APIのソースがおちている所は無い?
0165デフォルトの名無しさんNGNG
>>164
こんなので良いのか? 有名どころだが。。
http://www.codeguru.com/
0166デフォルトの名無しさんNGNG
>>164
日本語のサイトはあまりいいのは無いけど、英語は英語で難しい。
しかも、VC++じゃなかったり。MFCだったり。
0167デフォルトの名無しさんNGNG
すいません。c++のfopenでファイルを追加上書きするのに、
ファイルの末尾に行を足すモードはありますが、
ファイルの先頭に行を足すにはどうしたらいいんでしょうか?
よろしくお願いします。
0168デフォルトの名無しさんNGNG
ファイルシステムの実装上、無理です
0169デフォルトの名無しさんNGNG
>>167
ファイルAの先頭に行を足したい場合

ファイルBをwrite openしてAの先頭に入れたかった内容を書く
Aをread openしてファイルBの末尾に(Aの)内容を追加する

(closeなどの後始末して)最後にファイル名を交換する
0170デフォルトの名無しさんNGNG
>>169
ありがとうございます。
それでいけそうです。
0171デフォルトの名無しさんNGNG
基本的なことかもしれないのですが、
typedefの有効範囲ってどこになるのでしょうか?
グローバル?モジュール内(ファイル内)?
各場所によってはclassのアクセス範囲(privateやpublic)にも
影響を受ける??
0172デフォルトの名無しさんNGNG
別に変数と変わらんが。
0173デフォルトの名無しさんNGNG
>>171
関数や変数の宣言と同様。
当然、「書く場所によってはclassのアクセス範囲(privateやpublic)にも影響を受ける」。
0174デフォルトの名無しさんNGNG
↑かぶりやした
0175171NGNG
>>172-173
回答ありがとうございます。
0176デフォルトの名無しさんNGNG
Aというクラスの中でAというクラスを宣言して使うことはできますか?
クラスないで自クラスを使いたいのですが…
こんな設計は無茶ですか?
0177デフォルトの名無しさんNGNG
>>176

メンバ変数として使いたいなら、ポインタにして実行時に動的に確保するようにすればいいんでない?
0178デフォルトの名無しさんNGNG
>>177
コンストラクタでnew A;して、newされたインスタンスが
コンストラクタでnew A;して、またnewされたインスタンスが
コンストラクタでnew A;して、そのnewされたインスタンスが
コンストラクタでnew A;して…
0179デフォルトの名無しさんNGNG
>>178
コンストラクタでやるなと
0180デフォルトの名無しさんNGNG
vc++6.0でダイアログのコンストラクタに引数をつけたい時
CDialogXXX::CDialogXXX(int lintUser, CWnd* pParent /*=NULL*/) : CDialog(CDialogXXX::IDD, pParent)
と最後に「 : CDialog(CDialogXXX::IDD, pParent)」を書かなければ上手くいかなかったんですけど
「 : CDialog(CDialogXXX::IDD, pParent)」の部分は具体的に何をしてるんでしょう?
リソースIDと親ウィンドウのハンドルをどこかに渡してるのだろうと想像してるのですが
コンストラクタの中に「CDialog::CDialog(CDialogAll::IDD, pParent);」と書くのとはまた違うみたいですし・・・
よろしくお願いします
0181デフォルトの名無しさんNGNG
3桁の引数を 3つ値にわけて戻すにはどうしたらよいでしょうか。
例えば 123なら → 1,2,3

ただし、引数は1桁のときもあってそのときは、残りの2つは0とします。
例えば 1なら → 1,0,0

よろしくお願いします。
0182デフォルトの名無しさんNGNG
>>181
こんなのでいいなら

int src = 123;
int x1,x2,x3;

x3 = src / 100;
src %= 100;
x2 = src / 10;
x1 = src % 10;

printf("%d %d %d ",x3, x2, x1);
0183デフォルトの名無しさんNGNG
>>180
基本クラス(この場合CDialog)のコンストラクタを呼び出してる
0184デフォルトの名無しさんNGNG
>>181
>例えば 1なら → 1,0,0

100 → 1, 0, 0

とどう区別するの?
0185デフォルトの名無しさんNGNG
>>182,184
即レスありがとうございます。
大変申し訳ありませんが、いくつか複雑な条件が判明しました。

引数をNo,分解した3つの数値をFirst、Second、Third とします。

※ 引数は 1 〜 1110まで。
※ First、Second、Thirdは、0〜10の値。
※ 2桁以上では,First、Second は 0になってはいけない。
※ 2桁以下の数値では、 No = Third*100 + Second*10 + First
※ 3桁の数値のときは、 No = First*100 + Second*10 + Third


例)
00 , 0, 0
1〜101 ,0,0 〜 10,0,0
111 , 1, 0
201 ,10, 0
1231 , 2, 3
2001 , 9,10
3012 ,10, 1
111010,10,10

ちなみに、C++初心者本を2冊読見終えたところです。。。
これがわからないのはやはりまずいでしょうか。
耳から煙りが出そうです。
0186デフォルトの名無しさんNGNG
たびたび失礼します。
条件の追加と例の補正。

※ Secondが0でないときはFirstは0になってはいけない。
※ Thirdが0でないときはFirst、Secondは0になってはいけない。

0   →0 , 0, 0
1〜10→1 ,0,0 〜 10,0,0
11  →1 , 1, 0
20  →1 ,10, 0
123 →1 , 2, 3
200 →1 , 9,10
301 →2 ,10, 1
1110 →10,10,10
0187デフォルトの名無しさんNGNG
>>185
おそらく、この条件は間違っている
正しい条件をきちんと整理して書かないとどうにもならない
そもそも「桁」ってなにを指すの?


0188デフォルトの名無しさんNGNG
かぶったか。
>>186を追加してもおかしいようだ。全部整理しなおして改めて書き込むべし

なお、
「C++初心者本を2冊読見終えた」
入門書は載ってるサンプルコードを全て打ち込みで走らせてみな。
そんぐらいやらないと意味がない。
0189デフォルトの名無しさんNGNG
20 → 10, 1, 0
じゃないの?
0190デフォルトの名無しさんNGNG
わけわからんw
0191デフォルトの名無しさんNGNG
>>183
やっぱコンストラクタを呼び出してるのですか。
コンストラクタの中で呼び出さないのは、生成のタイミングとかなんですかね。
どうもありがとうございました
0192デフォルトの名無しさんNGNG
>>850
ああ、それには禿同(w
0193デフォルトの名無しさんNGNG
↑ごめんなさい、誤爆です
0194デフォルトの名無しさんNGNG
>>187-190
     。。  
   。     。 +   ヽヽ
゜ 。・ 。 +゜  。・゚ (;゚`Дフ。< また来ます、うわぁぁぁん
            ノ( /
              / >
0195デフォルトの名無しさんNGNG
>>191
おい、ちょっとまて。
>コンストラクタの中で呼び出さないのは、生成のタイミングとかなんですかね。
派生クラスのコンストラクタは基底クラスのコンストラクタをコンストラクタ初期化子
で呼び出すって、基本の基本だじょ。きちっと勉強せい。
0196デフォルトの名無しさんNGNG
>>181
bool cond(int n,int f,int s,int t){
    if(n/10 && (!f || !s)) return false;
    if(!(n/100) && n!=t*100+s*10+f) return false;
    if(n/100 && n!=f*100+s*10+t) return false;
    if(s && !f) return false;
    if(t && (!f || !s)) return false;
    return true;
}

void sep(int n){
    int f,s,t;
    for(f=0;f<=10;f++)for(s=0;s<=10;s++)for(t=0;t<=10;t++)
        if(cond(n,f,s,t))
            std::cout<<n<<":"<<f<<","<<s<<","<<t<<std::endl;
    return;
}
0197デフォルトの名無しさんNGNG
力技やね
0198デフォルトの名無しさんNGNG
>191
呼び出さないんじゃなくて、その書き方でしか呼び出せないの。
0199デフォルトの名無しさんNGNG
>>195>>198
レスどうもです。あれからちょっと調べてみて何となくわかりました
ありがとうございます
0200デフォルトの名無しさんNGNG
なんとなくかよ!!!!!!
0201rNGNG
class Base {
private:
void privateFunc() {}
protected:
void protectedFunc() {}
public:
static void foo() {
Base().privateFunc(); //この行でコンパイルエラーにならず
}
};
class Ext : public Base {
public:
static void var() {
Base().protectedFunc(); // この行でコンパイルエラーになっちゃう。
}
};
のはなんで?
0202デフォルトの名無しさんNGNG
すでにnewで確保されているものをさらにnewすることは
駄目なのですか?
0203デフォルトの名無しさんNGNG
fgetsで標準入力を得ようと思うのですが二回fgetsを使用すると一つめのfgets
のあまりが勝手に二つ目に入力されてしまうのはどうすれば良いのでしょうか?
0204デフォルトの名無しさんNGNG
>>202
意味わかんない。
普通複数回newされればそれは別物だが・・・

A* a = new A();
new(a) A();

こういうことか?
0205デフォルトの名無しさんNGNG
>>203
fflush( stdin );
をfgets()の直前に。
0206デフォルトの名無しさんNGNG
>>203
>fgetsで標準入力を得ようと思うのですが

fgets() では標準入力そのものは得られない訳だが
0207デフォルトの名無しさんNGNG
>>205
無理だたよ。
>>206
ここは初心者に厳しいインターネッツですね
0208デフォルトの名無しさんNGNG
>>201
×Base().protectedFunc();
○Ext().protectedFunc();
protectedのメンバにアクセスできるのは自分自身と同じ型のオブジェクトを参照しているときのみ。
0209デフォルトの名無しさんNGNG
>>204

char *test = new char[14];

クラスのコンストラクタ等でこうなっている部分ですが
char[14]をchar[20]にしなければならなくなった場合は
いったん

delete[] test;

としてから

char *test = new char[20]
としなければならないのですか?
それとも

Delete[] testは抜きで、いきなりchar *test = new char[20]をやっても
問題ないのですか?
0210デフォルトの名無しさんNGNG
>>209
newは新しい領域を作ってそのアドレスを返すから、古い領域が大きくなるわけじゃない。
というわけで一度deleteしないとリークする。
0211デフォルトの名無しさんNGNG
>>210
thx!
0212デフォルトの名無しさんNGNG
そのうち、いちいちdeleteするのが面倒になってスマートポインタやSTLコンテナを
覚えて堕落するわけだが。
0213デフォルトの名無しさんNGNG
>>205
未定義。鼻から悪魔が出てきても知らないぞ。
0214デフォルトの名無しさんNGNG
で、>>203 はどういう結果が得られれば嬉しいの?
0215デフォルトの名無しさんNGNG
こんなのでどう?
/* nを超えた分は読み捨てるfgets
char *fgets_skip(char *dest, int n, FILE *stream)
{
    int c;
    while(--n)
    {
        c = getc(stream);
        if(c == EOF) return NULL;
        if(c == '\n') break;
        *dest++ = c;
    }
    *dest = '\0';
    for(; c != '\n'; c = getc(stream))
        if(c == EOF)
            return NULL;
    return dest;
}
0216デフォルトの名無しさんNGNG
>>212
なぜそれを進歩でなく堕落と呼ぶ?
0217デフォルトの名無しさんNGNG
>>216
文明の進歩とは即ち堕落が目的だ。楽をするために努力してるんだから。
0218うみがめNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=30&fi=no
RPGのソースなのですが、直したらよい所があるなら教えてください。
コメントのつけ方、関数分割、ファイル分割、構造体の使い方などを
意識し、見易さ重視で作ったのですが、そこらの部分か、
また、他にあるならお願いします。
0219デフォルトの名無しさんNGNG
>>218
> for(;friendCount<FRIEND_PARTY&&enemyCount<ENEMY_PARTY;)

whileを使え
0220デフォルトの名無しさんNGNG
>>218
HandleChangeParty関数に関して、friendCountとenemyCountは本当にポインタで受ける必要があるのか?
0221うみがめNGNG
ありがとうございます。

>>219
あっそうですね。癖で使っていました。
単純に永久ループさせたいときはそちらの方がよいですね。

>>220
必要ないです。
たしか前はそこで++を行っていてそれが残っていたようです。
今はHandleZenmetu関数で行っていますので。
0222デフォルトの名無しさんNGNG
>>218
突っ込みどころ満載だが面倒なので省略。
強いてあげれば、indentかcbなどのツールを一度使ってみるといい。
あー、ついでに言えば、英語の勉強もかな。
0223デフォルトの名無しさんNGNG
↑このまったく役に立たない文章はやっぱオナニー目的で書かれたのだろうか? :)
0224デフォルトの名無しさんNGNG
>>217
STLは表面を触って遊んでいるうちなら楽をしていると言えるんだがなぁ・・・
スマートポインタも内部の実装詳細をある程度把握してないとたまにひどい事に・・・
0225デフォルトの名無しさんNGNG
環境依存とは何のことですか?OSのことですか?
0226デフォルトの名無しさんNGNG
全部
0227デフォルトの名無しさんNGNG
>>223
あんたみたいな読解力のない香具師を釣るためだろ。
0228デフォルトの名無しさんNGNG
>>227
なるほど、やはり無内容なオナニーでしたか :)
0229デフォルトの名無しさんNGNG
>>223=228
>>218必死だな。
0230うみがめNGNG
>>222
ありがとうございます。
インデントと英語(関数名のつけ方など)ですね。
今回は意識しませんでしたが、勉強せねばとずっと思っていました。
後できれば、面倒だった部分もお願いします。
0231デフォルトの名無しさんNGNG
>>214
二回目の変数に勝手に代入されなきゃ嬉しいの。
しょうがないから他の方法で済ませました。
0232デフォルトの名無しさんNGNG
>>218
ホレ
http://dennou-k.gaia.h.kyoto-u.ac.jp/arch/comptech/cstyle/cstyle-ja.htm
0233デフォルトの名無しさんNGNG
おぃ、うみがめ!
釣りの餌としか思えないようなコーディングだぞ。
ネタなのか?
0234デフォルトの名無しさんNGNG
>>232
void InitChara(Chara*chara)
{
  int i;

  chara->enum_=0;
  strcpy(chara->name,"");
  chara->mhp=0;
  chara->mmp=0;
  chara->pow=0;
  chara->def=0;
  chara->smt=0;
  chara->spd=0;
  chara->luc=0;
  for(i=0;i<CHARA_ITEM;i++)chara->itemEnum[i]=0;
}

 ↓

void InitChara(Chara *chara)
{
  ZeroMemory(chara, sizeof(chara));
}

0235234NGNG
× >>232
○ >>218
0236うみがめNGNG
ありがとうございます。

>>232
参考にさせていただきます。

>>233
そんなにダメですか?自分では精一杯なのですが。

>>234
わざわざ1個1個入れなくても構造体も一括でできたんですね。
配列とかでは確かmemsetとか使った事があったのですが。
0237デフォルトの名無しさんNGNG
絵が動くようにしてくれ
0238うみがめNGNG
>>237
私に対してですよね?
できるだけ簡単に作るという方向で作ったので、その機能は無いです。
今作っているのができたら作りましょうか?
でも相変わらず醜いコードになると思いますが。
0239デフォルトの名無しさんNGNG
>>236
>そんなにダメですか?自分では精一杯なのですが。

そ、そうなのか・・・
漏れの会社の新人プログラマーとしてどうか入社しませんように。ナムナム (AA略
0240デフォルトの名無しさんNGNG
>>238
>でも相変わらず醜いコードになると思いますが。

なんだ、自覚症状があるのか?
やっぱ釣りだなー。
0241うみがめNGNG
>>239
ひそかにまだプログラマーになりたいと思っていましたがダメですか。
なれなくても将棋ソフトで大会に出るという夢もあるのですが。

>>240
いいえ、皆さんがそう仰っていたからです。
もし作るなら完成までに少しでもLVUPしようと思いますが。
0242222NGNG
>>230
スタイルはまぁいいとして、気になるのは複文({})の使い方。
関数の名前の付け方もまぁいいとして、スペリングミスはいただけない。
で、個別の指摘は(相変わらず)面倒だから省略するが、
breakに頼りすぎているような気がする。
それと、関数の切り分けの仕方辺りかな。
0243デフォルトの名無しさんNGNG
>うみがめ氏
まず数をこなしなさい。ゲームならゲームできちんと動作するものを沢山作りなさい。

それから洗練されたコードを沢山読みなさい。
定評のある書籍に載ったサンプルとかライブラリのソースとか参考になるものはいくらでもある。

それらを十分にこなしてから他人に自分のソースの評価を求めなさい。
今の段階じゃ「経験不足」という答え以外ない。
0244デフォルトの名無しさんNGNG
>>243
>それから洗練されたコードを沢山読みなさい。

そう言えば、バレンタインの頃に洗練されたコードが
大量に流出したよなぁ。。。
0245デフォルトの名無しさんNGNG
とりあえずスペルミスを直して、変な日本語の変数名を英語に直すだけでだいぶ見栄えは良くなる。
0246うみがめNGNG
>>242
ありがとうございます。

>複合括弧
if()
{oo;oo;}
とか
if() {oo;oo;}
とかですかね。気をつけます。

>スペルミス
和英辞典で調べながらやっているんですがね。気をつけます。

>breakに頼りすぎ 関数の切り分けの仕方
どこら辺か分からないのでもう一度見てみます。
0247デフォルトの名無しさんNGNG
>>スペルミス
>和英辞典で調べながらやっているんですがね。気をつけます。
リア厨?
0248うみがめNGNG
ありがとうございます。

>>243
暦は5年以上になるんですがね(^^;)。精進します。

>>245
分かりました。
0249デフォルトの名無しさんNGNG
int StrWoComnd(int*item,int*spot)

こういうポインタ引数の定義のスタイルは何処にのってた?
こうだろ?

int StrWoComnd(int *item, int *spot)
{
  *item = hoge;

C++ なら参照渡しで

int StrWoComnd(int &item, int &spot)
{
  item = hoge;
0250デフォルトの名無しさんNGNG
>>244
一瞬何のことかと思ったけどw
メモ帳如きでかなり複雑なコードだったらしいがどんなんなのか
気になるな
0251デフォルトの名無しさんNGNG
>>246
242では無いが。
for でループさせてるのに break で抜けている。
つまりループの出口が2つある。
0252デフォルトの名無しさんNGNG
>>249
本によっては
int* item、int *itemの2通りがある。
俺は後者だけど。
おそらくSPがはっきりしてなかったんじゃないか?
そういうのもあるし
0253デフォルトの名無しさんNGNG
>>250
メモ帳如きはうみがめレベルの雑魚が作っているから仕方が無い。
カーネルに近づくほど洗練されたコードになる。
デ○ク軍団のはカナーリ洗練されたコードだと思う。
0254デフォルトの名無しさんNGNG
>>252
int* item, item2; とした場合、

int* item;
int* item2;

と見まちがえる恐れがあるので

int *item, item2; とする方が良いらしい。
0255うみがめNGNG
>>249
スペースのことですよね?スペースを空けないスタイルにしてから、
そこもコンパイルで通るからとスペースを空けなくなりました。
0256うみがめNGNG
ありがとうございます。

>>251
見てみます。

>>252>>254
分かりました。
0257デフォルトの名無しさんNGNG
>>255
それを見づらいと思わない感性がダメダメ。
それから、2項演算子の前後、"," の後はスペースくらい空けないと。
for の初期化部分に沢山文を詰め込まないこと。
0258うみがめNGNG
>>247
20代前半です(^^;。英語(国語)はまったくダメだったんで。

>>251
結構ありますね。それは例えば10ある要素からひとつでも○○であるか
調べるとき、ひとつあった地点でbreakで抜けています。
この場合はどうすればよいでしょうか。
0259うみがめNGNG
>>257
スペースを空けないのは、VCで色が付く機能で見やすくなるからかもしれません。
メモ帳で見たときかなり見難いですが。
forで初期値を与えるのは、forで使うんだよという意味で詰め込みました。
0260デフォルトの名無しさんNGNG
"Oll" って "All" の事なのか?
0261デフォルトの名無しさんNGNG
悪いことは言わないから、プログラミングなんて無駄なことはやめて
国語の勉強と英語の勉強をしなさい。 きっと役に立つから。
0262うみがめNGNG
>>260
そうです・・。今までずっと気づきませんでした。
ここ数年ずっとOllでやっていそう。はずかしすぎ・・。
これではネタと思われてもしょうがないです。
つづりの分からない英語をめんどくさがって調べないでローマ字で書いていたので、
混じることによっていつのまにか間違った使い方をしていたようです。
0263デフォルトの名無しさんNGNG
「はずかしい」というレベルじゃないような
リア厨ならともかく二十歳過ぎの大人がこれじゃ
>>261だな
0264うみがめNGNG
>>261
古典は得意なんですが・・。
0265デフォルトの名無しさんNGNG
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんな餌で俺様がクマ――!
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
                               (´⌒; (´⌒;;
0266rNGNG
>>264
シェークスピアはOllって書いてたの?
0267うみがめNGNG
>>263
基本的に体育会系なんでと言い訳してみる・・。
バイトも肉体労働系だから、苦労することは無かったのですが。
プログラマーとなるとコーディングはもちろん、
企画とかもありますし、あきらめた方がいいのかな。
0268デフォルトの名無しさんNGNG
電子メール   ⇒ E-meile
インターネット ⇒ Intanet
ホームページ ⇒ Homu Pege
2ch        ⇒ 2 chunnele
0269デフォルトの名無しさんNGNG
プログラマーに企画なんてねーよ。
0270デフォルトの名無しさんNGNG
>>267
>企画とかもありますし、あきらめた方がいいのかな。

Yes, I don't.
0271r/201NGNG
>>208
>protectedのメンバにアクセスできるのは自分自身と同じ型のオブジェクトを参照しているときのみ。

ってのが、具体的にどういう事なんだかよくわからんが、
とにかくありがとう。
0272rNGNG
>>268
英語以外のヨーロッパ語で、そんな感じで綴る言語がありそう
0273デフォルトの名無しさんNGNG
>>271
継承するってことは、全ての基底クラスのメンバは派生クラスに入るだろ。

継承した時点でそれはもう派生クラスのメンバであって、基底クラスとは別物だ、ということかと。
0274デフォルトの名無しさんNGNG
>>272
上の2つは本当にこう書いたヤシが居る。w
0275うみがめNGNG
>>269
知ったかでした。すいません。
0276うみがめNGNG
>>270
これは中2ででてきましたっけ。確か否定文の疑問文のときの答え方。
0277デフォルトの名無しさんNGNG
>>272
ぐぐって見た。あるもんだな。

E-meile 534件
Intanet 3590件
Homu Pege 103件
2 chunnele 2件
0278デフォルトの名無しさんNGNG
>>271
>>201 >>208を続けて読んでも分からん?
君が質問した部分にのみ答えているのだが。
0279デフォルトの名無しさんNGNG
>>277
> 2 chunnele 2件
ほんと?
0280デフォルトの名無しさんNGNG
アンテンドゥー
0281デフォルトの名無しさんNGNG
インストロール
0282rNGNG
>>278
ほんっとうにわかんないです。
> protectedのメンバにアクセスできるのは自分自身と同じ型のオブジェクトを参照しているときのみ。

「自分自身」って言うのが何かわからない
「自分自身と同じ型のオブジェクトを参照している時」
って言うのが、どういうときなのかわからない。

>>201の例だと、
Base().protectedFunc()と書いたとき
--- 自分自身と同じ型のオブジェクトを参照していない

Ext().protectedFunc()と書いたとき
--- 自分自身と同じ型のオブジェクトを参照している

ってことなんだろうけど....全く飲み込めないです。

>>273
protectedメンバってのは、「それが宣言されたクラスと、その派生クラス」
からアクセスできるってのが特徴でしょ。
0283デフォルトの名無しさんNGNG
>>282 11.5
0284デフォルトの名無しさんNGNG
>>282
Ext::var()において、
>Base().protectedFunc()と書いたとき
>--- 自分自身と同じ型のオブジェクトを参照していない
>Ext().protectedFunc()と書いたとき
>--- 自分自身と同じ型のオブジェクトを参照している
以上はまったく明らかなことと思っていたのだが、分からないといわれて正直呆然(w

>protectedメンバってのは、「それが宣言されたクラスと、その派生クラス」
>からアクセスできるってのが特徴でしょ
ちゃんとアクセスしてるじゃん(w
ちなみに、
class Ext : public Base {
public:
 void no_static_var() {
  protectedFunc();
 }
};
これは、this->protectedFunc()を呼び出しているのと同じなので、
結局「自分自身と同じ型のオブジェクトを参照している」ことになる。
0285デフォルトの名無しさんNGNG
↑アップした後で思いついたんだが、ひょっとして
 Ext().protectedFunc()
これがExt型のテンポラリオブジェクトのメンバ関数を呼び出しているということが
分かってないのだろうか?


これが分からなくて散々暴れたやつがいたな(w
0286rNGNG
>>285
Ext().protectedFunc()が、Ext()の一時オブジェクトのメンバ呼び出しだってのは、わかる。

えっと、わかんないのは
「Base().protectedFunc()が、Baseのサブクラスからなぜ呼び出せないのか」
ってことです。

>>284で
> >protectedメンバってのは、「それが宣言されたクラスと、その派生クラス」
> >からアクセスできるってのが特徴でしょ
> ちゃんとアクセスしてるじゃん(w
とかゆってるから、
protectedメンバを、そのメンバを宣言したクラスの派生クラスから
呼び出せる、って事は間違ってないと思うんだけど。
0287デフォルトの名無しさんNGNG
>>286
「Base().protectedFunc()が、Baseのサブクラスからなぜ呼び出せないのか」
仕様です。
はじめに書いたように
「protectedメンバは自分自身と同じ型のオブジェクトを参照しているときしかアクセスできない」
0288rNGNG
>>287
OK。ありがと
0289デフォルトの名無しさんNGNG
つまりprivateと同じだ。
0290デフォルトの名無しさんNGNG
>r
解決したみたいだけど、
static_cast<Ext &>(Base()).protectedFunc();
これなら通せる。(よい子は真似しちゃいけません)
ようするに「Extの一部としてのBase」としてのみアクセスできる。ってとこか。
0291デフォルトの名無しさんNGNG
>>290
すでに余談だけど(w
禿本によると、>>287は、同じ基底クラスから派生した複数のクラス間で、
相手のprotectedメンバへのアクセスを認めないというのが趣旨らしい。
基底クラスと1つの派生クラスだけで見ていると
「派生クラスから基底クラスならアクセスできてもかまわないじゃん?」
と思いがちだが、別の派生クラスの存在を念頭に置くと、やはりそれも不味かろう。
0292デフォルトの名無しさんNGNG
>>276
余談だが
Yesには必ず肯定文が、Noには必ず否定文が続く。
よって>>270 の文は文法的に破綻している。やっぱり
英語の勉強すれ。
0293デフォルトの名無しさんNGNG
余談の多いインターネットはここですか?
0294デフォルトの名無しさんNGNG
>>293
ノン、インタネト(intanet)
0295デフォルトの名無しさんNGNG
>>292
Oll raight
0296デフォルトの名無しさんNGNG
そういや
I have no money.
を「私はハブ(?)の物真似がうまい」とかいった香具師がいたな。
今思えば釣りなのか、真性なのか確認しようにももうあの香具師は・・
0297デフォルトの名無しさんNGNG
>>296
ハブに咬まれて死んじゃった?
0298デフォルトの名無しさんNGNG
To be to be ten made to be.
訳「飛べ飛べ天まで飛べ」
0299デフォルトの名無しさんNGNG
>>296
I have no money.
⇒ 私はお金で無い物を持っている。
0300デフォルトの名無しさんNGNG
俺、ハブ飲まねえ。
0301デフォルトの名無しさんNGNG
Nobody is here.
ノーバディさんはここです。
0302デフォルトの名無しさんNGNG
ノバの人は腹が減っている
0303デフォルトの名無しさんNGNG
I/Oストリームで、stdioのsprintfのようなことをさせるには
どの関数を使えばいいのでしょう?
0304デフォルトの名無しさんNGNG
>>303
#include <sstream>

ostringstream tstr;
tstr << "ABC";

cout << tstr.str() << endl;
0305303NGNG
>>304
ThanX
0306デフォルトの名無しさんNGNG
fopenでテキスト形式のファイルをmainの引数として開いて書き込むつもりですが、
bmpファイルが引数でもエラーが出ずに通ってしまいました。
テキスト以外のファイルをエラーとする方法はありますか?
0307デフォルトの名無しさんNGNG
>>306
ファイル名の最後の4文字が".txt"かどうかを調べる
0308デフォルトの名無しさんNGNG
>>307
ありがとうございます
では、ファイル名の比較はどのようにすればできるでしょうか?
0309デフォルトの名無しさんNGNG
strcmp
0310デフォルトの名無しさんNGNG
>>308
Shell API を使え。ここの Path* の API
http://nienie.com/~masapico/api_index.html

つか、ファイルを全部読んで文字以外のがあったら
テキストファイルじゃないと判断汁。
0311デフォルトの名無しさんNGNG
「テキスト形式」なんて人間が勝手にそう決めてるだけで、
コンピュータにとってはどんなファイルもさしたる違いはない。
0312デフォルトの名無しさんNGNG
int型を文字列に変換したいのですが
どんな関数使えば良いのでしょうか?
かなりがんばって検索したつもりなのですがわかりませんでした
0313デフォルトの名無しさんNGNG
俺俺に聞け→勉強するぞ から誘導されてきました。ちょいと教えとくれ。
#include <stdio.h>
/* #define GLOBAL */
#ifdef GLOBAL
const int DragonKiller=15000,AngelRobe=3000,DragonShield=3500;
struct _item{ char *name; int price;
}ItemList[]={
{"ドラゴンキラー", DragonKiller},
{"天使のローブ", AngelRobe},
{"ドラゴンシールド",DragonShield},
};
#endif

int main(void)
{
#ifndef GLOBAL
const int DragonKiller=15000,AngelRobe=3000,DragonShield=3500;
struct _item{ char *name; int price;
}ItemList[]={
{"ドラゴンキラー", DragonKiller},
{"天使のローブ", AngelRobe},
{"ドラゴンシールド",DragonShield},
};
#endif

return 0;
}
GCC 3.3.1 で、GLOBAL無効だとOKなんだけど、
GLOBAL有効だとコンパイルエラーになるんだ。なんで?
0314デフォルトの名無しさんNGNG
sprintfでも使っとけ
0315Addicted to C++ ◆nrBjarne.g NGNG
>>312
#include <sstream>
#include <string>
using namespace std;
int x;
ostringstream oss;
oss << x;
string temp = oss.str();
これでtempに得られる。もしくはboost::lexical_cast<>を使うとすっきりしていい。
0316デフォルトの名無しさんNGNG
>>313
エラーメッセージを貼り給え
0317313NGNG
GLOBAL無効(エラー無し)
T:\>gcc g.c


GLOBAL有効
T:\>gcc g.c
g.c:7: error: initializer element is not constant
g.c:7: error: (near initialization for `ItemList[0].price')
g.c:7: error: initializer element is not constant
g.c:7: error: (near initialization for `ItemList[0]')
g.c:8: error: initializer element is not constant
g.c:8: error: (near initialization for `ItemList[1].price')
g.c:8: error: initializer element is not constant
g.c:8: error: (near initialization for `ItemList[1]')
g.c:9: error: initializer element is not constant
g.c:9: error: (near initialization for `ItemList[2].price')
g.c:9: error: initializer element is not constant
g.c:9: error: (near initialization for `ItemList[2]')
0318デフォルトの名無しさんNGNG
>>313
Cでコンパイルしてるからだな。

Cではconst intは「定数式」に使えない。
C++なら使える。
0319313NGNG
グローバルでのそれとローカルで違うのはどうしてでつか?
0320デフォルトの名無しさんNGNG
ttp://gcc.gnu.org/onlinedocs/gcc-3.3.3/gcc/Initializers.html
0321デフォルトの名無しさんNGNG
本人は他人の10倍の能力があると言ってますが、本当の実力はどれほどの
ものでしょうか? 私はプログラムが書けないのでよくわかりませんです。

117 : ◆Rb.XJ8VXow :04/02/15 23:34 ID:L0+olNsX
ちなみに下記は三菱製作所へ納品したソースの一部だ。
このソース1300ステップで250万円の値が付いた優れものである。
もちろん、コボラー様でも読めるように配慮している。

void MAIN_SUB()
{
char sStr[256];
int i,iSw,iCnt;

CreWorkA_SUB(); /* 展開WorkA作成 */
CreWorkB_SUB(); /* 展開WorkB作成 */
CreStrf0_SUB(); /* 出力 合作振向F作成 */

strcpy(P_Strf0,getenv("WORKDIR")); strcat( P_Strf0, "/STRF.txt" );
F_Strf0 = fopen( P_Strf0, "r" );
if( F_Strf0 == NULL ){
fprintf(stdout,PROG);
fprintf(stdout,": (MAIN_SUB)STRF.txt open Error!\n");
exit(-1);
}
0322321のつづきNGNG
/*----------------------*/
/* 自動/手動 分割処理 */
/*----------------------*/
iSw=0;iCnt=0;
for(J_Strf0.cnt = 0; J_Strf0.cnt < J_Strf0.max; J_Strf0.cnt++){
fseek(F_Strf0, J_Strf0.cnt * J_Strf0.size, SEEK_SET);
if( fread(&R_Strf0,J_Strf0.size,1,F_Strf0) != 1 ) AccessErr("001");
if( strncmp(R_Strf0.ORDER_ARANGE_NO,"#" ,1) == 0 ) {
/* fseek( F_Strf1, J_Strf1.cnt * J_Strf1.size, SEEK_SET ); /* */
fwrite( &R_Strf0, J_Strf1.size, 1,F_Strf1 );
J_Strf1.cnt++;
} else {
/* fseek( F_Strf2, J_Strf2.cnt * J_Strf2.size, SEEK_SET ); /* */
fwrite( &R_Strf0, J_Strf2.size, 1,F_Strf2 );
J_Strf2.cnt++;
}
}
J_Strf1.max=J_Strf1.cnt; /* 最大件数記憶 */
J_Strf2.max=J_Strf2.cnt; /* 最大件数記憶 */
fclose(F_Strf0);
}
0323デフォルトの名無しさんNGNG
             ∧ ヨミニク マンドクセ ヤッテランネ
           ∠'A`>
             |∧|
0324デフォルトの名無しさんNGNG
C ++で、次のような犬と猫のクラスを作りました。
これをNo.1,2の入力によって、1のときは犬に名前をつけてなかせ、2のときは猫を泣かせたいです。
これをテンプレートを使って行うにはどうしたらよいでしょうか。。

class dog{
string name;
public:
void setname(string n){name = n;}
void naku(){cout <<"U・(エ)・U{"<< name <<"だワン!)"<<endl;}
};

class cat{
string name;
public:
void setname(string n){name = n;}
void naku(){cout <<"(=^エ^=){"<< name <<"だニャ〜)"<<endl;}
};
0325デフォルトの名無しさんNGNG
>>324
テンプレートはそういう実行時の多態性の表現に向いていない。
0326デフォルトの名無しさんNGNG
>>324
テンプレートよりも抽象基底クラス使った方が
すっきりさっぱりする気がするのだが。
0327デフォルトの名無しさんNGNG
>>325,326
ありがとうごさいます。
抽象基底クラスというのが何を指すのかよくわからないのですが、仮想関数でポインタを使う方法などは試してうまくいきました。

実は、テンプレートの使い方がよくわからなかったので、簡単な例題を知りたいと思った次第です。
1、2という振り分けでなくてもかまいわないのですが・・・。
0328デフォルトの名無しさんNGNG
すっきりするというか,これに抽象基底クラスを使わないほうが不思議だがw

class animal{
string name;
public:
void setname(string n){name = n;}
virtual void naku() = 0;
};

>324
このクラスをdogとcatの基底クラスにしてdogとcatのnameとsetnameを削除する.
0329デフォルトの名無しさんNGNG
>>327
なんかテンプレートというものを誤解しているような
0330328NGNG
ヽ(`Д´)ノ ウワァァン!!

>327
抽象基底クラスというのは仮想関数を持っているクラスのことだYO!
0331デフォルトの名無しさんNGNG
>>330
普通は純粋仮想関数を持っているクラスのことじゃね?
0332デフォルトの名無しさんNGNG
>>327
テンプレートっていうのは基本的にはコードを書くときに楽するためのものだと思えば良い.

int max(int a, int b){
return a > b ? a : b;
}

double max(double a, double b){
return a > b ? a : b;
}

・・・

こういうのをいちいち全部書くより
template<typename T>
T max(T a, T b){
return a > b ? a : b;
}
って書けばこれだけで済むでしょ?って話.
(inlineにしろとか参照で渡せとか突っ込むのはなしでw)

>331
その定義の方が一般的なんですかね?俺勘違いしてたかな?
0333デフォルトの名無しさんNGNG

抽象というからにはインスタンス化できたらまずいから、
少なくとも1つは純粋仮想関数を持たねばならないのでは?

仮想関数 virtual void func() { }

純粋仮想関数 virtual void func = 0;

だよね。仮想関数はインスタンス化できちまう。
0334デフォルトの名無しさんNGNG
>>333
純粋仮想関数 virtual void func() = 0;

ですた。俺は使ったこと無いけど。

0335デフォルトの名無しさんNGNG
>>328-331
失礼しました。
今確認したら、「純粋仮想関数を持つクラスを抽象クラスといいます」とありました。

>>332
すみません return a > b ? a : b; のような記述は初めてみたので咀嚼するのに時間をください。
ただ使い方を勘違いしていたことはわかりました。ありがとうございました。
0336デフォルトの名無しさんNGNG

(条件式) ? a : b

これは3項演算子で、条件式が真の場合は a を、
偽の場合は b を返す式です。

return a>b ? a : b;

の場合、 a>b だったら、 return a;
そうじゃなければ return b; という意味です。

0337デフォルトの名無しさんNGNG
>>336
おぉわざわざありがとうございます。勉強になります。

今読んでる本のテンプレートの例題がよく理解できなかったので、
無理矢理自分がわかる簡単なコードに置き換えようとしてしまいました。
もっと他の本も読んでみます。
0338デフォルトの名無しさんNGNG

ガンガレ。良書を複数読むと、深い理解が得られるよ。
漏れはCからC++に移行するのに、C++の本を6冊読んだ。

0339デフォルトの名無しさんNGNG
無駄にあれこれ読んでも仕方がない。
Cでプログラミングの知識があるなら禿本をきちんと読めばいい。
まぁ普通の本の2,3冊分のボリュームはあるが。
0340デフォルトの名無しさんNGNG
すいません、質問なんですが、HTML文書の中に含まれている

  <b><a href="?page101">2</a></b>
  <b><a href="?page201">3</a></b>
  <b><a href="?page301">4</a></b>
  <b><a href="?page401">5</a></b>

↑こういう形の部分を全部消去したいんです。
で、パターンマッチングっていうんですか?
連番の部分の文字列をオールマイティ文字?で表す方法がわからなくて困ってます。

AnsiString Pattern ="  <b><a href=\"?page" + "\\***"+"\">"+"\*"+"</a></b>";
StringReplace(HogeHTML, Pattern , "", TReplaceFlags() << rfReplaceAll);

なんか無茶苦茶テキトーですがこんな↑感じでやるんですよね?
環境はBCB6です。
よろしくおねがいします。
0341デフォルトの名無しさんNGNG
ふつー、そういう場合は正規表現を使う。boost::regexとか。
0342デフォルトの名無しさんNGNG
>>340
FILE * fp = popen("sed -e 's;<b><a href="\?page[1-4]01">[2-5]</a></b>;;g' some.html", "r");
0343デフォルトの名無しさんNGNG
>>340
どうも正規表現の使い方を聞いてるようだが、
そもそもStringReplaceは正規表現には対応してない。
VCLにも正規表現を扱うオブジェクトはあるが、
その辺は専用スレで聞いたほうがよかろう。
0344うみがめNGNG
>>218でRPGを見ていただいた者です。
XI[sai]というサイコロを転がすゲームを作りました。
コンソールアプリですが、ウィンドウズ依存です。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=31&fi=no

教えていただいた、スペース、名前の付け方、whileなどに気をつけて作りました。
名前で**Suuと個数を表すものだけは分からなくてローマ字です。
Numberとか和英に書いてありましたが、番号という意味のイメージが強くて。

また、直したらよい所があったら教えてください。
0345デフォルトの名無しさんNGNG
>>341
>>342
>>343

ありがとうございます。教えていただいたことから再検索して色々知ることができました。感謝。
0346デフォルトの名無しさんNGNG
>>344
人様に見てもらうなら、他人が見て一目で分かるようなファイル構成にしろ。
構造体・関数・マクロ他のアウトラインをまとめたドキュメントをつけろ。
そういうところに気が回らない時点ですでにオマエは能無し。ヴォケバカカス。
0347うみがめNGNG
>>346
ファイルの先頭にどんなファイルか書いていただけなので、
仰るとおりだと思います。そこまで気が回りませんでした。
ありがとうございました。
0348デフォルトの名無しさんNGNG
>>337

たしかにtemplateでも多態性のように異なるオブジェクト間で
共通のメソッドを利用したプログラムの共通化が図れるけど、
そもそもの利用の目的は分けて考えるべき。

templateの使い方・考え方という意味では、「C++再考」を一読
することをお勧めします。

http://www.amazon.co.jp/exec/obidos/ASIN/489471776X/249-8101483-3161126

template関連の書籍は「STLの使い方」のような完全に利用者側の立場
がほとんどで、開発者向けのものとしては「Modern C++ Design」の様な
一気に高度な応用編のようなものくらいしかないですが、この本はSTL
が成立した考え方などを順を追って解説しているので、読み物としても
面白いです。

あとはおなじみEffective C++の41項位かな。
0349デフォルトの名無しさんNGNG
>>344
ドキュメント書くなら doxygen 使ってみー。無料だよ。
0350デフォルトの名無しさんNGNG
>>338,339
プログラミングは完全な初心者です。
現在は、
本を読む→理解できたと思ったら本を見ずにコードを記述 →
→ 失敗したらもう一度読み直し → 成功すれば(゚Д゚)ウマー
という流れで進めていますが、もっとおすすめの本や勉強法などありますか?

>>348
実は今その本の訳者が書いた「これならわかるC++」を読んでいます。
本人のHPで中級書として「C++再考」をすすめていました。
是非読んでみます。
0351うみがめNGNG
>>349
ありとうございます。使ってみます。
0352デフォルトの名無しさんNGNG
>>350
それでいいから、最後まで通読すること。これが一番大事。
その後は自分で実際にプログラムを組んでみること。
ある程度経験を積んだら「プログラミング言語C++ 3rd」を読むべし。
他の本は要らん(開発環境の参考書は除く)。

その後は、OOP、デザパタ、ジェネ、ULM、なんでも好きな方面に展開すると。
先は長いぞ(w
0353デフォルトの名無しさんNGNG

ひじょーに基本的な話で恐縮なんですが、
32bitのLONG型 0xAABBCCDDをファイルに格納すると
ファイルの先頭から DD CC BB AA と格納されるのか
AA BB CC DD と格納されるのか、どちらなんでしょう?

0354デフォルトの名無しさんNGNG
>>353
そんなもん環境次第。
0355デフォルトの名無しさんNGNG
>>354
なるほど。環境依存ですか。
0356デフォルトの名無しさんNGNG
>>355
環境によってはBB AA DD CCという場合もあるそうだ。
0357デフォルトの名無しさんNGNG
>>355
バイトオーダーについて調べてみるといい
0358デフォルトの名無しさんNGNG
>>355
CC DD AA BB もあり得る。
0359デフォルトの名無しさんNGNG
エスケープシーケンスの話しなんですけど、

printf("0x1b[4;31m");

と記述しても

リターンキーの記号[4;31m

としかでないんですけどどうしてなんでしょうか・・・。

XPです
0360デフォルトの名無しさんNGNG
printf("0x1b[4;31m");
と書いて、
0x1b[4;31m
と出ない処理系って?
0361デフォルトの名無しさんNGNG
>>360
間違えた・・・。

printf("\x1b[4;31m");

でした
0362デフォルトの名無しさんNGNG
エスケープシーケンスって32bitのDOS窓でも使えるの?
0363デフォルトの名無しさんNGNG
ansi.sys入れれば使えるんでないかい?
0364デフォルトの名無しさんNGNG
C:\WINDOWS\system32\CONFIG.NT に
devicehigh=%SystemRoot%\system32\ansi.sys
してみたらどうだろう
0365359,361NGNG
だれか答えてもらえないでしょうか・・・お願いします
0366デフォルトの名無しさんNGNG
>>365
基本的には無理。諦めろ。
0367デフォルトの名無しさんNGNG

W2Kのコンソールで確認したが
やはりリターン記号になった。
0368デフォルトの名無しさんNGNG

printf("x1b[4;31m");

これだとそのまま表示された。
0369デフォルトの名無しさんNGNG

printf("0x");
printf("1b[4;31m");

printf("\n");

結果↓

0x1b[4;31m
Press any key to continue

これで駄目?
Win2K+Consoleです。
0370359,361NGNG
>>366
無理っていうのは環境的に無理ってことなのでしょうか?
ならあきらめます。

>>369
やってみましたデフォルトの白文字で

0x1b[4;31m

が出力されただけでした・・・。
0371デフォルトの名無しさんNGNG
>>370
>>363,364は試したのか?
0372359,361NGNG
>>371
>>363,364は自分への返信だったんですか・・・。
で、C:\WINDOWS\system32\CONFIG.NT まではいったんですが、
CONFIG.NTが開けないです・・使うアプリケーションわからないんです。
スレ違いですが教えてください
0373デフォルトの名無しさんNGNG

ん? エスケープシーケンスを有効にしたいの?
0374359,361NGNG
そうです
0375デフォルトの名無しさんNGNG
ふつうのテキストファイルだから、メモ帳で。
関係ない行いじってこわすなよ
0376359,361NGNG
>>375
メモ帳でひらいて一番したに加えるだけですよね?
やってみたんですけどやっぱり無理でした。
ありがとうございました
0377デフォルトの名無しさんNGNG
(´-`).。oO(再起動はしたのだろうか?)
0378デフォルトの名無しさんNGNG
いろいろ検索してみたが、むりっぽいという意見が多い。
16ビットアプリだったらいける可能性があるんだが。
32ビットの場合はWindowsAPIを使うしかないということかな。
0379デフォルトの名無しさんNGNG
>>359
過去スレ読め。
その手の質問は秋田
0380デフォルトの名無しさんNGNG
Vine Linux2.6使用しています。
C言語で
プログラムに外部のプログラムを立ち上げさせるプログラムを作りたいんですが、
(たとえばキーボード入力があったときにemacsが立ち上がるとか)
どのようにすればできるかがわかりません。
どなたか教えていただけないでしょうか?
0381うみがめNGNG
doxygenでhtmlの表示上で改行させるためのコマンドがあるなら教えてください。
戻り値の@return、@retvalとかは分かったのですが。
0382デフォルトの名無しさんNGNG
>>380
$ man 3 system

以上。
0383デフォルトの名無しさんNGNG
まったく見当がつかないので、お願いします
#include <iostream>
#include <string>
using namespace std;

int myfind_first_r_of(const string &strob, const char *pch)
{
 int klen = strlen(pch) / 2;
 int i, pos = 0, ppos;
 char ch[3];

 if(klen == 0 || strlen(pch)%2 ) { cout << "指定が違います\n"; return 0; }

 for(i=0; i<klen; i++) {  // なぜか1度しかループしない
//  cout << "klen = " << klen << '\n';  // for()の中でklenを使うと解消する
  strncpy(ch, pch, 2);
  ch[3] = '\0';
  pch += 2;
  ppos = strob.rfind(ch);
  if(pos <= ppos) pos = ppos;
 }
 // この時点で klen が 0 になっている
 return pos;
}
0384383(続き)NGNG
int main()
{
//     "012345678901234567"
 string ob("あいうえおえういあ");
 char str[] = "いあ";
 cout << myfind_first_r_of(ob, str) << endl;
 return 0;
}
0385デフォルトの名無しさんNGNG
>383
char ch[4];
0386385NGNG
むしろ ch[2] = '\0'; かな。
0387デフォルトの名無しさんNGNG
>>359
なんでエスケープシーケンスを使いたいんだ?
Win32 だと Console API で画面の色とかは設定するんだが。
0388383NGNG
>385
ch[4]にしても期待通りの16にならないんですが。
0389383NGNG
>385
>386
できました。きづきませんでした。
ありがとうございます。
0390うみがめNGNG
すいません。@**コマンドでは無く、<br>でできました。

//! @par 機能:
//! タイマー <br>
//! 登録可能数は16まで(関数内のpiece定数で変えられる)
//!
//! @par 使用例:
//! for ( i = 0 ; i < 10 ; ) <br>
//! if ( Timer ( 1000 , "1秒毎に" ) ) <br>
//! printf ( "%d\n" , ++i ) ;
//!
//! @retval 正 時間がたった 登録の破棄も行われる
//! @retval 0 時間が経っていない 初登録時
//! @retval 負 引数が不正 タイマーをたくさん使っていて登録できない
0391デフォルトの名無しさんNGNG
>>390
で、それのどこがC/C++の話題なんだい?
いい加減に引っ込んでろ。
人並みのソースが書けるようになるまでは出入り無用。
0392380NGNG
>>382
ありがとうございました。

もうすこしsystemについてお聞きしたいのですが、
たとえば
char *eth = "eth0";

system("ifconfig %s", eth);

このような受渡しはできなかったのですが、
こういう事はできないのでしょうか?
0393デフォルトの名無しさんNGNG
sprintf使え
0394380NGNG
>>393

たびたび申し訳ありません。
system関数では%sでの受渡しはできないようなので、
お聞きしたのですが、sprintfで解決する問題なのでしょうか?
0395デフォルトの名無しさんNGNG
>>394
君が真面目に勉強すればすぐに解決する
自分で調べることを覚えなさい
0396デフォルトの名無しさんNGNG
エクスプローラで右クリックしたときのメニューに機能を追加したいのですが
どのあたりのお話を調べたらよろしいでしょうか?
0397デフォルトの名無しさんNGNG
>396
シェルエクステンション?
0398396NGNG
すみません、環境はVC++ 6.0使ってます。
イメージとしては、対象のファイルを(例えば圧縮のような)加工するアプリに
引き渡すようなことを考えてます。
0399デフォルトの名無しさんNGNG
>398
その程度ならレジストリに書き込むだけだ。
0400デフォルトの名無しさんNGNG
>394 まぁまぁ、もう少しヒントをあげればいいぢゃん。

>380よ
 char cmd[] = "ifconfig eth0";
 system(cmd);
ってのは理解OK?

char *eth = "eth0";
 char cmd[256];
sprintf(cmd, "ifconfig %s", eth);
ってのは理解OK?

...ヒントあげすぎ?
0401 ◆eMoukokenQ NGNG
すみません。質問です。
VC++6.0使用してDLL読み込みのプログラムを作成したのですが。
いざDLLを作成して起動しようとするとランタイムエラーとなって起動できませんでした。
そこで、デバッグをかけてみるのですがデバッグ上では正常に起動しています。
これは何が原因で起こっているのでしょうか?

因みにDLLは旧バージョンがもう一つあり、それだと正常に起動しています。
なのに新しく作り直したバージョンのものは上手く起動できません。
デバッグのしようがなくて大変困っております。

どなたか御教授願えませんでしょうか。
0402デフォルトの名無しさんNGNG
>>401
そら新バージョンのDLLにバグがあるか仕様が変更されているか
要求するランタイムのバージョンがあがっているかだろ。
これ以上はソース見なきゃ誰も何も分からん。
0403名無しNGNG
質問お願いします。
ns2というネットワークシミュレータを使っているものです。
オープンソースでC++で書かれているシミュレータです。
質問したいのは、timeout関数というものがあり、
定期的にパケットを送る関数があるのですが、これに、受信処理を行う関数
recv()関数が存在して、そこで受信するごとに受信パケット数をカウントし、
それを送信側に定期的に送りたいのですが、定期的に送信する関数は、
タイマーがあり、ある時間がたつごとにループしています。
このループの中で、カウントが更新されていく変数received_packetを
呼び出したいのですが、更新された値が呼び出せないのですが、
何かいい方法がありましたら教えてください。

timeout(){
:
:
   printf("%d\n",received_packet);
timer.reschedule(inteval); // interval時間ごとに呼ばれる
}

recv(){
received_packet++;
}

上のようなプログラムになっています。
説明不足ならご指摘いただければまた書き込みます。
よろしくお願いいたします。
0404 ◆eMoukokenQ NGNG
>>402
ソース見せたいのは山々なのですが
バグとなっているDLLのソースはめちゃくちゃ長いんですよ。
何が原因か特定出来次第お見せしたいのですが・・・
何度もデバッグかけてるのですがそれらしいバグに
一切引っかからなくてほとほと困り果てました。
本体の方はまだ仕様変更してませんのでランタイムのバージョンを
上げる必要ないのですが・・なぜなんでしょう?
0405デフォルトの名無しさんNGNG
>>403
すまん、意味不明だわ。
質問は日本語でしてくれないか?
0406デフォルトの名無しさんNGNG
>>404
いや、だから、DLLがランタイムを必要としてる可能性があるでしょ。
つかDLLのソースがあるならDLLにデバッガかければいいやン。
0407デフォルトの名無しさんNGNG
意味不明の箇所を指摘しようにも文全体がわけわからん。
関数間の関係をグラフで書いてもらった方がいいかね……。

あとライブラリの利用に関する質問は
どこまでがライブラリの部分でどこからが自分で書いた部分なのかも書いてほしい
0408 ◆eMoukokenQ NGNG
>>406
それはもちろんDLLソースにデバッグかけています。
DLLにバグがあるのは分かっていましたので。
しかし、何も反応ないんですよ。
でも、アプリケーションから実行するとエラーとなってはじかれてしまいます。

>>407
本体もDLLも自作のものです。
エラーは自作DLLがわにある模様なのですが、どこがエラーなのか
デバッガかけても分かりません。
0409デフォルトの名無しさんNGNG
>>403
受信側の関数が持っているデータを送信側の関数に引き渡したいという話……なのかなあ

しかし、その変数が
1 recieved_packetは受信関数ローカルな(静的)変数なのか、
2 グローバル変数なのか
3 送信側にあって受信側に(参照で)渡しているのか
書かれていないので指針も立てられない。
ある程度複雑な処理の場合は
変数や関数の関係を簡潔に書いてくれ。

そもそも状況説明で「呼び出せない」とだけ書かれても
呼び出すコーディング方法がわからんのか
コーディングはしたがテスト段階で予想と違った振る舞いをするのか
もしくは並列に動作する環境でもって上手く動かないという話なのか
情報不足でまるでわからん。

それと不適切な指示語や言い換えや省略は
もうキリがないんで技術系MLの質問作法を一度当たってくれ。
0410デフォルトの名無しさんNGNG
>>408
>>403みたいな国語力がナガシマシゲオなやつも困るが、
こいつみたいな必要な情報を自分からは提示しようとせずに
「ご教示下さい」ってヤシも困りもんだな。
0411 ◆eMoukokenQ NGNG
>>410
ソース以外に必要な情報がありましたらいくらでも。
ただ、>>402>>406のような原因でのバグではないようなんです。
どこがおかしいのか皆目検討付かないもので質問させてもらいました。
0412デフォルトの名無しさんNGNG
>>401 >>408
>いざDLLを作成して起動しようとするとランタイムエラーとなって起動できませんでした。
>そこで、デバッグをかけてみるのですがデバッグ上では正常に起動しています。
>これは何が原因で起こっているのでしょうか?

>それはもちろんDLLソースにデバッグかけています。
>DLLにバグがあるのは分かっていましたので。
>しかし、何も反応ないんですよ。
>でも、アプリケーションから実行するとエラーとなってはじかれてしまいます。

単にパス内にDLLがないだけということはないよな?
0413 ◆eMoukokenQ NGNG
>>412
バグが起こった時最初はそれだと思って確認したのですが。正常でした。
0414 ◆eMoukokenQ NGNG
デバッグ用にDLL読み込みチェック関数を作成して確認してみたのですが、
DLLが正常に読み込まれていました。ということは、DLLのソース内でランタイムエラーの
原因があるようですね。でも何でデバッグに引っかからないんだろう・・・不思議だなあ。
0415デフォルトの名無しさんNGNG
↑
だから、ソース見なきゃ誰にも判らんよ
ソース晒す気がないなら自力で解決しろ

なんとなく張ってみたくなった
http://www.amy.hi-ho.ne.jp/~lepton/program/prog/prog19.html
0416デフォルトの名無しさんNGNG
>>414
>でも何でデバッグに引っかからないんだろう
(´-`).。oO(単にデバッガの使い方を知らないんじゃ……)
0417デフォルトの名無しさん NGNG
技術系のMLのスレッドってどこにあるの?
0418デフォルトの名無しさんNGNG
>>417
スレじゃなくてサイト
ぐぐればすぐ見つかる
0419デフォルトの名無しさんNGNG
>>414
DLL に渡す領域不足なども考えられるぞ。
旧 Ver でも起こり得る潜在バグの可能性もありだな。

DLL はどうやってデバッグしてるんだ?
まさか、デバッグ用の DLL 呼び出し exe を別に作ってないだろうな?
0420 ◆eMoukokenQ NGNG
>>419
>DLL に渡す領域不足なども考えられるぞ。
>旧 Ver でも起こり得る潜在バグの可能性もありだな。

いまいちイメージわきませんが。検討してみます。

>DLL はどうやってデバッグしてるんだ?
>まさか、デバッグ用の DLL 呼び出し exe を別に作ってないだろうな?

普通にデバッガかけてますんので、自然とそうなるのではないでしょうか?
呼出し用のexeないとデバッゲ出来ませんし。


皆様ご回答いただきありがとうございました。
0421デフォルトの名無しさんNGNG
ここで聞いていいものか分かりませんが、AU用にファイル(mmf)のDLを
するためのタグなんですけど、「ダウンロードデータが正しく
ありません」とエラーになってしまいます。
これはやはりファイルに問題があるのでしょうか?
ちなみにメールで送信するとちゃんと聴けます。
どこかおかしいところありますか?
<P>VoVoTau:nude</P>
<P><object data="ファイル位置" type="application/x-smaf" copyright="no" standby="DL">
<param name="disposition" value="devm39z" valuetype="data" />
<param name="size" value="98626" valuetype="data" />
<param name="title" value="Nude" valuetype="data" />
</object><BR>
0422デフォルトの名無しさんNGNG
>>421
スレタイ読め。
0423デフォルトの名無しさんNGNG
>>420
呼出し用のexeじゃなく、問題となってるexeを使えよ。
両方をデバッグしないと問題が出ないだろ。

>>DLL に渡す領域不足なども考えられるぞ。
>いまいちイメージわきませんが。

文字列末尾の'\0'分の領域が確保されていない、
とかその手のパターンだ。
0424 ◆eMoukokenQ NGNG
>>423
ありがとうございます。
今後そちらの方面に重点を置き慎重にデバッガをかけてみます。
0425デフォルトの名無しさんNGNG
環境依存OKってことなので…
.NET Framework SDKをC++から使うことはできますか?
0426デフォルトの名無しさんNGNG
>>425
managed C++ なら可能だけど。
0427デフォルトの名無しさんNGNG
managed C++は環境依存っていうより言語拡張だし専用スレもあるんでそっちへ
http://pc2.2ch.net/test/read.cgi/tech/1014486422
ついでにMSDN
http://www.microsoft.com/japan/msdn/vstudio/techinfo/articles/upgrade/managedext.asp
0428デフォルトの名無しさんNGNG
cin.get と cin.getline の違いがいまいちよくわかりません。
一時間悩みましたがだめです。
もう寝ます。
0429デフォルトの名無しさんNGNG
>>428
おやすみなさい


きちんとしたドキュメントor参考書があれば5分で分かるんだけどね
そういうところには投資を惜しんではいかんよ。
0430デフォルトの名無しさんNGNG
#include <iostream.h>
と
#include <iostream>
の違いはなんですか?
0431デフォルトの名無しさんNGNG
<iostream.h> → 非推奨(deprecated)
<iostream> → 標準
0432デフォルトの名無しさんNGNG
ウホッ
それっていつからなんですか?
C99?
0433デフォルトの名無しさんNGNG
>>432
Cじゃねーよ
0434デフォルトの名無しさんNGNG
>>430
#include <iostream>だとnamespace stdを指定しないとならない
0435デフォルトの名無しさんNGNG
>>434
その言い方だと、「<iostream.h>だと、stdいらなくてイイ。」みたいで嫌だな。
0436 ◆eMoukokenQ NGNG
>>434
別にstd::付いてもいいと思うけど。
0437デフォルトの名無しさんNGNG
 質問というより、相談です。
 LonghornではWinFXが出てきて、将来的にはWin32APIは
互換性のためにエミュレータ上にのみ残され動作するように
なると聞いたことがあります。
 今まで環境非依存のC++を勉強してきて、やっと最近
WindowsプログラミングをWin32APIで勉強し始めたのですが、
普通にWin32APIを使えるようになった頃にはもうWin32APIは
使われていないということになりそうな気もします。
 MSの動きを見ていると、Windowsプログラミングの新しい
スタイルを確立しようと、MFCを作り、.NETを作り、ついには
(C or C++)&(Win32API or MFC)主流のスタイルそのものを
捨て去り独自の言語(C#)を作り出して、結局はそれによって
プログラマ側はウィンドウズのシェアの高さに仕方なく新しい
言語の習得を強いられているのが現状だと思います。未だ
C#では他OSでまともなGUIアプリケーションを作ることもできず、
将来的にも、C#のみを習得してしまったらWindowsでしか
プログラミングできないということになりかねない気がします。
だからといってかなりのレベルまでに両方をスキルアップ
するのも荷が重過ぎる気がします。managed C++というものも
ありますが、結局過渡期・移行期間の為に用意したとしか
思えないという部分があります。そもそもC#を作ったこと自体、
Windowsプログラマの確保によるWindowsシェアの確保の
ための策略である気がします。
 今はWindowsプログラミングの転換点であると思います。
この時勢に、初心者である私は今から1からWin32APIを
勉強するよりもMSの策略に乗ってC#で.NETの勉強を始めた
方がいいでしょうか?それともまだまだC++でWin32APIを
勉強する価値はありますか?
 主観的な意見でも構いませんので、皆様のご意見を聞きたいと思い、
投稿いたしました。よろしくお願いいたします。
0438デフォルトの名無しさんNGNG
>>437

お前が何をしたいかだろ?
MSの策略も何も、Windows上で動くアプリが作りたいんだったら、
C++でがんばるなりC#に移行するなりすりゃいい。

MSの姿勢が気に食わんというのなら、とっととLinuxなりMacなりに
移行すりゃいい。

でもな、何のためにプログラム言語を覚えようとしてるんだ?
なにか作りだしたいものがあるからだろ?
ごちゃごちゃ愚痴書いてないで、とにかくなにか作ってみろ。
文句言うのはそれからだ。


0439デフォルトの名無しさんNGNG
>>435
<iostream.h> だと
Visual C++ 6.0 ではコンパイルエラーになります。
0440デフォルトの名無しさんNGNG
std:: をつけたら
です
0441デフォルトの名無しさんNGNG
>>435
そういうつもりは無いよ。
>>430みたいな質問には、これを真っ先にいうとかなアカンでしょ。
どうせnamespaceなんか知らないんだろうから。

>>436
ヴォケ。質問からちゃんと読め。
0442デフォルトの名無しさんNGNG
何かどっかであえてdeleteを使わず高速化する香具師がいるって聞いたんですけど
私もそういうレベルに達してみたいんですが…
使い分けのノウハウを教えてください
0443デフォルトの名無しさんNGNG
>>437
俺も C++ ばかりやってきたけど、C++を捨てて
C#を勉強することにしたよ。C++の求人全然
ないんだもん。Java/C#/ASP/VB、この辺ばかり。

http://www.hellowork.go.jp/
↑自分の地域の状況を確かめてみるといい。
0444デフォルトの名無しさんNGNG
>>442
>あえてdeleteを使わず高速化する

ただの邪道
0445デフォルトの名無しさんNGNG
delete を遅延することはあるかもね。
0446デフォルトの名無しさんNGNG
標準C++の基礎知識 実践編という本に
C++の定数の定義は従来の#defineで定義する方法以外に
const intなどで定義することができると書かれていたのですが
皆さんはどちらの方法を使ってますか?
0447デフォルトの名無しさんNGNG
enum
0448デフォルトの名無しさんNGNG
以外にっつーか定数のための #define なんて捨てろ。
0449デフォルトの名無しさんNGNG
const int define 定数 でぐぐってみますた
http://66.102.7.104/search?q=cache:5DyDyF_hcfgJ:www.kab-studio.biz/Programing/PragmaTwice/Main/059.html+const+int+define+%E5%AE%9A%E6%95%B0&hl=ja&lr=lang_ja&ie=UTF-8&inlang=ja
0450デフォルトの名無しさんNGNG
>>446
#define じゃなく、 const int を使えというのは
stroustrup も言ってたと思うんだけども、
複数のソースで使われる定数に対して
const int を使うと、同じヘッダが使えずに不便だった
記憶がある。
0451デフォルトの名無しさんNGNG
>>450
?
0452デフォルトの名無しさんNGNG
そういうときはふつーstatic const intだろ。若しくはenum
0453デフォルトの名無しさんNGNG
static いる?
0454デフォルトの名無しさんNGNG
const int 定数はデフォルトで static だぞ(C++)。
0455446NGNG
これからはC++の定数にはconst intを使います
ありがとうございました
0456デフォルトの名無しさんNGNG
質問させていただきます。

VC++6.0 でソフト開発しているのですが、アニメーションカーソルを作って
LoadImage() をする際、LR_LOADFROMFILE でファイル指定では問題無く
動作するのですが、リソース読み込みにした場合

NT系=正常動作。
95系=LoadImage() がNULLを返して終了

と言うように上手く動作しません。同じ様な現象で、はまった方いらっしゃい
ますか?出来ればリソース読みの形にしたいのですが、何か解決方法は
あるでしょうか。
0457デフォルトの名無しさんNGNG
>>454
おそらくクラスの静的メンバ定数(っていうのか?)の場合も考慮しての発言だと思われる
0458デフォルトの名無しさんNGNG
>>456
GetLastError()はなんと言っているのか?
0459デフォルトの名無しさんNGNG
>>455

とにかく、Effective C++をお勧めします。
あなたくらいのレベルの方なら、200ページまるまる身になると思います。
0460456NGNG
>>458
エラー出ませんね。LoadImageの返りが0なので、直後に
GetLastErrorを取ってみると、やはりこちらも0です。
正常終了しているかの様です。
0461456NGNG
結局、どうしても動かしたい部分だけ自力で差し替えアニメさせて
怪しいアニメーションカーソルは使わない事になりました。
何だか負けた気分。。。(´・ω・`)
0462デフォルトの名無しさんNGNG
>>461
考えられるのは

・リソースの追加方法がおかしい
・LoadImage()の引数の指定がおかしい(インスタンス、イメージの種類、リソースIDの指定など)

と言った辺りですが、その辺はどうよ?
っていうか、LoadCursor()じゃダメなのか?
0463rNGNG
なあ。
class C {
static bool flag;
public:
static void foo() {
while( flag )
sleep(1);
}
static void setFlag( bool f ) { flag = f; }
};
な、静的なメンバばっかりのクラスがあるとき、
C::foo()を実行するスレッドとC::setFlag()を実行スレッドが違うとして。
foo()は、setFlag()でのflagの値の変更に、反応できますか?
flagに、volatile修飾子は必要?
0464デフォルトの名無しさんNGNG
sleep(1)が外部関数の呼び出しであれば、おそらく反応できると思います。
コンパイラは、sleep(1)の呼出しによってflagの値が変わらないとは判断できないでしょう
。

でも、そのコードで別スレッドからの操作に反応するのは良くないと思います。
flagにvolatile付けるか、while( static_cast< bool volatile& >( flag ) )
とか、別スレッドからの操作に反応することをコード上で表現することをお勧めします。
0465rNGNG
>>464
あ、反応できちゃうんだ...
ショボン

つか、会社でそのコードを見つけて、
そのコードをかいた先輩に「これ、ヤバくないですか?」
って突っ込んじゃったんだよな。

んまあいいや、ありがと!
0466デフォルトの名無しさんNGNG
>>465
コード直したくないなら、アセンブリ吐かせて確認するのを忘れるなよ。
0467デフォルトの名無しさんNGNG
VC++でプログラミングしているのですが。

例えばcalss A を継承した class B をnewで領域確保して、
それをclass Aでキャストして扱う場合、キャスト後のdelete
は正常に行われているのでしょうか?
0468デフォルトの名無しさんNGNG
>>467
ポインタにキャストしたときの話だよな、もちろん?
class A のデストラクタが仮想ならBのデストラクタが呼ばれる。基本事項だけど。
0469デフォルトの名無しさんNGNG
int func()
{ return 12; }

class A
{
public:
A(int a = ::func()) // <---(1)
{
}

void hoge(int a = ::func()) // <---(2)
{
}
};

A a;
a.hoge();

VC++6.0 SP5
上記の(1)の所で
error C2039: '`global namespace'' : '`global namespace'' のメンバではありません。
と出ます。(1)の::を取るとコンパイルが通ります。
なぜエラーが出るのか、なぜ(2)の::は取らなくていいのか謎です。
これはコンパイラのバグなんですか?
0470デフォルトの名無しさんNGNG
>>469
BCCだとエラーでないな。
0471デフォルトの名無しさんNGNG
gcc-mingwでもok
0472469NGNG
どうやらVCのバグみたいですね。
ありがとうございました。
0473デフォルトの名無しさんNGNG
VC6 は色々問題あるからね。
さっさと .net 2003 買った方が幸せかも。
0474469NGNG
>>473
昼食抜いて金貯めるか・・・
0475デフォルトの名無しさんNGNG
VC++ だけでいいなら、アカデミックで 8000 円程度だぜ。
0476デフォルトの名無しさんNGNG
#include <functional>
template <typename T>
struct foo: public std::unary_function<T, bool> {
    result_type f; // (1)
    result_type operator()(const argument_type & arg) {} // (2)
};

g++ 3.3.2 で、上記のコードをコンパイルすると、(1)、(2)の所で、

warning: `foo<T>::result_type' is implicitly a typename
warning: implicit typename is deprecated, please see the documentation for details

と、警告が出ます。なので、(1)、(2)の行を以下の様に書き替えてから

typename result_type f; // (1)
typename result_type operator()(const typename argument_type & arg) {} // (2)

コンパイルし直すと、以下の様なエラーが出ます。
尚、(1)、(2)の行は、下のメッセージの5、6行目に相当します。

typename.cc:5: error: parse error before `;' token
typename.cc:6: error: parse error before `operator'
typename.cc:6: error: missing ';' before right brace

これは、私の書き方が間違っているのか、コンパイラのバグか、何が原因なんでしょうか?
0477デフォルトの名無しさんNGNG
std::unary_function<T,bool>::result_type f;
std::unary_function<T,bool>::result_type operator()(
const std::unary_function<T,bool)::argument_type & arg){}

すなおに、bool f; bool operator()(const T & arg) {} に汁
0478デフォルトの名無しさんNGNG
>>477
確かにそうすればコンパイルの通るコードになります。
ただ、私が聞いているのはそういうことではなくて、typename result_typeを使うように修正した
コードは間違っているのか、それとも規格の上では正しく、将来的にこのコードがコンパイルされる
ことが期待出来るのか、ということなのですが。
0479デフォルトの名無しさんNGNG
>>477の書き方が正解。
コンパイラの動作をよく考えて見ろ。
std::unary_function<T,bool> は不完全型だから、実体化されるまで result_type が
本当に typename かはもちろんわからない。
……ここまでなら typename キーワードで解決しそうだが、
その基底型の内部で定義されている依存型かどうかすらコンパイラに伝わっていないだろ。
0480デフォルトの名無しさんNGNG
すいません、流れ読まずに質問です。

CreateWindow(
    "BUTTON",
    "BUTTON",
    WS_CHILD | WS_VISIBLE ,
    0, 0, 80, 20,
    hwnd,
    (HMENU)1,
    (HINSTANCE)GetWindowLong(hwnd, lParam),
    NULL
);

このボタンのキャプションを変えるにはどうすればいいでしょうか?
ヒントさえ教えてくれれば後はなんとかします。

環境:VC6.0 WinXP
0481デフォルトの名無しさんNGNG
SetWindowTextだったっけな
0482480NGNG
あぁ・・・すいません。
こんな簡単なことだとは知らず、お手数かけました。_| ̄|○
おかげで助かりました。 >>481様
0483デフォルトの名無しさんNGNG
>>479
result_typeは何も修飾されていないので、foo内部で定義されていなかったとき、
次に探しに行くスコープを決定出来ないということでしょうか。
なんとなくではありますが納得出来ました。ありがとうございました。

std::unary_function<T, bool>::result_typeと書く方法は、同じことを2度書くことになるので、
std::unary_functionの中のtypedefをfooの中に持ってくることにします。
std::unary_functionを継承する目的は単純にtypedefだけなので、今回に限ってはこの方法でも
問題ないかと思います。
0484476じゃないけどNGNG
>>479
| 14.6 Name resolution
| 1 Three kinds of names can be used within a template definition:
| The name of the template itself, and names declared within the template itself.
| Names dependent on a template parameter(14.6.2).
| Names from scopes which are visible within the template definition.

テンプレートの定義内で使用可能な名前は以下の 3 種類である。
・テンプレートの名前自身、およびテンプレート自身の内部で宣言された名前
・テンプレートパラメータに依存した名前
・テンプレート定義時点で可視のスコープ内の名前
result_type はこれらのいずれでもないので使用不可能。
で、>>477 みたいにテンプレートパラメータに依存した名前にしてやれば使用可能。

…ってことで OK ですか?
0485デフォルトの名無しさんNGNG
>>483
そういうこと。
少し補うと、unary_function に対して与える引数が完全型であれば
(そもそも template でなければ)その記法で問題なく参照できるはず。

それとその種の再宣言には using declaration を使う。
同名の typedef でも構わないけれど。
0486デフォルトの名無しさんNGNG
細かいことだが
>>477も本来必要な typename キーワードが抜けている罠。
0487485NGNG
ちと訂正。テンプレート引数が完全型かって言い方は本質的じゃないし誤り含んでるね。
まあ要するに基底のクラステンプレートがその時点で実体化可能なら
その内部で定義されている名前も暗に利用できる、と。

>>484
お、リファレンスサンクス。
蛇足を書くと今の規格では
その時点で型名であることが不明瞭な場合は "typename" が必要と。

#ちなみに依存名について他のたいていの情報は明示的に指示することなく
#利用できるせいで良くも悪くも面白いことになるわけだが……
0488デフォルトの名無しさんNGNG
便乗して試してみたらこんな結果になりました。うーむ。
>>485
using declaration を使う場合ってどうなるんでしょうか。

#include <functional>
template <typename T>
// 1 - gcc 3.3.1 ok / BCC 5.5.1 ok
struct foo: public std::unary_function<T, bool> {
typedef typename std::unary_function<T, bool>::result_type result_type;
typedef typename std::unary_function<T, bool>::argument_type argument_type;

result_type f;
result_type operator()(const argument_type & arg) { return f; }
};

// 2 - gcc 3.3.1 ok / BCC 5.5.1 error
template <typename T>
struct foo2: public std::unary_function<T, bool> {
typename foo2::result_type f;
typename foo2::result_type operator()(const typename foo2::argument_type & arg) { return f; }
};

// 3 - gcc 3.3.1 error / BCC 5.5.1 error
template <typename T>
struct foo3: public std::unary_function<T, bool> {
using typename std::unary_function<T, bool>::result_type;
using typename std::unary_function<T, bool>::argument_type;

result_type f;
result_type operator()(const argument_type & arg) { return f; }
};
0489デフォルトの名無しさんNGNG
分割コンパイルでのクラステンプレートの書き方に関して質問なんですが

// test.h ここからヘッダファイル
export template <class T>
class X
{
private:
int kosuu;
T* ptr;

public:
X(); // コンストラクタ
~X(); // デストラクタ
void show(); // 表示関数
};
// ここまでヘッダファイル

// test.cpp ここから定義ファイル
#include <iostream>
using namespace std;
#include "test.h"

template <class T> X<T>::X(int a) { … }
template <class T> X<T>::~X() { … }
template <class T> void X<T>::show() { … }
// ここまで定義ファイル
0490デフォルトの名無しさんNGNG
// main.cpp ここからmainファイル
#include <iostream>
using namespace std;
#include "test.h"

int main()
{
X<double> x;
x.show();
return 0;
}
// ここまでmainファイル

上記の三つのファイルに対して

(1)これらをmake&コンパイルすると次のようなエラーが出る
Error: 外部シンボル 'X<double>::~X<double>()' が未解決
Error: 外部シンボル 'X<double>::X<double>(int)' が未解決
Error: 外部シンボル 'X<double>::show()' が未解決

(2)テンプレートにせずに具体的な型を指定(例えばint型の配列とする)
してやれば正常にmake&コンパイル出来る

(3)三つのファイルを一つにまとめてしまえば(もちろん余分な#include <…>は消して)
正常にコンパイル出来る

という状況です。(2),(3)から分割コンパイルにおけるテンプレートの文法のみが
おかしいのだとわかるのですが、どこを修正すれば良いのかわかりません。
どなたかご指導おねがいいたします。
0491デフォルトの名無しさんNGNG
すいません、環境を書くのを忘れてました。
Borland C++ Compiler を使用しています。
0492デフォルトの名無しさんNGNG
>>489-490
BCCはexportをサポートしてない。
0493デフォルトの名無しさんNGNG
>>488
2番目はなんか1番目と宣言の仕方が違ってないか? それじゃスコープ解決演算子付ける意味ないぞ。
3番目は……依存型の場合に using declaration で済ませると implicitly typename になっちゃうな。勘違いしてた。すまん。

>>490
bcc は export 命令に対応するようになったのか?
対応していなければヘッダに定義まで書いておいて inlucde するより他はない。
多重定義の問題はコンパイラ側が解決してくれる。
0494489-491NGNG
レスどうもです。

exportがサポートされていないコンパイラでは
このような分割は無理ということでしょうか。
そうするとコンパイラを変えるか
ヘッダファイルにまとめて書くしかないのですね。

どうもありがとうございました。
0495デフォルトの名無しさんNGNG
export をサポートしているコンパイラは未だに稀少なので、
export は使わないのがいいかと。
0496デフォルトの名無しさんNGNG
exportないと,どうしても循環依存せざるを得ないときに
ソースコードがとても汚くなるんですよね.
こういうとき皆さんどうしてます?(特にヘッダの宣言部分と実装部分の分け方)
0497デフォルトの名無しさんNGNG
1. 宣言部と実装部の間でインクルードする。
2. 1つのヘッダに書く。

のどちらかやね。
0498デフォルトの名無しさんNGNG
やっぱそれしかないんですね.ありがとうございます.
実装のヘッダーを別ファイルに分けている方って居ますかね?
boostでたまに.ippって拡張子を目にしたりするんですが・・・
0499デフォルトの名無しさんNGNG
>>482
えらく短い脚だな
0500デフォルトの名無しさんNGNG
>>493
> 2番目はなんか1番目と宣言の仕方が違ってないか? それじゃスコープ解決演算子付ける意味ないぞ。

foo2 は foo2<T> と同じなのでつければ依存型になって、名前の解決がインスタンス化時点になり、
基底クラスまで見に行くんじゃないかなーと思って試してみました。
| 14.6 6
| (略)
| The keyword typename shall always be specified when the member is referred to using a qualified name,
| even if the qualifier is simply the class template name.
ってなってて、Examples でも typename は必要だとなってますし。
0501デフォルトの名無しさんNGNG
C++ Builder 5を使っています。
ListView1にはvsReportでNUM,NAME,PATHの順にアイテムが入っているのですが、
ListView1->OnSelectItemイベントでサブアイテムの値にアクセスする方法がわかりません。
下のようにやってみたんですが、Strings[n]に何を入れてもNUMが帰ってきてしまいます。
何か勘違いしているでしょうか?

void __fastcall TForm1::ListView1SelectItem(TObject *Sender,
TListItem *Item, bool Selected)
{
Label1->Caption=Item->SubItems->Strings[1];
}
0502デフォルトの名無しさんNGNG
>>501
こっち
C++Builder相談室 Part8
http://pc2.2ch.net/test/read.cgi/tech/1070222674/l50
0503デフォルトの名無しさんNGNG
>>502
わかりました。
移動します。
0504デフォルトの名無しさんNGNG
保守
0505デフォルトの名無しさんNGNG
任意に与えられた自然数nに対して、n個のint型変数x[i]と正のint型の定数M[i] (0≦i≦n-1)
を用意して、各変数x[i]が0≦x[i]≦Max[i]を動くときの処理を考えたいのですが
どのように記述すれば良いのかわからず困っています。
例えばn=2ならば

for(int x[0]=0; x[0]<=Max[0]; x[0]++){
for(int x[1]=0; x[1]<=Max[1]; x[1]++){
f(x[0],x[1]); // ←処理を関数fで表した。 }}

ということです。n=3ならばfor文は三つになります。
これをnを初めに固定せずに書きたいのですが
そのときのforの入れ子(ネスト)の部分の書き方がわからないのです。

cin>>n;
int* ptr_x=new int [n];
int* ptr_Max=new int [n];
for(int i=0; i<n; i++){ cin>>ptr_Max[i]; }
// ここにforの処理を書きたい。

すみませんがどなたか教えていただけないでしょうか。
よろしくお願いします。
0506デフォルトの名無しさんNGNG
吉里吉里2をダウンロードしたのですが、どのプログラムで
開いてよいかわかりません。だれか教えてください。

ダウンロードページ
http://kikyou.info/tvp/
0507デフォルトの名無しさんNGNG
あっちのそれで開けばオッケー。
ゆでたまごに気をつけろ。
明日はきっと暴落するよ。洗面所が。
0508デフォルトの名無しさんNGNG
>>505
#include <iostream>

bool increment_counter(int n, int *counters, int *limits)
{
    for(int i = 0; i < n; i++)
        if(counters[i] < limits[i] - 1) {
            counters[i]++;
            return true;
        }
        else
            counters[i] = 0;
    return false;
}

bool initialize_counter(int n, int *counters)
{
    for(int i = 0; i < n; i++)
        counters[i] = 0;
    return n != 0;
}

int main()
{
    int n;
    std::cin >> n;
    int *ptr_x = new int[n];
    int *ptr_Max = new int[n];
    for(int i = 0; i < n; i++) std::cin >> ptr_Max[i];
    for(bool cond = initialize_counter(n, ptr_x); cond; cond = increment_counter(n, ptr_x, ptr_Max))
    ;// use ptr_x
}
0509505NGNG
>>508
ありがとうございます!
コンパイルしたら希望通りの結果になりました!

といっても実は内容はまだ理解できていないので
これからがんばろうと思います。
本当に助かりました。ありがとうございました。
0510デフォルトの名無しさんNGNG
win32のRGNDATA構造体のメンバBufferには
何をどう入れればよいのでしょうか?
「Specifies an arbitrary-size buffer that contains
the RECT structures that make up the region.」
と説明があるので、RECTのことだとは思うんですが、
それをメンバの
char Buffer[1];
に直す方法が分かりません。
0511デフォルトの名無しさんNGNG
COBOLしか分からないC初心者なんですが、
CとC++って、どっちを先に覚えるのが良いでしょうか?
0512デフォルトの名無しさんNGNG
>>510
この先プログラミングをみっちりとやっていくなら
Cからじっくり行ったほうが効率がいいと思います。
0513510と512NGNG
間違えて自分を諭してしまった・・。
0514デフォルトの名無しさんNGNG
>>511
どっちでも。
俺はC++を先にやるべきだと思うが、>>512のような意見も多い。
これだけ意見が割れるのは、どっちでも大差がない証拠かも試練。
0515デフォルトの名無しさんNGNG
>512
正しいようで正しくない。
OOPを学びながら進めていくべきだと思う。
0516デフォルトの名無しさんNGNG
むしろ、

 大丈夫な奴は、どんな学び方をしても大丈夫

 だめな奴は、どんなやり方をしてもだめ

な証拠。
ここで「学び方」を質問するような奴は、間違いなく後者。
0517デフォルトの名無しさんNGNG
>>510
環境依存 OK だから構わないけど、API スレで聞いたほうが回答でやすいんじゃない?
…と思ったが、むしろこっち向きかもしれない。
実は RGNDATA 使ったことないんだけどな。
おそらく不定長のデータを扱うときによく使われる方法だと思われ。arbitrary-size って不定長だし。
Buffer に何か値を設定するわけじゃないはず。
ttp://www.catnet.ne.jp/kouno/c_faq/c2.html#6

/* ↓のように余分な領域を確保しておいて… */
DWORD dwSize = sizeof(RGNDATAHEADER)+sizeof(RECT)*5;
RGNDATA *prgn = malloc(dwSize)
GetRegionData(hrgn, dwSize, prgn);

/* ↓のように Buffer を通してアクセスする */
for(i = 0; i < 5; i++) {
RECT *prc = (RECT*)&prgn->Buffer[sizeof(RECT)*i];
/* 適当に処理 */
}

実際には、dwSize の値は GetRegionData(hrgn, 0, NULL) で取得するらしい。
ttp://techtips.belution.com/ja/vc/0039/
0518デフォルトの名無しさんNGNG
配列でない変数 a0, a1, a2・・・ を
printfで表示したいのですが
配列を
for ( i = 0; i < 3; i++ ){
 printf ( "%d\n", a[i] );
}
とするように
ループで一気に表示する方法はありますでしょうか?
0519デフォルトの名無しさんNGNG
>518
そもそもどうして配列じゃダメなの?
0520デフォルトの名無しさんNGNG
>>518
無理。
変数の名前自体が似てようが1文字違いだろうが関係ない。
a, hoge, zzz を printf で(以下略)って言ってるのと変わらない。
0521デフォルトの名無しさんNGNG
>518
ちなみに俺なら配列を表示するプログラムを書くプログラムを書いて、それをコピペするね。
それじゃダメ?
0522デフォルトの名無しさんNGNG
>>518
ない
0523デフォルトの名無しさんNGNG
>>520
そこでPHPだよな。
0524521NGNG
すまそ、意味わからんかった。
その変数を用いて書くプログラムをCで書いて
それの実行結果をソースにコピペするって意味なんだけどわかる?
まさかa0〜a10程度じゃないよな。
それくらい普通に書けよな。
0525デフォルトの名無しさんNGNG
ないのですね。
ありがとうございました。
配列で実行します。
0526デフォルトの名無しさんNGNG
すいません。
もひとつCの質問です。
D\test0.text, D\test1.text 〜 D\test4.text 
というテキストファイルがあります。
for ( i = 0; i < 5; i++ ){
 fp[i] = fopen ( "D\\test[i].text", "w" );
}
という風に一気にファイルを開く方法はありますでしょうか?
エクセルのVBAですと " & i & " で出来たので
こっちはありそうな気がするのですが、どうでしょうか。

0527デフォルトの名無しさんNGNG
sprintf
0528デフォルトの名無しさんNGNG
文字列(半角10文字以下・dogなど)を10回入力、アルファベット順に表示させるものですが、これからどう作ればいいですか?読み込みとかが良く分からないです
/*読み込み*/
for(tate=0;tate<=kaisu;tate++){
for(yoko=0;yoko<=MAX;yoko++){
gets(moji);
moji[tate][yoko]=atoi(moji);
}
}
for(tate=0;tate<kaisu;tate++){
for(yoko=0;yoko<MAX;yoko++){
printf("%s",moji[yoko][tate]);
printf("\n");
}
}
}
/*ソート*/
for(i=0;i<kaisu;i++){
for(j=i+1;j<kaisu;j++){
if(moji[i]>moji[j]){
temp=moji[i];
moji[i]=moji[j];
moji[j]=temp;
}
}
}
/*表示*/
for(i=0;i<kaisu;i++){
printf("%s\n",moji[i]);
}
return(0);
}
0529510NGNG
>>517
どひゃ〜〜できました!助かりました。
GetRegionData()なんて知りませんでした。
丁寧な解説及びリンク、本当にありがとうございました。

0530デフォルトの名無しさんNGNG
>526
直接fopenじゃなくて
一度ファイル名を文字列にしてから
それをfopenで開くとうまくいくよ
0531デフォルトの名無しさんNGNG
>>526
>D\test0.text, D\test1.text 〜 D\test4.text 
>というテキストファイルがあります。
>一気にファイルを開く方法はありますでしょうか?

ない。

for ( i = 0; i < 5; i++ )
{
 sprintf( filename, "D\\test%d.text", i );
 fp[i] = fopen ( filename, "w" );
}

と、ちまちまやれ。
0532デフォルトの名無しさんNGNG
ollydbg1.06か1.07がDLできるサイト教えて
0533デフォルトの名無しさんNGNG
C初心者です、最後の三行が表示されません、どうすればいいですか
#include<stdio.h>
struct syain {
int num[2],sur[2];
char nam[2],hyo[2];
}sya;
int main(void)
{
int i;
for (i = 0 ; i < 3 ; i++)
{
printf("no >"); scanf("%d",&sya.num[i]);
printf("name >"); scanf("%s",&sya.nam[i]);
printf("salary >"); scanf("%d",&sya.sur[i]);
printf("point >"); scanf("%s",&sya.hyo[i]);
printf("\n");
}
printf("no name salary point");
printf("\n");
for (i = 0 ; i < 3 ; i++)
{
printf("%d %s %d %s", sya.num[i],sya.nam[i],sya.sur[i],sya.hyo[i]);
printf("\n");
}
return 0; }
0534533NGNG
すいません533は自己解決しました
スルーで
0535デフォルトの名無しさんNGNG
どなたかご教授ください。

VC++6.0 で作成したアプリにて、LoadImage()を用いてDLLファイルからIconを取得しています。
Logを解析すると、あるタイミングからNULLが返ってきてしまいアイコンハンドルが取れないそうです。
再現しないためGetLastErrorの内容を取得することもできません。
ちなみに動作環境はXPです。
メモリリーク、リソースリークを起こしていない事はリリース前に確認しました。

どのような要因が考えられるか分かる方いましたらお願いします。
0536デフォルトの名無しさんNGNG
>メモリリーク、リソースリークを起こしていない事はリリース前に確認しました。
これがどれだけ信用できるのかね。

それはともかく、メモリ破壊してない?
0537535NGNG
>>536
メモリ破壊してないとは断言できないです・・・。
0538623NGNG
VC++6で、コンパイルして作ったDOS実行ファイルをクリックすると一瞬で終わっちゃう。
cout << "何か入力すると終了します。\n";
cin >> a;

以外で、実行結果を見た後終了する方法ないですか?
VC++6の!ボタンを押して確認する以外の方法で
0539デフォルトの名無しさんNGNG
>>538
1.コマンドプロンプトから実行する
2.cin>>a;じゃなくてcin.ignore();を使う
0540デフォルトの名無しさんNGNG
>>539
system("pause");
0541デフォルトの名無しさんNGNG
>527, >536, >531

どうもありがとうございました。
0542デフォルトの名無しさんNGNG
別スレでこちらで質問したら?と誘導されてきました。
windowsで、
外部からある一定の音量を感知したら任意のプログラムをキックする
ようなプログラム
ってどうやって作ったらいいですか?
バックグラウンドで動いてて必要なら別アプリを起動する、とか
あるポートにメッセージを送るとかを行いたいんですが。

0543デフォルトの名無しさんNGNG
>>542
「一定の音量を感知」するのはどうやってやるんだ?
0544デフォルトの名無しさんNGNG
マイクを監視すればいいんじゃない?
方法は知らないが、
DirectX のマニュアルでも読めば分かるんでないかい?
0545デフォルトの名無しさんNGNG
>>543,544
>「一定の音量を感知」するのはどうやってやるんだ?
>マイクを監視すればいいんじゃない?
>方法は知らないが、
そうです。まさにそこが分からないところなんです。
つまり肝心なところがさっぱりで・・・。

とりあえずDirectXのマニュアルを読んでみます。
0546デフォルトの名無しさんNGNG
もう少し広い範囲でやりたいなら低レベルオーディオAPIを使うとか
0547デフォルトの名無しさんNGNG
>>545
そんな用途ならMMEの方が単純で扱い易いかも。
waveInほにゃららで、全サンプル値をチェック。
0548デフォルトの名無しさんNGNG
ちょっと聞きたいんですけど、
VC++.NETで、別ファイルにinline関数を書くことはできませんか?

//function_hoge.cpp
inline void hoge(void)
{
//処理
}

//main.cpp

inline void hoge(void);

int main(void)
{
  hoge();
}

外部参照が解決されてないとか言われます。
0549デフォルトの名無しさんNGNG
>>548
inline関数はヘッダに書くべし
0550デフォルトの名無しさんNGNG
>548
inlineの意味、解ってる?
0551デフォルトの名無しさんNGNG
>>548
外部リンケージとinlineの組み合わせは文法違反です。
後は>>549さんの言われる通り。

但しinline関数はアドレスを取る事ができます。考えて
みれば奇妙な仕様だな。
0552548NGNG
>>549
こういうことですか?

//hoge.h
inline void hoge(void);

//hoge.cpp
void hoge(void)
{/*処理*/}

>>550
いちいちコードを呼び出すのではなく、
呼び出されているところに、コードを直接埋め込んでしまうんですよね?

>>551
すみません。ちょっと意味が分かりません。
別ファイルのインライン関数を呼び出せないということ?

>但しinline関数はアドレスを取る事ができます。
えっ、じゃあ、コレが合法?

  inline void hoge(void)
{/*処理*/}

int main(void)
{
  void (*Phoge)(void);
  Phoge = hoge;
  Phoge();
}
0553550NGNG
コードはコンパイル時に生成される。
コンパイル時に実体が無いものをどうやって埋め込めと?

Effective C++読め。
0554535NGNG
レスを下さった方、ありがとうございます。
続きですが、ツールを用いて
ハンドル数・スレッド数・GDIオブジェクト数の数が一定の処理の前後でリークしないことは確認しました。
その他、確認すべき点ありますか?
また、メモリ破壊についてですが、どのように発見できますでしょうか?
どなたかご教授お願いします。
0555デフォルトの名無しさんNGNG
>>552
別ファイルのインライン関数は呼び出せないのが基本。但し
多くのコンパイラはinlineにexternがついているとinline化を
やめてしまって通常の関数として扱い、表面上は通って動く
のでややこしい。

上のサンプルのインライン関数のアドレスを取っているのは
内部リンケージを持つ場合は秘かに関数の実体を作ってそ
れを呼び出す。外部リンケージの場合は上記のようにコンパ
イラによって挙動が異なるが原則的に禁止。
0556デフォルトの名無しさんNGNG
>>552
C++FAQ第2版に次のような記述を見つけた。(P189)

「inline関数が使われているソースファイルには、そのinline関数
の定義が含まれなくてはいけない。」

つまり基本的には他ファイルのinline関数を呼び出す必要は
なくなるはずなのだ。
0557デフォルトの名無しさんNGNG
>>554
問題が起こる環境がXPなの?
0558535NGNG
>>557
ええ。正確にいいますとエンベデット版で必須コンポーネントのみで構築したXPなんです。
それも現象が発生したのは一度(exeを終了するまでは何度も)きりで再現してくれないんですよ。
ですからLoadImageでNullが返ってきてしまうような状況に陥る要因が教えていただけたらなと思った次第です。
0559548NGNG
>>550
いい機会だから読んでみようかな。

>>555-556
どうもありがとうございます。勉強になりました。
0560デフォルトの名無しさんNGNG
復活記念あげ
0561デフォルトの名無しさんNGNG
とんだログいる?
591まで保存してある
0562デフォルトの名無しさんNGNG
別に議論してるわけでもないし、問題ないと思うな。
質問(or回答)が消えたやしは再質問すればいいかと。
0563デフォルトの名無しさんNGNG
んじゃ、そういうことで
0564デフォルトの名無しさんNGNG
コールバック関数処理中に
同じコールバック関数を呼び出すイベントが発生した場合というのは
前回呼び出された際の処理が完了していなくても
コールバック関数の処理は走ってしまうんでしょうか?
0565デフォルトの名無しさんNGNG
すみません、C/C++ に限ったことじゃないのですがわかる方お教えください。

fgetc() で読み出すのと fputc() で書き込むのではかかる時間は同じでしょうか?
HDD 上の大きいサイズのファイルを扱う場合、読み出しと書き込みの速さに差はないものですか?
同じサイズでも書き換えるよりも単純に読み出すだけの方が速いように思うんですが。
0566デフォルトの名無しさんNGNG
>>565
クラスタサイズやOSやハードディスクに大きく依存するが、通常
は書き込みの方がコストが高いと思われ。ファイルサイズが増大
する可能性があるし、その結果ファイルが分断される可能性もあ
る。

シーケンシャルアクセスとランダムアクセスとでも大きく差が出る。
ランダムアクセスは読み書きにほとんど差がないかもしれない。
0567デフォルトの名無しさんNGNG
質問です。
今までVC++で開発を行って居たのですが
急遽Linuxで開発を行わなければならなくなりました。

それで、全くmakeファイルとか書けないので手も足も出ない状態なのですが
自動的に作成してくれるAutoconfと言うツールを知りました。
それで、
autoscan
autoconf
./configure
までやったのですが、makeファイルが作成されません。
ちなみに、makeしたい対象のファイルは
main.cpp、NET_SET.cpp、header.h、NET_SET.h
です。
どうかご教授ください。
0568565NGNG
>>566
お答えありがとうございます。
ファイルサイズを知る簡単な方法として
while (fgetc(fp) != EOF) l ++;
が現実的かどうか疑問に思ったんです。
0569デフォルトの名無しさんNGNG
質問させてください。

c言語でlong以上の数を扱うにはどうしたらよいのですか?
1024bitや4096bit超の数をあつかいたいんです。
「bit 自由に設定 c言語」「bit 自分で決める c言語」などを
キーワードとしてぐぐったのですが、
出てきたサイトでは問題が解決しませんでした。

あと、べき乗をするときは^ではだめなのですか?
こちらは、math.hとpowで解決しましたが、
^が駄目な理由がわかりません。

よろしくおねがいします。
0570デフォルトの名無しさんNGNG
>>569
処理系に大きく依存。_int64とか_INT64とかlong long int(C99)
が使えないか?

べき乗に^が使えない理由?それは^がCではビット毎のXOR
演算子と定義されているからです。
0571デフォルトの名無しさんNGNG
おっとっと。1024bitや4096bitか。そいつはCでは扱いにくいな。
C++で多倍長クラスを使うと楽。ぐぐったらいっぱい落ちてる。
0572デフォルトの名無しさんNGNG
>>569
CならGMPっていうライブラリがある。ぐぐってみれ。
0573デフォルトの名無しさんNGNG
>>569
ちょっと検索の仕方が経たみたいなのでアドバイス
やりたいことは非常に大きな整数を扱うことだと思います
bitを自由に設定するというのはその解決方法の一例に過ぎません
こういうときは具体的な解決策で検索するのではなく、
やりたいことで検索すればいいと思います

ちなみに「C言語」と検索するよりも「C」のほうがいいと思います

模範検索例
「C 非常に大きな整数」
・ここで「RubyはCと違って組込みの多倍長整数機能があるので,非常に大きな整
数の演算も可能」という情報を入手
 自分の求めている機能の名前が「多倍長整数機能」であることを知る

「c 多倍長整数」
・いろんなライブラリにヒット
0574デフォルトの名無しさんNGNG
>>568
最初の質問の内容とやりたいことが激しく一致してないと思われ
とりあえず言えることは「そんな方法は現実的ではない」
ファイルサイズが2Gとかだったらどうするんだ?
調べようとしているファイルの格納先がFDDだったり
ネットワークドライブだったりしたら?
0575デフォルトの名無しさんNGNG
>>568
fseek(fp,0,SEEK_END);
filesize = ftell(fp);
2G超えるのにも対応したいならシステムコール使え。
0576565NGNG
>>574
ご指摘ごもっとも。
ローカル HDD 上のファイルを暗号化することを想定していました。

>>575
それ簡単でいいですね。2G はさすがに超えないと思います。
ありがとうございます。
0577デフォルトの名無しさんNGNG
ぼるじょあがC/C++の宿題を片づけますYO! 21代目
http://pc5.2ch.net/test/read.cgi/tech/1078157730/415から来ました。

【宿題】 マウスで操作できるキーボードプログラムを作れ
多分、ボタンを26個くらい配置してボタンを押したら [A]を押したキーボードの
イベントを発生させると思うんですが。
あと、その「キーボードを押した」ということがメモ帳とかに伝えられなかったら
意味ないですよね?
0578デフォルトの名無しさんNGNG
>>577
向こうで「環境書け」と言われてるだろ。書け。
0579デフォルトの名無しさんNGNG
aaa,
Windowsでよろしくおながいします
0580デフォルトの名無しさんNGNG
君、おもしろいね
0581デフォルトの名無しさんNGNG
>>577
よくわかんないけど、伝えられなかったら意味ないな。
0582569NGNG
みなさんありがとうございました。
「多倍長クラス gmp」で検索してHPを見ていったら問題が解決しました。
また、疑問が出てきたら質問させてください。
お世話になりました。
0583デフォルトの名無しさんNGNG
>>567 GUI 使うとしたら、kdevelop とかかな。
autoscan とかやってみたけど、手直ししないと無理だと思う。分かりません。
ファイルが 4 つとかなら、autoconf 覚えるよりも、Makefile 書いたほうが楽。
------
target : main.obj NET_SET.obj
    g++ -Wall main.obj NET_SET.obj -o target
main.obj : main.cpp header.h
    g++ -Wall -c main.cpp -o main.obj
    @mkdir -p old/`date +"%y%m%d%k%M"` 2>/dev/null
    @cp main.cpp header.h old/`date +"%y%m%d%k%M"/
NET_SET.obj : NET_SET.cpp NET_SET.h
    g++ -Wall -c NET_SET.cpp -o NET_SET.obj
    @mkdir -p old/`date +"%y%m%d%k%M"` 2>/dev/null
    @cp NET_SET.cpp NET_SET.h old/`date +"%y%m%d%k%M"/
clean :
    rm -f main.obj NET_SET.obj
------
cpp と、include してる h を一緒に書く。コマンドの行(g++,@ ,rm の行)の先頭はタブ
@ で始まってる行はバックアップつくってるだけ。コンパイル作業とはあまり関係ない。
ちゃんと書こうと思ったら、ttp://www.oreilly.co.jp/BOOK/make/ とかいいと思う。
0584デフォルトの名無しさんNGNG
>>576
>ローカル HDD 上のファイルを暗号化することを想定していました。
>2G はさすがに超えないと思います。

明からに越える可能性ありだろ。
0585デフォルトの名無しさんNGNG
>>583
THXです。
ただ、
g++ -Wall main.obj NET_SET.obj -o target
g++: main.obj: No such file or directory
g++: NET_SET.obj: No such file or directory
g++: No input files specified
*** Error code 1
という感じでエラーが出ました。
コードのコンパイルは成功してるっぽいんですが・・・・
0586六拾NGNG
>>585
.objを.oにしる。
0587デフォルトの名無しさんNGNG
ちなみに、そのディレクトリにmain.objもNET_SET.objも出来上がってます。
0588デフォルトの名無しさんNGNG
>>586
え〜と、
makeファイルのobjを全てoに変えてみたんですが
それでも同じエラーが出ました。
一部だけ変えるんでしょうか?
0589デフォルトの名無しさんNGNG
>>576

典型的 C Programmer's Diseaseハケーン!!
最大値勝手に決めるのハゲシクイクナイ!!!
0590デフォルトの名無しさんNGNG
う〜ん、、、
やっぱり変えてみても

g++ -Wall -c main.cpp -o main.o
g++ -Wall main.o NET_SET.o -o target
g++: main.o: No such file or directory
*** Error code 1

こうなりますね。
0591583NGNG
>>590
いったん、make clean するか、手動で obj ファイル削除してから、
手動で
g++ -Wall -c NET_SET.cpp -o NET_SET.obj
g++ -Wall -c main.cpp -o main.obj
g++ -Wall main.obj NET_SET.obj -o target
やるとどう? どこでエラーがでる?

それと、適当に書いちゃったけど、
main.cpp と header.h , NET_SET.cpp と NET_SET.h って組合せでいいの?
あと、ファイルとかディレクトリの書き込み権限とか、基本的なことはわかってます?
ls -l と、ls -d . の出力で確認。
わかってなかったら、http://pc3.2ch.net/test/read.cgi/linux/1079676217/1
0592デフォルトの名無しさんNGNG
>>591
手動でやると、何故か上手く行きました。
組み合わせもあってます。
あと、権限はmakeの時だけ一時的にsuユーザーになってるので問題ないはずです。
0593デフォルトの名無しさんNGNG
CXX=g++
CXXFLAGS=-Wall
LDFLAGS=

all: build

build: main.o NET_SET.o
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o target

main.o: main.cpp header.h
$(CXX) $(CXXFLAGS) -c -o main.o main.cpp

NET_SET.o: NET_SET.cpp header.h
$(CXX) $(CXXFLAGS) -c -o NET_SET.o NET_SET.cpp
0594デフォルトの名無しさんNGNG
NET_SET.o: NET_SET.cpp header.h
じゃなくて
NET_SET.o: NET_SET.cpp NET_SET.h
0595デフォルトの名無しさんNGNG
オブジェクトファイルとヘッダファイルの依存関係は
makedepend を使ったほうが楽じゃないかな。
0596583NGNG
>>592 とりあえず、おめでとう。
make -n で処理のコマンドが表示されるから、
>>591 と見比べたりとかして、Makefile の書いてみて下さい。
info コマンドで make を調べたり、ネットや本で調べたり
>>593-594 みたいなレスもついてるし。(build: の下の行…)

あと、root 権限での make は危険なのでなるべくやらないほうがいい。
make install とか、そういった絶対に権限が必要な時だけに。
@rm -rf / とか書いてあったりすると、システムごと…
やらなきゃならない時でも、必ず make -n で確認すること。

>>595 makedepend つかったほうが楽なんだろうけど、
とりあえず、いちばん簡単な Makefile の書き方を覚えたほうがいいかと。
まだ、依存関係を把握できなくなるほどのファイル数でもないし。
0597デフォルトの名無しさんNGNG
>>596
今になって気づいた。
オブジェクトファイルが指定されていないなw
0598576NGNG
>>584, 589
ご指摘ありがとうございます。
素直に stat() 使っときます。
0599デフォルトの名無しさんNGNG
はじめまして。まったくの初心者です。これからC言語勉強しようと思うのですが初心者に向いてるソフトってあるでしょうか?あったら教えてください!本格的なものがいいです。
0600デフォルトの名無しさんNGNG
>>599
タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/
0601デフォルトの名無しさんNGNG
本格的じゃないCのコンパイラというのはどんなコンパイラだろうか…
0602デフォルトの名無しさんNGNG
組み込み系とかのシンプルな奴じゃねーの
0603デフォルトの名無しさんNGNG
というか開発環境について聞いてるような気がする。

まさかと思うが、タイピングソフトのノリで
C言語学習ソフトみたいなものを期待してるか?
0604デフォルトの名無しさんNGNG
まったくの初心者ならひまわりとかからはじめてみたら?
0605デフォルトの名無しさんNGNG
#include <windows.h>
int main(void)
{
while(1)
{
Sleep(100);
//if(kbhit())getch();//バッファにたまらないように 入れても音はなる
}
return 0;
}

上のプログラムで、ただキーを押しただけでジーっと音が鳴ってしまいます。
scanfやfgetsなどの時に、入力のためにキーを押している時も同じ音が鳴ります。
いろんなサイトに乗っている、入力を受け、それを表示するような簡単な
ウィンドウズアプリケーションでは音はなりません。
scanfやfgetsの時は入力したものが使われているのでまだ分かるのですが、
上のプログラムは特に使われていないのに音がなるのがわかりません。
ならなくなる方法があったら教えてください。又はなぜなってしまうのでしょうか。
今まで気づかなかったのですが、パソコンを修理して音が静かになり気づきました。
0606デフォルトの名無しさんNGNG
>>596
レスありがとうございます。

色々やってみたんですが
どうやら、出来上がったファイルが
main.o?とか?が付いちゃうのが原因みたいです。
なので、makefileのリンクする場所でmain.o?とやる事で解決出来ました。
ただ、なんだか気持ち悪いのは確かです。
それと出来上がったtargetも?が付いてます。
0607追記NGNG
改行部分をLF(UNIX形式)にすることで解決しました。

なんで、今まで気付かなかったんでしょうか(笑

では、どうもありがとうございました。
0608デフォルトの名無しさんNGNG
>>605
>ジーっと音が鳴る
これはノイズなの?それともBEEP音(懐かしい…)なの?
0609デフォルトの名無しさんNGNG
>>605
音なんかしねーじゃん。
0610デフォルトの名無しさんNGNG
>>605
「ジ〜」とか鳴るのかな。
なんにせよあなたのハードウェア固有の現象と思われ。

ちなみにうちのノートはUSBに一定以上の電圧がかかると電源周りが「ジ〜」と鳴く。
0611605NGNG
int main(void)
{
while(1)
;
return 0;
}

何の音なんでしょう。BEEP音ではないけど、>>610さんの電圧音かな。
上のプログラムでも同じ音が鳴るから、CPU率が高いとかが原因なのかも。
0612デフォルトの名無しさんNGNG
>>611
やってみたけど何も鳴らないよ。
0613605NGNG
>>612
うーん、パソコンが壊れているのかな・・。

パソコン2台あるのですが、起動音が大きいデスクトップのは聞こえないが、
静かなノートのは聞こえるので、どのパソコンでもその音はなっているが、
静かなパソコンで無いと聞こえないと思ったり。

テキストベースのゲームをコンソールアプリケーションで作るのですが、
この音が気になってわざわざウインアプリで作らないといけないと思うと
夜も眠れません。
0614デフォルトの名無しさんNGNG
>>613
だったら、getch より低レベルの関数を作ればよい。
実際、昔はそうやっていた。
0615デフォルトの名無しさんNGNG
どこから「ジ〜」と音が鳴るのかが重要だと思われ
ディスプレイ?スピーカー?CPUファン?電源FAN?

コンソールアプリのみで鳴ると言うことを考えると以下の可能性が考えられる

コンソールで画面を最大化していて、
コンソールの解像度やリフレッシュレートが特殊で、
ディスプレイから音が漏れる

っていうか、もうちょっと詳しくレポートしないと解決できんぞ
コマンドプロンプトとMS-DOSで動作の違いが出るかとか、
WindowsとLinuxで比較してみるとか、いろいろあるんだが名
0616デフォルトの名無しさんNGNG
これは便利な仕様ですね!!
何の命令も打たずに勝手に音がなるなんて!!
0617605NGNG
>>614
インアセとかでやるのかな。探してみます。

>>615
音が鳴る位置は、どこかはうまく説明できないけど、
普通の起動音が鳴る位置と同じです。

コンソールアプリケーションを実行したとき、MS-DOSを実行したとき
共に動作は同じで、通常サイズ、フルスクリーン時も共に同じです。

マシンによるのは、ウィンしか持っていないので分からない。

>>616
ワラタ
0618デフォルトの名無しさんNGNG
>>605
念のため複数のマシンで試したけどどれも音せず
君のマシンはマザーボードがちゃちで、音源ボード/チップがノイズがを拾ってるんでしょ
夜も寝られないくらいならPC買い替えな
0619デフォルトの名無しさんNGNG
かつてこれほど環境依存な質問があったろうか…
0620デフォルトの名無しさんNGNG
環境依存ではあるけど、よくある話。
プログラムを走らせるとCPUとかバスのノイズを
どっかで拾って音が出てしまうだけ。
熟練するとその音で何のプログラムが走っているかを判断できるとかいう
ジョークだかなんだかもあった。
0621デフォルトの名無しさんNGNG
>>620
大昔のFM-77でそういう現象があったな。
共有メモリにアクセスすると「ギューギャー」と鳴いた。
0622デフォルトの名無しさんNGNG
MSX使ってたリアル厨房のころは
カセットテープのピーガー音でMLOADかCLOADかLOADかを
聞き分けてたなぁ。
0623デフォルトの名無しさんNGNG
>>617
>インアセとかでやるのかな。探してみます。
アセンブラなぞ使わずとも、ポートを叩くだけで済む筈。
適当にポートをいじれば Windows が勝手にエミュレーション
してくれると思う。
0624デフォルトの名無しさんNGNG
私のPCはUSBのラインがサウンドのラインと交錯してたので
マウスを動かすとぎゅもぎゅも音が鳴ってた。
今はラインを整理してシールドしてやったので静か。
0625605NGNG
復活お疲れ様。

>君のマシンはマザーボードがちゃちで、音源ボード/チップがノイズがを拾ってるんでしょ
音が静かで説はまったくの的外れだったのですね。

>夜も寝られないくらいならPC買い替えな
ぐっすり寝ちゃってましたw。
何回も故障しているマシンでもあるから、ホント買い換えたいんですけど。

>>619
ワラ

>>623
勉強になります。探してみます。

>今はラインを整理してシールドしてやったので静か。
うちのでもできるかな。探してみます。

基本的にちゃんとしたマシンなら鳴らないみたいなので、
我慢してそのまま制作を続けます。
お答えいただいた方、ありがとうございました。
0626デフォルトの名無しさんNGNG
質問です。
FreeBSDでg++で開発を行ってるんですが
>implicit declaration of function `int close(...)'
って出るんですが、close()ってどれをインクルードすれば良いんでしたっけ?

0627デフォルトの名無しさんNGNG
>>626
man close で出てこない?
Linux だけど、unistd.h って出てきた。
# 昔 BSD インストールしたけど挫折した。(笑)
0628デフォルトの名無しさんNGNG
>>627
おお!THX!です。
unistd.hでした。
0629デフォルトの名無しさんNGNG
>>626
find /usr/include -name '*.h'|xargs grep -wl close /dev/null

close()だとコメントにもマッチしそうだけど、結構この手は使ってる。
0630デフォルトの名無しさんNGNG
初心者的質問で申し訳ありません。
日本語のコードについて調べていたら、

MSDNのヘルプは「unicode」=「ワイド文字」、「シフトJIS」=「マルチバイト文字」と言い替えてます。
MSは勝手だ。と思っていたらLinuxのマニュアルでもこのような言い替えをしているんです。
素直に「これはunicodeだ」とか「シフトJISだ」とか呼べば良いのに、意味が分かりません。

それからunicodeからシフトJISには
WideCharToMultiByte()とwcstombs()の2種類があるのですが、
なぜ2種類もあるのですか?

よろしくお願いします。
0631デフォルトの名無しさんNGNG
>>630
>MSDNのヘルプは「unicode」=「ワイド文字」、「シフトJIS」=「マルチバイト文字」と言い替えてます。
>MSは勝手だ。

MSが付けたもんじゃねぇだろ。
もっとよく調べろ!タコ!

ワイド文字    → コード長固定
マルチバイト文字 → コード長1バイト以上

と言う違いがある。

ちなみに、

>「unicode」=「ワイド文字」、「シフトJIS」=「マルチバイト文字」

と言う方程式ではなく、それぞれの代表的なコード体系と言うだけの事。
0632デフォルトの名無しさんNGNG
ワイド文字⊃unicode
マルチバイト文字⊃シフトJIS
0633デフォルトの名無しさんNGNG
なるほど、シフトJISとJISはマルチバイト文字の仲間で、
unicodeはワイド文字だけど、ほかに有名なコードが今のところない。
ということなのですね。

MSは勝手だと最初思い込んだのはいろんな人が悪口ばかり言ってるからです…
0634デフォルトの名無しさんNGNG
すいません初歩的な事で恐縮ですが
CPPファイルのトップのほうでヘッダーと共に
定義されている#ifdef_DEBUG
の行って何の為にあるんでしょうか?消したらまずいですか?
デバッグできなくなる とか?
0635デフォルトの名無しさんNGNG
>>634
>定義されている#ifdef_DEBUG
>の行って何の為にあるんでしょうか?消したらまずいですか?

そのソースを書いたヤツに聞け。

# ソースに書いてあるのは、何らかの意図を持って人が書いたもの。
# 真偽のほどは書いた人にしかわからない。

## 恐らく、デバッグ用とリリース用を分けるためのものだろうがな。
0636デフォルトの名無しさんNGNG
>>635
書いた人ってのが僕なんすよ
つかスケルトンで勝手にかかれちゃうみたいです
要はあってもなくてもOKっていうことですねえ
コメントにしても問題なくコンパイルとデバッグできてます
0637デフォルトの名無しさんNGNG
>>363
っていうかプリプロセッサの勉強汁!
0638デフォルトの名無しさんNGNG
プリプロセッサとは?
0639デフォルトの名無しさんNGNG
もしもボックスのようなもの。
0640デフォルトの名無しさんNGNG
>>639
では そこにコードかけば
原因不明の解析不能メモリリークもいっぱつ解決ですね
0641デフォルトの名無しさんNGNG
どんなに便利なアイテムものび太が使えば大失敗。
0642デフォルトの名無しさんNGNG
俺はのび太君でおまいらはドラえもん
困ったときは便利な頭脳でたすけてくーれるー
不思議なネットでたすけてくーれるー

あんあんあん とっても大好き 2ちゃんねらー
0643デフォルトの名無しさんNGNG
>>631
C/C++スレとしてすれ違いに成ってしまうが、スマン、漏れにも教えてくれ。
コード長固定ってなんですか?
unicodeって文字のバイトが平仮名で2バイト、漢字で3バイトになったり
可変長ってきいたんだけど
0644デフォルトの名無しさんNGNG
Unicodeにしろマルチバイト文字にしろ2byte長固定じゃないのか?
0645デフォルトの名無しさんNGNG
ちがいます
0646デフォルトの名無しさんNGNG
>>643
unicodeを内部表現として扱いたいときは、固定長で扱うと便利。
MSでは2バイトで扱うucs2というのが標準的。
4バイトのucs4というのもある。

外部に出力するために長さを圧縮したいときは、
utf-8というフォーマットに変換して可変長にすることが多い。
(日本語が主体だと逆に大きくなることもあるけど)
0647デフォルトの名無しさんNGNG
>>643
可変長だとワイドキャラクタにはなりえないので、
その場合は、マルチバイトとして扱うしかないです。

ワイドキャラクタは必ず固定長で、一文字の大きさは環境依存です。
VCでは2バイトです。

ワイドキャラクタで使うキャラクタセットは環境依存です。
VCでは、2バイトユニコードです。
0648デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
printf("\160,%c",128);
return 0;
}
8進法の160と10進法の128は同じですよね?しかしこの場合、違う値が表示されるのはなぜですか?
ご指導お願いします。
0649デフォルトの名無しさんNGNG
>>648
>printf("\160,%c",128);

printf("%d, %d", 0160, 128);
のつもりか?
0650デフォルトの名無しさんNGNG
160 (8進) = 8^2 * 1 + 8^1 * 6 + 8^0 * 0 = 64 + 48 = 112
0651デフォルトの名無しさんNGNG
>>650
さんありがとうございます。112ですたね!!うっかりしてました。
>>649
なに言ってんのおまえ?氏ねよ。
0652デフォルトの名無しさんNGNG
これからプログラミングをしたいのですが、C#でやろうと思ってます。
オススメな参考書があったら教えてください。
0653デフォルトの名無しさんNGNG
確かに>>649の言ってることは頓珍漢だが>>651の態度は人間としてどうかと思う。
こういうのを見ると、2chなら何でもありだと思ってる馬鹿が増えたとづくづく感じるなあ。
0654デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
printf("\160,%c",128);
return 0;
}
8進法の160と10進法の128は同じですよね?しかしこの場合、違う値が表示されるのはなぜですか?
ご指導お願いします。
0655デフォルトの名無しさんNGNG
>>651
犬でもわかるCプログラミング
まぢおすすめ
>>652
スレ違いです。
0656649NGNG
>>651
128を"%c"で表示させるという発想が理解できなかったから
つい頓珍漢な事を言ってしまった.スマソ.
0657651NGNG
>>656
いいから氏ねよクズ
二度と書き込むな。
0658649NGNG
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんなエサで俺様がクマ――!!
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
                               (´⌒; (´⌒;;;
0659デフォルトの名無しさんNGNG
>>654
>printf("\160,%c",128);

printf("%d, %d", 0160, 128);
のつもりか?
0660デフォルトの名無しさんNGNG
質問です。
LSI C-86 試食版使用。windowsXP
#include <stdio.h>
#include <math.h>

void main(void);

void main(void)
{
double x,y;

x = 1.44;

y = sqrt(x);

printf("%f",y);
}
これを実行しようとしてもundefine symbol sqrt_と出て実行できないのは
何がいけないんですか?
0661デフォルトの名無しさんNGNG
C初心者だけどメイン関数にプロトタイプ宣言いるの?
0662sageNGNG
いらない。
分かりやすいように書いただけです。
0663デフォルトの名無しさんNGNG
>>661
いらない。
他から呼び出されないから。
0664デフォルトの名無しさんNGNG
なんか、ワロタw

sqrt()って、あれ使わなきゃいけないんじゃなかった?
0665デフォルトの名無しさんNGNG
>>660
sqrtが入っているライブラリをリンクさせる。
0666660NGNG
>>665
リンクは自動的になると書いてあるのですが
0667デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
printf("\160,%c",128);
return 0;
}
8進法の160と10進法の128は同じですよね?しかしこの場合、違う値が表示されるのはなぜですか?
ご指導お願いします。
0668デフォルトの名無しさんNGNG
■よく聞かれる質問と回答
http://www.lsi-j.web.sh.cwidc.net/freesoft/index_2.html
0669デフォルトの名無しさんNGNG
>>666
もしかして_lcc.defに-intlib.libなんて書いてない?
0670デフォルトの名無しさんNGNG
>>666
じゃね、逆だ、-lmathlib.lib が抜け落ちているとか。
0671デフォルトの名無しさんNGNG
>>668
>>670
その通りでした。理解できました。ありがとうございます。
0672デフォルトの名無しさんNGNG
FreeBSDでtime()関数を使いたいんですが
time_t *nowtime;
time(nowtime);
printf("time---%d\n", nowtime)
って感じで書いたのですが
常にnowtimeは0になってます。
どうすれば今の時間を取得出来るのでしょうか?
0673デフォルトの名無しさんNGNG
printf()のところ*nowtime
ね
0674デフォルトの名無しさんNGNG
>>672
time_t nowtime;
nowtime = time(NULL);
printf("time---%d\n", nowtime);
0675デフォルトの名無しさんNGNG
time()以前に、ポインタについて理解していないのが・・・
0676デフォルトの名無しさんNGNG
>>672
つーかよく落ちなかったな。
あと%dで表示するならnowtimeはintにキャストして渡せよ。
0677672NGNG
>>674
THXです。
出来ました。

>>675
スマソ
>>673は俺です。
書いてるコードではちゃんとやってますw

>>676
はい。
0678デフォルトの名無しさんNGNG
>>677
>スマソ
>>>673は俺です。
>書いてるコードではちゃんとやってますw
いや、君、ポインタをまったく理解してないw

0679675NGNG
>677
全然理解してないから
 xxx = time(NULL);
ではなく
 time(xxx);
という形式で取得できないんだよ。
0680デフォルトの名無しさんNGNG
単純ににtime()の返す仕様を理解してないだけじゃないの?
ポインタを返すかどうか知らなきゃポインタ理解してても>>672見たいな事するでしょ
0681デフォルトの名無しさんNGNG
ん?
time()のプロトタイプってどんなんだっけ?
戻り値も、time(HOGE)のHOGEも同じだと俺は思ってたが・・・
どうやら違うようだな
っていうか、
0682デフォルトの名無しさんNGNG
>>678
いや、ポインタに関してはあってるだろ
問題は、値の入る場所 だ
0683デフォルトの名無しさんNGNG
念のため>>678が勘違いしてるとアレなので説明しとくが
time()の()の中はポインタの値ではなく、ポインタが入るんだぞ?
0684デフォルトの名無しさんNGNG
>>672の一行目が
time_t t, *nowtime = &t;
みたいになってたら、ちゃんとわかっていると言えるが
その場合「*nowtimeが常に0」とはならず、こんな質問をするわけがない。
0685デフォルトの名無しさんNGNG
timeのプロトタイプは
time_t time(time_t *timer);
0686デフォルトの名無しさんNGNG
ポインタの値とポインタの区別がつきません!
0687デフォルトの名無しさんNGNG
>>672-673を見る所

time()の()の中にアドレスを指定すれば時間を入れてくれると勘違いしたと思われ

で
time_t *nowtime;//ポインタ宣言して
time(nowtime); //ここでアドレスに時間入って
printf("time---%d\n", *nowtime); //アスタリスクつけて値を表示

って考えたんだろ

0688デフォルトの名無しさんNGNG
もし万が一>>687の通りなら、
理解していないのは「ポインタ」ではなく「呼び出し規約(値渡し)」だな。
もちろん、これもどんな入門書にも書いてある。
0689デフォルトの名無しさんNGNG
>>683
モチツケ
落ち着いて自分の文章見ると凄く面白い事書いてる事に気づくと思うぞ。
俺は俺だ くらいのノリだ
0690688NGNG
と書いてはみたものの、これも意外によくわかってない人もいる。
char *p;に対して
p = malloc(...);
p++;
free(p);
などとしてみたり、
delete p;
でpがクリアされると思ったり、pという変数bェ無効になると試vってしまったb閨B
0691デフォャ泣gの名無しさbNGNG
time_t *nowtime;
time(nowtime);
printf("time---%d\n", *nowtime);
と
time_t nowtime;
time(&nowtime);
printf("time---%d\n", nowtime);
を同じだと思ってると見たw

まぁ、俺が大昔勉強し始めた時に2番目にやった間違いなのだがな
0692デフォルトの名無しさんNGNG
>>691
折角だから1番目と3番目がなんだったのか白状し給え。
0693デフォルトの名無しさんNGNG
>>691
これが正解なんだが、こんなのは>>672を見れば一目で分かるはず。
えらくレベルの低い連中が集まってるな。
これも春のせいか?
0694デフォルトの名無しさんNGNG
とりあえずまとめてあげたほうがいいかな?

諸悪の根源はtime_t *nowtime;が何も指し示していないこと(正確には何を指しているのか不定)
つまりtime_tの実体をどこかで宣言しなければならないってこと。
もう一つ、Cの関数の引数の渡され方が分かっていないという考え方も出来る。
両方とも間違っているので、どちらがより分かっていないかでアドバイスの内容が変化する。

>>675=679
関数の値渡しについての言及

>>678
おそらくポインタを宣言しただけでは実体は存在しないと言うことを言いたいのだと思われる

>>682
>>678の発言を「関数の値渡し」という点からみてあっていると判断
実際は>>678といっていることは同じ(ポインタが指しているところが不定という言及)

>>684
実態が存在しないことについての言及

>>691
総まとめ

漏れの視点からだとここに挙げていないレスをしている人たちは
言葉の言い回しから微妙に理解できていない部分があると思われる
0695デフォルトの名無しさんNGNG
>>694
おつかれさま。
0696676NGNG
ああそうか、たまたまnowtimeにNULLが入っていたから大丈夫だったのか。
0697デフォルトの名無しさんNGNG
#include <stdio.h>

int convert(void);
int doll,pond;

int main(void)
{
printf("換算する数値[ドル]を入力してください: ");
scanf("%d", &doll);

convert();
printf("%d ドルは, doll");
printf("%d ポンドです, pond");

return 0;
}

int convert(void)
{
pond = doll/2;
return pond;
}

1ポンド2ドルと仮定したときの為替換算プログラムを作りたいのですが、
うまく動作しません。
間違えの指摘よろしく。
0698デフォルトの名無しさんNGNG
>>697
>間違えの指摘よろしく。
基本も何も、全然勉強せずにソースを書こうとするのが大間違い。

 変数、関数、引数、戻値

これらをきっちり勉強すること。


ソースを手直しすることは簡単なんだが、
手直しするのがものすごく虚しいのよ(w
0699デフォルトの名無しさんNGNG
>>697
printf("ドルは=%d",doll);
zyanaika?

学校の授業でLinuxのgccでC歴1年、
C++は林晴比古の本読んで文法が
判るようになったぐらい。

一昨日買ったVC.net2003で
ヘッダファイルをincludeしようとしたら、
どのファイルであろうと「ファイル内で
予期しないEOFが云々…」て怒られる。

なんで?

識者の方、解説きぼん。
0700デフォルトの名無しさんNGNG
>>698
勉強のためにソースを書いているんでつが・・・(´・ω・`)

おっしゃる通り、まだまだ勉強が足りてないでつが。

ちなみに独習C第一章の練習問題でつ。


>>699
指摘サンクス。解決しました。
0701デフォルトの名無しさんNGNG
>>699
プリコンパイルドヘッダー
0702デフォルトの名無しさんNGNG
>>699
stdafx.hを一番上にインクルードしてみ
0703デフォルトの名無しさんNGNG
>>697
どうでもいいけど
せめて、printf()の文字列リテラルには改行コード入れようぜ
\nな
0704697=700NGNG
>>703
printf("%d ドルは, doll");
printf("%d ポンドです, pond"); を

printf("%d ドルは, doll\n");
printf("%d ポンドです, pond");に汁!!ってこと?

エスケープ文字は数十ページ先で扱われているので、
697を書いた時点では当然知りませんでした。

っていうレベル。
0705703NGNG
>>704
ぉぃぉぃ・・・
それはおかしいだろw

,dollとか変数まで文字列リテラルの中に入れてどうすんのw
0706デフォルトの名無しさんNGNG
本を見ながら苦悩して悩みなさいよ…。
0707デフォルトの名無しさんNGNG
独習Cといえばここ
【独習C】猿60【猿C言語教室 part6】
ttp://pc5.2ch.net/test/read.cgi/tech/1080010285/
0708デフォルトの名無しさんNGNG
ってか、キチンと読んでないんでしょ。
文字列リテラルも分からんようだし。

意地悪言うつもりはないぞ。>697
うまく行かないと思ったら、問題点が分かるまで何度も読み返すんだ。
それが勉強だ。
0709デフォルトの名無しさんNGNG
× 間違えの指摘よろしく。
○ 間違いの指摘よろしく。
0710デフォルトの名無しさんNGNG
>>699
何もincludeしなければビルドできるの?
0711697NGNG
>>705
printf("%d ドルは\n", doll);
printf("%d ポンドです", pond);
で桶?だよな…
一応、>>697は修正→コンパイル→動作確認しますた。


>>706
(・∀・)ノシ

…でも、頭の頭痛がしまつ。


>>707
今度からはそっちのスレも覗いてみまつ。�dクス。


>>708
一応全てのサンプルコードを打ち直ししてコンパイルしてはいるんだけど。
まあ、同じ間違いを2度も繰り返したらそう思われても仕方ない罠。

プログラミングにおいては、ささいなミスも命取りになるし、
今後はさらに注意をはらいたいと思いまつ。


>>709
…どうも。




0712デフォルトの名無しさんNGNG
class a
{ double *p;
int N;
public:
a(int i){
N=i;
p = new double[N]};

};

とかコンストラクターでメモリーを当てた時deleteしなくてもプログラム
終了時メモリーは解放されますか?
0713デフォルトの名無しさんNGNG
>>712
うだうだ考えずにデストラクタでdeleteしておきなさい。
0714デフォルトの名無しさんNGNG
>>712
ついでにコピーコンストラクタも忘れずに定義しておけ。
0715デフォルトの名無しさんNGNG
>>712
激しく処理系依存の香りがするが、
WindowsではOKだと言うことは確実だ
だがクラスでそういうことするのは止めておけ
たとえプロセス中にインスタンスが一つしかなかったとしてもだ
0716デフォルトの名無しさんNGNG
おまえら意地悪だな。 誰かつっこんでやれよ。
dollars, pounds
0717デフォルトの名無しさんNGNG
>716 別にどーでもいいだろ、名前なんて(w
0718デフォルトの名無しさんNGNG
>>716
それに類する間違いを仕事で見つけたから指摘したことがあるのだが、
余計なお世話だと罵倒されて依頼鼻で笑って放置することにしてるんだよ。
0719デフォルトの名無しさんNGNG
鼻で笑って放置?
俺ならあえて何度でも繰り返し言うな
「あぁなるほど、この人形(?)を半分にすれば、池(?)になる、というわけでつね。」
「で、この人形(?)や池(?)が表示されないのはなぜか、と?」
0720デフォルトの名無しさんNGNG
残念ながら漏れのところには リファクタリングツールがない。
あれば 変な変数名も変えやすくなるんだが、面倒くさすぎ
0721デフォルトの名無しさんNGNG
>>720 いくりぷす
0722デフォルトの名無しさんNGNG
soudatta.
で、eclipseのCDTって使い物になるの?
ぐぐってみたら JDTではリファクタリングできるけど
それ以外じゃ無理 みたいな情報があったんだけど
0723デフォルトの名無しさんNGNG
つか、妙な変数名つけられたコードのデバッグが廻ってきたら困らない?
0724デフォルトの名無しさんNGNG
>723 別に。木になるならなおすだけ
0725デフォルトの名無しさんNGNG
m_と付くグローバル変数が廻って来た事がこの前あった
どういうつもりで書いたのか理解に苦しむ
0726デフォルトの名無しさんNGNG
>>725
どうせ、元々メンバ変数だったのを何らかの事情でグローバルへ持ってきた。
んで、名前直すのが面倒だったからそのままにした

ってとこだろ
0727デフォルトの名無しさんNGNG
クラス内ではグローバルだが?
0728デフォルトの名無しさんNGNG
>>727
そんな突っ込みは勘弁・・w
0729デフォルトの名無しさんNGNG
いや、だからもう一つ外側をクラスでつつめば...
0730デフォルトの名無しさんNGNG
sounddataのtypo?とか突っ込みそうなった
0731デフォルトの名無しさんNGNG
綴りの間違った関数を呼び出すたびにため息がでる。
つい正しい綴りで書いてしまって、コンパイルエラーが出るたびに、また溜め息。

探すは serch じゃないぞ。ぼけ。

のろわれろ>creat()って名づけたやつ。
0732デフォルトの名無しさんNGNG
つねにこぴぺ、で無問題
0733デフォルトの名無しさんNGNG
>>731
識別子なんか作った奴が適当に決めた短縮名もいっぱいあるから、いちいち綴りがどうとか気にしてもしょうがないと思う。

>>732 の方法で充分だろ。
0734デフォルトの名無しさんNGNG
「日次処理」が「diary_process」と書いてあった時にはちょっと悶絶した。
0735デフォルトの名無しさんNGNG
通りすがりだけど
>>691って一緒じゃなかったんだ・・・

え〜と、出来れば解説お願いします。
アドレス指定するのって同じに見えるんですが・・・
0736デフォルトの名無しさんNGNG
>>735
ポインタ変数を宣言したら、必ず実体を作らなければならない。

C++だったら
time_t *nowtime;
nowtime=new time_t;
こんな感じで・・・
0737デフォルトの名無しさんNGNG
Cだったら、malloc()とかだな。
char型のポインタ型だったら、宣言した時に文字列リテラルを代入して初期化するってのもアリだ。

ちなみに、char str[5];
は
char *(str+5);
と同等だ。
0738737NGNG
あと、

宣言の時と関数内での[]は全く別物なので
間違いがないように
0739デフォルトの名無しさんNGNG
>>737-738
なんか、凄く誤解を生む書き方だな。
>>738見ても、全くわからない人からすると>>737は宣言の時に同等のように見えるぞ。
0740デフォルトの名無しさんNGNG
>>737
char str[6];として、str[5];と*(str+5);は同じ。
と書け。
0741デフォルトの名無しさんNGNG
質問です。
newで確保した領域をdeleteすると、そのものがなくなってしまうのでしょうか?
deleteした後、同じ変数をnewしたりしたいのですが・・・

というのも、
test(プロセス名) in free(): warning: chunk is already free
とFreeBSDが画面に表示するんで・・・
0742デフォルトの名無しさんNGNG
環境依存だと思われ。
0743741NGNG
>>742
え〜と、FreeBSDの場合
その一度newした変数を初期化したい場合はどうすれば良いのでしょうか?
今までは一旦deleteしてからnewしてたんですが・・・
0744デフォルトの名無しさんNGNG
>>735
おまえみたいなワカランチンのために>>694氏がちゃんと
整理してくれてるだろうが。
0745デフォルトの名無しさんNGNG
>>741 >>743
なにを言っているか分からん。
具体的にソースを示せ。
0746デフォルトの名無しさんNGNG
>>743
memset()とかは?
0747デフォルトの名無しさんNGNG
SYSTEM_SET::SYSTEM_SET()
{
pchannel_db = new CHANNEL_DB;
_pchannel_db = new CHANNEL_DB;
}
SYSTEM_SET::~SYSTEM_SET()
{
delete pchannel_db;
delete _pchannel_db;

}
こんな感じで別にnewしたポインタ変数の指すアドレスが何故か一緒になります。
どうすれば良いのでしょうか?
0748デフォルトの名無しさんNGNG
>>747
ありえない。何か勘違いしているか、別のところに問題があるか。
0749747NGNG
自己解決しました。
別の場所で、原因はSTLのイテレーターの使用ミスでした。
どうもです。
0750デフォルトの名無しさんNGNG
質問です。
イテレーターは、insert()すると、どこも指さなくなるのでしょうか?
再びbegin()で指定しないと、Busエラーになりました。
0751デフォルトの名無しさんNGNG
>>750
Iteratorの賞味期限を過ぎてるな。
0752デフォルトの名無しさんNGNG
>>751
普通にラベル貼り替えやってますが何か?
0753デフォルトの名無しさんNGNG
>>750
何も入ってないリストでbegin()の位置にinsert()して、イテレーターが1つ後ろにずれ込んだと思われる。
0754デフォルトの名無しさんNGNG
何も入ってないコンテナのbegin()って0返さなかったっけ?
0755デフォルトの名無しさんNGNG
返すのはend()
0756デフォルトの名無しさんNGNG
Iteratorに0という値は定義されていないよ。
0757デフォルトの名無しさんNGNG
質問です。
STLのlistなんですが
begin()の位置にinsert()すると、今までその位置にあったデータは自動的に後ろ側に下がってくれますか?
0758デフォルトの名無しさんNGNG
>>757
リスト構造において「後ろに下がる」という表現が妥当かどうかはなはだ疑問だが、
答はイエスと言って差し支えなかろう。
何でこんな持って回った表現になるのか疑問に思ったら、リスト構造がどういうものか
勉強してくれ。

STLの基本的なイディオムがまだ飲み込めてないみたいだね。
そういう時は億劫がらず本を読んで基本をきっちり押さえておいた方がいいよ。
0759デフォルトの名無しさんNGNG
>>758
THXです。
なるほど、もう少し勉強してみます。

あと、分からないのですが、erase()すると、そこに入れてある変数を
deleteはしなくて良いのでしょうか?
newで作ったものなんですが・・・
0760デフォルトの名無しさんNGNG
>>759
リストに入っているのはポインタかい?
それなら「ポインタが破棄されてもそれが指すインスタンスは破棄されない」。
インスタンスを破棄するなら当然deleteすべし。
0761デフォルトの名無しさんNGNG
vectorが真にその力を発揮するのは、
C言語の関数として提供された様々なAPIを使う時であるといえる。

また、ポインタのvectorをソートする場合は、C標準のqsort()が威力を発揮する。
というより、algorithmのsort()が使い物にならんし、
その他のアルゴリズムもポインタコンテナでは無力なんだよなぁ。
そんなわけでインスタンスを確保するコンテナ(非vectorでも可)と、
ポインタコンテナ(vector)の2つを併用するのが最強ではないかと思う。
0762デフォルトの名無しさんNGNG
> また、ポインタのvectorをソートする場合は、C標準のqsort()が威力を発揮する。
> というより、algorithmのsort()が使い物にならんし、
> その他のアルゴリズムもポインタコンテナでは無力なんだよなぁ。

なんで?
vectorの中身がポインタでも、sortもその他のアルゴリズムも問題なく使えるでしょ?
0763デフォルトの名無しさんNGNG
じぇねりっくぷろぐらみんぐがわかってないとおもわれ。
0764デフォルトの名無しさんNGNG
>>761はファンクタを知らないに32std::binary_functor。
0765761NGNG
>>762-764
スマソ。自己解決。
他のスレに書いた。ここには書かないw

C++相談室 part28
http://pc5.2ch.net/test/read.cgi/tech/1077985164/798
0766761NGNG
あと、>>764は氏んでいい。(^^)
0767デフォルトの名無しさんNGNG
boost:shared_ptr を使ったほうがいいと思うよポインタのコンテナ作るなら
0768デフォルトの名無しさんNGNG
>>761は結局何がしたかったの?俺様用メモとか言っちゃって。痛々しいな。
0769デフォルトの名無しさんNGNG
>>768
必死だなw
0770デフォルトの名無しさんNGNG
>>768
>俺様用メモとか言っちゃって

>>761のどこで言っているのかと(ry
0771rinoNGNG
どなたかVIDEを使ってる方いらっしゃいませんか?

VIDE
http://www.objectcentral.com/vide.htm

VIDEでSDIアプリを作ろうと思ったんですが、
Canvasは1つしか表示できないのでしょうか?
少なくともTextCanvasとTextEditorの両方を表示したいの
ですが。



フリーのツールをインストールしたんですが、例が少なくて
かえってむずかしい。。。
0772デフォルトの名無しさんNGNG
>>771
そら、さすがにスレ違いだろう。
0773デフォルトの名無しさんNGNG
int* ptr=new int [3];

このようにint型ポインタを宣言したときに
変数ptrから3という個数を得るにはどうしたらいいでしょうか?
つまりvectorにおけるsize関数に相当するものです。
0774デフォルトの名無しさんNGNG
ICU2.8をCygwin(MinGW XPHOME)でコンパイルしようとしています。


###
$ ./runConfigureICU CygWin --enable-threads=yes
###
でConfigureした後にmakeするわけですが、
二日間、ずっとビルドできずに悩んでいます。

##########
$ make
rm -rf config/icu-config
/usr/bin/install -c -m 644 ./config/icu-config-top config/icu-config
process_begin: CreateProcess((null), /usr/bin/install -c -m 644 ./config/icu-config-top config/icu-config, ...) failed.
make (e=3): 指定されたパスが見つかりません。
c:\MinGW\bin\mingw32-make.exe: *** [config/icu-config] Error 3
###

MSYSでのビルドが無理そうなので(ビルド中にUnreferenced Errorの嵐)
Cygwinもインストールしたのですが、
CreateProcessがうまくいってないのはわかりそうなものの
どう対策していいものかわかりません。ネットでいろいろ調べる限り
CygWinでのコンパイルは特に問題なさそうな気がしているため
何か解決策はあると思うのですが、いかんせん自分の知恵が限界です。

どなたかヘルプお願いします。
0775デフォルトの名無しさんNGNG
>>773
int (*p)[3]=reinterpret_cast<int (*)[3]>(new int[3]);

sizeof(p)はsizeof(int)*3なので、sizeof(p)/sizeof(int)で3が求められる
こんなのじゃだめっすか?複雑っすね…
0776デフォルトの名無しさんNGNG
>>773
無理。3を覚えておけ。
0777デフォルトの名無しさんNGNG
int main()
{
char moji[10];
moji[0] = "0";
return 0;
}

C言語初心者です。
これをビルドすると
「error C2440: '=' : 'char [2]' から 'char' に変換できません。」
とerrorが出るのですがどこを直せば分かりません。

環境はVisualStudio.NETのVC++のWin32アプリケーションです。
どこが悪いのか教えてもらえると助かります。
0778デフォルトの名無しさんNGNG
0の周りのダブルクォーとをはずせ。
0779デフォルトの名無しさんNGNG
"0"は'0'と'\0'(いわゆるヌル文字)を要素とする配列なので、
'0'とすれば解決するでしょう。
"〜"とすると末尾に暗黙的に'\0'が付きます。
0780デフォルトの名無しさんNGNG
charの場合はシングルクォートでしたね。
ありがとうございました。
0781デフォルトの名無しさんNGNG
もしかしたらシングルクォートかもしれない
0782デフォルトの名無しさんNGNG
linuxのCでSJIS日本語文字列を全角->半角するに適したライブラリって
ありますでしょうか。

0783デフォルトの名無しさんNGNG
>>782
たくさんありますが、どれを使ってもセキュリティーホールになるのでお勧めできません。
自前で作ったほうがまだましと思われます。
0784デフォルトの名無しさんNGNG
c++でgotoxy()のような動作をする関数はありますか?
0785デフォルトの名無しさんNGNG
質問です。
Win32APIだけを使って、iniファイルの読み書きは出来ないでしょうか?
0786デフォルトの名無しさんNGNG
>>785
GetPrivateProfileうんちゃらとか、WritePrivateProfileうんちゃら。
0787デフォルトの名無しさんNGNG
>>786
THXです。
0788デフォルトの名無しさんNGNG
整数の配列の中のあるデータを文字列に変換して
別の文字列の尻に合体させたいのですが、
どうも上手くいかないので助けてください。
Bufにはなにか適当な文字列が入ってるものとしてみてください。
おねがします。

char Buf[1024],d[10],str[10];
int data[10]={0,1,0,0,1,2,3,0,1,0};

str=sprintf(d,"%d",data[4]);//とりあえず適当に5番目
strcat(Buf,str);
0789デフォルトの名無しさんNGNG
>>788
コンパイル時に警告出ないか?
sprintf()の戻り値が何かちゃんと調べれ。
0790デフォルトの名無しさんNGNG
>>789
警告じゃなくコンパイルエラーじゃね?
0791デフォルトの名無しさんNGNG
>>788
整数の配列を文字列に変換するというのが、具体的にどういった操作なのか判らないので答えようがない。

コードを見る限り、問題を引き起こしているのはsprintfの戻り値を配列に代入しようとしているところだろう。
配列型の変数には代入演算子で直接代入することは出来ない。sprintfの結果は第一引数(この場合はd)に
書き込まれるので、Bufの後ろにdを繋げてやればいい。
0792デフォルトの名無しさんNGNG
>>788
char buf1[256] = "hoge", buf2[256];
int data[10]={0,1,0,0,1,2,3,0,1,0};

sprintf( buf2, "%s%d", buf1, data[4]);
0793788NGNG
>>789-792
あ、、なんか変なことしてたみたいです。
おかげさまで上手くいきました。
申し訳ないです。。。orz
0794デフォルトの名無しさんNGNG
ちょっと>>791の表現が適切でないと思われるので791では無いですが勝手に修正しますよ

コードを見る限り、問題を引き起こしているのはsprintfの戻り値を
配列の先頭要素へのポインタに代入しようとしているところだろう。
配列の先頭要素へのポインタは左辺値ではないので代入演算子で代入することは出来ない。
仮に左辺値でなかったとしてもstrの型はchar *であり、sprintf関数の戻り値はint型だ。
sprintf関数はその文字列に変換した処理結果を一引数(この場合はd)が指す領域に
書き込むので、Bufの後ろにdを繋げてやればいい。

>>791よすまんな、勝手にフォローさせてもらった
0795デフォルトの名無しさんNGNG
「配列の先頭要素へのポインタ」という表現は完全に誤り
>>791の方が正解に近い
0796デフォルトの名無しさんNGNG
>>795
?
0797デフォルトの名無しさんNGNG
>>795
>>794じゃありませんけど質問です。
>「配列の先頭要素へのポインタ」という表現は完全に誤り
ということは、正しくはどう表現すればよいのでしょうか。
0798デフォルトの名無しさんNGNG
春満開かよ
0799795NGNG
すまん、おいらの理解が間違っていたよ。
「ポインタ」と言えば、「ポインタ変数」の意味かと思ったが
「アドレス値」という意味でも使われるようだ。

配列名は、「配列の先頭要素へのポインタ」であり、
>>794の表現が正しい。
0800デフォルトの名無しさんNGNG
配列名は、「配列の先頭要素へのポインタ定数」とかね。。。
0801デフォルトの名無しさんNGNG
「ポインタ定数のように扱える配列全体を表す名前」
の方がよくないか?
0802デフォルトの名無しさんNGNG
配列全体として扱われるのはsizeof()の時だけだし、全体は言いすぎかと。
0803デフォルトの名無しさんNGNG
プリコンパイル済みヘッダーの検索中に予期しないEOFを検出しました
っていうコンパイルエラーで躓いてるのですが
これはそうやったらなおるでしょうか
拡張子が CPPではなくCのファイルのみこの事象が発生してます
0804803NGNG
自己かいケツ
要は追加したファイルに対して プリコンパイラを使用するなと
0805デフォルトの名無しさんNGNG
>>800-802
あくまで配列型は配列型であって、場合によってはポインタに変換される、
って考えるほうが、わかりやすくないか?
名前そのものとは限らないから、「配列名」という表現も不自然な気がする。
0806デフォルトの名無しさんNGNG
WindowsのBorlandC++ですが
DOSのコンソール画面でBASICのLOCATEのような、
カーソルを移動させる方法ってあるのでしょうか?

また、文字に色を付ける方法はあるのでしょうか?
よろしくお願いします。
0807デフォルトの名無しさんNGNG
「配列の先頭要素へのポインタ定数」だと

┌──┐.    ┌──┬──┬──┬──┬──┐
│ ・───→│    │    │    │    │    │
└──┘.    └──┴──┴──┴──┴──┘

な感じがして、違和感を感じる。
0808デフォルトの名無しさんNGNG
>>806
 DOS エスケープシーケンス
でぐぐれ。ただしWin9x系しか使えないそうだ。
0809デフォルトの名無しさんNGNG
>>808
まじっすか。書き込む前にぐぐって、どうもうまくいかないんで
書いたんですけど・・・
Win9x系しか使えないとは・・・。こりゃこまった。
0810デフォルトの名無しさんNGNG
>>809
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpfileio/html/_win32_setconsolecursorposition.asp
0811デフォルトの名無しさんNGNG
皆様こんにちは。C/C++を始めてまだ2日目の素人です。
素人故、つまらない所で躓いています。どうか助けてください。

【 OS 】       WindowsXP HomeEdition SP1
【 コンパイラ 】  Borland C++ Compiler 5.5
【 エディタ 】    BCC Developer

【 内容 】
WinMain()内にてメインウィンドウのハンドルはhwnd、エディットはEdithWndに格納してあります。
エディットの文字数制限を100にしようと思い、SendMessageを投げつけました。
コンパイルも通り、期待した通りに表示されたのですが、
エディットの入力可能な文字数はいくらやってもエディットの右端までなのです。(全角で約17文字)
どこか間違えているのでしょうか。

EdithWnd=CreateWindow( "EDIT",
                "",
                WS_CHILDWINDOW | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
                10,
                10,
                300,
                24,
                hwnd,
                (HMENU)NULL,
                hInstance,
                0);
SendMessage(EdithWnd,EM_SETLIMITTEXT,100,0);
v=SendMessage(EdithWnd,EM_GETLIMITTEXT,0,0);// vは int v; と宣言してあります
if(v==100){MessageBox(NULL,"MAMKO","TYMPO",MB_OK);}
// ここ以降にShowWindowやメッセージループを記述しています。
// ちなみに、メッセージループ内はWM_DESTROYのチェックをさせているだけです。
0812デフォルトの名無しさんNGNG
>>805
>>788の場合、完全に変換済みの値が関数に渡されるのだが…

>>807
いや、まさしくそれだろう
0813デフォルトの名無しさんNGNG
>いや、まさしくそれだろう
これって笑うところ?
0814デフォルトの名無しさんNGNG
>811
エディットコントロールをスクロール可にしないと
ウィンドウサイズ分しか入力できない。
WS_CHILDWINDOW | WS_VISIBLE | WS_BORDER | WS_TABSTOP に
| ES_AUTOHSCROLL を追加しる。
0815デフォルトの名無しさんNGNG
>>814
早速のご回答、ありがとうございます。

情報が小出しにならないように自分なりに気を付けていたつもりだったんですが
>>814さんに言われて気が付いた事がありました。
エディットなのですが、「複数行」ではなく「1行エディット」のつもりで書いていました。
ただ「エディット」ではなくて「1行エディット」みたいに書けばよかったですね。
折角ご回答下さったのに申し訳ありませんでした。
0816デフォルトの名無しさんNGNG
>>812は
char* p = "abcdefg";
と
char a[] = "abcdefg";
が同じだと思っているんじゃなかろか?
0817デフォルトの名無しさんNGNG
すみません。>>815は勘違いして書いてました。
改めて、>>814さんありがとうございました。
0818デフォルトの名無しさんNGNG
>>816
おいおいおいおいおいおい、そんな違いは知っててあたりまえ
で、その後pとaはすべての文脈において混同されるのよ

void foo(char *a);と宣言されていたとして、
foo(a);とすれば、
コンパイラは配列の先頭要素のポインタの定数をfoo関数の引数とするわけ
つまり、暗黙のうちに無名のchar *const型の変数が生成され、それが引数として渡されるわけ

結局、pの型はchar *型だし、aの型はchar[]なのだが、
以降、単独でaと書かれるとそれはchar *constなわけ(sizeofが例外と書いたほうが分かりやすい?)
(正確に言えばc++の場合pの型はconst char*なのだが、まあこれはこの話題には関係無しか)
0819デフォルトの名無しさんNGNG
通りすがりだけど
>>816って違うの?
誰か説明お願いします。
0820デフォルトの名無しさんNGNG
>>819
http://www.catnet.ne.jp/kouno/c_faq/c6.html#0
0821デフォルトの名無しさんNGNG
>>820
THX!

[]つけると、その場所から任意の数の分だけ領域を確保し
*だと、どこかわからない領域を指すアドレスを格納するって事ですね。
0822デフォルトの名無しさんNGNG
春の所為かな、懇々と説明しておいて自分の底の浅さを晒す>818みたいなのが沸くのは。
0823デフォルトの名無しさんNGNG
>>818
>コンパイラは配列の先頭要素のポインタの定数をfoo関数の引数とするわけ
>つまり、暗黙のうちに無名のchar *const型の変数が生成され、それが引数として渡されるわけ

この辺からポインタを理解してないということが感じられる。
0824823NGNG
>>823
ちょっと言い換える。
ポインタとアドレスを混同していると感じられる。
0825デフォルトの名無しさんNGNG
>>823
すまんが教えてくれ、どこが違うのかさっぱり分からん

char str[10]; と宣言されているとき、
式の中では、pは「先頭要素へのポインタ」に読み換えられる。
つまり、pは&p[0]に置き換えられる。&p[0]の型はchar *constだよな?

ちなみに例外は、sizeof演算子のオペランド、文字列リテラルの初期化時、
& 演算子のオペランドの式に出てきたときだ。

この説明が間違っているというやつらは
文字列リテラルの初期化の例外を挙げているが、
それこそ理解していない証拠だろう。

俺の理解が間違っているのならいいんだけど、(むしろスキルを伸ばす絶好の機会だ)
間違っていると言うのなら論拠を出して欲しいものだ。
ISO/IEC 9899:1999からその論拠となる部分を探そうとしたが、
すまんが時間が無くて探せなかった。また今度時間があるときにな。
0826825NGNG
先に訂正「pは左辺値ではない」は「pは変更可能な左辺値ではない」の間違い
左辺値=変更可能なオブジェクトだと思っていたのが間違いだった

論拠を見つけたのでここに記載する
ISO/IEC 9899:1999 6.3.2.1の3より転載

Except when it is the operand of the sizeof operator or the unary & operator, or is a
string literal used to initialize an array, an expression that has type ‘‘array of type’’ is
converted to an expression with type ‘‘pointer to type’’ that points to the initial element of
the array object and is not an lvalue. If the array object has register storage class, the
behavior is undefined.
0827デフォルトの名無しさんNGNG
× char str[10]; と宣言されているとき、
○ char p[10]; と宣言されているとき、

だよね?
0828825NGNG
>>827
そうですね、訂正させていただきます
0829デフォルトの名無しさんNGNG
>>825
もう判っているかもしれないが、おまいさんはconstと右辺値を混同していると思われる。
&p[0]の型はchar *constではなくて、char *だ。
このときchar *const(あるいはchar *)型の変数が生成されるわけではなく、
単にchar *型の値(右辺値)が生成されるだけだ。
&&p[0]がエラーになることからもこれが判るだろう。

>>824
Cではアドレスのことを「ポインタ型の値」とも言うと思うが。
0830825NGNG
>>829
そういうことですか、分かりました。
ところで、値のうち、左辺値ではないものはすべて右辺値と考えてよいのでしょうか?
左辺値は「Locator value」つまり「オブジェクトを指し示す値」と解釈したのですが、
右辺値は「value of an expression」、つまり「式の値」なわけですよね?

変更可能な左辺値は左辺値のうち配列型でないもの、不完全型でないもの、
const修飾子のないもの、構造体か共用体の場合はそのメンバにもconst修飾子無いもの。

つまり、char p[10];が例外によって置き換えられなかったら変更不可能な左辺値であって、
置き換えられた場合は右辺値になる。という解釈でよいですか?

sizeof(p); // pは変更不可能な左辺値、sizeof(p)は右辺値
strlen(p); // pは右辺値、ついでにstrlen(p)も右辺値
0831デフォルトの名無しさんNGNG
アセンブラ出力を見ると
同じシンタックスであっても、配列とポインタでは意味が全く違うのがよくわかる。
ローカル変数だとわかりにくい場合があるので
グローバルに確保した配列要素とポインタ変数経由での出力を比較してみるといい。

char s1[] = "ABCDE";
char *s2 = "ABCDE";
char f1(int n) { return s1[n]; }
char f2(int n) { return s2[n]; }
0832デフォルトの名無しさんNGNG
C言語とメモ帳とコンパイラで、たとえばwindowsのメモ帳のようなアプリケーションを作るには、
どのような本を読めばいいですか?
0833デフォルトの名無しさんNGNG
>>832
プログラミングWindows
http://www.amazon.co.jp/exec/obidos/ASIN/4756136001/
0834デフォルトの名無しさんNGNG
>>832
( ゚д゚)ポカーン
0835デフォルトの名無しさんNGNG
>>832
本もあるがまずwebで猫でも嫁。
http://www.kumei.ne.jp/c_lang/
0836デフォルトの名無しさんNGNG
>>832
あまりにも基礎的な質問すんな。以下に、模範ソースを示す。
これ以外は一切ありえない。謹んで参考にするように。


#include <stdlib.h>

void main()
{
 system("notepad.exe");
}
0837デフォルトの名無しさんNGNG
>>830
>>829 じゃないけど。
>ところで、値のうち、左辺値ではないものはすべて右辺値と考えてよいのでしょうか?
基本的にはそれで良いと思います。
ただ、規格を厳密に解釈しようとすると微妙になってくるかも。
そもそも、C の規格上では右辺値は注釈(と索引)にしかでてきませんが、
「式の値」として記述されると書いてある一方で、左辺値は「式」であると
書いてあります。
従って、全ての「値」は右辺値であり、(右辺)値を生み出す式の中に左辺値となる
ものがある(また、6.3.2.1-2 より特定の文脈以外では(右辺)値に変換される)、
という解釈が可能です。
もっとも、6.5.2.3-3,4 には
>The value is that of the named members (...), and is an lvalue
と、値は左辺値である、みたいな表現があるんでなお混乱を呼びますが。

とりあえず、C の範囲内ではオブジェクトを参照しているか否かで左辺値と
右辺値を区別可能でしょう。
ref. ttp://www.embedded.com/story/OEG20010518S0071
なお、C++ では右辺値も規格で定義されており、式は左辺値か右辺値のいずれかだ
となっています。

ところで、ISO/IEC 9899:1999 の変更点のところに
>conversion of array to pointer not limited to lvalues
こんなんがあるんで、旧規格を持ってる人は調べてくれると嬉しいっす。
0838デフォルトの名無しさんNGNG
>>836よ、も前のやっている事は「起動する」だ。
>>832の要求は「作る」だ。








...ちなみにもれのマシンでnotopad.exeを実行するとEmEditor(free)が起動するのはナイショだ。
0839デフォルトの名無しさんNGNG
>notopad.exeを実行するとEmEditor(free)が起動する
^^^^^^^^^^^^^
0840デフォルトの名無しさんNGNG
notopad.exeにリネームしてるんだろ
0841デフォルトの名無しさんNGNG
>>839
能登パッドってフリーのソフトでも使ってるとか?
0842デフォルトの名無しさんNGNG
fsutil hardlink create notepad.exe emeditor
なんてな。
0843デフォルトの名無しさんNGNG
>>836
しかし、いつの時代にも例外というものがある。

#include <stdio.h>
#include <stdlib.h>

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

sprintf(buf, "copy C:\\windows\\notepad.exe %s.exe", argv[1]);
system(buf);
return 0;
}
0844836NGNG
>>843
君の実装の方が、仕様を忠実に満たしており、機能面で優れている。
私の負けである事を率直に認めたい。
0845デフォルトの名無しさんNGNG
さて、↓では>>843のソフトウェアのセキュリティーホールをつく極秘のコマンドが公開されます
みんな、極秘の超ウルテクだぞう!メモの容易を忘れずにネ!
0846デフォルトの名無しさんNGNG
>843のプログラムの引き数に、c:\windows\explorer.exeを指定すると面白そうだ。
0847836NGNG
>>843は、バッファオーバフローによるエクスプロイトの問題が発生しうるが、
それでも>>836の実装より機能が洗練されている。
私の完全な負けだ・・・。_| ̄|○
0848デフォルトの名無しさんNGNG
c:\winnt\だったらどうする?
0849デフォルトの名無しさんNGNG
%WINDIR%\explorer
0850デフォルトの名無しさんNGNG
普通パス通ってるだろ。
0851デフォルトの名無しさんNGNG
いつのまにネタスレになったんだ。
この流れは、>>832の素朴な質問が発端か。
いい加減にしろよ、お前らw
0852832NGNG
俺のせいですみません。
0853デフォルトの名無しさんNGNG
ごめんですんだら警察はイラン。














...仕様書も議事録もイラン。
0854デフォルトの名無しさんNGNG
ごめんですんだ警察はイラク。














...仕様書よ議事録よイラク。
0855デフォルトの名無しさんNGNG
あのー、コンパイルしたいのですがコマンドプロンプトの使い方がわかりません。
探したのですがいい説明サイトが見つかりません。
どこか知りませんか。ファイルのある場所に移動すらできません。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\3>   _| ̄|○

cドライブのcというフォルダのtest.cに行きたいです。
0856デフォルトの名無しさんNGNG
>>855
ホントにサイト検索したのか?
ぐぐればいくらでもでてくるぞ?
今回だけはサービス
ttp://www.atmarkit.co.jp/fwin2k/operation/command001/command1.html
ttp://mailsrv.nara-edu.ac.jp/~asait/latex/msdos.htm
0857デフォルトの名無しさんNGNG
ダイアログBOXを作成し
リストビューコントロールを貼り付けて、レポートに設定した後

LVITEM lvi;
int iItem;
ZeroMemory(&lvi, sizeof(lvi));
lvi.mask = LVIF_TEXT;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText = "テキスト";
iItem = SendMessage(hDlg, LVM_INSERTITEM, 0, (LPARAM) &lvi);
lvi.mask = LVIF_TEXT;
lvi.iItem = iItem;
lvi.iSubItem = 1;
lvi.pszText = "テキスト2";
SendMessage(hDlg, LVM_SETITEM, 0, (LPARAM) &lvi);

をcase WM_INITDIALOG:に書いたのですが
追加された文字が表示されません。
何故でしょうか?
0858デフォルトの名無しさんNGNG
>>855
コマンドプロンプトの使い方で、ググッたら一番上にそれなり分かりやすいサイトきたが?
おまいは、本当に探したのかと子一時間・・・
つーかどうやって検索したんだ?

まぁ、窓の手とか使うと、コマンドプロンプトが簡単に使えるようになって便利だぞ。
0859デフォルトの名無しさんNGNG
>>857
BOOL ListView_RedrawItems( HWND hwnd, int iFirst, int iLast);
つか、単にLVM_REDRAWITEMS飛ばすマクロだが・・・
てーか、これでリドロウかけても表示されないんなら、他のとこまちがってるんじゃね?
まぁ、大抵はリドロウしなくても表示されるんだが・・・。
WP_PAINTでBeginPaint,EndPaint書いてみるとか・・・。
0860デフォルトの名無しさんNGNG
>>857
LVS_NOCOLUMNHEADERかListView_InsertColumnってとこかな。
0861859NGNG
>>860
それだ!!
0862デフォルトの名無しさんNGNG
>>855
cd c:\c [enter]

というかネタだよな!?
0863855NGNG
ネタじゃないです。普通、コマンドプロンプトとか使うんですかねー。
おいらはコマンドプロンプトが何のためにあるのか分からないんので勉強してきます。
C言語の手前でつまずいちゃったよ(´・ω・`)
0864デフォルトの名無しさんNGNG
俺はコマンドプロンプトよく使うよ。
バッチでだけど。
0865デフォルトの名無しさんNGNG
VS買えば見ないで済むよ
貧乏人の味方、コマンドプロンプト
0866右クリックcdNGNG
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""

[HKEY_CLASSES_ROOT\Drive\shell\cmd\command]
@="cmd.exe /k \"cd %L\""
0867デフォルトの名無しさんNGNG
質問です。
WindowsXPでLSI-c86 3.30cをつかってます。
コンパイルしたときに"snytax errror near 'end of file'"
と出るんですけどこれは何がいけないんですか?
バイナリファイルを使ったプログラムを作ったら毎回でます。
本を見てプログラムをうつしたので間違ってはいないとおもいます。
教えてください。
0868デフォルトの名無しさんNGNG
>>867
「error」もまともに綴れないのか?
0869デフォルトの名無しさんNGNG
>>867
エラーメッセージも読めないのか?
0870デフォルトの名無しさんNGNG
>>867
オレの予想
 ・ 本には「この1つ上の行までがプログラムのソースです」って意味で
   「end of file」と書いてある
 ・ >>876は「end of file」もソースの一部だと思ってる
0871870NGNG
s/876/867/ ね
0872デフォルトの名無しさんNGNG
>>870
コンパイラが'end of file'を一続きの言葉として見るはずはないだろ。
0873867NGNG
プログラムのソースです。
#include <stdio.h>
int main(int argc,char *argv[]){
FILE *fp;
char ch;
if(argc != 2){
printf("パラメータの数が違います。\n");
return 1;
}
fp = fopen(argc[1],"r");
if(fp == NULL){
printf("ファイルをオープンできませんでした。\n");
return 1;
}
while((ch = fgetc(fp)) != EOF){
putchar(ch);
}
fclose(fp);
return 0;
}
なにがいけないいんですかわかりますか?
0874デフォルトの名無しさんNGNG
>>867
プログラムの最後の1、2行を見直してみろ。
あるいは括弧や引用符の釣り合いを確認しろ。
それでも分からなければソースをさらせ。
0875デフォルトの名無しさんNGNG
>>867
>バイナリファイルを使ったプログラムを作ったら

どう使ったのだろう?
0876デフォルトの名無しさんNGNG
>>873
argc[1]をargv[1]にして、最後に改行を入れてみてもだめ?
0877デフォルトの名無しさんNGNG
なんで、argcでfopenやってるんだ?
引数の数で開いてどうすんだw
0878867NGNG
#include <stdio.h>
#define NUM 5
int main(void){
FILE *fp;
int test[NUM];
int i,j;
fp = fopen("test1.bin","rb");
if(fp == NULL){
printf("ファイルをオープンできませんでした。\n");
return 1;
}
for(i=0;i<NUM;i++){
fread(&test[i],sizeof(int),1,fp);
}
for(j=0;j<NUM;j++){
printf("%d\n",test[j]);
}
fclose(fp);
return 0;
}
これも同じエラーがでます。test1.binはちゃんとあります。
0879デフォルトの名無しさんNGNG
つーか開けません
0880デフォルトの名無しさんNGNG
>>876
だめみたいでした。
0881857NGNG
>>860
リソースエディタでコントロールを配置する形でやってるんで
プロパティーのNoColumHeaderをTrueにしてみましたが
全く表示されません。

>>859
やっぱり表示されません・・・
0882デフォルトの名無しさんNGNG
test1.bin をフルパスにしてもだめなのかい?
0883デフォルトの名無しさんNGNG
>>882
だめでした。
わざと間違ったコードをかいてみたんですが、
はじめのエラー以外指摘されもしません。
0884デフォルトの名無しさんNGNG
>>867
とりあえず、出たエラーはそのままコピペしろ。
0885デフォルトの名無しさんNGNG
>>>884
snytax error near 'end of file'
だけです。
0886デフォルトの名無しさんNGNG
>>885
コンパイルエラーかリンクエラーなどを示す文字列や行番号などもあるだろ?
あと、「snytax」じゃなくて「syntax」だ。
0887870NGNG
>>872
ソッスネ
0888デフォルトの名無しさんNGNG
>>test3.c 1:syntax error near'end of file'
です。
test3.cは>>878のファイル名です。
0889デフォルトの名無しさんNGNG
1行目で構文エラーということは

#include <stdio.h>
int main(void) { return 0; }

これだけでも出るってことだな。
0890デフォルトの名無しさんNGNG
>>888
>>878はtest3.cをコピペしたもの?
改めて打ち直したものじゃ意味無いよ。
と念のため言ってみる。
0891878NGNG
ご迷惑かけました。謎がとけました。
アドバイスくれたかたどうもです。
0892デフォルトの名無しさんNGNG
迷惑かけたと思うなら、話のタネにどんな謎だったか残していってくれ
0893デフォルトの名無しさんNGNG
ファイルの文字コードがANSIからUnicodeに変わってたため
読み込めなかったみたいです。
0894デフォルトの名無しさんNGNG
ファイルポインタが既に fopen() や fclose() されているか否かを知る方法はありませんか?
異常終了時に念のため全てのファイルを閉じるつもりで fopen() 前のファイルを fclose() するとエラーが出ます。
これを回避する良い方法があればお教えください。
0895デフォルトの名無しさんNGNG
>>894
C++ならクラスでラップする。
Cなら構造体でラップする。
0896894NGNG
>>895
Cで考えてます。
つまり構造体のメンバに開いているか否かを表すフラグを設けるということですか?
お答えありがとうございました。
0897デフォルトの名無しさんNGNG
ファイル開いていないときは常にNULL入れるようにするだけじゃダメなのか?
0898894NGNG
>>897
宣言と同時にNULLを代入するんですよね。
それも考えたんですがひょっとしたら自分の知らない別の方法があるかと思って。
ちなみに閉じるためにこんな関数を用意しました。

void _fclose(FILE ** fp)
{
  if (*fp) {
    fclose(*fp);
    *fp = NULL;
  }
}
これを調子に乗って fopen() 前に使ったらエラーになって困ってたんです。
0899デフォルトの名無しさんNGNG
>>898
> これを調子に乗って fopen() 前に使ったらエラーになって困ってたんです。

そういうことする時は、普通

FILE *fp = NULL;

ってやると思うが...。

(fopen() の前って、ファイル開いてない時だし...。)
0900894NGNG
確かに…短慮でした。
お手数おかけしました。m(_ _)m
0901860NGNG
>>881
ListView_InsertColumnはやってみた?
レポートモードはカラム設定してやらんと出ないかもなー
というわけで書いておいたんだが。
0902デフォルトの名無しさんNGNG
>>893
>ファイルの文字コードがANSIから


どんな文字コードよ?
0903857NGNG
>>901
やってみました。
でもダメでした。

あの、疑問なんですが
その貼り付けたコントロールの名称を指定せずにどうやってそのコントロールにメッセージ送ってるのでしょうか?
ダイアログに複数リストコントロールを貼り付けたらどっちに行くかわかりませんし・・・
指定してるのはWindowハンドルだけですし・・・・

何か指定しないとダメなのでしょうか?
0904デフォルトの名無しさんNGNG
>>903
HWND コントロールのハンドル = ::GetDlgItem( ダイアログのハンドル, コントロールID );
0905857NGNG
>>904
THXです。
でもやっぱりダメでした。。。
何ででしょう・・・
0906デフォルトの名無しさんNGNG
>>905
悪いことは言わない、プログラマになるのは諦めたほうがいいぞ、きっと・・・。
趣味なら別なもんみつけとけ・・・。
0907デフォルトの名無しさんNGNG
最近は 「式は lvalue または rvalue を持つ」と考えるのが普通ですか?

昔は、「lvalue, rvalue の両方を持つ式とrvalueしか持たない式がある」という
ふうに考えたものですが。

++x は lvalue, rvalue の両方を持つ。
x++ は rvalue しか持たない。

lvalue を持つ式は = の左に現れることができる。
lvalue を持つ式は & の被演算子となることができる。
0908デフォルトの名無しさんNGNG
>>907
私は >>837 なのですが、
>昔は、「lvalue, rvalue の両方を持つ式とrvalueしか持たない式がある」という
>ふうに考えたものですが。
本来、私もこっち派です。
なので、右辺値⊃左辺値みたいなことを書こうとしたのですが言い回しが…。
また C++ だと
|ISO/IEC 14882:2003 (1998 でも同じ)
|3.10 Lvalues and rvalues
|1 Every expression is either an lvalue or an rvalue.
と、なってましたのでトーンダウンしてしまいました。

「右辺値(左辺値)を持つ式」という表現はいい感じですね。
オブジェクト(代入先)を指す左辺値と、値自体を表す右辺値の二重性をうまく
表現できていると思います。
C++ の場合でも 4.1 Lvalue-to-rvalue conversion 等による左辺値→右辺値の
変換を含めて考えれば、「lvalue, rvalue の両方を持つ式とrvalueしか持たない式がある」
という言い方はできそうです。

>lvalue を持つ式は = の左に現れることができる。
>>826 も書いている通り正確には変更可能な左辺値ですね。
0909デフォルトの名無しさんNGNG
>>906
そういうならお前は原因わかるんだな?
同じように何故かわからないんだったら、お前も一緒だぞ?

ちなみに じゃあお前わかるのか? とか言われそうだから先に言っとくが
俺もわからん。
0910デフォルトの名無しさんNGNG
909
何がどうだめなのか、何も書いてないしな。
0911デフォルトの名無しさんNGNG
2ちゃん名物 逆ギレ 粘着
0912906NGNG
>>905
LPVOID lpMsgBuf;
FormatMessage(
 FORMAT_MESSAGE_ALLOCATE_BUFFER |
 FORMAT_MESSAGE_FROM_SYSTEM |
 FORMAT_MESSAGE_IGNORE_INSERTS,
 NULL,
 GetLastError(),
 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 既定の言語
 (LPTSTR) &lpMsgBuf,
 0,
 NULL );

// lpMsgBuf 内のすべての挿入シーケンスを処理する。
// ...
 
// 文字列を表示する。
MessageBox(NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION);

// バッファを解放する。
LocalFree(lpMsgBuf);

エラーがでてるならこれで分かる。エラーないなら、猫でも分かるをコピペしてできるかどうか確かめるべし。

>>909
まぁ、どっかにソース(プロジェクト?)でもUPってもらわんかぎり、わかんねーよ。
0913デフォルトの名無しさんNGNG
Cのエディターって、例えばマイクロソフトのVisualC++とか、できたらフリーのエディターがいいんですが
自動メンバ表示みたいな機能ある?
宣言または参照されてる構造体のメンバをタグ名を入力したら選択できるように表示されるとか
参照するヘッダーで定義されている関数や、自分で定義した関数など
「関数名+(」を入力したら引数の型や数が表示されるような機能。
インテリセンスって奴ですけど、もしご存知でしたら教えてください。
お願いします。
0914デフォルトの名無しさんNGNG
>>913
>Cのエディターって、例えばマイクロソフトのVisualC++

「VisualC++」はエディタじゃない。
まずは「エディタとは何か?」から調べ直せ。
0915デフォルトの名無しさんNGNG
>>909
せっかくだから俺も粘着。

>>>906
>そういうならお前は原因わかるんだな?
>同じように何故かわからないんだったら、お前も一緒だぞ?
著しく論理的思考能力に欠ける人みたいですね。
もしあなたが10代ならしゃべり場に出演されてみてはいかがでしょうか。
番組のレギュラーメンバーと同レベルだと思われますので。
0916デフォルトの名無しさんNGNG
>>913は釣り?
http://pc5.2ch.net/test/read.cgi/tech/1032421426/349
0917デフォルトの名無しさんNGNG
>>905
LVM_INSERTCOLUMNで適当なColumn追加。
0918デフォルトの名無しさんNGNG
現在、linuxにてプログラムしているのですが、スタックオーバーフローになります。
そこで、質問ですが、たとえば、プログラム中に不要なヘッダファイルが
includeされている場合、その定義をはずすと、メモリやスタックの容量が減るいうことは
あるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授ください。
0919デフォルトの名無しさんNGNG
>>918
ヘッダファイルの中でよほど邪悪なことをしていない限りそういうことはない。
0920デフォルトの名無しさんNGNG
>>918
ローカルででかい配列でも使ってるんじゃないの?
0921913ですNGNG
つりじゃないけど


>>914
VisualC++とかについてるエディターって意味でした、すみませぬ。
どのスレに書いたらいいか分からなくて

宜しくお願いします
0922デフォルトの名無しさんNGNG
Vimでもインテリセンスができるプラグインとかあるが、あまりオススメできない。
インテリセンスが必要なら素直にVCで開発しとけ。
0923デフォルトの名無しさんNGNG
>>921
Dev-c++は構造体のメンバの補完ができる。
0924sageNGNG
ここで聞いて良いのか分からないのですが・・・

今日
Microsoft
Visual C++.NET
Standard Version2003アカデミック
を買ってきて、Service Pack4をダウンロードしたのですが、
ここからどうすれば良いのか分かりません。

ファイルを開くと、
インストールされているWindowsのバージョンは、インストールしようとしている更新に一致しません。
と出ます。
誰か教えてください。
0925924NGNG
すいません、どうやら勘違いしてました.
0926デフォルトの名無しさんNGNG
そろそろ、次を立てたほうがいいのでは?
0927デフォルトの名無しさんNGNG
ここで聞いて良いのか分からないのですが・・・

今日
Microsoft Visual Studio.NET 2003
をダウンロードしたのですが、
ここからどうすれば良いのか分かりません。

誰か教えて下さい。
0928デフォルトの名無しさんNGNG
釣りですか、そうですか
0929927NGNG
すいません、どうやら勘違いしてました.
0930913NGNG
>>922ドモデス。
VC++がいいでしょうか。
インテリセンスって関数の引数なんかもパッと表示されますか?
自分はVBAの経験しかないです。
今cもはじめた所で、入門の本を二冊読みました。
ボーランドのフリーコンパイラを使っていますが、メモ帳で書いてますので
結構めんどくさいというか、ちょっとミスでコンパイラエラーになってしまって。
エディタさえフリーでいいの有ればなあと思ってたんですが・・・

ご返事ありがとうござります。

0931デフォルトの名無しさんNGNG
>>930
入門書を読んでるレベルなら、インテリセンス/入力補完機能はいらないから
普通にC/C++対応のエディタをvectorあたりで探して使えばいい。
開発環境を購入するのは入門レベルを脱してからで十分。

>結構めんどくさいというか、ちょっとミスでコンパイラエラーになってしまって。
ちときついこと言わせてもらうと、それならVBAだけやってたら?
入門書のサンプルコードぐらい直打で全部走らせてみる根性がなければ
どうせ身につかないよ。
0932デフォルトの名無しさんNGNG
>>931
>入門書を読んでるレベルなら、インテリセンス/入力補完機能はいらないから
いる/いらないを判断するのは>>913だと思うが。

>ちときついこと言わせてもらうと、それならVBAだけやってたら?
>入門書のサンプルコードぐらい直打で全部走らせてみる根性がなければ
>どうせ身につかないよ。
お前はそうかもしれないが、自信満々に断言することじゃないだろ。
俺は個人的には入門レベルでの無駄な努力は排するべきだと思う。
0933デフォルトの名無しさんNGNG
C++のoperator演算子の継承について教えてください。

スパークラスに書いたoperator演算子のオーバーライドは
継承クラスでは、明示的に定義しないと使用できないのでしょうか?

例〜
class A
{
public:
int a;
void operator = (int b){ a = b; }
};
class B : public A
{
public:
int dummy;
};

[実行]
B clsb;

clsb = 5; //←この処理はclassAのoparetorが動かないの?

*((A *)&clsb) = 5; //←こんな事すれば呼ばれますがさすがに・・
0934デフォルトの名無しさんNGNG
代入演算子とあと何かは継承されない。
でも、他の演算子は大体継承されるよ。
0935933NGNG
>>934
そうなんですか・・・
継承されるのとされないのがあるんですね orz

本当はoperator newやdeleteの継承なんですけど、
これも継承してないって事はダメっぽいんですね・・

レスありがとうっす〜


ああ・・どうしよう(鬱
0936デフォルトの名無しさんNGNG
>>935
をいをい、new/deleteを継承?
コンストラクタ/デストラクタでなく?
0937933・935NGNG
>>936
少し説明が足りませんでしたか・・・
でも、operator newって書いたから分かるかと思って・・
さっきの例を改造するなら、
例〜
class A
{
public:
void *p;
void *operator new (size_t size){ p = new(size);return p; }
};
class B : public A
{
public:
int dummy;
};

っていう意味です・・
0938933・935NGNG
>>937
operatorが抜けてた・・orz
void *operator new (size_t size){ p = ::operator new(size);return p; }

訂正しときます。

まぁ、例なんで、どうでもいいけど(;´∀`)
0939デフォルトの名無しさんNGNG
>>938
>void *p;
>void *operator new (size_t size){ p = new(size);return p; }
void* operator new(size_t size) { void* p = ::operator new(size); return p; }
じゃだめかな
0940デフォルトの名無しさんNGNG
>>937-938

>少し説明が足りませんでしたか・・・
説明が足りないっつーか用語の使い方を間違ってる

>でも、operator newって書いたから分かるかと思って・・
エスパーの存在を期待しない方がよい

>まぁ、例なんで、どうでもいいけど(;´∀`)
どうでもよくない。一番重要。
0941933NGNG
>>939
カンペキでつ!

むしろ、publicにvoid *pなんて書いたおいらは良くてワーニング
悪くてエラーっぽいんで、逝ってきまつ・・

>>940
申し訳ないorz
0942デフォルトの名無しさんNGNG
つう訳で、質問するときは最初から、”その”ソースを晒してくれると話が早いわけだ。
0943デフォルトの名無しさんNGNG
ほんとどうでもいい事かも知れないが、
coutとcinの語源ってなに?
1年Cを勉強してきたが、C++もおもしろそうだな・・。
0944デフォルトの名無しさんNGNG
c(onsole)in
0945デフォルトの名無しさんNGNG
>>944
あ、なるほど。
coutは(out)出力って事かw
サンクス!
0946デフォルトの名無しさんNGNG
>>931
>>932
まあ、おっしゃる通りなんだけど
マダはじめたばかりで、手動でコンパイルやデバッグ(デバッグといっても多くて50行くらいだし)することには
別に苦じゃないんだ。
ただうっかりミスや自動メンバ表示みたいな機能があったらいいのになぁと思って・・
ベクターでは探してみたんですけど、3つくらいしかなくて紹介だけではあんまりよく分からない。
で、誰かいいの知ってる人いたら教えてもらいたかっただけなんです。

自分がc使いこなせるかどうか分からないし、vc++買って無駄になったらもったいないし
フリーで試してみたかっただけです。
ごめんなさいです。
0947913NGNG
>>946=>>913です
0948デフォルトの名無しさんNGNG
>>946
>ただうっかりミスや自動メンバ表示
「自動メンバ表示」はわかる。「ただうっかりミス」とはどんな機能なんだ?
0949デフォルトの名無しさんNGNG
>>946
>ベクターでは探してみたんですけど、3つくらいしかなくて
>紹介だけではあんまりよく分からない。
使ってみれば分かるんじゃない?
0950デフォルトの名無しさんNGNG
void func(int cnt)
{
for (int i = 0; i < cnt; ++i) {
#ifdef BAR
ClassB foo;
#else
ClassA foo;
#endif
foo.put();
//だとかなんだか、諸々の処理
}
}
概ねこげな関数がある。
今はマクロでClassA/ClassBを使い分けてるが、
これをbool barを引き数として渡して動的に使い分けるようにしたい。
なんかいい手はないもんだろか。
0951デフォルトの名無しさんNGNG
>>950
ClassAとClassBの関係は?

っていうか、素直にオブジェクトを見直したら?
0952デフォルトの名無しさんNGNG
静的に解決する場合もマクロよりテンプレート使った方がいいと思うがそれはともかく。

classAとclassBの間に継承関係はある?
あるのならもちろん仮想関数で解決できる。
今ない場合も共通のインターフェイスを継承するようにすれば解決できる。
これが一番言語的なサポートを受けられて簡単かな。

フリー関数でラップしてそのポインタを利用する。
より高度な枠組みとして簡単な deligate 風の仕組みを作る方法もあるが。
0953デフォルトの名無しさんNGNG
>>951、>>952
早速の回答THX。

元のソースがcで、ClassAは既存構造体と関数をクラスにまとめたもの。
で、ClassBはそれとI/Fが同じになるように実装した。
となると、>952の共通のI/Fを継承するって線かな。
0954デフォルトの名無しさんNGNG
>>950
class Base {
public:
 virtual void put() = 0;
};

class A: public class Base {
 void put();
};

class B: public class Base {
 void put();
};

Base *p = bar ? new classB : new classA;
p->put();
delete p;
0955デフォルトの名無しさんNGNG
俺も>>954と全く同じソース書いてたんだが
条件演算子内の異なる new 式は
それぞれの記述部分で基底クラスのポインタにキャストしないと gcc-3.2 で警告が出た。

あとは本物のコードで put が例外投げることを気にするなら std::auto_ptr あたりでラップ、だな。
0956950=953NGNG
おおお、漏れが頭捻ってる間にすぐにも使えるサンプルキター♪

>>954
感謝♪
0957950=953=956NGNG
>>955
こちらにも感謝。
今回は元がcのコードなのでput()が例外投げるなんて事もないけど、
今後のためにstd::auto_ptrも調べてみるよ。
0958デフォルトの名無しさんNGNG
>>948
えーと、例えば行末のセミコロンの付け忘れとか、引数の型が違ったり
全角スペースみたいなのがあったり、
コマンドからコンパイルの命令してるから、エディタでフォーカスが外れるときに
チェックしてくれるとか、改行するときにおかしな所を知らせてくれるとか。
VBAにあるような感じのエディタ
0959デフォルトの名無しさんNGNG
>>958
>コマンドからコンパイルの命令してるから、エディタでフォーカスが外れるときに
>チェックしてくれるとか
意味不明
0960959NGNG
>>958
エディタのウィンドウが非アクティブになったとき
またはソース編集中に改行したとき、
 ・ セミコロンのつけ忘れ
 ・ 引数の型
 ・ 文字列リテラル以外の全角スペース
をチェックして警告してくれるエディタ

ってこと?
プログラミングもいいけどコミュニケーションの練習もしたほうがいいね。
0961デフォルトの名無しさんNGNG
このスレで聞くべき内容ではないのかもしれませんが
一応C++で書いているのでここで質問させてください。

質問
完成させたプログラムを他人に見せる・説明する・提出する場合に
どのように体裁を整えるべきでしょうか。
状況としては

・面識の無い他人に説明する
・相手にする人数は数人か、多くとも10人未満
・双方に取って金銭的な利益・不利益は一切生じない
・結果だけではなく(プログラミングの)過程に関しても説明する

いい例かわかりませんが、例えば大学の卒業論文や修士論文などを
提出・発表する際には、論文の他にアブストラクト(要約書)を用意し、
また論文の中身については表紙、目次、はじめに、などを加えるのが
普通だと思います。
あるいはフリーソフトではHelpとread meファイルは大抵付いていると思います。
このようにプログラムのソース以外の部分についての常識といいますか
最低限これだけは付加しておくべき、という項目のようなものがありましたら
是非教えていただけないでしょうか。
0962デフォルトの名無しさんNGNG
マ板ネタかな
0963デフォルトの名無しさんNGNG
>>961
質問,ツッコミが入りそうなところをまとめておいたほうがいいと思う。
どんなプログラムかわからないから、不要、無関係なものもあるだろうけど。

・プログラムの目的、予想される結果、実際の結果
・結果としてデータとか出力するものなら、それの説明と考察
・実行時に与えるコマンドライン引数、もしくは実行中に与える入力例
 何か数値を与えるなら想定してる範囲と、範囲外のときの処理
・プログラムのフローチャートみたいなもの
・利用,作成した 関数,変数,クラスなど の(おおまかな)説明
・実行,コンパイルできる環境 (OSとかコンパイラーとか)
・なぜその言語や、出力手段(グラフとかグラフィックとかいったプレゼンの方法)を
 選択したのか
・(あっちゃいけないのかもしれないけど、)改善できそうな点

説明とかで↑の内容が抜けてたら、私は質問すると思う。
0964デフォルトの名無しさんNGNG
>>961
完成までに要した時間(期間)とか人数なんかも気になる。
>・結果だけではなく(プログラミングの)過程に関しても説明する
ってのに含まれるのかな
0965デフォルトの名無しさんNGNG
>・プログラムのフローチャートみたいなもの
これ要らない。スレ違いの議論回避のため、理由は割愛。
0966デフォルトの名無しさんNGNG
マネージドC++での質問なのですが
.NETフォームのWindowハンドルを取得するにはどうすれば良いのでしょうか?
メッセージでのやり取りをしたいので・・・
0967デフォルトの名無しさんNGNG
public: __property virtual IntPtr get_Handle();
SDKドキュメント読むべし
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformscontrolclasshandletopic.asp
0968967NGNG
>>966
と言うかこんなスレがあります

managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
0969デフォルトの名無しさんNGNG
新すれ
http://pc5.2ch.net/test/read.cgi/tech/1082182233/l50
0970961NGNG
>>962
言われてみれば確かに板違いの内容だったかもしれません。
以後気をつけたいと思います。どうもすみませんでした。

>>963-965
大変参考になりました。
フローチャートは用意する予定だったのですが、必ずしもそれが
良い行為であるとは限らないという感じでしょうか。
ただこれ以上はみなさんの迷惑になりそうなので、後は何とか
自分なりにまとめてみようと思います。

みなさんどうもありがとうございました。
0971デフォルトの名無しさんNGNG
新スレ作るの早過ぎないか?
埋めるぞ
0972デフォルトの名無しさんNGNG
http://www.2ch.net/accuse2.html
6 荒しの定義
保守荒らしや埋め立て、1000取りも無駄にサーバリソースを消費する行為なので、禁止します。
0973デフォルトの名無しさんNGNG
>>972
こんなのあったんだ?いつからだろ
0974デフォルトの名無しさんNGNG
Last-Modified: Sat, 14 Feb 2004 12:41:31 GMT

少なくとも2004年2月14日(土)12時41分31秒には既に存在していたらしいな
0975デフォルトの名無しさんNGNG
GMTか。日本時間午後9時?
0976デフォルトの名無しさんNGNG
>>975
時差について勉強しましょう。
0977デフォルトの名無しさんNGNG
>>974
かなり最近のルールなんだな。
0978デフォルトの名無しさんNGNG
2003年6月には、まだなかったらしい。
ttp://web.archive.org/web/*/http://www.2ch.net/accuse2.html
0979デフォルトの名無しさんNGNG
>>976
JST の方が 9 時間早いんだからあってるんじゃないの?
0980デフォルトの名無しさんNGNG
>>976
時差について勉強しましょう。
0981デフォルトの名無しさんNGNG
Windowsプログラムを作成したいと考えています。
コンパイラはbcc5.5でOSはWinXPです。
'Winmain'が未解決というエラーを無くすには、どのようにすればよいのでしょうか。
0982デフォルトの名無しさんNGNG
>>981
WinMain関数が定義されていないので定義してやればいい。
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
) {
return 0;
}
0983デフォルトの名無しさんNGNG
ありがとうございます。

もう一つ質問してもいいですか?
PSDKをインストールしたのですが、
これをbccで使うにはどうすればよいのでしょうか。
0984デフォルトの名無しさんNGNG
>>983
最新のAPIを使うのでなければ、BCC付属のモノを使った方が楽。
ヘッダファイルはともかく、インポートライブラリをcoff2omfとかで変換したり、
作成したりするのはかなりの手間。
0985デフォルトの名無しさんNGNG
>>981
コンパイラ bcc32 に -wc オプションをつけてコンパイルする

IDEを使っているなら、ターゲットを
「Windowsアプリケーション (-w)」
から
「コンソールアプリケーション (-wc)」
に変更する
0986デフォルトの名無しさんNGNG
>>983
なるほど、凄い量ですしね。
簡単にインポートできるようなソフトでもない限り、
bcc付属のやつを使ったほうがよさそうですね。
ありがとうございました。
0987デフォルトの名無しさんNGNG
すみません、間違いました。
986は>>984へのレスです。

>>985
なるほど、オプションを変えてみるのも手ですね。
やってみます。
0988デフォルトの名無しさんNGNG
偶数であって奇数でない物はナンですか?
0989デフォルトの名無しさんNGNG
すべての偶数
0990デフォルトの名無しさんNGNG
そろそろ、1000取り合戦の始まりか?
0991デフォルトの名無しさんNGNG
このまま地味にいくのも趣があっていいなぁ
0992デフォルトの名無しさんNGNG
ちゅるーん
0993デフォルトの名無しさんNGNG
ちゅるるーん
0994デフォルトの名無しさんNGNG
くまさんのぜりーでね、ちゅるんってしたの!
http://replay.hypermart.net/okusuri.mpg
0995デフォルトの名無しさんNGNG
しゃーない、一人でちゅるんするもんね。
0996デフォルトの名無しさんNGNG
ちゅるりん
0997デフォルトの名無しさんNGNG
でろりん☆
0998デフォルトの名無しさんNGNG
埋めるの?
埋めないの?
0999デフォルトの名無しさんNGNG
1000まで少しだね
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。