↑
次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。
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言語なら俺に聞け 149
https://mevius.5ch.net/test/read.cgi/tech/1540731704/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 150
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウクー MM57-IE4z)
2019/02/06(水) 13:39:03.21ID:c4bnQMl3M2デフォルトの名無しさん (アウアウクー MMb3-IE4z)
2019/02/06(水) 13:43:35.56ID:c4bnQMl3M ミスってる
!extend:checked:vvvvv:1000:512
を書き込み内容にするためにもう一行書かなければならないのね
!extend:checked:vvvvv:1000:512
を書き込み内容にするためにもう一行書かなければならないのね
3デフォルトの名無しさん (ワッチョイ df52-5rgS)
2019/02/06(水) 13:53:52.35ID:bwpbLxE30 そうしろって書いてあるじゃん
4デフォルトの名無しさん (ワッチョイ 7fa5-se+6)
2019/02/06(水) 14:08:04.08ID:6cW+g5Qj0 違うな
シェバンに類似する特殊な一行目は書き込みすると失われる、だろ
だから次の手順説明のために同じものをもう一行増やす
しかも「必ず1行目に入るように」って書いてあるから二行に増やしても先頭に空白行があると受理されないハズだ
もう一行書くだけじゃダメだからな
シェバンに類似する特殊な一行目は書き込みすると失われる、だろ
だから次の手順説明のために同じものをもう一行増やす
しかも「必ず1行目に入るように」って書いてあるから二行に増やしても先頭に空白行があると受理されないハズだ
もう一行書くだけじゃダメだからな
5デフォルトの名無しさん (ワッチョイ ff63-S1Ul)
2019/02/06(水) 14:19:35.82ID:NIgQMFwf0 >>1 乙です、ドンマイ
6デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 16:08:05.73ID:1SbGZlcV0 では、続きをしようか
986 名前:デフォルトの名無しさん (ワッチョイ df01-vS77)[sage] 投稿日:2019/02/06(水) 04:57:27.49 ID:eUM592Vs0
ループから抜けるときに goto使ったらダメなんですか?
for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:
こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。
どなたか納得するような理由をご存知でしょうか?
986 名前:デフォルトの名無しさん (ワッチョイ df01-vS77)[sage] 投稿日:2019/02/06(水) 04:57:27.49 ID:eUM592Vs0
ループから抜けるときに goto使ったらダメなんですか?
for (...) {
for (...) {
if (...) goto LOOP_EXIT;
}
}
LOOP_EXIT:
こういう感じで書いたら先輩に怒られました。
フラグ見てループ抜けるように修正しろと。
指示されたので従いますけど、どうしてダメなのかよく分かりません。
どなたか納得するような理由をご存知でしょうか?
7デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 16:09:43.98ID:1SbGZlcV0 若き日の俺は、gotoの他にフラグも無闇に使うなと教わったものだが
フラグはいいってことになったのは、いつからだ? どういう経緯でだ?
フラグはいいってことになったのは、いつからだ? どういう経緯でだ?
8デフォルトの名無しさん (ワッチョイ df52-S1Ul)
2019/02/06(水) 16:21:58.32ID:bwpbLxE30 Cにはラベル付きbreak文って無いんだね初めて知った
Javaのラベル付きbreak文
loop_exit: for(...) {
for(...) {
if (...) {
break loop_exit;
}
}
}
まぁJavaでもあまり使ったことないけど…。
Javaのラベル付きbreak文
loop_exit: for(...) {
for(...) {
if (...) {
break loop_exit;
}
}
}
まぁJavaでもあまり使ったことないけど…。
9デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 16:41:15.95ID:1SbGZlcV0 #define break goto
みたいなしょーもないことしても本質的に何も変わっちゃいねえ
みたいなしょーもないことしても本質的に何も変わっちゃいねえ
10デフォルトの名無しさん (アウアウカー Sa53-MNmT)
2019/02/06(水) 18:02:39.46ID:CtZpHCTya gotoよりフラグがやばいよな。
11デフォルトの名無しさん (ワッチョイ ff02-vS77)
2019/02/06(水) 19:00:59.18ID:jnwpwdAT0 goto があっても
いいじゃないか
C言語だもの
いいじゃないか
C言語だもの
12デフォルトの名無しさん (アウアウクー MMb3-rTH6)
2019/02/06(水) 19:48:43.15ID:KUGC24GrM goto文そのものが悪いわけではない。いまだにgoto文の使用そのものがよくないというやつらのせいでおかしくなっている。
goto文で前のif文内に飛んでみたり、ループのなかに飛んでみたりと、乱用して人間には理解しづらいスパゲティプログラムを作るなという話なのに。
continue文だって実体はgoto文で、コンピュータにとってはメモリ上のマシン語を順番に実行しない場合はすべてメモリのアドレスのジャンプでgoto文。
goto文で前のif文内に飛んでみたり、ループのなかに飛んでみたりと、乱用して人間には理解しづらいスパゲティプログラムを作るなという話なのに。
continue文だって実体はgoto文で、コンピュータにとってはメモリ上のマシン語を順番に実行しない場合はすべてメモリのアドレスのジャンプでgoto文。
13デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/06(水) 20:21:21.69ID:WRu6z6Oe0 センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
どんな計測結果が得られるか事前には分からないため文字列のサイズは関数内で
mallocを使ってリサイズする予定。
このとき測定結果が格納された文字列を関数から渡してもらうのに、
a) 引数に文字列のポインタのポインタを渡す
void sokutei( char** buff )
{
・・・
*buff = (char*)malloc( sizeof(char)*length );
・・・
}
と、
b) 関数の返値に文字列のポインタを指定する
char* sokutei(void)
{
・・・
char* buff = (char*)malloc( sizeof(char)*length );
・・・
return (buff);
}
の二つの方法があるけど
一般的にはどっちの方法がお薦め?
どんな計測結果が得られるか事前には分からないため文字列のサイズは関数内で
mallocを使ってリサイズする予定。
このとき測定結果が格納された文字列を関数から渡してもらうのに、
a) 引数に文字列のポインタのポインタを渡す
void sokutei( char** buff )
{
・・・
*buff = (char*)malloc( sizeof(char)*length );
・・・
}
と、
b) 関数の返値に文字列のポインタを指定する
char* sokutei(void)
{
・・・
char* buff = (char*)malloc( sizeof(char)*length );
・・・
return (buff);
}
の二つの方法があるけど
一般的にはどっちの方法がお薦め?
14デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 20:30:53.85ID:1SbGZlcV015デフォルトの名無しさん (ワッチョイ ffab-vS77)
2019/02/06(水) 20:31:48.22ID:1SbGZlcV0 >>13
別にどっちでも
別にどっちでも
16デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/06(水) 20:34:02.27ID:WRu6z6Oe0 >>15
そ、そう・・・
そ、そう・・・
17デフォルトの名無しさん (ワッチョイ df7b-se+6)
2019/02/06(水) 20:50:04.50ID:y48wBDHW0 >>13
> センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
これ自体が糞。
計測値は生で保持して、表示する時だけ文字列に変更しろ。
そうすればprintfだけで行けるだろ。
無駄に可変長のバッファなんて持とうとするから無駄に面倒になる。
初心者だから分からないのだと思うが、そもそも複雑にならないように全体像をまず組むんだよ。
> センサーで取得した計測値を数値では無く文字列で返す関数を作ろうと思ってる。
これ自体が糞。
計測値は生で保持して、表示する時だけ文字列に変更しろ。
そうすればprintfだけで行けるだろ。
無駄に可変長のバッファなんて持とうとするから無駄に面倒になる。
初心者だから分からないのだと思うが、そもそも複雑にならないように全体像をまず組むんだよ。
18デフォルトの名無しさん (アウアウカー Sa53-MNmT)
2019/02/06(水) 21:37:14.88ID:CtZpHCTya voidにするならポインタ返した方がいいと思うよ。
正しさでいうと、既存のライブラリ使ってシリアライズするのが正しい。
正しさでいうと、既存のライブラリ使ってシリアライズするのが正しい。
19デフォルトの名無しさん (ワッチョイ df01-vS77)
2019/02/06(水) 22:39:39.17ID:eUM592Vs0 関数の戻り値は処理の成否のみを返す。
正常終了なら0、異常終了なら非ゼロ。
入出力は引数で渡す。
と、決めて統一するのが良いと思う。
正常終了なら0、異常終了なら非ゼロ。
入出力は引数で渡す。
と、決めて統一するのが良いと思う。
20デフォルトの名無しさん (ワッチョイ 7fab-qf6r)
2019/02/06(水) 22:43:12.36ID:WRu6z6Oe0 助言ありがとう
確かに関数の戻り値は処理の成否のみに限定するのはスッキリしていいかも
> 文字列で返すのが糞
確かにその通りで(;^ω^)
確かに関数の戻り値は処理の成否のみに限定するのはスッキリしていいかも
> 文字列で返すのが糞
確かにその通りで(;^ω^)
21デフォルトの名無しさん (ワッチョイ df01-vS77)
2019/02/06(水) 23:32:22.18ID:eUM592Vs0 重要なのは統一するってこと。
標準ライブラリには戻り値に二つの意味を持たせているのが多いから、個人的に好きじゃない。
fopen() 成功時はファイルポインタを返し、失敗時はNULLを返す。
strtol() 成功時は変換結果を返し、失敗時は0を返す。
これじゃ変換結果が0なのか、失敗して0なのか分からない。
で、errnoを見ろってことになってる。
なんでこうなってるかというと、戻り値に処理の成否と結果の二つを持たせているから。
だったら、分ければいいじゃんって話。
標準ライブラリには戻り値に二つの意味を持たせているのが多いから、個人的に好きじゃない。
fopen() 成功時はファイルポインタを返し、失敗時はNULLを返す。
strtol() 成功時は変換結果を返し、失敗時は0を返す。
これじゃ変換結果が0なのか、失敗して0なのか分からない。
で、errnoを見ろってことになってる。
なんでこうなってるかというと、戻り値に処理の成否と結果の二つを持たせているから。
だったら、分ければいいじゃんって話。
22デフォルトの名無しさん (ワッチョイ df7b-se+6)
2019/02/06(水) 23:38:05.98ID:y48wBDHW0 >>20
多分相場が分かってないのだと思うけど、
正しく初心者の自覚があるのなら、ある程度縛りプレイで行った方がいい。
C言語なんて現役で50年来てるし、そのセンサーだって民生品なら誰かが同様に使ってる。
それでもそれ用のライブラリがないのなら、それはそもそもそういう使い方をする奴がこれまで居なかったということ。
つまり、そのやり方が間違っている、と見ていい。
初心者が自前でライブラリみたいな物をいきなり組まなければならない時点で設計が間違ってる。
それは君らがよく誤用している「無能な働き者」に該当する。
(ただし繰り返すが、Webでの多くは誤用されているので注意)
多分相場が分かってないのだと思うけど、
正しく初心者の自覚があるのなら、ある程度縛りプレイで行った方がいい。
C言語なんて現役で50年来てるし、そのセンサーだって民生品なら誰かが同様に使ってる。
それでもそれ用のライブラリがないのなら、それはそもそもそういう使い方をする奴がこれまで居なかったということ。
つまり、そのやり方が間違っている、と見ていい。
初心者が自前でライブラリみたいな物をいきなり組まなければならない時点で設計が間違ってる。
それは君らがよく誤用している「無能な働き者」に該当する。
(ただし繰り返すが、Webでの多くは誤用されているので注意)
23デフォルトの名無しさん (アウアウカー Sa49-3h0o)
2019/02/07(木) 00:06:12.90ID:AP44nO75a 副作用がメインならともかく、欲しいものを素直にreturnすればいいよ。
24デフォルトの名無しさん (ワッチョイ 495f-QV4H)
2019/02/07(木) 00:29:49.70ID:92YFdzoB0 strtol()は変換できなかった時の戻り値が曖昧だから0やらLONG_MAX、LONG_MINに固定してるだけだと思ってたんだけど
25デフォルトの名無しさん (ワッチョイ 82a5-l1YC)
2019/02/07(木) 00:29:57.91ID:xA+ztU7B0 バカかコイツラNaNが出たらどーすんだよ
文字列が正しいだろJK
文字列が正しいだろJK
26デフォルトの名無しさん (エムゾネ FF22-NjBW)
2019/02/07(木) 05:23:13.49ID:TUp6R+x+F >>20
C言語の戻り値って、エラーのみで返して、正の値って無いから、C++だな、C++言語に行くように
C言語の戻り値って、エラーのみで返して、正の値って無いから、C++だな、C++言語に行くように
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- パワフル女性世界3位に高市首相 米誌フォーブス選出 [蚤の市★]
- 【米FRB】0.25%利下げ決定 3会合連続、雇用下支え [蚤の市★]
- テレ朝本社から社外スタッフの男性が転落し死亡 テレビ朝日がコメント [ひかり★]
- 【S.RIDE】「忘年会の幹事ずるい」 ソニー系配車アプリの広告が物議…… 運営が謝罪「配慮に欠ける不適切な表現」掲出終了に [ぐれ★]
- アイヌ民族の「戸籍簿」がヤフオクで落札 団体「人権無視」と憤り [蚤の市★]
- 「身を切る改革」どこへ? 維新「身内」への公金支出、地方でも続々 [蚤の市★]
- 高市「野党はもう債権とか為替の話はしないで!よく分からないから答えない!」 [884040186]
- 豚汁の弱点
- 人生がつまらんやつ、130円で大根買え。
- 【悲報】教育ママ「ギャオオオオオン!息子が大麻吸ってるのお!!」⇨中3の息子を警察に突き出し全てを終わらせる [455031798]
- 【画像】東京都民「助けて!満員電車もう無理いいぃぃいいぃぃぃいいいいいぃ😭」!!!! [732289945]
- 【堂上隼人】ソフトバンク幹部「よし更生してる」→現在までに逮捕12回、レイプ被害者15人
