C言語なら俺に聞け(入門編)Part 82
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/04/17(日) 20:17:55.24★前スレ
C言語なら俺に聞け(入門編)Part 81
http://hibari.2ch.net/test/read.cgi/tech/1301773320/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 147代目
http://hibari.2ch.net/test/read.cgi/tech/1301553333/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0153デフォルトの名無しさん
2011/04/20(水) 01:55:19.65コンパイラによっては配列サイズを知ることもできるらしいが
そうだとしても渡されるものが配列の先頭である保証がないから
やっぱりサイズも渡すのが無難
0154デフォルトの名無しさん
2011/04/20(水) 02:00:12.07#include <string.h>
#define BUFSIZE 4096
int main() {
char buf[BUFSIZE];
func(buf);
}
void func(char buf[]) {
memset(buf, 0, BUFSIZE);
}
0155デフォルトの名無しさん
2011/04/20(水) 02:21:06.37あ、
これが王道っぽい
0156デフォルトの名無しさん
2011/04/20(水) 03:25:11.29実は初期化しなくともどうにかならないかい
0157デフォルトの名無しさん
2011/04/20(水) 03:29:36.91HOGE hoge;//char hoge[64];
こういうtypedefの使い方ってすごく気持ち悪いんですけど一般的なんですか?
0158デフォルトの名無しさん
2011/04/20(水) 07:07:50.66Cでは関数の引数として配列を渡すことはできない。
常にポインタとして渡すことになる。
(>148でsizeof(buf)が4になるのはそのため)
スマートも何も、引数として渡すしか方法はない。
0クリアしたいというのなら、どのみち関数内でも
配列のサイズが必要になると思われる。
0159デフォルトの名無しさん
2011/04/20(水) 07:09:25.04MSC の cgets() みたいにすれば。
main{
char buf[4096];
*(int*)buf = sizeof buf;
kansuu(buf);
}
kansuu(char buf[]){
memset(buf, '\0', *(int*)buf);
}
0160デフォルトの名無しさん
2011/04/20(水) 07:10:21.09配列とか、ポインタが隠蔽されるのは個人的には嫌い。
しかし、型が入れ子になっている場合、宣言が読みやすくなるという人もいるだろう。
char (*p)[64];
より
HOGE *p;
が読みやすい、など
0161デフォルトの名無しさん
2011/04/20(水) 07:11:24.620162デフォルトの名無しさん
2011/04/20(水) 07:12:59.34環境に依っては実行時に転けるので要注意。
0163デフォルトの名無しさん
2011/04/20(水) 07:15:01.74読みやすいつーか
その二つは違うだろ
0164デフォルトの名無しさん
2011/04/20(水) 07:23:34.78どんな環境だよw
0165デフォルトの名無しさん
2011/04/20(水) 07:35:30.32char配列をint境界に割り当てないコンパイラと、境界を跨いだintアクセスのできないCPUの組み合わせ。
0166デフォルトの名無しさん
2011/04/20(水) 07:37:12.460167デフォルトの名無しさん
2011/04/20(水) 07:42:47.660168デフォルトの名無しさん
2011/04/20(水) 09:09:23.07| |
\_/
_ |__
/ \
/ ─ ─\
/ ⌒ ⌒ \
| ,ノ(、_, )ヽ |
\ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」
/ _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」
三. i! ゙ヽ、 Y" r‐!、 ヽ.
三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y!
\_|!_二|一"f , !゙\ 三
〈, l|゙》-i|┴ーi´ / イ ´ i! 三
♪ ゙ー-ニ二__,/ / / 三 ♪
/゙ У / / 三
//,/-‐、 /
i! _{! j!'〈 ♪
/ ,,.ノ \'' ヽ \
〈 ーぐ \ ヽ
゙ー″ 〉ー- 〉
〈___ノ
0169デフォルトの名無しさん
2011/04/20(水) 09:09:54.740170デフォルトの名無しさん
2011/04/20(水) 09:13:43.080171デフォルトの名無しさん
2011/04/20(水) 09:31:19.710172デフォルトの名無しさん
2011/04/20(水) 09:32:57.84どうしてそう思ったのかな?
0173デフォルトの名無しさん
2011/04/20(水) 09:40:39.08BUFSIZなんて使ってないが
0174デフォルトの名無しさん
2011/04/20(水) 10:04:06.53Eが落ちた。
>>172
使い回しできない。使い回ししないなら、関数内でクリアするより呼び出し側でクリアする方が自然(≒依存度が下がる)。
0175デフォルトの名無しさん
2011/04/20(水) 10:10:29.920176デフォルトの名無しさん
2011/04/20(水) 10:11:22.630177デフォルトの名無しさん
2011/04/20(水) 10:16:09.720178デフォルトの名無しさん
2011/04/20(水) 10:18:26.030179デフォルトの名無しさん
2011/04/20(水) 10:29:53.18Cygwin でも C99 使えるよ
0180デフォルトの名無しさん
2011/04/20(水) 10:31:39.03�d
0181デフォルトの名無しさん
2011/04/20(水) 10:53:34.93君が言ってるのは、お題が気に食わないってことかな?
ここでは関数内で初期化する事が要件なんだけど。
それと、数行のコードの再利用性で愚作とまで言い切るのは相当凄腕のエスパーだよね。
この程度のコード片なら、使い回し等考えずに一番簡潔な方法で書いた方が良いと思うわ。
0182デフォルトの名無しさん
2011/04/20(水) 10:59:40.100183デフォルトの名無しさん
2011/04/20(水) 11:01:39.76×愚作
○愚策
普段から策もなく行き当たりばったりに作っているから間違えるんだよ。
そもそも、memset()するだけの関数なんて存在意義がない。
何らかの処理をする関数の一部と考えれば使い捨てと断じるのは迂闊。
0184デフォルトの名無しさん
2011/04/20(水) 11:05:33.15ブフフwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0185デフォルトの名無しさん
2011/04/20(水) 11:22:12.620186デフォルトの名無しさん
2011/04/20(水) 11:47:10.76配列のサイズを知る方法は確立されてるんだからそれを使え
0187デフォルトの名無しさん
2011/04/20(水) 12:13:32.99コード書いてみてください
0188デフォルトの名無しさん
2011/04/20(水) 13:29:18.230189デフォルトの名無しさん
2011/04/20(水) 13:45:34.00CTRL+Oでファイルを開くつもりが、人的操作ミスでファイルを保存するダイアログを開いてしまい、
現在の内容を選択したファイルに保存してしまいました。
このような事を二度と繰り返したくないのです(3回ミスをしました)
どのようにバックアップを取ればよいでしょうか?
019052
2011/04/20(水) 13:49:14.070191デフォルトの名無しさん
2011/04/20(水) 13:51:15.96別のエディタでも設定ある可能性。
自分は、少しでも変更あったらすべての連番を自動バックアップしてる。
0192デフォルトの名無しさん
2011/04/20(水) 13:57:34.030193デフォルトの名無しさん
2011/04/20(水) 14:09:23.940194デフォルトの名無しさん
2011/04/20(水) 14:12:24.190195デフォルトの名無しさん
2011/04/20(水) 14:15:07.53そういうミスをする根本原因を解決しないと、どんなツールを使っても同じミスをするぞ。
マウスの操作が苦手ならキーボードショートカットを使うとか、
判っていながら間違ったダイアログを開いてしまうのなら……その場合はどうしたらいいか知らんが。
>>191
自動バックアップって、>189のような上書きにも対応しているのか?
少なくとも一世代は先祖還りしそうな気がするのだが。
その点では、>189のミスに対応するには保存した版をバックアップする機能が必要になるね。
リビジョン管理ツールと連動できるエディタならできるだろうけれど。
0196デフォルトの名無しさん
2011/04/20(水) 14:15:33.16エディタの開くダイアログや名前を付けて保存ダイアログを使わない
エクスプローラから直接開いて上書き保存だけする
0197デフォルトの名無しさん
2011/04/20(水) 14:19:12.660198デフォルトの名無しさん
2011/04/20(水) 14:22:00.70対応するエディタを使っていれば、上書き保存される前に、未変換のテキストをバックアップフォルダへ連番でバックアップできる。
0199デフォルトの名無しさん
2011/04/20(水) 14:30:16.70GITをWindowsに入れてみたいのですが使い方とか良く分かりません
0200デフォルトの名無しさん
2011/04/20(水) 14:33:59.800201デフォルトの名無しさん
2011/04/20(水) 14:45:32.36おまえ、不正なPASSで秀丸使ってるだろ。
ちゃんと金払えよな。
0202デフォルトの名無しさん
2011/04/20(水) 14:49:10.76ショート・カットキーは押し間違えやすい
ミスタイプってあるよな?あれと同じ事が起きる
俺もCtrl+CとCtrl+Vをたまに押し間違える
対策はボタンを使うか、面倒だけどもメニューから
開くを選択する事だ
0203デフォルトの名無しさん
2011/04/20(水) 14:50:03.09入れた後なんですがどうやってバックアップを取ればよいのか
Gitって難しいですね
SVNなら簡単なんでしょうか?
秀丸エディタはお金を払って利用はしておりませんが作者様から免除のライセンスを頂いてますので正式ユーザーです
一応フリーソフト開発者です
0204デフォルトの名無しさん
2011/04/20(水) 14:54:22.05で、Gitの使い方ならGitスレへ。
0205デフォルトの名無しさん
2011/04/20(水) 14:54:54.58これって関数の仕様が決まってからでないと使えないのか?
動作しファイル組み合わせは自動で記録できるのか。
秀丸のバックアップ単体で十分。
0207デフォルトの名無しさん
2011/04/20(水) 14:59:39.65Gitのスレも除いてみます。ありがとうごじあます
>>205
お互い頑張りましょう。
>>206
えええええええええ
0208デフォルトの名無しさん
2011/04/20(水) 15:01:06.78×Gitのスレも除いてみます。ありがとうごじあます
○Gitのスレも覗いてみます。ありがとうございます
興奮して早くレス打たないといけないと思って誤字になりました。
常に秀丸を使うんだったら、この機能ONにしとけば全部残る。
0210デフォルトの名無しさん
2011/04/20(水) 15:22:06.70保存した内容と同じでないのでツライです
2回保存しないと同じ内容でバックアップになんないのでキビシイです
世代にしろ。変更前、保存前のデータが残るんだ。
変更前と変更後を常に残していけば良いんだよ。
Aをバックアップフォルダへ移動した後に、変更後の内容をAのあった場所へファイル作成して保存するの。
0213デフォルトの名無しさん
2011/04/20(水) 15:32:31.84前者はバックアップとってない or フォルダ(ディレクトリ)ごと 別にコピー(おおがかりに変更かけるときとか)
後者は バージョン管理ツールでコミット
0214デフォルトの名無しさん
2011/04/20(水) 15:36:07.11これこそ(分散型)リビジョン管理ツールの出番だ。
0215デフォルトの名無しさん
2011/04/20(水) 15:39:21.540216デフォルトの名無しさん
2011/04/20(水) 15:45:00.63主目的が コピペ元 なんで、基本的には管理ツールでことたりてるね
基本 1本幹で 枝からの平行成長は使わない方向かな…
枝分け 複数並行リビジョン運用 根に修正はいって マージどおすべぇ問題に目を背けてる使い方
0217デフォルトの名無しさん
2011/04/20(水) 15:46:33.79タグだけ打っとけばどうにかなるだろ
0218デフォルトの名無しさん
2011/04/20(水) 15:47:16.83どおすべぇって、マージすればよくね?
0219デフォルトの名無しさん
2011/04/20(水) 15:50:24.80入門書では教えないからね(このこと自体クソだが)
0220デフォルトの名無しさん
2011/04/20(水) 15:50:51.630221デフォルトの名無しさん
2011/04/20(水) 15:57:42.62まじでググってみるといいよ。
0222デフォルトの名無しさん
2011/04/20(水) 15:58:00.050223デフォルトの名無しさん
2011/04/20(水) 16:00:24.52コピー 〜 ○○というのを作る。
失敗したら手動で戻す。
SVNとかテキストでそのまま残らないず管理ツール本体が壊れたら嫌だ。
0224デフォルトの名無しさん
2011/04/20(水) 16:19:14.20SVNなら週一でスナップショットをローカルに保存しときゃいいだろ。
まあGIT使えばそんな心配もねえけどな。
0225デフォルトの名無しさん
2011/04/20(水) 16:23:20.81なかなかそうはいかんよな
0226デフォルトの名無しさん
2011/04/20(水) 16:32:20.44自動でやってくれないし、無駄なファイルを生成するし。
自動でバックアップフォルダへ連番つきで保存してくれれば十分。
普通のテキストエディタでこの機能は付いている。
0227デフォルトの名無しさん
2011/04/20(水) 16:33:44.16だから、未だにprintf()とscanf()のフォーマット指定は互換だなんて書いてある本が出回るわけで。
0228デフォルトの名無しさん
2011/04/20(水) 16:35:52.95あとは問題起こったとき更新日時から手動で復元できる。
バージョン管理ツール何が良いのか。
0229デフォルトの名無しさん
2011/04/20(水) 16:36:23.18それだと
保存したときに、変更前の内容がバックアップに残り、
最新の内容がバックアップに残りません
最新の内容を間違えて上書きしちゃったときのためにバックアップを取りたいのでキツイです
0230デフォルトの名無しさん
2011/04/20(水) 16:36:32.65連番だけでひたすら保存して、特定の状態に戻したくなったらどうするの?
私は連番管理や日付け管理ではその辺りがどうにもならないからリビジョン管理ツールを使っているのだけれど。
分岐の管理もできるしマージは強力だし、今では只のバックアップに留まらずいろいろ有効活用しているけどね。
0231デフォルトの名無しさん
2011/04/20(水) 16:36:47.800232デフォルトの名無しさん
2011/04/20(水) 16:39:19.36最新の内容を上書きする前に自動でバックアップするから、
間違って上書きしないわけだが。エディタを固定して使っていたら。
0233デフォルトの名無しさん
2011/04/20(水) 16:42:35.38うああああああああああああああバックアップされてました
ためしに無題ファイルで上書きしたらバックアップされてました
すいませんでした
0234デフォルトの名無しさん
2011/04/20(水) 16:45:11.14ファイルを削除したときはバックアップされませんでした
0235デフォルトの名無しさん
2011/04/20(水) 16:53:46.53ゴミ箱に入ってんじゃない
0236デフォルトの名無しさん
2011/04/20(水) 17:03:38.25シフト+DELETEで消しましたから
0237デフォルトの名無しさん
2011/04/20(水) 17:05:52.350238デフォルトの名無しさん
2011/04/20(水) 17:11:01.04これからはシフト+DELETEを使わなければ良い。
0239デフォルトの名無しさん
2011/04/20(水) 17:12:38.97異常事態が起こっても
最大で一分間の作業が無駄になるだけじゃん。
一分くらい気にするな。
0240デフォルトの名無しさん
2011/04/20(水) 17:15:08.42さっきより良いコードが必ず書ける。
0241デフォルトの名無しさん
2011/04/20(水) 18:38:56.640242デフォルトの名無しさん
2011/04/20(水) 19:17:36.28| |
\_/
_ |__
/ \
/ ─ ─\
/ ⌒ ⌒ \
| ,ノ(、_, )ヽ |
\ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」
/ _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」
三. i! ゙ヽ、 Y" r‐!、 ヽ.
三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y!
\_|!_二|一"f , !゙\ 三
〈, l|゙》-i|┴ーi´ / イ ´ i! 三
♪ ゙ー-ニ二__,/ / / 三 ♪
/゙ У / / 三
//,/-‐、 /
i! _{! j!'〈 ♪
/ ,,.ノ \'' ヽ \
〈 ーぐ \ ヽ
゙ー″ 〉ー- 〉
〈___ノ
0243デフォルトの名無しさん
2011/04/20(水) 20:01:23.920244デフォルトの名無しさん
2011/04/20(水) 20:18:18.35キーボードのAを押している間はディスプレイに任意の文字を出力させて、離したらその文字を消す
というプログラムをつくりたいです
ご教授お願いします
0245デフォルトの名無しさん
2011/04/20(水) 20:26:24.35非標準関数だけどgetch()を使う
0246デフォルトの名無しさん
2011/04/20(水) 21:31:52.82>何らかの処理をする関数の一部と考えれば使い捨てと断じるのは迂闊。
使い回すと考えるのも早計だと思うけど。
あの質問からそこまでネチネチ考えるのはむしろナンセンスじゃない?
茶茶入れする為の茶茶入れをしても誰からも感謝されないと思うんだが・・・
0247デフォルトの名無しさん
2011/04/20(水) 22:38:35.62| |
\_/
_ |__
/ \
/ ─ ─\
/ ⌒ ⌒ \
| ,ノ(、_, )ヽ |
\ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」
/ _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」
三. i! ゙ヽ、 Y" r‐!、 ヽ.
三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y!
\_|!_二|一"f , !゙\ 三
〈, l|゙》-i|┴ーi´ / イ ´ i! 三
♪ ゙ー-ニ二__,/ / / 三 ♪
/゙ У / / 三
//,/-‐、 /
i! _{! j!'〈 ♪
/ ,,.ノ \'' ヽ \
〈 ーぐ \ ヽ
゙ー″ 〉ー- 〉
〈___ノ
0248デフォルトの名無しさん
2011/04/20(水) 23:01:43.39おまえら記憶力に障害でもあるのか?
脳の検査してきたほうがいいんじゃね?
0249デフォルトの名無しさん
2011/04/20(水) 23:03:34.47バージョン管理ツール必要ないな
0250デフォルトの名無しさん
2011/04/20(水) 23:09:23.01なんとかできそうです
ありがとうございました( ´ ▽ ` )
0251デフォルトの名無しさん
2011/04/20(水) 23:13:08.210252デフォルトの名無しさん
2011/04/20(水) 23:13:24.05■ このスレッドは過去ログ倉庫に格納されています