C言語なら俺に聞け(入門編)Part 65

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2010/06/12(土) 10:52:01
>>948
コンパイルエラー
953デフォルトの名無しさん:2010/06/12(土) 10:53:40
読めるけど使わないからどうでもいい。
954デフォルトの名無しさん:2010/06/12(土) 11:35:19
()の中が0かどうか、0じゃなければすぐ後ろが真で次が偽、慣れたらこちらのほうが簡単。
文も短くなるしね。
955デフォルトの名無しさん:2010/06/12(土) 11:38:53
()の中が0かどうか、0じゃなければすぐ後ろが真で次が偽、慣れたらこちらのほうが簡単。
文も短くなるしね。
956デフォルトの名無しさん:2010/06/12(土) 11:40:09
ありゃりゃ、大事なことじゃないけど2度言いました、すみません orz
957デフォルトの名無しさん:2010/06/12(土) 12:27:17
同じことなので2度言いました^^;
958デフォルトの名無しさん:2010/06/12(土) 12:42:30
(^_^;)
959デフォルトの名無しさん:2010/06/12(土) 13:25:57
>>950
そう、C ではね
C では strcmp() == 0 とも !strcmp() とも書くというだけ
言語と喧嘩しても仕方ないって
960デフォルトの名無しさん:2010/06/12(土) 13:30:55
if (0 == strcmp(...)) と書くやつだっているし。
961デフォルトの名無しさん:2010/06/12(土) 13:31:58
...はどういう意味ですか?
962デフォルトの名無しさん:2010/06/12(土) 13:33:27
省略してるだけでしょ
963デフォルトの名無しさん:2010/06/12(土) 14:29:58
>>960
代入と比較を間違えないようにと左辺に定数とか
もってくる奴がいるけど、正直きもすぎるw
964デフォルトの名無しさん:2010/06/12(土) 14:42:04
= で代入できてしまう言語仕様の方がきもい。
965デフォルトの名無しさん:2010/06/12(土) 15:01:51
=が演算子で代入が式として扱われるのが原因だから=で代入できてしまうこと自体が問題なのではない
きもいのなら代入式を廃して「左辺値=右辺値;」で代入文になるように文法の改定を提案したらどうだ
966デフォルトの名無しさん:2010/06/12(土) 15:10:31
>>941
おれもブール値のばあいは
if (b) ・・・
if (!b) ・・・
と書くけど
strcmp()のリターン値はブールじゃないから==や!=で比較する。
967デフォルトの名無しさん:2010/06/12(土) 15:22:24
!strcmp って書くやつは英語ができないやつだと思ってる。
968デフォルトの名無しさん:2010/06/12(土) 16:15:05
英語圏のプログラマで!strcmp()って書くヤツは英語ができないのかw
969デフォルトの名無しさん:2010/06/12(土) 16:15:35
!strcmp じゃ意味ちゃうべ
970デフォルトの名無しさん:2010/06/12(土) 16:25:03
>>969
常に false だな。
971デフォルトの名無しさん:2010/06/12(土) 16:27:04
お前ら一番最近作ったソフトどんなの?
972デフォルトの名無しさん:2010/06/12(土) 16:30:13
しょぼい掲示板

一度に140文字ずつしか書き込めないけどw
973デフォルトの名無しさん:2010/06/12(土) 16:41:27
:(;゙゚'ω゚'):
974デフォルトの名無しさん:2010/06/12(土) 16:46:49
小規模だけど、デーモンとそれ専用のクライアント
975デフォルトの名無しさん:2010/06/12(土) 16:55:58
>>965 勢いはいいけど…
#define NOT !
976デフォルトの名無しさん:2010/06/12(土) 17:01:33
ここにいる先生たちはmallocを自分で書けますか?
977デフォルトの名無しさん:2010/06/12(土) 17:03:29
かけますよ。
978デフォルトの名無しさん:2010/06/12(土) 17:05:27
malloc
979デフォルトの名無しさん:2010/06/12(土) 17:12:16
書きたくありませーん
980デフォルトの名無しさん:2010/06/12(土) 17:24:24
windowsとして、HeapAlloc呼び出すまで自力で書けって言うなら、俺には無理そうだな
そんな車輪の再発明みたいなことは
981デフォルトの名無しさん:2010/06/12(土) 18:34:24
windows なら VirtualAlloc 使おうよ
982デフォルトの名無しさん:2010/06/12(土) 18:38:29
「車輪の再発明」って言葉の意味を間違って使ってるやつ意外と多いよな。
983デフォルトの名無しさん:2010/06/12(土) 18:43:09
メモリをダンプしながら検証してたけど、うまくいかないので質問させてください。

文字列の一部を動的に確保したchar *hogeにコピーしようと思ってます。

char*piyo="ABCDEFG";
とやって、"BCDEF"をコピーする場合、

・hoge = (char*) malloc(5)ですか(6)ですか?
・strncpy(hoge, piyo+1, 5)とやったあと、*(hoge+5+1)=0は必要ですか?
984デフォルトの名無しさん:2010/06/12(土) 18:45:00
0で終端させたいのかさせたくないのかどっちかわからんと何とも言えない
985デフォルトの名無しさん:2010/06/12(土) 18:46:40
↑は*(hoge+5)=0の間違いでした。たぶん。
その後printf("%s\n", hoge)としたいので\0で終端させたいです。
986デフォルトの名無しさん:2010/06/12(土) 18:54:32
hoge = (char *)malloc(6);
strncpy(hoge, piyo+1, 5);
*(hoge + 5) = '\0';
987デフォルトの名無しさん:2010/06/12(土) 18:56:26
即レスthxです!
988デフォルトの名無しさん:2010/06/12(土) 18:59:52
せっかく n 系使っても、この使い方じゃセキュリティ対策にならないな
989デフォルトの名無しさん:2010/06/12(土) 19:01:47
>>981
ありがとう
昔の記憶で書いたのであれでしたが、ページ単位で確保するのはvirtualAlloc系でしたね
>>982
mallocぐらいになるとこう表現してもいいと思いましたが、違ってましたか
990デフォルトの名無しさん:2010/06/12(土) 19:04:59
>>980 なアナタは
991デフォルトの名無しさん:2010/06/12(土) 19:37:33
次スレ
C言語なら俺に聞け(入門編)Part 66
http://pc12.2ch.net/test/read.cgi/tech/1276339012/
992デフォルトの名無しさん:2010/06/12(土) 19:48:43
>>983>>986
sprintf()なら一発だぜ。
sprintf(hoge, "%.5s", piyo + 1);
993デフォルトの名無しさん:2010/06/12(土) 20:30:38
mallocの最終呼び出しAPIはHeapAlloc
994デフォルトの名無しさん:2010/06/12(土) 20:41:25
ふーん
995デフォルトの名無しさん:2010/06/12(土) 22:04:51
HeapAlloc であろうと VirtualAlloc であろうと、仮にそれで「作った」として
何ができたつもりになれるんだ? くっだらねー
996デフォルトの名無しさん:2010/06/12(土) 23:38:09
リーク追跡情報を付加する程度か? <自作malloc
環境によっちゃ既に仕込まれてたりするけど
997デフォルトの名無しさん:2010/06/13(日) 00:02:36
大抵既にある物より下のものしか出来ないのさorz
998デフォルトの名無しさん:2010/06/13(日) 00:19:52
>>995 コンパイラメーカーにでも言うんだな
999デフォルトの名無しさん:2010/06/13(日) 00:58:18
>>992
thxです。これでsprintf覚えました。
切り出す文字列が固定幅かそれに準ずる時はかなり使えますね。
1000デフォルトの名無しさん:2010/06/13(日) 01:07:10
>>999
固定じゃない場合は %.*s
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。