検索結果 6139 件

by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: putchar()関数について質問します。
返信数: 6
閲覧数: 691

Re: putchar()関数について質問します。

もしそうなら、main1()関数も、字化けするはずです。main1()の方は正常に作動します。 私の仮説が正しい場合、「main1()関数も、字化けするはず」ではありません。 main1()関数ではプログラムに埋め込んだ文字(列)データは出力せず、入力に基づいたデータを出力します。 そのため、通常はある環境で入力に用いる文字コードと出力に用いる文字コードは同じだと考えられるので、 ソースコードの文字コードによる問題は発生しないと考えられます。 ('\n'を表すコードが一般的な10ではない特殊な文字コードなら、問題が発生するかもしれませんが…) 一方、main0()関数では、プログラムに埋め込...
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: putchar()関数について質問します。
返信数: 6
閲覧数: 691

Re: putchar()関数について質問します。

Windows 7 Home Premium Service Pack 1 (64ビット) Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland でテストしましたが、字化けは確認できず、正常に「これは、ファイルシステムのテストです。」と出力されました。 本当にputchar()が上手く機能しないのですか? ソースコードを実行環境と合わない文字コードで保存し、 そのバイト列がそのまま出力されているため、字化け...
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++でソケット通信を用いたメールの送信
返信数: 9
閲覧数: 980

Re: C++でソケット通信を用いたメールの送信

このスレッドにこれを書くのはこれで3回目ですが、 recvを続けるかどうかは、 受信したデータをプロトコルに沿って解釈し、 レスポンスが終わったかどうかで判断するべきです。 SMTPの仕様 によれば、コマンドのレスポンスは 1個または複数個の「行」からなります。 「行」は、3個の数字から始まり、CR('\r')LF('\n')で終わる文字列です。 「行」の最初の3個の数字の次の文字がハイフンであればこの後も「行」が続き、 そうでなければそれがこのレスポンスの最終「行」です。 従って、3個の数字の後にハイフンが無い「行」の最後のCRLFまで受信するまでrecvを続け、 それを受信したらrecvを...
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: fgetsで取得した文字列の末尾の判定
返信数: 7
閲覧数: 608

Re: fgetsで取得した文字列の末尾の判定

配列の中身をsprintfで表示すると、"."で終わっている場合でも改行までは空白の何かが入っているようで 「空白の何か」が何かわかりますか? そもそも、本当に入っているのですか? 提示されたコードから未定義動作を起こす行int str_length = strlen(str);を削除し、 書式%cを%dか%02xに変更して文字コードを出力すると、正体がわかるかもしれません。 配列の中身をsprintfで表示するところまで作成したコードは以下になります このコードは、未初期化の自動変数strの値をstrlen関数内で計算に使用するため、未定義動作になります。 また、「sprintfで表示する...
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++でソケット通信を用いたメールの送信
返信数: 9
閲覧数: 980

Re: C++でソケット通信を用いたメールの送信

意味的には1まとまりのデータでも分割して送られる可能性があるTCPの仕様を無視し、
recvを1回だけ呼び出すことでサーバーからの応答を全て受信できると勘違いしたプログラムを用いたことにより、
実際はSTARTTLSコマンドを送ったにもかかわらず、
SSL/TLSのネゴシエーションを開始せずに別のデータを送ったために切断されているのを、
MAIL FROMで切断されてしまうと勘違いしたようですね。

前にも書いたとおり、きちんとサーバーから送られてきたデータを見てプロトコルに沿って解釈することで、
データの区切りを判定し、データの区切りまで必要十分に受信するべきです。
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++でソケット通信を用いたメールの送信
返信数: 9
閲覧数: 980

Re: C++でソケット通信を用いたメールの送信

recv関数は、デフォルトでは受信したデータが無い(これまで来た分は全て読みきっている)時は、 新しいデータを受信するまで待つ仕様になっています。 一方、サーバー側では、送るべき応答は返したので、クライアント側からの次のコマンドを待っています。 そのため、デッドロックになっているようです。 これを回避するには、受信したデータをちゃんと見てプロトコルに沿って解釈し、 サーバーの応答が終わってクライアントがデータ(コマンド)を送るタイミングになったら、 recv関数を呼ぶのをやめ、次のデータ(コマンド)を送るようにするべきでしょう。 また、とりあえず止まらないようにするには、ioctlsocket...
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++でソケット通信を用いたメールの送信
返信数: 9
閲覧数: 980

Re: C++でソケット通信を用いたメールの送信

また、sprintf_s()関数が使われていますが、使い方が不適切なようです。
sprintf_s()関数の第二引数には書き込み先のバッファサイズを指定するはずなのに、これがありません。
従って、修正するべきでしょう。
  • バッファサイズを引数に取らないsprintf()関数に変更する
  • 引数にバッファサイズを追加する
  • より多くの環境で使えると考えられるsnprintf()関数に変更した上で、引数にバッファサイズを追加する
などの修正方法が考えられます。
by みけCAT
7ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++でソケット通信を用いたメールの送信
返信数: 9
閲覧数: 980

Re: C++でソケット通信を用いたメールの送信

まず、ホスト名が、質問文では「smtp.gmal.com」になっていますが、 提示されたコードでは「smtp.gma i l.com」になっています。 実際に実行しているプログラムではどっちになっているでしょうか? 次に、 プリンタ、スキャナ、アプリからメールを送信する - G Suite 管理者 ヘルプ によると、smtp.gmail.comではポート25は使えないようです。 smtp-relay.gmail.comおよびaspmx.l.google.comではポート25が使えるようなので、 代わりにこれらのホスト名を使うとよさそうであると考えられます。 それでも接続できない場合、プロバイダ...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 足し算
返信数: 5
閲覧数: 509

Re: 足し算

Math さんが書きました:
8ヶ月前
i++ が単項演算子であり
Math さんが書きました:
8ヶ月前
i++ は単項演算子
i++ は単項演算子ではありません。
識別子(変数?)と単項演算子を組み合わせた式です。
オフトピック
よく読んでいなかったため、最初の投稿の段階で気付くことができませんでした。
申し訳ありません。
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列2
返信数: 7
閲覧数: 491

Re: 配列2

オフトピック
問題の出力結果、よく見たら右揃えなんですね…
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列2
返信数: 7
閲覧数: 491

Re: 配列2

goukeiの要素数は十分小さくなりそうなので、
ヒープでもスタックでも静的変数の領域(.dataセクションか.bssセクション?)でも、
好きな場所に置けば良いと思います。

採点する先生の好みやこだわりなどによっては、
それに反する場所に置くと怒られたり不正解や減点になったりする可能性も考えられますが、
こちらではそこまではわかりません。
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 足し算
返信数: 5
閲覧数: 509

Re: 足し算

i++は無限になりますが、 i=i+1は1のままになります。 なぜでしょうか? これは残念ながら私には意味がよくわかりませんが、 i++と i=i+1の結果は同じになりますか? 状況によります。 C言語においては、iが普通の変数であり、 これら単独でセミコロンを付けて文にした場合は、ほぼ同じになると考えられます。 ただし、文脈によっては、以下のような違いが発生します。 i++は1を足す前の値に評価されますが、i=i+1は1を足した後の値に評価されます。 そのため、これらの式の値を代入や条件分岐などに使用する場合、結果が異なる可能性があります。 iがatomicな型の場合、i++ではインクリメ...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: あきらめて違うセンサーにしました。
返信数: 2
閲覧数: 332

Re: あきらめて違うセンサーにしました。

まずはセンサーの値を読み込む方法を考えるのは一旦やめて、 「読み込んだ値を返す」関数を固定値を返すダミーで作ることをおすすめします。 そして、その関数を用い、読み込んだ値(ダミー)に基づいてLCDに出力する部分を先に作ることをおすすめします。 関数が作れない・作った関数をうまく使えないのであれば、 将来センサーから読み込むことになる値を読み込む変数を用意し、 そこにダミーの値を入れておくというのでもいいでしょう。 OUTピンをB2…すなわちCCP1に接続するのですね。 ということは、キャプチャモジュールを使ってパルスの幅を測る感じになりそうですね。 interrupt-on-changeはB4...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 列での演算
返信数: 5
閲覧数: 537

Re: 列での演算

できると思います。
具体的な方法を聞きたければ、フォーラムルールに従って具体的に質問してください。
1. 自分は今何がしたくて
2. どう取り組んで(作ったプログラムはどれで
3. どのようなエラーやトラブルで困っていて
4. 自分は何が解らないのか、知りたいのか
5. 今のCの知識はどの程度なのか

この5点をしっかりと明記して下さい。
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 複数のテキストファイルの扱い方
返信数: 13
閲覧数: 866

Re: 複数のテキストファイルの扱い方

YuO さんが書きました:
8ヶ月前
fopenだと,非標準動作ではあるものの伝統的にエラーの場合はerrnoに値を設定します。
C言語の標準には含まれていませんが、POSIXの標準には含まれているようです。
fopen
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 複数のテキストファイルの扱い方
返信数: 13
閲覧数: 866

Re: 複数のテキストファイルの扱い方

一応「テキストファイルを作るプログラム」のC言語版も置いておきます。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main(void) { const char* chars = "abcdefghijklmnopqrstuvwxyz"; size_t cnum = strlen(chars); int i, j, k; for (i = 0; i < 17; i++) { int lno = rand() % 150 + 50; char filename[256]; FI...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 複数のテキストファイルの扱い方
返信数: 13
閲覧数: 866

Re: 複数のテキストファイルの扱い方

printfをputsに置き換えずプログラムを動かしたところ、
自分の環境ではload errorが出ずに処理を行うことができました。
全角の数字や空白文字が混ざっているなど、処理対象のファイル名が間違っている可能性が考えられます。
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 3項演算
返信数: 5
閲覧数: 654

Re: 3項演算

コードゴルフをする場合は、三項演算子の方が1バイト短くできて良さそうです。

コード:

m=m>f[i]?f[i]:m;
if(m>f[i])m=f[i];

// おまけ
m>f[i]?m=f[i]:1;
m>f[i]&&(m=f[i]);
m+=(f[i]-m)*(m>f[i]);
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 3項演算
返信数: 5
閲覧数: 654

Re: 3項演算

Compiler Explorerで試した ところ、 if文を用いても三項演算子を用いてもcmovg命令を用いた全く同じコードに最適化される例を確認できました。 コンパイルしたコード int smallest(int* arr, int size) { int ans = arr[0]; for (int i = 1; i < size; i++) { if (ans > arr[i]) ans = arr[i]; } return ans; } int smallest2(int* arr, int size) { int ans = arr[0]; for (int i = 1; i <...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 16F819とRGBセンサーを組み合わせる方法について②
返信数: 2
閲覧数: 322

Re: 16F819とRGBセンサーを組み合わせる方法について②

ひよたんさんはこのコードでRGBセンサーから読み取った値を出力できそうだと思っていますか? それとも、わからないので適当に書いただけですか? 継続して数値がでず、 数値もラキーボードを打たないと表示されません。 fgetcで入力待ちをしているので、当然ですね。 「ラキーボード」というのがよくわかりませんが、PCのキーボードのことでしょうか? また右斜めに表示され、 ターミナルソフトの設定でLFを改行とみなすようにするか、\nの代わりに\r\nを用いるようにすると改善されるでしょう。 (\r → カーソルを左端に戻す、 \n → カーソルを次の行に進める) i2c のaddress 構成に問題が...
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 幅優先探索で発生するメモリエラー
返信数: 2
閲覧数: 349

Re: 幅優先探索で発生するメモリエラー

visitedおよびfromの初期化(リサイズ)を最初しかしていないので、 小さいマップについて探索したあとに大きいマップについて探索すると不都合を起こします。 毎回初期化するか、前回の探索とサイズが変わっていたら初期化するようにするといいでしょう。 「ここでエラー」の行において、行こうとしている座標とは関係ない座標をmap.passMapに渡しているので、 正常に行けるかどうか(ここに範囲外かどうかも含まれている)を判定できず、範囲外に行ってしまう原因になります。 行こうとしているのは(x, y) = (next_x, next_y)なので、この座標をmap.passMapに渡すべきです。
by みけCAT
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 16F819とRGBセンサーを組み合わせる方法について
返信数: 6
閲覧数: 479

Re: 16F819とRGBセンサーを組み合わせる方法について

まずは現状のコードの問題点を修正しましょう。 まず、このセンサーのアドレスは「8bit」ではなく「7bit+R/Wビット」なので、 センサーのアドレス0x29にRead(1)/Write(0)を加えて、 Writeは0x52、Readは0x53です。 0x29と0x2Aでは2ビット異なってしまい、おかしいと考えられるでしょう。 次に、 i2c_start(); //START CONDITION i2c_write(sensor_Write_address); //SLAVE ADDRESS (0x29) i2c_write(0x00|0x80); //COMMAND BIT (0x80) i...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 外部シンボル~~が出て何を言っているのかわかりません
返信数: 23
閲覧数: 980

Re: 外部シンボル~~が出て何を言っているのかわかりません

コードをよく読むと、そんな単純な話ではないかもしれません。 まず、関数呼び出しの構造は main→rupu→field→MazeDraw→sento となっています。 このうち、rupu関数とfield関数は引数としてchar*型のデータを受け取り、 MazeDraw関数は引数としてchar型のデータを受け取ります。 そして、main関数ではrupu関数にマルチバイト文字を含む文字列へのポインタを渡しています。 rupu関数ではこのポインタをそのままfield関数に渡し、 field関数ではこのマルチバイト文字の1バイト目をMazeDraw関数に渡しています。 表示のため、文字列全体、もしくは...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 外部シンボル~~が出て何を言っているのかわかりません
返信数: 23
閲覧数: 980

Re: 外部シンボル~~が出て何を言っているのかわかりません

呼び出している関数は char sento(char n1,char n2,char nm1,char nm2,int ss,char n); ですが、提示されたコード中にsentoという名前の関数の定義は char sento(char *nakama1[],char *nakama2[],char *nakamaM1[],char *nakamaM2[],int ss,char n) しか無いようです。 C++は関数のオーバーロードに対応しており、同じ名前でも引数の型が違う関数は違う関数とみなされます。 呼び出している関数 char sento(char n1,char n2,char n...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: javaでPC向けシューティングを作りたいが・・・
返信数: 7
閲覧数: 1046

Re: javaでPC向けシューティングを作りたいが・・・

どのフレームワークがいいかとかはよくわかりませんが、基本的なこととして… まず、「シューティング」というだけではどんなゲームかよくわかりません。 Tonyu Systemのチュートリアル 程度の簡単なものから、 弾幕シューティングや3D空間を3Dモデルのキャラクターが飛び回るような重いものまでいろいろ考えられます。 次に、想定スペックが低すぎると思います。 想定スペック OS:windows 10, 7, CPU:PentinumII 500MHzくらい メモリ:1GB Windows 10 も Windows 7 もシステム要件は1GHz以上であり、500MHzでは足りません。 (RAMは1...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: デジタルフォトフレーム上でのタイマーのプログラム起動は可能でしょうか?
返信数: 2
閲覧数: 305

Re: デジタルフォトフレーム上でのタイマーのプログラム起動は可能でしょうか?

デジタルフォトフレームとの連携ができるかはわかりませんが、
「SDカードに入れたプログラムを起動」する方法の一つとして、
FlashAirという製品を使うとLuaのプログラムが動かせるらしいです。

FlashAir
FlashAir Developers - FlashAirでLuaを実行する
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ステップ数についておしえてください
返信数: 18
閲覧数: 967

Re: ステップ数についておしえてください

オフトピック
かずま さんが書きました:
9ヶ月前
[​i] をタグと解釈するのはやめて欲しい。
このせいで過去の記事を検索しても、ダメに
なっているものがたくさんあり、残念です。
記憶が正しければ以前は閉じタグの[/i]がなければタグとみなされなかった気がしますが、
閉じタグがなくてもタグとみなされるように改悪されてしまったようですね…
なんででしょう?
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 制作ゲームのロード時のエラーについて
返信数: 16
閲覧数: 880

Re: 制作ゲームのロード時のエラーについて

intへのポインタの配列を用意し、わざわざ1個ずつintのオブジェクトを確保し、
そこにオブジェクトハンドルを入れるというのは、あまり見ないパターンですね。
そして、このオブジェクトハンドルを入れたintのオブジェクトをdeleteしても、
DXライブラリで確保したオブジェクト(画像、音、モデルなど)の領域を開放することはできません。
DXライブラリで確保したオブジェクトの領域を開放するには、
それぞれに対応したDXライブラリの関数を使わないといけません。

(本当にオブジェクトがリークしているかは確認していません)
(よく見たら、オブジェクトもちゃんと開放している場所もありますね)
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 制作ゲームのロード時のエラーについて
返信数: 16
閲覧数: 880

Re: 制作ゲームのロード時のエラーについて

コードが7089行もあり、読むのが大変です。
最小限の・自己完結した・確認可能なサンプルコードの作成と提示をお願いしたいです。
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 動作確認のお願い
返信数: 5
閲覧数: 559

Re: 動作確認のお願い

環境:Windows 7 Home Premium Service Pack 1 (64ビット)
「コンピューターに MSVCP140D.dll がないため、プログラムを開始できません。」というエラーが出ました。
mixcpp-3-20539-20190131.png
エラー
mixcpp-3-20539-20190131.png (22.82 KiB) 閲覧数: 528 回
Dependency Walkerでチェックしたところ、他にも
VCRUNTIME140D.DLLおよびUCRTBASED.DLLが使用されており、自分の環境には無いようでした。
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語 構造体について
返信数: 26
閲覧数: 1720

Re: C言語 構造体について

B:行で strstr 関数を使ってますが、ここは、strcmp 関数を用いて if(strcmp(seiseki[n].szName, name)==0) でないと駄目です。 これは誤りです。 なぜなら、#2で「氏名の一部を入力すると点数を表示する」という条件があるのに、 この条件式では氏名全体を入力しないと該当する点数が表示されくなってしまうからです。 同様に、 「一単位づつ strcmp で比較」を for で回す必要があります。 も誤りです。 以下のようにforを二重にし、 構造体に記録した氏名のデータからマッチする可能性がある部分をstrcmpで比較していく方法もありますが、 上司...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C言語 構造体について
返信数: 26
閲覧数: 1720

Re: C言語 構造体について

問題を読んでいないのでもしかしたら「for文を使う」という指定があるのかもしれないですが、
そうでなければ別にfor文を使う必要は無いですね。
なぜなら、for文

コード:

for (A; B; C) D;
は、(Dにcontinue;を含まなければ) while文

コード:

{ /* Aが宣言を含む時、その影響が漏れないようにする */
    A;
    while(B) {
        D;
        C;
    }
}
と等価なので、代わりにwhile文を使えばいいからです。
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: メニュー画面でのバグ
返信数: 15
閲覧数: 891

Re: メニュー画面でのバグ

変数の定義順の違いで動作が変わるということであれば、
配列の範囲外へのアクセスなどの未定義動作が起こっている可能性が考えられます。
Valgrindなどの自動検査ツールを使えればいいのですが、
Windowsに対応しているものはあったかなあ…?
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: メニュー画面でのバグ
返信数: 15
閲覧数: 891

Re: メニュー画面でのバグ

一応ファイルの内容が揃って実行できるのかもしれないですが(確認してません)、
ファイルが多くてコピペの手間が大きそうですね。
本文で貼るのではなく、zip形式などでまとめて添付ファイルにしていただいた方がよかったと思います。

また、イベントやマップなどのコードもあるようですが、それは本当に「メニュー画面でのバグ」に関係あるのでしょうか?
関係ない部分は削っていただき、バグが再現可能な最小限のコードにしていただけるとわかりやすそうだと思います。
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ニュートン法について
返信数: 2
閲覧数: 296

Re: ニュートン法について

「シグモナイト関数」でググってみましたが、
AIの現状と技術の概要 - Qiita
しかヒットせず、定義は見つかりませんでした。
どのような関数なのでしょうか?

もし「シグモイド関数」のことでしたら、fxの定義がおかしいように思えますね。
提示されているコードの言語がわかりませんが、
C言語やC++では+演算子より/演算子の方が先に計算されるので、
これらの言語だと仮定すると、fxは1 / 1を先に計算して1 + exp(-x)と同じ意味になります。
return 1 / (1 + exp(-x)); のようにカッコを追加すれば、標準シグモイド関数を計算できるはずです。
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 迷路攻略プログラム
返信数: 1
閲覧数: 294

Re: 迷路攻略プログラム

まず、変な「予想」をするのは避け、「左手法」とはどのようなアルゴリズムなのかを調べましょう。 例えば 迷路 第四章 を参考にすると、以下のようなプログラムになると思います。 //壁の状況を取得する wall = getWall(); if (!(wall & D_WALL_LEFT)) { //左に壁がない (左に進める) leftTurn(); // 左に向きを変える } else if (!(wall & D_WALL_FRONT)) { //前に壁がない (前に進める) // そのまま } else if (!(wall & D_WALL_RIGHT)) { //右に壁がない (右に進め...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 最短経路の求め方
返信数: 8
閲覧数: 558

Re: 最短経路の求め方

まず、処理対象のグラフを図示してみました。 graph.png Wandbox で実行してみると、以下のようになりました。 0 17 1000000 1000000 1000000 1000000 1000000 17 0 21 7 1000000 1000000 1000000 1000000 21 0 13 5 1000000 1000000 1000000 7 13 0 1000000 5 1000000 1000000 1000000 5 1000000 0 16 22 1000000 1000000 1000000 5 16 0 25 1000000 1000000 1000000 ...
by みけCAT
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: bmpファイルの入出力
返信数: 12
閲覧数: 698

Re: bmpファイルの入出力

読み書き両方です。
書き込み時にパディングを入れたら(そして他のソフトウェアは入れるので)、
読み込み時もパディングが入っている前提で読み込まないと、おかしくなりますよね。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: bmpファイルの入出力
返信数: 12
閲覧数: 698

Re: bmpファイルの入出力

これはカラーテーブルが256要素あり、画素が下のものから並んでいる無圧縮256色bmpファイル専用ですね。 解析の結果、少なくとも以下の問題があることがわかりました。 readBMP関数において、ファイルを開いた直後に必ずreturn -1;しているので、 読み込み処理が行われず、writeBMPに未初期化のデータが渡されてしまいます。 複文({}で囲まれたブロック)を用いてファイルが開けなかった場合のみreturn -1;するようにするか、 return -1;を削除するといいでしょう。 せっかくbmpInfo->imageDataに確保した領域のアドレスを入れているのに、 その後の読み込み...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 円と回転四角形(長方形)の当たり判定
返信数: 6
閲覧数: 522

Re: 円と回転四角形(長方形)の当たり判定

「回転長方形」の表現方法がわかりませんが、仮に ・辺がx軸またはy軸と平行な長方形 ・回転の中心座標と回転角度 で表現されているとします。 このときは、 1. 円の中心座標を、長方形の回転の中心座標を中心に、長方形の回転角度×(-1)回転する 2. 回転後の円と、「辺がx軸またはy軸と平行な長方形」の当たり判定を行う で当たり判定ができると思います。 円と辺がx軸またはy軸と平行な長方形の当たり判定は、 円と長方形の当たり判定 | ftvlog によると、 ・長方形を縦(上下)または横(左右)に円の半径分伸ばした領域に円の中心が入っているか ・円の中心と長方形の四隅の距離が円の半径以下か でで...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 円と回転四角形(長方形)の当たり判定
返信数: 6
閲覧数: 522

Re: 円と回転四角形(長方形)の当たり判定

回転させた後の長方形の四隅の点の座標を求めて、多角形と円の当たり判定をすることでできると思います。 ある点Aを別の点(x, y)を中心に回転させた点は 1. 点Aを(-x, -y)平行移動する。これを点A'とする。 2. 1で求めた点A'を、原点を中心に回転させる。これを点A''とする。 3. 2で求めた点A''を(x, y)平行移動する。 ことで求めることができます。 多角形と円の当たり判定は、例えばこのサイト 2D衝突編その5 円と線分から多角形と円へ に載っているように、 ・円が多角形を構成するいずれかの辺(線分)に当たっている ・多角形の辺が時計回りのベクトルで表されているとき、円の中...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: c言語で避けゲーを作ってるのですがうまくいかない
返信数: 4
閲覧数: 406

Re: c言語で避けゲーを作ってるのですがうまくいかない

せっかくbom1~bom3で爆弾を描画しても、すぐにHgClearで消してしまうため、
表示されない、もしくは表示されないように見えるのだと推測できます。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: delay関数について
返信数: 1
閲覧数: 231

Re: delay関数について

環境がわかりませんが、 例えばクロック周波数とそれぞれの命令を実行するのにかかるクロック数が決まっているマイコンであれば、 そこから計算して20usecに該当するクロック数 - ポート操作にかかるクロック数のディレイをアセンブリ言語で入れる、 という方法があります。 (例えばクロック周波数が16MHzなら、320クロックで20usec) また、タイマー割り込みが使える環境であれば、20usec間隔で割り込みがかかるようにして、 50000回(1000ms)割り込みがあったらPORTAbits.RA0 = 0x01;を実行し、 さらに次の割り込みでPORTAbits.RA0 = 0x00;を実行...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: UTF-8 から Shift_JIS への変換
返信数: 3
閲覧数: 569

Re: UTF-8 から Shift_JIS への変換

URLエンコードをデコードしたいということであれば、添付ファイルに入っていたnkf.exeの出力 YUKI.N>.\nkf.exe --help Usage: nkf -[flags] [--] [in file] .. [out file for -O flag] j/s/e/w Specify output encoding ISO-2022-JP, Shift_JIS, EUC-JP UTF options is -w[8[0],{16,32}[{B,L}[0]]] J/S/E/W Specify input encoding ISO-2022-JP, Shift_JIS, EUC-JP...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 857

Re: scanf を簡略化したい

「C++ テンプレート 特殊化」でググって最初に出てきた テンプレートの特殊化 | Programming Place Plus C++編【言語解説】 第23章 を参考に、こんな感じでしょうか。 #include <iostream> #include <cstdio> #include <string> using std::cin; using std::string; template <typename T> T in() { T temp; cin >> temp; return temp; } template <> int in() { int temp; scanf("%d",...
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: コードの書き方チェックお願いできますでしょうか。
返信数: 2
閲覧数: 400

Re: コードの書き方チェックお願いできますでしょうか。

配列の0番目の要素を使っておらず、学生数STUDENT_NUM_MAX-1までしか安全に処理できないので、
STUDENT_NUM_MAXという名前が紛らわしくて良くないですね。
0番目の要素を使いたくないのであれば、要素をSTUDENT_NUM_MAX+1個確保するべきでしょう。

できれば、
・入力の読み取りに成功したか (scanfの戻り値)
・入力された値が正常か (大きすぎないか、小さすぎないか)
・計算がオーバーフローするか
のチェックもあるといいでしょう。
by みけCAT
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: malloc関数とfree
返信数: 2
閲覧数: 389

Re: malloc関数とfree

dmatrix関数内でせっかく確保して場所を配列に登録した領域を、
実際に利用する前に開放してしまっているので、
その後の処理で寿命が付きているオブジェクトを使用することになり、未定義動作になります。
dmatrix関数内のfree(base);を削除し、main関数内のfree(a);の直前にfree(*a);を追加するといいでしょう。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: E0167 パラメーターと互換性がありません。
返信数: 2
閲覧数: 337

Re: E0167 パラメーターと互換性がありません。

文字列にTEXTマクロを使用してUNICODE/非UNICODE両対応にするのも良さそうですね。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ポインタのデリファレンスについて
返信数: 2
閲覧数: 362

Re: ポインタのデリファレンスについて

2項演算子の*(一般的には掛け算)と単項演算子の*(一般的にはデリファレンス)は違います。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ウィンドウが一瞬で消えてしまう
返信数: 2
閲覧数: 317

Re: ウィンドウが一瞬で消えてしまう

main.cpp内のwhile文の条件が、
「関数を呼び出した戻り値」ではなく「関数のアドレス」を0と比較するようになっていますね。
通常の環境では関数のアドレスは0にはならないはずなので、これでは常に偽になり、
ループに入らずに終了してしまうでしょう。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 当たり判定が追加した敵を倒しても復活してしまう
返信数: 2
閲覧数: 399

Re: 当たり判定が追加した敵を倒しても復活してしまう

「存在フラグ」のはずのflagメンバが「方向フラグ」としても使われてしまっているようなので、
方向を表すデータを別のメンバで管理するようにするといいと思います。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリの残り時間表示
返信数: 4
閲覧数: 546

Re: DXライブラリの残り時間表示

この方法のままでいくなら、secを変える分の補正を

コード:

		if(min == 0)
			min = -1;
と特殊な場合のみするのではなく、

コード:

		min--;
と一般の場合についてするようにするのがいいでしょう。
finish()を呼ぶかの判定も、それに合わせて変えたほうがいいかもしれません。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリの残り時間表示
返信数: 4
閲覧数: 546

Re: DXライブラリの残り時間表示

分と秒に分けてから残り時間に変換しようとして複雑になっているようなので、
分ける前に60*TIME_MIN-secで残り時間[秒]を出して、
それを分と秒に分けて表示するのがいいと思います。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: LoadDivGraph関数での画像の描画の仕方について
返信数: 2
閲覧数: 420

Re: LoadDivGraph関数での画像の描画の仕方について

LoadDivGraph関数を使う場合画像ハンドルを配列に格納することになることが多いと思うので、
画像ハンドルを描画関数に渡しているところを配列の適切な要素を渡すように書き換えればいいと思います。

また、LoadDivGraph関数でも画像を1個(1マス)しか読み込まないことができます。
この場合、配列ではなく画像ハンドルを格納するint型の変数へのポインタをLoadDivGraph関数に渡すことができ、
その他の書き換えはいらないでしょう。

LoadDivGraph関数を使って失敗しているコードを見せていただけると、具体的な修正点を指摘できるかもしれません。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリのタイピングゲームで入力を待ってほしくない
返信数: 2
閲覧数: 464

Re: DXライブラリのタイピングゲームで入力を待ってほしくない

入力を読み込む前にClearInputCharBuf()を呼んでいるため、キー入力のデータが消されてしまい、 入力を検出できなくなっているようです。 従って、この関数の呼び出しを削除するといいと思います。 動作確認したコード (DXライブラリ Ver3.17a) #include <DxLib.h> #define STR_MAX 1024 #define QUIZ_MAX 1024 #define STR_MAX 1024 #define WINDOW_X 640 #define WINDOW_Y 480 int MainFont; int White; void ShapeRotation...
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: オブジェクトを返す関数
返信数: 3
閲覧数: 524

Re: オブジェクトを返す関数

myclassクラスの代入演算子がオーバーロードされていないため、

コード:

a = a.f2();
b = b.f2();
の部分でポインタの値がコピーされ、
寿命が尽きることによりまだ使う領域が開放されてしまいます。
ポインタの値ではなく、領域の内容をコピーするような代入演算子の定義をmyclassに追加するといいでしょう。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 文字化けについて
返信数: 2
閲覧数: 761

Re: 文字化けについて

これはどのようにして教えてもらったのですか?
もしファイルでもらったのであれば、文字化け?したテキストではなく
そのファイルの該当部分のデータ(バイト列)をそのまま提示していただけると、
もしかしたらわかりやすくなるかもしれません。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: mingw64でのDxlib使用法
返信数: 6
閲覧数: 1330

Re: mingw64でのDxlib使用法

-m32オプションを使うことで、32ビットモードでコンパイルできるはずだと思います。
(「コンパイル」はできても、32ビット用ライブラリが無い環境だと「リンク」に失敗することがあります)
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 2次元配列のポインタ標記
返信数: 2
閲覧数: 811

Re: 2次元配列のポインタ標記

dataは「int型の要素3個の配列」の配列なので、 この式中では「int型の要素3個の配列」へのポインタになります。 したがって、これに1を足すと次の「int型の要素3個の配列」を指すことになります。 (i*3)もjも整数であり、整数を足してもデリファレンスする効果は無いので、 data+(i*3)+jはdataが指す「int型の要素3個の配列」の((i*3)+j)個先の 「int型の要素3個の配列」を指すことになります。 これを*(data+(i*3)+j)としてデリファレンスすると、「int型の要素3個の配列」になるので、 配列の先頭要素のポインタがcoutに渡されることになります。 規...
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++で画像一枚のRGB値の割合を計算
返信数: 2
閲覧数: 856

Re: C++で画像一枚のRGB値の割合を計算

「RGB値の割合を計算」というのがどのような処理なのかよくわかりませんが、
画像処理といえばOpenCVでしょうか。
「OpenCV」でググる
オフトピック
Pythonのインターフェースを使えば、コンパイル不要ですぐに実行でき、
ソースコードをファイルに保存しなくてもインタラクティブに計算を試せるので便利です。
「OpenCV Python」でググる
(あ、でも「C++で」という条件でしたね。C++からでも使えるはずです。)
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: [c言語 Handy Graphic] クリック処理について
返信数: 5
閲覧数: 2403

Re: [c言語 Handy Graphic] クリック処理について

円の中心とマウスカーソルの距離が円の半径以内ならマウスカーソルが円の中にある、
という判定ができます。

「円の面積を求めて、その範囲内を条件として処理」というのは具体的にどのような処理なのかよくわからないので、
そう考えて良いかはわかりません。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: float型によるベクトル計算
返信数: 5
閲覧数: 1266

Re: float型によるベクトル計算

//angleから0を除外する if (Angle_G[0] == 0 || Angle_G[1] == 0 || Angle_G[2] == 0) { if (Angle_G[0] == 0) { angle_X= 0.0000000000000000000000001f; } if (Angle_G[1] == 0) { angle_Y = 0.0000000000000000000000001f; } if (Angle_G[2] == 0) { angle_Z = 0.0000000000000000000000001f; } } else { angle_X = Angle_G[0...
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ln3の近似値
返信数: 1
閲覧数: 1924

Re: ln3の近似値

コード中の2っぽい部分を3っぽくしたら、求まるようです。 どうしてこれでいいのかは考え中です。 #include<stdio.h> #define K 30 int keta(double S1,double S2){ int si1=(int)S1; int si2=(int)S2; int j=0; while(j<K){ S1=(S1-si1)*10.0; si1=(int)S1; S2=(S2-si2)*10.0; si2=(int)S2; if(si1==si2)break; j++; } return j; } int main(void){ int i,j,k; long n=1...
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 【急募】課題手伝ってください、
返信数: 2
閲覧数: 2364

Re: 【急募】課題手伝ってください、

これは禁止されている課題の丸投げに該当し、手も足も出ないことの明記も無いようですね。
まずはフォーラムルールを読み、それに沿った質問をするのがいいでしょう。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 計算量の増加で実行時errorが発生した時の対処法
返信数: 7
閲覧数: 2407

Re: 計算量の増加で実行時errorが発生した時の対処法

int flag[N][N][N][N]は、Nの4乗個のintを確保します。 intが4バイトでN=256の場合、これは16GBになります。 そのプログラムで何をやっているかがわかりませんが、 処理内容によっては1要素のサイズを必要最低限まで減らすことで、メモリの使用量を減らすことができます。 例えばintからcharにすることで、扱える値の範囲が-128~127または0~255になる代わりに、 合計サイズを4GBに減らせます。 (もしかしたら環境によっては違うかもしれません) さらに1要素あたり1ビットに(unsigned char flag[N][N][N][N / 8])することができれ...
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: [c言語 Handy Graphic] クリック処理について
返信数: 5
閲覧数: 2403

Re: [c言語 Handy Graphic] クリック処理について

main関数でjudgeの範囲外にアクセスしてしまう可能性がありますね。
judge[i]ではなく、judge[cir_color[i]]とするべきような気がします。
by みけCAT
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 逆ポーランド式の計算について
返信数: 5
閲覧数: 1855

Re: 逆ポーランド式の計算について

「文字」と「文字列」をしっかり区別しましょう。 exprに入るのは「文字列」です。 expr[i]でそれぞれの「文字」が得られます。 a, s, m, dに入っているのは「文字」です。 「文字列」同士の比較にはstrcmpが使えますが、「文字」同士の比較には直接==演算子などを使うべきです。 「文字」は文字コード(整数)を用いて表され、 数字を表す文字コードは通常その数字とは異なります。 例えば、数字0を表す文字コードは'0'であり、ASCIIなら48です。 従って、文字が数字か判定するには、数値の0や9ではなく文字(コード)の'0'や'9'と比較するべきです。 もしくは、ctype.hを#i...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: [c言語 Handy Graphic] クリック処理について
返信数: 5
閲覧数: 2403

Re: [c言語 Handy Graphic] クリック処理について

main関数内のx, y, vx, vyはそれぞれ3要素しか無いのに、ballcountを3から増やしてしまうと、
配列の範囲外にアクセスすることになり、危険です。
cir_colorだけでなく、色球のパラメータ全てについて、十分な要素数を確保しないといけません。
色球1個分のパラメータを構造体にまとめ、その構造体の配列を用意するのもいいかもしれません。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 通信関係
返信数: 3
閲覧数: 2639

Re: 通信関係

オフトピック
本題とは関係ないと思いますが、AddChatLog関数やAddServerLog関数などで、
入力の文字列がそのまま含まれる文字列をノーチェックで
fprintf_s関数やprintf_s関数の書式として渡す可能性がありますね。
このようなことをしてしまうと、%を含む文字列を入力されたときに予期せぬ動作を引き起こすことに繋がり、
危険です。
整形を行った後の文字列をそのまま出力するには、fputs関数を使う方がいいでしょう。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 作ってみたプログラムが動作しないです
返信数: 12
閲覧数: 4668

Re: 作ってみたプログラムが動作しないです

(rand関数からは0~RAND_MAXの整数が全て等確率で返るすると)
商を使うにしろ余りを使うにしろ別の何かを使うにしろ、
0~RAND_MAXの整数から欲しい範囲の整数にマップすることになるので、
(RAND_MAX+1)が欲しい整数の種類数で割り切れない場合は、必ず等確率ではなくなります。
等確率にしたければ、割り切れない端の部分の数が出たら捨ててやり直すのがいいでしょう。

参考:いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 弾の描画について
返信数: 5
閲覧数: 2874

Re: 弾の描画について

ちなみに、今回は追加した仮ソースコードを以下のように変更することで、 一部の関数の呼び出しのログを取り、異常な描画関数の呼び出しを発見しました。 ALL.h #ifndef ALL_H_GUARD_BE6CB1AC_7161_4AE9_9B9E_748D0EEC3A87 #define ALL_H_GUARD_BE6CB1AC_7161_4AE9_9B9E_748D0EEC3A87 #include <DxLib.h> #include "Loading.h" #include "PL_Shot.h" static const int SCREEN_WIDTH = 1280; void Pla...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 弾の描画について
返信数: 5
閲覧数: 2874

Re: 弾の描画について

原因がわかりました。 全ての弾の描画を行うPL_Shot_Draw()をPL_Shot_Update()内のループの中で呼んでしまっているため、 処理順で最初の弾以外は座標更新前に1回以上描画され、座標更新後にも描画されるので、 二重になってしまうようです。 よって、PL_Shot_Draw()をPL_Shot_Update()内のループ内ではなく、 ループから出た後で呼ぶようにすると改善するでしょう。 また、PlayerDraw()もPlayerUpdate()内のループの中から呼ばれていますが、 こちらはループが1回しか回らない上、引数で処理対象を指定しているので、問題ないでしょう。 そも...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 弾の描画について
返信数: 5
閲覧数: 2874

Re: 弾の描画について

さらに観察したところ、
生きている弾の中でpl_shotのインデックスが最小のものが普通に、その他が二重に描画されるようです。
原因は調査中です。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 弾の描画について
返信数: 5
閲覧数: 2874

Re: 弾の描画について

以下の仮ソースコードと添付の仮画像を追加して実行してみたところ、 一部の弾が1フレームに移動する距離(20px)だけずれて二重に描画される現象が観測できました。 また、同じ弾でも飛んでいる途中に二重になったり普通になったりすることもありました。 原因は調査中です。 仮ソースコード ALL.h #ifndef ALL_H_GUARD_BE6CB1AC_7161_4AE9_9B9E_748D0EEC3A87 #define ALL_H_GUARD_BE6CB1AC_7161_4AE9_9B9E_748D0EEC3A87 #include <DxLib.h> #include "Loading.h"...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 作ってみたプログラムが動作しないです
返信数: 12
閲覧数: 4668

Re: 作ってみたプログラムが動作しないです

でもプログラム中で配列の個数を決める方法には興味があるので回答いただけると嬉しいです。 realloc()を用いて動的確保する方法があります。 #include<stdio.h> #include<time.h> #include<stdlib.h> int getrand(int min,int max); int main (void) { int* random = NULL, i = 0; do { int* random_next = realloc(random, sizeof(int) * (i + 1)); if (random_next == NULL) { perror(...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: アニメーションの切り替えについて
返信数: 2
閲覧数: 1570

Re: アニメーションの切り替えについて

アニメーションのコマが進む間隔は4フレームなのに対し、1回の上キー入力でjflagがtrueになる時間は6フレームなので、
ジャンプアニメーションの1コマ目しか描画されないかは上キー入力のタイミングによりそうです。
本当に1コマ目しか描画されていないか、
playerImgIndexを画面に表示するだけでなくファイルにログを取って確認してみるべきかもしれません。
ただ、それでもジャンプのアニメーションを行う時間が短そうなので、
「着地するまで」など別の判定方法にしたほうがいいと思います。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体のポインタ配列と動的メモリ確保について
返信数: 1
閲覧数: 1300

Re: 構造体のポインタ配列と動的メモリ確保について

・seisekiはint型なのに0.6をかけたらdouble型にならないのでしょうか。 int型の変数にdouble型の数をかけたら確かにdouble型になります。 そして、int型の変数に格納するときは自動的にint型に変換されます。 ただし、double型に変換される前に割り算をしており、切り捨てられる可能性があるのは心配ですね。 ・メモリを確保..とありますが100回繰り返したら結局100名分の構造体配列を用意するのと一緒なのではないのでしょうか。 一緒ではありません。 むしろポインタ配列(や動的メモリ確保システムのオーバーヘッド)の分だけ 100名分の構造体配列を用意するよりメモリ使...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: switch文を使った整理
返信数: 3
閲覧数: 2447

Re: switch文を使った整理

switch文の処理の重さがどの程度なのかわかりません。 int input(void); void func(int); int main(void) { int x = input(); switch (x) { case 0: func(123); break; case 1: func(456); break; case 2: func(789); break; } return 0; } というコードを書いて Compiler Explorer でコンパイルしてみたところ、 どのコンパイラでも比較と条件分岐の連続になるようでした。 数十個~数百個程度の分岐であれば、おそらく画像のロ...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: DXlibの起動時と起動後の挙動について
返信数: 1
閲覧数: 789

Re: DXlibの起動時と起動後の挙動について

ctrl+F5を押した際に初期設定されているwindowのサイズの黒画面が出てきてそのあとに私が設定したサイズの画面が出てきて下記の処理が実行されています。 SetGraphMode関数をDxLib_Init()の前に呼び出すようにすると改善するでしょう。 実行してからしばらくすると処理が止まってしまい入力を受け付けずキャラが動かなくなってしまいます。 ここに載っていない関数があり、断定はできませんが、 各フレームで毎回画像を読み込まないようにする (PlayerInit関数を毎フレーム呼ばず、ループに入る前で1度だけ呼ぶようにする)か、 宗教上の理由などでどうしても毎フレーム画像を読み込み...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
返信数: 15
閲覧数: 2442

Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です

問題5 まずはじめに、 配列・ポインタなどは用いない この制約は非常に困ります。 まず、「など」の範囲がわかりません。 例えば「配列・ポインタなど(教科書〇〇の△章以降で紹介されている機能)」かもしれないし、 「配列・ポインタなど(この問題の採点者が個人的に嫌いな機能)」かもしれないし、 「配列・ポインタなど(C言語にある言語機能すべて)」かもしれないし… 具体的に何を使ってはいけないのかわからないので、プログラムが書きにくいです。 次に、一般的なパソコン環境においてC言語でポインタを使わずに入出力をするのは難しいと考えられます。 C言語の関数呼び出し演算子()は引数に関数へのポインタを取るの...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
返信数: 15
閲覧数: 2442

Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です

問題4 投稿日時が近く、不自然な空白を含めて一字一句同じに近い質問を見つけました。 キーボードから(空白類文字を含むかもしれない)1行を入力して,先頭のK... - Yahoo!知恵袋 ここに答えに近いコードが載っています。 私も解いてみました。 まずはHaskellで。 ただし「キーボードから入力」という所はサボっています。メモリを動的確保しているかもわかりません。 judge :: String -> String judge str = judge_i str "" "" (0 :: Integer) (0 :: Integer) where judge_i s s1 s2 l1 l2 ...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1736

Re: Dxlibで二次元配列のマップチップとの当たり判定について

具体的にどのようなことにこまっているか教えていただけますか? 以下、 フォーラムルール より転載 「うまくいきません」という質問は大抵回答に困ります。 1. 自分は今何がしたくて 2. どう取り組んで(作ったプログラムはどれで 3. どのようなエラーやトラブルで困っていて 4. 自分は何が解らないのか、知りたいのか 5. 今のCの知識はどの程度なのか この5点をしっかりと明記して下さい。 環境に依存する場合やライブラリを使っているときは 使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。 コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう。 「ゲーム作っているので...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: プレイヤーの移動処理がうまくいかない
返信数: 2
閲覧数: 888

Re: プレイヤーの移動処理がうまくいかない

CharMove関数の引数plxおよびplyを参照にすることで、
CharMove関数内での座標の更新がPlayer_tに反映されるようにするとよさそうな気がします。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 3550

Re: Win32API の ReadFile の使い方が分からない

ReadFile関数で読み込んだサイズは「バイト数」で返されるのに対し、
DrawText関数で指定するサイズは「文字数」です。
したがって、1文字を複数バイトで表す場合、文字数が実際より長いと勘違いしてしまうようです。
DrawText関数に渡しているwReadSizeを、wReadSize / sizeof(TCHAR)としてみてください。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 2Dアクションゲームの障害物の当たり判定の不具合
返信数: 5
閲覧数: 1052

Re: 2Dアクションゲームの障害物の当たり判定の不具合

float t_Block::Vertex_maxX(int num) { float max = NULL; //一番高いX値を求める for (int i = 0; i < NUM_VERTEX; i++) { if (max == NULL) max = obj_Block[num].pFormat[i].pos.x; else if (max < obj_Block[num].pFormat[i].pos.x) max = obj_Block[num].pFormat[i].pos.x; } return max; } NULLは通常空ポインタを表すものであり、数値として使うものでは...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 3550

Re: Win32API の ReadFile の使い方が分からない

結城紬 さんが書きました:
1年前
DrawText(W) API に入力する文字コードは Unicode (16ビットLE)でなければいけません。
DrawTextW APIだと入力がUnicodeでないといけないので、
Shift_JISの文字列をそのまま使いたければDrawTextA APIを使う、という方法もあります。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: タイム関数について
返信数: 2
閲覧数: 867

Re: タイム関数について

「タイム関数」というのがよくわからないですが、
マイコンで時刻を扱いたいならRTC(リアルタイムクロック)モジュールを使うのがいいと思います。
RTCは内蔵されている機種もありますし、独立したICもあります。


PICでI2C - リアルタイムクロック(RTC) DS1307+の使い方: セッピーナの趣味の天文計算:独立したIC
PICで省エネ時計を作る - KERI's Lab:内蔵(PIC18F27J53)
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 実行ファイルを作れる実行ファイルの作り方を教えて欲しい
返信数: 2
閲覧数: 802

Re: 実行ファイルを作れる実行ファイルの作り方を教えて欲しい

WindowsならPEフォーマット、LinuxならELFフォーマットなど実行ファイルのフォーマットを学んで、
自分でこれらのファイルを書き出すようなプログラムを書く、という方法が考えられます。
ファイルフォーマットだけでなく、対象のCPU(IA-32とか)の機械語の知識も必要になるでしょう。

ただ、これは大変なので、
Nscripterのように「中間コードを実行するプログラム(固定)」と「実行する中間コード(可変)」の組を出力する、というのではダメでしょうか?
(Nscripterでは中間コードではなくテキストのスクリプトを直接実行していますが)
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: データベースを使ったシステムは配布していいのか?
返信数: 14
閲覧数: 2222

Re: データベースを使ったシステムは配布していいのか?

Run-Time Loadable Extensions
で解説されているように、sqlite3ext.hはSQLiteの拡張ライブラリを作る時にincludeするもののようであり、
APIの呼び出しを拡張ライブラリ用に置き換えるコードが含まれているので、
普通のアプリケーションを作るには害になるようです。

コード:

#include "c:\\SQLite\\\sqlite3ext.h"
を削除してみてください。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: memcpy代替案
返信数: 7
閲覧数: 1499

Re: memcpy代替案

環境やコピーするサイズにもよりますが、並列化すると速くなるかもしれません。 これまでの関数もまとめてテストコードを作ってみました。 なぜか(アドレスの範囲だけ確保した場所が使われるにあたって実際のRAMを割り当てる処理の分?) 最初のコピーは他より時間がかかるようなので、それぞれ2回実行し、 かつ最初に実行する関数を選べるようにしてみました。 copy_test.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> double get_time(void) { struct tim...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]zlibを用いたpngの解凍と読み込み
返信数: 7
閲覧数: 3216

Re: [C++]zlibを用いたpngの解凍と読み込み

ValgrindやAddressSanitizerなどで範囲外アクセスなどを起こしていないかチェックしてみるのもいいかもしれないですね。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]zlibを用いたpngの解凍と読み込み
返信数: 7
閲覧数: 3216

Re: [C++]zlibを用いたpngの解凍と読み込み

データ構造によってはデータが連続せず、
何も考えずに配列として先頭要素へのポインタを渡してしまうと変な所にアクセスしておかしくなってしまうかもしれません。
iml::zlib::decodeの返り値の型(deflate::decodeの返り値の型?)は何ですか?
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]zlibを用いたpngの解凍と読み込み
返信数: 7
閲覧数: 3216

Re: [C++]zlibを用いたpngの解凍と読み込み

いろは さんが書きました:
1年前
一応"comp_size"はこの分のメモリ確保した直後に0を代入しているのでメモリ範囲外の書き込みについては大丈夫だと思います。
ごめんなさい、見落としました。
現状で大丈夫そうですね。
考え直してみます。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]zlibを用いたpngの解凍と読み込み
返信数: 7
閲覧数: 3216

Re: [C++]zlibを用いたpngの解凍と読み込み

//圧縮画像データを結合 comp_img = new unsigned char[comp_size]; comp_size = 0; for (auto itr = img_index.begin(); itr != img_index.end(); ++itr) { iml::copy_order(&comp_img[comp_size], itr->second, itr->first); comp_size += itr->first; } これはいけませんね。 comp_imgにポインタを代入しているバッファはcomp_sizeバイトしか確保していないのに、 いきなりcomp_s...
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 関数に置き替える問題です。
返信数: 15
閲覧数: 2409

Re: 関数に置き替える問題です。

Act さんが書きました:
1年前
gcc -Wall (ファイル名) (ファイル名).c としたときに出てきたのですが
「ファイル名」が具体的に何かはっきりしませんが、例えば

コード:

gcc -o x.exe x.c
と「普通にコンパイル」した後、

コード:

gcc -Wall x.exe x.c
を実行すると、重複定義のエラーが出ました。
gccで出力ファイル名を指定するには、-oオプションの後にファイル名を書きます。

x.c

コード:

int main(){}
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体、ポインタ、scanf関数に関して、エラーが解決できません。
返信数: 4
閲覧数: 1787

Re: 構造体、ポインタ、scanf関数に関して、エラーが解決できません。

読み込んだ値をint型のdate->ageに入れてほしいので、これに&をつけた&date->ageを渡します。
date->sexも同様です。

date->nameはchar型を要素とする配列であり、
(sizeofの引数などの例外を除いた)式中では先頭要素へのポインタに変換されます。
scanfの書式%sはchar型の配列の先頭要素を指すポインタを要求する仕様になっており、これは正しいです。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: hit&blowの作り方がわかりません。
返信数: 1
閲覧数: 1026

Re: hit&blowの作り方がわかりません。

要求仕様がわかりませんが、このコードは少なくとも hit, blowの値を初期化せずに計算(インクリメント)に用いている ループのjの範囲がおかしいので、範囲外のhimitsu[4]の値を読んでいる jのループがiのループの外に出てしまっているので、範囲外のkaito[4]の値を読んでいる という所が間違っていますね。 また、 後半のインデントが乱れている scanfが成功したかをチェックしていないため、kaito[​i]の値が初期化されず不定のまま計算に使われる可能性がある 関数inputが宣言されているが、使用されていない という所が間違いとまでは言えませんが、よくないですね。
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題に関して
返信数: 2
閲覧数: 1075

Re: 学校の課題に関して

・fopenを無駄に2回している
・範囲外のbase[100][100]の値を読んでいる
という問題点もありますね。

(fprintfの書式に対して引数が多すぎること自体は、多すぎる引数が無視されるだけで無害です)
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibのアニメーションのアタッチがうまくいかない
返信数: 2
閲覧数: 847

Re: Dxlibのアニメーションのアタッチがうまくいかない

MV1AttachAnim

引数は「アタッチするアニメーション番号」、返り値は「アニメーションアタッチ番号」と分けて書かれているので、
別物なのではないでしょうか?
複数のアニメーションをデタッチせずに同じモデルに連続してアタッチするとどうなりますか?
by みけCAT
1年前
フォーラム: C言語何でも質問掲示板
トピック: webページのhtml取得
返信数: 2
閲覧数: 749

Re: webページのhtml取得

「当サイト」というのが何のことかよくわかりませんが、
ミクプラのことであるとすれば、
ログインページでログイン処理をして同じセッションでアクセスしないといけないのに、
BASIC認証で代用しようとしているのが間違っていると思います。

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