検索結果 124 件

by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: タイトルバーの制御
返信数: 7
閲覧数: 1881

Re: タイトルバーの制御

あまり詳しくないのですが、回答がないようなので概要だけ。 タイトルバーなどの非クライアントエリアを描画するためには、幾つか方法があるようです。 GetWindowDC() 関数で取得したデバイスコンテキストは、ウィンドウ全体に描画出来ます。 WM_NCPAINT をハンドルして、描画する方法もあります。Windows 標準でないデザインにするので、「自分でゴリゴリ描画」するしかないですね。 Chrome は全体の枠(フレーム)がひとつのウィンドウで、各タブも一つ一つがウィンドウです。 Chrome が使用しているかどうかは分かりませんが、矩形以外のウインドウはリージョンを設定すれば出来ます。 ...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: VC++ ビルド後の実行ファイル (exe) について
返信数: 3
閲覧数: 764

Re: VC++ ビルド後の実行ファイル (exe) について

ランタイムライブラリを使用しないようなビルド方法はあります。
すべてに通用する方法ではありませんが、例えば Visual Studio でネイティブなプログラムならば、プロジェクトのプロパティでランタイムライブラリの項目を【マルチスレッド (/MT)】にすればいいです。
boost もスタティックリンクするライブラリを使用すれば、とくにランタイムライブラリを必要とはしないです。
boost のライブラリはビルドするときに DLL を使用するかスタティックライブラリを使用するか選べます。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 標準入力に対するエラー処理について
返信数: 4
閲覧数: 863

Re: 標準入力に対するエラー処理について

bad() は ios_base::badbit が設定されていると true を返します。 fail() との違いを確認するために入れたのであって、このプログラムでは 特に必要なかったかもしれないですね。 badbit はストリームに不整合があって場合に、セットされるのですが、 コンソール(キーボード)やディスクファイルから読込んでいる限り、 あまりエラーになることはないかもしれません。 ignore() は入力ストリームを読み捨てます。例えば数字以外("abcd"など)を 入力した場合 fail() が true になりますが、入力された文字列はそのまま ストリームに残ったままです。間違っ...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 標準入力に対するエラー処理について
返信数: 4
閲覧数: 863

Re: 標準入力に対するエラー処理について

#include <iostream> int main(void) { using std::cin; using std::cout; using std::cerr; int num; for (;;) { cout << "Input :"; cin >> num; if (cin.fail()) { if (cin.bad()) break; if (cin.eof()) break; cerr << "Input Error\n"; cin.clear(); cin.ignore(INT_MAX, '\n'); } else { cout << "Number:" << num ...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 整数商, 余り
返信数: 7
閲覧数: 2955

Re: 整数商, 余り

筆算で割り算をするときに、「何回引き算が出来るか」で行うことは通常はありません。 しかし、割り算を禁止と言われれば一番最初に思いついたのがそれです。同時に余りも求まりますし。 例えば、50÷8 を計算するときほぼ暗算で 6 あまり 2 と出ますが、50から8を引いてもたいした手間ではありません。もちろん桁数が大きくなると大変ですが、小さい桁で出来れば桁が大きくなってても、手順は同じです。 「割り算は引き算の繰り返しで出来る」と授業で教わったかどうかはすでに記憶があやふやで、 定かではないのですが、一般常識として理解していました。 ビットシフトで割り算が出来るのは、プログラミングを勉強し始めてか...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: オープンハッシュのプログラム作成について
返信数: 2
閲覧数: 917

Re: オープンハッシュのプログラム作成について

とりあえずリストは

コード:

typedef struct list {
	long  key;
	struct list *next;
} List;
ではないでしょうか。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 整数商, 余り
返信数: 7
閲覧数: 2955

Re: 整数商, 余り

これはプログラムの問題と言うよりは、算数の問題ですね。

これをプログラムでは無く、手作業ですることは出来ると思います。
その手順を詳細に書き出して、それをプログラムにすればできあがりです。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体配列をポインタ変数から間接参照したい
返信数: 4
閲覧数: 693

Re: 構造体配列をポインタ変数から間接参照したい

解決して何よりですが、このままでは pt を使う意味が無いですね。 次のようにすれば意味が出てくるでしょう。 #include <stdio.h> typedef struct student { int id; char name[20]; }STUDENT; int main(void) { STUDENT st[10]; STUDENT *pt; FILE * fp = fopen("list.txt", "r"); for (pt = st; fscanf(fp, "%d %s", &pt->id, pt->name) != EOF; pt++) { printf("%d %s\n",...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体配列をポインタ変数から間接参照したい
返信数: 4
閲覧数: 693

Re: 構造体配列をポインタ変数から間接参照したい

#include <stdio.h> typedef struct student { int id; char name[20]; }STUDENT; int main(void) { int i; STUDENT st[10]; STUDENT * pt = &st[0]; FILE * fp = fopen("list.txt", "r"); for (i = 0; fscanf(fp, "%d %s", &(*(pt + i)).id, &(*(pt + i)).name) != EOF; i++) { printf("%d %s\n", (*(pt + i)).id, (*(pt ...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: std::stackの末尾要素のdeleteについて
返信数: 2
閲覧数: 545

Re: std::stackの末尾要素のdeleteについて

18 行目ですが、

コード:

	delete sTest.top;
sTest.top は関数なので、delete はできないと思いますが、コンパイルエラーになりませんか。

コード:

	delete sTest.top();
とすればいいのではないでしょうか。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの文字を配列に格納したい
返信数: 1
閲覧数: 362

Re: ファイルの文字を配列に格納したい

ご提示のソースファイルではコンパイルエラーが出るようですが、どのように実行されましたか?

とりあえず 20 行目を

コード:

		fscanf(fp, "%d ,%d", &A1[i], &A2[i]);
とすれば、こちらではうまくいきました。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: エラーE0144  エンティティの初期化
返信数: 2
閲覧数: 1820

Re: エラーE0144  エンティティの初期化

これはインテリセンスのエラーだと思いますが、コンパイル時にも出ますか?
コンパイルエラーでないのであれば、無視するのも一つの手です。

エラーの理由は文字列リテラルの型は const char [] であるのに
char * の初期化に使っているため、型が違うといっているのでしょう。

プログラムの修正は 20行目を

コード:

onst char *g_images[] = {
とすればいいです。

E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
こちらも参照してみてください。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ「visualstudio」の設定について
返信数: 2
閲覧数: 404

Re: DXライブラリ「visualstudio」の設定について

Visual Studio で新規のプロジェクトを作成しようとしているのでしょうか? どこを探してもwin32が見当たらないです。 現在の Visual Studio 2017 には Win32 の項目はありません。 Win32 の開発が出来なくなったわけではなく、名前が変わりました。 DxLib での開発は“Windows デスクトップ”を選ぶ事になります。 Visual Studio はバージョン、エディションにより操作がかなり違います。 また、Visual Studio 2017 は頻繁にアップデートしていて、それによっても違いがあります。 質問するときはそれらを明記していただいた方がス...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 4066

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

char title[80]; char author[40]; タイトルと作者は固定長で定義されていますが、これに 80/40 文字以上をコピーしたらどうなるでしょう? そんなことしたら駄目ですよね。strcpy() ではそういうチェックは出来ませんから、strcpy_s() を使ってくださいと言うことなんだけど、そこは本質的なとこじゃないから、とりあえずエラー無しでコンパイルするためには、プログラムの先頭に #define _CRT_SECURE_NO_WARNINGS を追加してください。 C++なら std::string を使いましょうという話になりそうですが、それはまあ置いておい...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 4066

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

tk-xleader さんが書きました:
1年前
Bull さんが書きました: ただ、これは歴史的経緯で許容されているはずです。
C++11以降は、文字列リテラルをchar*に暗黙変換できるという仕様は削除されました。
あっ、そうなんですね。
C++98でもそうしたかったらしいのですが、そうできなかったという話を聞いたことがあります。

文字列リテラルは const char * で受けるのが正当なのでしょうが、それを厳密にやってしまうと、過去のソースの修正が大変なことになりそうです。そういうこともあって、多くのコンパイラーではまだ const 無しで受けることを許容しているのでしょうね。
もちろん今後作成するソースは const を付けるべきですが。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 4066

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

以前どこかで似たような回答をした記憶があるんだけど... 何でこのエラーが出るのかちょっと不思議 まずエラーになる理由ですが、C++ では文字列リテラルの型は const char [] です。これを関数の実引数に使うと const char * に変換されます。一方 void store(char *t, char *name, int num); で、関数の仮引数は const 無しですので、互換性がないと言うことです。 文字列リテラルは変更不可なのに store() 内部で文字列を変更されてしまう可能性があるので、エラーにしているのでしょう。 ただ、これは歴史的経緯で許容されているはず...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: テトリスの改良版をつくりたいのですが..
返信数: 2
閲覧数: 1214

Re: テトリスの改良版をつくりたいのですが..

エラーメッセージに描かれていますが、コンパイルオプションに /Zc:strictStrings が指定されているようです。
このオプションは既定では off で、プロジェクトでも通常は設定されないようなので、別途追加したのでしょうか?
特に必要で無ければプロジェクトのプロパティーから除けばいいと思います。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル分割した際,構造体が未定義になる.
返信数: 3
閲覧数: 792

Re: ファイル分割した際,構造体が未定義になる.

Sado さんが書きました:変数や関数の定義・宣言はともかく、構造体の定義に関してのみextern指定子は無効だという考えで間違いないでしょうか?
そうですね、C/C++言語では型の外部参照はありません。
コンパイラーは別のファイルにある構造体定義を(#include 以外で)読込むようなことはしません。
オブジェクトと関数の外部参照はリンク時に解決されますが、コンパイルはソースファイル単位(正確には翻訳単位)に行われます。ポインターなら不完全型でもいい場合がありますが、構造体のオブジェクトにアクセスするには不完全型ではダメですね。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル分割した際,構造体が未定義になる.
返信数: 3
閲覧数: 792

Re: ファイル分割した際,構造体が未定義になる.

exList は include.h で

コード:

extern struct strtype_example exList[EX_NUM];
と宣言していますが、このままでは struct strtype_example は不完全型(中身がない)です。
struct strtype_example は init.c で 定義されていますが、funcion.c からは見えません。

コード:

struct strtype_example {
    char *dataA;
    char *dataB;
};
は include.h に記述すると良いでしょう
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: quick sort とselection sortの実行時間の計測
返信数: 2
閲覧数: 324

Re: quick sort とselection sortの実行時間の計測

時間の計算がおかしいようですね。

コード:

     msec=timebf.time-msec;

コード:

     msec=timebf.millitm-msec;
でしょうか?
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: 計算式
返信数: 7
閲覧数: 718

Re: 計算式

コード:

int loaded[] = { 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 10, 1.0 / 2 };
この配列の定義は必須ですか?
この配列が無意味のは理解できますか?

もし必須でなければ、みけCATさんの配列を使った方が簡単そうです。
もし必須ならば、0以上1未満の乱数を生成して、どの範囲に収まるかを求めればいいと思います。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: MIDI情報のTIMEの取得について
返信数: 1
閲覧数: 333

Re: MIDI情報のTIMEの取得について

MIDIデータ の TIME とはなんでしょうか?
デルタタイムでしょうか? それとも絶対時刻でしょうか? それとも演奏時間ですか?

MIDIdataLib を使用して MIDIファイルを読込めば、MIDIEvent 構造体の m_lTime に絶対時刻が入っているようです。

サンプルプログラムは実行してみましたか?
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: C++を複数ファイルに分けた先でのインクルードについて
返信数: 2
閲覧数: 373

Re: C++を複数ファイルに分けた先でのインクルードについて

あくまで私個人の考え方ですが、func.h で iostream をインクルードすることは、無いです。
ヘッダーファイルは、その関数(ここではfunc.cpp)を使う側のためのものと考えるからです。
使う側にとって、iostream を使っているかどうかはあまり関係ないことなので、
必要の無いものはインクルードしないのが、私の方針です。
もちろん、インライン関数などで必要ならインクルードします。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: C言語でリソースの練習をしています
返信数: 4
閲覧数: 628

Re: C言語でリソースの練習をしています

LoadIcon と LoadCursor をする時に、EXE のインスタンスハンドルを指定しているからでしょう。
LoadLibrary でDLL のインスタンスハンドルを取得し、それを指定すれば良いと思います。

リソースのみの DLL の作成
を参考にしてみて下さい。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: ポインタを使った配列を関数に受け渡す方法について
返信数: 7
閲覧数: 2798

Re: ポインタを使った配列を関数に受け渡す方法について

gumi さんが書きました:>申し訳ありません、「main関数の中では*がつかずdataとなり、sort関数で受け取るときint *_dataとなる」の誤りです。
C言語の文法がそうなっていると言うと身も蓋もないですが、関数の仮引数の宣言も普通の変数宣言と同じ書式になります。
引数の引き渡しだけを考えると以下の宣言と本質的には変わりません。

コード:

int *data;
/* ... */
data =(int *)malloc(n * sizeof(int));
/* ... */
int *_data = data
これなら理解できますか?
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]自作dllの読み込み方
返信数: 7
閲覧数: 2297

Re: [c++]自作dllの読み込み方

いろいろ調べた結果、プロジェクトファイルと同じディレクトリ(今回だとMain)にdllがあるとエラーなく動くようです。 できることならbin/Debugのdllを読み込みたいのですが何か方法はないでしょうか? それともプロジェクトファイルと同じディレクトリにdllを出力するのが正しい方法なのでしょうか? 一応確認ですが、ビルドは正常に終了して、実行時にエラーが出るのですよね? でしたら EXE と DLL の位置が問題なのではないかと思います。 要するに DLL を見つけられない状態ですね。 プロジェクトファイルというのがなんなのかわかりませんが、ソースファイルやライブラリーは実行時には関係...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: Visual Stadio2017について
返信数: 5
閲覧数: 838

Re: Visual Stadio2017について

色々やり方はありますが、一番手軽な方法は、ダウンロードしたDxLibの "DxLib_VC\プロジェクトに追加すべきファイル_VC用" の中のすべてのファイル(ヘッダーとライブラリー)をVisual Studioのプロジェクトの "project\include" にコピーすることです。そうすればソースもプロジェクトも変更せずにすみます。

もとのincludeのファイルは上書きしていいと思いますが、不安ならフォルダーごとリネームでもしておいてください。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: Visual Stadio2017について
返信数: 5
閲覧数: 838

Re: Visual Stadio2017について

プロジェクトに含まれるヘッダーとライブラリーは古いようです。
最新のDxLibをダウンロードし、それを使用すればリンクエラーは解消すると思います。
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: cのプログラミング基礎
返信数: 5
閲覧数: 736

Re: cのプログラミング基礎

解決した後見てなかったので、遅くなりました。 gccはあまり詳しくないので、私のわかることだけですが。 まずgccはいろいろなOSで動作し、バージョンによっても事情が変わってくるので、使用している環境を明示していただいた方がいいのです。VC++をお使いのようなので、Windowsと仮定して回答します。もしWindowsでない場合は補足していただければ、他の人からも答えて頂けるかもしれません。 Windowsで動作するgccはCygwinとMinGWが有りますが、私はMinGWしか使ってないので、MinGWについて回答します。MinGWもいろいろな亜流があるようですが、現在使っているのはgcc ...
by Bull
1年前
フォーラム: C言語何でも質問掲示板
トピック: マイクのミュート状態
返信数: 9
閲覧数: 2558

Re: マイクのミュート状態

そのページにあるリンクをたどった先でMMDeviceに少しだけ触れています。
Vista以降はマルチメディア関数に替わりMMDeviceが使われるようです。

英文のサイトですが、Audio Endpoint Devices (Windows)はどうでしょうか。

詳細検索ページへ移動する