5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2010/05/28(金) 01:02:53
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 64
http://pc12.2ch.net/test/read.cgi/tech/1273846013/
★過去スレ
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++室 Ver.72【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1267775473/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 135代目
http://pc12.2ch.net/test/read.cgi/tech/1269438098/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

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

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

192 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)