[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 00:45 / Filesize : 237 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 23



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/

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' : サイズが不明です。

です。どうしたらいいでしょうか?

921 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:11:44 ]
C言語は変数を用いて配列の宣言はできひんのよ

922 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:17:43 ]
1. C++コンパイラの力を借りる。
拡張子cppにして、こういう風に書く

const int i = A + B;
const int j = A + B;
int hoge[i][j];

2. プリプロセッサの力を借りる。
#define i (A + B)
#define j (A + B)

本当に実行時まで変数の値がわからない時の話はまた今度。
お前の見ている本やWebサイトを読み進めていれば、その内出てくるだろうし。



923 名前:デフォルトの名無しさん [2008/01/20(日) 18:17:55 ]
>>921
なぬぅ!なんて使えない糞言語!
ユーザーの入力.etcによって必要なだけ配列を確保するにはどしたらいいん?

ポインタはいいとして(C#にもあるし)、プロトタイプ宣言とか、変数の宣言はブロックの先頭とか、
面倒な決まりが多いぜ…orz

924 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:19:04 ]
その例で無理矢理実現するなら。

#define A 1
#define B 2
#define i (A+B)
#define j (A+B)

int main(){
int hoge[i][j];
}

925 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:19:11 ]
>>923
mallocとか使え

926 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:19:52 ]
C++ の std::vector 使った方が

927 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:20:23 ]
まさに高級言語により生まれたゆとり世代。

928 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:20:45 ]
>>926
つ[スレタイ]

929 名前:デフォルトの名無しさん [2008/01/20(日) 18:22:06 ]
>>922
いあ、C#で書いた迷路の生成プログラムを移植してて、
コマンドライン引数で指定した迷路のサイズによって
2次元配列のサイズを変えたいのね。

コンパイラはVC++EEのコマンドライン使ってるのでC++のコードもおkだけど
出来ればCの範囲でやりたいでふ。

930 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:23:10 ]
>>925
麻呂?首ググって来る

931 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:23:12 ]
malloc 一択。
演算子のオーバーロードとかないから、
何かアクセス関数作っとけ。

932 名前:925 mailto:sage [2008/01/20(日) 18:23:14 ]
(´・ω・`)



933 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:25:02 ]
あらかじめ最大サイズを決めておくという手もなくはない。
エレガントではないが。

934 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:27:32 ]
gccで-std=c99使えばいいよ。

後の規格改定で、変数宣言の位置の縛りもなくなったし、
配列の要素数に変数が使えるようにもなった。
が、しかし、需要がなくてVisual C++は対応していない。

935 名前:920 mailto:sage [2008/01/20(日) 18:33:38 ]
www9.plala.or.jp/sgwr-t/lib/malloc.html
この麻呂でいけそう。超thx!
これってフリー忘れるとプログラム終わってもメモリ使えないままなの?
だとしたら怖い。
C#は案セーフじゃなければ何やってもプログラムが落ちるだけだから何でも試せたのに。

>>934
それって、今のANSI?の規格なら出来るけどVCは遅れてる子だから駄目ってこと?
ならVC2階の窓から捨てる。

936 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:36:31 ]
>>935
フリーを忘れないようには
どうするといいかってのを
考えながらくむのも
おもしろいもんだよ

937 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:37:57 ]
>>935
プログラムが終了すればおk
C#のunsafeとほぼ一緒だと思うけど

938 名前:920 mailto:sage [2008/01/20(日) 19:09:27 ]
>>936
{書いたら直ぐに
}書いて、その間にコードを書くみたいに
麻呂したら直ぐにフリーして間にコード書いちゃ駄目?

>>937
よかた。ちゃっちゃいプログラムなら大事にはならなさそうね。

939 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:10:38 ]
いやいやいやいや、
終了すれば大丈夫だからって
放置する癖は付けない方がいいぞ

940 名前:920 mailto:sage [2008/01/20(日) 19:22:43 ]
>>939
それはだいぢょぶ。
ただ、びくびくしながら書いてたら上達しにくい気がするから心配だっただけ。

もひとつ質問していいかな。
int main(){
int hoge[10][10];
hoge[10][10] = 100;

poke(hoge);
return 0;
}

int poke(int *moge){
return *moge[10][10];
}

って平気?一次元だと出来たんだけど。
試してもいいかなぁ?

941 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:06:48 ]
mallocを麻呂って書くヤツはカス。

942 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:17:08 ]
>>935
大丈夫。VC++みたいなのが世の中の多数派。使う人間、誰もいないし。

たとえ解放し忘れても、プログラムが終了すればWindowsが丸ごと解放する。
あと、マネージドなプログラムで何やってもプログラムが落ちるだけというなら、
アンマネージドなCのプログラムだって、
何やってもプログラムが落っこちるだけで済むと言える。
9xのWindowsでもない限り。



943 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:26:32 ]
>>940
そもそもhoge[10][10]の参照はまずくないか

944 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:29:30 ]
mallocってなんて読むの?
えむあろっく かと思ってるんだけど

945 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:31:57 ]
>>944
宗教論争みたいになっちゃうけど人間関係に問題が起きない範囲で好きに読めばいいと思う。
俺は普段はまろっくって読んでる

946 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:40:08 ]
ネイティブはマロックって言うらしい
ソースは俺

947 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:40:51 ]
まろっくって読んでるけど個人でやってるから口に出した事ないな
プログラマだと口に出して言うことあるのか?

948 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:43:23 ]
動的確保!って叫んでる

949 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:43:26 ]
普段はC++だから口に出して言ったことは無いな

950 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:46:54 ]
【char】変な読み方するな その2【ちゃー】
pc11.2ch.net/test/read.cgi/prog/1177251487/

マジレスするとカタカナ表記でGoogle検索して多い方を使っておけばノープロブレム。

951 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:48:41 ]
ちゃーだと最近のクソ芸人のギャグまでひっかかる

952 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:45:34 ]
>>940
平気じゃない。
2次元配列を1次元配列にマップしたときのインデックスを計算汁。



953 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:50:46 ]
int hoge[10][10];

配列の最後は
hoge[9][9];
よってオタワ

954 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:53:56 ]
int poke(int (*moge)[10]){
return moge[9][9];
}

こういうのならいいんでしょうか・・?

955 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:08:57 ]
int poke(int moge[][]){
}
って感じにできなかったっけか?

956 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:10:32 ]
>>955
それはない

957 名前:920 [2008/01/20(日) 23:16:34 ]
>>952
でけた。THX
でも、こんなの読めないよ…。
hoge[2番目の長さ * 1番目の添え字 + 2番目の添え字]

hoge[1番目の添え字][2番目の添え字]
と同じだなんて気付きようがないぬ
もっと可読性が高い書き方はないかにょ…。

958 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:24:05 ]
>>955
最低でも int poke(int moge[][N]) の N が必要


959 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:36:12 ]
>>957
関数にすればいいじゃん

960 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:41:59 ]
>>957
>>954
の方法は?

961 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:45:25 ]
>>960
2番目の長さが固定になるだろ・・・

962 名前:デフォルトの名無しさん [2008/01/21(月) 00:49:55 ]
Cプログラマ必須テキストです!

mori.eco.to/



963 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:21:37 ]
マルチ乙としかいいようがないな

964 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:23:42 ]
ざっと見てみたけど自意識過剰サイトでわろた
しかもテキストごときに8000円とか誰もひっかからんだろwww

965 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:40:05 ]
在学中に情報系の国家試験である、基本情報処理技術者、ソフトウエア開発を取得

極普通じゃねーかwwwww

966 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:45:21 ]
ばかじゃねーの
8800円あったら専門書買うわーバーカ

967 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:05:24 ]
構造体の初期化で教えてください。

(1)
struct Type x = {.var = NULL};

(2)
struct Type *x;
x = (struct Type *) malloc(sizeof(struct Type));
x->var = NULL;

(3)
struct Type *x;
x->var = NULL;

とあって、(1), (2) だと問題ないのですが、
(3) だと segmentation fault になってしまいます。
どういう理屈からでしょうか?


また、構造体を 「*変数名」で宣言したときは、最初に値を設定するときに、
必ず malloc をしてからでないといけないのでしょうか?

よろしくお願いします。

968 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:07:49 ]
ポインタってのはどこかの実態をポイントしてなきゃアクセスできるわけがねぇ

969 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:08:12 ]
xはその構造体の型へのポインタだから

970 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:10:05 ]
>>967
ポインタがなんなのかまったく理解できてない

struct Type *x;
で用意されるのは構造体struct Type がどこにあるかを表す変数だけ
構造体の本体はない
mallocでそれを用意してやってる

971 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:26:02 ]
long と long int は何が違うんでしょうか

972 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:33:25 ]
いっしょです



973 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:33:43 ]
タイプ数

974 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:20:07 ]
音声を出力するにはどうすればいいのかな?

975 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:20:44 ]
環境書け

976 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:31:16 ]
センサーがあるのでそれで感知をした時に
音声を出力するプログラムを作るにはどうすればいいですか?

977 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:34:52 ]
センサーの入力を監視する部分と、音声を出力する部分を作ればいける

978 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:36:40 ]
音声の出力する部分を作るには
どうすればどのようなプログラミングを作ればいいですか?

979 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:40:22 ]
Cの標準機能じゃ無理だからOSとかコンパイラとかを書かないと答えようがない

980 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:33:40 ]
>>978
putchar('\a');

981 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:44:54 ]
>>978
「プログラミング」は作れません。

982 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:54:47 ]
>>978
音声合成とか勉強すれば...



983 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:56:35 ]
センサーって、組み込み?
それなら、周辺回路によるけどどこかのポートをパタパタ。


984 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 19:47:42 ]
>>978
window.hをインクルードしてBeep関数使えば鳴らせるよ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef