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言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 148
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa807デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/19(金) 12:53:54.85ID:7j5wTJzZ0808デフォルトの名無しさん (ラクッペ MMc3-2+nH)
2018/10/19(金) 13:19:52.78ID:R+tFUjApM >>806
いくらコードが書けても設計通りに書けないなら駄目じゃん
いくらコードが書けても設計通りに書けないなら駄目じゃん
809デフォルトの名無しさん (JP 0H1b-87xj)
2018/10/19(金) 13:27:43.51ID:F6BbYzOIH >>807
hello worldの存在意義は、
その言語に初めて触れる人に、
言語の規格にきちんと準拠して、
最小限の記述で、
きちんと動作する、
何かのプログラムを見せることだよ。
どんな設計スタイルがいいとか教えることじゃない。
hello worldの存在意義は、
その言語に初めて触れる人に、
言語の規格にきちんと準拠して、
最小限の記述で、
きちんと動作する、
何かのプログラムを見せることだよ。
どんな設計スタイルがいいとか教えることじゃない。
810デフォルトの名無しさん (ワッチョイ 978a-aSWc)
2018/10/19(金) 13:59:06.39ID:P91Z2zs70 hello, worldって
コンパイラをインストールした後
動作確認する為のテスト用だと思ってた
コンパイラをインストールした後
動作確認する為のテスト用だと思ってた
811デフォルトの名無しさん (ワッチョイ be61-7PZ0)
2018/10/19(金) 14:28:27.19ID:bojs5aOI0 ゲーム機ハックした人が最初に実行した自作アプリがhello worldだったとかなんとか。
812デフォルトの名無しさん (アウアウウー Sa9f-BMDm)
2018/10/19(金) 14:33:09.80ID:gPrGaWTXa カーニハンそんなことやってたっけ?
813デフォルトの名無しさん (アウアウカー Safb-dUTK)
2018/10/19(金) 15:14:02.97ID:SjrnPnkZa >>808
設計通りに書けない奴はコードが書ける奴とは言わんだろ。
設計通りに書けない奴はコードが書ける奴とは言わんだろ。
814デフォルトの名無しさん (アウアウカー Safb-dUTK)
2018/10/19(金) 15:21:55.54ID:SjrnPnkZa815デフォルトの名無しさん (ワッチョイ 2e23-nBLa)
2018/10/19(金) 16:34:20.62ID:2swZl7760 adjtimeって何秒まで調整できるの? 2145秒?
816デフォルトの名無しさん (アウアウウー Sa9f-BMDm)
2018/10/19(金) 17:14:10.33ID:gPrGaWTXa Linuxというかglibcならmanページに書いてあるよ。
817デフォルトの名無しさん (ワッチョイ f380-tM5n)
2018/10/19(金) 22:42:18.68ID:zxKaiBZl0 make worldでX立ち上がったときは
感動したものだ
感動したものだ
818デフォルトの名無しさん (ワッチョイ 66d5-7cZp)
2018/10/20(土) 00:30:32.53ID:o/rPvxpn0 make world ってなんかかっこいいよな
819デフォルトの名無しさん (ワッチョイ ba80-JSR1)
2018/10/20(土) 00:33:01.78ID:rwRxHeub0 世界の創造主、いわゆるゴッド
820デフォルトの名無しさん (ワッチョイ be81-xJah)
2018/10/20(土) 01:37:49.13ID:/s/GXT/Q0 それで思い出した
プロジェクトでのmakefile、作成が終わった時に
バナー文字で「make end!」って表示するんだけど
ある人のだけは「big cock!」に書き換えてたっけ
ここには関係者いないよね?
プロジェクトでのmakefile、作成が終わった時に
バナー文字で「make end!」って表示するんだけど
ある人のだけは「big cock!」に書き換えてたっけ
ここには関係者いないよね?
821デフォルトの名無しさん (アウアウカー Safb-dUTK)
2018/10/20(土) 15:49:24.33ID:Nttc2RvPa C言語だから、次世代言語(w)よりもコード出るかと思ったら、出ないのな。
822デフォルトの名無しさん (ワッチョイ aebe-fIkj)
2018/10/20(土) 21:33:22.48ID:y1kFtLUq0 どうでもいいけど
「w」という名前の言語があるのかと思った。割と本気で調べてしまったw
「w」という名前の言語があるのかと思った。割と本気で調べてしまったw
823デフォルトの名無しさん (ワッチョイ 269f-nBLa)
2018/10/21(日) 04:55:52.71ID:sz/a4USN0824デフォルトの名無しさん (ワッチョイ 7e15-nBLa)
2018/10/21(日) 20:05:57.37ID:YP/adz7t0 >>773
近称で自己紹介乙
近称で自己紹介乙
825デフォルトの名無しさん (ワッチョイ 6ab3-b3y3)
2018/10/21(日) 21:20:19.52ID:S2kctYlU0 >>824
ごめん、俺は精神科じゃないし w
ごめん、俺は精神科じゃないし w
826デフォルトの名無しさん (ワッチョイ be81-xJah)
2018/10/21(日) 21:28:27.90ID:o3Tx01ZR0 病気の話を持ち出すのは、そういう体験が豊富にあるからだろう
827デフォルトの名無しさん (ワッチョイ 7e15-nBLa)
2018/10/21(日) 22:08:00.66ID:YP/adz7t0 >>825
人物と診療科を等値比較とかおまえstd::logic_errorだな
人物と診療科を等値比較とかおまえstd::logic_errorだな
828デフォルトの名無しさん (ワッチョイ 3bb3-xBTp)
2018/10/21(日) 22:17:56.29ID:+iExR7UM0 Cでfloat型が表す最小の正の数値を求めるプログラム書いてて、
とりあえず1.175494e-38に近づけるように書いてみてるんだが
printfで値表示させながらやってみると1.175494e-38以下も表示されるのなんで?
環境はgcc5.5.0_1
とりあえず最小判定は初期値1.2e-38を0.000001e-38ずつ減らしていって、
1.175494e-38を抜けるとバカな数字が出てくると仮定してif(a / (b - c) != 1)で判定してる
int main(){
float a = 1.2e-38, b;
float c = 0.000001e-38;
while(1){
b = a;
a -= c;
printf("a=%.6e b=%.6e\n", a, b);
if(a < 0 || b < 0) break;
if((a / (b - c) != 1.0)) break;
}
printf("a=%.8e b=%.8e\n", a, b);
if(b < 1.175494e-38) printf("b is not min value\n");
}
とりあえず1.175494e-38に近づけるように書いてみてるんだが
printfで値表示させながらやってみると1.175494e-38以下も表示されるのなんで?
環境はgcc5.5.0_1
とりあえず最小判定は初期値1.2e-38を0.000001e-38ずつ減らしていって、
1.175494e-38を抜けるとバカな数字が出てくると仮定してif(a / (b - c) != 1)で判定してる
int main(){
float a = 1.2e-38, b;
float c = 0.000001e-38;
while(1){
b = a;
a -= c;
printf("a=%.6e b=%.6e\n", a, b);
if(a < 0 || b < 0) break;
if((a / (b - c) != 1.0)) break;
}
printf("a=%.8e b=%.8e\n", a, b);
if(b < 1.175494e-38) printf("b is not min value\n");
}
829デフォルトの名無しさん (ワッチョイ 6ab3-b3y3)
2018/10/21(日) 22:24:44.10ID:S2kctYlU0 >>827
精神科医のタイポの指摘しかできなくて悔しいね w
精神科医のタイポの指摘しかできなくて悔しいね w
830デフォルトの名無しさん (アウアウカー Safb-XHS6)
2018/10/21(日) 22:40:20.13ID:P+edJh4ea 定数のマクロあったりしないのか
831デフォルトの名無しさん (ワッチョイ 7e15-nBLa)
2018/10/21(日) 23:01:49.92ID:YP/adz7t0 >>829
あ、おまえ間違えたの? アホとヴァカしかやらない間違いだなw
あ、おまえ間違えたの? アホとヴァカしかやらない間違いだなw
832デフォルトの名無しさん (ワッチョイ f3ea-JQ7R)
2018/10/22(月) 00:28:49.01ID:4J0CKskh0 基本情報c言語で受かってた
すごいっしょ
すごいっしょ
833デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/22(月) 01:24:24.92ID:qPiOMOlUM834デフォルトの名無しさん (ワッチョイ 3bb3-FQxm)
2018/10/22(月) 01:30:41.57ID:eGJ65JSF0835デフォルトの名無しさん (ワッチョイ 8af9-L5c9)
2018/10/22(月) 01:41:56.82ID:ao50gEDc0 >>834
バカな数字とかいい加減な理解をしないで、ちゃんとした仕様を調べてみなよ。例えばwikipedia辺りで算術オーバーフローの項目見て全部読んで、分からない語とか関連する語もちゃんと調べるとか。
バカな数字とかいい加減な理解をしないで、ちゃんとした仕様を調べてみなよ。例えばwikipedia辺りで算術オーバーフローの項目見て全部読んで、分からない語とか関連する語もちゃんと調べるとか。
836デフォルトの名無しさん (ワッチョイ 7e5b-aqc6)
2018/10/22(月) 02:29:56.23ID:gc2RKbtu0837デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/22(月) 02:49:07.02ID:qPiOMOlUM838デフォルトの名無しさん (ワッチョイ 6ab3-b3y3)
2018/10/22(月) 04:47:45.21ID:o0mVKFY/0839sage (ワッチョイ 3bb3-xBTp)
2018/10/22(月) 04:59:16.08ID:eGJ65JSF0 >>837
int型で似たようなこと(最大の正の数値を求める)やろうとしたら、バカみたいな数字が出たってだけだよ
int型で似たようなこと(最大の正の数値を求める)やろうとしたら、バカみたいな数字が出たってだけだよ
840デフォルトの名無しさん (ワッチョイ ea11-nBLa)
2018/10/22(月) 06:47:45.13ID:MQnoZdqg0 >>838
アホw ヴァカwww
アホw ヴァカwww
841名無しさん@そうだ選挙に行こう! Go to vote! (ドコグロ MM22-b3y3)
2018/10/22(月) 07:09:00.78ID:PnrNZBigM842名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ ea7c-M8rW)
2018/10/22(月) 07:36:45.42ID:3zPWDIkK0 >>828
非正規化数(denormal)でぐぐれ
非正規化数(denormal)でぐぐれ
843名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ ea11-nBLa)
2018/10/22(月) 09:03:08.22ID:MQnoZdqg0 >>841
アホとヴァカを認めやがったw
アホとヴァカを認めやがったw
844名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 26e7-iIDB)
2018/10/22(月) 10:25:10.75ID:OFRfv3K50 KYB
845デフォルトの名無しさん (ドコグロ MM22-b3y3)
2018/10/22(月) 12:24:07.96ID:PnrNZBigM >>843
意味のわからん解釈で勝ち誇るとか低能の定番乙 w
意味のわからん解釈で勝ち誇るとか低能の定番乙 w
846デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/22(月) 12:59:00.86ID:8WYgXfgna そろそろコードで語れや
847デフォルトの名無しさん (ワッチョイ ea11-nBLa)
2018/10/22(月) 13:28:16.05ID:MQnoZdqg0848デフォルトの名無しさん (JP 0H1b-xBTp)
2018/10/22(月) 15:05:43.37ID:K/0BTgUUH >>828ですが、参考書やらをみてアンダーフロー・正規化についてしっかり理解したところ、解決しました。
要は、float型のビット表現の仮数部が 0.(仮数部) ではなく 1.(仮数部) で表現されてるから、
その意味では
0|00000001|00000000000000000000000
が最小の正数になるけど、仮数部を 0.(仮数部) と表現しても計算できないことはないから、
0|00000000|10000000000000000000000
もちゃんと表示される、ということだけど、
これ以降ずっと計算していくといずれ
0|00000000|00000000000000000000000
となるから、150回目くらいでアンダーフローが起こる、ということらしい。
>>835と>>842ありがとうございました。
要は、float型のビット表現の仮数部が 0.(仮数部) ではなく 1.(仮数部) で表現されてるから、
その意味では
0|00000001|00000000000000000000000
が最小の正数になるけど、仮数部を 0.(仮数部) と表現しても計算できないことはないから、
0|00000000|10000000000000000000000
もちゃんと表示される、ということだけど、
これ以降ずっと計算していくといずれ
0|00000000|00000000000000000000000
となるから、150回目くらいでアンダーフローが起こる、ということらしい。
>>835と>>842ありがとうございました。
849デフォルトの名無しさん (ドコグロ MMc3-b3y3)
2018/10/22(月) 19:09:18.14ID:LClj1fo2M850デフォルトの名無しさん (ワッチョイ ea11-nBLa)
2018/10/22(月) 21:38:29.05ID:MQnoZdqg0851デフォルトの名無しさん (ワッチョイ 6ab3-b3y3)
2018/10/22(月) 23:25:34.63ID:o0mVKFY/0852デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/23(火) 02:12:44.79ID:hcGdXqLuM 飽きないねぇ・・・
853デフォルトの名無しさん (ワッチョイ ba80-JSR1)
2018/10/23(火) 03:28:29.69ID:MMiE9qLz0 >>848
色々違う
色々違う
854デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/23(火) 12:00:30.24ID:cKF5Z2eR0 C言語でLinuxのdmesgやffmpegのログのような着色された分かり易いログ出力ができるライブラリってありますか?
[YYYY-MM-DD hh:mm:ss.ss] INFO: creating some file...
のような形式がいいんですけど、Cだと自作するしかないですかね?
[YYYY-MM-DD hh:mm:ss.ss] INFO: creating some file...
のような形式がいいんですけど、Cだと自作するしかないですかね?
855デフォルトの名無しさん (アウアウカー Safb-LYDX)
2018/10/23(火) 12:27:40.24ID:SzZ0Y41Da856デフォルトの名無しさん (アウアウエー Sae2-XHS6)
2018/10/23(火) 12:33:21.57ID:9ghnGYJ4a 色だけだったら制御コード挟むだけでかなり直接的な操作だから、ライブラリ要らんと思うよ
857デフォルトの名無しさん (ワッチョイ 4acb-nBLa)
2018/10/23(火) 21:42:50.09ID:/OGOSsnj0 >>851
ヴァカと書いてあるのを血眼で探したのか
ご苦労だったな
で、誰か「自分にお前だけ(ry」とかテレパシーで話しかけてきたのか
なるほど精神科の医者じゃなく患者だな
精神分裂病の陽性症状で幻聴がひどいようだな
ヴァカと書いてあるのを血眼で探したのか
ご苦労だったな
で、誰か「自分にお前だけ(ry」とかテレパシーで話しかけてきたのか
なるほど精神科の医者じゃなく患者だな
精神分裂病の陽性症状で幻聴がひどいようだな
858デフォルトの名無しさん (ワッチョイ 6ab3-b3y3)
2018/10/23(火) 21:55:22.05ID:AzbdbLNL0 血眼?
検索機能も知らんのか w
検索機能も知らんのか w
859デフォルトの名無しさん (アウアウウー Sa9f-Egl2)
2018/10/23(火) 22:50:27.85ID:PGQOpxAMa >>854
サンプル書いてやったぞ
#include <stdio.h>
#include <time.h>
#define D(fmt, ...) \
do { \
struct timespec _ts_; \
struct tm _tm_; \
char _tt_[128] = {0}; \
clock_gettime(CLOCK_REALTIME, &_ts_); \
localtime_r(&_ts_.tv_sec, &_tm_); \
strftime(_tt_, 128, "%H:%M:%S", &_tm_); \
fprintf(stdout, "\033[33m%s.%lu %s:%d %s " fmt "\033[0m\n", \
_tt_, _ts_.tv_nsec, __FILE__, __LINE__, __func__, ##__VA_ARGS__); \
} while (0);
サンプル書いてやったぞ
#include <stdio.h>
#include <time.h>
#define D(fmt, ...) \
do { \
struct timespec _ts_; \
struct tm _tm_; \
char _tt_[128] = {0}; \
clock_gettime(CLOCK_REALTIME, &_ts_); \
localtime_r(&_ts_.tv_sec, &_tm_); \
strftime(_tt_, 128, "%H:%M:%S", &_tm_); \
fprintf(stdout, "\033[33m%s.%lu %s:%d %s " fmt "\033[0m\n", \
_tt_, _ts_.tv_nsec, __FILE__, __LINE__, __func__, ##__VA_ARGS__); \
} while (0);
860デフォルトの名無しさん (アウアウカー Safb-lmgi)
2018/10/24(水) 00:50:22.48ID:pNd6Tk0Ba do/whileでくくる意味あんの?
861デフォルトの名無しさん (ブーイモ MMd6-v9b0)
2018/10/24(水) 00:54:26.48ID:PjZwCPb8M 末尾のセミコロンがなければ意味あるけど、
セミコロンのせいで無意味になってるね。
セミコロンのせいで無意味になってるね。
862デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/24(水) 01:18:13.51ID:fzPXyYYOM カラーコードをハードコーディングかぁ
やりますねぇ・・・
やりますねぇ・・・
863854 (ワッチョイ f364-qPjg)
2018/10/24(水) 01:42:48.00ID:+vpF9pgu0864854 (ワッチョイ f364-qPjg)
2018/10/24(水) 01:48:03.42ID:+vpF9pgu0 >>862
例えば改行を\x0aで固定するのは良くない方法であり、\nにすべきですが(これだとWindows向けにビルドしてやれば\0x0d\0x0aが出力されるようになる)
着色に関するエスエープシーケンスを固定するのは別に大丈夫だと思います。
ECMA-48/8.3.117などで標準化されてますし。
例えば改行を\x0aで固定するのは良くない方法であり、\nにすべきですが(これだとWindows向けにビルドしてやれば\0x0d\0x0aが出力されるようになる)
着色に関するエスエープシーケンスを固定するのは別に大丈夫だと思います。
ECMA-48/8.3.117などで標準化されてますし。
865デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/24(水) 02:18:53.70ID:fzPXyYYOM >>864
ん、いや、マクロくらい使おうよって話
ん、いや、マクロくらい使おうよって話
866デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/24(水) 03:09:04.52ID:+vpF9pgu0867デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/24(水) 04:01:46.93ID:fzPXyYYOM >>866
いやいや・・・
それ丸ごとマクロにした方が楽でしょ・・・
https://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c
いやいや・・・
それ丸ごとマクロにした方が楽でしょ・・・
https://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c
868デフォルトの名無しさん (ワッチョイ 66d5-7cZp)
2018/10/24(水) 05:49:24.17ID:X/sBrfkw0 >>867
説明のための例だからそういう定義が分かりやすいとして、
>>866
こういうのを定義するときは、手段じゃなくて目的で定義する方がいいんじゃないかな。
ソース位置の強調をするために STYLE_LINE、タイムスタンプを強調するために STYLE_TIME、プロセスIDを強調するために STYLE_PID、みたいな。
それらを定義するときに YELLOW とか RED とか使う感じ。
#define STYLE_LINE(FMT) (ANSI_COLOR_YELLOW FMT ANSI_COLOR_RESET)
みたいにして、
fprintf(stdout, STYLE_TIME("%s.%lu") " " STYLE_LINE("%s:%d") " " STYLE_MSG(fmt) "¥n",
とか。
説明のための例だからそういう定義が分かりやすいとして、
>>866
こういうのを定義するときは、手段じゃなくて目的で定義する方がいいんじゃないかな。
ソース位置の強調をするために STYLE_LINE、タイムスタンプを強調するために STYLE_TIME、プロセスIDを強調するために STYLE_PID、みたいな。
それらを定義するときに YELLOW とか RED とか使う感じ。
#define STYLE_LINE(FMT) (ANSI_COLOR_YELLOW FMT ANSI_COLOR_RESET)
みたいにして、
fprintf(stdout, STYLE_TIME("%s.%lu") " " STYLE_LINE("%s:%d") " " STYLE_MSG(fmt) "¥n",
とか。
869デフォルトの名無しさん (アウアウウー Sa9f-Egl2)
2018/10/24(水) 07:45:53.57ID:hBENxp+1a870デフォルトの名無しさん (ワッチョイ 66d5-7cZp)
2018/10/24(水) 09:48:15.70ID:X/sBrfkw0 >>869
例だから派手にしたけど、言いたいのは目的にちなんだ定義名にした方がいいってこと。
ログレベル毎に色を変えるなら、STYLE_ERROR、STYLE_WARN、STYLE_INFO とかさ。
例だから派手にしたけど、言いたいのは目的にちなんだ定義名にした方がいいってこと。
ログレベル毎に色を変えるなら、STYLE_ERROR、STYLE_WARN、STYLE_INFO とかさ。
871デフォルトの名無しさん (アウアウエー Sae2-DAUi)
2018/10/24(水) 09:56:16.01ID:WhwEQaTDa まあ抽象は正義だからな
872デフォルトの名無しさん (ドコグロ MM3b-b3y3)
2018/10/24(水) 19:57:27.64ID:a4OXlgOjM 正論と同じであまり振りかざされても実務では面倒なだけ
>>868とか正直ウザって思うわ
>>868とか正直ウザって思うわ
873デフォルトの名無しさん (アウアウウー Sa9f-L0SM)
2018/10/24(水) 20:20:46.99ID:k2aW8IHEa cursesライブラリは使えないなかな?
874デフォルトの名無しさん (ワッチョイ f364-qPjg)
2018/10/24(水) 20:56:00.65ID:+vpF9pgu0 ていうかログのフォーマットってCでは標準化されていないのね、SUS含め。
Javaのlog4jやPythonのloggerみたいなものがあれば 一番嬉しいんだけどね
Javaのlog4jやPythonのloggerみたいなものがあれば 一番嬉しいんだけどね
875デフォルトの名無しさん (スッップ Sd8a-Iuwz)
2018/10/24(水) 21:31:34.66ID:0y0LlX3od C初心者です、よろしくお願いします
ubuntuのvimでしこしこ書いてgccでコンパイルしています
CでIDEを使ってみたいのですがオススメありましたら教えてください
仕事ではJavaでEclipseを使ってるのですがCで使ってみたらいまいちピンと来ませんでした
やはり皆さんVisualStadioとかVSCodeあたりでしょうか?
ubuntuのvimでしこしこ書いてgccでコンパイルしています
CでIDEを使ってみたいのですがオススメありましたら教えてください
仕事ではJavaでEclipseを使ってるのですがCで使ってみたらいまいちピンと来ませんでした
やはり皆さんVisualStadioとかVSCodeあたりでしょうか?
876デフォルトの名無しさん (ワイモマー MM8a-e2v7)
2018/10/24(水) 23:14:58.20ID:GbRp+dd6M そうですね
ぜひ使ってみて下さい
ぜひ使ってみて下さい
877デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/25(木) 09:43:50.32ID:hw/Q19JUa >>874
ないけどUNIXで昔からsyslog使われてた。というかそれがあったせいで他のログ出力ライブラリが広まらなかったのかも知れない。
ないけどUNIXで昔からsyslog使われてた。というかそれがあったせいで他のログ出力ライブラリが広まらなかったのかも知れない。
878デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/25(木) 10:55:57.05ID:OLog262Fa ログ出力も奥が深いよな。
大量かつ高速が条件だとなかなか悩む
大量かつ高速が条件だとなかなか悩む
879デフォルトの名無しさん (ワッチョイ 0781-HyCk)
2018/10/25(木) 12:17:11.73ID:3CeE+Pyi0 最近はログをDBに格納している
880デフォルトの名無しさん (JP 0H19-+toU)
2018/10/25(木) 15:07:02.91ID:UNvjysmaH DBのログは?
881デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/25(木) 15:27:49.50ID:R/0gSUq30 syslogは日付がISOに従ってないのがちょっと嫌だな。
[YYYY-MM-DDThh-mm-ss,ssZ] LOGLEVEL: some messages.
こんな感じがいい
[YYYY-MM-DDThh-mm-ss,ssZ] LOGLEVEL: some messages.
こんな感じがいい
882デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/25(木) 15:40:47.48ID:hw/Q19JUa rsyslogdだと設定できなかったっけ?
883デフォルトの名無しさん (ドコグロ MMcf-YOnW)
2018/10/25(木) 17:56:49.79ID:zmVgc+jlM884デフォルトの名無しさん (ワッチョイ 9764-g60c)
2018/10/25(木) 18:37:09.60ID:R/0gSUq30 うーん。素人考えなんだけどfprintf()関数を呼び出したり,その中で__FILE__マクロ変数を展開したりするのって
そんなにコスト掛かる動作じゃないよね。
いくら大量の処理とは言え,ログを出力しただけで影響がでるような厳しい環境ってそうなくない?
そしてそもそもそんな環境でログ処理ではないメインの処理って動くの?
そんなにコスト掛かる動作じゃないよね。
いくら大量の処理とは言え,ログを出力しただけで影響がでるような厳しい環境ってそうなくない?
そしてそもそもそんな環境でログ処理ではないメインの処理って動くの?
885デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/25(木) 18:46:33.19ID:s6Ph9fEn0 >>884
マルチプロセスやマルチスレッドだったりすれば排他も必要だし、fprintf 使っただけだとプロセスの突然死なんかではバッファがフラッシュされず失われ、一番欲しい落ちる寸前の情報が欠けかねない。
小まめにフラッシュしたらそれはそれで性能の問題が出る。
奥が深いと思うよ。
マルチプロセスやマルチスレッドだったりすれば排他も必要だし、fprintf 使っただけだとプロセスの突然死なんかではバッファがフラッシュされず失われ、一番欲しい落ちる寸前の情報が欠けかねない。
小まめにフラッシュしたらそれはそれで性能の問題が出る。
奥が深いと思うよ。
886デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/25(木) 23:51:29.92ID:GsCjxORea887デフォルトの名無しさん (アウアウウー Saf1-6HWJ)
2018/10/26(金) 00:21:48.90ID:7237jhqNa >>884
どの程度の性能を求めてるか次第だと思うよ
時刻取得でも clock_gettime と gettimeofday でうるさく言う人もいるしね
トレースログみたいに高速かつ大容量を考えるなら
ログがN件入るバッファを複数持っておいて
情報は基本バイナリで登録、ローテート時にファイル書き出し、
別途パーサーを作る、とかかな
まあそこまでする必要のあるソフトなんて稀だろうけど
どの程度の性能を求めてるか次第だと思うよ
時刻取得でも clock_gettime と gettimeofday でうるさく言う人もいるしね
トレースログみたいに高速かつ大容量を考えるなら
ログがN件入るバッファを複数持っておいて
情報は基本バイナリで登録、ローテート時にファイル書き出し、
別途パーサーを作る、とかかな
まあそこまでする必要のあるソフトなんて稀だろうけど
888デフォルトの名無しさん (ワッチョイ 5b30-7TBo)
2018/10/26(金) 09:13:38.45ID:hAbqlzFH0 ポインタをややこしくしてるのは
int* a;
の a がポインタ変数で
a[10]
という配列がある時、a と書くだけで配列の先頭アドレスの別の書き方として許されてるがいけないんじゃないのかな?って思ったんだけど合ってる?
配列の先頭アドレスは常に&a[0]って書くようにするようにすればポインタのごちゃごちゃって解消されない?
int* a;
の a がポインタ変数で
a[10]
という配列がある時、a と書くだけで配列の先頭アドレスの別の書き方として許されてるがいけないんじゃないのかな?って思ったんだけど合ってる?
配列の先頭アドレスは常に&a[0]って書くようにするようにすればポインタのごちゃごちゃって解消されない?
889デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/26(金) 09:51:00.93ID:2eu7c7Ria Cだったら配列なんてものがあると思わん方がいいかもね
入門書的にはポインタより配列の紹介が先に書いてあったりするが、確かに問題はある。
入門書的にはポインタより配列の紹介が先に書いてあったりするが、確かに問題はある。
890デフォルトの名無しさん (ブーイモ MMbf-+toU)
2018/10/26(金) 10:26:55.40ID:8auh1e/NM >>888
あと、p[i] も禁止して、*(p+i) を強制しないとだめ。
あと、p[i] も禁止して、*(p+i) を強制しないとだめ。
891デフォルトの名無しさん (ワッチョイ 1323-7TBo)
2018/10/26(金) 10:54:29.59ID:cduwye+60892デフォルトの名無しさん (ワッチョイ 7312-SUE8)
2018/10/26(金) 11:21:53.96ID:E0U+wNaz0 違う
違うナァ
機械語→BASICのころには
「変数って何だ?!!」として変数なる概念をなかなか理解できなかったやつがいた……
と言う話を聞いてる
今の初心者の一部もなじめないヤツが一定数いる
言ってしまえばC言語は「変数指向」のプログラミング言語だ
オブジェクト指向や関数型に並び立つような、な
気付いてないが現代プログラミング言語は「変数指向」で出来てる
そしてどんな思想であろうとどんだけ説明してもその概念の片鱗すら理解出来ないヤツはいる
なので「変数」概念の理解に原理原則なんて存在しない
一発で理解出来るか素直に受け入れるかのどちらかしかない
それ以上説明しても意味が無い、という人物は少数だがいる
これはしょうがない
違うナァ
機械語→BASICのころには
「変数って何だ?!!」として変数なる概念をなかなか理解できなかったやつがいた……
と言う話を聞いてる
今の初心者の一部もなじめないヤツが一定数いる
言ってしまえばC言語は「変数指向」のプログラミング言語だ
オブジェクト指向や関数型に並び立つような、な
気付いてないが現代プログラミング言語は「変数指向」で出来てる
そしてどんな思想であろうとどんだけ説明してもその概念の片鱗すら理解出来ないヤツはいる
なので「変数」概念の理解に原理原則なんて存在しない
一発で理解出来るか素直に受け入れるかのどちらかしかない
それ以上説明しても意味が無い、という人物は少数だがいる
これはしょうがない
893デフォルトの名無しさん (ワッチョイ c3e7-t6cX)
2018/10/26(金) 12:12:26.16ID:k/2ANTBE0 なんかの本に
int *a;
と宣言してあったら、式の中で
*a
と書かれたものが整数であると的確に説明してあった。
int *a;
と宣言してあったら、式の中で
*a
と書かれたものが整数であると的確に説明してあった。
894デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/26(金) 13:39:36.53ID:T+aWo9i70 >>893
それが分かりやすいかはちょっと微妙じゃね。
int i; ならその領域は確保されてるけど、int *a; と宣言した *a は型としては i と同じだけどそのままで i と同じように使えるわけじゃないし。
ポインタで迷うレベルに通じる話じゃなさそうだし、これが通じるならポインタで迷ってないんじゃね。
それが分かりやすいかはちょっと微妙じゃね。
int i; ならその領域は確保されてるけど、int *a; と宣言した *a は型としては i と同じだけどそのままで i と同じように使えるわけじゃないし。
ポインタで迷うレベルに通じる話じゃなさそうだし、これが通じるならポインタで迷ってないんじゃね。
895デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/26(金) 14:13:47.90ID:ScQN6FWl0 じゃんね?
896デフォルトの名無しさん (ワッチョイ 9764-Ed1r)
2018/10/26(金) 14:14:23.54ID:ScQN6FWl0 あ んじゃね か。
馬鹿だった。
馬鹿だった。
897デフォルトの名無しさん (アウアウウー Sa6d-eYkk)
2018/10/26(金) 15:09:00.24ID:WWw+Yxena >>892
マシン語でもレジスタが変数みたいなもんだろ
マシン語でもレジスタが変数みたいなもんだろ
898デフォルトの名無しさん (スプッッ Sd9b-UHBe)
2018/10/26(金) 17:09:00.87ID:JLzES5S7d これを実行するときに、argcに3が入っているとsegmentation faultとなってしまうのですがなぜだかわかりますか?
OSはopensuseでコンパイラはccです
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
int cmp=0;
char *s1=argv[1],*s2=argv[2];
cmp=strcmp(s1,s2);
if(argc!=3){
fprintf(stderr,"usage:%s[string1][string2]\n",argv[0]);
return -1;
}
if(cmp<0){
printf("%d : %s\n",strlen(s2),argv[2]);
}
else{
printf("%d : %s\n",strlen(s1),argv[1]);
}
return 0;
}
OSはopensuseでコンパイラはccです
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
int cmp=0;
char *s1=argv[1],*s2=argv[2];
cmp=strcmp(s1,s2);
if(argc!=3){
fprintf(stderr,"usage:%s[string1][string2]\n",argv[0]);
return -1;
}
if(cmp<0){
printf("%d : %s\n",strlen(s2),argv[2]);
}
else{
printf("%d : %s\n",strlen(s1),argv[1]);
}
return 0;
}
899デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/26(金) 17:14:58.46ID:8JGFizbaa >>898
argc調べる前にstrcmp()するのは変だろう。
argc調べる前にstrcmp()するのは変だろう。
900デフォルトの名無しさん (ガラプー KKa3-XSGY)
2018/10/26(金) 17:17:49.51ID:BF6Z7BaaK 組み込みでsicpて読む価値あんの?
901デフォルトの名無しさん (スプッッ Sd9b-UHBe)
2018/10/26(金) 17:21:54.90ID:JLzES5S7d >>899
それを直したらsegmentation faultしなくなったんですけど、理由が知りたくて…
それを直したらsegmentation faultしなくなったんですけど、理由が知りたくて…
902デフォルトの名無しさん (アウアウエー Sa93-S3gW)
2018/10/26(金) 18:06:31.80ID:XW9xoDKGa >>901
たとえばargv[2]が空だったらstrcmpの引数は何になるんだという
たとえばargv[2]が空だったらstrcmpの引数は何になるんだという
903デフォルトの名無しさん (ワッチョイ 73d5-nh9x)
2018/10/26(金) 18:16:18.06ID:T+aWo9i70 >>902
argc が 3 なら argv[2] は何か入ってるだろ
argc が 3 なら argv[2] は何か入ってるだろ
904デフォルトの名無しさん (ブーイモ MMbf-+toU)
2018/10/26(金) 18:20:05.25ID:pYWWPyQzM どうでもいいけどargvが3じゃなきゃいけないのにそのusageはどうよ
905デフォルトの名無しさん (ワッチョイ eb72-UHBe)
2018/10/26(金) 18:25:03.95ID:HaLyiKNA0906デフォルトの名無しさん (アウアウウー Sa5d-hDoO)
2018/10/26(金) 18:25:43.74ID:8JGFizbaa >>901
引数がなかったり一つだったりした時に先に無条件にstrcmp()をしてしまうと両方または一方が不定値やNULLになるので落ちたり変な動きになったりする。
引数がなかったり一つだったりした時に先に無条件にstrcmp()をしてしまうと両方または一方が不定値やNULLになるので落ちたり変な動きになったりする。
レス数が900を超えています。1000を超えると表示できなくなるよ。
