1 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:45:25 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 9 pc11.2ch.net/test/read.cgi/tech/1173284217/ 過去スレ Part 1 pc8.2ch.net/test/read.cgi/tech/1146700389/ Part 2 pc8.2ch.net/test/read.cgi/tech/1153818463/ Part 3 pc8.2ch.net/test/read.cgi/tech/1160682950/ Part 4 pc8.2ch.net/test/read.cgi/tech/1162999861/ Part 5 pc8.2ch.net/test/read.cgi/tech/1165022193/ Part 6 pc10.2ch.net/test/read.cgi/tech/1167325490/ Part 7 pc10.2ch.net/test/read.cgi/tech/1170064980/ Part 8 pc11.2ch.net/test/read.cgi/tech/1171946674/ 関連スレ C/C++の宿題を片付けます 84代目 pc11.2ch.net/test/read.cgi/tech/1172981618/ くだすれC言語(初心者用) Part.2 pc11.2ch.net/test/read.cgi/tech/1172099763/ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131 pc11.2ch.net/test/read.cgi/tech/1170338926/ 【初心者歓迎】C/C++室 Ver.35【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1171888583/ 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
528 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 21:54:44 ] #include <stdio.h> #include <math.h> int sosu(int); int main(void){ int i,m; printf("数値入力>");scanf("%d",&m); if(m<=0) return 0; printf("2 "); for(i=3;i<=m;i+=2){ if (sosu(i)==1) printf("%d ",i); } return 0; } int sosu(int n){ int i; if(n==2)return 1; if(n%2==0) return 0; else{ for(i=3;i*i<=n;i=i+2){ if(n%i==0){ return 0; } } } return 1; } 入力した数までの全ての素数を表示するプログラム作ってみたんだけど これだと横一列に表示されて見づらいので、5個ずつ表示して改行\nつけたいんだけどどうしたらいいですかね 2 3 5 7 11 13 17 19 23 29 31 37・・・といった感じです
529 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 21:59:24 ] >>528 これでどう? if (sosu(i)==1) printf("%d ",i); ↓ if (sosu(i)==1){ static int sosu_count=1; sosu_count++; printf("%d ",i); if(sosu_count%5==0) printf("\n"); }
530 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 22:00:27 ] void MyPrint(int i) { static cnt; printf("%d ", i); cnt++; if(cnt == 5) {printf("\n");cnt=0;} return; } こんな関数をprintfの代わりに使うのはどう?
531 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 22:03:25 ] できたー ありがとうございます
532 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 23:02:53 ] int main(void) って int main() と C言語は略しちゃいけないんだよね?
533 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 23:07:14 ] >>532 int main();はお勧めできませんが、 int main()ならどうでもいいと思います。
534 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 23:08:47 ] 規格をあたってみたところ、関数の定義なら問題ないと読めた。 参照したのがはJIS X3010:2003 (C99翻訳)なんで、C89とかだとどうなのかは知らんが。
535 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 23:12:11 ] C89でも同じ事です。
536 名前:デフォルトの名無しさん [2007/04/07(土) 03:51:54 ] 素数そっすうそっすうーーー #include <stdio.h> #include <stdlib.h> #include <string.h> void sieve(char *p,int d); int main() { int d = 0,i,k; char buff[256] = {'\0'}; char *p = NULL; fgets(buff,sizeof(buff),stdin); sscanf(buff,"%d",&d); if (d <= 0) {fprintf(stderr,"input positive number and less than INT_MAX number.\n");exit(1);} if ((p = malloc(d))==NULL) {fprintf(stderr,"failed to allocate %d bytes of memory.\n", d);exit(1);} memset(p, '\0', d); sieve(p,d); printf("primes up to %d\n", d); for (i = 0, k = 1; i < d; i++){ if(p[i] == 2){i++;} if (p[i]==0){printf("%-4d ", i+1); k++;} if(!(k%5)){ putchar('\n');k++;} } return 0; } void sieve(char *p,int d) { int i, j; p[0] = 2; for (i=2; i <= d/2; i++) for (j=2; j <= d/i; j++) p[i*j-1]=1; }
537 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 04:10:22 ] インデント無いとこれほどまでに読みにくくなるんだな…
538 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:46:42 ] C言語で駄目文字ってどういう時に発生するの?
539 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:50:03 ] 駄目文字って何?
540 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 12:53:25 ] Shift_JISで表したときに2バイトめに 0x5c が来る文字を俗に 駄目文字と呼ぶらしい。
541 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:21:08 ] 表とか?
542 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:21:56 ] カタカナの「ソ」とかな。 >>538 への答えとしては、扱うエンコーディングにShift_JIS(CP932など 類似品も含む)があるときは常にその必要があると思え、くらいか。
543 名前:デフォルトの名無しさん [2007/04/07(土) 15:33:49 ] sizeof演算子 の意味がわかりません。教えてください。
544 名前:デフォルトの名無しさん [2007/04/07(土) 15:54:25 ] 意味ってw 変数の使用バイトを調べる為にあるんだよ マロックとかで変数渡すときに、4って書くよりsizeof(int)って書いた方が分かりやすいからだよw
545 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:55:06 ] sizeof(int) : int型のサイズ(4バイトとかそんな感じ) sizeof(hoge) : 変数hogeのサイズ(char hoge[260]なら260) 前者は型のサイズが違っても対応できるように、後者はmalloc(sizeof(hoge))みたいな感じに使う
546 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 16:52:02 ] 典型的な応用例: int array[10]; for (int ic = 0; ic < sizeof(array) / sizeof(* array); ++ic) array[ic] = 0;
547 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 16:59:42 ] 質問者のレベルだと *arrayのところは、array[0]と書いた方が分かりやすいだろう。
548 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 17:30:20 ] 構造体でもパッキングの値に対応した本当のサイズが出るので sizeof は不可欠
549 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 17:54:23 ] sizeofはエロイ
550 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 18:36:20 ] inlineよかまし
551 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 18:59:45 ] >>548 いや、詰め物なくてもsizeofは使うだろ。 メンバ変数のサイズを個別に求めて、合計するわけ?
552 名前:デフォルトの名無しさん [2007/04/07(土) 19:55:09 ] 4って書くよりsizeof(int)って書いた方が分かりやすいからだよw ?intは2バイトじゃないのですか???
553 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 19:59:47 ] >>552 なんで2バイトだと思ってるの?
554 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:00:36 ] 釣りだろうけどマジレスするとintサイズは環境依存、一般的には 8bit, 16bit cpu では2の 32bit cpuでは4 64bit cpuでは4, 8 に分かれる。
555 名前:デフォルトの名無しさん [2007/04/07(土) 20:03:30 ] コンパイラが決めてるってことですか? どーやって決めてるんですかね?
556 名前:デフォルトの名無しさん [2007/04/07(土) 20:06:58 ] 釣りじゃないです。 勉強し始めて、一ヶ月。 わからないことばかりです。 本には、intは2バイトって書かれてるから。 環境依存? むつかしい。前途多難です。
557 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:08:58 ] >>556 すごい古い本つかってないか?
558 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:12:22 ] Javaだと身動き取れないくらいカッチリとサイズが決められてるけど、 Cのintは最低2バイトでshort以上long以下のCPUに都合の良い(が扱いや すい)幅。以上/以下とあるから、どちらかと同じであってもよい。
559 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:15:49 ] C99だと「最低でも32bit以上で、一番速い型」とか指定できるからいいな。
560 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:16:10 ] intが最低2バイトと書いてしまったが、ちゃんと書くと、 1. short: 最低2バイト、longよりは小 2. long: 最低4バイト、shortよりは大 3. short <= int <= long 1.2.からshortとlongの幅が同じになることはないので、3.の等号は 成り立つとしても片方しか成り立たない。
561 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:16:22 ] longとintでサイズ同じなら二つも作って紛らわしくさせんじゃねーよ! とか憤ってた学びたての頃の俺をDQNといわないで下さい
562 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:17:20 ] >>555 実行環境のCPUその他アーキテクチャにとって都合の良い大きさに決まる
563 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:19:24 ] CPUが64ビットだとややこしいな。 int=64ビット long=64ビット int=32ビット long=64ビット int=32ビット long=32ビット long long=64ビット
564 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:19:31 ] >>558 のカッコのなかの「が」は CPUに都合がよい、しかし扱いやすい じゃなくて(逆接になる意味がない)、 CPUに都合がよい(CPUが扱いやすい) の意です……
565 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:20:39 ] >>560 それ間違ってないか? 手元の本にはそんなことは書いてないが。
566 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:27:01 ] shortはshort int、longはlong intの略記であり、 無印intはshort intかlong intのどちらか処理系に都合がよいほうと同じ、 だっけ?
567 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:30:01 ] 手元の本って何だよ。JISのプリントアウトか? まぁ、もちろん規格にも>>560 のような最低hogeバイトとは書いていないけどな。
568 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:38:20 ] >>560 > 1.2.からshortとlongの幅が同じになることはないので、3.の等号は > 成り立つとしても片方しか成り立たない。 実際に sizeof(short) == sizeof(int) == siezeof(long) == 4 な処理系は実在する。
569 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:39:54 ] >>566 intがshort intとlong intのどちらかと 同じ大きさである必要があると定められてはいなかったと思う。 >>567 しかし<limits.h>の定数は少なくともxxx以上・以下でないといけないという規定があり、 そこから必然的にshortとintが16ビット、longが32ビットなければならないということが導かれる。 1バイトが8ビットである環境なら当然2バイトと4バイトになる。 「3.の等号は成り立つとしても片方しか成り立たない」は違うような気がするけど。
570 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:42:07 ] 知っているつもりのことでも、きちんと知らないことってあるんだなあ。
571 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:42:24 ] >>567 新ANSI C言語辞典って本だけど。
572 名前:デフォルトの名無しさん [2007/04/07(土) 20:52:41 ] すごい細かいんですね。 大丈夫かな?? 無理かな??不安になってきた。
573 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:54:37 ] 「どこでも同じとは限らない」ということだけ知ってればOK。
574 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:07:34 ] つまり sizeof(short)=2 sizeof(int)=3 sizeof(long)=4 な処理系があればいいんだ、過去の俺を納得させるだけの為に
575 名前:デフォルトの名無しさん [2007/04/07(土) 21:13:02 ] だからどーやってCPUがバイト割り当ててんだよ その仕組みを教えればいいだろ
576 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:14:09 ] 説明しきれないんだろ? 少なくとも俺はわからん
577 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:16:23 ] CPU < short形が2バイトだの、charが8ビットだのってのは、俺が決めてるわけじゃねーよ。
578 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:17:21 ] 誰がきめてんだよ
579 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:19:28 ] 設計者じゃねーの?
580 名前:デフォルトの名無しさん [2007/04/07(土) 21:20:05 ] 何になるの?? こんな質問方法では、だめか・・。
581 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:21:16 ] 設計者なわけないだろ あたらしいCPUがでたら また設計者があたらしく定義しなおすのか?
582 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:21:50 ] >>575 CPUを設計する人が「これは32ビットCPUだ(1バイト=8ビット)」と言えば、 コンパイラを設計する人はそのCPUで動くコードを出力するコンパイラはintを4バイトにするという具合。
583 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:24:49 ] コンパイラを設計するひとは CPUが新しくできるたびに設計しなおさないといけないってこと?
584 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:25:31 ] CPUのレジスタサイズと、コンパイラの整数型は必ずしも一致してないんだな。 32bitCPUでも、int8のコンパイラがあったり、int64のコンパイラがあったり。
585 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:25:33 ] すんげぇめんどくさいんですね 出来たばっかりのCPUだとプログラミングできないんじゃん
586 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:26:58 ] 毎度新しく決める必要はない。 たとえば80386から続くIntelの32ビットCPUシリーズはIA-32と一括りにされるという具合。
587 名前:デフォルトの名無しさん [2007/04/07(土) 21:27:27 ] なるほど
588 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:33:17 ] もちろんCPUが全てではない。 x86-64では、WindowsはMSがWindows APIをLLP64にすると言い、 VC++もLLP64(long longとポインタが64ビット、intとlongは32ビット)になった。 しかしUnix系では一般的にLP64(longとポインタが64ビット)が採用されていると言う具合。
589 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 22:14:09 ] 入門者には難しい >_<;
590 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 22:18:22 ] >>574 そんな環境はないだろうけど、 short = 2 int = 4 long = 8 なら、普通にあるだろ。
591 名前:デフォルトの名無しさん [2007/04/07(土) 23:12:07 ] char K1[]="abcde"; は、 sizeof は、何になるのですか?? 6??なぜ??
592 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:14:31 ] >>591 配列はその全体のサイズになるから。 文字列の場合は最後に0がつくから、みかけのサイズより+1の大きさになる。
593 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:14:32 ] 規格でそう決まっているから
594 名前:デフォルトの名無しさん [2007/04/07(土) 23:21:50 ] 591 \0 じゃなくてですか?
595 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:23:54 ] NULLぽ
596 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:30:20 ] >>595 ガッ
597 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:51:36 ] >>591 暇だったんで俺が決めといたんだ
598 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:09:58 ] >>594 '¥0'なら
599 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:32:27 ] 配列の平均値を求める関数aveを作ってみたんですが これで表示が1としか表示されないんだけどなんでですかね・・・ #include <stdio.h> void ave(int array[]); int main(void){ int a[5]={1,2,3,4,5},i; ave(a); return 0; } void ave(int array[]){ int sum=0,i,m; m=sizeof(array)/sizeof(int); for(i=0;i<m;i++){ sum+=array[i]; } printf("平均=%d\n",sum/m); } 調べてみたら、ave関数のm=sizeof(array)/sizeof(int) がおかしくて、mに1が入ってみるみたいなんです。 配列aの要素数は5だから、mに5を入れたいんだけどどうすりゃいいんですかね?
600 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:39:08 ] >>599 Cでは配列を関数に渡すことはできない。素直に個数も渡すしかない。 cf. void ave(int * array, int nOfArray) { ...; }
601 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:42:02 ] >>599 void ave(int array[]){ これはダメだな int *array と同じでポインタのサイズしか渡さない int *array のポインタサイズ(4バイト) / int のサイズ(4バイト)=1 void ave(int array[],int size) { int sum=0,i,m; m=size/sizeof(int); ・・・・・ } int main() { ・・・・ ave(a,sizeof(a)); とするとか
602 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:13:19 ] you! c++でいっChinaよ
603 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:21:58 ] C言語では、関数に配列を渡して、渡された配列の要素数を調べる関数ってのは作れないのか。。。 main関数で要素数を入れなきゃダメなんですねどうもありがとうでした
604 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:38:01 ] 出来ん事も無いけど STLとか使ったら一瞬で出来ることをなんで悩まないといけないのか って鬱になるから普通はしない
605 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:39:41 ] 課題でeggx(C言語)てので正五角形を作って来いって言われたのですが途方にくれてます。 多角形を描く関数(fillpoly)もあるようですが、頂点の座標がわからないと描けないようで困っています。
606 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:54:27 ] 頂点の座標なら 円の式と、直線の式の交点を求めるとか sin、cosを使うとか
607 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:57:04 ] プログラムと何の関係があるのか分からんが、 正五角形の頂点なら、 k=0, 1, 2, 3, 4 として x = cos(2π/5 * k) y = sin(2π/5 * k) で求まるだろう
608 名前:デフォルトの名無しさん [2007/04/08(日) 08:32:47 ] Cのライブラリ全てが説明されている本って無いですか? 言われて分かる人なら X680x0 libc みたいな本を探している、と言えば早いですかね。 使用する関数名が分かっていれば、man して使い方を知る事は出来るものの、 どんな関数があるのかが分からずで困ってます。 対象は Linux / FreeBSD で、ソツ無く使える本を。
609 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 09:10:47 ] man2とかman3のディレクトリをlsしちゃだめなのか?
610 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 09:41:14 ] 標準Cの範囲なら規格書で充分だろ。
611 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 09:46:47 ] セクション2はCの規格じゃないけどな。
612 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 10:13:48 ] >>604 興味本位でやってみたいからヒント頼む
613 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:32:32 ] >>612 C++をやれ
614 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 12:02:01 ] 以後、配列を扱う場合はかならず構造体の単一メンバにすること。
615 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 12:02:46 ] オーライリーのC Pocket Referenceに種類ごとに標準関数の説明が載ってるよ
616 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 12:46:15 ] >>608 は、Unixのシステムコールも含んで、載ってるやつがほしいんじゃないか?
617 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 12:58:11 ] >>608 あんまりない無い。 www.linux.or.jp/JM/index.html 結局これが一番いいんじゃないかと思う。 入門書としては、UNIX-Cプログラミングを唱っているもので、プロセス・スレッド、 mmap、socletなんかを扱っているものもあるが、中途半端なものばかり。 最終的にはmanみろってことなのかもしれない。 UNIX共通に通用するベース技術・仕様の本といったら、POSIXの規格書とか 解説書あたりがお望みのものに近いか? BSD系はソースが公開されているんだからそれを読んでコミニュティで 解決しろというスタンスが濃い。 Linuxはアプリケーションソフトばかりがとりだたされる傾向にあって、 コアなライブラリ解説なんて皆無に等しい。 オライリーのカーネル本とか、デバドラ本くらいか。
618 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 13:11:02 ] 「ふつうのLinuxプログラミング」あたりでファイルシステムとかストリーム とかシグナルとか、考え方から理解しておいて、あとはmanなんだろうなぁ。
619 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 14:09:16 ] >>613 Cではできないのですか?
620 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 14:15:22 ] >>619 STL は C++ 標準ライブラリ
621 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 14:55:09 ] スティーヴンス本も知らんのか君達は
622 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 15:17:13 ] (´・ω・`)知らんがな
623 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 15:26:18 ] C言語500の極意(うろおぼえ)みたいな本で十分だろ。
624 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:35:41 ] 608です。 皆様からのレスは本屋で携帯から読めて大変参考になりました。 >>615 >オーライリーのC Pocket Referenceに種類ごとに標準関数の説明が載ってるよ C Desktop Reference なる本は見掛けたのですが、これの事? 内容は本の厚さに比例してそこそこと言う感じでした。 初めてCを使う人には良いかも。 >>623 >C言語500の極意(うろおぼえ)みたいな本で十分だろ。 これを見掛けた時は「これか!?」と思ったのですが、内容が・・・ 参考になる点も多かったのですが、今求めている物とは大きくずれてました。 いざ探してみると満足の行く物は確かに無いですね。 みんなどうやってプログラミングしているんだろう?と不思議になってきました。 今にして思うと X680x0 libc は偉業と感じます。 これには標準的な関数ならバッチリ載っているので、残りは >>617 を参考にするのがベターの様です。 本屋で探した感じでは C言語大辞典 がわりとイイ線行ってたので 今度は神保町あたりでじっくり探してみたいと思います。 レスしてくれた方々、有難う御座いました。
625 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 21:36:11 ] 配列って、絶対アドレス順にしかできないの? a[0]とa[1]はメモリ上となりあわせで a[0]アドレスが100ならa[1]は99といった感じで使いづらい・・・ malloc関数を使ったら、a[0]〜a[それまで]のものが全部初期化されちゃって使いづらい。 今までの配列の要素を変化させずに動的に配列の要素数を変化させることはできないですか? scanf関数を使うたびに配列の要素をひとつずつ増加させるのを作りたいんだけど。 int ct=0,m,*data; data=(int*)malloc(100*sizeof(int)); while(1){ scanf("%d",&m); if(m==0)break; data[ct]=m; ct++; } たとえばこれだと100個以上の入力されるとエラー起こすし、 5個しか入力しないと残りの95個もったいない どうすりゃいいですかね?
626 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 21:39:05 ] そのための線形リストだ。
627 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 21:42:26 ] >>625 ・realloc ・std::vector (C++ 限定)
628 名前:デフォルトの名無しさん [2007/04/08(日) 22:09:43 ] ビット演算の意味がわからない。