C言語なら俺に聞け(入門編)Part 75
レス数が1000を超えています。これ以上書き込みはできません。
★前スレ
C言語なら俺に聞け(入門編)Part 74
http://hibari.2ch.net/test/read.cgi/tech/1290857610/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 144代目
http://hibari.2ch.net/test/read.cgi/tech/1291471791/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0002デフォルトの名無しさん
2010/12/18(土) 23:55:190003デフォルトの名無しさん
2010/12/19(日) 01:04:050004デフォルトの名無しさん
2010/12/19(日) 01:05:49return(0)とかreturn(1)とかはよく見るのですが
0005デフォルトの名無しさん
2010/12/19(日) 01:07:51それは、参考にしている本があるとすればそれが古いのでは?
最近は return 0; と書くのが普通。
参考にしている書籍なりWebページなりを変えたほうがいいかもしれません。
0007デフォルトの名無しさん
2010/12/19(日) 01:12:400008デフォルトの名無しさん
2010/12/19(日) 01:16:04お前の頭も古いだろ
この中年ニートが
0009デフォルトの名無しさん
2010/12/19(日) 01:58:53参考書の丸写しなんですが文字が出力されないです なんでですか
0010デフォルトの名無しさん
2010/12/19(日) 08:06:13↓
if(ac<=1)
0011デフォルトの名無しさん
2010/12/19(日) 08:57:37文字を入力していない
か
起動時に任意のファイルを指定してない
0012デフォルトの名無しさん
2010/12/19(日) 10:57:54voidを返却する動作です。
0013デフォルトの名無しさん
2010/12/19(日) 11:38:35void main(void)
{
char s[10];
int in;
scanf("%d",&in);
scanf("%c",&s[10]);
printf("%d %c",in,s[10]);
}
うまくいきません。ご教授を
0014デフォルトの名無しさん
2010/12/19(日) 11:43:330015デフォルトの名無しさん
2010/12/19(日) 11:43:36void main(void)
{
char s[10];
int in;
scanf("%d",&in);
scanf("%s",s);
printf("%d %s", in,s);
}
0016デフォルトの名無しさん
2010/12/19(日) 11:47:23scanf使うときは&つけなくていいのですか
scanf("%s",s);があやしいです
0017デフォルトの名無しさん
2010/12/19(日) 11:56:37ポインタの辺りまで勉強すると理解が可能になるからとりあえずはそういうもんだと暗記して先に進むといいよ
0018デフォルトの名無しさん
2010/12/19(日) 12:00:04&をつけるならこう
scanf("%s",&s[0]);
0019デフォルトの名無しさん
2010/12/19(日) 12:03:44最後らへんで教えるようにしたほうがいいと思うんだがそんな参考書は存在しないのかね
0020デフォルトの名無しさん
2010/12/19(日) 12:07:410021デフォルトの名無しさん
2010/12/19(日) 12:11:58データの入力を文字列型で受け取るときは&使わない、もしくは&s[0]を使うんだ
0022デフォルトの名無しさん
2010/12/19(日) 12:18:39やさしいCはそんな感じの教え方だったよ
あとで説明するからとりあえず形だけ知っとけみたいな
0023デフォルトの名無しさん
2010/12/19(日) 12:37:180024デフォルトの名無しさん
2010/12/19(日) 12:48:43あとでやるから問題ないだろ
最初に書いたときは
#includeもint main(void)もわからなかったが説明されてもわかる訳ないしとりあえず無視しないと話は先に進まん
0025デフォルトの名無しさん
2010/12/19(日) 14:12:45同感
暗黙の副作用だの main に先立つ処理だのといった
汚いものは佳境に入ってからだよな
組み込みだとそういう流れになるし
当然のように甘っちょろい本は少ない
0026デフォルトの名無しさん
2010/12/19(日) 15:56:200027デフォルトの名無しさん
2010/12/19(日) 15:59:000028デフォルトの名無しさん
2010/12/19(日) 16:18:32色々、本が足りなさ過ぎて全部網羅するとなると、20冊くらい立ち読みしなきゃいけないので、
足が棒になります。このスレで本の作者の人、宜しく。
0029デフォルトの名無しさん
2010/12/19(日) 16:19:480030デフォルトの名無しさん
2010/12/19(日) 16:26:420031デフォルトの名無しさん
2010/12/19(日) 16:30:520032デフォルトの名無しさん
2010/12/19(日) 16:39:150033デフォルトの名無しさん
2010/12/19(日) 17:23:430034デフォルトの名無しさん
2010/12/19(日) 17:54:390035デフォルトの名無しさん
2010/12/19(日) 18:01:54http://www.amazon.co.jp/gp/product/4434124234/
0036デフォルトの名無しさん
2010/12/19(日) 18:12:110037デフォルトの名無しさん
2010/12/19(日) 18:16:34Cリファレンスマニュアルが鉄板
それ以上はもう規格書をあたるしかない
0038デフォルトの名無しさん
2010/12/19(日) 18:26:210039デフォルトの名無しさん
2010/12/19(日) 19:53:04果たしてどうなるか・・・
まあCには関係のない話だが
0040デフォルトの名無しさん
2010/12/19(日) 19:56:110041デフォルトの名無しさん
2010/12/19(日) 20:57:130042デフォルトの名無しさん
2010/12/19(日) 21:43:58↑糞レス
0043デフォルトの名無しさん
2010/12/19(日) 21:51:46↑糞レス
0044デフォルトの名無しさん
2010/12/19(日) 22:15:12↑糞レス
0045デフォルトの名無しさん
2010/12/19(日) 22:17:43糞レス
0046デフォルトの名無しさん
2010/12/19(日) 22:20:41きっとスレの人たちがあなたに何かしたんですね?
それを怒ってるから粘着しつづけてるんですね?
わかります。
ごめんなさい。ゆるしてください。
ほら、みんなもあやまって!
0047デフォルトの名無しさん
2010/12/19(日) 22:22:55糞レス
0048デフォルトの名無しさん
2010/12/19(日) 22:30:020049デフォルトの名無しさん
2010/12/19(日) 22:31:400050デフォルトの名無しさん
2010/12/19(日) 22:32:00環境設定はスレチなので死んでください
0051デフォルトの名無しさん
2010/12/19(日) 22:34:590052デフォルトの名無しさん
2010/12/19(日) 22:44:18命令一つでインストールできるし
0053デフォルトの名無しさん
2010/12/19(日) 22:45:310054デフォルトの名無しさん
2010/12/19(日) 22:50:490055デフォルトの名無しさん
2010/12/19(日) 23:16:36これの意味がわかんない
どう代入するの?
0056デフォルトの名無しさん
2010/12/19(日) 23:20:520057デフォルトの名無しさん
2010/12/19(日) 23:22:000058デフォルトの名無しさん
2010/12/19(日) 23:24:170059デフォルトの名無しさん
2010/12/19(日) 23:25:020060デフォルトの名無しさん
2010/12/19(日) 23:28:020061デフォルトの名無しさん
2010/12/19(日) 23:29:05gccってなんですか?
0062デフォルトの名無しさん
2010/12/19(日) 23:32:130063デフォルトの名無しさん
2010/12/19(日) 23:33:27単にバッファーのデータ位置をoffセット分ずらしただけでしょ。
コードそのままジャン
0064デフォルトの名無しさん
2010/12/19(日) 23:51:570065デフォルトの名無しさん
2010/12/19(日) 23:53:550066デフォルトの名無しさん
2010/12/20(月) 00:40:01この問題をやっています。
普通にコンパイルできるんですが、10個入力した後になんにもおきません。入力もできなくなります。なにかがちがうのでしょうか?
コンパイラは学習用C言語開発環境というソフトを使っています。
#include<stdio.h>
int main(void){
int data[10];
int i,tmp;
for(i=0;i<10;i++){
scanf("%d",&data[i]);
}
for(i=1;i<10;i=i++){
if(data[i]%2==0){
data[i]=data[i]+1;
}
}
for(i=0;i<10;i++){
printf("%d,",data[i]);
}
return(0);
}
0067デフォルトの名無しさん
2010/12/20(月) 01:02:52(・∀・)
0068デフォルトの名無しさん
2010/12/20(月) 01:14:16どのようにすればいいですか?
0069デフォルトの名無しさん
2010/12/20(月) 01:33:25i=i++
がよくなくて、無限ループになってる。
そこはi++だけでいい
0070デフォルトの名無しさん
2010/12/20(月) 01:34:09その3333が文字列なのか数字なのかによるけれど、文字列にして数えれば楽なんでないかな
0071デフォルトの名無しさん
2010/12/20(月) 01:44:050072デフォルトの名無しさん
2010/12/20(月) 02:01:31カウントを0にします
1桁目が3か調べます
3だったらカウントを1つ増やします
10で割ります
1桁目が3か調べます
3だったらカウントを1つ増やします
10で割ります
1桁目が3か調べます
3だったらカウントを1つ増やします
10で割ります
…
おしまい(^ω^)
0073デフォルトの名無しさん
2010/12/20(月) 02:24:230074デフォルトの名無しさん
2010/12/20(月) 07:16:280075デフォルトの名無しさん
2010/12/20(月) 08:46:240076デフォルトの名無しさん
2010/12/20(月) 10:41:520077デフォルトの名無しさん
2010/12/20(月) 10:45:480078デフォルトの名無しさん
2010/12/20(月) 10:54:090079デフォルトの名無しさん
2010/12/20(月) 12:45:45C→Javaなんだから
0080デフォルトの名無しさん
2010/12/20(月) 12:55:140081デフォルトの名無しさん
2010/12/20(月) 13:14:110082デフォルトの名無しさん
2010/12/20(月) 13:30:450083デフォルトの名無しさん
2010/12/20(月) 15:04:490084デフォルトの名無しさん
2010/12/20(月) 15:22:550085デフォルトの名無しさん
2010/12/20(月) 15:57:100086デフォルトの名無しさん
2010/12/20(月) 16:23:040087デフォルトの名無しさん
2010/12/20(月) 17:24:240088デフォルトの名無しさん
2010/12/20(月) 17:25:130089デフォルトの名無しさん
2010/12/20(月) 17:25:540090デフォルトの名無しさん
2010/12/20(月) 17:42:190091デフォルトの名無しさん
2010/12/20(月) 17:49:290092デフォルトの名無しさん
2010/12/20(月) 17:51:160093デフォルトの名無しさん
2010/12/20(月) 18:02:05お前が犯人だろw
0094デフォルトの名無しさん
2010/12/20(月) 18:06:11「ふっほっ」とかしか言わないから、なにを謝罪すればいいのか判らないです。
みんなは、あなたのお母さんじゃないので、あなたの気持ちをエスパーすることは難しいです。
あなたの不満の理由を教えてください。 具体的に、どうなってほしくて荒らしてるのか? 目的を教えてください。
改善できる事なら改善しますし、謝れることなら謝ります。
0095デフォルトの名無しさん
2010/12/20(月) 18:10:200096デフォルトの名無しさん
2010/12/20(月) 18:10:20△ESPする
○推測する
◎当て推量する
0097デフォルトの名無しさん
2010/12/20(月) 18:19:000098デフォルトの名無しさん
2010/12/20(月) 18:37:300099デフォルトの名無しさん
2010/12/20(月) 18:37:410100デフォルトの名無しさん
2010/12/20(月) 18:38:44スレ違い
0101デフォルトの名無しさん
2010/12/20(月) 18:39:11どこ修正したらいいんでしょうか
http://codepad.org/Ts2MXyfF
0102デフォルトの名無しさん
2010/12/20(月) 18:43:580103デフォルトの名無しさん
2010/12/20(月) 18:45:10丸写しです
0104デフォルトの名無しさん
2010/12/20(月) 18:53:21おそらく写し間違いだと思うが、セミコロンが足りなかったり
スペースが足りなかったりしてる
0105デフォルトの名無しさん
2010/12/20(月) 19:01:36お前優しいな
0106デフォルトの名無しさん
2010/12/20(月) 19:14:42(ただしfor文を用いること)
for文使えとか意味不明ですが
自分なりにfor文入れてみました。あってますか
void main(void)
{
int i;
int sum;
sum = 0;
for(i=0;i<10;i++){
sum = 10 * 11 / 2;
}
printf("sum = %d",sum);
}
0107デフォルトの名無しさん
2010/12/20(月) 19:18:100108デフォルトの名無しさん
2010/12/20(月) 19:20:29間違ってないと思うんですがみおとしてるかもしれません
あとでスキャナで読み取ります;
0109デフォルトの名無しさん
2010/12/20(月) 19:20:4465点
まぁ合格かな
0110デフォルトの名無しさん
2010/12/20(月) 19:20:59for(i = 0; i < 1; i++) で 十分
0111デフォルトの名無しさん
2010/12/20(月) 19:24:36教授がfor(i=0;i<10;i++)使えいったからあえて使ってる
0112デフォルトの名無しさん
2010/12/20(月) 19:27:32( ; o ; )
// //
{ puts("55"); o = 0; }
0113デフォルトの名無しさん
2010/12/20(月) 19:27:470114デフォルトの名無しさん
2010/12/20(月) 19:39:36みんな引っかかってくれてありがとう
0115デフォルトの名無しさん
2010/12/20(月) 19:41:050116デフォルトの名無しさん
2010/12/20(月) 19:44:32釣りじゃなかったらどうするつもりだったんだ
責任とれんのか
0117デフォルトの名無しさん
2010/12/20(月) 19:53:27> 教授がfor(i=0;i<10;i++)使え
こうすればいいかな。
void main(void)
{
int i;
int sum;
sum = 0;
for(i=0;i<10;i++);
for(i = 1; i <= 10; i++) sum += i;
printf("sum = %d",sum);
}
0118デフォルトの名無しさん
2010/12/20(月) 19:56:20{
int i;
int sum;
sum = 0;
for(i=0;i<10;i++){
sum+=i;
}
sum+=i;
printf("sum = %d",sum);
}
0119デフォルトの名無しさん
2010/12/20(月) 19:58:120から10の整数を足しちゃってるから題意を完全には満たしていない
0120デフォルトの名無しさん
2010/12/20(月) 20:00:08void main(void)
{
int i,j=1;
int sum;
sum = 0;
for(i=0;i<10;i++){
sum+=j;
j++
}
printf("sum = %d",sum);
}
0121デフォルトの名無しさん
2010/12/20(月) 20:02:220122デフォルトの名無しさん
2010/12/20(月) 20:08:280123デフォルトの名無しさん
2010/12/20(月) 20:27:320124101
2010/12/20(月) 21:47:04スキャンしてきました
0125デフォルトの名無しさん
2010/12/20(月) 22:05:18テキストが間違えてる。
文の最後にはセミコロンが必要なので足してください。
0126デフォルトの名無しさん
2010/12/20(月) 22:06:066行目: ステートメントにセミコロン(;)がない(関数 main )
→printf("キーボードから数字を2つ入力してください\n") の後にセミコロン付ける
11行目: 未定義のシンボル return0(関数 main )
→ returnと0の間に空白入れる。
0127デフォルトの名無しさん
2010/12/20(月) 22:42:35ありがとうございます。
加えて組みなおしてきます。
0128デフォルトの名無しさん
2010/12/20(月) 23:15:09標準で用意されてる?
0129デフォルトの名無しさん
2010/12/20(月) 23:16:36memset
0130デフォルトの名無しさん
2010/12/20(月) 23:21:020131デフォルトの名無しさん
2010/12/20(月) 23:31:050132デフォルトの名無しさん
2010/12/20(月) 23:38:560133デフォルトの名無しさん
2010/12/20(月) 23:41:280134デフォルトの名無しさん
2010/12/20(月) 23:42:330135デフォルトの名無しさん
2010/12/21(火) 00:38:57規格Cで保証されている
ちなみにcharは少なくとも8ビット、intは少なくとも16ビット
0136デフォルトの名無しさん
2010/12/21(火) 01:07:41一回の動作でbufに格納する時、文字列の途中で\nが入っていた場合、MAXに達してなくても
途中で文字の受け渡しを終了するんですか?
0137デフォルトの名無しさん
2010/12/21(火) 01:10:490138デフォルトの名無しさん
2010/12/21(火) 01:20:460139デフォルトの名無しさん
2010/12/21(火) 01:32:190140デフォルトの名無しさん
2010/12/21(火) 02:52:23そういうのよくないとおもうが、まぁ、これも勉強と思えばいいのかね。
0141デフォルトの名無しさん
2010/12/21(火) 04:56:31charが規格を満たすにはどうしたって8bit要ることないか?
0142デフォルトの名無しさん
2010/12/21(火) 05:00:55charは1byteであることが保証されているが1byteが8bitであるとの保証はない
0143デフォルトの名無しさん
2010/12/21(火) 06:12:43C99だとintは最低16bit doubleは最低32bitって決められてるのかな。
0144デフォルトの名無しさん
2010/12/21(火) 06:25:11サイズは決まってないが
最低限表現可能でなければいけないな値は決められてるじゃないか
サイズが決まってないってことしか知らないのか?
0145デフォルトの名無しさん
2010/12/21(火) 06:48:130146デフォルトの名無しさん
2010/12/21(火) 08:38:350147デフォルトの名無しさん
2010/12/21(火) 09:08:15いや、足りないだろunsingned char で0-255が要求されてんだぞ
0148デフォルトの名無しさん
2010/12/21(火) 09:08:340149デフォルトの名無しさん
2010/12/21(火) 10:11:520150デフォルトの名無しさん
2010/12/21(火) 10:13:510151デフォルトの名無しさん
2010/12/21(火) 10:21:15プログラミング作法でも読んどけって感じだな
0152デフォルトの名無しさん
2010/12/21(火) 12:32:30(・ε・) K&Rって、そんなにダメなん?
0153デフォルトの名無しさん
2010/12/21(火) 12:33:250154デフォルトの名無しさん
2010/12/21(火) 15:57:59規格レベルで話せない奴に限って「K&Rを馬鹿にする奴は…ブツブツ」とか言う
0155デフォルトの名無しさん
2010/12/21(火) 16:03:160156デフォルトの名無しさん
2010/12/21(火) 16:21:11どっちも見苦しいな
0157デフォルトの名無しさん
2010/12/21(火) 16:23:340158デフォルトの名無しさん
2010/12/21(火) 17:25:38****
***
**
*
このように表示するプログラムを書いているのですが、ここからどうしてもできません
どなたか教えていただけないでしょうか
#include<stdio.h>
int main(void)
{int n,i,j;
printf("三角形の一辺の長さを入れなさい.\n");
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=i;j++)printf("*");
printf("\n");
}
}
0159デフォルトの名無しさん
2010/12/21(火) 17:27:54にはどうすればいいですか?
例えば、5345の中には5が2つある。みたいなのです。
0160デフォルトの名無しさん
2010/12/21(火) 17:59:450161デフォルトの名無しさん
2010/12/21(火) 18:03:29ばーーーーーーか
0162デフォルトの名無しさん
2010/12/21(火) 18:05:37for(i = n; i > 0; i--) {
for(j = 0; j < i; j++) printf("*");
printf("\n
0163デフォルトの名無しさん
2010/12/21(火) 18:20:2510で割った余りを数えていく
0164デフォルトの名無しさん
2010/12/21(火) 18:58:18sprintf()で文字列にして、文字として数える。
0165デフォルトの名無しさん
2010/12/21(火) 18:59:140166デフォルトの名無しさん
2010/12/21(火) 19:06:43[7]文字列の比較 の2番目のプログラムで質問です
forの条件式でi < len + 1となっているのでif (i == len + 1)にはなることはないように思えます
このプログラムは文字列を比較するプログラムとして機能するのでしょうか?
0167デフォルトの名無しさん
2010/12/21(火) 19:11:390168デフォルトの名無しさん
2010/12/21(火) 19:12:20機能するかどうかは動かして試してみればいいじゃん。
ヒントを書いておくと、文字列の一致とは長さも一致している必要があるってこと。
0169デフォルトの名無しさん
2010/12/21(火) 19:25:06うーん、まぁまぁですね。
0170デフォルトの名無しさん
2010/12/21(火) 19:31:180171デフォルトの名無しさん
2010/12/21(火) 19:35:19ありがとう!
0172デフォルトの名無しさん
2010/12/21(火) 19:49:18i++でiが12になってからi < len + 1で比較され、12(i)<12(len+1)と条件を満たさなくなり
i=12の状態でfor文を抜けるということでいいんでしょうか?
条件満たすi=11の段階でfor文を抜けると思っていました
0173デフォルトの名無しさん
2010/12/21(火) 20:10:55いえいえ
0174デフォルトの名無しさん
2010/12/21(火) 20:13:090175デフォルトの名無しさん
2010/12/21(火) 20:43:550176デフォルトの名無しさん
2010/12/21(火) 21:12:21すぐパソコンに向かってプログラミングしようとする
常識的に考えてフローチャートつくるのが先だろ。
話変わるがソースコードからフローチャートに変換できるツールってない?
自筆で図描くのめんどくさい
0177デフォルトの名無しさん
2010/12/21(火) 21:27:15書くべきはデータフローだろ
0178デフォルトの名無しさん
2010/12/21(火) 22:22:17for (A; B; C)
ABCBCB…
0179デフォルトの名無しさん
2010/12/21(火) 22:51:13K&R はダメだったけど
ANSI でもっとダメになった
C99 でさらに追い打ち
上のほうの人たちが C の何がいいのかをまるでわかっておらず
枝葉末節のために醍醐味をまき散らすように捨て続けてきた
スタック構造をダイレクトに書けるのはいいことで register 渡しまであったのはあれでよかったし
lint は lint で独自の差別化を競えたはずで芽を摘まれなければ今ごろ頼もしかっただろうし
const はせっかく新設までしといて逆がないから write only な論理をきれいに書けないままだし
void* も文法を汚してまで新設しといて予想外に使えないやつだった
long long は待望だったけど 0b や数値定数の空白継続は結局なし
auto 配列の初期化だの可変配列みたいないらんものを大量にマンダトリーにしちまいやがった
0180デフォルトの名無しさん
2010/12/21(火) 23:39:31どのようにプログラムすればいいですか?
プログラムの例を載せてもらえると助かります。
0181デフォルトの名無しさん
2010/12/21(火) 23:41:370182デフォルトの名無しさん
2010/12/21(火) 23:44:27{
char moji[]="aiueoaiueoaiueo";
int i,count=0;
for(i=0;moji[i]!='\0';i++){
if(moji[i]=='a'){
//aをカウント
count++;
}
}
printf("aは%d個でつ",count);
}
ばっちりでつ
0183デフォルトの名無しさん
2010/12/21(火) 23:47:03int charCount(const char* s, char ch)
{
if (*s == '\0')
return 0;
return (*s == ch) + charCount(s + 1, ch);
}
int main()
{
const char* s = "qwertyanxa";
printf("%d\n", charCount(s, 'a'); /* 'a'の個数を数える */
printf("%d\n", charCount(s, 't'); /* 't'の個数を数える */
return 0;
}
0184デフォルトの名無しさん
2010/12/21(火) 23:48:370185デフォルトの名無しさん
2010/12/21(火) 23:55:36すげぇな。再帰的にカウントしてるなんてとてもじゃないけど思いつかない
カウントする対象の文字が全角だったらどうなるの
0186デフォルトの名無しさん
2010/12/21(火) 23:57:40スタックの心配はしなくていいか。
0187デフォルトの名無しさん
2010/12/22(水) 00:04:13{
if (*s == 0) return 0;
return charCountSub((*s == ch) + count, s + 1, ch);
}
int charCount(const char* s, char ch)
{
return charCountSub(0, s, ch);
}
スタックが心配なときは末尾再帰にすれば。
0188デフォルトの名無しさん
2010/12/22(水) 00:05:51よくみたらバグってるな。まあいいか。
0189デフォルトの名無しさん
2010/12/22(水) 00:07:44最近C言語とやらを勉強しだしておれにはこのスレ心強すぎる
0190デフォルトの名無しさん
2010/12/22(水) 00:08:18!!(*s == ch)
こうしなくていいっけ
0191デフォルトの名無しさん
2010/12/22(水) 00:12:270192デフォルトの名無しさん
2010/12/22(水) 00:19:23Cだけじゃなく関数型言語もやってみな
0193デフォルトの名無しさん
2010/12/22(水) 00:45:500194デフォルトの名無しさん
2010/12/22(水) 00:51:45関数型言語を勉強するのにオススメは何?
0195デフォルトの名無しさん
2010/12/22(水) 00:58:020197デフォルトの名無しさん
2010/12/22(水) 01:13:050198デフォルトの名無しさん
2010/12/22(水) 07:12:50スタック領域が飽和状態になって違う領域(ヒープ?)にはみ出てしまうという意味ですか。
初心者の俺には専門用語すぎてカオスすぎる
0199デフォルトの名無しさん
2010/12/22(水) 07:15:510200デフォルトの名無しさん
2010/12/22(水) 07:20:13そのスタック領域をオーバーした先はヒープ領域で間違いないですか
0201デフォルトの名無しさん
2010/12/22(水) 07:22:08すたっくとひーぷのぽいんたがれんぞくしているとはかぎらない
そもそもひーぷというものがないかもしれない
0202デフォルトの名無しさん
2010/12/22(水) 07:24:260203デフォルトの名無しさん
2010/12/22(水) 08:56:34コンソール画面を右上の×で閉じてしまったらメモリって解放されないですよね?
じゃあこの×を押したときに、解放するようにしたいのですが、
良い方法ないでしょうか?
WINAPIを使ったウィンドウのプログラムなら余裕なんですが、コンソールプログラムだと
方法がわかりません。
0204デフォルトの名無しさん
2010/12/22(水) 09:02:14本当に解放されない?
0205デフォルトの名無しさん
2010/12/22(水) 09:03:530206デフォルトの名無しさん
2010/12/22(水) 09:06:59自動的に解放されるのでしょうか?
>>205
つまり、scanfとかで停止させている場合、その関数のエラーを
ウィンドウを閉じたと判断して、終了処理させるということですか?
0207デフォルトの名無しさん
2010/12/22(水) 09:50:24C言語なんてマイナー言語誰も使ってないよw
0208デフォルトの名無しさん
2010/12/22(水) 10:09:460209デフォルトの名無しさん
2010/12/22(水) 11:10:550210デフォルトの名無しさん
2010/12/22(水) 11:31:200211デフォルトの名無しさん
2010/12/22(水) 11:31:40環境はVC++です。
{
float length=100;
float length2=200;
float lenlen=length-length2;
if(lenlen>=0){
return false;
}
return true;
}
なぜかfalseが帰ってきてしまいます。
0より小さいはずなのに
ちなみにlenlen>0としたら正常に動きました。
よろしくお願いします。
0212デフォルトの名無しさん
2010/12/22(水) 11:38:57どーせ書いた処理そのままのせてないんだろう
そんで実際の処理ではlenlenが0になってるんだろう
じっさいのコードでif分岐の直前にlenlenを出力してみたらどうだ?
0213デフォルトの名無しさん
2010/12/22(水) 11:40:22別のところで未初期化のポインタ使って何か書き込んでないか?
0214デフォルトの名無しさん
2010/12/22(水) 11:42:45馬鹿なんだから省略とかしちゃだめだよ
ちゃんと全部載せないと
0215デフォルトの名無しさん
2010/12/22(水) 11:48:27正常に動作してたのに別のところで勘違いしてたみたいでした。
すいませんm(_ _)m
0216デフォルトの名無しさん
2010/12/22(水) 11:50:400217デフォルトの名無しさん
2010/12/22(水) 12:15:03プロセスが終了したら動的にとってきたメモリも解放されると思うけど。
0218デフォルトの名無しさん
2010/12/22(水) 14:38:07特別に許してやるよ
感謝しろww
0220デフォルトの名無しさん
2010/12/22(水) 15:23:310221デフォルトの名無しさん
2010/12/22(水) 15:29:400222215
2010/12/22(水) 15:58:280223デフォルトの名無しさん
2010/12/22(水) 16:30:010224デフォルトの名無しさん
2010/12/22(水) 16:49:140225デフォルトの名無しさん
2010/12/22(水) 18:05:42あるんでしょうか?わざわざ別に作る必要ないですよね。
0226デフォルトの名無しさん
2010/12/22(水) 18:21:430227デフォルトの名無しさん
2010/12/22(水) 18:22:45非常に小規模な開発なら、その通り
0228デフォルトの名無しさん
2010/12/22(水) 18:28:36具体的に教えろ。
ひとつのプログラムを複数の c ファイルで構成するような場合に有用となります。
0230デフォルトの名無しさん
2010/12/22(水) 19:20:300231デフォルトの名無しさん
2010/12/22(水) 19:23:52説明できないんだ!?w
ばーか。w
0232デフォルトの名無しさん
2010/12/22(水) 19:28:180233デフォルトの名無しさん
2010/12/22(水) 19:29:00意味がわかりません。
具体例を教えてください。
具体例のわかりやすさは異常。
0234デフォルトの名無しさん
2010/12/22(水) 19:29:120235デフォルトの名無しさん
2010/12/22(水) 19:29:33stdio.h
0236デフォルトの名無しさん
2010/12/22(水) 19:30:130237デフォルトの名無しさん
2010/12/22(水) 19:33:47みんな引っかかってくれてありがとうww
0238デフォルトの名無しさん
2010/12/22(水) 19:35:37どこが釣りなのか教えてくれ
ヘッダファイルをどういうときに使うのか説明できないだろ
0239デフォルトの名無しさん
2010/12/22(水) 19:43:400240デフォルトの名無しさん
2010/12/22(水) 19:46:100241デフォルトの名無しさん
2010/12/22(水) 19:50:100242デフォルトの名無しさん
2010/12/22(水) 20:21:250243デフォルトの名無しさん
2010/12/22(水) 22:15:450244デフォルトの名無しさん
2010/12/22(水) 23:35:260245デフォルトの名無しさん
2010/12/22(水) 23:50:58その時点でスタック領域がオーバーして実行できなくなるが
これを解消するにはメモリを増設することが考えられますが
他に手はないですか
0246デフォルトの名無しさん
2010/12/22(水) 23:59:59メモリ増設してもムリじゃないか?
0247デフォルトの名無しさん
2010/12/23(木) 00:05:040248デフォルトの名無しさん
2010/12/23(木) 00:07:22スタック領域をオーバーするような大きな配列はstaticつけるといいかもね。
0249デフォルトの名無しさん
2010/12/23(木) 00:28:040250デフォルトの名無しさん
2010/12/23(木) 01:19:330251デフォルトの名無しさん
2010/12/23(木) 02:10:17ギリギリ取れるサイズだな。
0252デフォルトの名無しさん
2010/12/23(木) 02:13:030253デフォルトの名無しさん
2010/12/23(木) 09:00:141.小さくする
2.ヒープにとる
3.あきらめる
0254デフォルトの名無しさん
2010/12/23(木) 10:05:050255デフォルトの名無しさん
2010/12/23(木) 10:25:050256デフォルトの名無しさん
2010/12/23(木) 11:30:09int main(){
char a[2]={'1111','?0'};
return 0;
}
単純にこれだけコンパイルしてみたんですが、'1111'の部分、何故かエラーを吐かずに正常終了しました。char型って1バイトですよね?入りきらないと思うんですが…
0257デフォルトの名無しさん
2010/12/23(木) 11:40:29警告レベルを上げたらでるんじゃないかな警告
あふれちゃうような整数型の変換は普通に通る
規格上は未定義ではあり、値もおかしくなるが
0258デフォルトの名無しさん
2010/12/23(木) 11:43:19もちろんcharには入りきらない
黙って切り捨てられる
0259デフォルトの名無しさん
2010/12/23(木) 12:09:351111って4bitしか使ってないじゃん。だからエラーにならないんだよ
0260デフォルトの名無しさん
2010/12/23(木) 12:15:370261デフォルトの名無しさん
2010/12/23(木) 12:43:28うん
0262デフォルトの名無しさん
2010/12/23(木) 12:53:01strcpy(hoge, "piyo");
これはダメな気がするんですが動きます
どうしてでしょうか?
0263デフォルトの名無しさん
2010/12/23(木) 12:55:00文字列のリテラルが書き込み可の領域に置かれてるんだろ。
0264デフォルトの名無しさん
2010/12/23(木) 12:57:38char *hoge = "piyo" ここで指しているアドレスと
strcpyの第二引数に指定されている"piyo"が指しているアドレスが一緒だから
"piyo"じゃなくて"aaa"とかだとエラーがでるはず。
0265デフォルトの名無しさん
2010/12/23(木) 13:01:050266デフォルトの名無しさん
2010/12/23(木) 13:21:46ありがとうございます
たまたま書き込み可の領域に置かれていて、
これが動いてるのは環境依存だから良くないよって事でいいんでしょうか
0267デフォルトの名無しさん
2010/12/23(木) 13:26:11そう。よくない。
0268デフォルトの名無しさん
2010/12/23(木) 13:38:460269デフォルトの名無しさん
2010/12/23(木) 13:42:450270デフォルトの名無しさん
2010/12/23(木) 13:45:11どの環境でも使える方法はないよ。
const char* s = "aaaa";
みたいにconstを活用してそういうミスを防ぐくらい。
0271デフォルトの名無しさん
2010/12/23(木) 13:46:05あなたが馬鹿だということはわかりました
しかしいまだポインタの参照先がリテラル文字列かどうかは判別できません
どうすればいいでしょうか
0272デフォルトの名無しさん
2010/12/23(木) 13:52:07char* sp = "aaaa";
printf("%p %p",ss,sp);
printfでアドレス表示させれば文字列リテラルがどこらへんに格納されるか把握して
if文でアドレスチェックすればいけなくないか
0273デフォルトの名無しさん
2010/12/23(木) 14:05:22カス
0274デフォルトの名無しさん
2010/12/23(木) 14:10:39マクロを使ってポインタへの代入とアドレスの登録を同時に出来るようにすれば便利だね
0275デフォルトの名無しさん
2010/12/23(木) 14:29:42「ポインタの参照先を判別」という発想がそもそも C ではサポートされない
RTTI 的なものが欲しければ自分でそういう仕掛けを作ることになる
0276デフォルトの名無しさん
2010/12/23(木) 15:27:160277デフォルトの名無しさん
2010/12/23(木) 15:49:320278デフォルトの名無しさん
2010/12/23(木) 16:49:570279デフォルトの名無しさん
2010/12/23(木) 17:00:330280デフォルトの名無しさん
2010/12/23(木) 17:08:40自分で書いたプログラムなのだから、そこに何が渡されてくるのか、わからないはずがない
従ってわざわざ判別する必要などないはずである
0281デフォルトの名無しさん
2010/12/23(木) 17:11:010282デフォルトの名無しさん
2010/12/23(木) 17:20:070283デフォルトの名無しさん
2010/12/23(木) 17:26:20頭悪すぎて哀れになってくるな
解ってたらポインタなんていらねーよ参照でおしまい
0284デフォルトの名無しさん
2010/12/23(木) 17:44:570285デフォルトの名無しさん
2010/12/23(木) 17:50:530286デフォルトの名無しさん
2010/12/23(木) 17:53:28グッドアイデア!
0287デフォルトの名無しさん
2010/12/23(木) 17:56:530288デフォルトの名無しさん
2010/12/23(木) 18:02:140289デフォルトの名無しさん
2010/12/23(木) 18:32:430290デフォルトの名無しさん
2010/12/23(木) 18:44:390291デフォルトの名無しさん
2010/12/23(木) 18:49:31http://raicho.2ch.net/test/read.cgi/wikileaks/1291228726/
0292デフォルトの名無しさん
2010/12/23(木) 19:23:220293デフォルトの名無しさん
2010/12/23(木) 19:24:300294デフォルトの名無しさん
2010/12/23(木) 19:29:530295デフォルトの名無しさん
2010/12/23(木) 19:32:410296デフォルトの名無しさん
2010/12/23(木) 19:35:460297デフォルトの名無しさん
2010/12/23(木) 19:36:180298デフォルトの名無しさん
2010/12/23(木) 19:37:300299デフォルトの名無しさん
2010/12/23(木) 19:38:450300デフォルトの名無しさん
2010/12/23(木) 19:38:490301デフォルトの名無しさん
2010/12/23(木) 19:43:580302デフォルトの名無しさん
2010/12/23(木) 19:46:510303デフォルトの名無しさん
2010/12/23(木) 19:49:210304デフォルトの名無しさん
2010/12/23(木) 19:53:580305デフォルトの名無しさん
2010/12/23(木) 20:01:520306デフォルトの名無しさん
2010/12/23(木) 20:06:150307デフォルトの名無しさん
2010/12/23(木) 20:06:230308デフォルトの名無しさん
2010/12/23(木) 20:08:470309デフォルトの名無しさん
2010/12/23(木) 20:30:430310デフォルトの名無しさん
2010/12/23(木) 20:34:480311デフォルトの名無しさん
2010/12/23(木) 20:35:180312デフォルトの名無しさん
2010/12/23(木) 20:36:130313デフォルトの名無しさん
2010/12/23(木) 20:42:07ホントに止まった
ありがとー!
0314デフォルトの名無しさん
2010/12/23(木) 20:44:24system関数を使わない方法を教えて。
0315デフォルトの名無しさん
2010/12/23(木) 20:46:49何かの課題でsystem関数を使ってはいけないという縛りでもあるのか?
0316デフォルトの名無しさん
2010/12/23(木) 20:49:31あったら作れとか言わねえよバカ
0317デフォルトの名無しさん
2010/12/23(木) 20:50:13getchar()
kbhit()
0318デフォルトの名無しさん
2010/12/23(木) 21:30:15asmで割り込みいじる事になるのか?w
0319デフォルトの名無しさん
2010/12/23(木) 21:42:14別の環境にもっていくとそれが使えなかったりするから正直微妙。
0320デフォルトの名無しさん
2010/12/23(木) 21:55:40もうちょっと勉強してからおいで。
0321デフォルトの名無しさん
2010/12/23(木) 22:03:550322デフォルトの名無しさん
2010/12/23(木) 22:09:400323デフォルトの名無しさん
2010/12/23(木) 22:20:190324デフォルトの名無しさん
2010/12/23(木) 22:23:33ない
0325デフォルトの名無しさん
2010/12/23(木) 22:31:160326デフォルトの名無しさん
2010/12/23(木) 22:35:35正義の味方
0327デフォルトの名無しさん
2010/12/23(木) 23:10:28「王様の耳はロバの耳」と床屋が叫んだ穴
0328デフォルトの名無しさん
2010/12/23(木) 23:22:35scanfとかいうやつはジョークだ
0329デフォルトの名無しさん
2010/12/23(木) 23:24:34プログラム組んでソフト作っても、プログラムによって
環境変数を変えなきゃならんような事もしないといけないの?
0330デフォルトの名無しさん
2010/12/23(木) 23:25:440331デフォルトの名無しさん
2010/12/23(木) 23:27:57scanfと一緒にすんなよ
0332デフォルトの名無しさん
2010/12/23(木) 23:29:09実務では当然
0333デフォルトの名無しさん
2010/12/23(木) 23:29:55環境変数を設定しなくてもいいようにプログラムに組んでおけばすむことでは
0334デフォルトの名無しさん
2010/12/23(木) 23:30:53環境変数はOSの話だ。コンパイラの実行パスとかデバッグフラグとか。基本的にC自体とは関係ない。
例えば環境変数に作業用のパス情報があって、それをプログラム中で参照するとかで利用することが可能ってだけ。
プログラムが不要とするならば環境変数に意味はない。
0335デフォルトの名無しさん
2010/12/23(木) 23:39:38このプログラムはWindows7では動作しないから、環境変数を変えないと
いけないみたいなのあるんかなぁ?
0336デフォルトの名無しさん
2010/12/23(木) 23:45:16するのも環境変数のおかげだが?やっぱりC言語学ぶなら環境変数や
シェルの知識は必須だよな。
0337デフォルトの名無しさん
2010/12/23(木) 23:50:190338デフォルトの名無しさん
2010/12/23(木) 23:50:32Windowsに限って言えば、使用するWinAPI(.NET)によって動作可能なバージョンも決まる。
決まるんだが、C標準だけで組むようなコンソールプログラムレベルなら何も気にしないでいい。
OSに依存しないから。
0339デフォルトの名無しさん
2010/12/23(木) 23:55:01環境変数全部削除したら依存するだろ。
0340デフォルトの名無しさん
2010/12/24(金) 00:00:09誰が削除しろなんて言ってんだよ…
コンパイラをインストールしてあるなら後は気にすることないだろ。
0341デフォルトの名無しさん
2010/12/24(金) 00:00:570342デフォルトの名無しさん
2010/12/24(金) 00:00:57教わったんだけど、exit()で強制終了する時って、exit()する前に必要な分だけ
fclose(またはfree)しなきゃだめなの?面倒じゃない?
0343デフォルトの名無しさん
2010/12/24(金) 00:01:37しなくていい。
0344デフォルトの名無しさん
2010/12/24(金) 00:07:34事とかできますか?
0345デフォルトの名無しさん
2010/12/24(金) 00:09:56二つの違いが全然わからんw
0346デフォルトの名無しさん
2010/12/24(金) 00:13:37echo ?
echo %errorlevel%
0347デフォルトの名無しさん
2010/12/24(金) 00:14:28間違えた
echo $?
echo %errorlevel%
0348デフォルトの名無しさん
2010/12/24(金) 00:16:06exitなどでプログラムが終了するときは、そのプロセスで使ったメモリはすべて解放されます。
なのでfreeでメモリを解放しなくても問題ないです。が、常駐するプログラムではそうはいかないので
クセをつけるという意味で使ったメモリは解放するという習慣を身につけたほうがいいでs。
0349デフォルトの名無しさん
2010/12/24(金) 00:17:26無限みたいなもんだし。
0350デフォルトの名無しさん
2010/12/24(金) 00:18:50Cなんてシビアな組み込みとかでしか使わないんじゃね
0351デフォルトの名無しさん
2010/12/24(金) 00:18:590352デフォルトの名無しさん
2010/12/24(金) 00:19:41お前、話が理解できてないなら無理にレスしなくていいぞ
0353デフォルトの名無しさん
2010/12/24(金) 00:22:14ゲーム機かよwww
0354デフォルトの名無しさん
2010/12/24(金) 02:22:42コマンドラインから 「"ファイル名" 4 + 5 - 7 * 8」 とすると計算がめちゃくちゃになります。
*(アスタリスク)を他のx(エックス)などにすると大丈夫。
質問はコマンドラインから *(アスタリスク)は認識にもともと難があるものですか。
0355デフォルトの名無しさん
2010/12/24(金) 02:40:15認識に何があるというか ワイルドカードという役割がある
だから *だけじゃ *がそのまま argvに入ってこない
0356デフォルトの名無しさん
2010/12/24(金) 02:45:44>>355の言う通りで、「"ファイル名" "4 + 5 - 7 * 8"」でやってみ
0357デフォルトの名無しさん
2010/12/24(金) 04:24:17{
int n;
char *p;
char *q;
for(p=buf; ISBLANK(*p);p++) //#define ISBLANK(c) ((c)==' '||(c)=='\t')
;
q=buf;
n=strlen(p)+1;
while(n--)
*q++=*p++;
}
渡される配列の一文字目が空白の場合、空白を取り除く処理をしている関数です
whileで処理されているところがわからないので教えてください
0358デフォルトの名無しさん
2010/12/24(金) 04:31:08最初に出現する空白文字を取り除いた後の文字数をnに代入し、
nが0になるまで(処理後の文字列の先頭にくるまで)巻き戻しながら*q(=buf)にコピーしている。
0359デフォルトの名無しさん
2010/12/24(金) 05:04:380360デフォルトの名無しさん
2010/12/24(金) 05:15:590361デフォルトの名無しさん
2010/12/24(金) 05:16:31間違ってるな
×処理後の文字列の先頭にくるまで巻き戻しながら
○処理後の文字数分だけ先頭から
0363デフォルトの名無しさん
2010/12/24(金) 06:50:48なんか色々バグってね?
void remove(char *buf)//配列のアドレスを受け取る
{
int n;
char *p;
char *q;
for(p=buf; ISBLANK(*p);p++) //#define ISBLANK(c) ((c)==' '||(c)=='\t')
;
q=p;
n=strlen(q)+1;
while(n--)
*p++=*q++;
}
だろ
0364デフォルトの名無しさん
2010/12/24(金) 06:55:56間違った
void remove(char *buf)//配列のアドレスを受け取る
{
int n;
char *p;
char *q;
for(p=buf; ISBLANK(*p);p++) //#define ISBLANK(c) ((c)==' '||(c)=='\t')
q=p;
p=buf;
n=strlen(q)+1;
while(n--)
*p++=*q++;
}
0365デフォルトの名無しさん
2010/12/24(金) 07:00:280366デフォルトの名無しさん
2010/12/24(金) 07:08:15取り除く空白は一文字だけじゃないだろ
0367デフォルトの名無しさん
2010/12/24(金) 07:39:210368デフォルトの名無しさん
2010/12/24(金) 08:12:100369755
2010/12/24(金) 08:22:41{
char* b = a;
while (*a==' ' || *a=='\t') {a++;}
while (*a!=0) {*b++ = *a++;}
*b=0;
}
そんな難しいことかぁ〜〜??(w
って思う。
なんかISBLANKとかマクロ作って、しかもそれをforの中に入れちゃって、
簡単な事をわざわざややこしくしてるだけでバカバカしいと思う。個人的に。
戻り値で何かするわけでも無いのに int main に絶対的に固執したり、mainの最後なのにわざわざ free したりとか、
forやwhileに{}を使わなかったりとか、
そういうバカバカしい「かっこつけ・ハッタリ」かますから、そういう小さい微妙な読みづらさが積み重なって、全体的にプログラムが意味不明になるってのにw
たとえば、これみたいな「ど〜〜〜ってことない処理w」でも、364やら363やら357やらみたいに「あれ?あれ?」ってなっちゃってて、
ほんとバカバカしい文法だなぁ〜〜って思うw
もっと普通に、素朴に書けば、な〜〜んてことない簡単なことなのにw
わざわざ「通っぽい文法」で書いて、自分で自分を混乱させてるという… あ、あほや…w
0370デフォルトの名無しさん
2010/12/24(金) 08:32:090371デフォルトの名無しさん
2010/12/24(金) 10:38:22コードを修正するなら挙動が異なる部分を言わないと。
>>357はこの関数にバグがあると予測して調査をしていた可能性がある
0372デフォルトの名無しさん
2010/12/24(金) 14:39:32最初の空白以外の文字を見つける
それ以降を前方に移動する
処理の内容はこの2つだけだ
オレだったらわかりやすく以下のようにする
while (!isgraph(*cp)) cp++;
memmove(cq, cp, strlen(cp)+1);
0373デフォルトの名無しさん
2010/12/24(金) 14:44:21確かにこの参考書は他のものと比べてわかりづらい印象です。
参考書なのでバグがあることは想定外ですね
一回main()から書き出してデバッグしてみます
0374デフォルトの名無しさん
2010/12/24(金) 15:04:490375デフォルトの名無しさん
2010/12/24(金) 15:06:550376デフォルトの名無しさん
2010/12/24(金) 16:55:580377デフォルトの名無しさん
2010/12/24(金) 17:46:39C言語にかなうプログラミング言語ありませんよね??
ゲームを開発するのはほとんどCまたはC++ですよね?
0378デフォルトの名無しさん
2010/12/24(金) 18:16:01Cに勝る言語はない。ドラクエもFFもC言語のおかげなのかなぁ?
0379デフォルトの名無しさん
2010/12/24(金) 18:21:18CもRubyもゴミにしかならん
0380デフォルトの名無しさん
2010/12/24(金) 19:04:200381デフォルトの名無しさん
2010/12/24(金) 22:27:050382デフォルトの名無しさん
2010/12/24(金) 22:42:08ゲームなんて言い出すと C でカバーできる範囲は狭っ苦しいぞ
遊びには必ずしも CPU やメモリが出てくるとは限らないからな
0383デフォルトの名無しさん
2010/12/24(金) 22:58:210384デフォルトの名無しさん
2010/12/24(金) 23:18:130385デフォルトの名無しさん
2010/12/24(金) 23:19:19CやC++はグラフィック関連の機能をまったくもっていない。
マルチスレッドへの配慮も足りていない。
科学技術計算ではFORTRANの方が速い場面も多い。
10進演算を必須とする世界ではCOBOLは今なお強力だ。
etc...
そんなわけで、>>379の言うとおりだと思う。
0386デフォルトの名無しさん
2010/12/24(金) 23:20:00浮動小数点型の内部構造について知る
0387デフォルトの名無しさん
2010/12/25(土) 00:13:01/dev ディレクトリにある fb0 ってファイルに画像を描くだけで、画面に絵を出せますよ。
printfくらい簡単に画面に点を打てます。
(特別なライブラリは必要ありません。)
http://codepad.org/jMUT3eG5
起動方法(ubuntu10.10の場合)
Ctrl + Alt + F1〜F6 を押して、tty表示にします。(フレームバッファでの描画は、xwindow上のコンソールでは動かない)
コンパイルしたプログラムをスーパーユーザー権限で起動します
sudo ./a
これだけでグラフィックを扱えます。
じつにシンプル。 printfよりシンプルかもしれません。
むかしのPC98のDOSよりシンプルかもしれません。
余談:カーネルのコンパイルオプションによっては、フレームバッファに対応してない場合もあります。
また、カラーも16bitや8bitかもしれません。 また、画面サイズも1920x1080じゃない環境の人もいるでしょう。
そういう何処でも動くコードを目指すなら、ライブラリを活用してもいいですが、単に個人用の動けばなんでもいいってコードなら、これで十分絵が描けます。
0388デフォルトの名無しさん
2010/12/25(土) 03:29:27↑
これどういう意味(書き方)か教えてください
0389デフォルトの名無しさん
2010/12/25(土) 03:32:140390デフォルトの名無しさん
2010/12/25(土) 03:33:24ポインタsが指し示すメモリ上の値を文字として評価した時に
数字ではない事を判定している
0391デフォルトの名無しさん
2010/12/25(土) 07:33:08! は否定(NOT)、真なら偽、偽なら真と評価する
isdigit()は数字ならば真を返す
つまりif文としては、
*sの指す文字が数字なら(isdigit()は真だがそれを否定するので)偽
*sの指す文字が数字以外なら(isdigit()は偽だがそれを否定するので)真
0392デフォルトの名無しさん
2010/12/25(土) 10:40:26if(!isdigit(*s)) こういう書き方は見る人にとってはわかりづらい。
0393デフォルトの名無しさん
2010/12/25(土) 11:03:420394デフォルトの名無しさん
2010/12/25(土) 11:04:29charならunsigned charにキャストしろよ
0395デフォルトの名無しさん
2010/12/25(土) 12:06:11いろんな人がみるからそういう人のために配慮して書けといってるんだ
わかったか?
0396デフォルトの名無しさん
2010/12/25(土) 12:07:440397デフォルトの名無しさん
2010/12/25(土) 12:23:040398デフォルトの名無しさん
2010/12/25(土) 12:26:04int data;
struct hoge *next;
}
みたいな片方向リストで任意の要素nを削除するにはどうすればいいんですか
先頭から順にを探す
↓
目的の要素nが見つかる
↓
ポインタを繋ぎかえようとするが、nの前にある要素へのポインタがないので???となっています
0399デフォルトの名無しさん
2010/12/25(土) 12:30:53じゃあどう書けばいいのかやってみて
0400デフォルトの名無しさん
2010/12/25(土) 12:34:35探す時に1つ前のポインタも残しておけば良い
0401デフォルトの名無しさん
2010/12/25(土) 12:43:20可読性を向上させたいなら389の例がいいんじゃないかな。
0402デフォルトの名無しさん
2010/12/25(土) 12:48:44#define not !
if (not isdigit(*s))
0403デフォルトの名無しさん
2010/12/25(土) 12:49:41分かりにくくなる
色んな人が見るんだから配慮しろ
0404デフォルトの名無しさん
2010/12/25(土) 12:50:280405デフォルトの名無しさん
2010/12/25(土) 12:51:110406デフォルトの名無しさん
2010/12/25(土) 12:52:24お前それいいたかっただけだろw
0407デフォルトの名無しさん
2010/12/25(土) 12:53:38プログラマ失格だ
0408デフォルトの名無しさん
2010/12/25(土) 12:55:22そういう言語もあるね
0409デフォルトの名無しさん
2010/12/25(土) 12:57:100410デフォルトの名無しさん
2010/12/25(土) 12:58:57if(!isdigit(*s)) とか書いても可読性の観点から違反扱いされて
書き直されるよ。
0411デフォルトの名無しさん
2010/12/25(土) 13:00:29あ、ホントだ
0412デフォルトの名無しさん
2010/12/25(土) 13:00:52というか、真値が一意に定まらないCでは
真偽を比較で確かめる癖付けるのは危険なんだよ
0413デフォルトの名無しさん
2010/12/25(土) 13:02:14上手く動かない反例を見せてくれ
0414デフォルトの名無しさん
2010/12/25(土) 13:06:59真との比較が危険
if (isdigit('9') == 1) {
printf("hoge\n");
}
これは環境によっては動かない
当然これは != 0 にするのが正しい
しかし果たしてこれは可読性が高いと言えるだろうか?
二重否定だし、それに真な時に != で比較して偽な時に == で比較する事になる
0415デフォルトの名無しさん
2010/12/25(土) 13:10:020416デフォルトの名無しさん
2010/12/25(土) 13:11:140417デフォルトの名無しさん
2010/12/25(土) 13:11:52それをif文の条件にしても可読性が低いってことにはならないと思うけど
0418デフォルトの名無しさん
2010/12/25(土) 13:12:03それで可読性あると思う奴なら
if(!isdigit(*s))でも問題ないだろ
0419デフォルトの名無しさん
2010/12/25(土) 13:12:420420デフォルトの名無しさん
2010/12/25(土) 13:13:29こういう奴はこのコードの危険性が何も分かってない
API の仕様では BOOL で真を返す場合は「0 以外を返す」と書かれている
動いてるのはたまたまだ
比較方式はこういう奴を量産するだけ
0421デフォルトの名無しさん
2010/12/25(土) 13:16:43だれも真の値が1だとは思ってないから。
0422デフォルトの名無しさん
2010/12/25(土) 13:18:400423デフォルトの名無しさん
2010/12/25(土) 13:22:55できました
前のポインタを保持しながらループ回せばいいんですね
ありがとうございました
0424デフォルトの名無しさん
2010/12/25(土) 13:23:510425デフォルトの名無しさん
2010/12/25(土) 13:49:41もともとc言語にbool型変数は無く,0を偽,非0を真と決めているだけ
isdigitの戻り値を真偽値とみるか整数値とみるかなんだけど
関数名がis〜だから真偽値と見てもいいような気がする
だがfopenおまえらはダメだ
!=NULLを省略するんじゃねぇぇぇぇぇぇ
0426デフォルトの名無しさん
2010/12/25(土) 13:52:110427デフォルトの名無しさん
2010/12/25(土) 13:56:56!だとポインタなのに真偽値に見える
どちらも微妙なのでどちらでもいいわって感じだが
真偽値にしか!を付けられない言語も多いし
!=NULLで慣れた方が応用は効くのかなとは思う
0428デフォルトの名無しさん
2010/12/25(土) 14:11:10ややこしいので、いつも == や != 使ってます><
0429デフォルトの名無しさん
2010/12/25(土) 14:12:450430デフォルトの名無しさん
2010/12/25(土) 14:14:150431デフォルトの名無しさん
2010/12/25(土) 14:15:340432デフォルトの名無しさん
2010/12/25(土) 14:17:58C#とかやると少しイラっとするな
0433デフォルトの名無しさん
2010/12/25(土) 14:22:02(三項演算子以外では)
0434デフォルトの名無しさん
2010/12/25(土) 14:27:210435デフォルトの名無しさん
2010/12/25(土) 15:00:48勉強しようと思うのですが
オススメの勉強用の本があれば
教えでいただけないでしょうか?
よろしくお願いします。
0436デフォルトの名無しさん
2010/12/25(土) 15:01:340437デフォルトの名無しさん
2010/12/25(土) 15:34:04ひとつの本だけで満足しない、と決心すればそれはもうどんな本でもいいから立ち読みしてよさそうな本を今日にでも買ってコンパイラはBorland C++ 5.5 でもすぐにインストールしてれっつごーです
思い立ったが吉日ですわからなかったらここできけばいいもうなにも躊躇することはありません
0439デフォルトの名無しさん
2010/12/25(土) 16:10:16製品版という事なら別だが、フリーのを意図してんでしょ?
今なら VC++ EE でいいかと
0440デフォルトの名無しさん
2010/12/25(土) 16:16:050441デフォルトの名無しさん
2010/12/25(土) 16:26:54まあその方が教育的という観点もあるかもしれないけど
>>439
ああコンパイラもういんどうずでうごくやつならなんでもいいやLSI-CはちょっとまずいかもしれないけどねそうだねVC++ExpressEditionでもいいやねもうなにも躊躇することはないいけいけどんどん
0443デフォルトの名無しさん
2010/12/25(土) 16:31:310444デフォルトの名無しさん
2010/12/25(土) 16:32:54C言語を始めようとかCPadとか使えるだろ
それに最初は別にIDEなくても問題ないと思うけど、cygwinは勧めないな
仮想マシンにubuntu入れてgcc使った方がマシ
0445デフォルトの名無しさん
2010/12/25(土) 16:38:52拡張子で区別されるがそういう意味ではなくて
0446デフォルトの名無しさん
2010/12/25(土) 16:50:420447デフォルトの名無しさん
2010/12/25(土) 17:53:25コンパイラっていうのも調べてみます。
ありがとうございました。
0448デフォルトの名無しさん
2010/12/25(土) 17:57:390449デフォルトの名無しさん
2010/12/25(土) 18:08:20学習に足りないのはおそらく「お題」だろうが、それも簡単に見付かる。
自分が便利だなと思うものを真似すればいい。最初から全部ではなく部分的にな。
0450デフォルトの名無しさん
2010/12/25(土) 18:20:210451デフォルトの名無しさん
2010/12/25(土) 18:25:24普段、本とか読まないだろ?
0452デフォルトの名無しさん
2010/12/25(土) 18:29:53なんで?小説みたいな創作物は読むけど。
0453デフォルトの名無しさん
2010/12/25(土) 18:39:210454デフォルトの名無しさん
2010/12/25(土) 18:42:050455デフォルトの名無しさん
2010/12/25(土) 18:44:39Borland C/C++ CompilerとVisual Studioだとどちらがオススメでしょう
あとCygwinについても教えていただけたらありがたいです
0456デフォルトの名無しさん
2010/12/25(土) 19:00:15個人的にはgcc
0457デフォルトの名無しさん
2010/12/25(土) 19:19:15悪いことは言わん。MinGWにしとけ。
gccの使い方は覚えておいて絶対に損しない。
0458デフォルトの名無しさん
2010/12/25(土) 19:20:22でも勉強のためコンパイラ直接扱いたいのなら
Borland C/C++ Compiler か gcc (MinGW) を使うのもあり
ただし、後々 C++ もやるなら Borland C/C++ Compiler は古いのでおすすめしない
Cygwin は UNIX のシェルを Windows に移植した「ような雰囲気」の物
gcc もインストール選択したら使える
UNIX/Linux 使った事あるなら薦められるけど
使った事無いならどうだろう?
コンパイルするだけならいいのかな
0459デフォルトの名無しさん
2010/12/25(土) 19:23:23俺はcygwinおすすめ
0460デフォルトの名無しさん
2010/12/25(土) 19:32:05それだったら仮想でいいからLinux環境作ったほうがマシ。
Cygwinは>>458の言うとおりUNIXもどきでしかない。
0461デフォルトの名無しさん
2010/12/25(土) 19:33:160462デフォルトの名無しさん
2010/12/25(土) 19:37:46ありがとうございます
MinGWかCygwinを使って見ようと思います
0463デフォルトの名無しさん
2010/12/25(土) 19:40:360464デフォルトの名無しさん
2010/12/25(土) 19:51:32gcc -mno-cygwin でMinGWが使われる
0465デフォルトの名無しさん
2010/12/25(土) 20:41:560466デフォルトの名無しさん
2010/12/25(土) 20:59:04俺はgccとcygwinを一緒に使い始めたぞ
ある程度の厳しい状況は作るべきだ
そんな事してるから最初が簡単で軟弱なクレクレ君が出てくるんだ
0467デフォルトの名無しさん
2010/12/25(土) 21:00:320468デフォルトの名無しさん
2010/12/25(土) 21:01:48LSI C-86試食版
0469デフォルトの名無しさん
2010/12/25(土) 21:02:031.ubuntu10.10のisoをダウンロード
2.CD-Rなどに焼く
3.再起動してCDから起動
4.インストールを選択
5.windowsを残したままインストールする項目をマウスで選択。
6.適当にマウスでボタン押してって質問に答えてインストール開始。
7.再起動して起動メニューからubuntuを選択
8.スタートメニューから端末(コマンドプロンプトのこと)を選択
9.gcc(Cコンパイラーのこと) をインストール
sudo apt-get install gcc
10.kdevelop(エディタのこと)をインストール
sudo apt-get install kdevelop
適当にエディターでプログラムを書いて、適当な名前で保存( aaa.c など)
コンパイル方法
gcc -o aaa aaa.c
そのプログラムを実行する方法
./aaa
余談:ディレクトリの移動は cd ○○、DIRは ls、 ディレクトリの作成は mkdir ○○、 ファイルの削除は rm ○○、 ディレクトリの削除は suro rm ○○ -r
コピーは cp 元 先、 移動は mv 元 先、 名前の変更は mv 元 先、 math.h 入りソースのコンパイルは gcc -lm、 c++のソースのコンパイルは gcc -lstdc++
0470デフォルトの名無しさん
2010/12/25(土) 21:03:54規格に準拠してるかどうかか?
C89でいいならVC, BCC, GCC全て準拠しているから導入のしやすさと好みでいいんじゃないの
C99ならgccほぼ一択な気がする
0471デフォルトの名無しさん
2010/12/25(土) 21:04:420472デフォルトの名無しさん
2010/12/25(土) 21:06:35質問スレだった
反省...
ただなんもググらずに聞いて口開けて待ってる奴もいることは分かってほしい
なんか一回ぐらい難しい解決の経験をしないといけないような気がする
gcc4 からはだめなよう。
0474デフォルトの名無しさん
2010/12/25(土) 21:12:330475デフォルトの名無しさん
2010/12/25(土) 21:13:18そういう意味では、Cという選択自体が微妙だが
0476デフォルトの名無しさん
2010/12/25(土) 21:15:560477デフォルトの名無しさん
2010/12/25(土) 21:19:43まあ趣味でアセンブリやるよりはいんじゃねぇかw
0478デフォルトの名無しさん
2010/12/25(土) 21:37:480479455
2010/12/25(土) 21:41:19年末年始は使えないんで家のPC(windows)でできたら便利だなと思ってたんですけど
やっぱりLinux環境用意した方がいいんですかね
0480デフォルトの名無しさん
2010/12/25(土) 21:47:32あと性能が良いPCならVirtualBox+Ubuntuで何でも出来るよ
ネットワークの設定は勝手にやってくれるし、ホストからのコピペとかフォルダの共有も出来る
0481デフォルトの名無しさん
2010/12/25(土) 22:04:13その値は保持されるんですか?
説明がわかりづらいですが解答よろしくおねがいします
0482デフォルトの名無しさん
2010/12/25(土) 22:05:59c+1は格納しませんので保持されません
0483デフォルトの名無しさん
2010/12/25(土) 22:09:27c+=1 は c=c+1 のシンタックスシュガー
c+1 は c+1 を計算してるだけで 変数c は上書きされない
0484デフォルトの名無しさん
2010/12/25(土) 22:10:43x=c++;
x=(c+=1);
違うよね
0485デフォルトの名無しさん
2010/12/25(土) 22:11:11ありがと
0486デフォルトの名無しさん
2010/12/25(土) 22:11:570487デフォルトの名無しさん
2010/12/25(土) 22:15:43そうだったなと反省しつつ
c言語で前置と後置の評価順って決められていたっけ?
0488デフォルトの名無しさん
2010/12/25(土) 22:19:180489デフォルトの名無しさん
2010/12/25(土) 22:33:12a = c++; これは aには1が入る
c = 1;
a = ++c; これは aには2が入る
0490デフォルトの名無しさん
2010/12/25(土) 23:15:000491デフォルトの名無しさん
2010/12/25(土) 23:21:250492デフォルトの名無しさん
2010/12/26(日) 00:06:01問題あるから言われてんだろ
中途半端な知識は人を惑わすから書くなカス
0493デフォルトの名無しさん
2010/12/26(日) 00:30:580494デフォルトの名無しさん
2010/12/26(日) 00:34:06アホか
0495デフォルトの名無しさん
2010/12/26(日) 00:52:510496デフォルトの名無しさん
2010/12/26(日) 00:57:500497デフォルトの名無しさん
2010/12/26(日) 01:18:370498デフォルトの名無しさん
2010/12/26(日) 01:30:280499デフォルトの名無しさん
2010/12/26(日) 01:33:43c言語はそういう規定が無いから注意しろって言われた気がするんだがなぁ
0500デフォルトの名無しさん
2010/12/26(日) 01:47:29Cではただインクリメントを行うだけの時のコストが一緒という話じゃないのか?
C++ではPOD型でないとき後置は前置よりもコストがかかる(ことがある)。
0501デフォルトの名無しさん
2010/12/26(日) 01:57:060502デフォルトの名無しさん
2010/12/26(日) 02:05:570503デフォルトの名無しさん
2010/12/26(日) 02:09:510504500
2010/12/26(日) 02:25:54C++ Coding Standards 第28章 参照ね^^
0506デフォルトの名無しさん
2010/12/26(日) 02:41:310507デフォルトの名無しさん
2010/12/26(日) 02:48:270508デフォルトの名無しさん
2010/12/26(日) 02:49:410509デフォルトの名無しさん
2010/12/26(日) 02:50:230510デフォルトの名無しさん
2010/12/26(日) 02:58:200511デフォルトの名無しさん
2010/12/26(日) 03:11:470512デフォルトの名無しさん
2010/12/26(日) 03:49:30そのうちのひとつは有名でFAQにすら挙げられてる
http://www.kouno.jp/home/c_faq/c20.html#10
これであればはっきり言ってクソミソに言われバカにされるのがオチ(実際、>>511のような書き方するくらい
だからアタマ悪いんだろうなと思う)なので、質問の求めてる内容がこれでないなら質問をもっと的確に書くといい
0513デフォルトの名無しさん
2010/12/26(日) 03:52:15回答者もバカだからなぁ、ここ。
0514デフォルトの名無しさん
2010/12/26(日) 04:48:54これであれば、がどこにかかるかわからないんだけど、ちゃんと自分が貼ってあるリンク先読んだ?
0515デフォルトの名無しさん
2010/12/26(日) 09:43:39変換って何さ?16進数として表示したいってことか?
やりたいことが伝わらないから皆答えようがないんだよ。
断片でもいいからソースを示せ。
0516デフォルトの名無しさん
2010/12/26(日) 10:12:54char bin[] = "011101101101"
unsigned int hex = 0;
for(char* p = bin; p; p++){
if(p == '0') hex = hex << 1;
else if(p == '1') hex = hex << 1 + 1;
else exit(0); // detect invalid character
}
printf("(bin)%s = 0x%x\n", bin, hex);
do{
puts("hello");
continue;
} while(0);
0518デフォルトの名無しさん
2010/12/26(日) 12:57:050519デフォルトの名無しさん
2010/12/26(日) 13:00:04そういう話じゃないだろ。
0520デフォルトの名無しさん
2010/12/26(日) 13:19:090521デフォルトの名無しさん
2010/12/26(日) 13:20:22実際にそれにはまったやつを見るのは初めてだ。
0522デフォルトの名無しさん
2010/12/26(日) 13:22:270523デフォルトの名無しさん
2010/12/26(日) 13:25:57いざ「どう動く?」とか言われても即答できない。
0524デフォルトの名無しさん
2010/12/26(日) 13:31:090525デフォルトの名無しさん
2010/12/26(日) 13:50:020526デフォルトの名無しさん
2010/12/26(日) 13:51:39もうそれは許してやれよ、あの子は声優じゃないから仕方ない
0527デフォルトの名無しさん
2010/12/26(日) 13:51:400528デフォルトの名無しさん
2010/12/26(日) 14:23:020529デフォルトの名無しさん
2010/12/26(日) 14:25:10どうでもいい気はする
0530デフォルトの名無しさん
2010/12/26(日) 14:37:16文法的には
for (〜; 〜; 〜);
と書けばいいのだが、セミコロンを見逃しやすい。
for (〜; 〜; 〜)
;
これもなんだか微妙。
しかし今さっき思いついた。こう書けばいいのではないか?
for (〜; 〜; 〜)
continue;
0531デフォルトの名無しさん
2010/12/26(日) 14:48:12do{ }while(0)は結構見かけるよ
0532デフォルトの名無しさん
2010/12/26(日) 14:49:19空の波括弧を置くよりも下策ばかり並べて何を悩んでんだ
0533デフォルトの名無しさん
2010/12/26(日) 15:01:09だからブロック化してもやっぱり中に何か書かなくちゃいけないんだ
それで習慣になってCやるときも空のブロックはなんか気持ち悪くて避けてるんだ
まぁ警告OFFにすればいいだけなんだけど警告は全部ONにするものっていう刷り込みがあって・・・
0534デフォルトの名無しさん
2010/12/26(日) 15:02:360535デフォルトの名無しさん
2010/12/26(日) 15:02:48俺は真ん中の書き方かな
0536デフォルトの名無しさん
2010/12/26(日) 15:16:380537デフォルトの名無しさん
2010/12/26(日) 15:20:28何の言語か知らないけど、
ブロック中にコメント書いても警告されるの?
0538デフォルトの名無しさん
2010/12/26(日) 15:22:47一番上の書き方されると、かなり紛らわしいから嫌だな
forの次行に空セミコロンは、一見してforで値を回しているんだなぁって思えるから
俺は別に違和感ないな
0539デフォルトの名無しさん
2010/12/26(日) 15:29:440540デフォルトの名無しさん
2010/12/26(日) 15:40:22}
素朴に書けばいいじゃない
0541デフォルトの名無しさん
2010/12/26(日) 15:46:320542デフォルトの名無しさん
2010/12/26(日) 15:51:27Hoge(int (*dat)[][2])
{
…
}
上の関数をコールする場合のパラメーターってどう書くんですか?
int *d[4][2];
Hoge(d);
これではエラーになってしまう。ちなみにVSC++2008使用です。
0543デフォルトの名無しさん
2010/12/26(日) 15:52:18for(;;){}
合わせたほうが好み
0544デフォルトの名無しさん
2010/12/26(日) 15:59:08foo(&d);
かな?
#include <stdio.h>
void f(int(*dat)[][2]){
}
int main() {
int array[3][2] = {
{1, 2}, {3, 4}, {5, 6}
};
f(&array);
return 0;
}
0546デフォルトの名無しさん
2010/12/26(日) 16:08:01void Hoge(int (*dat)[][2])
{
(*dat)[0][1] = 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int d[4][2];
Hoge(&d);
return 0;
}
でエラー
.\test-090.cpp(13) : error C2664: 'Hoge' : 1 番目の引数を 'int (*)[4][2]' から 'int (*)[][2]' に
変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは
関数スタイルのキャストが必要です。
他にエラーはなし。
0547デフォルトの名無しさん
2010/12/26(日) 16:11:37#include <stdio.h>
void Hoge(int (*dat)[][2])
{
(*dat)[0][1] = 1;
}
int main()
{
int array[3][2] = { {1, 2}, {3, 4}, {5, 6} };
Hoge(&array);
return 0;
}
でワーニングエラーでした。
.\test-090.c(12) : warning C4048: 'int (*)[][2]' と 'int (*)[3][2]' で配列の添字が異なります。
0548デフォルトの名無しさん
2010/12/26(日) 16:13:34を
void Hoge(int (*dat)[3][2])
と入れれば、ワーニングも消えました。
上の書式は、ワーニングなしではいけない?
0549デフォルトの名無しさん
2010/12/26(日) 16:18:330550デフォルトの名無しさん
2010/12/26(日) 16:19:00VC2010では
#include <stdio.h>
void Hoge(int (*dat)[4][2])
{
(*dat)[0][1] = 1;
}
int main(void)
{
int d[4][2];
Hoge(&d);
printf("%d", d[0][1]);
return 0;
}
としないと警告が出るな
0551デフォルトの名無しさん
2010/12/26(日) 16:22:22そうすると、元々の例題ソースがgccだったんですね。たぶん。
ありがとうございました。勉強になりました。
多次元配列の次元指定のうち最大のものは、配列のアクセス場所を特定する演算では使用しなくても問題ないので、
void f(int (*a)[][3][4][5]);
はありだと思うのですが、msvc は丁寧に警告してくれるのですね。
警告が気になるのなら、プログラムと相談して、
void f(int (*a)[10][3][4][5]);
とするのもいいかと思います。
なお、gcc や borland c では警告はでませんでした。
0553デフォルトの名無しさん
2010/12/26(日) 16:32:22void f(int (*a)[3][4][5]);
それはこういうときだろ?
void f(int (*a)[][3][4][5]);
じゃ指定なしじゃどう考えてもまずいだろ
なんで必要ないのかちゃんと考えろボケ
0554デフォルトの名無しさん
2010/12/26(日) 16:34:48は通るけど
void Hoge(int a[][][3][4][5])
は通らないんだな・・・興味深い
0555デフォルトの名無しさん
2010/12/26(日) 16:36:36もうしわけない。
>void f(int (*a)[][3][4][5]);
>じゃ指定なしじゃどう考えてもまずいだろ
が理解できません。よろしければぜひ。
なお私の考えは >>552 に示しました。
0557デフォルトの名無しさん
2010/12/26(日) 17:07:40gcc -ansi -Wall
で警告が出ないなら問題ないよ
0558デフォルトの名無しさん
2010/12/26(日) 17:46:08main()をint型で作ってreturn(0),return(1),return(-1)を返すと
どうなるんですか
0559デフォルトの名無しさん
2010/12/26(日) 17:54:01プログラムそのものが返す、正常終了したかどうかの値として使われるという感じ
0560デフォルトの名無しさん
2010/12/26(日) 18:03:23�Aint main(void)
�Bint main()
�Cvoid main(void)
�Dvoid main()
ANSI C89として間違ってるやつを教えてください
出来れば理由も込みで…
0561デフォルトの名無しさん
2010/12/26(日) 18:11:080562デフォルトの名無しさん
2010/12/26(日) 18:21:38C89は前のCの亜流を統一したような規格なので大抵の書き方は許してしまう
0563デフォルトの名無しさん
2010/12/26(日) 18:24:43emptyじゃダメだったのけ?
0564デフォルトの名無しさん
2010/12/26(日) 18:29:51emptyは、何かあったものが空になったと言うイメージがある。
voidは、もともと空、もともと無いと言うイメージがある。
voidの方が合ってる気はする。
0565デフォルトの名無しさん
2010/12/26(日) 18:54:590566デフォルトの名無しさん
2010/12/26(日) 19:00:47NULLほど
0567デフォルトの名無しさん
2010/12/26(日) 19:33:24理想的には何も書かない無言であるべきだったが
それだと K&R と互換性が保てないのでやむを得ず新設したプレースホルダー
0568デフォルトの名無しさん
2010/12/26(日) 19:53:06明確に規格で定義されてるのは1と2
0569デフォルトの名無しさん
2010/12/26(日) 20:47:57当方アマチュアなのでもっぱらこれか
void main()
これだわ。
ラクだし。
0570デフォルトの名無しさん
2010/12/26(日) 20:50:05どうせ終了コードなんて滅多に使われない
0571デフォルトの名無しさん
2010/12/26(日) 21:04:11タイプ量を数個減らすために警告出すほうが気持ち悪い。
0572デフォルトの名無しさん
2010/12/26(日) 22:30:51gccでのコンパイルオプションになにを指定しているのか教えてほしいw
0573デフォルトの名無しさん
2010/12/26(日) 22:50:140574デフォルトの名無しさん
2010/12/26(日) 22:51:460575デフォルトの名無しさん
2010/12/26(日) 23:05:25http://www.kazamiya.net/svm/svm-light_install.html
↑
上の手順でmakeをしてコンパイルしろという部分があるのですが、
'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出ます。色々と調べたら恐らくパスが通ってないってのが原因なのはわかるん
ですが、具体的にどこのパスを通せばいいのかがわかりません。
よろしくお願いします
0576575
2010/12/26(日) 23:07:23よくわからなかったのでできれば教えていただけると嬉しいです
0577デフォルトの名無しさん
2010/12/26(日) 23:08:42UNIX/Linux でやれとしか
Windows でどうしてもやりたいなら Cygwin をインストールしてそこでやるべし
0578デフォルトの名無しさん
2010/12/26(日) 23:09:37MacOSXでもできるよ!多分
0579575
2010/12/26(日) 23:10:32Cygwinも入ってるには入ってるんですが。
ちなみにどこを見てunixでやった方がいいと判断されたのですか?
0580デフォルトの名無しさん
2010/12/26(日) 23:12:150581デフォルトの名無しさん
2010/12/26(日) 23:14:41ttp://www.kijineko.co.jp/tech/superstitions/void-main.html
従って、1、2は規格合致、3は処理系定義されていれば規格合致、4、5は規格違反
C++でも同様
C99なら4、5も処理系定義されていれば規格合致だが、
C99はmainでreturn 0;を省略できるのでvoidにするメリット0
0582デフォルトの名無しさん
2010/12/26(日) 23:15:47使ってるコマンド
0583デフォルトの名無しさん
2010/12/26(日) 23:17:59-mno-cygwinオプションつけてコンパイルすればMinGW使ってくれる
0584デフォルトの名無しさん
2010/12/26(日) 23:20:490585デフォルトの名無しさん
2010/12/26(日) 23:21:090586575
2010/12/26(日) 23:25:30聞いたことはあるんですが設定の仕方とかわかりません
>>582
そうなんですか、今日一日windowsでやろうとしてたのにorz
>>583
makeのあとにそれをつけるんですか?
0587デフォルトの名無しさん
2010/12/26(日) 23:29:05そうなんですか。
どうもありがとう!
0588デフォルトの名無しさん
2010/12/26(日) 23:30:16普通にWindows版バイナリがあるなw
ttp://download.joachims.org/svm_light/current/svm_light_windows.zip
0589575
2010/12/26(日) 23:34:24おおおおおおおおお!!!!
ありがとうございます!多分それで解決したのかもしれません。
12時間ぐらいかかってたのですがようやく使えそうです。ありがとうございました
0590デフォルトの名無しさん
2010/12/26(日) 23:36:460591デフォルトの名無しさん
2010/12/26(日) 23:36:460592デフォルトの名無しさん
2010/12/26(日) 23:51:030593デフォルトの名無しさん
2010/12/26(日) 23:51:550594デフォルトの名無しさん
2010/12/26(日) 23:53:400595デフォルトの名無しさん
2010/12/27(月) 00:06:18時代はCygwinだよ
0596デフォルトの名無しさん
2010/12/27(月) 00:09:23C99 での話です。
>>560 の�Bは、JIS X3010:2003 6.7.5.3 によれば、
関数定義の一部である関数宣言子で識別子並びが空の場合、関数が仮引数をもたないことを指定する
とあり、JIS X3010:2003 5.1.2.2.1
一、上に掲げた二つの方法のいずれかと等価な方法
に該当するので、�Bは無条件に規格合致です。
VC++ Express Edition ならば、Visual Studio Tool のなかに、コマンドプロンプトがあり、
これを起動すれば nmake が使えます。make も使えますが、unix の make に近いのは nmake のほう。(昔からそうだった。)
このVC の設定をしたコマンドプロンプトは工夫すれば cygwin の bash を起動させることができ、便利に使えます。
0599デフォルトの名無しさん
2010/12/27(月) 00:47:39cygwin勧めてるのがこんなレベルの人間だと思われたら困る
Unix,Linuxを使いこなしてる人間がcygwinを勧めてるはず
0600デフォルトの名無しさん
2010/12/27(月) 00:52:30今はいらない子だよ
0601デフォルトの名無しさん
2010/12/27(月) 00:54:280602デフォルトの名無しさん
2010/12/27(月) 00:58:13unixコマンド使いたいからcygwin+gcc入れて使ってます
0603575
2010/12/27(月) 01:05:22ありがとうございます。
わからないことだらけすぎて質問がし辛いのでもうちょっと勉強してから
また質問しに来させてください。
みなさん丁寧に教えていただいてありがとうございました。
0604デフォルトの名無しさん
2010/12/27(月) 01:13:290605デフォルトの名無しさん
2010/12/27(月) 01:19:53どうにかならないもんかなぁ
0606デフォルトの名無しさん
2010/12/27(月) 02:48:02CEXの初体験と言うと聞いたのですが本当ですか?
お前はまだCTだって言われたんですがどういう意味ですか?
0607デフォルトの名無しさん
2010/12/27(月) 07:43:080608デフォルトの名無しさん
2010/12/27(月) 08:35:590609デフォルトの名無しさん
2010/12/27(月) 14:58:160610デフォルトの名無しさん
2010/12/27(月) 15:20:17Windows版のバイナリ使うことで結論でてないか?
0611デフォルトの名無しさん
2010/12/27(月) 15:22:59vim7.2 enhancedが提供されてそうに見えたけど、だめかい?
0612デフォルトの名無しさん
2010/12/27(月) 15:28:140613デフォルトの名無しさん
2010/12/27(月) 15:42:220614デフォルトの名無しさん
2010/12/27(月) 16:29:250615デフォルトの名無しさん
2010/12/27(月) 16:36:130616デフォルトの名無しさん
2010/12/27(月) 17:08:520617デフォルトの名無しさん
2010/12/27(月) 17:16:440618デフォルトの名無しさん
2010/12/27(月) 17:28:320619デフォルトの名無しさん
2010/12/27(月) 17:29:000620デフォルトの名無しさん
2010/12/27(月) 20:25:39fgetsは関数だ。改行は食い物じゃない。俺おかしなこといってるか?
0621デフォルトの名無しさん
2010/12/27(月) 20:27:100622デフォルトの名無しさん
2010/12/27(月) 20:34:02EUCかつ一文字が2バイトにしたいです。扱いやすいため。
0624622
2010/12/27(月) 20:35:39正確に言うと、char文字列をwchar_t文字列にする事です。
0625デフォルトの名無しさん
2010/12/27(月) 20:38:220626622
2010/12/27(月) 20:38:47Sjis(char)→EUC(char)変換→EUC(wchar_t)そのままコピーする。
0627617
2010/12/27(月) 20:49:55fgets,sscanfを使うようにします。
0628デフォルトの名無しさん
2010/12/27(月) 20:51:290629デフォルトの名無しさん
2010/12/27(月) 20:52:180630デフォルトの名無しさん
2010/12/27(月) 20:52:540631デフォルトの名無しさん
2010/12/28(火) 01:16:45ソース眺めてるだけでわかるもんなの なんかいい方法ないですか?
0632デフォルトの名無しさん
2010/12/28(火) 01:23:170633デフォルトの名無しさん
2010/12/28(火) 01:24:01参考書を捨てて作りたいものを試行錯誤しながら作り上げる
アルゴリズムを勉強して↑のコードを書き直す
参考書を買って読む
0634デフォルトの名無しさん
2010/12/28(火) 01:26:13ソース眺めてるだけでもわかるけど、実際にソースを色々変えてコンパイルしたほうが理解は早いよ。
0635デフォルトの名無しさん
2010/12/28(火) 01:36:29俺右利きおわた・・・
0636デフォルトの名無しさん
2010/12/28(火) 01:41:21右手をへし折ればいいんじゃね
0637デフォルトの名無しさん
2010/12/28(火) 02:10:22#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main(int ac,char **av)
{
printf("%s\n",*av);
while(--ac>0&&**++av=='-'){
return(1);
}
printf("%s\n",(*av));
printf("%s\n",(*(av++))); ←この部分
}
ちょっと動作確認してたんですが 最後のprintfの出力はインクリ前の値が
出力されるみたいです。
これ他の関数の場合でも渡してからインクリするんですか
0638デフォルトの名無しさん
2010/12/28(火) 02:15:54副作用完了点 でぐぐれ
av++;の副作用完了点は;の直前
つまりavの値を返してからセミコロンに行くまでの間のどこかでインクリメントされる
++av;だったらインクリメントした値を返す
0639デフォルトの名無しさん
2010/12/28(火) 03:02:410640デフォルトの名無しさん
2010/12/28(火) 04:20:32教科書とかに頼らない独学だとこういった固有名詞を知らないことが多いよね
0641デフォルトの名無しさん
2010/12/28(火) 05:16:26どこかにソースとかってありませんか?
よろしくお願いします
0642デフォルトの名無しさん
2010/12/28(火) 07:40:20つ[google]
0643デフォルトの名無しさん
2010/12/28(火) 08:13:45エディタをカスタマイズする。
強調キーワードとか色付けとか工夫しとけ
まさかメモ帳でやっとるわけないよなぁ
0644デフォルトの名無しさん
2010/12/28(火) 08:16:430645デフォルトの名無しさん
2010/12/28(火) 10:26:09教科書三冊読んだけど初めて見ました^^
0646デフォルトの名無しさん
2010/12/28(火) 15:13:570647デフォルトの名無しさん
2010/12/28(火) 16:05:23a[i++] = *p; /* p = &i */ と ワンクッションかかってる奴
稀に古い書物で出てたりするから危ないんだよな…
0648デフォルトの名無しさん
2010/12/28(火) 16:57:58| ノ´⌒ヽ,, |
| γ⌒´ ヽ, |
| 以下 // ""⌒⌒\ ) |
| ミンシュトー創設者 i / \ / ヽ ) |
| ルゥピー・ウェールズからの !゙ (・ )` ´( ・) i/ |
| メッセージをお読みください | (__人_) | |
| \ `ー' /. |
| ハ',::ヽ ハ、. |
| ,,、-'´ |\`ヾ::::::::::::ィ / | ``ヽ─-、. |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0649デフォルトの名無しさん
2010/12/28(火) 17:49:050650デフォルトの名無しさん
2010/12/28(火) 17:49:55何でforのループとかって「i,j,k,l,m,n」辺りがよく使われるの?
「i」が「iterate」の頭から来てるのは何となく分かるんだけど、
その他って何か理由があったりするの?
0651デフォルトの名無しさん
2010/12/28(火) 17:51:26副作用完了点は関係ないな
0652デフォルトの名無しさん
2010/12/28(火) 18:49:020653デフォルトの名無しさん
2010/12/28(火) 18:51:10FORTRAN 訛り
0654デフォルトの名無しさん
2010/12/28(火) 19:12:150655デフォルトの名無しさん
2010/12/28(火) 19:18:26iはintegerのi
0656デフォルトの名無しさん
2010/12/28(火) 19:19:11k,n辺りは数学で使われてたΣとかで
FORTRANの暗黙で整数型はintegerから来てるんじゃないかな
0657デフォルトの名無しさん
2010/12/28(火) 19:19:20それに倣ったんじゃないか。
0658デフォルトの名無しさん
2010/12/28(火) 21:06:39あるRGB値のテーブルが定義されていて、
0xffffff
0x888888
0x444444
0x123456
ある任意のRGB値が与えられた場合に、
テーブルの中から最も近い色のRGBを取り出す、
ということをやりたいのですが、どういう比較をすればいいでしょうか。
0659デフォルトの名無しさん
2010/12/28(火) 21:19:02(r1 - r2)^2 + (g1 - g2)^2 + (b1 - b2)^2
を比較すれば良さそうですね
ありがとうございました
0660デフォルトの名無しさん
2010/12/28(火) 21:21:30距離では人間のみためを正しい表さないとおもう。
0661デフォルトの名無しさん
2010/12/28(火) 21:48:370662デフォルトの名無しさん
2010/12/28(火) 22:17:18そのままじゃベタっとするから拡散すればいい
0663デフォルトの名無しさん
2010/12/28(火) 22:21:16HSVでもHLSでもLABでもYUVでも好きな色空間に変換してから距離を求めれば?
0664デフォルトの名無しさん
2010/12/28(火) 23:07:52ピュアに距離比較するなら 球に相当する LAB が良いかも?
0665デフォルトの名無しさん
2010/12/29(水) 01:16:04もっと簡単な質問にしてくれよ
0666デフォルトの名無しさん
2010/12/29(水) 01:35:450667デフォルトの名無しさん
2010/12/29(水) 02:52:43お前も分からないなら黙ってろカス
0668デフォルトの名無しさん
2010/12/29(水) 02:58:54お前も分からないなら黙ってろクズ
0669デフォルトの名無しさん
2010/12/29(水) 04:00:21printf(">>%d\nお前も分からないなら黙ってろクズ \n", i);
}
0670デフォルトの名無しさん
2010/12/29(水) 04:01:140671デフォルトの名無しさん
2010/12/29(水) 04:40:39C言語として難しいことは何もしていないからねぇ。
0672デフォルトの名無しさん
2010/12/29(水) 10:28:43これは恥ずかしい
0673デフォルトの名無しさん
2010/12/29(水) 14:24:09中級、上級のためのスレってないの?不公平やないか
0674デフォルトの名無しさん
2010/12/29(水) 15:18:110675デフォルトの名無しさん
2010/12/29(水) 15:38:070676デフォルトの名無しさん
2010/12/29(水) 15:41:430677デフォルトの名無しさん
2010/12/29(水) 15:43:560678デフォルトの名無しさん
2010/12/29(水) 15:45:410679デフォルトの名無しさん
2010/12/29(水) 15:52:280680デフォルトの名無しさん
2010/12/29(水) 16:02:140681デフォルトの名無しさん
2010/12/29(水) 16:08:080682デフォルトの名無しさん
2010/12/29(水) 16:11:260683デフォルトの名無しさん
2010/12/29(水) 16:34:380684デフォルトの名無しさん
2010/12/29(水) 16:45:230685デフォルトの名無しさん
2010/12/29(水) 19:51:070686デフォルトの名無しさん
2010/12/29(水) 19:51:540687デフォルトの名無しさん
2010/12/29(水) 20:50:340688デフォルトの名無しさん
2010/12/29(水) 20:57:530689デフォルトの名無しさん
2010/12/29(水) 21:13:490690デフォルトの名無しさん
2010/12/29(水) 21:21:110691デフォルトの名無しさん
2010/12/29(水) 22:29:490692デフォルトの名無しさん
2010/12/30(木) 00:12:12ドラッグで範囲選択できない
なんか方法ないですか?
0693デフォルトの名無しさん
2010/12/30(木) 00:15:130694デフォルトの名無しさん
2010/12/30(木) 00:17:22[編集]-[選択範囲]
マウスで範囲選択した後、Enterキーでクリップボードに入るはず
0695デフォルトの名無しさん
2010/12/30(木) 01:14:20a.c:28: error: stray ‘@’ in program
a.c:28: error: stray ‘\201’ in program
a.c:28: error: stray ‘@’ in program
a.c:28: error: stray ‘\201’ in program
a.c:28: error: stray ‘@’ in program
エラーの一部です @も\201もコードに書いてないはずなんですが
どういう意味のエラーですか
0696デフォルトの名無しさん
2010/12/30(木) 01:55:36'@'は文字コードにして16進数で40
8140といえばSJISの全角空白
0697デフォルトの名無しさん
2010/12/30(木) 02:02:5416進数ででるんですね
でもシフトジスは関係ないですね
81と40はビンゴです、
0698デフォルトの名無しさん
2010/12/30(木) 02:08:470699デフォルトの名無しさん
2010/12/30(木) 02:14:48この並びで意味あるペアといえば SJIS で全角空白
ゆえに ソースは SJIS で開くと 28行目に 全角空白が 3発入っている箇所があるはずだ
インデントの時に全角空白入れてしまった か "が漏れた か
0700デフォルトの名無しさん
2010/12/30(木) 02:30:5281,40も#defineで使ってたんですが見当違いのようです。
驚嘆しました
0701デフォルトの名無しさん
2010/12/30(木) 03:40:53>16進数ででるんですね
これも見当違いであったことに気付いてほしい
0702デフォルトの名無しさん
2010/12/30(木) 03:42:550703デフォルトの名無しさん
2010/12/30(木) 07:33:28例えばbmpファイルを image001.bmp image002.bmp image003.bmp ...
というように順番に自動で保存していく方法を教えてください。
このときにフォルダ内に既にimage002.bmpがある場合はimage003.bmpという名前から保存し始めたいです。
0704デフォルトの名無しさん
2010/12/30(木) 07:55:13既にそのファイル名があるかどうかの確認はAPIつかってもいいし
rモードでのfopenが成功するかどうかでもいいし
0705デフォルトの名無しさん
2010/12/30(木) 08:20:150706デフォルトの名無しさん
2010/12/30(木) 11:40:18/cygdrive/c/Users/mituru/AppData/Local/Temp/cckRIuT4.o:a.c:(.text+0x338): undefi
ned reference to `_fpintf'
collect2: ld returned 1 exit status
なんじゃこりゃあ
解決方法おしえて
0707デフォルトの名無しさん
2010/12/30(木) 11:42:20○ fprintf
0708デフォルトの名無しさん
2010/12/30(木) 12:11:440709デフォルトの名無しさん
2010/12/30(木) 13:26:190710デフォルトの名無しさん
2010/12/30(木) 13:35:150711デフォルトの名無しさん
2010/12/30(木) 13:50:20英語のできる日本人もいる。
0712デフォルトの名無しさん
2010/12/30(木) 13:50:36「_fpintfへの未定義の参照」とでた。つまり、
「'_fpint'という未定義な命令を参照しているから、定義を見直してください」
ということだろう。
0713デフォルトの名無しさん
2010/12/30(木) 14:08:14無知って怖いよね
0714デフォルトの名無しさん
2010/12/30(木) 14:32:150715デフォルトの名無しさん
2010/12/30(木) 15:00:10一時的にデータを記憶するものと認識してるんですが、、。
標準関数のリファレンスみてるとストリームやらバッファなど難しい言葉があってわからん
0716デフォルトの名無しさん
2010/12/30(木) 15:04:38AからBに何かを移すときに、その間に一時的に保持する緩衝領域。
0717デフォルトの名無しさん
2010/12/30(木) 15:04:50話聞いてたら欲しくなったので自分用に書いた。エロ画像整理に便利かと思って。
標準入力のリストから、ファイルを連番でコピーする。
http://ideone.com/2CKH6
ls や find と組み合わせて使う前提。
テキストファイルでリストを作って
a.jpg
b.jpg
c.jpg
cat list.txt | ./renban newlist
とかでもいい。ようするにファイル名リストの文字列をパイプで流し込めれば、何でもいい。
0718デフォルトの名無しさん
2010/12/30(木) 15:15:48その緩衝領域はプログラマが参照してはいけない領域なんですか。
モニタにどういう値が格納されているかモニタに表示させたい
0719デフォルトの名無しさん
2010/12/30(木) 15:33:44xに1.2086-e008
yに0
zに-1
という数値がでて長さが変わってしまいました。
これは計算誤差という奴ですか?
いちおうベクトルの長さを100倍して
x,y,zそれぞれ100で割ってベクトルを正規化するという処理を行うことにしたのですが
普通はどうやるのでしょうか?
ちなみに回転の計算はOpenGLでやりました。
よろしくお願いしますm(_ _)m
0720デフォルトの名無しさん
2010/12/30(木) 15:48:28普通は無視します。 1 が 1.00000001 になっても大抵どうってことありません。
1.2086-e008 =0.000000012086
ですから、誤差でしょうね。
0722デフォルトの名無しさん
2010/12/30(木) 17:22:270723デフォルトの名無しさん
2010/12/30(木) 17:28:08窓から投げ捨てようぜ
0724デフォルトの名無しさん
2010/12/30(木) 17:29:090725デフォルトの名無しさん
2010/12/30(木) 17:31:21遅くてもいいなら
0726デフォルトの名無しさん
2010/12/30(木) 17:53:40floatなんて、10進数換算で高々7桁しか精度がないから1e-8なら量子化限界以下だ。
その新しいxに1を足してから1を引けば綺麗さっぱり0になるんじゃね?
0727デフォルトの名無しさん
2010/12/30(木) 18:20:250728デフォルトの名無しさん
2010/12/30(木) 18:41:560729デフォルトの名無しさん
2010/12/30(木) 18:45:490730デフォルトの名無しさん
2010/12/30(木) 19:00:52アホ
BCD でも誤差はなくせん
数学の式をそのまま保持し続けなきゃ無理だよ
0731デフォルトの名無しさん
2010/12/30(木) 20:56:43無限小数みたいな表現不可能な値はどんな方法使っても不可能だが、それ以外はBCDでカバーできる。
もちろん計算も自前で作るのが前提だから、その意味で「ライブラリ」と言っている。
0732デフォルトの名無しさん
2010/12/30(木) 20:58:500733デフォルトの名無しさん
2010/12/30(木) 22:22:45>>> pow(math.e, 1j * math.pi)
(-1+1.2246467991473532e-16j)
http://www.google.co.jp/search?sourceid=UTF-8&q=e^(%CF%80+*+i)
e^(π * i) = -1
結論:グーグル電卓機能を使った方が良い
0734デフォルトの名無しさん
2010/12/30(木) 22:24:550735デフォルトの名無しさん
2010/12/31(金) 17:32:18動的→プログラム実行中に確保
静的→コンパイル時に確保
という違いですか? またfree()しなければいけないのはなぜ?
0736デフォルトの名無しさん
2010/12/31(金) 18:25:31だいたい合ってる。
動的というのは、コンパイル時点でサイズが分からない(変動する)から確保しようがない、ということ。
free()は、長時間常駐するようなアプリじゃないとおそらく必要性が実感できないだろう。
0737デフォルトの名無しさん
2010/12/31(金) 20:16:010738デフォルトの名無しさん
2010/12/31(金) 20:23:17> またfree()しなければいけないのはなぜ?
どんどんメモリを確保していったら、いずれメモリを使い尽くして空き領域が無くなってしまうから
使い終わった不要な領域はfreeで解放して空き領域に戻しておけば、また使える
0739デフォルトの名無しさん
2010/12/31(金) 20:27:290740デフォルトの名無しさん
2010/12/31(金) 20:33:080741デフォルトの名無しさん
2010/12/31(金) 20:47:39プログラムが終了すればOSが解放するから他への影響は無い
OSが無かったりOSがメモリ管理する気がないやつだったら別だけど
0742デフォルトの名無しさん
2010/12/31(金) 23:42:21return a;
0743デフォルトの名無しさん
2010/12/31(金) 23:44:480744 【だん吉】 【1606円】
2011/01/01(土) 00:07:110745 【豚】 【1171円】
2011/01/01(土) 00:07:54豚終わったな。俺は基本は前回受かった。次は応用受ける
0748デフォルトの名無しさん
2011/01/01(土) 01:49:330750デフォルトの名無しさん
2011/01/01(土) 02:20:52#define MAX 256
main(){
int count[MAX];
int c;
int i;
for(i=0;i<MAX;i++)
count[i]=0;
while((c=getchar())!=EOF)
count[c]++;
for(i=0;i<MAX;i++)
printf("%d:%d\n",i,count[i]);
}
コンパイルできません cygwinです
comand not foundになります
アドレスは指定したんですが
0751デフォルトの名無しさん
2011/01/01(土) 02:22:42コンパイラをインストールしていないか
path の設定ができていない
0752デフォルトの名無しさん
2011/01/01(土) 02:32:021) cygwin のコマンドラインで which gcc とした結果を教えてください。
2) cygwin のコマンドラインで set とした結果を教えてください。
結果は
タイトルバーのところで右クリック->編集->範囲指定
マウスで範囲指定(左ドラッグ)
タイトルバーのところで右クリック->編集->コピー
でコピペできます。
0754デフォルトの名無しさん
2011/01/01(土) 03:24:260755デフォルトの名無しさん
2011/01/01(土) 03:28:090756デフォルトの名無しさん
2011/01/01(土) 03:39:10cygwin をインスコしたときに setup.exe というファイルを実行したはず
(持っていなければ http://www.cygwin.org からゲット)
そいつが表示するウイザードを [次へ>] で進めていくと8ページ目くらいで [Select Packages] というツリーが出る
[All]-[Devel] の中に [gcc-core: C compiler] があって、そこに [Skip] と表示されていたらそれが原因
[Skip] をクリックすると日付っぽい表示に変わる(クリックから表示までラグがある)
この状態にしてから [次へ>] で最後までインスコを済ませれば cc が使えるようになっている
0757756
2011/01/01(土) 03:40:150758デフォルトの名無しさん
2011/01/01(土) 03:45:540759デフォルトの名無しさん
2011/01/01(土) 04:07:500760デフォルトの名無しさん
2011/01/01(土) 04:25:440761デフォルトの名無しさん
2011/01/01(土) 04:27:090762デフォルトの名無しさん
2011/01/01(土) 04:35:010763デフォルトの名無しさん
2011/01/01(土) 06:40:320764デフォルトの名無しさん
2011/01/01(土) 08:04:370765デフォルトの名無しさん
2011/01/01(土) 10:25:250766デフォルトの名無しさん
2011/01/01(土) 12:51:13$ which gcc
which: no gcc in (/usr/local/bin:/usr/bin:/bin:/cygdrive/c/Program Files/Common
Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Win
dows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Program Files/Softex/OmniPass
:/cygdrive/c/Program Files/pcdNavi/bin:/cygdrive/c/Program Files/Common Files/Ro
xio Shared/10.0/DLLShared/:/cygdrive/c/Program Files/Common Files/Roxio Shared/D
LLShared/:/cygdrive/c/Program Files/Common Files/Ulead Systems/MPEG:/cygdrive/c/
Program Files/Fujitsu/sadata:/cygdrive/c/Program Files/QuickTime/QTSystem/:/cygd
rive/c/Program Files/Windows Live/Shared:/cygdrive/c/Program Files/Microsoft SQL
Server/100/Tools/Binn/:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/B
inn/:征/)
0767デフォルトの名無しさん
2011/01/01(土) 12:52:10>>753へsetの実行結果↑
0768デフォルトの名無しさん
2011/01/01(土) 14:47:01>>756
コンパイルできました
今年もよろしくお願いします
ごめなさい。情報は >>766 だけでよかったですね。
そもそも gcc が入っていないようですね。
>>756 が参考になると思います。
http://www.dotup.org/uploda/www.dotup.org1333668.png.html
http://www.dotup.org/uploda/www.dotup.org1333670.png.html
0770デフォルトの名無しさん
2011/01/01(土) 15:15:030771デフォルトの名無しさん
2011/01/01(土) 15:20:13#define hoge hage
とするとhogeをhageと定義するということになりますが、
#define hoge
の一文しかない場合はどういう意味になるんでしょうか?
よく
#ifndef hage
#define hage
〜処理〜
#endif
というような流れでみます。
0772デフォルトの名無しさん
2011/01/01(土) 15:44:12文中にhogehogehogehogeとか書いてもプリプロセッサを通った後
コンパイラが処理する時には無くなっている
置換はしないが、プリプロセッサはhogeというシンボルがある事は記憶するので
#ifdefや#ifndefで判断できる
0773デフォルトの名無しさん
2011/01/01(土) 15:53:24〜処理〜
#ifdef DEBUG
printf("何かしらの結果");
#endif
0774デフォルトの名無しさん
2011/01/01(土) 15:58:460775771
2011/01/01(土) 16:45:26自分はオブジェクト指向系の言語からきてCにチャレンジしているので
まだまだ、わからないことばかりですが、がんばっていきます。
大体、のことは色々わかりましたので、Eオプションでやってみたり
して調べて見ます。>>773さんのは、デバッグのときに有効な手法なんですね。
色々ためしてやってみます。どうもありがとうございました。
0776デフォルトの名無しさん
2011/01/01(土) 18:10:220777デフォルトの名無しさん
2011/01/01(土) 21:50:330778デフォルトの名無しさん
2011/01/01(土) 22:15:21>ミス日本の候補者は、さまざまな勉強会に参加しない面にも磨きをかけている。
0779デフォルトの名無しさん
2011/01/02(日) 00:51:490780デフォルトの名無しさん
2011/01/02(日) 02:52:580782770
2011/01/02(日) 11:52:030783デフォルトの名無しさん
2011/01/02(日) 12:34:12代入しています。
それなのになぜgettimeofday関数はマイクロ秒を取得出来るのでしょうか?
見ているソースコードは./glibc-2.7/sysdeps/posix/gettimeofday.cです。
0784デフォルトの名無しさん
2011/01/02(日) 12:41:260785デフォルトの名無しさん
2011/01/02(日) 13:03:02代入していません。
0786デフォルトの名無しさん
2011/01/02(日) 13:10:220787デフォルトの名無しさん
2011/01/02(日) 14:40:14-1が入力された場合はそれまでも数値の平均を求める。
と言ったプログラムなんですが、calcの部分が上手く実行されません。
どの部分が間違っているのでしょうか?
http://codepad.org/q58owKAZ
×*i++
○(*i)++
∵*i++ ≡ *(i++)
あとそのコードでは 16 個全部に値が入ったときに破綻するのでは?
0789デフォルトの名無しさん
2011/01/02(日) 14:57:23++のが*より早いと言うことですね
ありがとうございました。
そして data[*i]!=-1 && *i<16 と改善して16個入力しても上手く実行できるようにしました。
御指摘ありがとうございました。
0790デフォルトの名無しさん
2011/01/02(日) 16:05:020791デフォルトの名無しさん
2011/01/02(日) 17:35:39したがってこのアドレスを戻った先で使おうとしても内容は保証されません」と書いていました
char *func(val)
int val;
{
char str[512];
sprintf(str,"val = %d",val);
return(str);
}
そこで逆のパターンなのですが、アドレス渡しした変数iのデータは関数funcで確実に保証
されるのでしょうか?
結構使っていると思うのですが…
void main(){
int i=100;
func(&i);
}
void func(int *val){
printf("%d",*val);
}
0792デフォルトの名無しさん
2011/01/02(日) 17:49:310793デフォルトの名無しさん
2011/01/02(日) 18:03:420794デフォルトの名無しさん
2011/01/02(日) 18:21:41なるほど、ありがとうございます。
ではイベントからスレッドへのアドレス渡しの場合はどうなるとおもいますか
void OnButton(){
int i=100;
_beginthread(thread, 0, &i);
return;
}
void thread(void *data){
printf("%d",*(int*)data);
}
この場合、OnButtonイベントからすぐにリターンするので
スレッド内で引数 i は保証されないような気がしますが
0795デフォルトの名無しさん
2011/01/02(日) 18:30:04OnButton から戻るのが先か
_beginthread で新しく作られたスレッドが呼び出されて終わるのが先か
時間t →
メインスレッド OnButton --- _beginthread --- OnButton からの戻り
thread() ---- thread からの戻り
thread() ---- thread からの戻り
thread() ---- thread からの戻り
何時別スレッドへディスパッチかかるかはわっからん
0796デフォルトの名無しさん
2011/01/02(日) 18:31:360797795
2011/01/02(日) 18:45:21マルチスレッド環境下で、そういう生命期間の怪しいものは、保障できないものとして考えると良いよ
(だから別スレッドへ渡すものは、生命期間がスレッドよりも確実に長いものを渡す)
スタック追跡したいとかの用途で あえて無茶な呼び出しも考えられるけど…
そんなの特殊すぐる
0798794
2011/01/02(日) 19:07:22返答ありがとうございます。
意図は伝わりました。
今までの話はWindowsを前提にしているのですが
どうなるか不明ということは i は確実に保証されないということですね
いままで気づかなかったのですが、猫でもわかるのページでは
スレッドに値をアドレス渡しする場合にはstatic宣言していました。
今後はスレッドに値を渡すときはstatic宣言するように気をつけます
0799デフォルトの名無しさん
2011/01/02(日) 20:05:410800デフォルトの名無しさん
2011/01/02(日) 20:19:00いつ釣りとかいいだすの?
0801デフォルトの名無しさん
2011/01/02(日) 20:21:130802デフォルトの名無しさん
2011/01/02(日) 20:25:38VCの_beginthreadで作成したスレッドに確実に値を渡す方法は他にあるのですか?
0803デフォルトの名無しさん
2011/01/02(日) 20:28:55まあ、mallocでヒープメモリー確保して渡す方法もある。
その他にもある。
0804デフォルトの名無しさん
2011/01/02(日) 20:39:49なるほど、確かにmallocだと値は確実に保持されると思いますが
プログラムが遅くならないですか?
他にも方法があるなら教えて欲しいです
0805デフォルトの名無しさん
2011/01/02(日) 20:54:49今作っているプログラムはボタンを押すとダウンロードスレッドが立ち上がるようにしているのですが
ダウンロードスレッドが一つの場合は問題ないですが、複数のスレッドの場合、static変数にすると
別のスレッドで値が書き換わるように思えてきました。
0806デフォルトの名無しさん
2011/01/02(日) 21:01:47基本的にメモリー管理の問題だ。
メモリーには3つ有る、スタックエリアとグローバル(静的)メモリー、ヒープメモリー
スレッドを使う場合、スタックエリアをデーター渡しにするのはあまり良くない。
(と言うか俺は禁止するがな)
複数スレッドを起動したい場合、スタテックなラベルを使用すると大変だ。
(と言うか複数スレッドにデータ渡しでラベルは、俺なら禁止事項だ)
後は、メモリー管理処理を作って、複数のメモリーブロックを管理する。
その場合、グローバル領域に作ると個数制限が出る。
(最大個数が決まっていればそれでもいい)
ヒープで作れば、個数やメモリー制限が少ない。
メモリー確保は、管理処理から空いてるメモリーブロックを受けるだけなので、スピードは速い。
でもだ、これはあくまでも複数スレッドを管理するときだけで。
「単純スレッドなら、スタック以外何でもいい。」
余分な事だが、スレッド間通信を多用する場合。通信データーのメモリー管理を作ると
後々色々楽になる。
これはあくまでも俺の主観だ。
0807デフォルトの名無しさん
2011/01/02(日) 21:32:39ご説明ありがとうございます。
結局はヒープを確保してスレッドに渡すしかないようですね
メモリー管理処理とは初めて聞いたのですが、JAVAなどのガベージ・コレクタと考えて宜しいのでしょうか
0808デフォルトの名無しさん
2011/01/02(日) 21:49:14いや、単純に固定ブロックのメモリーを幾つかもって使用中や空きの管理。
とても高速に管理するだけ。
これの利点は色々ありすぎて説明が大変になってくるので、パスしたい…のでよろ。
0809デフォルトの名無しさん
2011/01/02(日) 22:01:45ありがとうございます。
どこにあるか分かる方、いないでしょうか。
一応、glibc-2.7ディレクトリ内のgettimeofdayと名がつくファイルを検索したところ
上記の他に
./time/gettimeofday.c
./sysdeps/posix/gettimeofday.c
./sysdeps/unix/sysv/linux/x86_64/gettimeofday.S
./sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
./sysdeps/unix/sysv/linux/alpha/gettimeofday.S
./sysdeps/mach/gettimeofday.c
と出ました。
intelの64ビットCPUを使っていて、OSは32ビットのもの、なおかつ一番上はエラーを返すだけなので
./sysdeps/posix/gettimeofday.c
./sysdeps/unix/sysv/linux/x86_64/gettimeofday.S
の2つに絞って読みましたが(OSは32ビットなのでx86_64はないと思いますが・・)
上記は先ほど説明したとおり、
下記は64ビット命令のため、知識がほとんどなく、調べても読むことが出来ませんでした。
またgrepでも検索をしましたがそれらしきものを見つけることは出来ませんでした。
0810デフォルトの名無しさん
2011/01/02(日) 22:44:49時間関係の関数は全てカーネルのタイマ割込み間隔に依存する
4msぐらいじゃなかったか
0811デフォルトの名無しさん
2011/01/02(日) 22:51:200812デフォルトの名無しさん
2011/01/02(日) 23:38:510813デフォルトの名無しさん
2011/01/02(日) 23:41:16なんにせよカーネルのgettimeofdayを呼ぶだけだと思うよ
0814デフォルトの名無しさん
2011/01/03(月) 00:33:53何お前ら佐倉紗織ディスってんのか
そんな空耳なんか書き込んで楽しいの?
そもそも椅子取りなんか聞こえないが
ファンとしてはマジイライラするわ
マジ氏ね
14 : ななしのよっしん :2010/05/11(火) 00:09:45 ID: NxfYIO7cl1
>>13
何
そ
そ
フ
マ
・・・?
16 : ななしのよっしん :2010/05/26(水) 16:22:10 ID: 2H5NgzDKW0
なんでもかんでも空耳つければおもしろいと思ってる人は何なの。
きしめんはまぁ良いとしても、無理矢理なの多すぎだろ。
17 : ななしのよっしん :2010/06/05(土) 22:05:30 ID: 6vZhnMoj4A
>>13>>16
それが大多数にウケてる現実を見ようw
それでも嫌なら見ないほうがいいw
0815デフォルトの名無しさん
2011/01/03(月) 03:51:28そうなんですか?検索して調べるとマイクロ秒の取得が出来ると書いてあったのですが・・
>>813
システムコールにgettimeofdayがあるんですね。
それならglibc内にないのも頷けます。
ちょっとカーネルのソースコードから探してみます。
ありがとうございました。
0816デフォルトの名無しさん
2011/01/03(月) 08:36:33今さら見ていないかもしれないけど。
>772さん自身はわかっていそうだけれど
>何も置換されない
「何にも置換されない」のではなく「無に置換される。」
>文中にhogehogehogehogeとか書いてもプリプロセッサを通った後
>コンパイラが処理する時には無くなっている
トークンとして"hoge"と"hogehogehogehoge"は別物なので
#define hoge
で"hogehogehoge"は無くなったりしない。
0817デフォルトの名無しさん
2011/01/03(月) 08:58:430818794
2011/01/03(月) 11:42:06以下のような方法は問題ないのでしょうか。
struct DAT{
int a;
char b[30];
};
char mem[100];
void OnButton(){
DAT d;
d.a=100;
strcpy(b,"AAA");
memcpy(mem,&d,sizeof(d));
_beginthread(thread, 0,NULL);
}
void thread(void *data){
DAT d2;
memcpy(&d2,mem,sizeof(d2));
printf("%d %s",d2.a,d2.b);
}
0819818
2011/01/03(月) 11:44:22コンパイル、実行結果、問題なく動きました
0820デフォルトの名無しさん
2011/01/03(月) 11:45:17え、そんなこと無理? まぁそうかもしれない
0821デフォルトの名無しさん
2011/01/03(月) 11:48:45すみません
簡単に書いたのですが、実際にはmemの開き領を調べて
空きがある場合にコピーして、ない場合にはエラーを返すように考えています。
あまり一般的な方法ではないような気がして質問しました
0822デフォルトの名無しさん
2011/01/03(月) 12:17:19別に一般的な方法にこだわる必要はない
動けばいいのさ
0823デフォルトの名無しさん
2011/01/03(月) 12:48:55map<threadid,DAT*> threads
のようなスレッド管理オブジェクトに詰め込むのが一般的じゃないかな
DAT構造体にbool quit;みたいな終了フラグを入れとけば
外部スレッドから自殺を促せるし
サブスレッドが走っているのにメインスレッドを終了する事もなくなるから。
終了時はどうでもいいってことなら
スレッドに渡したパラメーターのコピーが終わるまで
スレッド生成側がスコープを抜けないように
イベントやセマフォ、スピンロックなどを使って同期を取ればいいと思う
0824デフォルトの名無しさん
2011/01/03(月) 13:00:14同期取るよりmallocで渡してthread側でfreeしちゃうほうが楽だね
0825デフォルトの名無しさん
2011/01/03(月) 13:02:23ここで、よくmallocとかけっこうCの実践的な質問をみるんですが、
いまどき、Cで開発してるところって、真面目にあるんですか?
一度もみたことないんです。。
0826818
2011/01/03(月) 13:13:07確かにヒープが一般的だと思いました
ただ強制終了した場合にヒープだとメモリリークになるような気がしましたので
外部変数を考えました
0827デフォルトの名無しさん
2011/01/03(月) 13:13:580828デフォルトの名無しさん
2011/01/03(月) 13:29:480829デフォルトの名無しさん
2011/01/03(月) 13:43:25リークしないように管理すればいいじゃん
てか、サブスレッドを強制的に落とすのはOKでリークはNGな理由は何?
0830デフォルトの名無しさん
2011/01/03(月) 13:58:24例えばサブスレッドではデータのアップ、ダウンロードを行うのですが
そのスレッドが強制終了などで中断されてもアップなら再アップロード
ダウンなら再ダウンロードを行えば問題ないと思います
メモリリークの場合は利用者が一日中パソコンを起動しているケースや
メモリが少ない場合はパソコンが不安定になるかもと考えたからです
動的にメモリを確保したままプログラムがなんらかのバグで
強制終了してもパソコンに全く影響がないのであればヒープを使います
0831デフォルトの名無しさん
2011/01/03(月) 14:10:15・(Win32)TerminateThread や 構造化例外を受けての脱出
・ユーザーの入力による脱出の選択処理
前者は間接的にリークを起こす可能性を秘めてるんじゃ…
(おおよそ、プロセス終了時に解放してくれるだろうけど)
0832デフォルトの名無しさん
2011/01/03(月) 14:18:35VCの malloc/free (ついでに new/delete) はスレッドセーフだっけ? <malloc/free のスレッドが異なる
いつも同じスレッドで入れ子に取り扱ってることが多いから ふと疑問におもた
0833デフォルトの名無しさん
2011/01/03(月) 15:14:51レジューム出来るようにすりゃいいじゃん
いっそのこと並列DL/ULに上限を設けて配列にしちまえ
>>831
分かりづらくてすまない
自殺or自然死以外という意味です
>>832
プロセス内で共有してるから開放できるよ
0834デフォルトの名無しさん
2011/01/03(月) 15:55:48int top=0;
int push(int n)
{
int (top>=MAX)
return(ERROR);/*Overflow*/
x[top++]=n;
return(n);
}
int pop(void)
{
if(top<=0)
return(ERROR);*/Underflow*/
return(x[--top]);
}
スタックのコーディングです なにをやっているかまったくわからないんですが
教えてください
0835デフォルトの名無しさん
2011/01/03(月) 16:08:250836デフォルトの名無しさん
2011/01/03(月) 16:25:220837デフォルトの名無しさん
2011/01/03(月) 16:51:10サンプルとか、本とかで簡単にスレッド実行ができるが。
サンプルスレッド(簡単)>>>>(技術的・設計的壁)>>>>実用的にスレッド使用
の隔たりがある。心にとどめておいてくれ。
0838デフォルトの名無しさん
2011/01/03(月) 17:56:390839デフォルトの名無しさん
2011/01/03(月) 18:00:050840837
2011/01/03(月) 18:02:19お前らド低脳のために高脳の俺が助言してるんだが。
これくらい理解出来ないと技術者にはなれないぞ。
0841デフォルトの名無しさん
2011/01/03(月) 18:11:450842デフォルトの名無しさん
2011/01/03(月) 19:50:256つの要素からなるベクトルの角度を求めるっていうプログラムを作ったのですが
http://codepad.org/l1zDb90Z
にあるように、めっちゃエラーを吐いてしまって自分ではどうにも出来ない状態です。
だれか助けてくれませんでしょうか・・・
0843デフォルトの名無しさん
2011/01/03(月) 19:53:540844デフォルトの名無しさん
2011/01/03(月) 20:34:22> /*ユーグリッド距離の計算*/
正しくは「ユークリッド」(Euclid)ね。
「マゼンタ」を「magenda」と綴ったりする間違いがあると、
ああ日本人が書いたんだなって予想がつくw
0845デフォルトの名無しさん
2011/01/03(月) 20:42:10まずエラーメッセージを丸ごとぐぐってみなよ。ダメ元で。
"stray '\343' in program"
0846842
2011/01/03(月) 21:00:03どうやらご指摘道理スペースが問題みたいでした。一応エラーは消えたのですが
まだoutputに気がかりな文が出てるのですが、これは大丈夫なんでしょうか・・・
#include <math.h>
0848デフォルトの名無しさん
2011/01/03(月) 21:37:44お前友達少ないよな
0849842
2011/01/03(月) 22:11:08#includeを忘れてました。ご指摘ありがとうございます!
結果を貼っておきます
http://codepad.org/iwvxDAJF
cosの事についてはまだ残ってましたが、そうやらこれに関してはコンパイラの問題らしいので一応スルーしておきます
どうもありがとうございました
0850デフォルトの名無しさん
2011/01/03(月) 23:11:22どういうとこで役にたつの?
0851デフォルトの名無しさん
2011/01/03(月) 23:28:530852デフォルトの名無しさん
2011/01/03(月) 23:42:57この%ってなんですか
0853デフォルトの名無しさん
2011/01/03(月) 23:43:490854デフォルトの名無しさん
2011/01/04(火) 00:01:160855デフォルトの名無しさん
2011/01/04(火) 00:20:34ってどう読むんですか?
先輩に聞いたら、気にしなくてもいいよ
なんていってたけど、気持ち悪いんで教えてください。
0856デフォルトの名無しさん
2011/01/04(火) 00:24:00K&R嫁
0857デフォルトの名無しさん
2011/01/04(火) 00:24:20中々答えが得られず非常に困っているのです。
ワープロのフロッピーをパソコンにデーター移行することができず、その際
のキーワードが『CSO』となっております。
カシオのワープロを5、6年前まで使っていました。ウィンドウズXPを使う
ようになり、その際保存していた1部の2HDの内容をパソコンに移しました。
その時はテキスト形式で何の問題もなく移行できました。使用したUSBはLogi-
tecという会社のドライバー器具です。
ところが先日別の2HDフロッピーで同作業を試みると、ファイル名やテキス
トの拡張子(?)がCSOとなっていて、開くことができません。
これは自分の操作で解決できる類のものなのでしょうか。また、前回できた
のに今回こういう風になったのは何故なのでしょうか。
どなたかスムーズにデータ移行できる方法をご伝授ください!
0858デフォルトの名無しさん
2011/01/04(火) 00:26:33カシオに聞け
0859デフォルトの名無しさん
2011/01/04(火) 05:48:16ワ
キ
の
し
た
と
で
こ
の
な
か
0860857
2011/01/04(火) 05:57:410861デフォルトの名無しさん
2011/01/04(火) 06:29:400862デフォルトの名無しさん
2011/01/04(火) 07:08:010863デフォルトの名無しさん
2011/01/04(火) 07:10:41元のデータを思い出しながらcso→元のデータに変換するプログラムを書きます
思い出した元のデータをそのままファイルに書き出します
おわり
0864デフォルトの名無しさん
2011/01/04(火) 07:15:07関数ポインタテーブルを受け取って処理し、
関数ポインタテーブルを返す関数、だな
状態遷移関数を実行するための関数とかか?
0865デフォルトの名無しさん
2011/01/04(火) 07:34:51それを証明してください。
0866デフォルトの名無しさん
2011/01/04(火) 09:44:070867デフォルトの名無しさん
2011/01/04(火) 10:40:470868デフォルトの名無しさん
2011/01/04(火) 10:46:17あるデータの情報を処理→その情報とデータベースにある不特定多数の情報と類似度計算→その類似度が高いヤツをピックアップして表示
って感じのプログラムを作らなきゃならなくなったんですが、そもそもデータベースをC言語使って操作とか計算とか出来るのでしょうか
助言をお願いします。。。
0869デフォルトの名無しさん
2011/01/04(火) 10:50:16ライブラリがあればできる
詳しいことはデータベースの開発元に聞け
0870デフォルトの名無しさん
2011/01/04(火) 10:57:480871デフォルトの名無しさん
2011/01/04(火) 11:14:02ありがとうございます!やってみます。ひとまずMYSQLのアクセスとかで調べてみます
あと出来ればこう言うのについて詳しく書かれてる場所があれば教えて欲しいのですが、どこかにあったりしますか?
0872デフォルトの名無しさん
2011/01/04(火) 11:14:450873デフォルトの名無しさん
2011/01/04(火) 11:18:250874デフォルトの名無しさん
2011/01/04(火) 11:19:140875デフォルトの名無しさん
2011/01/04(火) 11:24:19"MySQL API C"でググればたくさん出てくる
0876デフォルトの名無しさん
2011/01/04(火) 12:02:15でました。ありがとうございます!
0877デフォルトの名無しさん
2011/01/04(火) 12:32:08こんなコードって多用されるの?
読める人は凄いな
0878デフォルトの名無しさん
2011/01/04(火) 12:36:29出てくるとしてもtypedefする。
0879デフォルトの名無しさん
2011/01/04(火) 13:27:270880デフォルトの名無しさん
2011/01/04(火) 13:31:210881デフォルトの名無しさん
2011/01/04(火) 14:40:23「ソケットプログラミング」でググッてみるとか。
0882デフォルトの名無しさん
2011/01/04(火) 15:11:36>typedef でなんとかなるレベルじゃねーし
関数ポインタをtypedefしたことがないんですね。
>関数ポインタの引数が出てくるまで煮詰めたコードを汚いからと作り直すバカ
妄言過ぎて言葉も出ない
0883デフォルトの名無しさん
2011/01/04(火) 15:13:48関数ポインタはtypedefできねーよ馬鹿
0884デフォルトの名無しさん
2011/01/04(火) 15:17:56できるぞ?
0885デフォルトの名無しさん
2011/01/04(火) 15:33:37嘘つくな
0886デフォルトの名無しさん
2011/01/04(火) 15:34:58良いサイト見つけました。
どうもありがとう。
0887デフォルトの名無しさん
2011/01/04(火) 15:36:010888デフォルトの名無しさん
2011/01/04(火) 16:13:47次は何を勉強すればいいですか?独学でやtってます
0889デフォルトの名無しさん
2011/01/04(火) 16:23:010890デフォルトの名無しさん
2011/01/04(火) 16:24:46関数
0891デフォルトの名無しさん
2011/01/04(火) 16:25:56いままでのおさらいでマスターマインド作る
0892デフォルトの名無しさん
2011/01/04(火) 16:38:27難しそうで避けて通っていましたがテキストも次が関数なので
やってみます><
0893デフォルトの名無しさん
2011/01/04(火) 18:56:130894デフォルトの名無しさん
2011/01/04(火) 20:03:31嘘つき
0895デフォルトの名無しさん
2011/01/04(火) 20:20:55int Tashizan(int a, int b){
int c;
c=a+b;
printf("%d + %d = %d\n",a,b,c);
}
int Hikizan(int a,int b){
int c;
c=a-b;
printf("%d - %d = %d\n",a,b,c);
}
int main(void){
int a;
int b;
a=1;
b=1;
Tashizan(a,b);
a=2;
b=1;
Hikizan(a,b);
return 0;
}
-----------------------
警告:関数は値を返すべき(関数 Tashizan)
警告:関数は値を返すべき(関数 Hikizan)
とでるのですが、どうすればいいですか?
使っているコンパイラソフトは「C言語を始めよう!」というフリーソフトです。
0896デフォルトの名無しさん
2011/01/04(火) 20:23:050897デフォルトの名無しさん
2011/01/04(火) 20:33:10Tasizan、Hikizanをそれぞれ「return 0;」で
値を返せばよかったのですね!解決しました!
0898デフォルトの名無しさん
2011/01/04(火) 20:43:00int a,b,c;
int Tashizan(){
c=a+b;
printf("%d + %d = %d\n",a,b,c);
return 0;
}
int Hikizan(){
c=a-b;
printf("%d - %d = %d\n",a,b,c);
return 0;
}
int main(void){
a=1;
b=1;
Tashizan(a,b);
a=2;
b=1;
Hikizan(a,b);
return 0; }
--------------------------------
>>895のint a,b,cをグローバル変数にしたところ
警告:プロトタイプ宣言のない関数(Tasizan,Hikizan)の呼び出し(main)
とでました。どういうことなのでしょうか?
0899デフォルトの名無しさん
2011/01/04(火) 20:54:04定義と呼び出すときで関数の型が違う
0900デフォルトの名無しさん
2011/01/04(火) 21:34:25引数が空括弧の関数定義は「プロトタイプ宣言」としての効果を持たない
> int Tashizan() {
↑
ここ
C++ と混同する者がよくいる要注意箇所である
C ではプロトタイプ宣言なしで呼び出した関数は引数の宣言がなく int を返すと仮定される
> Tashizan(a,b);
よって仮定された関数の型は合っていて >>899 はウソ
正しくは
> int Tashizan()
を
int Tashizan(int a, int b)
とすれば「プロトタイプ宣言された」と見なされる
ちなみに、それはあくまで「警告」であってエラーではない
場合によっては無視する判断も必要になる部類のメッセージだ
0901デフォルトの名無しさん
2011/01/04(火) 22:01:13>>900
ありがとうございます!解決しました!
つまり、関数の利点って、mainで指定した値をそれぞれの関数で別に使えるってことですよね?おそらく
0902デフォルトの名無しさん
2011/01/04(火) 22:01:150903デフォルトの名無しさん
2011/01/04(火) 22:22:04あせるな
作ろうとしているプログラムが複雑になるほど
複雑さをしまっておける収納箱のありがたみは
追わなくても向こうからついてくる
0904デフォルトの名無しさん
2011/01/04(火) 22:24:340905デフォルトの名無しさん
2011/01/04(火) 23:36:350906デフォルトの名無しさん
2011/01/04(火) 23:37:130907デフォルトの名無しさん
2011/01/05(水) 00:05:28例えばどういった便利な利用方法があーる?
0908デフォルトの名無しさん
2011/01/05(水) 00:07:18qsort
0909デフォルトの名無しさん
2011/01/05(水) 00:10:54OOP
0910デフォルトの名無しさん
2011/01/05(水) 00:15:04COM
0911デフォルトの名無しさん
2011/01/05(水) 00:17:47GetProcAddress
0912デフォルトの名無しさん
2011/01/05(水) 00:29:00追っかけにくいから、関数ポインタが嫌いな人もいる。
場合分けがはっきりしてる時は、便利かも
if(g_state == TITLE){
title_func();
}
else if(g_state == PLAY){
play_func();
}
が
func_tbl[g_state]();
になって嬉しく感じられる人がいる
0914デフォルトの名無しさん
2011/01/05(水) 06:09:40if(g_state == TITLE){
title_func();
}
else if(g_state == PLAY){
play_func();
}
なにこの糞コードw
0915デフォルトの名無しさん
2011/01/05(水) 06:35:21バグらないだけこれよりマシなレベル
g_state = TITLE;
switch (g_state) {
case TITLE:
title_func();
case PLAY:
play_func();
}
switchなんてまず使わんから構文があってるかわからん
0916デフォルトの名無しさん
2011/01/05(水) 06:51:01ここはベテランコーダーが多そうなので、質問です。
ライセンスに関する質問です。(よくわからない人は無理して答えてくれなくて結構です)
プロプライエタリなライブラリーであるadobe photoshop sdk = A
ライブラリとしてAを使用する、プラグインプログラムのソースコード = S
Sのa.out形式のバイナリ = B
AとBをリンクしたdll形式のバイナリ = P
Q1:S&Bのtar配布で、BSDライセンスとして配布することは、ライセンス的に可能でしょうか? また、これが可能なライセンスは何がありますか?
Q2:Bのみの配布で、BSDライセンスとして配布することは、ライセンス的に可能でしょうか? また、これが可能なライセンスは何がありますか?
Q3:Pのみの配布で、BSDライセンスとして配布することは、ライセンス的に可能でしょうか? また、これが可能なライセンスは何がありますか?
Q4:GNU等フリーソフトとして配布可能な、移植されたAは存在しますか?
Q5:上記の件について、どのような対処を行えばソースフォージの登録審査を通ると予想できますか?
0917デフォルトの名無しさん
2011/01/05(水) 07:17:00スレ違い
【License】ライセンス総合【利用許諾】
http://hibari.2ch.net/test/read.cgi/tech/1266247461/
0918デフォルトの名無しさん
2011/01/05(水) 07:53:140919デフォルトの名無しさん
2011/01/05(水) 11:28:54どこがクソコードなのか分からん
0920デフォルトの名無しさん
2011/01/05(水) 12:15:250921デフォルトの名無しさん
2011/01/05(水) 12:30:150922デフォルトの名無しさん
2011/01/05(水) 12:37:09switchでbreakしてないところじゃね?
0923デフォルトの名無しさん
2011/01/05(水) 12:38:51すいません、これってif文よりswitch文を使えってこと?
俺はどちらも結構使うんだけれど今後の参考のために
知りたいす。
ちなみに俺はif文とswitch文は前後のコードの見やすさで
使い分けてる感じ。
0925デフォルトの名無しさん
2011/01/05(水) 13:02:52本筋と関係の無い部分で揚げ足とってたら切り無いぞ
サンプルコードのお約束ってやつだ
>>922
それはないんじゃない?
フォールスルーのミスなんて自業自得なのに
責任転嫁の言語叩きは恥ずかしすぎでしょ
0926デフォルトの名無しさん
2011/01/05(水) 14:14:03えっ
0927デフォルトの名無しさん
2011/01/05(水) 14:20:420928デフォルトの名無しさん
2011/01/05(水) 14:46:570929デフォルトの名無しさん
2011/01/05(水) 14:59:160930デフォルトの名無しさん
2011/01/05(水) 15:05:43せめて次スレが立ってから埋めろ
都合の悪いことを埋めたいならさっさと次スレ立ててしまえ
0931デフォルトの名無しさん
2011/01/05(水) 15:13:380932デフォルトの名無しさん
2011/01/05(水) 15:15:160933デフォルトの名無しさん
2011/01/05(水) 15:16:330934デフォルトの名無しさん
2011/01/05(水) 15:16:520935デフォルトの名無しさん
2011/01/05(水) 15:22:540936デフォルトの名無しさん
2011/01/05(水) 15:32:590937デフォルトの名無しさん
2011/01/05(水) 15:50:250938デフォルトの名無しさん
2011/01/05(水) 15:57:040939デフォルトの名無しさん
2011/01/05(水) 16:09:010940デフォルトの名無しさん
2011/01/05(水) 16:46:080941デフォルトの名無しさん
2011/01/05(水) 16:52:540942デフォルトの名無しさん
2011/01/05(水) 16:53:240943デフォルトの名無しさん
2011/01/05(水) 17:07:340944デフォルトの名無しさん
2011/01/05(水) 17:09:430945デフォルトの名無しさん
2011/01/05(水) 18:20:350946デフォルトの名無しさん
2011/01/05(水) 19:07:02だれか詳しいやり方とか知ってる人がいたら教えてくれませんか
0947デフォルトの名無しさん
2011/01/05(水) 19:11:300948デフォルトの名無しさん
2011/01/05(水) 19:23:50いつまで売ってんだか
Cの古臭さが良く分かる本。
0949デフォルトの名無しさん
2011/01/05(水) 19:28:29イソップのキツネが言う「古い」は
重みが全然違う
0950デフォルトの名無しさん
2011/01/05(水) 19:34:19ぐぐってみましたが、恐らくそのことだと思います。
これで操作とか出来ればいいのですが、後もう少し調べてみないと判断出来ないですね。。。
ひとまず、教えてくれてありがとうです
0951デフォルトの名無しさん
2011/01/05(水) 19:36:37いえいえ
0952デフォルトの名無しさん
2011/01/05(水) 21:17:26int i=0;
int *p;
i = &i;
p = i;
printf("%d",*p);
}
これいけるかと思ったら案の定だめでした。
0953デフォルトの名無しさん
2011/01/05(水) 21:45:560954Perl忍者 ◆M5ZWRnXOj6
2011/01/05(水) 22:00:100955Perl忍者 ◇M5ZWRnXOj6
2011/01/05(水) 22:20:400956Perl忍者 ◇M5ZWRnXOj6
2011/01/05(水) 22:30:190957Perl忍者 ◇M5ZWRnXOj6
2011/01/05(水) 22:31:26皆さんすみませんでした。
0958Perl忍者 ◇M5ZWRnXOj6
2011/01/05(水) 22:32:20皆さんすみませんでした。
0959デフォルトの名無しさん
2011/01/05(水) 22:34:300960デフォルトの名無しさん
2011/01/05(水) 22:35:370961デフォルトの名無しさん
2011/01/05(水) 22:44:530962デフォルトの名無しさん
2011/01/05(水) 22:51:300963デフォルトの名無しさん
2011/01/05(水) 22:55:180964デフォルトの名無しさん
2011/01/05(水) 22:57:410965デフォルトの名無しさん
2011/01/05(水) 23:01:000966デフォルトの名無しさん
2011/01/05(水) 23:03:100967デフォルトの名無しさん
2011/01/05(水) 23:03:140968デフォルトの名無しさん
2011/01/05(水) 23:05:15どこが古くなってるかkwsk
0969デフォルトの名無しさん
2011/01/05(水) 23:07:050970デフォルトの名無しさん
2011/01/05(水) 23:10:590971デフォルトの名無しさん
2011/01/05(水) 23:11:270972デフォルトの名無しさん
2011/01/05(水) 23:14:080973デフォルトの名無しさん
2011/01/05(水) 23:15:42Perl()笑
0974デフォルトの名無しさん
2011/01/05(水) 23:20:16違うだろ。Perlだろ
0975デフォルトの名無しさん
2011/01/05(水) 23:28:120976デフォルトの名無しさん
2011/01/05(水) 23:30:000977デフォルトの名無しさん
2011/01/06(木) 00:13:040978デフォルトの名無しさん
2011/01/06(木) 00:13:06欲しいんですがそういうことをする人たちが集まるサイト紹介してください。
0979デフォルトの名無しさん
2011/01/06(木) 00:18:16文法とかスコープの概念なんかはすべて一緒だし。
逆にC言語は使えるけど他は分かりませんっていう人いる?いないだろ
0980デフォルトの名無しさん
2011/01/06(木) 00:19:14その他周辺知識の有無がかなり重要になってくるのな。
C言語で組み込みソフト作ってた奴がJavaで携帯アプリ作る仕事に転職できるかってできないのな。
0982デフォルトの名無しさん
2011/01/06(木) 00:26:24プログラミング言語使えるのなんて最低条件なのに「俺は多くの言語が書けます」とか言っちゃうタイプ。
で、開発能力は皆無。
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。
0984デフォルトの名無しさん
2011/01/06(木) 00:29:23開発能力ってなんやねん。言語扱えるなら開発もできるだろ。なめんな
0985デフォルトの名無しさん
2011/01/06(木) 00:30:23あなたは答えなくていいです。
別の方、改めてサイト紹介してください。
0986デフォルトの名無しさん
2011/01/06(木) 00:32:18>>982
開発能力ってなんやねん。言語扱えるなら開発もできるだろ。なめんな
ほら、すぐにボロがでたw
0987デフォルトの名無しさん
2011/01/06(木) 00:39:340988デフォルトの名無しさん
2011/01/06(木) 00:41:34http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。
0989デフォルトの名無しさん
2011/01/06(木) 00:43:58消えろや
0990デフォルトの名無しさん
2011/01/06(木) 00:45:50http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。
0992デフォルトの名無しさん
2011/01/06(木) 00:47:44こいつどうにかしてくれ
0993デフォルトの名無しさん
2011/01/06(木) 00:55:330994デフォルトの名無しさん
2011/01/06(木) 00:57:22>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。
988 :デフォルトの名無しさん:2011/01/06(木) 00:41:34
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。
990 :デフォルトの名無しさん:2011/01/06(木) 00:45:50
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。
これはひどい
0995デフォルトの名無しさん
2011/01/06(木) 01:01:130996デフォルトの名無しさん
2011/01/06(木) 01:08:080997デフォルトの名無しさん
2011/01/06(木) 01:09:43お前だって同類だから。
0998デフォルトの名無しさん
2011/01/06(木) 01:13:000999デフォルトの名無しさん
2011/01/06(木) 01:22:261000デフォルトの名無しさん
2011/01/06(木) 01:23:3410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。