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

スレを勃てるまでもないC/C++の質問はここで 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/09/17(水) 15:41:48
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0173デフォルトの名無しさん2008/11/02(日) 18:42:14
グーグルに聞こうかとしたが日本語のサポート宛でないといけないらしく
いろいろと手続きが多かったのでここで聞くことにしました
0174デフォルトの名無しさん2008/11/02(日) 19:25:03
スレタイを見ろバカモノ
0175デフォルトの名無しさん2008/11/02(日) 19:25:21
ループとputcharを使って、y=x*xの座標を*でプロットするプログラム
を作りたいと思ってるんですけど、どうすればいいですか。縦をy軸とします。
0176デフォルトの名無しさん2008/11/02(日) 19:42:59
何がわかんないの?
0177デフォルトの名無しさん2008/11/02(日) 19:59:06
とりあえず、y=25のときx=-5,5の2点をプロットして、そのあと改行
します。そのあとyが24から17までを改行で、何も表示させないように
しようかとしたんですけど、無限ループになってしまうんです。
0178デフォルトの名無しさん2008/11/02(日) 20:18:14
>>177
>175を見る限りCだと思うけど、C初心者スレにでもソースを貼って教えを乞いたら?
0179デフォルトの名無しさん2008/11/03(月) 23:26:20
0x100Cと0012FF88の違いって何?
同じものならどういう書き方の違いがあるの?
0180デフォルトの名無しさん2008/11/03(月) 23:27:13
同じものではないです。
値が違います。
0181デフォルトの名無しさん2008/11/04(火) 16:02:25
こんにちは CもしくはC++で とある保存機能が削除されたプログラム「.exe」に「保存機能」を追加する場合
同フォルダ内 プログラムの.dll内へ「保存機能を追加するプログラム」を書く事になるのだと思うのですが
その「保存機能を追加するプログラム」を1つだけ置けば完結。みたいな雛形などはあるのでしょうか?
それともプログラム1つ1つの動作に関連付けて いかないといけないのでしょうか?
文だけでは説明が難しいので解説のため画像をうpしておきます
左が前者 右が後者ですhttp://www.vipper.org/vip978703.jpg.html
0182デフォルトの名無しさん2008/11/04(火) 16:24:18
知らんがな。

もともと、保存機能が別のDLLで行われることが分かっていて、
なんらかの事情でそのDLLだけ持っていないというのであれば、
オリジナルと同じように作ればできるとは言える。

そうじゃないなら無理やりにでもやるしかない。

もちろんEXEのソースはないという前提だよな。
0183デフォルトの名無しさん2008/11/04(火) 18:03:49
VC++6です。ヘッダの定義のマクロで悩んでいます。

#define __myheader_H__
前と後ろの"__"は何で2つなんだろうか?

#define _INCLUDE_myheader_H_
という風に、最後の"_"が1つの物もあるけれどどう違うのか?

INCLUDEとmyheaderの間の"_"は本来スペースだし、myheaderとHの間の
"_"は本来.(ドット)ですが、何でもかんでも"_"になってますけど
これは何なの?

など、本も5,6冊買ったし、ネットも散々検索してるのですが
なかなか答えが見つかりません。これは一体何なのでしょうか?
どこか書いてあるサイトなり何なりありませんでしょうか?

何卒よろしこ
0184デフォルトの名無しさん2008/11/04(火) 18:10:40
>>183
先頭のアンダーバーには色色制約があるので二つ並べているのだろう。
末尾のアンダーバーは先頭とのバランスだと思う。__FILE__に倣っているのかも知れない。
途中のアンダーバーはドットの代わり。
0185デフォルトの名無しさん2008/11/04(火) 18:11:21
>184s/__FILE__に/__FILE__などに/
0186デフォルトの名無しさん2008/11/04(火) 18:13:44
重要なことは、以下に続くであろうソースとかぶらないこと。
0187デフォルトの名無しさん2008/11/04(火) 18:16:37
どうせインクルードガードだ。かぶりゃせんだろ。
01881832008/11/04(火) 18:30:48
なるへそ、みんなありが�d。

調べてるうちにborandのC++とかと共通に出来るようにしてるのかな、
とかなんとなくなじんで来た。おかげで少し抵抗が無くなった。
0189デフォルトの名無しさん2008/11/04(火) 19:45:01
>>183
>前と後ろの"__"は何で2つなんだろうか?
>最後の"_"が1つの物もあるけれどどう違うのか?

別に1個でも2個でも0個でもいいが、
アンダーバーの多い方が他の識別子 (変数名とか関数名とか) とかぶりにくい

>"_"は本来.(ドット)ですが、何でもかんでも"_"になってますけどこれは何なの?

マクロ名にドットやスペースは使えないから止むを得ない
0190デフォルトの名無しさん2008/11/04(火) 19:48:03
>>183

昔のコンパイラは、

#pragma once

がサポートされていなかったので、それの代わり。 相互参照され
ているクラスなどで、同じincludeファイルを二度読みして再定義
エラーを出さないための工夫。

途中の意味不明なキャラクタの羅列は、GUIDを使って、定義名が
重複してしまうのを防いでいるだけ。
01911812008/11/04(火) 19:59:16
>>182そうですね、ソースがないのにデコンパイルとはけしからんと言われそうなので
この質問自体が仮説だとして考えて頂ければ幸いです
インポート.dllがある場合、この中身の値をエクスポートに変えて別名で保存したら
エクスポートが出来るのではないかと考え、いま試していますがやはり.exe内の値「プルダウンからのエクスポート機能起動」などの関連付けも必要になってきそうです
0192デフォルトの名無しさん2008/11/04(火) 21:31:32
はじめまして
int m,t;
があった時に
m>?=t;
という式を実行したら何が起こるのでしょうか??

初めてみたのですが、

if (m<t) {
m = t;
}
と同値ですか?

どうやらそんな気がするのですが

m>?=t; と m<t が逆でなんかおかしい気も....

よろしくお願いいたしますm(__)m
0193デフォルトの名無しさん2008/11/04(火) 21:34:30
それはどこのコンパイラ、本当にCもしくはC++か?
標準にはないぞ。
0194デフォルトの名無しさん2008/11/04(火) 21:39:17
unsigned charとfloatの掛け算の結果はfloatにならないのは何で?
0195デフォルトの名無しさん2008/11/04(火) 21:42:23
>>193さん

すみません。
Red Hat 3.4.6-3です。

cygwinとかでやったらエラーになりますが...Red Hat 3.4.6-3だと通ります...
01961922008/11/04(火) 21:52:22
>>193さん

すみません。あとC++です。
0197デフォルトの名無しさん2008/11/04(火) 22:08:33
>>192
>? は大きい方を返す演算子。GCC 拡張
ttp://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_6.html
0198デフォルトの名無しさん2008/11/05(水) 02:41:30
>>191
デコンパイルしてどうにかできるんならそうすれば?
0199デフォルトの名無しさん2008/11/05(水) 07:17:13
>>194
結果を整数型の変数に代入してるからだろ
0200デフォルトの名無しさん2008/11/05(水) 11:15:18
>>194
その組み合わせだと、結果はdoubleになるね。
0201デフォルトの名無しさん2008/11/05(水) 14:32:07
>>197
きめぇw
0202デフォルトの名無しさん2008/11/06(木) 20:33:13
それオーバーロードできるの?
0203デフォルトの名無しさん2008/11/06(木) 21:34:16
Linuxでたぶんコンパイラはgccだと思うんですけど、sin,cos,tanを計算させるときに
どう定義すればいいんですか。ただ#include<math.h>を書くだけではだめなのですか。
なんかコンパイルしたときに、sin,cos,tanが定義されていないというエラーが出たのですが・・・
0204デフォルトの名無しさん2008/11/06(木) 21:36:56
gcc なにか.c -lm
-lm -lm -lm -lm -lm -lm -lm -lm -lm -lm
0205デフォルトの名無しさん2008/11/06(木) 21:47:03
コンパイラが出すエラーとリンカが出すエラーを区別できないようでは
(C/C++を使うのは)難しい
0206デフォルトの名無しさん2008/11/07(金) 00:22:24
”fopen”とか”open”はAPIの”CreateFile”が最終的に呼ばれているのですか?
機能や応用などを考えるとCreateFIleをメインで勉強した方がいいですかね?
0207デフォルトの名無しさん2008/11/07(金) 01:57:58
>>206
わざわざそうする意味はない、fopenですむ状況ならfopen使っとけ

お前の考える機能や応用がなんなのかは知らんが
02081832008/11/07(金) 12:35:56
>>189-190
サンクスコ。もっとなじんだよ。
なんか、こう、手のひらになじんできた気がするよ

おそレスゴメソ
0209デフォルトの名無しさん2008/11/07(金) 19:39:34
double a[4][4]={{2,2,0,-1},{1,1,2,0},{3,0,1,1},{1,2,-1,1}};

と初期化したら

a[0][1] = 2
a[0][2] = 2
a[0][3] = 0

のように、1次元目が0の場所に最初の{ }が代入されますか?
0210デフォルトの名無しさん2008/11/07(金) 20:33:35
そうですよ
0211デフォルトの名無しさん2008/11/07(金) 20:34:11
って例は間違ってるじゃないか
a[0][0] = 2
a[0][1] = 2
a[0][2] = 0
0212デフォルトの名無しさん2008/11/07(金) 22:07:52
c++でiniから文字列を読み取るのにGetPrivateProfileStringを使ってたんだけど、
読込先がLPSTRだからいちいち適当な領域を確保しなきゃいけないんだけど何とかなりませんかね?
理想を言えばstring型に直接代入したいんだけど…
0213デフォルトの名無しさん2008/11/07(金) 22:09:20
fstream と string と boost::regex で実装すれば。
0214デフォルトの名無しさん2008/11/07(金) 22:21:17
boost::regexって何かと思ったら正規表現ライブラリか。
始めて半年の素人に正規表現とか無理だわorz

どうせ自分用ツールだし、数字でっち上げて運用回避するよ
回答ありがとう
0215デフォルトの名無しさん2008/11/07(金) 22:22:32
自分用ツールだから勉強がてら使ってみようとは思わないのか。
0216デフォルトの名無しさん2008/11/07(金) 22:27:50
逆に、自分用ツールだからお茶を濁して済ますこともできるわけじゃない。
0217デフォルトの名無しさん2008/11/07(金) 23:10:08
>>212
事前にそのiniファイルのサイズを取得しておけば?
0218デフォルトの名無しさん2008/11/07(金) 23:13:19
>>217
その発想はなかった!�d
0219デフォルトの名無しさん2008/11/08(土) 06:47:41
質問よろしくお願いします。
forkしたプロセスをブロッキングせずにループで終了を待ちたいのですが、何か方法はありますか?
環境は
Linux 2.6
gcc4.0
です
0220デフォルトの名無しさん2008/11/08(土) 07:09:41
>>219
waitpid を WNOHANG つきで呼びなしゃい
0221デフォルトの名無しさん2008/11/08(土) 22:39:25
bitsetの内容をiniに保存したいんだけど、桁が多いと当然unsigned longじゃ足りないじゃないですか。
この場合、文字列として読み込んでから1桁ずつ調べて順番に入れていくしか方法はないでしょうか?
0222デフォルトの名無しさん2008/11/09(日) 00:18:03
WinAPIのgetPrivateProfile〜()を使うと言う前提なら、〜String()を使うしかないっしょ。
0223デフォルトの名無しさん2008/11/09(日) 02:17:07
>>220
どうもありがとうございました。
もっとmanを読むべきでした・・・
0224デフォルトの名無しさん2008/11/09(日) 05:00:33
C,C++のソース内でexeファイルを実行するのってどうやるんですか?
0225デフォルトの名無しさん2008/11/09(日) 05:03:22
すいません、あとソース内でIEを開いてyahooを開く処理って
どうやるんでしょうか 教えてくださいお願いします
0226デフォルトの名無しさん2008/11/09(日) 09:57:40
>>224
system()

>>225
ブラウザを引き数つきで起動。
0227デフォルトの名無しさん2008/11/10(月) 09:57:58
>>224-225
どっちも、::ShellExecute() でいける。

Webを開くには、exeパスの代わりにURL文字列("http://www.yahoo.co.jp")
を渡し、コマンドに"open"あとの引数は、NULLでよいかと。

exeやcom、bat以外のデータファイルのパスを与えると、拡張子に関連付け
られたプログラム(例えば.txtならメモ帳)が起動する。

ちなみに、起動されるブラウザは「標準のブラウザ」になる。 通常は
IEだが、「スタートメニュー」−「プログラムのアクセスと既定の設定」
でMozilla等IE以外のブラウザを選択していれば、そのブラウザが使わ
れる。
0228デフォルトの名無しさん2008/11/10(月) 10:03:21
>>212

CStdioFileクラスを使う。

  CStdioFile file;
  CString strLineBuf;
  CStringArray arrFileBuf;

  if(file.Open(...))
  {
    while(file.ReadString(strLineBuf))
    {
      arrFileBuf.Add(strLineBuf):
    }
    file.Close();
  }

0229デフォルトの名無しさん2008/11/10(月) 12:57:39
最早、GetPrivateProfileString()は捨てられているのね。
0230デフォルトの名無しさん2008/11/10(月) 13:08:43
int medianfilter()
{
int sortr[9],sortg[9],sortb[9];

col.r = median(sortr);  ☆
col.g = median(sortg);  ☆
col.b = median(sortb);  ☆

return TRUE;
}

int median(int *sort)
{
〜〜〜
}

これをビルドしようとすると☆の行で
error C3861: 'median': 識別子は、引数依存の照合を使用しても見つかりません。
となるんですが、どうすればいいでしょうか?
0231デフォルトの名無しさん2008/11/10(月) 13:14:37
>>230
int medianfilter()の前にint median(int * sort)を移動。できればstaticもつけておく。
0232デフォルトの名無しさん2008/11/10(月) 13:50:48
>>231
出来ました。
ありがとうございました。
0233デフォルトの名無しさん2008/11/10(月) 16:23:13
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7987.txt

上記のa6b.c a6c.c a6d.c でつくった関数をa6a.cでexternを使って呼び出したいのですが、コンパイル時にエラーが出てしまいます。どなたか対処法をお願いします。externを使わずに1つのソースとしてコンパイルすると成功し実行もできます。

エラー内容
$ gcc -o a6a a6a.c
In file included from a6a.c:5:
a6c.c:9: error: conflicting types for 'matrix'
a6b.c:9: error: previous declaration of 'matrix' was here
In file included from a6a.c:6:
a6d.c:9: error: conflicting types for 'matrix'
a6c.c:9: error: previous declaration of 'matrix' was here
a6d.c:9: error: conflicting types for 'matrix'
a6c.c:9: error: previous declaration of 'matrix' was here
a6a.c:12: error: conflicting types for 'matrix'
a6d.c:9: error: previous declaration of 'matrix' was here
a6a.c:12: error: conflicting types for 'matrix'
a6c.c:9: error: previous declaration of 'matrix' was here
a6a.c:14: error: conflicting types for 'omatrix'
a6d.c:12: error: previous definition of 'omatrix' was here
a6a.c:15: error: conflicting types for 'amatrix'
a6b.c:12: error: previous definition of 'amatrix' was here
a6a.c:16: error: conflicting types for 'mmatrix'
a6c.c:12: error: previous definition of 'mmatrix' was here
0234デフォルトの名無しさん2008/11/10(月) 16:27:29
cファイルをincludしたら同じ名前の関数があちこちできちゃうだろ。
hファイルにプロトタイプ宣言を書いて、それをincludeすればいい。
0235デフォルトの名無しさん2008/11/10(月) 16:30:18
つーか今回は同じtypedefか
これもhに入れてそれぞれincludeすりゃいい。
あと、その時のコンパイルは、gcc -o a6a a6a.c a6b.c a6c.c a6d.c で
0236デフォルトの名無しさん2008/11/10(月) 16:54:33
hファイルというものを使う方法以外に何かありませんか?作り直してみましたが、hファイルなんてまったく使ったことがなかったのでエラーがたくさんでてしまいました。
0237デフォルトの名無しさん2008/11/10(月) 16:59:46
じゃあinclude無しで。
extern入れてるし、それぞれでtypedefしてるからなくてもいいだろ。
コンパイルだけ>>235のとおりでやってみ
0238デフォルトの名無しさん2008/11/10(月) 17:08:58
>>237
できました!ありがとうございます。
0239デフォルトの名無しさん2008/11/10(月) 17:49:53
ゲーム作ってるんだけど
とりあえずDXライブラリというのは一通り理解したんだが
つぎのステップとしてはやっぱwindowsAPIを本格的にやるのがいいんですかね?
0240デフォルトの名無しさん2008/11/10(月) 18:30:53
いや、作ってみればいいんでない?一通り理解したなら。
0241デフォルトの名無しさん2008/11/10(月) 18:41:44
あ、ごめんなさい。作ったんです。
で、ちょっとDXライブラリの機能だけじゃ物足りないかなーとか思い始めたんで・・・。
3Dとかにも挑戦してみたいと。
すみません。
0242デフォルトの名無しさん2008/11/10(月) 18:53:13
DXライブラリはその辺全部やっちゃうからな。
まあ普通にWindow作ってみるのもいいかもね。
0243デフォルトの名無しさん2008/11/10(月) 20:01:14
>>242
GDI+とか。
0244デフォルトの名無しさん2008/11/10(月) 21:45:46
DirectXって結構しょぼいんだね。
自前で3Dライブラリ作るのが当たり前なのか。。。

がんばってね。応援してるぜ
0245デフォルトの名無しさん2008/11/10(月) 21:48:50
D3DXがあるだろ
0246デフォルトの名無しさん2008/11/10(月) 22:21:28
vc++2008で質問です。

CLIの中でWIN32って使えますか?

イメージは
CLIで画面を作って
WIN32のプログラムを入れてみたいのですが・・・

h8やPICのCからVCは難し過ぎです
0247デフォルトの名無しさん2008/11/10(月) 23:11:00
できる。
あと、Win32がメインの俺にはマイコンのほうこそ別次元の難しさを感じるぞ。
0248デフォルトの名無しさん2008/11/10(月) 23:17:24
>>247
サンキューです

マイコンはイベントじゃないから書きやすいよ
0249デフォルトの名無しさん2008/11/11(火) 02:38:47
>>245
いやいや、DXライブラリの機能じゃ物足りないって言ってるんだから。
きっとすげえんだよ、彼は。
0250デフォルトの名無しさん2008/11/11(火) 21:00:09
こんちわ
c++でWindows標準のメモ帳起動させて40文字3行程度書き込んでメモ帳閉じる
これできますか?
サンプル貰えたら嬉しいです
0251デフォルトの名無しさん2008/11/11(火) 22:23:21
>>250
「メモ帳」アプリを起動して、そこに文字を流し込むと言うGUIの動きに何か意味があるの?
そうでないなら、適当なファイルを開いて書き出すだけだがね。
入門書を読めば嫌でもサンプルが見つかると思うぞ。
0252デフォルトの名無しさん2008/11/11(火) 22:32:39
CreateProcessしてFindWindowしてSendMessageすりゃいいだけ
0253デフォルトの名無しさん2008/11/12(水) 08:11:04
こんちわ
どもレスありがと

VC++6.0のサンプルってVC++2008で動かないのもあるんですか?
基本的に全部動くはずなんですよね?
0254デフォルトの名無しさん2008/11/12(水) 10:25:52
一部変わったからコンパイルできないものもあるだろうけど
ほとんどは機械的な置き換えで対処できる。
0255デフォルトの名無しさん2008/11/12(水) 12:46:09
vector<string> buff(3);を

func(buff)として void func(vector<string> &buff)という関数に渡す。

この関数でbuffに3つの文字列を入れる。
buff[0] ="hoge";
buff[1] ="huga";


っていう処理を書いたんですが、問題点とかありますか?
0256デフォルトの名無しさん2008/11/12(水) 13:16:47
>>255
カプセル化されていないとか、気持ち悪いとか、そういった類を除けば特に問題ないかと。
0257デフォルトの名無しさん2008/11/12(水) 20:52:04
C++とC++/CLIってどちらが高尚なの?
0258デフォルトの名無しさん2008/11/12(水) 21:04:46
>>257
CLIやるならC#でいいじゃんて感じ
0259デフォルトの名無しさん2008/11/13(木) 07:42:19
vc++2008にて質問なのですが

int array[3][4]={
{7,8,-2,3},
{6,-2,9,7},
{1,5,9,-8}
};
という部分で
error C2078: 初期化子の数が多すぎます。
とエラーが出ます。
中身を減らしても、array[10][10]とかにしてもエラーが出るのですが
これはどういうことなんでしょう?
0260のっちー2008/11/13(木) 09:13:41
中の、中かっこっているんでしたっけ?

int array[3][4]={
7,8,-2,3,
6,-2,9,7,
1,5,9,-8
};
0261デフォルトの名無しさん2008/11/13(木) 09:17:31
要ります。
>259は何か勘違いをしていると思われ。
02622592008/11/13(木) 09:59:34
gccでやったら問題なく通りました。
C++とCの違いの問題なんでしょうか?
0263デフォルトの名無しさん2008/11/13(木) 11:05:48
>>261
あっても無くてもどっちでもいい
>>262お前の勘違いだから気にするな
0264デフォルトの名無しさん2008/11/14(金) 12:14:42
いや括弧はないとだめだよ
0265デフォルトの名無しさん2008/11/14(金) 12:41:15
やってみた?
0266デフォルトの名無しさん2008/11/14(金) 12:50:10
どの環境条件で?
0267デフォルトの名無しさん2008/11/14(金) 22:22:18
C言語で動画像を処理したいのですが、
画像を連続で読み込んでいくにはどうすればよいでしょうか?
0268デフォルトの名無しさん2008/11/15(土) 00:39:28
どうすればって、画像の読み込み処理を連続で実行すればいいのでは
0269デフォルトの名無しさん2008/11/15(土) 03:40:23
C言語に何を求めてるのか分からんが
・フォルダ内の全ての画像を連続で読み込む
・それぞれのファイルに赤目補正をする
っていうのはそんなに簡単じゃないよ。

ついでに言うと
・動画ファイルを読み込む
・圧縮形式を変換する
というのも欲しいかもしれないけれど、これもそんなに簡単じゃないよ。

なのでフォトショップでも買ってバッチ処理でもやってくださいな。
0270デフォルトの名無しさん2008/11/15(土) 09:18:21
267ですが、あるフォルダに画像データ○○000.cif〜○○100.cifが入っており、
一つ一つ呼び出してある処理をかけたいのです。
画像のファイルネームを渡せばその画像を読み込んでくれる関数はあるのですが、
100個もファイルネームを用意するのは面倒です。
for文とかの繰り返し文の処理でなんとかならないでしょうか?
0271デフォルトの名無しさん2008/11/15(土) 10:24:30
フォルダ内にあるファイルを全部読み込む処理を書く。
ファイル形式でフィルタして必要なファイルだけ抽出。
あとは好きなだけ処理すればよし。
0272デフォルトの名無しさん2008/11/15(土) 11:14:07
shellから呼べば
■ このスレッドは過去ログ倉庫に格納されています