[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/13 21:50 / Filesize : 246 KB / Number-of Response : 943
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++小心者スレッドPart1



1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ]
プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは>>2以降。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・ぐぐる
 ・マニュアルで探す 
 ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(なるべくそのままで)
 ・実行環境(OS名、コンパイラ名)
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ 
相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって小心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


2 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 07:14:37 ]
     ____
   /__.))ノヽ   
   .|ミ.l _  ._ i.)  
  (^'ミ/.´・ .〈・ リ   このスレはわしが育てる
  .しi   r、_) |  
    |  `ニニ' /       
   ノ `ー―i´

3 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:58:50 ]
1001帰れ

4 名前:デフォルトの名無しさん [2007/08/05(日) 22:20:30 ]
前スレ
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/l50

5 名前:デフォルトの名無しさん [2007/08/11(土) 16:46:20 ]
#include <cstring>

#include <string>

#include <string.h>
の違いを教えてください

6 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:01:51 ]
#include<cstring>
cstringというファイルをincludeする
#include<string>
stringといf(ry

それぞれのファイルの中見てみればきっといい勉強になるに違いない。


7 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:52:10 ]
まあ標準C++の場合だとこうなっている。

<cstring>は、Cの<string.h>相当のヘッダで、
中の宣言はstd名前空間に入っている。

<string>は、basic_string<>のヘッダ。

<string.h>は、内部で<cstring>をインクルードしており、
個々の識別子に対して大域名前空間上でusing std::strcpy;などのように
using宣言がなされていることになっている。

実際には、<cstring>が<string.h>をインクルードして、
std名前空間上でusing宣言を書いている実装がほとんど。

8 名前:デフォルトの名無しさん [2007/08/26(日) 14:20:20 ]
ofstreamではバッファの容量は指定できないのでしょうか?

9 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 14:24:28 ]
>>8
rdbufメンバ関数でそのストリームに関連付けられたバッファが得られる。
その中のメンバにそれっぽいものがあるはず。

10 名前:デフォルトの名無しさん [2007/08/27(月) 16:00:38 ]
質問です。
i = (char*)malloc(sizeof(char) * 256);
でメモリ領域を確保したのですが、256バイト以上使用することができます。
なぜでしょうか?教えてください。



11 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:05:01 ]
>>8
std::streambuf::pubsetbuf()がお望みのものだが、
実装によってはopen済みのストリームに対して実行しても無視されるので注意

12 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:08:03 ]
マルチすんなカス

13 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:12:17 ]
うむ、そうだな。小心者スレにしては、随分と大胆だ。

14 名前:デフォルトの名無しさん [2007/08/27(月) 21:42:16 ]
>10
memcpy(0x00,1,1)

これでいい

15 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:16:24 ]
別に256バイト使えるのは正常だな

16 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 07:38:45 ]
>>10
OutOfRange を誰も発行しないから。

17 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 03:39:55 ]
C++のソースファイルって、
拡張子がたくさんあるみたいですけど
どれが一番メジャーで、どれを使用するべきですか?

18 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 03:45:31 ]
.cpp

19 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:32:50 ]
.C
.c++
.cxx
.cpp
.cc
バリエーションはこれくらいかな。

20 名前:デフォルトの名無しさん [2007/08/29(水) 11:35:05 ]
質問です。
環境
XP
visual C++

for(t=0;t<T;t++){
pw=pow(exp,(1.0*t)/25.0);
printf("pw=%f\n",pw);
}
といった感じで計算結果を表示させていきたいのですが、実行結果が
pw=1.000000
pw=1.#INF00
pw=1.#INF00
pw=1.#INF00

と2番目から#INFというのが表示されてしまいます。計算結果を正しく出力させるにはどうしたらいいのでしょうか?



21 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:38:42 ]
>>20
pwに代入している行のカンマの位置が怪しいけど、要はオーバフローしているんだろ。
それから、"%f"ではなく"%g"推奨。

22 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:39:45 ]
つーか、expはいくつなのかと。

23 名前:20 [2007/08/29(水) 12:03:41 ]
>>20さん、>>21さんへ
ありがとうございます。
expは下記のように定義し、2.71828としています。

#include <stdio.h>
#include <math.h>
#define T 30
#define exp 2.71828

void main(){

int t=0;
float pw;


24 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:27:45 ]
ただエディタヘ貼り付けただけで、特に手を加えていないんだが、
こんな具合にきちんと出力されていくぞ。
pw=1.000000
pw=1.040811
pw=1.083287

ところで、1.0をかけるのは意味がない。やるならせめてdoubleへのキャストにしろ。
float使うなdoubleにしろ。
eの累乗ならexp関数にしろ、こっちのほうが精度も速度もいい。

25 名前:20 [2007/08/29(水) 12:50:12 ]
>>24さんへ
レスありがとうございます。
exp関数を用いたところ
error C2064: 1 引数を取り込む関数には評価されません。
とエラーが出てしまいます。
他の部分がおかしいのでしょうか・・・。
fpout=fopen("outputvoltage.txt","w");
p1=vout;
for(t=0;t<=T;t++){
if(0<=t&&t<=t1){
pw=exp(t/25.0);
inver=1.0/pw;
vt=-1.0*vin*(1-inver);
printf("V=%g\n",pw);
*p1=vt;
++p1;
fprintf(fpout,"output voltage = %g\n",vout);
}
として、累乗計算の時点で前述のような計算結果になってしまい質問した次第です。

26 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:20:56 ]
>>25
「C2064」でググれ…と言いたいトコだが。

「exp」っていう名前の変数使ってないか?
こういうのはアウトだぞ

int printf = 0;
printf("Hello world!"); // C2064 error

解決するには

1:関数名にスコープ解決演算子をつける

int printf = 0;
::printf("Hello world!"); // ok

2:変数名を変える

int count = 0;
printf("Hello world!"); // ok


関数名と同じ変数名を使うとロクな事が無い。留意の事。

27 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:34:01 ]
おそらく23に書いてある#define exp 2.71828を
そのままにしているだけだろう。

28 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 15:06:58 ]
string hogeっていうのがあったとして
hogeのn番目の文字を取り出してcharに入れたいんですが
どうすれば出来ますか?

29 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 15:13:43 ]
hoge[n]

30 名前:デフォルトの名無しさん [2007/09/29(土) 08:13:39 ]
>>29
うまくいきました。本当にありがとうございました。



31 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:49:32 ]
ぬっちゃけ回答者ってプロ級の人ばかり?


32 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:01:02 ]
いいえ

33 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:23:20 ]
プログラミングについて色々お話聞かせて><

34 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:54:59 ]
まだC/C++勉強してんの?

35 名前:デフォルトの名無しさん [2008/02/19(火) 11:59:22 ]
一次元の配列を同じ値で埋めたいのですが、何か高速な方法はありませんか?

36 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:05:46 ]
array[10] = {0}
じゃ駄目かい

37 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:09:38 ]
coutで出力するときに最初にたとえば
processing
って表示して
processing.
processing..
processing...
みたいに一文字ずつ書き足していきたいんだけどまじめにどうしたらいい?
cout<<"."とかputchar('.')で実行すると、改行がくるまでターミナルに表示されなくて困ってます。

38 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:16:23 ]
cerrはバッファリング無しだからどうか

39 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:17:39 ]
std::cout << std::flush でいけたような

40 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:43:53 ]
>>38
>>39
エラー出力とバッファリングのメンバー変数(?)ですよね。
勉強になりました。dクス



41 名前:デフォルトの名無しさん [2008/03/29(土) 13:33:03 ]
cstringとstringって何が違うのですか?

42 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:49:32 ]
<string.h>と<cstring>はほぼ同じもので、
cの標準ライブラリ(strcatとかstrcpy)が宣言されている
前者は大域名前空間になる
stringはC++の文字列ライブラリで<string>に宣言されている
CStringはまた別のライブラリ
で、だいたいあってると思うw 確認してないが
それぞれの使い方は調べれ

43 名前:デフォルトの名無しさん [2008/04/29(火) 19:07:22 ]
メールソフトはタイムゾーンをどのようにして取得しているのでしょうか?
独自にテーブルを持っているのでしょうか?
それともOSから取得できるのでしょうか?

44 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:46:51 ]
<開発環境>[OS:WinXP SP2][コンパイラ:VC++2005 Pro]
<やりたいこと>PC(WinXP pro)の特定ソフトを特定のIPアドレスにアクセスさせたくない。
<前提条件>ルーターではなにもしてはいけない(ソフトで解決すること)
<調べたこと>IPHLPAPIでルーティングテーブルをいじって対応? ルーティングテーブルのゲートウェイをありえないところにする?
これだとすべてのソフトでIPアドレスにアクセスできなくなるが、、、。

上記、ヒントなりをいただければと思います。

45 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:58:42 ]
>>44
・まともなセキュリティソフトをインストールして個別設定でそのアプリの動作を制御する。
・そのアプリを改修する。
・諦める。

46 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:07:24 ]
>>45 
早速の返信ありがとうございます。

>・まともなセキュリティソフトをインストールして個別設定でそのアプリの動作を制御する。
セキュリティソフトについてはすでに導入しているのですが、
設定しても恐らく、"その設定自体をユーザーが変えてしまう"ことが予想されます。

>・そのアプリを改修する。
現状問題となっているアプリケーションは、P2Pソフトだったり、ゲームだったりと多岐にわたります。
(説明不足で申し訳ありません)

>・諦める。
orz

47 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:14:52 ]
> その設定自体をユーザーが変えてしまう
お前の作るソフトウェアも同じだろ。
設定を変えられないとしても、強制終了されればおしまい。

ただ、ユーザが管理者 (Administrators)でないと仮定できるなら、
どのソフトでも結構いける。その手のソフトは
たいてい管理者しか設定をいじれないようにできるはずだから。
サービスなんかにしてしまえばただのユーザは終了させることもできない。


48 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:44:48 ]
>>47
返信ありがとうございます。

>お前の作るソフトウェアも同じだろ。
おっしゃる通りです、、、orz

>ただ、ユーザが管理者 (Administrators)でないと仮定できるなら、
ユーザーはAdminです、、、orz
すでにこの段階で問題なのかも知れません。


もう少しなにかいい方法がないか思案してみます、、、。

49 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 03:53:28 ]
企業だったら、セキュリティコンサルに相談することお勧め。
最近は、ログ解析だけを定期的に行なうなんてことをするコンサルもあることだし。

50 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 14:25:35 ]
>>49
返信ありがとうございます。

コンサル入れたりするのも1つかもしれません。
検討してみます。


現状、IPHLPAPIを使用して
GetTcpTableを使い、定期的に監視して、
あらかじめ用意したブラックリストと照らし合わせ、SetTcpTableでアクセスできないようにすることをやってみます。
(サービス用アプリとして作成して様子をみます)




51 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 13:36:21 ]
Visual C++ 2008 Express Editionのコンソールアプリプロジェクトで
using namespace std;
を使うにはどうしたら良いのでしょうか。

stdafx.hに書くと「C2871: 'std' : この名前を指定された名前空間は存在しません。」と怒られます。

ソールファイルに
std::cout << "orz" << endl;
などど書いても「C2653: 'std' : 識別子がクラス名でも名前空間名でもありません。」と怒られます。

空のプロジェクトで一から書くと出来るようですが、Unicodeアプリにならないので困っています。

52 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 13:49:42 ]
>>51
標準C++ライブラリをなにかインクルードしてるか?

53 名前:51 mailto:sage [2008/05/03(土) 14:50:25 ]
標準C++ライブラリが具体的に何を指すのかは解りませんが、stdafx.hに以下内容を追記したらコンパイルが通りました。
初歩過ぎる質問に答えていただき本当にありがとうございました。

#include <iostream>
using namespace std;

54 名前:デフォルトの名無しさん [2008/07/13(日) 19:48:30 ]
ユニークな名前ってどうやって生成するの?

55 名前:デフォルトの名無しさん [2008/07/13(日) 19:59:03 ]

ひらめきが大事だね。


56 名前:デフォルトの名無しさん [2008/08/05(火) 15:26:30 ]
どのクラスにでも当てはまりそうな戻り値はどのように管理するのが一般的なのでしょうか?
例としては無効な引数、〜が見つからない、致命的なエラーなどです。

クラス毎に static const 〜 としてもいいのですが、同じ値に保つのが面倒になりそうだし、、、

専用のクラスを作り下記のようにしようかと考えたのですが、スマートではない気がしています。
皆さんはどうされていますか? よろしくお願いします。


class CResultCode {
static const int s_success = 1;
static const int s_falal_error = -1;
static const int s_invalid_param = -2;
static const int s_file_not_found = -10;

static bool IsSuccessful(int in_result) { return in_result > 0; };
};

class CHoge {
int Hoge(){ return CResultCode::s_successed; };
};


void main() {
CHoge hoge;
int res = hoge->Hoge();
if ( !CResultCode::IsSuccessful(res)){
エラー処理
  }
}


57 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 15:52:09 ]
// cost.h //
extern PGDLLIMPORT double seq_page_cost;;

を含むヘッダーファイルがあり,PGDLLIMPORTはべつのヘッダーで
#define PGDLLIMPORT __declspec (dllexport)
と定義されてます

これをcostsize.cというファイルにインクルードしてるんですが.
extern PGDLLIMPORT double seq_page_cost;;
ってどういう意味なのかわかりません
どういう意味を持つのか教えてください.
お願いします.
ちなみに __declspec (dllexport)で調べてもようわかりませんでした


58 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 18:19:11 ]
>>56 enum

59 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 18:21:13 ]
>>57
> ちなみに __declspec (dllexport)で調べてもようわかりませんでした
↓このサイトがおすすめ。
www.google.co.jp/search?q=declspec+dllexport

60 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 18:39:28 ]
それで判るくらいだったら聞かねぇよ!



61 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 18:45:50 ]
公式のドキュメントも使ってる人の記事もいっぱいヒットするのに、
それ以上の説明がここでできるとは思わない。

62 名前:56 mailto:sage [2008/08/05(火) 19:11:19 ]
>>58
ありがとうございます。 度々すいませんが、その場合は専用のnamespaceを設けてという事でしょうか?
それともヘッダ1つ増やして個々にインクルードするだけで良いのですか?

となると、成否判定に#defineマクロを使いたくなってしまうのですが許されるのでしょうか。。。
「C++ならdefine使うな」って怒られたりしませんか…? よろしくお願いします。





63 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:20:07 ]
>>59
レスどうも
すでに試してまして・・・
で,いかんせん,どこの何というDLLから何を
エクスポートしてるのか,てんでわからんのです

64 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:22:11 ]
>>62
ResultCodeクラスを作るなら、戻り値を整数型にしないでResultCode型にしちゃえばいいじゃん。
で、適当なキャストオペレータを用意しておけば成否判定に使えるし。

65 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:23:14 ]
>>63
>57と>63で質問していることが全然違うわけだが。

66 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:32:06 ]
>>65
自分初心者なもので
質問に一貫性が無いのは,すいません
なんというか両方答えて頂ければと思うんですが…

67 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:48:21 ]
>>57
>どういう意味を持つのか教えてください.
どこぞの何とかいうDLLから何ぞやをエクスポート

>>63
>で,いかんせん,どこの何というDLLから何を
>エクスポートしてるのか,てんでわからんのです
costsize.cで作られるDLLからseq_page_costを

68 名前:56,62 mailto:sage [2008/08/05(火) 23:44:56 ]
>>64
ありがとうございます。そうしていこうと思います。
値渡しで返して嫌がられたりする事はあるのでしょうか? ← ここが一番心配なのです。
最適化すれば一時オブジェクトは作られないのかなあ…

69 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:51:25 ]
ResultCodeクラスにメンバなんかenum値一個しか要らんでしょ。
そんなもん値渡ししたって参照よりもコンパクトなくらいだ。

70 名前:68 mailto:sage [2008/08/06(水) 00:01:01 ]
>>69
お蔭で解決する事が出来ました。 何度もありがとうございました。  



71 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 08:29:05 ]
int *p = new int [4];
の時
delete [] p;
delete p;
って使い分けないといけないの?

72 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 08:39:40 ]
>>71
new[] の場合は delete[]
使い分けないといけない

73 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 08:45:23 ]
>>72
さんくす

74 名前:デフォルトの名無しさん [2008/08/18(月) 13:19:15 ]
delete p;
だと1個目しか消せない。


75 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:22:42 ]
そうなんか?

そう書き間違えた場合の、文法チェックとか、メモリリーク調査とか、可能?

76 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:25:37 ]
>>74
ダウト
処理系によってはコア吐くぞ

77 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 08:54:58 ]
intならデストラクタが無いからどっちも同じ

78 名前:デフォルトの名無しさん [2008/08/20(水) 08:56:18 ]
どっちも同じってことはない。


79 名前:デフォルトの名無しさん [2008/08/20(水) 09:57:39 ]
Visual C++ 2008 ではC++でなくCのコンパイルできないの?

80 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 10:38:50 ]
できるよ



81 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 10:48:53 ]
CLRにするとC++/CLI専用になるから *.c はコンパイルできない。
Win32のプロジェクトならできる。

82 名前:デフォルトの名無しさん [2008/08/20(水) 11:53:10 ]
サンクス

83 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 13:17:31 ]
>>74
未定義じゃない?ANSIの仕様とか読んでないけど
処理系によってはdeleteとdelete[]が等価だったりするし

84 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:12:31 ]
PCモニタをオフにするようなコードって,どうやって書けば良いんでしょうか?
下のフリーソフト,アセンブラで見たらWindowsAPIのKernel32.Sleep呼んでるみたいですけど・・・

ttp://hp.vector.co.jp/authors/VA036558/app/dispoff.zip

85 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 03:01:07 ]
>>83
うん。未定義。

86 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 09:12:35 ]
>>84
うろ覚えだが
PostMessage(HWND_BROAD_CAST, WM_COMMAND, MONITOR_OFF)みたいな感じで。

87 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 12:26:14 ]
>>86
ありがとうございます!やってみます。

88 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 12:32:13 ]
>>86
SendMessageで出来ました。引数はもろにそんな感じでした。
Sleepは一休みしてから電源オフに持ってくためだったんですね。。。

あと,モニタ電源オフの状態からオンに復帰するときに,
マウスの移動は無視して,
マウスのクリックやキーを押すときのみに反応するコードはどんな風に書けばいいんでしょうか?
誰かやさしい人おしえてください。

89 名前:86 mailto:sage [2008/08/22(金) 20:34:20 ]
>>88
ちょうどそんなフリーソフトを作った。(でもしばらく公開予定はない。)
自分は以下のような方法を使ってる。

・モニタをオフに
・グローバルフックでマウスの操作を監視
・マウスの移動を検地した場合はモニタをオフにする

90 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:35:59 ]
>>89
一体いつモニタをオンにするんだ?



91 名前:86 mailto:sage [2008/08/23(土) 00:05:54 ]
>>90
プログラムでオンにする必要はない。マウスのボタン押下やキー押下で勝手にオンになるから。

92 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:31:45 ]
int main()
{
unsigned char *s; // 文字列用ポインタ用意

s = "Test";

・・・・
・・・
・・

このようなプログラムがあるのですが、二つほど質問があります。
unsignedでchar型を宣言すると、何かいいことがあるのでしょうか?
また、参考本には載っていなかったのですがこのような文字列の
代入方法は正しいのでしょうか?文字配列を用意して、strcpyで代入するとしか載ってなかったので…

93 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 13:19:11 ]
>>91
>・マウスの移動を検地した場合はモニタをオフにする
オンではなくてオフ?

94 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 13:29:57 ]
>>93
>90、>91

>>92
sはローカルな文字列ではなくて、只のポインタ変数。だから、実際にはconst unsigned char * sということになる。
# つまり、s = "Test"の後でs[0] = 't'とはしてはいけない。
尚、charをunsignedで宣言しておくと、標準関数を呼ぶたびに(厳密には)キャストが必要になるので巧くない。
その代わり、2バイト文字などを扱うときに多少扱いやすくなる。

95 名前:86 mailto:sage [2008/08/23(土) 15:17:23 ]
>>93
>>88
>>あと,モニタ電源オフの状態からオンに復帰するときに,
>>マウスの移動は無視して,

マウスの移動があるとオンになっちゃうからオフにする。

96 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:42:47 ]
>>92
実質的な違いはない。後の処理の関係でどっちにするか選ぶとかその程度。

>>94
>sはローカルな文字列ではなくて、只のポインタ変数。だから、実際にはconst unsigned char * sということになる。
ちがうよね?

97 名前:96 mailto:sage [2008/08/23(土) 19:44:58 ]
>>92
さっきのは「unsignedでchar型を...」のみの回答でした。

>このような文字列の代入方法は正しいのでしょうか?
正しいです。

98 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:52:38 ]
正しいし便利なのでオススメ

99 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:12:12 ]
>>89
モニターの電源切っておけばいいんじゃね?

100 名前:86 mailto:sage [2008/08/24(日) 11:33:50 ]
>>99
マウス・キーボード操作でONにならない状態にするってことだよね。
調べた範囲では無理そうだった。
もしかしたら低レベルな方法であるのかも知れないけど。

それにこの場合マウスの移動だけ無視したいので、
マウス操作の監視は必須で、手間は変わらないと思う。








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef