[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
101
(1): 2016/12/16(金)09:52 ID:hCzygT3G(2/2) AAS
>>98
じゃあとりあえずGUIが必要だから
そこらへんからかな?
102: 2016/12/16(金)11:19 ID:O1fw7E0o(1) AAS
>>101
わかりました!
ありがとうございます!
103
(1): 2016/12/18(日)22:40 ID:rTzEq7cO(1) AAS
c++でGUIな何かを作るときどうやるのが普通?どうやるのがおすすめ?
趣味嗜好全開でいいから教えてくれ
104: 2016/12/18(日)22:46 ID:eNcCSvTp(1) AAS
ビルド時間とバイナリサイズが気にならないならwxWidgets
105: 2016/12/18(日)22:56 ID:TyHJy95g(1) AAS
真面目にその条件なら.NETだけどそれなら言語はC#でやった方がよいと思う
自分は自分用のWIN32APIを使ったGUI用のライブラリ作ったけど完全に時代遅れだとは思ってる
106: 2016/12/18(日)23:56 ID:psse/iGW(1) AAS
wxWidgetsよさそうやね
クロスプラットフォームってのがいい
107: 2016/12/19(月)08:41 ID:K+bb4qm0(1) AAS
vcを使うという事ですか
108: 2016/12/20(火)08:43 ID:/4ZK922w(1) AAS
>>103
ターゲットのOSとかPC/ケータイとかライセンスとか軽さとか見比べて
GUIフレームワークを選ぶ

Qt は重いけどマルチプラットフォームかつ見た目がいいから人気
Windowsのみなら C# が迷わなくて済むけどね
時代遅れを気にしないなら VC+MFC の情報は多いw
他にもいろいろある
109
(2): 2016/12/24(土)19:03 ID:Xnn//JuE(1/3) AAS
FILE *fp;をグローバル変数にしてたら落ちまくって、ローカル変数にしたら落ちなくなった現象は何でですかね?
グローバルかローカルか関係ない気がするんですけど。
Windows7、Visual Studio 2015
110: 2016/12/24(土)19:04 ID:Xnn//JuE(2/3) AAS
これで4時間近くハマった。
111
(2): 2016/12/24(土)19:11 ID:0UyY/BKM(1) AAS
グローバルな FILE *fp の近く(若いアドレス)に置かれた
グローバルな配列の範囲オーバーじゃないかしら。
112
(1): 2016/12/24(土)20:06 ID:TihFoldF(1) AAS
>>109
ファイルの開くのから閉じるのまでが一関数に収まってて、他から呼び出してないなら関係ないと思うけど
閉じ忘れとか?
113
(1): 2016/12/24(土)20:27 ID:DNE92dFu(1) AAS
fileno とか ferror は確認した?
114
(1): 2016/12/24(土)20:34 ID:y7L7nGQ6(1) AAS
fp をグローバルにおいたソースで 別のローカル変数をグローバルに置いたら
その変数で副作用起こすんじゃね?

(>>111 と同じく範囲突破しての書き込みを疑ってる)
115
(1): 2016/12/24(土)21:00 ID:yr6q9nVG(1) AAS
fpがどんな値になろうと最悪でもエラー検出するだけだから
落ちるのはまともにエラー判定してないせい
116: 109 2016/12/24(土)21:14 ID:Xnn//JuE(3/3) AAS
>>111-115
ありがとうございます。

>>111さんのおっしゃる通り、メモリの問題でした。
fopenからfreadの間で、
読み込みバッファをmallocで確保してmemsetでゼロクリアしている部分があり、
このクリアするサイズが確保したサイズを上回っていました。
なので、fopen直後のエラーチェックでも問題が起きてないのに落ちていたようです。

//私も一度はこれを疑って確認したんですけどね。
//レスもらってから改めて確認したらこのような状況になってました。

根本的な解決ができて良かったです。
117: 2016/12/25(日)01:18 ID:vsDUBYtf(1) AAS
気付くだけ立派だわなぁ
118
(1): 2016/12/25(日)07:00 ID:iLmpV78q(1) AAS
mallocで確保した領域の溢れがグローバルな変数を壊すってのは
ちょいと解せない気もする。

DOSの頃なら互いに影響しあうことも普通だったろうけど、
最近のOSだと別に管理してそう。
内部の詳しいことは知らないけど。
119: 2016/12/25(日)09:26 ID:SibbJTGE(1) AAS
>>118
お前はもう少し勉強してから書き込むべき
120
(1): 2016/12/25(日)09:43 ID:CGvp0k11(1) AAS
エミュとかアドレスを固定してるけどどうやってんの?
121
(1): 2016/12/25(日)16:56 ID:xlX3oF2t(1/2) AAS
質問です
エラーになってしまいます
教えて下さい
C++11です

int n=0;
string hage="s"+n+".png";
122: 2016/12/25(日)17:03 ID:YVZO5C9V(1) AAS
"s"と".png"はconst char*型なので+は無理
123: 2016/12/25(日)17:09 ID:xlX3oF2t(2/2) AAS
そうなんですか…
ありがとうございました
124
(2): 2016/12/25(日)22:48 ID:oxH1mE2q(1) AAS
>>120
最初に、すべてのアドレス分のメモリを確保すれば?

その先頭アドレスを、エミュレータの先頭アドレス・0 にすればいい
125
(1): 2016/12/26(月)01:40 ID:Us2MOZON(1) AAS
>>121
標準で用意されているのはstringとstring/char/char*間のみ(operator+)
なので+するのをintでなくstringにすればいける
C++11ならto_stringがあるから次ので問題ない
string hage = "s" + to_string(n) + ".png";

細かい書式設定とかしたいならsstreamかsnprintfあたりで
126: 2016/12/26(月)08:42 ID:w1n6Bp69(1) AAS
>>124
それじゃ起動毎に変わるんじゃね?
127
(1): 2016/12/26(月)09:21 ID:5lDUjv3x(1) AAS
起動毎にホスト上でのメモリ配置が変わっても
エミュレータの駆動機構で >>124 のように
エミュレーションする対象の仮想コードのアドレッシング → ホスト環境の実メモリ
の変換テーブル経由なら問題は発生しないべ
128: 2016/12/26(月)12:36 ID:bq11e3Cp(1) AAS
>>125
ありがとうございます!
あとでやってみます
129: 2016/12/26(月)16:52 ID:vHVIx8+p(1) AAS
ASLRのことなら、無効にする事が出来る
130: 2016/12/27(火)00:09 ID:hMHSnQwo(1) AAS
>>127を分かりやすく言うと配列みたいなもんだ。
int foo[5];
と宣言すれば、起動毎に確保されるアドレスは違うが、
例えば3番目のアドレスには必ず&foo[3]でアクセスできる。
これと同じ。
131: 2016/12/28(水)09:29 ID:jHXCJg+4(1) AAS
OggVorbisの使い方を教えてください。
動的リンクライブラリとしてリンクして、
WAVEデータをリアルタイムでOggVorbis形式(CBR)に変換したいです。
VS2015です。
一応ググりましたがどこから手を付けてよいか分かりませんでした。
132: 2016/12/28(水)11:23 ID:BmYU7N0Q(1) AAS
外部リンク:xiph.org
ここから必要な文書を探して読んで理解するのが本筋
133
(4): 2016/12/31(土)16:11 ID:8v6iajLL(1/2) AAS
ある本の解答例ですが実行すると先頭文字が消えます。これではダメなんでしょうか?
void str_toupper(char *str)
{
while (*str)
*str++ = toupper(*str);
}
134
(2): 2016/12/31(土)16:20 ID:ADMXNhyN(1/2) AAS
*str++ = toupper(*str);

これ鼻から悪魔コード
インクリメント演算子で操作された変数が副作用完了点までに複数回参照するのは動作未定義

*str = toupper(*str);
str++;
と分離しないとまずい
135
(1): 2016/12/31(土)17:17 ID:Z7Smo6OK(1) AAS
*str++ = toupper(*str); でダメなら
*str = toupper(*str++); で動くんじゃない?

……って真に受けるなよ。別の悪魔が出てくるだけだからな。
たとえ期待通りの動作になったとしても、たまたまだからな。
136: 2016/12/31(土)17:24 ID:xodGK7fu(1) AAS
ポインタを直接インクリメントするのはどうにも性に合わん
137: 2016/12/31(土)17:38 ID:nERH8viD(1) AAS
通る道なのでやさしくね
138
(1): 2016/12/31(土)18:30 ID:K1FrsN4c(1) AAS
>>133
その本がダメなコードの例としてそれを挙げてるならいいけど、正解としてそれを書いてるのなら、著者の能力とか校正の正確さとか不安になる。
139
(1): 133 2016/12/31(土)19:18 ID:8v6iajLL(2/2) AAS
>>138
正解例です
>>135
下でダメだったので正解を見たら上になってて、そうかとそうかと思ったのですが…
>>134
ありがとうございます
初心者なので更に勉強してみます
140: 2016/12/31(土)20:02 ID:RP5GqFRc(1) AAS
本の題名晒してもいいと思う...
141: 2016/12/31(土)20:11 ID:ADMXNhyN(2/2) AAS
古かったとして、古い規格だとしても処理系依存
(こっちのコンパイラはこうなるけど、あっちのコンパイラでは別の結果になるよ) なので、
正解コードとするのはよろしくない
142: 2016/12/31(土)20:17 ID:q3l2oU5w(1) AAS
なぜダメなのか何がダメなのか理解しとかないと
143: 2017/01/01(日)01:32 ID:LgRst/uw(1/2) AAS
>>139
まじすか ちょっとひどいですね。 著者が知りたいです。
144: 2017/01/01(日)12:42 ID:/LG195GI(1) AAS
str_toupperでググると正しいコードはあるけど >>133 は見つからないなあ。結局なんて本?
145: 133 2017/01/01(日)14:53 ID:OFpbxODd(1) AAS
解きながら学ぶC言語(2006年第5刷)ですが、新版見てみたら >>134 のように修正されてました
146: 2017/01/01(日)17:19 ID:LgRst/uw(2/2) AAS
望洋先生すか あちゃー
147
(4): 2017/01/04(水)01:18 ID:frbRBuKj(1) AAS
副作用完了点が2つ以上あると鼻から悪魔
148
(2): 2017/01/04(水)01:40 ID:8dyTsCQL(1/3) AAS
んなこたーない
149
(2): 1/2 2017/01/04(水)02:39 ID:9INFfbdp(1/3) AAS
このサイトを参考にコードを書いているのですが、レスポンス中に無反応になります。
助けてください。

外部リンク:qiita.com

このコードとの差異は以下の通りです。
----------------------------------------------------------
read_size = SSL_read(ssl, buf, buf_size);の前に
memset( buf, 0, buf_size );を挿入

write(1, buf, read_size);を
printf("%s",buf);に変更

close(sock);の後に
省10
150: 2/2 2017/01/04(水)02:40 ID:9INFfbdp(2/3) AAS
環境は以下の通りです。
OS: CentOS 6.4
コンパイラ: GCC 4.4.7
接続先: 外部リンク:www.youtube.com

その他、無反応中にnetstat -tanpコマンドで確認すると、
このアプリケーションはESTABLISHEDとなっています。
また、自宅サーバーのHTTPSのサイトへアクセスした場合、HTMLの最後のほうの</body>が出力された後に数秒の間があり、
その後、</html>が出力されて正常に終了します。
この数秒の間も気になります。

よろしくお願いします。
151
(1): 2017/01/04(水)03:14 ID:sO2gccKh(1) AAS
>>149
> printf("%s",buf);に変更

%sは文字列のアドレスを引数として受けてそれを出力する
C言語で文字列とはNUL終端されたバイト列だが
SSL_readは文字列ではなく只のバイト列を扱うからNUL終端なんてしていない
そのために受信した文字列以上のおそらくbufの領域を越えて偶然にゼロに
出くわすまでprintfが出力しているんだろう

付け加えると、サーバーから送られてくるバイト列中にゼロが含まれていると
文字列として扱おうとしたprintfはそこまでで終わりと見做してしまう
例えば2ちゃんはたまにそんなHTMLを返してくることがあっていい加減な作りの
省1
152: 149 2017/01/04(水)03:47 ID:9INFfbdp(3/3) AAS
>>151
ありがとうございます。
初歩的なミスでお恥ずかしい。
バイナリデータとしてファイルに出力したところ正常に動作しました。(ファイルの内容にも問題ありませんでした)
恐らくマルチバイト文字の途中か何かで切れていたのでしょう。
153: 2017/01/04(水)08:50 ID:hKIlPOcN(1) AAS
マルチバイトなんか関係ない
> write(1, buf, read_size);を
> printf("%s",buf);に変更
すんなって事だよアホウ
154: 2017/01/04(水)09:47 ID:87+T0pXS(1) AAS
もしくは1.1sだな
155: 2017/01/04(水)09:53 ID:dvUWMEVx(1/3) AAS
printf("%.*s", read_size, buf);  なら少しだけ
それでも read_size に至る途中に \0 あったら駄目だし
標準出力に送りたいんなら fwrite(buf, read_size, 1, stdout); こうなるかな
156: 2017/01/04(水)09:54 ID:dvUWMEVx(2/3) AAS
元質問みてなかった わーすーれーてー
157
(3): 2017/01/04(水)12:32 ID:xue+qv3N(1/2) AAS
「んなこたーない」
っていつも書き込みする人がいるけど
もっと具体的な回答してほしい。

「んなこたーない」って答えるくらいだから何かしらの反論や回答持ってるんだろうけど
もっと具体的に言ってくれなきゃ分からない。
158
(1): 2017/01/04(水)12:37 ID:FLMu+DIB(1) AAS
そういうのはとりあえず否定したいだけだからスルーでいいよ
回答なんか持って無いと思うし
159: 2017/01/04(水)13:56 ID:x5I82FL9(1) AAS
0x00がないと、どこまでもぉ って事だけで。
160: 2017/01/04(水)15:05 ID:CkccjIZ7(1) AAS
俺はとりあえずこんなのを提案する()

do {

memset( buf, 0, buf_size );
read_size = SSL_read(ssl, buf, buf_size-1);
printf("%s",buf);

} while(read_size > 0);

do {
省4
161: 148 2017/01/04(水)15:11 ID:8dyTsCQL(2/3) AAS
>>157
さすがにこれは説明要らんだろうと思うよ・・・。

「副作用完了点が2つ以上」って、 str++; str++; こんなのでアウトってことだからね。
162: 2017/01/04(水)17:51 ID:ku1IYB1y(1) AAS
んなこたーない
163: 2017/01/04(水)18:08 ID:issqqmbF(1) AAS
do while()って嫌いだから使わん
164: 2017/01/04(水)18:10 ID:dvUWMEVx(3/3) AAS
マクロのおまじないでも?

#define FOO() do { あーだこーだ } while(0)
165: 2017/01/04(水)18:15 ID:pxTed+R/(1/2) AAS
>>147
言いたいことはわかる気がするが、その文面は明らかに間違っているでしょ。

エスパーすると、
「副作用完了点と副作用完了点の間で、同一の変数を複数回変更する」
と、鼻から悪魔、かな?
166: 2017/01/04(水)18:17 ID:pxTed+R/(2/2) AAS
まだ甘いか。
「ある副作用完了点と、次の副作用完了点の間で、同一の変数を複数回変更する」
かな?
167: 片山博文MZ ◆T6xkBnTXz7B0 2017/01/04(水)18:21 ID:83LRywdJ(1) AAS
gotoで地獄へ行くのをdo/break/whileに書き換えることができる。
...
goto hell;
...
goto hell;
...
hell: ...
return 0;
↓↓↓
do {
省8
168: 2017/01/04(水)19:49 ID:wOLmnoYC(1) AAS
>>157
人としての最低限の知能を持ち合わせて調べ直せば本人なら気付くレベルの時しか言っていないのでいつも本人からの訂正レスを待っているのだが、
何故か絶対に自分の発言を撤回したがらないようだ
169: 2017/01/04(水)21:37 ID:lUhJzh+Z(1) AAS
言われた方は言われた方で同じこと思ってるんだろ。だから具体的に指摘しなきゃ話が進まない。
170: 2017/01/04(水)22:12 ID:zg5YylVI(1) AAS
ピンポイントで間違い指摘されてんだから自分こそ根拠を述べろよ。
「副作用完了点が2つ以上」なんてどこにもねーんだから。
わかないよ〜ホレホレって荒らしたいだけ?
171: 2017/01/04(水)22:45 ID:by3GIgBn(1) AAS
>>157
さすがに >>147-148 だと >>147 の方に説明責任があると思う
172
(1): 2017/01/04(水)23:27 ID:6PKdRVzk(1) AAS
MISRA-C研究会が書いている、MISRA-C 2004(C90) の本をみっちり、勉強しろ!

研究会のメンバーでさえ、規格に詳しい人がいないのだから、
日本人では、規格に詳しい人はいない

トヨタでも、MISRA-Cの遵守率が5%しかない。
こういう素人が作る、医療機関・産業機械は怖くて使えない。
アプリのバグで、すぐに人が死ぬ

コンパイラを作る方も、あやふやな解釈をしているから、
紛らわしい書き方を避けて、かなり安全に、コーディングしないと危険

極端に言えば、1文1文、分離して書くこと。
バグが多く出る箇所は主に、マクロ・複合文・型違いの3つ
173
(2): 2017/01/04(水)23:45 ID:xue+qv3N(2/2) AAS
> 勘違いしてないか?
とか
> 日本語おかしくないか?
とか言ってあげれば>>147も自分の間違いに気づけたんじゃないかなって思う。
174: 2017/01/04(水)23:48 ID:NgyPecWp(1) AAS
お前らちょっと温泉でも行ってこい
175
(1): 2017/01/04(水)23:48 ID:8dyTsCQL(3/3) AAS
>>173 ちっとも具体的じゃないが、それでいいの?正直なにが違うのかわからん。
(日本語としてはまったく問題ないしな。)
176: 2017/01/05(木)00:16 ID:kU82p3Tw(1) AAS
> >>147
> 副作用完了点が二つ以上存在すること自体は問題ないだろ。
> 複数の副作用完了点で同じ変数を変更、参照するんのが問題なんだよ。
> 安易な気持ちで書き込みすんな。一生ROMってろ。

ネラーならこれくらい言えないとな。

>>175
「んなこたーない」だけだと単に否定したいだけの書き込みみたいで、荒らしなのか普通の指摘なのか曖昧。
>>158みたいに受け取る人もいるし。
>>173は具体的じゃないけどまだましなほうでしょ。
177: 2017/01/05(木)07:15 ID:Tn1lGUp3(1/2) AAS
副作用完了点が2つ以上あると鼻から悪魔
 ↓
× んなこたーない
○ 勘違いしてないか?

理由:「んなこたーない」だけだと単に否定したいだけの書き込みみたいで、荒らしなのか普通の指摘なのか曖昧
178: 2017/01/05(木)07:20 ID:IruuUmgl(1) AAS
一応技術板なので「んなこたーない」って言われたら鼻から悪魔の例を出せばすむ話
まあ例を考えてる時に自分の間違いに気づくと思うが...
179: 2017/01/05(木)07:35 ID:Tn1lGUp3(2/2) AAS
嵐かどうかは別として間違いの指摘かどうか曖昧でわからない奴はヤバい
180: 2017/01/05(木)09:10 ID:yWb7mDiI(1/4) AAS
if (*str++ && *str++ && *str++)
&& と if の条件式の終わりは副作用完了点だけど問題を起こすコードではない
※ 役にたつコードかはしらんw
181
(2): 2017/01/05(木)11:34 ID:nSwRuxqn(1/3) AAS
大学の授業で、client.cというファイルとserver.cのファイルを渡されて
このプログラムを解析して、何でも良いから通信するプログラムを作れと言われたんですが
何をやればいいのかさっぱりです。
サーバとクライアントでファイルが2つに分かれてるってことは
プログラミングのテストをするにも2台PCを持ってないとできないってことでしょうか
何でもいいのでアドバイスください。。。
182
(1): 2017/01/05(木)11:37 ID:Xc98514b(1) AAS
>>181
PC 1台でも出来ます
183
(1): 2017/01/05(木)11:44 ID:yWb7mDiI(2/4) AAS
server のプログラムを実行しておいて
接続先を 127.0.0.1 (または localhost) にした client のプログラムを実行すれば桶

後は実行OSの事情次第(FWの警告をスルーする等)
184
(1): 2017/01/05(木)11:51 ID:33EuaIzL(1) AAS
>>181
client.exe server.exe生成
→server.exeを起動し通信待機
→client.exeを起動し通信開始
でいいよ
185
(2): 2017/01/05(木)11:55 ID:nSwRuxqn(2/3) AAS
>>182-184
親切にありがとうございます。
Linux環境でプログラムしているのですが
server.cをコンパイル&実行すると待機中のせいか何なのかわからないのですが
コンソール上で他のコマンドが打てなくなってしまうので2台PCが必要なのかと迷っていたのですが、1台でもできるのですね。
どうやったら待機中でもclientのコンパイル済みファイルを実行することができるのでしょうか。。
186: 2017/01/05(木)12:00 ID:CkAWate/(1) AAS
んなこたーない
って前々から他のC++スレでも使われていたけど、
自分からは何も根拠を示さず、ただ周りからの反論を煽りたいだけのレス
みたいな受け取られ方が少なからずされていたように感じるんだけど。

コミュニケーションって難しいな。
187
(1): 2017/01/05(木)12:06 ID:yWb7mDiI(3/4) AAS
>>185
bash だったら
末尾に & つけて呼び出すとバックグランドで実行するみたいよー
# server [enter]
 : 待機中でだんまりさんw

# server & [enter]
 : すぐ次の入力待ちになる server は裏で実行中
#
188: 2017/01/05(木)12:25 ID:nSwRuxqn(3/3) AAS
>>187
できました!
ありがとうございます助かりました
189: 2017/01/05(木)13:10 ID:Goea0txf(1) AAS
nohup をつけるともっと幸せになれるよ

nohup server &
190: 2017/01/05(木)13:26 ID:NumGywN/(1) AAS
馬鹿がnohupなんか付けたらいつまでもプロセス残るだろ
不完全なサーバーアプリケーションのプロセスをいつまでも残すということは
セキュリティ的に問題外
191
(2): 2017/01/05(木)14:20 ID:wksprrkU(1) AAS
0xFFFFFFの変数がif(n > 0)で真になるんだがなんだコレ?
クソムカツクな死ねよ
192: 2017/01/05(木)14:25 ID:yWb7mDiI(4/4) AAS
64bit (2の補数の)符号付で 00FF FFFF は正なんだけど
48bit の符号付整数での比較を望んでいるんだろうか?
193: 2017/01/05(木)15:39 ID:60LIuvs1(1) AAS
48bitでも32bitでも正ですが
194: 2017/01/05(木)17:24 ID:5KDyH/yc(1) AAS
>>191
何だこれと言われても言語仕様としか言いようがない
auto n = 0xFFFFFF;
if (n>0)//必ず真
195: 2017/01/05(木)18:52 ID:sOp8JEWl(1) AAS
逆になぜ偽になると思ったのかが知りたいな。
196
(1): 2017/01/05(木)18:58 ID:25Qby3+x(1) AAS
auto n = 0xFFFFFF;
*reinterpret_cast<int*>(&n) > 0
197: 2017/01/05(木)19:26 ID:ivHnG5Le(1) AAS
int が 24bit ってダメなんだっけ?
198: 2017/01/05(木)19:41 ID:/zQeSTVL(1) AAS
あー あほしたー bit数を数え間違ってるし
199: 2017/01/05(木)21:38 ID:AK28m3f5(1) AAS
>>196のオツムのレベルは>>191と同等
200: 2017/01/05(木)23:28 ID:sjDvcQUe(1) AAS
>>185
別の端末・別の仮想デスクトップなどを、起動すればいい
1-
あと 802 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.111s