くだすれC言語(初心者用) Part.2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/02/22(木) 08:16:03他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
C使いが優しくコメントを返しますが、
お礼はC言語の布教と初心者の救済をお願いします。
くだすれC言語(初心者用)
http://pc10.2ch.net/test/read.cgi/tech/1153542424/
0002デフォルトの名無しさん
2007/02/22(木) 08:37:420003デフォルトの名無しさん
2007/02/22(木) 10:10:06元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて派遣やってるバカのことw
前の会社を裏切り、結局派遣先からも騙されてる。
そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉
自分でも騙され裏切れられてることは薄々わかってるから派遣問題の話が出るとウッキー!って逆ギレw
0004デフォルトの名無しさん
2007/02/22(木) 17:06:100005デフォルトの名無しさん
2007/02/22(木) 22:28:470006デフォルトの名無しさん
2007/02/23(金) 00:54:400007デフォルトの名無しさん
2007/02/23(金) 00:57:260008デフォルトの名無しさん
2007/02/23(金) 02:21:250009デフォルトの名無しさん
2007/02/24(土) 11:52:390010デフォルトの名無しさん
2007/02/24(土) 11:54:400011デフォルトの名無しさん
2007/02/24(土) 14:45:18Double.isNaN
Double.isInfinity
0012デフォルトの名無しさん
2007/02/24(土) 14:49:56スレタイ嫁。
0013デフォルトの名無しさん
2007/02/24(土) 15:10:31C言語のreturn文てあまり使わないんじゃないの?
0014デフォルトの名無しさん
2007/02/24(土) 15:12:340015デフォルトの名無しさん
2007/02/24(土) 15:15:35C言語の関数をひとつしか作らないんじゃないの?
0016デフォルトの名無しさん
2007/02/24(土) 15:21:47isnan,isinifnite
0017デフォルトの名無しさん
2007/02/24(土) 15:22:140018デフォルトの名無しさん
2007/02/24(土) 15:31:32isnanはC99要求だね。
isinifniteってのはないが、isinfがC99から
fpclassifyもだけど
0019デフォルトの名無しさん
2007/02/24(土) 15:37:56hoge( hage() ) みたいに、結果をそのまま他の関数に渡す場合は?
0020デフォルトの名無しさん
2007/02/24(土) 15:56:320021デフォルトの名無しさん
2007/02/24(土) 16:06:160022デフォルトの名無しさん
2007/02/24(土) 16:46:570023デフォルトの名無しさん
2007/02/24(土) 18:11:440024デフォルトの名無しさん
2007/02/24(土) 18:20:07どゆこと?kwsk
0025デフォルトの名無しさん
2007/02/24(土) 18:33:39右だとなんだろ。
0026デフォルトの名無しさん
2007/02/24(土) 19:47:41たぶん、>>23が右と左の区別もつかない馬鹿なんじゃないのか?
0027デフォルトの名無しさん
2007/02/24(土) 19:48:37たぶん、>>23が右と左の区別もつかない馬鹿なんじゃないのか?
0028デフォルトの名無しさん
2007/02/24(土) 22:34:02複数の型で値渡ししてるの?
int printf(const char *format, ...);
...っていうのが可変長引数っていうのまでは
わかったんだけど・・・
個人的予測では、void*で受けて、
*formatの内容で型キャストしてるのかなぁ・・・と。
0029デフォルトの名無しさん
2007/02/24(土) 22:37:47どうやっているかはコンパイラ次第でどうにでもできるようマクロで隠されている。
003028
2007/02/24(土) 22:44:04そうすると、いろいろやり方があるって事ですか?
例えばでいいので教えてもらえませんか。
0031デフォルトの名無しさん
2007/02/24(土) 22:53:3829の言うva_startなど<stdarg.h>にある一連のマクロを使うことになっている。
コンパイラは、可変長引数をどうやって実現していようと、
<stdarg.h>の内容を定められたとおりに実装しなければならない。
だから結局使う側は<stdarg.h>のマクロの使い方を知っていれば良く、
どうやって実現されているかということは知る必要など無い。
もちろん理解を深めるために知りたいとかそういう話は別だ。
0033デフォルトの名無しさん
2007/02/24(土) 23:10:35C言語的には判断できないので、printfのように%指定で判断する(だから%指
定の数やデータ型と引数にズレがあるとおかしなことになる)約束にするか、
型情報とデータをペアで交互に渡し、最後の引数として特定の値(NULLとか)の
ものを積むとか決めておく。
0034デフォルトの名無しさん
2007/02/25(日) 19:44:27Visual C++ 2005 Express Editionで、
C++のプログラムを作るには、
Visual C++ 2005 Express Edition
Microsoft Platform SDK
インストールした後はこれだけあればいいんでしょうか?
Microsoft MSDN 2005 Express Edition
Microsoft SQL Server 2005
Microsoft SQL Server Natibe Client
Microsoft SQL Server VSS Writer
Microsoft SQL Server セットアップ サポート ファイル
これらは必要ありませんか? 削除してしまっても大丈夫でしょうか?
PCを起動するたび、タスクマネージャを見ると
sqlserve.exeというのが100MB近くもメモリを使っているようなのです。
HDもかなりの量を使っているので、削除できるものがあれば削除したいのですが。
003528
2007/02/25(日) 21:44:12詰まったので、又質問させていただきます。
stdarg.h内にてva_startを参照したところ__builtin_va_startに対して
マクロ定義されていたました。
__builtin_va_startとは、一体何者なのでしょうか・・・
検索したのですが、解説しているページがなく困っています。
よろしくお願いいたします。
0036デフォルトの名無しさん
2007/02/25(日) 21:46:52コンパイラの開発元にでも問い合わせとけ
0038デフォルトの名無しさん
2007/02/25(日) 22:57:30どれも使わないなら削除してしまえ。
そもそもVC++のインストール時にインストールしないよう指定できる。
MSDNには関数リファレンスやコンパイラオプションなどの説明などが
入っているが、必要ならExpress付属のものよりも、
オンラインのものや別途ダウンロードのもののほうが良い。
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596AF5-CC58-45AF-A14B-DF627A31E783&displaylang=ja
0039デフォルトの名無しさん
2007/02/25(日) 23:10:18va_arg が何をやってるかを低レベルで理解したいってこと?
関数の引数はスタックに積まれるので
最初の引数のポインタを渡すことで
それ以降の引数のアドレスを求めているだけ。
取り出すときは型情報を指定することでサイズがわかる。
stdarg.h 使わずに実装すると勉強になりますよ。
0040デフォルトの名無しさん
2007/02/26(月) 01:19:22どうもありがとうございます。
これですっきりします。
0041デフォルトの名無しさん
2007/02/26(月) 01:35:15おまいさんが使ってるのはgccかな?
このまわりの実装は処理系によって全然違う。
ANSI C に準拠していない古い処理系だと va_start に
引数がなかったりするようなヤツもある。
>>39 が言ってるのは一般的な処理方法の一つに過ぎない。が、
自分が使ってる処理系/環境でのこのまわりの動作を
理解できてれば↓こんなアホなこともできる。
http://mx1.tiki.ne.jp/~wraith/tips0005.htm
0042デフォルトの名無しさん
2007/02/26(月) 05:00:150043デフォルトの名無しさん
2007/02/26(月) 20:33:44>用例1は未だしも
そう思った、お前もカス以下だな。
0044デフォルトの名無しさん
2007/02/27(火) 00:19:17WindowsのCreateWindow(Ex)はおそらく用例2を使っている。
だからどうしたということだが。
0045デフォルトの名無しさん
2007/02/27(火) 21:56:35ポインタ以前で難しいところやつまずきやすい所はどこ?
0046デフォルトの名無しさん
2007/02/27(火) 21:59:370047デフォルトの名無しさん
2007/02/27(火) 23:06:48初心者がマニュアル読まず検索せず過去ログを読まずに
質問してくる
0048デフォルトの名無しさん
2007/02/27(火) 23:22:020049デフォルトの名無しさん
2007/03/03(土) 13:14:32どれがいいのか教えていただけないでしょうか?
0050デフォルトの名無しさん
2007/03/03(土) 13:27:10つ ttp://www.7andy.jp/books/detail?accd=31444195
0051デフォルトの名無しさん
2007/03/05(月) 09:50:01配列で、効率的にメモリ確保をしたいのですが、どうやればいいでしょうか。
具体的には
・・・・・・・・・・・・・・・
・・・・・・・・・・・ ・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・v
こういう座標群があったとして、それを配列に確保していきたいのです。
point[x][y]のように宣言して、左上から値がなかったら0 あったら1のように確保していくと
無い部分のメモリが無駄に取られてしまうので
座標がある部分だけ、確保したいのです。
図は二次元ですが、それを3次元でやりたくて、そこで詰まっています。
ご指南お願い致します
0052デフォルトの名無しさん
2007/03/05(月) 09:51:36他のスレの方が聞けそうなので、こちらの質問は撤回させていただきます。
すみませんでした
0053デフォルトの名無しさん
2007/03/13(火) 15:13:44文字列str1の最後の'\0'に文字列str2の0からを一つずつ代入していけばいいのは
分かるのですが、やり方がわかりません。
どうすればできますか?
0054デフォルトの名無しさん
2007/03/13(火) 15:20:16char str1[10] = "STR1", str2[] = "STR2";
char *p = str1, *q = str2;
while(*++p);
while(*p++ = *q++);
puts(str1);
}
0055デフォルトの名無しさん
2007/03/13(火) 15:31:17ありがとうございます。
まだポインタのほうを勉強していないのでまだよく分からないのですが、
参考にしてみます。
0056デフォルトの名無しさん
2007/03/13(火) 15:56:35int i = 0;
int j = 0;
while (str1[i] != '¥0') { i++; }
whle (str2[j] != '¥0') { str1[i] = str2[j]; i++; j++; }
str2[j] = '¥0';
0057デフォルトの名無しさん
2007/03/13(火) 16:09:31親切にありがとうございます。
ちゃんとできました。
0058デフォルトの名無しさん
2007/03/15(木) 01:08:44たとえば、
int val = 7743;
とある場合、valは4桁というように。ただ、printf系は使わずに行いたいです。
10で割っていけばできるような気がするんですが、イマイチわかりません。
0059デフォルトの名無しさん
2007/03/15(木) 01:11:02高校数学の知識だろ。
0060デフォルトの名無しさん
2007/03/15(木) 01:13:34int val = 7743;
int keta = 0;
int temp = val;
for (; temp > 0; keta++, temp /= 10);
ただし val > 0 のときのみ
006158
2007/03/15(木) 01:18:03ありがとうございます。
0062デフォルトの名無しさん
2007/03/16(金) 22:14:48どうしてこれで文字列がコピーできるんですか。
0063デフォルトの名無しさん
2007/03/16(金) 22:20:36¥0を代入したところで式全体の値が¥0つまり整数としては0になり、
偽と見なされるのでループが終了する。
006462
2007/03/16(金) 22:39:36もうちょっと教えてください。
カッコの中の「左++」「代入」「右++」では、必ず真ん中の「代入」から走るってことでいいですか?
左右の++が同期取れてないとずれちゃうんじゃないの、
ていうのが一番疑問なところなのです。
0065デフォルトの名無しさん
2007/03/16(金) 22:43:09使うものとして控えてから1を加える。
前置なら1加えるのが先。
0067デフォルトの名無しさん
2007/03/17(土) 04:32:41do {
 *p = *q;
 p++;
 q++;
}while(*p);
ってことなんだよね。
初めて見たとき
while(*p) {
 *p = *q;
 p++;
 q++;
}
かと思ってなんで'\0'がコピーされるのかしばらく理解できなかったよ。
0068デフォルトの名無しさん
2007/03/17(土) 05:10:290069デフォルトの名無しさん
2007/03/17(土) 11:30:27上のdoはwhile(*(p-1))じゃないと。
0070デフォルトの名無しさん
2007/03/17(土) 11:36:56while (p[0] = q[0], p++, q++, p[-1] != '\0') ;
だな。
0071デフォルトの名無しさん
2007/03/18(日) 00:06:29int main(void)
{
FILE *fp;
fp=fopen("test.txt","w");
if(fp==NULL){
printf("エラー\n");
return 1;}
fprintf(fp,"ファイルに書き込みました。\n");
fclose(fp);
return 0;
}
このような処理を行う時に、return 1とreturn 0の違いはなんですか?
return 0で代用しちゃだめ?
0072デフォルトの名無しさん
2007/03/18(日) 00:26:48駄目じゃあないけど、
プログラムが正常終了したときに0を返し、
異常終了したときに0以外を返すのが慣習なので、
特段の理由がないときは慣習に従っておくのが得策。
0073デフォルトの名無しさん
2007/03/18(日) 01:00:43そのreturnの値を参考にするようになってることがある。
呼び出したプログラムが成功裏に動いたときに限って後続の処理を行うとか。
練習で作るようなプログラムでは実質的にはどんな数を返してもいい。
0074デフォルトの名無しさん
2007/03/18(日) 01:00:45#include <stdio.h>
int main()
{
char str[] = "tanaka tarou";
char str2[100];
char *p,*q;
p = &str[0];
q = &str2[0];
while(*p != '\0'){
if((*p != 'a') && (*p != 'i') && (*p != 'u') && (*p != 'e') && (*p != 'o'))
*(q++) = *p;
p++;
}
printf("%s ---> %s\n",str,str2);
return 0;
}
文字列の子音だけを取り出して表示するプログラムを作りたいのですが、上記のプログラムを実行すると
tanaka tarou ---> tnk tr@
のように最後にまったく関係のない文字が表示されてしまいます。その理由と解決策を教えてもらえないでしょうか?
0075デフォルトの名無しさん
2007/03/18(日) 01:06:190076デフォルトの名無しさん
2007/03/18(日) 01:32:01*q = '¥0';
007774
2007/03/18(日) 02:17:01回答ありがとうございます!解決しました。
なんともないように見えることもあるみたいですが、\0が抜けているとこういった不具合が起こるんですね。
0078デフォルトの名無しさん
2007/03/18(日) 10:30:31ところが見つかるまでずーーーーっと文字列が続いていることになってしまう。
0079デフォルトの名無しさん
2007/03/18(日) 13:44:10文字はコンピュータの中で数字で扱われていることと、
char型が0〜255、int型がそれ以上の範囲の数字を扱えることを考えると
文字を扱う時もint型でかまわないのでは?と思いました。
実際、int型で1文字出力できました。具体的には下です。
int a;
a=getchar();
printf("%c\n",a);
return 0;
しかし、文字列をint型で扱おうとすると、コンパイル時にエラーとなります。
int a[50]="Hello";
printf("%s\n",a);
return 0;
なぜ、int型では文字列が扱えないのか理解できません。
0080デフォルトの名無しさん
2007/03/18(日) 13:59:24getcharはEOFも返すのでint型を返すと宣言されており、実は正解。
EOFの場合を弾いてからchar型として扱うべき
> printf("%c\n",a);
可変個引数では全てint以上に拡張されて引数が渡される規則。
char型の値を渡そうとint型の値を渡そうと正常に動いてしまう。
> int a[50]="Hello";
できないという規則になっているからとしか言えない。
int型の配列に文字列を無理やり入れる方法はあるが、
文字列を扱う関数はchar配列、つまりsizeof (char) == 1バイトずつ
文字がメモリに格納されることを前提にコードが書かれているので、
無理にint型の配列にしたところで、正しく動作しない。
0081デフォルトの名無しさん
2007/03/18(日) 14:14:28これは、
int a[50];
a[0] = 'H';
a[1] = 'e';
a[2] = 'l';
a[3] = 'l';
a[4] = 'o';
a[5] = '\0';
とするか
int a[50];
for (int ic = 0; a[ic] = "Hello"[ic]; ++ic) ;
とすれば実装できなくは無いな。
0082デフォルトの名無しさん
2007/03/18(日) 14:16:540083デフォルトの名無しさん
2007/03/18(日) 15:13:05ありがとうございます
char a[50]="Hello"; と char a[50]={'H','e','l','l','o','\0'};
は違うのでしょうか?
手持ちの本では、特に違いは書いてないのですが・・・
0084デフォルトの名無しさん
2007/03/18(日) 15:18:10{'H','e','l','l','o','\0'} は文脈によって char[] とも int[] とも解釈できる。
0085デフォルトの名無しさん
2007/03/18(日) 15:23:15(その場合{'H', 'e', 'l', 'l', 'o', '\0'}のように解釈する)
という規則が特別に設けられている。
だからint a[50] = "Hello";はできない。
でもwchar_tがintとなっている環境なら、int a[50] = L"Hello";でいけるはず。
率直にwchar_t使えと言うとこだが。
0086デフォルトの名無しさん
2007/03/18(日) 15:49:35なるほど。試してみたところ、
int a[50]={'H','e','l','l','o','\0'}; ○
char a[50]={'H','e','l','l','o','\0'}; ○
int a[50]="Hello"; ×
char a[50]="Hello"; ○
でした。
int a[50]={'H','e','l','l','o','\0'}; が>>80で言っていたint型の配列に
文字列を無理やり入れる方法にあたるんですかね?
また、>>80で>EOFの場合を弾いてからchar型として扱うべき
とありますが、どんな風にするんですか?
0087デフォルトの名無しさん
2007/03/18(日) 15:57:210088デフォルトの名無しさん
2007/03/18(日) 22:59:37int a[50]={'H','e','l','l','o','¥0'};
puts((char *)a);
をやってみるこった。思った通りの結果にならないから。
というわけで>>87になる。
0089デフォルトの名無しさん
2007/03/19(月) 10:30:28char a[100],b[100];
int i;
i = 0;
do { a[i] = b[i];
} while (a[i++] != '\0');
を、for文に書き換えたいのですが、
どうすれば良いでしょうか?
一応、
for ( i = 0; a[i] != '\0'; i++) {
a[i] = b[i];
}
としてみたのですが、うまくいきません。
0090デフォルトの名無しさん
2007/03/19(月) 10:57:27解決しました。
もう大丈夫です。失礼しました。
0091デフォルトの名無しさん
2007/03/19(月) 13:38:13どこから手を付けたら良いかさっぱり分かりません。
ヒントで良いので教えていただけませんか?
0092デフォルトの名無しさん
2007/03/19(月) 13:43:092.小文字だったら大文字に変換する
0093デフォルトの名無しさん
2007/03/19(月) 13:51:02ヒントを手がかりにしてやってみます。
0094デフォルトの名無しさん
2007/03/19(月) 14:08:581.文字は数字で表され、aからzは順番に数字が割り当てられている。
2.大文字と小文字の差は一定。
0095デフォルトの名無しさん
2007/03/19(月) 14:15:35ありがとうございます。
ASCIIコードの大文字と小文字の差を利用すれば良いんですね。
だんだん分かってきました。
ありがとうございます。
0096デフォルトの名無しさん
2007/03/19(月) 15:30:03お陰でislower出来ました。
isupperのプログラムも真似してやってみたら出来ました。
>>92>>94さん、親切に教えてくれてありがとうございました。
0097デフォルトの名無しさん
2007/03/19(月) 15:45:07な雑談:
C言語はアスキーコードでない、アルファベットの並びが素直じゃない文字
セットで動くことを認めているので、アスキーを仮定するのは行儀が悪いと
言えば悪い。また、英語以外では大文字小文字の規則が少々複雑なこともあ
り、単純な引き算では片付けられないこともある。
0098デフォルトの名無しさん
2007/03/20(火) 04:39:49どうしたらいいでしょうか
0099デフォルトの名無しさん
2007/03/20(火) 07:07:200100デフォルトの名無しさん
2007/03/20(火) 10:16:50それで間に合わないならプロセス間通信
0101デフォルトの名無しさん
2007/03/20(火) 10:42:13>>100
ありがとうございます。
自分、ズブズブの素人なもので、なかなか上手くいきませんが
調べまくって頑張りますです。
0102デフォルトの名無しさん
2007/03/20(火) 17:03:48data2にdata1のデータを小さい順に並び替えるにはどうすれば良いでしょうか?
sortはまだ習っていないので、数値を比較して、
小さかった順にdata2に代入していくという方法でやっていきたいのですが。
0103デフォルトの名無しさん
2007/03/20(火) 17:08:14カードとか用意して自分で手作業で並べかえてみてその方法をプログラムにしてみる
0104デフォルトの名無しさん
2007/03/20(火) 17:11:540105デフォルトの名無しさん
2007/03/20(火) 17:22:52ありがとうございます。
そのまま代入していく形になるんですね。
本当に初心者なものですみません。
0106デフォルトの名無しさん
2007/03/20(火) 19:43:57int main(void)
{
int date1[5]={2,4,22,5,3};
int i,j,k,date2[5];
for(i=0;i<4;i++){
for(j=i+1;j<5;j++){
if(date1[i]<date1[j])
{k=date1[j];
date1[j]=date1[i];
date1[i]=k;}
}
}
for(i=0;i<5;i++)
date2[i]=date1[i];
for(j=0;j<5;j++)
printf("%d\n",date2[j]);
return 0;
}
>>102をやってみた。
こっちも初心者なもんで、評価たのむ。
forばっかでウザいとは思う。
0107デフォルトの名無しさん
2007/03/20(火) 20:06:20>数値を比較して、小さかった順にdata2に代入していくという方法。
これも立派な既知のソートアルゴリズムだ。Selection sort。
0108デフォルトの名無しさん
2007/03/20(火) 20:06:24このファイル名の部分についての質問です。
このファイル名は、大文字、小文字を区別してないみたいですが、
これって、仕様なんですか?
初歩的な質問ですが、よろしくお願いします。
0109デフォルトの名無しさん
2007/03/20(火) 20:07:580110デフォルトの名無しさん
2007/03/20(火) 20:41:44なるほど、仕様なんですね。
安心しました。
回答ありがとうございました。
0111デフォルトの名無しさん
2007/03/20(火) 22:26:47NTFSも区別しませんが何か。
0112デフォルトの名無しさん
2007/03/20(火) 22:32:03Macで動いてるRubyスクリプトを他所に持って行ってハマったことがある。
0113デフォルトの名無しさん
2007/03/20(火) 22:52:45NTFSは区別するよ。
Windowsの標準ファイルシステムドライバがFATとの互換性を維持するために、
大文字小文字の違いしかないファイルを同一視してるだけ。
SFUインストールすればオプションでCaseSensitiveな環境も構築できる。
0114デフォルトの名無しさん
2007/03/21(水) 06:33:29main() {
printf("Hello!");
return 0;
}
これで普通ならOKですよね?
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
sample1.c:
エラー E2209 sample1.c 1: インクルードファイル 'stdio.h' をオープンできない
警告 W8065 sample1.c 4: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main
)
*** 1 errors in Compile ***
って表示されて出力できないよorz
0115デフォルトの名無しさん
2007/03/21(水) 08:24:08コンパイラの環境設定に失敗しています。コンパイラの添付資料をよく読んで設定しなおしてみてください。
0116デフォルトの名無しさん
2007/03/21(水) 09:23:52クリップボードにコピーされるようにしたいのですが、上手く行きません。
VC++ Win32API スマートデバイス WM5.0SDKな環境です。
HWND hWnd;
HWND g_hEditbox;
TCHAR buff[256];
GetWindowText(g_hEditbox,buff,sizeof(buff)/sizeof(TCHAR));
if(OpenClipboard(hWnd))
{
EmptyClipboard();
char* buff;
UINT size = strlen(buff)+1;
HLOCAL clipbuffer = LocalAlloc(LPTR, size);
strcpy((char*)clipbuffer, LPCSTR(buff));
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}
SetWindowText(g_hStatic,buff)でHWND g_hStaticにbuffの文字列は表示出来ています。
よろしければご教示願います。
0117デフォルトの名無しさん
2007/03/21(水) 09:30:25固定メモリでは駄目、LMEM_MOVEABLEにしないといけない。
0118デフォルトの名無しさん
2007/03/21(水) 09:46:33こうなるのでしょうか。
んんん、上手く行かない
0119デフォルトの名無しさん
2007/03/21(水) 10:11:50LocalLockを呼んでハンドルからメモリへのポインタを取得する必要がある。
そしてアンロックすると再びハンドルが利用可能になる。
0120116
2007/03/21(水) 10:17:17とすることでなんらかのデータがクリップボードにセットされました
ペーストしてもなにも追加されませんが。
プログラミング初めて2日目なもんでまだ全然理解出来てないです。
勉強してきます。
0121デフォルトの名無しさん
2007/03/21(水) 10:19:220122デフォルトの名無しさん
2007/03/21(水) 10:19:460123デフォルトの名無しさん
2007/03/21(水) 10:30:350124116
2007/03/21(水) 10:55:02char*をwchar_t*, strcpyを_tcscpyなどに置き換えると
ちゃんとクリップボードにコピーでき、ペーストも出来ました。
スレ違い失礼いたしました。
レスくださった方ありがとうございます。
0125デフォルトの名無しさん
2007/03/21(水) 13:19:59int main(void) {
FILE *fp;
int i;
char ch[20];
fp = fopen("test1.txt","r");
if(fp == NULL) {
return 1;
}
printf("OPEN!!\n");
for(i = 0; i <1 ; i++){
fgets(&ch[i],20,fp);
}
printf("%s",ch) ;
fclose(fp);
return 0;
}
ファイルにabcdefgという文字列を書いておいてそれを読み取れたのですが、
for()のところの条件式をi<8としても、i<1としてもabcdefgと読み取れてしまう。
なぜ?
0126デフォルトの名無しさん
2007/03/21(水) 13:23:35fgets(&ch[i],20,fp);
はどういう動作をする?
0127デフォルトの名無しさん
2007/03/21(水) 13:39:55すいません。わからないです。
0128デフォルトの名無しさん
2007/03/21(水) 13:48:10どうしてもfgetsで1文字ずつ読みたいなら読んでもいいが、
書き方が間違っている。
fgetsは、最大で指定した数(20)-1の数の文字(バイト)を読む。
ただし、ファイルの最後か、改行にぶつかるか、エラーが発生するとそこまで。
20は、第1引数で確保した配列のサイズではなく、読み込みたい最大のサイズ+1。
-1したり+1したりするのは、読んだ後、末尾にfgetsが¥0を書き込むから。
0129:
2007/03/21(水) 17:29:07気温のデータがあって、10年後の気温がどうなっていくか?って
いうシミュレーションをC言語でできる?そもそもこの課題じたいプログラミング
ではできない?まだ卒論まで2年あって、C言語習ったばっかなんだけど、
こういう事プログラミングでできないかな?って思ってます。シミュレーション
をするのに最適な言語って何ですか?
0130デフォルトの名無しさん
2007/03/21(水) 17:33:430131デフォルトの名無しさん
2007/03/21(水) 17:40:49その辺の記述が全く無いので何もいえない
たとえば理想的な放物線をシミュレートするのは難しいができる事、
でも貴方の人生をシミュレートするのは出来ないこと(出来るかも?)
二つの違いはシミュレートするためのアルゴリズムの違いに因る
0132デフォルトの名無しさん
2007/03/21(水) 17:53:38気温シミュレーションは、別にC言語を使わずともできる。
0133デフォルトの名無しさん
2007/03/21(水) 17:53:53曲線を分析するならCで十分だろう。
気象シミュレーターみたいなものが作りたいなら、
Cでもできるが、そういう計算に最適化された言語もある。
0134デフォルトの名無しさん
2007/03/21(水) 17:57:23正直先生に聞いたほうが早いと思うぞ
0135デフォルトの名無しさん
2007/03/21(水) 18:14:24形式は何がいいんでしょうか?iniとかcfgとかdefとか
0136デフォルトの名無しさん
2007/03/21(水) 18:16:340137デフォルトの名無しさん
2007/03/21(水) 18:17:49拡張子はなにがいいかって質問?
0138デフォルトの名無しさん
2007/03/21(水) 18:17:53俺はユーザーに書き換えられても問題ないデータは.iniを使ってる。
0139129
2007/03/21(水) 18:19:32気温か待機電力のシミュレーションをしようか迷ってます。
まぁ卒論だからもっと練らないとだめだろうけどね!
待機電力量を出す計算の仕方はわかるから、それを何十年後は
どうなるか?っていうのはシミュレーションできる?実際は
将来、待機電力量を少なくする装置なんかも現在開発されてて
シミュレーションとは違う結果になるんだろうけど、その違いを
説明していくのも面白いと思ってます
0141デフォルトの名無しさん
2007/03/21(水) 18:54:41ふつうのユーザが弄れるようにするなら
デフォルトで関連付けられてるiniかtxtがいんでね?
0142デフォルトの名無しさん
2007/03/21(水) 18:55:370143デフォルトの名無しさん
2007/03/23(金) 17:03:55MessageBox(NULL, "message", "title", 0);
}
if (wParam == VK_RIGHT ){
MessageBox(NULL, "message", "title", 0);
}
のように同じ動作をさせる場合、
if (wParam == VK_LEFT ? VK_RETURN){
MessageBox(NULL, "message", "title", 0);
}
みたいに一つにまとめるにはどうしたらいいですか?
0144デフォルトの名無しさん
2007/03/23(金) 17:23:200145143
2007/03/23(金) 17:26:14ありがとうございます。
if (wParam == VK_LEFT || wParam == VK_RIGHT){
MessageBox(NULL, "message", "title", 0);
}
でいけました。
I でもいけたんですが、 I と II はどう違うんですか?
0146デフォルトの名無しさん
2007/03/23(金) 17:27:17|| は論理演算の or
全然違う
0147デフォルトの名無しさん
2007/03/23(金) 17:30:48感謝です。スッキリしました。
0148デフォルトの名無しさん
2007/03/23(金) 19:50:03三度実行したらまた別の動作をさせる、っていうのは可能でしょうか?
0149デフォルトの名無しさん
2007/03/23(金) 20:13:110150デフォルトの名無しさん
2007/03/23(金) 21:01:23数える変数をおいとけばよろし。
0151デフォルトの名無しさん
2007/03/23(金) 21:11:09いろいろ試行錯誤してますがどーもうまくいかず。。
0152デフォルトの名無しさん
2007/03/23(金) 21:22:58exeの実行回数となると、それなりの排他制御(同時に2つ起動したらどうなる?)
しなきゃならんのでご注意を。
0153デフォルトの名無しさん
2007/03/23(金) 21:26:39もうしばらく試行錯誤してみます。
0154デフォルトの名無しさん
2007/03/23(金) 21:51:46Cプログラミング言語診断室では「goto文と並ぶ諸悪の根源」とかいわれて不安になりました
ノート1ページに収まるような小規模なものでもやっぱりやばいんですかねぇ?
0155デフォルトの名無しさん
2007/03/23(金) 22:39:560156デフォルトの名無しさん
2007/03/23(金) 23:11:08かといって書かれた当時は良かったのかというとそうでもない。
超初心者を叩く初心者が書いた本。
まあ、フローチャートはオススメしないけど。
0157デフォルトの名無しさん
2007/03/23(金) 23:18:430158154
2007/03/23(金) 23:23:25ならやっぱり図とか使わずにいきなりコードに書いて簡単なメモ取りながら試行錯誤する方がいいんでしょうか?
それとも無理やり頭の中で全部やっちゃう癖をつける方がいいんでしょうか?
0159デフォルトの名無しさん
2007/03/23(金) 23:29:41やってるとわかるだろうけど、ちょっと処理が複雑になると
フローチャートなんて書いていられなくなる
0160デフォルトの名無しさん
2007/03/23(金) 23:31:570161デフォルトの名無しさん
2007/03/23(金) 23:32:440162154
2007/03/23(金) 23:51:29メモがよく怪文書になるのでこういう定型的な書式を使ってまとめていく方針でいこうと思います
ありがとうございました
>>161
今まではそのデータ構造を決めるのに流れ図を使ってました
流れ図で書いてうまくかけない場合はその原因を踏まえて構造を見直す・・・といった具合にです
よく考えなくても滅茶苦茶効率悪いですがほかにいい方法を知らなくてです
0163デフォルトの名無しさん
2007/03/24(土) 01:37:22そこで擬似プログラミング言語ですよ。
0164デフォルトの名無しさん
2007/03/24(土) 05:02:060165デフォルトの名無しさん
2007/03/24(土) 06:55:530166デフォルトの名無しさん
2007/03/24(土) 13:56:140167デフォルトの名無しさん
2007/03/26(月) 16:05:58他のプログラムの知識はほぼ皆無で、これが最初ってことなんだけど。
0168デフォルトの名無しさん
2007/03/26(月) 16:47:50やりたい事があるなら、
入門書なんかかわずにネット上で公開されてるC言語講座で十分です
0169デフォルトの名無しさん
2007/03/26(月) 21:00:590170デフォルトの名無しさん
2007/03/26(月) 21:18:250171デフォルトの名無しさん
2007/03/26(月) 21:28:450172デフォルトの名無しさん
2007/03/26(月) 21:38:43いきなりwindowsプログラミング、さらにMFCとかじゃなければ
(VisualC++はこれで挫折者を大量生産した)
いきなりC++からやっても大丈夫だと思う
0173デフォルトの名無しさん
2007/03/26(月) 21:53:290174デフォルトの名無しさん
2007/03/26(月) 23:17:01時間は十分にあるんだがなぁ。
0175デフォルトの名無しさん
2007/03/26(月) 23:22:300176デフォルトの名無しさん
2007/03/27(火) 08:21:52出てきた自動生成コードを見て「なんじゃこりゃ?わけわかんね」と挫折する人いそうだ。
なまじ経済力がある大人ならなおさら。
0177デフォルトの名無しさん
2007/03/27(火) 16:36:42{
int i,j;
FILE *fp1;
char x[256]; /* 格納用配列 */
for(i=0; i <= argc; i++ ){
fp1=fopen("argv[i]", "r");
for(j=0; x[j]!=EOF; j++){
fgets(x, 256, fp1);
}
}
for(i=0; i<=argc; i++){
printf("%s\n", x[i]);
}
}
最近C言語を初めて、ファイル入出力の勉強をしています。
実行時にテキストファイル名を入力し、そのファイルの内容を表示させるプログラムを
作りたいのですが、セグメンテーション違反と言われます。
どこがおかしいのでしょうか・・?
0178デフォルトの名無しさん
2007/03/27(火) 17:02:23あと、 argv[argc] はNULLになるからね。
i <= argc は i < argc で
0179デフォルトの名無しさん
2007/03/27(火) 17:03:28argv[0] は実行したファイル名が入るからね。
0180デフォルトの名無しさん
2007/03/27(火) 17:09:57>178でも>179でもないけど更に言うなら、fgets()したものをそのまま捨てているので、
そのままでは最後のファイルの最後の行のみがファイル数分表示されることになってしまう。
ファイルもクローズしていないし、ファイル入出力の基本を復習しましょう。
0181デフォルトの名無しさん
2007/03/27(火) 17:42:28#include<string.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
if ( argc < 1 ){
printf("failed file open");
exit(1);
}
int i,j;
FILE *fp1;
char x[256]; /* 格納用配列 */
for(i=1; i < argc; i++ ){
fp1=fopen(argv[i], "r");
for(j=0; x[j]!=EOF; j++){
fgets(x, 256, fp1);
printf("%s\n", x[j]);
}
}
fclose(fp1);
exit(0);
}
ありがとうございます。参考にして手を加えてみました。
しかしまだセグメンテーション違反と言われます・・
>>178>>179
iの初期値を1からスタートさせるという意味でよかったでしょうか。
>>180
同じfor文の中にfgetsとprintfを入れてみましたが、
これでfgetsしたものを使えるようになったのでしょうか?
0182デフォルトの名無しさん
2007/03/27(火) 17:57:04せめて、どの行で落ちたのかくらい自分でわかるようになってくれ
デバッガ使ってないんなら、せめて何行目までは動作したのか、
落ちたときの原因となる変数の中身は何なのか。
printf だけでもなんとかなるべ
0183デフォルトの名無しさん
2007/03/27(火) 17:57:450184デフォルトの名無しさん
2007/03/27(火) 18:18:57申し訳ありません。おっしゃる通りです。勉強してきます・・
>>183
ファイルの最後の行を判定したつもりです。
0185デフォルトの名無しさん
2007/03/27(火) 18:27:381ファイルだけのプログラムもできないのに複数ファイルをいきなり扱おうとするのが大間違い。
そのロジックで本当に、ファイルの最後の行が判定できると思う? なんで? どこかに書いてあった? 思い込んでない?
0186デフォルトの名無しさん
2007/03/27(火) 18:34:44#include<stdio.h>
int main(int argc, char *argv[])
{
/* argcは通常1以上になるはずなので(argc < 1)は常に偽になる */
int i, j;
FILE *fp1;
char x[256]; /* 格納用配列 */
for (i = 1; i < argc; i++) {
fp1 = fopen(argv[i], "r"); /* iの値に応じてargv[0]..argv[argc-1]まで順番に開く */
while (fgets(x, 256, fp1) != NULL) printf("%s", x); /* エラーかEOFになるまで(fgetsがNULLを返さない間)xに読み込んでゆきその内容を表示する */
fclose(fp1); /* 次のファイルを開く前に今開いているものを閉じる */
}
return 0;
}
0187デフォルトの名無しさん
2007/03/27(火) 18:36:130188デフォルトの名無しさん
2007/03/27(火) 18:40:01if (fp1 != NULL) {
while (fgets(x, 256, fp1) != NULL) printf("%s", x);
fclose(fp1);
} else {
printf("failed to open %s\n", argv[i]);
}
0189デフォルトの名無しさん
2007/03/27(火) 21:01:240190デフォルトの名無しさん
2007/03/27(火) 21:05:170191デフォルトの名無しさん
2007/03/27(火) 22:18:05次元の低い質問してすみませんでした。
0192デフォルトの名無しさん
2007/03/28(水) 00:51:55テストに失敗したときにはデバッガが役に立つ。
0193デフォルトの名無しさん
2007/03/28(水) 00:54:58デバッガがある環境でその扱いに慣れてるならデバッガでステップ実行だね。
0194デフォルトの名無しさん
2007/03/28(水) 17:22:260195デフォルトの名無しさん
2007/03/29(木) 09:51:16これって実行速度が多少早くなる可能性がある、ってだけ?
0196デフォルトの名無しさん
2007/03/29(木) 10:23:020197デフォルトの名無しさん
2007/03/29(木) 10:35:47少しは型安全になっているという感じ。
0198デフォルトの名無しさん
2007/03/29(木) 10:55:430199デフォルトの名無しさん
2007/03/29(木) 14:45:590200デフォルトの名無しさん
2007/04/01(日) 09:27:480201デフォルトの名無しさん
2007/04/01(日) 16:50:000202デフォルトの名無しさん
2007/04/01(日) 16:56:550203デフォルトの名無しさん
2007/04/01(日) 18:32:030204デフォルトの名無しさん
2007/04/01(日) 18:35:100205デフォルトの名無しさん
2007/04/01(日) 18:36:43それ系統以外でオネ
0206デフォルトの名無しさん
2007/04/01(日) 18:37:530207デフォルトの名無しさん
2007/04/01(日) 19:12:050208デフォルトの名無しさん
2007/04/01(日) 21:58:250209デフォルトの名無しさん
2007/04/01(日) 22:04:430210デフォルトの名無しさん
2007/04/01(日) 22:51:520211デフォルトの名無しさん
2007/04/02(月) 03:12:01MSがどんな変更を加えても追従できる筋のいいソフトばかりの世の中じゃないから。
そういうのは置き換えてはいってるがなかなか進まねえ。
0212デフォルトの名無しさん
2007/04/02(月) 03:17:060213デフォルトの名無しさん
2007/04/02(月) 11:50:54軽くうにっくすにも触れるし一石二鳥。
0214デフォルトの名無しさん
2007/04/02(月) 13:47:56あれはよくわかっているやつ向けだ。
coLinuxの方がいいよ。
0215デフォルトの名無しさん
2007/04/02(月) 15:54:27あれはよくわかっているやつ向けだ。
Debianの方がいいよ。
0216デフォルトの名無しさん
2007/04/02(月) 16:31:15あれはよくわかっているやつ向けだ。
Vineの方がいいよ。
0217デフォルトの名無しさん
2007/04/02(月) 17:35:46あれはよくわかっているやつ向けだ。
Mac OS Xの方がいいよ。
0218デフォルトの名無しさん
2007/04/02(月) 17:59:46あれはよくわかっているやつ向けだ。
FedoraCoreの方がいいよ。
0219デフォルトの名無しさん
2007/04/02(月) 18:28:200220デフォルトの名無しさん
2007/04/02(月) 19:28:510221デフォルトの名無しさん
2007/04/02(月) 22:27:46Cygwinよりも癖があるような気がしないでもない。
0222デフォルトの名無しさん
2007/04/03(火) 20:29:150223デフォルトの名無しさん
2007/04/06(金) 09:33:290224デフォルトの名無しさん
2007/04/06(金) 10:33:150225デフォルトの名無しさん
2007/04/06(金) 20:01:54初心者でも使えるデバッガとか付いてるし
無料だしMS謹製だし
0226デフォルトの名無しさん
2007/04/06(金) 20:49:450227デフォルトの名無しさん
2007/04/07(土) 07:22:10日本語でおkなヘルプに専門用語バリバリだから最初触ったとき意味不明だった記憶がある。
どっかのサイトみながらコマンドラインコンパイラいじってた方がよほど分かりやすかった。
0228デフォルトの名無しさん
2007/04/07(土) 17:32:110229デフォルトの名無しさん
2007/04/08(日) 00:03:170230デフォルトの名無しさん
2007/04/08(日) 14:05:020231デフォルトの名無しさん
2007/04/08(日) 22:11:41それでまとまったら清書だろうが。
0232デフォルトの名無しさん
2007/04/08(日) 23:27:29UMLもあぁいうような使い方出来んの?
0233デフォルトの名無しさん
2007/04/08(日) 23:36:340234デフォルトの名無しさん
2007/04/13(金) 21:14:280235デフォルトの名無しさん
2007/04/21(土) 18:37:040236デフォルトの名無しさん
2007/04/22(日) 14:25:300237デフォルトの名無しさん
2007/04/22(日) 15:10:030238デフォルトの名無しさん
2007/04/22(日) 15:56:370239デフォルトの名無しさん
2007/04/22(日) 16:01:26float以上であれば十分
もちろんfloatにもdoubleにも最低限の精度の規定はあるが
0240デフォルトの名無しさん
2007/04/22(日) 16:09:59float = double でも(両方とも最低精度をクリアしているなら)問題ない。
例えば、float = double で両方 64 ビットとか。
0241デフォルトの名無しさん
2007/04/22(日) 23:01:28厳密には精度は仮数部のbit長
IEEE754なら一意にきまるが, そうでなければ実装依存
IEEE754以前は機種依存, 互換性求めて古いフォーマットを使用可能にしている
処理系も結構ある.
0242デフォルトの名無しさん
2007/04/23(月) 13:51:570243デフォルトの名無しさん
2007/04/29(日) 18:43:030244デフォルトの名無しさん
2007/04/29(日) 18:50:23実行中にmallocによるメモリ操作時期において、なんかPCを粉々にする呪文を唱えて粉々にする
いやならOSのメモリ割り当ての部分を粉々にする
それも嫌ならメモリをガンガンmalloc()で予約しまくる
ってかラップする
0245デフォルトの名無しさん
2007/04/29(日) 19:05:200246デフォルトの名無しさん
2007/04/29(日) 19:12:06>>245
リモートの共有サーバでテストしているので大量のメモリ確保はできません。
ラップというはどうやるのでしょうか?
0247デフォルトの名無しさん
2007/04/29(日) 19:19:140248裕美子(×いちのOL)
2007/04/29(日) 19:57:08それで、疑問ですが、ウインドウプロシージャはコールバック関数である
ということで CALLBACKという識別子が関数名の前につくのですが、
どのC言語の入門本にもこの識別子の解説がありません。
この識別子はマイクとソフトが自社製OS用の開発言語に仕様として作った
ANSI−Cとは無関係のものでしょうか?
0249デフォルトの名無しさん
2007/04/29(日) 20:11:37#define CALLBACK __stdcall
としてあるだけ
0250デフォルトの名無しさん
2007/04/29(日) 22:23:470251デフォルトの名無しさん
2007/05/04(金) 01:55:35他の処理系使う機会とか無いのだろうな。哀れだ。
0252デフォルトの名無しさん
2007/05/04(金) 02:02:20malloc(0x7FFFFFFF); を失敗するまで実行。
0253デフォルトの名無しさん
2007/05/04(金) 05:36:50メモリ管理もまともにできない糞OSであるLinuxなら失敗しててもずっと非NULL値を返すよ。
失敗している場合はそのメモリにアクセスした途端に強制終了させられるらしい。もう、アホかと。
0254デフォルトの名無しさん
2007/05/04(金) 06:28:08妄想乙。
簡単にできるんだから実験してから物を言おうねw
0255デフォルトの名無しさん
2007/05/04(金) 09:40:32バグの項を読め
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/malloc.3.html
0256デフォルトの名無しさん
2007/05/04(金) 09:50:570257デフォルトの名無しさん
2007/05/04(金) 17:12:30失敗しても非NULLを返すとは書いてないな。
0258デフォルトの名無しさん
2007/05/04(金) 17:58:06犬厨必至杉w
0259デフォルトの名無しさん
2007/05/04(金) 19:19:05これは大嘘だぞ。
試しに
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *p;
while(p = malloc(0x7FFFFFF));
printf("malloc failed %p\n",p);
return 0;
}
これ実行してみ? もしお前のいうとおりならmalloc failedと出力されることはないよな。
0260デフォルトの名無しさん
2007/05/04(金) 19:44:190261デフォルトの名無しさん
2007/05/04(金) 19:47:410262デフォルトの名無しさん
2007/05/04(金) 19:51:18窓厨必死だなwwwワロス
>>261
別にちゃんときれいに死んでくれるから大丈夫だよ。もちろんmalloc failedと出力されて。
0263デフォルトの名無しさん
2007/05/04(金) 19:56:46顔、赤いよw
0264デフォルトの名無しさん
2007/05/04(金) 20:02:27窓なら例えば他のプロセスが使用しているメモリにアクセスするとかして
0265デフォルトの名無しさん
2007/05/04(金) 20:05:25環境依存ネタなのに、大丈夫だと言い張る馬鹿発見。
0266デフォルトの名無しさん
2007/05/04(金) 20:11:20いや、>>259の方法でも殺してはいない。ただmallocに失敗してるだけ。
「きれいに死んでくれる」の書きかたがまずかったな。
malloc失敗してNULLが返ってるだけだよー
malloc(0xffffffff)とかすれば失敗するでしょ。
窓でもmallocで別プロセスの使用しているメモリにアクセスすることは出来ないと思うよ。
窓だとVirtualAllocEx -> WriteProcessMemory とかでアクセスするんじゃなかった?
0267デフォルトの名無しさん
2007/05/04(金) 20:11:28>>256
0268デフォルトの名無しさん
2007/05/04(金) 20:23:02Releaseじゃないとデバッガが勝手に殺してくれちゃって出来なかったけど
C++のbad_allocもおんなじようにすればいいのね
0269デフォルトの名無しさん
2007/05/05(土) 00:43:360270デフォルトの名無しさん
2007/05/05(土) 18:23:100271デフォルトの名無しさん
2007/05/05(土) 18:24:400272デフォルトの名無しさん
2007/05/05(土) 18:40:420273デフォルトの名無しさん
2007/05/07(月) 23:18:25つ 仮想化
0274デフォルトの名無しさん
2007/05/08(火) 02:58:23どのファイルを開けばいいんすか?
webとかwindowsインターフェースとかいろいろあってわからんですよ
0275デフォルトの名無しさん
2007/05/08(火) 03:00:570276デフォルトの名無しさん
2007/05/08(火) 04:38:090277デフォルトの名無しさん
2007/05/09(水) 00:16:54int hogehoge(size_t length)
{
if (length < 0 || length > sizeof (fooo)) {
;
}
}
↑みたいなソースで、
「length < 0は、unsigned だから0以下で評価することはありえね〜」ってな感じの英文の警告がでるのだけど
無意味だから消す?
まんどくせ〜からシカト?
signed にキャスト?
おまんらならどうするよ?
0278デフォルトの名無しさん
2007/05/09(水) 00:18:300279デフォルトの名無しさん
2007/05/09(水) 00:18:50コンパイルオプションで警告をOFFる
0280デフォルトの名無しさん
2007/05/09(水) 00:20:040281デフォルトの名無しさん
2007/05/09(水) 00:24:460282デフォルトの名無しさん
2007/05/09(水) 00:29:570283デフォルトの名無しさん
2007/05/09(水) 00:35:51万が一とは、コンパイラのバグのことか?(w
0284デフォルトの名無しさん
2007/05/09(水) 00:36:08後で他の重要な警告がくだらない警告でまぎれて見えずらくなるのが嫌なので。
0285デフォルトの名無しさん
2007/05/09(水) 00:38:48それで負になるかもしれないわけだし。
0286デフォルトの名無しさん
2007/05/09(水) 00:52:12やぱ、十人十色っぽくなるかなぁ・・・・
もうね、最近C言語扱うってなったら、昔(10年ぐらい前)のソース(もちILP32)を
用件定義は、「昔と同じ機能で動けばいいよ」だけみたいな感じで、
いくら安いハードでも今時だから64bitだびょーんで動かすとなると・・・
迷うこと多いね・・・
ILP32互換オプションはデフォとしても(所詮昔の機能仕様程度だから2Goverのデータ扱うことないし)
>>284
他の重要な警告を見落とすリスクは脳裏をよぎった
>>285
真意。2G(ILP32と仮定して)超えるデータはありえね〜仕様だよなとか脳裏をよぎりつつ・・
>>281
暇(工数)考えると、よけいな修正してデグレてもあふぉらしいしなとか・・
まぁ、規模とか警告とかの件数によるので、値増し交渉のネタとか考えてみます。ありがとう
0287デフォルトの名無しさん
2007/05/09(水) 00:56:340288デフォルトの名無しさん
2007/05/09(水) 01:03:55そのコードを自分がどう扱わなければならないかで対応を変える。
自分がメンテナンスする羽目になるのなら、(問題がないか確認した上で)length < 0を消す。
管理は他人が行なうのなら、放置した上で「消えない(消さない)警告一覧」にリストアップしておく。
0289デフォルトの名無しさん
2007/05/09(水) 01:33:01でも、もしかしたら最上位ビットが立ってる場合、特別なナニカがあるのかもしれない・・・
0290デフォルトの名無しさん
2007/05/09(水) 01:36:51length < 0 は消しても問題ないと思う。
0291デフォルトの名無しさん
2007/05/09(水) 01:52:36そのためのssize_tなのにcastして無視したら意味無いよね
constのパラメータをソッコーcastしたりとか・・意味ね〜
まぁ、腐臭のするソースなら、size_tもtime_tもssize_tも全部intだったりありがちだよね。
それでもbugらずに動いてたり(まぁ昔は大丈夫だったりするのかもしんないけど)
0292デフォルトの名無しさん
2007/05/09(水) 02:52:35消した理由をコミットログに残してリポジトリにコミットだな。
0293デフォルトの名無しさん
2007/05/09(水) 03:35:110294デフォルトの名無しさん
2007/05/09(水) 03:45:220295デフォルトの名無しさん
2007/05/09(水) 03:52:160296デフォルトの名無しさん
2007/05/09(水) 07:48:261から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、
5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
という問題に対し、
#include <stdio.h>
int main(void){
char i;
for(i=0;i<=100;i++){
if(i%15==0){
printf("fizzbuzz\n");
}
else if(i%5==0){
printf("buzz\n");
}
else if(i%3==0){
printf("fizz\n");
}
printf("%d\n",i);
}
return 0;
}
ならすぐ思いつくのですが、これでは答えを満たしていません。
どうすれば良いでしょうか?
0297デフォルトの名無しさん
2007/05/09(水) 08:03:07そこまで考えたのなら後一歩。
if () {
...;
} else if () {
...;
} else if () {
...;
} else {
...;
}
0298デフォルトの名無しさん
2007/05/09(水) 08:13:05continue;つかえば良いんだ。
トンです。
0299デフォルトの名無しさん
2007/05/09(水) 08:20:16continue;は最終手段。
0300デフォルトの名無しさん
2007/05/09(水) 08:25:18え〜。
元ネタは
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
なんですが、
この問題を再帰を使って2分以内で書くなんて無理だよ・・・
どうやれば再帰を使って書けるんですか?
0301デフォルトの名無しさん
2007/05/09(水) 08:31:0916進も使わずに書けるだろ?
0302デフォルトの名無しさん
2007/05/09(水) 08:31:23それは君自身の事か?
0303デフォルトの名無しさん
2007/05/09(水) 08:37:24ループで出来ることを再帰に直す問題より
再帰で簡単に出来るのを何とか可読性を保ちながらループに直す
って問題の方が遥かに多いと思うんですが、そうでもないんでしょうか?
0304デフォルトの名無しさん
2007/05/09(水) 09:05:130305デフォルトの名無しさん
2007/05/09(水) 09:55:09乗り遅れ感バリバリだけど3と5は互いに素なんだから
else入れる必要ない、というより入れない方がいい。
0306デフォルトの名無しさん
2007/05/09(水) 09:55:580307デフォルトの名無しさん
2007/05/09(水) 19:47:310308デフォルトの名無しさん
2007/05/11(金) 22:26:50int main()
{
int end;
char name[10];
do {
printf("\n名前を入力してください。\n");
printf("名前:"); scanf("%s",name);
do {
printf("%sでよろしいですか? [y]es or [n]o :\n",name);
end=getchar();
} while (end!=121&&end!=110);
}while (end!=121);
return(0);
}
これの
"%sでよろしいですか?"
の部分が2回出てくるのですが、何がいけないのでしょうか。
見苦しいコードですが、よろしくお願いします。
0309デフォルトの名無しさん
2007/05/11(金) 22:38:22getchar()が喰い残した改行文字が入力されるため。
つーか、121だとか書かずに'y'と書きなさい。
0310デフォルトの名無しさん
2007/05/11(金) 22:38:51int main()
{
int end;
char name[10];
do {
printf("\n名前を入力してください。\n");
printf("名前:"); scanf("%s",name);
end=getchar();
do {
printf("%sでよろしいですか? [y]es or [n]o :\n",name);
end=getchar();
} while (end!=121 && end!=110);
} while (end!=121);
return(0);
}
0311デフォルトの名無しさん
2007/05/11(金) 22:49:04早速のレスありがとうございます。
>getchar()が喰い残した改行文字が入力されるため。
このあたり、まだ理解が足りないようなので勉強しなおしてみます。
>つーか、121だとか書かずに'y'と書きなさい。
なんとっ!
一冊の本だけをあてにするものではないですね。。
0312デフォルトの名無しさん
2007/05/11(金) 22:52:000313デフォルトの名無しさん
2007/05/11(金) 22:55:32int ch;
while((ch = getchar()) != EOF) printf("%d[%c]\n", ch, ch);
これを実行してみれ。
0314デフォルトの名無しさん
2007/05/11(金) 23:08:44新版 明解C言語 入門編 (単行本)
http://www.amazon.co.jp/dp/4797327928
これです。
なにやら有名な本のような空気が…
>>313
ありがとうございます。
よくわかりませんが、とりあえずやってみます。
0315デフォルトの名無しさん
2007/05/11(金) 23:53:03標準入力がキーボードの時は
入力終了の改行も改行コード(\r)として入力に入っちゃうから
scanf()の入力終了の時に入った改行がscanf()自身で処理されず
次のgetchar()で拾ってしまう為に起こるバグ。
結構有名な落とし穴でscanf()が糞と言われるゆえんでもある。
ttp://www9.plala.or.jp/sgwr-t/c/sec05.html
ここの「scanfの注意事項(2)改行文字が残る」の項が分かり易いかも。
0316デフォルトの名無しさん
2007/05/12(土) 03:10:02さすがに end != 121は少々ヤヴァイね。ワロタwwwwww。
0317デフォルトの名無しさん
2007/05/12(土) 04:04:040318デフォルトの名無しさん
2007/05/12(土) 08:07:21だからそこのページはダメだって。
まぁ、
>入力終了の改行も改行コード(\r)として入力に入っちゃうから
こんな嘘書くくらいだからお似合いかも知れんが。
0319デフォルトの名無しさん
2007/05/12(土) 08:12:03そのページは、空白を含む文字列を読み込むにはscanf()の代わりにgets()を使えなんて書いているから論外だ。
0320デフォルトの名無しさん
2007/05/12(土) 15:47:56よくもまあそんな堂々とでたらめを書けるもんだな。
0321デフォルトの名無しさん
2007/05/12(土) 15:56:24俺も同じように習ったんだがどこが嘘なんだ?
0322デフォルトの名無しさん
2007/05/12(土) 16:02:26どこが出鱈目?
まぁ確かに明解C言語入門編が有名かといわれると些か疑問ではあるが。
0323デフォルトの名無しさん
2007/05/12(土) 16:02:41なぜかと不思議に思ってたんだが、こういうふうに書いてる本があるんだな。
0324デフォルトの名無しさん
2007/05/12(土) 16:04:290325デフォルトの名無しさん
2007/05/12(土) 16:05:19ん?本の内容がでたらめだって話じゃねえの?
0326デフォルトの名無しさん
2007/05/12(土) 16:07:35後で他の本を読んで誤解が解ける事を見越して書いてるんだろう。
0327デフォルトの名無しさん
2007/05/12(土) 16:13:060328デフォルトの名無しさん
2007/05/12(土) 16:54:280329デフォルトの名無しさん
2007/05/12(土) 16:56:500330デフォルトの名無しさん
2007/05/12(土) 16:58:42駄目
0331デフォルトの名無しさん
2007/05/12(土) 20:36:57javaは少しやったことあります。
最初にコンパイラとか環境作りをすると思うのですが、
その場合は、雑誌など買って付いてくるROMを使うのでしょうか?
初歩的な質問ですいません(;´Д`)
0332デフォルトの名無しさん
2007/05/12(土) 20:38:190333デフォルトの名無しさん
2007/05/12(土) 20:56:17最近は検索してダウンロードが多いね。
自分も332と同じくVisualC++ 2005 Express Editionがお勧め。
0334デフォルトの名無しさん
2007/05/12(土) 23:23:23昔は本当にreturnにも括弧が必要だったという事情もある
今でもやたらたくさん要ることの説明にはならないかもしれないが
0335デフォルトの名無しさん
2007/05/12(土) 23:33:570336デフォルトの名無しさん
2007/05/12(土) 23:40:01> 昔は本当にreturnにも括弧が必要だった
それって都市伝説じゃないのか?
0337デフォルトの名無しさん
2007/05/13(日) 00:22:56付いてた
Cが開発中の時は、 returnが関数だったのかも知れないって
説もあったけど真相は不明。
0338デフォルトの名無しさん
2007/05/13(日) 00:27:540339デフォルトの名無しさん
2007/05/13(日) 00:53:56呼び出し元の関数でスタックをどれだけ使ったかわからないのに、
呼び出し先で戻り先がわかるものなのかな。
0340デフォルトの名無しさん
2007/05/13(日) 01:18:10Pascalチックな作りだったんじゃね?
0341デフォルトの名無しさん
2007/05/13(日) 01:45:560342デフォルトの名無しさん
2007/05/13(日) 01:58:15Pascalちっくというと積んだパラメータをスタックから取り除くのは、
呼び出し側の責任てだけだよね。
それ以外にもauto変数もスタックを使うわけだし、
やっぱりreturnが関数だったとして戻るところがわかるとは思えないな。
どうやっていたんだろう。というか都市伝説の一種だろうね。
0343デフォルトの名無しさん
2007/05/13(日) 12:15:21コンパイラが特別に配慮するとかして対処。
まあ、そうすることの意義とか利点が分からんので多分違うと思うけど。
0344デフォルトの名無しさん
2007/05/13(日) 12:17:240345デフォルトの名無しさん
2007/05/13(日) 17:22:28#include <stdio.h>
main () {
printf("C programming");
printf("日本語もOK?");
return 0;
}
これをファイルに保存し実行したら、メモ帳が開き↑のが出てきてました。
何が悪いのですか?
0346デフォルトの名無しさん
2007/05/13(日) 17:31:24頭。
ファイルをダブルクリックでアプリケーションを探してもらうのではなく、
アプリケーションからファイルを開くことも覚えておいた方がいい。
0347デフォルトの名無しさん
2007/05/13(日) 17:36:100348デフォルトの名無しさん
2007/05/13(日) 17:47:26そもそもPCの知識なしにプログラムなんてできるわけがないよ
0349デフォルトの名無しさん
2007/05/13(日) 18:13:190350デフォルトの名無しさん
2007/05/13(日) 18:14:16test.c
ってな感じにやったのなら根本的に間違い。
.cのソースファイルをコンパイラでコンパイルし、
出来たexeファイルとかを実行する
0351デフォルトの名無しさん
2007/05/13(日) 18:14:46C 入門の入門読んでるでしょ。全項目飛ばさずに読みなよ。
0352デフォルトの名無しさん
2007/05/13(日) 18:38:560353デフォルトの名無しさん
2007/05/13(日) 20:44:32例えば、testというプロジェクトにtest01.cとtest02.cを入れて、メイク→実行とやっても、先に作ったtest01.cの結果しか表示されません。
0354デフォルトの名無しさん
2007/05/13(日) 20:57:23bcc32 test01.c test02.c
みたいになってると思う
0355デフォルトの名無しさん
2007/05/13(日) 21:03:52わかりました。ありがとうございました。
0356デフォルトの名無しさん
2007/05/13(日) 23:15:31mainでfreeした場合、配列はきちんと開放されるんでしょうか。
配列は引数で渡すと要素数が記憶されなかったと思うのですが
この場合きちんと開放されるのかがわからないです。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char *str;
} TEST;
TEST* get_test(void)
{
TEST *t = (TEST *) malloc(sizeof(TEST) * 10);
t[9].str = "Hello, World!";
printf("t in test() : %p\n", t);
printf("%p : %s\n", t[9].str, t[9].str);
return t;
}
int main(void)
{
TEST *t = get_test();
printf("t in main() : %p\n", t);
printf("%p : %s\n", t[9].str, t[9].str);
free(t);
return 0;
}
0357デフォルトの名無しさん
2007/05/13(日) 23:50:17プログラムソース読むとTEST型の大きさのメモリ領域の確保と解放してるだけなんだが?
0358デフォルトの名無しさん
2007/05/13(日) 23:57:16されるよ
0359デフォルトの名無しさん
2007/05/13(日) 23:57:57freeをする時は引数とその記録から解放する領域の範囲がわかる。
0360デフォルトの名無しさん
2007/05/13(日) 23:59:05ここで配列使ってるぉ (^ω^
0361デフォルトの名無しさん
2007/05/13(日) 23:59:540362デフォルトの名無しさん
2007/05/14(月) 00:02:550363デフォルトの名無しさん
2007/05/14(月) 00:10:440364356
2007/05/14(月) 00:20:42下のfreeはmallocでもcallocでも確保したものは全部解放してくれる
と考えていいんですね。ありがとうございます。
0365デフォルトの名無しさん
2007/05/14(月) 00:29:42ポインタと配列は区別しときなさいな。
http://homepage3.nifty.com/mmgames/c_guide/15-07.html
0366356
2007/05/14(月) 00:43:05・配列というのはローカル変数でしか扱えない
・引数、戻り値は全部ポインタ変数
という考えでいいですか。
0367デフォルトの名無しさん
2007/05/14(月) 00:43:12そのページは痛いな
0368デフォルトの名無しさん
2007/05/14(月) 00:44:380369デフォルトの名無しさん
2007/05/14(月) 00:59:00どこにもそんな事は書いてないだろ・・・
0370デフォルトの名無しさん
2007/05/14(月) 01:25:390371デフォルトの名無しさん
2007/05/14(月) 02:03:52バブルソートのソース面白すぎ。
0372デフォルトの名無しさん
2007/05/14(月) 02:14:51普通じゃん。
0373デフォルトの名無しさん
2007/05/14(月) 02:25:570374デフォルトの名無しさん
2007/05/14(月) 03:30:04たとえば
>[]の役割は、配列の要素番号を指定する演算子なのですが
>その仕組みは、単に、配列名というアドレスに足し算を行っているだけです。
配列とポインタの違いについて解説しているのに、これはないだろう。
添字演算子は配列にもポインタにも使えるって事なのに。
0375デフォルトの名無しさん
2007/05/14(月) 03:38:050376デフォルトの名無しさん
2007/05/14(月) 03:48:37int a[5] = { 0, 1, 2, 3, 4 };
printf("%d\n", *(a + 3));
0377デフォルトの名無しさん
2007/05/14(月) 04:10:44なにがいいたい?
その[]は演算子ではないし、p[n]と*(p+n)が交換可能なのは、配列とポインタの違いとは関係ない。
0378デフォルトの名無しさん
2007/05/14(月) 04:42:03どこにも書いてない訳だが。
0379デフォルトの名無しさん
2007/05/14(月) 04:55:350380デフォルトの名無しさん
2007/05/14(月) 06:49:300381デフォルトの名無しさん
2007/05/14(月) 07:14:050382デフォルトの名無しさん
2007/05/14(月) 07:16:09なくなっちゃって困る場面があるから構造体にまとめてプチリフレクションにしてるとか
0383デフォルトの名無しさん
2007/05/14(月) 07:52:03なのですが、
unsigned char *mapstr = {
"*********"
"*.......*"
"*.**o**.*"
"*[email protected].*"
"**o%%%*.*"
"**....*.*"
"****..***"
"*********"
};
を「盤面の初期状態をmapstrという文字列として定義しています。」
とありますが、これって文字列なのでしょうか?
0384デフォルトの名無しさん
2007/05/14(月) 07:54:310385デフォルトの名無しさん
2007/05/14(月) 08:10:000386デフォルトの名無しさん
2007/05/14(月) 08:10:020387デフォルトの名無しさん
2007/05/14(月) 09:01:090388デフォルトの名無しさん
2007/05/14(月) 09:17:39こいつ馬鹿ww
0389デフォルトの名無しさん
2007/05/14(月) 10:27:00ミリセカンド単位(0.5秒とか)でスリープさせるにはどうしたらよいのでしょうか。
教えてエロイひと
0390デフォルトの名無しさん
2007/05/14(月) 10:31:110391デフォルトの名無しさん
2007/05/14(月) 10:38:51環境依存。sleep()は一般的に、秒単位で寝る関数。
sleep()が使える環境なら、大抵はUnix系だろうからusleep()かnanosleep()が使えるはず。
但し、精度に関してはミリ秒以下しかないので要注意。
cygwinなど、Win環境でgccを使っているのなら、APIのSleep()を使うのも一つの選択。
0393デフォルトの名無しさん
2007/05/14(月) 15:58:29〜〜〜
で、コンパイルしたら、「インクルード ファイルを開けません。'windows.h'」
って出ました。これって、どこで手に入れるものなんですか?無料でDL出来るんですか??教えてくださいm(__)m
0394デフォルトの名無しさん
2007/05/14(月) 15:59:43PlatformSDK ってのがフリーで落とせる。
詳細はググれ。
0395デフォルトの名無しさん
2007/05/14(月) 16:40:15includeやlibのPATHが設定されてないとか
0396デフォルトの名無しさん
2007/05/14(月) 16:52:25PlatformSDKを落として
libのパスを通すための詳細を誰かがどっかのページに
載っけてるからググれ
0397デフォルトの名無しさん
2007/05/14(月) 21:11:26スタートメニューにそこらへんの設定を自動で行ってくれるツールへのショートカットが入っている。
0398デフォルトの名無しさん
2007/05/14(月) 21:44:44アルゴリズムが分かりません。どなたか教えていただけませんか?
0399デフォルトの名無しさん
2007/05/14(月) 21:46:51>連結リストを逆順につなぐreverse関数を作成したいのですが、
>アルゴリズムが分かりません。どなたか教えていただけませんか?
double linked list を使え。
0400デフォルトの名無しさん
2007/05/14(月) 21:53:10双方向リストは使用しないで、やりたいです。
単方向だけでやる方法を教えてください。
0401デフォルトの名無しさん
2007/05/14(月) 21:55:490402デフォルトの名無しさん
2007/05/14(月) 21:58:554個の要素がある場合
根--->1-->2-->3-->4
wk-->2-->3-->4 根-->1
wk-->3-->4 根-->2-->1
wk-->4 根-->3-->2-->1
wk 根-->4-->3-->2-->1
0403デフォルトの名無しさん
2007/05/14(月) 23:26:10絵を描いてみたのですが、どうしても分かりません。
使用する構造体のポインタは根とwkだけでできますか?
0404デフォルトの名無しさん
2007/05/14(月) 23:30:57真面目に解説した記憶があるよ。探してご覧。
0405デフォルトの名無しさん
2007/05/14(月) 23:34:38それで友達がVisual Studioのほうがいいよと言います。
大学のPCにはVisual Studioが入っているのですが重くてどうも好きになれません。
その点、FreeBSD(UNIX系)のほうが軽いしコンパイル作業等、本当にプログラミングしてる感じが好きです。
将来はプログラマーを目指しているのですがVisual Studioのほうがいいのでしょうか?
0406デフォルトの名無しさん
2007/05/14(月) 23:37:26根-->null
wk-->1-->2-->3-->4-->null
2.wkの先頭の要素を、根とその次の要素の間に挿入。
根-->1-->null
wk-->2-->3-->4-->null
3.2を繰り返す。
根-->2-->1-->null
wk-->3-->4-->null
根-->3-->2-->1-->null
wk-->4-->null
根-->4-->3-->2-->1-->null
wk-->null
0407デフォルトの名無しさん
2007/05/14(月) 23:38:38好きなほうでいいよ
どっちもやってみればいいじゃない
0408デフォルトの名無しさん
2007/05/14(月) 23:41:28仕事になれば決められた開発環境をつかわなならんこともあるだろう。
そのときに適応できればなんでもいいよ。
0409デフォルトの名無しさん
2007/05/14(月) 23:42:45今、FreeBSDでのプログラミングが楽しいんならそれでいいんでない?
コマンドラインツールに慣れてれば、後々いろいろと応用が利くしね
統合環境から入るとコマンドラインツールに触れる機会あんまりないだろうし
0410デフォルトの名無しさん
2007/05/14(月) 23:50:49ありがとうございました!できました。
0411デフォルトの名無しさん
2007/05/15(火) 01:09:43両方ともやって損はないと思うよ。
0412デフォルトの名無しさん
2007/05/15(火) 03:15:34よっし!いいかげんリストは丸暗記してしまうくらいソースを書いて練習しまくろ。
いつまでたっても中途半端な自分に嫌気がさしてきた。
C#どころじゃねーよ。
プログラミングの勉強初めて3年足らずでC→JAVA→C++→C#
なにやってんだ俺!ばかじゃねえの。中途半端もくそ食らえじゃねーか。
がんばれよ俺!
0413デフォルトの名無しさん
2007/05/15(火) 03:34:42そんな人が書くプログラムは怖くて信用できない。
図を書いて理解するといいよ。
0414412
2007/05/15(火) 05:11:05さすがにどんなソースでも丸暗記したところで、理解にはつながらないのは
当然なので、よく咀嚼しつつソースを書いて鍛錬しようと思っています。
0415デフォルトの名無しさん
2007/05/15(火) 07:26:16長年やってる人とか考える前にコードが浮かんでくるらしいし
0416デフォルトの名無しさん
2007/05/15(火) 07:45:44似たような文法ばかりだから、一つやると理屈でなく体で覚えてしまう。
だから身につかない。
pascal系のように少し毛色の違う言語に
移植しながら勉強すると身に付き易いよ
0417デフォルトの名無しさん
2007/05/15(火) 07:58:330418デフォルトの名無しさん
2007/05/15(火) 08:00:43あと最初っから体で覚えれるような超天才はまずいないから余計な心配だと思うが…
0419416
2007/05/15(火) 08:15:07リスト構造だとCならポインタで書いてると思うが
C++はポインタを書く上でCと同じ、JAVAは・・・・
pascaのポインタは *p が p^ になる。 前と後ろの違いだが
違うことで、共通の概念が身に付けられる人もいるって事さ。
0420デフォルトの名無しさん
2007/05/15(火) 08:37:40でも、理屈が分かってないと使用時のコストの見積もりもできないから
理解しなくてもいいというわけではないけどさ。
0421デフォルトの名無しさん
2007/05/15(火) 08:40:58LispとかHaskellとかPrologとかやると
Pascal系が「毛色が違う」なんて思えなくなるよ。
CもPascalも「え?ほとんど一緒じゃん」に変わる。
0422デフォルトの名無しさん
2007/05/15(火) 08:41:25それらすらないCでの実装は結構面倒くさいです
あと出来ればテンプレート構文も
0423416
2007/05/15(火) 08:41:440424416
2007/05/15(火) 08:48:56毛色が違う程度に違う複数言語で同じ事をやると、扱ってる概念が身に付き易いのであって、
そこまで言語にリスト構造取り込んでると、「毛色が違う」レベルじゃなくて種が違うというレベルだろと思うが?
リスト構造ではなく、もっと高位概念なら「毛色が違う」レベルも広がるとは思うのだが
0425デフォルトの名無しさん
2007/05/15(火) 08:49:27他の言語でも使える共通概念覚えるなんて一通り使えるようになってからでもいいじゃんか
C→C++、C#って行くのが目的だからCは最低限で切り上げるってんなら分かるけどさ
0426416
2007/05/15(火) 08:55:47そいつを身に付けたいなら、他の言語にCのコードを移植したり、逆をやったりした方が早道だって言ってるのさ
0427デフォルトの名無しさん
2007/05/15(火) 09:02:06しかし、態々新たに他の言語の勉強するんだったらかなり遠回りになると思うんだけど
0428デフォルトの名無しさん
2007/05/15(火) 09:06:370429デフォルトの名無しさん
2007/05/15(火) 09:15:46流石に教科書と睨めっこするだけよりは確実に手っ取り早いだろうけど
あと他の言語覚えるのも兼ねてればやる気出るかもしれんな、
ただそれでC#やJavaなんて覚えた日にゃ一生Cに戻ってこなくなるかもなw
0430デフォルトの名無しさん
2007/05/15(火) 09:20:260431デフォルトの名無しさん
2007/05/15(火) 09:21:05C#やJAVAだと、アルゴリズムの理解じゃなくてアルゴリズムを実装したライブラリの使い方の話になってしまうように思う
0432デフォルトの名無しさん
2007/05/15(火) 09:27:06色んな視点が養われていいと思うけどね。
ある言語では当たり前のことが、
別の言語では当たり前じゃない、
ってのを経験するのは悪くない。
0433デフォルトの名無しさん
2007/05/15(火) 09:27:29人によって違うのかもしれないが。
0434デフォルトの名無しさん
2007/05/15(火) 09:32:430435デフォルトの名無しさん
2007/05/15(火) 09:40:21という配列に、fgetsを使って標準入力で「abc/def/ghi/jkn」という文字列を格納して
次にそれをprintfで表示しました
その後またfgetsで標準入力から例えば「Hello」という文字列を格納して
printfで表示しようとすると、最初に入力した文字列が残っているのか、
変な文字列が表示されてしまいます
これはどうすればいいんでしょうか
0436デフォルトの名無しさん
2007/05/15(火) 09:41:46データ構造まできたらC++でとっととジェネリックプログラミングの方向に行ったほうがいいと思う
車輪の再発明的なアルゴリズム、データ構造の実装に関してはCより遥かに楽にできるし
0437デフォルトの名無しさん
2007/05/15(火) 09:46:32その部分のコードを書いてみて、
>>436
組み込みではC++は使えてもSTL解禁とまではいかないよ
それにテンプレートで単純リスト扱うのって俺様テンプレートって事だろうけど、これは一番嫌われる。
0438デフォルトの名無しさん
2007/05/15(火) 09:46:520439デフォルトの名無しさん
2007/05/15(火) 09:47:32fgets()は最後に\0を付けるので、最初に入れた文字列が残るってこと
はないはずです。あなたのコードを示してみましょう。
0440デフォルトの名無しさん
2007/05/15(火) 09:56:44これ見てもう判ったつもりになれた俺は やったつもりでいい?
0441デフォルトの名無しさん
2007/05/15(火) 10:12:55その表、なんかところどころおかしいなw
リストの勉強したいなら、「データ構造+アルゴリズム」とかの本で勉強すると良いよ
ヴィルト先生の教科書とか
>>436
組み込みの現場はまだCのところが多いぞ、C++使ってるところもあるけど
Cしか知らんやつらがどんなコード書いてるのか、想像すると怖いw
0442デフォルトの名無しさん
2007/05/15(火) 10:56:42未だにレガシースタイルで関数を書こうとしたり、変数の使い回しに手間隙掛けたり想像を絶するよ。
0443デフォルトの名無しさん
2007/05/15(火) 10:59:50int a, b;
{
ほげほげ
}
とか、FORTRAN のプログラム読んでるみたいだよ・・・。
0444デフォルトの名無しさん
2007/05/15(火) 11:11:440445デフォルトの名無しさん
2007/05/15(火) 11:12:400446デフォルトの名無しさん
2007/05/15(火) 12:35:18Delphiだと、文字列型や配列型が組み込みだからポインタ使わないし
オブジェクト型の変数もデフォで参照なんで普段はポインタを使う場面が少ないけどな。
少し突っ込んだ使い方する場合は使うかも。(CのDLL使う時は当然必須だし)
あれは最初に「何型へのポインタ」って型を定義するところが特徴的。
例えば整数型へのポインタには整数を指すアドレスしか代入できず
値を戻すのも整数型の変数にしかできないはず。(キャストした場合は別だけど)
0447デフォルトの名無しさん
2007/05/15(火) 12:44:12いちいちキャストも必要ない
var
pc:^char;
pb:^byte absolute pc;
pw:^word absolute pc;
とやれば常に pc=pb=pw になるわけ
0448デフォルトの名無しさん
2007/05/15(火) 13:42:37メモリを共有する感じ?
0449デフォルトの名無しさん
2007/05/15(火) 13:43:430450デフォルトの名無しさん
2007/05/15(火) 14:36:19union というより
#define pw ((word *) pb )
のように、別名を与えるような感じ。
union相当は record型でcase文を使う事になる
0451デフォルトの名無しさん
2007/05/15(火) 17:33:01特定の競技のみを行なっていると、どうしても身体の一部に負担がかかり、故障の原因となります。
クロストレーニングをすることにより予防することもできますし、
いつもと違う動作は、あらゆる筋肉を使ったり柔軟性を高めたりすることも可能ですし、
何より精神的にリフレッシュできます。
0452デフォルトの名無しさん
2007/05/15(火) 22:57:21http://www.cns.ci.ritsumei.ac.jp/~kitano/exp1/ex3.html
の08、09の解析をしていただけないでしょうか?
0453デフォルトの名無しさん
2007/05/15(火) 22:57:58おまwwwwwwww立命乙wwwwwwww
0454デフォルトの名無しさん
2007/05/16(水) 01:27:51とっととfftかけろやw
使い方まで書いてあるやんwww
0455デフォルトの名無しさん
2007/05/16(水) 01:33:430456デフォルトの名無しさん
2007/05/16(水) 02:23:18その出力する値をsin,cos,tanの3つのどれかから1つ選択できるようにするにはにはどのようにプログラムにすればいいのでしょうか?
0457デフォルトの名無しさん
2007/05/16(水) 02:29:59だから入力を受け付ける関数を使えばいいんじゃないか?
0458デフォルトの名無しさん
2007/05/16(水) 08:56:58グラフを描く関数に引数としてかグローバル変数としてか、関数ポインタを渡せばいいでしょう
0459デフォルトの名無しさん
2007/05/16(水) 08:58:070460デフォルトの名無しさん
2007/05/16(水) 09:37:300461デフォルトの名無しさん
2007/05/16(水) 10:34:58そこでなぜ、「グラフ」?
#我々は神の御技を目の当たりにしているのか?w
0462デフォルトの名無しさん
2007/05/16(水) 10:57:12「三角関数の値を出力」を脳内変換で「三角関数のグラフを出力」と置き換えてしまったと推測できる
0463デフォルトの名無しさん
2007/05/16(水) 14:41:290464デフォルトの名無しさん
2007/05/16(水) 14:47:46座標値から直線の式を求めたいのか、
直線を描画したいのか、
丸投げしたいのか、
ポイントを絞ってください。
0465デフォルトの名無しさん
2007/05/16(水) 14:54:52コメントありがとうございます。
座標値から直線を描画したいです。よろしくおねがいします。
0466デフォルトの名無しさん
2007/05/16(水) 14:58:211.座標値から直線の式を求める
2.直線を描画
3.丸投げ
数字で選べ
0467デフォルトの名無しさん
2007/05/16(水) 16:26:221です。よろしくお願いします。
0468デフォルトの名無しさん
2007/05/16(水) 16:30:14http://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%97%E6%B3%95
http://szksrv.isc.chubu.ac.jp/lms/lms1.html
http://nkiso.u-tokai.ac.jp/phys/exp/utility/fit.html
0469デフォルトの名無しさん
2007/05/16(水) 17:47:51456
789
と二重ループと加算を用いて表示するプログラムを作りたいのですが
一体どうすればよいのでしょうか?
現在のソース
#include <stdio.h>
main () {
int num;
num = 0;
while (10 > num) {
//num = num + 1;
while (num % 3 != 0) {
//num = num + 1;
printf ("%d"
,num);
}
printf ("\n");
}
return 0;
}
0470デフォルトの名無しさん
2007/05/16(水) 17:54:470471デフォルトの名無しさん
2007/05/16(水) 17:55:100472デフォルトの名無しさん
2007/05/16(水) 17:56:33{
hage;
}
というタイプのインデントなら見た事ある。
0473デフォルトの名無しさん
2007/05/16(水) 17:58:34縦横に並ぶ表を見たら、先ずは縦と横でループを回すことを検討しろ。
int num = 0;
for (int iy = 0; iy < 3; ++iy) {
for (int ix = 0; ix < 3; ++ix) {
++num;
printf("%d", num);
}
}
0474デフォルトの名無しさん
2007/05/16(水) 18:05:56えらそうにしてても改行忘れてるからバカ丸出し
0475デフォルトの名無しさん
2007/05/16(水) 18:15:29そんな輩に「バカ丸出し」と言われるほどのミスとも思えないが。
>>469
というわけで、>473の二つの}の間にprintf("\n);を補うこと。
0476デフォルトの名無しさん
2007/05/16(水) 18:23:45まだ習ってないです
それと、どうしてもwhileで作ってみたかったんです
>>471
多分、我流です
>>473
・・・解りそうで解らない
インクリメント、デクリメントがイマイチ解ってない上に、座標計算っぽいので
それをボクが使うのは少々早い気がします
whileでは無理なのでしょうか?
>>475
了解です
0477デフォルトの名無しさん
2007/05/16(水) 18:30:090478デフォルトの名無しさん
2007/05/16(水) 18:30:24num = iy = ix = 0;
while(iy < 3) {
while(ix < 3) {
++num;
printf("%d", num);
++ix
}
printf("\n");
++iy;
}
0479デフォルトの名無しさん
2007/05/16(水) 18:32:070480デフォルトの名無しさん
2007/05/16(水) 18:36:41詐欺臭いけどこういう方法とか
int main(void){
int num = 0;
while(num < 10){
printf("%d",num++);
while(num % 3 == 0){
printf("\n");
}
}
return 0;
}
0481デフォルトの名無しさん
2007/05/16(水) 18:39:29頭悪そうな上にコード違ってるからバカ丸出し
というわけで、インクリメント位置をちょっとずらしてくれ、あと初期化値も1に
0482デフォルトの名無しさん
2007/05/16(水) 18:42:04つ鏡
0483デフォルトの名無しさん
2007/05/16(水) 18:45:350484デフォルトの名無しさん
2007/05/16(水) 18:45:48これだとforの方が解り易いですね・・・
>>480
これぞ求めていた・・・!
と思ったら無限ループしますね(´・ω・`)
>>481
解りました
0485デフォルトの名無しさん
2007/05/16(水) 18:52:180からスタートして、インクリメントしてから表示しているから問題ないんでない?
0486デフォルトの名無しさん
2007/05/16(水) 18:59:47int main(void)
{
int num = 1;
while(num<10) {
printf("%d", num);
if(num%3==0) putchar('\n');
num = num + 1;
}
return 0;
}
if習ってないなんてことはないよね?
0487デフォルトの名無しさん
2007/05/16(水) 19:01:460488デフォルトの名無しさん
2007/05/16(水) 19:07:580489デフォルトの名無しさん
2007/05/16(水) 19:08:55おお、まさにこれです!
流石にifは習っています
>>487
まぁ、そうなんですが・・・
forとかインクリデクリは、参考書やサイトを見てもイマイチなので・・・
switchとかgoto見たいなのは習わずとも解ったんですけどね・・・
0490デフォルトの名無しさん
2007/05/16(水) 19:09:59宿題じゃなくて、授業の復習みたいな感じです
0491デフォルトの名無しさん
2007/05/16(水) 19:10:540492デフォルトの名無しさん
2007/05/16(水) 19:12:30初心者が回答できるということだから
0493デフォルトの名無しさん
2007/05/16(水) 19:26:50>486をforを使って書き直すと
#include <stdio.h>
int main(void)
{
int num;
for(num=1; num<10; num=num+1) {
printf("%d", num);
if(num%3==0) putchar('\n');
}
return 0;
}
num = 1 と num = num + 1 が()内に入っただけ
0494デフォルトの名無しさん
2007/05/16(水) 19:39:45新しいもの覚えるのに躊躇するんじゃない
無理して手伸ばす必要もないと思うけど
0495デフォルトの名無しさん
2007/05/16(水) 20:01:080496デフォルトの名無しさん
2007/05/17(木) 22:00:330497デフォルトの名無しさん
2007/05/17(木) 22:01:340498デフォルトの名無しさん
2007/05/17(木) 22:05:070499デフォルトの名無しさん
2007/05/17(木) 22:05:16ありがとうございます、早速使ってみます
0500デフォルトの名無しさん
2007/05/17(木) 22:06:040501デフォルトの名無しさん
2007/05/17(木) 22:07:100502デフォルトの名無しさん
2007/05/18(金) 06:10:290503デフォルトの名無しさん
2007/05/18(金) 10:16:550504デフォルトの名無しさん
2007/05/18(金) 16:49:380505デフォルトの名無しさん
2007/05/18(金) 18:17:560506デフォルトの名無しさん
2007/05/18(金) 19:18:270507デフォルトの名無しさん
2007/05/18(金) 19:40:390508デフォルトの名無しさん
2007/05/19(土) 00:49:12もし小文字アルファベットが入力されたら大文字アルファベットに変換し終了
もし大文字アルファベットが入力されたら小文字アルファベットに変換し終了
それ以外が入力された場合は、(B)再入力を可否をYかNで選択させる
Yなら一番最初(A)に戻り、Nなら終了
それ以外ならエラーを出し、Bに戻る
このエラーが10回繰り返された場合、終了させる
っていうのを作りたいんだけど、如何書けばいいかな?
0509デフォルトの名無しさん
2007/05/19(土) 00:50:31#include <ctype.h>
main () {
char text;
int num;
while (1) {
printf ("アルファベットを入力して下さい。\n");
text = getchar ();
if (isalpha(text)) { // 入力値がアルファベットならば
// trans start
if (isupper(text)) {
text = tolower (text);
printf ("入力されたアルファベットの小文字は %c です。"
,text);
0510デフォルトの名無しさん
2007/05/19(土) 00:51:11} else if (islower(text)) {
text = toupper (text);
printf ("入力されたアルファベットの大文字は %c です。"
,text);
break;
}
// trans end
0511デフォルトの名無しさん
2007/05/19(土) 00:52:05} else {
num = 0;
while (num != 10 || text != 'Y' || text != 'N') {
printf ("エラー\n"
"アルファベット以外の値が入力されました。\n"
"\n"
"継続して入力しますか?\n"
"Y/N\n");
0512デフォルトの名無しさん
2007/05/19(土) 00:52:54switch (text) {
case 'Y':
case 'y':
continue;
0513デフォルトの名無しさん
2007/05/19(土) 00:54:18case 'N':
case 'n':
break;
default:
++num;
} //switch
} //while
} // else
} // while
printf ("\nExiT");
return 0;
}
0514デフォルトの名無しさん
2007/05/19(土) 01:14:23フロー
http://www.borujoa.org/upload/source/upload11690.xxx
拡張子 .odg
0515デフォルトの名無しさん
2007/05/19(土) 02:43:34みたいな巨大な配列を宣言すると、アプリエラーになってしまいます。
どうやれば巨大な配列を使えるのでしょうか?
0516デフォルトの名無しさん
2007/05/19(土) 02:46:11C言語コミュ
http://mixi.jp/view_community.pl?id=1190894
初心者の為のC言語
http://mixi.jp/view_community.pl?id=485919
0517デフォルトの名無しさん
2007/05/19(土) 02:51:06(どのくらいまで大丈夫かはリンカによる)
mallocで動的確保する場合は無限大に出来ると思う・・・
でもint型を一気に何億も動的確保しようとすると,当然メモリ不足になるから
またやりたいことによって色々なやり方を考える必要がある
0518デフォルトの名無しさん
2007/05/19(土) 02:56:08メモリ増設しても足りないから、他のコンピュータを何百台も繋げてメモリ借りるしかないのかな?
多倍長計算とか
int[]一要素に10進数で10桁くらいしか記憶できないから,何億桁,何無量大数桁もの計算結果をコンピュータで扱いたいときは・・・どうすれば??
0519デフォルトの名無しさん
2007/05/19(土) 02:57:180520デフォルトの名無しさん
2007/05/19(土) 02:57:24そもそもそんなに大きな配列を一度に扱う理由が…。
ファイルをメモリに見立ててランダムアクセスするとか、
処理の前にサイズを計算して必要な分だけ動的確保するとか、
アプローチを考え直す方が良いかも?
0521デフォルトの名無しさん
2007/05/19(土) 02:58:21ってか、可能な範囲内で配列をもっと多く宣言できるといった話をこの板のどこかのスレで聞いた覚えが・・・
0522デフォルトの名無しさん
2007/05/19(土) 02:59:09素人なのでよく知りませんが
0523デフォルトの名無しさん
2007/05/19(土) 02:59:550524デフォルトの名無しさん
2007/05/19(土) 03:00:27スワップみたいなもの?
0525デフォルトの名無しさん
2007/05/19(土) 03:01:47処理性能は数年前の古臭いPen2パソコンと比べても遥かに劣るらしいぞ。
ノイマン型かどうかすら怪しいけど。
0526デフォルトの名無しさん
2007/05/19(土) 03:02:29俺も半年くらい前にこの板のどこかのスレで聞いたことがある
なんかオプションを指定してやるんだっけな?まぁコンパイラの説明書嫁
0527デフォルトの名無しさん
2007/05/19(土) 03:02:390528デフォルトの名無しさん
2007/05/19(土) 03:03:09素人なのに、40GBの計算結果が出るって、
一体どうやって見積もったんだ?
どんな技術計算でも、桁数多ければいいってのは無いだろ。
PIの計算でギネス狙うとかじゃない限りさ。
0529デフォルトの名無しさん
2007/05/19(土) 03:03:100530デフォルトの名無しさん
2007/05/19(土) 03:03:220531デフォルトの名無しさん
2007/05/19(土) 03:04:20実際の航空宇宙分野現場ではどのくらい使われているのでしょうか?
0532デフォルトの名無しさん
2007/05/19(土) 03:05:08とりあえずmallocでやってみます。
ありがとうございました。
0533デフォルトの名無しさん
2007/05/19(土) 03:08:29int n;
桁数を入力⇒scanfでnに代入
int *a = (int *)malloc(sizeof(int) * n);
if( a == NULL ){ printf("メモリ確保失敗\n"); exit(1); }
この方法だとsigned int型のnに27億くらいしか指定できない
0534デフォルトの名無しさん
2007/05/19(土) 03:09:560535デフォルトの名無しさん
2007/05/19(土) 03:13:350536デフォルトの名無しさん
2007/05/19(土) 03:13:570537デフォルトの名無しさん
2007/05/19(土) 03:20:03>>> 54354353453453535435 * 54353444444444444
2954346330745983744467924576242873140L
Lって出てきたけどCよりはるかに多い
0538デフォルトの名無しさん
2007/05/19(土) 03:22:17unsigned int制限の27億以上入力したいなら nもまた配列やポインタにしなきゃいけない
ってなるとコードがゴチャゴチャ
0539デフォルトの名無しさん
2007/05/19(土) 06:40:36そうなったcを諦めてc++で書けばすっきり。
0540デフォルトの名無しさん
2007/05/19(土) 13:24:410541デフォルトの名無しさん
2007/05/19(土) 13:33:150542デフォルトの名無しさん
2007/05/19(土) 14:11:510543デフォルトの名無しさん
2007/05/19(土) 14:33:01ディスクを利用したりするよ。
あるいはクラスターマシンで並列化するとか。
0544デフォルトの名無しさん
2007/05/19(土) 14:44:060545デフォルトの名無しさん
2007/05/20(日) 05:21:14どういうコメントのつけ方をすれば綺麗で見やすいプログラムになるのでしょうか?
自信のある方、注意やレイアウトなどを教えて頂けると幸いです。
0546デフォルトの名無しさん
2007/05/20(日) 06:17:03ライブラリを用いて、この部分ではどういう役割を持った記述をするのかはっきりと定義すること。
0547デフォルトの名無しさん
2007/05/20(日) 15:57:06実際のコツということなら他人のソースをある程度読み込んで
良いところはパクリ、悪いところは反面教師とすればよし。
0548デフォルトの名無しさん
2007/05/20(日) 16:29:140549デフォルトの名無しさん
2007/05/20(日) 16:31:440550デフォルトの名無しさん
2007/05/20(日) 16:34:25VSなら実質XMLDoc一択だし。
もし一切の入力支援なしということならDoxygen&JavaDocスタイルが楽だと思う。
0551デフォルトの名無しさん
2007/05/26(土) 08:29:14本やホームページによって、0から文字だけを打って作っていくものもあれば、
VisualCを使って、視覚的にウインドウも同時に作っていくものもあります。
これは、どちらの方法でもC言語のスキルとしては同じレベルまで身につくのでしょうか。
それとも、違うものとして認識したほうがよいでしょうか。
0552デフォルトの名無しさん
2007/05/26(土) 08:34:37視覚的なほうがモチベーションの維持が楽だから、そっちでやったらどうよ
あんまりプログラミングしてる気分にはなれないかもしれないけど
0553デフォルトの名無しさん
2007/05/26(土) 08:45:300554デフォルトの名無しさん
2007/05/26(土) 08:53:16たとえば、GBAとかかWonderWitchのような携帯ゲームとか
秋月電子でH8とかM16のボードキットとか のプログラムをやるとかさ
0555デフォルトの名無しさん
2007/05/26(土) 09:52:38君は、C言語がやりたいのか、C++がやりたいのか
0556デフォルトの名無しさん
2007/05/26(土) 10:36:010557デフォルトの名無しさん
2007/05/26(土) 10:44:210558デフォルトの名無しさん
2007/05/26(土) 11:28:19質問を思いっきり無視するが
・C/C++の言語・標準ライブラリの学習
・Visual Studioの使い方、Win32API, MFC, .NETフレームワーク等の学習
・自分の作りたいもの
をバランスよくやっていくのが吉。
特にデバッガの使い方は早めに習得しておくといいよ。
0559デフォルトの名無しさん
2007/05/26(土) 12:11:56出だしはGUIだろうがCUIだろうが、どっちでも一緒じゃない?
俺の経験で言えば、mallocやprintfを自分で実装するような世界へ行かないと
C言語の深淵は見えてこないと思う。
まぁそこまで行っちゃうと環境への依存性強すぎて
「C言語のスキル」と言えるかどうかは謎だけど・・・
0560デフォルトの名無しさん
2007/05/26(土) 12:41:21違う中での共通項に、身に付けるべき概念があるわけだろうからね
0561551
2007/05/26(土) 13:10:13C言語です。
みなさん、ありがとうございました。
やっぱりモチベーションのことがあるので、
今はGUIで、いろいろな面から進めていきたいと思います。
0562デフォルトの名無しさん
2007/05/26(土) 13:12:260563デフォルトの名無しさん
2007/05/26(土) 13:29:09君の目指すところがわからないんであれだが
単にC言語を覚えたいだけなら、CUIのほうが良いと思うぞ
GUIだと言語以外に覚えないといけないことが多すぎるし
C言語でWindowsアプリは入門者にはきついと思うぞ
0564551
2007/05/26(土) 14:17:48基本部分はCUIの方が勉強になるということですか。
>>563
情報が少なくてすみません。
目標としては、Windowsアプリであれば、簡単なメモ帳程度から初めて、
ウェブブラウザが作れるくらいまでいけたらと思っています。
また、WindowsだけではなくLinuxも使っているので、
Linuxでも動くプログラムが書けるようになりたいと思っています。
そこで、C言語で基本を押さえておいて、Windowsアプリを作りたくなったら
C系のほかの言語に移るのもありかなと思っています。
とすると、C言語はまずCUIでやるべきでしょうかね。
0565デフォルトの名無しさん
2007/05/26(土) 14:26:42結構負担の大きいチャレンジだと思うぞ。
さらにブラウザを作るってのも、ActiveXでIEを貼るとしたって、まあ、初心者の目標としては、まず無理。
GUIがやりたいなら、Delphiとかである程度作法や仕組みがわかってからやった方がいいと思うぞ。
0567551
2007/05/26(土) 14:39:07別の言語から勉強していきたいと思います。
0568デフォルトの名無しさん
2007/05/26(土) 16:31:47はどのような意味を持ち合わせているのでしょか?
0569デフォルトの名無しさん
2007/05/26(土) 16:34:51その質問は数学者に1+1の意味を尋ねているようなものだ
0570デフォルトの名無しさん
2007/05/26(土) 16:34:590571デフォルトの名無しさん
2007/05/26(土) 16:37:54意味は、どう抽象化してるかによって違ってくる。
ビットをクリアしてるのかもしれないし
モジュロ演算の代用かもしれないし、
0572デフォルトの名無しさん
2007/05/26(土) 16:43:02ia=0x0B0A; ib=0x0F0A;
です
0573デフォルトの名無しさん
2007/05/26(土) 16:58:370574デフォルトの名無しさん
2007/05/26(土) 22:42:22逆にC言語に向いてるものってなんですか?
0576デフォルトの名無しさん
2007/05/26(土) 22:47:410578574
2007/05/26(土) 23:10:17ありがとう。
0579デフォルトの名無しさん
2007/05/26(土) 23:29:130580デフォルトの名無しさん
2007/05/26(土) 23:30:070581デフォルトの名無しさん
2007/05/27(日) 00:25:570582デフォルトの名無しさん
2007/05/27(日) 00:32:350583デフォルトの名無しさん
2007/05/27(日) 00:44:240584デフォルトの名無しさん
2007/05/27(日) 01:02:440585デフォルトの名無しさん
2007/05/27(日) 03:47:070586デフォルトの名無しさん
2007/05/27(日) 07:47:30スクリプト系/VM系が発達してきてるから
最近はCも低級言語って言われ始めてるよね
0587デフォルトの名無しさん
2007/05/27(日) 08:27:27組み込みだったり、ドライバだったり、OSだったりって
全部ハードウェアについて詳しく知らないとできないじゃない。
0588デフォルトの名無しさん
2007/05/27(日) 09:47:19> 最近はCも低級言語って言われ始めてるよね
うちの近所じゃ, 昔から高級アセンブラって言われますが...
0589デフォルトの名無しさん
2007/05/27(日) 09:53:09なんでまともなコード出力しないんだあれ?
0590デフォルトの名無しさん
2007/05/27(日) 09:55:040591デフォルトの名無しさん
2007/05/27(日) 09:57:15あなたの雇用を守ってあげるためですよ
0592デフォルトの名無しさん
2007/05/27(日) 10:16:06値段の安いのかフリーしか使わないからじゃないの?
あと、アセンブラ出力見ながら、書き方を調整するといいよ。
0593デフォルトの名無しさん
2007/05/27(日) 10:23:270594デフォルトの名無しさん
2007/05/27(日) 10:32:06Woodcrest用にiccよりも高速なコードを書けるのなら、是非ご協力願いたい。
当方「手段を問わず高速化」を求められているプロジェクトに参加しているので。
0595デフォルトの名無しさん
2007/05/27(日) 11:27:59>> 最近はCも低級言語って言われ始めてるよね
>うちの近所じゃ, 昔から高級アセンブラって言われますが...
んなこたねえだろ
うちでは、高級マクロアセンブラと呼んでたぞ
0596デフォルトの名無しさん
2007/05/27(日) 11:29:300597デフォルトの名無しさん
2007/05/27(日) 12:40:30「 ̄ `ヽ、 ______
L -‐ '´  ̄ `ヽ- 、 〉
/ ヽ\ /
// / / ヽヽ ヽ〈
ヽ、レ! { ム-t ハ li 、 i i }ト、
ハN | lヽ八l ヽjハVヽ、i j/ l !
/ハ. l ヽk== , r= 、ノルl lL」
ヽN、ハ l ┌‐┐ ゙l ノl l
ヽトjヽ、 ヽ_ノ ノ//レ′
r777777777tノ` ー r ´フ/′
j´ニゝ l|ヽ _/`\
〈 ‐ 知ってるが lト、 / 〃ゝ、
〈、ネ.. .lF V=="/ イl.
ト |お前の態度が とニヽ二/ l
ヽ.|l 〈ー- ! `ヽ. l
|l気に入らない lトニ、_ノ ヾ、!
|l__________l| \ ソ
0598デフォルトの名無しさん
2007/05/27(日) 13:27:160599デフォルトの名無しさん
2007/05/27(日) 15:41:510600デフォルトの名無しさん
2007/05/27(日) 15:46:42コンパイルしようと思ったら下記エラー発生。
C:\cp>bcc32 hello.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
hello.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Fatal: ファイル C0X32.OBJ が開けません
記述コードはごくごく単純。
#include <stdio.h>
int main()
{
printf("Hello Wold!\n");
return 0;
}
これって何で起きるんでしょう?環境?
ちなみにborland5.5を導入する前にVisual Studio2003も導入しています。
0601デフォルトの名無しさん
2007/05/27(日) 15:47:32詳細はググレカス
0602デフォルトの名無しさん
2007/05/27(日) 15:52:260603デフォルトの名無しさん
2007/05/27(日) 15:58:57元ソースであるhello.cと、hello.objが作成されています。
本来であればhello.exeが出来なきゃいけない?と思うのですが・・・。
bccの環境設定は出来ていると思います。
0604デフォルトの名無しさん
2007/05/27(日) 16:02:39手段を問わず高速化するならまず大量の資金をインテルに投じて、
人的にも設備的にも最高品質の資源を世界中からかき集めて、
woodcrestの性能向上を図るべきだな。
もうアーキテクチャから何からあらゆるものを変えて名前だけを残すくらいに。
0605デフォルトの名無しさん
2007/05/27(日) 16:05:53だからよ、EXEを作るのにC0X32.OBJが必要なんだよ。
LIBの設定やってないんじゃないのか?
説明読んだか?
0606デフォルトの名無しさん
2007/05/27(日) 16:06:390607デフォルトの名無しさん
2007/05/27(日) 16:07:22readmeくらい読めと
0608デフォルトの名無しさん
2007/05/27(日) 16:07:55LIBの設定はしていたのですが、単純なタイピングミスでした。
修正したところ、無事コンパイルが通りました。
レスいただいた方、ありがとうございます。
0609デフォルトの名無しさん
2007/05/27(日) 16:09:19本当に設定できてるのか?
binディレクトリにちゃんとbcc32.cfgがあるか確認汁
bcc32.cfgが無かったり、きちんと設定が書かれていないときに出る症状だぞ
0610デフォルトの名無しさん
2007/05/27(日) 16:16:15bcc32.cfgは作成しました。
とりあえず教本の通り進めているので、現状は問題ないと思います。
ちなみに教本は本屋の雑誌コーナーで買った
日経ソフトウェアの「ずばりわかる!C言語 Cプログラミングの基礎を徹底理解」という
A4サイズのオレンジ色の本です。(ISBN978-4-8222-2840-8)
0611デフォルトの名無しさん
2007/05/27(日) 17:47:15環境変数でLIBを設定したらbcc32.cfgの設定より優先されるからね。
0612デフォルトの名無しさん
2007/05/28(月) 13:56:28【直角三角形の長辺と底辺の値をキーボードから入力し、
その二辺の角度(°)を画面に表示するプログラムを作成せよ】
って課題で、先輩に聞いてもわからないらしい
何かヒントを教えてくれないだろうか?
0613デフォルトの名無しさん
2007/05/28(月) 14:00:420614デフォルトの名無しさん
2007/05/28(月) 14:03:28それのどこがCの質問?
#寧ろ中学数学だろうよ
0615デフォルトの名無しさん
2007/05/28(月) 14:07:270616デフォルトの名無しさん
2007/05/28(月) 14:07:42acosを使うとうまく値が出てこない
>>614
確かにその通りだ
数学がわからないからプログラミングができない
0617デフォルトの名無しさん
2007/05/28(月) 14:29:38しね
0618デフォルトの名無しさん
2007/05/28(月) 15:24:14っていうケースについて教えて下さい
ポインタは何となく分かりましたが
「これがあるとこんな恩恵に預かれる!」
ってのがイメージ出来ません
変数の実態に値入れれば良いじゃん
って思っちゃいます
ポインタがなければ実現しえないケースでも良いです
誰かサンプルケース下さい
0619デフォルトの名無しさん
2007/05/28(月) 15:28:39例えば巨大な構造体をある条件でソートする場合
構造体そのものを入れ替えるとすごく時間が掛かる
「構造体のポインタ」をソートすると速い
0620デフォルトの名無しさん
2007/05/28(月) 15:29:040621デフォルトの名無しさん
2007/05/28(月) 15:40:562chは言い出しっぺが作る法則
0622デフォルトの名無しさん
2007/05/28(月) 15:49:51NULL入れて、ニヤニヤできます。
0623デフォルトの名無しさん
2007/05/28(月) 15:57:40参照を持ってる言語だと >>619のようなメリットも参照で代用出来るわけで
唯一あるとすれば、字句解析の場合かな
字句解析では 現在の文字、次の文字に進む、最後の文字か? の3要素が必要だけど
ポインタだけでこの3要素を実現出来て高速。
0624デフォルトの名無しさん
2007/05/28(月) 16:00:060625デフォルトの名無しさん
2007/05/28(月) 16:08:200626デフォルトの名無しさん
2007/05/28(月) 16:24:45scanf()の実装。
0627デフォルトの名無しさん
2007/05/28(月) 16:27:16じゃ、勝手に ここまでのまとめ
ポインタには 参照 reference の代用としての用途と それに収まらないアドレスそのものとしての用途の2つがある。
参照とはそれ自身はデータではなく、外にあるデータを指しているというもの
scanfのように、関数の引数に値を返すような場合が参照渡しの代用例
参照に収まらない用途の例は、while(*p++) if(*p==',') break; のような使い方。
文字列が連続したメモリ上にある事を利用し、
ポインタがメモリのアドレスを示す特性を使って、高速に文字スキャン等を行うというもの
0628デフォルトの名無しさん
2007/05/28(月) 16:28:300629デフォルトの名無しさん
2007/05/28(月) 16:42:58#include <cstdio>
#include <cstdlib>
#include <cmath>
#define M_PI 3.14159265358979323846
int main() {
double hypot=0, base=0;
scanf_s("%lf%lf", &hypot, &base);
if (hypot == 0) exit(0);
double angle = acos(base/hypot);
printf("%lf°", angle/M_PI*180);
return 0;
}
0630デフォルトの名無しさん
2007/05/28(月) 16:45:25スレ違い。
0631デフォルトの名無しさん
2007/05/28(月) 17:04:32acos は高校ですら習わないことないか?
0632デフォルトの名無しさん
2007/05/28(月) 17:06:05C だと、そもそもポインタがないと関数への配列の受け渡しが不可能。
0633デフォルトの名無しさん
2007/05/28(月) 18:16:45驚くべきことに大学にずれ込み始めてきている
0634デフォルトの名無しさん
2007/05/28(月) 18:18:010635デフォルトの名無しさん
2007/05/28(月) 18:19:50acos を高校までに教えてた時代っていつだ? あるの?
ましてや中学って。
0636デフォルトの名無しさん
2007/05/28(月) 18:28:470637デフォルトの名無しさん
2007/05/28(月) 18:37:10少なくとも私は関数電卓に遭遇した中学時代には承知してたよ。
0638デフォルトの名無しさん
2007/05/28(月) 18:38:490639デフォルトの名無しさん
2007/05/28(月) 18:43:10トンチンカンな答えが返ってきても仕方がないと思われ。
0640デフォルトの名無しさん
2007/05/28(月) 18:47:55つーか、今時判らなければ調べるのが当たり前だろ。
0641デフォルトの名無しさん
2007/05/28(月) 20:38:26なんというゆとり。
0642デフォルトの名無しさん
2007/05/28(月) 20:41:44中学で習ったって人は一体何歳なんだろう?
40代?
0643デフォルトの名無しさん
2007/05/28(月) 20:48:54√は教えても、
>解の公式は取り扱わないものとする。
>平方根表は取り扱わないものとする
へえ・・・・1.4142 とかも教えないとは・・・・
0644デフォルトの名無しさん
2007/05/28(月) 20:54:46S35の指導要領で高1だな。
0645デフォルトの名無しさん
2007/05/28(月) 21:10:13解の公式はやらなかったので、何でも平方完成で解いた
1.4142...は雑談程度には出てきた
0646デフォルトの名無しさん
2007/05/28(月) 21:14:310647デフォルトの名無しさん
2007/05/28(月) 21:30:2940代でも高校ということは、
50〜60代くらいか? 中学は。
あるいは、その時代の進学校なら、
中学でも触れてる可能性はあるのかもしれんが・・・。
0648デフォルトの名無しさん
2007/05/28(月) 21:35:080649デフォルトの名無しさん
2007/05/28(月) 21:36:150650デフォルトの名無しさん
2007/05/28(月) 21:44:260651デフォルトの名無しさん
2007/05/28(月) 22:38:010652デフォルトの名無しさん
2007/05/28(月) 22:51:000653デフォルトの名無しさん
2007/05/29(火) 04:46:50結局その知識を使う環境が無いまま年齢重ねると
公式や、微分の基礎なんて忘れちまうよ。
あの頃はすらすら解けたのにっていうのがざらにある。
社会人になったら、そういう部分よりも必要なスキルやコミュニケーション能力等
が重要になる。
ま、結局必要な分野の知識以外はおのずと薄れていってしまう。
0654デフォルトの名無しさん
2007/05/29(火) 04:52:24使わない言語は勉強しても忘れる。
0655デフォルトの名無しさん
2007/05/29(火) 06:39:410656デフォルトの名無しさん
2007/05/29(火) 06:44:50I'as pen!
0657デフォルトの名無しさん
2007/05/29(火) 07:35:55俺「俺、もう中学レベルから英語わからへんわ」
ツレ「中学レベルっていったら、I am a Penとかやろ」
俺「まぁ、それくらいやったら解るけど」
・
・
数日後
俺「I am a Penってどういう意味やねん!」
0658デフォルトの名無しさん
2007/05/29(火) 09:52:400659デフォルトの名無しさん
2007/05/29(火) 11:35:220660デフォルトの名無しさん
2007/05/29(火) 15:58:24ってやつ?
0661デフォルトの名無しさん
2007/05/29(火) 18:08:580662デフォルトの名無しさん
2007/05/29(火) 21:19:430663デフォルトの名無しさん
2007/05/29(火) 21:39:430664デフォルトの名無しさん
2007/05/29(火) 22:11:59「日本は反省しる」とだいたい同じような感じでうけた。
つまり超シリアスな場面でまじめな顔をしてそんな間抜けなことをやらかしたから。
0665デフォルトの名無しさん
2007/05/29(火) 22:14:19超シリアスな場面で使われたことがポイントらしい。
「反省しる!」も韓国の議員が背広姿で大真面目に日本の国会議事堂前で
かましてくれたからこそ、大きな意味がある。
0666デフォルトの名無しさん
2007/05/29(火) 22:15:130667664
2007/05/29(火) 22:26:00もう結婚しているので、結婚は勘弁してください。
0668665
2007/05/29(火) 22:30:330669デフォルトの名無しさん
2007/05/30(水) 01:33:200670デフォルトの名無しさん
2007/05/30(水) 01:42:150672デフォルトの名無しさん
2007/05/30(水) 13:17:31そのような方法はありますか?
関数内で取得した文字列は関数内のローカル配列に格納するので、
配列の先頭アドレスを返そうとすると、
function returns address of local variable
といわれてしまいました。
0673デフォルトの名無しさん
2007/05/30(水) 13:20:34動的に割り当てた領域を返すか(開放は呼び出し元の責任で)、
文字数の最大値が決まっているなら呼び出し元が割り当てたものを関数に渡して
それに入れてもらうか。
0674デフォルトの名無しさん
2007/05/30(水) 13:24:41printf("%s, %s", getstr(), getstr())
のように同時に使うとバッファが一箇所にしかないのでおかしくなる。
char *getstr()
{
static char buf[256];
return buf;
}
mallocして返すタイプ
呼び出し側できっちりfreeしてやる必要がある。
malloc/freeが対になっていないのでいまいち。
char *getstr()
{
char *ret = malloc(256);
return ret;
}
呼び出し側にバッファを用意させるタイプ
使う側は多少面倒だがCではこっちが一般的。
char *getstr(char *buf)
{
return buf;
}
0675デフォルトの名無しさん
2007/05/30(水) 13:27:11MS-DOSプロンプトの時と違って、FTPモードではsystem()関数が使えません。
system("ftp localhost") ここまでsystemで実行されるようなんですが、
FTPモードになった時は、system関数に相当するものはあるのでしょうか?
とりあえずUserとPasswordを入力してログインがしたいです。
どなたか分かる方、宜しくお願いします。
0676デフォルトの名無しさん
2007/05/30(水) 13:47:01そうでないなら、自分でソケット開いてftp操作すれば。
ソースだってあるし、そんなに面倒じゃない。
あとは、呼び出すコマンドが対応していれば、パイプでつなぐ手もあるけど
0677デフォルトの名無しさん
2007/05/30(水) 14:04:21char *pってやったら
pはポインターだけど、char型でint型を示すことはできない
int *func(int x)
ってやったら
funcはポインターの値(0123456Fとか)を返すけど、そのポインターはint型を示すなので
p=func(10)とかはできないけど
int *a;
a=func(10)はできる
*←このマークが、これはポインターだよってことを示す印で・・・
構造体の場合
struct kozo{
int x;
int *p;
};
これの場合、a=kozo.pはできて
a=kozo.*pじゃないよね?
0678デフォルトの名無しさん
2007/05/30(水) 14:12:29回答ありがとうございます!!
すいません、自分でソケット開いてftp操作と言うのが
今ひとつわかりません・・。
一応、ソケットのクライアントとサーバーを作り、
相互で通信(文字を送るだけ)はできました。
何度も申し訳ないのですが、ソケットを開いてFTPの操作と言うのは、
具体的にどういった処理になるのでしょうか?
0679デフォルトの名無しさん
2007/05/30(水) 14:27:04int x=2;
は正しいのに
int *p;
*p=2は正しくて
int *p=2はエラーになるのはなんで?
0680デフォルトの名無しさん
2007/05/30(水) 14:31:07引数そのものを変える参照渡しの応用っぽい感じで
pにxのアドレスを入れるってのはどうやればいい?
これだと参照渡しにならないことはわかるんだけど
**pってやってもエラーになってわからん。
普通にp=&xってやりゃいいんだけど、それをあえて関数を使ってやった場合どうなるかって考えてたんだけど
#include <stdio.h>
#include <stdlib.h>
void func(int *p,int x);
int main(void){
int x=2;
int *p;
*p=3;
printf("pのアドレスは%p\n",p);
printf("xのアドレスは%p\n",&x);
func(&p,x);
printf("pのアドレスは%p\n",p);
return 0;
}
void func(int *p,int x){
p=&x;
}
0681デフォルトの名無しさん
2007/05/30(水) 14:34:01思いついたそばから書き込まないように。
関数にはコピーを渡すんだからそのアドレス持ってきたってどうにもならん。
0682デフォルトの名無しさん
2007/05/30(水) 14:36:54(int *) p = 2;
はダメだろ?
そのあたりは、Cの定義の仕方が勘違いしやすい原因
ポインタは typedef して 考えてみるといいよ
0683デフォルトの名無しさん
2007/05/30(水) 14:38:38>char *pってやったら
>pはポインターだけど、char型でint型を示すことはできない
charとintでは変数のサイズが違うからな。
例えば…
char ,*p;
int *q;
とした場合、
p++; → p=p+sizeof(char); (p=p+1ではない)
q++; → q=q+sizeof(int); (q=q+1ではない)
となる。
charポインタなのにint変数を指すと、ポインタを動かした場合にint変数の中途半端なところを指してしまいおかしいことになる。
0684デフォルトの名無しさん
2007/05/30(水) 14:45:15func関数でmalloc関数を使って領域を確保して、確保した領域を指すアドレスを返す。
ただし、プログラム終了後にfree関数で確保した領域を解放するのを忘れずに。
あと、static変数を宣言する手もあるけど。
ちなみに
>void func(int *p,int x){
>p=&x;
>}
だと、func関数を抜けた時点で変数xは消滅するので、消滅した変数xのアドレスを返しても使えない。
0685デフォルトの名無しさん
2007/05/30(水) 14:52:470686デフォルトの名無しさん
2007/05/30(水) 15:02:40>*←このマークが、これはポインターだよってことを示す印で・・・
「宣言」のときはそうだが、「式」の中では違う。
*(ポインタ) は 「ポインタの中身」。
なので
>>679
>int *p;
>*p=2は正しくて
ポインタを「宣言」して、ポインタの中身を2にしてる。
>int *p=2はエラーになるのは
ポインタ自身に整数は突っ込めないから。
>>685
>プログラム終了時にfree関数で〜
関数を呼び出した元で、その領域が不要になり次第解放すべき。
0687デフォルトの名無しさん
2007/05/30(水) 15:16:17>int *p;
>*p=3;
なんにもわかってねー
0688デフォルトの名無しさん
2007/05/30(水) 15:26:09もう一度ポインタの勉強をした方がいいね。
あと、自動変数・静的変数の仕組みも。
図にして書くとわかりやすいよ。
0689デフォルトの名無しさん
2007/05/30(水) 16:09:55funcのpとmainのpは別物。
ローカル変数同士同じ名前にしても関係ないのは、ポインタ変数でもかわらない。
0690デフォルトの名無しさん
2007/05/30(水) 16:32:54int *p = (int*)malloc(4);
return p;
}
このような関数の戻り値を使うことに問題はありませんよね?
友人に「ローカル変数は関数抜けたら開放されるからどこ指すのかわからなくなる」と言われ混乱しています。
mallocで確保したメモリ領域はfreeするまで開放されないと思うのですが・・・
0691デフォルトの名無しさん
2007/05/30(水) 16:40:31pが指しているアドレスを元の関数で受け取っているなら問題ない。
0692>>680ごちゃごちゃして混乱するかもしれんが、とりあえず
2007/05/30(水) 16:50:17int main(void){
int x;
int* p;
x=1;
printf("xのアドレスは%p,pのアドレスは%p\n",&x,&p);
//pには&p,p,*pの3つの値がある
//&pは変数pのアドレス
//pはxのアドレスを示すようにすると
//*pはxの値が示される
printf("----------ここから関数呼び出し\n");
change(&p,&x);
printf("xのアドレスは%p\npのアドレスは%p\npの内容は%p\npの内容が示す内容は%d\n",&x,&p,p,*p);
return 0;
}
void change(int* s,int*x){
//関数changeが呼び出されたときにメモリのどっかの領域からsという領域がとられる
//変数sには&s,s,*sの3つの値がある
//&sは変数sのアドレス
//sは代入されたアドレス(main関数の&pの値と同じ)
//*sは代入されたアドレスが示す内容(まだ*pは未定義なのでごみが入っている)
printf("sのアドレスは%p\nsの内容は%p\nsの内容の内容は%p\n",&s,s,*s);
//ここで、&sは関数呼び出しのときに確保されるのでmain関数では使われていない領域を確保
//sがmain関数の&pの値になり、*sがpの内容になる
//よって、main関数のpの値にxのアドレスを入れたいのならpの内容と同等の*sの内容を書き換えて
*s=x;
printf("sの内容をmain関数のxのアドレスと同じ%pにした\n",*s);
printf("------------ここまで関数部分\n");
}
0693デフォルトの名無しさん
2007/05/30(水) 16:58:57サイズの問題じゃなくて、型が違うからだ。
別に char と int のサイズが同じでも規格上は問題ないんだぜ?
0694デフォルトの名無しさん
2007/05/30(水) 18:27:46わかりませぬ・・・・。
0695デフォルトの名無しさん
2007/05/30(水) 18:28:57誰か助けてください。
0696デフォルトの名無しさん
2007/05/30(水) 18:33:320697デフォルトの名無しさん
2007/05/30(水) 18:33:590698デフォルトの名無しさん
2007/05/30(水) 18:34:56*p = 100;
0699デフォルトの名無しさん
2007/05/30(水) 19:08:530700デフォルトの名無しさん
2007/05/30(水) 19:25:15を使ってみた者なのですが hello would!等 と打ってみたのですが
正常終了しただけで でーんと小ウインドウでhello would! と表示されないのですが
どのように設定したら良いでしょうか???
よろしくお願いします。
0701デフォルトの名無しさん
2007/05/30(水) 19:26:140702デフォルトの名無しさん
2007/05/30(水) 19:27:19F5で実行したのね。
とりあえずCtrl-F5で。
0703デフォルトの名無しさん
2007/05/30(水) 19:27:23{ char buf[256]; gets(buf); }
とかmainの最後に入れとけ。
0704デフォルトの名無しさん
2007/05/30(水) 20:59:270705デフォルトの名無しさん
2007/05/30(水) 22:06:050706デフォルトの名無しさん
2007/05/31(木) 13:39:210707デフォルトの名無しさん
2007/05/31(木) 13:40:020708デフォルトの名無しさん
2007/05/31(木) 13:50:020709デフォルトの名無しさん
2007/05/31(木) 14:01:13恋人ができれば、Cまで行くのは簡単だ。
0710デフォルトの名無しさん
2007/05/31(木) 20:45:060711名無し
2007/05/31(木) 20:57:320712デフォルトの名無しさん
2007/05/31(木) 21:00:430713デフォルトの名無しさん
2007/05/31(木) 21:51:44数字だけ消すにはどうすれば……
0714デフォルトの名無しさん
2007/05/31(木) 21:57:18if(! isdigit(str[i])) {
str[j] = str[i];
j++;
}
if(str[i] == '\0') { break; }
}
0715デフォルトの名無しさん
2007/05/31(木) 22:00:48ローカルテストじゃやってたというのに。
0716デフォルトの名無しさん
2007/05/31(木) 22:08:44それより
for(i = j = 0; str[i] ; i++) {
if(! isdigit(str[i])) {
str[j] = str[i];
j++;
}
}
このほうが、多少シンプルじゃまいか?
0717デフォルトの名無しさん
2007/05/31(木) 22:17:320718デフォルトの名無しさん
2007/05/31(木) 22:26:43けつに
str[j] = 0;
だな
0719デフォルトの名無しさん
2007/05/31(木) 22:26:48unsigned char へのキャストが必要になる。
for でヌル文字チェックしたら、
for の後に str[j] = '\0'; が必要。
これでもいいとは思うけどね。
0720デフォルトの名無しさん
2007/05/31(木) 22:26:59intだからこそ問題となることがある。
isdigitに渡す引数がchar型だったとして、その値が負なら符号拡張された値が渡されてしまう。
is系関数が受け取れる引数の値の範囲は0からUCHAR_MAXまでとEOFのみ。
よって、負の値を渡したらまず間違いなく未定義の動作になってしまう。
ASCIIの文字だけしか入っていないなど、char型の値が負でないと確実に言えるのであれば、
unsigned charへキャストしてやる必要はない。
0721デフォルトの名無しさん
2007/05/31(木) 22:29:390722デフォルトの名無しさん
2007/05/31(木) 22:35:28お茶を濁しておくものだ、って隣のUNIXハカが言ってた。
0723デフォルトの名無しさん
2007/06/01(金) 06:54:59char *str[128];
こういう宣言は、128個の文字列のポインタと考えていいのでしょうか?
それとも、char型のポインタが128個あると考えるのでしょうか?
0724デフォルトの名無しさん
2007/06/01(金) 07:02:57後者です。もちろん文字列の先頭の文字を指すこともできますから、
結果として文字列を指すように使うこともできます。
0725デフォルトの名無しさん
2007/06/01(金) 09:05:01char *(str[128]);
0726デフォルトの名無しさん
2007/06/01(金) 11:27:14マルチバイト文字列の一部を渡す時点で間違いだと気付こうや。
0727デフォルトの名無しさん
2007/06/01(金) 17:57:13はキャストできるんですが、
char str[8] = "GJGJ.txt";
この変数を、1行目と同様のキャストをするにはどうしたら良いでしょうか?
どなたかよろしくお願いします。
0728デフォルトの名無しさん
2007/06/01(金) 18:01:30そもそも一行目はキャストじゃありませんが。
0729デフォルトの名無しさん
2007/06/01(金) 18:31:18こうしたいのか?
0730デフォルトの名無しさん
2007/06/01(金) 18:32:000731デフォルトの名無しさん
2007/06/01(金) 19:01:51わざとじゃね?'\0' を入れたくない理由があるんだよ、きっと。知らんけど。
0732デフォルトの名無しさん
2007/06/01(金) 19:07:210733デフォルトの名無しさん
2007/06/01(金) 19:11:320734デフォルトの名無しさん
2007/06/01(金) 20:37:530735デフォルトの名無しさん
2007/06/01(金) 21:47:27L""はキャストじゃない、クオートの中の文字コードが違う
char str[] = "GJGJ.TXT";
wchar_t wstr[] = L"GJGJ.TXT";
コンパイル時に切り替えるのが_Tマクロ
0736デフォルトの名無しさん
2007/06/02(土) 01:11:24solaris10にvimを入れようとしているのですが
http://music.geocities.jp/antoinettevim/vim71.log
のエラーが出てしまいます。
該当の箇所を見ると
,...となっている部分でした。
http://music.geocities.jp/antoinettevim/intrinsic.h.txt
ヘッダは修正したくないので何か解決方法はありませんでしょうか?
0737デフォルトの名無しさん
2007/06/02(土) 01:35:56インクルードのディレクトリの指定が足りないんじゃないか
0738デフォルトの名無しさん
2007/06/02(土) 02:01:360739デフォルトの名無しさん
2007/06/02(土) 02:19:16y to add :
#include <X11/Xfuncproto.h>
or :
#if defined(__GNUC__) && (__GNUC__ >= 4)
# define _X_SENTINEL(x) __attribute__ ((__sentinel__(x)))
# define _X_ATTRIBUTE_PRINTF(x,y) __attribute__((__format__(__printf__,x,y)))
#else
# define _X_SENTINEL(x)
# define _X_ATTRIBUTE_PRINTF(x,y)
#endif /* GNUC >= 4 */
in ggtrayicon.h just before line 26 ( the call to gtk-2.0/gdk/gdkx.h)
0740736
2007/06/02(土) 03:20:48出来ました
上のはだめでしたけど下のでいけました
http://music.geocities.jp/antoinettevim/root.png
ありがとうございます。(バグって事なので結局ヘッダ修正しちゃいました。)
>>737さん、>>738さんもありがとうございました。
なぜかgvimだと日本語表示できないのは
頑張って調べてみます
0741デフォルトの名無しさん
2007/06/02(土) 05:23:050742デフォルトの名無しさん
2007/06/02(土) 09:14:010743デフォルトの名無しさん
2007/06/02(土) 10:42:22のプログラムを作りたいんですけど誰か教えてください
整数を入力してください:25
1234567890123456789012345
0744デフォルトの名無しさん
2007/06/02(土) 10:51:180745デフォルトの名無しさん
2007/06/02(土) 18:00:050746デフォルトの名無しさん
2007/06/02(土) 18:21:54main(){
int dt;
printf("整数を入力してください:");
scanf("%d",&dt);
if (dt==25) printf("1234567890123456789012345\n");
}
0747デフォルトの名無しさん
2007/06/02(土) 18:49:03#include <stdio.h>
int main(void)
{
int i, x;
printf("整数を入力してください:");
scanf("%d", &x);
for(i = 1; i <= x; i++) {
printf("%d", i % 10);
}
return(0);
}
0748デフォルトの名無しさん
2007/06/02(土) 19:54:09ありがとございまーす
0749デフォルトの名無しさん
2007/06/02(土) 22:53:08氏ね
0750デフォルトの名無しさん
2007/06/02(土) 23:03:41?
0751デフォルトの名無しさん
2007/06/02(土) 23:05:04きっとこれが気に入らなかったんだな
0752デフォルトの名無しさん
2007/06/02(土) 23:07:500753デフォルトの名無しさん
2007/06/03(日) 00:15:35自分のレスが単なる馬鹿っぽくなったからだろ
0754デフォルトの名無しさん
2007/06/03(日) 00:16:27恥ずかしいだけだよ
0755デフォルトの名無しさん
2007/06/03(日) 05:41:54>整数を入力してください:25
整数は全角入力なんだよ!
0756デフォルトの名無しさん
2007/06/03(日) 05:49:460757デフォルトの名無しさん
2007/06/03(日) 13:12:39俺がセンスのいい解答をみせてやるぜ!
0758デフォルトの名無しさん
2007/06/03(日) 13:57:17はやくぅ
0759デフォルトの名無しさん
2007/06/03(日) 13:59:400760デフォルトの名無しさん
2007/06/03(日) 14:39:05#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x,y,i,j,lmt;
char *a={"1234567890"},buf[32];
printf("整数を入力してください:");
fgets(buf,sizeof(buf)/sizeof(buf[0]),stdin);
x=atoi(buf);
for(y=x; x>0; x-=10) {
if(x>=10) lmt=10;
else lmt=y%10;
for(j=0; j<lmt; j++)
printf("%c",a[j]);
}
return 0;
}
0761デフォルトの名無しさん
2007/06/03(日) 15:35:43#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void) {
int x,y,i,j,lmt;
char *a={"1234567890"};
wchar_t buf[32],*p;
setlocale(LC_CTYPE,"jpn");
printf("整数を入力してください:");
fgetws(buf,sizeof(buf),stdin);
x=(int)wcstol(buf,&p,10);
for(y=x; x>0; x-=10) {
if(x>=10) lmt=10;
else lmt=y%10;
for(j=0; j<lmt; j++)
printf("%c",a[j]);
}
return 0;
}
0762デフォルトの名無しさん
2007/06/03(日) 16:06:48くをっ、こぉのぉ〜!俺のイカソースの一部をパクるんじゃねぇ〜〜!
普通に↓使ってりゃええやろ!w
for(i = 1; i <= x; i++) { printf("%d", i % 10); }
0763デフォルトの名無しさん
2007/06/03(日) 16:30:32そのプログラムでは実行結果が
「整数を入力してください:25
1234567890123456789012345 」
↑しかできないから不正解じゃね?
0764デフォルトの名無しさん
2007/06/03(日) 16:50:15#include <stdio.h>
int main(void)
{
int i, n;
char a[] = "1234567890";
printf("整数を入力してください:");
scanf("%d", &n);
while(n>=10) {
printf(a);
n -= 10;
}
for(i=1; i<=n; i++) putchar(a[i-1]);
return 0;
}
0765デフォルトの名無しさん
2007/06/03(日) 17:01:50#include <stdio.h>
int main(void)
{
int n;
char str[] = "1234567890";
printf("整数を入力してください:");
scanf("%d", &n);
for(; n>10; n-=10) printf("%s", str);
str[n] = '\0';
printf("%s", str);
return 0;
}
0766デフォルトの名無しさん
2007/06/03(日) 17:09:18センスいいな
0767デフォルトの名無しさん
2007/06/03(日) 17:12:390768デフォルトの名無しさん
2007/06/03(日) 17:29:42そんじゃ俺もソースかこっと。
#include <stdio.h>
int main()
{
int c,i;
printf("整数を入力してください :");
scanf("%d",&c);
for(i = 0; i < c; i++)
putchar('0' + i % 10);
return 0;
}
0769デフォルトの名無しさん
2007/06/03(日) 17:30:48センスねーな
0770デフォルトの名無しさん
2007/06/03(日) 17:32:090771デフォルトの名無しさん
2007/06/03(日) 17:34:31つーか間違ってるぞ
0772デフォルトの名無しさん
2007/06/03(日) 17:57:560773デフォルトの名無しさん
2007/06/03(日) 18:06:33#include <stdio.h>
int main(void)
{
int n;
static char str[] = "1234567890";
printf("整数を入力してください:");
scanf("%d", &n);
for(; n>10; n-=10) printf("%s", str);
printf("%.*s", n, str);
return 0;
}
0774743
2007/06/03(日) 19:01:12作れって言われました
あと
static char str[]
↑これは習ってないから使わないでやれって言われました
#include <stdio.h>
int main(void)
{
int i, no;
printf("正の整数を入力してください:");
scanf("%d", &no);
for (i = 1; i <= no; i++)
putchar('*');
putchar('\n');
return (0);
}
0775デフォルトの名無しさん
2007/06/03(日) 19:08:39たとえば
printf("a");
と書くときに
printf("");
を先に書いてしまっているんですが
やはり左から順に書いていったほうが変な癖とかがつかなくていいんでしょうか?
0776デフォルトの名無しさん
2007/06/03(日) 19:11:50int main(void)
{
int i, no;
printf("正の整数を入力してください:");
scanf("%d", &no);
for (i = 0; i <= no; i++) putchar('0' + i%10);
putchar('\n');
return 0;
}
>>775
そんなことないよ
0778デフォルトの名無しさん
2007/06/03(日) 19:41:22それやってると、入力効率悪すぎるよ。
カッコの対応が人目で確認できるエディタを使って、順番に書いたほうがメチャ楽。
0779デフォルトの名無しさん
2007/06/03(日) 19:55:40{
char *p = strstr(in_str, "#include <");
if(!p) return 0;
strcpy(out_str, p + strlen("#include <"));
char *q = out_str + strlen(out_str) - 1;
if(*q != '>') return 0;
*q = '\0';
return out_str;
}
in_strが
#include <stdio.h>
という形式なら<>の中を抜き出してout_strに返すというコードなんですが
if in_str =~ /^#include <(.*)>$"/ then return $1 else return nil end
みたいな感じにもっと手っ取り早い表記ってないんですかね。
0780デフォルトの名無しさん
2007/06/03(日) 19:57:150781デフォルトの名無しさん
2007/06/03(日) 19:58:420782デフォルトの名無しさん
2007/06/03(日) 19:59:26一生、高級言語使っていてください。
0783デフォルトの名無しさん
2007/06/03(日) 20:05:040784デフォルトの名無しさん
2007/06/03(日) 20:07:410785デフォルトの名無しさん
2007/06/03(日) 20:16:10自作関数ならプロトタイプ宣言すればいいし、ライブラリとかの関数なら、適切なヘッダーファイルを#includeする。
0786デフォルトの名無しさん
2007/06/03(日) 20:27:16ある入門本の一番最初なんですが、
#include<stdio.h>
main() {
printf("Hello!");
return 0;
}
でコンパイルすると
「エラー E2209 1: インクルードファイル’stdio.h’をオープンできない
警告 W8065 5:プロトタイプ宣言のない関数’printf’の呼び出し(関数 main)
*** 1 errors in Compile ***」
みたいなかんじでエラーになるんです
なにが原因でしょうか?
0787デフォルトの名無しさん
2007/06/03(日) 20:30:08環境変数の設定がおかしいと思う。
そのコンパイラの名前と「インストール」とかでググれば、設定の仕方がでてくるんじゃない?
0788デフォルトの名無しさん
2007/06/03(日) 21:09:12本に書いてあるとおりにやったんで間違いないはずなんですが・・・
ググっていろいろ試してみましたがやっぱりうまくいきません
0789デフォルトの名無しさん
2007/06/03(日) 21:19:47インストーラーが全部環境設定やってくれるやつ。
0790デフォルトの名無しさん
2007/06/03(日) 21:25:210791デフォルトの名無しさん
2007/06/03(日) 21:26:30答えてもらっておいてその答えが信用できないんなら、もうこないほうがいいよ。
0792デフォルトの名無しさん
2007/06/03(日) 21:27:040793デフォルトの名無しさん
2007/06/03(日) 21:32:12最初からインストールされてないとかも。
単に環境変数とかパスのスペルミスってことも考えられるね。
0794デフォルトの名無しさん
2007/06/03(日) 21:32:160796デフォルトの名無しさん
2007/06/03(日) 21:36:040797デフォルトの名無しさん
2007/06/03(日) 22:22:43君もそのうちわかるようになるさ
本は結構、間違っているとwww
0798デフォルトの名無しさん
2007/06/03(日) 22:58:400799デフォルトの名無しさん
2007/06/04(月) 02:41:36もしくは、それの代わりの設定(これはコンパイラによる)
INCLUDEが無いんじゃ、LIBもないだろうな
0800デフォルトの名無しさん
2007/06/04(月) 06:13:11どこのコンパイラかくらい書けっつーの
0801デフォルトの名無しさん
2007/06/04(月) 06:32:59実はそれを書くだけで的確な回答がもらえるはずなのにね。
0802デフォルトの名無しさん
2007/06/04(月) 07:22:1710進数の-5.25を2進数で表示する問題の解き方を教えて頂けないでしょうか
0803デフォルトの名無しさん
2007/06/04(月) 07:53:08同様に、桁が下がる毎に1/nになる。10進数なら1/10。
0804デフォルトの名無しさん
2007/06/04(月) 07:59:5110進数は小数点以下は2桁で固定? それとも任意?
2進数で小数点以下何桁まで表示すればいいの?
0805デフォルトの名無しさん
2007/06/04(月) 08:00:13宿題には、もうちょっと条件ついてなかったかい?
ビット数とか、負数の表現方法とか
0806デフォルトの名無しさん
2007/06/04(月) 08:04:28S(符号)は1ビットで仮数の符号を表す
E(指数部)は4ビットで指数を表し負数は2の補数で表現
M(仮数部)は11ビットで仮数の絶対値を表す
基数は2とする
仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す
小数点はEとMの位置にする
0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする
という問題ないようです
0807デフォルトの名無しさん
2007/06/04(月) 08:04:35先ずは、5を2進表示する方法を学び、それを小数を扱えるように拡張、更に負数の取り扱いに関して学べばOK。
つーか、2進表現にも色々あるからそれを確認してくれ。
0808デフォルトの名無しさん
2007/06/04(月) 08:08:01先ず、絶対値を取り扱う。
5.25を2進表現すると101.01(2)になる。
>806の条件に合わせるには0.10101(2)*2^-3となる。
ここまで判れば後は簡単だろう。
0809デフォルトの名無しさん
2007/06/04(月) 08:11:350.01262625でいいのでしょうか
0810デフォルトの名無しさん
2007/06/04(月) 08:13:160811デフォルトの名無しさん
2007/06/04(月) 08:13:370812デフォルトの名無しさん
2007/06/04(月) 08:14:320813デフォルトの名無しさん
2007/06/04(月) 08:17:06つまり -5.25 は - 21/4 = S[-1] * M[ 21] * E[ 2^-2] と与えられて
これを2進数で表示すればいいの?
それとも-5.25 という文字列が与えられて この形式に変換するのが課題?
0814デフォルトの名無しさん
2007/06/04(月) 08:21:212進数で表示します
0815デフォルトの名無しさん
2007/06/04(月) 08:25:14IEEE 754 なりエクセス 64 なりに仮定していいのであれば、
おもしろいコードを書く事もできるんだけどな。
0816デフォルトの名無しさん
2007/06/04(月) 08:27:46これを繰り返して、適当なところで小数点や 0 を補えばおk。
0817デフォルトの名無しさん
2007/06/04(月) 08:43:45つまり課題としては
-5.25 が >>806 の浮動小数点形式で与えられて、
2進数でASCIIで表示すればいいんだね?
S EEEE 1. MMMMMMMMMMM
1 0011 1. 010 1000 0000 = -5.25 =-0b101.01
だから、
1、 0x8000 と AND して1なら'-' を出力
2、 0x0800 or ( 0x7FF and data) が化数
3、 (signed short)(data << 1)>>12 が指数部
2の結果を2進数化して、指数の位置に小数点を打てばいい
0818デフォルトの名無しさん
2007/06/04(月) 08:45:340x800 とAND しては 0なら0 でなければ1 として 左シフトしてゆくといい。
なお、このスレは宿題スレじゃないので、コードは自分で作ること
0819デフォルトの名無しさん
2007/06/04(月) 10:07:47ほれ。
ttp://sund1.sakura.ne.jp/uploader/source/up6177.c
0820デフォルトの名無しさん
2007/06/04(月) 10:16:05ttp://sund1.sakura.ne.jp/uploader/source/up6178.c
0821デフォルトの名無しさん
2007/06/04(月) 10:29:19ついでにテストコードを改良
ttp://sund1.sakura.ne.jp/uploader/source/up6179.c
0822デフォルトの名無しさん
2007/06/04(月) 13:44:36#include <stdlib.h>
int main()
{
return system("sort");
}
0823デフォルトの名無しさん
2007/06/04(月) 13:56:320824デフォルトの名無しさん
2007/06/04(月) 14:04:580825デフォルトの名無しさん
2007/06/04(月) 14:12:330826デフォルトの名無しさん
2007/06/04(月) 14:24:05#勿論、system("ls | sort > foo")なんてこともできる。
0827デフォルトの名無しさん
2007/06/04(月) 14:27:30>>822 をコンパイルしてできた実行ファイル a.out に対して
./a.out < test.txt みたいなことができる、という意味。
0828デフォルトの名無しさん
2007/06/04(月) 14:32:07>824
0829デフォルトの名無しさん
2007/06/04(月) 14:33:000830デフォルトの名無しさん
2007/06/04(月) 14:36:16>>825
0831デフォルトの名無しさん
2007/06/04(月) 14:38:24system でシェルを起動した場合、
デフォルトの標準入出力は継承される、
ということになるわけ?
0832デフォルトの名無しさん
2007/06/04(月) 14:40:27>デフォルトの標準入出力は継承される、
#起動されたシェルのデフォルトの標準入出力は、
#それを起動した側の標準入出力を継承する、
0833デフォルトの名無しさん
2007/06/04(月) 14:42:060834822
2007/06/04(月) 15:31:42freeしていないのはゆるしてw
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct line {
struct line *next;
char *data;
} line;
static line *marge(line *a, line *b)
{
line *top = NULL;
line **pp = ⊤
for (;;) {
if (!a) { *pp = b; break; }
else if (!b) { *pp = a; break; }
if (strcmp(a->data, b->data) < 0) {
*pp = a;
pp = &a->next;
a = *pp;
} else {
*pp = b;
pp = &b->next;
b = *pp;
}
}
return top;
}
0835822
2007/06/04(月) 15:32:34{
line *a, *b, *p;
if (!x || !x->next)
return x;
a = x;
b = x->next->next;
while (b) {
a = a->next;
b = b->next;
if (b)
b = b->next;
}
p = a->next;
a->next = NULL;
return marge(msort(x), msort(p));
}
0836822
2007/06/04(月) 15:34:14{
char buf[1024];
line *head, *p, **nextp;
head = NULL;
nextp = &head;
while (fgets(buf, sizeof(buf), stdin)) {
char *eol;
line *p = malloc(sizeof(line));
p->next = NULL;
eol = strrchr(buf, '\n');
if (eol) *eol = '\0';
p->data = strdup(buf);
*nextp = p;
nextp = &p->next;
}
p = msort(head);
while (p) {
puts(p->data);
p = p->next;
}
return 0;
}
0837822
2007/06/04(月) 15:41:19orz
0838デフォルトの名無しさん
2007/06/04(月) 15:44:270839786
2007/06/05(火) 19:18:16みなさんから見たらなんでもないことかもしれませんがすごくうれしいですね
親切に教えてくれて方どうもありがとうございました
0840デフォルトの名無しさん
2007/06/06(水) 08:22:34fp=fopen("FileName","w");
この部分って、fopenが"r"のときはエラー処理入れるけど、wのときはエラー処理いれなくていいの?
何らかの理由でファイルが作成できない場合ってないの?
0841デフォルトの名無しさん
2007/06/06(水) 08:23:480842デフォルトの名無しさん
2007/06/06(水) 08:31:030843デフォルトの名無しさん
2007/06/06(水) 08:33:190844デフォルトの名無しさん
2007/06/06(水) 08:53:08・ ディレクトリに書き込み権限がない
・ ディスクフルでそのディレクトリにファイルを追加することすら不可能になっている
こんなところか。
0845デフォルトの名無しさん
2007/06/06(水) 08:58:47好きにしろ
0846デフォルトの名無しさん
2007/06/06(水) 10:44:090847デフォルトの名無しさん
2007/06/06(水) 17:41:36OSはWINXPです。
0848デフォルトの名無しさん
2007/06/06(水) 17:53:34コンパイラは cygwin (gcc) 、エディタはTeraPadとかいいんでね?
ぶっちゃけ、好みの問題だからなぁ。
0849デフォルトの名無しさん
2007/06/06(水) 17:55:31まあWinならBC++かVC++2005EEがフリーで手に入るので
試しに使ってみるのがいい。
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
Visual Studio 2005スレ Part21
http://pc11.2ch.net/test/read.cgi/tech/1180692040/
0850デフォルトの名無しさん
2007/06/06(水) 17:55:55Visual C++ Express Edition 2005 でも落としとけ。
0851デフォルトの名無しさん
2007/06/06(水) 18:13:19一応、最終的な目標はゲームを作ることです。
>>850
ありがとうございます。
とりあえずVisual C++ Express Edition 2005を試してみようと思います。
0852デフォルトの名無しさん
2007/06/06(水) 21:56:13OSはVISTAです。できればフリーソフトでダウンロード方法とかも教えてください。
0853デフォルトの名無しさん
2007/06/06(水) 22:01:540854 ◆lIN/ESgxWw
2007/06/06(水) 22:31:40コチラに質問させていただきます。
「1本の道に,食べ物が多数落ちている.
ランダムに動く動物が,それらを全て食べ尽くすと終了するようなプログラムを作成せよ.」
<仕様>
[「道」は要素数20程度の1次元配列で表現する.
「食べ物」は,上記配列の各要素に値1があればその場所に存在し,値0であればその場所には存在しないものとする.
「動物」は,1回の移動で配列中の1つ左または1つ右に移動できる.
「動物」の訪れた場所のエサは食べられたものとする.
「道のうち食べ物のない箇所」,「道のうち食べ物のある箇所」,「動物」は,それぞれ -, *, O で表現する.それらを横一列の文字で表示する.
繰り返し処理中は,毎回数十〜数百ミリ秒程度の時間,実行を一時停止させることで,状態の推移を見やすくする.]
といった感じのプログラムなんですが、よろしくお願いします。
ちなみに補足などについては、
・OS:リナックス
・制限など:習ってるのは配列までです。
・コンパイラ:gcc
という具合です。
0855デフォルトの名無しさん
2007/06/06(水) 22:33:49宿題スレへ池
0856デフォルトの名無しさん
2007/06/06(水) 23:04:25という問題なのですが
ia=ia++1
では2を加えたことにはならないのでしょうか
0857デフォルトの名無しさん
2007/06/06(水) 23:08:450858デフォルトの名無しさん
2007/06/06(水) 23:20:51ia=ia+++1じゃないと式にならん。
>857
中二病なんだろ
0859デフォルトの名無しさん
2007/06/06(水) 23:24:060860デフォルトの名無しさん
2007/06/06(水) 23:30:08ia=ia++1が?
0861デフォルトの名無しさん
2007/06/06(水) 23:32:560862デフォルトの名無しさん
2007/06/06(水) 23:40:460863デフォルトの名無しさん
2007/06/06(水) 23:41:26いや正確にはia=ia+++1の方
0864デフォルトの名無しさん
2007/06/06(水) 23:46:270865デフォルトの名無しさん
2007/06/07(木) 02:16:53以下の文が分かりません。
.nameみたいに.が付いているのは何の意味ですか?
static struct usb_driver hoge_driver = {
.name = HOGE_NAME,
.id_table = hoge_table,
.probe = hoge_probe,
.disconnect = hoge_disconnect,
};
0866デフォルトの名無しさん
2007/06/07(木) 05:13:56C99で導入された指示付き初期化子と呼ばれるもの。
配列の要素や構造体のメンバを初期化するときに、
要素のインデクスやメンバ名を指定して初期値を与えることができる。
0867デフォルトの名無しさん
2007/06/07(木) 07:12:33が処理系依存なのと同じだな
>>863
0868デフォルトの名無しさん
2007/06/07(木) 07:22:480869デフォルトの名無しさん
2007/06/07(木) 08:31:21ia += ++ia;
ってどうなるのか説明してください
0870デフォルトの名無しさん
2007/06/07(木) 08:54:26突然で恐縮ですが、初心者でも使いやすいコンパイラを教えて頂きたいです。
0871デフォルトの名無しさん
2007/06/07(木) 08:59:280872デフォルトの名無しさん
2007/06/07(木) 09:10:30でも、Vista 対応って言うと限られてくるんじゃないの?
ググってもなかなか難しいぞ。
0873デフォルトの名無しさん
2007/06/07(木) 09:27:54コンパイラなんて使い出せばどれも一緒
使いやすい、だけなら全部お勧め
0874デフォルトの名無しさん
2007/06/07(木) 09:28:270875デフォルトの名無しさん
2007/06/07(木) 10:47:18ふつう、
ia += 2;
0876デフォルトの名無しさん
2007/06/07(木) 10:48:44>いいコンパイラ
の基準が何なのか知らないが、やる気がないならやめとけ。
0877デフォルトの名無しさん
2007/06/07(木) 10:55:58int tmp = ia & carry;
ia ^= carry;
carry = tmp << 1;
}
0878デフォルトの名無しさん
2007/06/07(木) 11:54:050879デフォルトの名無しさん
2007/06/07(木) 11:57:560880デフォルトの名無しさん
2007/06/07(木) 12:32:01>>856が複合代入演算子がふつうに理解できるとは思えない
0881デフォルトの名無しさん
2007/06/07(木) 12:33:08#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
static char way[20];static void initway(void){ int i; for (i =
0; i < sizeof(way); ++i) { way[i] = (rand() >> 4) & 1; } }
static int count_foods(void) { int i; int c = 0; for (i = 0; i <
sizeof(way); ++i) { c += way[i] != 0; } return c; } static void
display(int x) { int i; for (i = 0; i < sizeof(way); ++i) { if
(i == x) { putchar('*'); continue; } putchar(way[i] == 0 ? '-' :
'O'); } putchar('\r'); } static int step(int x) { if ((rand() >>
8) & 1) { if (x > 0) --x; } else { if (x < sizeof(way)-1) ++x; }
return x; } int main(void) { int x = sizeof(way) / 2;
setbuf(stdout, NULL); srand(time(NULL)); initway(); do { x =
step(x); way[x] = 0; usleep(10000); display(x); } while
(count_foods() > 0); putchar('\n'); return 0; }
なかなか食べ終わらないw
0882881
2007/06/07(木) 12:55:390883デフォルトの名無しさん
2007/06/07(木) 13:08:290884881
2007/06/07(木) 13:12:52C++つかっているとプリインクリメント使う癖が...
0885デフォルトの名無しさん
2007/06/07(木) 13:21:300886デフォルトの名無しさん
2007/06/07(木) 13:24:59C++ は前置が多い。
C++ 使いが C を使うと前置になる事も。
C++ で前置が多い理由は演算子オーバーロードとの関係。
0887デフォルトの名無しさん
2007/06/07(木) 13:35:210889デフォルトの名無しさん
2007/06/07(木) 13:43:100890881
2007/06/07(木) 13:43:58*(p++) , *(++p) みたいに結果が異なる場合もあるので注意したほうがいい。
0891デフォルトの名無しさん
2007/06/07(木) 13:47:50プログラミングスタイルにしてるし。
0892デフォルトの名無しさん
2007/06/07(木) 14:03:55unsigned int i = 0;
while (i < num)
printf("v[%d] = %d\n", i++, *(v++));
return;
}
こういうことか
駄目なスタイルの典型でゴメスだけど
0893デフォルトの名無しさん
2007/06/07(木) 16:52:080894デフォルトの名無しさん
2007/06/07(木) 16:57:310895デフォルトの名無しさん
2007/06/07(木) 18:02:41敢えてカッコ付けることは良くある話。
0896デフォルトの名無しさん
2007/06/07(木) 18:20:090897デフォルトの名無しさん
2007/06/07(木) 18:24:35敢えて (a && b) || (c && d) と書く俺。
0898デフォルトの名無しさん
2007/06/07(木) 18:45:22ありがとうございました。
ある構造体に含まれるメンバのうち
特定のメンバだけ明示的に初期化したいときに使うのですね。
0899デフォルトの名無しさん
2007/06/07(木) 19:03:42>>894
あちゃー、こういう場合は慣用句的に()とっちゃった方が良いんですか><
じゃあ*とインクリメントの組み合わせとかの場合は括弧取って書くようにしますね><
0900デフォルトの名無しさん
2007/06/07(木) 19:06:36今回の場合問題ないけど
0901デフォルトの名無しさん
2007/06/07(木) 19:36:050902デフォルトの名無しさん
2007/06/07(木) 22:21:48読むときには思い出す。
0903デフォルトの名無しさん
2007/06/07(木) 22:43:34a = 3 + (b * 2);
とかじゃなきゃ許す
0904デフォルトの名無しさん
2007/06/07(木) 22:56:49C言語は、特にポインタ使うととても自由度のある書き方が出来る言語だから
慣用句的な部分は作法として真似ておかないと
互いに互いのコードが読み辛くなるから、 そこらへんは妥協しておいてね。
0905デフォルトの名無しさん
2007/06/07(木) 23:04:08hoge = *p++
はわかりにくいと指摘され
hoge = *p;
p++;
と修正した記憶があるな
個人的にはどっちでもいいだろと思ったけど
万人にわかりやすいのは後者だな
0906デフォルトの名無しさん
2007/06/07(木) 23:05:540907デフォルトの名無しさん
2007/06/07(木) 23:08:22俺は使わないようにしてる。
というか、インデックス使って書く場合が多い気がするから、
そもそもこういう状況に遭遇すること自体が少ない。
0908デフォルトの名無しさん
2007/06/07(木) 23:09:320909デフォルトの名無しさん
2007/06/07(木) 23:14:36move.l d0,(a0)+ ; *a0++ = d0
つーか、68000自体がC言語意識した命令セットだから当然なんだけどね。
0910デフォルトの名無しさん
2007/06/07(木) 23:16:39あるのかどうか知らんけどw
0911デフォルトの名無しさん
2007/06/07(木) 23:34:01あってもどーせ宗教論争になってるだろうなw
0912デフォルトの名無しさん
2007/06/07(木) 23:53:03この程度の英語はできるようにしとかないと、変数名とかで困らない?
C/C++ Coding Style Thread
http://pc11.2ch.net/test/read.cgi/tech/1096687703/
0913911
2007/06/08(金) 00:02:55はい、半角で検索はしませんでした。 orz
0914デフォルトの名無しさん
2007/06/08(金) 00:02:57まさかスレタイが英語だとは思わなかっただけでは。
0915デフォルトの名無しさん
2007/06/08(金) 08:37:140916デフォルトの名無しさん
2007/06/08(金) 08:52:21環境が判らんので一般論を。
・実行結果をテキストファイルに出力し、印刷機能のあるエディタか何かに代行印刷してもらう。
・印刷ライブラリ或いは印刷機能を含んだツールキットを使う。
0917デフォルトの名無しさん
2007/06/08(金) 08:59:230918デフォルトの名無しさん
2007/06/08(金) 10:30:36デバッグ開始してこの実行結果を印刷したいんです
0919デフォルトの名無しさん
2007/06/08(金) 12:33:34デバッガで印刷。
つーか、環境くらい書け、この抜作。
0920デフォルトの名無しさん
2007/06/08(金) 12:55:150921デフォルトの名無しさん
2007/06/08(金) 16:07:08間違っちゃいないが、なんでこうもわかりづらい説明になってしまうんだろうな。コンピュータって
0922デフォルトの名無しさん
2007/06/09(土) 03:11:52なんて言ってる時点で質問が板違い。
0923デフォルトの名無しさん
2007/06/09(土) 13:36:59wcstoullを使いたいんですが
自前でつくるしかないんですか?
libcのソース参考にすればいいのかな・・・
0924デフォルトの名無しさん
2007/06/09(土) 16:49:01_wtoi64 はsignedか。unsignedはなさそうな。
http://msdn2.microsoft.com/ja-jp/library/0heszx3w(VS.80).aspx
0925923
2007/06/09(土) 18:53:54うん、探したけど見当たらなかったから、聞いた
入力を二つに分けて、_wtoi64で数字にして組み合わせとか
いろいろ考えたけど、バグ入ったらいやっだので、
swscanf_s "%llu" 使うことにした。
0926デフォルトの名無しさん
2007/06/09(土) 20:01:150927デフォルトの名無しさん
2007/06/09(土) 20:18:050928デフォルトの名無しさん
2007/06/11(月) 11:15:02_wcstoui64 は VC6 にはないんだっけ?
0929デフォルトの名無しさん
2007/06/11(月) 13:37:34それなんで>924のページに載ってないんだぜ……
0930デフォルトの名無しさん
2007/06/11(月) 15:20:49http://msdn2.microsoft.com/ja-jp/library/85zk715d(VS.80).aspx
0931デフォルトの名無しさん
2007/06/12(火) 21:32:54値 9 4 7 2 5
int型arrayの各要素は表のとおりである。キーボードから要素番号(添字)を読み込むとその要素の値を表示するプログラムを作成しなさい(arrayの各要素の値は初期化で設定)
実行結果例1
要素番号を入力:3
--------------------------
array[3]=2
実行結果例2
要素番号を入力:4
--------------------------
array[4]=5
としたいのですがプログラムを教えてください
0932デフォルトの名無しさん
2007/06/12(火) 21:37:41課題の解決はこちらへどうぞ。
C/C++の宿題を片付けます 89代目
http://pc11.2ch.net/test/read.cgi/tech/1181087371/
0933デフォルトの名無しさん
2007/06/12(火) 21:38:58わかりました
0934デフォルトの名無しさん
2007/06/19(火) 00:24:19mat[0][1]に値を入力すると、エラーが出て終了してしまいます。
何故このような症状が出るのか、
どのようにしたら回避できるのかを教えていただけませんか?
#include<stdio.h>
int main(void)
{
int n = 3;
double mat[3][3];
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%f", mat[i][j]);
}
}
return 0;
}
0935デフォルトの名無しさん
2007/06/19(火) 00:31:59今のプログラムだと入力されたmat[i][j]の値が示すアドレス(不定)に代入され望む結果にならない、というか落ちる
mat[i][j]に代入するならmat[i][j]に示すアドレス&mat[i][j]をscanfに渡してやるべし
0936デフォルトの名無しさん
2007/06/19(火) 00:35:53scanf("%f", mat[i][j]);
↓
scanf("%lf", &mat[i][j]);
~~ ~~
0937934
2007/06/19(火) 00:38:04やってみたら、ちゃんと入力できました!
しかし、matの各要素が、0.000000になってしまいます。
値が渡されていないのでしょうか…。
よろしければ再度教えていただけませんか?
0938934
2007/06/19(火) 00:39:47>>936
失礼しました!
更新押さずに書き込みをしてしまい、>>936さんのレスを読んでいませんでした。
>>936さんの仰るとおりにやってみますと、正常に動きました!
お二方、本当にありがとうございました!
0939デフォルトの名無しさん
2007/06/19(火) 01:54:500940デフォルトの名無しさん
2007/06/20(水) 01:51:40心の貧しい人だなぁ
(´・ω・)かわいそうに…
0941デフォルトの名無しさん
2007/06/20(水) 02:59:430942デフォルトの名無しさん
2007/06/23(土) 13:58:13教科書くらいは一冊もっていたほうがいいよ。
0943デフォルトの名無しさん
2007/06/24(日) 17:30:02プログラムがランタイムエラーになっても、演算結果が0になっても、そこで無限ループに陥ってもOK。
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
宿題スレよりこっちのほうがいいと思う。
C言語なら俺に聞け(入門篇) Part 14
http://pc11.2ch.net/test/read.cgi/tech/1181735298/
くだすれC言語(初心者用) Part.2
http://pc11.2ch.net/test/read.cgi/tech/1172099763/
0944デフォルトの名無しさん
2007/06/24(日) 17:38:440945デフォルトの名無しさん
2007/06/24(日) 17:53:00アルゴリズムはmazeをベースで。
書くときに参考になるソースコードとかってどっかに落ちてるものなんでしょうか?
アルゴリズム分かっても、書くのが素人なので、どれ位の規模(行数)になるかとか、必要な関数が予想つきません。
おおよその規模とか分かる方がいれば教えてください。お願いします。
サンプルなどがあればと思って質問させていただきました。
0946デフォルトの名無しさん
2007/06/24(日) 17:58:24どこまでマルチする気ですか・・・
自動配線て巡回セールスマン問題とか最短経路問題とかの類?
アルゴリズムのmazeってのがわからんのだが、参考になるようなサイトある?
0947デフォルトの名無しさん
2007/06/24(日) 18:16:30お騒がせしてすいませんでした。
繋ぐ2点の座標と障害物の座標を与えて、その間の経路を求めるプログラムです。
アルゴリズムはそれほど気にしなくて良いです。
あまり知られていないようですね。ご迷惑をおかけしました、失礼します。
0948デフォルトの名無しさん
2007/06/24(日) 22:04:340949デフォルトの名無しさん
2007/06/25(月) 00:45:23まず「アルゴリズム 経路探索」で検索して
引っかかったページで解り易そうだと思ったとこ全部読め。
ある程度読んだら、迷路の各マスをノードと考えて解け。以上。
それと…
> どこに行って聞いても「スレ違い」と言われるので、いろんな所に聞いていこうと思ったんです。
C言語ならここでも構わんし、言語問わないなら「スレ立てるまでもない」スレとか。
活発なスレでスレ違いにならなさそうなスレ探して1つ書けばいいと思う。
いくつものスレに質問して回るのは嫌がられるぞ。俺も嫌いだ。
巡回してるスレで2つも3つも同じ質問見かけたら答える気なくす。
…答えてるけどな。
0950デフォルトの名無しさん
2007/06/25(月) 00:46:28mazeってあるから勘違いした。
0951デフォルトの名無しさん
2007/06/25(月) 00:50:040952947
2007/06/25(月) 11:04:21ありがとうございます。
一つ目書いてスレ違いだったんです。
それは明らかに自分の勘違いだったので、
改めてC言語のスレに書き込んだのですが、やはりスレ違いと言われて。
回答もらえそうな適当なスレ探せないなら、迷惑なだけなので、もうそこで諦めないといけませんでした。
本当にすみませんでした。
0953デフォルトの名無しさん
2007/06/25(月) 11:37:59かしこいやつは、落ちてるカリントウですら利用する。
負け組みは毎日デスマやってろw
0954デフォルトの名無しさん
2007/06/25(月) 13:35:150955デフォルトの名無しさん
2007/06/25(月) 17:25:24よく見ろー!それ犬のうんこー!
0956デフォルトの名無しさん
2007/06/26(火) 17:54:33巡回マルチポスト問題児
0957デフォルトの名無しさん
2007/06/29(金) 21:49:430958デフォルトの名無しさん
2007/06/29(金) 21:54:380959デフォルトの名無しさん
2007/06/29(金) 21:58:370960デフォルトの名無しさん
2007/06/30(土) 02:18:540961デフォルトの名無しさん
2007/07/03(火) 06:27:04fgets(str,100,stdin);
これを実行して
abcde
と入力してエンターを押したら
strには
abcde\n\0
これが入ってるの?
0962デフォルトの名無しさん
2007/07/03(火) 09:07:50入らないよ
0963デフォルトの名無しさん
2007/07/03(火) 09:23:190964デフォルトの名無しさん
2007/07/03(火) 09:40:050965デフォルトの名無しさん
2007/07/03(火) 15:32:54運良く動いてしまう恐さ
0966デフォルトの名無しさん
2007/07/03(火) 15:41:210967デフォルトの名無しさん
2007/07/03(火) 18:55:180968デフォルトの名無しさん
2007/07/03(火) 18:58:290969デフォルトの名無しさん
2007/07/04(水) 09:28:270970デフォルトの名無しさん
2007/07/04(水) 10:26:110971デフォルトの名無しさん
2007/07/04(水) 20:30:26>これらの関数は絶対に使用しないこと。
と書かれてるんだけど、その理由がイマイチわからない。
誰かこの詳しい理由を教えていただけ無いでしょうか?
0972デフォルトの名無しさん
2007/07/04(水) 20:52:360973デフォルトの名無しさん
2007/07/04(水) 21:05:30> これらの関数はその最初の引数を変更する。
> これらの関数は const な文字列では使えない。
> 区切り文字自体は失われてしまう。
> strtok() 関数は文字列の解析に静的バッファを用いるので、スレッドセーフでない。これが問題になる場合は strtok_r() を用いること。
いや、これは、バグと言うか、strtokの仕様であって、
気をつけるも何も、これを理解して使うはずだろうし。
他に理由があるのかなって。
0974デフォルトの名無しさん
2007/07/04(水) 21:12:090975デフォルトの名無しさん
2007/07/04(水) 21:21:02別に絶対使ったら駄目な関数なんてない
strtokの場合、使い方にクセがある、それとスレッド間の問題
0976デフォルトの名無しさん
2007/07/04(水) 21:26:130977デフォルトの名無しさん
2007/07/04(水) 21:38:210978デフォルトの名無しさん
2007/07/04(水) 22:07:580979デフォルトの名無しさん
2007/07/04(水) 23:29:140980デフォルトの名無しさん
2007/07/05(木) 01:07:33BCPL系言語はもう死滅したほうがいいのかもしれない
0981デフォルトの名無しさん
2007/07/05(木) 04:56:040982デフォルトの名無しさん
2007/07/05(木) 20:48:18ライブラリの不備と言語仕様をごっちゃにすんなよ・・・
0983デフォルトの名無しさん
2007/07/05(木) 20:56:45C++ のより使いやすいものは作れんな。
0984デフォルトの名無しさん
2007/07/06(金) 06:56:43main()
{
int a;
int b=0;
for(a=0; a<=100; a++)
printf("セ氏温度:%d カ氏温度:%d\n",a ,fahrenheit(a,b));
}
int fahrenheit(int x, int y)
{
y = (9/5)*x+32;
return y;
}
セ氏温度からカ氏温度を求めるプログラムなんですが
カ氏温度をfloat型にして小数点以下も出力したいのですが
エラーばかり起きて困ってます
誰かfloat型にください
0985デフォルトの名無しさん
2007/07/06(金) 07:38:08関数と言うものを勉強しなおして、プロトタイプ宣言も勉強することをお勧めしておきます。
0986デフォルトの名無しさん
2007/07/06(金) 08:19:17それでできてたらここには来てません
0987デフォルトの名無しさん
2007/07/06(金) 08:29:58勉強する気がないなら、お帰りください。
少なくともどういうコードを書いたらどういうエラーが出たのか、
それさえ説明できないようなら人間やめるといいと思います。
0988デフォルトの名無しさん
2007/07/06(金) 08:35:05printf("セ氏温度:%d カ氏温度:%f\n",a ,fahrenheit());
}float fahrenheit(){return 9*a/5+++32;}
実行結果はfloatになった
0989デフォルトの名無しさん
2007/07/11(水) 02:27:13bcc32 「このプログラム」
マイドキュメントにおいているんですができません。
http://www.wakayama-u.ac.jp/~miw/ip3/HomeBCC+SDL/homebcc.html
一応このサイトどおりにはやりました。
0990デフォルトの名無しさん
2007/07/11(水) 02:30:54何ができないの?
0991デフォルトの名無しさん
2007/07/11(水) 02:37:44エラー E2194: ファイル 'a.c' が見つからない
ってでるんです。場所のおき方が悪かったのかなと思って。
マイドキュメントにおいたんですけど。
0992デフォルトの名無しさん
2007/07/11(水) 02:39:150993デフォルトの名無しさん
2007/07/11(水) 02:43:22Q1、最初どこに設定されているんですか?
Q2、cd のあとどう書けばマイドキュメントに移動できるんでしょうか?
0994デフォルトの名無しさん
2007/07/11(水) 02:47:12コマンドプロンプト起動時にこうなっていれば
C:\Documents and Settings\UserName>cd "My Documents"
cdコマンドでマイドキュメントに移動して
C:\Documents and Settings\UserName\My Documents>
コンパイルしよう
C:\Documents and Settings\UserName\My Documents>bcc32 a.c
ディレクトリ名にスペースがあればダブルクォーテーションで囲む
0995デフォルトの名無しさん
2007/07/11(水) 02:57:33・名前 a.c
・ファイルの種類 cファイル
・プログラム notepad
あとOSがXPなんですがこのままで大丈夫でしょうか?
馬鹿ですみません
0996デフォルトの名無しさん
2007/07/11(水) 03:05:36a.c としていたんですが
a とやったら上手くいきました
ありがとうございました。
0997デフォルトの名無しさん
2007/07/12(木) 10:46:34a.exeを実行するのは、aとだけ打てばいい。 a.exe と打ってもいいけど。
0998デフォルトの名無しさん
2007/07/13(金) 00:46:07全部読んだらなんかムカついてきた。
埋めついでに言ってやる。
「お前は、a.cというC言語ソースファイルをコンパイルしたa.exeを実行したかったんだ!」
だから
「a.cが実行できません」とでも書けば、もっとすんなりアドバイスできたんだよ!
「できません」じゃわからんつーの!!!まず主語を書け!!!
0999デフォルトの名無しさん
2007/07/13(金) 00:49:17/ ,、--―-、 、ノ
l / ヽl\Nヽl
|6 l ◎. .◎l |
l, d、 A ノ/
/>→ー-‐爪
/ / [= ∞ =] |、
/ / [= ハ =] l、
/ /|__[= l l =] 、_\
/ミ (| l\_) ̄ ̄〈 \_)
ヾミミ/l、/ :l
__) /lミl l
(,―´ └┬┬‐┬┬┘
. ( ( ト┤ ト┤
1000デフォルトの名無しさん
2007/07/13(金) 00:49:48/ , --―- 、ヽ.
l6/ノレ'l/ヘ ll 6l
l l ◎. .◎ Vlb l デェェェェーー
ll A ノノ、
r`=ー‐--=´'ー、; 、
/ [=' ∞ =] l \
/ [= ハ =] i ヽ \
/__, [=_ i i _=] l\ /\\
( _ノ L  ̄ l \__) \
.  ̄ /l lー、 ) ∧
/ l イ\ / /)
〈 〉イ レ' / /
ヽ_ _ ____ノ l/ \/ イ
l__l l__l ` \(
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。