【初心者歓迎】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ぐらい
0153デフォルトの名無しさん
NGNG諦めましょう。
0154デフォルトの名無しさん
NGNGモチツケ。そしてEffectiveSTLを読んでみろ。
エラーの解読方法が書いてある。
0155デフォルトの名無しさん
NGNGわかりました紀伊国屋いってきます
0156デフォルトの名無しさん
NGNGその項だけ立ち読みすればいいと思われ
ていうか、ただ「似てる部分はまとめろ」ってだけだけど
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGFILE *fp;
char keyword[80];
char line[256];
char* sp;
int size = 0;
if( argc<3 || (fp=fopen(argv[1],"r") ) == NULL){
printf("can not open file");
exit(1);
}
strcpy(keyword,argv[2]);
size = strlen(keyword);
while(fgets(line,256,fp) !=NULL){
sp = strncmp(line,keyword,size);
if(sp==0){
printf("%s",line);
}
}
fclose(fp);
return 0;
}
----------------------------------------------------------------------
文字列処理のプログラムなんですが、keywordが1文字だった場合、
keywordに空白を追加して文字列比較(strncmp)の処理を行いたいのです。
どのようにすればよいでしょうか?
0160デフォルトの名無しさん
NGNGsizeが1だったらstrcatで" "を追加。動作はデバッグして調べよ
0161デフォルトの名無しさん
NGNG○痴かよド畜生が!
main()
{
char name[7] = {"NURUPO"};
char *add;
int i;
add=name;
for(i=0; i<6; i++){
printf("%Xは文字%cを表している。\n",add,*add);
add++;
}
printf("\n");
printf("逆に並べ替えると\n");
for(i=5; i>=0; i--){
printf("%Xは文字%cを表している。\n" );
}
}
NURUPOを反転表示させたいのですが、どのようにすればいいでしょうか?
0163デフォルトの名無しさん
NGNGmain()
{
char name[] = "NURUPO";
char *add = name;
int i;
for (i = 0; i < 6; i++) {
printf("%Xは文字%cを表している。\n", add, *add);
add++;
}
printf("\n逆に並べ替えると\n");
for (i = 5; i >= 0; i--) {
printf("%Xは文字%cを表している。\n", add, *add);
}
}
0164デフォルトの名無しさん
NGNG#include <string.h>
#include <algorithm>
int main()
{
char name[] = "NURUPO";
printf("%s\n", name);
std::reverse(&name[0], &name[strlen(name)]);
printf("%s\n", name);
return 0;
}
0165デフォルトの名無しさん
NGNG#include <cstring>
#include <algorithm>
using std::puts;
int main()
{
char name[] = "NURUPO";
puts(name);
std::reverse(name, name + strlen(name));
puts(name);
return 0;
}
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGという関数を実行したとき返り値を必ずどこかに格納しなくてもいいんでしょうか?
例
int* a = func(); を func();だけにする。
0168デフォルトの名無しさん
NGNGいなければ構わないよ。
0169デフォルトの名無しさん
NGNG言い方悪くない?
>>167
そのポインタが指すオブジェクトを、
呼び元が解放しなければならない場合は駄目。
そうでなければ構わないよ。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG解決しました。レスありがとうございます
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGif(search_flug == 0){//もしもsearch_flug=0ならば新ノード作成
New_nord = (struct word *)malloc(sizeof(struct word));//そのノードの次ノードを作って。
strcpy(New_nord -> name,word_name);//単語を登録
(New_nord -> appear)++;//出現回数に1を加算
New_nord -> Next_pt = NULL;//Next_ptをNULLに(次がないんだからネ)
Now_nord -> Next_pt = New_nord;//んで、さっきまでNULLだったノードのNext_ptを新ノードへのポインタに
}
else{
(Now_nord [hash_num].appear)++;
}
という所で、一番頭の
if(search_flug == 0){
の所で構文エラーが出るのですが。
原因がわかりません。
全角文字を使ってるとか、{}の数が足りてないとかスペルミスとか色々試してみたがどうも
ピンと来ないのですが、わかる方ご教授お願いします。
この記述の直前にdo whileでループを書いてるんですが、それとか関係ないですよね・・・?
コンパイラはVC++6.0です。
0174デフォルトの名無しさん
NGNGすいませんッ
0175デフォルトの名無しさん
NGNG構文エラーが出たならエラーの内容くらい書いとけ。
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG直しておきます。失礼!
エラーなんですが
error C2059: 構文エラー : 'if'
とだけで、自分もかなり面食らってます
0179デフォルトの名無しさん
NGNG前をもそっと
0180デフォルトの名無しさん
NGNGどうも申し訳ございませんでしたっ!
なんか鬱です。ごめんなさい。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGVisual Studio .Net
C++
以上の環境で、MFC、Win32API、ATL、C標準関数なんでもござれなアプリを作る予定です。
(MFCとWin32APIの違い等もよく理解していないのが正解だが)
ダイアログベースで、ダイアログ内にJPEG画像を縮小して20枚くらいサムネイルのように貼り付け
クリックされたら拡大表示っていうふうなアプリを作ろうと思っているんです。
そこで質問です。JPEG画像を縮小表示してダイアログに貼り付ける場合、どのように描画するのが
よいのでしょうか。
俺のつたない予想
�@ ダイアログのOnPaintでCBitmapを描画
�A CImageで描画
�B 自分自身に描画するクラスを作って20個貼り付ける?
�C CBitmapButtonで貼り付ける?
0183デフォルトの名無しさん
NGNGサムネイルならリストコントロール使えばいいだろ
0184182
NGNGその手がありましたか。エクスプローラの縮小表示のようにするってことですね。
これはかなり効果的でしたが、情報の後だしと言われてしまいますが
表示する20個はある条件にソートされて表示したいんで、
今回は使えませんでした。
ちょっともう少し自分で調べてみることにします。
0185デフォルトの名無しさん
NGNGリストコントロールは独自のソートできるよ。
0186デフォルトの名無しさん
NGNGってムリ?
0187186
NGNGどう改良すればコンパイルできます?
switchにするしかないのかな
0188デフォルトの名無しさん
NGNGこう?
void (クラス名::*pKeyFunc[])() =
0189186
NGNGvoid (ClassA::*pKeyFunc[3])() = {ClassA::KeyBoardEvent_Field, ClassA
:KeyBoardEvent_FieldMenu, NULL};
(this->*pKeyFunc[m_iMD])();
で解決しました。でも、何故これでOKなのか理解でき(ry...
0190デフォルトの名無しさん
NGNG名前空間
0191デフォルトの名無しさん
NGNGメンバ関数へのポインタ。
規格では &ClassA::KeyBoardEvent_Field のように & が必須なのでつけたほうがいい。
>>190
関係無い。
0192デフォルトの名無しさん
NGNG名前空間が解決できないからクラス名を指定しているんじゃないの?
0193186
NGNG(*pKeyFunc[i])()も
(ClassA::*pKeyFunc[i])();も
(ClassA::pKeyFunc[i])();もダメ。
this限定で、「*」(C言語ではいらなかったはず)を付けないと
いけないのかが分かりません。
ClassA::じゃ名前空間、物足りませんか...
0194デフォルトの名無しさん
NGNG>>193 "->*" がひとつの演算子。
0195デフォルトの名無しさん
NGNGneonのホームページは下の所です。
ttp://www.webdav.org/neon/
開発環境はLinuxを使ってます。
以下のサンプルコードをコンパイルしようとした所次のようなエラーがでました。
#include<ne_session.h>
int main()
{
ne_session *sess;
sess=ne_session_create("http","ServerName",80);
ne_session_destroy(sess);
return 0;
}
gcc -L/usr/local/lib -I/usr/local/include/neon sample.c
/tmp/ccunwT5A.o(.text+0x18): In function `main':
: undefined reference to `ne_session_create'
/tmp/ccunwT5A.o(.text+0x25): In function `main':
: undefined reference to `ne_session_destroy'
collect2: ld はステータス 1 で終了しました
と上記のようなエラーがでてしまいます。
因みにne_session_createとne_session_destroyはne_session.hをインクルードすれば使えるはずなのですが。。。
#include <ne_session.h>
ne_session *ne_session_create(const char *scheme, const char *hostname, unsigned int port);
void ne_session_proxy(ne_session *session, const char *hostname, unsigned int port);
void ne_close_connection(ne_session *session);
void ne_session_destroy(ne_session *session);
コンパイラーに渡すオプション何か足りないものがあるのでしょうか?
教えて下さい。
0196デフォルトの名無しさん
NGNGインクルードファイルのディレクトリは-I/usr/local/include/neonで指定してるのに、
ライブラリは-L/usr/local/libなのか?
ホントにそのディレクトリにライブラリが入ってるのかどうか確かめてみては?
0197Rubyist!
NGNGgcc sample.c `neon-config --cflags --libs`
か
gcc sample.c `pkg-config neon --cflags --libs`
とでもすればいい。
0199Rubyist!
NGNG>ライブラリは-L/usr/local/libなのか?
突っ込むところはそこじゃなくて-lneonとを指定していないことだろ。
0200195
NGNGおかげでコンパイルできました。
0201デフォルトの名無しさん
NGNG#include<stdio.h>
main()
{
printf("表示する文字\n");
}
とありますがコマンドプロントがすぐに閉じてしまいますそれを閉じないようにするにはどこに何を加えればよいでしょうか?初歩的質問すみません。
0203デフォルトの名無しさん
NGNGputs("プログラム終了。Enterキー押せよ");
getchar();
か
system("pause");
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGちゃんとコンパイルもできいけました。本当にありがとうございます。
0207デフォルトの名無しさん
05/01/17 14:10:45if ( (p.coef = d_ALC(p.ele)) == NULL )ERR("p.coef");
のような行があったんですが、ここにでてくる、「ERR」ってなんでしょうか?
0208デフォルトの名無しさん
05/01/17 14:13:00基本的にC/C++はそれでシンボルの問題は解決するぞ
0209デフォルトの名無しさん
05/01/17 17:19:37すいませんがお教え下さい。
複数ファイル間でnamespace使う場合、
[ファイルA]
namespace ns{int b;}
とだけして、
[ファイルB]で
namespace ns{int c;}
int main(){......return 0;}
と記述したのですが、[ファイルB]でint bを参照する場合、
using namespace ns;
extern int b;
ではダメみたいなのですが、どうすれば良いのでしょうか?
0210デフォルトの名無しさん
05/01/17 17:30:26なぜ共通ヘッダを使わない?
namespace ns;
extern int ns::b;
0211デフォルトの名無しさん
05/01/17 17:35:26ご回答ありがとうございます。
共通ヘッダを使うべきなのでしょうが、
「複数ファイル間で同名のnamespaceが同じ名前空間で扱われるか」
を試そうと思っていましたので共通ヘッダを使用しませんでした。
>namespace ns;
>extern int ns::b;
とありますが、どうもコンパイルエラーになるようです。
環境はg++3.3.2です。
0212209
05/01/17 17:40:52[ファイルA]
namespace ns{int b;}
[ファイルB]
#include <iostream>
using namespace std;
namespace ns{int c=100;}
int main(){
using namespace ns;
extern int ns::b;
cout<<c<<endl;
return 0;
}
で、エラーは以下です。
error: `ns::b' should have been declared inside `ns'
0213209
05/01/17 17:43:320214デフォルトの名無しさん
05/01/17 17:55:42namespace ns{extern int b;}
int main(){/*...*/}
とするべき。
一般に名前空間に(その翻訳単位で)新しい名前を追加するときは
名前空間をオープンしないといけない。
0215デフォルトの名無しさん
05/01/17 17:55:490216209
05/01/17 18:05:50おお!素晴しいです。できました!なるほど。
このテストをやってみたのは、複数のファイルで
using namespace std;
ってやってる場合、それらは同じ名前空間だけど、共通の空間として
認識されてるのか(もしくはそれぞれのファイル単位で別物のstdなのか)
を確認したかったからです。
>namespace ns{extern int b;}
とすることで、ファイルAの名前空間nsを参照できてるってことですかね。
>215
externとか書いてみたんですが、文法がおかしいみたいでした。。。
よくわからなかったもので。
0217デフォルトの名無しさん
05/01/17 18:12:32usingは、ns::を省略するぐらいの意味。externは外部(external)という意味。
0218209
05/01/17 18:18:320219デフォルトの名無しさん
05/01/17 20:38:14ただのラッパーみたいになってしまいます。
これは設計が悪いからでしょうか?
0220デフォルトの名無しさん
05/01/17 20:43:27常に決められた手順通りに動くことを想定すれば、途中の事務処理は自動化できるはず。
0221219
05/01/17 22:20:09常に決められた手順は、そのクラスから派生して作るものかなと
思ったりしてるんですが、
そこまで考えてクラス設計はしなくても良いもんなんでしょうか?
それだけにしか使えないクラスを作成するとか。
クラスってイメージは、鯛焼きの型ってイメージがあるんで
専用クラス作るのは良いことじゃないと思ってるんです。
0222デフォルトの名無しさん
05/01/17 22:39:56常に決められた手順だから、
クラスとしてまとめるんだろ?
そのクラスを使う上位で、
同じ事を何度も書かなくても言いように。
0224219
05/01/17 23:23:46と思ってしまうんですよね。
クラスは、どんなときに使うのか?を理解する必要があるみたいです。
良い本を読んでみます。
0225デフォルトの名無しさん
05/01/17 23:30:36「aa<?bbcc?>dd」という文字列を、「aa」「bbcc」「dd」に
分割するようなことは出来ないのでしょうか。
ちょっと調べたんですが、1文字でしか分割できないような気がします。
それと、<??>の内部か外部かを判断するのは出来ますか?
0226デフォルトの名無しさん
05/01/17 23:54:000227デフォルトの名無しさん
05/01/18 00:04:580228デフォルトの名無しさん
05/01/18 01:24:490229デフォルトの名無しさん
05/01/18 08:04:50ありがとうございました。
0230デフォルトの名無しさん
05/01/18 12:39:46>常に決められた手順は、そのクラスから派生して作るものかなと
>思ったりしてるんですが、
>>219 の winscok を使ったクラスを例に考えてみよう。
例えば、藻前は上位クラスでコネクションを行う必要がある度に、
わざわざ、
・アドレス解決メソッド
・socket() ラッパーメソッド
・connect() ラッパーメソッド
と、複数のメソッドを呼ばそうとするのか?
普通なら、コネクションを行うメソッドを作り、
そのメソッドの中で
・アドレス解決
・ソケットの生成
・コネクション
と言う一連の手順を実行させないか?
0231デフォルトの名無しさん
05/01/18 15:40:43現在WinXPでBorland C++ Compiler 5.5を使って
C言語でソケット通信のプログラムを組んでおりますが
通信相手を限定する為にWindowsのコンピューター名を
指定する方法で制約がかかっております。
そこでNetBIOS名からIPアドレスをプログラム上で
使う方法がありませんでしょうか?
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:10■ このスレッドは過去ログ倉庫に格納されています