【初心者歓迎】C/C++室 Ver.13【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【歴代スレ】
1:http://pc5.2ch.net/tech/kako/1059/10590/1059041347.html
2:http://pc5.2ch.net/tech/kako/1067/10671/1067189450.html
3:http://pc2.2ch.net/test/read.cgi/tech/1069719929/ (消滅?)
4:http://pc2.2ch.net/test/read.cgi/tech/1073473867/ (消滅?)
5:http://pc5.2ch.net/test/read.cgi/tech/1077102238/ (dat落ち)
6:http://pc5.2ch.net/test/read.cgi/tech/1082182233/(dat落ち)
7:http://pc5.2ch.net/test/read.cgi/tech/1086373839/(dat落ち)
8:http://pc5.2ch.net/test/read.cgi/tech/1091264964/(dat落ち)
9:http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
10:http://pc5.2ch.net/test/read.cgi/tech/1097416187/
11:http://pc5.2ch.net/test/read.cgi/tech/1099190154/
12:http://pc5.2ch.net/test/read.cgi/tech/1101100031/
【ラウンジ】質問、回答が長い時はココを使うと見やすい
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
関連スレは>>2-5ぐらい
0232デフォルトの名無しさん
05/01/18 16:42:410233デフォルトの名無しさん
05/01/18 16:46:52gethostbyname() で、
コンピュータ名から IP 得られなかったっけ?
0234デフォルトの名無しさん
05/01/18 17:29:52COMが使える言語ならどれでもいいと思うよ。
0235デフォルトの名無しさん
05/01/19 14:08:160237デフォルトの名無しさん
05/01/19 15:56:04lstrcat(buf,"\x00");
0238デフォルトの名無しさん
05/01/19 15:57:21上記のような文をforループで回して文字列を作成したいのですが
ヌル文字の部分だけ抜けてしまいます。 何か良い方法ってありますか?
0239デフォルトの名無しさん
05/01/19 15:58:25buf[len+1]=0;
0240デフォルトの名無しさん
05/01/19 16:04:230241デフォルトの名無しさん
05/01/19 16:09:25class CTest
{
void Draw() {};
void DrawTest2( CTest2 test2 ) {};
}
[ CTest2.h ]
class CTest2
{
void Draw() {};
void DrawTest( CTest test ) {};
}
main.cppの中でこれらを使用するにはどうしたらいいんでしょうか?
0242232
05/01/19 16:10:27ご返答ありがとうございました。
0244デフォルトの名無しさん
05/01/19 16:19:09class CTest;
class CTest2;
をヘッダーの最初に書け
0245デフォルトの名無しさん
05/01/19 16:31:46よくよく考えたら当たり前か・・・。
自作関数でもつくるしかなさそうですね。
ありがとうございました。
0246デフォルトの名無しさん
05/01/19 16:44:04VCでやってるんですが、なぜかできないんですよ
エラーメッセージは
認識できない型 'CTest' が使われています。 >>> Init( CTest test ) {}の部分
CTest2' の宣言を確認してください。 >>> clas CTest2;
0247デフォルトの名無しさん
05/01/19 16:44:54エラーメッセージ訂正
エラーメッセージは
認識できない型 'CTest' が使われています。 >>> Init( CTest test ) {}の部分
'CTest' の宣言を確認してください。 >>> class CTest;
0248デフォルトの名無しさん
05/01/19 16:59:27クラス定義の後で;忘れ
0249デフォルトの名無しさん
05/01/19 17:06:27いや ちゃんと書いてます。
0250デフォルトの名無しさん
05/01/19 17:07:13なんでだろ〜なんでだろ〜〜><;
0251デフォルトの名無しさん
05/01/19 17:12:07UPしたのでどうやったらコンパイルできるか誰か教えて
0252デフォルトの名無しさん
05/01/19 17:12:100253252
05/01/19 17:13:170254デフォルトの名無しさん
05/01/19 17:13:52class CTest
{
void Init( CTest2 test ) {}
};
class CTest2
{
void Init( CTest test ) {}
};
int main()
{
return 0;
}
まーたったこれだけだからUPするまでもなかったorz
0255デフォルトの名無しさん
05/01/19 17:34:150256デフォルトの名無しさん
05/01/19 18:05:15sub.cppで#include "Func.h"
Func.h内は
クラスTimerの定義が有るとすれば
いくら
#ifndef DEF_NAME
#define DEF_NAME
...
#endif
した所で、コンパイルして後のリンク時に再定義エラー
が起こるわけで............。
これじゃ、再定義にならないように#ifndef,#defineの意味無いんじゃない?
1つのソースファイル内でまさか2度同じヘッダをインクルードするわけ
なんてないし...
だとしても、直ぐに気づくと思いますが
0257256
05/01/19 18:08:010258デフォルトの名無しさん
05/01/19 18:24:380259デフォルトの名無しさん
05/01/19 20:05:50そうなのかな?
オブジェクト指向だと双方向関連って普通にあると思うけど
あと全く同じプログラムじゃないけど
Win32プログラムだとなぜかうまくいく。。。なぜなんだ・・orz
0260デフォルトの名無しさん
05/01/19 20:29:21あのね、君が普段から悪い設計しかしないのは解かったから。
0261デフォルトの名無しさん
05/01/19 21:33:19は? 双方向関連 やってると設計が悪いのか?
オマイ だめぽw
0262デフォルトの名無しさん
05/01/19 23:40:18関数の定義と実装を分ければ解決しますよ(たぶん)
0263デフォルトの名無しさん
05/01/19 23:43:16いや、ダメなのは君の方だよ。場合によってはリスナとか作れよ。
0264256
05/01/19 23:45:00レスありがとうございます。
なんだかヘッダファイルの意味をとんでもなく誤解してたみたいです。
ソースファイルのみで作った方が楽な気がしてきた。
何故ライブラリ作るんだろうと思ってたんですが、腑に落ちた気がしました。
0265256
05/01/20 00:07:25やっぱりライブラリの意味が見出せない。(ry
0266デフォルトの名無しさん
05/01/20 00:22:42でかいプロジェクト扱ったこと無いだろ。
0267デフォルトの名無しさん
05/01/20 00:27:11それだけならコンパイル通るはずだぞ。
ホントにそれだけでコンパイルしたのか?
実際はそれ以外のコードが含まれるんじゃないか?
>>265
それ、勉強つか経験が決定的に不足してるわ。
ある程度コーディングの経験があればヘッダファイルの有難味は判る。
0268デフォルトの名無しさん
05/01/20 00:29:32彼はきっと学部1年生だ。許してやれ。
0269デフォルトの名無しさん
05/01/20 00:38:56CTest2はCTestより後で定義されてるからCTestはCTest2のサイズを知らない。
そういう場合はポインタ使え。よくある相互参照の解法だ。
ポインタそのものは環境依存だがサイズは固定値。
指してる先の構造体(この場合のCTest2)のサイズがまだ分からない時にも使える。
逆に、CTestはCTest2より前に定義されてるから
CTest2はCTestのサイズを知っている。よってポインタにする必要無し。
したがってこの1箇所の修正でコンパイル通るんじゃないかな?
class CTest
{
void Init( CTest2 *test ) {}
};
他のコードは一緒。
VC++7.1(のcl.exe)とcygwin g++3.2の両方でコンパイル通ったよ。
0270デフォルトの名無しさん
05/01/20 07:59:35不完全型は引数の型とすることはできないだろ。
前方宣言と参照で済ますところだな。
0271デフォルトの名無しさん
05/01/20 10:00:37sleepだと本当に止まってしまうので使えない
VBでいうタイマーコントロールみたいなことをしたいのだけれど
誰か教えてたも
くそ初心者でごめん
0272デフォルトの名無しさん
05/01/20 10:04:18SetTimer,WM_TIMER
0273デフォルトの名無しさん
05/01/20 10:07:21>>272 の他に、マルチスレッドを使うという手もある。
0274デフォルトの名無しさん
05/01/20 10:11:18それをキーワードに調べてみますよ
0275デフォルトの名無しさん
05/01/20 10:41:05なるほど。構造のサイズが必要になってたんですね。
さすがでした。ありがとうございます。m( _ _ )m
関連ってポインタでとるものなのに、
簡単なテストコード書いたときに、面倒だったため、
省略してしまいました。
早く気づけば・・orz
0276デフォルトの名無しさん
05/01/20 12:31:05コンソールアプリで終了時にコンソール画面を残すことはできますか?
いままではBCC+BCC Developerで作ってたのでわかりません・・・;
初歩的な質問ですがお願いします。
0277デフォルトの名無しさん
05/01/20 12:35:19過去ログでも嫁
0278276
05/01/20 13:27:17Ctrl+F5でできたとは・・・鬱
0279デフォルトの名無しさん
05/01/20 14:08:08for(z=-10;z<=10;z++){
for(y=-10;y<=10;y++){
x=(Xnosa1(T,A,K,y,z))*(Xnosa1(T,A,K,(y+1),z));
if(x<0){
※Xnosa1(T,A,K,y,z)、Xnosa1(T,A,K,(y+1),z)は関数
例えばこの様に書いたときに、x<0になる事が何度もあっても、初めにx<0になった時点でその時の値だけを返してfor文を終了させるにはどうすればよいでしょうか?
よろしくお願いします。
0280デフォルトの名無しさん
05/01/20 14:13:40if (x < 0) {
return x;
}
単純に二重ループから脱出したいなら
for () { for () {
if (x < 0) {
goto OutOfFor;
}
}}
OutOfFor:
0281デフォルトの名無しさん
05/01/20 14:49:17ガイシュツかもしれませんしググレって言われるかもしれませんが、どこも初心者にも
判りにくいので質問させていただきます。
「半角文字を全角文字」にする方法を教えてください。
どこのサイトもわかりにくかったので・・・。
判りやすいサイトでもあればよいのですが。
自分も引き続きしれべますけどお願いします。
0282デフォルトの名無しさん
05/01/20 15:02:57文字コードについて勉強汁。
0283デフォルトの名無しさん
05/01/20 15:12:00LCMapString
0284281
05/01/20 15:39:270285デフォルトの名無しさん
05/01/20 19:42:18パラレルポートを監視し、その状態に応じ処理を行うものです。
やりたいことは、以下の様な処理です。
int main(void){
/* ここで初期化 */
while(1){
/* パラレルポートの状態を見る。*/
/* hoge 実行 or 何もしない */
}
/* ここで終了処理 */
return 0;
}
このままですと、アプリ終了のためにはCtrl+C等が必要ですが、その場合
終了処理が行えないのが困りものです。パラレル及びhogeのコードそのものに問題はなく、
悩んでいる点は、上記の様なwhileをしつつ、どうやって終了処理をするか、です。
わからないなりに調べ、以下の方法で実現できるかも、という段階まできました。
(案1) Ctrl+Cのシグナルハンドラ作って終了処理を記述
(案2) 副スレッド作ってwhileをやらせる。本スレッドに、getcなどで副スレッド終了用のインターフェース記述
これらが妥当な方針かどうか御教示願えますでしょうか?
(シグナルにせよスレッドにせよまだ勉強不足ですが、そこは今後じっくりやるとして、
方針が正しいかどうか教えて頂きたいのです)
長文すみません。宜しくお願い致します
0286デフォルトの名無しさん
05/01/20 20:05:260287271
05/01/20 20:32:43そんなわけで「まるちすれっど」を採用しようと思うんですけど、こいつの精度ってどんなもんですか?大体でいいから数字で知りたい。
欲を言えば5ms、最悪20msくらいの分解能はほしいのです。
0288デフォルトの名無しさん
05/01/20 20:49:40【プログラミング歴】数ヶ月
【2ch歴】3年程
【職業】学生
【質問】卒業研究でC++のプログラムを作ることになりまして,皆さんに教えて頂きたいのです.
#include "spec.h"
const double spec::getsVST() { return 23.00; }
const double spec::getsTCV() { return 1.54; }
const double spec::getsSK() { return 0.097; }
このようなcppファイルがあり,今はreturnで数を代入していますが,
他プログラム(Visual C++)
void CCompDlg::OnSaveButton()
{
UpdateData(TRUE);
CFile f;
f.Open("C:\\Compspec.txt",
CFile::modeCreate | CFile::modeWrite );
CArchive ar( &f, CArchive::store );
ar << m_VstEdit << m_TcvEdit << m_SkEdit;
ar.Close();
f.Close();
}
で作成したファイルを読み込んで使用したいのですが,どのように組み込んで良いのかわかりません.
ぜひどなたか詳しい方,方法をお教え願います.
0289デフォルトの名無しさん
05/01/20 21:01:46藻前の作り方とコンピュータのスペック、
その時の状況などによる。
0290デフォルトの名無しさん
05/01/20 21:02:28ファイルの構造は書き込んだ順にデータが並んでいるだけだ。その順で読み込め。
CFile::Open
CArchive::CArchive
CArchive::operator>>
をヘルプで見よ
0291デフォルトの名無しさん
05/01/20 21:06:20レスありがとうございます。読み込むには上のcppファイルをどのようなにすれば良いのでしょうか?
思い当たるものを試したんですが、うまくいかないんです。
0292デフォルトの名無しさん
05/01/20 21:08:33ヘルプ見ない奴は何度も同じような質問をする。
0293デフォルトの名無しさん
05/01/20 21:22:16char * で処理可能なら従来の C 的なコーディングのほうが
良いのでしょうか?(速度面やサイズなどで)
0294デフォルトの名無しさん
05/01/20 21:29:21多用OKです。環境はVisualC++6.0です。
0295デフォルトの名無しさん
05/01/20 21:38:40それ以外はすべてstd::string
0296デフォルトの名無しさん
05/01/20 21:56:30速度を求められる場面ってまずないけどな。
アルゴリズムの方がよっぽど重要ネ
0297デフォルトの名無しさん
05/01/20 22:04:55そうか、わかった。よーくわかったぞ。
0298デフォルトの名無しさん
05/01/20 22:11:03フロッピーディスクが書き込み可能かどうか
(使用可能なフォーマットかどうか)
を調べる処理がどうやれば良いのかわかりません。
よろしくお願いいたします。
0300デフォルトの名無しさん
05/01/20 22:23:27その通りだよ。>>295みたいな時代錯誤ジジイの言うことは聞かなくていいからな。
0301295
05/01/20 22:29:390302デフォルトの名無しさん
05/01/20 22:31:18{
char ans;
while(1) {
printf("INPUT y or n\n");
scanf("%c", &ans);
if('n' == ans)
break;
}
return;
}
上のプログラムで y を入力すると「INPUT y or n」
が2行続けて出力されてしまいます。1行のみ順に
出力するにはどうしたらいいのでしょうか?宜しくお願いします。
環境、windows2000proSP4,VisualC++ 6.0SP6
0303デフォルトの名無しさん
05/01/20 22:34:58タイマーの精度に対してはあまり正確なものは期待できない。
SetTimerよりも、と言う限定つきであれば「マルチメディアタイマー」
について調べてみよ。
0304デフォルトの名無しさん
05/01/20 22:42:56散々既出だが、scanf()を捨てることをお勧めする。
0305デフォルトの名無しさん
05/01/20 22:50:38試してないからうまくいくか分からないけど
- scanf("%c", &ans);
+ scanf("%c%*c", &ans);
0307デフォルトの名無しさん
05/01/20 23:24:43scanf(" %c", &ans);
0308デフォルトの名無しさん
05/01/20 23:48:160309デフォルトの名無しさん
05/01/20 23:53:23std::vector
0310デフォルトの名無しさん
05/01/20 23:54:530311302
05/01/21 00:00:33ありがとうございました。
0312デフォルトの名無しさん
05/01/21 11:36:150313デフォルトの名無しさん
05/01/21 12:25:38他人のDLLを使うプログラムで
最終的にDLLを使わず
実行ファイル一本にする方法が
あったら教えていただけると助かります。
環境はWINとBCCとDIRECTX
DLLのソースが無い状態です。
ライセンスひとまず考え無いものとします。
0314デフォルトの名無しさん
05/01/21 12:26:160315デフォルトの名無しさん
05/01/21 12:30:15ライセンスが不要と考える根拠は?
0316デフォルトの名無しさん
05/01/21 12:33:350317デフォルトの名無しさん
05/01/21 12:34:30DLLで行っている処理を自分で実装する。
これ以外は有り得ない。
って言うか、DLLはexeと別にあるから意味がある。
0318313
05/01/21 12:36:08必要になるために
無償で配布されてるライブラリなのと
作るものは商用とかそういうレベルじゃないし
仲間に配るだけなんで
0319デフォルトの名無しさん
05/01/21 12:38:230320313
05/01/21 12:40:460321デフォルトの名無しさん
05/01/21 12:44:24なぜ?
ファイルの数は変わっても、
全体のサイズは変わらないぞ?
0322デフォルトの名無しさん
05/01/21 12:44:270323デフォルトの名無しさん
05/01/21 12:48:22著作権も考えてからものを言え。
0324313
05/01/21 13:00:42なるほどわかりました。ありがとうございました。
0325デフォルトの名無しさん
05/01/21 20:57:06class A : public float
{...
が通りません。
仕様ですか?
0326デフォルトの名無しさん
05/01/21 21:02:17しょうです
0327デフォルトの名無しさん
05/01/21 21:28:42float はクラスじゃないだろ。
0328デフォルトの名無しさん
05/01/21 22:55:42その発想はすごい
0329デフォルトの名無しさん
05/01/21 23:26:56なんで?
0330デフォルトの名無しさん
05/01/22 09:31:31ぐぐっても入門書を漁っても解決できませんでした…。
一つ目は、
class test{
char test[3]=3;
};
とすると初期化できないというエラーがでるんですが、文法的に間違っているんでしょうか?
2つ目
test.cpp
int main(void){
char test[2][2][2]{
2,2,2,2,2,2,2,2,
};
return 1;
}
とすると「初期化子の一部のみに括弧が付いている」という警告が沢山出て困っているんですが
どういう意味の警告か分かりません。どうすればこの警告が消せますか?
3つ目は入門書には配列は右から詰め込むと書いてあったので、下のようにすると
今度はさっきのに加えて初期化子が多すぎるとエラーがでます。
int main(void){
char test[2][2][2]={
{2,2},
{2,2},
{2,2},
{2,2},
};
return 1;
}
何がどうなってるのかさっぱり分かりません。どなたかよろしくお願いします…。
0331330
05/01/22 09:54:26char test[3]={1,2,3};
};
でした。よく探すと、初期化リストでは出来ないと書いてありました。すみません。
■ このスレッドは過去ログ倉庫に格納されています