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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 153
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 5fba-LL4R)
2019/08/17(土) 23:02:42.00ID:tN5mSQYg011デフォルトの名無しさん (ワッチョイ b9f2-oami)
2019/08/19(月) 01:35:14.42ID:HWxct0dM0 >>10
D
D
12デフォルトの名無しさん (ワッチョイ 5995-dCD9)
2019/08/19(月) 02:31:19.64ID:WV8MsfnG0 コンパイルもリンクも正常に動いているようだぞ
生まれたのがバグじゃなくて良かったな ha ha ha
生まれたのがバグじゃなくて良かったな ha ha ha
13入門 (ワッチョイ d901-QMAU)
2019/08/19(月) 07:50:31.64ID:AfRfI86I0 http://program-lecture.info/c_structure5.html
ここのサイトを見ながら学習しているのですがこのshowStatus関数では何故int配列を
int型の仮引数で受け取れてるのでしょうか?配列は配列かポインタでしか受け取れないと思ってたんですが
その認識は間違ってますか
よろしくお願い致します。
ここのサイトを見ながら学習しているのですがこのshowStatus関数では何故int配列を
int型の仮引数で受け取れてるのでしょうか?配列は配列かポインタでしか受け取れないと思ってたんですが
その認識は間違ってますか
よろしくお願い致します。
14デフォルトの名無しさん (ワッチョイ 13ad-qB3k)
2019/08/19(月) 08:28:31.64ID:kSnvMIS70 >>13
showStatus()はint型でもint型配列でもなくcharacter型を受け取ってるようだが?
showStatus()はint型でもint型配列でもなくcharacter型を受け取ってるようだが?
15デフォルトの名無しさん (ワッチョイ 8b69-LL4R)
2019/08/19(月) 09:48:04.61ID:O1nZQbpw0 showStasus() の引数は struct person 型の実体を受けてる
main では
struct person 型の配列を用意 party[]
配列の各要素 party[0], party[1] のぞれぞれについて showStatus() を呼んでいる
本質的には
void foo(int arg);
int main() {
int array[2];
foo(array[0]);
foo(array[1]);
return 0;
}
これと同じ
main では
struct person 型の配列を用意 party[]
配列の各要素 party[0], party[1] のぞれぞれについて showStatus() を呼んでいる
本質的には
void foo(int arg);
int main() {
int array[2];
foo(array[0]);
foo(array[1]);
return 0;
}
これと同じ
17蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 4901-n+xS)
2019/08/19(月) 20:10:40.78ID:GYeBbzEk0 >>8
あのコードは今となっては時代遅れだ。意味がない。
あのコードは今となっては時代遅れだ。意味がない。
18デフォルトの名無しさん (ワッチョイ 09a3-m73o)
2019/08/19(月) 20:19:09.86ID:PrhOfqin0 先生書き直さないんですか?w
19蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 4901-n+xS)
2019/08/19(月) 20:20:07.30ID:GYeBbzEk020デフォルトの名無しさん (アウアウカー Sa5d-KcV4)
2019/08/24(土) 22:48:02.26ID:UVaZe+22a 下のコードの部分を実行すると、最後の行だけ2回表示されます。
理由はなぜでしょうか?また、最後も1回にするにはどう変更したら良いでしょうか?
よろしくお願いします。
http://codepad.org/WCL1vHLd
理由はなぜでしょうか?また、最後も1回にするにはどう変更したら良いでしょうか?
よろしくお願いします。
http://codepad.org/WCL1vHLd
21デフォルトの名無しさん (ラクッペ MM69-RTXP)
2019/08/24(土) 23:20:14.88ID:xKwct0SAM >>20
if ( !fgets(buf, sizeof(buf), fp) ) break;
if ( !fgets(buf, sizeof(buf), fp) ) break;
2220 (ワッチョイ f125-KcV4)
2019/08/25(日) 00:34:55.25ID:9+tsViui02320 (ワッチョイ f125-KcV4)
2019/08/25(日) 00:46:09.40ID:9+tsViui0 >>22 の修正だと最後の行以外にもだいぶ表示されなくなってました。
どうするのが正解なのでしょうか?
どうするのが正解なのでしょうか?
24デフォルトの名無しさん (ワッチョイ d663-P0k6)
2019/08/25(日) 00:52:09.44ID:uvOm2rq20 良いのか?って聞かれると
色々言いたくなる奴が大勢出てきそう
色々言いたくなる奴が大勢出てきそう
25デフォルトの名無しさん (ワッチョイ d663-P0k6)
2019/08/25(日) 01:04:15.99ID:uvOm2rq20 >>23
//while ( !feof(fp) ) {
while (fgets(buf, sizeof(buf), fp)!=NULL){
//fgets(buf, sizeof(buf), fp);
こんなんでどうか
//while ( !feof(fp) ) {
while (fgets(buf, sizeof(buf), fp)!=NULL){
//fgets(buf, sizeof(buf), fp);
こんなんでどうか
2620 (ワッチョイ f125-KcV4)
2019/08/25(日) 03:58:18.71ID:9+tsViui0 >>25 うまくいきました! Thanks!
やっぱり俺に訊けスレですね。ここの人達はすごい。
if ( (fp = popen(cmdline,"r")) == NULL ) {
perror ("can not exec commad");
}
while (fgets(buf, sizeof(buf), fp)!=NULL){
printf("%s", buf);
}
pclose(fp);
最終的にこうなりなした。助かりました。
やっぱり俺に訊けスレですね。ここの人達はすごい。
if ( (fp = popen(cmdline,"r")) == NULL ) {
perror ("can not exec commad");
}
while (fgets(buf, sizeof(buf), fp)!=NULL){
printf("%s", buf);
}
pclose(fp);
最終的にこうなりなした。助かりました。
27デフォルトの名無しさん (ワッチョイ 7a2c-3Uq+)
2019/08/25(日) 04:09:39.00ID:SpCWKyo10 Ruby では、Windows の、powershell, clip コマンドも呼べる。
UTF-8, CP932 の文字コード変換もできる
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
UTF-8, CP932 の文字コード変換もできる
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
28デフォルトの名無しさん (アウアウクー MM73-Ivwm)
2019/09/12(木) 14:34:32.33ID:PzZxK66KM defineマクロで以下をやりたいです。
struct my{
int d0 =0;
int d1 =0;
int d2 =0;
int d3 =0;
int d4 =0;
}:
struct my val;
val[0:2] = (1, 1, 1);
と入力した時にvalのdata0〜data2に1が入るようなマクロはどう書けばいいですか?
struct my{
int d0 =0;
int d1 =0;
int d2 =0;
int d3 =0;
int d4 =0;
}:
struct my val;
val[0:2] = (1, 1, 1);
と入力した時にvalのdata0〜data2に1が入るようなマクロはどう書けばいいですか?
29デフォルトの名無しさん (ワッチョイ ff2f-lH3V)
2019/09/12(木) 18:39:59.73ID:7fKDA9wF0 __VA_ARGS__ つこて2段呼び出しだな
qiita.com/saltheads/items/e1b0ab54d3d6029c9593
qiita.com/saltheads/items/e1b0ab54d3d6029c9593
30デフォルトの名無しさん (ワッチョイ 9f68-Ivwm)
2019/09/15(日) 10:20:29.94ID:Y/GLm+KZ0 >>29
ありがとうございます。
リンクを参考に、可変引数にするマクロまでは出来ました。(作った関数が間違えていたらすみません。)
struct my def2(struct my val, int s, int e, int d1, int d2){
int *p = val.d0;
*(p+s) = d1:
*(p+e) = d2;
return val;
}
/*def3省略*/
#define GET_MACRO(_1,_2,_3,NAME,...) NAME
#define DEF(val,s,e,...) GET_MACRO(__VA_ARGS__, def3, def2)(val,s,e,__VA_ARGS__)
ここから、表記を変える方法が分かりません。
下のようなことをしたいのですが、このように書くとコンパイルエラーになりました。
どう書けばいいでしょうか。
#define VAL[A:B]=(...) DEF(VAL,A,B,__VA_ARGS__)
ありがとうございます。
リンクを参考に、可変引数にするマクロまでは出来ました。(作った関数が間違えていたらすみません。)
struct my def2(struct my val, int s, int e, int d1, int d2){
int *p = val.d0;
*(p+s) = d1:
*(p+e) = d2;
return val;
}
/*def3省略*/
#define GET_MACRO(_1,_2,_3,NAME,...) NAME
#define DEF(val,s,e,...) GET_MACRO(__VA_ARGS__, def3, def2)(val,s,e,__VA_ARGS__)
ここから、表記を変える方法が分かりません。
下のようなことをしたいのですが、このように書くとコンパイルエラーになりました。
どう書けばいいでしょうか。
#define VAL[A:B]=(...) DEF(VAL,A,B,__VA_ARGS__)
31デフォルトの名無しさん (ワッチョイ ff12-k1Ft)
2019/09/15(日) 12:30:40.49ID:58rKn0L90 マクロ使わずにこれで十分だろ。
typedef struct my;
val = (my){1,1,1};
val = (my){1,1,1,1};
以下のようにはできるけど、
マクロの多用は誰もソースを読みたくなくなるから避けたほうがいいよ
#define SET(v,...) v=(struct my){__VA_ARGS__}
SET(val, 1, 1, 1)
typedef struct my;
val = (my){1,1,1};
val = (my){1,1,1,1};
以下のようにはできるけど、
マクロの多用は誰もソースを読みたくなくなるから避けたほうがいいよ
#define SET(v,...) v=(struct my){__VA_ARGS__}
SET(val, 1, 1, 1)
32デフォルトの名無しさん (ワッチョイ 9f68-Ivwm)
2019/09/15(日) 13:05:57.26ID:Y/GLm+KZ033デフォルトの名無しさん (ワッチョイ ff12-k1Ft)
2019/09/15(日) 13:41:31.71ID:58rKn0L90 #define SET(x,s,e,...) memcpy(((int*)&val)+s,&(int[]){__VA_ARGS__},sizeof(int)*(e-s))
SET(val, 1, 3, 1, 1)
SET(val, 1, 4, 1, 1, 1)
部下がこんなコード書いてきたら突っ返すわ
SET(val, 1, 3, 1, 1)
SET(val, 1, 4, 1, 1, 1)
部下がこんなコード書いてきたら突っ返すわ
34デフォルトの名無しさん (ワッチョイ 1fd2-bRiQ)
2019/09/15(日) 15:47:59.75ID:v7T7Pyv90 ID:Y/GLm+KZ0 が上司だったらと想定してみよう。
35デフォルトの名無しさん (ワッチョイ ff12-k1Ft)
2019/09/15(日) 15:59:14.90ID:58rKn0L90 自分の考えが浅はかでした。申し訳ありません
36デフォルトの名無しさん (ワッチョイ ff7c-6eqr)
2019/09/17(火) 11:43:21.23ID:tz0JLczQ0 >>34
背中を撃たれてしまうのでは・・・?
背中を撃たれてしまうのでは・・・?
37デフォルトの名無しさん (アウアウクー MM73-Ivwm)
2019/09/17(火) 13:01:08.68ID:pZqZMIzxM うーん、どうにかして上のように[]を使って書き換えることは出来ないのですかね。
ちなみに下のようにして全パターン定義しようとしたらエラーでした。何故でしょうか。
#define val[0:2]=(...) DEF(val,0,2,__VA_ARGS__)
ちなみに下のようにして全パターン定義しようとしたらエラーでした。何故でしょうか。
#define val[0:2]=(...) DEF(val,0,2,__VA_ARGS__)
38デフォルトの名無しさん (ワッチョイ 1fd2-bRiQ)
2019/09/17(火) 14:46:00.52ID:nfIIVgp70 マクロ諦めてインライン関数にしたら?
39デフォルトの名無しさん (アウアウウー Sa63-ErpI)
2019/09/17(火) 19:09:34.89ID:g1BlUkdva >>37
なぜって、#defineを使用するための構文を完全に無視してるからだよ。こちらが思ったことを都合良く解釈してくれるわけでなく、構文通りの単純な置換をしてくれるだけだよ。
一度ちゃんと調べておいた方がいい。
なぜって、#defineを使用するための構文を完全に無視してるからだよ。こちらが思ったことを都合良く解釈してくれるわけでなく、構文通りの単純な置換をしてくれるだけだよ。
一度ちゃんと調べておいた方がいい。
40デフォルトの名無しさん (アウアウクー MM73-Ivwm)
2019/09/17(火) 19:57:33.48ID:pZqZMIzxM41デフォルトの名無しさん (アウアウウー Sa63-ErpI)
2019/09/17(火) 20:37:25.67ID:g1BlUkdva >>40
不可能。やるなら自前でプリプロセサでも書けばいいが、そんなことするくらいなら、ソース上に書くのではなく独自のデータファイルとそれを読み込んでデータを初期化するような処理でも作れば?
不可能。やるなら自前でプリプロセサでも書けばいいが、そんなことするくらいなら、ソース上に書くのではなく独自のデータファイルとそれを読み込んでデータを初期化するような処理でも作れば?
42デフォルトの名無しさん (アウアウクー MM73-Ivwm)
2019/09/17(火) 20:47:01.62ID:pZqZMIzxM43デフォルトの名無しさん (アウアウウー Sa63-0qvw)
2019/09/17(火) 22:44:02.30ID:WDh8MszDa 新言語作った方が良さそうな。
初期のC++みたいにC言語へのコンバータとして作っちゃえば楽だと思う。Cと同じで良い部分はほとんど素通しで行けるし。
初期のC++みたいにC言語へのコンバータとして作っちゃえば楽だと思う。Cと同じで良い部分はほとんど素通しで行けるし。
44デフォルトの名無しさん (ワッチョイ 7f79-6eqr)
2019/09/18(水) 03:52:29.58ID:YwguJHoc0 そこまでしてCに拘る意味がわからない
45デフォルトの名無しさん (ワッチョイ 9f01-rDRx)
2019/09/18(水) 05:50:30.71ID:A+b/Im8h0 あの変態的にC言語には見えないObjective CでさえほとんどプリプロセッサでCに変換してからコンパイルしてたと聞くので、やろうと思えばできるんだろうね。
46デフォルトの名無しさん (ワッチョイ ff8c-e0wG)
2019/09/18(水) 07:02:57.91ID:ik5RQtCe0 yaccとlexを使えばできるだろう。たぶん
47デフォルトの名無しさん (ブーイモ MM9f-+9C/)
2019/09/18(水) 08:32:22.55ID:cLmp+ocZM 独自言語を開発したときなんかはとりあえずCに変換するというのはわりとある話。
コード生成とか最適化とか考えずに済むから。
昔、独自じゃないけど、とある言語からCへのコンバータ作ったよ。
楽しかった。
コード生成とか最適化とか考えずに済むから。
昔、独自じゃないけど、とある言語からCへのコンバータ作ったよ。
楽しかった。
48デフォルトの名無しさん (ワッチョイ 1fd2-bRiQ)
2019/09/18(水) 08:40:59.31ID:vdXxwq0s0 コンパイル前にソースを別のソフトで変換、置き換えさせて・・・
49デフォルトの名無しさん (ワッチョイ 9ff2-VIbU)
2019/09/18(水) 09:00:45.02ID:qgVAc8a30 そしてCにもどるネズミの嫁入り
50デフォルトの名無しさん (ワッチョイ 7fa5-ZFGe)
2019/09/18(水) 12:47:21.47ID:1Vhu13ZT0 BNFとyaccのお勉強から
51デフォルトの名無しさん (アウアウクー MM11-bPqq)
2019/09/19(木) 15:34:03.81ID:yCvdPLl+M #define ARR_NAME(n) arr##n
int arr0 [] = {0,0,0};
int arr1 [] = {1,1,1};
int* select_arr(int i){
return ARR_NAME(i);
}
これはどうしてコンパイルエラーになりますか?
ちなみにreturn ARR_NAME(0)だと正しく動きます。
int arr0 [] = {0,0,0};
int arr1 [] = {1,1,1};
int* select_arr(int i){
return ARR_NAME(i);
}
これはどうしてコンパイルエラーになりますか?
ちなみにreturn ARR_NAME(0)だと正しく動きます。
52デフォルトの名無しさん (ワッチョイ 51f6-ACnl)
2019/09/19(木) 16:38:05.33ID:1k0/HGmS0 タイミングの問題だ
#defineはコンパイル前に解釈されるが
関数仮引数の値は実行時に渡される
実行時とはコンパイル〜リンクまで全て終わった後の話だ
だから関数仮引数の値を#defineで置き換えることができない
#defineはコンパイル前に解釈されるが
関数仮引数の値は実行時に渡される
実行時とはコンパイル〜リンクまで全て終わった後の話だ
だから関数仮引数の値を#defineで置き換えることができない
53さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-en/k)
2019/09/19(木) 17:34:18.54ID:fzYUHnaEd arriという変数はない。プリプロセッサでは変数の中身までは見られない。
54デフォルトの名無しさん (アウアウクー MM11-bPqq)
2019/09/19(木) 18:13:33.75ID:yCvdPLl+M 分かりやすかったです。ありがとう。
この機能の代替として良き方法はありますか?配列のdimを増やすしかないですか?
この機能の代替として良き方法はありますか?配列のdimを増やすしかないですか?
55さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd22-en/k)
2019/09/19(木) 18:22:24.66ID:fzYUHnaEd 次元を増やすのがベストだろう。
56デフォルトの名無しさん (ワッチョイ 6e63-Ms+D)
2019/09/19(木) 18:23:38.47ID:QG4rugRZ0 配列変数名はコンパイル時には分かっているのだから
その配列のアドレスを格納したポインタ配列を用意してやる
その配列のアドレスを格納したポインタ配列を用意してやる
57デフォルトの名無しさん (ワッチョイ 6101-o1nO)
2019/09/19(木) 18:24:58.88ID:Hv2f/JNH0 >>55
これに1票。
これに1票。
58デフォルトの名無しさん (ワッチョイ 0dd2-jgJV)
2019/09/20(金) 15:15:19.52ID:X5/vL2CD0 __、
iー'゙゙゙゙''''ー-,/^´ ゙';
| ゙ゝ....‐ .}
! |,
i____________......r'".'''゙ヽ . ..,,、
,,. -/ `'ー | .' 、
,..-'" l゙ __.. -''′ ./
. ,/ .`''''〜- ....---''''"゛ ,/
/.,, ,,..r'"
`''ー、,、 _,,,-'" `!、
/'r‐、 ,/´ /゙゙', ヽ
/ レ'゙ ´゙リ´ . `^^゙゙゙゙゙゙厂j .! │ . l
/ | .l. 丿/ / . / !
l ! .,,....--ー'''''''″ / .| (、 . !
_ .ィ‐¨゙゙'广゛ ...... ./ ,ノ.l. `'ィ ..,,_/
..-‐'"゛ 'l_゙'ーノ`' ..........,,_ .,, -" / │ .! ゙''''-.
.i''i ヽ、 / .! !
,)イ : ..,,,,,>u;;;;,、.__ _,,,.. / | "
/ . 、 ! .` |
!, ,!
." ゙
iー'゙゙゙゙''''ー-,/^´ ゙';
| ゙ゝ....‐ .}
! |,
i____________......r'".'''゙ヽ . ..,,、
,,. -/ `'ー | .' 、
,..-'" l゙ __.. -''′ ./
. ,/ .`''''〜- ....---''''"゛ ,/
/.,, ,,..r'"
`''ー、,、 _,,,-'" `!、
/'r‐、 ,/´ /゙゙', ヽ
/ レ'゙ ´゙リ´ . `^^゙゙゙゙゙゙厂j .! │ . l
/ | .l. 丿/ / . / !
l ! .,,....--ー'''''''″ / .| (、 . !
_ .ィ‐¨゙゙'广゛ ...... ./ ,ノ.l. `'ィ ..,,_/
..-‐'"゛ 'l_゙'ーノ`' ..........,,_ .,, -" / │ .! ゙''''-.
.i''i ヽ、 / .! !
,)イ : ..,,,,,>u;;;;,、.__ _,,,.. / | "
/ . 、 ! .` |
!, ,!
." ゙
59デフォルトの名無しさん (ブーイモ MM22-RBPn)
2019/09/20(金) 17:51:25.98ID:/93Uxf6sM それは増やさなくていいから
60デフォルトの名無しさん (ワッチョイ 02ad-9GzD)
2019/09/23(月) 14:43:33.00ID:995jKG080 グローバル変数を宣言する時、ヘッダファイルでextern int hogehoge;ってするよね。
*.cからヘッダファイルをincludeすると、
extern int hogehoge;を毎回書いたのと同じ状態になるの?
*.cからヘッダファイルをincludeすると、
extern int hogehoge;を毎回書いたのと同じ状態になるの?
61デフォルトの名無しさん (ワッチョイ 4563-wC8D)
2019/09/23(月) 14:47:57.02ID:LA+tlTim0 そうだよ
includeはファイルをそのまま展開するだけ
includeはファイルをそのまま展開するだけ
>>60
被参照側(メイン)に int hogehoge と書く
参照側(サブ)には extern int hogehoge と書く
これが基本です、*.h を使うのなら
*.h に extern int hogehoge と書く
被参照側(メイン)に int hogehoge と書き、*.h をインクルード…@
参照側(サブ)は *.h をインクルード
@でヘッダと実体に矛盾がないかチェックします
被参照側(メイン)に int hogehoge と書く
参照側(サブ)には extern int hogehoge と書く
これが基本です、*.h を使うのなら
*.h に extern int hogehoge と書く
被参照側(メイン)に int hogehoge と書き、*.h をインクルード…@
参照側(サブ)は *.h をインクルード
@でヘッダと実体に矛盾がないかチェックします
63デフォルトの名無しさん (ワッチョイ 02ad-9GzD)
2019/09/23(月) 21:19:08.91ID:995jKG080 >>61-62
ありがとうございました
ありがとうございました
64デフォルトの名無しさん (アウアウウー Sa8b-dyKo)
2019/09/29(日) 22:13:04.83ID:wBLVWLTJa お前がC言語を 使う前に
言っておきたい 事がある
かなりきびしい話もするが
俺の本音を 聴いておけ
初期化前の変数を 使ってはいけない
gets()関数も 使ってはいけない
文字列の長さと 配列サイズは別物だ
使い終わったバッファは ゼロクリアしろ
できる範囲じゃなくて 全部やって
https://twitter.com/satoru_takeuchi/status/1176429522687676416?s=03
https://twitter.com/5chan_nel (5ch newer account)
言っておきたい 事がある
かなりきびしい話もするが
俺の本音を 聴いておけ
初期化前の変数を 使ってはいけない
gets()関数も 使ってはいけない
文字列の長さと 配列サイズは別物だ
使い終わったバッファは ゼロクリアしろ
できる範囲じゃなくて 全部やって
https://twitter.com/satoru_takeuchi/status/1176429522687676416?s=03
https://twitter.com/5chan_nel (5ch newer account)
65デフォルトの名無しさん (ドコグロ MM7b-Gn+r)
2019/09/30(月) 07:29:14.67ID:II5MOx76M66デフォルトの名無しさん (ワッチョイ e77c-Sxlc)
2019/09/30(月) 08:11:22.10ID:gJLA2fQe0 パスワードやらなんやらの機密情報を保存したバッファは解放前にゼロクリアしようねという話です。
任意のバッファという意味ではありません。失礼しました
任意のバッファという意味ではありません。失礼しました
67デフォルトの名無しさん (スップ Sd7f-+ATs)
2019/09/30(月) 08:13:21.71ID:VG7pOpzld 物凄く初歩的な質問で申し訳ないのですが
1%5のような余剰計算をした場合解は5になるのでしょうか0になるのでしょうか
1%5のような余剰計算をした場合解は5になるのでしょうか0になるのでしょうか
68デフォルトの名無しさん (スップ Sd7f-+ATs)
2019/09/30(月) 08:15:49.83ID:VG7pOpzld すみません自己解決しました
69デフォルトの名無しさん (ドコグロ MM7b-Gn+r)
2019/09/30(月) 08:18:14.42ID:II5MOx76M それC言語固有の話じゃないし個々にやるべきかプロセス毎にやるべきかとかのポリシーもあるし
70デフォルトの名無しさん (アウアウウー Sa8b-dyKo)
2019/09/30(月) 09:14:54.65ID:eZfyppwla71デフォルトの名無しさん (ワッチョイ 5dda-0RA9)
2019/10/04(金) 06:41:48.31ID:UVSgb2bf0 ゼロクリアだとそこだけ異様にキレイなので逆に重要な値が入るものと察知される
乱数値でクリアすべき
乱数値でクリアすべき
72デフォルトの名無しさん (ワッチョイ b67c-G1PU)
2019/10/04(金) 08:54:32.98ID:iKrL2UhC0 >>71
すごいコストがかかるよねそれ・・・
すごいコストがかかるよねそれ・・・
73デフォルトの名無しさん (ワッチョイ 39d2-jw9j)
2019/10/04(金) 09:53:27.82ID:gjBxAXtl0 一々乱数計算しなくても数パターン乱数表つくってメモリコピーでもいいんじゃね?
74デフォルトの名無しさん (アークセー Sxbd-BjtM)
2019/10/04(金) 10:40:51.28ID:0WBkPtDcx そもそもゼロクリアされてるbss領域なんて重要なもの以外にも大量に存在してるので攻撃者がピンポイントで判断することなどまず不可能。
逆に綺麗すぎる乱数のほうが目立つ。
逆に綺麗すぎる乱数のほうが目立つ。
75デフォルトの名無しさん (ドコグロ MMb1-XtwS)
2019/10/04(金) 11:02:52.42ID:uYF9K7e8M そこだけにするからバレると言うなら全部ゼロクリアすればいいってことでしょ
> 使い終わったバッファは ゼロクリアしろ
> できる範囲じゃなくて 全部やって
> 使い終わったバッファは ゼロクリアしろ
> できる範囲じゃなくて 全部やって
76デフォルトの名無しさん (ワッチョイ 6aa5-SLA8)
2019/10/04(金) 11:23:25.74ID:rAj4fuhv0 今の流行りは不変プログラミング
スコープが短い云々ではなく使い捨て
再利用なんてしない
スコープが短い云々ではなく使い捨て
再利用なんてしない
77デフォルトの名無しさん (ワッチョイ 6a18-M8t1)
2019/10/04(金) 11:28:53.13ID:MVQV/kgg0 アメリカ国防省のDoD5200.28-Mとかね
78デフォルトの名無しさん (ワッチョイ 8d88-LHep)
2019/10/04(金) 11:42:07.63ID:TDKY2TUM0 HDDだと少数回のゼロクリアじゃデータ復旧される可能性が残るけどメモリだったらその心配はないのかね?
79デフォルトの名無しさん (アークセー Sxbd-BjtM)
2019/10/04(金) 11:48:30.26ID:0WBkPtDcx80デフォルトの名無しさん (アウアウウー Sa21-8Spd)
2019/10/04(金) 14:20:51.26ID:hcjI0QEWa スワップされてディスクに書き込まれたら終わりなのでスワップされないようにする必要がある。
81デフォルトの名無しさん (ワッチョイ 8d88-LHep)
2019/10/04(金) 14:34:25.76ID:TDKY2TUM0 windowsの細かな動きがわからんけどスリープとかでメモリ内容を全部ディスクに保存する動きしない?
するなら言語レベルではどう頑張ってもディスクにデータを書き込まずにスルーする術なんてないんじゃなかろうか?
ということは漏洩防止目的でバッファをゼロクリアする意味は無い?
windows以外は知らん
するなら言語レベルではどう頑張ってもディスクにデータを書き込まずにスルーする術なんてないんじゃなかろうか?
ということは漏洩防止目的でバッファをゼロクリアする意味は無い?
windows以外は知らん
82デフォルトの名無しさん (ワッチョイ 39d2-jw9j)
2019/10/04(金) 15:03:33.90ID:gjBxAXtl0 スリープ処理って関数実行中でも起きるの?
メッセージ待ちとかで起こると思ってた。
メッセージ待ちとかで起こると思ってた。
83デフォルトの名無しさん (アークセー Sxbd-BjtM)
2019/10/04(金) 15:23:30.09ID:0WBkPtDcx 多分priemptされてたら実行状態でも普通にswap outされるだろうな。
84デフォルトの名無しさん (ドコグロ MMb1-XtwS)
2019/10/04(金) 15:25:19.34ID:uYF9K7e8M スワップに書いてある内容がどのプロセスのものかをどうやって知るつもりなんだろう…
てかそんなのがわかる状況ならそもそもセキュリティうんぬん言ってもしょうがないと思う
てかそんなのがわかる状況ならそもそもセキュリティうんぬん言ってもしょうがないと思う
85デフォルトの名無しさん (アウアウウー Sa21-8Spd)
2019/10/04(金) 15:35:25.79ID:hcjI0QEWa Linuxにはmlock()がある。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/mlock.2.html
多分他のOSにも似たようなのはある筈。
なければ高度なセキュリティが必要なプログラムは作れない。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/mlock.2.html
多分他のOSにも似たようなのはある筈。
なければ高度なセキュリティが必要なプログラムは作れない。
86デフォルトの名無しさん (アウアウウー Sa21-8Spd)
2019/10/04(金) 15:43:12.94ID:hcjI0QEWa サスペンドでメモリ内容が全てディスクに書き込まれるような場合は暗号化サスペンドイメージを使うように予め設定しておくしかないようだ。(もはや言語の問題ではない。OSの問題)。
87デフォルトの名無しさん (ワッチョイ 8d88-LHep)
2019/10/04(金) 15:53:58.62ID:TDKY2TUM0 最終的にはOSやらハードウェアファームやらのレベルの話に行き着くんで上位レイヤーでの完全対応は無理
ならば他アプリが自アプリのバッファにアクセスできないよう下位レイヤーが保証してるならバッファクリアは不要ということになる?
そんなレベルで心配が必要なことは個人的に触ることは無いと思うけど
ならば他アプリが自アプリのバッファにアクセスできないよう下位レイヤーが保証してるならバッファクリアは不要ということになる?
そんなレベルで心配が必要なことは個人的に触ることは無いと思うけど
88デフォルトの名無しさん (アウアウクー MM7d-Pgoj)
2019/10/04(金) 17:34:20.04ID:SD7r35lfM 関数ポインタの書式と宣言方法がわからぬ(´・ω・`)
だれか助けてクレメンス
だれか助けてクレメンス
89デフォルトの名無しさん (ブーイモ MMc9-Lreg)
2019/10/04(金) 18:02:32.55ID:TP3p64JiM ここで講義始めるわけに行かないんだからもっとspecificに頼むよ
90デフォルトの名無しさん (ワッチョイ 2ac5-G1PU)
2019/10/05(土) 01:05:45.82ID:JlWvx+CH0 Makefileなどに書かれているCCって「C Compiler」の略でしょうか?
91デフォルトの名無しさん (ワッチョイ f1a5-M8t1)
2019/10/05(土) 08:03:44.94ID:9T2eUTn80 UNIXのccコマンドじゃね?
92デフォルトの名無しさん (ワッチョイ 2ac5-G1PU)
2019/10/05(土) 20:19:21.97ID:JlWvx+CH093デフォルトの名無しさん (ワッチョイ b67c-G1PU)
2019/10/07(月) 09:08:10.49ID:wNNRR3l10 ピザ好きな不老不死の女の子かと思った
94デフォルトの名無しさん (スップ Sdea-s2a/)
2019/10/07(月) 19:40:47.02ID:Xs+XlBV4d 250億分の1のドム?
95デフォルトの名無しさん (ワッチョイ 7d01-BjtM)
2019/10/08(火) 06:14:41.38ID:T9JnCGiw0 Card Captor
96デフォルトの名無しさん (ワッチョイ 2ac5-G1PU)
2019/10/08(火) 07:56:55.95ID:/Tt7z8U00 さくらちゃん!
97デフォルトの名無しさん (アウアウウー Sa21-8Spd)
2019/10/08(火) 10:23:23.04ID:UHIrT7RMa Chupa Chups
98デフォルトの名無しさん (ワッチョイ 9fc5-NJTS)
2019/10/10(木) 14:01:00.49ID:at1yx75i0 このスレこんなに過疎ってたっけ
99デフォルトの名無しさん (アウアウウー Sa5b-DLKC)
2019/10/10(木) 20:53:57.73ID:f2z6TkRsa まずは燃料投下する必要があるんじゃないかな。C言語はダメとかクソとか、あるいは引数にvoidなんて見たことないとか、そういったことを書けば火が付いて3スレぐらいあっという間に消費すると思うよ。
100デフォルトの名無しさん (ワッチョイ 9f02-NhWV)
2019/10/10(木) 21:22:58.67ID:uAIxYTc70 void君呼ばれてるよ〜
101デフォルトの名無しさん (ワッチョイ 9ff9-8cCB)
2019/10/10(木) 21:27:26.48ID:uUO69neG0 void君だと日下部を連想しちゃう
102デフォルトの名無しさん (ワッチョイ 9f79-NJTS)
2019/10/10(木) 23:54:41.04ID:a+kHg1ZD0 C言語がクソなのは誰の目にも明らかだから燃料にもならない
何を犠牲にしてでも最速を求めなければならないとか
今時キロバイト単位のメモリしか載ってないとかで渋々使わざるを得ないだけ
何を犠牲にしてでも最速を求めなければならないとか
今時キロバイト単位のメモリしか載ってないとかで渋々使わざるを得ないだけ
>>102
プログラムに関係する問題を人に伝えたく、かつ、言語固有の事情をできるだけ排除したいときにあえて c で表現することはあります、普段書きはすでに c++ ではあるのですが
https://mevius.5ch.net/test/read.cgi/tech/1551247748/442-443
プログラムに関係する問題を人に伝えたく、かつ、言語固有の事情をできるだけ排除したいときにあえて c で表現することはあります、普段書きはすでに c++ ではあるのですが
https://mevius.5ch.net/test/read.cgi/tech/1551247748/442-443
104デフォルトの名無しさん (スップ Sdbf-xp8T)
2019/10/11(金) 07:30:31.94ID:nZkXsNOYd だな
105デフォルトの名無しさん (アークセー Sxcb-olh0)
2019/10/11(金) 07:53:34.25ID:3LFsZ0AAx かと言ってC++にそんなにメリット感じないんだよなぁ。
106デフォルトの名無しさん (アウアウクー MMcb-mT29)
2019/10/11(金) 08:03:12.82ID:tJJSdY6IM python最強!python最強!python最強!
107デフォルトの名無しさん (ワッチョイ ff63-NJTS)
2019/10/15(火) 23:35:16.76ID:j31F4ljf0 pythonスレ、寂れているぞ
108デフォルトの名無しさん (ワッチョイ 9779-NJTS)
2019/10/15(火) 23:36:55.58ID:41wob9vL0 Cスレより寂れてから出直してこい
109デフォルトの名無しさん (ワッチョイ d2c5-S3Tg)
2019/10/18(金) 13:14:43.91ID:fz6Ul+V20 あんなに活気のあったスレがこんなに寂れるとは
5chから人が減っているという噂は本当だったか・・・
5chから人が減っているという噂は本当だったか・・・
110デフォルトの名無しさん (ワッチョイ c67c-S3Tg)
2019/10/18(金) 13:17:46.21ID:TRDqZrvk0 2chに戻れば盛況になると思うよ
■ このスレッドは過去ログ倉庫に格納されています
