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


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

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



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

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


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

786 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:23:14 ]
>>780
マルチバイト文字などに関係なく、標準入出力は
行単位バッファリングされていることが多い。

バッファリングなしにしても、まあ正しいマルチバイト文字列になった時点で
正しく表示されると仮定していいと思う。

787 名前:780 mailto:sage [2007/07/06(金) 08:24:22 ]
>>785
ということはOSの画面表示を担当するプログラムが
putchar()で2バイト文字の一部を出力しようとした時に
2バイト文字の一部だと判断し表示を一時中断して
次に送られてくるputcharの引数と組み合わせて
それに対応する2バイト文字を出力していているんでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:26:31 ]
2バイト文字で、1バイト目単体で文字としてなりたっているようなのってなんかあったっけ?

789 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:28:46 ]
>>788
iso-2022-jpの1バイト目はASCII文字と同じコード。

790 名前:780 mailto:sage [2007/07/06(金) 08:30:47 ]
>>786
行単位でバッファリングするんですね
それで予め2バイト文字があるかないか調べるわけですか、なるほど

791 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:39:37 ]
>>789
Shift_JISしか考えてなかった。参考になった
ありがとう

792 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:41:44 ]
文字コードの体系もしっかり管理しときゃ良い。

793 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 09:11:21 ]
型で区別するんじゃない?
char型ならその分のデータを受け取るまで待つ

794 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 09:18:02 ]
ASCIIコード体系でなければ左へ受け流すぅ〜



795 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 11:50:43 ]
1: 3.2 2.6 3.4 2.1 5.2 3.4 5.2
2.4 4.2 4.1 0.2 4.2 5.3

2: 3.2 2.4 3.4 2.2 5.2 3.4 5.2
2.4 4.2 4.3 0.2 4.2 5.3

3: 3.1 2.6 3.4 2.1 6.2 3.4 5.2
2.4 4.2 4.0 0.2 4.2 5.3

っていうデータがあるとして
10個目(つまり4.3 4.1 ,4.0)だけを抜き出すプログラムをつくれといわれると
float型でやりますか?char型でやりますか?

796 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 12:26:17 ]
「作れ」っつった本人に仕様を確認する。

797 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:03:17 ]
とりあえず float は使わない。
使うなら double 。

798 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:51:36 ]
つーか、計算もしないし区切りもはっきりしてるなら
文字列のままで通しちゃったほうがいいべ

799 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 14:01:23 ]
>>793
それはない。そんなことしたら、ファイルにリダイレクトできない。

>>791
iso-2022-jpの場合、KanjiInが来た後は2バイト文字、そうでなければAsciiという分け方。
だから2バイト文字の後にKanjiOutが来ないと文字化けする。

>>790
バッファリングはするかもしれないが、出力の判断とは直接的には無縁。
でなければエスケープシーケンスでの制御ができない。

800 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 15:41:47 ]
>>799
>KanjiInが来た後は
>KanjiOutが来ないと
そんなコード/シーケンスはありません。

801 名前:デフォルトの名無しさん [2007/07/06(金) 18:09:25 ]
Windows2000で作られたソフトはWindowsXPではうまく動作しないことが
あるのですか。LSI C-86を使ってC言語を学ぶという趣旨の本を5年前に
買ったのを今になって勉強しようとしてインストールしたという次第です。
最初のコマンドプロンプトがC:\>になるはずのところ、C:Documents and
Settings□□>となりエラーと表示されました。□□は、再起動時に
アカウント指定を要求され、自分の名前を入れたものです。
別な場所へインストールすればよいのですか。よろしくお願いします。

802 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:15:05 ]
>>801
LSI-C86は遺物なので、特殊性を理解できていないなら使ってはいけない。
MSのVisualStudioでもgccでも、無料で手に入るほかのコンパイラを使うことをお勧めする。

803 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:18:59 ]
まあコマンドプロンプトをC:\>にしたいなら、cd \ でいいけどな。
本と同じになるだけで、役には立たないだろうけど。

804 名前:デフォルトの名無しさん [2007/07/06(金) 18:26:59 ]
>802 responseありがとうございます。早速入手しようと思います。



805 名前:デフォルトの名無しさん [2007/07/06(金) 18:43:58 ]
ソーカcd¥−enterで続けられるのか。

806 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:59:38 ]
>>800 の意図が気になる。

807 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:03:18 ]
>>804
たぶん電子メールのレスと2ちゃんのレスは同じ意味を持ってると思うんだが、
だとしたら君が使ってるresponseはレスという意味とは違うぞ

808 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:06:00 ]
>>807
ja.wikipedia.org/wiki/%E3%83%AC%E3%82%B9

809 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:37:26 ]
nullponceというのを提案しまnce

810 名前:723 mailto:sage [2007/07/06(金) 19:39:17 ]
>>729
忘れてた

811 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 19:43:03 ]
英語版ウィキペには

Reply. Its abbreviation followed by colon (Re:) is prepended to e-mail subject lines when answering a received message

って書いてるんだよな。
まあ、スレ違いだからどうでもいいが。

812 名前:デフォルトの名無しさん [2007/07/06(金) 20:22:37 ]
A)入力装置に関する記述のうち,適切なものはどれか。
1 ジョイスティックは,画面上に透明なセンサを取り付けたものであり,画面に指などを押し付けて座標を指示する。
2 タブレットは,ペンのような装置と板状の装置を組み合わせた入力機器であり,ペンのような装置を押し付けて座標を指示する。
3 ディジタイザは,人間のもつ静電気を利用して指の位置を検出するポインティングデバイスであり,操作面を指して座標を指示する。
4 トラックパッドは,球の一部分が装置の上面に出ているポインティングデバイスであり,球を指で直接回転させて,その変化量で座標を指示する。

すみません、質問なのですが今上の問題がハードウエアの組み込みの
参考書の問題がわかりませんので、教えてはいただけないでしょうか?

813 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:25:09 ]
>>812
2

814 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:26:34 ]

1はジョイスティックの説明ではない事は明らかだから×
2は正しいと思うから○
3は知らんから知らん
4はトラックパッドじゃなくてトラックボールの説明だから×



815 名前:デフォルトの名無しさん [2007/07/06(金) 20:29:48 ]
ありがとうございました。

これで先に行けます。

816 名前:デフォルトの名無しさん [2007/07/06(金) 20:32:06 ]
制御系といえば、C言語だけど
Cのすごい所って何?

817 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:38:01 ]
体にぴったり張り付くスク水の用に、ハードウェアに貼り付ける所

818 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:38:40 ]
>>816
おまえの方がすごいと思う。

819 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:38:58 ]
3はタッチセンサとか、タッチスクリーンとか言われている物のうちの1種だね

820 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:41:36 ]
>>812
3の説明がトラックパッドっぽいな

821 名前:デフォルトの名無しさん [2007/07/06(金) 20:42:36 ]
C言語にできることは、C++にもできるって聞いたんだけど、
C++も体にぴったり張り付くスク水のように、
ハードウェアに貼りつけるの??

822 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:43:22 ]
Cと同じようにできる。

823 名前:デフォルトの名無しさん [2007/07/06(金) 20:44:46 ]
C++もC言語と同じように最強ならば、
C++も制御系によく使われるの?
それともC++はオープン系(WEB系も含む)?

824 名前:デフォルトの名無しさん [2007/07/06(金) 20:47:10 ]
質問です。年月日を入力してツェラーの公式を利用して曜日を表示するプログラム
をつくりたいんですけど、BCCでコンパイルしたら公式のところでエラー
「浮動小数点の不正な使用」ってでるんですけど、どうしてだかわかりますかね?
#include <stdio.h>

int main(void){
int year,month,day;
char youbi[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int i;

printf("Year?");
scanf("%d",&year);
printf("Month?");
scanf("%d",&month);
printf("Day?");
scanf("%d",&day);

i=(year + (year/4) - (year/100) + (year/400) + (2.6*month +1.6) + day)%7;
printf("It's %s.",youbi[i]);
return 0;
}



825 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:49:26 ]
>>821
C++の場合スク水フェチのオジサンが自分で着る用に作ったものもあるので注意

826 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:56:27 ]
>>824
(2.6*month +1.6)を(int)(2.6*month +1.6)にしろ。
ここが整数でないから、%の左側全体が整数型でなくなっている。
剰余演算子は浮動小数点数を演算対象にできないので、件のエラーになる。

827 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:57:13 ]
>>823
Cが制御系で使われるのは「最強」だからではなく「高級アセンブラ」だから。
C++も制御系で使われるよ。C++として使われるかはともかく。

つか、最強ってなんだよ。

828 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 20:58:38 ]
>>824
剰余演算子%というオペランドは整数同士でないとダメ

演算してる行の型がごっちゃになってるから明示的にキャストしたり読みやすくすべき
基本的にコメント文とかで説明もなしに実数を整数に叩き込んだりしちゃだめ

829 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:19:14 ]
なるほど。できました、ありがとうございます。

830 名前:デフォルトの名無しさん [2007/07/06(金) 21:30:26 ]
スレ違いかもだけど、ここの人達他のスレより頼りになりそうなので。。。
基本情報の午後問をCで受かりたいのですが、なんの本を読めばいいですか?
当方、C言語はよくわかりません。COBOLは少しできます。
ただCで受けたいのです。

831 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:32:10 ]
>>830
試験は慣れたものでやるべき

832 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:58:20 ]
>>830
アセンブラがオススメ
例年一番簡単

833 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 21:59:06 ]
C言語ってeclipceかbolandか、
それともvisual basic かどれでやればいいですか?

834 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:04:13 ]
その質問おもしろい?



835 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:10:25 ]
visual studioだっけ?

836 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:12:46 ]
>>833
Linuxでもできるよ。

837 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:14:19 ]
整数型配列は
int iarray[10];
memset(iarray, 0, sizeof(array));
ですべて0で初期化できると知ったのですが、

実数型配列を
double darray[10];
memset(darray, 0.0, sizeof(array));
のように初期化してもかまいませんか?
つまり実数型配列の全ての要素を0.0にしたいのです

838 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:16:31 ]
>>837
いいんじゃね?
DirectXとか、そういう方法で、実数やらポインタやらバリバリクリアしてたな。
移植性は無くなる。

839 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:17:55 ]
> memset(darray, 0.0, sizeof(array)); 

あ、これは、警告かエラーになるな。
sizeof のところはミスだよね?


840 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:19:54 ]
>>837
ANSI/ISO Cへの移植性を望むなら避けるべき。
浮動小数点数がIEEE 754に則っていることを仮定してよいなら構わない。

841 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:21:17 ]
>>833
ほとんどにアルゴリズムの問題
ポケコンのCインタプリタでおk

842 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:26:29 ]
>>839
あと、0.0 は 0 だな。

843 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:27:49 ]
>>839
すみません sizeof(darray) です
あとmanページでmenset関数を調べてみると
#include <string.h>
void *memset(void *buf, int ch, size_t n);
となっていたので
int ch に0.0と渡してもだめなんですね

ということは関数の仕様上は
memset(darray, 0, sizeof(darray));
と書くのが正しくて、
しかもCコンパイラの浮動小数点がIEEE754前提での使い方なので

結局は配列の要素数の分だけループで回して初期化するのが
一番いちゃもん言われにくいということでよろしいでしょうか?
ありがとうございました

844 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:29:23 ]
エクセス64で 0 ってどうなるの?








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

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

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