エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
144デフォルトの名無しさん
2017/01/01(日) 12:42:18.55ID:/LG195GI str_toupperでググると正しいコードはあるけど >>133 は見つからないなあ。結局なんて本?
146デフォルトの名無しさん
2017/01/01(日) 17:19:11.24ID:LgRst/uw 望洋先生すか あちゃー
147デフォルトの名無しさん
2017/01/04(水) 01:18:25.55ID:frbRBuKj 副作用完了点が2つ以上あると鼻から悪魔
148デフォルトの名無しさん
2017/01/04(水) 01:40:21.76ID:8dyTsCQL んなこたーない
1491/2
2017/01/04(水) 02:39:58.96ID:9INFfbdp このサイトを参考にコードを書いているのですが、レスポンス中に無反応になります。
助けてください。
http://qiita.com/edo_m18/items/41770cba5c166f276a83
このコードとの差異は以下の通りです。
----------------------------------------------------------
read_size = SSL_read(ssl, buf, buf_size);の前に
memset( buf, 0, buf_size );を挿入
write(1, buf, read_size);を
printf("%s",buf);に変更
close(sock);の後に
printf("OK.\n");を挿入
拡張子をcppとし、C++としてコンパイル。
----------------------------------------------------------
この変更したコードのprintf("%s",buf);で不具合が生じます。
不具合パターンは以下の2通りです。
・ 恐らく受信したHTMLの最終部分と思われる</body></html>を出力後、2行ほどの空行、そして0という数字が出力された後、無反応になる。
・ レスポンスヘッダやHTMLコードの途中で無反応になる。
無反応時にはEnterキーもCtrl+Cも効きません。
しばらくすると、効くようになります。
但し、printf("OK.\n");によるOKが出力されませんので、異常終了している可能性が高いです。
助けてください。
http://qiita.com/edo_m18/items/41770cba5c166f276a83
このコードとの差異は以下の通りです。
----------------------------------------------------------
read_size = SSL_read(ssl, buf, buf_size);の前に
memset( buf, 0, buf_size );を挿入
write(1, buf, read_size);を
printf("%s",buf);に変更
close(sock);の後に
printf("OK.\n");を挿入
拡張子をcppとし、C++としてコンパイル。
----------------------------------------------------------
この変更したコードのprintf("%s",buf);で不具合が生じます。
不具合パターンは以下の2通りです。
・ 恐らく受信したHTMLの最終部分と思われる</body></html>を出力後、2行ほどの空行、そして0という数字が出力された後、無反応になる。
・ レスポンスヘッダやHTMLコードの途中で無反応になる。
無反応時にはEnterキーもCtrl+Cも効きません。
しばらくすると、効くようになります。
但し、printf("OK.\n");によるOKが出力されませんので、異常終了している可能性が高いです。
1502/2
2017/01/04(水) 02:40:11.64ID:9INFfbdp 環境は以下の通りです。
OS: CentOS 6.4
コンパイラ: GCC 4.4.7
接続先: https://www.youtube.com/
その他、無反応中にnetstat -tanpコマンドで確認すると、
このアプリケーションはESTABLISHEDとなっています。
また、自宅サーバーのHTTPSのサイトへアクセスした場合、HTMLの最後のほうの</body>が出力された後に数秒の間があり、
その後、</html>が出力されて正常に終了します。
この数秒の間も気になります。
よろしくお願いします。
OS: CentOS 6.4
コンパイラ: GCC 4.4.7
接続先: https://www.youtube.com/
その他、無反応中にnetstat -tanpコマンドで確認すると、
このアプリケーションはESTABLISHEDとなっています。
また、自宅サーバーのHTTPSのサイトへアクセスした場合、HTMLの最後のほうの</body>が出力された後に数秒の間があり、
その後、</html>が出力されて正常に終了します。
この数秒の間も気になります。
よろしくお願いします。
151デフォルトの名無しさん
2017/01/04(水) 03:14:24.95ID:sO2gccKh >>149
> printf("%s",buf);に変更
%sは文字列のアドレスを引数として受けてそれを出力する
C言語で文字列とはNUL終端されたバイト列だが
SSL_readは文字列ではなく只のバイト列を扱うからNUL終端なんてしていない
そのために受信した文字列以上のおそらくbufの領域を越えて偶然にゼロに
出くわすまでprintfが出力しているんだろう
付け加えると、サーバーから送られてくるバイト列中にゼロが含まれていると
文字列として扱おうとしたprintfはそこまでで終わりと見做してしまう
例えば2ちゃんはたまにそんなHTMLを返してくることがあっていい加減な作りの
自作アプリなんかが途中までしか表示しないとかいう不具合を出す
> printf("%s",buf);に変更
%sは文字列のアドレスを引数として受けてそれを出力する
C言語で文字列とはNUL終端されたバイト列だが
SSL_readは文字列ではなく只のバイト列を扱うからNUL終端なんてしていない
そのために受信した文字列以上のおそらくbufの領域を越えて偶然にゼロに
出くわすまでprintfが出力しているんだろう
付け加えると、サーバーから送られてくるバイト列中にゼロが含まれていると
文字列として扱おうとしたprintfはそこまでで終わりと見做してしまう
例えば2ちゃんはたまにそんなHTMLを返してくることがあっていい加減な作りの
自作アプリなんかが途中までしか表示しないとかいう不具合を出す
152149
2017/01/04(水) 03:47:33.12ID:9INFfbdp >>151
ありがとうございます。
初歩的なミスでお恥ずかしい。
バイナリデータとしてファイルに出力したところ正常に動作しました。(ファイルの内容にも問題ありませんでした)
恐らくマルチバイト文字の途中か何かで切れていたのでしょう。
ありがとうございます。
初歩的なミスでお恥ずかしい。
バイナリデータとしてファイルに出力したところ正常に動作しました。(ファイルの内容にも問題ありませんでした)
恐らくマルチバイト文字の途中か何かで切れていたのでしょう。
153デフォルトの名無しさん
2017/01/04(水) 08:50:07.15ID:hKIlPOcN マルチバイトなんか関係ない
> write(1, buf, read_size);を
> printf("%s",buf);に変更
すんなって事だよアホウ
> write(1, buf, read_size);を
> printf("%s",buf);に変更
すんなって事だよアホウ
154デフォルトの名無しさん
2017/01/04(水) 09:47:31.23ID:87+T0pXS もしくは1.1sだな
155デフォルトの名無しさん
2017/01/04(水) 09:53:13.47ID:dvUWMEVx printf("%.*s", read_size, buf); なら少しだけ
それでも read_size に至る途中に \0 あったら駄目だし
標準出力に送りたいんなら fwrite(buf, read_size, 1, stdout); こうなるかな
それでも read_size に至る途中に \0 あったら駄目だし
標準出力に送りたいんなら fwrite(buf, read_size, 1, stdout); こうなるかな
156デフォルトの名無しさん
2017/01/04(水) 09:54:39.63ID:dvUWMEVx 元質問みてなかった わーすーれーてー
157デフォルトの名無しさん
2017/01/04(水) 12:32:23.72ID:xue+qv3N 「んなこたーない」
っていつも書き込みする人がいるけど
もっと具体的な回答してほしい。
「んなこたーない」って答えるくらいだから何かしらの反論や回答持ってるんだろうけど
もっと具体的に言ってくれなきゃ分からない。
っていつも書き込みする人がいるけど
もっと具体的な回答してほしい。
「んなこたーない」って答えるくらいだから何かしらの反論や回答持ってるんだろうけど
もっと具体的に言ってくれなきゃ分からない。
158デフォルトの名無しさん
2017/01/04(水) 12:37:37.48ID:FLMu+DIB そういうのはとりあえず否定したいだけだからスルーでいいよ
回答なんか持って無いと思うし
回答なんか持って無いと思うし
159デフォルトの名無しさん
2017/01/04(水) 13:56:51.11ID:x5I82FL9 0x00がないと、どこまでもぉ って事だけで。
160デフォルトの名無しさん
2017/01/04(水) 15:05:14.50ID:CkccjIZ7 俺はとりあえずこんなのを提案する()
do {
memset( buf, 0, buf_size );
read_size = SSL_read(ssl, buf, buf_size-1);
printf("%s",buf);
} while(read_size > 0);
do {
memset( buf, 0, buf_size );
read_size = SSL_read(ssl, buf, buf_size);
for(int i=0; i < read_size; ++i){ printf("%c",buf[i]); }
} while(read_size > 0);
do {
memset( buf, 0, buf_size );
read_size = SSL_read(ssl, buf, buf_size-1);
printf("%s",buf);
} while(read_size > 0);
do {
memset( buf, 0, buf_size );
read_size = SSL_read(ssl, buf, buf_size);
for(int i=0; i < read_size; ++i){ printf("%c",buf[i]); }
} while(read_size > 0);
161148
2017/01/04(水) 15:11:07.58ID:8dyTsCQL162デフォルトの名無しさん
2017/01/04(水) 17:51:37.32ID:ku1IYB1y んなこたーない
163デフォルトの名無しさん
2017/01/04(水) 18:08:39.09ID:issqqmbF do while()って嫌いだから使わん
164デフォルトの名無しさん
2017/01/04(水) 18:10:34.06ID:dvUWMEVx マクロのおまじないでも?
#define FOO() do { あーだこーだ } while(0)
#define FOO() do { あーだこーだ } while(0)
165デフォルトの名無しさん
2017/01/04(水) 18:15:56.08ID:pxTed+R/166デフォルトの名無しさん
2017/01/04(水) 18:17:44.69ID:pxTed+R/ まだ甘いか。
「ある副作用完了点と、次の副作用完了点の間で、同一の変数を複数回変更する」
かな?
「ある副作用完了点と、次の副作用完了点の間で、同一の変数を複数回変更する」
かな?
167片山博文MZ ◆T6xkBnTXz7B0
2017/01/04(水) 18:21:17.85ID:83LRywdJ gotoで地獄へ行くのをdo/break/whileに書き換えることができる。
...
goto hell;
...
goto hell;
...
hell: ...
return 0;
↓↓↓
do {
...
break;
...
break;
...
} while (0);
...
return 0;
...
goto hell;
...
goto hell;
...
hell: ...
return 0;
↓↓↓
do {
...
break;
...
break;
...
} while (0);
...
return 0;
168デフォルトの名無しさん
2017/01/04(水) 19:49:00.69ID:wOLmnoYC169デフォルトの名無しさん
2017/01/04(水) 21:37:54.73ID:lUhJzh+Z 言われた方は言われた方で同じこと思ってるんだろ。だから具体的に指摘しなきゃ話が進まない。
170デフォルトの名無しさん
2017/01/04(水) 22:12:54.91ID:zg5YylVI ピンポイントで間違い指摘されてんだから自分こそ根拠を述べろよ。
「副作用完了点が2つ以上」なんてどこにもねーんだから。
わかないよ〜ホレホレって荒らしたいだけ?
「副作用完了点が2つ以上」なんてどこにもねーんだから。
わかないよ〜ホレホレって荒らしたいだけ?
171デフォルトの名無しさん
2017/01/04(水) 22:45:56.82ID:by3GIgBn172デフォルトの名無しさん
2017/01/04(水) 23:27:27.83ID:6PKdRVzk MISRA-C研究会が書いている、MISRA-C 2004(C90) の本をみっちり、勉強しろ!
研究会のメンバーでさえ、規格に詳しい人がいないのだから、
日本人では、規格に詳しい人はいない
トヨタでも、MISRA-Cの遵守率が5%しかない。
こういう素人が作る、医療機関・産業機械は怖くて使えない。
アプリのバグで、すぐに人が死ぬ
コンパイラを作る方も、あやふやな解釈をしているから、
紛らわしい書き方を避けて、かなり安全に、コーディングしないと危険
極端に言えば、1文1文、分離して書くこと。
バグが多く出る箇所は主に、マクロ・複合文・型違いの3つ
研究会のメンバーでさえ、規格に詳しい人がいないのだから、
日本人では、規格に詳しい人はいない
トヨタでも、MISRA-Cの遵守率が5%しかない。
こういう素人が作る、医療機関・産業機械は怖くて使えない。
アプリのバグで、すぐに人が死ぬ
コンパイラを作る方も、あやふやな解釈をしているから、
紛らわしい書き方を避けて、かなり安全に、コーディングしないと危険
極端に言えば、1文1文、分離して書くこと。
バグが多く出る箇所は主に、マクロ・複合文・型違いの3つ
173デフォルトの名無しさん
2017/01/04(水) 23:45:39.23ID:xue+qv3N174デフォルトの名無しさん
2017/01/04(水) 23:48:11.13ID:NgyPecWp お前らちょっと温泉でも行ってこい
175デフォルトの名無しさん
2017/01/04(水) 23:48:33.21ID:8dyTsCQL >>173 ちっとも具体的じゃないが、それでいいの?正直なにが違うのかわからん。
(日本語としてはまったく問題ないしな。)
(日本語としてはまったく問題ないしな。)
176デフォルトの名無しさん
2017/01/05(木) 00:16:26.21ID:kU82p3Tw177デフォルトの名無しさん
2017/01/05(木) 07:15:07.48ID:Tn1lGUp3 副作用完了点が2つ以上あると鼻から悪魔
↓
× んなこたーない
○ 勘違いしてないか?
理由:「んなこたーない」だけだと単に否定したいだけの書き込みみたいで、荒らしなのか普通の指摘なのか曖昧
↓
× んなこたーない
○ 勘違いしてないか?
理由:「んなこたーない」だけだと単に否定したいだけの書き込みみたいで、荒らしなのか普通の指摘なのか曖昧
178デフォルトの名無しさん
2017/01/05(木) 07:20:28.53ID:IruuUmgl 一応技術板なので「んなこたーない」って言われたら鼻から悪魔の例を出せばすむ話
まあ例を考えてる時に自分の間違いに気づくと思うが...
まあ例を考えてる時に自分の間違いに気づくと思うが...
179デフォルトの名無しさん
2017/01/05(木) 07:35:58.65ID:Tn1lGUp3 嵐かどうかは別として間違いの指摘かどうか曖昧でわからない奴はヤバい
180デフォルトの名無しさん
2017/01/05(木) 09:10:38.60ID:yWb7mDiI if (*str++ && *str++ && *str++)
&& と if の条件式の終わりは副作用完了点だけど問題を起こすコードではない
※ 役にたつコードかはしらんw
&& と if の条件式の終わりは副作用完了点だけど問題を起こすコードではない
※ 役にたつコードかはしらんw
181デフォルトの名無しさん
2017/01/05(木) 11:34:50.96ID:nSwRuxqn 大学の授業で、client.cというファイルとserver.cのファイルを渡されて
このプログラムを解析して、何でも良いから通信するプログラムを作れと言われたんですが
何をやればいいのかさっぱりです。
サーバとクライアントでファイルが2つに分かれてるってことは
プログラミングのテストをするにも2台PCを持ってないとできないってことでしょうか
何でもいいのでアドバイスください。。。
このプログラムを解析して、何でも良いから通信するプログラムを作れと言われたんですが
何をやればいいのかさっぱりです。
サーバとクライアントでファイルが2つに分かれてるってことは
プログラミングのテストをするにも2台PCを持ってないとできないってことでしょうか
何でもいいのでアドバイスください。。。
182デフォルトの名無しさん
2017/01/05(木) 11:37:47.99ID:Xc98514b >>181
PC 1台でも出来ます
PC 1台でも出来ます
183デフォルトの名無しさん
2017/01/05(木) 11:44:42.65ID:yWb7mDiI server のプログラムを実行しておいて
接続先を 127.0.0.1 (または localhost) にした client のプログラムを実行すれば桶
後は実行OSの事情次第(FWの警告をスルーする等)
接続先を 127.0.0.1 (または localhost) にした client のプログラムを実行すれば桶
後は実行OSの事情次第(FWの警告をスルーする等)
184デフォルトの名無しさん
2017/01/05(木) 11:51:25.19ID:33EuaIzL185デフォルトの名無しさん
2017/01/05(木) 11:55:16.72ID:nSwRuxqn >>182-184
親切にありがとうございます。
Linux環境でプログラムしているのですが
server.cをコンパイル&実行すると待機中のせいか何なのかわからないのですが
コンソール上で他のコマンドが打てなくなってしまうので2台PCが必要なのかと迷っていたのですが、1台でもできるのですね。
どうやったら待機中でもclientのコンパイル済みファイルを実行することができるのでしょうか。。
親切にありがとうございます。
Linux環境でプログラムしているのですが
server.cをコンパイル&実行すると待機中のせいか何なのかわからないのですが
コンソール上で他のコマンドが打てなくなってしまうので2台PCが必要なのかと迷っていたのですが、1台でもできるのですね。
どうやったら待機中でもclientのコンパイル済みファイルを実行することができるのでしょうか。。
186デフォルトの名無しさん
2017/01/05(木) 12:00:04.09ID:CkAWate/ んなこたーない
って前々から他のC++スレでも使われていたけど、
自分からは何も根拠を示さず、ただ周りからの反論を煽りたいだけのレス
みたいな受け取られ方が少なからずされていたように感じるんだけど。
コミュニケーションって難しいな。
って前々から他のC++スレでも使われていたけど、
自分からは何も根拠を示さず、ただ周りからの反論を煽りたいだけのレス
みたいな受け取られ方が少なからずされていたように感じるんだけど。
コミュニケーションって難しいな。
187デフォルトの名無しさん
2017/01/05(木) 12:06:51.34ID:yWb7mDiI >>185
bash だったら
末尾に & つけて呼び出すとバックグランドで実行するみたいよー
# server [enter]
: 待機中でだんまりさんw
# server & [enter]
: すぐ次の入力待ちになる server は裏で実行中
#
bash だったら
末尾に & つけて呼び出すとバックグランドで実行するみたいよー
# server [enter]
: 待機中でだんまりさんw
# server & [enter]
: すぐ次の入力待ちになる server は裏で実行中
#
188デフォルトの名無しさん
2017/01/05(木) 12:25:39.85ID:nSwRuxqn189デフォルトの名無しさん
2017/01/05(木) 13:10:33.43ID:Goea0txf nohup をつけるともっと幸せになれるよ
nohup server &
nohup server &
190デフォルトの名無しさん
2017/01/05(木) 13:26:13.09ID:NumGywN/ 馬鹿がnohupなんか付けたらいつまでもプロセス残るだろ
不完全なサーバーアプリケーションのプロセスをいつまでも残すということは
セキュリティ的に問題外
不完全なサーバーアプリケーションのプロセスをいつまでも残すということは
セキュリティ的に問題外
191デフォルトの名無しさん
2017/01/05(木) 14:20:26.50ID:wksprrkU 0xFFFFFFの変数がif(n > 0)で真になるんだがなんだコレ?
クソムカツクな死ねよ
クソムカツクな死ねよ
192デフォルトの名無しさん
2017/01/05(木) 14:25:53.51ID:yWb7mDiI 64bit (2の補数の)符号付で 00FF FFFF は正なんだけど
48bit の符号付整数での比較を望んでいるんだろうか?
48bit の符号付整数での比較を望んでいるんだろうか?
193デフォルトの名無しさん
2017/01/05(木) 15:39:10.85ID:60LIuvs1 48bitでも32bitでも正ですが
194デフォルトの名無しさん
2017/01/05(木) 17:24:14.22ID:5KDyH/yc195デフォルトの名無しさん
2017/01/05(木) 18:52:01.04ID:sOp8JEWl 逆になぜ偽になると思ったのかが知りたいな。
196デフォルトの名無しさん
2017/01/05(木) 18:58:22.71ID:25Qby3+x auto n = 0xFFFFFF;
*reinterpret_cast<int*>(&n) > 0
*reinterpret_cast<int*>(&n) > 0
197デフォルトの名無しさん
2017/01/05(木) 19:26:42.79ID:ivHnG5Le int が 24bit ってダメなんだっけ?
198デフォルトの名無しさん
2017/01/05(木) 19:41:33.07ID:/zQeSTVL あー あほしたー bit数を数え間違ってるし
199デフォルトの名無しさん
2017/01/05(木) 21:38:57.59ID:AK28m3f5200デフォルトの名無しさん
2017/01/05(木) 23:28:47.82ID:sjDvcQUe >>185
別の端末・別の仮想デスクトップなどを、起動すればいい
別の端末・別の仮想デスクトップなどを、起動すればいい
201デフォルトの名無しさん
2017/01/08(日) 01:15:08.36ID:+QuxnNhY ■ 質問概要
ファイルに書き込んでも反映されない。
■ 環境
CentOS 6.4
GCC 4.4.7
■ 質問詳細
fopenに"r+"を指定して開いたファイルに、fputsでテキストデータを書き込んでも反映されません。
fcloseしていないことが、恐らく原因だと思います。
このアプリケーションは起動時にfopenでファイルを開いて常駐し、
アプリケーション終了時にfcloseするように開発しており、fcloseすると反映されます。
常駐型のアプリケーションで逐次ログ出力するため、
書き込むたびにファイルを開いたり閉じたりしないようにしています。
fcloseしなくても読み取りだけはできるようにしたいのです。
Apacheの挙動を見ると、ログファイルがこうした動作になっているようです。
(Apacheのソースは読んでいません、ログファイルを操作しようとした際の挙動などからによる推測です)
どうすればいいでしょうか。
調べたところ、fflushで希望の動作ができそうですが、
使い慣れてないものを使うのは副作用が怖く、
また、説明に「強制的」等の文言があるため、この文言があるだけでも非常に不安です。
こうした目的でfflushを利用しても問題ないのでしょうか。
そもそもfflushでいいのでしょうか。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/fflush.3.html
ファイルに書き込んでも反映されない。
■ 環境
CentOS 6.4
GCC 4.4.7
■ 質問詳細
fopenに"r+"を指定して開いたファイルに、fputsでテキストデータを書き込んでも反映されません。
fcloseしていないことが、恐らく原因だと思います。
このアプリケーションは起動時にfopenでファイルを開いて常駐し、
アプリケーション終了時にfcloseするように開発しており、fcloseすると反映されます。
常駐型のアプリケーションで逐次ログ出力するため、
書き込むたびにファイルを開いたり閉じたりしないようにしています。
fcloseしなくても読み取りだけはできるようにしたいのです。
Apacheの挙動を見ると、ログファイルがこうした動作になっているようです。
(Apacheのソースは読んでいません、ログファイルを操作しようとした際の挙動などからによる推測です)
どうすればいいでしょうか。
調べたところ、fflushで希望の動作ができそうですが、
使い慣れてないものを使うのは副作用が怖く、
また、説明に「強制的」等の文言があるため、この文言があるだけでも非常に不安です。
こうした目的でfflushを利用しても問題ないのでしょうか。
そもそもfflushでいいのでしょうか。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/fflush.3.html
202デフォルトの名無しさん
2017/01/08(日) 01:21:15.59ID:Zdr2NPEX 大丈夫だから使え
203デフォルトの名無しさん
2017/01/08(日) 01:24:31.77ID:T3Q1+h8z flushは時間がかかるから頻度が高い場合は気をつけて。
204201
2017/01/08(日) 01:54:37.47ID:+QuxnNhY205デフォルトの名無しさん
2017/01/08(日) 03:35:33.42ID:eh6WgorM A = (framecount / 10) % 4
すみません、上記の式の意味を教えてください。
毎度、Aに入る値がしりたいです。
すみません、上記の式の意味を教えてください。
毎度、Aに入る値がしりたいです。
206デフォルトの名無しさん
2017/01/08(日) 03:39:14.61ID:Nqw0FnK6 (framecount を 10 で割って) それの 4で割った余り 0〜3 の値になる
framecount
0〜 9 → 0
10〜19 → 1
20〜29 → 2
30〜39 → 3
40〜49 → 0
50〜59 → 1
:
framecount
0〜 9 → 0
10〜19 → 1
20〜29 → 2
30〜39 → 3
40〜49 → 0
50〜59 → 1
:
207デフォルトの名無しさん
2017/01/08(日) 03:43:39.84ID:eh6WgorM208デフォルトの名無しさん
2017/01/08(日) 04:24:28.51ID:c5pY166L >>201-204
普通は、ファイルを閉じる際、自動的にflushされる
それに何もしなくても、OSのデフォルト設定で、
dirty Page Cache を、5秒ごとにflushして、メモリとディスクを同じ状態に保つ
USB・SSDの書き込み回数を減らしたい人は、書き込み間隔を15〜30秒に設定している人もいる。
commit=15
Linux I/O のお話 write 編
http://d.hatena.ne.jp/naoya/20070523/1179938637
普通は、ファイルを閉じる際、自動的にflushされる
それに何もしなくても、OSのデフォルト設定で、
dirty Page Cache を、5秒ごとにflushして、メモリとディスクを同じ状態に保つ
USB・SSDの書き込み回数を減らしたい人は、書き込み間隔を15〜30秒に設定している人もいる。
commit=15
Linux I/O のお話 write 編
http://d.hatena.ne.jp/naoya/20070523/1179938637
209デフォルトの名無しさん
2017/01/08(日) 11:20:03.87ID:OpAcES4h char buffer[256];
scanf(%s,buffer);
printf(
scanf(%s,buffer);
printf(
210デフォルトの名無しさん
2017/01/08(日) 11:28:02.93ID:OpAcES4h すみません、誤送信してしまいました
質問させてください。
char buffer[256];
scanf(%s,buffer);
printf("finish---_n");
という記述で、文字入力をした後、何回リターンキーを押しても
finishが表示されない、つまりscanfが終了しないような状態になっているのですが
何か特別な条件でscanfが終了しないことってあるものなのでしょうか?
ちなみに、コードのscanfの行だけコメントアウトすると普通にfinishが表示される状態です。
あと、新規で.cファイルを作って短いコードにしてコンパイルしても問題なく動いてくれています。
質問させてください。
char buffer[256];
scanf(%s,buffer);
printf("finish---_n");
という記述で、文字入力をした後、何回リターンキーを押しても
finishが表示されない、つまりscanfが終了しないような状態になっているのですが
何か特別な条件でscanfが終了しないことってあるものなのでしょうか?
ちなみに、コードのscanfの行だけコメントアウトすると普通にfinishが表示される状態です。
あと、新規で.cファイルを作って短いコードにしてコンパイルしても問題なく動いてくれています。
211デフォルトの名無しさん
2017/01/08(日) 11:43:58.41ID:nyR751xv212デフォルトの名無しさん
2017/01/08(日) 11:52:30.04ID:OpAcES4h >>211
先日も少し教えてもらったのでまた聞きに来てるのが恥ずかしいのあ
ですが、サーバとクライアントでの通信のプログラムです。
server.c
http://codepad.org/epmTQJ0
client.c
http://codepad.org/uhR4zEL3
gcc -o s server.c
gcc -o c client.c
./s&
./c
で実行しています。
サーバ側のscanfで止まってしまうみたいなのですが
サーバ側のscanfをコメントアウトすると通るみたいです。
先日も少し教えてもらったのでまた聞きに来てるのが恥ずかしいのあ
ですが、サーバとクライアントでの通信のプログラムです。
server.c
http://codepad.org/epmTQJ0
client.c
http://codepad.org/uhR4zEL3
gcc -o s server.c
gcc -o c client.c
./s&
./c
で実行しています。
サーバ側のscanfで止まってしまうみたいなのですが
サーバ側のscanfをコメントアウトすると通るみたいです。
213デフォルトの名無しさん
2017/01/08(日) 12:07:20.20ID:nyR751xv server側がnot foundだわ
リンク確認してみて
リンク確認してみて
214デフォルトの名無しさん
2017/01/08(日) 12:15:37.07ID:9g4d0om9215デフォルトの名無しさん
2017/01/08(日) 12:35:39.21ID:nyR751xv Wait for Connection...Connected.
s1---------
C->S: %s
Server:
実行結果はここで止まって
s2---------
まで進まないって事?
s1---------
C->S: %s
Server:
実行結果はここで止まって
s2---------
まで進まないって事?
216デフォルトの名無しさん
2017/01/08(日) 12:38:46.78ID:Cjw+tP2S217デフォルトの名無しさん
2017/01/08(日) 13:15:24.14ID:nyR751xv 送受信で変数を別々にしてみて
scanf -> sendはbuffer1
recv -> printfはbuffer2
みたいに
38, 39 40行目にブレークポイント置いてやってみて
scanf -> sendはbuffer1
recv -> printfはbuffer2
みたいに
38, 39 40行目にブレークポイント置いてやってみて
218デフォルトの名無しさん
2017/01/08(日) 13:46:50.50ID:uGSXn6++ サーバをフォアグラウンドにしてから入力すればいいだけな気がする。
いったんCtrl-zでクライアントを停止して「bg」でバックグラウンドで再開、
「jobs」でサーバのジョブIDを調べて「fg %[ジョブID]」してから入力すれば、
反応するんじゃないかな。
いったんCtrl-zでクライアントを停止して「bg」でバックグラウンドで再開、
「jobs」でサーバのジョブIDを調べて「fg %[ジョブID]」してから入力すれば、
反応するんじゃないかな。
219デフォルトの名無しさん
2017/01/08(日) 15:47:42.95ID:/TmTqYIS220デフォルトの名無しさん
2017/01/08(日) 16:06:06.04ID:nyR751xv221デフォルトの名無しさん
2017/01/08(日) 16:09:35.63ID:uGSXn6++ 難しいようなら、&で起動するのはやめて、ターミナルを二つ起動して
片方でサーバを、もう片方でクライアントを実行するほうが楽だと思う。
片方でサーバを、もう片方でクライアントを実行するほうが楽だと思う。
222デフォルトの名無しさん
2017/01/08(日) 16:24:16.26ID:7aUjJ3jB 同意
223デフォルトの名無しさん
2017/01/08(日) 17:02:49.06ID:C9GVPqMv >>208
それレイヤーが違う話だよ
それレイヤーが違う話だよ
224デフォルトの名無しさん
2017/01/08(日) 17:48:30.32ID:bwuU6ymI 質問者の提示したURLに書かれている注意事項すら読まない奴を相手にレスするとは
225デフォルトの名無しさん
2017/01/08(日) 19:21:35.50ID:d7tAym4Y226デフォルトの名無しさん
2017/01/08(日) 22:54:37.49ID:c5pY166L 端末も複数、起動できる
仮想デスクトップを知っているか?
デスクトップも、複数起動できる
普通、C/S通信プログラムでは、2つ端末を起動する
>>209-210
2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
仮想デスクトップを知っているか?
デスクトップも、複数起動できる
普通、C/S通信プログラムでは、2つ端末を起動する
>>209-210
2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
227デフォルトの名無しさん
2017/01/11(水) 13:06:08.85ID:X1FDgEas228デフォルトの名無しさん
2017/01/12(木) 04:36:13.74ID:8CizHZGj MSVCはいつまで__cplusplusの定義199711Lのままなんだ
229デフォルトの名無しさん
2017/01/12(木) 07:09:10.44ID:edOk7o4H 変えると暴動が起きるこら変えない
とライブラリ開発者のSTL氏が言っていた
とライブラリ開発者のSTL氏が言っていた
230デフォルトの名無しさん
2017/01/12(木) 12:09:34.61ID:xegpw56Z 1だと思ってた
231デフォルトの名無しさん
2017/01/15(日) 00:31:14.26ID:7/DzGkQz 別ファイルで作成した関数を使用するときは、そのヘッダーファイルの
インクルードだけでなくプロトタイプ宣言も必要ですか?
インクルードだけでもコンパイルは通るし実行も出来るのですが、
そういう警告が出てくるので気になりました
インクルードだけでなくプロトタイプ宣言も必要ですか?
インクルードだけでもコンパイルは通るし実行も出来るのですが、
そういう警告が出てくるので気になりました
232デフォルトの名無しさん
2017/01/15(日) 00:34:44.37ID:H7ag5TAh 警告文をコピペしてくれると話が早いような
233デフォルトの名無しさん
2017/01/15(日) 00:51:14.06ID:e3PYrJk6 そのヘッダーファイルの中でプロトタイプ宣言はされているんじゃないのか
警告の原因は別のことだろ
警告の原因は別のことだろ
234デフォルトの名無しさん
2017/01/15(日) 01:02:35.94ID:7/DzGkQz インクルードするファイルを間違えてたみたいです
お騒がせしました
お騒がせしました
235デフォルトの名無しさん
2017/01/19(木) 22:46:56.05ID:knltoro2 新しくクラスとそれに関連した処理などを実装するとき
ヘッダー側でクラスの定義、ソースファイル側にクラス内のメンバ関数の実装部などを書きますよね
その時メンバ関数はどんな場合でもヘッダー側に書かずにソース側に書くものですか? たとえば
//ヘッダー側です
class A{
private:
int num;
public:
int ReturnNum(void){
return num;
}
};
処理はたった一行ですけどこの場合もint ReturnNum()の実装部はソースファイル側にint A::ReturnNum()のように移すべきですか?
ネット上のプログラムをいくつか見てみたらこのようにメンバ変数をただ返すだけの処理ならヘッダー側に書いてあるものも少なくなかったのでどっちが好ましいんだろうと気になりました
ヘッダー側でクラスの定義、ソースファイル側にクラス内のメンバ関数の実装部などを書きますよね
その時メンバ関数はどんな場合でもヘッダー側に書かずにソース側に書くものですか? たとえば
//ヘッダー側です
class A{
private:
int num;
public:
int ReturnNum(void){
return num;
}
};
処理はたった一行ですけどこの場合もint ReturnNum()の実装部はソースファイル側にint A::ReturnNum()のように移すべきですか?
ネット上のプログラムをいくつか見てみたらこのようにメンバ変数をただ返すだけの処理ならヘッダー側に書いてあるものも少なくなかったのでどっちが好ましいんだろうと気になりました
236デフォルトの名無しさん
2017/01/19(木) 23:08:04.39ID:ipEwSksA プログラムは普通すべて「ソースファイル」に書くものです
「ヘッダー」に書くのはコンパイラー開発者だけです
「ヘッダー」に書くのはコンパイラー開発者だけです
237デフォルトの名無しさん
2017/01/19(木) 23:11:24.96ID:ydMYZ/gE クラスもヘッダに書きますけどぉ
238デフォルトの名無しさん
2017/01/19(木) 23:55:32.15ID:A0Yl7Ujc > その時メンバ関数はどんな場合でもヘッダー側に書かずにソース側に書くものですか?
別にどんな場合でもソース側に書くというわけではない
ヘッダに書くのもソースに書くのも一長一短はあり絶対的にどっちがいいというものではない
君が違いを理解し何を重視するかを意識すれば
君にとってどっちが好ましいかは自然とはっきりする
別にどんな場合でもソース側に書くというわけではない
ヘッダに書くのもソースに書くのも一長一短はあり絶対的にどっちがいいというものではない
君が違いを理解し何を重視するかを意識すれば
君にとってどっちが好ましいかは自然とはっきりする
239デフォルトの名無しさん
2017/01/20(金) 00:23:32.93ID:7sj2OAGi なんか禅問答が始まったかと思ったわ
240デフォルトの名無しさん
2017/01/20(金) 01:12:20.36ID:/ixeQkYS 短いメソッドなら、ヘッダに、inline 指定して書くと、
関数化せずに、inline にしてくれる可能性が高い
まあ、言語では保証していないけど。コンパイラ依存
関数化せずに、inline にしてくれる可能性が高い
まあ、言語では保証していないけど。コンパイラ依存
241デフォルトの名無しさん
2017/01/20(金) 05:11:02.70ID:vaOLIJJw クラス定義で定義されたメンバ関数は暗黙にinlineになるね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)
class SomeClass {
public:
int a() {return a_;} // 暗黙のinline指定
private:
int a_;
}
…という話を書くために厚い本を調べてたら
class SomeClass {
public:
int a();
private:
int a_;
}
inline int SomeClass::a() // 明示的にinline指定
{
return a_;
}
と書く方法も載ってた。 >>240 は後者の説明だったのね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)
class SomeClass {
public:
int a() {return a_;} // 暗黙のinline指定
private:
int a_;
}
…という話を書くために厚い本を調べてたら
class SomeClass {
public:
int a();
private:
int a_;
}
inline int SomeClass::a() // 明示的にinline指定
{
return a_;
}
と書く方法も載ってた。 >>240 は後者の説明だったのね。
242デフォルトの名無しさん
2017/01/20(金) 07:10:06.09ID:Nvso2zBq243デフォルトの名無しさん
2017/01/20(金) 08:09:40.71ID:B05iL6IP 『〜のが原則』
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
■ このスレッドは過去ログ倉庫に格納されています
