C言語なら俺に聞け( ..
[2ch|▼Menu]
751:732 ◆L/nntMgEC6
07/07/06 02:42:37
>>744さん
回答有難う御座います。

int i;
char a[]="abc";
i=strlen(a);
char b[i];

のような感じで使いたいのですが、可能でしょうか?

752:デフォルトの名無しさん
07/07/06 02:44:57
>>747 (・∀・)ニヤニヤ 適切と不適切がわからないプログラマーワロスw
キャストは不要でつか〜〜〜?

753:デフォルトの名無しさん
07/07/06 02:46:39
746 名前:デフォルトの名無しさん 投稿日:2007/07/06(金) 02:33:49
アホが常駐しとるな

(VIPPERのAA略) < 常識的に考えて知ったかぶって初心者にありもしないことを言う方がおかしいだろ
どう考えて配列を適切に参照できる、要素番号の範囲内の値をとる式ならって話ならわかるけどw

754:デフォルトの名無しさん
07/07/06 02:48:03
とりあえず (VIPPERのAA略) を NG にした

755:デフォルトの名無しさん
07/07/06 02:49:35
>>744 (^∀^) ニタニタ
> 添え字は整数の値をとる式ならなんでもおkだぞ。
整数の値をとる式ならなんでも 整数の値をとる式ならなんでも
こやつは要素数と参照できる範囲外の値をとってもおkなんだぞぉーーー!

756:デフォルトの名無しさん
07/07/06 02:50:28
>>744 m9(^д^)9m プププ、(ダブル)プギャー

757:デフォルトの名無しさん
07/07/06 02:53:33
文体変えてAA使っても、いつものアホだってことはバレバレ

758:デフォルトの名無しさん
07/07/06 02:53:52
>>754
all right, I will use AA that's not for short.

759:デフォルトの名無しさん
07/07/06 02:54:34
>>757
> いつものアホ
アホとか言っちゃってるよぉ〜〜〜、お前がアホのくせして初心者に大嘘教えているくせにw
お前みたいな奴にアホ言われたくね〜〜なぁ。俺は間違ってねーし。お前は不適切。

760:デフォルトの名無しさん
07/07/06 02:56:01
VIPPER の AA 略 < 常識的に考えて、文法的におkってことを持ち出して
不十分な(というか間違っている)説明の言い訳をするかぁ?
んじゃお前は a[10] の配列の10番目を参照するときは a[10] とでもやってろよ

761:デフォルトの名無しさん
07/07/06 02:56:21
>>751
それはダメ。
配列変数の宣言文には変数は使えない。
それをするなら

nt i;
char a[]="abc";
char *b;
i=strlen(a);
b=(char*)malloc(sizeof(char)*i);

762:デフォルトの名無しさん
07/07/06 02:56:51
>>751
int i;
char a[]="abc";
char *b;
i=strlen(a);
b = (char*)malloc(sizeof(char)*i);

free(b);

スレの流れからすればこんな感じ
bにaと同じ長さの文字列を入れるなら+1しないと駄目だけど。

763:732 ◆L/nntMgEC6
07/07/06 02:58:25
>>761さん
有難う御座います。おかげで疑問が解けました。

764:デフォルトの名無しさん
07/07/06 03:00:43
 |    ( ●)(●)   いい加減な説明をしていることを指摘されて
. |     (__人__)   指摘した相手をアホとか言う方がアホだろ
  |     ` ⌒´ノ   常識的に考えて・・・

765:デフォルトの名無しさん
07/07/06 03:01:22
>>761
C99ならできるというのは禁句かい?

766:デフォルトの名無しさん
07/07/06 03:03:23
回答者が書く補足としては、ありだとおもう。
突っ込みとしては、ちょっと弱い。

767:デフォルトの名無しさん
07/07/06 03:04:15
 / ノ  ⌒ \  文法的にも間違っていることを言う奴が
 |  (●)(●) |  間違っていない奴にアホって言うアホだろ
. |  (__人__)  | 常識的に考えて。ちゃんとキャストしろよ

768:デフォルトの名無しさん
07/07/06 03:05:15
常考常考うるせーよ

貶し合ってないで意味のある話をしろ

769:デフォルトの名無しさん
07/07/06 03:08:42
>>763
VBだとそれができるんだよね。

それはVBなどのインタープリター言語は実行時に変数宣言文も実行文もおなじように上から処理してゆくから。

Cのようなコンパイラ言語はコンパイル時に変数宣言文を処理してゆく。
だからコンパイル時に配列変数のサイズがわかっていないと処理ができない。

JavaもVBと同じだと思う。

770:デフォルトの名無しさん
07/07/06 03:09:22
ここは初心者が鼻息を荒くして入門書読みながらレスしてるのが多くて注意が必要

771:デフォルトの名無しさん
07/07/06 03:09:45
>>765
C99ならできるの?

772:デフォルトの名無しさん
07/07/06 03:10:54
 |    ( ●)(●)   お前みたいな奴は、たとえドラマの役者として
. |     (__人__)   起用されても、まともなキャスティングもされずに
  |     ` ⌒´ノ   脇役かエキストラに決まってんじゃん>アホ言うたアホ

773:デフォルトの名無しさん
07/07/06 03:12:15
AA厨も早く寝ろ
今日はお開きだ

774:デフォルトの名無しさん
07/07/06 03:15:42
>>773 (・∀・)キャスキャス

775:デフォルトの名無しさん
07/07/06 03:17:05
いまさらやらない夫のAA貼り付けて喜んでんのかよw

776:デフォルトの名無しさん
07/07/06 03:27:41
>>771
余裕

777:デフォルトの名無しさん
07/07/06 03:27:46
いまさら やらない か?っつか、いまさらキャストも適切に出来ない奴が
初心者相手にいい加減な説明、笑えねぇ〜〜〜〜〜。お前、指導者に向いてねーよ。

778:デフォルトの名無しさん
07/07/06 04:13:51
キャストすると型によってアドレスが変わるプロセッサの話をすると、へんなのを召喚しちゃいますか?

779:デフォルトの名無しさん
07/07/06 04:41:39
それがどうかしたのか?
printf に渡すときの話とはわけが違うぞ?

780:デフォルトの名無しさん
07/07/06 06:14:06
1バイト文字と2バイト文字が混在してる文字列を
ループ使って1バイトずつputchar()で画面に表示しても
ちゃんとどちらも表示されるのは、シェルやプロンプトの方で
何バイト文字か確認して1バイト文字じゃない時は
一度バッファに溜める、とかしてるからですか?

781:デフォルトの名無しさん
07/07/06 06:21:01
ものによるとしか

782:780
07/07/06 06:49:14
>>781
例えばどうやって処理してるんですか?

783:デフォルトの名無しさん
07/07/06 07:35:00
>>780
いいえ、シェルプログラムはそんなことはしません。

784:780
07/07/06 07:52:43
>>783
あ、コンパイラがやってくれてるんですか?

785:デフォルトの名無しさん
07/07/06 08:09:19
>>784
いいえ、勿論コンパイラの知ったこっちゃありません。

もしかしたら、画面表示はシェルプログラムがやっていると思っているんですか?
例えば他のPCにリモートログインしたときには相手先のシェルプログラムが動くわけですが、
そのシェルプログラムが自分の使っているPCの画面を直接アクセスするなんて夢でも見ているんですか?

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

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

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

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

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

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

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

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

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

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

795:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/06 12:26:17
「作れ」っつった本人に仕様を確認する。

797:デフォルトの名無しさん
07/07/06 13:03:17
とりあえず float は使わない。
使うなら double 。

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

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

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

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

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

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

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

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

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

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

806:デフォルトの名無しさん
07/07/06 18:59:38
>>800 の意図が気になる。

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

808:デフォルトの名無しさん
07/07/06 19:06:00
>>807
Wikipedia項目リンク

809:デフォルトの名無しさん
07/07/06 19:37:26
nullponceというのを提案しまnce

810:723
07/07/06 19:39:17
>>729
忘れてた

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

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

813:デフォルトの名無しさん
07/07/06 20:25:09
>>812
2

814:デフォルトの名無しさん
07/07/06 20:26:34

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

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

これで先に行けます。

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

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

818:デフォルトの名無しさん
07/07/06 20:38:40
>>816
おまえの方がすごいと思う。

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

820:デフォルトの名無しさん
07/07/06 20:41:36
>>812
3の説明がトラックパッドっぽいな

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

822:デフォルトの名無しさん
07/07/06 20:43:22
Cと同じようにできる。

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

824:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/06 20:49:26
>>821
C++の場合スク水フェチのオジサンが自分で着る用に作ったものもあるので注意

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

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

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

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

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

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

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

831:デフォルトの名無しさん
07/07/06 21:32:10
>>830
試験は慣れたものでやるべき

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

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

834:デフォルトの名無しさん
07/07/06 22:04:13
その質問おもしろい?

835:デフォルトの名無しさん
07/07/06 22:10:25
visual studioだっけ?

836:デフォルトの名無しさん
07/07/06 22:12:46
>>833
Linuxでもできるよ。

837:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/06 22:16:31
>>837
いいんじゃね?
DirectXとか、そういう方法で、実数やらポインタやらバリバリクリアしてたな。
移植性は無くなる。

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

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


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

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

842:デフォルトの名無しさん
07/07/06 22:26:29
>>839
あと、0.0 は 0 だな。

843:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/06 22:29:23
エクセス64で 0 ってどうなるの?


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5386日前に更新/185 KB
担当:undef