C言語なら俺に聞け 155

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 76ba-P5bm)
垢版 |
2020/05/10(日) 23:20:27.99ID:Z3WQBr9X0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 154
https://mevius.5ch.net/test/read.cgi/tech/1578997950/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ワッチョイ 6aad-48kr)
垢版 |
2020/05/11(月) 03:59:02.63ID:OH0s44mS0
1乙
2020/05/11(月) 19:26:21.66ID:X9lKtqAVH
>>1おつかれです
4デフォルトの名無しさん (アウアウエー Sae2-jgrQ)
垢版 |
2020/05/12(火) 10:12:47.53ID:4WwqN1hQa
for(int i = 0, a = 2; i < 10; ++i) ...
同じ型じゃなくて
Cで
for(int i = 0, long a = 2; i < 10; ++i) ...
観たいに描く方法を教えて
2020/05/12(火) 10:50:24.38ID:0hJyWI8f0
>>4
{
int i;
long a;
for(i = 0, a = 2; i < 10; ++i) ...
}
2020/05/13(水) 08:43:33.37ID:zPDRJ1n80
for文で++iって書くやつは過去の学習に縛られ惰性で生きている臆病者
2020/05/13(水) 08:47:34.01ID:OofdoMNm0
C++使いは前置がデフォ
2020/05/13(水) 09:10:00.44ID:zPDRJ1n80
>>7
それを言っているんだ。 正しく自己を見つめ直せ
2020/05/13(水) 09:19:01.34ID:X+gtWrV6M
前置インクリメント VS 後置インクリメント
http://cpp.aquariuscode.com/preincriment-vs-postincriment
10デフォルトの名無しさん (アウアウエー Sa93-yXYh)
垢版 |
2020/05/13(水) 09:40:34.63ID:p9DOzuLsa
「値が使われる場合」

勝手に読み飛ばすな
2020/05/13(水) 09:45:38.32ID:koSNYmhvM
>>6
i++ と書くと未来に縛られちゃうの?
つか、
for (略;略; ++i) と
for (略;略; i++) に違いあるの?
12デフォルトの名無しさん (ワッチョイ cd01-oAke)
垢版 |
2020/05/13(水) 10:12:38.54ID:JcjM8CgX0
C++はテンプレートと演算子オーバーロードの関係で前置で良い場合は全て前置にする。
2020/05/13(水) 10:48:26.58ID:OofdoMNm0
>>8
言ってる意味がさっぱりわからん
何が不満なんだ?
14デフォルトの名無しさん (ワッチョイ cd01-oAke)
垢版 |
2020/05/13(水) 11:00:41.30ID:JcjM8CgX0
禿げ(C++の神)から前置にしろと御神託があった。
SA: 禿4 pp.982
15デフォルトの名無しさん (ワッチョイ cd01-oAke)
垢版 |
2020/05/13(水) 11:01:29.69ID:JcjM8CgX0
いまどき小学生でも後置なんて使わんわ。
16デフォルトの名無しさん (ワッチョイ cd01-oAke)
垢版 |
2020/05/13(水) 11:02:35.63ID:JcjM8CgX0
後置は幼女にのみ許される特殊な魔法。
17デフォルトの名無しさん (アウアウエー Sa93-yXYh)
垢版 |
2020/05/13(水) 11:17:23.83ID:p9DOzuLsa
http://hissi.org/read.php/tech/20200513/SmNqTThDZ1gw.html
18デフォルトの名無しさん (ワッチョイ cd01-oAke)
垢版 |
2020/05/13(水) 11:21:16.85ID:JcjM8CgX0
4回書き込んだだけで2位かよ。
ム板はこれから青森サーバーと呼ぶ。
2020/05/13(水) 11:35:12.85ID:J8c0WcWw0
スレタイ
20デフォルトの名無しさん (ワッチョイ cd01-oAke)
垢版 |
2020/05/13(水) 12:15:04.96ID:JcjM8CgX0
ムエタイがなんだって?
2020/05/13(水) 12:53:38.05ID:fSpTrz0hM
前置は不可分にしてしまった継続処理くらいにしか使いみちがない特殊な演算子だからのう
c言語的にどっちでもいい場合とりあえず前置にして論理バグのスルーを防ぐみたいなやり方あるかもしれない
2020/05/13(水) 13:02:44.65ID:fKaVxvtm0
後置の方が好きw
2020/05/13(水) 13:39:26.80ID:OofdoMNm0
語順が名詞動詞で気持ちいい
2020/05/13(水) 14:27:42.65ID:A7nM0+Dla
for文の場合、インクリメントされるタイミングがブロックの末尾だから、後置の方が直感的な気がするね
25デフォルトの名無しさん (アウアウエー Sa93-yXYh)
垢版 |
2020/05/13(水) 14:48:22.25ID:oWyvBIrOa
それは気のせい
2020/05/13(水) 19:52:54.76ID:fKaVxvtm0
前置にしたときの言いようのない不安感
27デフォルトの名無しさん (ワッチョイ dbbd-wHYS)
垢版 |
2020/05/13(水) 21:32:12.94ID:+AdS1P590
C言語しか知らなくて、学びながらプログラムの作成にチャレンジしてるものです。
fopenについて教えてください。

fopen("wb")で開くとポインタ(ストリーム?)はファイルの先頭で上書きモード
fopen("ab")で開くとポインタ(ストリーム?)はファイルの最後で追記モード
ということを知りました。

既存ファイルを開き、先頭部分のデータの一部を上書き、且つ、末尾にデータを追加したいと考えています。
この場合は、どっちか片方で開いてfseekとかでポインタ移動してしまえば、 上書きも追加もできるのでしょうか?
それとも上書きしたあと、一旦fcloseをして開きなおさなければならないのでしょうか。

よろしくお願いいたします。
2020/05/13(水) 21:49:53.34ID:k/cJlRBbH
>>27
fseek() で書きたい位置に移動して自由に fwrite()/fread() を使うだけで OK です。
fclose() は一番最後に一回だけでいいですよ
2020/05/13(水) 22:07:53.87ID:+AdS1P590
>>28
どっちのモードで開いてもいいんですね。
また、fopenを2回使う場合も、fcloseは最後の一回だけでいいという訳ですね。
ありがとうございました。
2020/05/13(水) 22:08:13.59ID:Gt6y73ao0
>>27
wは既存ファイルは0バイトに切り詰め、aは出力時はfseekが効かずに常に末尾に追加なので
既存ファイルはr+bで開いて、存在しない場合はw+bで作成するのがいいのではないかな
31デフォルトの名無しさん (アウアウエー Sa93-yXYh)
垢版 |
2020/05/14(木) 11:05:34.52ID:tvxDWcUoa
>>27
"ab+"
2020/05/14(木) 15:09:17.87ID:FSEZeoAj0
Ruby でやってみた

入力ファイル → 更新後
123456789 → abc456789xyz

filename = "test.dat"

# バイナリ読み書き両用
File.open( filename, "r+b" ) do |io|
io.write( "abc" )

io.seek( 0, IO::SEEK_END ) # ファイルの末尾から
io.write( "xyz" )
end

# 更新後のファイルを読み込む
File.open( filename, "rb" ) do |io|
puts io.read( nil )
end
2020/05/14(木) 19:58:19.22ID:9ipBs7pO0
ruby ならきれいに書けるという主張でもないようだけど、誤爆?
2020/05/14(木) 20:18:44.56ID:XsLKEuv3M
ム板で最も嫌われてる荒らしの一人。
懸命なruby布教のおかげで、rubyを覚えるとキチガイになるという通説を広めることには成功している。
2020/05/14(木) 21:06:40.98ID:4E7Wej8RM
感染者には触るな
2020/05/15(金) 20:47:16.71ID:lPwkD6FRH
>>30
>aは出力時はfseekが効かずに常に末尾に追加

これは驚きました!

https://ideone.com/RG43Xw
$ gcc -W -Wall fopen_a_mode.01.c
$ ./a.exe
abcdefgABC
$

https://ideone.com/T8QqyL
$ gcc -W -Wall fopen_a_mode.01.c
$ ./a.exe
ABCdefg
$

新しいことに気が付くようにしていただき、ありがとうございます!
2020/05/15(金) 22:12:47.57ID:drU906O6M
まんま教えて貰ったのに「気が付くようにしていただき」なんだな
2020/05/16(土) 21:22:39.21ID:P7eChC70M
この方はワザと炎上させる放火魔だからな
2020/05/16(土) 22:07:40.72ID:JWSyjCc8H
>>38
失礼しちゃいますね!
私が着火したことはほとんどなく、むしろ買ってに周りが発火している、という気がするのですが?
私が着火した、という証拠はありますか?あるというのなら URL で示してください!
2020/05/16(土) 22:55:05.23ID:XDh9Q16+0
無自覚な分だけ尚更たちが悪い
2020/05/16(土) 23:02:39.46ID:KaLdS6ES0
ruby布教者じゃなくてただのrubyアンチでしょ
布教なんかしてるように見えるの?
2020/05/16(土) 23:50:09.22ID:PLCktpMy0
定期的に書かないと、その名前すらみんな忘れ去るから
2020/05/20(水) 18:04:19.97ID:d4aDDKtR0
x[i][j]でx={0or1}を取る場合、全通りのx[i][j]を生成する方法はありますか?
2020/05/20(水) 18:06:02.61ID:d4aDDKtR0
>>43
x[i][j]を使った計算で全通りを比較したいです
2020/05/20(水) 18:28:24.79ID:2DX/1Ybo0
誰か質問の意味分かる人いる?
何がしたいのかさっぱり分からん
2020/05/20(水) 18:34:34.07ID:d4aDDKtR0
>>45
x[i][j]が変数の関数の最大値を求めたいんですが、全通りの計算をして最大値を求めたいです
2020/05/20(水) 18:37:19.29ID:d4aDDKtR0
ΣΣx[i][j]を含む関数です
2020/05/20(水) 18:41:23.97ID:p2AYPvOI0
全部計算して計算結果を比較して最大値を求めれば良いのでは?
質問の意図が見えない…

iとjの2重ループで全部計算させて結果をresult[i][j]に入れる
その後、もっかい2重ループして最大値を探す

そのまんまだけど…
2020/05/20(水) 18:49:12.44ID:d4aDDKtR0
i,jのサイズが2の時x[i][j]の組み合わせは
@x[0][0]=0、x[0][1]=0、x[1][0]=0、x[1][1]=0
Ax[0][0]=0、x[0][1]=0、x[1][0]=0、x[1][1]=1
Bx[0][0]=0、x[0][1]=0、x[1][0]=1、x[1][1]=0
Cx[0][0]=0、x[0][1]=0、x[1][0]=1、x[1][1]=1
Dx[0][0]=0、x[0][1]=1、x[1][0]=0、x[1][1]=0
……って続くと思いますが、この配列の中身の全組み合わせを生成したいです
2020/05/20(水) 18:52:54.48ID:d4aDDKtR0
あ、うえのΣの奴は間違いです
Σはありません
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況