トップページ⇒tech
1001コメント272KB

C言語なら俺に聞け! Part 〈56〉

レス数が1000を超えています。これ以上書き込みはできません。
0001【プログラマは如何に手を抜くか?】NGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限Googleで検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

コンパイラを探しているなら >>2-13 を。

上記を逸した場合の結果は激しく未定義だゴルァ!!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
0002デフォルトの名無しさんNGNG
古スレ1 http://pc.2ch.net/tech/kako/1020/10203/1020361918.html
古スレ2 http://pc.2ch.net/tech/kako/1020/10207/1020703159.html
古スレ3 http://pc3.2ch.net/test/read.cgi/tech/1026225445/
古スレ4 http://pc3.2ch.net/test/read.cgi/tech/1029336048/
古スレ5 http://pc3.2ch.net/test/read.cgi/tech/1031757171/
古スレ6 http://pc3.2ch.net/test/read.cgi/tech/1032160148/
古スレ7 http://pc3.2ch.net/test/read.cgi/tech/1032361924/
古スレ8 http://pc3.2ch.net/test/read.cgi/tech/1033204295/
古スレ9 http://pc3.2ch.net/test/read.cgi/tech/1034785350/
古スレ10 http://pc3.2ch.net/test/read.cgi/tech/1034863796/
http://pc2.2ch.net/test/read.cgi/tech/1034785925/
http://pc2.2ch.net/test/read.cgi/tech/1034785992/
http://pc2.2ch.net/test/read.cgi/tech/1035474976/
http://pc2.2ch.net/test/read.cgi/tech/1031758069/
0003デフォルトの名無しさんNGNG
だからCで画像うんぬんは無理があるのよ。
Javaにしなさい。パッケージawtのGraphicsクラスのメソッド
g.drawImage(im,50,50);で一発で出るのよ。(imはImageで初期画済みね!gもGraphicsで)
コード全部で10行いかないわよ。
0004デフォルトの名無しさんNGNG
前すれ
http://pc2.2ch.net/test/read.cgi/tech/1051528386/
0005デフォルトの名無しさんNGNG
>>1
スレタテモティカレ
0006デフォルトの名無しさんNGNG
>>979
あんたなに言ってのよ!
fgetsはファイルから1行読み込むのよ。
char *str;
int flag=0;
do{
if(flag==1)
printf("もう一度入力しろアホ");
gets(str);
if(10<(strlen(str)))
break;
flag=1;
}while(1);
まったくJava嫌いの人はどっかいっちゃったの?
0007デフォルトの名無しさんNGNG
>6
0008デフォルトの名無しさんNGNG
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
>fgetsはファイルから1行読み込むのよ。
0009デフォルトの名無しさんNGNG
ファイルというかストリーム
stdinもストリーム
0010デフォルトの名無しさんNGNG
> char *str;
> gets(str);

何ヤってんの?
0011デフォルトの名無しさんNGNG
>>9
はいはい、Java子ちゃん、はじっこへ。
0012デフォルトの名無しさんNGNG
>>11
えっ!?
Javaなんか知らないけど(^_^;)
0013デフォルトの名無しさんNGNG

 ま た J a v a 厨 か
0014デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fgets.3.html

streamって書いてあるYO!
0015デフォルトの名無しさんNGNG
あらやだ。
char str[10];じゃない
getsは文字配列に格納よ(*^_^*)//
0016デフォルトの名無しさんNGNG
どうやったらfgets()がファイルからの読み込みって言う考えをもてるのやら。
0017デフォルトの名無しさんNGNG
で、Windows2000で動くリンカーは?(^o^*)
0018デフォルトの名無しさんNGNG
ああ。fgetsのfってfileのfだったっけ?
0019デフォルトの名無しさんNGNG
ほかになにがある
0020デフォルトの名無しさんNGNG
float
0021デフォルトの名無しさんNGNG
>>15
10文字以上の場合どうなるんだ
阿呆か馬鹿か
0022デフォルトの名無しさんNGNG
>>16
なに言っての?fgetsはファイルポインタに関連ずけられたファイルから文字列を
読むのよ!
FILE *fp:
char str[10];
fopen("AHO.txt","r");
fgets(str,80,fp);
fclose(fp);
こうやって使うのよ!
0023デフォルトの名無しさんNGNG
fabs - ファイルから数字を読み込み、絶対値を返す。
0024デフォルトの名無しさんNGNG
>>22
fopenの戻り値は無視か?
0025デフォルトの名無しさんNGNG
> 関連ずけ
> 関連ずけ
> 関連ずけ
> 関連ずけ
> 関連ずけ


は、いいとして、
> char str[10];
> fgets(str,80,fp);
またか
0026デフォルトの名無しさんNGNG
ファイルストリーム、もしくはファイルハンドルと呼ぶと思うが
ファイルポインタというと現在操作している位置の事だよな
0027デフォルトの名無しさんNGNG
>>26
俺はFILE *のことをファイルポインタと読んでいるけど、違うのか?
Perlだったらファイルハンドルというけど。
0028デフォルトの名無しさんNGNG
ANSI C言語辞典では走査位置をファイル位置指示子
FILE* をファイルポインタとして区別してたな。規格的にはどう
表現されているんだろう。
0029デフォルトの名無しさんNGNG
ファイルハンドルは非ANSIのopenのヤツなどとまぎらわしいので却下
0030デフォルトの名無しさんNGNG
あらまたやっちゃった。
fp=fopen("AHO.txt","r");
じゃないとfclose();の引数がダメね!

0031デフォルトの名無しさんNGNG
>>29
openの場合はファイルディスクリプタじゃないか?

>>30
その前にfgetsだろ
0032デフォルトの名無しさんNGNG
>>30
fpがヌルの場合はどうするんだ。
0033デフォルトの名無しさんNGNG
>>30
素直にVBやっとけ
0034デフォルトの名無しさんNGNG
>>31
>openの場合はファイルディスクリプタじゃないか?
確かに…
当方DOS->Winなもので
0035デフォルトの名無しさんNGNG
>>34
DOSだとファイルハンドルと言うのか。
スマソ UNIXだと決めつけていた
0036デフォルトの名無しさんNGNG
ハンドルでもポインタでもなんでもいいよ
0037デフォルトの名無しさんNGNG
そうそう。要は読み書きできればいいの。
0038デフォルトの名無しさんNGNG
>>2-13 にコンパイラのリンクが無いのは仕様ですか
0039デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0040デフォルトの名無しさんNGNG
ハンドルは0以上の数字であり。ファイルポインタは機械固有の
値だな。
0041デフォルトの名無しさんNGNG
>>40
突込みどころ満載だな、釣りか ?
0042デフォルトの名無しさんNGNG
>> http://pc2.2ch.net/test/read.cgi/tech/1051528386/954
標準Cでは無いですが。予め実行フォルダにbitmap.bmpを作っておく必要あり。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=61
0043デフォルトの名無しさんNGNG
パスワードをがあっているかどうかの判断の時ですが(因みにパスワードはnekoです)

char pw[80];
gets(pw);
if(!strcmp("!neko",pw))printf("正解");

で出来るのですが、文字列の比較はstr系を使うしかないのでしょうか?
数字でしたら if(pw==30)とか出来ますが。
0044デフォルトの名無しさんNGNG
memcmpでもいいし文字コードがわかっているなら一バイトずつ比較してもいい。

でも "!neko"と比較してたらだめだろう。
0045デフォルトの名無しさんNGNG
あ、間違えました(--;

char pw[80];
gets(pw);
if(!strcmp("neko",pw))printf("正解");

ですね
どうもありがとうございました。
0046デフォルトの名無しさんNGNG
>>43
==で判定したいのならC++とかでやるしかない
0047デフォルトの名無しさんNGNG
マテマテマテ >>45
読み込みにgets()を使うのはやめれ
しかもパスワードを読み込むような用途って・・。
fgets(pw,sizeof(pw),stdin)を強くお薦め
0048デフォルトの名無しさんNGNG
いいだろ別に、それをそのまま使うってわけでもねぇんだし、
例えとして出しただけだろ!
おまいはここにコード書くときも
いちいちエラーチェックまで入れたのを
書けってのかよ
0049デフォルトの名無しさんNGNG
>>48
逆切れすんな。

お前が書いたコードを見た奴が真似しちゃうかもしれないだろ?
そういう奴のためにも>47のように補足しておくのは悪いことじゃねーだろ。
005043,45NGNG
当方のlvが低いため付いて言ってませんが、
とりあえずmemcmpなる物を使って同じのを作ってみました。

#include <stdio.h>
#include <string.h>

int main(void)
{
char pw1[80];
char pw2[]="neko";
printf("パスワード: ");
gets(pw1);
if(!memcmp(pw1, pw2,4)) printf("正解\n");
else printf("不正解\n");

return 0;
}

これで出来ましたが、memcmp内のcountの4を10にすると動きませんでした。
ご指摘宜しくお願いします。
005143,45NGNG
ちなみに4から8まではうまく動きました。

>46さん
まだC++は触った事がないです(笑)
>47さん
参考書の例題のようなモノですので大丈夫です。
fgetsも初耳ですが使って見ようと思います。
0052デフォルトの名無しさんNGNG
>>51
> ちなみに4から8まではうまく動きました。

これは、たまたま。

というか、なぜ memcmp() なんか使うんだ ?
素直に strcmp() 使うべき。
0053デフォルトの名無しさんNGNG
できれば平文はやめた方がいいよ。。。
005443,45NGNG
fgets苦戦中(--;

>52さん
なるほどたまたまですか。
確かにこの場合はstrcmpのが用途に合ってますね。
どうもありがとうございます。

>53さん
平文の意味も知りませんでした^^;
勉強になりました。

fgets苦戦中(--;
0055デフォルトの名無しさんNGNG
strcmpは文字列の終りを認識してそれ以降の比較はしないけど
memcmpはcountであたえたサイズを無条件で比較するため。
結果はpw1、pw2の未初期化部分に何が入っていたかに依存してしまう。

fgetsは単にgetsと置き換えるだけで動作しない?
005643,45NGNG
#include <stdio.h>
#include <string.h>

int main(void)
{
char pw[256];
printf("パスワード: ");
fgets(pw,sizeof(pw),stdin);
if(!strcmp(pw,"neko"))printf("正解\n");
else printf("不正解\n");

return 0;
}

ダメでした(;´Д`)
とんでもない勘違いをしていたら恥ずかしい。
0057デフォルトの名無しさんNGNG
末尾の改行を取り除く処理はした?
getsと違ってfgetsは改行も書き込むから。
0058デフォルトの名無しさんNGNG
void chomp(char *str)
{
if(!*str) return;
str+=strlen(str)-1;
if(*str=='\n') *str='\0';
}
0059デフォルトの名無しさんNGNG
voidだからって最後にreturnを書かないやつは非国民
0060デフォルトの名無しさんNGNG
>>59
んなこたーない
006143,45NGNG
>57さん
できましたー!

#include <stdio.h>
#include <string.h>

int main(void)
{
char pw[256];
printf("パスワード: ");
fgets(pw,sizeof(pw),stdin);
if(!strcmp(pw,"neko\n"))printf("正解\n");
else printf("不正解\n");

return 0;
}

取り除かないで付け加えましたが(;´Д`)
ありがとうございました。
006257NGNG
>>61
>>58 せっかく書いたのに(T_T)
006343,45NGNG
>57さん
すみません。
私にとっては意味不明なsrcだったので関係無いかと思いました^^;

#include <stdio.h>
#include <string.h>
void chomp(char *str);
int main(void)
{
char pw[256];
printf("パスワード: ");
fgets(pw,sizeof(pw),stdin);
chomp(pw);
if(!strcmp(pw,"neko"))printf("正解\n");
else printf("不正解\n");
return 0;
}
void chomp(char *str)
{
if(!*str) return;
str+=strlen(str)-1;
if(*str=='\n') *str='\0';
}

これでうまく動きましたー
お手数おかけしました。
ありがとう(T-T
0064デフォルトの名無しさんNGNG
こうやって比べてみると
>61のほうが(・∀・)イイ!
0065デフォルトの名無しさんNGNG
マジレスすると
getsよりfgetsと同じように
strcmpよりstrncmpなんだけどね
0066デフォルトの名無しさんNGNG
strncmp だと nekomimi でも正解じゃぁねぇか。
0067デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0068デフォルトの名無しさんNGNG
>>65
> strcmpよりstrncmpなんだけどね

何でや !?
とりあえず、n の値はどうするのか聞きたい。
0069デフォルトの名無しさんNGNG
この場合は257にしといたらいいんでない
0070デフォルトの名無しさんNGNG
>>69
で、それはどう言う意味があるんだ ?
0071デフォルトの名無しさんNGNG
>>67
そのハァ?はどの書き込みへのレスなんだ?
0072デフォルトの名無しさんNGNG
こんなソフトはいやだ。
・パスワードが平文で実行ファイルに格納されている
0073デフォルトの名無しさんNGNG
>70
よく見てなかったこのばやい5?
0074デフォルトの名無しさんNGNG
>>72
それ、CGIスクリプトに多いね・・・・
0075デフォルトの名無しさんNGNG
ページを見ただけで、何日か後にハードディスクが消去されるようなスクリプトってあるんでしょうか?
あるページをみたら警告文で書いてあったのでおしえてください。
0076デフォルトの名無しさんNGNG
CGIスクリプトの場合、例え平文でもパスワードが見れないわけだから問題ないよ。
0077デフォルトの名無しさんNGNG
>>76
iswebみたいなところだと(ry
0078デフォルトの名無しさんNGNG
>>75
セキリュティホールをうまくつけば可能かもしれませんね
0079デフォルトの名無しさんNGNG
Index of /cgi-bin
.
..
checkpasswd
chuumon_form.cgi
kanri_form.cgi
kokyaku_data.dat
0080デフォルトの名無しさんNGNG
1+1=2

ハァ? 1+1には代入できないだろ。  と思うようになってしまった。
0081デフォルトの名無しさんNGNG
crypt〜
0082PrologNGNG
>>80
漏れは

1+1=2

ハァ? 1+1 =:= 2 だろ?  と思うようになってしまった。
0083デフォルトの名無しさんNGNG
それよりabがa*bだってのに違和感を覚えるようになった。。。
0084デフォルトの名無しさんNGNG
「猫でもわかる〜」の24章、38章でサイコロの目を二つ乱数で出すところがあるんですが、

int main(void){
 .....
 srand((unsigned)time(NULL));
 me1 = saikoro();
 me2 = saikoro();
 ....
}
int saikoro(void){
 return (rand() % 6 + 1);
}

だと二つバラバラで出るんですが、

int main(void){
 .....
 me1 = saikoro();
 me2 = saikoro();
 ....
}
int saikoro(void){
 srand((unsigned)time(NULL));
 return (rand() % 6 + 1);
}

だとゾロ目になります。
どうしてこのような違いが出るのでしょうか?
0085デフォルトの名無しさんNGNG
>>84
srandの引数が同じなら、その後の乱数列は同じものが出るから。
単に乱数が欲しいだけなら、srandはプログラム起動時に1回だけ実行するように。
0086デフォルトの名無しさんNGNG
typedef struct{double x,y,z}vec;vec U,black,amb={.02,.02,.02};struct sphere{
vec cen,color;double rad,kd,ks,kt,kl,ir}*s,*best,sph[]={0.,6.,.5,1.,1.,1.,.9,
.05,.2,.85,0.,1.7,-1.,8.,-.5,1.,.5,.2,1.,.7,.3,0.,.05,1.2,1.,8.,-.5,.1,.8,.8,
1.,.3,.7,0.,0.,1.2,3.,-6.,15.,1.,.8,1.,7.,0.,0.,0.,.6,1.5,-3.,-3.,12.,.8,1.,
1.,5.,0.,0.,0.,.5,1.5,};yx;double u,b,tmin,sqrt(),tan();double vdot(A,B)vec A
,B;{return A.x*B.x+A.y*B.y+A.z*B.z;}vec vcomb(a,A,B)double a;vec A,B;{B.x+=a*
A.x;B.y+=a*A.y;B.z+=a*A.z;return B;}vec vunit(A)vec A;{return vcomb(1./sqrt(
vdot(A,A)),A,black);}struct sphere*intersect(P,D)vec P,D;{best=0;tmin=1e30;s=
sph+5;while(s-->sph)b=vdot(D,U=vcomb(-1.,P,s->cen)),u=b*b-vdot(U,U)+s->rad*s
->rad,u=u>0?sqrt(u):1e31,u=b-u>1e-7?b-u:b+u,tmin=u>=1e-7&&u<tmin?best=s,u:
tmin;return best;}vec trace(level,P,D)vec P,D;{double d,eta,e;vec N,color;
struct sphere*s,*l;if(!level--)return black;if(s=intersect(P,D));else return
amb;color=amb;eta=s->ir;d= -vdot(D,N=vunit(vcomb(-1.,P=vcomb(tmin,D,P),s->cen
)));if(d<0)N=vcomb(-1.,N,black),eta=1/eta,d= -d;l=sph+5;while(l-->sph)if((e=l
->kl*vdot(N,U=vunit(vcomb(-1.,P,l->cen))))>0&&intersect(P,U)==l)color=vcomb(e
,l->color,color);U=s->color;color.x*=U.x;color.y*=U.y;color.z*=U.z;e=1-eta*
eta*(1-d*d);return vcomb(s->kt,e>0?trace(level,P,vcomb(eta,D,vcomb(eta*d-sqrt
(e),N,black))):black,vcomb(s->ks,trace(level,P,vcomb(2*d,N,D)),vcomb(s->kd,
color,vcomb(s->kl,U,black))));}main(){printf("%d %d\n",32,32);while(yx<32*32)
U.x=yx%32-32/2,U.z=32/2-yx++/32,U.y=32/2/tan(25/114.5915590261),U=vcomb(255.,
trace(3,black,vunit(U)),black),printf("%.0f %.0f %.0f\n",U);}/*minray!*/

0087デフォルトの名無しさんNGNG
>>86
コンパイル通らないよ
0088デフォルトの名無しさんNGNG
>>86
なんですかこの読みにくいソースは・・・
0089デフォルトの名無しさんNGNG
>>85
理解しました。ありがとうございます。
0090デフォルトの名無しさんNGNG
>>87
Linux+gccで通ったぞ。多少警告はでたが。
0091デフォルトの名無しさんNGNG
そのままじゃ通らないだろ
2行めirの後に;、コンパイル時に-lm。
しかし問題はこれが何なのかなのだが・・・
0092デフォルトの名無しさんNGNG
irの後にセミコロンってネタですか?
0093デフォルトの名無しさんNGNG
おいおい
0094デフォルトの名無しさんNGNG
91 名前:デフォルトの名無しさん :03/05/11 11:36
     2行めirの後に;、コンパイル時に-lm。
91 名前:デフォルトの名無しさん :03/05/11 11:36
     2行めirの後に;、コンパイル時に-lm。
91 名前:デフォルトの名無しさん :03/05/11 11:36
     2行めirの後に;、コンパイル時に-lm。
91 名前:デフォルトの名無しさん :03/05/11 11:36
     2行めirの後に;、コンパイル時に-lm。



   >>91  =  犬厨  =  知ったか君




うわっ、このスレ犬臭え
0095デフォルトの名無しさんNGNG
なんでそこで犬(linux?)が出てくるのかわからん。
0096デフォルトの名無しさんNGNG
linux厨のことを犬厨って言うのか?
0097デフォルトの名無しさんNGNG
漏れも犬厨は嫌いなんだけど、
みんなは犬厨のどんなところが嫌い?
0098デフォルトの名無しさんNGNG
技術もないくせに偉そうなところ
0099デフォルトの名無しさんNGNG
>>92-94
自分でやってみもしないアフォばっかりか...

test.c:1: warning: no semicolon at end of struct or union
test.c:2: warning: no semicolon at end of struct or union
test.c:2: warning: missing braces around initializer
test.c:2: warning: (near initialization for `sph[0]')
test.c:5: warning: type defaults to `int' in declaration of `yx'
test.c:5: warning: data definition has no type or storage class
test.c: In function `trace':
test.c:12: warning: suggest parentheses around assignment used as truth value
test.c: At top level:
test.c:19: warning: return-type defaults to `int'
test.c: In function `main':
test.c:19: warning: implicit declaration of function `printf'
test.c:21: warning: double format, vec arg (arg 2)
test.c:21: warning: too few arguments for format
test.c:21: warning: control reaches end of non-void function
cc -lm -o t test.o

つーか、普通に考えりゃわかるだろうに。
0100デフォルトの名無しさんNGNG
>>99
やってみないとわからんのか。
0101デフォルトの名無しさんNGNG
漏れは見なくてもわかる
0102デフォルトの名無しさんNGNG
俺はこのスレ読む前から解ってた。
0103デフォルトの名無しさんNGNG
>>100
プッ、やることもできないんだろ。
まあ、見るだけでわかるんなら >>92-94 に反論の一つでもしてると思うけどな。

俺は、あんなソースは見たくもないから。
0104ヘルバ ◆THYOQYTAXA NGNG
fgetsよりfgetcの方が好き。
fgetsとfgetcはほんと間違いやすいから気をつけよう。
ややこしいよね。
0105デフォルトの名無しさんNGNG
>>104
激しくぜんぜん。
0106デフォルトの名無しさんNGNG
>>104
うんうん、君には難しいんだろうね。
よくわかったから、満足したらもう来ないでね。
0107デフォルトの名無しさんNGNG
引数も違うのに間違えるんかい
0108デフォルトの名無しさんNGNG
>の方が好き
好みの問題なんだろうか
0109デフォルトの名無しさんNGNG
もれはfgetcよりもfputcの方が好きだな
0110デフォルトの名無しさんNGNG
>>109
>>107
0111110NGNG
スマン 間違える間違えないの問題じゃなかった。
0112デフォルトの名無しさんNGNG
>>105-106
別に叩くところではないと思うが。
煽り目的か、お前。
0113デフォルトの名無しさんNGNG
>>99
警告しか出ていないように見えるのは俺だけか?
gcc2.95.3だと-ansi -pedanticつけないとエラーはでないな。つけると5行目でエラー
> ANSI C forbids data definition with no type or storage class

しかし、2行目に;が必要ってどういうことだよ。
0114113NGNG
なんか勘違いしていた・・・スマソ irのすぐ後にってことか。
0115デフォルトの名無しさんNGNG
Part56って凄いね。うんうん。すごいすごい。
すごすぎだよあんた。
五万六千レス。
0116デフォルトの名無しさんNGNG
初心者板には5000を越えたスレがあるらしいぜ
0117デフォルトの名無しさんNGNG
それだけバカとバカに教えるバカが豊富、と
0118デフォルトの名無しさんNGNG
おそろしくへたくそなソースだが、レイトレのつもりか?
0119デフォルトの名無しさんNGNG
新しいトイレ?
0120118NGNG
なるほど、これか。
ttp://www-2.cs.cmu.edu/~ph/src/minray/minray.card.c
0121デフォルトの名無しさんNGNG
ttp://www.acm.org/pubs/tog/GraphicsGems/gemsiv/minray/README
名刺大レイトレーサー
0122デフォルトの名無しさんNGNG
いつからここは7行スレに?
0123デフォルトの名無しさんNGNG
>>112
自分の好みを披露するスレでもないからな。
0124デフォルトの名無しさんNGNG
C初心者です。
今後C++を覚えたいのですが、なんかC#という新しい言語もあるそうなんですが
C#ってなんでしょうか?C++を飛び越してC#を学んだ方が得策なのでしょうか?
教えてください。
0125デフォルトの名無しさんNGNG
>>124
お好きなように。
0126デフォルトの名無しさんNGNG
>>124
> C#ってなんでしょうか?

http://www.asia.microsoft.com/japan/msdn/vstudio/techinfo/articles/upgrade/Csharpintro.asp

> C++を飛び越してC#を学んだ方が得策なのでしょうか?

今のところ誰にもわからない。
5年ぐらいしたら結果が出ているかもしれない。

それ以前に、その全然C言語に関係ない質問がこのスレにふさわしいかよく考えた方がいい。
0127デフォルトの名無しさんNGNG
色々悪口を言われるプリプロセッサだけど、俺は大好き。
0128デフォルトの名無しさんNGNG
俺は大嫌い。
0129デフォルトの名無しさんNGNG
俺は性格は好き。
0130デフォルトの名無しさんNGNG
NULLとナル文字の違いを教えてください。
0131デフォルトの名無しさんNGNG
NULLはポインタ ナル文字は文字であり整数型
0132デフォルトの名無しさんNGNG
ナル文字と0の違いは?'\0'でじゃなく0でいいのでは?
0133デフォルトの名無しさんNGNG
ナコルルとリムルルの違いを教えてください。
0134デフォルトの名無しさんNGNG
>>132
読みやすくするため
0135134NGNG
あと"aaa\0bbbb"とかやったりな 
0136134NGNG
やらないか
0137デフォルトの名無しさんNGNG
>>130
ヌルポインタ
あるオブジェクトの位置を示す、どの正常なポインタとも
等しくならない事が保証されているポインタ。
ソース上では 0 というリテラルで得る事ができるが、
NULL というマクロを使った方が読みやすい。
しかし、実際は 0 以外に ((void*)0) と定義されていてもよいとされている
(C++ では 0 と定義される)。

ヌルキャラクタ
あらゆる文字とも等しくならないことが保証されている文字。
文字列を操作する標準関数において文字列の終端を表す。
ソース上では '\0' というリテラルで得る事ができる。
リテラル文字列(" " で囲んで得られる文字列)の終端には
ヌルキャラクタが自動的に付け加えられる。


ヌルポインタはポインタであり、ヌルキャラクタは文字である。
ヌルポインタは文字ではなく、ヌルキャラクタはポインタではない。

以上。
0138デフォルトの名無しさんNGNG
要するに0
0139 NGNG
>>138
だけど、ヌルポインタはデータとして 0 であるという保証は無い。
ソース上は 0 だけどね。
0140デフォルトの名無しさんNGNG
オブジェクト指向ってなんですか?
0141デフォルトの名無しさんNGNG
>>140
スレ違い。
というか、オブジェクト指向で検索汁。
0142デフォルトの名無しさんNGNG
>>140
実はオレも知らないんだ。
検索してもよくわからなかった。

>>141の言うように検索してバカなオレにわかりやすく教えてくれ。
0143デフォルトの名無しさんNGNG
>>136
いや、やったことがある。こっそりバイナリにメッセージ仕込んだりしてた(w
0144デフォルトの名無しさんNGNG
>>139
*(NULL)が0である保障がないことは
なんの関係もないぞ?
何が言いたいんだ?
0145139NGNG
>>144
void *p = NULL;
printf("%d\n", (int)p);
で 0 が表示される保証が無い、ということ。
0146デフォルトの名無しさんNGNG
本気で言ってる?
釣り?
0147 139NGNG
もっと現実的な状況で言うなら、

int **p; /* int* 型の動的確保配列 */
p = (int**)calloc(size, sizeof (int*));

という方法では NULL で初期化されない、
という環境があって構わないということだ。
malloc の後に for を使って NULL で初期化しなくてはならない。

しかも厳密に言うなら、
NULL を実現するための現実の値が
char* と int* などで異なっていても構わない。
そのため、この初期化処理を関数化するには型ごとに関数を作るしかない。
int** を void** で受けようとしてもエラーか警告を受けるであろう。

C++ ではこのような状況は当たり前のように存在していて、
多重継承をしているクラスではそもそもポインタのサイズが異なるために
int* と iostream* とでは NULL の値は異なる、
という実装になっている処理系が殆どである。
0148デフォルトの名無しさんNGNG
>>144
ガッ
0149デフォルトの名無しさんNGNG
>>146
139の言うことか? 釣りでもなんでもなく正しいよ。
Cの規格では、0が出てきたときそれがポインタを表す文脈の時は
NULLポインタに読み替えられることが保障されているだけで、
NULLポインタがバイナリ0である保障は全くないよ。つまりえーと、

union {
 void *p;
 int i; /* sizeof(int) == sizeof(void *)を仮定 */
} hoge;

hoge.p = 0;
printf("%d", hoge.i);

とやったときに「0」という出力がえられることは規格では保障されてない。

もっとも殆どのコンパイラの実装ではバイナリ0だろうけど、
それは規格には関係ない。
0150デフォルトの名無しさんNGNG
フフッ、漏れは騙されないよ。
0151デフォルトの名無しさんNGNG
もっとも規格ではNULLポインタがバイナリ0である保障はないけど、
現実のコンパイラの実装ではバイナリ0だから
実際のプログラムには関係ない。
0152デフォルトの名無しさんNGNG
ASCIIコードが8ビット(1バイト)とか言ってるヤシよ!
アスキーコードは7ビットだろうがよぅ!
0153139NGNG
まぁ、とりあえずここを読めってこった。
http://www.catnet.ne.jp/kouno/c_faq/c5.html
0154デフォルトの名無しさんNGNG
>>149
共用体のvoid*に書き込んだ値をintで読んだりしたら結果は処理系依存。
もっとも期待通りに動作しない処理系なんて聞いたことないが…
0155デフォルトの名無しさんNGNG
>>152
そういう言い方をするとちょっと違うような。
0156デフォルトの名無しさんNGNG
>>154
MS-DOS時代のMS-Cにはfarポインタと言うものがありましてな、
16bitのセグメントと16bitのオフセットと言う構造になってたので
intとの共用体を作ることもできなければセグメントの値が
0になることもなかったものなのですよ。
#温故知新。
0157デフォルトの名無しさんNGNG
>>156
なにが言いたいの
0158デフォルトの名無しさんNGNG
>>156
共用体自体は作れたと思うし、(void far *)0はセグメントも0だったのでは。
0159149NGNG
>>154
もちろんわかっててやってる。
つうかコンパイラの実装(NULLポインタのバイナリ表現)を見る
ことが目的なので処理系依存でかまわない(w

とはいえあの例で0と出ない例をおれは知らぬ。
DOSだって>>156が言うとおりfarポインタのNULLは0:0(バイナリゼロ)だし。
# 共用体はlongでとってね。
誰か0以外のが出る実装を教えてくれんか(w

Cの規格にある制限の理由には大きく2種類あって
・現実の機械にそういう物があるから(例: 名前は6文字以下であること…C89の有名無実な制限)
・実装者に選択の余地を与えること(例: intのサイズ)
んで、NULLがバイナリ0でないというのはどっちの理由なんだろうな。
0160デフォルトの名無しさんNGNG
そういう機械があったという伝説は残っている。
0161デフォルトの名無しさんNGNG
>>159
> 誰か0以外のが出る実装を教えてくれんか(w

CFAQの5.17に書いてあるよ。
0162よNGNG
逝ってよし
0163デフォルトの名無しさんNGNG
プログラム内でよく参照する文字列のリストをグローバル変数の配列にしているんですがもっと良い方法はあるのでしょうか。
♯defineとかを使うという話を聞いたような気もするのですが、[]内が式になると上手くいかないようなきがしますが…。
0164デフォルトの名無しさんNGNG
>>163
enumかな?
0165デフォルトの名無しさんNGNG
>>163
その文字列がキーワードの類なら
static char const *const sKeyWords[] = {"foo", "bar", "baz",};
が無難ではないかと。
マクロにするなら、
#define KEY_WORD(x) ((x) == 0 ? "foo" : (x) == 1 ? "bar" : "baz")
などとできなくもないが煩わしい。

もしその文字列がエラーメッセージのようなものなら、
テキストファイルやリソースの形で実装することをお勧めする。
0166デフォルトの名無しさんNGNG
一番目のconstはcharの前に書けよ気持ち悪い
0167デフォルトの名無しさんNGNG
>>163
どういう目的でそういう方法をとっているのですか?

例えばコンパイラの中には、ソース中に同じ文字列が出てきた場合、
一つにしてくれる機能を持つものもあります。
メモリの節約をしたいというのであれば、この機能を使えばよいですが、
文字列の内容に変更が入るかもしれないので共有しているのであれば、
この機能を使うのはよくないです。
0168デフォルトの名無しさんNGNG
>>167
文字列リテラルを書き換えてはいけないよ
読み出し専用(のはず)だからこそ、そういう機能を適用するわけだし。
0169167NGNG
>>168
動的に書き換えるという話ではなく、
ソースの一箇所直せば事足りるようにするというような
静的なものを言ったつもりでした。
0170デフォルトの名無しさんNGNG
もうちょっとプログラミング用語を勉強したほうがいいぞ
コミュニケーションがうまくできていない
0171デフォルトの名無しさんNGNG
>>170
誰が?
0172デフォルトの名無しさんNGNG
>>170
もうちょっと日本語を勉強したほうがいいぞ、
コミュニケイションが(略
0173デフォルトの名無しさんNGNG
日本語難しい
0174デフォルトの名無しさんNGNG
>>167の言いたいことがわからん。
俺も>>170の言う通りか?
0175デフォルトの名無しさんNGNG
どっちかというと作文能力の問題だな
0176163NGNG
>>164-168の皆様、お答えありがとうございました。
例えば{"読売ジャイアンツ","阪神タイガース",…,"福岡ダイエーホークス"}のような
今後拡張する必要の無い単語リストを格納するつもりでした。
ただ、多くの関数で参照する都合上、まとめた方が便利だったもので。
とりあえずstatic〜の方法でやってみようと思います。
0177デフォルトの名無しさんNGNG
多くの関数で・・・ならstaticをつけちゃまずいのでは。
多くの関数ってのがひとつのファイルに入っているのならかまわないけど。
0178デフォルトの名無しさんNGNG
>>176
static の方法を使うと、そのヘッダファイルを
インクルードしているソースファイル全てで
その変数が定義されてしまうので、不効率。
ただの一定数なら最適化でなんとかなることが殆どだと思うけど、
配列とかポインタとかはどうにもならんと思う。
添字が定数ならなんとかなるかもしれないけどね。

ところで、配列の場合は初期化を考慮した EXTERN マクロの技巧
#ifdef 何か
#define EXTERN_INIT(var, init) var = init;
#else
#define EXTERN_INIT(var, init) extern var;
#endif
が上手く使えないけど、みんなどうしてる?
0179デフォルトの名無しさんNGNG
>>178
>EXTERN マクロの技巧
そんなもん使うな。ソースが激しく見づらくなる。
#目視という意味だけでなく、解析ツールが使えなくなる。
外部変数を幾つも宣言したいならせめて構造体にまとめろ。
0180デフォルトの名無しさんNGNG
論理的に関連性のない変数を無理に構造体に纏める方が激しく読みづらくなりますが何か?

マクロが読みづらいならプリプロセッサだけを通したソースでも読めや。
0181デフォルトの名無しさんNGNG
>>178
値を変更するたびにインクルードするソース全部コンパイルし直すことになっ
て、分離するメリットを損なうので、しない。
0182デフォルトの名無しさんNGNG
mainのなかでint **型のポインタのポインタ(可変長の多次元配列を取るため)pを宣言して
それをfunc_aという関数に渡してmallocで多次元配列を確保して
さらにpをfunc_bに渡してその中で処理をしてpに値を入れました。
それでこれをmainで参照しようと思ったのですが、うまくいきません。
func_a、func_b内でなら参照できたのですが。
mainでも参照できる方法はないでしょうか。
0183182NGNG
グローバル変数は使わない方向でおながいします
0184デフォルトの名無しさんNGNG
int **pを渡すのが間違っている。
int **pにint **型のfunc_aの戻り値を代入する。

どうしても渡したいのなら、func_aの引数をint ***にして、func_a(&p)として呼ぶ。
0185182NGNG
>>184
ありが�d
解決しました。
0186184NGNG
(´-`).。oO(よくこんな説明で分かったな・・・)
0187182NGNG
>>186
(´-`).。oO(多分あと一押しの部分を押してくれたんだと思う・・・)
0188デフォルトの名無しさんNGNG
なんだ自作自演か
0189デフォルトの名無しさんNGNG
そして破滅へ
0190デフォルトの名無しさんNGNG
Cにプロトタイプ宣言が導入される前はどうやって関数ポインタを初期化していたんですか?
初期化よりも上で関数を定義ですか? でもそうすると他のファイルで定義したものは使えませんよね?
0191デフォルトの名無しさんNGNG
どんな関数ポインタでも

(*pfunc)(arg1, arg2, arg3)
してもいいし
(*pfunc)(arg1, arg2)
してもいいし
(*pfunc)()
してもよかった。

関数ポインタの指す先が
int func(arg1) /*一個だけよ*/

だった場合は、余計な引数は無視され、
足りない引数にはゴミが渡された。

スタック渡しなんで、言われた順に単に
後ろからスタックにつんでただけ。
0192デフォルトの名無しさんNGNG
戻り値の型も、後方参照できなければ暗黙的にint形を返すことになっている。

だから double atof(char *)みたいなのをプロトタイプ宣言せずに呼ぶと
戻り値をうまく受け取れなかったりした。

というわけで、プロトタイプされていない関数はすべて、
「intを返す、引数の数不明な関数」
であり、
「int (*pfunc)()」
のような関数ポインタで扱うことができた。
0193デフォルトの名無しさんNGNG
printf()系以外めったに使わない可変長引数のためだけに後ろから
畑中葉子
0194190NGNG
あ、すみません。初期化というのはint (*p)(int,double)=func;みたいな形のことです。
この場合、コンパイラがfuncという名前を知らないとエラーになりますよね?
で、宣言するか上で定義しないと分からないから・・・
0195デフォルトの名無しさんNGNG
>>194
だからそういう場合は
int func();
0196190NGNG
>>195
あ、当時のコンパイラならエラーにならなかったんですか。
0197デフォルトの名無しさんNGNG
foo()
{
extern int func(); /* funcって名前の関数がどこかにあるよ */
int (*p)(int,double)=func; /* 関数ポインタに代入 */
}
0198デフォルトの名無しさんNGNG
>>196
今だってならんわ。
0199デフォルトの名無しさんNGNG
>>197
> extern int func(); /* funcって名前の関数がどこかにあるよ */

それはプロトタイプ宣言では。
0200190NGNG
>>198
int main()
{
int (*p)(int)=func;
return 0;
}

gcc test.c

test.c: In function `main':
test.c:3: `func' undeclared (first use in this function)
test.c:3: (Each undeclared identifier is reported only once
test.c:3: for each function it appears in.)

エラーになりましたよ?
0201デフォルトの名無しさんNGNG
わざと読み飛ばしてるのか?

int main()
{
  int func();
  int (*pXint) = func;
}

>>195 も >>197 もこういってるのに。
0202190NGNG
>>201
だから宣言しないで・・・
0203190NGNG
もしかして私がプロトタイプ宣言というものを勘違いしている?^^;
0204デフォルトの名無しさんNGNG
>>203
つーかそんなことを知る必要があるのか? そんなこと知っても無意味だろ。
0205デフォルトの名無しさんNGNG
変数の名前(ラベル名?)を表示することはできますか?
具体的には
 int Right;
 int Left;
 printf("Variable1 Name:%? \n",Right);
 printf("Variable2 Name:%? \n",Left);
上記を実行すると標準出力に
 Right
 Left
と表示される。見たいなことをやりたいです。
0206デフォルトの名無しさんNGNG
>>205
無理
0207デフォルトの名無しさんNGNG
 int Right;
 int Left;
 printf("Variable1 Name:Right \n");
 printf("Variable2 Name:Left \n");
0208206NGNG
そういうことができるとして、どういうことに利用したいの?
他の方法で実現できるかも。
0209デフォルトの名無しさんNGNG
コンパイルした後も変数の名前って残るの?

例えば int a; より int ab;ってやったほうがexeが大きくなるとか
0210デフォルトの名無しさんNGNG
>>209
リンク時に必要な名前以外は消える・・・・と思う。
0211デフォルトの名無しさんNGNG
>>203
もう一回勉強し直してきな。
0212デフォルトの名無しさんNGNG
>>209
デバッグ情報には。
0213205NGNG
>>206
そうでしたか、できないものは仕方ないですね。

特に目的は無く、
 きっと変数名を表示することはできるだろう。
 → 調べたけどどこにも載っていない。
 → あぁ気になって眠れない。
という流れで質問させていただきました。
0214デフォルトの名無しさんNGNG
とりあえず俺が>>205に言いたいことは
printf("Variable1 Name:%s \n","Right");
じゃ
Right
とは出力されないってことだな
0215デフォルトの名無しさんNGNG
マクロ使えばいいじゃん#とか
0216デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0217デフォルトの名無しさんNGNG
文字列連結演算子 ##
0218デフォルトの名無しさんNGNG

#define P(x) printf(#x)
0219デフォルトの名無しさんNGNG
http://www.cmagazine.jp/src/kinjite/c/volume.html
> いわゆる「入れ子」が2重3重になるというケースがあります。

2重が駄目なら入れ子自体が駄目ということになるが。
0220デフォルトの名無しさんNGNG
>>219
入れ子が関数が長くなる原因になるといっているだけで、
駄目とは言ってないような。

そんなことよりも、
>フローシートなどを用いて処理の再検討をする必要があります。
これはやめてくれ。
0221あふぉNGNG
解の公式のプログラムでできるだけ桁落ちしないようにするにはどうしたらいいんですか?
0222デフォルトの名無しさんNGNG
>>219
一通り読んだけど、こいつ駄目だわ。
「こういう考え方の奴もいる」程度に読むように。
0223デフォルトの名無しさんNGNG
>>221
ケースバイケース。
場合によっては、公式をそのままプログラムに移すのではなく、
予め桁落ちしないように変形するなどの工夫をするといい。
特に、収束の悪い級数展開には要注意。
0224デフォルトの名無しさんNGNG
>>219
メンバーにmをつけるという命名規則が分からない・・・
mついていなくてもa.bとかa->bってかけばbはメンバーだってわかるし、メンバーを裸で書くことはできないはずだし・・・
0225224NGNG
C++の場合かな? メンバ関数内での使用とか。
0226デフォルトの名無しさんNGNG
それより自動変数につけるtheとか「引数は参照のみは「in」」ってのが・・・
参照のみならconstつけろよ。Cの標準関数もそうしている。
0227デフォルトの名無しさんNGNG
違います
0228デフォルトの名無しさんNGNG
>>220
つーかフローシートって何だ。
風呂敷?
0229222=220NGNG
>>228
私に聞くな。
フローチャートの間違いだと思うのだが、そうだとしても阿呆だと思うがね。
0230デフォルトの名無しさんNGNG
>>229
結論に禿撞。
0231デフォルトの名無しさんNGNG
free()とかfclose()しないでexec()したらマズイですか?
0232デフォルトの名無しさんNGNG
>>231
http://pc2.2ch.net/test/read.cgi/tech/992057422/
0233デフォルトの名無しさんNGNG
>>231
呼び出したプログラムが終了して戻ってきて、
mainから抜ける時まで確保されっぱなしだけど、気にしないなら問題はないよ。
0234デフォルトの名無しさんNGNG
>http://www.cmagazine.jp/src/kinjite/cpp/scale.html#index2
メンバ関数が多いと使いたいメンバを探すのに苦労する
→ 継承クラスを作って分割させる
と読める。どんなもんだろう。
0235デフォルトの名無しさんNGNG
>>234
単純に「クラスを分割する」でいいよな。
なんで継承なんだろ。
0236デフォルトの名無しさんNGNG
>231
free()については、無問題
fclose()については、書き込まれていないバッファの内容がうしなわれるし、ファイルがひらきっぱなしになる。
0237デフォルトの名無しさんNGNG
struct a{
struct aa;
struct bb;
char cc;
}hoge;

struct b{
struct aa;
struct bb;
char cc;
}piyo;
上記2つの構造体の中身を"char cc"を除いて丸ごとコピーしたいのですが
memcpy(piyo, hoge, (aa + bbのサイズ));
↑でできるでしょうか??
ご指導おねがいしまふ。
0238デフォルトの名無しさんNGNG
その前にエラーでは・・・・
0239238NGNG
エラーにならねー(T_T)
struct aa; はエラーにならないのか。
0240デフォルトの名無しさんNGNG
>>237
struct aa と struct bb のペアに意味があるなら、
別の構造体としてまとめるべし。
あとは構造体の代入でいける。

ちなみに、上の memcpy での代入はできない。
何とかする方法はあるが、
余計な事を教えるとやりそうで恐いので教えない。
0241238NGNG
なるほど・・・struct aaとstruct bbはないものと判断されるのか。
じゃあccを除いてコピーってのは・・・
0242237NGNG
正確には
struct a{
   struct aa a;
   struct bb b;
    char cc;
}hoge;

struct b{
struct aa ba;
struct bb bb;
char cc;
}piyo;
って感じです。
すんません。
0243デフォルトの名無しさんNGNG
>>242
hoge.a=piyo.ba;
hoge.b=piyo.bb;

と二行に書くのがいやなわけ?
0244237NGNG
>>240サソ
ありがとうございます
hoge = piyo;
だとchar ccも入ってしまいますよね、、、

で、どうするか。。。
ホカに構造体を用意して、そのエリアに
いれちゃうって感じですか?
0245デフォルトの名無しさんNGNG
出力結果が
一つ目==>○ーーーーーーscanf()で
二つ目==>□ーーーーーーscanf()で
○+□=△ーーーーーーーー△は2進数で表示
を作りたいのですがサッパリです。
#include <stdio.h>
int main()
{
0246237NGNG
>>243サソ
それでできるんすかーーーーー!!???
まじっすかーーーーー

革新的ダァーーーーー!!!!
0247デフォルトの名無しさんNGNG
だから、その2つの構造体を
まとめて扱う事に大きな意味があるのなら、
struct ab {
 struct aa a;
 struct bb b;
};
という構造体を作って
struct a {
 struct ab a;
 char cc;
} hoge;

struct b {
 struct ab b;
 char cc;
} piyo;

piyo.b = hoge.a;
とするか、1つずつ代入する関数でも作る。
そうでないなら、1つずつ代入する。

構造体の一部を memcpy でコピーするのは禁じ手。
memcpy するコードを書いたのを忘れると、
あとから構造体に要素を追加した時に
アドレスがずれてバグになる可能性がある。
0248デフォルトの名無しさんNGNG
型の違うもの同士をmemcpyしたくないなぁ。
例えメンバーが同じでも。
0249デフォルトの名無しさんNGNG
>>245
先ずは 10 進数で表示するプログラムを作ってみ。
0250245NGNG
#include <stdio.h>
int main(void)
{
int a,b;
printf("1つ目\n");
scanf("%d",&a);
printf("2つ目\n");
scanf("%d",&b);
printf("\n\t\t演算結果\n");
printf("\t\t%d + %d=%d\n",a,b,a+b);
printf("\t\t%d - %d=%d\n",a,b,a-b);
printf("\t\t%d * %d=%d\n",a,b,a*b);
if( b==0 ){
printf("\t\t%d / %d0では割れません。\n\t\t%d %% %d0では割れません\n",a,b,a,b);
}
else{
printf("\t\t%d / %d=%d\n",a,b,a/b);
printf("\t\t%d %% %d=%d\n",a,b,a%b);
}
return 0;
}
0251デフォルトの名無しさんNGNG
きちんと0チェックしている・・・自分で考えたのなら偉い。
0252245NGNG
0でやったらエラーでるので出なくしました。
0253デフォルトの名無しさんNGNG
>>250
あとは2進数を表示する関数を作れば終わりやね。
まぁ、初心者なら一旦表示する文字列を作ってから
それを後から表示すればいいね。

再帰関数を使う方法もあるけどね。
0254デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c14.htmlの「適切に選んだepsilon」というのは
float.hで定義されているDBL_EPSILONやFLT_EPSILONのことですか?
0255bloomNGNG
http://homepage.mac.com/ayaya16/
0256245NGNG
d=nisinsuu(a,b);

int nisinsuu(int x,int y)
{
.
.
.
}
って感じでですか?
0257デフォルトの名無しさんNGNG
>>256
int型の引数はひとつでいい。
0258デフォルトの名無しさんNGNG
>>254
自分で適当に決める。
この値が精度に相当する。

>>256
nisinsuu(a + b);
とかいう風に、計算部分までは関数には持ち込まない。
0259デフォルトの名無しさんNGNG
>>258
じゃあDBL_EPSILON使います。
ありがとうございました。
0260256NGNG
スマソ。ギブアップ
0261デフォルトの名無しさんNGNG
データの先頭アドレスを指すポインタ*pがあります。
このデータの先頭から3〜4バイト目に値を入れたいです。
値はint hoge = 42;など
こういった際には
p +=3;
memcpy(p, hoge, 2);
って感じなのでしょうか?
memcpyはcharはダメ・・・?
どうすりゃいいんでしょうか?
厨房ですみません、ご教授願います。
0262デフォルトの名無しさんNGNG
>>260
第 n ビットだけ 1 になった値は
どうやって得ればいいかな?
(ただし、一番下のビットは第 0 ビットとする)
0263デフォルトの名無しさんNGNG
--------●○●別れさせ屋●復讐代行業務●○●----------

●騙された・裏切られた・弄ばれた・逃げられた・捨てられた・
相手に誠意が無い・異性問題・家庭内暴力・不倫疑惑解明・人間関係・金銭トラブル★

●  http://www.blacklist.jp/i

別離工作・情報収集・トラブル対策・ボディガ―ド・等々!
●真剣にお悩みの方、安心してご相談下さい。解決へ導きます★
□■各種データ・電話番号調査・住民票・戸籍謄本など調査■□

●  http://www.blacklist.jp/i  ●別れさせ屋・特殊工作・調査全般
●  http://www.blacklist.jp/   ●復讐代行・人生相談・駆け込み寺
--------------------------
リンク⇒ http://315.teacup.com/asocokit/bbs 凄い・必見!!!
0264デフォルトの名無しさんNGNG
>>261
何をしたいの?


という質問がよくあるが、これは
やってることが危険、
奇妙なコードで意図が汲めない、または
一応動くがバグの温床になるという指摘である。
0265デフォルトの名無しさんNGNG
char c[4];
c[0] = 0;
c[1] = c[2] = c[3] = 1;
int i = (int) c[0];
としても i = 0; ですよね。
0266デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
int a,b,c,d,n;
printf("===============================================================================\n");
printf(" いまから四則演算をする数値2つ入れなさい\n");
printf("===============================================================================\n");
printf("1つ目の数値を入力してください\n");
scanf("%d",&a);
printf("2つ目の数値を入力してください\n");
scanf("%d",&b);
printf("\n\t\t実行結果の表示です\n");
n=0;
for(c=a+b;c>0;c/=2){
d=c%2;
printf("%d",d);

}
printf("\n左から読んでくれ");
return 0;
}
分かりません。これが限界です
0267デフォルトの名無しさんNGNG
ある乱数を発生させてそれぞれに条件式をつけるにはどうすればいいですか?
例
乱数で1から100までの数字を発生させて
1〜40ならA
41〜50ならB
50〜99ならC
100ならD
といったような具合に場合分けしたいときって どうすればいいんですかね?
1<X<40
こういった条件式をプログラム上で行いたいんだけど
良いほうが思いつかないもので

初心者的な質問ですんません
C言語限定ってわけではないけどアルゴリズムが知りたいので書きました
良かったら 教えてください
0268デフォルトの名無しさんNGNG
>>265
はい。
c[0] は 0 なので、i は 0 です。

int i = *(int*)&c[0];
とすると変わってきます。
結果は CPU のバイトオーダに依存します。

>>266
どこまで習ったの?
1. 関数
2. 配列、文字列
3. ビット演算
4. 再帰関数
0269デフォルトの名無しさんNGNG
>>267
アルゴリズムつーか、ifでやるのはいかんの?
0270デフォルトの名無しさんNGNG
今は何の時期だ???ひどいもんだ
0271デフォルトの名無しさんNGNG
>>267
1)
int x = rand() % 100;
enum ABCD abcd =
 (x < 40) ? A :
 (x < 50) ? B :
 (x < 99) ? C : D;

2)
int x = rand() % 100;
if(x < 40) { ... }
else if(x < 50) { ... }
else if(x < 99) { ... }
else { ... }
0272261NGNG
>>264サソ
ご指摘ありがとうございます。

ほんと厨なもんで何が危険なのか
何が奇妙なのかもわかりません、、、

ご教授おんがいします、、、
0273デフォルトの名無しさんNGNG
>267
xが1〜40 → xが1以上 かつ xが40以下 → 1<= x && x <= 40
0274デフォルトの名無しさんNGNG
×良いほうが思いつかないもので
○何一つ思いつかないので
0275デフォルトの名無しさんNGNG
専門ではまだ演算子なんてものやってますが高校時代に関数、配列と文字列、シフト演算をかじる
ぐらいまでやってます。忘れかけてますが、、、、
0276デフォルトの名無しさんNGNG
>>272
その前に何がしたくてそういうことをしているのかが分からない。
大方、代替案を出して終わる事になりそうだが、
何がしたいのか分からないので代替案が出せない。
0277267NGNG

>271
なるほど 2)の考え方でいいんですね
ありがとうございます
0278デフォルトの名無しさんNGNG
>>275
関数も配列もやってないのにこういう問題が出たの?

>>266 では 1 桁ずつ直接表示してたけど、
その値を配列に保存しておいて、
それをちゃんとした順序で表示すれば
逆から読ませないで済む。
0279261NGNG
>>276サソ
関数の引数でわたされるものが
データのカタマリの先頭アドレスなんです。

そしてそのデータの3〜4バイト目を
書き換えたいのです。

厨で上手く説明できずすみません、、、
0280デフォルトの名無しさんNGNG
>>266
早く10進数で表示させれた人は暇だろうからチャレンジしてみろと言われた。
クラスで2,3人できた奴がいたのでビックリ。自信なくなる鬱。H○L生です
0281デフォルトの名無しさんNGNG
>>280
なるほど。そういうことか。

他にもいろいろやる方法はある。
上の桁からとるように工夫するとか。

とりあえず、表示部分は関数にして分離しておくと、
a + b, a - b, a * b, a / b, a % b で
同じ処理を簡単に使い回せるし、
プログラムも読みやすくなる。
0282デフォルトの名無しさんNGNG
>261
まずは渡されるデータ構造を知ることが先決。
構造さえ知ってれば構造体メンバへの値の代入で終り。
0283261NGNG
>>282サソ
ありがとんございます。

可変長のデータなので
構造体って感じじゃないみたいなのです、、、
0284デフォルトの名無しさんNGNG
>>283
何かよー分からんが、memcpy なんか使わんでも

typedef short int int16;
void foo(char* p, int16 hoge)
{
 *(int16*)&p[3] = hoge;
}

でええがな。
0285261NGNG
>>284サソ
アリガトンゴザイマスーーーー

これはキャストして代入って感じですか??
0286山崎渉NGNG
(^^)
http://jbbs.shitaraba.com/computer/6328/


0287動画直リンNGNG
http://homepage.mac.com/hitomi18/
0288デフォルトの名無しさんNGNG
>>285
p[3] のポインタ &p[3](型は char*)を得て、
それを int16(16 ビットの整数型)へのポインタ型にキャストして、
そのポインタの参照するところに代入。

あまり使いたくない技だけど。
0289デフォルトの名無しさんNGNG
>284
扇るつもりはないが、まだmemcpyの方がましだ・・・
0290261NGNG
>>288サソ

ほんとありが�dございます!
勉強になります。

ところでついでにもうひとつ質問を、、、
int16ってのはなんですか??
初めて見ました。
とりあえずぐぐってみます。
0291デフォルトの名無しさんNGNG
表示部分は関数にしてというのがわからないのですが
#include <stdio.h>
int main(void)
{
int a,b,wa,d[100],n;
printf("===============================================================================\n");
printf(" いまから四則演算をする数値2つ入れなさい\n");
printf("===============================================================================\n");
printf("1つ目の数値を入力してください\n");
scanf("%d",&a);
printf("2つ目の数値を入力してください\n");
scanf("%d",&b);
printf("\n\t\t実行結果の表示です\n");
n=0;
wa=a+b;
for(;wa>0;wa/=2){
d[n]=wa%2;
n++;
}
d[n]='\0';
printf("\t\t%d + %d=",a,b);
for(n=n-1;n>0;n--){
printf("%d",d[n]);
}
return 0;
}
でできるようにはなったのですが
0292構造体NGNG
struct tbl{
int n;

}

void main89
{
struct tbl dt;
void inp_int(int *)

inp_int(&dt.n);
}

構造体のメンバを副関数に渡すには引数はどうなるの?

0293デフォルトの名無しさんNGNG
>>292
お前は何もかも意味不明
0294デフォルトの名無しさんNGNG
>>292
int *型
0295デフォルトの名無しさんNGNG
>291
つまりこういうこと。
#include <stdio.h>
int printbin(int num)
{
int i,j;
for(i = 1,j = 1;num >> j;i = i << 1,j++);
for(;i;i = i >> 1)(num & i)?fputc('1',stdout):fputc('0',stdout);
return 0;
}

int main(void)
{
int a,b;
..
printbin(a+b);
return 0;
}
0296構造体NGNG
>>294
void inp_int(int *p.n)
でいいの?
0297デフォルトの名無しさんNGNG
煽るつもりはないけど、ちょっとレベル低すぎないか?
0298デフォルトの名無しさんNGNG
ある程度分かった人間の疑問は
>1のリンクで片付いちまうからなぁ・・
回答者のレベルは・・・運任せのところがあるなぁ・・
0299291NGNG
>>297
スマソ。進んで勉強する気があると言う事で許してはくれまいか、、、
0300デフォルトの名無しさんNGNG
>>299
参考書を読めばわかるレベルだと、そのうち釣りだと言われて、相手にされなくなるよ。
0301デフォルトの名無しさんNGNG
とほほ。ここ返事が早いのでいいのですが、、、
スマソ。過去に言われた経験あり
0302構造体NGNG
おい、私の答えはどうなったの?
0303デフォルトの名無しさんNGNG
>>302
>>293
0304デフォルトの名無しさんNGNG
>>302
ごく普通のint*を受ける関数でいいんだよ・・・
0305デフォルトの名無しさんNGNG
プログラミングのレポートで「考察を書け」といわれたんですが、
実際何を書けばいいんでしょうか?
一つ一つ関数について書くべき?
0306構造体NGNG
もう、いいよ。ばかたれども(ぷんすかぷんぷん
0307デフォルトの名無しさんNGNG
>292
入門書レベルの質問だろが・・
<呼ばれる側>:<呼ぶ側>
int inp_int(int):inp_int(dt.n)
int inp_int(int *);inp_int(&dt.n)
int inp_int(struct tbl *):inp_int(&dt)
のどれかだろ
0308デフォルトの名無しさんNGNG
どうも仮引数の書き方がわからないらしい。
inp_int(int *p) <- 名前は何でもいい
0309デフォルトの名無しさんNGNG
もう疲れた。
0310デフォルトの名無しさんNGNG
>>295
> for(;i;i = i >> 1)(num & i)?fputc('1',stdout):fputc('0',stdout);

もう少し三項演算子の使いどころを…
0311デフォルトの名無しさんNGNG
>>305
自分でプログラミングに関することで、また、最近習ったことで
興味のあることなどについてずらずら書く。
0312デフォルトの名無しさんNGNG
>>311
なるほど。どうもでした
0313デフォルトの名無しさんNGNG
>>295
そんな奇妙な三項演算子の使い方する前に、
forをきちんとブロックで書く習慣つけろよ。
小手先のワザを覚えて使いたがる餓鬼みたいだぞ。

もし、forは敢えてブロックを使わないほど習熟している積もりなら
何故>>310や私が指摘しているのかすぐ判るだろ?
0314デフォルトの名無しさんNGNG
> for(;i;i = i >> 1)(num & i)?fputc('1',stdout):fputc('0',stdout);

fputc((num&i)?'1':'0', stdout); のがいいな。
0315デフォルトの名無しさんNGNG
Cで、あるテキストファイルから文字列を読み込むときに
半角スペースで区切られたいくつかの値を
それぞれ違う変数に代入したい場合は
どうやったらいいんでしょうか?
ちなみにdouble型です。
0316デフォルトの名無しさんNGNG
void fprintb(FILE* file, unsigned int num) {
 if(num == 0) { return; }
 fprintb(file, num >> 1);
 fputc('0' + (num & 1), file);
}

void printb(int num) {
 fprintb(stdout, num);
}
0317デフォルトの名無しさんNGNG
scanf("%f ",data);
0318デフォルトの名無しさんNGNG
>>315
fgets()で1行取りこんで、sscanf()
0319デフォルトの名無しさんNGNG
OracleのSQL埋め込みC(Proc)に関する質問です。

OracleでNUMBER(18,3)型で定義された項目をCで使いたいです。
当然、DBからデータを持ってくるためのホスト変数を定義します。

NUMBER(18,3)というのは、精度18桁ということです。
Cだとdoubleが精度15桁、long doubleが精度19桁なのですが、
Procでlong double型ホスト変数は定義できません
(double型ならあるのですが精度が足りません)。

char型の変数に文字としておとしてきてからlong doubleの数値に変換、という
方法はあるにはあるのですが、できれば直接数値として取得したいのです。
どうしたらよいのでしょう。同じ問題に直面した事のある方いませんか。
0320デフォルトの名無しさんNGNG
>>321-1000
>>1を見ろという指摘は結構です
0321デフォルトの名無しさんNGNG
このスレだけ読んどけばC言語マスターできますか?
0322デフォルトの名無しさんNGNG
間違った知識を身につけられます。
0323デフォルトの名無しさんNGNG
>>321
基本はマスター出来ます。
しかも>>1だけで。
0324319NGNG
激しく申し訳ない。別のスレに逝ってきます。
0325319NGNG
一言いい忘れ

>>320
指摘ありが�d
0326デフォルトの名無しさんNGNG
DECIMAL?
0327デフォルトの名無しさんNGNG
static const FProc routineForSelector [] =
{
  /* formatSelectorReadPrepare */  DoReadPrepare,
  /* formatSelectorReadStart */    DoReadStart,
  /* formatSelectorReadContinue */  DoReadContinue,
  /* formatSelectorReadFinish */    DoReadFinish
};
勉強で人のソースを読んでたら、このような文が出てきました。
この配列内にあるDo〜というのは静的なグローバル関数として
宣言済みなんですが、この文は何でしょうか??
0328327NGNG
ひらめきました。お騒がせしました。
0329デフォルトの名無しさんNGNG
>>327
悪しきコメントの典型的な例だな。
0330デフォルトの名無しさんNGNG
>>327
> 静的なグローバル関数として
Cには動的な関数というものはないし、staticならグローバルではない。
0331デフォルトの名無しさんNGNG
文字を数値にする関数としてatoi,atol,atofがありますが、
long double型にする関数はないのでしょうか。
自前でやるしかない?
0332デフォルトの名無しさんNGNG
>>330
はぁ? ポインタ経由の呼び出しは、動的な関数だろ。
0333デフォルトの名無しさんNGNG
それは動的な呼び出し。関数自体を動的に作ることはできない。
JITみたいなのは別として。
0334デフォルトの名無しさんNGNG
>>331
doubleならscanfで変換できるよ。
0335ヽ(´ー`)ノNGNG
c99 なら long double strtold(const char*, char** endptr) が。
0336デフォルトの名無しさんNGNG
>>331
文字列からだと sscanf だな。
0337331NGNG
>>334-336
レスどうもです。
sscanfを使おうと思ったのですが、また疑問が。
そもそもlong doubleの書式指定って何ですか?
long double hoge = 1;
printf("%lf",hoge);
とやっても、結果は
-21745549…と出てしまいます。
0338デフォルトの名無しさんNGNG
L
0339デフォルトの名無しさんNGNG
if ((*count = _lread(fp, buf, bytes))==0xffff)
return readErr;

というのを見たんですが、(式)==0xffffという部分がよくわかりません。
助けてください。
0340デフォルトの名無しさんNGNG
>>339
_lread()の仕様がよくわかりません。
助けてください。
0341デフォルトの名無しさんNGNG
_lreadの帰り値は UINT

本来は 0xffff ではなく HFILE_ERROR を使うべき所を
includeしなければちょっとコンパイルが速くなるからと、けちったものと思われる。
0342デフォルトの名無しさんNGNG
>>341
本当にそのつもりだったとしたら安物買いの銭失いって感じだな(w
0343デフォルトの名無しさんNGNG
ていうか知らなかっただけ
0344339NGNG
なるほど・・・HFILE_ERRORが0xffffということだったんですか・・・
ありがとうごじゃーます。
0345デフォルトの名無しさんNGNG
>>330
> staticならグローバルではない。

どういうこと?
0346デフォルトの名無しさんNGNG
>>345
static を付けるとファイルスコープになる。
付けないとグローバルになる。

動的な関数ってのは、
関数型言語でよく使われるラムダ式とかそういうやつ。
0347デフォルトの名無しさんNGNG
>>346
なんだそういうことか。
特定の関数からしか呼べない関数という意味だと思った>グローバルでない関数

ファイルスコープ・・・・
0348デフォルトの名無しさんNGNG
「ファイルスコープ」に違和感を覚える人間がなんでC言語スレに居るんだろー
0349デフォルトの名無しさんNGNG
ブロック外で定義したstaticをつけた変数はなんと呼ぶの?
0350349NGNG
ねーなんと呼ぶのよー
>>346の考え方で考えるとグローバルでないということになるけど。
0351デフォルトの名無しさんNGNG
関数の話をしているんだがな
0352349NGNG
そもそもCの関数にはグローバルもローカルも静的も動的もないと思うんだけど。
0353デフォルトの名無しさんNGNG
よかったね
0354デフォルトの名無しさんNGNG
ファイルスコープ変数
0355349NGNG
ファイルスコープ変数ですか。
覚えておきます。ありがとうございました。
0356デフォルトの名無しさんNGNG
スコープとリンケージがごっちゃになっていないか?

static int x; /* 内部リンケージ */
int y; /* 外部リンケージ */

っていうんじゃないの?
0357馬鹿NGNG
馬鹿な漏れに教えてくれ!
漏れは次のソースをコンパイルして実行した

void main(){
}

上手くコンパイルできた
出来たexeファイルを起動しても当然何も実行されない
しかし、出来たexeファイルを見ると47,104バイトの容量がある
なぜこんなに容量を食うんだろうか?
0358デフォルトの名無しさんNGNG
グローバル関数で検索しても出てくるのは特定のクラスに属さない関数という説明ばかり。
0359デフォルトの名無しさんNGNG
スタートアップルーチンとか
VCならmainCRTStartupとかsetargvとかがデカイ
0360デフォルトの名無しさんNGNG
>>357
× void main
○ int main

実行ファイルに必要な情報と
main 関数を呼ぶルーチンが入ってる筈。
確か。
0361馬鹿NGNG
>360
ありがとう
0362デフォルトの名無しさんNGNG
あとはデバッグ情報がついてるとか。
0363デフォルトの名無しさんNGNG
最初に実行した瞬間にウィルスに感染したとか。
0364デフォルトの名無しさんNGNG
リンカがすでに感染してるとか。
0365デフォルトの名無しさんNGNG
stdin を fseek はできますか?
したときの動作は規格で保障されてますか?
fseek(stdin, 0L, SEEK_SET)
0366デフォルトの名無しさんNGNG
どちらもNO
0367デフォルトの名無しさんNGNG
fgets で検出した EOF が stdin に残ってしまっています。
この EOF を消したいのですがどうしたらよいでしょうか?

検索すると fseek, fflush, rewind などを用いたプログラムを
見かけるのですが、どれも動作が保障されていないようです。

char str[10];
fgets(str, 10, stdin); <= EOF を入力すると
fgets(str, 10, stdin); <= この行のfgetsが実行されない
0368デフォルトの名無しさんNGNG
>>367
すまん、fflush()と間違えた。fseek(stdin)は問題ない。
0369デフォルトの名無しさんNGNG
fseek(stdin)じゃプロトタイプと合わないだろ。と言ってみる。
0370デフォルトの名無しさんNGNG
質問です。

高さH、幅Wの三角波をプロットしたいのですが、正弦波sin()のように
三角波も標準的な関数として用意されているのでしょうか?

こういう関数なんですが


y
↑
|/\/\/\/\/\/\/\ …
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄x
0371デフォルトの名無しさんNGNG
>>370
生成式あるっしょ。それをプロットすればよし。
0372デフォルトの名無しさんNGNG
>>371
5時間くらい考えて何度自分で作っても変な関数になってへこんでたんです。
で、もしかしたら用意されてるのかと思って聞いてみたんですが、式があるんですか…

持ってる本はC言語の入門書だけで、どうやら載ってないようです。
Web上を探してもどうもキーワードが悪いようで、みつかりません。

よろしければヒントを教えていただけませんか?
0373デフォルトの名無しさんNGNG
>>370
Wの解釈が違うかもしれんけど…
double f(double x, double H, double W) {
  double t = x - floor(x / W);
  if (t < W / 2) {
    t = H / (W / 2) * t;
  } else {
    t = -H / (W / 2) * t + H * 2;
  }
  return t;
}
0374デフォルトの名無しさんNGNG
strchr()の第2引数に'\0'を与えた時の動作は
仕様で規定されていますか?

bcbのヘルプによると、strchrに与える文字列は末尾の'\0'も含まれるので
返り値は末尾の'\0'の位置ということですが。
0375デフォルトの名無しさんNGNG
>>373
ご丁寧に関数の提示までしていただき、ありがとうございます。
さっそくこれを参考に作業にとりかかろうと思います。
お手数をかけて申し訳ありませんでした。
0376デフォルトの名無しさんNGNG
×お手数をかけて
○お手数をかけさせて
0377デフォルトの名無しさんNGNG
>>374
それはCの仕様できまっている。
それを知らずに使って起きたバグに小一時間悩まされたことが・・・ manを注意深く見てようやくわかった(^_^;)
0378デフォルトの名無しさんNGNG
>>370
#define H
#define W
でなんか定義されてるものとして

double sankaku(double x)
{
 double xx = x % W;

 if (xx < W / 2) {
  return (H * (xx / (W / 2)));
 } else {
  return (-H * ((xx - W) / (W / 2)));
 }
}
こんな感じかな?
式はもう少し簡単になりそうだけど

0379374NGNG
ありがとう。安心した。
0380デフォルトの名無しさんNGNG
BorlandのCコンパイラでgraphics.hみたいなのってあるの?
0381デフォルトの名無しさんNGNG
#include <string.h>
size_t strlen(const char *s)
{
return strchr(s,'\0')-s;
}
0382デフォルトの名無しさんNGNG
C++に関してですが、
クラスのオブジェクトへの参照(リファレンスではないです)を返す関数の戻り値の型は、
リファレンスあるいはポインタのどちらがいいんでしょうか?
各々にメリット・デメリットがあれば教えてください。
0383デフォルトの名無しさんNGNG
ここは++のつかない古代のCスレ(´д`;)
0384デフォルトの名無しさんNGNG
>383
すみませんでした。。。
C++のスレはあるんでしょうか?
0385デフォルトの名無しさんNGNG
>>384
http://pc2.2ch.net/test/read.cgi/tech/1052625846/
0386デフォルトの名無しさんNGNG
ありました。
失礼。。。
0387デフォルトの名無しさんNGNG
C++相談室 part19
http://pc2.2ch.net/test/read.cgi/tech/1052625846/l50
0388消防並NGNG
#include<stdio.h>
main()
{
int i,sum,x;
x=1;
sum=0
for(i=1;i<=100;i++)
{
sum+=x;
x+=1;
}
printf("合計=%d\n",sum);
}



すんません。教えてください。
↑のやつをBuilder5.5でコンパイルすると
7行目に構文エラーで(for)())(;)というのが出ます。
一体、何が間違ってるのか、まったくわかりません。
教えてください。
0389デフォルトの名無しさんNGNG
>>388
sum=0;

一般に構文エラーだのsyntax errorだの言われたときは、
指摘された行の直前の行を見るとよいことが多い。
0390消防並NGNG
>>389
ありがとうございます。


つーか、漏れ馬鹿すぎ。。。

>一般に構文エラーだのsyntax errorだの言われたときは、
>指摘された行の直前の行を見るとよいことが多い。

これは非常にためになる豆知識をありがとうございます。
0391デフォルトの名無しさんNGNG
エディタのオートインデントやキーワードのハイライト機能で
バグに気づくこともあるね。
あとは、全角空白も見えるようにしておくとか。
0392デフォルトの名無しさんNGNG
>388
豆知識その2
エラーが出たら最初の1つだけみて直して再コンパイル。
で、カナーリエラーの数が減る。
0393デフォルトの名無しさんNGNG
豆知識その3

ソースを書かなければバグは発生しない。
仕事してる奴ほどバグを出す。
0394デフォルトの名無しさんNGNG
エラーが出過ぎて見れません。どうすればいいのでしょうか?
0395370NGNG
>>370です。フローチャート書いたら10数分でできました。
8時間もかけて、アホですね…



                _           ニ / l l
             /´´,ィ〕           /       気が付けば……
  ニ / l l   ,_   /  'ーっ          /ニ7
   /   /777/  /  ./ ̄             /         省略っ…!
  /ニ7 {   し'7/ ゙̄7/    ,. ''´ ̄`ヽr:z   :
   /   ヽ.  ノ { /〈/   /    _,、 ゝ       _ f'h、 
    :   |ー-|  X ,.へ    !   r'7/,ゞ7レリ       (.くノ ' 'ヽ  フローチャート
  ,rf'?   !   !// V   \_l   y/__ヽ,        .〉   ノ   省略っ…!
 〈  レフ .!    ̄/ ̄ ̄/ /   ,.イ | r'::   、    /   /´
  ヽ  く  `‐! !-l__/ /イ / / ̄`<:: _ ヽヽ.  /ー-v'   やって
.   V⌒ヽ_, l l-‐ヽ /  ´ l/ レ'      ,ゝ、  ̄7 i‐-'  / } }  しまったっ……!
   ヽ    ! !   ∨   /       /   \/l. !   ./  ノノ
     \__,,.ゝヽ''7    ./ ニ / l l   、   /ソ ,'─‐'   r‐ 、  さすがのカイジも
         /    /   /     ,イ ヽ./ / /、_ __/  ´ヾ、 フローチャート省略は
.        /    ノ   /ニ7   /;'|___ゝ'/   }   __,.へ)     猛省…!
       <、   ./     /   /;' | '´イ ` ー─‐'-‐'''´  
0396デフォルトの名無しさんNGNG
>>395
そういう問題か?
0397デフォルトの名無しさんNGNG
豆知識その4

フローチャートは不要。
0398デフォルトの名無しさんNGNG
ごちゃごちゃになった処理の流れを整理するのに使ったりするけど。
0399デフォルトの名無しさんNGNG
つまりアルゴリズムが頭に入ってなかったって事でファイナルアンサー?
0400真紀俊男NGNG
ハァ?フローチャート?
フローシートだろ。
0401デフォルトの名無しさんNGNG
ハローワーク
0402デフォルト名無しさんNGNG
アイディアを貸してください。
#define TATE 480
#define YOKO 7
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int array1[TATE][YOKO];
int tate;
int custNum;
int in;
int totalTime;
int pause;
int help;
int out;
int previous;
int current;
int value1, value2, value3;

srand(time(NULL));
custNum=1;
totalTime = 0;
0403デファルと名無しさんNGNG
for(tate=0; totalTime<=TATE; tate++)
{

in = rand()%5+4;
if(in + totalTime <= TATE)
{array1[tate][0] = custNum;
custNum = custNum+1;
array1[tate][1] = in + totalTime;
help = rand()%3+4;
array1[tate][2] = help;}

totalTime = in + totalTime;
}
array1[0][3] = array1[0][1];
array1[0][4] = array1[0][1] + array1[0][2];


0404デファルト七資産NGNG
for(tate=1; tate<custNum-1; tate++)
{
previous = tate-1;
out = array1[previous][4];
current = array1[tate][1];
value1 = array1[tate][2] + array1[tate][1];
value2 = array1[previous][4];
value3 = value2 + array1[tate][2];

if (current<=out)
{array1[tate][3] = value2;
array1[tate][4] = value3;}
else
{array1[tate][3] = array1[tate][1];
array1[tate][4] = value1;}
};
0405デファルト七資産NGNG
for(tate=0; tate<custNum-1; tate++)
{
array1[tate][5] = array1[tate][3] - array1[tate][1];
array1[tate][6] = array1[tate][4] - array1[tate][1];
};


for (tate=0; tate<custNum-1; tate++)
{
printf("\n%d \t%d \t%d \t%d \t%d \t%d \t%d", array1[tate][0], array1[tate][1],
array1[tate][2], array1[tate][3], array1[tate][4], array1[tate][5], array1[tate][6]);
0406デフォルト七資産NGNG
pause = tate+1;

if(pause%20==0)
{fflush(stdin);
getchar();}
};

fflush(stdin);
getchar();
return 0;
}
0407デフォルト名無しさんNGNG
上のプログラムの縦の列の2,4,5番目を8時から夜の8時までの時間で
表したいのですがうまくいきません。
少しアイディアを分けていただけないでしょうか?
よろしくお願いいたします。
0408デフォルトの名無しさんNGNG
>>402-407
>>407の意味も分からないし、もともと何のプログラムかも分からないです。
よく見れば分かるかもしれないけど、コメントを書く、説明するなりして
くだちいー。
0409デフォルト名無しさんNGNG
すみません、説明不足でしたね。
一番左の列以外はすべて単位は分です。
そして、2番目が客の入ってくる時間、4番目が客が接客を受けた時間
5番目が客が出て行った時間です。
分で表すものだから60分を超えると70、とか80になってしまって
見難くなってしまって。。。
このプログラムは簡単なお店のシュミレーションです。
時間はランダムを使って決定されています。
分かりにくいかもしれませんgよろしくお願いいたします。
0410デフォルトの名無しさんNGNG
>>406
stdinにfflushを使うなよ
0411デフォルト名無しさんNGNG
すみません・・・
0412デフォルトの名無しさんNGNG
for文のブロックの後(}の後)にはセミコロンはいらない。
0413デフォルト名無しさんNGNG
ご、ごめんなさい(笑)
0414デフォルトの名無しさんNGNG
array1[2,4,5][N]を朝の八時から夜の八時にしたいの?
0415デフォルト名無しさんNGNG
>>414
はい、朝の8時にお店が開店して、夜の八時にしまる、、見たいな感じです。
0416デフォルトの名無しさんNGNG
一番左の列というのはarray1[0]のこと?
0417デフォルト名無しさんNGNG
一番左の縦の列は、1番目の客、2番目の客、、、、、、
という風になってます。
0418デフォルトの名無しさんNGNG
なんつーか、酷いね
0419デフォルト名無しさんNGNG
すみません、まだまだ初心者なもので。。。。
0420デフォルトの名無しさんNGNG
左の列というのがプログラム上でどれを指すのか分からないんだけど・・・
0421デフォルト七資産NGNG
array1[TATE][0]だと思います。すみません。
0422デフォルトの名無しさんNGNG
もしかして、ランダムに生成される時間を朝の8時から夜の8時にしたいってこと?
0423デフォルトの名無しさんNGNG
>>407 こうかな?
0:番号
1:客が入る時間 ○:○○
2:客が接客を受ける時間 ○分
3:この時間に入ってくれば前の客とかぶらなかったのにという時間 ○:○○
4:客が出る時間 ○:○○
5:(自分)客が店にいる時の、前の客の接客時間 ○分
6:客が入ってから出るまでにかかった時間 ○分
0424デフォルト七資産NGNG
そうです、そのとおりです。よろしくお願いいたします。
0425デフォルトの名無しさんNGNG
すみません。わかりにくくて・・・。
0426デフォルトの名無しさんNGNG
>>424
朝の8時は8、夜の8時は20でいいのかな?
0427デフォルトの名無しさんNGNG
はい、20時です。よろしくお願いいたします。
0428デフォルトの名無しさんNGNG
>>427
8から20までの乱数を得たいのなら、rand()%13+8ってのはどう?
0429428NGNG
もっと素直に、期待する範囲の値を得られるまでループしてもいいけど。
0430デフォルトの名無しさんNGNG
>>407 たぶん
array[][]/60+8:array[][]%60
0431428NGNG
ああ、時間じゃなくて分なのか。じゃあ13とか8を適当に変えて。
0432デフォルトの名無しさんNGNG
>>407
内容は店のシュミレーションと言ってたけど、一定時間内に何人接客できる
かって事?それとももっと深い意味があるの?
0433デフォルト名無しさんNGNG
一応、客の接客に何分かかるか、何分待たせたか、平均時間、などを
だそうと思っています。
0434デフォルトの名無しさんNGNG
>>433
それは乱数で求めているから、結果はその乱数の幅の近似値になって
しまうと思うけど。時間帯によって、人口密度によって、待ち時間によって
マイナスになるもの、売上、接客係を増やすとどうなるか、等あると面白いかも。
あと、表示の仕方を直すのは多分こう。
printf("\n%d \t%d:%d \t%d \t%d:%d \t%d:%d \t%d \t%d"
, array1[tate][0]
, array1[tate][1]/60+8,array1[tate][1]%60
,array1[tate][2]
, array1[tate][3]/60+8,array1[tate][3]%60
, array1[tate][4]/60+8,array1[tate][4]%60
, array1[tate][5], array1[tate][6]);
0435デフォルトの名無しさんNGNG
>434
ありがとうございます。とてもたすかりました。
0436K&R三世NGNG
>>402
最初の for ループで、totalTime が判定文に使われているが
この時点では値は不定だぞ。tate と間違えていないか?
0437_NGNG
  ∧_∧
 ( ・∀・)/< こんなのみつけたっち♪ 
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html
0438デフォルトの名無しさんNGNG
>【ライセンスや機能などに問題あり】
>Microsot C/C++ 13.0.9466(VC.NET)
>http://www.microsoft.com/japan/msdn/netframework/downloads/

>>39の問題ありってどういう事ですか?
教えて偉い人!
0439デフォルトの名無しさんNGNG
>>438
最適化ができないらしい
0440デフォルトの名無しさんNGNG
>>439
そうなんですか。わかりました。どうもありがとう!
0441デフォルトの名無しさんNGNG
正直、最適化できないんじゃ要らないわけだが。
0442デフォルトの名無しさんNGNG
過労死させられても反抗すらできない民族、それが日本人。
どうすりゃいいの?
       ∪ / ノ
  | ||   ミ    /            |           ヽ       / / /
  ヽ_)_)     ∧/∧         |        ∧ヽ∧  彡  しl_ノ
        ( / ⌒ヽ        |        ( / ⌒ヽ
         | |   |  ミ   ∧ |∧  彡    | |   |
         ∪ / ノ     ( / ⌒ヽ        ∪ / ノ
          | ||        | |   |         / / /
          ヽ_)_)      ∪ / ノ        しl_ノ
                   | ||
                   ∪∪
日本ロジテム(みずほの融資先)の子会社せいも素(みずほの融資先)で
サービス残業させすぎによる過労で自殺者が出た。
http://www.samos.co.jp
http://society.2ch.net/test/read.cgi/traf/1046749189/l50
http://tmp.2ch.net/test/read.cgi/company/1046775680/l50
0443山崎渉NGNG
(^^)    
0444質問厨 ◆Kwu0p51cCg NGNG
申し訳ないのですが質問です…。
大学のレポートなんですが。。。

#include <math.h>
#include <stdio.h>

int main(void)
{
float hankei;
float hankei_2, hankei_3, ensyutyou, menseki, h_menseki, taiseki, pi, radius, r_2, r_3;

printf("1つの実数(半径…単位:km)="); scanf("%f", &hankei );

☆ pi=4.0*atan(1.0);
ensyutyou=2*pi*hankei;
hankei_2=pow( hankei, 2 );
menseki=pi*hankei_2;
h_menseki=4*pi*hankei_2;
hankei_3=pow( hankei, 3 );
taiseki=4*pi*hankei_3/3;

printf("円の円周長=%5.1f\n\n", ensyutyou );
printf("円の面積=%5.1f\n\n", menseki );
printf("円の表面積=%5.1f\n\n", h_menseki );
printf("円の体積=%5.1f\n\n", taiseki );

return (0);
}
0445質問厨 ◆Kwu0p51cCg NGNG
☆の部分でatanが定義されてないというエラーが出るんですが
どのように定義すればい良いのでしょうか?
検索エンジンで調べても全く分からず…。
どなたか…愛の手を。。。
0446デフォルトの名無しさんNGNG
>>445
もしかして「undefined reference to atan」ってやつか?
もしそうならコンパイル(リンク)時に-lm
0447質問厨 ◆Kwu0p51cCg NGNG
わざわざすいません。
大学のウルトラCというソフトではエラー無かったんですが
さっきダウソしたCマシーンというフリーソフトでは
「atanが未定義です」と出るんです。
>undefined reference to atan
の意味も正直わからない初心者です。
初心者なんて嫌われるのわかってるんですが。。。
0448デフォルトの名無しさんNGNG
>>447
C Machineは無条件に捨てた方がいいかも。
標準関数は一部しか使えない。
0449質問厨 ◆Kwu0p51cCg NGNG
あ。そうなんですか!!
ありがとうございます。
>C Machineは無条件に捨てた方がいいかも。
そのお言葉聞けただけで安心しました。
大学のソフトではエラー無しだったんでOKです。
脳内解決させて頂きました。
ホント質問厨に付き合ってくれてありがとうございました。
0450デフォルトの名無しさんNGNG
>>449
>>39にもっとましなコンパイラをダウンロードできるサイトへのリンクがあるから見てみては。
0451デフォルトの名無しさんNGNG
>449
>39
0452デフォルトの名無しさんNGNG
>451
かぶった。鬱だ。。。
0453質問厨 ◆Kwu0p51cCg NGNG
>450-452
ここまでしてくれるとは思っていませんでした。(失礼。。。)
ダウソしてます。頑張ります。
どうもありがとうございます。
0454デフォルトの名無しさんNGNG
久しぶりのシャバだぜ。
ムショにいた3年間、毎日C言語を勉強してきた。
C言語のことなら俺に聞け。
0455デフォルトの名無しさんNGNG
(・∀・)ムショムショ
0456消防並NGNG
教えてください。
多次元配列 A={{2,3,4}
            {2,3,3}
            {3,3,3}}
という感じで表示したいんですが、
これは、printf()で要素一つ一つを%d%d%d…A[1][1]A[1][2]A[1][3]…
という風にして表示するしかないんでしょうか?

何か配列を一気に表示する方法ってありますか?

本にも、ググってもで無かったから無いかな。。。


>>391-393
本には載っていないような豆知識は非常にためになります。
ありがとうございます。
0457デフォルトの名無しさんNGNG
i,jでループを回す。
0458デフォルトの名無しさんNGNG
>>456

for (i = 0; i < 3; i++) {
 for (j = 0; j < 3; j++) {
  printf("%d", a[i][j]);
 }
}
0459デフォルトの名無しさんNGNG
というかインデクス使わなきゃ配列のメリットがないだろ
0460消防並NGNG
>>457
ありがとうございます。

>>458
わざわざ、丁寧にソースまでありがとうございます。

教えてもらったら、すごい簡単なんだけど、まったく、わからなかった。。。

すごい基本的なことだけど、
今、手元にあるCの本、3冊にはのってませんでした。
C言語辞書みたいなのを買うべきかな。。。
0461デフォルトの名無しさんNGNG
>>460
見落としてるだけじゃないの?
じゃなかったらよっぽどDQNな本を買ったか
0462デフォルトの名無しさんNGNG
どんな本だよ。二次元配列のループ処理も載ってないの?
0463消防並NGNG
『C言語入門』 アスキー出版
『はじめて読むC言語』 アスキー出版
『よくわかるアルゴリズムの基本と仕組み』 杉浦賢

最後のやつはアルゴリズム中心でCのソースは
おまけ程度なので仕方ないかも。

上の二冊は、今、はじめて気がついたけど
どっちもアスキー出版だ。。。
0464デフォルトの名無しさんNGNG
入門書は一冊でいいから、3000円以上する本を買いなさい。
0465消防並NGNG
>>464
わかりました。
厚めのいろいろ載ってそうなやつ買おうと思います。

比較的、小さくて、薄めの本を買ってしまった。。。
0466デフォルトの名無しさんNGNG
registerとかvolatileとかのキーワードって
どの位効果があるの?
普通の(ライブラリとかでない)プログラムでは考慮しなくても良い?
0467デフォルトの名無しさんNGNG
>>466
register はコンパイラが最適化するのでいらないかも。あっても害はないけど
volatile は割り込みとか使うときには注意したほうがいいかも
0468デフォルトの名無しさんNGNG
volatileは、割りこみ、スレッド、プロセス間共有メモリ、デバイスドライバなどを
書くときには必要になることがある。
例えば入力ポートはconstでvolatileだったりする。
0469デフォルトの名無しさんNGNG
>>466
setjmp()/longjmp()を使うときにはvolatileが必要になる。
0470デフォルトの名無しさんNGNG
registerヒントはいまどきのコンパイラだとほぼ完璧に無視するから
組み込みでもやらない限りは忘れていいよ
0471466NGNG
ありがとうございました。>>467-470
K&Rに書いてある「最適化に関係のある特別な性質」って漠然としすぎw>volatile
0472デフォルトの名無しさんNGNG
>>471
それよか、コンパイラの初期設定に、「最適化を無視する」みたいなのを
やっとけばいいのではないの?
0473デフォルトの名無しさんNGNG
それじゃ全部無視されちゃうだろ。
0474デフォルトの名無しさんNGNG
>>470
殆ど揚げ足取りに近いんだが、
どんな場合でもregisterキーワードをコンパイラが無視しない場合がひとつだけある。
それはregister修飾された変数のアドレスを取れないということだ。
0475デフォルトの名無しさんNGNG
>>474
?だからコンパイラがregister指定を無視するんじゃないの?
0476デフォルトの名無しさんNGNG
あったとしても
アドレスが参照されたためregister指定を無視しました
って旨のメッセージが出るだけだが。

エラーになるコンパイラがあるなら教えて。
0477デフォルトの名無しさんNGNG
reg.c ----------------
#include<stdio.h>
int main(void) {
register int i;
printf("%p\n", &i);
return 0;
}
----------------------

$uname -a
CYGWIN_ME-4.90 xxx 1.3.4(0.47/3/2) 2001-11-07 13:36 i586 unknown
$gcc reg.c
reg.c: In function `main':
reg.c:4: warning: address of register variable `i' requested
$

むぅ、警告されるだけですた。ANSI的にはどうなんだろう。
0478デフォルトの名無しさんNGNG
エラーにしろと言っているかどうかはしらないけど、アドレスは取れないことになっている。
0479デフォルトの名無しさんNGNG
致命的なエラー(回復できないエラー)じゃないからエラーにしないのかもね。
0480デフォルトの名無しさんNGNG
コボラーの書いたCのコードは性能が良いと聞いたのですが、
コボラーみたいに良いコードを書くコツを教えてください。
0481デフォルトの名無しさんNGNG
イスラム教のシーア派というのはC使いのことですか?
0482デフォルトの名無しさんNGNG
コボラーに限らず、まともなプログラマはまともなコードを書くよね。
0483K&R三世NGNG
>>480
趣味でコボルやつは居ないからな。
大企業や官公庁の厳格な管理体制の下で鍛えられたから
安定した性能を誇るんでは?
0484480NGNG
マジレス希望です。
0485デフォルトの名無しさんNGNG
何処で聞いたんだ>480
0486480NGNG
プログラマ板です。
0487デフォルトの名無しさんNGNG
コボラーが書いたのが性能いいというと、思い当たる節がひとつだけある。
やつら、関数のパラメータを使わずグローバル変数で受け渡しするって話だから、
関数を呼ぶときパラメータをスタックに積むとかそういう操作しなくて済む分
性能がよくなるんじゃないのか? これくらいしかわからんけど、他になにかあるかな?
0488デフォルトの名無しさんNGNG
コボラーが使う いわゆる計算機はCPU時間いくらの世界だったので、その点にシビアというだけなのでしょう。
0489デフォルトの名無しさんNGNG
>>486=480
「 コボラーみたいに良いコードを書くコツ」も、マ板で聞け
0490デフォルトの名無しさんNGNG
>>487
退避の分遅くならんか?
0491デフォルトの名無しさんNGNG
プログラムの種類によっては、データ依存型の言語の方が性能がいいプログラムを書きやすいよ。
つーか、ごみみたいなコードを書くコボラーもいるし、
素晴らしいコードを書くCプログラマーもいるけどね。
0492デフォルトの名無しさんNGNG
素晴らしいコードを書くCプログラマは元コボラー
0493デフォルトの名無しさんNGNG
質問なんですけど,普通のC(C++)で
fgets(str,sizeof(str),stdin)
などで取得したstdinのバッファを開放するにはどうすればいいですか。
MSじゃないのでfflushとかはout系のものしかサポートしていないんですけど・・・・。
0494デフォルトの名無しさんNGNG
>>493
何で開放したいんだ?
他のプロセスにか?

あ、解放か。

>>492
俺、元コボラーじゃないよ。
0495デフォルトの名無しさんNGNG
C++でいう
fflush(stdin)
もしくは
rewind(stdin)
という動作をしたいんですよー。知ってたら教えてください??
0496デフォルトの名無しさんNGNG
>>487
それって言語仕様なんだからさ
0497デフォルトの名無しさんNGNG
>>494
それはつまり、「俺は素晴らしいコードを書くCプログラマ」だと言いたいのですね?
0498デフォルトの名無しさんNGNG
fseek(stdin,0,SEEK_END);
0499デフォルトの名無しさんNGNG
socketでAF_SECURITYの使い道おしえてください。
0500デフォルトの名無しさんNGNG
socketは標準Cの範疇にないのでスレ違い。

ついでに言えば、ぐぐればヒントが得られるんじゃないか?
0501デフォルトの名無しさんNGNG
>>480
>良いコード

まず、おまえの言う「良いコード」ってどんなコードよ?
0502デフォルトの名無しさんNGNG
http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=36418&pid=870202359

買ってください。おながいします。おながいします。
0503デフォルトの名無しさんNGNG
>>205
#include <stdio.h>
#define DBG_PRINT( str ) printf( "Variable " #str "\n" )

int main( void )
{
  int test;

  DBG_PRINT( test );

  return 0;
}


こんな感じか?
0504デフォルトの名無しさんNGNG
>>501
>>503
0505デフォルトの名無しさんNGNG
きちんと設計してから書け。
Cプログラマが負けるとすれば多分そのあたりだ。
あいつらは仕様書に書いてないものは決して作らないからな。
0506デフォルトの名無しさんNGNG
仕様書の行間も読まないしな。
0507デフォルトの名無しさんNGNG
Cobolはデータ設計しないと書けないよねぇ。
Cだってきちんと設計すればいいものができると思うのだけど
やっつけ仕事ができちゃうからね。
#特にVC++なんかはもう・・・
0508デフォルトの名無しさんNGNG
>>507
それは言語の問題ではない。
ツールに踊らされてる馬鹿の問題。
0509デフォルトの名無しさんNGNG
sageていいですか?
0510デフォルトの名無しさんNGNG
いくらでもsageたまえ
0511デフォルトの名無しさんNGNG
int char x[12][6][7] = { 0 };
これの{ 0 }の部分はどういうことですか?
0512デフォルトの名無しさんNGNG
要素を全て0で初期化したいんじゃネーノ?
0513デフォルトの名無しさんNGNG
>>511
C の文法の勉強やり直せ
0514動画直リンNGNG
http://homepage.mac.com/hitomi18/
0515512NGNG
しったかぶってごめん。
0516デフォルトの名無しさんNGNG
>>515
え? 合ってるだろ?
0517デフォルトの名無しさんNGNG
合ってるよ
0518デフォルトの名無しさんNGNG
memset(x,0sizeof x);
0519デフォルトの名無しさんNGNG
配列や構造体で1つでも初期化するデータを指定した場合、
初期化するデータを指定しなかったところは全て0で初期化される。
これ、仕様。
0520デフォルトの名無しさんNGNG
おせーてください
Cででてくる関数exp(x)はどうやって作られてるんですか?
xが自然数なら簡単ですけど、実数で定義されてますよね?
まさか、テイラー展開?
0521デフォルトの名無しさんNGNG
<math.h>
0522デフォルトの名無しさんNGNG
最近C言語を学び始めた者ですが、例題で分からないプログラムがあります。
コンパイルまではエラーなしなのですが、実行しようとするとエラーが出て
実行できないんですよ。どこが間違っているのか教えてもらえないでしょうか?
例題のプログラムは次の通りです。
0523デフォルトの名無しさんNGNG
>>522
配列の範囲を超えて書き込んだりしているんじゃないの?
0524522NGNG
もしかしてスレ違いでしたか?
0525デフォルトの名無しさんNGNG
>>524
超せっかち?
0526デフォルトの名無しさんNGNG
'次'というのはどれのことですか?
0527522NGNG
どのスレがいいのか分からないんで一応、書いちゃいます。

#include <stdio.h>
#define N 20
double largest2(double, int);
main()
{
int k;
double x[N];
printf("入力された実数の中で最大のものを出力します\n");
for(k = 0; k < N; k++)
scanf("%lf", &x[k]);
printf("最大のものは%lf\n", largest2(x[k], N));
}

double largest2(double x[], int n)
{
double max;
int k;
max = x[0];
for(k =1 ; k < n; k++)
if(max < x[k]) max = x[k];
return max;
}
0528デフォルトの名無しさんNGNG
>>527
largest2において、仮引数と実引数の型が違うぞ。
本当にエラーも警告も出なかった?
0529528NGNG
その前にプロトタイプ宣言と定義がことなるんだ。
これはエラーになるはずだけど・・・
0530522NGNG
>>528
largest2で使う変数などの型は統一しないといけないのですか?
コンパイラはvisual C++なんですけど、コンパイル時にはエラーなしで
警告は一つでました。
0531522NGNG
>>529
mainのほうは自分で書いて、largest2の定義はコピペですので。。
0532デフォルトの名無しさんNGNG
>>530
double *とdoubleじゃ明らかに違うだろう。

double largest2(double, int);
を
double largest2(double *, int);
にして、
largest2(x[k], N)
を
largest2(x, N)
にする。
0533522NGNG
>>532
ありがとうございます。やってみます。
0534デフォルトの名無しさんNGNG
>>520
libmのソースを読んでみれば?
漏れには理解できなかったけど・・・
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/msun/src/e_exp.c?rev=1.8&content-type=text/x-cvsweb-markup
0535522NGNG
>>532
無事に実行できました。
0536デフォルトの名無しさんNGNG
>>534
自分で FreeBSD 使っているのに、忘れていました
exp意外と単純ですね
ありがとうごぜーますた
0537デフォルトの名無しさんNGNG
#include <time.h>
#include <stdio.h>

main()
{
clock_t start,end;
char c;

start = clock();

printf("Press a key followed by ENTER: ");
scanf("%c",&c);

end = clock();
printf("Elapsed time = %f\n",(end-start)/CLK_TCK);
}

bccでコンパイルするとうまく動くんだけど、gccでコンパイルするとうまく動かない。
実行結果
bcc:
Press a key followed by ENTER:
Elapsed time = 1.772000
gcc:
Press a key followed by ENTER:
Elapsed time = 0.000000
なんで?
0538デフォルトの名無しさんNGNG
CLK_TCKって何?
0539デフォルトの名無しさんNGNG
clock_t って整数じゃないの?
0540デフォルトの名無しさんNGNG
普通、秒数なら(double)(end-start)/CLOCKS_PER_SECってやるよね。
0541537NGNG
>(double)(end-start)/CLOCKS_PER_SEC
これも試してみたけどgccだとうまく動かない。
コンパイルする時になにかオプションでもいるの?
それともcygwin上だとうまくいかないのかな。
0542デフォルトの名無しさんNGNG
cygwin上のgccを使って試した。
>>537 はElapsed time = 0.000000になったけど、
>>540 にしたら、大丈夫だった。
0543デフォルトの名無しさんNGNG
>>537
お前はデバッグの仕方も解らないのか?
0544デフォルトの名無しさんNGNG
>>543
誰がお前じゃ。もう一度言うてみろ糞餓鬼
0545デフォルトの名無しさんNGNG
>>543
言うことは、いっちょ前やね。
具体的にやりかた書いてみそ。
0546デフォルトの名無しさんNGNG
>>544
誰が糞餓鬼じゃ。もう一度言うてみろお前
0547デフォルトの名無しさんNGNG
>>545
お前もデバッグの仕方すら解らないのか?
0548デフォルトの名無しさんNGNG
デバッグの方法を教えてください。
0549デフォルトの名無しさんNGNG
printf
0550デフォルトの名無しさんNGNG
0x15aa は二進では 1010110101010と書いてあったんですが、
じゃあ0x15aaは何進数なんですか?
それともプログラム専用の書き方みたいなもんですか?

0551デフォルトの名無しさんNGNG
>>550
氏ね
0552デフォルトの名無しさんNGNG
xまであるところを見ると36進数より上だとは思うのですが?
0553デフォルトの名無しさんNGNG
>>550
4桁の2進数    16進数 
0000           0
0001           1
0010           2
0011           3
0100           4
0101           5
0110           6
0111           7
1000           8
1001           9
1010           a
1011           b
1100           c
1101           d
1110           e
1111           f



0554動画直リンNGNG
http://homepage.mac.com/hitomi18/
0555デフォルトの名無しさんNGNG
>>553
あんたは偉いな

>>550
プログラミング以前に勉強することがあるようだな
とりあえずコンピュータの基礎から始めろ
0556デフォルトの名無しさんNGNG
コンピュータの基礎やっても意味ないよ。無関係だから。
0557デフォルトの名無しさんNGNG
>>550
>0x15aaは何進数
C言語の場合、数字の前に0x書くと、その数値は16進数表記していることを意味する。
なお、数字の前に0を書いた場合は8進数。

#include <stdio.h>

int main(){
int a = 010;
int b = 10;
int c = 0x10;

printf(" 8進数 : %o %o %o \n",a,b,c);
printf("10進数 : %d %d %d \n",a,b,c);
printf("16進数 : %x %x %x \n",a,b,c);

return 0;
}
0558デフォルトの名無しさんNGNG
>>556
壮絶なアホを発見。
0559デフォルトの名無しさんNGNG
556 名前:デフォルトの名無しさん * sage 本日のレス 投稿日:03/05/17 13:25
コンピュータの基礎やっても意味ないよ。無関係だから。
0560デフォルトの名無しさんNGNG
>>550
こういう入門書の一冊も読まずに質問するやつは無視してほしい。
0561デフォルトの名無しさんNGNG
そこまで責めなくても・・・
0562デフォルトの名無しさんNGNG
>>561

>>560は幼いが言ってることは一理ある。死んでくれ。
0563デフォルトの名無しさんNGNG
>>547
プッ、やっぱり書けないだ。

それとも >>549 が答えなのか ?
0564デフォルトの名無しさんNGNG
>>563は幼いが言ってることはもっと幼い。死んでくれ。

ガキじゃねえんだから......
0565デフォルトの名無しさんNGNG
563 名前:デフォルトの名無しさん 本日のレス 投稿日:03/05/17 14:34
>>547
プッ、やっぱり書けないだ
0566デフォルトの名無しさんNGNG
ああ、今日は学校が休みなんだな
0567デフォルトの名無しさんNGNG
>>564-566
あんたの知ってるデバッグ方法とやらを書けばいいだけなのにねぇ...。
0568566NGNG
>566
漏れはデバッグ方法なんかしらねえ
勝手に人違いするな
0569566NGNG
>567だった
鬱だ詩嚢
0570デフォルトの名無しさんNGNG
>>567
標準出力が使える場合: printf
エラー出力なら使える場合: frpintf(stderr, ...)
どちらも使えない: fp=fopen(...);fprintf(fp, ...)
0571デフォルトの名無しさんNGNG
漏れの場合、おまいらと違ってバグを出さないから
デバックは不要なんだよな・・・
ま、せいぜいガンガってくれ。
0572デフォルトの名無しさんNGNG
バグを出さないプルグラマはただのプルグラマだ
0573デフォルトの名無しさんNGNG
ちょっとずつ書きながら確認してるからデバッグなんかしないし。
0574デフォルトの名無しさんNGNG
>>573
ワラタ
0575デフォルトの名無しさんNGNG
あ?とりあえずは>>573的な方法でやってるが。
あとはデバッガーでトレースするとか。
それでも駄目なら、>>570か。

というか、そもそも
548 :デフォルトの名無しさん :03/05/17 09:38
デバッグの方法を教えてください。

ネタだろ?がっつくなよ。
0576デフォルトの名無しさんNGNG
構造体のビットフィールドがよく分かりません。
どのHPも扱ってなかったので2chに頼るしかなくなりました。
どうか教えて下さい。
0577デフォルトの名無しさんNGNG
あまり使わないもんだが、普通入門書でも説明されてるだろう。
0578デフォルトの名無しさんNGNG
>>576
環境依存するので使用は控えましょう
0579デフォルトの名無しさんNGNG
おまいら教えてやれよw
0580576NGNG
おまえらとっととおしえろよ
0581デフォルトの名無しさんNGNG
「構造体のビットフィールド」で検索すればいろいろでてくるが、
>>578のいうとおり。
0582デフォルトの名無しさんNGNG
#include<stdio.h>
main()
{
int i,x=2;
for(i=1;i<1;i++){
x=x*x;
}
printf("%d");
}

実行結果は「2」となります。

変数xに2を代入して二乗、それをもう一回二乗させて4という
答えを出したいんですが。できません。。。
何が間違っているかもわかりません。
教えてください。
0583デフォルトの名無しさんNGNG
まあどこがわからないのか書いた方が答える方も答えやすいわな
0584デフォルトの名無しさんNGNG
printfの行をよく見ろ。
0585デフォルトの名無しさんNGNG
>>582
for文の中にprintf("hello!\n");
とでも入れてみろ
画面には何がでる?
0586デフォルトの名無しさんNGNG
> 2を代入して二乗、それをもう一回二乗
16
0587576NGNG
>>577-581
ありがとうございます。おかげで分かりました。
使うのは避けたほうがいいんですね。1つ勉強になりました。
ありがとうございます。
0588デフォルトの名無しさんNGNG
for文も通らないだろ
0589デフォルトの名無しさんNGNG
>>582
そのループは1度も(ry
0590デフォルトの名無しさんNGNG
>>582
凄いコードだなw
0591デフォルトの名無しさんNGNG
>582
printf("%d"); > printf("%d",x);
for(i=1;i<1;i++) > for(i=1;i<2;i++)

これで4になると思うけど
0592582NGNG
for文がおかしい気もしますが
一回ループします
i=1は一回ループしたあと、設定されているようです。

i<=1,i<1,i<=2などいくつか試したんで
間違いないと思います。


> 2を代入して二乗、それをもう一回二乗
16
↑
すいません、そうです。
二回2乗させて16です。

0593582NGNG
>>591
ありがとうございます。

printf("%d"); > printf("%d",x);
↑
これに気がつきませんでした。

for(i=1;i<1;i++) > for(i=1;i<2;i++)
↑
これは、僕もそう思います。
ただ、何故かいろいろ実行して試してみると。。。

とにかく、ありがとうございました。
いろいろやってみます。
0594デフォルトの名無しさんNGNG
http://www.h3.dion.ne.jp/~oto/
0595デフォルトの名無しさんNGNG
>>592
もう一度for文を説明しているページをよく読め。 
0596582NGNG
>>591
>for(i=1;i<1;i++) > for(i=1;i<2;i++)

今、やってみたけど、
やっぱり、これであってました。

僕がミスってました。
すんません。。。
そして、ありがとう。
0597デフォルトの名無しさんNGNG
まともに解説してある入門書があったら教えて欲しい項目。
・ビットフィールド
・sprintf()系、sscanf()系のフォーマット
・strtoken()の使いこなし
・qsort()/bsearch()の使いこなし
・暗黙の型変換
0598デフォルトの名無しさんNGNG
>>597
そういうのは入門書を読むようなレベルの人はまだ覚えなくてもいいです
0599デフォルトの名無しさんNGNG
>>597
>・ビットフィールド
使わなくてよし
>・sprintf()系、sscanf()系のフォーマット
MSDNで十分
>・strtoken()の使いこなし
使わなくてよし
>・qsort()/bsearch()の使いこなし
使わなくてよし
>・暗黙の型変換
MSDNで十分
0600デフォルトの名無しさんNGNG
いつも思うけど、プログラム系の参考書って高いよな。
0601デフォルトの名無しさんNGNG
>>597
> ・ビットフィールド
>>578,>>581

> ・sprintf()系、sscanf()系のフォーマット
オンラインマニュアル

> ・strtoken()の使いこなし
これは漏れも知りません。
strtok()のことなら使いにくいので無理して覚える必要なし。

> ・qsort()/bsearch()の使いこなし
> ・暗黙の型変換
>>598
0602デフォルトの名無しさんNGNG
>>599
その使わなくてよし(ビットフィールド以外)というのは>>598の理由で?

>>600
買う人が限られているからかな?医療系はさらに高いらしいね。
0603デフォルトの名無しさんNGNG
sprintf/sscanfに関しては キーワード:書式指定子 で検索しれ。

strtokやqsortは、MSDNで
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_CRT_qsort.asp?frame=true
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt_strtok.2c_.wcstok.2c_._mbstok.asp?frame=true

シミュレータ系のプログラム組んでるけど、
sprintf/sscanf以外、どれもこれも使った記憶ないよ(笑

大切なのは「必要なときに必要な情報を検索できること」れす。
がんがれ。

*そういえば友人が作ったプログラムで、高速化のためにフラグを全部
ビットフィールド風に扱っているのがあったなぁー
0604デフォルトの名無しさんNGNG
C言語で構造体を使う方法を教えてください。
0605デフォルトの名無しさんNGNG
>C言語で構造体を使う方法を教えてください。
使わなくてよし
0606デフォルトの名無しさんNGNG
>>604
char s[200];int a,b;
&s[0] = a;
&s[sizeof(int)] = b;
0607デフォルトの名無しさんNGNG
>>606
いい太古とはわかるが、違うだろ。
0608デフォルトの名無しさんNGNG
>>568-569
ああ悪い、「唐突にわけわからんこと書くなヴォケ。」だったな。

>>570
>>563 → >>549 で既出のことを今頃のこのこ書いてて恥ずかしくないの ?
0609デフォルトの名無しさんNGNG
>>606
3,4行目は正しいの?
0610デフォルトの名無しさんNGNG
>>608
ニチャニチャ
0611デフォルトの名無しさんNGNG
>>607
全然わからない。>>606は何を言いたいの?
0612デフォルトの名無しさんNGNG
>>611
ボケてるんだよ。わかってやれよ
0613デフォルトの名無しさんNGNG
>>612
ねたを書くならわかるけど、ホントにボケててどうするよ。

*(int *)&s[0] = a;
*(int *)&s[sizeof(int)] = b;

って書かなきゃ。
0614デフォルトの名無しさんNGNG
>>613
それをマクロで定義しとけば構造体( ゚�听)イラネ
0615デフォルトの名無しさんNGNG
>>597
とりあえず、「ANSI C言語辞典」でも買っておけ。
0616デフォルトの名無しさんNGNG
>>603
>*そういえば友人が作ったプログラムで、高速化のためにフラグを全部
>ビットフィールド風に扱っているのがあったなぁー

ビットフィールドの方が参照に時間かかりそうだけど…。
ちょっと興味あるから詳細キボヌ。
0617デフォルトの名無しさんNGNG
>597
 僕が比較的妥当な内容だと思う本なので、あなたにとってベストか分かりませんが...
 「C言語 関数の使い方+作り方」(技術評論社刊)、辞典と言う形態ですが「ANSI C言語辞典」(同)
の2冊があれば標準関数の理解には充分かと思います。
 標準関数の中には、たとえ使わなくても、理解する価値があるものが多いです。str、scanf系は特にそう思います。
 これらを読んでも分からない事は、他の本やnetの情報を拾い読みすると良いと思います。
 がんばって下さい。
0618デフォルトの名無しさんNGNG
scanfは標準出力のバッファをフラッシュするの?
0619デフォルトの名無しさんNGNG
( ´_ゝ`)プッ
0620デフォルトの名無しさんNGNG
文字に色つけたいんだけど無理?
0621デフォルトの名無しさんNGNG
コンパイルして実行するとなにかキー押すまでDOS画面が閉じませんが
exeファイルから実行するとキー押す前に消えてしまうのですが
消えなくする方法ありませんか?    
0622デフォルトの名無しさんNGNG
getchar();
0623デフォルトの名無しさんNGNG
>>621
プロパティで
「プログラム終了時にウィンドウを閉じる」
のチェックをはずせばよいよいよい。
0624デフォルトの名無しさんNGNG
>>620
このスレ的な答えは「標準Cではできない」だが、
OSなどの環境くらい書こうよ。
0625デフォルトの名無しさんNGNG
>>620
マジックで塗れ。

と言う冗談はさておき、環境依存だからあんたの環境にマッチしたスレへ Go!!
0626デフォルトの名無しさんNGNG
ネタは結構(^_^;)
マジレス希望
0627デフォルトの名無しさんNGNG
>>623
exeファイルのプロパティですか?
見当たらないのですが(;´Д`)
0628デフォルトの名無しさんNGNG
>620
SetTextColor();
0629デフォルトの名無しさんNGNG
>>627
プロパティがないのか項目がないのか。
そもそもOSは何だ?
0630デフォルトの名無しさんNGNG
>>629
そのOS is Windowsみたいな発言止めてくれんか?恥ずかしい。
0631デフォルトの名無しさんNGNG
>>630
DOS画面とかexeとか言っているあたり、Windowsしか考えられないが。
0632デフォルトの名無しさんNGNG
家のパソコンは常時DOS画面なんだよw
0633デフォルトの名無しさんNGNG
>>630=犬厨(プ
0634デフォルトの名無しさんNGNG
>>629
(;´Д`)項目が見つかりません
     OSはXPです

                  
0635デフォルトの名無しさんNGNG
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです
OSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPですOSはXPです

火に油をどぷどぷと・・・
0636デフォルトの名無しさんNGNG
漏れはいまだに95使ってるってのに、
XPなんて贅沢だ!
0637デフォルトの名無しさんNGNG
独学で勉強しているのですが、MSDNの読み方がよくわかりません。

例えば、
scanf("%d" ,&num);
は
scanf("変換仕様", &変数)
というように学んだのですが、MSDNの説明で

int scanf( const char *format [,argument]... );
の場合、意味がわかりません。

MSDNの読み方を説明しているサイトってありますか?
0638デフォルトの名無しさんNGNG
Vine Linux2.5上のemacsでC言語を書いてるんですが、
emacsで文法ごとに色分けしてくれる設定ってないですかね?
知ってる人教えてください。お願いします。
0639デフォルトの名無しさんNGNG
(;´Д`)で結局、どうやって閉じないようにするんでしょうか、、、
0640デフォルトの名無しさんNGNG
>>637
辞書でも引け
0641デフォルトの名無しさんNGNG
>>639
だからスレ違いなんだってばさ。

>>638
文法ごとって?
特定のキーワードに色をつけるコードはあったと思うけど。

>>637
その、const char*formatが君の習った変換仕様の型だ。
MSDNの読み方以前にCの文法の勉強をした方がいいんじゃないのか?
0642デフォルトの名無しさんNGNG
>>639
だからgetch();かgetchar();を最後に入れろと。

>>637
返り値がintで関数名がscanfで
引数の一個目の型がconst char*で、場合によっては追加の引数があるということ
0643デフォルトの名無しさんNGNG
>>637
誰かに教えてもらわないと無理よ。いくら高級言語でも独学では非常に
厳しいわよ!昔の私がそうだったように!ある程度教わったら基本情報の
試験受けなさい。(私のころは第2種)たとえ落ちても、第2種の試験勉強
してればわかるようになるわ!
0644デフォルトの名無しさんNGNG
>>620
そうそう書き忘れたけどprinf("\xlb[色番号 m");
でも色が変わるわよ!
0645デフォルトの名無しさんNGNG
>>644
残念ながらそれじゃかわらんな
0646デフォルトの名無しさんNGNG
なんで皆して環境依存の話してるんだよぅ
0647デフォルトの名無しさんNGNG
>>644
win98以前でないとDOSのエスケープシーケンスコードは使えんかった気がする。
俺のマシン、XPだから確認不可能なんだけどね。
0648デフォルトの名無しさんNGNG
ってかそれ以前に「l」は16進数でないだろ
0649デフォルトの名無しさんNGNG
winとかdosしか知らん連中が多いのぅ...その上みーんな自分と同じ環境と思うておるんかのぅ....
0650デフォルトの名無しさんNGNG
Windows のシェアからしてしょうがない。
0651デフォルトの名無しさんNGNG
定期的にこの話題と会話がでてくるよなぁ
0652デフォルトの名無しさんNGNG
シェアが大きいと、そうなるんかの? なんだかしょっぱいオツムだのぅ...。
0653デフォルトの名無しさんNGNG
win、dos、mac、nuix、後他に何がありましたっけ?
0654デフォルトの名無しさんNGNG
>>653
お前はしゃべらんでええよ。
0655デフォルトの名無しさんNGNG
>>654 ごめん・・・
0656デフォルトの名無しさんNGNG
>>655
元気出せ。
0657620NGNG
一応環境っと
OS windows 2000
コンパイラ gcc
環境に依存するスレってどこだろ?Σ(゚Д゚;≡;゚д゚)ドコ?
0658デフォルトの名無しさんNGNG
strcspnを使って文字列から特定の文字列を切り出そうとしているのですけれど
2バイト文字の1部が一致するためそこで勝手に区切られてしまうのです。
charset"[]"を使って切り出そうとしたんですけど2バイト文字"ー"が81 5Bで
"["は5Bなので"["でないのにそこまでの文字数しか返してくれないのです。
2バイト文字の存在を考慮した場合どういう考え方で処理を書かないといけないでしょうか?
0659デフォルトの名無しさんNGNG
なんかUNIXとか知ってる奴って偉そうで嫌味っぽいな。
0660デフォルトの名無しさんNGNG
char[]から1文字(=1byte/2byte)を取得する関数を作ればいい。

使用する文字コードにもよるが、
読み込んだ文字が1byte文字の範囲ならばそのまま返し、
2byte文字ならば更に次の文字を読み込んで結合して返せばよろしいかと。
0661デフォルトの名無しさんNGNG
>>658
S-JISなら1byteずつ読んで8x,9x,Exの時は次のbyteを飛ばす
0662デフォルトの名無しさんNGNG
>>657
Windows2000 で gcc か...。
Cygwin とかは入れてないってことだな。

とりあえず、

Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/

が一番近いかと。

ただ Win2K + gcc の組み合わせで使ってる人ってあまりいないから、自分で色々調べることができないと辛いと思うよ。

>>659
まあ、ここは「C言語」のスレだから Windows 前提で来られても困る。
嫌味と言うのは、個人に属することなのでコメントはしないけど。

>>658
strcspn() は2バイト対応じゃないからしょうがない。
環境はよくわからんけど、_mbscspn() みたいな奴はないのか ?
0663620NGNG
>>662
あ、cygwin上のgccでした。説明省いてスマソ。とりあえずそこ見てみます。
0664デフォルトの名無しさんNGNG
>>659
それは厳密には、「Linux」を使ってる奴ら、な。
奴らと一緒にしないでくれよ。
0665デフォルトの名無しさんNGNG
>>663
Unix 板の Cygwin スレにでも行くと吉。
0666デフォルトの名無しさんNGNG
定数はマグロにするといいと聞いたのですが、どういう意味なんでしょうか?
マグロ関数とかと何か関係があると想像してるんですが・・・
0667デフォルトの名無しさんNGNG
もっとひねれ
0668デフォルトの名無しさんNGNG
>>663
だから環境はきちんと書けとあれほど...
0669デフォルトの名無しさんNGNG
久しぶりに C でプログラムを書いてみたのだけど、 Java に慣れきってしまったせいで、
エラーだしまくり ^^;

昔はすらすら書けたのになぁ、、、
0670デフォルトの名無しさんNGNG
夢・独り言
http://life.2ch.net/yume/
0671デフォルトの名無しさんNGNG
人生相談
http://life2.2ch.net/jinsei/
0672デフォルトの名無しさんNGNG
>>643
基本情報の勉強だけではC言語なんて身に付かないと思うけど。
あれはあくまでも用語の勉強。
0673632NGNG
嘘だよ
0674デフォルトの名無しさんNGNG
ベクターワークスを使っていて、ある操作(編集→すべてを選択、加工→合成)で必ず、Microsoft VisualC++ Runtime Library     RuntimeError!
abnormalprogramtermination と表示されOKするとそのアプリが強制終了になってしまします。
そのときは OK しかクリックできません。スレ違いかもしれませんけど、たどり着いたのがここでした!
0675658NGNG
_mbscspn()を使うと簡単に出来てしまいました。662さんありがとうございます。
ですがこのまま判らないままにするのもアレなのでちょっと2バイト文字について
勉強してみようと思います。せめてこの部分が自力で実装できるぐらいにー。
660,661さん参考にさせていただきます。


とりあえずShift-JISが何たるかから・・・。
0676デフォルトの名無しさんNGNG
>>674
帰れ
0677デフォルトの名無しさんNGNG
>>675
それ以前に、VC++ とか使ってるんだろうから、質問する時はそっちのスレにした方がいいよ。

★初心者にVisual C++を教えるスレ★ Part6
http://pc2.2ch.net/test/read.cgi/tech/1052931903/
0678デフォルトの名無しさんNGNG
nCrの計算てどんな風に書けばいいんでしょうか?
0679デフォルトの名無しさんNGNG
再帰関数で>>678
0680デフォルトの名無しさんNGNG
float.h を眺めていると、LDBL_DIG が 15 で、DECIMAL_DIG が 17 と
定義されていたのですが、どうして DECIMAL_DIG の方が大きいのでしょう?
自分の理解ではこの2つは同じでないといけないと思うのですが。
0681デフォルトの名無しさんNGNG
>>679
再帰使う必要あるか?
0682デフォルトの名無しさんNGNG
>>680
>>643
0683デフォルトの名無しさんNGNG
よく調べたら定義上違って当然だった(汗
同じになるのは基数が10の整数乗の場合です、はい…
0684680NGNG
683 = 680 です、すいません。
0685デフォルトの名無しさんNGNG
処理系ってコンパイラのことっすか?
0686デフォルトの名無しさんNGNG
volatileって使い道あるんですか?
0687デフォルトの名無しさんNGNG
>>685
コンパイラとかインタプリタとか。
0688デフォルトの名無しさんNGNG
>>686
ある。

マルチスレッドとか、デバイス制御とかやってると必須。
要するに自分以外が変数を勝手に書き換えちゃったりする時に使う。
0689デフォルトの名無しさんNGNG
>>688
よくイメージがわかない・・
constと違うんですか?
0690デフォルトの名無しさんNGNG
コンパイラが最適化するのを防ぐのもある
0691デフォルトの名無しさんNGNG
>>690
そのためにあるんじゃ・・・・
0692デフォルトの名無しさんNGNG
autoと単項+演算子以外は意味がある。
0693デフォルトの名無しさんNGNG
volatileの説明に
その変数の値が、明示的に定義されていない方法で変更され得ることをコンパイラに
知らせることになる。
と書いてありました。「明示的」?
0694デフォルトの名無しさんNGNG
>>689
const は、そのシンボルを通じて書き込みが出来ないと言う指定。
volatile は、現在動いているプログラムとは違う要因で書き換えられる事がある、と言う指定。
0695689NGNG
>>694
例えばどのようなことでしょう?
0696デフォルトの名無しさんNGNG
while(a);
一見aの値が変わらないように見えるから無限ループだけど、もしも他の要因でaが書き換えられることがあったら・・・
でもそんなことコンパイラは分からないから、volatileつけないと条件式すらなくして完全な無限ループにしてしまうかも。
0697デフォルトの名無しさんNGNG
>>695
他のスレッドやハード的な要因で書き変わることが有り得る、と言うこと。
0698696NGNG
あ、aの初期値が0以外の場合ね
0699たすけて〜NGNG
DirectInput8.1 なんですけど、
一度だけ、キー判定したいのだが、
これだと何故か、連続判定してしまいます。
ああ、アクションゲームが作れないよ〜。
だれか、教えてください。

BOOL GetKeyOnce( BYTE bKey )
{
static bool bb_Flag = true;

// キーボードの更新
lpDevKeyboard->GetDeviceState( 256, KeyboardData );

// キーが押されているか
if ( KeyboardData[bKey] & 0x80 && bb_Flag == true )
{
bb_Flag = false;
return TRUE;
}
// キーが押されていない
else
{
bb_Flag = true;
return FALSE;
}
return FALSE;
}
0700デフォルトの名無しさんNGNG
volatileつけると、勝手にレジスタに配置したりしなくなるんだっけ?
0701デフォルトの名無しさんNGNG
>>689
標準 C じゃねぇだろ!
カエレ!
0702デフォルトの名無しさんNGNG
>>696
なんとなく分かったような気がしました。
でも他の要因って??馬鹿ですいません
>>697
プログラムと関係のないところで変数が変わるんですか?
0703701NGNG
>>701
× >>689
○ >>699

鬱だ…
0704デフォルトの名無しさんNGNG
便乗ですが、構造体やクラスのメンバの場合でも volatile の指定が必要に
なる(メンバがそのような最適化の対象になる)ことはあるでしょうか。
0705デフォルトの名無しさんNGNG
>>704
一部のメンバーをってのは無理だろ?
構造体変数全体を。
0706デフォルトの名無しさんNGNG
メンバにvolatile付いてるのは何か間違ってる可能性が高いと思われ。
0707デフォルトの名無しさんNGNG
>>702
一番試しやすいのはシグナルによって呼び出される関数かな。
0708デフォルトの名無しさんNGNG
>>707
すいません。まったくわかりません。
まだまだ初心者ですね>俺
Cはじめて1ヶ月なのでまだまだ勉強しないと。
出なおしてきます。答えてくださったみなさんありがと。
0709デフォルトの名無しさんNGNG
プロでも分野によっては全然使わないと思う。
0710デフォルトの名無しさんNGNG
>>702
対象のオブジェクトが、ハード的に変化するようなレジスタとかな。
0711704NGNG
>>705-706
なるほど、機械語レベルの話はよく分からないのですが、メンバが
最適化される可能性はないと考えていいのですよね。
0712706NGNG
>>711
そんなことは言ってない。
0713デフォルトの名無しさんNGNG
すいません。消えたはずの>>708です
ぐぐってみたのですが、英語ばっかだったので無理でした。
英語力も重要ですね。
>>709
そうですか。使わない分野に進みたいです。
>>710
すいません。PC内部?的なことはさっぱりです
0714デフォルトの名無しさんNGNG
>>711
メンバーには型しか指定できず、記憶域などは指定できないんじゃないかということ。
0715714NGNG
ちなみに、C++のクラスは知らない。C++しらないから・・・
0716711NGNG
>>711,>>714
volatile を根本的に誤解していました。宣言時ではなく定義時に
どこに取るかということなんですね。
0717706NGNG
>>714
volatileは記憶域の指定じゃない。
0718714NGNG
>>717
記憶域"など"だってば。
0719デフォルトの名無しさんNGNG
>>705
今し方、VC でテストプログラムを組んだ所、
問題なくコンパイル出来ますた…。(;´Д`)
0720デフォルトの名無しさんNGNG
>>719
まじだ(;´Д`)
gccで-ansi -pedanticつけても通る(;´Д`)

意味上ではどうなるんだろ。
0721デフォルトの名無しさんNGNG
staticはだめか。
記憶域指定だけがだめなのかな。
0722719NGNG
>>721
VC では通ったぞ?(;´Д`)
0723デフォルトの名無しさんNGNG
>>722
gccではパースエラーになったよ。

struct testkozotai{
int n;
static int c;
};
0724デフォルトの名無しさんNGNG
>>722
c++でコンパイルしてるんじゃない?
0725706NGNG
volatile修辞された変数へのアクセスは省略されず、
シーケンスポイントをまたいで順序変更されないことが保証される。

構造体メンバを修辞しても意味は同じ。

ってことでよろしいか?
0726719NGNG
>>723
そう言う意味か…。
static に volatile 宣言だと(ry
0727デフォルトの名無しさんNGNG
>>702
>>469
0728デフォルトの名無しさんNGNG
分岐命令で次の命令の先頭アドレスを基準に分岐先を
指定しているアドレス指定方式はなんて呼ぶんだ?
0729デフォルトの名無しさんNGNG
相対アドレス指定か?
すれ違いだ
0730728NGNG
>>729
どこで聞けばいいか分かんなかったから
とりあえず分かる人がいそうなここに書いちまったスマソ


気が向いたらこっちも教えてくれ
出力ポート・入力ポートのアドレスを指定しているアドレス指定方式は?
0731デフォルトの名無しさんNGNG
情報処理の勉強したほうが早いぞ
0732728NGNG
>>731
情報処理の勉強中なわけなんだが_| ̄|○
0733デフォルトの名無しさんNGNG
>>732
プログラマ板にスレがあるぞ
0734デフォルトの名無しさんNGNG
>>730
「相対」とくれば、「絶対」だろうに。
0735デフォルトの名無しさんNGNG
ちがうよ
0736デフォルトの名無しさんNGNG
いいえ、その通りです
0737デフォルトの名無しさんNGNG
main 関数で、
main(int argc, char **argv)
と
main(int argc, char *argv[])
の2つがありますが、好きなほうをつかっていいのですか?
0738デフォルトの名無しさんNGNG
main(int argc, char *argv[])で
argc argvはなんて読めば良いのですか?
0739デフォルトの名無しさんNGNG
>>737
相互に置き換え可能。
同様に、
char *strfunc(char *s);
と言う関数宣言があったとすると、
char *strfunc(char s[]);
と宣言しても構わない。
まぁ、混ぜると読みにくいから適当に統一しとこうや。

>>738
ぐぐればいろいろ出てくると思うぞ。
私は「アーグシー、アーグヴイ」と読んでるが。
0740デフォルトの名無しさんNGNG
>>739
> 同様に、
> char *strfunc(char *s);
> と言う関数宣言があったとすると、
> char *strfunc(char s[]);
> と宣言しても構わない。

宣言も置き換え可能なのですか。
知りませんでした。

ありがとうございます。
0741デフォルトの名無しさんNGNG
>>738
アーグシー、アーグブイ
0742デフォルトの名無しさんNGNG
>>740
念のために付け加えるけど、宣言で置き換え可能なのは
関数のパラメータの場合だけだからな。

関数の戻り型は置き換えできない
char *strfunc(char *s); → char strfunc(char *s)[];(できない)

し、大域変数も置き換えできない
char *str; → char str[]; (できない)
0743デフォルトの名無しさんNGNG
>>742
補足しとこう。

> 関数の戻り型は置き換えできない
> char *strfunc(char *s); → char strfunc(char *s)[];(できない)
これは宣言自体ができない(syntax error)。

> し、大域変数も置き換えできない
> char *str; → char str[]; (できない)
この二つは意味が異なる。
0744デフォルトの名無しさんNGNG
struct aho{
struct x xx;
struct y yy;
}*baka;
struct hoge{
struct x xx;
struct y yy;
}piyo;
上記のような構造体があり
bakaをpiyoにコピーしたいんですが
memcpyはキケンと耳にしました。
ホカに方法があるのでしょうか?
ごきょうじゅおねがいいたします。
0745デフォルトの名無しさんNGNG
>>744
piyo.xx = baka -> xx;
piyo.yy = baka -> yy;
0746デフォルトの名無しさんNGNG
bakaをpiyoにはコピーできないと思うが。
#彼方ポインタ、此方実体。

また、全く同じ構造の違った名前の構造体を設計するのを止めた方がいい。
0747デフォルトの名無しさんNGNG
piyo = *baka;

じゃだめなの? bakaが何指してるかは置いといて。
0748デフォルトの名無しさんNGNG
>>747
全然ダメ。
0749デフォルトの名無しさんNGNG
memcpyも >>747 もOKと思うんだが。
比較と間違えてない? >>744
0750747NGNG
あ、typedefしといてキャストすればいいのか! ついうっかり。
0751デフォルトの名無しさんNGNG
>>749
一応memcpyでも大丈夫ではあるけど、
いくらメンバが同じでも違う構造体をメモリコピーするのはあまりよろしくない
過去ログにあったと思うが、メンバの変更とかが容易に出来なくなるから
0752デフォルトの名無しさんNGNG
質問スレでそういう無作法を堂々と教えないように。
0753デフォルトの名無しさんNGNG
そもそも何で同じ構造の二つの構造体があるのかと
聞くほうが大切ではないかね?
0754デフォルトの名無しさんNGNG
そりゃそうだ。
0755デフォルトの名無しさんNGNG
自分自身のexeのパスを取得するにはどうしたらいいですか?
0756デフォルトの名無しさんNGNG
>>755
そういうのはWin32API質問箱スレのがいいんじゃないかな。。
一応GetModuleFileNameとかで取得できたと思うけど
0757デフォルトの名無しさんNGNG
>>756
Win32API使わないと無理でしたか・・・。
ありがとうございました。
0758デフォルトの名無しさんNGNG
フルパスで起動してくれればargv[0]を参照することで調べられるんだけどな(^_^;)
0759デフォルトの名無しさんNGNG
>>374
デフォルトコンストラクタは呼ばれるけど、
int とかだと「何もしない」んで値は未定。

ただ、変数が静的だと 0 で初期化される。
これは C と同じ。

あと、1 つでも初期化したら後ろは全部 0 で初期化される。
だから、
 int vec[100] = { 0 };
ってやったら全部 0 で初期化される。
これも C と同じ。

int new したときは fill_n でも使って初期化汁。
0760デフォルトの名無しさんNGNG
C++スレからの誤爆か?
0761デフォルトの名無しさんNGNG
犬の糞みたいな名前のOSが死滅するって本当ですか?
0762デフォルトの名無しさんNGNG
>>756
正直、環境も聞かずにそう答えるのもどうかと思われ。
0763デフォルトの名無しさんNGNG
>>762
exeと言ったら(ry
0764デフォルトの名無しさんNGNG
>>763
OSの察しはつくかもしれんが、コンパイラが(ry
0765デフォルトの名無しさんNGNG
>>764
コンパイラが何?
0766デフォルトの名無しさんNGNG
>>765
WIN32API等がつかえるコンパイラかどうか判断できない、ということでわ
0767デフォルトの名無しさんNGNG
地球のみんな、オラに少しだけC言語の知識を分けてくれ。
0768デフォルトの名無しさんNGNG
  ○

  火
0769こうだろNGNG
  C

  火
0770がんばってあつめたんだがNGNG
   c

  火
0771デフォルトの名無しさんNGNG
%lu は 符号なしの long 型ということでOKですか?
変換指定子が2つ続くのははじめてみたので。
0772デフォルトの名無しさんNGNG
%ldってのもあるし。
0773デフォルトの名無しさんNGNG
%ld hoge.o -o hoge
%./hoge
0774デフォルトの名無しさんNGNG
リンカ〜かよ
0775デフォルトの名無しさんNGNG
DOS窓のサイズは機種依存ですか?僕のは25X80ですが。
0776デフォルトの名無しさんNGNG
>>775
25桁しかないとは窮屈だな。
うちのは80*1000あるぞ。
0777デフォルトの名無しさんNGNG
>>775
スレ違い
0778デフォルトの名無しさんNGNG
>>776
すごいですね。Win32APIを使えばサイズを変えられるのは知っていたの
ですが、画面に収まり切らないような気もするけど。
>>777
C言語のコードを書いて実行するとDOS窓がでるので、ココでいいのかなと。
すみません。
0779デフォルトの名無しさんNGNG
>>775
PC/AT互換機のテキストモードは
25x80
43x80
50x80
が使えるが、日本語は表示できない(当然)。
多分おまいはテキストモードを使ってない。
DOS「窓」なら機種依存ではなくOS依存だ。
0780デフォルトの名無しさんNGNG
>>778
スクロールバー・・・
多分、横が80で、縦が1000なんだよ。
0781775NGNG
>>779
教えてくれてありがとう。調べないで質問したので、サイズにパターンが
ある、テキストモードのことを知りませんでした。調べてきます。
>>780
なるほど。そうですよね。
0782デフォルトの名無しさんNGNG
つーか、どこが言語の質問だよ。
0783デフォルトの名無しさんNGNG
今日の流れはホノボノなのか殺伐なのか・・・
0784775NGNG
>>782
ほんと勘違いしてました。すみません。
>>783
ああっ、僕のせいです。すみません。
0785デフォルトの名無しさんNGNG
enum LENGTH{
LONG, MIDDLE, SHORT
};
enum SIZE{
LARGE, MIDDLE, SMALL
};

"MIDDLE"はかち合ってしまいますか?
0786デフォルトの名無しさんNGNG
>>785
かちあってしまいます。MIDDLE単体で使用するから。そうなるとenumの
名前はプログラム的には別に必要ないような気が。識別するための物かな。
0787デフォルトの名無しさんNGNG
プログラムで再帰的関数を使うと
なぜ処理が遅くなってしまうんですか?
論理を教えてくださいまし
0788デフォルトの名無しさんNGNG
>>785
Cのenumは使い勝手が悪い。
enum LENGTH{
LENGTH_LONG, LENGTH_MIDDLE, LENGTH_SHORT
};
とでもしれ。

しかし、それくらい試してから聞けよ。
0789デフォルトの名無しさんNGNG
>>787
関数を呼ぶのに(スタック)時間がかかるから。
0790動画直リンNGNG
http://homepage.mac.com/hitomi18/
0791デフォルトの名無しさんNGNG
その関数を呼ぶのにスタックがかかってしまうのは再帰的関数だからですか?
再帰的関数の中では何が起こってしまうのでしょうか。
おせーてくださいまし
0792デフォルトの名無しさんNGNG
後再帰とかは、逐次的(いわゆるループ)に書き直せる。
この場合、逐次的に処理した方が処理が速い。

で、なんでかというとだね、関数呼び出しを
「パラメータと結果の返信先を手紙に書いて相手に渡す」
ようなもんだと考えるとわかりやすい。

結局自分で処理をするのに、いちいち自分宛の手紙を書いて自分で受け取る。
手紙の指示に従って処理をして次の手紙を書いて、自分で受け取る。

手間がかかるだろ?

でも、パラメータを一覧表(ループ)にして、順に処理していくだけなら
手紙を書く手間が省けるってもんだ。
0793デフォルトの名無しさんNGNG
神よありがとうございますたー。
助かります。
0794デフォルトの名無しさんNGNG
手紙を書く、と書いたのを実際の内部処理に置き換えてみると
1.パラメータをスタックっていう、メモリにコピーする
2.処理が終わった後の戻り先を、スタックっていうメモリにコピーする
になる。

ついでに手紙を受け取る先では、今まで処理してた内容を忘れないように
スタックっていうメモリに作業用のメモ書き(変数)をおいておいて、
2度目に再帰的に呼ばれた場合でも前の作業内容が消えないように
保存する必要がある。

再帰せずに一つのループで処理するように書くと、
スタックの利用が最小限で済むし、スタックへのコピーも最小限で済むし、
作業領域もメモにいちいち書かず頭の中(レジスタ)だけで処理できる場合がある
から、結果的に速くなるんだ。
0795デフォルトの名無しさんNGNG
bessel関数を計算する方法を教えて下さい
無限和を足していく方法が上手くいかなかったんです
0796デフォルトの名無しさんNGNG
enum EN1{ XX=0 };
enum EN2{ XX=1 };

int main()
{
enum EN1 hoge;
enum EN2 ho;
hoge = XX;
ho = XX;
printf("%d%d", hoge, ho);
return 0;
}

これなら問題ないでしゃうか?
0797デフォルトの名無しさんNGNG
>>796
>>788
> しかし、それくらい試してから聞けよ。
実際に試してみて、期待した動作になればそれでいいだろ。
0798デフォルトの名無しさんNGNG
>>794
遅くなる根本原因はスタック退避ではなくて呼び出し手続きのほうにあると思うのだが。
#パイプラインは壊れるし、デバッグオプションをつけていればスタックの監視も入るしね。
0799デフォルトの名無しさんNGNG
質問です。
forまたはwhileの繰り返しを使って(たとえ配列を知っててもつかわずに)、ある指定した数以下の
素数を全て出力するプログラムを作成しなさい。
また、作成したプログラムで指定した数をnとしたとき、プログラムでどのくらい繰り返しが
行われるを考察する
ということです。

具体的には前半部分では2〜100の素数を出力したいです。
後半部分では、適当な仮定をおいて、繰り返し回数をnの関数で与える
事(nが十分大きいとき、n以下の素数π(n)⇒n/lognという素数定理
を用いて考えたいです。

お願いします
0800デフォルトの名無しさんNGNG
800げっと

>>799
primeで検索
0801デフォルトの名無しさんNGNG
素数 "列挙" アルゴリズムを極めるスレ
http://pc2.2ch.net/test/read.cgi/tech/1018657457/
0802デフォルトの名無しさんNGNG
>>799
↓のスレに同じ問題と思われる書き込みがあるから、そっちにいってくれ。

C/C++の宿題やらせてください。6代目。
http://pc2.2ch.net/test/read.cgi/tech/1053045530/l50
0803デフォルトの名無しさんNGNG
C言語で文字列をコピーする方法を教えてくださいませ。
0804デフォルトの名無しさんNGNG
strcpy
0805デフォルトの名無しさんNGNG
>>802
もれ、プログラム組んで教えてあげたんだけど... 鬱だ...
マルチポストかよ...
0806デフォルトの名無しさんNGNG
>>805
そして見たら、プログラム間違えてて更に欝だ...
0807デフォルトの名無しさんNGNG
fopenでファイルを開いたあとはどうすればいいんでしょうか。
0808デフォルトの名無しさんNGNG
再帰関数を利用してのパスカルの三角形を作りたいんですが、
三角形の形までは作れましたが、nCrの計算の部分がわかりません。
どなたか軽い見本でも見せてくれればうれしいです
0809デフォルトの名無しさんNGNG
>>807
何かする必要性を感じないないなら、
何もしなければいいんじゃない?
0810デフォルトの名無しさんNGNG
中学数学も忘れちまった・・・
コンビネーションはn!/r!だっけ?
0811デフォルトの名無しさんNGNG
>>807
正常に開けたのなら、fcloseで閉じる
0812デフォルトの名無しさんNGNG
>>810
コンビネーションは n!/(n-r)!r!

とおもったらここは数学スレじゃねえな。
0813デフォルトの名無しさんNGNG
malloc(0);
場合は、何が返るんでしょうか?
freeしても安全ですか?
0814デフォルトの名無しさんNGNG
>>813
何が返るって、戻り値を調べればよいのでは?
0815デフォルトの名無しさんNGNG
C FAQ嫁
0816デフォルトの名無しさんNGNG
いつもNULLが返ってくるという保証はありますか?
0817デフォルトの名無しさんNGNG
>再帰関数を利用してのパスカルの三角形を作りたいんですが、
>三角形の形までは作れましたが、nCrの計算の部分がわかりません。
>どなたか軽い見本でも見せてくれればうれしいです
coco.
www.geocities.co.jp/SiliconValley-Oakland/1680/memo0012.html
0818デフォルトの名無しさんNGNG
心配なら0を渡すことがあるようなコードを書くなYO
0819デフォルトの名無しさんNGNG
>>818
0というケースがあるんです。
あんまり例外を作りたくないので。
0820デフォルトの名無しさんNGNG
malloc(sz ? sz : 1)

くらいの知恵は使おう。

MFCのソースあるならCStringの実装を真似てみてもいいかも。
0821808NGNG
>>817
ありがとうございましった
0822デフォルトの名無しさんNGNG
ファイル名の変更はどうやるの?
0823デフォルトの名無しさんNGNG
http://www.google.com/search?hl=ja&ie=Shift_JIS&q=C%8C%BE%8C%EA+%83t%83@%83C%83%8B%96%BC%82%CC%95%CF%8DX&lr=
0824デフォルトの名無しさんNGNG
rename
0825デフォルトの名無しさんNGNG
>>823
悲しいな。
一番上がPerlの話題だ。
0826デフォルトの名無しさんNGNG
Cでマルチタスクにする方法ってあるでしょうか?
0827デフォルトの名無しさんNGNG
>>826
環境依存じゃなかったかな
_beginthreadとかforkとか
0828デフォルトの名無しさんNGNG
すいません
UNIX-Cの標準関数が載ってるサイト知りませんか?
今までANCI-Cしか使った事なくて。
system系の関数とか詳細に載ってるとこあれば教えて欲しいです
0829デフォルトの名無しさんNGNG
Linuxだが、http://www.linux.or.jp/JM/

UNIXならmanで調べられると思うんだけど。
0830rNGNG
>>829
manだと目的から探すのが無理っぽいと思われ。
0831デフォルトの名無しさんNGNG
目的から探すなら本を買えよ・・・・
なんでも只で済まそうとするな
0832デフォルトの名無しさんNGNG
>>820
ありがとうございました。
無駄が増えますが、簡単で確実な方法はそれしかなさそうです。
0833デフォルトの名無しさんNGNG
webだと検索が楽な場合もあるんだよね
0834デフォルトの名無しさんNGNG
infoのlibcなら目的から探せそう
0835デフォルトの名無しさんNGNG
C言語を始めて三日目の厨房なんですが
早くも躓きました。

#include <stdio.h>

int main()

{
int i=2;
while(++i<15){
if(i%3==0){continue;}
printf("%3d",i);
}
return(0);
}

のプログラムはiが15以下の時で
iを3で割ったときの剰余が0の時
iを出力すると言うプログラムではないのですか?
実行すると

4 5 7 8 10 11 13 14

となり、どれも3で割った時の剰余が0ではなくて
理解できません。どなたかご教授お願いします。
0836デフォルトの名無しさんNGNG
>>835
すばらしい解釈だ
0837デフォルトの名無しさんNGNG
>>835
> iを3で割ったときの剰余が0の時
> iを出力すると言うプログラムではないのですか?

違います。剰余が0でない時にiを出力するプログラムです。
0838デフォルトの名無しさんNGNG
>>835
continue は「以下続ける」じゃ無くて、
「次のループ制御まで処理をすっ飛ばす」って意味なんで、逆です。
0839835NGNG
早速のご回答ありがとうございました。
逆に捉えていたとはまだまだ理解度不足のようなので
また1から勉強しなおします。
0840デフォルトの名無しさんNGNG
int i;
for(i = 2; i < 15; i++){
if((i % 3) == 0){ printf("%d\n", i); }
}
0841デフォルトの名無しさんNGNG
>>830
man -k 使えば?
0842デフォルトの名無しさんNGNG
マンコ
0843デフォルトの名無しさんNGNG
ついでに言うと i<15 は

15未満
  ~~~~~
0844デフォルトの名無しさんNGNG
15ミマンコ
0845デフォルトの名無しさんNGNG
a=((1-2*(r%2))*pow((r/2),2r)*cos((n+2r)*s))/(kai(r)*kai(n+r));

※int kai(int n)はあらかじめ定義された関数

この表現って間違ってるでしょうか?
次のようなエラーが出てくるんですが、どこがおかしいのかわかりません

関数呼び出しに ) がない(関数 main )
0846デフォルトの名無しさんNGNG
2r → 2*r
0847デフォルトの名無しさんNGNG
2rが変
0848デフォルトの名無しさんNGNG
>846-847
上手くいきました、有難うございます
0849デフォルトの名無しさんNGNG
初心者てかこれから初心者になろうと思ってるものですが
C言語でプログラムを作ったり走らせたりするにはどんなツールが必要ですが
教えてください。
初めに何を用意すればいいのかまったくわからなくて^^;ホントくだらない事
聞いてすみません、どなたか教えてください
0850デフォルトの名無しさんNGNG
>>849
Windows なら LSI-C 試食版 と Windows 付属のメモ帳があれば
とりあえずプログラムできる。
Borland C++ Compiler 5.5 でもいい。
こっちの方が本格的(というか、本格)。

UNIX なら cc か GCC が入ってるのが普通。
Linux なら GCC が入ってる。
これ使えば問題ない。

Mac OS X でも入ってるけど、
インストールパッケージになってるのでインストールが必要。
アプリケーション/Installers/Developer Tools/Developer.mpkg がそれで、
これ実行すればいい。
Project Builder って開発環境も一緒に入ってるよ。

Mac のクラシック環境なら...ごめん。知らない。
0851デフォルトの名無しさんNGNG
>>850
ありがとうございます
Windowsを使ってるのでBorland C++Compiler5.5を使ってみます
0852851NGNG
Borland C++Compiler5.5ってフリーソフトなんですよね?
同意文章に返金とかなんたらかんたらって書いてあってちょっと不安になったもので・・・
0853デフォルトの名無しさんNGNG
int kai(int n){
int k,res=1;

for(k=1;k<=n;k++){
res=res*k;
}
return res;}

int main(){
double s,a;
int n,r;
int sum=0;
int m=100,k=0;

s=(M_PI/m)*k;
for(r=0;-0.001<a&&a<0.001;r++){
a=((1-2*(r%2))*pow((r/2),2*r)*cos((n+2*r)*s))/(kai(r)*kai(n+r));
sum=sum+a;
}
printf("%1f",sum);
return 0;
}
0854853NGNG
pow: DOMAIN error
と出てきます
どこがおかしいか教えて下さい
0855超初心者NGNG
質問させて頂きます。
Visual C++で
#include
<stdio.h>
main()
{printf("abc");}と入力してみたら
(error C2006: #include ディレクティブに指定されている
'newline' はファイル名ではありません。)と表示されました。
どういう意味でしょうか?教えてください。よろしくお願いします。
0856デフォルトの名無しさんNGNG
>>853
#include <math.h>
して、ビルド時に-lmオプションつけれ
>>854
#includeや#defineなどのcpp処理部分は改行区切りなので
#include と <stdio.h>は同じ行じゃないと駄目
0857デフォルトの名無しさんNGNG
>>852
ダウンロードした本人がコンパイラを使う分には何も問題ないですよ。
作った実行ファイルの配布にも特に制限はないです。
ただ、Borland C++ Compiler 内のファイルの再配布については
いろいろ制限があるので注意して下さい。

>>854
そらあぁた、0の0乗は未定義やがな。
0858超初心者NGNG
>>856
助かりました。ありがとうございます。
0859853NGNG
>857
有難うございます
0860デフォルトの名無しさんNGNG
#define ぬるぽ ((void *)0)

がエラーにならない処理系はありますか?
0861デフォルトの名無しさんNGNG
Perlとか w
0862デフォルトの名無しさんNGNG
メンバーがたったひとつの構造体にはどんな意味があるんですか?
0863デフォルトの名無しさんNGNG
「将来の拡張」ができる。
0864デフォルトの名無しさんNGNG
教えて下さい。

ポインタ配列の例題で以下のプログラムがありました。

#include <stdio.h>

void main(void)
{
   char *w[] = { "SUN", "MON","TUE","WED","THU","FRI","SAT",};
   int k;

   for( k = 0; k < sizeof w /sizeof w[0]; k++)
     (void)printf( " %d:%s", k,w[k]);
   printf("\n");
}

質問
(void)printf( " %d:%s", k,w[k]); の(void)とは何故つけるのですか?

お願いします。
0865デフォルトの名無しさんNGNG
>>864
printf()の戻り値を使用しないことを明示するためのキャスト。
0866デフォルトの名無しさんNGNG
>>863
なるほど・・・・

>>864
voidにキャストして戻り値を明示的に破棄しないと、lintという文法チェックプログラムが文句を言うと聞いたことがあるよ。
0867デフォルトの名無しさんNGNG
>865,866
ありがとう。

でも、何で明示するの?

確かに、printfはint型を返すよう定義されているけど、、。

普通、

int a = 5;

printf("a = %d\n",a);

というように使いますよね。

どう違うのですか?
0868デフォルトの名無しさんNGNG
>>866も言っているように、lintを騙すために明示する必要がある。
古き悪しき(とまでは言い過ぎか)習慣だ。
0869867NGNG
>868
ありがとう。

そういうことですか、、、。

しかし、私の環境
win2000+cygwin(恐らく最新 バージョンはどうやってみる?)
で同じくlint(Slint 3.1.1)を使ってみましたが、そのような
警告はでませんでした。

lint list3_16.c(>864で(void)をコメントアウト))

Splint 3.1.1 --- 02 May 2003

list3_16.c:5:6: Function main declared to return void, should return int
The function main does not match the expected type. (Use -maintype to inhibit
warning)
list3_16.c: (in function main)
list3_16.c:10:15: Operands of < have incompatible types (int, arbitrary
unsigned integral type): k < sizeof(w) / sizeof(w[0])
To allow arbitrary integral types to match any integral type, use
+matchanyintegral.

Finished checking --- 2 code warnings

警告が出ないよう、修正されているのですか?
0870デフォルトの名無しさんNGNG
>>869
おまいのlintで警告が出るか出ないかにどれほどの意味があるってんだ?
警告出ようが出まいが元のソース書いたやつが書いちまったんだからしょうがないだろ。
0871山崎渉NGNG
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0872デフォルトの名無しさんNGNG
>>870
なぜおこっているのですか?
0873デフォルトの名無しさんNGNG
FAQを執拗に聞くからじゃない?
0874デフォルトの名無しさんNGNG
先生
CTypedPtrListを2重に格納したいのですが
以下のソースではpListを格納しようとするとエラーになります
誰か助けて

typedef CTypedPtrList <CPtrList, CPoint*> CPointList;
typedef CTypedPtrList <CPtrList, CPointList*> CPointListList;

CPointListList pointlistlist;

CPointList* pList = new CPointList;
pList->AddTail(new CPoint(100,100));

pointlistlist.AddTail(pList);
0875デフォルトの名無しさんNGNG
>>874
C++スレがあるよ。

http://pc2.2ch.net/test/read.cgi/tech/1052625846/
0876デフォルトの名無しさんNGNG
>>875
誘導が間違ってる。
こっちだろ。
http://pc2.2ch.net/test/read.cgi/tech/1047949606/
0877デフォルトの名無しさんNGNG
#include<stdio.h>main()
{
double x=1;
int i;
for(i=1;i<10;i++){
x=2+1/x;
printf("%f\n",x);
}
}

このソースのx=2+1/xの部分を(2+1/x)の平方根を求める
プログラムにしたいんですが、
どのようにすればよいでしょうか?

本見ても、それらしいのが乗ってません。教えて下さい。
0878デフォルトの名無しさんNGNG
>>877
1行目、分割しないとエラーになる。
で、#include <math.h>を追加。
6行目、x = sqrt(2 + 1 / x);に変更。
0879デフォルトの名無しさんNGNG
>>878
ありがとうございます。

sqrtで漏れの本を牽引したけど、やっぱり載ってない(´Д`)
本を買いなおさないと。。。
0880デフォルトの名無しさんNGNG
ここでGUIの質問をしてよろしいでしょうか。
0881デフォルトの名無しさんNGNG
駄目駄目駄目駄目人間
0882>>880NGNG
やってしまいました…
どうか無視してください。
でも、どこに行けば…
0883デフォルトの名無しさんNGNG
>>882
GUIつってもいろいろあるだろーが。
windowsなのかaquaなのかGTKなのかQtなのかその他なのか。
んでCの話題ではないのでここはふさわしくない。合ったスレを探しなさい。
0884デフォルトの名無しさんNGNG
スレ立てるまでもない質問スレで、
「どこのスレが相応しいですか?」って聞けばいいんでないの?
0885デフォルトの名無しさんNGNG
スレ立てるまでもない〜で直接質問すれば?
0886デフォルトの名無しさんNGNG
昔見た状態遷移のコードがどうしても思い出せません。
どなたか補間してもらえないでしょうか?

以下記憶から引っ張り出したものです。

typedef struct __func_t { struct __func_t (*f)(); } func_t;

func_t stat1(void) {
func_t next = {NULL};
return next;
}

func_t stat0(void) {
func_t next = {&stat1};
return next;
}

int main(void) {
func_t s = {&stat0};
do
s = (*s.f)();
while (NULL != s.f);
}
0887デフォルトの名無しさんNGNG
>>886
状態遷移だったら普通、状態(state)と事象(event)があるんじゃないの?
こんな感じでやるけど。
typedef struct {
  enum{eventa, eventb} e;
  /* いろいろ */
} event_t;
typedef enum {
  state0, state1, state_end,
} state_t;
extern event_t getevent(void);
state_t func0a(event_t e) {/* なんか */}
state_t func0b(event_t e) {/* なんか */}
state_t func1a(event_t e) {/* なんか */}
state_t func1b(event_t e) {/* なんか */}
int main(int argc, char * argv[])
{
  state_t state = state0;
  event_t event;
  static state_t (*func[][state_end])(event_t) = {
    {func0a, func1a}, {func0b, func1b},
  };
  do {
    event = getevent();
    state = (*func[event.e][state])(event);
  } while (state != state_end);
  return 0;
}
0888デフォルトの名無しさんNGNG
すいません質問させてください。

int num;
この変数をwhileループの中で
加算させつつ
printfしているのですが
4000あたりまでは順調に表示してくれるのですが
突然
num = 538976288
と、表示されてしまいますた・・・

原因がよーわからんですし
538976288という桁数ってintで表現できる
数を超えているような気がするのですが・・・

こういった現象がどのようにして
起こるのか教えていただきたいです。
お願い致します。
0889デフォルトの名無しさんNGNG
intは32bitだから4000でオーバーフローするわけはないし・・・
コードを貼り付けてくれ
0890デフォルトの名無しさんNGNG
環境が良くわかんないけど、一般的な環境だとintは±21億くらいまでなら表現できるよ。
有効桁数10桁までと覚えとくといいかも。

途中でかけ算とかしてるなら、桁あふれの可能性有り。
そうじゃなきゃ、メモリを壊してるんじゃないかな。
0891デフォルトの名無しさんNGNG
>>888
初期化してなくて、そういう値になることはあるけど、加算させてて
いきなりは見たことが無いです。
0892デフォルトの名無しさんNGNG
sizeof(short)は処理系に依存するのでしょうか?
それとも、ANSI規格で2バイトに定められているのでしょうか?
0893デフォルトの名無しさんNGNG
short は int 以下としか。
0894デフォルトの名無しさんNGNG
>>888
スタック壊してない?
0895デフォルトの名無しさんNGNG
2 バイト固定で使いたければ、
typedef でもしてそれ使って、
環境によって定義を切り替えれば良し。
0896デフォルトの名無しさんNGNG
>>893, >>895

ありがとうございます。
てことは、移植性を考慮すると、ハードコーディングしないで、

#if sizeof(short) == ......(略)

とした方が無難ということですね。
0897デフォルトの名無しさんNGNG
上下左右のASCIIコード教えてください。
0898デフォルトの名無しさんNGNG
文字配列の初期化で

char str1[20] = "abc"; /*うまく動くかもしれないがお薦めできない*/
char str2[] = "abc";   /*OK*/

と言う人がいました。
これってC言語の定義ではどうなってるんですか?
0899888NGNG
皆様ありがとうございます。

環境はSUN Soralis SPARAC3
です。

メモリを破壊しているということは

ほかの部分、例えばmemcpyなどで
スタックをおこしていて
printfに影響を及ぼしている可能性も
ありますか?

再度の質問ですみませんが
ご教授お願い致します。
0900デフォルトの名無しさんNGNG
>>899
基本的に自動変数はスタックに並んで入るから、
例えばnumの前にある変数の領域をオーバーしてmemcpyすれば当然スタックは
破壊されてnumの値が書き換わる。
0901899NGNG
>>900サソ
ありがとうございます!

あやしいmemcpy()のオンパレードなので
そいつが原因かもしれません。

ヒントになります。
どうもありがとーございました。
0902デフォルトの名無しさんNGNG
>>888
ていうか、

> 538976288という桁数ってintで表現できる
> 数を超えているような気がするのですが・・・

気がするだけでデバッグしていたらいつまでたっても終わらないよ。
きちんと確認しなきゃ。

538976288 = 0x20202020

これだけでも大きなヒントだと思うぞ。

>>897
上下左右は ASCII コートでは表現できない。
JIS/EUC/S-JIS とかにしろ。

>>898
別に両方とも間違っていないと思うけど...。
ただ、char a[4] = "ABCD"; なんて書くアフォがたまにいるので、文字列を格納する配列なら、文字数はコンパイラに数えさせた方が間違いがないというだけのことだと思う。
0903デフォルトの名無しさんNGNG
0x20202020ってことはスペースだな
0904デフォルトの名無しさんNGNG
ASCII コート
(・∀・)イイ!!!
0905デフォルトの名無しさんNGNG
>>898
> char str1[20] = "abc";
str1 という char 型要素数 20 の配列が
"abc" という文字列で初期化される。

> char str2[] = "abc";
"abc" という文字列を入れられる
最低限の要素数を持った char 型の配列が
"abc" という文字列で初期化される。

1. 前者は初期化する文字列の数を数えて、
 そこから配列のサイズを決めなければならないため、
 人為的なミスが起こる危険性を孕んでいる。
 良いコンパイラであればエラーを出してくれるかもしれないが、
 そのことを期待する事はやめた方が良い。
 その点後者はそのようなミスとは無縁である。
2. ミスを防ぐためにと前者で大きめにサイズを指定しても、
 無駄にメモリを消費してしまう。
3. もし文字列(の長さ)を変更する予定があり、
 "abc" があくまで初期値でしかないのであれば、
 取り得る文字列の最大長を指定しておく必要がある。
 この目的のために前者を使う事は可能である。
 しかし、初期値がその最大長を超えない事をチェックする必要があるため、
 一応初期化をするのは置いておいて、
 assert で長さのチェックをしてからコピーするのが安全である。
0906888NGNG
>>902サソ

まじありがとうございます!!

0x20がスペースってことはしってましたが・・・
まさかこんなことになっているとは
思いもよりませんでした。。。

少し新しい道が開けました!!

ありがとうございます!!
0907デフォルトの名無しさんNGNG
>>888
つまり、スペースが暴走してスタック上の変数領域を侵食してしまったわけやね。
0908デフォルトの名無しさんNGNG
WizOnline開発中!プログラマ緊急募集(C,Java)
http://219.96.231.242/wizonline/
2chスレ
http://game3.2ch.net/mmominor/dat/1053536167.dat
0909デフォルトの名無しさんNGNG
>>827
本当にそんなことが言えるの?
根拠を示してから書き込むように。
おまぃ、最近落ち着きがないようだが、せめてCくらい勉強してから人にアドバイスしようね。
昔よくsourcerとか使ってたけどwindowsでは無理かな?
mochaはよくお世話になったからあると便利なのは確かだね。
実力つけたいなら、 自力で構築しなおすのがいいと思う。
0910デフォルトの名無しさんNGNG
少し悩んでます。どうかご教授お願いします。
あるデータ群から、任意のデータを抜き出して配列なりなんなりの
テーブル等に格納したいのですが、データ数が分らない場合、

"一度データ数をカウントしてテーブルを制作、その後に格納"

これしか思いつきません。
これだと二度データ群を走査するやり方しか自分は出来ません。

なにか定番のやり方、
一度のデータ走査でデータ格納領域を確保しながら格納ってやり方なんてあるのでしょうか?
少し頭をよぎったのは、データヒット毎にリアロケートなんですが
さすがに却下しました。
0911デフォルトの名無しさんNGNG
大き目にmallocしてrealloc。
0912デフォルトの名無しさんNGNG
配列ならreallocとか
配列以外ならリンクリストとか
じゃあダメってこと?
0913デフォルトの名無しさんNGNG
>>879
本を「牽引」して何の意味が?
0914デフォルトの名無しさんNGNG
>>910
テーブルと同サイズのメモリを用意し、格納していく。
格納した数はカウントしておいて、最後にreallocで小さくする。
0915デフォルトの名無しさんNGNG
データヒットごとじゃなくて一定サイズ確保であふれたらreallocとか
reallocじゃなくて新たに確保してリンクさせるとか?

元テーブルのサイズによるね
小さければ>914でいいし大きかったら動的に何かするしかないかと
0916915NGNG
でも結局全件ヒットしたらそれだけいるんだ(´・ω・`)
0917デフォルトの名無しさんNGNG
>>896
#ifでsizeofは参照できないよ。
定義済マクロから適当なのを使って判断するしかない。
0918デフォルトの名無しさんNGNG
CでPerlのeval関数のようなことをしたいのですが、
何かいい方法はないでしょうか?
int hoge = 1;
char buf[] = "hoge";
int foo = eval(buf);
とやると、fooに1が代入されるような感じです。
0919デフォルトの名無しさんNGNG
コンパイル後に変数名からたどるのは無理だと思うけどな。
0920デフォルトの名無しさんNGNG
グローバル変数なら可能でしょ
0921デフォルトの名無しさんNGNG
Unixで関数名を辿るのはやったことあるけど面倒だった。
同じ手法でグローバル変数も可能なのは確認済み。

でも、一般的には不可能って答えるしか。
0922デフォルトの名無しさんNGNG
どっちにしろないんだから自分で簡易インタプリタでも書け。
0923デフォルトの名無しさんNGNG
>>918
>>922
Pikeなんてどうかと
http://pike.ida.liu.se/
http://pike.ida.liu.se/generated/manual/modref/ex/predef_3A_3A/Perl/Perl/eval.html
0924デフォルトの名無しさんNGNG
>>902
サンクス
0925デフォルトの名無しさんNGNG
while文に使われる !=EOF は、使わなくてもちゃんとプログラムは動くのですが、いろんなサイトとかでは使ってるのがほとんどです。
!=EOF を使うのと使わないのとでは何が違うのでしょうか?
0926デフォルトの名無しさんNGNG
>>925 意味の通る文章を書いてください。
0927デフォルトの名無しさんNGNG
>>925
動いたソース見してくれ
0928デフォルトの名無しさんNGNG
EOFはstdio.hで-1に定義されてたりする。
その場合、「値」と「値!=EOF」は意味が違う。
使っても使わなくても動くと言うことは、エラー処理などをきちんとしてないのだろう。
0929デフォルトの名無しさんNGNG
#include <stdio.h>
#include <ctype.h>

main()
{
char c;

while ( ( c = getchar() ) !=EOF )
if(islower(c))
putchar( toupper(c) );
else
putchar(c);

}


です
0930デフォルトの名無しさんNGNG
>>929
それで!=EOF抜いたら止まらなくなるだろが。ヴォケ。
0931デフォルトの名無しさんNGNG
>>929
EOFとの比較を行わないと、正しく終了しない。
0932デフォルトの名無しさんNGNG
EOFの入力の仕方がわからないというオチだと見た。
0933デフォルトの名無しさんNGNG
リダイレクトも知らないってか。
0934デフォルトの名無しさんNGNG
char c;
whie ((c = getchar()) != EOF)
戻り値の上位ビットが捨てられた結果がintに拡張されてから、EOFと
比較されるんだっけか。charが符号なしだとまずいような。
0935デフォルトの名無しさんNGNG
>>933
リダイレクトと、 EOF の入力の仕方、に直接関係があるのかね?
0936デフォルトの名無しさんNGNG
>>934
確かにintにするべきだね。
0937デフォルトの名無しさんNGNG
>>935
大蟻。
ファイルからリダイレクトしたときに、ファイルの最後はどうやって検出すると思う?
0938デフォルトの名無しさんNGNG
>>937
ここでいっているのは、コマンドラインでCtrl-Z,Ctrl-Dで入力するEOFでは?
0939デフォルトの名無しさんNGNG
>>936
コンパイラが馬鹿でないかぎり大丈夫だろ。
0940デフォルトの名無しさんNGNG
>>938
Ctrl-Z はねぇだろ・・・
0941デフォルトの名無しさんNGNG
大丈夫とかいう問題なの?
0942デフォルトの名無しさんNGNG
>>940
MS-DOS,WindowsだとCtrl-Z
0943デフォルトの名無しさんNGNG
VAX(VMS)もCtrl-Z
0944デフォルトの名無しさんNGNG
>>Ctrl-Z
まじで!? プロセスも続行でつか??
0945デフォルトの名無しさんNGNG
>>944
馬鹿
0946944NGNG
続行っていうかその後も入出力可能なん???
0947デフォルトの名無しさんNGNG
Winのコンソールはバグがあったような記憶が < Ctrl-Z
MXや2000はどうなのだろう。
0948デフォルトの名無しさんNGNG
MX?
0949デフォルトの名無しさんNGNG
>>946
UNIXのSuspendとごっちゃになってるんでねーの?
0950デフォルトの名無しさんNGNG
nyはどうなの?
0951デフォルトの名無しさんNGNG
>>948
XP(汗
0952デフォルトの名無しさんNGNG
割れ厨発見( ・∀)人(∀・ )通報しますた!
0953逆コンパイラNGNG
EXEのファイルをCに戻る逆コンパイラソフトがあるかなぁ、おしえてもらえませんか。
0954デフォルトの名無しさんNGNG
おまえら2chのCのFAQ作れよ。馬鹿ですか?
0955カーニハン三世NGNG
>>953
「Cソースコード」⇔「実行形式ファイル」 の関係は、不可逆です。
0956デフォルトの名無しさんNGNG
>>954
1.ネタニマジレスカコワルイ
0957デフォルトの名無しさんNGNG
>>955
不可逆だが、逆コンパイラがないわけではない。
ttp://www.itee.uq.edu.au/~cristina/dcc.html
0958デフォルトの名無しさんNGNG
C言語勉強し始めたばかりのものですが
#include<stdio.h>

int main()
{
printf("ABC\n");
}

というプログラムをBorlandのC++ Compilerでコンパイルしようとしたのですが
bcc32 ファイル名(拡張子はc)っと打ったら
bcc32は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません
と出るのですがどうしたらコンパイルできるのですか?
なにぶん初心者なのでこんな事も解らず困ってますどなたか教えてください。
0959デフォルトの名無しさんNGNG
2chの人員で、可逆Cコンパイラ作るというのはどうだろうか。
0960デフォルトの名無しさんNGNG
>>959が主導して、2chの人員で、可逆Cコンパイラ作るならいいんじゃない?
0961デフォルトの名無しさんNGNG
>>958
http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
0962958NGNG
>>961
むむ??
どれが自分の症状か解りません・・・
どれを設定すればいいのですが?
ちなみにOSはxpです
0963デフォルトの名無しさんNGNG
>>962
IDE環境買え。もしくは専用スレに逝け。
0964デフォルトの名無しさんNGNG
>>905
>  良いコンパイラであればエラーを出してくれるかもしれないが、

エラーはないやろ。正しい文なんだから。
警告ぐらいはあるかも知れんが。

> しかし、初期値がその最大長を超えない事をチェックする必要があるため、

VC++ は、char a[4] = "abcd"; でエラーになるな。
でも、gcc 2.59.4 は、char a[4] = "abcde"; は警告出すのに、char a[4] = "abcd" だと何も言わない。
バグか ?

>>909
何わけわかのこと書いてんだ ?
マルチタスクと逆アセンブラ/デコンパイラってどうやったら混同できるのか知りたいもんだ。

>>916
ヒットしなかったらいらないでしょ ?
一旦確保したら (プログラムが終了しないと) OS にメモリーを返却しない処理系もあるし。

>>920-921
ハァ ? って感じなんだが...。
ホントにできるのか ?
ちょっとやり方書いてみてくれ。
それとも処理系依存のことを言ってるのか ?
0965デフォルトの名無しさんNGNG
>>960,962
Windowsには95系とNT系があって、
95系・・・95,98,Me
NT系・・・NT,2000,XP
と分類される。つまり、XPはNT系。
だから、XPの説明がなければ、NTか2000の説明を読め。
0966デフォルトの名無しさんNGNG
main(){
FILE *fp;char *file;char *str;

file=(char *)malloc(BUFSIZ*sizeof(char));

puts("File name?");
gets(file);
fp=fopen(file,"r");
if(fp==NULL){
puts("No such a file!");
}
else {
str=(char *)malloc(BUFSIZ*sizeof(char));
while(fgets(str,BUFSIZ,fp)!=EOF){puts(str);}
}
}

fgetsのところで、「移植性のないポインタ」と警告が出ます
どうすれば上手くいくか教えて下さい!
0967デフォルトの名無しさんNGNG
>>966
fgetsの戻り値が何か調べてみ
0968デフォルトの名無しさんNGNG
>>964
unix(Sun-OS)の話だけれど。
nmコマンドで変数のマッピングされているアドレスが得られる。
そこを巧く実アドレス(実際には仮想アドレス名訳だが)に変換すれば、
変数領域が得られる。

同じ理屈を使って関数アドレスを得、その関数をコールするのは実装した。
0969デフォルトの名無しさんNGNG
>967
有難うございます、上手く出来ました
0970デフォルトの名無しさんNGNG
>>968
それを処理系依存という。Cでもなんでもねーだろ
0971デフォルトの名無しさんNGNG
>>968
思いっきり実装依存と言うことは、理解してるよね ?
0972971NGNG
かぶった...。
0973デフォルトの名無しさんNGNG
>>964
> >  良いコンパイラであればエラーを出してくれるかもしれないが、
>
> エラーはないやろ。正しい文なんだから。
> 警告ぐらいはあるかも知れんが。

長い時は正しいけど、
短い時はエラー出ることが多いでしょ。

>>962
システムのプロパティの詳細設定内にある
環境変数ってボタンを押すべし。
あとは Windows 2000 とほぼ同じ。だった筈。
0974デフォルトの名無しさんNGNG
>>970-971
処理系依存でもやりたいことができればいいだけだろ。
>>919 が無理じゃなくて >>918 がやれる処理系はある。
0975デフォルトの名無しさんNGNG
>>974
その精神は立派なのだが、スレ違いだから言ってんの。
>>1読もうね。
『GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!』
0976デフォルトの名無しさんNGNG
次スレヨ炉↓
0977デフォルトの名無しさんNGNG
>>974
> 処理系依存でもやりたいことができればいいだけだろ。

はぁ ? >>918 が Unix 使ってなかったら意味ないだろ。
あと >>918 はグローバル変数だけ扱えればいいなんて書いてないだろ。

まあ、こう言うことができるって言いたかったんだよな。
0978デフォルトの名無しさんNGNG
>>918
Python.h 使えばできそうな気もするけど、
詳しくないのでどこまでできるのか分からん。
0979デフォルトの名無しさんNGNG
>>918
C言語では eval は無理。

変数を動的に参照したいだけなら、ポインターを使えばよい。
プログラマーが使いたいだけなら、無理なので諦めるか別の言語にする。
ユーザーの入力を解釈実行したいのなら、インタプリターをリンクすればよい。


>>970 >>971

921 は 918 に答えて Unix でやったことがある。でも、一般的には不可能と書いている。
これに対して、 964 はやり方を書いて欲しいとレス
その回答が 968

スレの流れから処理系依存の話になっただけで、968 が非難されるいわれはない。
0980デフォルトの名無しさんNGNG
次スレ
http://pc2.2ch.net/test/read.cgi/tech/1053725121/
0981デフォルトの名無しさんNGNG
>>979
キティニマジレスカコワルイ
0982964NGNG
>>979
> これに対して、 964 はやり方を書いて欲しいとレス

>>964 の最後の行見てる ?
基本的に処理系依存の話題は避けるのはここの常識と思う。(嫌と言うほど言われてる。)
まあ、>>968 を責めると言うよりも、処理系依存のことを書いた >>920-921 の時点で責められるべきもんだと思うよ。
しかも、実現内容は不完全だし、>>974 で逆切れしてるし。

普通の Unix プログラマなら >>968 ぐらいの内容は思いつくし、他の環境でも map ファイルとかから同じようなことはできる。
デバッグ情報にアクセスできれば、ローカル変数だって可能のはず。(デバッガはやってるからね。)

>>968 が責められるは、処理系依存云々もあるけど、そんなあたりまえの事を得意げに書いてると言うところにあるんじゃないの ?
0983デフォルトの名無しさんNGNG
>>982も当たり前のことを得意げに書いているように見える。
0984デフォルトの名無しさんNGNG
「はいはい、分かったから次スレで同じ話題で議論すんなよ」ということでファイナルアンサー?
0985979NGNG
>>981
タシカニカコワルカタ
0986デフォルトの名無しさんNGNG
>>920は認識不足。
>>921はそれに対するフォロー。一般的に無理と答を出している。
>>964は得意げな煽り。
>>968は調子に乗りすぎ。
>>974は>>968でもないのに突っ込む阿呆。
>>979が折角丸く収めようとしているのに更に得意げに書く>>982
0987デフォルトの名無しさんNGNG
>>986の分析をお願いします。
0988デフォルトの名無しさんNGNG
>>986は分析厨
0989デフォルトの名無しさんNGNG
>>986=>>968
0990デフォルトの名無しさんNGNG
最近、1000獲り合戦もなく、寂しい終わり方が多いですね・・・。
0991デフォルトの名無しさんNGNG
記念カキコ
0992.ある被害者NGNG
脳の「物理的」拘束から催される体感的自殺衝動に耐え、
常に歯をくいしばっていなければならず、シャワーを浴び
る事さえ困難で日常生活を送ることができません。一年と
三か月続いています。
脳の「物理的」拘束においては、脳を機能停止にすること
など簡単で、何百回と機能を停止され、殺害されかけまし
た。こんなことが許されてもよいのでしょうか?
0993デフォルトの名無しさんNGNG




























0994デフォルトの名無しさんNGNG
ここからはVBの質問を受け付けます。
でも、スレの残りが少ないから答えられないな。
0995デフォルトの名無しさんNGNG
おお、VB、VB。あなたはどうしてVBなの?よりによってM$家の方だなんて。
0996デフォルトの名無しさんNGNG
VBは元々Borland社が開発・販売を行っていたんだけど、今ではM$に乗っ取られてM$から発売されるようになったの。
0997964NGNG
997
0998デフォルトの名無しさんNGNG
お(=^o^=) や(=^O^=) す(=^。^=) みぃ(=^-^)/~~
0999デフォルトの名無しさんNGNG
999
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。