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


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

C統合・質問スレッド



1 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:37]
いろんなスレが乱立していますが、統合的なスレッドがないので立てました。
質問もOK

関連スレ
C#って死滅する理由がないよね! Part4
pc2.2ch.net/test/read.cgi/tech/1042464104/
C#最強伝説
pc2.2ch.net/test/read.cgi/tech/1061208152/
C#とJava、どっちをおぼえればいいの?
pc2.2ch.net/test/read.cgi/tech/1006715468/
C#Builder Professional 質問箱
pc2.2ch.net/test/read.cgi/tech/1062433418/

関連リンク
dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_Sharp/


577 名前:575 [2006/04/28(金) 17:19:26 ]
>>576
書き忘れましたが、C言語のソフトです・・・
あほですいません・・・orz

578 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 21:19:52 ]
初心者で本当にすみません
scanf関数を使っていたときに、パラメータに"&"を付け忘れました
俺のPCはあぼーんですか?

579 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 21:30:13 ]
>>578
心配なら再起動しろ。

580 名前:578 mailto:sage [2006/04/28(金) 23:13:51 ]
>>579
ありがとうございます。
さっき電源落としたんで、後で立ち上げてみます。
授業でscanf習った時に先生に死ぬほど脅されてたんで正直ガクブルです

581 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 00:34:50 ]
ワロタ

582 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 01:04:58 ]
-|"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
bcc32.cfg

コンフィグレーションファイル中の オプション間違い:-|"c:\Borland\Bcc55\include"
というエラーが出てしまいます

どうすればいいでしょうか?
教えてください。

583 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 02:22:18 ]
|とIが区別出来るフォントを使えばいいと思うよ

584 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 12:16:12 ]
>>583
ホントですか?
半角入力にですか。

テキストでは |とl の区別がなく書いてあるのでわかりずらいです。


585 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 12:28:03 ]
>>583
ありがとうございました
|とiの違いですね。



586 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 15:13:16 ]
warota

587 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 11:27:23 ]
>>580
死ぬほど脅すくらいなら、最初っから教えなきゃいいのになぁ。

588 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 13:47:17 ]
LSI C-86 Ver.3.30 試食版のことでお尋ねします、OSはWindows2000です
エスケープシーケンスを使いたいと思ってなんとか使えるようにはなりました。
しかし、カーソルを全角用の2文字分の長い方に変えるのはどうやってやったらいいでしょうか


589 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 15:34:00 ]
↑同じ質問を違うスレでしていますが、いろいろ試行錯誤した結果での話です
決してマルチをしようとしたつもりはございません
何なら無視して頂いてもかまいません

590 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 16:20:17 ]
それ以前にスレ違いだ。
>>1を読んでいないことがバレバレだぞ。

591 名前:デフォルトの名無しさん [2006/05/08(月) 16:23:18 ]
>>1よりもスレタイが重要だと思う。

592 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 17:36:16 ]
だから間違えたって言ってるだろ

593 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 20:57:59 ]
ttp://cgi.2chan.net/up2/src/f137696.txt

このコードをCygwinでコンパイルした結果
$ gcc -o client client.c
client.c: In function `main':
client.c:14: error: storage size of `server_adrs' isn't known

とエラー吐かれたのですが、修正方法が分かりません
修正方法教えていただけませんか?

594 名前:593 mailto:sage [2006/05/08(月) 22:09:10 ]
すいません、ソースURL間違えてました
ttp://namihei.zone.ne.jp/upup/up/56166.txt
です、お願いします

595 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 11:45:14 ]
>>593
だから激しくスレ違いなんだってばさ。
書き込む前に>1を読むとか直前の数レスを眺めるってこともできないのか?
cygwinスレかネットワークスレ辺りで聞いて味噌。



596 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 20:49:10 ]
スペースで区切られた文字列を分割する関数を作ります。

・連続するスペースはひとつの区切りとしない
・スペースがない場合は全ての文字列を返す
・頭や後ろにつくスペースは無視
・返す文字列がない場合はNULLを返す
・初期値の文字列はNULLを引数に与えている間に変更されないもとする
・#include<string.h>は使わない

ですが、さっぱりわかりません。
どうか教えてください。

597 名前:596 [2006/05/09(火) 20:57:45 ]
引数は( char * , const char * )です。
第1引数は区切られた文字列の格納先
第2引数はスペースで区切られた文字列(次の文字列を探す時はNULLを指定)
です。

598 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 20:59:26 ]
宿題なら宿題のスレッドへ行くが吉。

599 名前:デフォルトの名無しさん [2006/05/10(水) 00:11:15 ]
#include <stdio.h>
main(){
float x=0.0;
double xx=0.0;
long i,n=100000;
for(i=1;i<=n;i++){
x=x+1/(float)(i*i);
xx=xx+1/(double)(i*i);
}
printf("from 1/1^2 to 1/%d^2, x(dbl)=%f, x(flt)=%lf\n",n,xx,x);

x=0.0;
xx=0,0;
for(i=n;i>=1;i--){
x=x+1/(float)(i*i);
xx=xx+1/(double)(i*i);
}
printf("from 1/%d^2 to 1/1^2, x(dbl)=%f, x(flt)=%lf\n",n,xx,x);
}
1/1^2+1/2^2+・・・+1/100000^2を計算するプログラムを作成せよという問題で、1/1から加えたときと1/100000から加えたときとそれぞれフロートとダブル型の4パーターン
比較する課題なんですが、実行するとバグってしまします。このプログラムのどこおかしいですか?コンパイラはborlandgccです





600 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:16:41 ]
>>599
まずおかしいのはスレッドの選び方。ここはC♯のスレッドです。
次におかしいのは日本語。パーターンってなんです?
またおかしいのはコミュニケーション能力。バグってしまうだけでは何も通じません。
更におかしいのはコンパイラ。borlandなのかgccなのかはっきりなさい。


601 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:18:13 ]
>>600
すげー眠いのでもうだめです。今日はねます。すいませんでした

602 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:18:31 ]
>>599
>>595は見えてますか?

603 名前:デフォルトの名無しさん [2006/05/10(水) 00:23:46 ]
ここをC言語のスレとして扱っちゃ駄目なのか?
>>599
iが65536以上の時、i*iは32ビットでは表現できないので、オーバーフローしているんだろう。
(double)(i*i)の代わりに(double)i*iとすればいい。

604 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:31:29 ]
>>603
動作するようになりましたが、結果がおかしくなりました


605 名前:デフォルトの名無しさん [2006/05/10(水) 00:54:51 ]
>>604
ごめん、括弧が要る。
((double)i*i)



606 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:57:38 ]
>>603
>ここをC言語のスレとして扱っちゃ駄目なのか?
じゃ、重複スレなわけね。

607 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 01:01:02 ]
そういうことになるな。

608 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 13:23:27 ]
じゃ削除だね

609 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 15:33:33 ]
そういえば3月・4月のスレ削除依頼がまだ処理されてないな。

610 名前:デフォルトの名無しさん [2006/06/03(土) 01:37:14 ]
f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める  
初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力する方法を教えてください。  


611 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:03:53 ]
>>610
細かな調整は勝手にやれ
#include <iostream>
using namespace std;

double f(double x){
double fx;
fx = cos(x) - x*x ;
return fx ;
}

double bisection(double a, double b,double (*)(double),int prc);
int main(){
double a,b;
double k;
cout << " a : " ;
cin >> a ;
cout << " b : " ;
cin >> b ;
k = bisection(a,b, f,100);
cout<<"cos(x) - x^2 := " << f(k) << " at " << k << endl;
return 0;
}
(2分法は次)

612 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:04:35 ]
続き

double bisection(double a, double b, double (*func)(double ),int prc){
if (func(a)*func(b) >= 0) return a; //意味ないし a で十分w
double up, lo , m;
if( func(a) > func(b) ){ up = a; lo = b ;}
else { up = b ; lo = a; }

double workprod;
int workint ;
int counter=0;

while(1){
m= (up + lo)/2;
workprod = func(m);
workint = ((int)(workprod * 1000000)); // /100.0;
if(workint==0){
cout << "counter value = "<< counter <<endl;
return m;
}
if(workint > 0) up=m;
if(workint < 0) lo=m;
counter++;
if (counter > 20000) break;
}
return 0.0;
}



613 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:55:14 ]
>>611-612
1.宿題に答えるのはスレ違い
2.>>1も読めないカスは失せろ

614 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 23:02:06 ]
>>613
1?
笑わせるなヨ
ここは元々利用価値のないクズスレ
悔しかったら削除依頼出して来いヤw

612も読めねえクズが

615 名前:デフォルトの名無しさん [2006/06/03(土) 23:14:16 ]
カススレ晒しage



616 名前:デフォルトの名無しさん [2006/06/03(土) 23:20:45 ]
すいません、初心者なのですがdupという関数について教えてください。
openしたファイルポインタAをdupで複製?した場合というのはAをclose
すれば複製したファイルポインタもcloseされるのでしょうか?
dupの認識が違っていたらすいません

617 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:27:25 ]
単利計算と複利計算を行うプログラムについて、質問させてください。
環境はWindowsXP.VS.NET2003。Win32コンソールアプリケーションです。
void main()
{
float a,r,c;/*r:金利c:複利*/
int i,y,method; /*預ける年数*/
printf("いくら預けますか?");
scanf("%lf",&a);
printf("何年間預けますか?");
scanf("%d",&y);
printf("運用方法を設定してください。単利なら0,複利なら1を入力してください。");
scanf("%d",&method);
if(method==0){
printf("金利はいくら(%%)ですか?");
scanf("%f",&r);
for(i=1;i<=y;i++){
a +=a*(r/100);
}
printf("元本は%f円になります\n",a);
}
else if(method==1){
printf("複利はいくら(%%)ですか?");
scanf("%f",&c);
for(i=1;i<=y;i++){
a = a*(1+r/100);
}
printf("元本は%f円になります\n",a);
}
else printf("終了します。\n");
}
ですが、いざ元本を出そうとすると、Stack around the variable 'a' was corrupted.
と表示されてしまいます。お力添えの程出来たらよろしくお願いいたします。

618 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 10:03:00 ]
>>617
> scanf("%lf",&a);
scanf系において%lfはdobuleを意味する。

floatを使う必要なんてない。全部doubleでいい。
そもそもお金が絡むのに浮動小数点数を使ってよいのかという問題もあるが。
void main()を使う必要もない。int main()でいい。

619 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 21:18:38 ]
>>618
ありがとうございました。
単利の計算が間違っていた(複利と一緒だったorz)。
ので直しましたが、それ以外はうまくいきました。

小数点以下は二桁まで取ることにしました。
ありがとうございました。

620 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:02:45 ]
scanf("%d",&r);
scanf("%d",&h);
A=ff (r,h);
ff=f2;
V=ff (r,h);
printf ("表面積=%f 体積=%f",A,V);
return 0;
}(後は省略)

この問題でhとrをよみこみたいんですけど
こういうふうに書くとどんな数字を読み込んでも答えが0になって
しまうんですけどどこが間違ってますかね・
ちなみにscanfのかわりにh=1とかって定義すればしっかり値はでます。

621 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:03:58 ]
すいません途中しかコピペしてませんでした。こんな感じです
#include <stdio.h>
#define PAI 3.14159
double a,b,r,h,A,V;
double f1 (double r2,double h2);
double f2 (double r2,double h2);
main(void)
{

double (*ff)(double r2,double h2);


ff=f1;
scanf("%d",&r);
scanf("%d",&h);
A=ff (r,h);
ff=f2;
V=ff (r,h);
printf ("表面積=%f 体積=%f",A,V);
return 0;
}


622 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:14:35 ]
うはぁ、突込みどころが満載だ。
・doubleで計算したいならPAIは精度が足りない。
・そもそもPAIってなんだよw
・変数は極力グローバルに置かない方がいい。
・f1()とf2()が外部にあるなら、宣言はインクルードファイルで行なう方がいい。
・関数名は特別な理由でもない限り、中身が判る名前にしよう。
・main()の戻り値型は書くべき。
・実験的にやってみたいだけなら止めないが、関数ポインタを使う必然性がない。
・scanf()で型指定子を%dにするならint *を渡す必要がある。
・逆に、double *を渡したいなら型指定子は%lfだ。
・そもそもここはC♯の立て損なったネタスレだ。

623 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:19:13 ]
ほんと、ごめんなさい
でも解決しました><

624 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:23:44 ]
愚かな俺に教えて下さいまし、みなさま・・・

BYTE byData = 0x0f;
byData = byData << 4;
  (VC .net SP 適用なし)

これ実行すると byData が 0 になる。
3 ビットシフトだとちゃんと 0x78 になるのに・・・。

なぜだぁぁぁぁぁ!!

625 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:47:36 ]
>>624
自己解決

VC .net のシンボルウォッチのバグですた・・・
おぃおぃ、VC6 から劣化してどーすんのよ MSさん〜〜orz



626 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 05:49:05 ]
2つ整数を入力して商と剰余を求めるんですが・・・
20-6=14 14-6=8 8-6=2 3回引いたので商が3、剰余は2、というふうに求めろ、という問題です。
商は4、剰余4と出てしまいます。
#include <stdio.h>
void main(void)
{
int a,b,c,d,e,f;
printf("2個の正の整数を入力\n");
scanf("%d %d",&a,&b);
if (b>=a)
{
c=b;
b=a;
a=c;
}

d=a-b;
e=1;
while (d>=0)
{
d=d-b;
e=e+1;
}
printf("商%d 剰余%d",e,d);
}

627 名前:デフォルトの名無しさん [2006/07/19(水) 07:17:44 ]
d>=0だったら一回余分に計算しちまいますね・・・
自己解決しました。スレ汚しすんません。

628 名前:デフォルトの名無しさん [2006/08/15(火) 08:13:19 ]
巨大な乱数ファイルの後ろから1文字ずつ消していき、
ファイルサイズを2GByteにすることってできますか?
ファイルサイズを取得するまではいけたのですが、
1文字ずつ消す方法がわかりません。
消す方法はありませんか?

629 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:09:04 ]
>>628
一文字ずつじゃなきゃいけないの?
ファイルサイズを単純に切り詰めるだけでいいならbsd/POSIX系関数で
truncate()/ftruncate()なんてのがあるけど。

630 名前:デフォルトの名無しさん [2006/08/15(火) 11:14:03 ]
#include <stdio.h>
void mystrcpy(char *strA, char *strB);

int main(void)
{
char str1[11], str2[11];

puts("Input str1[11]");
fgets(str1, 10, stdin);

mystrcpy(str1, str2);
printf("str1 = %s\n", str1);
printf("str2 = %s\n", str2);

return 0;
}
void mystrcpy(char *strA, char *strB)
{
int i;
for(i=0; *(strA+i); i++){
*(strB+i) = *(strA+i);
}
}
strcpy関数を自分なりにつくっていたところ、上のようなものができました。
ですがコンパイルして実行すると文字列のコピーはうまくいっているものの、
変な文字列(文字化けした文字)も出力されてしまいます。
どこらへんがおかしいのでしょうか?
(環境はWinXPHome、コンパイラがBorland C++ 5.1.1です)

また、先週からC言語を勉強し始めたのですが、
ポインタを引数にしたり戻り値として利用するところが自分には少々難しいと感じています。
何かわかりやすい本やウェブサイトがあったら紹介していただけないでしょうか。

631 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:19:39 ]
>>630
文字列の終端の'\0'をコピーしていない。

632 名前:630 [2006/08/15(火) 11:31:59 ]
おお、まさにその通りです。
助かりました。

while(*(strB++) = *(strA++));

として解決しました。

633 名前:デフォルトの名無しさん [2006/08/15(火) 13:35:40 ]
>>629
一文字ずつじゃなくてもいいのですが、
ケツから2MByteくらいを消したいんです。
学校の課題なんで、切り詰めるだけでもばれないとは思いますが・・・。

#もし乱数データじゃなかったらばれるか。
#でもメモリ足りなくて開けないし・・・。

634 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 11:48:34 ]
ここってC#スレ?

635 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 08:22:41 ]
CとC#を一緒にすんなヴォケ



636 名前:タイトルのシャープが剥がされることも知らないのだろうか mailto:sage [2006/10/15(日) 10:39:11 ]
>>635
>1

637 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 10:46:47 ]
立てた奴の意図などどうでも良い。

638 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 14:28:51 ]
>>633
き ゃ ぴりん ☆ き っく ! でググれ

639 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 13:56:33 ]
質問です。
const int getHoge(){ return m_nData;}

というように、返り値にconstをつける意味はなにかあるのでしょうか?
ポインタなどを渡している場合ならわかるのですが、intやshortの場合の必要性がわかりません。


640 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 16:38:07 ]
>>639
製作者がconstなんだと叫びたいとき。
というのは冗談だが、Cではともかく、C++では違いが全然ないわけではない。
int foo();
const int bar();

template<typename T>
void hoge(T& x);

void f()
{
    hoge(foo()); //エラー:xはint&になるが、非constな参照型のインスタンスは右辺値で初期化できない。
    hoge(bar()); //xはconst int&になり、constな参照型のインスタンスは右辺値で初期化できるのでエラーにならない。
}
まあ普通はこんなことを気にする必要はない。

641 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 17:04:47 ]
>>640
ありがとうございます。
微妙な違いですね。

別のことを試してみたところ、const int getHogeは、
int n = getHoge()
とできてしまいました。全然constじゃないじゃん!
「エラー値とかだから計算する必要ないでしょ!だからconst!」って使い方をしようかと思ったのですが…。

素直にエラーはenumで型つけてやるほうがよさそうです。
ありがとうございました。


642 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 18:50:47 ]
>>641
そりゃぁ代入しちゃえばconst性は失われますがな。
でないと、int foo = 100;すらできなくなってしまう。

643 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 10:06:58 ]
/libpathの指定でProgram Filesみたいな空白のある場合ってどうすればいいのでしょうか?

#pragma comment (linker, "/libpath:\"/Program Files/XXX/lib\" ")
としてみましたがうまく動いていないみたいです

includepathの指定も#pragma でできないのでしょうか?

644 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 21:14:26 ]
DrawStringでタブ"\t"を表現する方法を教えていただけないでしょうか
検索しようにも上記単語だと難しいので困ってます

645 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 11:40:13 ]
方法 : 描画されたテキストにタブ ストップを設定する
msdn2.microsoft.com/ja-jp/library/2c6tzes6(VS.80).aspx



646 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 12:51:09 ]
>>645 ありがとうございます
そちらの参照先のように、決められた形(というのでしょうか)で表現したいのではなく
1 \t 222 \t 333
44444 \t 555
と表示する場合に3と5の表示開始位置が揃うようにしたいのですが
方法はないでしょうか

647 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 17:26:01 ]
学校の課題で使うのですが、ガウスの消去法で4行4列の式を解くプログラム乗ってるサイトありますか?
サイトから引っ張ってきていいと言われたので・・・
探したんですけどいっぱいあってどれが正しいのかわかんなくて

648 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:37:54 ]
結果が正しければどれでもいいのでは

649 名前:131 [2007/01/25(木) 21:12:22 ]
すみません、誰か分かる人はいませんか?
どうしてもC言語でJPEG画像を表示したいんです。
おねがいします。

650 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:22:39 ]
適当に解凍してただのビットマップを取り出せばいい。

651 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:47:22 ]
jpeglibとかあるだろ

652 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 22:01:39 ]
次に131がレスするのは2010年頃と予想

653 名前:デフォルトの名無しさん [2007/02/15(木) 23:14:58 ]
質問です!動的メモリ確保をつかったクラスみたいなものを作りたいんですが、
malloc() とfree()を使う方法では一つの関数内で完結させれば上手くいくのですが、
複数の関数でそれをやると上手く行きません。例えば↓では、関数b()で
エラーとなってしまいます。何故でしょうか?もう弱り果てています…

#include<stdio.h>
#include<stdlib.h>

void a(int*, int); //メモリ確保
void b(int*, int); //メモリ開放

main(int argc, char* argv)
{
int size;
int* array1;
int* array2;
size=10;

//うまくいく
array1 = (int*)malloc(sizeof(int)*size);
free(array1);

//うまくいかない!(bのところでメモリ領域破壊が…orz)
a(array2,size);
b(array2,size);
}

void a(int* array, int size){ array = (int*)malloc(sizeof(int)*size); }
void b(int* array, int size){ free(array); }

654 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:24:48 ]
> void a(int* array, int size){ array = (int*)malloc(sizeof(int)*size); }
arrayはarray2のコピーであり、それを書き換えたところでarray2にmallocの戻り値は代入されない。
したがって未初期化のarray2をbに渡し、それをfreeしようとしてお亡くなりになる。
やるならvoid a(int** array, int size) { *array = (int*)malloc(sizeof(int)*size); }

655 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:40:54 ]
>>653
関数a()に渡したarray2は、array2自体が何ら設定されていないのだがあんたの使うコンパイラは警告してくれないのか?
オプションで警告レベルを調整できるのなら引き上げておくことを進めておく。

で、件の目的なら>654でもいいがint * a(int size) {return malloc(sizeof(int) * size);}でもいいね。



656 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 01:07:52 ]
#include <stdio.h>
void f(int i) {i = 42;}
void g(int* p) {*p = 42;}
int main(void)
{
int x = 7;
f(x);
printf("%d\n", x);
g(&x);
printf("%d\n", x);
return 0;
}
上と同じ理屈。短絡的に言えば引数経由で値を返したいときには*の数を1個増やすということになる。
#include<stdio.h>
#include<stdlib.h>
void MyAlloc(int**, int);
void MyFree(int*, int);
int main(void)
{
int size = 10;
int* array2;
MyAlloc(&array2, size);
MyFree(array2, size);
return 0;
}
void MyAlloc(int** array, int size) {*array = (int*)malloc(sizeof(int) * size);}
void MyFree(int* array, int size) {free(array);}


657 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 19:47:47 ]
共有メモリ上にポインタを利用した連結リスト作成したいけど
どうやって作ればいいのですか?


658 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:52:37 ]
>654-656
有難う御座いました!なぜダメなのかも解りました。
これで課題の〆切に間に合いそうです.。。

659 名前:デフォルトの名無しさん [2007/03/02(金) 19:45:06 ]
Windowsでマイクロ秒まで測る方法を教えてください
環境は、WindowsXP+bcc32です。


660 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 17:46:55 ]
>>659
どんなアプリ作ろうとしてんの?
そもそもXPはRTOSじゃねーからマイクロ秒でなんらか
の値がとれたとしても精度はないよ?

661 名前:デフォルトの名無しさん [2007/03/10(土) 13:47:24 ]
Cを勉強したいんですが
まず最初に読んだらいい本ってありますか?
種類が多すぎてどれがいいか分からないんですけど

662 名前:デフォルトの名無しさん [2007/03/10(土) 22:36:29 ]
起動されているスレッドを順番に停止する関数を作りたいんですが、
何の関数を使えばいいんですかね?
pthread_join()は起動しているスレッドが自分で終了するまで待ってる関数だから
無限ループしているスレッドを終了できなし。
pthred_exit()はpthread_join()の戻り値を引数に使うからpthread_join()使わないと無理だし。

誰かお願いします。教えてください。

663 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:09:47 ]
>>661
ナカーマ
しかし俺はさっきコンパイルという言葉を知ったモロ初心者><

664 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 16:42:11 ]
推薦図書/必読書のためのスレッド PART34
pc11.2ch.net/test/read.cgi/tech/1173930196/l50

665 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:59:56 ]
#include <windows.h>
#include <stdio.h>


void main()
{
 double a;

 a = 2/6;
 printf("%f\n", a);
}

VC6にて上のように単純に2÷6を計算したら0が出力されます。
0.33333・・・を出したいのですがどうすればいいのでしょうか?




666 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:08:06 ]

解決済みです

667 名前:デフォルトの名無しさん [2007/05/14(月) 22:11:03 ]
windowsXP上でcのプログラミングをしたいのですが
フリーのものでコンパイラ、エディタなどでお勧めのものを教えてください

なるべく日本語のもので見易さ、編集しやすさ最優先で、
linux上でも動かしやすいものであれば嬉しいです(←これはついでなのでそこまで重要でもない)


668 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 23:51:43 ]
残念ながらcは英語をベースにした言語なので、「日本語のc」はありません。

669 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:39:33 ]
下らないレスするくらいなら相手するなよ…
>>667
好きなの選べ
ttp://homepage3.nifty.com/mmgames/c_guide/p_compiler.html

670 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:49:55 ]
>>667
Linuxなら、どのディストリにもgccが入っているだろうし、vi(vim)かそれが嫌ならemacsがあるだろ。
それを踏まえて、WinXPでもcygwin入れてgccを使えばいいし、取り敢えずvimでいいだろ。

671 名前:下らなさの2乗 mailto:sage [2007/05/15(火) 10:15:29 ]
>>668
「c」などという言語はありません。

672 名前:デフォルトの名無しさん [2007/05/20(日) 03:27:08 ]
OS:VineLinux
コンパイラ:gcc

こんばんは、ppm形式(フルカラーraw形式)の画像のピクセルごとの,R,G,Bの色のデータを
メモリを動的に確保して1次元の配列にぶち込みました。
これを任意の角度回転しようと考えているのですが、
どうも1次元の配列ですと直交座標で扱いにくく困っています。
そこで新たに二次元配列を動的に確保して・・・とも考えたのですが
元画像、出力画像のデータを取り込んでいるので、得策でもないような気がします。
なんとか直交座標系として扱いつつ、元画像を回転させて出力画像を作る方法ありませんでしょうか?
ソースがあるだとかよい案があればよろしくお願い致します。

673 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 03:50:33 ]
>>672
座標計算する関数を作ってしまうとか。
pc11.2ch.net/test/read.cgi/tech/1179301993/99


674 名前:デフォルトの名無しさん [2007/05/20(日) 06:03:17 ]
printfの書式で14.850000や2.00や5.012000の様に小数点以下で最後に0が続く場合、
その0を省略する方法を教えて下さい。

675 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:16:09 ]
>>674
(っ´▽`)っ
printf("%.0f\n", d);;



676 名前:デフォルトの名無しさん [2007/05/20(日) 08:19:40 ]
’0’、’1’、’2’、’3’を’-1’、’0’’、’1’、’2’に置き換えるためにhand=C-’0’-1とするのですが、この式の間の『’0’』の存在意義がよくわからないです。

677 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:29:08 ]
>>676
(っ´▽`)っ
>hand=C-’0’-1
このCには文字が入っているんじゃないかな?
このhandには数値が入っているんじゃないかな?
Cに'3'が入っている時を例に挙げよう。
'0' = 0x30 = 48
'3' = 0x33 = 51
hand = 51 - 48 - 1 = 2
つまり、文字を数値に変換するために'0'の値を引いているの。
'0'(文字の0)と0(数値のゼロ)は違うのはわかるよね。
メモリに格納される時のビット列が違うの。
2進法で考えると
'0'は00110000、0は00000000で格納されるよ






[ 続きを読む ] / [ 携帯版 ]

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

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