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
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa592デフォルトの名無しさん (ワッチョイ dfb3-EA7j)
2018/10/13(土) 21:16:47.20ID:f9khLXsZ0 >>588
その例みたいにサイズが変わらないなら直接書き換えることは可能
その例みたいにサイズが変わらないなら直接書き換えることは可能
593デフォルトの名無しさん (ワッチョイ 674f-gma9)
2018/10/13(土) 21:39:37.11ID:bu3lDLSN0594デフォルトの名無しさん (アウアウエー Sa9f-M9VF)
2018/10/13(土) 22:17:43.48ID:2jvN7D8ra >>591
voidがねえし
voidがねえし
595デフォルトの名無しさん (アウアウウー Saeb-zIC7)
2018/10/13(土) 23:02:07.79ID:3osNA+cUa >>588
その方向しかない
その方向しかない
596デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/13(土) 23:32:20.23ID:LnxaR5jgM 「特定行」の定義は?
597デフォルトの名無しさん (ワッチョイ bf3a-DKnb)
2018/10/13(土) 23:33:28.10ID:LwGfYqlW0 >>588
UNIXならmmap()、WindowsならCreateFileMapping()を使ってファイルの内容をメモリにマップするとか。
UNIXならmmap()、WindowsならCreateFileMapping()を使ってファイルの内容をメモリにマップするとか。
598デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/13(土) 23:34:05.47ID:L3Dj2/gz0 書いてあることをすべてCでやりたいなら
コレでいける
ぜんぶメモリにいれる必要はない
@ 入力ファイル(01.txt)をリードオンリーでオープン
A テンポラリファイル(出力ファイル)をmktemp()で取得
B Aで取得した出力ファイルをライトオンリーでオープン
C 1行ずつ読み込んで1行ずつ書きこみ(>>591)
D 入力ファイルと出力ファイルをクローズ
E 入力ファイルをremove()で削除
F 出力ファイルをrename()で入力ファイルに移動
ものすごい大きいファイルが入力ファイルになった場合対応できない
コレでいける
ぜんぶメモリにいれる必要はない
@ 入力ファイル(01.txt)をリードオンリーでオープン
A テンポラリファイル(出力ファイル)をmktemp()で取得
B Aで取得した出力ファイルをライトオンリーでオープン
C 1行ずつ読み込んで1行ずつ書きこみ(>>591)
D 入力ファイルと出力ファイルをクローズ
E 入力ファイルをremove()で削除
F 出力ファイルをrename()で入力ファイルに移動
ものすごい大きいファイルが入力ファイルになった場合対応できない
599デフォルトの名無しさん (ワッチョイ 0761-zIC7)
2018/10/14(日) 01:05:48.11ID:fk9HLJgw0 オフセットズレが発生するファイルの更新はファイルの全面書き出し以外に方法はない
600デフォルトの名無しさん (ワッチョイ 7f81-VhFj)
2018/10/14(日) 01:17:59.64ID:Xia0NB2F0 ファイル後ろの方だと大きなファイルでも部分的な書き直しで済むんだよね
601588 (ワッチョイ 27cc-smg0)
2018/10/14(日) 02:24:40.11ID:bBeuqmk90602デフォルトの名無しさん (ワッチョイ dfd2-7vHE)
2018/10/14(日) 02:31:42.91ID:VGDv0f/D0 なんとなくsedで済む話な気がする
603デフォルトの名無しさん (ブーイモ MM0b-ZPHe)
2018/10/14(日) 02:52:55.98ID:xvapfCASM >>601
ファイル入出力ストリームなら必要
あの例は標準入出力を指定してるだけ
すべて触る必要があるかはデータ構造次第
更新するデータ域をブロック分割、
ブロックマップをメタ管理とかは
バイナリなら一般的な手法
テキストだとスペースパディングで
ブロックやエントリ管理できそうだが
そんなことやってる奴は見たことない
ファイル入出力ストリームなら必要
あの例は標準入出力を指定してるだけ
すべて触る必要があるかはデータ構造次第
更新するデータ域をブロック分割、
ブロックマップをメタ管理とかは
バイナリなら一般的な手法
テキストだとスペースパディングで
ブロックやエントリ管理できそうだが
そんなことやってる奴は見たことない
604デフォルトの名無しさん (ワッチョイ bf9f-4Hut)
2018/10/14(日) 03:26:16.87ID:rKkXAekW0 >>601
stdin から読むようになってるからシェルのコマンドラインからならリダイレクトで読ませれば良いだけだよ。
stdin から読むようになってるからシェルのコマンドラインからならリダイレクトで読ませれば良いだけだよ。
605デフォルトの名無しさん (ワッチョイ a77e-4Hut)
2018/10/14(日) 06:21:09.87ID:1QMkRc1k0 cat 01.txt | sed s/b=1/b=0/
>>594
スタートアップから渡される argc, argv を「使わない」のだから void なしが妥当なのでは?
スタートアップから渡される argc, argv を「使わない」のだから void なしが妥当なのでは?
607デフォルトの名無しさん (ワッチョイ 674f-gma9)
2018/10/14(日) 09:33:04.94ID:p/Li638e0608デフォルトの名無しさん (ワッチョイ a77e-4Hut)
2018/10/14(日) 09:38:03.86ID:1QMkRc1k0609デフォルトの名無しさん (ワッチョイ a77e-4Hut)
2018/10/14(日) 09:39:21.07ID:1QMkRc1k0 例の半角野郎がまた湧いたか、しつけーな
何が上司だ、ここはム板だぼけ
何が上司だ、ここはム板だぼけ
610デフォルトの名無しさん (ワッチョイ df12-gma9)
2018/10/14(日) 10:56:40.88ID:8TmCYtNe0 >>606
引数 void って初めて見たぞ。文法的にありなのかこれ?
引数 void って初めて見たぞ。文法的にありなのかこれ?
611デフォルトの名無しさん (ブーイモ MM0b-SHtH)
2018/10/14(日) 10:58:50.59ID:br2DRGrhM 未だ許されないvoidおじ
612デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/14(日) 12:19:08.18ID:vwPmx6lGM 特定行の書き換えですが
・bの値を反転させたい(0なら1、1なら0)
・b=の行は複数出現する可能性がある()
・複数出現した場合は一番最後に出現した行の値を反転の対象にしたい
・書き換え後はb=の行は1行だけにしたい
・書き換え後はできれば
a=...
b=...
c=...
な感じでソートしててほしい
これはC言語で出来ますか?
どうやったらいいでしょうか?
・bの値を反転させたい(0なら1、1なら0)
・b=の行は複数出現する可能性がある()
・複数出現した場合は一番最後に出現した行の値を反転の対象にしたい
・書き換え後はb=の行は1行だけにしたい
・書き換え後はできれば
a=...
b=...
c=...
な感じでソートしててほしい
これはC言語で出来ますか?
どうやったらいいでしょうか?
613デフォルトの名無しさん (ワッチョイ 674f-gma9)
2018/10/14(日) 13:29:01.06ID:p/Li638e0 >>612
「出来る/出来ない」なら、そりゃC言語で「出来ない」って事ははほぼ全ての事例で無いよ。
どうやったらいいか、なら、その場合は俺ならExcel使うね。規模的に無理ならシェルスクリプトを使う。
何でもCでやればいいわけではない。
そのお題を実際にCでやる事なんて無いから、練習用なら意味無いし、
本番としてそれをCでやる気なら、間違ってるから止めとけ。
「出来る/出来ない」なら、そりゃC言語で「出来ない」って事ははほぼ全ての事例で無いよ。
どうやったらいいか、なら、その場合は俺ならExcel使うね。規模的に無理ならシェルスクリプトを使う。
何でもCでやればいいわけではない。
そのお題を実際にCでやる事なんて無いから、練習用なら意味無いし、
本番としてそれをCでやる気なら、間違ってるから止めとけ。
614デフォルトの名無しさん (ワッチョイ c78a-ScHU)
2018/10/14(日) 13:32:34.90ID:oxI7rgHj0615デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/14(日) 14:42:07.27ID:Q3eQCyRU0 コードの書き方みたいなこんなもんを上司に聞けとか
よくわからんが、協力会社で入ってるリーダーかなんかか。。。
すげえな、そういった会社の文化をオレは知らないが
そもそもそんなとこが未教育なゴミつれてきたら大問題だからな
必死になるのも分かるわ
で、だれでもすぐ分かってるコマンド書いてドヤ顔して低学歴もいるしな
よくわからんが、協力会社で入ってるリーダーかなんかか。。。
すげえな、そういった会社の文化をオレは知らないが
そもそもそんなとこが未教育なゴミつれてきたら大問題だからな
必死になるのも分かるわ
で、だれでもすぐ分かってるコマンド書いてドヤ顔して低学歴もいるしな
616デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/14(日) 14:43:20.19ID:Q3eQCyRU0 この程度ならCで書いても
普通にCで書く練習になる
普通にCで書く練習になる
617デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/14(日) 14:46:42.49ID:vwPmx6lGM Excelで手作業とかは論外です
シェル芸でもいいです
誰かできませんか?
シェル芸でもいいです
誰かできませんか?
618デフォルトの名無しさん (ワッチョイ bfd5-KnhR)
2018/10/14(日) 14:48:14.42ID:b97yHnkE0 >>617
どこまで書いたのか、現状のコードを貼ってみなよ
どこまで書いたのか、現状のコードを貼ってみなよ
619デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/14(日) 14:48:35.94ID:Q3eQCyRU0 sedとsort使えばいい
620デフォルトの名無しさん (ワッチョイ 674f-gma9)
2018/10/14(日) 15:12:45.83ID:p/Li638e0621デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/14(日) 16:43:39.96ID:vwPmx6lGM ロジックだけでも教えてください
622デフォルトの名無しさん (ワッチョイ 6735-4Hut)
2018/10/14(日) 17:39:13.57ID:+7qWkF0t0 こんな感じでどうかな
・空行はそのまま出力されてしまう
・代入文は1行に1文のみで X=n の形式
が前提だけど
awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' a | sort -u
・空行はそのまま出力されてしまう
・代入文は1行に1文のみで X=n の形式
が前提だけど
awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' a | sort -u
623デフォルトの名無しさん (ワッチョイ 6735-4Hut)
2018/10/14(日) 17:41:50.05ID:+7qWkF0t0 あ、a はファイルね
624デフォルトの名無しさん (ワッチョイ 6735-4Hut)
2018/10/14(日) 17:46:59.25ID:+7qWkF0t0 -u はいらんかったな
625デフォルトの名無しさん (ワッチョイ 67b3-wEhW)
2018/10/14(日) 17:52:44.40ID:El+yY4uS0 >>621
tacで逆順出力、sedで初回マッチのみ置換、sortでソート出力
tacで逆順出力、sedで初回マッチのみ置換、sortでソート出力
626デフォルトの名無しさん (ワッチョイ 6735-4Hut)
2018/10/14(日) 18:07:48.33ID:+7qWkF0t0 tac なんてコマンドがあるんだな、サンキュー
sed 使った場合、0と1の交換と、初回マッチ分以外は出力しないようにするの、難しくない?
sed 使った場合、0と1の交換と、初回マッチ分以外は出力しないようにするの、難しくない?
627デフォルトの名無しさん (ワッチョイ 7f80-WnU0)
2018/10/14(日) 18:31:52.87ID:hWarSIQ50 Ruby で作った
text = File.read 'data.txt'
ary = [ ]; index = [ ]
text.each_line.with_index do | line, idx | # 各行・添字
line.chomp! # 末尾の改行を削除する
ary.push line # 各行を配列に入れる
# 先頭文字列が、b= なら、添字を配列に入れる
index.push idx if line.start_with? 'b='
end
return if index.empty? # 空配列なら処理なし
first = true # 最初の1回だけ処理する
index.reverse!.each do | num | # 後ろから削除するために、反転する
if first # 最初の1回だけ
first = false
case ary[ num ][ 2 ] # 3文字目
when "0" then ary[ num ][ 2 ] = "1"
when "1" then ary[ num ][ 2 ] = "0"
else # 処理なし
end
else # 2回目以降は削除する
ary.delete_at num
end
end
puts ary
text = File.read 'data.txt'
ary = [ ]; index = [ ]
text.each_line.with_index do | line, idx | # 各行・添字
line.chomp! # 末尾の改行を削除する
ary.push line # 各行を配列に入れる
# 先頭文字列が、b= なら、添字を配列に入れる
index.push idx if line.start_with? 'b='
end
return if index.empty? # 空配列なら処理なし
first = true # 最初の1回だけ処理する
index.reverse!.each do | num | # 後ろから削除するために、反転する
if first # 最初の1回だけ
first = false
case ary[ num ][ 2 ] # 3文字目
when "0" then ary[ num ][ 2 ] = "1"
when "1" then ary[ num ][ 2 ] = "0"
else # 処理なし
end
else # 2回目以降は削除する
ary.delete_at num
end
end
puts ary
628デフォルトの名無しさん (ワッチョイ e764-66c6)
2018/10/15(月) 00:34:33.53ID:FbFcpKzK0 Rubyもいいけど、こういう小規模な操作にはシェルスクリプトとかが適してる気がする。
629デフォルトの名無しさん (ワッチョイ 7f81-VhFj)
2018/10/15(月) 02:17:02.27ID:Obfj9PeS0 >>612の内容だけど、誰も聞かないのであえて聞くけど
b=以外は何も加工せずに複数あればそのまま出力で良いのか?
その場合、ソートは=の右側の数値順にするのか、文字コード順にするのかか
データによっては、a=、c=、d=の行が多数出力される中でb=の行だけ1行になる
ってことで良いのかな?
b=以外は何も加工せずに複数あればそのまま出力で良いのか?
その場合、ソートは=の右側の数値順にするのか、文字コード順にするのかか
データによっては、a=、c=、d=の行が多数出力される中でb=の行だけ1行になる
ってことで良いのかな?
630デフォルトの名無しさん (ワッチョイ 07e0-SmB1)
2018/10/15(月) 03:03:29.36ID:E6pr56BO0 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
631デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/15(月) 23:43:48.26ID:KnJWry7m0 @ [出力A] a=とc=を抽出(使うコマンド:grep)
A [出力B] b=0の1〜末尾-1行を抽出 (使うコマンド:grep|head)
B [出力C] b=1の1〜末尾-1行を抽出 (使うコマンド:grep|head)
C [出力D] b=0の末尾行を抽出し置換 (使うコマンド:grep|tail|sed)
D [出力E] b=1の末尾行を抽出し置換 (使うコマンド:grep|tail|sed)
E [出力F] [出力B]、[出力E]、[出力C]、[出力D]コンカチネーションしユニークにする (使うコマンド:cat|uniq)
F 出力結果 [出力A]と[出力F]をコンカチネーションしソート(使うコマンド:cat|sort)
とりあえずコレでいけるハズ
あとはがんばりなさい
A [出力B] b=0の1〜末尾-1行を抽出 (使うコマンド:grep|head)
B [出力C] b=1の1〜末尾-1行を抽出 (使うコマンド:grep|head)
C [出力D] b=0の末尾行を抽出し置換 (使うコマンド:grep|tail|sed)
D [出力E] b=1の末尾行を抽出し置換 (使うコマンド:grep|tail|sed)
E [出力F] [出力B]、[出力E]、[出力C]、[出力D]コンカチネーションしユニークにする (使うコマンド:cat|uniq)
F 出力結果 [出力A]と[出力F]をコンカチネーションしソート(使うコマンド:cat|sort)
とりあえずコレでいけるハズ
あとはがんばりなさい
632デフォルトの名無しさん (ワッチョイ c723-M9VF)
2018/10/15(月) 23:53:21.52ID:9a9m7auH0 sedだけでやってみてくれや
633デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/15(月) 23:59:03.51ID:KnJWry7m0 だけでやるとはオレは一言もいってない
使うコマンドを限定した覚えはない
使うコマンドを限定した覚えはない
634612 (ワイモマー MMff-ytAd)
2018/10/16(火) 00:22:11.79ID:NB8XYwuTM ソートはa,b,c...順です
b=以外は重複を許可します(ソート後の出現順は考慮しなくてよい)
(処理例
入力データ
c=0
a=1
b=1
c=1
a=0
b=0
出力データ
a=1
a=0
b=1
c=0
c=1
b=以外は重複を許可します(ソート後の出現順は考慮しなくてよい)
(処理例
入力データ
c=0
a=1
b=1
c=1
a=0
b=0
出力データ
a=1
a=0
b=1
c=0
c=1
635デフォルトの名無しさん (アウアウエー Sa9f-M9VF)
2018/10/16(火) 00:40:38.52ID:xERlP6Woa チューリングマシンならなんでもできて当たり前なんや
636デフォルトの名無しさん (ワッチョイ e764-66c6)
2018/10/16(火) 00:47:20.35ID:HI3tJEA90 Cのプリプロセッサも計算完備だしな。誰かがcppでフィボナッチ数列出力してたな そういや
637デフォルトの名無しさん (ワッチョイ 7f81-VhFj)
2018/10/16(火) 00:55:44.02ID:gETK/lfa0 こんなんではどうかな
sed -e ":l; N; s/\nb=[01]\n/\n/1; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
sed -e ":l; N; s/\nb=[01]\n/\n/1; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
638デフォルトの名無しさん (ワッチョイ 7f81-VhFj)
2018/10/16(火) 01:01:42.59ID:gETK/lfa0 bが1行しかないとうまく行かないな
ちょっと手直し
sed -e ":l; N; /b=.*b=/{;s/\nb=[01]\n/\n/1;}; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
並び替えはsortでやってください
ちょっと手直し
sed -e ":l; N; /b=.*b=/{;s/\nb=[01]\n/\n/1;}; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
並び替えはsortでやってください
639デフォルトの名無しさん (ワッチョイ e764-66c6)
2018/10/16(火) 01:20:14.73ID:HI3tJEA90 もはやすごいのかどうかも分からんが すごいw
640デフォルトの名無しさん (ワッチョイ 7f81-VhFj)
2018/10/16(火) 01:33:16.00ID:gETK/lfa0 大したことはしてませんw
前半のスクリプトで最終行以外のb=の行を削除し、
後半のスクリプトで置き換えをしてます
前半のスクリプトで最終行以外のb=の行を削除し、
後半のスクリプトで置き換えをしてます
641デフォルトの名無しさん (ワッチョイ bfd5-KnhR)
2018/10/16(火) 07:39:45.98ID:7taE2kBh0 つかさ、丸投げに答えてやる必要も無いだろ。
ただの一行もコード書いてないだろこいつ。
ただの一行もコード書いてないだろこいつ。
642デフォルトの名無しさん (ワッチョイ 6735-4Hut)
2018/10/16(火) 07:59:23.00ID:ips5MdhR0 622じゃだめなんか?
cat <file> | awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' | sort
cat <file> | awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' | sort
643デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/16(火) 09:23:21.39ID:HrwRMilta いーんじゃない?
644デフォルトの名無しさん (ワッチョイ df7c-4Hut)
2018/10/16(火) 10:41:54.09ID:kKW6G61E0 >>641
確かにそんな感じしてきてるな
確かにそんな感じしてきてるな
645デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/16(火) 13:03:31.45ID:0QUQFWONa てか、Cのスレで質問者もCでどうやるか聞いてるのに誰もCで答えてないw
ま、Cで書く気が失せる問題ではあるが。
ま、Cで書く気が失せる問題ではあるが。
646デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/16(火) 13:28:42.21ID:iuFXWAmsM 頭の体操にはなったろ
スレを活性化するためには呼び水って必要なんだと実感
スレを活性化するためには呼び水って必要なんだと実感
647デフォルトの名無しさん (ワッチョイ 078a-oHS3)
2018/10/16(火) 13:38:03.74ID:dIjk/xku0 C言語でやるとしたら
b=で始まる行以外は適当な一時ファイルに出力し
b=で始まる行だけはメモリー上に格納しておく
b=行が出現する度に、あたらしい行データでメモリー上を更新する
EOFまで処理したら、一時ファイルとメモリー上のデータをマージする
その際にb=の値を所定の値に置換する
順番は後にソートする前提なので適当で構わない
ソートは外部コマンドでやらせて良いだろうね
b=で始まる行以外は適当な一時ファイルに出力し
b=で始まる行だけはメモリー上に格納しておく
b=行が出現する度に、あたらしい行データでメモリー上を更新する
EOFまで処理したら、一時ファイルとメモリー上のデータをマージする
その際にb=の値を所定の値に置換する
順番は後にソートする前提なので適当で構わない
ソートは外部コマンドでやらせて良いだろうね
648デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/16(火) 17:27:49.92ID:5Df0UEAr0649デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/16(火) 17:35:52.31ID:HrwRMilta >>648
おお。上の方過ぎて気づかなかった。
おお。上の方過ぎて気づかなかった。
650デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/16(火) 21:08:20.36ID:iuFXWAmsM お前らがほどよく食いつきそうな質問考えるのも大変なんだぞ
651デフォルトの名無しさん (ワッチョイ 674f-gma9)
2018/10/16(火) 21:46:58.32ID:Fb63Sgww0 >>650
死ね
死ね
652デフォルトの名無しさん (ワッチョイ 7f81-VhFj)
2018/10/16(火) 22:04:41.56ID:gETK/lfa0 流石に591はネタとしか思えない
というか、酷すぎだろう
というか、酷すぎだろう
653デフォルトの名無しさん (ワッチョイ e764-66c6)
2018/10/16(火) 23:06:58.82ID:HI3tJEA90 C99時代のhello worldプログラムを考えてみた。
#include <stdio.h>
#include <stdlib.h>
static inline void
print_hello(void)
{
puts("Hello, C!");
}
int
main(void)
{
print_hello();
exit(EXIT_SUCCESS);
}
exit()関数を使ったり、main()関数の中に直に処理を書かないとか色々。
#include <stdio.h>
#include <stdlib.h>
static inline void
print_hello(void)
{
puts("Hello, C!");
}
int
main(void)
{
print_hello();
exit(EXIT_SUCCESS);
}
exit()関数を使ったり、main()関数の中に直に処理を書かないとか色々。
654デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
2018/10/16(火) 23:31:05.44ID:ZKPc2SIw0 なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
655デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
2018/10/16(火) 23:35:18.29ID:ZKPc2SIw0656デフォルトの名無しさん (ワッチョイ e764-66c6)
2018/10/16(火) 23:48:35.20ID:HI3tJEA90 >>655
c99 -O2 -Wall -Werror -Wextra hello.c -o hello
これで無警告だった。
c99はGNU/Linuxだとgcc -std=c99を実行してる。
icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
でも成功。
GNUのコンパイラでもIntelのコンパイラでもちゃんと処理できるのでいいんじゃないかなぁ。
c99 -O2 -Wall -Werror -Wextra hello.c -o hello
これで無警告だった。
c99はGNU/Linuxだとgcc -std=c99を実行してる。
icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
でも成功。
GNUのコンパイラでもIntelのコンパイラでもちゃんと処理できるのでいいんじゃないかなぁ。
657デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
2018/10/17(水) 01:16:05.15ID:GVzdQn3+0 そうだったか。
658デフォルトの名無しさん (ワッチョイ 27b3-LG9r)
2018/10/17(水) 01:41:12.15ID:aiP21AAI0 main に限り 戻り型int としながらも return で値を明示的に返さない場合
暗に return 0; とするってなかった? (653 で exit() 無しでもセーフ)
暗に return 0; とするってなかった? (653 で exit() 無しでもセーフ)
659デフォルトの名無しさん (ワッチョイ c7e3-Zu1O)
2018/10/17(水) 01:48:50.18ID:aAn3UH6A0 c99から(とc++も)main()は特別扱いで省略時はreturn 0;と扱われる
とググったらでてきた
なんでmain()だけ?どうせなら関数全てそうしちゃえばいいのに、と思わなくもない
とググったらでてきた
なんでmain()だけ?どうせなら関数全てそうしちゃえばいいのに、と思わなくもない
660デフォルトの名無しさん (ワッチョイ bf9f-pYQO)
2018/10/17(水) 02:29:49.55ID:GVzdQn3+0 なんと。そうだったのか。
661デフォルトの名無しさん (ワイモマー MMff-ytAd)
2018/10/17(水) 03:22:55.94ID:FoS95tj1M >>659
「書かないこと」が一命令と等価ってどうよ?
「書かないこと」が一命令と等価ってどうよ?
662デフォルトの名無しさん (ワッチョイ 4723-KSPj)
2018/10/17(水) 03:32:50.43ID:4awkQadJ0 不定の戻り値なんて殆ど使いもんにならんから
戻り値がスカラー型ならコストも低いし 0 返してる扱いでいい気がする
戻り値がスカラー型ならコストも低いし 0 返してる扱いでいい気がする
663デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 04:22:55.42ID:Nvagglal0664デフォルトの名無しさん (ドコグロ MMff-EA7j)
2018/10/17(水) 06:39:43.66ID:p0V48QfGM >>662
そんな余計な機能は要らんわ
そんな余計な機能は要らんわ
665デフォルトの名無しさん (ドコグロ MMff-EA7j)
2018/10/17(水) 06:40:15.60ID:p0V48QfGM >>663
お前は何を言ってるんだよ w
お前は何を言ってるんだよ w
666デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 07:36:54.39ID:Nvagglal0 >>665
ニホンゴワカリマスカ?
ニホンゴワカリマスカ?
667デフォルトの名無しさん (ワッチョイ 6735-4Hut)
2018/10/17(水) 08:11:38.95ID:zWYuH5Te0 確かSolaris+sunのコンパイラではreturn 0 もexit(0)も書かんかったら$?は不定だったような記憶がある
668デフォルトの名無しさん (ドコグロ MMff-EA7j)
2018/10/17(水) 08:13:06.68ID:p0V48QfGM >>666
iccワカリマスカ?
iccワカリマスカ?
669デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 09:26:43.05ID:Nvagglal0 >>668
だから何?
だから何?
670デフォルトの名無しさん (ブーイモ MM0b-SHtH)
2018/10/17(水) 09:31:50.81ID:OPyv/DAJM >>669
日本語わかってないのはお前じゃん
日本語わかってないのはお前じゃん
671デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 09:49:25.33ID:Nvagglal0 >>670
頭が馬鹿なお前に言われたかねえぜ
頭が馬鹿なお前に言われたかねえぜ
672デフォルトの名無しさん (ドコグロ MMff-EA7j)
2018/10/17(水) 10:05:24.48ID:p0V48QfGM673デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 10:27:25.05ID:Nvagglal0674デフォルトの名無しさん (ドコグロ MMff-EA7j)
2018/10/17(水) 11:19:59.47ID:p0V48QfGM675デフォルトの名無しさん (ラクッペ MM5b-/wJ2)
2018/10/17(水) 12:45:18.81ID:5mPHIqhKM マ板で見つけたんですけど、何がやばいんですか?
355 仕様書無しさん sage 2018/10/17(水) 10:31:44.15
https://qiita.com/hamichamp/items/7b7a7ee091a6856ac900
こんな奴でもフリーランスになれるんやな
355 仕様書無しさん sage 2018/10/17(水) 10:31:44.15
https://qiita.com/hamichamp/items/7b7a7ee091a6856ac900
こんな奴でもフリーランスになれるんやな
676デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/17(水) 12:57:28.62ID:8efdFbKLa >>675
え?そこに書いてある通りでは?
え?そこに書いてある通りでは?
677デフォルトの名無しさん (ラクッペ MM5b-/wJ2)
2018/10/17(水) 13:16:02.45ID:5mPHIqhKM678デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 13:33:54.04ID:Nvagglal0679デフォルトの名無しさん (ワッチョイ e764-66c6)
2018/10/17(水) 13:47:12.06ID:MkHFWGSb0 >>653
だれかこれに触れてほしい(自己主張)
C99というかモダンCプログラミングの初歩として
(手前味噌だが)かなりいい感じだと思うんだけどどうかな。
とりあえず今までのhello worldプログラムは
・return文、しかも0固定をmain()関数に書いてしまっている
・main()関数に直に処理を書いてしまっている。
などの理由であまり実際に即していないと思うのよね。
だれかこれに触れてほしい(自己主張)
C99というかモダンCプログラミングの初歩として
(手前味噌だが)かなりいい感じだと思うんだけどどうかな。
とりあえず今までのhello worldプログラムは
・return文、しかも0固定をmain()関数に書いてしまっている
・main()関数に直に処理を書いてしまっている。
などの理由であまり実際に即していないと思うのよね。
680デフォルトの名無しさん (ワッチョイ 4723-KSPj)
2018/10/17(水) 13:58:30.03ID:4awkQadJ0 >>679
人は互いに理解し合えるという幻想に対する反例として読んでます
人は互いに理解し合えるという幻想に対する反例として読んでます
681デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/17(水) 13:59:47.69ID:8efdFbKLa 別にmain()に処理書いてもいいと思うがな。パッと見てわかるぐらいの小ささなら。
まあしかしこれは各個人の信仰の問題であって言語そのものの制限ではない。
そこまでなんとかしたいならそういう言語を作るしかない。
布教活動すれば信者は増えるだろうが相変わらず教義に反する異端者はこの世に存在し続ける。
まあしかしこれは各個人の信仰の問題であって言語そのものの制限ではない。
そこまでなんとかしたいならそういう言語を作るしかない。
布教活動すれば信者は増えるだろうが相変わらず教義に反する異端者はこの世に存在し続ける。
682デフォルトの名無しさん (オイコラミネオ MMfb-KnhR)
2018/10/17(水) 14:08:29.78ID:yNGPPWpxM683デフォルトの名無しさん (アークセー Sx9b-wEhW)
2018/10/17(水) 14:25:03.69ID:JU3vAU4Ix mainの中にputsの代わりに別関数呼ぶと言うのはビジネスロジックをmainから極力排除するという意図があると推測するけど、最初の一歩としては複雑すぎる。
いきなり最初から関数、inline、static、exitの仕様を理解する必要があるので。
いきなり最初から関数、inline、static、exitの仕様を理解する必要があるので。
684デフォルトの名無しさん (ワッチョイ c708-4Hut)
2018/10/17(水) 15:12:32.44ID:Nvagglal0 スタイルの問題じゃねえ
sizeof(32)とか書いてるアホが指導員やってることが問題なのであって
sizeof(32)とか書いてるアホが指導員やってることが問題なのであって
685デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/17(水) 15:16:21.42ID:mC+TJhpha voidといいsizeofといい、今年は豊作だなw
686デフォルトの名無しさん (ワッチョイ 4708-I59m)
2018/10/17(水) 15:38:23.06ID:6YtQ5uRO0 b=の書換質問は釣りだったんだな
687デフォルトの名無しさん (ワッチョイ df9f-5hEM)
2018/10/17(水) 16:16:17.24ID:O9lRBr4Z0 voidくん見てる〜?
sizeof(32)くんて友達出来てよかったねw
sizeof(32)くんて友達出来てよかったねw
688デフォルトの名無しさん (アウアウエー Sa9f-M9VF)
2018/10/17(水) 16:32:00.39ID:TQLylYbFa ブルーボトル日本開店おめでとう。
西海岸で飲む、いつもの味。僕にとって新鮮みがないことが、成功の証だと思う。
西海岸で飲む、いつもの味。僕にとって新鮮みがないことが、成功の証だと思う。
689デフォルトの名無しさん (ドコグロ MMff-EA7j)
2018/10/17(水) 18:16:44.83ID:p0V48QfGM690デフォルトの名無しさん (ワッチョイ 674f-gma9)
2018/10/17(水) 18:18:55.24ID:jwV5Qww90691デフォルトの名無しさん (アウアウカー Sa7b-GU/K)
2018/10/17(水) 18:31:08.37ID:bYFTmDwea 半角にするの忘れてるぞ
■ このスレッドは過去ログ倉庫に格納されています
