- 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/
- 962 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 14:12:08 ]
- ASCII に EOF なんて無いだろ。
それ書いたの誰だよ? ttp://e-words.jp/p/r-ascii.html ttp://ja.wikipedia.org/wiki/ASCII ttp://www.mew.org/Newsletters/6.html
- 963 名前:デフォルトの名無しさん [2007/11/05(月) 18:42:18 ]
- そりゃ、文字コード体系表見てもEOFなんてあるわけないわな。
- 964 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:29:32 ]
- c言語の除算はどのようなアルゴリズムで行っているんでしょうか?
わかる方がいればよろしくお願いします
- 965 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:03:20 ]
- >>964
コンパイラによるんじゃないでしょうか。 あと、たぶん、かなりアセンブラよりの質問だと思います。
- 966 名前:デフォルトの名無しさん [2007/11/05(月) 22:04:36 ]
- CPUよりの話でしょう
浮動小数点や整数演算はハードでします
- 967 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:09:11 ]
- テキストモードでfopenしたら0x1aで終了だろ
- 968 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:13:31 ]
- いつまで、CP/Mの呪いをひきづらなければならないのやら。
- 969 名前:迷い人 [2007/11/05(月) 22:36:25 ]
- こんばんは。つぎのようなプログラムがわかりません
1を入力すると x 2を入力すると x xx x 4を入力すると x xx x xxx x xx x xxxx x xx x xxx x xx x となるようなものです。途中まではかけたのですが肝心なところがよくわかりませんでした。 途中までは次のようになりました
- 970 名前:迷い人 [2007/11/05(月) 22:37:28 ]
- #include <stdio.h>
void X_sequence (int n); void X_triangle (int n); main() { int n; printf("Enter a number : ") scanf("%d",&n); X_triangle(n); } void X_sequence(int n) { int i; for (i=1; i<=n; i++) printf("X"); printf("\n"); } void X_triangle(int n) {・・・・こっからわかりません! 教えてくださいおねがいします
- 971 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:39:06 ]
- if (n > 2) X_triangle(n - 1);
X_sequence(n); if (n > 2) X_triangle(n - 1);
- 972 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:39:22 ]
- printf("1を入力すると\n
x\n 2を入力すると\n x\n xx\n x\n 4を入力すると\n x\n xx\n x\n xxx\n x\n xx\n x\n xxxx\n x\n xx\n x\n xxx\n x\n xx\n x\n ");
- 973 名前:デフォルトの名無しさん [2007/11/05(月) 22:39:38 ]
- if (n >= 2) X_triangle(n - 1);
X_sequence(n); if (n >= 2) X_triangle(n - 1);
- 974 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:01:21 ]
- ふとオープンソースの午後のこーだのソース見てみたら、C言語だったけど、
どれくらい経験つめばこれくらい書けるようになるんですかね・・・
- 975 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:15:15 ]
- >>974
5000時間くらい。
- 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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|