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:XSTNMnDwa538デフォルトの名無しさん (スップ Sd00-t0aP)
2018/10/05(金) 12:23:53.35ID:G8OY4AG7d そこは教え方の上手なあなたが教えてあげれば良い事だな
539デフォルトの名無しさん (ワッチョイ 8ad7-vBoO)
2018/10/05(金) 12:50:10.63ID:cQzHZ22n0 >>537
歴史に残る名言だなw
歴史に残る名言だなw
540デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
2018/10/05(金) 12:50:15.78ID:qaFHFmCDa >>537
それ、もういいですから。
それ、もういいですから。
541デフォルトの名無しさん (ワッチョイ 8e80-QLg3)
2018/10/05(金) 13:01:08.97ID:vpbu8eze0 clear > log
cat log
Linux の基本コマンドも知らないような奴が、C をやるな!
10年勉強してからやれ
cat log
Linux の基本コマンドも知らないような奴が、C をやるな!
10年勉強してからやれ
542デフォルトの名無しさん (ワッチョイ bad5-6J+Z)
2018/10/05(金) 13:01:39.72ID:6zSKEd8l0 >>533
>>527 で言ってるのは >>524 の実行とは別の話。
画面を消す方法の正体を調べる手順だから、ヒマな時にやればいい。
>>534
宣言はコンパイル時に解釈されるもので、実行時に「宣言という動作」を行っているわけじゃない。
だから実行時にかかるコストは無いから、ループの中に書いてもいい。
C は変数が見える範囲(スコープ)が { } の中になってる。
minute と second は while で回してる { } の中でしか使ってなく、かつ表示のための一時的な変数だから、それを必要とする範囲内だけで見えるようにすると分かりやすくなる。
変数のスコープは極力狭くなるように書くといいよ。
分かりやすさの点でもいいし、メモリ(スタック)の消費量も少なくなる。
正確なタイマーを作るならインターバルタイマーで調べてみるといいけど、まだそれを使えるレベルじゃないと思う。
>>536
curses ってなに?
>>527 で言ってるのは >>524 の実行とは別の話。
画面を消す方法の正体を調べる手順だから、ヒマな時にやればいい。
>>534
宣言はコンパイル時に解釈されるもので、実行時に「宣言という動作」を行っているわけじゃない。
だから実行時にかかるコストは無いから、ループの中に書いてもいい。
C は変数が見える範囲(スコープ)が { } の中になってる。
minute と second は while で回してる { } の中でしか使ってなく、かつ表示のための一時的な変数だから、それを必要とする範囲内だけで見えるようにすると分かりやすくなる。
変数のスコープは極力狭くなるように書くといいよ。
分かりやすさの点でもいいし、メモリ(スタック)の消費量も少なくなる。
正確なタイマーを作るならインターバルタイマーで調べてみるといいけど、まだそれを使えるレベルじゃないと思う。
>>536
curses ってなに?
543デフォルトの名無しさん (アウアウカー Sa0a-iYeS)
2018/10/05(金) 13:03:13.60ID:qaFHFmCDa >>534
1秒ごとに setitimer() とか使って割り込み掛かればいいんだけどね、普通のOSだとあまり正確にではないかも知れない。しかしただsleepするよりは正確だと思う。
割り込み使わないやり方で今と似ているけどましなやり方は次の処理開始時間までより正確に sleep することだ。
これは gettimeofday() でμ秒までの時刻を取得して秒が変わるまで何μ秒なのか計算して usleep() で sleep させればできる。
1秒ごとに setitimer() とか使って割り込み掛かればいいんだけどね、普通のOSだとあまり正確にではないかも知れない。しかしただsleepするよりは正確だと思う。
割り込み使わないやり方で今と似ているけどましなやり方は次の処理開始時間までより正確に sleep することだ。
これは gettimeofday() でμ秒までの時刻を取得して秒が変わるまで何μ秒なのか計算して usleep() で sleep させればできる。
544デフォルトの名無しさん (ワッチョイ bad5-6J+Z)
2018/10/05(金) 13:11:04.98ID:6zSKEd8l0 curses ってライブラリか。
面白そうだな。
面白そうだな。
545デフォルトの名無しさん (ササクッテロレ Sp10-QFHg)
2018/10/05(金) 13:31:56.77ID:DxqDA2/Ip546デフォルトの名無しさん (ササクッテロレ Sp10-QFHg)
2018/10/05(金) 13:33:35.60ID:DxqDA2/Ip あと、インターバルタイマーも調べて起きます。
547デフォルトの名無しさん (ワッチョイ 2abe-selW)
2018/10/05(金) 16:55:26.05ID:NK5dBb8n0 >>545
printf '%s\n%s\n' 'set number' 'syntax on' >> ~/.vimrc
printf '%s\n%s\n' 'set number' 'syntax on' >> ~/.vimrc
548デフォルトの名無しさん (ワッチョイ 2abe-selW)
2018/10/05(金) 16:56:30.81ID:NK5dBb8n0 ていうかエディタの名前くらい書け。
まあset numberという設定名のエディタはVimくらいしか思い付かんが。
まあset numberという設定名のエディタはVimくらいしか思い付かんが。
549デフォルトの名無しさん (ワイモマー MM5a-QNrK)
2018/10/06(土) 10:59:41.46ID:YTpMAVXmM そこはggrksだろ
なに遊ばれとんねん
なに遊ばれとんねん
550デフォルトの名無しさん (ワッチョイ 3fb3-Qng4)
2018/10/08(月) 11:16:41.41ID:5icYsRLJ0 H8 (3694) と秋月キャラLCD(SC1602) のI/F 関数です。
//--------------------------------------------------------------------
#include<3694.h> // CPU のレジスター定義、その他関数のプロトタイプ
struct DATA_BUS{
unsigned char NOTUSE:4;
IO.PDR8.BIT.B7;
IO.PDR8.BIT.B6;
IO.PDR8.BIT.B5;
IO.PDR8.BIT.B4;
}; // IO.PDR8.BIT.B3 は不使用
#define LCD_RS IO.PDR8.BIT.B2 // P82を LCD RSに定義
#define LCD_RW IO.PDR8.BIT.B1 // P81を LCD R/Wに定義
#define LCD_E IO.PDR8.BIT.B0 // P80を LCD Eに定義
#define LCD_DB DATA_BUS // P83〜P87 のみをLCD D4〜D7 に定義したい
//--------------------------------------------------------------------
LCD_DB に構造体の入れ子(DATA_BUS) を定義しています。この書き方で動作しますか。この関数の作者はLCD_DB にunsigned char 型で下位4ビットのみ有効なchar 型を代入していました。
//--------------------------------------------------------------------
#include<3694.h> // CPU のレジスター定義、その他関数のプロトタイプ
struct DATA_BUS{
unsigned char NOTUSE:4;
IO.PDR8.BIT.B7;
IO.PDR8.BIT.B6;
IO.PDR8.BIT.B5;
IO.PDR8.BIT.B4;
}; // IO.PDR8.BIT.B3 は不使用
#define LCD_RS IO.PDR8.BIT.B2 // P82を LCD RSに定義
#define LCD_RW IO.PDR8.BIT.B1 // P81を LCD R/Wに定義
#define LCD_E IO.PDR8.BIT.B0 // P80を LCD Eに定義
#define LCD_DB DATA_BUS // P83〜P87 のみをLCD D4〜D7 に定義したい
//--------------------------------------------------------------------
LCD_DB に構造体の入れ子(DATA_BUS) を定義しています。この書き方で動作しますか。この関数の作者はLCD_DB にunsigned char 型で下位4ビットのみ有効なchar 型を代入していました。
551デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 13:21:40.69ID:i8/5B6xca 関数がないじゃん
552デフォルトの名無しさん (ワッチョイ 965b-zn+7)
2018/10/08(月) 13:57:42.90ID:wqzMNkqt0 そもそもコンパイルできなかったのでは?
構造体のメンバにB4〜B7みたいな定義済みの定数は書けないよ。
構造体のメンバにB4〜B7みたいな定義済みの定数は書けないよ。
553デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/08(月) 14:22:18.67ID:NcWFD+EU0 Cってネットワーク系のコマンド作るのに向いてる?
554デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 14:26:06.72ID:i8/5B6xca ネットワーク系のコマンドというのが意味不明だが、socketインターフェースはある。
向いてるかといえば向いてないが、そういう低レイヤの話としては言語は何を使っても大して変わらん様な気はする。
向いてるかといえば向いてないが、そういう低レイヤの話としては言語は何を使っても大して変わらん様な気はする。
555デフォルトの名無しさん (アウアウウー Sab5-Gru0)
2018/10/08(月) 14:31:56.89ID:meeyxWTYa REST APIなら libcurl で楽々よ
556デフォルトの名無しさん (ワッチョイ fa9f-v2gR)
2018/10/08(月) 14:51:03.67ID:FGHe46tu0 ビットコのbot殆どがPythonやNode.jsばっかだけど
libcurl使えばスクリプト言語並みに簡単に使えるよね
libcurl使えばスクリプト言語並みに簡単に使えるよね
557デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/08(月) 15:10:37.99ID:NcWFD+EU0 なるほどソケットっていうのもあるのか。
無知なもので「ネットワークコマンド」と言えばwgetやらcurlやらのTCPクライアントだけを指すと思ってたw
curlってコマンドだけじゃなくてlibcurlも提供してくれてるんだね。
だったらpure CでもTCPクライアントが作れそう。
無知なもので「ネットワークコマンド」と言えばwgetやらcurlやらのTCPクライアントだけを指すと思ってたw
curlってコマンドだけじゃなくてlibcurlも提供してくれてるんだね。
だったらpure CでもTCPクライアントが作れそう。
558デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 15:53:56.39ID:i8/5B6xca 言葉の話だけどcurlは基本的にはHTTPクライアントだ。TCPの上に乗ってる。
TCPクライアントはtelnetとかncだな。ncはUDPも行ける。
TCPも基本的には難しくないが、異常系を考え出すときりがない。
TCPクライアントはtelnetとかncだな。ncはUDPも行ける。
TCPも基本的には難しくないが、異常系を考え出すときりがない。
559デフォルトの名無しさん (ワッチョイ d881-t36n)
2018/10/08(月) 16:51:30.03ID:wTnfR6Jf0 大昔ソケットレベルから自前でHTTPクライアント作ったことある
TCPプロトコルを学ぶ良い勉強になるよ
TCPプロトコルを学ぶ良い勉強になるよ
560デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 16:56:21.14ID:SHTmPUE+0 相変わらず低学歴知恵遅れは頭悪いこといってるわ
ソケット通信でTCPプロトコルとか
オマエがソケット通信でやりとりしてんのはHTTP
ホントななんでココまで頭悪いのしかいないのか不思議
ソケット通信でTCPプロトコルとか
オマエがソケット通信でやりとりしてんのはHTTP
ホントななんでココまで頭悪いのしかいないのか不思議
561デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:00:43.05ID:SHTmPUE+0 トランスファープロトコルにTCP/IP使ってるといっても
きっとこのスレの低学歴知恵遅れは意味が分からない
smtpもftpもほとんどが普通にtcp/ipだからな
いまどきのnetbiosも普通にtcp/ipだからな
昔はトランスファープロトコルにnetbeuiつかってた
で、今ではnetbios over tcp/ipで
nbtとかなんとかいってる
きっとこのスレの低学歴知恵遅れは意味が分からない
smtpもftpもほとんどが普通にtcp/ipだからな
いまどきのnetbiosも普通にtcp/ipだからな
昔はトランスファープロトコルにnetbeuiつかってた
で、今ではnetbios over tcp/ipで
nbtとかなんとかいってる
562デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 17:32:32.71ID:i8/5B6xca >>561
知らんテクニカルタームは使うときに確認しろよ
知らんテクニカルタームは使うときに確認しろよ
563デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:34:14.12ID:SHTmPUE+0 また低学歴知恵遅れが意味不明ないちゃんもんとけてるし
先にいっとくけどな
とてつもなく頭悪いこといってんのオマエだからな
まずその自覚がない
先にいっとくけどな
とてつもなく頭悪いこといってんのオマエだからな
まずその自覚がない
564デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:35:52.31ID:SHTmPUE+0 pop3もtcp/ip
sshもtcp/ip
httpsもtcp/ip
きっとな低学歴知恵遅れには
なにをいってるのいかが分からないとは思うわ
sshもtcp/ip
httpsもtcp/ip
きっとな低学歴知恵遅れには
なにをいってるのいかが分からないとは思うわ
565デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:37:36.24ID:SHTmPUE+0 ホントな低学歴知恵遅れは
頭悪いことを自信満々でいうから困るわ
頭悪いことを自信満々でいうから困るわ
566デフォルトの名無しさん (ブーイモ MM5e-ebK2)
2018/10/08(月) 17:44:32.09ID:BtXxUchaM 基本情報どころかITパスポート程度の知識でドヤってるのか
低学歴知遅れ君は
低学歴知遅れ君は
567デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:47:16.60ID:SHTmPUE+0 それにすら到達してない低学歴知恵遅れが
ドヤってるスレがこの板だからな
マジで低学歴知恵遅れはこの板から排除したほうがいい
有害
ドヤってるスレがこの板だからな
マジで低学歴知恵遅れはこの板から排除したほうがいい
有害
568デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 17:48:30.52ID:i8/5B6xca じゃあ「トランスファープロコトル」ってなんだか説明してくれよ…
なんだよ「ソケット通信でHTTP」って。
なんだよ「ソケット通信でHTTP」って。
569デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:50:22.69ID:SHTmPUE+0 HTTPというのは
ハイパーテキストトランスファー プ ロ ト コ ル
だからな
ソケット通信(トランスファープロトコル意識する必要ない)で
HTTPの内容してるだけだ
わかった?
ハイパーテキストトランスファー プ ロ ト コ ル
だからな
ソケット通信(トランスファープロトコル意識する必要ない)で
HTTPの内容してるだけだ
わかった?
570デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:51:32.47ID:SHTmPUE+0 ソケット通信でHTTPの内容をヤリトリしてるのすら分かってないワケだからな
ここまで頭悪いと話にならない
ここまで頭悪いと話にならない
571デフォルトの名無しさん (ブーイモ MM5e-ebK2)
2018/10/08(月) 17:51:37.49ID:BtXxUchaM 低学歴知遅れ君ってプロトコルの意味を理解してなさそう
572デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:52:10.92ID:SHTmPUE+0 で、低学歴知恵遅れの負けず嫌いは半端ないからな
573デフォルトの名無しさん (ワッチョイ d980-A6IM)
2018/10/08(月) 17:52:42.31ID:SHTmPUE+0 これ以上語るつもりはない
574デフォルトの名無しさん (ワッチョイ 15c7-vBoO)
2018/10/08(月) 17:55:15.29ID:o/CKA6Eq0 昨日読んだTCPの本がよっぽど気に入ったんだね
575デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 17:59:44.79ID:i8/5B6xca だからなんだよ「トランスファープロトコル」って
576デフォルトの名無しさん (ワッチョイ d881-t36n)
2018/10/08(月) 18:24:47.89ID:wTnfR6Jf0 TCP Transmission Control Protocol
IP Internet Protocol
トランスポート層 TCP, UDP, DCCP, SCTP, IL, RUDP
似たような言葉はあるが、その表現は見つからないな
並行宇宙のどこかで使っているかもしれないが
ここではなさそうだ
IP Internet Protocol
トランスポート層 TCP, UDP, DCCP, SCTP, IL, RUDP
似たような言葉はあるが、その表現は見つからないな
並行宇宙のどこかで使っているかもしれないが
ここではなさそうだ
577デフォルトの名無しさん (ワッチョイ b064-selW)
2018/10/08(月) 18:25:27.11ID:NcWFD+EU0 あー。TCPというのはHTTPよりもう少し下層に位置する概念ってことかな?(合ってるか不安)
俺が作りたいなぁと思ったのは
$ xxx 'example.com'
とやるとブラウザでexample.comにアクセスして「ページのソースを表示する」機能を使ったときのような出力を返すコマンド。
これはTCPクライアントじゃなくてHTTPクライアントか。
俺が作りたいなぁと思ったのは
$ xxx 'example.com'
とやるとブラウザでexample.comにアクセスして「ページのソースを表示する」機能を使ったときのような出力を返すコマンド。
これはTCPクライアントじゃなくてHTTPクライアントか。
578デフォルトの名無しさん (ワッチョイ d881-t36n)
2018/10/08(月) 18:27:46.37ID:wTnfR6Jf0579デフォルトの名無しさん (ワッチョイ b7b3-Ww/X)
2018/10/08(月) 18:29:18.08ID:lYyho1IC0 「トランスファープロトコル」は星の数ほどある「〜転送プロトコル」の用語として使われるけど、トランスファープロトコル単体で使用されてるのは聞いたことないね。
きっとトランスポートプロトコルの間違い。
きっとトランスポートプロトコルの間違い。
580デフォルトの名無しさん (ワッチョイ d881-t36n)
2018/10/08(月) 18:29:27.24ID:wTnfR6Jf0 あ、下層というよりもアプリケーション層ですね
581デフォルトの名無しさん (アウアウエー Sa6a-syNg)
2018/10/08(月) 18:42:58.85ID:i8/5B6xca >>577
まあGETするだけだったらそれこそTCPだけでもいい。
勉強としては、HTTPサーバにtelnetしてGETコマンド(と、いくつかのヘッダ)を打ち込んでみると、イメージがつかめるのではないかと。
まあGETするだけだったらそれこそTCPだけでもいい。
勉強としては、HTTPサーバにtelnetしてGETコマンド(と、いくつかのヘッダ)を打ち込んでみると、イメージがつかめるのではないかと。
582デフォルトの名無しさん (ワイモマー MM5a-QNrK)
2018/10/08(月) 19:28:25.64ID:ksVOiCMkM 半角久しぶりに来てんじゃん
やっぱお前が釣らなきゃ盛り上がらんな
やっぱお前が釣らなきゃ盛り上がらんな
583デフォルトの名無しさん (ワッチョイ aab3-GL8C)
2018/10/08(月) 19:39:09.30ID:sIA/07pT0 そろそろ知ったかマウント君はいなくなったかな?
584デフォルトの名無しさん (ササクッテロ Sp88-QFHg)
2018/10/08(月) 19:44:22.79ID:VRFV8oUEp クソガキ多いねw
585デフォルトの名無しさん (ワッチョイ 7f35-vBoO)
2018/10/08(月) 19:45:29.27ID:o48XySPi0 勉強したいならCで
スティーブンス本で検索すれば、役に立つ書籍があるよ
使いたいだけならpostmanとかcurlでえんじゃね?
スティーブンス本で検索すれば、役に立つ書籍があるよ
使いたいだけならpostmanとかcurlでえんじゃね?
586デフォルトの名無しさん (ブーイモ MMfd-c4eZ)
2018/10/08(月) 19:58:16.19ID:/43gNJgrM ファーwww
587デフォルトの名無しさん (ワッチョイ fa9f-v2gR)
2018/10/08(月) 20:47:31.58ID:FGHe46tu0 半角くんとかvoidくんとかこのスレには個性的な人が多いねw
588デフォルトの名無しさん (ワッチョイ 27cc-smg0)
2018/10/13(土) 20:15:38.78ID:mLt7ea1s0 すみません、C言語出テキストファイルの特定行を書き換えたいのですが
全て配列に読み込む→変更する→全て書き戻す
という方向しかないでしょうか。
変更前 01.txt
a=1
b=1
c=1
変更後 01.txt
a=1
b=0
c=1
こういった変更を行いたいです。
全て配列に読み込む→変更する→全て書き戻す
という方向しかないでしょうか。
変更前 01.txt
a=1
b=1
c=1
変更後 01.txt
a=1
b=0
c=1
こういった変更を行いたいです。
589デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/13(土) 20:23:20.71ID:L3Dj2/gz0 標準入力から1行ずつひたすら読み込む
特定行以外をひたすら同じ内容を標準出力に出力する
特定行だけ変更内容を標準出力に出力する
できた
特定行以外をひたすら同じ内容を標準出力に出力する
特定行だけ変更内容を標準出力に出力する
できた
590デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/13(土) 20:36:09.45ID:L3Dj2/gz0 aho.sh
----
#!/bin/bash
aho < 01.txt > 01_tmp.txt
mv -f 01_tmp.txt 01.txt
引数でファイル名を指定するどうでもいいことがどうしてもしたい場合は
一旦、プログラムでテンポラリファイルに書きだして
プログラムで最後にmvする必要がある
----
#!/bin/bash
aho < 01.txt > 01_tmp.txt
mv -f 01_tmp.txt 01.txt
引数でファイル名を指定するどうでもいいことがどうしてもしたい場合は
一旦、プログラムでテンポラリファイルに書きだして
プログラムで最後にmvする必要がある
591デフォルトの名無しさん (ワッチョイ e780-gma9)
2018/10/13(土) 20:51:29.26ID:L3Dj2/gz0 https://ideone.com/CYlw3P
あとはテキトーにやりなさい
あとはテキトーにやりなさい
592デフォルトの名無しさん (ワッチョイ 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//;}"
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「やっぱり顔採用かよ…」就活生を襲う“見えないルッキズム”の現実 [七波羅探題★]
- カードじゃなくて「紙」が活躍中…健康保険の「資格確認書」 大きすぎて困惑する人も [蚤の市★]
- 今後50年間、毎年100万人ずつ人口が減る…「少子化対策」の失敗で日本が迎える「死ぬまで搾取」というヤバい未来 ★9 [ぐれ★]
- 「5人が抱き合う遺体発見」香港高層火災、150人安否不明 警察はボランティア警戒 [蚤の市★]
- 【野球】菅野智之 WBC出場熱望 取り戻したい8年前の“忘れ物” 36歳全力「ラストチャンス」 現在はFA「無職」 [ぐれ★]
- ガザの死者7万人超える 停戦後も止まらないイスラエル軍の攻撃 [蚤の市★]
- 公務員、町の関連団体の口座から570万円横領して懲戒免職。「FXにつぎ込みました。マイナスで、サラ金に借りたけど足りなくて」 [389326466]
- ミュージシャン「こんなバカが国のトップなの」→「馬鹿と言ったのは稚拙だった。中国政府を擁護する意図はない」と釈明 [313077826]
- デブってたのに急に痩せ始めてワロタwwwwww
- 日本人の世論「中国で商売してるおまえが悪い」 イベント中止ミュージシャンに対する意見が形成される [279254606]
- 🏡
- トリッカルもちもちほっぺ大作戦やろうぜ
