>>951 そうなんですか。恩に着ます!
何せ今日から始めたもんで。
953 :
デフォルトの名無しさん :2005/10/07(金) 00:07:50
>>949 さんとは別人ですが、便乗質問します。
いろいろ google した結果、 main 関数の返す値は、プログラムの終了コード(終了ステータス)に
なることがわかりました、UNIX だと、直前に終了したプログラムの終了コードを確認するには、
sh だと、echo $? で、csh だと echo $status で表示させることが出来ることもわかりましたが、
Windows のコマンドプロンプトでは、どうやればいいでしょうか。
>>867 既知のアルゴリズムだよ。
ただ実際にはqsortやマージソート、ヒープソートなんかが使われるのは
この方法にはいろいろ問題があるわけで
・整数しか扱えない。
・数字のとりうる値の範囲が大きいとメモリを馬鹿食いする。たとえば32ビット値なら要素数2^32の配列が必要になる。
考え方自体は有用ではある。
ちょっと改良すればハッシュ法なんかに応用できる。
うお。乗り遅れた
958 :
ポポ巣 ◆Qgm8RFT0/. :2005/10/07(金) 07:28:06
//ネットワークプログラミングはじめました。まずは初期化。 #pragma comment (lib, "WSock32.lib") #define WIN32_LEAN_AND_MEAN #define MAJORVERSION 2 #define MINORVERSION 2 #include <windows.h> #include <winsock2.h> #include <stdio.h> int main() { WSADATA wsaData; int err; err=WSAStartup(MAKEWORD(MAJORVERSION, MINORVERSION), &wsaData); if (err != 0) { printf("エラーコード %d\n", err); switch (err) { case WSASYSNOTREADY: printf("ネットワークサブシステムがネットワークへの接続を準備できていない\n"); break; case WSAVERNOTSUPPORTED: printf("要求されたwinsockのバージョンがサポートされていない\n"); break; case WSAEINPROGRESS: printf("ブロッキング操作の実行中であるか、またはサービスプロバイダがコールバック関数を処理している\n"); /*
*/ break; case WSAEPROCLIM: printf("winsockが処理できる最大プロセス数に達した\n"); break; case WSAEFAULT: printf("第二引数であるlpWSAData は有効なポインタではない\n"); break; default: printf("原因不明\n"); } } else { printf("正常に初期化できました\n"); } printf("iMaxSockets %d\n", wsaData.iMaxSockets); printf("iMaxUdpDg %d\n", wsaData.iMaxUdpDg); printf("lpVendorInfo %x\n", wsaData.lpVendorInfo); printf("szDescription %s\n", wsaData.szDescription); printf("szSystemStatus %s\n", wsaData.szSystemStatus); printf("wHighVersion %d.%d\n", HIBYTE(wsaData.wHighVersion), LOBYTE(wsaData.wHighVersion) ); printf("wVersion %d.%d\n", HIBYTE(wsaData.wVersion), LOBYTE(wsaData.wVersion) ); /*
*/ err=WSACleanup(); if (err == SOCKET_ERROR) { printf("リソース解放失敗\n"); } else { printf("リソース解放成功\n"); } return 0; } //EOF
ちょっとコードが丁寧すぎる印象を受けた
皆さんは入門書読み終わったら、次どんな本読みましたか?
964 :
デフォルトの名無しさん :2005/10/07(金) 16:58:57
>>963 いまでも入門書はしょっちゅう手にして確認するけど、
にーちゃんの本棚のCマガジンとかは良く読んだ。
あと、関係ないけど、新スレに書く前にこっち埋めようぜー。
>>964 Cマガジンですか?さっそく本屋行って見てきます!
>>963 「C言語ポインタ完全制覇」と「定本Cプログラマのためのアルゴリズムとデータ構造」を読んだ。
本もいいけど、勉強におすすめのソースコードとかが知りたい。
入門書は読んだことがない。 善いも悪いもCのソースならWebでいくらでも転がってる。
ググって出てこないもんは無いけど 通して読むようなのないなぁ、書籍でも ANSI規格書が昔は無料だったらしいけど 今は1万円以上するしちょっとつらい K&R買ったけど全部載ってるわけでもなし MSDNが良さそうだけど目次が全然でてこないorz
>>968 JISのPDFはタダで読める。
MSDN(日本語)ではこうたどっていくとC関連の記事がある。
開発ツールと言語→Visual Studio .Net→製品ドキュメント→Visual C++
→Visual C++ リファレンス→Visual C++ ライブラリ→Visual C++ のリファレンス
→Visual C++のライブラリ→ランタイム ライブラリ リファレンス
970 :
その1 :2005/10/07(金) 19:18:47
次スレの
>>9 unix 版。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
int main(int argc, char **argv) {
const char *hostname = "www.google.co.jp";
const char *path = "/";
const unsigned short port = 80;
int sock;
struct hostent *host;
struct sockaddr_in server;
int read_size;
char buf[1024];
971 :
その2 :2005/10/07(金) 19:19:58
if ((host=gethostbyname(hostname))==NULL) return -1; bzero(&server, sizeof(server)); server.sin_family = AF_INET; bcopy(host->h_addr, &server.sin_addr, host->h_length); server.sin_port = htons(port); if ((sock=socket(AF_INET, SOCK_STREAM, 0))==-1) return -1; if (connect(sock, (struct sockaddr *)&server, sizeof(server))==-1) return -1; sprintf(buf, "GET %s HTTP/1.0\r\nHost: %s\r\n\r\n", path, hostname); write(sock, buf, strlen(buf)); while ((read_size = read(sock, buf, sizeof(buf)))>0) write(1, buf, read_size); close(sock); return 0; }
973 :
デフォルトの名無しさん :2005/10/08(土) 11:33:22
なんか新スレはどんどん進んでいる様だけど、このスレを埋めて行くぜ。 問題。 自分の環境で使うことが出来るC言語の型 (char, short int, int, long int 等など) と、そのサイズを標準出力に吐き出すプログラムを書け. 出力例 char 1 short int 2 int 4 long int 4 制約 型のサイズはプログラム内に直接書くのではなく、sizeof 演算子を用いて、 実行時に取得して表示すること。 挑戦項目 その型が持つことが出来る最大の数と最小の数も出るようにしておくと便利かも。 完成したプログラムは、環境変数 PATH が指すディレクトリのどこか一つにいれておくと便利かも。
>>973 こういう横やりを入れるのも何だけど、sizeofはコンパイル時に定数式扱いされるから
実行時に取得してるわけじゃないんだけどね
973って・・・・・・・・・・・・・・・・・・
>>974 まさに横やりだな。
実行形式ファイルは実行するまでは
何の効果も生み出さないのだから、
実行時に取得される、と理解して何の不具合もないだろ。
ホント、ヲタはどうでもいいところにこだわるな。
>>976 おまいさん、RTTI使ったことないだろ。
さすがに初心者にそこまでの注意を払わせるのはどうかと思うが、
実行時にコストを支払うのか、コンパイル時に支払うのかの違いは大切だぞ。
>>977-978 話をそらすな。
このスレの主題に照らして
>>974 がどれだけ無意味な発言であるか。
君らは技術に溺れ、場に応じた適切なレベルの
コミュニケーションを取れないタイプの間だな。
人にものを教えようなどと思わない方がいいぞ。
あと俺は
>>973 とは別の通りすがりだ。
981 :
デフォルトの名無しさん :2005/10/08(土) 12:10:14
>あと俺は
>>973 とは別の通りすがりだ。
そんな事は誰も聞いてない件について。
アイアムザパニーズに近いものを感じるなw
>>980 そういう下らない論争をする君が一番場違いだということに気づかないのか?
スレが埋まっていいんだけどさ。
そもそも間違いを指摘してなぜ悪い?
初心者相手なら嘘を教えていいとでも?
適切なフォローはこの場合「今は気にしなくていい」であって
「実行時だと理解していい」ではないだろう。嘘を教えてどうする。
983 :
デフォルトの名無しさん :2005/10/08(土) 12:13:12
>>980 場に応じた適切な発言できてないのは、いったい誰なのやら。
985 :
デフォルトの名無しさん :2005/10/08(土) 12:15:19
973みたいな教え方してると、プリプロセッサ命令とかでも誤解が生じそうだよママン
973ちゃん落ち着いて!ママよ!
梅
梅
>>981 >>977 を読め。俺を
>>973 だと思っている。
君も場の状況を見ず思いつきで発言するタイプだな。
コミュニケーション能力が足りない人間が多いな。
>>982 実行時に取得しているのと表面的には
変わらないのだから嘘ではない。
初心者のキャパはすごく小さいのだ。
他人のレスに横やりいれてスレの流れを乱すな。
990 :
973 :2005/10/08(土) 12:23:03
>>974 さんと、それ以降の方々。
大変勉強になります。
私が
>>973 の問題で伝えたかったことは、自分のためにプログラミングするのも
楽しいよな。ってことです。
あと、ある程度C言語をわかってる人は、あんまり難しい問題を出すんじゃなくて、
今日からC言語を学ぼうと思った人でも、「これなら出来るかも」と思えるような
問題を出して行くといいんじゃないかと思います。
あ、すげー伸びてる。
991 :
デフォルトの名無しさん :2005/10/08(土) 12:23:43
これは酷い自演だなwwwwwwwwwwwwww
この流れで973みたいな問題だす973もアレだよね
993 :
デフォルトの名無しさん :2005/10/08(土) 12:25:06
なんでも良いけどパート2まで来るなよ。 邪魔だから。
>>990 あんた根本的に考え違いしてるよ
自分がプログラミングやり始めた頃のこと思い出してみろよ
表面的に同じなら同じだと言い張れるってのがすごいな。
#defineがexeが実行した時に置き換えられてると思ってそう
これはもう埋めしかないね
梅
999
1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。