1 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:49:22 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 22 pc11.2ch.net/test/read.cgi/tech/1196489491/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 101 pc11.2ch.net/test/read.cgi/tech/1197132472/
820 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:06:48 ] scanf("%d", &num[i]); もでした
821 名前:816 mailto:sage [2008/01/14(月) 17:17:55 ] >>818 ,>>820 丁寧にありがとうございます。 >>819 ということは>>818 の通りvoid宣言でいいのですね…。 後でじっくり調べてみます。ありがとうございます。
822 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:21:48 ] int inputnum(int num[], size_t num_size) { int i; for(i=0; i<num_size; i++) if(scanf("%d", &num[i]) != 1) return 0; return 1; }
823 名前:816 mailto:sage [2008/01/14(月) 17:58:20 ] >>822 すみません、「size_t num_size」とは何でしょうか? また戻り値がどこの変数へ戻るのか分かりません…。 また1つ分からない事があるのでどなたかご教授お願いします orz サイズを指定せずに配列を作る事は可能でしょうか? int num[]; //これでは要素が無いためサイズが0であるのでできないということまで 分かりましたがそれ以上で詰まっています。 よろしくお願いします。
824 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:04:39 ] >>823 size_tは型。たぶんunsigned intと同じである環境が多いのかな? 要は自然数用型とか思っとけばとりあえずOK。(サイズにマイナスはないからね) 戻り値がどこに入るかは呼び出し側次第。 int func( void )という関数があったとして main内で「int a = func( );」 としてればfunc内の戻り値がa内に入る。
825 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:06:53 ] >>823 サイズを指定しない配列は無理 malloc系を使えば好きな大きさで確保したり、大きさ変えたりはできるけど
826 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:08:05 ] char s[] = "もけあ"; とかはできるけどそれは宣言のときだけね
827 名前:816 mailto:sage [2008/01/14(月) 18:32:46 ] >>824 詳しくありがとうございます。 int inputnum(int num[], size_t num_size) メインルーチンの方で上の2つの変数の値を指定すればいいということですね。 >>825-826 明確にありがとうございます。 入力する回数を予め決めるか、 要素次第ということですね。大変参考になりました。 皆さんありがとうございました。
828 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:59:16 ] int func(int num){ return !(num%2); } 上記の関数でnumが奇数の場合と偶数の場合の戻り値はそれぞれどうなりますか? 有識者の方宜しくお願いします。
829 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:59:55 ] タメセカス
830 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:06:49 ] 算数じゃん。
831 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:07:11 ] >>828 何がわからんのだ?%演算子か?!演算子か? 関数や戻り値がわかってるのならどっちかだろうな。 num = 2; num % 2 == 0; !0 == 1 num = 1; num % 2 == 1; !1 == 0; こんなもんでわかるだろ。 ってか>>829 で良かったかな。
832 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:08:07 ] 自己顕示欲・・・
833 名前:816 mailto:sage [2008/01/14(月) 21:14:46 ] すみません。また1つ疑問ができてしまいましたのでご教授お願いします… orz 配列inputのサイズ変数MAXをサブルーチンで決定したいのですが、 int MAX; void sub(int MAX){ scanf("%d",&MAX); } int main(void){ input[MAX]; ・ ・ ・ } とした時に、「sub(MAX);」をどこで定義すればいいのでしょうか? それともルーチンではできないでしょうか? よろしくお願いします orz
834 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:18:07 ] (^ん^)?
835 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:18:29 ] とりあえずC言語における「定義」の意味を調べなおした方が
836 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:19:26 ] 日本語でおk MAXの値はどこでも変えられるけど? MAX = 4;とか好きにすれば? それとも配列のサイズ変えたいの?
837 名前:816 mailto:sage [2008/01/14(月) 21:19:52 ] >>833 訂正です、すみません。 void sub(int MAX){ scanf("%d",&MAX); } int main(void){ int MAX, input[MAX]; ・ ・ ・ }
838 名前:816 mailto:sage [2008/01/14(月) 21:22:24 ] >>835 すみません、定義ではなく呼び出しでした。ご指摘ありがとうございます。 >>836 サイズを入力で指定したいのですが、そのプログラムはサブルーチンで記すことが条件です。
839 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:25:06 ] >>833 若干エスパー。 丸写しはどーかと思うけど、こういうことか? void sub(int *MAX){ scanf("%d",&MAX); } int main(void){ int MAX; int *input; sub(&MAX); /* int input_NG[MAX] <- これはムリ。配列の宣言では定数しか使えない */ input = malloc(MAX * sizeof(int)); ・ ・ ・ free(input); }
840 名前:816 mailto:sage [2008/01/14(月) 21:37:44 ] >>839 ご回答ありがとうございます。 分かりづらくなってしまい申し訳ございません。 int MAX = 10; int main(void){ int main[MAX]; ・ ・ ・ このように、最初から数値を指定するのではなく、 MAXの値をscanf等の入力で毎回変更することはできませんか? またできる場合、それをサブルーチンでまとめられますか? イメージはこんな感じになります。 scanf("%d",&MAX); int input[MAX]; 何度もすみませんがよろしくお願いします。
841 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:53:30 ] >>840 一応そのイメージで839を書いたんだけど・・・。 要はmallocを使いたくない(or知らないので分からない)ってこと? どうしても配列ってことであれば、おそらく分からないだろうけど C89ならムリ。C99なら出来る。 つまりコンパイラによる。 例えば俺が知ってるうちではVCでは出来ない。gccは最近のであれば出来る。
842 名前:816 mailto:sage [2008/01/14(月) 21:53:33 ] >>839 /* int input_NG[MAX] <- これはムリ。配列の宣言では定数しか使えない */ すみませんようやく意味が分かりました。 本当に詳しくありがとうございました。
843 名前:816 mailto:sage [2008/01/14(月) 22:01:13 ] >>841 #include <stdlib.h>とセットでちらっとだけ見た事があるので 調べて分かれば使えると思いますが、分からないということでお願いします。 別のプログラムで指定した値をファイルに出力し、当プログラムで読み込むというような方法はあるのでしょうか?
844 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:08:52 ] >>843 とりあえずfopen辺りでファイルの入出力ができるよ(他にもあるけど) それも分からないの?
845 名前:816 mailto:sage [2008/01/14(月) 22:17:29 ] >>844 そこは以前にある程度習っているので復習すればできると思います。 ありがとうございます。
846 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:18:52 ] >>843 >調べて分かれば使えると思いますが、分からないということでお願いします。 お願いされてもwww とりあえず十分に大きい固定サイズの配列を用意するか、 mallocを調べるのが良いと思うよ。
847 名前:816 mailto:sage [2008/01/14(月) 22:34:59 ] >>846 >お願いw すみません余計でした^^; >固定サイズ とても参考になりました。 0〜固定サイズまでで値を指定することならできそうです。 ありがとうございました。 時間があればmallocを扱えるようにしたいと思います。
848 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:44:03 ] 質問。 ハッシュ法について勉強してるんだけど、格納されたデータ(学籍番号と氏名)を読み取る際に、学籍番号の数(生徒数)を読み取る部分的なプログラムが分かりません。 どういう構文使えばいいでしょうか? 読み込みはこんな感じです↓ /* データファイルの読み込み */ if ((fp=fopen("DATA","r"))==NULL){ printf("File \'DATA\' is not found !\n"); } while ( fscanf(fp, "%d %s", &data_zipcode, data_address) > 0 ) { printf("%d : %s\n", data_zipcode, data_address); /* データの格納 */ if ( StoreData(data_zipcode, data_address) == 0 ) { printf("Hash Table is full !\n"); } } fclose(fp);
849 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 17:05:19 ] >>848 ファイル内のデータの総数を知りたいなら、一回空読みすればよかろ。 つーか、それってハッシュ法と関連するのか?
850 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 17:50:05 ] >>849 ハッシュするための下準備。んで、出来ました。ありがとうございました。
851 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:06:23 ] if ((fp=fopen("DATA","r"))==NULL){ printf("File \'DATA\' is not found !\n"); } いっつも思うんだけどさ、これって何したいの? ファイルオープン失敗したまま処理続けるなよ
852 名前:N [2008/01/15(火) 20:07:27 ] ナップザック問題を解説付きで教えてください。
853 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 20:17:11 ] >>851 その箇所だけならなんとも言えんだろーがw
854 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:25:42 ] #include <stdio.h> #include <stdlib.h> #define MAX_LINE 128 int main(void); int main(void) { char buf[MAX_LINE]; int n; printf("降水確率を入力してください。\n"); gets(buf); n = atoi(buf); ptintf("降水確率は %d %% です。\n", n); if (n >= 50){ printf("傘を忘れずにね。\n"); } else { printf("傘はいりません。\n"); } printf("いってらっしゃい。\n"); return(0); } /*これ↑のどこが悪いのか教えてください*/
855 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:31:57 ] gets(),ptintf,return(0);
856 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:47:31 ] ていうかなんでmain関数にもプロトタイプ宣言してんの?
857 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:01:51 ] >>852 ググった方が早いと思うよ。 検索ワードはナップザック・ナップサック・動的計画法とかで アプレット使った図解解説ページがあったと思う。 C言語の質問というよりアルゴリズム全般、数学の方が分野としては近いと思う。
858 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:39:47 ] mainクソワロタwwwwwwwwwwwwwwww
859 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:21:59 ] >>854 >/*これ↑のどこが悪いのか教えてください*/ 降水確率が40%でも傘を持たせない根性。
860 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 07:03:52 ] グレゴリウス暦の定義を利用して入力された日は何曜日か計算するにはどうしたらいいでしょうか?
861 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 07:28:06 ] >>860 つ[time.h]
862 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 07:31:21 ] >>860 ツェラーの公式
863 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 08:29:24 ] >>860 適当な起算日からの日数を計算して7で割ったあまりを得よ。
864 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 16:44:51 ] typedef struct{ int data[100]; } test; int func(const test *x); int main{ test data; ... //省略 for(i=0; i<10000; ++i){ int temp; temp = ...; //省略。dataの要素を使ったなんかやたら複雑な計算 func(&data); printf("%d", temp); } return 0; } ちゃんとしたコンパイラなら、 funcの引数がconstポインタだからループ中でdataの値は変更されない、と解釈して 毎回やたら複雑な計算をするようなことはしないように最適化してくれますよね?
865 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 16:48:20 ] ちゃんとしたコンパイラがあればね。
866 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 16:57:04 ] ないんですか? たとえばVCとかgccではどうですか。
867 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:03:13 ] 自分で確かめろ
868 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:18:47 ] いやgccもVCも持っていなくて…… アセンブラも読めないし
869 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:21:57 ] なら入手して確かめればいいじゃん。
870 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:22:36 ] constなんかキャストすればいくらでも外せるからな・・・最適化してしまうわけにはいかんような気がする
871 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:42:48 ] >>864 そんな保証はどこにも無いから素直にループの外に出しておけ。 自分の為だけなら好きにすりゃいいけど、他人が読むなら言いようの無い不安感 (このコードを書いた奴はまともな人間知性を持っているのか・・・他にも問題ありそうだな・・・) を煽るだけだからやめておけ。
872 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:47:40 ] ループの中で毎回計算しないものを、ループに入れる神経がわからない。
873 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:59:29 ] >(このコードを書いた奴はまともな人間知性を持っているのか・・・他にも問題ありそうだな・・・) あるあるw
874 名前:864 mailto:sage [2008/01/16(水) 20:11:05 ] 要するに最適化してくれないということですね? ありがとうございます。 それと、「const*って最適化に使われているのかな」という疑問が唐突に湧いてきたので質問したものでして、 別にこのコードを実際に使うわけでもないのでいろいろとご安心ください。
875 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:16:37 ] 一度計算した結果はまた同じになることが保証されてるのは関数型言語だけだからな。 Cは最悪裏でサブスレッドがなんかやってるかもしれないし最適化には限界がある。
876 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:25:22 ] >>874 const*自体は最適化のヒントに使われているよ。 ただ、>864のケースでは使ってないと思うけど。
877 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:43:46 ] >>864 その最適化はまともなのか?
878 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:48:22 ] txtファイルの中にある100を探し出してカウントするプログラムを書かないといけないのですが 100を見つけるたびに一つカウントしていくプログラムを組む場合どのような事をすればいいのでしょうか
879 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:50:14 ] char *sの中から100を検索するコードを書け それを一行に複数あっても見つかるように拡張しろ それを複数行に対応させろ いじょ
880 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:57:56 ] 十分に大きな配列を用意 txtファイルを読み込む strstrでNULLがでるまで検索 検索した回数を数えればおk
881 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:20:28 ] ありがとうございます やってみます
882 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 04:31:11 ] でかい配列なんてイヤだっていうならこんな方法もある。 char buf[4] = {0}; int ch, cnt = 0; while((ch=fgetc(fp)) { buf[0] = buf[1]; buf[1] = buf[2]; buf[2] = ch; if(atoi(buf)==100) cnt++; }
883 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 04:31:54 ] while((ch=fgetc(fp))!=EOF)だった。
884 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 06:32:40 ] >>882 っ 1000
885 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 06:52:16 ] >>884 ばーかwww
886 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 07:47:18 ] >>884 具体的に説明していただけませんか?
887 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:15:05 ] >>884 僕には「100」が含まれているように見えますが・・・?
888 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:38:06 ] buf[3]が常に'\0'であることに気付いてないのでしょう。
889 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:27:15 ] int filename; scanf("%d",&filename); fopen("filename.txt","w"); キーボードから任意のファイル名でファイル作りたいんだけど うまくいかないです。お願いします。
890 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:28:41 ] char filename[32]; scanf("%s", filename); fopen(filename, "w");
891 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 14:31:00 ] >>890 どうもです intじゃダメか…
892 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:44:02 ] なぜintでいけると思ったんだよw
893 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:45:39 ] int fileNo; scanf("%d", & fileNo); char fileName[100]; sprintf(fileName, "file-%d.txt", fileNo);
894 名前:884 mailto:sage [2008/01/17(木) 18:43:09 ] これがフルボッコというものかwww エスパー解釈して数値が並んでいるテキストから 特定の数値の個数をカウントするんだと思ったんだが違うのか? >>878 テキストに含まれる "100" という文字列の数を数えたかったの?
895 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:46:50 ] 仮に>>878 の真意が数値のうちから100を数えたかったとしても、 >>878 だけしか書かれていない以上、>>882 は十分な答えになってるだろ。
896 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:48:42 ] っていうかそんな問題ならfscanf()で数値を読めばいいだけで悩むこともないと思うが。
897 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:06:17 ] 除算法を使ったハッシュ関数ってどうすればいいの? 一文字読み込むごとに割って余りを出してその余りを足していけばいいのかな? で最後まで読み込み終わったらまた割って余りを出すという感じか? 全く見当違いのことを書いていたらすまん。
898 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:12:51 ] >>897 ん? ハッシング(Hashing)↓ www.u-gakugei.ac.jp/~miyadera/LECTURE/algo2/5-3.html
899 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:20:25 ] >>898 それだ。 文章を読み込ませてハッシュ値を出したいんだが、>>897 のような感じでいいのかな?
900 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:29:46 ] 精度を気にしないならそれでいい
901 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:35:26 ] ありがとう。 一応考え方は間違っていないようで安心した。
902 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:26:26 ] >>861-863 ありがとうございます とりあえず前年度までの総日数と現在の総日数を出せたたのですが そこからどうしたらいいのでしょうか? for文とか使うんですか?
903 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:42:19 ] >>902 ツェラーの公式
904 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:50:47 ] 1月と2月の計算に注意な
905 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:43:47 ] まず基準となる日の曜日がわかってないとだめだよw
906 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:50:23 ] だからそんなことしなくてもmktime()で教えてもらえばいいだろ。
907 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:18:52 ] それで最初の質問の用件、「グレゴリウス暦の定義を利用」したことになるのか?
908 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:38:56 ] >>902 1582年10月15日が金曜日だから、そこからの日数を7で割れば何曜日かわかるでしょ。
909 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:46:01 ] >>907 Cの標準関数がグレゴリウス暦の定義を利用していないとでも?
910 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:52:28 ] >>909 たとえそうでも、元の質問者の意図通りじゃないだろう
911 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:53:53 ] 標準関数は1970年以降しか扱えない時点で グレゴリウス暦の定義を利用しているともしていないともいえない。
912 名前:902 mailto:sage [2008/01/18(金) 20:21:50 ] とりあえずこんな感じの問題です 西暦1年1月は月曜日 1年は通常365日、閏年は366日 4で割り切れる年は閏年 400で割り切れる年は閏年 100で割り切れる年は閏年ではない 変数名関数名を作成 goto文は使用しない 関数途中でのreturnプログラム途中のexitはしない 外部関数は使用しない
913 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:29:48 ] >西暦1年1月は月曜日 意味不明。
914 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:29:51 ] >>912 丸投げするならこちらへどうぞ C/C++の宿題を片付けます 101 pc11.2ch.net/test/read.cgi/tech/1197132472/ これは現行スレじゃないがな
915 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:09:54 ] 西暦1年とかまで考えようとしたら、 途中暦を正すために何日かすっとばしたのも考慮に入れるのけ?
916 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:14:29 ] >>913 そうなんですか? 問題にはそう書いてあるのですが・・・ >>914 ありがとうございます そっちでやってみます
917 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:16:00 ] 質問させていただきます。 ttp://www.geekpage.jp/programming/linux-network/multicast-2.php このページで紹介されている様なUDP受信プログラムから、 受信したパケットの送信元IPアドレス(192…)を調べるにはどうすればよいでしょうか?
918 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:21:22 ] >>917 recvfrom pc11.2ch.net/test/read.cgi/tech/1186418855/
919 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:11:04 ] >>918 おかげさまで解決できました。どうもありがとうございました。
920 名前:デフォルトの名無しさん [2008/01/20(日) 18:03:14 ] C#厨です。C始めました。 #define A 1 #define B 2 int main(){ int i = A + B; int j = A + B; int hoge[i][j]; } で 新規テキスト ドキュメント.c 新規テキスト ドキュメント.c(7) : error C2057: 定数式が必要です。 新規テキスト ドキュメント.c(7) : error C2466: サイズが 0 の配列を割り当てまたは 宣言しようとしました。 新規テキスト ドキュメント.c(7) : error C2057: 定数式が必要です。 新規テキスト ドキュメント.c(7) : error C2466: サイズが 0 の配列を割り当てまたは 宣言しようとしました。 新規テキスト ドキュメント.c(7) : error C2087: 'hoge' : 添字がありません。 新規テキスト ドキュメント.c(7) : error C2133: 'hoge' : サイズが不明です。 です。どうしたらいいでしょうか?