はきだめC/C++下級者の質問箱 2

このエントリーをはてなブックマークに追加
944デフォルトの名無しさん:2008/08/27(水) 16:58:13
>>943
デバッグすればいいよ・・・・・・・・・・・・・・・・・・
945デフォルトの名無しさん:2008/08/27(水) 22:30:00
ソース生成しているのか。くだらんなぁ。それはさておき、こりゃ酷い。
--
fputs("0x", fp);
sprintf(tmp, "%02x", dt);
tmp[2] = 0;
fputs(tmp, fp);
fputs(", ", fp);
--
fprintf(fp, "0x%02x, ", dt)で事が足りるだろうに。処で、tmpはどう宣言されているんだ?
946デフォルトの名無しさん:2008/08/29(金) 13:01:48
c++使ってるといちいち型変換がめんどくさいんだけど
一番簡単な方法はboostの変換ライブラリ使う事?
他にいい方法があれば教えてください。
947デフォルトの名無しさん:2008/08/29(金) 14:53:32
sendmessageでwm_copydataが送れないんですけど、
何かプロジェクトの設定とかが必要だったりします?
他のメッセージは送れるんですがこれはデータのコピーとかやってるのでその辺でこけてるのかなあと。
948デフォルトの名無しさん:2008/08/29(金) 15:25:26
GetLastErrorで原因調べた?
949947:2008/08/29(金) 15:25:28
sendmessageなのにスレッドループで捕まえようとしてました
解決しました
950デフォルトの名無しさん:2008/08/30(土) 07:51:33
オブジェクトのメソッドの呼び出し規約ってどうなるんですか?
951デフォルトの名無しさん:2008/08/31(日) 12:07:46
>>950
とりあえずぐぐろう
952デフォルトの名無しさん:2008/08/31(日) 12:18:42
>>945
>>943ほどの低レベルなコードを書く奴ならどうせchar*tmp;と宣言していると予想
953デフォルトの名無しさん:2008/09/01(月) 08:01:13
printfなどでの書式指定で、たとえば0.123の場合、
最初の0をつけずに、.123の様になるようにするには
どのように指定したらよいのでしょうか
954デフォルトの名無しさん:2008/09/01(月) 08:41:46
"%.3f"
955デフォルトの名無しさん:2008/09/01(月) 10:23:10
文字列を入力するときの例は、配列を使うものしか見たこと無いのですが、 
文字列を入力する場合は、常に配列を使わなければならないのでしょうか。 

たとえば、宣言は、 char st[100]; とかの例を見たりしますが、 
char st; だけじゃ不都合があるのでしょうか。文字が一文字しか入らないとか。。。 
 
956デフォルトの名無しさん:2008/09/01(月) 11:15:33
文字列 = 文字の配列
と思えばとりあえずなんとかなる
957デフォルトの名無しさん:2008/09/01(月) 11:53:00
>>955
Cには文字列形がないので、文字型の配列などに格納する必要がある。
文字型変数であるchar stには、当然ながら一文字しか入らない。
958デフォルトの名無しさん:2008/09/01(月) 21:53:28
どなたかこの低脳野郎に知恵を授けてください・・・。実はいまC言語を学んでいるのですが
C言語はソフト開発が出来るのでしょうか?(窓の杜にあるようなやつ)
回答お願いします。
959デフォルトの名無しさん:2008/09/01(月) 21:57:30
低脳にもほどがある
960デフォルトの名無しさん:2008/09/01(月) 22:11:12
>>958
アインシュタインは紙と鉛筆で相対性理論を完成させたかもしれないが、俺にはできない。
たしかに偉大な先人達はCで作ったソフトを窓の杜に投稿したかもしれないが、
その軌跡を今の私たちが無理してなぞる必要は無いと思わないか。

ということで、もっと楽ちんな言語使おうぜ。
C++とか。
961デフォルトの名無しさん:2008/09/01(月) 22:48:25
>>960
ありがとうございます。偉大な人とはいえ結局は人ですからがんばって見ます。
962デフォルトの名無しさん:2008/09/01(月) 23:27:03
がんばって何を見るというのだろう……
963デフォルトの名無しさん:2008/09/01(月) 23:52:14
そりゃあ、おい、青少年ががんばって見るといえばアレしかないだろ。
まぁ俺からのアドバイスとしては薄目にしても効果はないということだ。
964デフォルトの名無しさん:2008/09/02(火) 10:18:53
>>961にはBASICがお似合いだろ
965デフォルトの名無しさん:2008/09/03(水) 22:24:55
fopenとかで取るファイルポインタって解放せずにプログラム終了したら不味いことある?
DBのコネクションは解放しなかったらいつまでも接続残って不味いとかはわかるんだけど
メモリにリソースが残ったままになるとかあるのかな?
966デフォルトの名無しさん:2008/09/03(水) 22:36:22
開きっぱなしになってOSを再起動するまでファイルを削除できないってことは昔はあったwindowsの話だけど
今は・・・無いのかな?
967デフォルトの名無しさん:2008/09/03(水) 22:49:27
>>965
exit()の中でfcloseall()している筈だから大丈夫。
968デフォルトの名無しさん:2008/09/03(水) 23:34:41
>.>966
削除までは確認してませんでした。時間あるときやってみます

>>967
CreateThreadでhoge関数を別のスレッドで動かす。
hoge関数内でファイルポインタを開く。
hoge関数がファイルポインタを持った状態で、
別の関数からCloseHandleでhoge関数を終了させた場合ってどうなんでしょうか?
969デフォルトの名無しさん:2008/09/03(水) 23:35:47
Windowsもプロセス終了時にファイルハンドルは全部閉じられるので平気。
970デフォルトの名無しさん:2008/09/03(水) 23:40:34
CloseHandle()ではスレッドを強制終了させられないから大丈夫。
971デフォルトの名無しさん:2008/09/04(木) 01:16:56
>>969-970
レスありです
CreateThread使い出して気になったんで助かりました
972デフォルトの名無しさん:2008/09/04(木) 07:32:36
ないよ
973デフォルトの名無しさん:2008/09/07(日) 23:59:50
ファイル移動で、フォルダ内の不特定多数のファイルを
別のフォルダに移動するってどうやりますか??

MoveFileじゃできませんでした・・・
974デフォルトの名無しさん:2008/09/08(月) 00:09:25
掃き溜めっぽくていいね。
975デフォルトの名無しさん:2008/09/08(月) 01:50:42
>>973
system("move c:\\*.* d:\\*.*")
976デフォルトの名無しさん:2008/09/10(水) 21:58:49
C言語はXPのPCで勉強できますか?
教えてください。
977デフォルトの名無しさん:2008/09/10(水) 22:30:43
できます。ついでに言うと、
それくらいのことは、ここで聞いていないでググればもっと早く分かる。
978デフォルトの名無しさん:2008/09/11(木) 19:06:17
質問です。以下はどちらもchar型の変数です。

// データ部
msg.data[0] = cTagID[0];
msg.data[1] = cTagID[1];
msg.data[2] = cTagID[2];
msg.data[3] = cTagID[3];
msg.data[4] = cTagID[4];
msg.data[5] = cTagID[5];
msg.data[6] = cTagID[6];
msg.data[7] = cTagID[7];
msg.data[8] = cTagID[8];
msg.data[9] = cTagID[9];
msg.data[10] = cTagID[10];
msg.data[11] = cTagID[11];
msg.data[12] = cTagID[12];
msg.data[13] = cTagID[13];
msg.data[14] = cTagID[14];
msg.data[15] = cTagID[15];
わかりにくい表現だと思いますが、msg.data[0]〜msg.data[15]で何バイト使ってるのでしょう?
16byte?
979デフォルトの名無しさん:2008/09/11(木) 22:54:45
>>978
char型なら16バイト。それ以外の解釈の仕様が無い。
980デフォルトの名無しさん:2008/09/12(金) 14:26:49
>>978
sizeof(char) == 1
なら上に同じく
16バイト
981デフォルトの名無しさん:2008/09/12(金) 15:11:19
>>980
>sizeof(char) == 1
当たり前です。
982デフォルトの名無しさん:2008/09/13(土) 01:01:35
sizeofはバイト数を返すと定義されてるわけではありません。
983デフォルトの名無しさん:2008/09/13(土) 03:23:41
>>982
じゃ、何返すんだよ
984デフォルトの名無しさん:2008/09/13(土) 03:42:28
sizeofが返すのはbyte数であることと、sizeof(char)が1であることは規格で決められています。
ただし、これは言語上での定義なので、32bitのことを言語上では「1バイト」ということもありえます。
985デフォルトの名無しさん:2008/09/13(土) 13:34:33
printfで浮動小数点型を表示する書式としてfとeとgがありますが、
私はgが気に入っています。
このままずっとgを使い続けて問題ありませんか?
986デフォルトの名無しさん:2008/09/13(土) 16:28:21
>>985
私も%g推奨派ですが、出力フォーマットが仕様で決まっている場合などは%fを使うこともあります。
尤も、その場合は%9.3fなどの幅指定が入るわけで、生のままの%fを使うことは有り得ません。
そんなわけで、特に指定が無い出力に%gを使うのは蓋し妥当と言えましょう。
987デフォルトの名無しさん:2008/09/13(土) 16:42:06
>>986
ありがとうございます。
特に指定がない限り%gのままでやっていきます。
988デフォルトの名無しさん:2008/09/13(土) 16:42:51
>>983
sizeof(char)は1であり、sizeofはsizeof(char)の何倍かを返す。
単位がバイトであるとは規定されていない。

1バイトが何ビットか決められていないのとは、また、別の話。
989デフォルトの名無しさん:2008/09/13(土) 16:50:46
>>988
バイトってはっきりかいてあるだろ

ただc言語の上では1byte=8bitとは限らないってだけで
990デフォルトの名無しさん:2008/09/13(土) 16:52:01
C89の話じゃないのか?
991デフォルトの名無しさん:2008/09/13(土) 17:28:39
>>988
古い規格だと、ISO 9899:1990 セクション 3.4 で "byte" が定義されている。
同 セクション6.3.3.4 に The sizeof operator yields the size (in bytes) of its operand.
とある。
sizeof(char)は1で単位はバイト。

終了。

scalaすれに誤爆しちゃった・・・(´・ω・`)
992デフォルトの名無しさん:2008/09/13(土) 19:20:10
別にC99でも同じ話。

6.5.3.4の2に曰く
The sizeof operator yields the size (in bytes) of its operand,

6.5.3.4の3に曰く
When applied to an operand that has type char, unsigned char, or signed char,
(or a qualified version thereof) the result is 1.
993978
自己解決しました^^