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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:34:33 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 19
pc11.2ch.net/test/read.cgi/tech/1190342593/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 97代目
pc11.2ch.net/test/read.cgi/tech/1191937213/

976 名前:デフォルトの名無しさん [2007/11/06(火) 00:19:12 ]
すいません、質問させてください。
rand関数とか、abs関数とか、stdlib.hで宣言されてるってことを聞きました。
で、stdlib.hを探してみて実際に見たところ、確かに宣言されてたんですが、
これら関数の実体って、どのファイルに定義されているんでしょうか。
もしくは、ソースファイルはついてないんでしょうか?(当方Mac OSXです)
見てみたいな、と思いまして・・

977 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:27:18 ]
>>976
そういう関数はライブラリに中身がある
ヘッダーには呼び出しかたが書いてある。
実体を見たいなら、使ってるコンパイラメーカーに聞くしかない。

978 名前:976 mailto:sage [2007/11/06(火) 00:31:18 ]
>>977
早速のお返事ありがとうございました!了解です。

979 名前:デフォルトの名無しさん [2007/11/06(火) 00:33:50 ]
scanfを使って整数型の変数に1〜100の値を入力された時のみ
続く処理をして、それ以外は再度入力を促すプログラムを作りたいです。

入力された値のエラーのチェックにはどんな処理が必要か
わからないので教えてください。

あと数値を入力してEnterを押して実行したあとに
前回入力した数値が残ったままになっているのを
消すにはどうすればいいですか?

980 名前:デフォルトの名無しさん [2007/11/06(火) 01:14:14 ]
>>979
#include <stdio.h>
int main()
{
int num;
char buff[12] = {'\0'};
do{
puts("1〜100の数値入力");
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&num);

}while(1 >= num || num >=100);

/*
1以上100以下の数値が入力されたときの
処理をここに書けば〜
*/
return 0;
}

981 名前:980 mailto:sage [2007/11/06(火) 01:35:49 ]
訂正
while(1 >= num || num >=100);
       ↓
while(1 > num || num >100);

982 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:58:33 ]
scanfっつてんだから、scanfを使うべきなんじゃなくて?

俺ならこう書くぞ
} while (!(1 <= num && num <= 100));

983 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 02:02:57 ]
論理演算が苦手そうに見えてもいいならそれでいいんじゃね?

984 名前:デフォルトの名無しさん [2007/11/06(火) 02:30:32 ]
すいません。
!についての質問なんですが、

if ( !(fp = fopen("a.c","r")) )

もしこれでfpがNULLでない場合(どこかのメモリアドレスつまり正の整数値)、
if文が偽(つまりNULLつまり0)となると思うのですが、
何故、!(正の整数値)がNULLつまり0になるのですか??ANSIのそういう仕様ですか?


if ( !5 )は偽でNULLつまり0??

(ちなみに、現在ほとんどのstdio.hで #define NULL 0 となっている)



985 名前:デフォルトの名無しさん [2007/11/06(火) 02:33:54 ]
!5といえば 1も2も3も・・・負数でさえ含まれますよね。0ももちろん含まれますが

986 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 02:47:08 ]
#include <stdio.h>

int main(void)
{
FILE *fp;
if ( fp = (FILE*)(NULL == NULL))
;
printf("fp = %p\n", fp);
printf("(int)fp = %d\n", (int)fp);
printf("!5 = %p\n", !5);
return 0;
}




結果
fp = 0x1
(int)fp = 1
!5 = 0x0

987 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 02:58:34 ]
NULL == NULLは真だから1が返るな

988 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 05:52:39 ]
>>985
!5は「5以外」じゃないよ。
5を真偽値として評価して真、その否定で結果偽。そんだけ。

989 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 09:23:16 ]
5以外は !=5 だわな。

990 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:06:26 ]
レビューってどうやってやってる・・・?
なんか自分で書いたソースなのに、うまく説明できなくて凹みまくってる・・・。
頭の中じゃどんな風に動くのかわかってるんだけど、説明となると10あるうち2しか伝える事ができない・・・

991 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:41:32 ]
君が超天才ならしょうがないけど、
凡人なら説明できない程度の理解としか周囲には写らないだろうよ。

誰にでも納得できる説明をする必要があるの?
仕事でレビュア対象に説明するだけなら、レビュアに疑問点・不明点を上げてもらって
それに回答することで納得して貰うのじゃダメ?

レビューの経験を積めば、レビュアの傾向が見えて対策も打てるけど、
例え経験不足だとしてもレビューの前に事前にレビュアと調整しておくって手もある。
凹む前にもっと考えて行動すべきだと思うけどね。

992 名前:979 [2007/11/06(火) 22:43:34 ]
>>980 >>981 >>982
色んなサンプルソース読んでみても
scanfはあまり使われてないみたいなので
gets,fgetsに変更してみようとおもいます。

なぜなのかは、ぐーぐるさんに聞いてきます
ありがとうございました

993 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:55:21 ]
>>991
あ、えーと、
現状まだまだ勉強の段階なんですが、
int main(void) じゃあそのvoidってナニ?なんでここにintとかおいてるの?っていう
いわば基礎中の基礎の部分なので、プログラムに一切関係のない人でも理解できるように発言して欲しい=学べる
ということなのでやってるんですが、経験をとにかく詰むしかないんですかね・・・うーん。

994 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:20:34 ]
自分で書いたソースを客観的に見ることができないなら、他人に見て貰うといい。
相談できる人が身近にいればその人に協力して貰うのがいい。
相談できる人がいない、探す気もないならここにソース晒してコメントを貰うのでもいいんじゃね?



995 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:50:36 ]
少しお尋ねしたいのですが、
struct _TEST a
{
int num;
char ch;
}test[100] = {0};

こうした場合、test配列の中身が全て0クリアされる動作は保証されていますか?
testが配列でない場合は動作が保証されているとどこかで伺った気はしたのですが

996 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:10:58 ]
保証されている。ついでに言えばtest[100] = { 1 };として場合であっても
1が入るのはtest[0].numだけであって、残りは全て0になる。

997 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:06:24 ]
>>996
ありがとうございます!

998 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 04:38:52 ]
www.geocities.jp/horie_ryu/page01/trans.c

こちらのプログラムをVS2005でそのまま実行しても'fopen'の宣言を確認してくださいと出ます。
同HP (ttp://www.geocities.jp/horie_ryu/page01.html) にあるc1.wavやらを読み込ませて実行したいのです。
fopenで配列を読んでいるのですが、ここにどうやってc1.wavなどを読み込ませればいいのでしょうか?

999 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 05:12:45 ]
調べてたらコマンドラインで実行すらしらなかったのでなんとかなるかもしれないので失礼します。すみません。

1000 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 05:29:05 ]
1000げっつ

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






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

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

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