|
|
||
明日のハチロク忘年会@関西は鍋です.冬ですね
5時に町屋スタジオに集まってから買い出しや食材準備したいので,
来れるひとはコメントか yaotti at gmail
まで連絡ください.
買い出しは鍋の醍醐味の1つですね.
あとwebカメラや包丁やまな板を持ってこれるようなすごい人がいたら持ってきてほしいです.
買い出しの都合上,参加締め切りは明日15時まででお願いします.
京都の町屋スタジオにて.
12/21(日)19:00~
12/21(日)18:30~18:45町屋スタジオ
京都町屋スタジオ
参考:第4回お食事会@関西支部
ネット完備.プロジェクタは借りられるのかな?
webカメラを持ってきてもらえると助かります.
d:id:gintacat,id:satzzに感謝.ありがとうございます.
大体の人数を把握しておきたいので(食事調達のため),行くかも,行けたら行くっていう人はコメントください.
gintacatプロジェクタは使えますよ。僕も覗きたいと思います。
satzz参加しますー
gintacatあ、大きな鍋3つと、ガスコンロ3つあります。
satzz鍋いいですね!!
yaotti>gintacat
ありがとうございます!
おお,鍋いいですね!
yang_yang84世代ですが、是非参加したいです。
Sixeightyaottiに嫌われる夢を見たのは僕が幹事をしなかったからか。
冷や汗かいて飛び起きた。
e_tsuruお疲れ様ですー!参加します。
当日は多分一日空いてるので、鍋するなら手伝いますー!
cod-taraいくます!
nanto_viある意味86世代なので参加したいです。
Sixeightnanto_viさんだ!
y_nagata行くかもです。
yaottiはじめ関西ハチロク世代の皆さまヨロシクです。m(_ _)m
hat-tun初めてですが、お邪魔したいと思います!
Lianまだ確定じゃないですが、行くつもりです。
ujihisaぬおーその日は東京だ、ざんねん> <
y_nagataすいません、別のイベントが入りそうなので、
今回は参加を見送らせてさせていただきます。
またの機会に…汗 ;-<
i6takahk僕も初めてですが、参加したいと思います。よろしくです。
e_tsuruごめんなさい、急用で参加できなくなりました。
直前の変更で申し訳ない・・・><
Lian申し訳ありませんが、私も参加できそうにありません...
また、次の機会に宜しくお願いします><
SunnyGosh, I wish I would have had that information erialer!
kmnbnbffnsGf <a href="http://dxrmjfshdntr.com/">dxrmjfshdntr</a>
pbvnrl1BXqpo , [url=http://cojprbjkfjrr.com/]cojprbjkfjrr[/url], [link=http://fwxgypxsbzaw.com/]fwxgypxsbzaw[/link], http://ixcaibcvneqv.com/
nadyapahiwpWK18FM <a href="http://ckmxymusorno.com/">ckmxymusorno</a>
fhduqhdzdtyiam , [url=http://kblhgxyouqqh.com/]kblhgxyouqqh[/url], [link=http://muhiljrvappt.com/]muhiljrvappt[/link], http://ppvvxcatlgwd.com/
皆参加するとよいよ!!
PeggySmart thkinnig - a clever way of looking at it.
nwuzlylrzwuMPaCL <a href="http://ctjdpshzrqyr.com/">ctjdpshzrqyr</a>
jrvyfnmsN13h , [url=http://lhhkbwxwapjq.com/]lhhkbwxwapjq[/url], [link=http://ptsfjdnpcxqf.com/]ptsfjdnpcxqf[/link], http://kgjmaheuakyn.com/
lhdmpwyjzKog1P <a href="http://aopuizhnkcsj.com/">aopuizhnkcsj</a>
qbrgehlibOIfb , [url=http://ufpqxyhqrazd.com/]ufpqxyhqrazd[/url], [link=http://pkzuctznxnqy.com/]pkzuctznxnqy[/link], http://lbptfcmfdcsx.com/
twitterやコメントでたくさん反応をもらったので書き直しました。
ありがとうございます。
格納する変数はintではなくcharで。
K&Rは今のとこ全部intで処理してるな…なんでだろ。
あと本ではポインタが出てきていないので一応配列で書きました。
でも仮引数に配列はよくないみたい。
参考:
http://blog.studiohff.net/200805/post_358.html
http://d.hatena.ne.jp/yuyarin/20080531/1212161875
#include <stdio.h> #include <stdlib.h> /* 読み込む最大の長さ */ #define MAX_INPUT_LENGTH 10 void escape(char s[], char t[]); int main(int argc, char *argv[]) { int i, j; char s[MAX_INPUT_LENGTH+1], t[MAX_INPUT_LENGTH*2+1]; printf("type characters less than %d.\n", MAX_INPUT_LENGTH); /* printf("size:%d\n", sizeof(s)/sizeof(char)); */ /* ->11 */ /* EOFに到達するorMAX_INPUT_LENGTH分まで読む */ i = 0; while((s[i] = getchar()) != EOF && i < MAX_INPUT_LENGTH) { ++i; } /* 文字列の最後 */ s[i] = '\0'; escape(s, t); printf("%s",t); printf("\nend\n"); exit(0); } void escape(char s[], char t[]) { int i, j; /* printf("s: %d, t: %d\n", sizeof(s), sizeof(t)); */ /* -> s: 4, t: 4 */ /* 仮引数を配列にしていてもポインタ扱い */ for (i = 0, j = 0; s[i] != '\0'; ++i) { switch (s[i]) { case '\t': /* strcpyを使った方がきれいに書ける */ /* 追記 */ /* strcpy→strcat */ t[j++] = '\\'; t[j++] = 't'; break; case '\n': t[j++] = '\\'; t[j++] = 'n'; break; default: t[j++] = s[i]; break; } } /* 文字列の最後 */ t[j] ='\0'; }
これでよいかな。
C/C++ ではポインタや配列を関数に渡す際には必ず一緒にサイズを渡すようにする、というのが習慣になってるからなあ。
ほほう。
とりあえず動くんだけど妥当な書き方なのかわからんので貼ってみる。
「ここ変な書き方してるよ!!」とか突っ込み入れてもらえると嬉しいです。
forまわりとか配列初期化とか。(そもそも配列て使うまえに初期化すべきなのか
mainの中に定数入れちゃってるのはキニシナイ
K&R 3-2 改行文字やタブ文字を\nや\tという文字そのものに変えてコピーする関数escape(s, t)を書け
//参照しないなら初期化は不要(@t33f)
//するなら'\0'で(@tyoro)
//これだとtの10,12,14,16,18が初期化されない(id:Kiyoya)
#include <stdio.h> int escape(int s[], int t[]); int main(int argc, char *argv[]) { int i, j; int s[10], t[20]; /* for (i = j = 0; i < 10; ++i, ++j) s[i] = t[i] = t[++j] = 0; //初期化するならこっち(×) s[i] = t[i] = t[j*2] = 0; */ printf("type characters less than 10.\n"); i = 0; while((s[i++] = getchar()) != EOF) ; if(!escape(s, t)) printf("the length of first arg is too long!!\n"); for (i = 0; t[i] != EOF; ++i) printf("%c",t[i]); printf("\nend\n"); return 0; } int escape(int s[], int t[]) { int i, j; /* 5/31 00:24追記 */ /* 逆… */ /* コピー元よりコピー先が小さいときにエラーという意図 */ //if (sizeof(s) < sizeof(t)) { if (sizeof(s) > sizeof(t)) { return 0; } for (i = j = 0; s[i]; ++i, ++j) { switch (s[i]) { case '\t': t[j++] = '\\'; t[j] = 't'; break; case '\n': t[j++] = '\\'; t[j] = 'n'; break; default: t[j] = s[i]; break; } } return 1; }
Kiyoyas[i] = t[i] = t[++j] = 0; って、sとtの初期化をやってるんだよね?
これだとtの10,12,14,16,18が初期化されないような。
fd0escape() 内の sizeof(s) < sizeof(t) の意図は何でしょう?
常に false になる気がします。
Kiyoyasizeof(s) < sizeof(t) は常にtrueかな。でも趣旨としては sizeof(s) * 2 == sizeof(t) とかの方が良いような。
jj1bdxそもそも文字列は char の配列にすべき
条件判定と ++ 演算子は分けないと混乱する
for ( i = j = 0, ... → for ( i = 0, j = 0, ...
if, while や for では面倒でも {} を使え
main()からは return しないで exit() を使うべし
この手の文字列処理はそもそも配列じゃなくてポインタで書いたほうが後々楽
文字列関連のstrncpy()とか参考にすべし
yuyarin常にfalseです>int escape(int s[], int t[]) { if (sizeof(s) < sizeof(t)) {
Kiyoya>常にfalse
あ、そうか。これ引数で渡してるんだ。
CこわいよC。
hajimepgついったーから来ました。
自分なりに書いてみました。
http://blog.studiohff.net/200805/post_358.html
tsupoフォローアップ記事を書きました。
http://watcher.moe-nifty.com/memo/2008/05/re_c_38b6.html
jj1bdx難読化したコードを残しておくのもいまいちだし,かつ s と t の扱いが逆だったので,課題通りに直したコードを記事にして置いておきました.この手のことって,意外に書籍にはちゃんと書かれてないですねえ.
http://d.hatena.ne.jp/jj1bdx/20080531/p1
SymonaHome run! Great sulggnig with that answer!
hskoqjdweutLwgaMx <a href="http://ywjxuypqzgfg.com/">ywjxuypqzgfg</a>
wnqjitlpakkuZJyjf , [url=http://gpdpisvjdgva.com/]gpdpisvjdgva[/url], [link=http://yfmqvnytsefu.com/]yfmqvnytsefu[/link], http://iolvtroboyje.com/
wgkhlnhzefTMcK <a href="http://kruppvhavcei.com/">kruppvhavcei</a>
mkypjjOmdmsQ , [url=http://jdhawrzxzdpq.com/]jdhawrzxzdpq[/url], [link=http://pljegvxkfjwo.com/]pljegvxkfjwo[/link], http://zzhagljzundl.com/
7時くらいになるかもしれないので、気にせず始めちゃってください。
Webカメラやっぱり反応しないので、持っていくけど使えない可能性大です><