スレを勃てるまでもないC/C++の質問はここで 5
■ このスレッドは過去ログ倉庫に格納されています
過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
http://pc11.2ch.net/test/read.cgi/tech/1221633708/
0628デフォルトの名無しさん
2009/01/04(日) 12:39:18c = 108000000なんで時速kmになってる
0629デフォルトの名無しさん
2009/01/04(日) 12:40:10struct sockaddr *sad = (struct sockaddr *)mem;
struct sockaddr_in *sadi = (struct sockaddr_in *)mem;
とすると、
sad->sa_familyは、memの0バイト目からsizeof(u_short)バイト
sadi->sin_familyは、memの0バイト目からsizeof(short)バイト
の領域をその値とする。
呼び方が違うだけで、同じデータ。
0630デフォルトの名無しさん
2009/01/04(日) 12:48:450631536
2009/01/04(日) 12:50:08struct sockaddrn{
u_short sa_family = sin_family;
char sa_data[2]; = short sin_port;
char sa_data[4]; = in_addr sin_addr;
char sa_data[4]; = sin_zero[8];
};
こういうことになるということでしょうか?
あと、sizeof(sockaddr)をするとなんでsockaddr_inのサイズもわかるのかわかりません。
これは、sockaddrとsockaddr_inの構造体のサイズが同じだから
別にsizeof(sockaddr_in)でもいいということかな
0632デフォルトの名無しさん
2009/01/04(日) 12:51:54おまえよっぽど暇なんだな
Cの入門書でも読んどけって、話はそれからだ
で済むと思うんだが
0633デフォルトの名無しさん
2009/01/04(日) 12:51:560634536
2009/01/04(日) 12:52:18麻雀はわからないのですが、*ryanpeko はどこをさしているのでしょうか?
0635デフォルトの名無しさん
2009/01/04(日) 12:52:54fopen_s()の戻り値で判断すればいいんじゃないの?
http://msdn.microsoft.com/ja-jp/library/z5hh6ee9(VS.80).aspx
http://msdn.microsoft.com/ja-jp/library/t3ayayh1(VS.80).aspx
0636デフォルトの名無しさん
2009/01/04(日) 12:53:22#include <iostream>
using namespace std;
#include <math.h>
void atai();
int main()
{
cout<<"こんにちわ。"<< endl;
atai();
return 0;
}
void atai()
{
double v;/*v=物体の速さ*/
double undou;/*運動する物体の時間の刻み*/
double c = 1080000000;/*光の速さ*/
cout<<"物体の速さ入力:(km/h)";
cin>>v;
if(1 <= v && v <= 1080000000 ){
double ruto;
ruto = sqrt(1 / (1.0000000 - (v/c) * (v/c)));
undou = ruto;
cout<<"物体の時間の刻み"<<undou<<endl;
cout<<"静止している物体が1年間すごしている間"<<endl;
cout<<"運動している物体は"<<1 / ruto<<"年間過ごしてる"<<endl;
}
else{
cout<<"光の速さを超えることはできません"<<endl;}
}
0637デフォルトの名無しさん
2009/01/04(日) 12:54:01connect()のソース読めよ
話はそれからだ
0638デフォルトの名無しさん
2009/01/04(日) 12:54:32100% 完全な方法はないと思う。
1. "r" で開いて、開けたら fclose してエラーを返す。
2. "w+" で開いて、開けなかったらエラーを返す。
3. ファイルサイズが 0 でなければ fclose してエラーを返す。
4. "w" で freopen_s する。
がまだましな方法だとは思うが、
1 と 2 の僅かな間にサイズ 0 のファイルを作られたらチェックから漏れる。
0639デフォルトの名無しさん
2009/01/04(日) 12:56:13まあそんなところだ。
sizeof に関しては、sizeof (sockaddr) は危険。
sockaddr_in を渡しているのだから、sizeof (sockaddr_in) にすべき。
0640デフォルトの名無しさん
2009/01/04(日) 13:00:30vが光速より大きいと、v/cが1より大きくなる。そうすると(v/c) * (v/c)が1より大きくなる。
そうすると1.0000000 - (v/c) * (v/c)が負になる。そうすると1 / (1.0000000 - (v/c) * (v/c))が負になる。
そうするとsqrt()の引数が負になって定義域エラーになる。
0641536
2009/01/04(日) 13:02:42これだとなんとか理解できます。こんなめんどくさいことするのはconnectの決まりだからというわけですね。
0642デフォルトの名無しさん
2009/01/04(日) 13:05:20IP以外のプロトコルのアドレスも扱えるようにしてるんじゃないかな
0643デフォルトの名無しさん
2009/01/04(日) 13:12:24おや、話が半日前に戻ったぞw
進歩がないスレだな
0644デフォルトの名無しさん
2009/01/04(日) 13:13:54while(代入式)の人ですね?分かります
0645デフォルトの名無しさん
2009/01/04(日) 13:19:470646デフォルトの名無しさん
2009/01/04(日) 13:21:50無駄だと思うならこのスレに来るなよ馬鹿
0647デフォルトの名無しさん
2009/01/04(日) 13:24:40さあ、次の質問カマーーン!?
0648536
2009/01/04(日) 13:27:41char c2;
int n;
char *p; /* どこも指してない */
p = (char*)&n; /* n は char型じゃないけどキャストして無理矢理 n の(先頭)アドレスを指す */
よく考えたらpはchar *pと宣言しているからpはchar型じゃないか
だったら キャストなんてしなくてもいいんじゃないの?
char *p
p = &n; で
0649デフォルトの名無しさん
2009/01/04(日) 13:30:00自ら試すということをしないところに共通点が。
>>644
オレはレベルの低い質問については回答側だよ。
どっちも実験しようとすれば5分で結果出るじゃん。
初心者歓迎のスレは別にあるのにこのスレの存在意義が
わかんね。
0650デフォルトの名無しさん
2009/01/04(日) 13:34:24ここでそんなことしても意味ないから。
コンパイラへの明確な指示と人間の可読性を考えて
ソースは書くんだよ。
> char *p
> p = &n;
それコンパイル通してみた?
gccなら-Wallつけて、コンパイラがどう言うかちゃんと
向き合いながら勉強しなよ。
0651デフォルトの名無しさん
2009/01/04(日) 13:34:34&nはint*型だから。
それを代入する先の変数pはそれとは異なるchar*型。
そのため、キャストして&nをchar*型にしてやらないといけない。
0652デフォルトの名無しさん
2009/01/04(日) 13:37:310653デフォルトの名無しさん
2009/01/04(日) 13:44:33俺の若いころは、ちょっとバカな質問すると
逝ってよし!
半年ROMれ
とか言われたもんだが
0654デフォルトの名無しさん
2009/01/04(日) 13:47:03一番は、宿題スレ
0655デフォルトの名無しさん
2009/01/04(日) 13:54:22本当だ
初心者歓迎C/C++室の方がレベルが高いw
0656デフォルトの名無しさん
2009/01/04(日) 14:00:010657デフォルトの名無しさん
2009/01/04(日) 14:03:05アホも多いけどレベル高い人もちゃんといる。
0658デフォルトの名無しさん
2009/01/04(日) 14:46:51> 自ら試す
コンパイラが通せば正しいとは限らないんだが・・・
それを指摘されてファビョったキチガイですね?分かります。
0659デフォルトの名無しさん
2009/01/04(日) 14:47:270660デフォルトの名無しさん
2009/01/04(日) 14:50:27キャストしないとワーニングが出るよ
0661デフォルトの名無しさん
2009/01/04(日) 14:54:07正しい場合でもそれと分からないやつにはな・・・
0662デフォルトの名無しさん
2009/01/04(日) 14:56:08配列のサイズを増やしていく方法がわかりません
言語はC++です
このような事は可能なのでしょうか、また出来るなら
どのようにすればいいのかご教示願います
0663デフォルトの名無しさん
2009/01/04(日) 14:59:10std::vector か std::deque 使え。
0664デフォルトの名無しさん
2009/01/04(日) 14:59:240665デフォルトの名無しさん
2009/01/04(日) 15:00:060666デフォルトの名無しさん
2009/01/04(日) 15:04:3283%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%9F%BA%E7%A4%8
E-%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88P/dp/B00008V
CD1/ref=sr_1_3?ie=UTF8&s=software&qid=1231048974&sr=8-3
こいつで解決
これにて糸冬 了..._φ(゚∀゚ )
0667デフォルトの名無しさん
2009/01/04(日) 15:06:57URL長すぎ
書籍名を書け
0668662
2009/01/04(日) 15:07:08これで詰んでた課題が進めそうです
0669デフォルトの名無しさん
2009/01/04(日) 15:07:590670デフォルトの名無しさん
2009/01/04(日) 15:10:26amazon の URL を縮める方法も知らない奴は勘弁して欲しい。
http://www.amazon.co.jp/dp/B00008VCD1/
0671デフォルトの名無しさん
2009/01/04(日) 15:12:20今回だけは勘弁してやるから、URLの縮め方をここに書け
0672デフォルトの名無しさん
2009/01/04(日) 15:13:53>>666 と >>670 を見比べりゃ分かるだろ・・・。
0673デフォルトの名無しさん
2009/01/04(日) 15:15:26お前が分かるなら、お前がやり方を書け
0674デフォルトの名無しさん
2009/01/04(日) 15:17:24そうやって法則性を見つける努力を怠るからダメなんだよ。
0675デフォルトの名無しさん
2009/01/04(日) 15:18:18そんな無意味な煽りを書く暇があったら、さっさとやり方を書け
0676URLの気持ち
2009/01/04(日) 15:18:270677デフォルトの名無しさん
2009/01/04(日) 15:19:27そんな無意味な煽りを書く暇があったら、さっさとやり方を考えろ
0678デフォルトの名無しさん
2009/01/04(日) 15:20:230679デフォルトの名無しさん
2009/01/04(日) 15:20:31やり方は考えるものではなく、存在するものだ
解っているなら、さっさと書け
0680デフォルトの名無しさん
2009/01/04(日) 15:21:35やり方は存在するものではなく、考えるものだ
解らないなら、さっさと考えろ
0681デフォルトの名無しさん
2009/01/04(日) 15:21:50って仕事の電話が
すまん今はダメのようだ
0682デフォルトの名無しさん
2009/01/04(日) 15:22:410683デフォルトの名無しさん
2009/01/04(日) 15:23:27死ね
0684デフォルトの名無しさん
2009/01/04(日) 15:27:130685デフォルトの名無しさん
2009/01/04(日) 15:29:06見りゃすぐ解る事を教える事ほど害悪なことは無い。
0686デフォルトの名無しさん
2009/01/04(日) 15:33:12小学生ですね
わかります
0687デフォルトの名無しさん
2009/01/04(日) 15:34:01おめーに答える義務はねー
0688デフォルトの名無しさん
2009/01/04(日) 15:40:37http://www.itmedia.co.jp/bizid/articles/0805/13/news065.html
0690デフォルトの名無しさん
2009/01/04(日) 15:43:20死ね
0691デフォルトの名無しさん
2009/01/04(日) 16:05:1483%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%9F%BA%E7%A4%8
E-%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88P/dp/B00008V
CD1/ref=sr_1_3?ie=UTF8&s=software&qid=1231048974&sr=8-3
http://www.amazon.co.jp/dp/B00008VCD1/
え?これの区別も一人で解決できないの?
辞めたほうがいいよ 君
てか こないで
0692デフォルトの名無しさん
2009/01/04(日) 16:05:54{
perror(errormessage);
exit(1);
}
error("エラーです")
これを実行するとエラーです と表示されますよね
でも、
void mputs(char *p)
{
while(*p);
printf("&c", *p);
p++;
}
printf("\n");
}
mputs("エラーです”);
前者と後者では表示される文字は同じですよね。
後者だと変数pが指定する領域を1バイトのchar型として、読み取るので1文字ずつループしていってますよね
でも前者だとそのようなループがないのに、1バイトのchar型として一度に全部の文字を表示しているって
おかしくないでしょうか?
0693デフォルトの名無しさん
2009/01/04(日) 16:10:46http://wktk.vip2ch.com/vipper0531.jpg
0694デフォルトの名無しさん
2009/01/04(日) 16:12:04先ず、Cでは文字列をどう表わすか知ってる?
0695デフォルトの名無しさん
2009/01/04(日) 16:12:55void perror( const char *string );
文字列の先頭のアドレスを指定します
何の問題もありません
0696デフォルトの名無しさん
2009/01/04(日) 16:14:58char *aiueo = "あいうえお";
myprint(aiueo);
void myprint(char *str)
{
printf("%s\n", str);
}
何かおかしい?
0697デフォルトの名無しさん
2009/01/04(日) 16:19:26ポインタ使う必要があるのでしょうか?
0698デフォルトの名無しさん
2009/01/04(日) 16:21:02それでは、逆にポインタを使わなければどうなるのでしょうか?
0699デフォルトの名無しさん
2009/01/04(日) 16:21:48ポインタ使う場合は、下記の文になる
使わないとできない
void mputs(char *p)
{
while(*p);
printf("&c", *p);
p++;
}
printf("\n");
}
mputs("エラーです”);
0700デフォルトの名無しさん
2009/01/04(日) 16:31:26myprint(aiueo);
void myprint(string str)
{
cout << str << endl;
}
0701デフォルトの名無しさん
2009/01/04(日) 16:38:39myprint(aiueo);
void myprint(char *str)
{
printf("%s\n", str);
}
変数aieuoに文字列 あいうえお を代入
char[0]にあ char[1]にい char[2]にう を入れる。
つまり、aiueoが指すアドレス領域はすべてchar型だと
で、aiueoを指定するとchar[0]のアドレスが得られる。
そのアドレスを引数にして関数に渡す。渡された関数でも同じことをし
str配列の中身を全て表示する
ということでしょうか
0702デフォルトの名無しさん
2009/01/04(日) 16:40:35こんな文は使い道ないということかな
void mputs(char *p)
{
while(*p);
printf("&c", *p);
p++;
}
printf("\n");
}
mputs("エラーです”);
0703デフォルトの名無しさん
2009/01/04(日) 16:43:37システムがメモリーを確保して、そこに"あいうえお"と言う文字列定数を配置。
その先頭アドレスをchar型へのポインタ変数aiueoに代入。
aiueoが示すのは"あいうえお"の先頭だけ。
ただし、コンパイラはaiueoを使うときには、char単位に操作することを知っている。(char *と宣言したから)
0704デフォルトの名無しさん
2009/01/04(日) 16:48:13void myprint(char *str)
{
printf("%s\n", str);
}
これで、全部表示されるかがわかりません。
引数としてmyprintに渡すのは先頭アドレス。
その先頭アドレスをchar *str でどう処理しているのでしょうか?
0705デフォルトの名無しさん
2009/01/04(日) 16:51:28Cの文字列について勉強するといいかも。
それから、↓の6.2を読んでみるとわかるかも。
http://www.kouno.jp/home/c_faq/c6.html
0706デフォルトの名無しさん
2009/01/04(日) 16:59:27適当な入門書でも読んでみたら?
0707デフォルトの名無しさん
2009/01/04(日) 17:00:04なんでポインタの文字を一気に表示できるんだ
0708デフォルトの名無しさん
2009/01/04(日) 17:00:21独習Cよんでるがわからない
0709デフォルトの名無しさん
2009/01/04(日) 17:01:10http://www.cppdrive.jp/cstart/string/index1.html
0710デフォルトの名無しさん
2009/01/04(日) 17:01:200711デフォルトの名無しさん
2009/01/04(日) 17:02:14ポインタの指してるとことから連続で並んでるからだろ。
0712デフォルトの名無しさん
2009/01/04(日) 17:04:410713デフォルトの名無しさん
2009/01/04(日) 17:06:180714デフォルトの名無しさん
2009/01/04(日) 17:12:210715デフォルトの名無しさん
2009/01/04(日) 17:13:26俺はwhile君じゃないよ。回答側と言っている
お前はここ来るまえに日本語からやりなおせ
0716デフォルトの名無しさん
2009/01/04(日) 17:14:36結局、皆さんのおかげで課題が進みそうってw
0717デフォルトの名無しさん
2009/01/04(日) 17:17:080718デフォルトの名無しさん
2009/01/04(日) 17:19:07テンプレ強制になっても、他に飛び火するだけ。
0719デフォルトの名無しさん
2009/01/04(日) 17:23:15char *str = "あいうえお"
とすると
正確には あいうえお\0となっている
ので先頭の str[0] のアドレスさえ分かっていれば
\0がくるか0がくるまで その内容は何かしらの意味を持った文字列だと認識する
自分でもやってるだろ?
デバッカで
char *str = "あいうえお";
の内容を見てみれば分かる
0720デフォルトの名無しさん
2009/01/04(日) 17:43:06わかりました。
\0が出てくるまでが文字列ということですね。
0721デフォルトの名無しさん
2009/01/04(日) 17:49:04非常に解りやすい!!!
サンクスです
0722デフォルトの名無しさん
2009/01/04(日) 18:20:00サブクラス化するしかないのでしょうか?
0723デフォルトの名無しさん
2009/01/04(日) 18:49:020724デフォルトの名無しさん
2009/01/04(日) 19:02:04どなたかおすすめのポインタ解説サイト知ってましたら
教えていただけないでしょうか
0725デフォルトの名無しさん
2009/01/04(日) 19:33:56x * y =200.1となったら0.1にしてしまうような
0726デフォルトの名無しさん
2009/01/04(日) 19:37:41z = z - (int)z;
0727デフォルトの名無しさん
2009/01/04(日) 19:38:38ハイパーサンクス!!
■ このスレッドは過去ログ倉庫に格納されています