■ 2ちゃんねるは、
ここのサーバ
を使ってるです。。。
.jp
ドメインお持ちのお客様大歓迎。
maido3.jp
.fm
取得代行します。(US)
maido3.fm
.ca
取得代行します。(US)
maido3.ca
.com .net .org
取得代行します。(US)
maido3.com
.cc .to .tv
取得代行はじめました。
NEW
月々1,000円からの
BinboServer.com
2ちゃんねるも使っている
Big-Server.com
>> 2ちゃんねる、
サーバ監視所
■掲示板に戻る■
■過去ログ倉庫めにゅーに戻る■
C言語なら、俺に聞け! <9>
1 名前:
C言語ハッカー Kusakabe Youichi
投稿日: 01/12/02 14:51
おれは21才、9年間プログラムを一生懸命作ってきた。
あちこちの言語に手を出したが結局極めたのはC言語だけだった。
大体のことなら分かるからオレに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・前スレ C言語なら、オレに聞け! <8>
http://pc.2ch.net/test/read.cgi/tech/1005811510/l50
2 名前:
デフォルトの名無しさん
投稿日: 01/12/02 15:02
2ゲト(・∀・)
って何か2.3日真面目に仕事してたらえらい勢いですすんでるですね
3 名前:
(・∀・)イイ
投稿日: 01/12/02 15:06
疑問に思ったんですが、printfがあればputsは必要ないのではないでしょうか?
それとprintfとputcharでは使用するメモリの領域が違うとかあるんですか?
4 名前:
Kusakabe Youichi
投稿日: 01/12/02 15:08
>>1
C言語ハッカー Kusakabe Youichi wrote:
> おれは21才、9年間プログラムを一生懸命作ってきた。
> あちこちの言語に手を出したが結局極めたのはC言語だけだった。
これってようするにおちこぼれ? (^^;
5 名前:
Kusakabe Youichi
投稿日: 01/12/02 15:21
>>3
(・∀・)イイ wrote:
> 疑問に思ったんですが、printfがあればputsは必要ないのではないでしょうか?
そういう人にとっては、「中華庖丁があれば、柳刃も出刃も菜切りもペティナイフ
も
いらない」んでしょうね :)
6 名前:
デフォルトの名無しさん
投稿日: 01/12/02 15:23
(1)printf は\nをわざわざ入れてやらないと、改行しない。
puts は勝手に改行する。
(2)いろんな書式指定をするならprintf が便利だが、書式指定が特にないならputsを使えばよい。
7 名前:
デフォルトの名無しさん
投稿日: 01/12/02 15:24
>>3
>それとprintfとputcharでは使用するメモリの領域が違うとかあるんですか?
混在して使っても、特に問題はないと思いますよ。
8 名前:
(・∀・)イイ
投稿日: 01/12/02 15:30
>>6
やっぱりその程度の違いしかないんでしょうかね?
>>7
そうですか。やっぱり問題ないですか。ありがとうございます。
9 名前:
(・∀・)イイ
投稿日: 01/12/02 15:40
>>5
悪いんですけど、質問に答える意思がないのならわざわざ書かなくてもいいです。
文句地味たことは必要ありません。
10 名前:
newbieM
投稿日: 01/12/02 15:43
全スレで移動しろと勧告されたので
移動して再度質問させていただきます。
今ある特定のディレクトリの中のファイル名を比較して
リネームというようなソフトを作ろうと思っているんです。
つまりaっていうフォルダに
abc.txt
efg.txt
・・・・
ってあったとき
abc.txtをエービーシー.txt
efg.txtをイーエフジー.txt
という風に初めからあるリストと比較してリネームしたいんです。
ですが具体的にどのように書いたらいいかがわかりません。
どの命令を組み合わせるかおしえていただけないでしょうか?
OSはwin98です。
11 名前:
newbieM
投稿日: 01/12/02 15:44
使ってるソフトはいちおうVC++6.0です。
12 名前:
デフォルトの名無しさん
投稿日: 01/12/02 15:48
>>11
Perlか何かででバッチファイルを書き出せば?
13 名前:
デフォルトの名無しさん
投稿日: 01/12/02 15:48
>>10
windowsはディレクトリを開けないんだっけ?
とりあえずdir.hにfindfirst,findnextとかあったかな
あとstdio.hのrename
windowsではwindows.hのfindfirstfile,findnextfile
あたりだな
14 名前:
(・∀・)イイ
投稿日: 01/12/02 15:54
構造体の宣言で
typedef struct TagPerson{
char *a
int d;
}Person;
と書くのと、
TagPerson{
char *a;
int d;
};
と書くのでの違いはなんなんでしょうか?
15 名前:
Kusakabe Youichi
投稿日: 01/12/02 15:54
>>10
newbieM wrote:
> 今ある特定のディレクトリの中のファイル名を比較して
> リネームというようなソフトを作ろうと思っているんです。
> ですが具体的にどのように書いたらいいかがわかりません。
> どの命令を組み合わせるかおしえていただけないでしょうか?
man 5 rename
16 名前:
(・∀・)イイ
投稿日: 01/12/02 15:57
ごめんなさい。14の訂正です。
構造体の宣言で
typedef struct TagPerson{
char *a
int d;
}Person;
と書くのと、
struct TagPerson{
char *a;
int d;
};
と書くのでの違いはなんなんでしょうか?
17 名前:
Kusakabe Youichi
投稿日: 01/12/02 16:01
>>13
デフォルトの名無しさん wrote:
>
>>10
> windowsはディレクトリを開けないんだっけ?
> とりあえずdir.hにfindfirst,findnextとかあったかな
Windows移植したopendirもころがってますね。
18 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:02
>>16
そのまえに typedef の意味わかってる?
19 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:03
>>16
typedef使うと、タイプ量が減って楽。
20 名前:
(・∀・)イイ
投稿日: 01/12/02 16:06
>>18
typedefの意味は知っています。ようは型定義でしょ?
struct TagPerson{
char *a;
int d;
};
でのグループ名はどこにいっちゃってるんでしょうか?
違いがよくわかりません。
21 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:16
>>20
「グループ名」って、なんだったっけ?
a
22 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:17
typedef struct TagPerson Person;
の意味は分かる?
23 名前:
Kusakabe Youichi
投稿日: 01/12/02 16:19
>>14
(・∀・)イイ" wrote:
> 構造体の宣言で
> typedef struct TagPerson{
> char *a
> int d;
> }Person;
> と書くのと、
> TagPerson{
> char *a;
> int d;
> };
> と書くのでの違いはなんなんでしょうか?
前者はtypedefしてるんですね。
struct TagPerson {char *a; int d;} Person;
typedef struct TagPerson;
と2つにわけてみればわかるでしょう。
また、2つに分けない場合、typedefした名前だけを使うなら、
タグ名はなくてもいいですね。
このへんは第7章にわかりやすく解説されています。
24 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:20
typedef struct TagPerson Person;
Person person;
person.a = "name";
person.d = 0;
---------------------------
struct TagPerson person;
person.a = "name";
person.d = 0;
わかる?
25 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:20
>>20
struct tagPerson1{...};
typedef struct tagPerson1{...} Person2;
int main()
{
struct tagPerson1 *p1;
Person2 *p2;
p1 = (struct tagPerson1 *)malloc(sizeof(struct tagPerson1));
p2 = (Person2 *)malloc(sizeof(Person2));
}
まぁ、実際にはmallocのも取り値はキャストしなくていいけどね。
26 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:22
>>20
この疑問って、自分でコード書けば一発で分かる類のヤツだと思うが。
(それとも、なんか深い意味でもあるのか)
27 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:24
>>20
struct TagPerson{
char *a;
int d;
};
で、TagPerson 型の構造体を宣言したら、後は
struct TagPerson suzuki;
で、 struct TagPerson 型の変数suzukiを宣言すればいいよ。
28 名前:
Kusakabe Youichi
投稿日: 01/12/02 16:33
>>20
(・∀・)イイ wrote:
>
>>18
> typedefの意味は知っています。ようは型定義でしょ?
実際には型定義ではないのだが、そうだと思っていても実害はほとんどないので
最初のうちはそう覚えておけばいいかも。
> struct TagPerson{
> char *a;
> int d;
> };
> でのグループ名はどこにいっちゃってるんでしょうか?
それに「グループ名」ってなんだ? 「構造体名」のこと?
29 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:36
日下部が厨房を吸い寄せててんのか?
前の800位から凄いなちょっと
30 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:37
さあ、誰の教え方が一番うまかったか(藁
31 名前:
デフォルトの名無しさん
投稿日: 01/12/02 16:38
>>9
あんた、「適材適所」って言葉も知らないでしょ ? C 言語の前に、「日本語」
覚えたら ?
32 名前:
newbieM
投稿日: 01/12/02 17:00
/*rename.c*/
#include<stdio.h>
main()
{
char old[] = "借金帳.txt", new[] = "asdcz.txt";
rename( old, new );
}
みたいに作ってみました。ディレクトリからって言うのは
調べてみたんですけどやっぱり使い方わからなくて・・・
でもこれだと200個とか変換するのに
かなり書かなきゃいけませんよね?
そこで
借金帳.txt→asdcz.txt
の部分をリスト化してそれを使ってリネームしたらいいのかなと
思ったんですが・・・そういった場合はどうすればいいんでしょうか?
33 名前:
で
投稿日: 01/12/02 17:14
printf("逝ってよし");
34 名前:
デフォルトの名無しさん
投稿日: 01/12/02 17:15
>>32
名前リストをコンパイル時に確定してしまっていいのなら、これが楽かなぁ。
struct renlist {
const char *rl_src;
const char *rl_dst;
} renlist[] = {
{ "借金帳.txt", "asdcz.txt" },
{ "ノート.txt", "note.txt" },
{ NULL, NULL } /* sentinel */
};
struct renlist *rp;
for (rp = &renlist[0]; rp->rl_src != NULL; ++rp)
rename(rp->rl_src, rp->rl_dst);
35 名前:
デフォルトの名無しさん
投稿日: 01/12/02 17:24
めちゃめちゃ機能限定じゃん! (^∀^)ハハッ
36 名前:
デフォルトの名無しさん
投稿日: 01/12/02 17:33
>>35
Yup. シンプルで良いでしょ? (まぁ、実際には rename の戻り値ぐらいチェック
しないとアレだが)
37 名前:
名無しだゴルァ
投稿日: 01/12/02 18:01
前スレで2分法やらの質問をしたものです。
簡単じゃねえかゴルァ!!
誰か答えてくれたっていいじゃないかゴルァ!!
ってもう出来たからいいけど・・・
以上、愚痴でした。
38 名前:
デフォルトの名無しさん
投稿日: 01/12/02 18:08
>>37
愚痴は sage でな。
39 名前:
デフォルトの名無しさん
投稿日: 01/12/02 19:04
------
Kusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
が用意されて いるので、ム板では書かないようにお願いします。そのような書き
込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をし てるのと
変わりません。
日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/
#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
------
40 名前:
デフォルトの名無しさん
投稿日: 01/12/02 19:21
>>39
おまえの方がよっぽどウザイよ。
風紀委員やりたいなら、学校でやってろ。
41 名前:
デフォルトの名無しさん
投稿日: 01/12/02 19:38
>>40
オマエモナー
42 名前:
(・∀・)イイ
投稿日: 01/12/02 20:14
typedef struct TagPerson{
char *a
int d;
}Person;
で、structの部分、TagPersonの部分、Personの部分をそれぞれなんていうんですか?
なんかこの前聞いた人と違うこと言ってて・・・
43 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:23
>>42
プログラミング言語Cの付録から。
TagPerson はタグ名
Person は typedef 名
44 名前:
(・∀・)イイ
投稿日: 01/12/02 20:32
>>43
ありがとうございます。
struct TagPerson{
char *a;
int d;
};
こういうときは、どうやって使うんでしょうか?
45 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:36
>>44
アレだけみんながよってたかって教えてるのに全滅かい!
46 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:36
>>44
目的語が良く分からんけど、もしかして
>>34
見ると解決したりします?
47 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:39
>>40
まあそう言うな。向こうじゃ全員ではないが
たいていの人間が同意してる。
彼も良かれと思ってやってることだ。
彼のkittyさを知らないわけでもないだろ。
48 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:48
糞壁の書き込みに対する苦情には専門のスレ
が用意されているので、荒れないようにそこでレスしてください。
http://pc.2ch.net/test/read.cgi/prog/1006918877/
#同意も反論も不要です。何かあったら↑のスレでお願いします。
糞壁はカスです。みんなで力を合わせて排除しましょう。
49 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:54
(´-`).。oO(Kusakabeって自分の書いてる事面白いつもりなのかな)
50 名前:
デフォルトの名無しさん
投稿日: 01/12/02 20:56
>>48
言いたいとは良く分かる(やつのせいでお気に入りのスレが荒廃したし)。
だが、基本的にスレ違いな内容だから sage で書け。
51 名前:
デフォルトの名無しさん
投稿日: 01/12/02 22:04
>>48
言いたいことは良く分かる(やつのせいでお気に入りのスレが荒廃したし)。
だが、いちいち書かれるとはっきり言って鬱陶しい。10回に一回くらいの割合で書け。
52 名前:
デフォルトの名無しさん
投稿日: 01/12/02 22:43
>>43
struct TagPerson{
char *a;
int d;
};
で、TagPerson 型の構造体を宣言したら、後は
struct TagPerson suzuki;
で、 struct TagPerson 型の変数suzukiを宣言すればいいよ。
そしたら
*suzuki.a = 25
suzuki.d = 125
と代入できる。
53 名前:
妊娠中
投稿日: 01/12/02 22:48
>>43
typedef struct{
char *a;
int d;
}chinpo;
でchinpo型ができますか?
54 名前:
妊娠中
投稿日: 01/12/02 22:49
あちがえた。
>>52
55 名前:
デフォルトの名無しさん
投稿日: 01/12/02 22:54
>>53
できる。
56 名前:
デフォルトの名無しさん
投稿日: 01/12/02 23:03
C--言語はないんですか?
57 名前:
デフォルトの名無しさん
投稿日: 01/12/02 23:04
C言語やる人はスタックをあまり気にしない人なのでしょうか。
また、構造体メンバのデータ位置もあまり気にしない人なのでしょうか。
58 名前:
デフォルトの名無しさん
投稿日: 01/12/02 23:16
>>57
気にしますよ。
59 名前:
デフォルトの名無しさん
投稿日: 01/12/02 23:16
>>57
人や環境による。
オレはかなりおおまか。
60 名前:
デフォルトの名無しさん
投稿日: 01/12/02 23:54
>>57
場合による。
組み込み系で、開発にPC上のエミュレータなんか使ってる場合、
バウンダリの扱いに気をつけて構造体使わないとハマる。
PCアプリ作る場合なら、ほとんど気にしない。
61 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:01
>>56
JAVAがそうです。
62 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:20
十回乱数を求める時、
1、2、3、・・・10と並んで出る確率と
1、1、1、・・・1と全部1が出る確率は同じでしょうか?
63 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:24
>>62
それC言語関係ないんじゃ?
確率論的には同じじゃない?
64 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:25
>>62
rand()の実装についてききたいのか?
65 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:32
>>56
C--あるよ
66 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:33
>>65
B言語?
67 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:37
>>66
検索しろ
68 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:40
>>67
検索しろって言われてもな、--←これはキーワードとして見てくれないんだよ。
69 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:45
"C--"じゃだめ?
http://www.google.co.jp/search?q=%22C--%22&hl=ja&lr=
70 名前:
67
投稿日: 01/12/03 00:48
ここで検索してみそ
http://www.programmersheaven.com/search/search_all.asp
71 名前:
デフォルトの名無しさん
投稿日: 01/12/03 00:54
>>69
だめみたい・・・
多分--もキーワードとして見てくれているんだろうけど、Cと--を勝手に分けてしまっているんじゃないかな?
>>70
本当にあるんだね(笑)
面白い情報サンクス
72 名前:
newbieM
投稿日: 01/12/03 01:38
>34さん
無事それを使ってできました!
今やっと250ほどのデータ打ち込み終わったところです。
ありがとうございました。
73 名前:
62
投稿日: 01/12/03 07:29
重複しない乱数を取得する質問で、
過去に取得した値を調べて、同じのが無ければ決定する
方法が紹介されていましたが(どのスレだったか忘れました)。
これだと、なかなかループから抜けなくなるかもしれません。
よって、
0〜100の値を10個取得する場合、
配列A[101]にA[0]=0、A[1]=1、...と代入して、
最初は0〜100からランダムに一つ選び、その値を配列から削除し、配列の要素数を-1する。
次は、0〜99からランダムに一つ選び、.....
...
とやる方がいいかな? と思ったのです。
で、乱数関数が全部1を返した場合。
このやりかただと、求まる値は 1, 2, 3, ...となります。
わからなくなってきた・・・。
それより、ある値が出る確率は
(1/101) * (1/100) * (1/99) * .... * (1/92)
になるから・・。
74 名前:
Kusakabe Youichi
投稿日: 01/12/03 07:33
In article
>>73
, 73 62 wrote:
> 重複しない乱数を取得する質問で、
> 過去に取得した値を調べて、同じのが無ければ決定する
> 方法が紹介されていましたが。
どろくさい方法ですよね:)
> これだと、なかなかループから抜けなくなるかもしれません。
数が増えるとかなり遅いですね。
(現実的にはたいがい有限時間内に終わっていますが^^)
> よって、
> 0〜100の値を10個取得する場合、
> 配列A[101]にA[0]=0、A[1]=1、...と代入して、
> 最初は0〜100からランダムに一つ選び、その値を配列から削除し、配列の要素数
を-1する。
> 次は、0〜99からランダムに一つ選び、.....
> ...
> とやる方がいいかな? と思ったのです。
それって意味ないような(^^;
75 名前:
デフォルトの名無しさん
投稿日: 01/12/03 07:45
意味ないの意味が分からないよ。
乱数の範囲が大きくなると、配列のサイズがでかくなるので、
使えないって事?
76 名前:
デフォルトの名無しさん
投稿日: 01/12/03 07:55
あらかじめ含めない値をランダムに求めておいて、並べ替えるやり方はどうですか?
たとえば、2を含めないと決めたら、
A[10] = {0, 1, 3, 4, ..., 9}
を作って、並べ替えるやり方。
77 名前:
Kusakabe Youichi
投稿日: 01/12/03 07:57
In article
>>75
, 75 デフォルトの名無しさん
wrote:
> 意味ないの意味が分からないよ。
> 乱数の範囲が大きくなると、配列のサイズがでかくなるので、
> 使えないって事?
そうじゃなくって、要件を満たしていないのでは? っていう意味。
78 名前:
デフォルトの名無しさん
投稿日: 01/12/03 07:59
#同意も反論も不要。なんかあったら↑のスレで言ってくれ。とか貼られそうな予感・・・・
79 名前:
Kusakabe Youichi
投稿日: 01/12/03 08:03
In article
>>76
, 76 デフォルトの名無しさん
wrote:
> あらかじめ含めない値をランダムに求めておいて、並べ替えるやり方はどうです
か?
> たとえば、2を含めないと決めたら、
> A[10] = {0, 1, 3, 4, ..., 9}
> を作って、並べ替えるやり方。
ですから、その「あらかじめ含めない値をランダムに求めておいて」のところは
どうやるの? :)
80 名前:
デフォルトの名無しさん
投稿日: 01/12/03 08:33
>>62
結局何の確率が知りたいのかわかんない。
rand()関数の出目の確率なのか。
配列を使った自作関数での出目の確率なのか。
81 名前:
デフォルトの名無しさん
投稿日: 01/12/03 09:21
>>79
自分なりに考えてやって見ました。
これで何点くらい、もらえますか?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 100 // 乱数の範囲
#define N 10 // 必要な乱数の範囲
int main()
{
int table[M];
int i;
srand(clock());
for( i = 0; i < M; i++ ) {
table[i] = i;
}
for( i = 0; i < N; i++ ) {
int r = rand() % M;
int tmp = table[i];
table[i] = table[r];
table[r] = tmp;
}
for( i = 0; i < N; i++ ) {
printf("%d ", table[i]);
}
printf("\n");
return 0;
}
82 名前:
デフォルトの名無しさん
投稿日: 01/12/03 09:35
符号付き整数を符号維持したまま右シフトするもっとも単純な方法って?
FAQには符号付き整数の右シフトは処理系依存と書いてあります。
#define RSHIFT(i,n) ((i>0?1:(-1))*(signed)(((unsigned)i)>>n))
こんな馬鹿みたいなのしか思いつかないのですが。
83 名前:
デフォルトの名無しさん
投稿日: 01/12/03 09:40
sizeof(unsigned long) < sizeof(void *)
な処理系、あるいは両者のcastがうまくいかない処理系って
どんなのがありますか?規格では保証していないようですが。
84 名前:
デフォルトの名無しさん
投稿日: 01/12/03 09:53
>>82
そのやりかた、あってる?
あと、FAQの何章に書いてありました?
見つからなかった(^^;
85 名前:
デフォルトの名無しさん
投稿日: 01/12/03 09:55
>>82
いいんじゃないの?
それならcharでもintでもいけるし。たぶん。
最上位ビットを残して云々 って一瞬考えたけど
処理系にすげー依存しそうだしやめた。
86 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:02
>>85
マイナスのとき、処理がうまくいかないよ。
87 名前:
Kusakabe Youichi
投稿日: 01/12/03 10:07
余談ですが、
In article
>>81
, 81 デフォルトの名無しさん
wrote:
> for( i = 0; i < M; i++ ) {
こういうふうに「for」と「(」をはくっつける、
「(」と「)」の内側に空白を明けるっていうのは、
どこの影響だろう :)
括弧のフォントをデザインした人がかわいそうだ :)
88 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:08
>>82
シフトせず、2で割る。 i /= (2 << n);
でも、そういうのはアセンブラで書いたほうが確実。
処理系依存部分は、処理系依存言語に任せる。これ最強。
89 名前:
Kusakabe Youichi
投稿日: 01/12/03 10:09
In article
>>82
, 82 デフォルトの名無しさん
wrote:
> 符号付き整数を符号維持したまま右シフトするもっとも単純な方法って?
「>>>」 :-P
> FAQには符号付き整数の右シフトは処理系依存と書いてあります。
> #define RSHIFT(i,n) ((i>0?1:(-1))*(signed)(((unsigned)i)>>n))
> こんな馬鹿みたいなのしか思いつかないのですが。
unsignedにcastするか、負の場合だけ場合分けしてmaskを使うかでしょうね。
90 名前:
82
投稿日: 01/12/03 10:11
>>84
すみません。処理系依存とは書いてないですね。
ですが Q20.15(書籍版ですが)に「負の数を右シフトすることは割算と
等しくない」とあります。
また、K&R第2版の253ページに「右シフトを負の数にした場合、結果は処
理系依存」という旨の文章があります。
>>84
,86
思いきりまちがえてますね。失礼しました。
(ちょっとオリジナルFAQ&JIS本見る時間が無いので夜まで失礼します)
91 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:15
なるほど、カニチャーハンには
右シフトしたときに処理系によって
0が入るのと符号がはいるのと両方ある
って書いてあるね
手元のだとP60だから、まあその辺
92 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:17
>>89
>>> って古いコンパイラでもつかえる?
93 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:18
>>81
60点。確率が均等でない。
ためしにN=2でtable[0]が2になる確率を考えてみろ。
19,4c19,7
< int r = rand() % M;
< int tmp = table[i];
< table[i] = table[r];
< table[r] = tmp;
---
> int r = rand() % (M - i);
> if (r) {
> int tmp = table[i];
> r += i;
> table[i] = table[r];
> table[r] = tmp;
> }
94 名前:
Kusakabe Youichi
投稿日: 01/12/03 10:19
In article
>>91
, 91 デフォルトの名無しさん
wrote:
> なるほど、カニチャーハンには
> 右シフトしたときに処理系によって
> 0が入るのと符号がはいるのと両方あるって書いてあるね
私なら、「そこだけJavaやる」:) も。
なんでCには「>>>」がないんだろうね。
95 名前:
Kusakabe Youichi
投稿日: 01/12/03 10:20
In article
>>92
, 92 デフォルトの名無しさん
wrote:
>
>>89
> >>> って古いコンパイラでもつかえる?
いや、新しいのでも無理では?
96 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:20
>>94
> 私なら、「そこだけJavaやる」:) も。
もうね、アホかと。馬鹿かと。
97 名前:
Kusakabe Youichi
投稿日: 01/12/03 10:23
In article
>>96
, 96 デフォルトの名無しさん
wrote:
>
>>94
> > 私なら、「そこだけJavaやる」:) も。
>
> もうね、アホかと。馬鹿かと。
そんなにうれしいですか? :)
98 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:28
インラインアセンブラはあっても、インラインジャヴァはありません
99 名前:
Kusakabe Youichi
投稿日: 01/12/03 10:35
In article
>>98
, 98 デフォルトの名無しさん
wrote:
> インラインアセンブラはあっても、インラインジャヴァはありません
あってもだれもつかわなそう:)
100 名前:
てきとう
投稿日: 01/12/03 10:41
#define RSHIFT(i,n) (((i<0?1:0)*(~((unsigned)~0)>>n))|(i>>n))
101 名前:
てきとう
投稿日: 01/12/03 10:43
(i<0?1:0) は 真偽値が 真:1 偽:0 でない処理系を考慮
かっこがおおいのはかんべんしてちょー ぷりぷり
102 名前:
デフォルトの名無しさん
投稿日: 01/12/03 10:59
>>94
> なんでCには「>>>」がないんだろうね。
Cは実行効率至上主義だから。
CPUの都合を考えて実行効率の良い方法でやっちゃって良いよって方針だから。
符号拡張しなけりゃならんとか決めたら、
そーゆー命令のないCPU上で実行効率が落ちるから、そーゆーのを嫌って。
103 名前:
Marezo
投稿日: 01/12/03 11:20
#define RSHIFT(i,n) (signed)((unsigned)i&0x8000|((unsigned)i&0x7fff)>>n)
104 名前:
デフォルトの名無しさん
投稿日: 01/12/03 11:22
>>103
それnが2以上だと
105 名前:
味噌醤油醸造株式会社
投稿日: 01/12/03 11:23
>>103
うちのPCだと、変な結果になります(T-T)
106 名前:
デフォルトの名無しさん
投稿日: 01/12/03 11:30
>>105
うん。間違ってるもん。
107 名前:
初心者
投稿日: 01/12/03 11:31
C言語で画面の制御はどんな関数を使用するんですか?
画面上のラインとカラムを指定して、値の入力・出力ができるんでしょうか?
又、表形式で罫線をひいたりすることはできるんですか?
C言語入門の本は読んだのですが、上記の部分は載っていませんでした。
公開されているサンプルPGも調べてみたのですが、
(調査不足ならすいません)見つけることができませんでした。
教えてください。
108 名前:
デフォルトの名無しさん
投稿日: 01/12/03 11:34
>>107
ncursesのようなライブラリが用意されてれば
それを使うがいいし、もしなければ
機種依存上等!てな感じで
コントロールコードやエスケープシーケンスを駆使して
描画すればいいじゃん、って感じ
109 名前:
初心者
投稿日: 01/12/03 11:43
グラフィック関数を使用するのですか?
110 名前:
デフォルトの名無しさん
投稿日: 01/12/03 11:47
>>109
絵を描きたいならそう言えよ。
111 名前:
初心者
投稿日: 01/12/03 11:58
絵ではなくて、表なんですけど。
すいません。
本には一行単位で入出力が行なわれているんですが、
画面単位で特定の項目の内容を受け取りたい場合や
画面単位で項目名や注意書きを表示する方法が
無かったんです。
で、調べていくうちグラフィック関数の名前だけを知り
それで、表作成ができるのかなと思ってたんです。
112 名前:
Kusakabe Youichi
投稿日: 01/12/03 12:00
In article
>>102
, 102 デフォルトの名無しさ
ん wrote:
> > なんでCには「>>>」がないんだろうね。
>
> Cは実行効率至上主義だから。
> CPUの都合を考えて実行効率の良い方法でやっちゃって良いよって方針だから。
> 符号拡張しなけりゃならんとか決めたら、
> そーゆー命令のないCPU上で実行効率が落ちるから、そーゆーのを嫌って。
でも、その割には1の補数とか、1命令でできないハードウェアもたまに
存在するのに、演算子はありますね。
113 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:05
>>112
たとえばどのハード?
そういうハードに出会ったこと無いので教えてほしい
114 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:12
RSHIFTって、ROTATEじゃなくて、あくまで符号付のままのSHIFTだろ。
>>82
のまんまでいいと思うけど。
115 名前:
Kusakabe Youichi
投稿日: 01/12/03 12:21
In article
>>107
, 107 初心者 <news2ch@toc.d
yndns.org> wrote:
> C言語で画面の制御はどんな関数を使用するんですか?
環境依存でしょう。
116 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:22
-8を符号付で右シフトする例
11111000 -8
(unsigned)
00001000 8
>>1
00000100 4
符号復活
11111100 -4
あー
>>82
のままでいいのか。納得
117 名前:
あぼーん
投稿日: あぼーん
あぼーん
118 名前:
Kusakabe Youichi
投稿日: 01/12/03 12:38
In article
>>113
, 113 デフォルトの名無しさ
ん wrote:
>
>>112
> たとえばどのハード?
> そういうハードに出会ったこと無いので教えてほしい
正確には「ない」のではないかもしれないが、
メルコムとか、その上のCの処理系が履くコードをみてみると、
わざわざ数命令で実現しているので、「ない」のだと思ったが。
(そのマシン純正のfortranもそうだったのでたぶん本当にハード的にないんだと思
う)
まあ、「ないようなハードがいけない」といわれればそれまでだが、
だったら「>>>」も入れてくれてもいいのになーと思ったわけです。
119 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:40
>>116
>あー
>>82
のままでいいのか。納得
printf("%d\n", RSHIFT(-8,1));
うちで実行すると結果はこうなります。
-2147483644
これで、いいんでしょうか?
(俺が勘違いしてるかのかな?)
120 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:41
>>118
(´Д`)
おいおい確認もしないで発言してたのかよ
121 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:42
>>119
>>100
のはどうよ?
122 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:45
>>119
0x80000004 だな
なんかヘンテコリン
123 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:48
#define RSHIFT(i,n) (i>=0?i>>n:(signed)~(((unsigned)~i)>>n))
124 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:49
>>121
printf("%d\n", RSHIFT(-8,1));
で結果は
-4
だった。
125 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:52
>>124
じゃあ
>>100
のが正解か
もうちっと短くならんかね?
126 名前:
デフォルトの名無しさん
投稿日: 01/12/03 12:52
>>123
それじゃあ、iが負のとき正になっちゃうんじゃないか?
127 名前:
デフォルトの名無しさん
投稿日: 01/12/03 14:37
Cを習得するのにどれくらいかかった?
C++は?
VBは?
誰か教えて!
128 名前:
123
投稿日: 01/12/03 14:49
>>126
10010010
↓反転
01101101
↓シフト
00110110
↓反転
11001001
129 名前:
初心者
投稿日: 01/12/03 15:05
>>115
環境依存って、例えばエクセルやアクセスで画面展開して、
必要項目をテキストファイルでCで受け取る。
というような事ですか?
130 名前:
デフォルトの名無しさん
投稿日: 01/12/03 15:08
>>127
Cは二ヶ月。
C++は半年。
VBは一日。
131 名前:
about:RSHIFT
投稿日: 01/12/03 15:20
最上位ビットが1かどうかを値が負かどうかで判定するのは
内部表現が2の補数であるという仮定に基づいていると
思いますが、この仮定って規格で保証されてましたっけ?
保証されていない場合、最上位ビットの判定は
n&~((~((unsigned)0))
>>1
)
でいいでしょうか?
この問題って、いかなる内部表現であれ、
2の補数表現の数を2で割ったようなビット操作を
エミュレートせよ、ってことなのかな。。
132 名前:
デフォルトの名無しさん
投稿日: 01/12/03 15:56
こんな感じの変数を宣言した場合、関数に渡すときって
どんな感じでやればいいのでしょうか?
char *buf[4][8];
今は下みたいにしていて、コンパイルは通るけど
sub関数でmemcpyをして、その値を出そうとするとcoreを吐いてしまうのですが
void sub( char *[][] );
main(){
char *buf[4][8];
sub( buf );
}
sub( char buf[][8] ){
}
133 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:04
>>131
おおっと。たしかにそんな規定は無いかもしれないけど
内部表現が2の補数じゃないアーキテクチャって
どんな表現なのかな?
つーかビット演算って
134 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:14
>>132
main(){
char *buf[4][8];
sub( buf );
}
sub( char *buf[][8] ){
}
でいいんでないの?
135 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:15
実際には見たことないけど,内部に符号ビットがあって、
数値表現は全て正数表現っていうアーキテクチャが一部の
大型計算機にある(あった?)というのを聞いたことがある。
正か負は符号ビットで判断するんだって。
136 名前:
Kusakabe Youichi
投稿日: 01/12/03 16:17
In article
>>127
, 127 デフォルトの名無しさ
ん wrote:
> Cを習得するのにどれくらいかかった?
3日
> C++は?
3週間
> VBは?
3version:)
137 名前:
Kusakabe Youichi
投稿日: 01/12/03 16:28
In article
>>132
, 132 デフォルトの名無しさん wrote:
> こんな感じの変数を宣言した場合、関数に渡すときって
> どんな感じでやればいいのでしょうか?
>
> char *buf[4][8];
> 今は下みたいにしていて、コンパイルは通るけど
> sub関数でmemcpyをして、その値を出そうとするとcoreを吐いてしまうのですが
>
> void sub(char *[][]);
> sub(char buf[][8])
っていうか、よくコンパイル通りますねえ
138 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:30
>>127
>Cを習得するのにどれくらいかかった?
一年くらいかかた。
COBOLをやってたから、最初は、ローカル変数とか引数ってのが
ビンとこなくて、変数は全部、ソースの先頭のところにグローバル
で使ってた。しかも仕事で。はっはっは!
139 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:30
>>132
>sub関数でmemcpyをして
なにやりたいのか,よくわからんのだけれど,
*buf[][]に、memcpyするってこと?
140 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:30
>>136-137
それはageなくちゃいけないような内容なのか?
141 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:30
ところで、右にシフトしたら数が小さくなる規定はあるんだろうか?
142 名前:
デフォルトの名無しさん
投稿日: 01/12/03 16:34
>>141
処理系依存じゃないか?
143 名前:
デフォルトの名無しさん
投稿日: 01/12/03 17:43
>>141-142
2進数表現を素直にマッピングできないような
アーキテクチャのマシンわざわざ作る奴いないだろ。
数字を左から書く文化圏でコンピュータが発明されていたなら
あったかもしれないけど。
数値にグレイコードとか使う変態マシンも理論上ありえるけど
アキュムレータが大変なことになりそう。
144 名前:
デフォルトの名無しさん
投稿日: 01/12/03 18:47
Cの手っ取り早い環境はlcpadとlsicのみでいいですよね?
で、cpadのコンパイラパス入力すれば歓声〜〜、ですか?
145 名前:
C初心者
投稿日: 01/12/03 20:01
K&Rを初めて購入したのですが、この本を使う上での注意点とかありますか?
146 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:07
>>145
破って尻を拭かないように。
147 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:08
>>141
右にシフトしたら数が小さくなる、んじゃなくて、
シフトして数が小さくなる方向が右、なんじゃない?
148 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:08
実際の環境で試しながら読む。
149 名前:
C初心者
投稿日: 01/12/03 20:15
>>148
ありがとうございます。
他の本でK&Rをケチョンケチョンにこき下ろしてる記述(K&RはC言語を分かりづらくしている諸悪の根源とか)
があったりするのですが、実際どうなのでしょうか・・・・。
150 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:19
>>149
Cが分からないと言う奴はそもそもK&Rを読まない。
151 名前:
C初心者
投稿日: 01/12/03 20:22
>>150
オレもそう思うんですけどね。。。
K&Rをこき下ろしてる本とは、これです。↓
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=971
152 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:28
そう言う本は「処理系決め撃ち」で勝手な規格を作ってるんじゃないの?
だからintは4バイトだの、void mainだのって平気で書いちゃう
K&Rには未定義な動作は未定義と書いてるだけだから、そこは別途調べる必要が有ります
153 名前:
C初心者
投稿日: 01/12/03 20:30
>>152
いや、この本はその辺はちゃんとしてます。
void main についてもわざわざ欄を設けて説明してありました。
154 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:31
でも、実際問題、あのポインタ表記はどうにかならんものかと思う。
155 名前:
C初心者
投稿日: 01/12/03 20:33
>>154
と、言いますと?
156 名前:
デフォルトの名無しさん
投稿日: 01/12/03 20:44
>>151
ああ、あれか。K&Rの第五章を焼き直した本ね。
参考文献にK&Rが入っていないCの本は見たことない。
参考文献すら書いてない本は買うに値しない。
ちがう?
157 名前:
C初心者
投稿日: 01/12/03 20:54
>>156
そんな、オレを責められても困りますよ。
158 名前:
デフォルトの名無しさん
投稿日: 01/12/03 21:39
K&R、本屋で立ち読みした。
3分で吐き気がした。
コンピューターとは話せるが、まともな人間と普通のコミュニケーションが取れないヲタが文章を書くと、ああなるという、良い見本だった。
教育学の教科書にサンプルとして採用しようと思った。
もちろん、ダメな解説例として。
人にわかりやすく物事を教えるには、それなりに「教えるスキル」が必要だ。
カニチャーハンは、その辺がまったくわかっていない。
K&Rは、最後の一冊として読むべきだ。最初に読んではいけないし、勉強の途中で読んでもいけない。
ほとんど全部他の本を読み尽くして、C++に逝く直前に読むと良い。
159 名前:
C初心者
投稿日: 01/12/03 21:43
>カニチャーハン
ワロタ!
160 名前:
C初心者
投稿日: 01/12/03 21:45
うーん、K&R買わなければ良かったかなあ・・・(鬱
161 名前:
デフォルトの名無しさん
投稿日: 01/12/03 21:59
>>160
> うーん、K&R買わなければ良かったかなあ・・・(鬱
買っといて損はない。
K&Rが理解できればCの文法は理解したと思って良い。
あと、K&Rは規格書やマニュアルに近い書き方なので、
慣れていない人が読むと
>>158
のような感想を持つでしょう。
162 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:07
>>158
K&R はあくまで「Cの入門書」であって「プログラミングの入門書」でも教科書でも
ないからね。
基本的なプログラミング技術が身についていない人間が読むのは、ちょっと辛い。
身近に質問できる先輩とかいれば、どうにかなるけど。
163 名前:
C初心者
投稿日: 01/12/03 22:08
>>161
なるほど・・・。
「解説書」ではなくて「規格書」「Cの定義文」みたいに接すれば有用だということですね?
164 名前:
仕様書無しさん
投稿日: 01/12/03 22:10
>>158
プログラマー辞めてよし!
165 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:16
つか、日本語版訳が悪いから止めとけってばよ(藁
166 名前:
C初心者
投稿日: 01/12/03 22:17
>>165
その話はよく聞きますね。
167 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:23
じゃー漏れがもっとわかりやすく翻訳しなおしてやろうか?
あれって許可いるのか?
168 名前:
C初心者
投稿日: 01/12/03 22:33
もちろん原著者の許可が要るでしょう。
169 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:36
ヲイヲイCの文法理解すんのに大袈裟じゃないか?
170 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:37
引用には許可は不要です。翻訳してもOK.
171 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:44
>>170
いや、引用でなくて、丸ごと一冊訳そうとたくらんどるんだけど。
172 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:47
>>171
どっかスレ作って、そこでガンガン訳しちゃうってのはどう?
添削も出来るし。
まーこの際著作権は無視だな、ムシ
173 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:48
親切な人がホームページにまとめてアップしてくれそうだし
なんならオレがその役をかってでてもいい
174 名前:
デフォルトの名無しさん
投稿日: 01/12/03 22:49
煽ってるが、捕まるかもw
175 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:12
しかし、あんなクソ訳を放置しておくというのも日本全体の利益にならんな。
役所が金出してくれればいいんだが。
176 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:16
>>151
こきおろしている、というより「時代遅れな記述がある」と言っているんじゃ・・・
俺にはそう読めましたが。
(まあ、たしかにどうでもいいあげあしとりもありますが)
177 名前:
Marezo
投稿日: 01/12/03 23:19
>>103
勘違いしていた(^^;
#define RSHIFT(i,n) i<0 ? (signed)!(!(unsigned)i >> n) : i >> n;
確か「!」はnotだったはず。
178 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:20
>>177
つーか負の表現に2の補数を使ってるところなら
>>100
で完了してるんだけど、どうよ?
179 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:30
関数をstatic宣言するのとしないのの違いを教えてください。
static void hoge();
void hoge();
returnした時に挙動が変わるようなのですが・・・・
よろしくお願いします。
180 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:33
>179
外部から参照できる(static なし)かできないかの違い(static)
181 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:33
>>179
static にすると同一の翻訳単位 (厳密に言うと #include とかあるからアレなんだが、
基本的には同じ *.c に書いてある範囲)からしか呼び出せない。static にしないと、
外部からでも呼び出せる。
> returnした時に挙動が変わるようなのですが・・・・
それは static 変数と勘違いしてないか?
182 名前:
82
投稿日: 01/12/03 23:47
どうも右シフトの元質問者です
なんだかお題の書き方が曖昧だったみたいですんません
割算をしたいという趣旨ではなくて、最上位ビット以外をシフトしたい
ということでした。てことでいろいろヒントをいただいた結果こんなん
になりました。
#define MASK ((~(unsigned)0)
>>1
)
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|(((unsigned)i&MASK)>>n))
簡単にならんかな・・・
183 名前:
179
投稿日: 01/12/03 23:47
レスありがとうございます。とても勉強になります。
returnした時の挙動というのは具体的に言うとこういう事です。
static void alarm(int);
int connect(int a, int b)
{
...A
signal(SIGALRM, alarm);
...B
}
alarm(int signo)
{
return;
}
とあった時SIGALRMシグナルが呼び出されてalarm関数に飛んだ後
returnで一気にconnectへ帰って...Bの領域を実行して無いようなのですが・・・
アドバイスよろしくお願いします。
184 名前:
82
投稿日: 01/12/03 23:49
あれ、だめだな(^^;
185 名前:
82
投稿日: 01/12/03 23:50
いや、やっぱり正しいか<aho
186 名前:
デフォルトの名無しさん
投稿日: 01/12/03 23:54
>>179
OSは
187 名前:
デフォルトの名無しさん
投稿日: 01/12/04 00:02
そもそも、signalの使い方を誤解している
188 名前:
説明より手を動かした方が理解できるだろ
投稿日: 01/12/04 00:06
Unixなの?
まず下記のような2つのファイルを作って
% cc -o main a.c b.c
としろ。エラーが出るだろ。
次にstaticを除いて同じことをしてみろ。エラーが出ないだろ。
外から参照できないってのはつまりこういうこと。
a.c
---
extern void func();
int main() {
func();
}
---
b.c
---
static void func () {
}
---
189 名前:
179
投稿日: 01/12/04 00:09
引き続きレスありがとうございます。
static宣言するメリットというのは外から参照できないというのに尽きるのでしょうか?
190 名前:
デフォルトの名無しさん
投稿日: 01/12/04 00:21
>>182
#define RSHIFT(i,n) (signed)(((unsigned)i&MASK)|(((unsigned)i)>>n))
これダメかな
(unsigned)→(signed)が処理系依存なんで
厳密にはどうしようもない気もしますが…。
191 名前:
179
投稿日: 01/12/04 00:22
ソース見つけました。
http://www4.big.or.jp/~kanai/data/unpv12e/lib/connect_timeo.c
の
connect_alarm(int signo)
{
return; /* just interrupt the connect() */
}
のreturnの役割がわからないです。
これはただ呼び出し元に戻るだけではないのでしょうか?
192 名前:
デフォルトの名無しさん
投稿日: 01/12/04 00:37
>>191
んー…。これってさ alarm() でエラーハンドラに飛ぶ仕掛けが
あるから、ダミーのやつ入れて意図的に処理しないように
してるんじゃないかな。全体見てないのでよくわかりませんけどね…。
193 名前:
デフォルトの名無しさん
投稿日: 01/12/04 00:48
>>183
それはstaticをつけるかどうかによって挙動が変化してるのか?
>>191
returnに意味はないでしょう。
194 名前:
デフォルトの名無しさん
投稿日: 01/12/04 00:52
>>182
負の数を右シフトしたとき、最上位以外の左には、0を詰めたいの?
195 名前:
Kusakabe Youichi
投稿日: 01/12/04 00:54
In article
>>145
, 145 C初心者 wrote:
> K&Rを初めて購入したのですが、この本を使う上での注意点とかありますか?
訳本の場合は「誤植に注意」かな。
不審な箇所があったら原書と見比べよう。
196 名前:
Kusakabe Youichi
投稿日: 01/12/04 00:56
In article
>>149
, 149 C初心者 wrote:
> 他の本でK&Rをケチョンケチョンにこき下ろしてる記述
(K&RはC言語を分かりづらくしている諸悪の根源とか)
> があったりするのですが、実際どうなのでしょうか
デマですね。その本を「わかりやすいいい本だ」と薦められて、
それなのにその本を理解できなかった馬鹿が、
「自分の理解力に問題がある」ことを認めたくないがために、
事実のほうをねじ曲げて「わかりにくい本だ」ということにしようとしたのでしょう。
197 名前:
デフォルトの名無しさん
投稿日: 01/12/04 00:57
コイツは、ニセカベですね。いずれにしても無視だが。
198 名前:
Kusakabe Youichi
投稿日: 01/12/04 00:58
In article
>>153
, 153 C初心者 wrote:
>
>>152
> いや、この本はその辺はちゃんとしてます。
> void main についてもわざわざ欄を設けて説明してありました。
どう書いてありましたか? :)
199 名前:
Kusakabe Youichi
投稿日: 01/12/04 00:59
In article
>>158
, 158 デフォルトの名無しさん wrote:
> 人にわかりやすく物事を教えるには、それなりに「教えるスキル」が必要だ。
カーニハン氏はその点もうしぶんないですね。
200 名前:
Kusakabe Youichi
投稿日: 01/12/04 00:59
In article
>>162
, 162 デフォルトの名無しさん wrote:
>
>>158
> K&R はあくまで「Cの入門書(IC任△辰董屮廛蹈哀薀潺鵐阿瞭ハ臀(IC任盒飢塀颪任發覆いC蕕諭」
え? よくできた「入門書」だと思いますけどねえ。
201 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:00
In article
>>163
, 163 C初心者 wrote:
>
>>161
> なるほど・・・。
> 「解説書」ではなくて「規格書」「Cの定義文」みたいに接すれば有用だということですね?
厳密性に欠けるので「規格書」や「定義」ではないですね。
「Cの入門書」「解説書」っていうのが正しい。
202 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:00
In article
>>165
, 165 デフォルトの名無しさん wrote:
> つか、日本語版訳が悪いから止めとけってばよ
そうですね誤訳や誤植が多いです。
英語読めるひとはなるべく原書を読みましょう。
203 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:01
In article
>>167
, 167 デフォルトの名無しさん wrote:
> じゃー漏れがもっとわかりやすく翻訳しなおしてやろうか?
> あれって許可いるのか?
翻訳するのはかまわないですが、それを出版するには翻訳権の問題が
ありますね > 2次著作を出版
204 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:01
In article
>>170
, 170 デフォルトの名無しさん wrote:
> 引用には許可は不要です。翻訳してもOK.
こういうデマを本気にしないようにね。
205 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:05
偽のほうが、まともなこと書いてるわ(藁
206 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:07
>>77
int A[100] = {0, 1, 2, 3, ... 99};
int B[10];
int index;
for(i = 0; i < 10; i++)
{
index := random(100 - i);
B[i] := A[index];
// indexより右にある要素を左にずらす。
if (index < 99 - i)
{
memmove(&A[index], &A[index + 1], 99 - i - index);
}
}
要件を満たしていませんか?
>>80
>結局何の確率が知りたいのかわかんない。
どこかに0-99までの値で重複しない乱数を10個取得する方法があるとすると、
その方法(方法1)と、上の方法(方法2)が同じ結果を出す確率です。
例えば結果が、1, 2, 3, ...となった場合、
方法2では、random(100 - i)が全部1を返した事になります。
そこで、方法1がデタラメに値を出して1, 2, 3...となった確率と
random(100 - i) が全部1 を返した確率は同じか?と思ったのでした。
randomは真の乱数を返すとします。
ここでは関数の実装方法による出目の確率は問題にしません。
207 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:08
はじまったか。
K&Rは開発者なので、K&R本が良い悪いとか教育者として
どうこういう話は俺もなんだか的外れな印象を受けますね。
208 名前:
あぼーん
投稿日: あぼーん
あぼーん
209 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:10
>>190
unsignedが処理系依存なら、abs()使えば?
210 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:10
第五款 著作権の制限(引用)
第三十二条 公表された著作物は、引用して利用することができる。
この場合において、その引用は、公正な慣行に合致するものであり、
かつ、報道、批評、研究その他の引用の目的上正当な範囲内で行なわれる
ものでなければならない
211 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:11
デマですね。その本を「わかりやすいいい本だ」と薦めて、
それなのにその本は実は悪書だと理解していない馬鹿が、
「自分の理解力に問題がある」ことを認めたくないがために、
事実のほうをねじ曲げて「わかりやすい本だ」ということにしようとしたのでしょう。
212 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:16
>>209
んー… abs() をどう使うのか思いつかない。
おしえて。
213 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:19
>>212
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|((abs(i)&MASK)>>n))
では、だめか?
214 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:22
わかりやすいといっているのは
わかりやすかったからわかりやすいというのではなく
わかりやすくなかったのにわかりやすかったといわないと
わからないばかだとおもわれるから
わかりやすいといっているわけですよ
215 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:23
In article
>>189
, 189 179 wrote:
> 引き続きレスありがとうございます。
> static宣言するメリットというのは外から参照できないというのに尽きるのでしょうか?
178ペイジと254ペイジに解説してありますよ。
216 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:27
>>213
なるほどー。1の補数と2の補数でもOK?
ビットパターンが変わりそうなんだけど…
217 名前:
206
投稿日: 01/12/04 01:28
>どこかに0-99までの値で重複しない乱数を10個取得する方法があるとすると、
これも一つ値が決まると、次は99種類の値から選ぶ事になるので、
確率は同じ。
>>206
のやりかたで問題ない。
求める個数が少なく、randomの範囲が大きい場合、配列の大きさがもったいないので、
その時は日下部法を使えばいいかな。
求める個数とrandomの範囲が大きく、かつ近い場合は206のやり方がいい。
求める個数が多い(=配列Bが大きい)ので配列Aの大きさは問題無し。
218 名前:
仕様書無しさん
投稿日: 01/12/04 01:32
>>216
つーか、
>>182
が、「最上位ビット以外をシフトしたい」と
言ってる意味がわからんのよ、俺。
左から0詰めたいのか、1詰めたいのか(負の場合)。
219 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:32
In article
>>207
, 207 デフォルトの名無しさん wrote:
> はじまったか。
>
> K&Rは開発者なので、K&R本が良い悪いとか教育者として
> どうこういう話は俺もなんだか的外れな印象を受けますね。
っていうかカーニハンは教え方上手いですよね。
220 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:33
In article
>>208
, 208 デフォルトの名無しさん wrote:
> おこずかいの欲しい女の子募集!!
づ
221 名前:
Kusakabe Youichi
投稿日: 01/12/04 01:33
In article
>>209
, 209 デフォルトの名無しさん wrote:
>
>>190
> unsignedが処理系依存なら、abs()使えば?
...
222 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:37
>>221
(unsigned char)(-1)
1 ? 255 ?
223 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:39
>>218
俺もよくわからんです。(w
算術シフトみたいなのをイメージしたんだけど、負数の表現方法で
ビットパターンそのものが違うから、最上位ビット以外シフトに
どういう意味があるのか俺はよくわかってなかったりする。(w
224 名前:
206
投稿日: 01/12/04 01:41
無視しないでよ。
225 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:46
個人的にはK&Rは辞書代わりに使ってました(ます)。
本当は規格書を参照した方がいいのでしょうけど。。
なお、K&Rの正誤表なるものがベクターにありました。
内容は未確認ですが。。
226 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:50
最近のK&Rは正誤表どおりに直ってる
けどまだちょっと違うとの声
227 名前:
デフォルトの名無しさん
投稿日: 01/12/04 01:58
>>4
がわからん。 1とは別人なのかな??
228 名前:
Kusakabe Youichi
投稿日: 01/12/04 02:05
In article
>>225
, 225 デフォルトの名無しさん wrote:
> 個人的にはK&Rは辞書代わりに使ってました(ます)。
> 本当は規格書を参照した方がいいのでしょうけど。。
主にどんなことを調べていましたか?
演算子の結合の優先順序?
229 名前:
デフォルトの名無しさん
投稿日: 01/12/04 02:15
>>227
1 の名前はネタ。本物の Kusakabe Youichi は煽りのプロ、かつスレ違いな話を
age で延々と続けるので、相手にしないことが推奨されてます。また騙りも多く、
Kusakabe Youichi 名義の人間を相手にした結果、荒廃したスレッドは数知れず。
ただし、本物の Kusakabe Youichi は煽りのプロとはいえ、技術的には「それなり
に分かってる」人なので、まっとうな返事をもらったら感謝しておきましょう。スレ
違いなツッコミを受けたら、はらわたが煮え繰り返っても相手にせず無視しましょ
う。
#スレを読んでる人には、どっちがバカかは論争せずとも分かってます。
Kusakabe Youichi について、これ以上の詳しいことはプログラマー板の自治スレ
や隔離スレを読んで悟ってください。
230 名前:
206
投稿日: 01/12/04 02:24
私が無視されるのって、もしかして日下部さんの痛い所を突いたからですか?
ごめんなさい、あやまります。
231 名前:
Kusakabe Youichi
投稿日: 01/12/04 02:32
In article
>>230
, 230 206 wrote:
> 私が無視されるのって、もしかして日下部さんの痛い所を突いたからですか?
え、どの発言ですか? > 無視された
232 名前:
206
投稿日: 01/12/04 02:39
>>231
の発言に私は答えるべきでしょうか? それとも無視するべきでしょうか?
>>229
さん、教えて下さい!
233 名前:
デフォルトの名無しさん
投稿日: 01/12/04 03:04
自分の発言くらい自分で判断しろ!
234 名前:
Kusakabe Youichi
投稿日: 01/12/04 03:18
あ、俺どうしようもなくキチガイだから。
235 名前:
デフォルトの名無しさん
投稿日: 01/12/04 03:31
>>232
痛い/痛くないは技術的な話から逸れそうだから、続きはこっちでやれば?
日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/
236 名前:
デフォルトの名無しさん
投稿日: 01/12/04 06:34
くだらない事ですが、、文字配列の添え字アクセスについてです
main()
{
FILE *fp = NULL;
char *buf = NULL; /* 行バッファです */
size_t size = 10240;/* バッファのサイズです */
/* ファイルをオープンします */
buf=(char *)malloc(size);
memset(buf,'\0',size);/* 塗りつぶしておきます */
while(fgets(buf,size,fp)){
if(buf[size-3] != '\0')/* ←←ここです! *//* 行の最後まで読めなかった */
/* 領域を拡張して読み直します */
else
printf("%s",buf);
}
}
この[size-3]の添え字計算はマズイと言うか最適化されませんか?
char *chkptr = size - 3;として
buf[size-3] の変わりに *chkptr とした方が良いでしょうか
reallocしてアドレスが変わる可能性が有るから、最適化出来ないのかなぁ・・・
とか勝手に思ってるんですが、
と言うかこのやり方馬鹿ですか? (汗
237 名前:
デフォルトの名無しさん
投稿日: 01/12/04 06:36
うわっ間違えました!!
char *chkptr;
chkptr = buf + sizeof(char)*(size - 3);
です 、、
238 名前:
デフォルトの名無しさん
投稿日: 01/12/04 06:47
>>236
どういう書き方をすると、速くなるかは実際にコンパイルするまで
分かりません。
工夫した書き方で、逆に遅くなることもあります。
その例だと、どちらが速くなっても、わずかな差しかないと
思うので、自分が「素直」だと思う書き方が良いと思いますよ。
スピード重要で少しでも早くしたいときは、ソースで判断せずに、
実際に実行させて、計測してください。
239 名前:
デフォルトの名無しさん
投稿日: 01/12/04 06:50
>>237
>chkptr = buf + sizeof(char)*(size - 3);
この sizeof はいりません。
charだから動いているけど、それ以外の型だと、このコードは
正常にうごきませんね。
240 名前:
デフォルトの名無しさん
投稿日: 01/12/04 07:06
まず判定方法を改めろ。fgetsの返値を使うとかな。
最適化を語るのは、それからの話だ。
241 名前:
236
投稿日: 01/12/04 07:24
間違えてるじゃん、、ううっ、皆さん有難う御座います。
>>238
気にする程でも無いですか、そう言われると気にならなくなって来ました
当分は-O3様にお任せしますです。
>>239
ぎゃっ、すいません。キャストか良く分かっていないです。。。
>>240
戻り値はこの場合だとbufですよね、、でもif(buf=fgets(buf,size,fp))とか
すると開放する時に if(buf);free(buf); って出来なくなるし。。。
取り合えず変なやり方と言う事ですよね。うーん
242 名前:
236
投稿日: 01/12/04 07:27
もう間違えまくり(鬱
キャストか → キャストとか
if(buf=fgets(buf,size,fp)) → if((buf=fgets(buf,size,fp))!=NULL)
逝ってきます
243 名前:
Kusakabe Youichi
投稿日: 01/12/04 07:30
In article
>>236
, 236 デフォルトの名無しさん wrote:
> FILE *fp = NULL;
> char *buf = NULL; /* 行バッファです */
意味のない初期化ですね。
> size_t size = 10240;/* バッファのサイズです */
変数に入れなくてもいいのでは?
> buf=(char *)malloc(size);
エラーチェックぐらいしておけば?
> memset(buf,'\0',size);/* 塗りつぶしておきます */
何の意味があるの? (末尾だけじゃだめなの?)
> if(buf[size-3] != '\0')/* ←←ここです! *//* 行の最後まで読めなかった */
> /* 領域を拡張して読み直します */
じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?
> この[size-3]の添え字計算はマズイと言うか最適化されませんか?
> char *chkptr = size - 3;として
なぜ-3なの? -1 じゃなくて?
244 名前:
Kusakabe Youichi
投稿日: 01/12/04 07:30
In article
>>240
, 240 デフォルトの名無しさん wrote:
> まず判定方法を改めろ。fgetsの返値を使うとかな。
どう使うのでしょうか? :)
245 名前:
Kusakabe Youichi
投稿日: 01/12/04 07:38
In article
>>243
, 243 Kusakabe Youichi <void@merope.pleiades.or.jp> wrote:
> > memset(buf,'\0',size);/* 塗りつぶしておきます */
> 何の意味があるの? (末尾だけじゃだめなの?)
っていうか末尾の1つ前か
> > この[size-3]の添え字計算はマズイと言うか最適化されませんか?
> > char *chkptr = size - 3;として
>
> なぜ-3なの? -1 じゃなくて?
-2かな。
246 名前:
236
投稿日: 01/12/04 07:50
>>Kusakabe Youichiさん 有難う御座います。
>意味のない初期化ですね。
はい、厨房です、bufに付いては後でfreeする時に怖いので(勘違い?)(鬱
>変数に入れなくてもいいのでは?
/* 領域を拡張して読み直します */ の部分が
bufExpansion(&buf,&size,fp);とかになっとります(鬱
>じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?
力の限り(鬱
>なぜ-3なの? -1 じゃなくて?
end of string\n\0というパターンを考えました(鬱
何かスレのレベル下げまくりみたいなんで山に帰ります。
謝謝了。
247 名前:
Kusakabe Youichi
投稿日: 01/12/04 07:59
In article
>>246
, 246 236 wrote:
> > 意味のない初期化ですね。
> はい、厨房です、bufに付いては後でfreeする時に怖いので(勘違い?)
はい勘違いですね。逆に言えばNULLをfreeしたときの挙動は
標準規格では未定義だったように記憶しています。
(少なくとも標準規格以前のBSD(VAXとか)ではfree(NULL)したときには
何も起きませんでしたが、SystemV系のではfree(NULL)するとSegmantation Fault
でコアダンプするものがほとんどでしたよ)
> > 変数に入れなくてもいいのでは?
> /* 領域を拡張して読み直します */ の部分が
> bufExpansion(&buf,&size,fp);とかになっとります
なるほど。だったら変数にすることはかまわないですが、
最初に変数に与える数値は#defineしておきましょうね。
あと、そのbufExpansionですが、reallocとか使っているのでしょうか?
fpを渡しているのはなぜでしょう?
もしかして中でfgets()を呼んでいる?
だとしたら「関数のまとめる」ために切る部分を誤っているような。
# 一般に言って、やたらと引数が多くなったり、アドレスを渡す引数が多くなる
# ような関数分けはどこか間違っていることが多いです。
> > じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?
> 力の限り(鬱
> > なぜ-3なの? -1 じゃなくて?
> end of string\n\0というパターンを考えました(鬱
え? でも「\n」だったら「\0ではない」のだからいいのでは?
248 名前:
デフォルトの名無しさん
投稿日: 01/12/04 08:12
if(baz)
free(baz);
で破棄した時にbazにゴミが入ってたらヤバイっつってんだろ
魔板でレスするなって怒られてるんだけどな B -)
249 名前:
Kusakabe Youichi
投稿日: 01/12/04 08:19
In article
>>248
, 248 デフォルトの名無しさん wrote:
> if(baz)
> free(baz);
> で破棄した時にbazにゴミが入ってたらヤバイっつってんだろ
この馬鹿理解してないみたい(^^;
つまり、ifでNULLだけどけてみたり、freeでゴミが入ってるかもしれない
なんていうコードの書き方ってのは「場当たり的すぎ」だという意味です。
(「予防的プログラミング」に似ているがその実が違う)
250 名前:
デフォルトの名無しさん
投稿日: 01/12/04 08:38
実の無い会話だね
251 名前:
デフォルトの名無しさん
投稿日: 01/12/04 08:50
つくづくこのオッサンは口だけだと思ってしまう
アホが書いたランダム爆撃コードを良く退治させてもらったもんだが
多分アンタの本読んだんだろね p
素人には難しいかもしれないが、コーダーってのは色んなレベルの寄せ集め
なんだよ、もし話が理解出来なくて気を悪くしたならすまないね。
252 名前:
Kusakabe Youichi
投稿日: 01/12/04 08:54
In article
>>251
, 251 デフォルトの名無しさん wrote:
> つくづくこのオッサンは口だけだと思ってしまう
「思ってしまう」->「思いたい」ですかね。
> アホが書いたランダム爆撃コードを良く退治させてもらったもんだが
> 多分アンタの本読んだんだろね p
11月12日発売でした。
> 素人には難しいかもしれないが、コーダーってのは色んなレベルの
とか偉そうに言うやつにかぎってしょーもないコード書くのよね:)
253 名前:
デフォルトの名無しさん
投稿日: 01/12/04 09:03
少なくともANSIの規格上ではfree(NULL)は何も起きないことが
保証されているはず。
どっかのタコな実装は知らん。
254 名前:
デフォルトの名無しさん
投稿日: 01/12/04 09:06
>11月12日発売でした。
そりゃ良かったよ、色んな意味でね
>とか偉そうに言うやつにかぎってしょーもないコード書くのよね:)
俺やお前を含めてね。
255 名前:
Kusakabe Youichi
投稿日: 01/12/04 09:10
In article
>>253
, 253 デフォルトの名無しさん wrote:
> 少なくともANSIの規格上ではfree(NULL)は何も起きないことが保証されているはず。
あれ? そうでしたっけ。
調べてみます。
> どっかのタコな実装は知らん。
ベル研に言ってください :) > どっかの
256 名前:
Kusakabe Youichi
投稿日: 01/12/04 09:12
In article
>>254
, 254 デフォルトの名無しさん wrote:
> > 11月12日発売でした。
> そりゃ良かったよ、色んな意味でね
時系列的因果関係は合ってますか?
> > とか偉そうに言うやつにかぎってしょーもないコード書くのよね
> 俺やお前を含めてね。
無理に私までいっしょにしなくてもいいですよ :)
257 名前:
デフォルトの名無しさん
投稿日: 01/12/04 09:12
Kusakabeは無視。定説です。
258 名前:
ヒツキー@プロゴルァミング
投稿日: 01/12/04 09:16
Kusakabeの偽者多いなぁ。
騙されてる
>>257
みたいなのも多いなぁ。
259 名前:
Kusakabe Youichi
投稿日: 01/12/04 09:19
In article
>>257
, 257 デフォルトの名無しさん wrote:
> Kusakabeは無視。
とかいちいち書くやつ :)
260 名前:
通りすがりですけど
投稿日: 01/12/04 09:30
>>259
Kusakabe Youichiさん wrote:
>> Kusakabeは無視。
>とかいちいち書くやつ :)
とかいちいち書く偽者 :)
261 名前:
Kusakabe Youichi
投稿日: 01/12/04 09:37
In article
>>255
, 255 Kusakabe Youichi <void@merope.pleiades.or.jp> wrote:
> > 少なくともANSIの規格上ではfree(NULL)は何も起きないことが保証されているはず。
>
> あれ? そうでしたっけ。
> 調べてみます。
調べてみました。C89以降は保証されているようですね > free(NULL)は何も起きない
でも、やはりmallocが返す値を入れる変数を
「あらかじめNULLにしておく」のを薦めるのはやはり変だと思います。
(たとえばこの人も薦めてる >
http://www.google.com/search?q=free+%88%F8%90%94+NULL&hl=ja&lr=
)
つまりその変数が最初のmallocの値を受け取るよりも前に
「free」が呼ばれた場合のことを考えた処置ですよね。
それはつまり、変数を宣言したあと「そのfreeが絶対にmallocからの値を代入する
よりも前に出てこない」ことが保証できないぐらいの複雑さの場合は意味を持ちますが
逆にいえば、そんな汚いコードを書くことのほうをどうにかするべきです。
同様のことは、たとえばif ((fp = fopen( ...で使う変数fpを
FILE *fp = NULL; のように初期化しておくことにも言えます。
262 名前:
デフォルトの名無しさん
投稿日: 01/12/04 09:49
まぁ char *buf = (char*)malloc( size ); と
書ければすむ話なんですがね。better C としてのC++利用。
初期化は、こういうことを為かもしれませんね。
char *a = NULL; char *b = NULL;
if( !a = malloc( size ) ) goto error;
if( !b = malloc( size ) ) goto error;
--snip--
error:
free(a); free(b)
263 名前:
Kusakabe Youichi
投稿日: 01/12/04 09:57
In article
>>262
, 262 デフォルトの名無しさん wrote:
> まぁ char *buf = (char*)malloc( size ); と
> 書ければすむ話なんですがね。
っていうか、その表記が許されたとしても、
「宣言と代入が離れすぎていて、freeが先におこなわないことを保証できない」
コードって問題でしょ?
たとえば宣言をmallocからの代入の「すぐ近く」に置くことで、
freeがそれより前の行になってしまうようなものはコンパイル時にエラーに
できちゃうわけで。
> better C としてのC++利用。
Cでもできますね > ブロックの先頭以外に変数宣言を書く。
> 初期化は、こういうことを為かもしれませんね。
> char *a = NULL; char *b = NULL;
>
> if( !a = malloc( size ) ) goto error;
> if( !b = malloc( size ) ) goto error;
> --snip--
> error:
> free(a); free(b)
はい。たぶんそういうことをやりたいんでしょうね。
でもそれはずいぶん汚い書き方ですよね。そっちのほほうを何とかすべきで
あって、「NULLを入れておかないと危険」なような書き方自体に問題がある
わけです。
264 名前:
デフォルトの名無しさん
投稿日: 01/12/04 10:02
if(hoge)free(hoge); と言うより
free(hoge)hoge=NULL; なんだけどなあ・・・
つまりhogeにはまともなポインタかNULL以外入って欲しく無いし
それでバグ取りがやり易かったり超実用的なんだけど・・・
こんな事言うと「そんなヘボい構造自体が」とか言われそうだけど
私が書いたんじゃないんだよなあ
って言うと「そもそもそう言う設計自体が」って来るんだろねえ (^∀^)アハハッ
265 名前:
Kusakabe Youichi
投稿日: 01/12/04 10:08
In article
>>264
, 264 デフォルトの名無しさん wrote:
> if(hoge)free(hoge); と言うより
> free(hoge)hoge=NULL; なんだけどなあ
なるほどfreeしたあとですか?
だったら、宣言時だけじゃあだめですね。
(freeしたたびに代入ですかー)
> つまりhogeにはまともなポインタかNULL以外入って欲しく無いし
でもそれはfreeに渡す変数だけじゃなく、すべてのポインターに関して
言えるのでは?
(ある時点でその指しているものが無意味に成ってしまうポインター変数なんて
いくらでもありそうですし)
> それでバグ取りがやり易かったり超実用的なんだけど
ですからそれは「本末転倒」ってやつですね。
「わかりにくいプログラム」を「わかりやすく直す」ことをせずに、
デバッグしやすくする方法って感じですね。
266 名前:
デフォルトの名無しさん
投稿日: 01/12/04 10:11
とにかくこの人は言ってる事がかなりヤバイです、いやホント。
構造体ポインタはちょっと、、とか平気で言っちゃう人もプロジェクトには居る訳ですね
嫌あなたが超絶天才的C言語完全体なのはわかりますがね。
実際そう言う人とやってくのが仕事な訳ですよ、ええ。
そう言う人相手に「for使うならカウンタの初期化は無駄です」なんて
教えると会社潰れる位のつけ払う事になりますわ、多分
267 名前:
デフォルトの名無しさん
投稿日: 01/12/04 10:16
糞壁はその存在自体が壮大なネタだからね(と思いたいです。)
268 名前:
Kusakabe Youichi
投稿日: 01/12/04 10:17
In article
>>266
, 266 デフォルトの名無しさん wrote:
> とにかくこの人は言ってる事がかなりヤバイです、いやホント。
「ということにしたい」のですね? :)
> 構造体ポインタはちょっと、、とか平気で言っちゃう人もプロジェクトには居る訳ですね
意味がわからないですが...
「構造体ポインタは使わないほうがいい」という人がプロジェクトにいたりする
っていう意味ですか?
っていうか、そんな人が平気で存在できるようなプロジェクトや会社に
自分がいるっていう事実はどう認識しているのですか? :)
> 実際そう言う人とやってくのが仕事な訳ですよ、
自分のあまりにも情けない環境を「世の中のごくふつう」だと
思い込みたいからといって、事実をねじまげるには無理がありますね :)
269 名前:
Kusakabe Youichi
投稿日: 01/12/04 10:22
In article
>>267
, 267 デフォルトの名無しさん wrote:
> 糞壁はその存在自体が壮大なネタだからね
こういうのがいっぱい暴れて会話の邪魔をするところなんですね。
2chって。
270 名前:
デフォルトの名無しさん
投稿日: 01/12/04 10:22
Kusakabe Youichi先生は4徹でデバッグとかした事有りますか?
271 名前:
デフォルトの名無しさん
投稿日: 01/12/04 10:28
OpenDivX のコード読んだです (´ー`)
氏んだです (´ー`)
272 名前:
Kusakabe Youichi
投稿日: 01/12/04 10:28
In article
>>270
, 270 デフォルトの名無しさん wrote:
> Kusakabe Youichi先生は4徹でデバッグとかした事有りますか?
それって何ですか? > 4徹
273 名前:
デフォルトの名無しさん
投稿日: 01/12/04 10:29
>>269
えっネタじゃ無いんですか? (^^;
274 名前:
iku
投稿日: 01/12/04 10:50
こんにちは。ikuと言います。
あ い うのデータを
CSVにあ,い,うという形で出力する方法を知りたいのですが,
教えて頂けないでしょうか?
それともう一つ,
もしその出力するCSV1にデータが存在していた場合,
初期化してからデータ出力をしたいのですが,
どうすれば初期化できるのでしょうか?
よろしくお願いします。m(_ _)m
275 名前:
Kusakabe Youichi
投稿日: 01/12/04 10:59
In article
>>274
, 274 iku <IZP03611@nifty.ne.jp> wrote:
> こんにちは。ikuと言います。
> あ い うのデータを
> CSVにあ,い,うという形で出力する方法を知りたいのですが,
> 教えて頂けないでしょうか?
ふつうに書けばいいのでは?
でも文字列は全部「"」で括ってたような > ふつうのCSV
> それともう一つ,
> もしその出力するCSV1にデータが存在していた場合,
> 初期化してからデータ出力をしたいのですが,
man fopen
276 名前:
お胸おっぱい
投稿日: 01/12/04 11:04
>>274
意味判らん…
空白で区切った "あ い う" を、カンマ区切りにしたいってこと?
277 名前:
デフォルトの名無しさん
投稿日: 01/12/04 11:27
なんで、こいつは、fjでほとんど発言しなかったfree()問題を
ここでしつこく語ってるかと言うと、fjでは突っ込まれるのが怖くて
発言できなかったから。
278 名前:
デフォルトの名無しさん
投稿日: 01/12/04 11:47
>>274
要するに、日本語を含んだスペース区切りのCSVを
コンマ区切りにCSVに直した言ってことか?
普通にスペースをコンマにReplaceすりゃいいじゃん。
C言語でやると漢字の2バイト目にスペースと同じ文字コードが
含まれてる可能性があって、分岐がめんどくさくなるような。
279 名前:
Kusakabe Youichi
投稿日: 01/12/04 12:13
In article
>>277
, 277 デフォルトの名無しさん wrote:
> なんで、こいつは、fjでほとんど発言しなかったfree()問題を
> ここでしつこく語ってるかと言うと、
はつみみですね。fjで何度か話題になったのは、
「exitするときにいちいちfreeコードは意味があるか?」という
話題なので、全然ちがう話題ですね。
> fjでは突っ込まれるのが怖くて発言できなかったから。
ということにしたいわけですね? :)
(それで私の発言は見なかったことにしてるのですね^^)
280 名前:
デフォルトの名無しさん
投稿日: 01/12/04 13:46
>>265
CODE COMPLETE 読みましょう。
私は dangling pointer 嫌いです。ただ C だと全面的に dangling pointer
を追放するのは難しい(いちいち NULL を自分で代入しないとならなず、現実
的ではない)から、諦めてますけど。
C++ を使う場合には「所有する」オブジェクトに関しては std::auto_ptr な
どのスマートポインタを多用しますし、また関連を張るために使うポインタに
ついては NULL or 意味のあるポインタ値が常に保たれるように注意します。
281 名前:
名無し
投稿日: 01/12/04 13:47
誰かさんの作ったexeファイルを
visualC++でそのプログラムを
見るにはどうしたらいいのんですか?
282 名前:
デフォルトの名無しさん
投稿日: 01/12/04 14:01
visualC++にドラッグしてドロップしろ
283 名前:
デフォルトの名無しさん
投稿日: 01/12/04 16:48
>>263
> Cでもできますね > ブロックの先頭以外に変数宣言を書く。
できませんよ。途中にブロックを作ってその先頭に変数宣言を
書くことはできますが。
284 名前:
Kusakabe Youichi
投稿日: 01/12/04 16:57
In article
>>283
, 283 デフォルトの名無しさん wrote:
>
>>263
> > Cでもできますね > ブロックの先頭以外に変数宣言を書く。
>
> できませんよ。
いえできますよ。
> 途中にブロックを作ってその先頭に変数宣言を書くことはできますが。
そりゃもちろんできますね。でもそれは「ブロックの先頭」ですね。
285 名前:
投稿日: 01/12/04 17:12
>>281
逆アセンブルすればいい。MSDNをよく調べろ。
つーか、コンパイルがなんであるか良く分かってないだろ。
286 名前:
デフォルトの名無しさん
投稿日: 01/12/04 17:14
>>284
C99からはブロックの途中から変数宣言できるようになったんですか?
ANSI X3.159 の古い規格しか知らない物で。
287 名前:
投稿日: 01/12/04 17:15
ここはニュースグループじゃないんだから、無駄な引用はするなボケ。
しかも、articleじゃ無くてただのレス。
288 名前:
デフォルトの名無しさん
投稿日: 01/12/04 17:19
>>286
C99からできるようになったのよ。
http://std.dkuug.dk/JTC1/SC22/WG14/
参照のこと。
厳密じゃなくてもいいなら
http://seclan.dll.jp/
あたりもお手軽かも。
# 単にCと言った場合は混乱するなあ。規格の趣旨から言うと現行規格は
# ISO/IEC 9899:1999のみなんだけどさ。
289 名前:
Kusakabe Youichi
投稿日: 01/12/04 17:21
In article
>>286
, 286 デフォルトの名無しさん wrote:
> C99からはブロックの途中から変数宣言できるようになったんですか?
なってますよ。
for (int i = 0; ... みたいなのもできるし。
複合定数も、指定付き初期化も。
290 名前:
デフォルトの名無しさん
投稿日: 01/12/04 17:26
>>289
C99サポートしたコンパイラなんてまだ一般的ではないんだから、一言
「C99では」と前置きしとけ。
291 名前:
Kusakabe Youichi
投稿日: 01/12/04 17:26
In article
>>287
, 287 wrote:
> ここはニュースグループじゃないんだから(Iyぢ無駄な引用はするなボケ。
また「ニュースグループ」とかわけのわからないこと言うやつがいた :)
292 名前:
Kusakabe Youichi
投稿日: 01/12/04 17:27
In article
>>288
, 288 デフォルトの名無しさん wrote:
> # 単にCと言った場合は混乱するなあ。
混乱しないでしょ? override...じゃないや、えっとようするに
新しいのが古いのを上書きしてるんだし。
293 名前:
デフォルトの名無しさん
投稿日: 01/12/04 17:34
そろそろ荒らし対策にお願いでもだしとくか?
294 名前:
デフォルトの名無しさん
投稿日: 01/12/04 17:43
>>288
JIS があるやん。
295 名前:
288
投稿日: 01/12/04 17:54
>>292
> override...じゃないや、えっとようするに
outdate
> 新しいのが古いのを上書きしてるんだし。
288でもそのように書いたつもりですが。
ANSI X3.159-1989、ISO/IEC 9899:1990、ISO/IEC 9899:1999のそれぞれで仕様が
異なる場合はC89、C90、C99と明記することが多くありません? (いまだにC9Xと
呼んでる人もいるけど)
念の為、これはISO/IEC JTC1/SC22/WG14のmailing archiveやcomp.lang.cを読んだ感想です。
296 名前:
◆RubyOmS2
投稿日: 01/12/04 18:04
>>295
C99に対応していないgcc2.95.3を使っている俺としては、
C99でしか使えないことは明記して貰うとありがたい。
297 名前:
Kusakabe Youichi
投稿日: 01/12/04 18:08
In article
>>295
, 295 288 wrote:
> > 新しいのが古いのを上書きしてるんだし。
> 288でもそのように書いたつもりですが。
> ANSI X3.159-1989、ISO/IEC 9899:1990、ISO/IEC 9899:1999のそれぞれで仕様が
> 異なる場合はC89、C90、C99と明記することが多くありません?
うーん、C90っていう言い方はあまり聞かないですね。
C89でまとめちゃってる気がする。
> (いまだにC9Xと呼んでる人もいるけど)
C99をそう呼ぶひとってのは、確実にC90とはいいそうにないですね。
298 名前:
288
投稿日: 01/12/04 18:14
>>297
> うーん、C90っていう言い方はあまり聞かないですね。
ほとんど一緒ですから。
> C99をそう呼ぶひとってのは、確実にC90とはいいそうにないですね。
そんなことないですよ。C99がdraftのころは自分のことをC9Xと呼びつつ、
ANSIを参照するときはC89、ISOを参照するとき(めったにないけど)はC90
と書いてました。その時のくせがまだ抜けない人もいるみたいです。
299 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:18
>>298
ネタにマジレスですか?
300 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:22
日下部さん御歳はいくつですか?
301 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:24
>>300
それがC言語と関係あるのか? 荒らしたいならプログラマー板の隔離スレに
いけ、ヴァカ。
302 名前:
namber
投稿日: 01/12/04 19:25
C言語の初心者ですが次のことがどうしてもわかりません。助言おねがいします。
int **a;
としたときの動的変数のメモリ確保の方法がわかりません。
例えば、
int a[3][3];
と同じ大きさのメモリを確保する場合どうしたらよいでしょう。
どうぞよろしくおねがいします。
303 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:28
>>302
int a[3][3] の置き換えならば、
int **a; ではなくて、
int (*a)[3]; であろう。
304 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:30
>>302
C FAQ見れ。
305 名前:
288
投稿日: 01/12/04 19:42
>>299
カコワルイがしょうがない。
306 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:47
char *s;
printf("%s", s);
printf(s);
これって実行結果同じ?
307 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:50
>>306
文字列に代入文字があると変わる。
だからprintf(s)は危険。
308 名前:
デフォルトの名無しさん
投稿日: 01/12/04 19:51
だれかC99について盛大に語って。
もう
「K&R読め」
の時代でなくて
「C99の規格書読め」
という時代なの?
309 名前:
307
投稿日: 01/12/04 19:53
>>306
とりあえず、printf関数の第一引数は文字列定数にするべき。
310 名前:
◆RubyOmS2
投稿日: 01/12/04 20:02
>>306
#include <stdio.h>
main()
{
char *s;
s = "%%";
printf("%s", s);
printf("\n");
printf(s);
printf("\n");
}
--------------
%%
%
こんなふうに、、、
311 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:05
>>310
それはまだいいよ。
#include <stdio.h>
main()
{
char *s;
s="%d";/* %sとでもよい */
printf(s);
}
----------------------
こういうことをすると、必要な引数が足りなくて、無いものを参照しようとして実行時にエラーになると思う。
312 名前:
311
投稿日: 01/12/04 20:06
× /* %sとでもよい */
○ /* %sとかでもよい */
313 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:19
>>308
よし、盛大に騙ってやろう。
まず、C99では以下のような関数定義が可能になった。
もちろん今までのようなold styleも許される。
int
main(argc, argv)
int argc;
char **argv;
{ return 0; }
314 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:21
>>313
変数宣言をカーリーブランケットの外に出せるってこと?
315 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:32
>>313
∩
| |
| |
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!その場合プロトタイプ宣言はどうなりますか!
/ / \___________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
316 名前:
C99ならここを読め
投稿日: 01/12/04 20:41
プログラミング言語 C の新機能
http://seclan.s5.xrea.com/c99d/
デニス・リッチー氏インタビュー――CとUNIXの開発者が見る未来
http://www.idg.co.jp/lwonline/backnumber/200101/20010112_01_report.html
317 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:50
>>313
・・・
一応突っ込んどくね。
318 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:58
>314-315
これが2chでいう
「ネタニマジレスカコワルイ」
という奴なのか・・・?
319 名前:
デフォルトの名無しさん
投稿日: 01/12/04 20:59
それは新しいっ!
320 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:08
>>315
プロトタイプ宣言など必要ない。
型の正当性はプログラマが保証すればよい。
あと、予約語にはentryというのが追加された。
これはエントリポイントを生成し、関数の途中から処理を実行できる。
例えば
int neta(int a)
{
a++;
entry dayo:
a++:
return a;
}
gomen = neta(2);の場合、gomen:4となるが、
gomen = neta.dayo(2)の場合、gomen:3となる。
321 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:19
>>320
. ∩
|::|
|::|
∧_∧ |::| ./ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(:∵´Α`)/:/< 先生!僕は先生しんじてます!
/:∵:∵:∵:/ \____________
/::/|:∵:∵:∵/
__|::| .|:∵:∵:∵|
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
322 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:20
722 :Kusakabe Youichi :01/12/04 18:06
In article
>>710
, 710 仕様書無しさん wrote:
> > そんな変なことを言うひともいるんですね。
> そうですよね、ふつー上京は東京に行くことだし、
はつみみです。
730 :仕様書無しさん :01/12/04 18:13
>>722
じょうきょう【上京】
地方から都へ行くこと。現在は,東京へ行くこと。
(新辞林 by 三省堂 @Yahoo! DICTIONARIES)
とありますよ。
「地方から都へ行くこと。」「東京へ行くこと。」のどちらが「普通」かと言
えば現在では後者といっておかしくないでしょう?
744 :スバリ回答 :01/12/04 18:20
民明書房国語辞典
じょうきょう【上京】 [名][自サ]地方から都に出ること。京都へ出ること。
やはり、日下部氏は正しかった。
752 :Kusakabe Youichi :01/12/04 18:27
In article
>>741
, 741 困った wrote:
> 清水国語辞典
> じょうきょう【上京】 ジヤウキヤウ[名][自サ]地方から都に出ること‥豕・惱个襪海函
>
> 誤植ですね。
民明書房国語辞典 じょうきょう【上京】 [名][自サ]地方から都に出ること。京都へ出ること。
323 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:26
HTML 上がりの 厨房です。
printf("%s",str);
と書きますが、HTML的には
printf("%s%",str);
と前と後ろと囲ってもらわないと気持ち悪いです。
324 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:27
>>322
その辞書そのものが捏造かもしらんじゃん。
コンパイラー トロジャンという言葉を知らんのか。
325 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:29
>>324
厨房相手に反応すんのやめようよ(・∀・)
326 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:40
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)< 辞典はやっぱり民明書房だね♪
( ) \_______
| | |
(__)_)
327 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:43
日下部先生尊敬してます
328 名前:
デフォルトの名無しさん
投稿日: 01/12/04 21:50
>>327
どうしようもないレスで age るな、バカ。日下部先生を鑑賞するスレはプログラマー板
にあるから、こっちに来るように。
329 名前:
デフォルトの名無しさん
投稿日: 01/12/04 22:53
todayを25置き換える場合、
#define Today 25
と
const int today=25;
と書くのとは、どちらがいいのでしょうかね?
みなさんはどちらを書くんですか?教えてください。(出来れば理由などもあればお願いします)
よろしくお願いします。
330 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:02
>>329
enum のほうがよいんじゃない?
理由:gdbで25がtodayに読める
331 名前:
名無しさん@お腹いっぱい。
投稿日: 01/12/04 23:14
#include <stdio.h>
#include <math.h>
int N;
double M=10.0+h,h,pi=M_PI; ←ここのhと
void integ();
double f(double);
main()
{
h=1.5;
integ();
h=0.5;
integ();
void integ() ←ここが
{
double daikei=0.,simpson=0.;
int i;
N=M/h;
for(i=-N;i<=N;i++){daikei +=f(i*h);}
daikei *=h;
for(i=-N;i<=N;i+=2){simpson +=4.*f(i*h);}
for(i=-N;i<=N-1;i+=2){simpson +=2.*f(i*h);}
simpson *=h/3.0;
printf("\n h=%lf\n",h);
printf("sqrt(pi)=%15.10e\n",sqrt(pi));
printf("daikei =%15.10e\n",daikei);
printf("simpson =%15.10e\n",simpson);
}
}
double f(double x)
{
return exp(-x*x);
}
コンパイルしてもうまくいかないんですけど、どうしてでしょうか?
よろしかったら教えてください。
332 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:17
In article
>>302
, 302 namber wrote:
> 例えば、
> int a[3][3];
> と同じ大きさのメモリを確保する場合どうしたらよいでしょう。
(sizeof(int) * 3 * 3)では?
333 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:18
In article
>>306
, 306 デフォルトの名無しさん wrote:
> char *s;
> printf("%s", s);
> printf(s);
> これって実行結果同じ?
sのなかにバックスラッシュや%がなければね。
334 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:18
In article
>>308
, 308 デフォルトの名無しさん wrote:
> だれかC99について盛大に語って。
> もう
> 「K&R読め」
> の時代でなくて
> 「C99の規格書読め」
> という時代なの?
K&RもC99対応のが出るのでは?
335 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:19
In article
>>309
, 309 307 wrote:
>
>>306
> とりあえず、printf関数の第一引数は文字列定数にするべき。
なんで連体形?
336 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:21
In article
>>314
, 314 デフォルトの名無しさん wrote:
>
>>313
> 変数宣言をカーリーブランケットの外に出せるってこと?
ライナスがいつも持っているやつですね! > ブランケット
ライナス 《漫画 Peanuts に登場する Lucy の弟;
いつも安心毛布 (security blanket) を持ち歩くインテリ少年》
―民明書房刊『ライナスのすべて』より
337 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:22
何人騙っている人がいるのか知らないけど、うざいよ。
338 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:23
>>323-336
ネタはやめれ。
339 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:23
>>332
sizeof(int[3][3])じゃだめ?
340 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:30
コールバック関数の作りかたと
用途おしえて
341 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:32
>>340
printf("kusakabe");
342 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:33
>>340
void callback(void)
{
;
}
用途は実行速度を飛躍的に高める。
343 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:34
In article
>>329
, 329 デフォルトの名無しさん wrote:
> todayを25置き換える場合、
> #define Today 25
> と
> const int today=25;
> と書くのとは、どちらがいいのでしょうかね?
第4章に書いてありますね。
344 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:34
>>340
void inarticle(char *wrote)
{
puts("kusakabe");
}
345 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:35
In article
>>331
, 331 名無しさん@お腹いっぱい。 wrote:
> double M=10.0+h,h,pi=M_PI; ←ここのhと
> void integ() ←ここが
> コンパイルしてもうまくいかないんですけど、
いくわけないですね。
> どうしてでしょうか?
書き方がまちがっているからです。
346 名前:
Kusakabe Youichi
投稿日: 01/12/04 23:35
In article
>>339
, 339 デフォルトの名無しさん wrote:
>
>>332
> sizeof(int[3][3])じゃだめ?
問題ないね。
347 名前:
デフォルトの名無しさん
投稿日: 01/12/04 23:51
>>331
> double M=10.0+h,h,pi=M_PI; ←ここのhと
宣言前にhを参照してるし、hは定数でない。
> void integ() ←ここが
標準的なCでは関数定義はネストできない。
348 名前:
デフォルトの名無しさん
投稿日: 01/12/05 00:29
これからは「誰かの話やソースを皮肉りたいとき」には
くさかべ名乗ればいいから
ラクに皮肉や否定ができるな。
349 名前:
デフォルトの名無しさん
投稿日: 01/12/05 00:33
>>348
もともと匿名なんだから、他人の名を借りなくても出来るだろ。
糞壁名乗ってるのは遊んでるだけ。
350 名前:
Kusakabe Youchi
投稿日: 01/12/05 00:34
>>348
ということにしたいのですね?:)
351 名前:
デフォルトの名無しさん
投稿日: 01/12/05 00:36
>>332
> (sizeof(int) * 3 * 3)では?
ホントに?
問:
int a[3][3];において常に&a[0][3] == &a[1][0]は成り立つか。
(10点)
352 名前:
むぎ茶
投稿日: 01/12/05 00:37
だから、kusakabeは俺みたく、煽り共有コテハンになる、って言ったろ。
353 名前:
デフォルトの名無しさん
投稿日: 01/12/05 00:40
>>351
成り立つ
354 名前:
重複しない乱数考えてみたよ1/2
投稿日: 01/12/05 00:44
#include <stdio.h>
#include <memory.h>
#include <time.h>
#include <malloc.h>
#include <stdlib.h>
/* 「くじびき」構造体*/
struct lot{
int *begin; /* 配列先頭*/
int size; /* 配列の要素数 */
int current; /* 配列内の現在の参照オフセット*/
int limit; /* 配列内の現在の有効領域終端オフセット */
};
/* 初期化 */
int init_lot(struct lot* L){
int i,v;
if(!L || !L->begin || L->size<1) return -1; /*err*/
L->limit = L->size - 1;
memset(L->begin,0xff,sizeof(int) * L->size);/* -1は値が未設定とする*/
srand(time(NULL));
i=0;
for(v=0; v<L->size; v++){
if((i+=rand()) >= L->size) i %= L->size;
while(*(L->begin+i)!=-1){ i = (i>=L->size ? 0 : i+1);}
*(L->begin+i) = v;
}
L->current = 0;
return 0;
}
355 名前:
重複しない乱数考えてみたよ2/2
投稿日: 01/12/05 00:45
/* くじをひく */
int draw_lot(struct lot* L){
int ret;
if(!L || !L->begin || L->size<1 || L->limit<0) return -1; /* err */
if(L->limit > 0){
L->current += rand();
if(L->current > L->limit) L->current %= L->limit;
}
ret = *(L->begin + L->current);
*(L->begin + L->current) = *(L->begin + L->limit);
*(L->begin + L->limit) = ret;
L->limit--;
return ret;
}
/* リセット */
int reset_lot(struct lot* L){
if(!L || !L->begin || L->size<1) return -1; /* err */
L->limit = L->size - 1;
srand(time(NULL));
return 0;
}
/* 使用例 (コマンドラインで配列サイズと試行回数を指定)*/
int main(int argc, char *argv[]){
struct lot lotlot;
int i, n, size=10,loop=10;
if(argc>1) size = atoi(argv[1]);
if(argc>2) loop = atoi(argv[2]);
lotlot.begin = malloc(sizeof(int)*size);
lotlot.size = size;
init_lot(&lotlot);
for(i=0;i<loop;i++){
while((n=draw_lot(&lotlot))!=-1) printf("%2d ",n);
printf("\n");
reset_lot(&lotlot);
}
free(lotlot.begin);
return 0;
}
356 名前:
デフォルトの名無しさん
投稿日: 01/12/05 00:54
なにゆえ
なにがしかの関数呼び出しの際、そこに渡す引数名と
渡した後、そこの内部で使われる引数名は
似たような名前にしたらイカンとですか?
357 名前:
Kusakabe Youchi
投稿日: 01/12/05 01:02
>>356
そんなことも分からないような人がいるからですね:)
358 名前:
デフォルトの名無しさん
投稿日: 01/12/05 01:03
>>356
べつにそんなこと無いんじゃない?
359 名前:
デフォルトの名無しさん
投稿日: 01/12/05 01:08
>>351
必ずしもなりたたないよー。
360 名前:
同じような
投稿日: 01/12/05 01:16
「max」で最大長を見てた
そして関数に渡した
んで、maxを入れてることが分かりやすいようにと思って、渡され側にも「max」と入れようとしたら
「何やってるかわからなくなるから、そこは limit とでもしといて」
だって。
余計に分かりづらいやないかい。
361 名前:
デフォルトの名無しさん
投稿日: 01/12/05 02:25
>>353
残念はずれ。
362 名前:
初心者
投稿日: 01/12/05 06:27
>>351
お尻に詰め物が入る(処理系が有る)ですか?
糞壁の言う事は絶対聞かない (^^;
363 名前:
デフォルトの名無しさん
投稿日: 01/12/05 06:37
>>362
ケツの穴にツララを突っ込まれた気分だ・・・
364 名前:
デフォルトの名無しさん
投稿日: 01/12/05 08:54
>>320
はアセンブラやりすぎ。
365 名前:
デフォルトの名無しさん
投稿日: 01/12/05 09:08
>>360
C言語には「コメント文」という概念があります。
覚えておくと便利ですよ〜〜〜〜〜〜〜〜。
366 名前:
Kusakabe Youichi
投稿日: 01/12/05 09:15
In article
>>365
, 365 デフォルトの名無しさん wrote:
>
>>360
> C言語には「コメント文」という概念があります。
> 覚えておくと便利ですよ〜〜〜〜〜〜〜〜。
文だったのか。
367 名前:
Kusakabe Youichi
投稿日: 01/12/05 09:23
In article
>>362
, 362 初心者 wrote:
> お尻に詰め物が入る(処理系が有る)ですか?
> 糞壁の言う事は絶対聞かない (^^;
構造体と混同?
368 名前:
デフォルトの名無しさん
投稿日: 01/12/05 09:30
>>367
それより、
>>351
答えたら。
369 名前:
Kusakabe Youichi
投稿日: 01/12/05 09:46
In article
>>368
, 368 デフォルトの名無しさん wrote:
>
>>367
> それより、
>>351
答えたら。
どんな質問?
370 名前:
デフォルトの名無しさん
投稿日: 01/12/05 09:48
>>369
なんだ、マ板でニセモノ合唱されたら、こっちに逃げてきたのか。
371 名前:
デフォルトの名無しさん
投稿日: 01/12/05 13:13
日下部先生愛してます
372 名前:
デフォルトの名無しさん
投稿日: 01/12/05 14:25
くさかべせんせえ、下は九九を表示するプログラムで、両方とも
コンパイラは通るのですが、
#define ROWS 9
#define COLUMNS 9
1)
main()
{
int i;
int j;
int **k = (int **)malloc(sizeof(int) * ROWS);
for(i=0;i<ROWS;i++)
{
for(j=0;j<COLUMNS;j++)
{
k[j] = (int *)malloc(sizeof(int));
}
}
for(i=0;i<ROWS;i++)
{
for(j=0;j<COLUMNS;j++)
{
k[i][j] = (i+1) * (j+1);
printf("[%d x %d = %2d]",(i+1),(j+1),k[i][j]);
}
printf("\n");
}
return 0;
}
は実行されるのですが、
2)
main()
{
int i;
int j;
int **k = (int **)malloc(sizeof(int) * ROWS);
for(i=0;i<ROWS;i++)
{
for(j=0;j<COLUMNS;j++)
{
k[j] = (int *)malloc(sizeof(int));
k[i][j] = (i+1) * (j+1);
printf("[%d x %d = %2d]",(i+1),(j+1),k[i][j]);
}
printf("\n");
}
return 0;
}
は実行時エラーが出て止まります。
なんでですか?
373 名前:
デフォルトの名無しさん
投稿日: 01/12/05 15:06
メモリ確保
ってなんでする必要があるの?
374 名前:
デフォルトの名無しさん
投稿日: 01/12/05 15:12
会社とかで
「会議室を使いたい」
と思って、予約しないで勝手に使いたい時間にいくと、既に他の部署の人に使われてたりする。
なので、
「何月何日の何時何分から何時何分まで会議室を使います」
と予約しておく必要がある。
375 名前:
デフォルトの名無しさん
投稿日: 01/12/05 15:14
>>372
なぜメモリ確保するのかは聞かないことにして、
k[j] = (int *)malloc(sizeof(int));
ではなく
k[j] = (int *)malloc(sizeof(int)*COLUMNS);
すべきでわ?
376 名前:
デフォルトの名無しさん
投稿日: 01/12/05 15:18
>>372
2)は↓こうすべきだと思うが
main()
{
int i;
int j;
int **k = (int **)malloc(sizeof(int *) * ROWS);
for(i=0;i<ROWS;i++)
{
k[i] = (int *)malloc(sizeof(int)*COLUMNS);
for(j=0;j<COLUMNS;j++)
{
k[i][j] = (i+1) * (j+1);
printf("[%d x %d = %2d]",(i+1),(j+1),k[i][j]);
}
printf("\n");
}
return 0;
}
377 名前:
iku
投稿日: 01/12/05 17:31
>>274
返事が遅くなってすいません。
みなさんご意見どうもありがとうございました。
fprintf(fp1,"%s,%s,%s,%s\n",strPath,strSheet,strPCNAME,strErrMsg);
で解決しました。
378 名前:
iku
投稿日: 01/12/05 17:45
こんばんは。fprintfについて教えて下さい。
下記の様な処理でファイルからデータを読みこんでbuff1にデータを
文字列で格納しました。
この読込んだデータはc:\\test1\\というパス名なのですが
ファイルからこのデータを読込んでa.txtというテキスト名を
くっつけたいと考えています。(c:\\test1\\a.txt)
この操作をするにはbuff1+"a.txt"なんてすれば良いのかな?
と思いやってみましたがbuff1の値が化けてるいる様です。
どうやったらc:\\test1\\a.txtの値を取得できるか教えて頂きたいのですが。
よろしくお願いします。
if (NULL == (fp0 = fopen(mvemFilename.c_str(),"r"))){
Label1->Caption = "Cannot Open Read File";
exit(1); //実行を終了し,オペレーティングシステムに戻る
}
for(i=0;i<100;i++){ //ファイルから内容を読込む
//ファイルの終わりかどうか判断する
if(NULL == fgets(buff1,255,fp0)){
Label1->Caption = "Finish";
break; //for文をぬける
}
fprintf(fp0,"%s",buff1);
}
fclose(fp0);
379 名前:
デフォルトの名無しさん
投稿日: 01/12/05 17:48
>>378
> この操作をするにはbuff1+"a.txt"なんてすれば良いのかな?
良くないです。strcat() 使いましょう。
380 名前:
sage
投稿日: 01/12/05 17:52
strcpy(buff1 + strcspn(buff1, "\r\n"), "a.txt");
381 名前:
iku
投稿日: 01/12/05 18:10
レスありがとうございます。
ちなみに3文字を+したい場合は
strcat(s1,s2);
strcat(s1,s3);
と2回やらなきゃいけないのでしょうか?
それともう一点,何で文字化けしていたのでしょうか?
382 名前:
デフォルトの名無しさん
投稿日: 01/12/05 18:18
>>381
> ちなみに3文字を+したい場合は
「+ する」というのは、意味が曖昧だから使わない方がいい。s2, s3 が指している
文字列を s1 が指している文字列に連結したい、ということだと思うが、それなら
>>381
のように 2 回 strcat() する以外に
char path[MAXPATH];
sprintf(path, "%s%s%s", s1, s2, s3);
なんて書く方法もある。(ファイルから読み込んでる場合には、改行文字を事前に
潰しておくことをお忘れなく)
> それともう一点,何で文字化けしていたのでしょうか?
それは正確に話すと、わりと面倒なんで俺はパス。とりあえずポインタと文字列
をキーワードに、書籍を読んでみたら、とだけ言っておきます。
383 名前:
iku
投稿日: 01/12/05 18:47
>>382
ご指摘ありがとうございます。
これからはもっと注意します。
ポインタと文字列をキーワードに,わかりました。
もしお勧めの本がありましたら教えて下さい。
よろしくお願いします。m(_ _)m
それにしてもCって難しいですね。
プログラムが動く仕組みをよく理解していないと・・・・・
384 名前:
デフォルトの名無しさん ?
投稿日: 01/12/05 18:59
>>383
「プログラムが動く仕組み」どころか、
文字列のなりたちをきちんと理解してくれると いいなぁ。
C言語じゃなくても、他の言語でも共通の部分なので。
385 名前:
iku
投稿日: 01/12/05 19:10
>>384
はい。ごもっともです。m(_ _)m
386 名前:
デフォルトの名無しさん
投稿日: 01/12/05 19:13
>>385
sage で書いてくれ。
387 名前:
デフォルトの名無しさん
投稿日: 01/12/05 19:18
>>385
そのメールアドレスって本物?
場をわきまえようね(^_^;)
388 名前:
デフォルトの名無しさん
投稿日: 01/12/05 19:37
>>387
でもさ、実際こういう風に晒したところでなにか問題ある?
mailto:IZP03611@nifty.ne.jp
389 名前:
デフォルトの名無しさん
投稿日: 01/12/05 20:24
>>388
うざいメールがイパーイ
売られる可能性もあるし。
390 名前:
Kusakabe Youichi
投稿日: 01/12/05 21:24
In article
>>372
, 372 デフォルトの名無しさん wrote:
> くさかべせんせえ、下は九九を表示するプログラムで、両方とも
> コンパイラは通るのですが、
そうですか。
391 名前:
Kusakabe Youichi
投稿日: 01/12/05 21:26
In article
>>383
, iku/383 <IZP03611@nifty.ne.jp> wrote:
> それにしてもCって難しいですね。
簡単ですよ。
> プログラムが動く仕組みをよく理解していないと・・・・・
それは他の似た言語でも同じでしょう。
392 名前:
デフォルトの名無しさん
投稿日: 01/12/05 21:33
#include <iostream>
int main(){
char c[20]="123abc";
char *p=&c[0];
char *a="aaa";
c[7]=100;
for (int i=0;i<20;i++){
printf("%d\n",c[i]);
printf("%d\n",&c[i]);
printf("%d\n",++p);
}
printf("%d\n",++p);
printf("%d\n",a);
printf("%d\n",++a);
return 0;
}
393 名前:
デフォルトの名無しさん
投稿日: 01/12/05 21:51
↑char *a="aaa"の部分ですが、
これはメモリのどこかに"aaa"という文字列定数が記憶されて
それへのポインタが入るってことでいいのでしょうか?
394 名前:
デフォルトの名無しさん
投稿日: 01/12/05 21:53
>>393
よい。
395 名前:
デフォルトの名無しさん
投稿日: 01/12/05 21:56
>>394
どうもありがとうございました!
396 名前:
Kusakabe Youichi
投稿日: 01/12/05 21:59
In article
>>393
, デフォルトの名無しさん/393 wrote:
> ↑char *a="aaa"の部分ですが、
> これはメモリのどこかに"aaa"という文字列定数が記憶されて
> それへのポインタが入るってことでいいのでしょうか?
そうですね。
397 名前:
デフォルトの名無しさん
投稿日: 01/12/05 21:59
>>395
この後にIn article君がうるさいことを言うだろうけど、無視してね。
398 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:13
for 文のネストって実際の業務では何重まで許されるんですか?
399 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:14
>>398
一回も許さない。
400 名前:
Kusakabe Youichi
投稿日: 01/12/05 22:17
In article
>>398
, デフォルトの名無しさん/398 wrote:
> for 文のネストって実際の業務では何重まで許されるんですか?
「業務では」ってのはとくにないでしょう。
Cの規格で許されているところまででは?
401 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:19
でも8重ネストとか見ると叩きたくなりませんか?
402 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:20
>>398
あなたは何重まで許せますか?
403 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:21
>>400
規格で認められていてもたとえば「プロジェクトのスタイルに反する」
という理由でリジェクトされる可能性はあるでしょう。
規格を知らない人間でもスタイルにはうるさいもんだし。
404 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:24
>>403
そういう人間とクサカベたんの対決が見てみたいなぁ。
405 名前:
Kusakabe Youichi
投稿日: 01/12/05 22:27
In article
>>401
, デフォルトの名無しさん/401 wrote:
> でも8重ネストとか見ると叩きたくなりませんか?
いいえ。
406 名前:
Kusakabe Youichi
投稿日: 01/12/05 22:31
In article
>>403
, デフォルトの名無しさん/403 wrote:
>
>>400
> 規格で認められていてもたとえば「プロジェクトのスタイルに反する」
> という理由でリジェクトされる可能性はあるでしょう。
っていうか、プロジェクトごとにコーディング規約はちがうわけだから、
こんなところで一般論を聞いてもいみないのでは?
で、それを承知で聞いているのだから、
プロジェクトごとのコーディング規約のことではないと
思われる。
407 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:34
>>401
人間が書いたコードだと許せんが、コードジェネレータが吐いたコードなら
許す。
408 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:35
どのファイルの関数からもいじれるbool変数_endingをメインファイルのヘッダで
定義したのですが、次のようなエラーが出ました。
でもコンパイルは通って、ちゃんと動きますし、_endingの動作も意図した通りです。
>リンク中...
>gmain.obj : error LNK2005:
>"bool _ending" (?_ending@@3_NA) はすでに main.obj で定義されています
>draw.obj : error LNK2005:
>"bool _ending" (?_ending@@3_NA) はすでに main.obj で定義されています
以下はヘッダの定義部分です。
>#include <windows.h>
>#include "gmain.h"
>#include "draw.h"
>// -----------------------------------------------------
> bool _ending; // 終了フラグ
"gmain"ソースファイル内だけでいじっていますが、
"draw"ソースファイル内では参照も何もしていません。
コンパイラはVC++6.0です。このままほっておくとマズイのでしょうか。
409 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:39
>>408
main.h内で
extern bool ending;
main.cpp内で
bool ending;
で、みんなでmain.hをインクルード。
410 名前:
393
投稿日: 01/12/05 22:44
#include <iostream>
int main(){
int *a;
a=(int *)malloc(sizeof(int)*10);
a[5]=100;
for (int i=0;i<10;i++){
printf("%d\n",*a);
printf("%d\n",&a);
printf("%d\n",a);
a++;
}
return 0;
}
ワカワカメヨ。。。モウ
411 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:48
>>410
とりあえず、確保した領域初期化したら?
412 名前:
デフォルトの名無しさん
投稿日: 01/12/05 22:48
>>409
通りました!ありがとうございますです・・・。
課題○投げスンマセン。
413 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:01
とりあえず
>>351
の
>int a[3][3];において常に&a[0][3] == &a[1][0]は成り立つか。
が気になるんですが、どういうときに成り立たないんでしょう?
成り立つと思ってたんですが
414 名前:
393
投稿日: 01/12/05 23:07
#include <iostream>
int main(){
int *a;
int i;
a=(int *)malloc(sizeof(int)*10);
for (i=0;i<10;i++){
a[i]=i*3;
}
for (i=0;i<10;i++){
printf("%d\n",*a);
printf("%d\n",&a);
printf("%d\n",a);
a++;
}
return 0;
}
とりあえず初期化と。。。
int型へのポインタ型変数「a」っていう変数にmallocで確保したアドレスが入って・・・
*aで「a」に入ってるアドレスへ行く。
&aで「a」自身のアドレスを参照。
aで「a」に入ってるアドレスを参照。
という解釈でよろしいでしょうか?
でもa++してるのに&aの値が変わって行かないのはなぜなの?アカン。。。
415 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:09
>>414
ポインタ変数に++してるから。では。
416 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:14
int b; だったとしたら、
b++; ってしても &b の値は変わらないでしょ。
int *a; のときも一緒。
417 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:14
>>414
a++で代わるのは
変数aの値であって
aのアドレスではない。
418 名前:
393
投稿日: 01/12/05 23:14
>>415
あっどうもありがとうございました。
「a」自体のアドレスは変わらずに
中身が指すアドレスが++されていくからですね。
チョトワカッテキタ
419 名前:
393
投稿日: 01/12/05 23:16
>>416-417
どもありがとうございました。
なんだかわかってきたような気分です!!
420 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:20
>>408
_ から始まる識別子(厳密にはもうちょっと制限されるけど)は、処理系や
標準ライブラリが使うために予約されている。_ending はおそらく CRT の
スタートアップルーチンあたりで使われているものとコンフリクトしている
ものと思われ。
不幸なことになる可能性が高いから、とりあえず _ から始まるシンボルを
使うのはやめとけ。
421 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:28
ASCIIってどうよ。
422 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:31
>>420
ありがとうございます。
__FILE__とかですね(多分)。ちょっと目印に、と思ったのですが
アホでした。しかもなんだか危険極まりないカンジの予約語ですね・・・
名前のつけ方勉強しなおしますです・・・
423 名前:
デフォルトの名無しさん
投稿日: 01/12/05 23:45
ラテン8ってどうよ。
424 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:14
gccを2.95から3.02にしたのですが
環境変数を読んでくれなくて -I -L
オプションで逃げたのですが
今度はリンカが膨大なエラーを吐くので
(undefined reference _virtual_なんとか)
へこんでおります。
3.0はオブジェクトの出力形式も違うのでしょうか?
(こんなときに FAQ の mail-archive の cgi が止まってる-- >_<)
425 名前:
機種依存の勉強
投稿日: 01/12/06 00:17
486でビットフィールドはどういうふうに扱われますか?
struct {
unsigned int a:8;
unsigned int b:8;
unsigned int c:8;
unsigned int d:8;
} chars;
union {
unsigned int r;
struct chars c;
} unichars;
union unichars u;
u.r = 8; といれたときに u.c.d に入る?それとも u.c.a ?
gccは2.9.xです
426 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:20
>>424
3.0からC++のmangling schemeが変わってる。ライブラリもコンパイルしなおせ。
427 名前:
名無し
投稿日: 01/12/06 00:26
486はC言語を解するようになったのですか? by void風
実行してみればわかるだろハクチデスカ ┐(´ー`)┌ by むぎ茶風
428 名前:
機種依存の勉強
投稿日: 01/12/06 00:32
>>427
えーすみません
動かしました。わかりました。aに入りました。
野村監督 辞任だってさ
429 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:35
486はリトルなエンディアンさ。
430 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:38
俺もゆで卵はとんがってる方から食べるな。
431 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:39
>>430
え?
432 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:42
>>431
ビッグエンディアンとリトリエンディアンの由来を調べてみれ。
433 名前:
393
投稿日: 01/12/06 00:44
#include <iostream>
int main(){
int *a;
a=(int *)malloc(sizeof(int)*10);
free (a);
return 0;
}
これでちゃんとfreeされてます?
それはいいとして、
int型ポインタ変数aはmalloc確保されたアドレスの先頭しか
わからないですよね?
終わりはここ!ってのはわからないはず?なのに、
なぜちゃんと解放してくれるのでしょうか?
どこかにここからここまで確保しましたっていう情報が
記録されてるのでしょうか?それとも・・・
434 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:46
> どこかにここからここまで確保しましたっていう情報が
> 記録されてるのでしょうか?
これが正解。
ただし、移植性のある方法でそれを調べる方法はない。
435 名前:
424
投稿日: 01/12/06 00:46
>>426
ありがとうございます m(__)m お教えの通り自作のライブラリを
コンパイルしなおしたのですが、まだエラーが...
試してみると3.0のライブラリのみ使うプログラムは正常に
スタティックリンクできました。自作ライブラリをリンクすると
エラーみたいで…。
環境変数から無視される辺りから何か変ですよね。
オプションが正しく渡っていないのかも…。
436 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:49
>>433
実は公にされてはいませんが、
CPUにはラプラスの悪魔が仕組まれています。
437 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:53
自分でサイズ指定してるジャン。
438 名前:
393
投稿日: 01/12/06 00:54
>>434
それを管理しているのはOSなのでしょうか?
439 名前:
デフォルトの名無しさん
投稿日: 01/12/06 00:58
>>438
気にするな。
440 名前:
393
投稿日: 01/12/06 01:01
スミマセン
マエカラキニナッテタモンデ・・・
441 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:01
>>438
malloc() のソース読め。
442 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:03
保毛太郎
侍
443 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:05
printf("この〜木 何の木");
while (1) {
printf("気になる");
}
444 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:07
メモリ512Mの時代でいちいち気にすることではない。
445 名前:
393
投稿日: 01/12/06 01:08
>>441
ざっと目を通しただけですけども、
先頭アドレスとサイズで処理してるみたい(?)ですねぇ・・・。
どうもありがとうございました!
446 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:10
自分のOSはWIN95のPC-9821です
エスケープシーケンスを使いBorland C++ 5.5.1で
コンパイルをすると不具合がでます
例えば画面消去をしたくて
printf("\x1b[2J");
としても
[2J
↑のように出力されます
コンパイルしたEXEはDOS/Vのほうでは正常に動作します
何か対処方法はあるのでしょうか?
447 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:12
>>446
98版のWindowsってANSI.SYSついてないんだっけ?
ま、プログラミングとは関係ないから別の板で聞いた方がいいと思われ。
448 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:13
>>444
UMBも使え
449 名前:
446
投稿日: 01/12/06 01:18
ANSI.SYS入ってませんでした
でも一応 LSI C-86でコンパイルするとPC-98でも
エスケープシーケンスは正常に動作します
450 名前:
デフォルトの名無しさん
投稿日: 01/12/06 01:21
DEVICEHIGH=C:\WINDOWS\COMMAND\ANSI.SYS
451 名前:
446
投稿日: 01/12/06 01:43
>>447
,450
ちょっと調べてみたらPC-98はANSI.SYSを組み込む
必要がないみたいでした
でも原因が特定できてよかったです。ありがとうございました
あとスレ違いスイマセン
452 名前:
デフォルトの名無しさん
投稿日: 01/12/06 08:52
ちょっとおしえてください。
char str[] = "あAAAA";
とやって
if (str[0] == 'あ')
とか
printf("%c", str[0]);
をやりたいのですが失敗します
mbchrcmpとかmbprintfとか無いのでしょうか?
453 名前:
デフォルトの名無しさん
投稿日: 01/12/06 08:58
strncmp
454 名前:
Kusakabe Youichi
投稿日: 01/12/06 09:02
In article
>>452
, デフォルトの名無しさん/452 wrote:
> char str[] = "あAAAA";
> とやって
> if (str[0] == 'あ')
> とか
> printf("%c", str[0]);
> をやりたいのですが失敗します
「失敗します」じゃあ「どうなったか」がわからないですね。
ちゃんとできるようになるには、質問とかのときに「ちゃんと現状を報告できる」
ことがまず必要ですよ(ちゃんとした質問にするためだけじゃなくて、自分の理解の
ためにも)
あと、この場合は環境の報告も必要ですね。
455 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:02
mbchrcmpって何? ぶびちぅ??
456 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:05
>>454
すいません、ちょっと専門的な話をしてるので黙っててもらえますか
もし話に入れなくて気分を害されたならごめんなさい
457 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:05
「」で囲むのは、何か意味があるんですか?
458 名前:
Kusakabe Youichi
投稿日: 01/12/06 09:09
In article
>>456
, デフォルトの名無しさん/456 wrote:
>
>>454
> すいません、ちょっと専門的な話をしてるので黙っててもらえますか
「専門的」な質問ですね ;)
459 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:10
VB厨なんかなmbchrcmpて、スゲー気になる (w
460 名前:
Kusakabe Youichi
投稿日: 01/12/06 09:11
In article
>>457
, デフォルトの名無しさん/457 wrote:
> 「」で囲むのは、何か意味があるんですか?
そういうのはCの文法にないですね :)
ヒント: %lcについては415ペイジに解説があります。
461 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:12
MultiByteだよ -> MB...
VB厨には違いないが
462 名前:
Kusakabe Youichi
投稿日: 01/12/06 09:13
In article
>>459
, デフォルトの名無しさん/459 wrote:
> VB厨なんかなmbchrcmpて、スゲー気になる
っていうか、てきとーな入門書でも見ればいいのにとは思う。
463 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:15
wchar_t wstr[] = L"あAAAA";
とやって
if (wstr[0] == L'あ')
とか
printf("%lc", wstr[0]);
をすればいいのでは?
464 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:17
ふつう「あ」は2バイト、charは1バイト。
465 名前:
452
投稿日: 01/12/06 09:29
char*の指しているアドレスの文字(全角&半角)が知りたかったんです。
半角1バイト、全角2バイトは知ってましたが、どうすればよいか分からなかったので。
463さんありがとうございます。
出来ました。
Lを付けるのは知りませんでした。もっと勉強します。
466 名前:
デフォルトの名無しさん
投稿日: 01/12/06 09:29
>454
日本語は2バイトだから駄目、どうしてもそうしたいなら
if(str[0] == "あ"[0] && str[1] == "あ"[1])
467 名前:
452
投稿日: 01/12/06 09:33
"あ"[0] "あ"[1]なんてできるとは知りませんでした。
いいこと教えてくれて有難うございます。
468 名前:
Kusakabe Youichi
投稿日: 01/12/06 09:36
In article
>>463
, デフォルトの名無しさん/463 wrote:
> wchar_t wstr[] = L"あAAAA";
> とやって
> if (wstr[0] == L'あ')
> とか
> printf("%lc", wstr[0]);
> をすればいいのでは?
そういう教え方では本人のためにならないような(^^;
469 名前:
iku
投稿日: 01/12/06 09:52
こんにちはikuです。
エラー処理の(EInOutError &e)の&eって何者なのでしょうか?
ネットでEInOutErrorを検索してみたらつけている人と
つけていない人がいらっしゃったのですが・・・・
void __fastcall TForm1::DriveComboBox1Change(TObject *Sender)
{
try{
// ドライブ名を設定
DirectoryListBox1->Drive = DriveComboBox1->Drive;
}catch(EInOutError &e){
// 例外時の処理
if(e.ErrorCode == ERROR_NOT_READY){
// デバイスの準備が出来ていないときの処理
}else{
// その他のエラー処理
}
}
}
470 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:08
>>469
スレ違い。C++スレ逝け。
471 名前:
じゃばちゅぅ〜
投稿日: 01/12/06 10:11
C言語難しいです、Cfaqを読んでるんですが、ポインタの所でやたら出てくる
配列がポインタに***なりさがる***の意味がイマイチ分かりません。
例えば、2次元配列は100%ポインタのポインタに成りうるけど、逆は必ず真では無い
と言う感じでしょうか、と言うかfunc(char **str_ptr);
みたいなプロトタイプが有ったとすると、str_ptrが2次元配列なのか
単にchar型へのポインタへのポインタなのかは定義部を見ないと分からないですかね。
何かメッチャ戸惑っています
今日K&R買いに行くので、これだけ教えてプリーズです
472 名前:
じゃばちゅぅ〜
投稿日: 01/12/06 10:18
例えばargvとかなら main(int argc,char *argv[],char *envp[]);
単に文字列へのポインタなら func(char **str_ptr);
みたいに、、なってないですよね んー、、むずかしひ
473 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:24
char **p;
p=(char **)malloc(4);
free(p);
こうするとfreeのところで失敗します。なぜなのでしょうか。
コンパイラはVC++6.0のものを使っています。
474 名前:
Kusakabe Youichi
投稿日: 01/12/06 10:26
In article
>>471
, じゃばちゅぅ〜/471 wrote:
> 例えば、2次元配列は100%ポインタのポインタに成りうるけど、逆は必ず真では無い
> と言う感じでしょうか、
そういうふうに考えるとよけいに混乱します。
> と言うかfunc(char **str_ptr);
> みたいなプロトタイプが有ったとすると、str_ptrが2次元配列なのか
> 単にchar型へのポインタへのポインタなのかは定義部を見ないと分からないですかね。
その前にCの関数の引数はcall by value..のことを思い出さないとだめ。
foo(int);というプロトタイプの関数があったとして、
それにfoo(a);と呼び出すときと、foo(100);とやるときで、
受け取る側でどうなるかを関数定義部分(きっとfoo(int x){ ....}みたいに書いて
あるはず)でどうなるかを考えてみてください。
あと、
int *a;
というポインターでも
int b[10];
という配列でも
b[1]やa[1]はかけますが、
a++はできてもb++ができないのはなぜか
(つまりint iのi++ができても10++ができない理由も)
そのへんを理解していれば、(理解できる入門書を買えば)わかりやすくなります。
> 今日K&R買いに行くので、これだけ教えてプリーズです
英語を読めるならばできれば原書のほうがいいです。
475 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:31
>>466
char* str = "あいうえお";
int len = strlen(str);
for( int i = 0 ; i < len ; i++ ){
if( *(unsigned short*)(str+i) == *(unsigned short*)"あ" ){
処理;
}
}
ではどうかな?
476 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:36
>>475
charのアドレスを、shortのアドレスに変換してアクセスするのって
保証されてるんだっけ?
477 名前:
Kusakabe Youichi
投稿日: 01/12/06 10:39
In article
>>472
, じゃばちゅぅ〜/472 wrote:
> 例えばargvとかなら main(int argc,char *argv[],char *envp[]);
> 単に文字列へのポインタなら func(char **str_ptr);
> みたいに、、なってないですよね んー、、むずかしひ
152〜154ペイジにわかりやすく解説してあります。
478 名前:
Kusakabe Youichi
投稿日: 01/12/06 10:42
In article
>>473
, デフォルトの名無しさん/473 wrote:
> char **p;
> p = (char **)malloc(4);
> free(p);
>
> こうするとfreeのところで失敗します。なぜなのでしょうか。
「失敗します」が具体的にどうなることを言っているかを
うまく説明する練習をしましょう。
479 名前:
kusokabe Youichi
投稿日: 01/12/06 10:50
In article
>>478
,kusakabe Youichi/478 wrote:
> > char **p;
> > p = (char **)malloc(4);
> > free(p);
> >
> > こうするとfreeのところで失敗します。なぜなのでしょうか。
>
> 失敗します」が具体的にどうなることを言っているかを
> うまく説明する練習をしましょう。
糞レスをつけるのならレスをしない方がよいでしょう。
もちろんこのレスに限ったことではありません:)
480 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:50
>>476
あ;;
len-1だね:)
481 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:53
>>478
いや、質問の仕方が悪いってのは、まっとうな指摘だと思うが…
482 名前:
481
投稿日: 01/12/06 10:55
まちがえた。
481は
>>479
へのカキコ。
483 名前:
Kusakabe Youichi
投稿日: 01/12/06 10:56
In article
>>475
, デフォルトの名無しさん/475 wrote:
>
>>466
> char* str = "あいうえお";
> int len = strlen(str);
> for( int i = 0 ; i < len ; i++ ){
> if( *(unsigned short*)(str+i) == *(unsigned short*)"あ" ){
> 処理;
> }
> }
> ではどうかな?
shortがそのバイト数である保証はどこにもないですね。
484 名前:
Kusakabe Youichi
投稿日: 01/12/06 10:57
In article
>>476
, デフォルトの名無しさん/476 wrote:
>
>>475
> charのアドレスを、shortのアドレスに変換してアクセスするのって
> 保証されてるんだっけ?
何がですか? > 保証されているかどうか
(「可能かどうか」ですか? できる内容がですか?)
485 名前:
じゃばちゅぅ〜
投稿日: 01/12/06 10:57
>Kusakabeさんどうもです
>その前にCの関数の引数はcall by value..
えっと、結局配列でも値渡しするのは先頭要素へのポインタだから
まとめちゃえって感じですよね?、でも、例えば2次元配列を期待してる
関数に、単なるポインタへのポインタを渡したりするときっと中で添え字アクセス
とかされて死ぬと思うんですが、、その辺は呼び出す時に**ptrの意味を良く考えなきゃ
駄目なんですね、ヒャー
>a++はできてもb++ができないのはなぜか
はい、何となく分かります
>152〜154ペイジにわかりやすく...
教科書ですね、まさかプロの翻訳屋さんより読める気はしないので
おとなしく日本語のを買ってきます。
ありがとうございました m(_ _)m
486 名前:
デフォルトの名無しさん
投稿日: 01/12/06 10:59
In article(中略)
>>485
図書館で借りろ:)
487 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:02
In article
>>479
, kusokabe Youichi/479 wrote:
> In article
>>478
,kusakabe Youichi/478 wrote:
> > > char **p;
> > > p = (char **)malloc(4);
> > > free(p);
> > >
> > > こうするとfreeのところで失敗します。なぜなのでしょうか。
> >
> > 失敗します」が具体的にどうなることを言っているかを
> > うまく説明する練習をしましょう。
>
> 糞レスをつけるのならレスをしない方がよいでしょう。
とかいうくだらない反応するぐらいなら何もしないほうがいいのでは? :)
私は最も適切な反応しているわけですので。
488 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:02
In article
>>480
, デフォルトの名無しさん/480 wrote:
>
>>476
> あ;;
> len-1だね:)
EUCだったらどうするの? :)
489 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:03
In article
>>481
, デフォルトの名無しさん/481 wrote:
>
>>478
> いや、質問の仕方が悪いってのは、まっとうな指摘だと思うが…
「仕方が悪い」というだけの指摘ではなく、どの部分がというのも示し、
「どうするべきか」の指針も与えているわけですからね。
490 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:04
>>485
立ち読みで十分だよ、薄い(内容もね)本だから。
誤植が多いから注意してよんでね。
491 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:05
>>484
>何がですか? > 保証されているかどうか
もしかすると、環境によっては動かないかも、
と思ったんですけど、大丈夫なんですかね?
CPUによっては、奇数のアドレスにchar以外では、
アクセスできないとかってあるじゃないですか。
492 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:06
>>485
何日やったか知らないが、本読む前でそれ位ならいい線逝ってるよ 藁
俺も厨房だが、その辺は何となくNULL参照しまくりながら慣れていった
個人的にはオライリーもお勧めしておく。
493 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:07
>>491
アラインされてない場合の動作は未定義。
つまり、何も問題なく動いてもいいし、バスエラーが起きてもいいし、
モニタを爆発させてもいい。
494 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:08
In article
>>485
, じゃばちゅぅ〜/485 wrote:
> >その前にCの関数の引数はcall by value..
> えっと、結局配列でも値渡しするのは先頭要素へのポインタだから
> まとめちゃえって感じですよね?
べつに「まとめて」いるわけじゃないです。
> でも、例えば2次元配列を期待してる
> 関数に、単なるポインタへのポインタを渡したりするときっと中で添え字アクセス
> とかされて死ぬと思うんですが、、その辺は呼び出す時に**ptrの意味を良く考えなきゃ
> 駄目なんですね、(I訪
二次元配列であろうが、ポインターのポインターであろうが、
引数で渡るときにはアドレス1つです。
> >152〜154ペイジにわかりやすく...
> 教科書ですね、
あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
495 名前:
490
投稿日: 01/12/06 11:11
>>490
あ、K&R買いにいくのか。糞本と間違えたーよ、鬱!
496 名前:
490
投稿日: 01/12/06 11:13
>>494
>あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
↑これね、糞本てのは。
497 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:14
>>494
> あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
他人に分からないレスはしないでください。非常に迷惑です。
ただでさえあなたは迷惑な存在なのですから。
498 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:17
> 二次元配列であろうが、ポインターのポインターであろうが、
> 引数で渡るときにはアドレス1つです。
はつみみです。引数で渡るときにはポインタ1つだと思ってました。
ところで、アドレスって何ですか?
499 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:18
>>498
加える服
500 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:18
In article
>>496
, 490/496 wrote:
>
>>494
> >あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
>
> ↑これね、糞本てのは。
そう思いたいのですね? :)
501 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:19
まあまあ、みなさん。
偽日下部相手に目くじら立ててもしょうがありませんよ。
彼もそのうち気付くでしょう。本物の足元にも及んでいないと。
イゴ スベテノ クサカベハ ニセモノ トイウ ツウセツデ ヨロシク。
ニセモノアツカイ デキナイヒトハ ムシニ ツトメテクダサイ
502 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:19
>>476
RISCなんかだと、アライメントされてないアクセスはだいたいSIGBUSかなんかくらうな。
エミュレートしてくれるOSもあるが、激烈に遅くなる。
503 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:21
>>474
> foo(int);というプロトタイプの関数があったとして、
> それにfoo(a);と呼び出すときと、foo(100);とやるときで、
> 受け取る側でどうなるかを関数定義部分(きっとfoo(int x){ ....}みたいに書いて
> あるはず)でどうなるかを考えてみてください。
禿死苦意味不明
504 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:23
お前ら隔離スレでやってくれませんか?
505 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:23
In article
>>497
, デフォルトの名無しさん/497 wrote:
> > あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
>
> 他人に分からないレスはしないでください。
「他人」っていってもいろいろいますね。
> ただでさえあなたは迷惑な存在なのですから。
そう思いたいのですね? :)
506 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:24
In article
>>498
, デフォルトの名無しさん/498 wrote:
> ところで、アドレスって何ですか?
住所でしょ。
507 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:25
In article
>>501
, デフォルトの名無しさん/501 wrote:
> まあまあ、みなさん。
> 偽日下部相手に目くじら立ててもしょうがありませんよ。
というと安心できるんですか? :)
508 名前:
Kusakabe Youichi
投稿日: 01/12/06 11:25
In article
>>502
, デフォルトの名無しさん/502 wrote:
>
>>476
> RISCなんかだと、アライメントされてないアクセスはだいたいSIGBUSかなんかくらうな。
>
> エミュレートしてくれるOSもあるが、激烈に遅くなる。
DGのがそうだったなあ > 遅く
509 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:26
場所を弁えましょう。日下部の偽者はム板に戻ってください。
本物の存在は一切認められていません。
ここで日下部を騙る事はコスプレして銀座の町に迷い出るようなものです。
510 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:26
>>506
住所って何ですか?
511 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:27
>>509
ム板ってここのことだけど・・・
それにしても、糞壁っていかれた人工知能プログラムみたいだな。
512 名前:
じゃばちゅぅ〜
投稿日: 01/12/06 11:27
うっ、何か大変な事になってる (゚д゚lll)
皆さんアドバイス大感謝です、今からK&R買いに行って来ます。
>492 オライリーはPracticalですよね、詳説が本棚の肥やしになってる
んだよなぁ・・・・と言うかお金が無い(泣
何か適当にやったらコア吐きまくるので、コード書かずにアレばっかり読んでたんです。
サンクス!>>みなさま
513 名前:
506
投稿日: 01/12/06 11:28
>>511
やべ、俺、板を誤爆しちゃったよ。
514 名前:
デフォルトの名無しさん
投稿日: 01/12/06 11:29
>>513
名前も誤爆(w
515 名前:
509
投稿日: 01/12/06 11:33
うげげ、はずかしー誤爆。
かくなる上は逝って詫びます。
あ、でもココに居る日下部はみんな偽者らしいので相手にしても
しょうがないですよ。テイセツラシイデス
有意義な時間をお過ごしください。
516 名前:
デフォルトの名無しさん
投稿日: 01/12/06 14:02
>>950
次のスレNoは10ではなく0x0Aがいいな
頼んだぞ(まだ早いって)
517 名前:
デフォルトの名無しさん
投稿日: 01/12/06 14:47
ヲタばっかでつまんなかったム板が、日下部さんが来て以来おもしろ
くなった。毎日のぞいちゃうよ。
518 名前:
Kusakabe Youichi
投稿日: 01/12/06 15:06
In article
>>517
, デフォルトの名無しさん/517 wrote:
> つまんなかったム板が、日下部さんが来て以来おもしろ
> くなった。毎日のぞいちゃうよ。
いごよろしく
519 名前:
デフォルトの名無しさん
投稿日: 01/12/06 15:39
来てるのは偽日下部だけだよ
>>517
520 名前:
iku
投稿日: 01/12/06 16:59
こんにちはikuです。
以下様な処理を環境Windows2000pro,SQLServerで
行いたいのですが,考え方としてどういうやり方で
やれば良いのかアドバイスを頂きたいと思い投稿しました。
端末を立ち上げると自動的にその端末の情報が
データベースに蓄積されるシステム(毎日更新予定)なのですが,
長期出張,産休といった人が出た場合,その端末は
立上がらないので何ヶ月も前の日付のデータが存在します。
理由あってそのデータを調査するという事で
今日の日付から一ヶ月前以上のデータを別テーブルへ
移動するという事をやる事になりましたが,
一ヶ月前,二ヶ月前,三ヶ月前のデータの
日付をどうやってわりだしたら良いのかわかりません。
どなたかこの日付調査で良い方法があったらよろしくお願いします。
何かCで参考になる関数,APIなどあれば・・・・
521 名前:
デフォルトの名無しさん
投稿日: 01/12/06 18:19
sin()、cos()を使おうと思ったら
lib\math.lib: Warning: Unresolved external symbol 'errno'.
って言われてしまいます。ちゃんと
#include <math.h>
はしているのですが、なにが原因なんでしょう。
P/ECEなんですが教えていただけますか?
522 名前:
デフォルトの名無しさん
投稿日: 01/12/06 18:22
errno.h
523 名前:
デフォルトの名無しさん
投稿日: 01/12/06 20:02
C用のsplit関数のサンプルってどっかに無いですか?
お約束的な関数が沢山載ってるサイトを教えて欲しいです
524 名前:
デフォルトの名無しさん
投稿日: 01/12/06 20:08
-lmをわすれてない?
525 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:29
すいません、おもいっきり初心者です。
C言語を使ったプログラムで
時間計算をするプログラムを書けという問題がでたのですが
はっきりいってわからなかったんです。
問題は5曲の曲の時間の合計を出すというものです。
もしよければおしえてください。
526 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:31
printf の変換文字列の
%g
%p
%n
って仕事でよく使うんですか?
527 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:32
>>525
全部、秒に直せ!
そのあと足せ!
そして、戻せ!
ヒントをやろう・・・
1時間は60分ッ!!
1分は60秒だぁああーーッ!!
528 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:35
>>526
%gはあんまり使ったことがない。普段数値計算とかしないから。
%pはデバッグではよく使う。
%nは場合による。
529 名前:
525
投稿日: 01/12/06 21:37
時間= t / 3600 を整数に切り捨てたもの
分= (t - ji * 3600) / 60 を整数に切り捨てたもの
秒= (t - ji * 3600 -分 * 60)
??
530 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:44
入力された秒数を、時間、分、秒に変換する。
#include <stdio.h>
main()
{
int ji,fun,byou;
printf("秒数=");
scanf("%d",&byou);
ji=byou/3600;
byou=byou%3600;
fun=byou/60;
byou=byou%60;
printf("%d時間 %d分 %d秒\n",ji,fun,byou);
}
copyright (c) 林春比古@改訂新C言語入門スーパービギナー編
531 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:44
>>529
うむ。だんだん良くなってきたな。
ここで108ある秘奥義のうちのひとつを伝授しよう。
a = b % c;
これで a に、 bをcで割ったときの余りが入るぞ。
532 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:45
>>531
ごめん。いきなり答えばらしちゃった。
533 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:49
あのー本屋はヴィジュアルc++ばっかりなんですけど、
C++ビルダーはもうないんですか?
MS製品は極力使いたくないんですけれど。
534 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:49
>>532
いいですよ。非奥義はあと107ありますから
535 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:50
>>530
見てると、ろくな本じゃないような気がする
536 名前:
Kusakabe Youichi
投稿日: 01/12/06 21:52
In article
>>525
, デフォルトの名無しさん/52
5 wrote:
> すいません、おもいっきり初心者です。
> C言語を使ったプログラムで
> 時間計算をするプログラムを書けという問題がでたのですが
書けばいいじゃん。
> はっきりいってわからなかったんです。
「どうわからなかったのか」の説明が、
「はっきりいって」だけじゃあわからないですね。
はっきり言ってってのはこの場合せいぜい「正直に言って」と同じ程度の意味の
ことしかいってないわけなので、ようやくすると
「xxxという問題が出たのですがわかりません」
とだけしか言っていないことになります。
> 問題は5曲の曲の時間の合計を出すというものです。
> もしよければおしえてください。
2:51 コルコヴァード
2:42 酒とバラの日々
3:15 ジョーンズ嬢に会ったかい?
3:55 イパネマの娘
5:16 D&E
という5曲の演奏時間の合計を手計算できない人には無理でしょう:)
537 名前:
525
投稿日: 01/12/06 21:53
これで、曲数と分も入力できるようにしたいのですが
それは非奥義107に含まれていますか??
538 名前:
デフォルトの名無しさん
投稿日: 01/12/06 21:58
>>537
それは秘奥義には入ってない。
環境に依存するものは秘奥義には入らんのだ。
宿題ていどならばscanfでも使うがよかろう。
539 名前:
デフォルトの名無しさん
投稿日: 01/12/06 22:01
かわいそう(笑)
540 名前:
デフォルトの名無しさん
投稿日: 01/12/06 22:06
2:51 コルコヴァード
2:42 酒とバラの日々
3:15 ジョーンズ嬢に会ったかい?
3:55 イパネマの娘
5:16 D&E
という5曲の演奏時間の合計を求めるプログラムを結局は求めるの?
つーか宿題くらい自分でやれよ(w
541 名前:
Kusakabe Youichi
投稿日: 01/12/06 22:07
In article
>>526
, デフォルトの名無しさん/526 wrote:
> printf の変換文字列の
> %g
> %p
> %n
> って仕事でよく使うんですか?
使いますね。%pは実装依存だけどよくつかう。
542 名前:
Kusakabe Youichi
投稿日: 01/12/06 22:24
In article
>>531
, デフォルトの名無しさん/531 wrote:
> ここで108ある秘奥義のうちのひとつを伝授しよう。
> a = b % c;
> これで a に、 bをcで割ったときの余りが入るぞ。
bが負の数だったら? cが0のときは?
543 名前:
デフォルトの名無しさん
投稿日: 01/12/06 22:27
C言語で小麦を作れますか?
544 名前:
Kusakabe Youichi
投稿日: 01/12/06 22:32
In article
>>537
, 525/537 wrote:
> これで、曲数と分も入力できるようにしたいのですが
> それは非奥義107に含まれていますか?
それは107の1 n = 0; ... n++; を使うのでは?
545 名前:
Kusakabe Youichi
投稿日: 01/12/06 22:47
In article
>>543
, デフォルトの名無しさん/543 wrote:
> C言語で小麦を作れますか?
Cでならできるかも。C言語では無理かも。
546 名前:
デフォルトの名無しさん
投稿日: 01/12/06 22:53
小麦
http://www.google.co.jp/search?q=cache:-Xz0ZTodW3o:www.scn-net.ne.jp/~manson/uodiary01-08.htm+UO+%E5%B0%8F%E9%BA%A6%E3%80%80%E7%94%BB%E5%83%8F&hl=ja&ie=utf8
547 名前:
デフォルトの名無しさん
投稿日: 01/12/06 23:20
ひたすら無視される悲惨な偽日下部(w
やっぱみんな、大人だわぁー。ここなら安心。
548 名前:
Kusakabe Youichi
投稿日: 01/12/06 23:23
In article
>>547
, デフォルトの名無しさん/547 wrote:
> ひたすら無視される悲惨な偽日下部(w
ということにしたいのですね。
549 名前:
デフォルトの名無しさん
投稿日: 01/12/06 23:25
sum += a;
と
sum = sum + a;
とどっちがいいの?
550 名前:
デフォルトの名無しさん
投稿日: 01/12/06 23:29
>>549
どちらでもコンパイル時に精製されるものは変わらないでしょう。
551 名前:
デフォルトの名無しさん
投稿日: 01/12/06 23:32
後者書く奴は素人
552 名前:
Kusakabe Youichi
投稿日: 01/12/06 23:34
In article
>>549
, デフォルトの名無しさん/549 wrote:
> sum += a;
> と
> sum = sum + a;
> とどっちがいいの?
Cだったら前者でいいのでは?
後者のように書く意味はとくにないでしょう。
553 名前:
デフォルトの名無しさん
投稿日: 01/12/07 00:01
入力分 : m
入力秒 : s
hour += (mim += (sec += s) / 60 + m) / 60;
min %= 60; sec %= 60;
554 名前:
defaultの名無しさん
投稿日: 01/12/07 00:03
過去スレ検索してないけど質問してよろしい?
555 名前:
デフォルトの名無しさん
投稿日: 01/12/07 00:05
>>554
よい。
糞壁が書き込むよりずっとまし。
556 名前:
Kusakabe Youchi
投稿日: 01/12/07 00:05
>>554
スレって何ですか?
557 名前:
デフォルトの名無しさん
投稿日: 01/12/07 00:07
>>556
ここは祭り禁止ですよ。
558 名前:
デフォルトの名無しさん
投稿日: 01/12/07 00:12
>>554
とりあえず
>>1
にある C FAQ だけは読んどけ。
559 名前:
defaultの名無しさん
投稿日: 01/12/07 00:16
>>558
>>1
のC FAQを見てもわかりませんでした。
一体日下部陽一って何なんですか?
560 名前:
あり
投稿日: 01/12/07 00:18
fread()とかでファイルを読むときにfp指定するけど、
このfpって次に使うときは、進んだままになっちゃうの?
はじめてのCって本の例題見るとそんな感じになっていました。
561 名前:
デフォルトの名無しさん
投稿日: 01/12/07 00:20
>>560
戻したければ fgetpos(), fsetpos() 使う。ftell(), fseek() でも良いけど。
562 名前:
デフォルトの名無しさん
投稿日: 01/12/07 00:21
>>559
それはプログラマー板で聞きましょう。技術じゃないし。
563 名前:
Kusakabe Youichi
投稿日: 01/12/07 03:36
In article
>>560
, あり/560 wrote:
> fread()とかでファイルを読むときにfp指定するけど、
> このfpって次に使うときは、進んだままになっちゃうの?
fpで指している構造体の中の一部にそれを覚えておく箇所があるわけですね。
次にreadしたりwriteしたりfseekしたらずれますが。
564 名前:
デフォルトの名無しさん
投稿日: 01/12/07 03:44
fpで指している構造体を使わないreadやwriteを使ってもずれるわけですか。
不思議ですね。
565 名前:
デフォルトの名無しさん
投稿日: 01/12/07 07:02
a〜hまでの8文字の中から4つを選び出す組み合わせを全て表示するプログラム
を知りたいのですが、
グーグルで「c 組み合わせ アルコリズム」で出ますか?
566 名前:
デフォルトの名無しさん
投稿日: 01/12/07 07:11
日下部は騙りを無くすためにトリップ使え。
567 名前:
デフォルトの名無しさん
投稿日: 01/12/07 10:10
日下部先生マンセー
568 名前:
Kusakabe Youichi
投稿日: 01/12/07 10:13
In article
>>567
, デフォルトの名無しさん/567 wrote:
> 日下部先生マンセー
ビル建設中にべつの場所にあったときのほうがおいしかったですね > 黒豚のトンカツ
569 名前:
デフォルトの名無しさん
投稿日: 01/12/07 10:31
>>568
わ、わかりにくい... 一瞬考えてしまったが肉屋の方か。
570 名前:
time.h
投稿日: 01/12/07 11:53
時間の話題なのに、おもいっきり無視されてる…
ウツダ
571 名前:
デフォルトの名無しさん
投稿日: 01/12/07 15:41
小数点以下一桁を切り上げする方法と
割算の答えを100桁(割り切れた場合はその桁まで)表示する方法を
教えてください。お願いします。
572 名前:
デフォルトの名無しさん
投稿日: 01/12/07 15:46
>>571
>割算の答えを100桁(割り切れた場合はその桁まで)表示する方法を
ライブラリでも用意するしかないよ。
573 名前:
デフォルトの名無しさん
投稿日: 01/12/07 16:35
>>571
> 割算の答えを100桁(割り切れた場合はその桁まで)表示する方法を
そんなに大きな桁を何に使うの?
無量大数でも68桁(88桁の説もあり)なのに...
574 名前:
デフォルトの名無しさん
投稿日: 01/12/07 16:39
K&Rを勉強中の初学者です。
演習2-9で分からないところがあるので、おしえていただきたいのです。
コードの改良は、
int bitcount (unsigned x)
{
int b;
for (b=0;(x=(x & (x-1)) != 0;b++)
;
return b;
}
でいいんじゃないかと思うのですが、
2の補数システムではなぜそうなるか、の説明がよくわかんないです。
最も右の1ビットから下位ビットが1の補数となり、&によって、0がセットされるため、
最も右の1ビットが消える。
では、ちょっと的外れのようなので、正しい理由を教えていただきたく思います。
もちろん、コードの間違いもありましたら、お願いします。
575 名前:
571
投稿日: 01/12/07 16:45
>>572-573
課題で出されたものです。
もしかして課題とかの質問はだめですか?
ちょっと一人ではわからないので詳しい人に聞きたいのですが...
576 名前:
デフォルトの名無しさん
投稿日: 01/12/07 16:50
>>575
「多倍長整数演算」とかで、検索かけてみ。
ここで説明するのはきつい。
577 名前:
デフォルトの名無しさん
投稿日: 01/12/07 16:52
>>574
コンパイルする環境ないの?
そのコードは動いてないよ。
578 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:01
>>574
何も間違ってないぞ。
その解釈であってる。
579 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:05
>>574
101000 (x)
100111 (x-1)
100000 (x & (x-1))
580 名前:
571
投稿日: 01/12/07 17:07
>>576
ありがとうございます。
581 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:26
>>575
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/index.html
リンク先の項番71から読め
582 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:42
srtcmpを使って数字を比較しようとしているのですが、
これだと2つの値が同じときでも後者が大きいと判断
されてしまいました。
ちゃんと等しいときに0を返してくれるのってどうすれば
いいのでしょう?
#include<stdio.h>
#include<string.h>
int main(){
char a[2],b=0;
a[1]=10;
a[2]=10;
b=strcmp(&a[1], &a[2]);
printf("a[1]: %d a[2]: %d b=%d\n",a[1],a[2],b);
if(strcmp(&a[1], &a[2])==0)
printf("等しい\n");
else if(strcmp(&a[1], &a[2])>0)
printf("a[1]が大きい\n");
else
printf("a[2]が大きい\n");
}
583 名前:
571
投稿日: 01/12/07 17:49
>>581
ありがとうございます。
読んでみましたがよくわからないです。。。
C言語及びプログラム言語初心者には
難しい課題を与えられた気がします。。。
もっと簡単にできないでしょうか?
584 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:54
>>582
> srtcmpを使って数字を比較しようとしているのですが、
そもそもstrcmpは数字を比較するものではない。
> ちゃんと等しいときに0を返してくれるのってどうすれば
> いいのでしょう?
「ちゃんと等しい」をもっと「ちゃんと」定義して欲しい。
とりあえず
> if(strcmp(&a[1], &a[2])==0)
if(a[1] - a[2])
では駄目なのか?
585 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:56
>>582
>srtcmpを使って数字を比較しようとしているのですが、
もうね、アホかと。馬鹿かと。
586 名前:
デフォルトの名無しさん
投稿日: 01/12/07 17:56
あのさぁ、だめだめ!
割り算ってどーやるの?あれ?
まずふつーにやるだろ?余りがでんだろ?
その次どーすんの?0くっつけんだろ?それってなに?10倍ジャン?
そーやってやると小数圏に突入(乳突起きぼんぬ)すんだろ、
そんでつづけていけば最高じゃんか
そーやってやれ。余裕だ。
587 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:02
>>584
> そもそもstrcmpは数字を比較するものではない。
ごもっともです。
でも、a[1],a[2]を文字に置き換えてもstrcmpの結果が
0にはなってくれません。
とりあえずif(a[1]-a[2])でもできないこともなさそうです。
ありがとうっす。
588 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:02
>>582
すごい妄想だな!
strcmpは同じだとTRUE=1を返すんだっけ?そこが逆?
あと、数字の大きさ比較するにはなにも、引き算でいいじゃんか
589 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:03
引き算したかったらatoiを使えYO
たとえば文字(列)"4"を数字でつかえる4にしてくれるZO
590 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:05
ちなみにAPI板にも寄ってください・・・
591 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:05
そこまでたたかなくてもいいじゃん(^-^;
592 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:06
宿題レスにもな。
593 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:06
>>574
for (b=0; x != 0; x&=(x-1), b++)
にしないと、x=1のときゼロになる
594 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:10
>>587
> でも、a[1],a[2]を文字に置き換えてもstrcmpの結果が
> 0にはなってくれません。
残念ながらstrcmpは「文字」を比較するものでもありません。
「文字列」を比較します。
「文字」と「文字列」の違いについては入門書を良く読んでください。
595 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:23
とりあえず添え字は0からだよ、a[2]は書いてはいけない領域
596 名前:
デフォルトの名無しさん
投稿日: 01/12/07 18:27
つーか複雑なこといわなくても、
文字を比較したかったら=使えばいいじゃんか
strcmpは文字も比較できるぞ。
=使ってて例えばabcdefghi(\0)からbcdなりcなりを
抽出したいときはどーする?そーゆーときstrcmpとか
シリーズを使うのだ!
597 名前:
デフォルトの名無しさん
投稿日: 01/12/07 19:01
>>596
> strcmpは文字も比較できるぞ。
できません。
できると思う人はできる例を示してください。
char a = 'a';
char b = 'a';
これをstrcmpでどう比較するの?
598 名前:
デフォルトの名無しさん
投稿日: 01/12/07 19:30
>>597
strncmpを使えばできるね。
strcmp(&a,&b)でも比較対象a,bのそれぞれのすぐ後ろが'\0'なら
できないと言えなくも無いね。
だけど、そんなコードを俺の目の前で書いたら、氏なす。
599 名前:
デフォルトの名無しさん
投稿日: 01/12/07 19:43
>>598
それはたまたま'\0'があったらってことだよね?
多くの場合において無いと思うから、同じ文字だったらアクセス違反になるだろうね。
ところで、なんで比較演算子を使いたがらないんだろう?
数字が昇順に並んでいない文字コードがあるの?
もしあったとしても、atoi()で変換してやればいいじゃない。
600 名前:
599
投稿日: 01/12/07 19:44
あ、昇順に並んでいなかったらstrcmpもstrncmpも使えないか・・・・
601 名前:
Kusakabe Youichi
投稿日: 01/12/07 19:58
In article
>>599
, デフォルトの名無しさん/599 wrote:
> ところで、なんで比較演算子を使いたがらないんだろう?
> 数字が昇順に並んでいない文字コードがあるの?
けっこうありますね > そういうコードセット
602 名前:
Kusakabe Youichi
投稿日: 01/12/07 19:58
In article
>>600
, 599/600 wrote:
> あ、昇順に並んでいなかったらstrcmpもstrncmpも使えないか・・・・
え、それとは独立な問題ですよ。
603 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:05
>>597
馬鹿言うな
文字比較したいときは人間の手で一文字の
配列をつくるんですYO。
たとえば文字(列)検索ルーチンで
わざわざ一文字と複数文字の区別するんですか?
(ちょっとはするけどさ)基本的に文字列としてあつかうでしょ?
604 名前:
Kusakabe Youichi
投稿日: 01/12/07 20:07
In article
>>603
, デフォルトの名無しさん/603 wrote:
> たとえば文字(列)検索ルーチンで
どっちですか? > 文字/文字列
605 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:13
糞壁が痛い人を呼んでいるので終了。
Cに於いて文字列とはヌルターミネートされた文字の並びを指します(例え一文字でも)
strcmpは文字列を対象に書かれてますので、文字の照合は///出来ません///
606 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:14
>>strcmp(&a,&b)でも比較対象a,bのそれぞれのすぐ後ろが'\0'なら
>>できないと言えなくも無いね。
この辺りから糞壁信者っぽい、ネタにもならんね
607 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:28
大体文字と文字列の区別なんて意味がわかっちまえば
こだわる必要ねーんだよ。意味がわかったら
人間語の文字つー意味にもどれよ。
要は終記号がないとコンピューターが判断できない
つー話でしょうが。
テキスト中の文字(列)検索したいときに
いちいち一文字と複数文字の区別考えて
「えーっと、いま検索窓にaっていれたから
今は文字検索したな」やれ「あ、”あいう”っていれたから
これから文字列検索をします!」とか下らんことかんがえる
わけですか?語句検索すんのに文字も文字列もきにしないんですけど。
608 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:33
じゃぁ文字照合したいときはどーすんの?
できないじゃん。
どーせちょちょっとやって、strcmp使ったって
いいんじゃんか。おんなじことだぜ?ほかの方法つかったって。
609 名前:
Kusakabe Youichi
投稿日: 01/12/07 20:35
In article
>>605
, デフォルトの名無しさん/605 wrote:
> 糞壁が痛い人を呼んでいるので終了。
わたしのせいにしようとしても無駄ですよ:)
呼んでいるのはあたなでしょう:)
> Cに於いて文字列とはヌルターミネートされた文字の並びを指します(例え一文字でも)
なんじゃそりゃ:) > 例え
610 名前:
Kusakabe Youichi
投稿日: 01/12/07 20:36
In article
>>607
, デフォルトの名無しさん/607 wrote:
> テキスト中の文字(列)検索したいときに
で、どっち? :) > 文字/文字列
611 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:38
以下605の戻って無限ループ
===終了===
612 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:40
(・∀・) デンパイタデヤッテロ!!
613 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:48
うぉ!まだ言ってるんのか!
僕はヤフー検索するのに文字か文字列
なんて考えません。語句です。語ですか?句ですか?
とかいっちゃうあなたにマイナス1点
だいたいあなた、間違ってるYO.
文字列or文字、それでWholeをカバーするんですか?
絶対にどっちかだ!とか考えてんでしょ?
文字列を文字の区別はYes or Noとは違いますよ?
僕は人間言葉の文字という意味を使った。
614 名前:
574
投稿日: 01/12/07 20:50
有り難うございました。
考え出したら、ぐるぐる巡ってしまって、ちょっと解んなくなってました。
コードは、')'が足りなかったですね。
有り難うございます。
では、また、頑張ってみます。
615 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:51
ここで糞壁を煽るのは良いけど、技術的な突っ込み所満載な悲惨さまでは
再現しなくていいよ (^^;
616 名前:
Kusakabe Youichi
投稿日: 01/12/07 20:52
In article
>>613
, デフォルトの名無しさん/613 wrote:
> うぉ!まだ言ってるんのか!
> 僕はヤフー検索するのに文字か文字列なんて考えません。
っていうかどっちですか?
1文字の文字と、
1文字の文字列は別物ですよ。
617 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:54
いやマジで他所でやって頂きたい
>>613
>僕は人間言葉の文字という意味を使った。
人間言葉の文字って何? 検索しても出てきませんが?
618 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:58
サイコロをA回振ります。
1〜6のそれぞれの目が出た回数を記録していきます。
振り終わった時に考えられる結果(1がm回、2がn回、3が…)
の総数と、一番多く出た目の数と一番少なく出た目の数の
差がB以下になる確率を出します。
Aを入力してからBを入力すると計算が始まります。
不正な数字が入力された時のチェックなどは省いています。
と、いうプログラムを気合で作りました。C初心者です。
添削希望です。
もっといい書き方などありましたら教えていただきたいです。
2回に分けてコピペします。
619 名前:
618
投稿日: 01/12/07 20:59
#include<stdio.h>
#include<conio.h>
void count(int *a,int margin,int *total,int *hit);
void haji(int *a,int *b);
void indec(int *a,int *b);
int zzz=0;
int main(void)
{
int eye[6]={0,0,0,0,0,0},margin,shake;
unsigned long int total=0,hit=0;
char ex;
printf("振る回数 … ");
scanf("%d",&shake);
printf("差 … ");
scanf("%d",&margin);
eye[0] = shake;
while(eye[5] != shake){
if(eye[5])haji(eye,eye+5);
else if(eye[4])indec(&eye[4],&eye[5]);
else if(eye[3])indec(&eye[3],&eye[4]);
else if(eye[2])indec(&eye[2],&eye[3]);
else if(eye[1])indec(&eye[1],&eye[2]);
else indec(&eye[0],&eye[1]);
count(eye,margin,&total,&hit);
}
count(eye,margin,&total,&hit);
printf("\n\n振る回数:%d回 差:%d以下\n",shake,margin);
printf("パターン数:%ld ヒット数:%ld ヒット率:%.15lf%\n\n",total,hit,(double)hit/(double)total*100);
printf("何かキーを押すと終了します。");
ex=getche();
if(shake>70){
printf("\n!!再確認!! 何かキーを押すと終了します。");
ex=getche();
}
return 0;
}
620 名前:
デフォルトの名無しさん
投稿日: 01/12/07 20:59
>615 寧ろ技術的な裏付けの無い発言を書き捨てる時の共有コテハン (w
つーか下げでやれ下げで
621 名前:
618
投稿日: 01/12/07 21:00
void indec(int *a,int *b)
{
(*a)--;
(*b)++;
}
void haji(int *a,int *b)
{
int i,kou=*b;
if(zzz < *b){
zzz = *b;
printf("%3d ",*b);
}
*b = 0;
for(i=4;;i--){
if(*(a+i)){
*(a+i+1) = kou;
(*(a+i+1))++;
(*(a+i))--;
break;
}
}
}
void count(int *a,int margin,int *total,int *hit)
{
int i,high,low;
high = *a;
low = *a;
for(i=0;i<6;i++){
if(high < *(a+i))high = *(a+i);
}
for(i=0;i<6;i++){
if(low > *(a+i))low = *(a+i);
}
if(high - low <= margin)(*hit)++;
(*total)++;
}
以上です。よろしくおねがいします。
622 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:03
eyeは無いでしょ(^-^;
623 名前:
あぼーん
投稿日: あぼーん
あぼーん
624 名前:
618
投稿日: 01/12/07 21:13
>>622
あの、では、eofdieですか?英語弱くて…
あと、コメント無くてスイマセン。
625 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:23
>>608
> じゃぁ文字照合したいときはどーすんの?
strchr
ちなみに文字列照合の場合はstrstrを使う。
>>616
も言っているが
「文字」と「文字列長が1の文字列」は別物
入門書から読み直せ
626 名前:
Kusakabe Youichi
投稿日: 01/12/07 21:26
In article
>>625
, デフォルトの名無しさん/625 wrote:
> 入門書から読み直せ
どんな入門書がよいでしょう?
627 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:28
「作ってわかるCプログラミング」を万引き
628 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:29
「ツクッテワカル Cプログラミング」ニ キマッテルダロ
629 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:31
作ってわかるCプログラミング、紙質が素晴らしいね
紙面の余白がとても多いのも良い、メモ帳にぴったりですね
次からはミシン目を入れて下さい :-D
630 名前:
Kusakabe Youichi
投稿日: 01/12/07 21:35
In article
>>629
, デフォルトの名無しさん/629 wrote:
> 作ってわかるCプログラミング、紙質が素晴らしいね
はい、ペイジ数がとても多いのに、厚さを増さないように、
高い紙を使ったそうです。
> 紙面の余白がとても多いのも良い、メモ帳にぴったりですね
え? 余白は「少ない」ですよ。わたしはもっと余白をとってほしかった
(とくに小口側じゃなくてノドの側、ぎっしりすぎて読みにくい)
「余白が多い」とかって、ようするに実物見てないのでは? :)
(ここで誰かが書いてたデマを信じて書いたんだったら、恥かくだけですよ^^)
631 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:36
>>627-629
ここでやるなよ。
隔離板へ逝け。
632 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:38
>>626
C言語入門書
http://www.amy.hi-ho.ne.jp/~lepton/program/prog/prog78.html
によると
> 「悪い入門書」のチェックポイント
> ・著者のイニシャルがK(あ、あとついでにMも)である :-p
だそうです。
# 例えばK下部とかかな?
633 名前:
574
投稿日: 01/12/07 21:39
593さん、有り難うございます。
あの辺りのスレ読み飛ばしていました。
634 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:40
オライリーのC実践でいいんじゃないの?
635 名前:
デフォルトの名無しさん
投稿日: 01/12/07 21:45
>>632
http://www.amy.hi-ho.ne.jp/~lepton/program/mail/19990628.html
78の K西本批判は、その通りだと思います。
636 名前:
デフォルトの名無しさん
投稿日: 01/12/07 22:11
だから俺は明示的にC言語の「文字」
の意味だ、と言った覚えがないのだが
637 名前:
デフォルトの名無しさん
投稿日: 01/12/07 22:22
分かった分かった「人間言葉の文字」だよな (w
638 名前:
デフォルトの名無しさん
投稿日: 01/12/07 22:24
>>636
ここは C 言語スレです。一般的な「文字」について語りたいなら、別のスレでお願いします。
(そもそも「俺」って誰だよ、番号書いてくれないと名無しさんばっかで分からん)
639 名前:
exciteさんに訊いてみました
投稿日: 01/12/07 22:24
人間言葉の文字
↓
The character of human language
↓
人間の言語の特徴
640 名前:
デフォルトの名無しさん
投稿日: 01/12/07 22:52
だったら君はテキスト内を検索
するときにせいぜいアスキーコードでも
使って配列でもつくるんだねw
641 名前:
Kusakabe Youichi
投稿日: 01/12/08 02:48
In article
>>636
, デフォルトの名無しさん/636 wrote:
> だから俺は明示的にC言語の「文字」
明示的っていう日本語はないですね。
642 名前:
デフォルトの名無しさん
投稿日: 01/12/08 02:50
どっけ池、糞壁!(・∀・ )♪
643 名前:
仕様書無しさん
投稿日: 01/12/08 03:31
上京を「京都に行くこと」と訳す人間に、
日本語語って欲しくないです。
644 名前:
デフォルトの名無しさん
投稿日: 01/12/08 03:46
上京ってのは、みやこへ行くことだろ。
京都の人間にとっちゃ、みやこは今でも京都だし、
それを聞いた東京の人間は、とっくに遷都しただろと思う。
645 名前:
デフォルトの名無しさん
投稿日: 01/12/08 03:50
スレ違いかつ板違い。
646 名前:
デフォルトの名無しさん
投稿日: 01/12/08 06:18
>>643
誤植です。
647 名前:
Kusakabe Youichi
投稿日: 01/12/08 08:30
In article
>>643
, 仕様書無しさん/643 wrote:
> 上京を(I☆ぢ京都に行くこと(IC般C洪祐屬法「
何言ってるんだかわからないですね。
648 名前:
デフォルトの名無しさん
投稿日: 01/12/08 08:42
それはCとは関係あるの? 関係ないならsageでね。
649 名前:
デフォルトの名無しさん
投稿日: 01/12/08 10:09
>>648
> それはCとは関係あるの? 関係ないならsageでね。
sageていれば関係無いことをいくら書き込んでもいいということですか?
650 名前:
デフォルトの名無しさん
投稿日: 01/12/08 12:14
なんでKusakabeの引用は化けるの?
651 名前:
Kusakabe Youichi
投稿日: 01/12/08 12:15
In article
>>650
, デフォルトの名無しさん/650 wrote:
> なんでKusakabeの引用は化けるの?
わたしのが化けているのではなくて、もとのがいけないだけでは?
652 名前:
デフォルトの名無しさん
投稿日: 01/12/08 12:16
kusakabeが悪いよ。
653 名前:
Kusakabe Youichi
投稿日: 01/12/08 12:19
In article
>>652
, デフォルトの名無しさん/652 wrote:
> kusakabeが悪いよ。
いいえ。
654 名前:
デフォルトの名無しさん
投稿日: 01/12/08 12:22
どうせKusakabeが変なソフト使ってるんでしょ。
655 名前:
デフォルトの名無しさん
投稿日: 01/12/08 12:25
voidタン・・・ハァハァ
656 名前:
Kusakabe Youichi
投稿日: 01/12/08 12:26
In article
>>654
, デフォルトの名無しさん/654 wrote:
> どうせKusakabeが変なソフト使ってるんでしょ。
私のは問題ないですね。
657 名前:
デフォルトの名無しさん
投稿日: 01/12/08 13:04
>>656
JIS X 0201仮名が化けたり、JIS X 0208の英数字をISO 8859-1に変換したり
するのは、少なくとも2chの閲覧に限っては問題あると思います。
閲覧するだけならどうでもいい話ですが、引用時にそれを行うのは著作者人格権の
同一性保持権を侵害していることになります。
658 名前:
Kusakabe Youichi
投稿日: 01/12/08 13:23
In article
>>657
, デフォルトの名無しさん/657 wrote:
> JIS X 0201仮名が化けたり、JIS X 0208の英数字をISO 8859-1に変換したり
はつみみです。
659 名前:
デフォルトの名無しさん
投稿日: 01/12/08 13:40
やあみんな!元気?
strcmpで文字列でなく (見た目上)文字を比較する方法を編み出したよ!
やり方は簡単さ!
int a = 'a';
int b = 'b';
if( strcmp(&a,&b) )printf("chigau\n");
ほら、これなら 文字を比較 してるように見えるだりろぉ?
あー石投げるな〜機種依存〜
660 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:14
>>619
変数名、引数名が適当すぎる。
それじゃ添削以前に、やってることが理解できないから
読む気がしない。
もっと意味のある変数名にするか、コメントで説明をつけてくれ。
変数名がちゃんとしていれば、コメントは最小限で済む。
661 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:15
つまらない。
if ( a < b ) kill(
>>659
);
662 名前:
Kusakabe Youichi
投稿日: 01/12/08 14:21
In article
>>661
, デフォルトの名無しさん/661 wrote:
> つまらない。
> if ( a < b ) kill(
>>659
);
2項演算子ですね。
663 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:22
下位7ビットでasciiをサブセットに持っていない文字コードは何があるの?
664 名前:
Kusakabe Youichi
投稿日: 01/12/08 14:25
In article
>>663
, デフォルトの名無しさん/663 wrote:
> 下位7ビットでasciiをサブセットに持っていない文字コードは何があるの?
いくらでもあるとおもうが。
665 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:27
>>661
つまらない、って一刀両断することも無いだろ。
どうして特定の環境で
>>659
のコードが正しく動いてしまうのか
ということを考えてみた方が面白くはないか?
少なくとも俺が昔このコードを読ん
666 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:31
>664
具体的に教えて。
そしてその文字コードを使うOSも教えろゴラア。
667 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:40
>>665
読ん?続きないの?
668 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:44
>>665
> 少なくとも俺が昔このコードを読んだときには一目で動く理由がわかったぞ
669 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:47
>>668
> 少なくとも俺が昔このコードを読んだら一目で恋に落ちたぞ
670 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:50
ゴルゴの標的にされた模様。
>>665
671 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:50
過去ログdat待ちでこのスレしかみてないんですけどなかったから質問です。
RS232Cシリアルポートの送受信ってどするのでしょう?
672 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:52
osの上ならポート指定してwrite、readするだけ。
673 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:53
>>671
I/Oポートに直接ガンガン書けばいいんじゃない?
674 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:58
あと受信はタイマかスレッドで定期的にしろ。
675 名前:
デフォルトの名無しさん
投稿日: 01/12/08 14:59
>>674
割り込みつかうのは邪道?
676 名前:
デフォルトの名無しさん
投稿日: 01/12/08 15:04
使える環境ならそれを使う。
だいたいOSの上からは割り込みなんて使えんだろ。
677 名前:
デフォルトの名無しさん
投稿日: 01/12/08 15:07
>>659
リトルエンディアンでも、plain charがsigned charの処理系で
'\377'とかと比較したら面白いことになるな。
678 名前:
デフォルトの名無しさん
投稿日: 01/12/08 15:22
672〜676 レスありがと でもわからん。
えーとレスつくようなのでもう少し説明。
環境 Win98でVC
状況
ぶっちゃけて言うと手付かずです。とりあえずどっかのサンプル見て
勉強してから質問しようと思ったんですけど、それすら見つからなかった。
局地的なプログラムならちらほらあったけど、よくわかるのはなし。
で、参考文献とかでもいいので教えてもらいたい。
目的
とりあえず、受信と送信を確立したい。
たぶんオレはすごく間抜けな質問してるんだろうな・・・みなさん大目にみてください。
ちなみにCの経験は大学の授業レベルです。
(つまりポートやタイマなんて関係のないプログラムしか作ったことないんです)
679 名前:
デフォルトの名無しさん
投稿日: 01/12/08 15:58
DCB構造体で通信パラメータをセットする。
あとはファイルのリードライトと同じ要領。
ハンドシェイクやプロトコルは適当に自分で考えろ。
ってゆーかVC++関連スレのほうが良いのでは?
680 名前:
名無し
投稿日: 01/12/08 16:53
HTML(2.X、4)は、codesetとして、UNICODEが規定されている。
で、news<->2ch Converterの仕様か、iso-2022-jpの仕様かは
知らんが、UNICODE文字が、すべてはmapされない。
だから、Halfwidth Katakanaとかハングルとか、見えなくなってしまう
文字の出てくる可能性だって、あるわけ。
だれが悪いのか、って言えば‥‥‥文化摩擦としか。
#Halfwidth Katakana領域を正しく変換しないコンバータが責任かも
個人的には、UNICODE実体参照とかをどう処理するかも気になるが。
681 名前:
デフォルトの名無しさん
投稿日: 01/12/08 18:34
クソカベニ ヨメナイヨウニ ハンカクカナ デカキコモウ ... シネ クソカベ!!!
682 名前:
デフォルトの名無しさん
投稿日: 01/12/08 21:38
>>678
こんなのあったけど、どうか。
ttp://www.vector.co.jp/soft/win95/prog/se173131.html
683 名前:
681を全角に復元してみました
投稿日: 01/12/08 21:57
>>681
> クソカベニ ヨメナイヨウニ ハンカクカナ デカキコモウ 。。。 シネ クソカベ!!!
684 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:27
0.1 を10回足したいときはどうすればいいの?
685 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:30
>>684
0.1*10;
686 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:33
>684
深入りしたくない場合、
予め計算機で計算して即値で 1 と書いておきます。
言語によっては、RationalとかRatio aとかのクラスか型が
有るので、それを使います。
687 名前:
686
投稿日: 01/12/08 22:34
スレ違いだった。Cスレだった。
688 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:36
>>685
それって数学的に正しい答えが出るって保証されてるの?
689 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:44
入門書を見ると
int main(void)
って書いてあるけど、これって正しいの?
int main()
のほうがいいんじゃないの?
690 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:49
>>689
ANSI C準拠のコンパイラならどちらでもいいと思うけど。
691 名前:
デフォルトの名無しさん
投稿日: 01/12/08 22:49
Cではmain()はmain(...)だったと思うから
main(void)の方が良いだろう。
692 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:07
>>691
あんさん、それプロトタイプ宣言の時だけですぜ。
最後にセミコロンが無いから、689は関数定義の話をしていると思われ。
693 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:11
じゃあ、プロトタイプ宣言の時は
int main(void);
で、関数の時は
int main()
でいいんですね?
694 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:12
古いコンパイラーで、
char 型の範囲が、0 〜 255
のものって生き残ってるの?
695 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:17
C++より、Cがむずかしい
696 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:31
CよりHSPがむずかしい
697 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:31
>>694
char が signed ではなく unsigned のものがあるか、って話?
698 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:44
>>697
そう。
getchar()をcharで受けてはいけない。int で受けなさい、という説明で、
現在のコンパイラーでは、charは -125〜126 だけど、古いコンパイラーでは
0 〜 255 だから、EOFで-1を返すgetchar()を受けるときは、安全性を考慮してintで宣言する、という
説明を読んで、そんな古いコンパイラーいまだに使ってるところあるのかよ。と思ったのです。
あと、ANSI的にはどっちが正しいの?
699 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:50
>>698
>ANSI的にはどっちが正しいの?
char が符号付か符号無しかは、処理系によって違う。
あたらしい、古いの問題じゃなくて。
700 名前:
デフォルトの名無しさん
投稿日: 01/12/08 23:53
>>698
getchar()で返すのはEOFと0〜UCHAR_MAXのUCHAR_MAX+1通り。
(charが8bitの場合は-1〜255の257通りね。)
signed charでもunsigned charでも足りんと思わんか?
701 名前:
デフォルトの名無しさん
投稿日: 01/12/09 00:32
>>698
VC++6 でも /J スイッチつければ char が 0〜255 だぜ
/J default char type is unsigned
ちなみに -125〜126 ってのはいったいどこから出てきた数字?
-127〜127 または -128〜127 ならわかるが。
702 名前:
デフォルトの名無しさん
投稿日: 01/12/09 00:37
>>701
> -127〜127 または -128〜127 ならわかるが。
-127〜127ってのはいったいどこから出てきた数字?
-128〜127 ならわかるが。
703 名前:
701
投稿日: 01/12/09 01:09
>>702
よ、ISO標準C90 から出てきた数字だ
<limits.h> SCHAR_MIN/MAXの最小値は -127,+127 と規定されとる
世の中「2の補数系」ばかりじゃないからな
704 名前:
デフォルトの名無しさん
投稿日: 01/12/09 01:13
>>702
> -127〜127ってのはいったいどこから出てきた数字?
1 の補数表現でしょ。
705 名前:
Kusakabe Youichi
投稿日: 01/12/09 03:03
In article
>>689
, デフォルトの名無しさん/689 wrote:
> 入門書を見ると
> int main(void)
> って書いてあるけど、これって正しいの?
どの入門書ですか?
706 名前:
Kusakabe Youichi
投稿日: 01/12/09 03:05
In article
>>698
, デフォルトの名無しさん/698 wrote:
>
>>697
> そう。
> getchar()をcharで受けてはいけない。int で受けなさい、という説明で、
> 現在のコンパイラーでは、charは -125〜126 だけど、古いコンパイラーでは
> 0 〜 255 だから、EOFで-1を返すgetchar()を受けるときは、安全性を考慮してintで宣言する、という
> 説明を読んで、
そりゃ説明が間違っているって。
べつにunsignedのがあるからintになっているわけじゃあない。
いったいどこにそんなウソの説明が書いてあったんだ。
707 名前:
デフォルトの名無しさん
投稿日: 01/12/09 03:05
Cで掲示板作りたいんだけど、お勧めHP無い?
708 名前:
デフォルトの名無しさん
投稿日: 01/12/09 03:11
>>707
http://www.bell-labs.com/
709 名前:
投稿日: 01/12/09 03:47
どっかにシグナルハンドラのサンプルソースないかな?
710 名前:
デフォルトの名無しさん
投稿日: 01/12/09 07:07
>>709
ってどんなんだ?
sigaction()の使い方、とかだったらUnix系のフリーソフトのソース
見るんじゃ駄目なのか?
711 名前:
デフォルトの名無しさん
投稿日: 01/12/09 12:50
man sigaction読んでコード書けない頭なら
プログラミング止めた方がいいよ
712 名前:
デフォルトの名無しさん
投稿日: 01/12/09 19:24
sprintfが出力する文字数を、
呼び出す前に調べる方法無いですかね?
713 名前:
Kusakabe Youichi
投稿日: 01/12/09 19:31
In article
>>712
, デフォルトの名無しさん/712 wrote:
> sprintfが出力する文字数を、
> 呼び出す前に調べる方法無いですかね?
sprintfをエミュレイトする関数をつくればいい:)
714 名前:
デフォルトの名無しさん
投稿日: 01/12/09 19:38
>>712
fprintf, vfprint で /dev/null (\\.\null) に書き出して、戻り値をチェック。
715 名前:
デフォルトの名無しさん
投稿日: 01/12/09 20:06
>>713
それが面倒なので…
>>714
winの場合は"\\.\null"のファイル開いてそこに書き出すってことですよね。
ありがとうございます。
716 名前:
デフォルトの名無しさん
投稿日: 01/12/09 20:21
ああ、久しぶりにヌルヌルしたい。
717 名前:
デフォルトの名無しさん
投稿日: 01/12/09 23:45
>>715
> winの場合は"\\.\null"のファイル開いてそこに書き出すってことですよね。
Yes
ただファイル名は \\.\nul が正解 (l は1つ)ね。すまん。
718 名前:
デフォルトの名無しさん
投稿日: 01/12/10 00:35
文字列がひらがなだけかどうか検索する関数って
簡単な奴ご存知でしょうか?
あとひらがなをかたかなに変換する関数とかあったら
お願いします。
719 名前:
雪江
投稿日: 01/12/10 00:38
>>718
簡単に実装するには、ひらがなデータベースをつくって
全文字比較 ・・・でしょうね。
変換もまた同じです。
文字コード関係は煩雑だから適当なライブラリを拾うといいと思いますよ
がんばって
720 名前:
デフォルトの名無しさん
投稿日: 01/12/10 00:43
>雪江さん
どうもありがとう! 頑張ります。
721 名前:
デフォルトの名無しさん
投稿日: 01/12/10 00:46
\\.\って何?
722 名前:
名無し
投稿日: 01/12/10 03:11
>>712
たしか、WTLのCString::Formatが、sprintfの文字数を
数えてたかも。
723 名前:
デフォルトの名無しさん
投稿日: 01/12/10 04:04
>>718-720
の展開ってどうなんですか?
突っ込まなくてもいいのですか?
文字コードがどうのとか言わなくていいのですか?
724 名前:
さんばー
投稿日: 01/12/10 10:18
ソケットを作って、send(Socket,buf,strlen(buf),1);
でデータを送信するプログラムをC+winsockでを書いているのですが、
closesocketするか、プログラムを終了させないとデータが届きません。
おそらくどこかにバッファされてしまっているのでは、
と思っているのですが、どのようにするとすぐにsendした内容が
届くように出来るのでしょうか。
725 名前:
デフォルトの名無しさん
投稿日: 01/12/10 10:39
何で最後のflagsパラメータに1なんか指定してるんだ?
バンド外データとして送信したいのか?
winsock.h
#define MSG_OOB 0x1 /* process out-of-band data */
つーか、スレ違いだけどな。
726 名前:
さんばー
投稿日: 01/12/10 14:04
>725
すみません単に間違えました。フラグは0にしています。
perlだと $|=1;してストリームをフラッシュしますよね。
このような動作が必要なのではと思っているのですが・・・
727 名前:
デフォルトの名無しさん
投稿日: 01/12/10 16:00
puts() って数字は出力できないの?
728 名前:
味噌醤油醸造株式会社
投稿日: 01/12/10 16:03
>>727
int n = 1000000;
puts((const char*)&n);
729 名前:
デフォルトの名無しさん
投稿日: 01/12/10 16:32
>>728
おいおい、ネタか?
'\0'が見つからなくて暴走する可能性があるぞ。
>>727
> puts() って数字は出力できないの?
できん。文字列に変換しろ。
char buf[100]; // バッファサイズは適当
sprintf(buf, "%d", n);
puts(buf);
730 名前:
デフォルトの名無しさん
投稿日: 01/12/10 16:42
>>724
しばらく時間がたつと送信されると思うけど
バッファしてほしくないときはsetsockoptでTCP_NODELAYを指定する。
731 名前:
デフォルトの名無しさん
投稿日: 01/12/10 18:07
fgetsでファイルの一行を読み込み、sscanfでデータをセットする場合、
sscanf(line,"%s %s...", data1,data2,...)としたいのですが、
フォーマットの形式が極端に長い場合、これを使うと書くのに時間が
かかるのですが、これ以外の方法はないのでしょうか?
732 名前:
デフォルトの名無しさん
投稿日: 01/12/10 18:09
>>731
エディタにコピーの機能はないのでしょうか?
733 名前:
Kusakabe Youichi
投稿日: 01/12/10 18:11
In article
>>731
, デフォルトの名無しさん/731 wrote:
> sscanf(line,"%s %s...", data1,data2,...)としたいのですが、
> フォーマットの形式が極端に長い場合、これを使うと書くのに時間が
> かかるのですが、これ以外の方法はないのでしょうか?
そんなにかかりませんよ。
全部%sばかりで同じ繰り返しならば、
少しは速くする方法はありますが、まあそれでも3倍速くなるわけではないですが。
734 名前:
デフォルトの名無しさん
投稿日: 01/12/10 18:38
>>731
Emacs Lisp でマクロを組む。
735 名前:
まあ
投稿日: 01/12/11 00:19
>>731
こんなのはどう?
736 名前:
そもさん
投稿日: 01/12/11 01:37
C言語の師と見込んで質問いたします。
マルチスレッド化するとき
スレッドセーフでないかもしれない
malloc/free(new/delete)を遣うときは
クリティカルセクションでくるむべきでしょうか?
737 名前:
デフォルトの名無しさん
投稿日: 01/12/11 01:41
じょーきょーよくわかんないけど、もう一段抽象化というか
間に1つクッションいれた設計にしたらどーかしら?
poolアロケーターとか、GCつかうこと考えてもいいんじゃない?
www.annexia.orgにある、c2libってなかなかいいよ。
738 名前:
デフォルトの名無しさん
投稿日: 01/12/11 01:47
5bit*128の配列がほしい。
どうやってつくるんだ?
739 名前:
デフォルトの名無しさん
投稿日: 01/12/11 01:47
↑もちろん、メモリ上で連続に確保だ。
740 名前:
736
投稿日: 01/12/11 01:56
>>737
ありがとうございます。
メモリ管理を集中的に行うオブジェクトを導入して
オブジェクトのミューテックスにするという理解で良いでしょうか。
なるほど・・綺麗です。
>www.annexia.orgにある、c2libってなかなかいいよ。
ありがとうございます、見てきます〜。
741 名前:
デフォルトの名無しさん
投稿日: 01/12/11 02:00
>>738
何に使うんだ?
742 名前:
デフォルトの名無しさん
投稿日: 01/12/11 02:02
スレッドセーフじゃないかもしんない環境ってもしよかったら
何なのか教えてください。
c2libはこの前つかったんですがUNIX系な環境でCでサーバー
書く目的には便利ですよ。Apacheのpoolベースの文字列、
各種コンテナ関数が独立したライブラリになったようなかんじです。
743 名前:
736
投稿日: 01/12/11 02:18
>>742
>スレッドセーフじゃないかもしんない環境って
古い libc や DOS+gcc や組み込み系のオールドな環境です
今日びスレッドセーフでない環境のほうが珍しいと思われます。(^^;
744 名前:
デフォルトの名無しさん
投稿日: 01/12/11 02:25
>>738
unsigned char array[128/8][5];
int a120 = ((array[120/8][0]>>(120%8)) << 0)
| ((array[120/8][1]>>(120%8)) << 1)
| ((array[120/8][2]>>(120%8)) << 2)
| ((array[120/8][3]>>(120%8)) << 3)
| ((array[120/8][4]>>(120%8)) << 4);
745 名前:
デフォルトの名無しさん
投稿日: 01/12/11 02:31
>>743
そうでしたか。Thanksです。気を使うことが多くて大変そうですね。
パズルといてるみたいで面白いかも?
処理効率の面で許されるならなるたけ「富豪的」にGCやプールで
ラクしたいですね。Bohem GCやc2libは使えるかどうか不明ですが、
参考にはなりそうですね。
746 名前:
736
投稿日: 01/12/11 02:50
>>745
>処理効率の面で許されるならなるたけ「富豪的」にGCやプールで
>ラクしたいですね。
はい。スレッド消滅時にはアロケートしたメモリは解決する必要が
あるのでGCに処理してもらえると楽になります。メモリ管理だけでも
(私にとって)奥深いです。
747 名前:
デフォルトの名無しさん
投稿日: 01/12/11 02:55
>>746
えっと話かわりますが、Hoardっつーのを思い出しました。
dosとか古いlibc向け用途にはダメですが、なかなか
ぐっとくる宣伝文句ですよ。
http://www.cs.utexas.edu/users/emery/hoard/
748 名前:
投稿日: 01/12/11 13:27
eの値を小数点以下100桁まで求めよ。
πの値を小数点以下100桁まで求めよ。
749 名前:
雪江
投稿日: 01/12/11 13:30
>>748
http://3.141592653589793238462643383279502884197169399375105820974944592.jp/
円周率です。どうぞ。
750 名前:
デフォルトの名無しさん
投稿日: 01/12/11 13:32
>>748
const char *PI =
"3.14159265358979323846264338327950288419716939937510"
"58209749445923078164062862089986280348253421170679";
int main()
{
puts(PI);
return 0;
}
751 名前:
デフォルトの名無しさん
投稿日: 01/12/11 15:12
構造体のところではまっているのですが、
グローバルで、
struct _data{
int id;
char szdata[32];
}data[16]:
とかやって、
void func1(){
........
........
strcpy(data[1].szdata,"hogehoge");
printf("%s\n",data[1].szdata);
return;
}
とやると、ここでのprintfではきちんと参照できるのですが、
別関数で、
void func2(){
printf("%s\n",data[1].szdata);return;}
とやると、data[1].szdataには何にも格納されていないのですが、
なにか根本的に間違ってますか?
752 名前:
デフォルトの名無しさん
投稿日: 01/12/11 15:17
>>751
間違ってるようにま見えません。
なにか他のことが原因になってるのでは?
753 名前:
デフォルトの名無しさん
投稿日: 01/12/11 15:22
>>752
ほかの参考書などをみるに、ほとんどが
void main()内で、
struct _data data[16]などと
やっているものが多く、グローバルなデータベースとして
扱っているものが見当たらず、できないのかとも思ってしまいました
・・・・なんででしょ(・・・少しいらいらします)
754 名前:
デフォルトの名無しさん
投稿日: 01/12/11 15:29
>>753
的外れかもしれませんがvolatile宣言をつけてみてはどうでしょうか?
755 名前:
Kusakabe Youichi
投稿日: 01/12/11 18:03
In article
>>753
, デフォルトの名無しさん/sage/753 wrote:
>
>>752
> ほかの参考書などをみるに、ほとんどが
> void main()内で、
> struct _data data[16]などと
どんな本を読んでいるのでしょうか?
756 名前:
Kusakabe Youichi
投稿日: 01/12/11 18:07
In article
>>751
, デフォルトの名無しさん/751 wrote:
> 構造体のところではまっているのですが、
> グローバルで、
(中略)
> なにか根本的に間違ってますか?
(1)「グローバルで」といいつつ関数定義のスコープ内で行っている。
(2)「別関数」といいつつ実はそれはべつのコンパイル単位にある。
(3)「値が格納されていない」ってのは実はコンパイルエラーがでてる。
(4) func1を呼び出す前にfunc2を呼び出していた。
(5) 実はfunc1は呼び出されていなかった。
(6) 1のつもりでlと書いていた
...
なんてことがないことを示すために
ソースをそのまま書いた方が早いと思うが。
757 名前:
731
投稿日: 01/12/11 18:39
>>732-735
レスありがとうございます。
楽せずにコピペを繰り返すことにしました。
758 名前:
人間のくず
投稿日: 01/12/11 18:39
「西暦年と月を入力するとその月の日数が表示されるようにせよ」
という問題教えてくれませんか?
if構文の問題なんですがelse if などがよく分かりません
759 名前:
初心者
投稿日: 01/12/11 18:40
すいません本当に悩んでますC初心者です。
ファイルから文字列を読み込み表示してそれをタイプ
するんですがどうしてもgets()関数を実行してくれません。
どうしてですか?
void num(){
int n=100,i;
FILE *fp;
char honbun[10],fname[5],type_moji[10];
scanf("%s",fname);
fp1=fopen(fname,"r");
if(fp1==NULL)
exit(-1);
do{
printf("%s", fgets(honbun,n,fp1));
gets(type_moji);
}
while(!strcmp(honbun,type_moji));
fclose(fp1);
}
760 名前:
初心者
投稿日: 01/12/11 18:46
line3 のFILE *fpは*fp1です。
761 名前:
デフォルトの名無しさん
投稿日: 01/12/11 18:47
>>758
うるう年の計算方法はわかりますか?
762 名前:
デフォルトの名無しさん
投稿日: 01/12/11 18:49
>>759
>char honbun[10],fname[5],type_moji[10];
いろいろあるけど、とりあえず、こうしてください。
char honbun[1024],fname[256],type_moji[1024];
763 名前:
初心者
投稿日: 01/12/11 18:52
>>762
やっぱり出来ませんです。
764 名前:
HELP!!
投稿日: 01/12/11 18:54
http://pc.2ch.net/test/read.cgi/tech/1003838158/966-967
↑
966-967
765 名前:
デフォルトの名無しさん
投稿日: 01/12/11 18:58
>>763
ファイルのオープンは成功してますか?
766 名前:
758
投稿日: 01/12/11 19:00
>761
それくらいは分かります。
月が2・4・6・9・11月でないときは31日。
月が4・6・9・11月のときは30日。
月が2のとき
西暦が100の倍数のとき400の倍数のときはうるう年で29日
そうでない場合は28日
西暦が100の倍数ではないが4の倍数のときうるう年で29日
そうでないときは28日
これをどう書いたらいいのかよく分からないんです。
767 名前:
?Sメ
投稿日: 01/12/11 19:01
>>765
ファイルはオープンできてます。
読み込んだ文字列を表示して終ってしまいます。
768 名前:
Kusakabe Youichi
投稿日: 01/12/11 19:13
In article
>>766
, 758/766 wrote:
> 西暦が100の倍数のとき400の倍数のときはうるう年で29日
> そうでない場合は28日
> 西暦が100の倍数ではないが4の倍数のときうるう年で29日
> そうでないときは28日
2行めと4行めは同じ場合では?
あと「4の倍数じゃないとき」を忘れてますね。
> これをどう書いたらいいのかよく分からないんです。
ちゃんとした入門書でも買ったらどうでしょう?
769 名前:
初心者
投稿日: 01/12/11 19:20
Kusakabe Youichi さん
<<759
お願いします。
770 名前:
デフォルトの名無しさん
投稿日: 01/12/11 19:21
>>766
もっと簡単に、
西暦が400の倍数のとき、29日
!(西暦が100の倍数) && (西暦が4の倍数)、29日
その他、28日
とすれば。
771 名前:
名無し
投稿日: 01/12/11 19:22
scanfが喰わずに残した\nを、getsが喰っただけの話では?
772 名前:
デフォルトの名無しさん
投稿日: 01/12/11 19:24
>758
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/
これでいけるかな?
ちいうか検索くらいしれ。
773 名前:
名無し
投稿日: 01/12/11 19:24
>770
西暦が400の倍数のとき、29日
西暦が100の倍数のとき、28日
西暦が4の倍数のとき、29日
その他、28日
の方が素直な感じがするけどな。
774 名前:
Kusakabe Youichi
投稿日: 01/12/11 19:25
In article
>>769
, 初心者/769 wrote:
> Kusakabe Youichi さん
> <<759
> お願いします。
ん? それは何ですか?
775 名前:
デフォルトの名無しさん
投稿日: 01/12/11 19:26
>>773
まっ、それでもいいけど(W
776 名前:
初心者
投稿日: 01/12/11 19:31
>>771
出来ました。ありがとうございました。
>> Kusakabe Youichi
759をやってもらいたかったのです。
でも出来ました。また宜しくお願いします。
777 名前:
初心者
投稿日: 01/12/11 19:41
fgetsでとってきた文字配列には改行を読み込む
ことによって終った場合 改行文字が含まれていますよね。
それを消す方法はないんですか?
778 名前:
名無し
投稿日: 01/12/11 19:43
forで回して、\nと一致すれば、\0に置き換えればいいかと。
779 名前:
デフォルトの名無しさん
投稿日: 01/12/11 19:44
ファイルオープンをエラーしたときにexit関数を使いたいのですが、
これはstdio.hには入っていない関数なんですか?
そんなもの定義されていないってエラーくらいました…。
どの本見ても他のヘッダファイルをインクルードしていないのに
この関数が当たり前のように使われているんですが。(カニチャーハンですら)
なにか私の知らないインクルード技術を使っているっていうことなんでしょうか?
780 名前:
名無し
投稿日: 01/12/11 19:49
そーゆーときは、manするとか、includeファイルのある場所でgrepしてみしょうね。
781 名前:
Kusakabe Youichi
投稿日: 01/12/11 19:49
In article
>>776
, 初心者/776 wrote:
> 出来ました。ありがとうございました。
> >> Kusakabe Youichi
> 759をやってもらいたかったのです。
なんだろう?
782 名前:
初心者
投稿日: 01/12/11 19:50
>>778
助かりました。そうですね。
783 名前:
Kusakabe Youichi
投稿日: 01/12/11 20:00
In article
>>777
, 初心者/777 wrote:
> fgetsでとってきた文字配列には改行を読み込む
> ことによって終った場合 改行文字が含まれていますよね。
> それを消す方法はないんですか?
Do you have a rubber? (英)
Do you have an eraser? (米)
172ペイジに書いてありますよ > それを消す方法は
784 名前:
仕様書無しさん
投稿日: 01/12/11 20:10
>>782
読み捨ててもいいしね。
785 名前:
Kusakabe Youichi
投稿日: 01/12/11 20:10
In article
>>779
, デフォルトの名無しさん/779 wrote:
> ファイルオープンをエラーしたときにexit関数を使いたいのですが、
> これはstdio.hには入っていない関数なんですか?
stdlib.hには入ってるのでは?
> そんなもの定義されていないってエラーくらいました…。
ほんとにエラーになったんだろうか...。
> どの本見ても他のヘッダファイルをインクルードしていないのに
> この関数が当たり前のように使われているんですが。
ちゃんとした入門書読んだら?
786 名前:
デフォルトの名無しさん
投稿日: 01/12/11 20:44
>>785
stdlib.hに関数が入っているのですか?
はつみみです
787 名前:
(・∀・)イイ
投稿日: 01/12/11 20:47
厨房ですいません。
関数プロトタイプと標準ライブラリ関数って何ですか?
788 名前:
Kusakabe Youichi
投稿日: 01/12/11 20:50
In article
>>786
, デフォルトの名無しさん/sage/786 wrote:
> stdlib.hに関数が入っているのですか?
> はつみみです
わたしもはつみみです。
789 名前:
Kusakabe Youichi
投稿日: 01/12/11 20:55
In article
>>787
, (・∀・)イイ/sage/787 wrote:
> 関数プロトタイプと標準ライブラリ関数って何ですか?
前者は82、270ペイジ、
後者は77ペイジに書いてありますよ、
790 名前:
デフォルトの名無しさん
投稿日: 01/12/11 20:58
>>788
> わたしもはつみみです。
わたしははつみみです。
791 名前:
779
投稿日: 01/12/11 21:08
>>785
ちゃんとした入門書…というのはどういうことでしょうか?
K&Rは名著だと聞いていたのですが…。(日本語版P199を参考にしました)
エラーになったことを証明しろといわれても。
VC++で
D:\VisualStudio6.0\VC98\make\Text.cpp(13) : error C2065: 'exit' : 定義されていない識別子です。
と言われているんですが…これでは証明になりませんか?
たしかにstdlib.hをインクルードすると動きます。
でも、参考書がインクルードせず載せているのが何故か、理由が知りたいのです。
792 名前:
投稿日: 01/12/11 21:10
>>790
わたしははつかねずみです。
793 名前:
投稿日: 01/12/11 21:12
K&RはC言語の本ですよ。
拡張子が.cppですからコンパイラはC++のソースとしてコンパイルします。
794 名前:
Kusakabe Youichi
投稿日: 01/12/11 21:15
In article
>>791
, 779/791 wrote:
>
>>785
> ちゃんとした入門書…というのはどういうことでしょうか?
K&Rでだめなら、ちまたにいっぱいある入門書から、ましなのをえらべという
程度の意味です。
> たしかにstdlib.hをインクルードすると動きます。
じゃあすればいいじゃん。
> でも、参考書がインクルードせず載せているのが何故か、理由が知りたいのです。
そういうのはK&Rに書いてあるので読めばわかると思うのですが、
K&Rの説明で意味がわからないなら、ほかのを読んだら? というだけのことです。
795 名前:
デフォルトの名無しさん
投稿日: 01/12/11 21:16
>>791
マジレスするとK&Rの本はあの人たちが
「おれたちゃーこういう風に使ってるんだよ」
と紹介してる本であって、間違っても入門書じゃないです。
もちろん入門書としても最高峰に位置しますが。
記述が抜けてるのは当たり前田のクラッカー って感じです。
はつみみですか?
はい、はつみみです。
796 名前:
779
投稿日: 01/12/11 21:18
>>793
VC++の使い方がまずかったということでしょうか。申し訳ありませんでした。
まだVC++を手に入れたばっかりなので、そのあたりが全然わかっていないのです。
Cプログラムを作っていたつもりが、C++プログラムを作っていたのですね。
これからVC++でCプログラムを作るための修行に逝ってきます。
797 名前:
Kusakabe Youichi
投稿日: 01/12/11 21:19
In article
>>795
, デフォルトの名無しさん/sage/795 wrote:
> マジレスするとK&Rの本はあの人たちが
> 「おれたちゃーこういう風に使ってるんだよ」
> と紹介してる本であって、間違っても入門書じゃないです。
いえ、わかりやすい解説がしてある入門書だと思いますよ。
798 名前:
779
投稿日: 01/12/11 21:20
>>795
C言語を作った人たちの本なのだから、間違った記述などまったくないという前提で読んでいました…。
記述が抜けているなんて、はつみみです(笑
799 名前:
Kusakabe Youichi
投稿日: 01/12/11 21:26
In article
>>796
, 779/796 wrote:
> まだVC++を手に入れたばっかりなので、そのあたりが全然わかっていないのです。
どうやって手に入れたのですか?
800 名前:
Kusakabe Youichi
投稿日: 01/12/11 21:27
In article
>>798
, 779/798 wrote:
>
>>795
> C言語を作った人たちの本なのだから、間違った記述などまったくないという前提で読んでいました…。
っていうか、C++はCのスーパーセットではないですよ。
> 記述が抜けているなんて、はつみみです
記述が「抜けている」とはだれもいってないのでは?
801 名前:
デフォルトの名無しさん
投稿日: 01/12/11 21:28
ハツミミデス
802 名前:
デフォルトの名無しさん
投稿日: 01/12/11 21:41
>>800
>>795 で書きましたが、書いてないことにしたいのですね? :)
803 名前:
デフォルトの名無しさん
投稿日: 01/12/12 00:30
K&R はコンピューターと同化しちゃってるやばいヲタであって、インストラクターではありません。
教え方はうんこレベルです。
もともと、スペーストラベルをやりたいがために、わざわざOSから組んじゃう基地害です。
そのOSを組むためにわざわざ新しい言語をつくっちゃうキモイ人達です。
関わらないほうが身のためです。
804 名前:
Kusakabe Youichi
投稿日: 01/12/12 00:35
In article
>>803
, デフォルトの名無しさん/803 wrote:
> K&R はコンピューターと同化しちゃってるやばいヲタであって、
> インストラクターではありません。教え方はうんこレベルです。
そう思い込めば自分が理解できなかった現実をごまかせると思ったんでしょうかね :)
カーニハンは文章もうまいし、教え方もいいですね。
他の著書でも感心してしまいます。
あとは全体の構成力とか、すごいと思います。
> もともと、スペーストラベルをやりたいがために、
> わざわざOSから組んじゃう基地害です。
それはTompsonですね。
> そのOSを組むためにわざわざ新しい言語をつくっちゃうキモイ人達です。
それはふつうでしょう。
わたしもよくやりましたし。
805 名前:
デフォルトの名無しさん
投稿日: 01/12/12 00:46
糞壁はC++が出来ない石器人 (・∀・ )カワイソウナヂヂイダ
806 名前:
デフォルトの名無しさん
投稿日: 01/12/12 00:49
kusakabeはむかつくことを言うときに使用する共用ハンドルですか?
807 名前:
Kusakabe Youichi
投稿日: 01/12/12 00:49
In article
>>805
, デフォルトの名無しさん /sage/805 wrote:
> 糞壁はC++が出来ない石器人 (・∀・ )芹何嚇挿挿伽泗
ということにしたいのですね? :)
808 名前:
デフォルトの名無しさん
投稿日: 01/12/12 00:52
>>806
そのとおり、本物はどうでもいい昔話が好きなちょっとウザイおじいちゃんです。
完全無視を心掛けましょう。 B-)
809 名前:
デフォルトの名無しさん
投稿日: 01/12/12 00:54
おい、ここで相手するなって >反応してる人 (いや真面目な話)
810 名前:
Kusakabe Youichi
投稿日: 01/12/12 00:56
In article
>>806
, デフォルトの名無しさん/806 wrote:
> kusakabeはむかつくことを言うときに使用する共用ハンドルですか?
っていうかわたしはごく普通のことしか言ってないのですが、
何が気になるんですか?
811 名前:
Kusakabe Youichi
投稿日: 01/12/12 01:00
In article
>>808
, デフォルトの名無しさん/sage/808 wrote:
>
>>806
> そのとおり、本物はどうでもいい昔話が好きなちょっとウザイおじいちゃんです。
ということにしたいのですね? :)
812 名前:
デフォルトの名無しさん
投稿日: 01/12/12 01:00
どうでも良いけど、文字化けうざいよ。
折角でしゃばって名前入れてもらったんだから
NKF32使えば? って又雑談ごめんなさい→他の人
813 名前:
デフォルトの名無しさん
投稿日: 01/12/12 01:05
糞壁キモイ!!
814 名前:
Kusakabe Youichi
投稿日: 01/12/12 01:09
In article
>>812
, デフォルトの名無しさん/sage/812 wrote:
> って又雑談ごめんなさい→他の人
本気でそう思っているなら、えらそうに書かなきゃいいのに
(実際には思ってもいないことを書いたのだろうけど)
815 名前:
Kusakabe Youichi
投稿日: 01/12/12 01:10
In article
>>812
, デフォルトの名無しさん/sage/812 wrote:
> って又雑談ごめんなさい→他の人
本気でそう思っているなら、えらそうに書かなきゃいいのに
(実際には思ってもいないことを書いたのだろうけど)
816 名前:
デフォルトの名無しさん
投稿日: 01/12/12 01:22
@echo off
817 名前:
投稿日: 01/12/12 03:34
eの値を小数点以下100桁まで求めるプログラムと
πの値を小数点以下100桁まで求めるプログラムを教えてください。
818 名前:
デフォルトの名無しさん
投稿日: 01/12/12 03:56
( ´,_ゝ`) アッソー
819 名前:
デフォルトの名無しさん
投稿日: 01/12/12 11:27
>>791
> VC++で
> D:\VisualStudio6.0\VC98\make\Text.cpp(13) : error C2065: 'exit' : 定義されていない識別子です。
> と言われているんですが…これでは証明になりませんか?
Text.cppをText.cにファイル名を変更してからコンパイルしてみろ
ちなみにbcc32だと警告はでるがコンパイルはできる
C:\temp>bcc32 text.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
text.c:
警告 W8065 text.c 3: プロトタイプ宣言のない関数 'exit' の呼び出し(関数 main )
警告 W8070 text.c 4: 関数は値を返すべき(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
また、上記ソースを-Pオプションをつけ、
C++としてコンパイルするとエラーとなる
C:\temp>bcc32 -P text.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
text.c:
エラー E2268 text.c 3: 未定義の関数 'exit' を呼び出した(関数 main() )
*** 1 errors in Compile ***
結論:CとC++は微妙に違う
820 名前:
(・∀・)イイ
投稿日: 01/12/12 15:06
厨房ですいません。
#define NDEBUG
の
NDEBUGは何をするものなんでしょうか?
821 名前:
デフォルトの名無しさん
投稿日: 01/12/12 15:12
>>820
なにもしないよ
822 名前:
デフォルトの名無しさん
投稿日: 01/12/12 15:13
>>820
デバッグ用のマクロを無効にするやつ。
詳しくは検索してちょ。
823 名前:
デフォルトの名無しさん
投稿日: 01/12/12 15:34
>>821
するだろ。
>>820
assert() を検索。
824 名前:
(・∀・)イイ
投稿日: 01/12/12 18:42
つまりasssert()を無効にするってことなんですね。
わかりました。ありがとうございます。 m(_ _)m
825 名前:
教えてくん
投稿日: 01/12/12 19:45
2つ質問があります。
1.実行ファイルのあるディレクトリの取得方法
2.隠しファイルの作り方
OSはUNIX系です。
826 名前:
デフォルトの名無しさん
投稿日: 01/12/12 19:58
>>825
移植性のある方法はない。
827 名前:
教えてくん
投稿日: 01/12/12 19:59
じゃあLinuxに限った方法でいいです。
828 名前:
デフォルトの名無しさん
投稿日: 01/12/12 19:59
>>826
条件付きコンパイルでいいじゃん。
829 名前:
デフォルトの名無しさん
投稿日: 01/12/12 19:59
>>825
> 1.実行ファイルのあるディレクトリの取得方法
一般的にはargv[0]をみてPATHを検索するとかくらいしかないが、不確実。
> 2.隠しファイルの作り方
ファイル名の先頭に.(ピリオド)をつける
830 名前:
Kusakabe Youichi
投稿日: 01/12/12 20:00
In article
>>825
, 教えてくん/825 wrote:
> 1. 実行ファイルのあるディレクトリの取得方法
man sh
> 2. 隠しファイルの作り方
man chmod
manの使い方がわからないなら、
man man
831 名前:
Kusakabe Youichi
投稿日: 01/12/12 20:04
In article
>>829
, デフォルトの名無しさん/sage/829 wrote:
> > 1. 実行ファイルのあるディレクトリの取得方法
> 一般的にはargv[0]をみてPATHを検索するとかくらいしかないが、不確実。
「実行ファイルのある」をその意味にとりましたか...。
っていうかunixだったら、そこには入ってないのでは?
832 名前:
教えてくん
投稿日: 01/12/12 20:04
>>829
ありがとうございました。
なるほど、設定ファイルの最初に.が付くのはそのためですか。
>>830
シェルではなく、C言語でコーディングする方法はありませんか?
833 名前:
デフォルトの名無しさん
投稿日: 01/12/12 20:05
>>832
system関数じゃだめなのか?
834 名前:
デフォルトの名無しさん
投稿日: 01/12/12 20:06
>>825
> 1. 実行ファイルのあるディレクトリの取得方法
man which
835 名前:
教えてくん
投稿日: 01/12/12 20:07
PATHを検索しても、シンボリックリンクの場合はだめですよね。
836 名前:
Kusakabe Youichi
投稿日: 01/12/12 20:10
In article
>>832
, 教えてくん/832 wrote:
> シェルではなく、C言語でコーディングする方法はありませんか?
man fchmod
Cの入門書の1つぐらい買いましょう。
837 名前:
教えてくん
投稿日: 01/12/12 20:13
>>836
入門書も持ってますけど、標準関数を網羅したのは高いので…。
リファレンスとして、LSI-Cのマニュアルを使っています。
だからUNIXだとわからないことが多いんですよ。
838 名前:
デフォルトの名無しさん
投稿日: 01/12/12 20:14
>>837
なら素直に従ったら?
839 名前:
デフォルトの名無しさん
投稿日: 01/12/12 20:14
>>831
> 「実行ファイルのある」をその意味にとりましたか...。
あぁ、自分自身じゃなくてか。
> っていうかunixだったら、そこには入ってないのでは?
だから不確実だって。
Linux限定なら
readlink("/prco/self/exe", buf, sizeof(buf))
で自分自身のパスも取れるけどね。
840 名前:
デフォルトの名無しさん
投稿日: 01/12/12 20:21
>>836
> man fchmod
>
> Cの入門書の1つぐらい買いましょう。
Unixの入門書じゃなくて?
841 名前:
Kusakabe Youichi
投稿日: 01/12/12 20:27
In article
>>837
, 教えてくん/837 wrote:
> 入門書も持ってますけど、標準関数を網羅したのは高いので…。
標準ともかぎりませんよ。
それに「高い」って、いくらぐらいまでなら買えるのですか?
> リファレンスとして、LSI-Cのマニュアルを使っています。
> だからUNIXだとわからないことが多いんですよ。
manならタダじゃん。
842 名前:
Kusakabe Youichi
投稿日: 01/12/12 20:27
In article
>>839
, デフォルトの名無しさん/sage/839 wrote:
>
>>831
> > 「実行ファイルのある」をその意味にとりましたか...。
>
> あぁ、自分自身じゃなくてか。
いや、どっちの意味かわたしもわからないです。
わたしはたぶんそっちじゃないと思う。
843 名前:
Kusakabe Youichi
投稿日: 01/12/12 20:30
In article
>>840
, デフォルトの名無しさん/sage/840 wrote:
>
>>836
> > man fchmod
> >
> > Cの入門書の1つぐらい買いましょう。
> Unixの入門書じゃなくて?
そっちはmanでいいのでは?
お金ないみたいだし。
844 名前:
デフォルトの名無しさん
投稿日: 01/12/12 21:58
Kusakabe氏はchmod系列の関数を出してるけど、Linuxって「隠しファイル」
という属性があるの?
845 名前:
デフォルトの名無しさん
投稿日: 01/12/13 00:35
ファイル名が . で始まるファイルはドットファイルといわれ、
DOS でいうところの隠しファイル扱い。
846 名前:
839
投稿日: 01/12/13 01:52
> readlink("/prco/self/exe", buf, sizeof(buf))
readlink("/proc/self/exe", buf, sizeof(buf))
欝山車
847 名前:
Kusakabe Youichi
投稿日: 01/12/13 02:01
In article
>>844
, デフォルトの名無しさん/sage/844 wrote:
> Kusakabe氏はchmod系列の関数を出してるけど、Linuxって「隠しファイル」
> という属性があるの?
...
そのファイルの属するディレクトリーのrとxで隠すっていう意味じゃなく?
848 名前:
デフォルトの名無しさん
投稿日: 01/12/13 02:25
ヴぁーカそりゃディレクトリの属性だろが
お前の生まれた皮革産業地域以外では
UNIXの隠しファイルはドットファイルの事指すんだよ
役立たずはとっとと消えろ、四足が
849 名前:
Kusakabe Youichi
投稿日: 01/12/13 02:29
In article
>>848
, デフォルトの名無しさん /sage/848 wrote:
> ヴぁーカそりゃディレクトリの属性だろが
そうですよ。-rのときと-xのときの違いはわかってますよね? (わかってないのかな?)
> UNIXの隠しファイルはドットファイルの事指すんだよ
はつみみです。それは隠しファイルとは呼ばないような.。
850 名前:
デフォルトの名無しさん
投稿日: 01/12/13 02:29
すごい言われようだ (^−^;
851 名前:
Kusakabe Youichi
投稿日: 01/12/13 02:32
In article
>>850
, デフォルトの名無しさん/sage/850 wrote:
> すごい言われようだ (^−^;
ですね。でも結局は自分が恥をかくだけ...っていうか
言えばいうほどあとで恥ずかしいだけでしょうけど、
でもまあ匿名ですからね。
852 名前:
デフォルトの名無しさん
投稿日: 01/12/13 03:27
825への回答としては「Linuxには(Windowsで言うような)隠しファイルは無い」
が正解なんじゃないかなあ。
853 名前:
Kusakabe Youichi
投稿日: 01/12/13 03:56
>>851
Kusakabe Youichiで間違った事書いても、所詮、偽者だって言えば済む事ですしね。
854 名前:
デフォルトの名無しさん
投稿日: 01/12/13 08:20
IRCやNetNewsでは日下部先生に太刀打ちできないカスどもが必死だな(笑)
855 名前:
デフォルトの名無しさん
投稿日: 01/12/13 08:54
お前素人だろ、糞壁通の俺から言わせてもらえばコイツが潜在能力の全てを発揮するのは
NetNewsに於いてのみだよ。
ここだと常識を超える質と量の厨房に圧倒されて中々力を発揮出来ないと思ってるね。
後コイツは頭の回転が悪いからIRCだと駄目なんだよ、実際この粘着レス考えるのにも
ある程度考える時間が居るってのが痛いね。まあその点では善人って訳よ(アヒャ
まあ俺みたいな先天的ムカツキ発言野郎にはRCじゃ遠く及ばんわけよ OK?
856 名前:
デフォルトの名無しさん
投稿日: 01/12/13 09:03
>>855
おまえはKusakabe玄人。それでいいよ。
857 名前:
デフォルトの名無しさん
投稿日: 01/12/13 09:14
kusakabe原人
858 名前:
Kusakabe Youichi
投稿日: 01/12/13 09:26
In article
>>853
, Kusakabe Youichi/853 <void@merope.pleiades.or.jp> wrote:
>
>>851
> Kusakabe Youichiで間違った事書いても、所詮、偽者だって言えば済む事ですしね。
っていうか、とくに間違ったこと書いてないからもんだいないですね。
#「事」はひらがな。
859 名前:
Kusakabe Youichi
投稿日: 01/12/13 09:27
In article
>>855
, デフォルトの名無しさん /sage/855 wrote:
> お前素人だろ、糞壁通の俺から言わせてもらえばコイツが潜在能力のすべてを
> 発揮するのはNetNewsに於いてのみだよ。
そう自分に言い聞かせると安心できるのですね :)
> ここだと常識を超える質と量の厨房に圧倒されて中々力を発揮出来ないと思ってるね。
それは「希望」ですか? :)
> 後コイツは頭の回転が悪いからIRCだと駄目なんだよ、
はつみみです ;)
860 名前:
デフォルトの名無しさん
投稿日: 01/12/13 19:26
もうここではC言語の質問を出来そうにないな…。
初心者の漏れにとっては、すごくいいスレだったのだが。
「彼のいない」C言語質問スレってある?
もしあるならそこへ行って質問したいんだけど。
861 名前:
デフォルトの名無しさん
投稿日: 01/12/13 19:35
>>860
お前がここで聞いて、誰かが答えた時点でその板はもう
「彼のいない」C言語質問スレではない。
徹底的に無視して聞くか、だめなら2ちゃんでは聞くな。
862 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:10
>>860
ホットゾヌを入れて NG ワードに Kusakabe Youichi と指定しろ(メニューバーから [ツール]
- [NGワード設定])。これでヤツの発言は自動的に透明あぼーんされる。
863 名前:
Kusakabe Youichi
投稿日: 01/12/13 20:23
In article
>>860
, デフォルトの名無しさん/860 wrote:
> もうここではC言語の質問を出来そうにないな…。
ということにしたいのですね?
864 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:25
>>863
:)←これはどうした?
865 名前:
Kusakabe Youichi
投稿日: 01/12/13 20:34
In article
>>864
, デフォルトの名無しさん/864 wrote:
>:)←これはどうした?
ということにしたいのですね? :)
866 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:34
>>863
そうです。そうしたいです。
それ以外にどの様に読めますか?
867 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:35
標準入力から英文を読み込んでファイルに保存したいのですが、
scanf("%s")でfputs関数を使うのと、scanf("%c")でfputchar関数を使うのはどちらがいいですか。
868 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:40
かゎぃぃ
869 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:42
>>867
どっちでもいいよ。
scanf()は使わないにこしたことはないけどね。
870 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:47
>>867
getchar(), putc()
そもそもCにはfputcharという標準関数は存在しないし、
putcharは標準出力に出力する。
# その機能はcatでもできるような気がするが(゚ε゚)キニシナイ
871 名前:
867
投稿日: 01/12/13 20:57
>>870
ごめんなさいです。fputc使おうと思ってました。
どっちでもいいのはわかるんですが、一般的にどちらが使われているのか
知りたくて質問しました。
あと、もしstrという配列(バッファというやつですか?)を使ってファイルに書き出そうとしたら、
要素数はどのくらいがいいんでしょうか。
やっぱりstr[256]とか2の倍数がよいのでしょうか?理由は知りませんが…。
872 名前:
デフォルトの名無しさん
投稿日: 01/12/13 20:58
糞壁が煮詰まった時に連発する
ということにしたいのですね? :)
ってサッパリ意味がわからん。
何これ、キティ語なの?
873 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:10
>>872
その質問はスレ違い。
マ板の該当スレで聞け。
874 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:09
>>871
どこくらいのバッファがいいかは、実際に動かす環境で
実験してみるしかないね。
標準入出力関数を使えば、一応バッファリングはしてくれるから、
そんなにせいいっぱいの性能を求めるんじゃなかったら、
一文字ずつ処理してもいいよ。
875 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:12
>>871
最近のマシンなら、1メガくらいとってみるとか。>バッファ
876 名前:
867
投稿日: 01/12/13 21:13
>>874
ありがとうございます。
レスを読むと、どうも文単位で読み込むのが常識みたいですね。
とりあえずscanf("%s")→putsで作成してみます。
877 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:17
>>871
最高速を狙うなら fread/fwrite を使うべし。
バッファサイズは BUFSIZ を使うのが普通かもね。
だが、普通は getc()/putc()マクロを使えば十分速いです。
fgetc()/fputc() はたぶん一番遅いっす。
878 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:19
>>872
866 に返事を書けないことでわかるが、無意味な言葉。
「ぼく、降参」程度に受け止めておけばよい。
879 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:19
>>876
scanf("%s") 使うぐらいなら、fgets() 使えって。
キケンでなおかつ遅くて良いことないよ。
880 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:20
>>876
> とりあえずscanf("%s")→putsで作成してみます。
scanfでファイルの終わりをどうやって検出しようと思っているのか
小一時間問いつめたい
# まぁ無理すればできなくはないが...
881 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:23
>>876
scanfを使うと、シロウトあつかいされますよ。
882 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:27
>>880
戻り値見ろよボケ。
883 名前:
867
投稿日: 01/12/13 21:28
>>880
ファイルの終わりはctrl+Dで出力します。(UNIX環境です)
学校の自習問題の一部ですので…。
fgets()ならEOFの時NULLが返るので扱いやすいのでしょうか。
でも、これだと先ほどのstr[256]とかしたときに256文字を越える行が
出て来ると処理できないのかと思うのですが。
たとえば260字の行が出てきたら、最後4文字が読み込めないのではないですか?
これが気になってscanfを使おうと思っていたのです。
無知でスミマセン。
884 名前:
867
投稿日: 01/12/13 21:30
>>881
ほんと素人なので、右も左もわかんないんです。
なぜscanfを使うべきではないのか、理由を教えてもらえないでしょうか?(煽りではなく、マジ質問です)
885 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:31
>>882
それでもバッファオーバランを防止できないんですよ
そこでまたブチギレですよ。
886 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:35
>>884
> でも、これだと先ほどのstr[256]とかしたときに256文字を越える行が
>出て来ると処理できないのかと思うのですが。
fgetsは2回に分けて読めばいいのですが、
scanf, getsだと256文字を越える行が出て来ると
何が起こるかわかりません。
887 名前:
867
投稿日: 01/12/13 21:38
>>886
あ、二回に分けて読むことができるんですね。
それだとどんな長い文がきても安心できます。
ありがとうございます。
fgets→fputsでやってみることにします。
888 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:40
>>884
getchar(),fputc()で一文字ずつ処理したほうが簡単かも。
889 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:42
>>888
ヤーヤーヤー
890 名前:
867
投稿日: 01/12/13 21:47
ごめんなさい、もうひとつ質問させてください。
標準入力からファイルに書き出す時は、ファイルオープン、ファイルクローズをしなくてもよいのでしょうか?
891 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:51
>>890
> 標準入力からファイルに書き出す時は、ファイルオープン、ファイルクローズをしなくてもよいのでしょうか?
標準入力、標準出力、標準エラー出力は最初からopenされていて、
プログラム終了時にcloseされていることは保証されている。
だから(゚ε゚)キニシナイ
892 名前:
867
投稿日: 01/12/13 21:55
あ、うまくできました。
レス下さった皆さん、本当にありがとうございました!
893 名前:
デフォルトの名無しさん
投稿日: 01/12/13 21:59
bankers algorithmの日本語解説があるとこって知りませんか?
894 名前:
デフォルトの名無しさん
投稿日: 01/12/13 22:00
>>885
バッファサイズ指定しろあゴルァ
895 名前:
デフォルトの名無しさん
投稿日: 01/12/14 02:10
fgetsを使ってファイルポインターを次の行の先頭に持っていっている私は阿呆ですか?
896 名前:
デフォルトの名無しさん
投稿日: 01/12/14 02:34
K&Rの演習問題解けた人は
アンサーブックの通りになっていたのですか。
いや簡単なやつなら全く同じになりますが
複雑な方はちょっと
897 名前:
Kusakabe Youichi
投稿日: 01/12/14 04:09
In article
>>880
, デフォルトの名無しさん/sage/880 wrote:
> > とりあえずscanf("%s")→putsで作成してみます。
> scanfでファイルの終わりをどうやって検出しようと思っているのか
> 小一時間問いつめたい
> # まぁ無理すればできなくはないが...
そう「無理」はしなくてもいいでは?
898 名前:
Kusakabe Youichi
投稿日: 01/12/14 04:10
In article
>>883
, 867/883 wrote:
> ファイルの終わりはctrl+Dで出力します。(UNIX環境です)
> 学校の自習問題の一部ですので…。
その授業ではどんな教科書を使っているのですか?
899 名前:
Kusakabe Youichi
投稿日: 01/12/14 04:11
In article
>>884
, 867/884 wrote:
>
>>881
> ほんと素人なので、右も左もわかんないんです。
<--こっちが右 こっちが左です-->
# 信用するかな?
> なぜscanfを使うべきではないのか、理由を教えてもらえないでしょうか?
教科書にそんなことも書いてないのですか?
900 名前:
!f84%3dm2
投稿日: 01/12/14 05:46
> 教科書にそんなことも書いてないのですか?
書いてない教科書多いと思うけど。
901 名前:
Kusakabe Youichi
投稿日: 01/12/14 09:07
In article
>>900
, !f84%3dm2/sage/900 wrote:
> > 教科書にそんなことも書いてないのですか?
>
> 書いてない教科書多いと思うけど。
いい教科書を選びましょうね。
902 名前:
ig
投稿日: 01/12/14 10:33
早速ですが、質問があります。
c言語のキャストについての質問です。
環境は、Solaris2.6&SUNのccコンパイラです。
(intを返す関数へのポインタ)を(longを返す関数へのポインタ)型に
キャストするにはどのようにコードを書けばよいのでしょうか?
---以下、詳しい説明
(longを返す関数へのポインタ)をメンバ変数に持つ構造体
を宣言しました。
仮にこの構造体を
typedef struct {
long (*function)();
} sa;
とtypedefするとします。
その後、.cファイルの中で
sa va[]={{a},{b},{c}}
てな感じで宣言したいのです。
ただし、a(),b(),c()は、intを返す関数として定義してしまって
るんですよね…
だからキャストして{警告: 初期値設定の型が一致していません}
ってな警告を黙らせたいなと思ってます。
903 名前:
デフォルトの名無しさん
投稿日: 01/12/14 10:38
>>902
typedef int (*int_func)();
sa va[]={{(int_func)a},{(int_func)b},{(int_func)c}}
動作確認してないけど、こんな感じかな?
904 名前:
ig
投稿日: 01/12/14 10:54
>>903
>>デフォルトの名無しさん
ありがとうございます。
このやり方でコンパイラは黙ってくれました。
ただ、
typedef long (*long_func)();
でしたけども。
905 名前:
デフォルトの名無しさん
投稿日: 01/12/14 10:56
>>904
>typedef long (*long_func)();
だね。スマソ。
906 名前:
デフォルトの名無しさん
投稿日: 01/12/14 11:28
ていうか、日下部がいようといまいと、2chで質問しなきゃ前に進めな
いような奴は最初から見込みないと思う(ゲラ
907 名前:
デフォルトの名無しさん
投稿日: 01/12/14 11:33
>>906
話が見えませんが…
908 名前:
Kusakabe Youichi
投稿日: 01/12/14 12:15
In article
>>902
, ig/902 wrote:
> ただし、a(),b(),c()は、intを返す関数として定義してしまってるんですよね…
> だからキャストして{警告: 初期値設定の型が一致していません}ってな警告を黙らせ
喇叭を使う :-P
909 名前:
Cハッカー日下部陽一
投稿日: 01/12/14 12:35
黄色信号が出ましたので、新スレを作りました。
早めの移行をお願いします。
http://pc.2ch.net/test/read.cgi/tech/1008300863/l50
2ちゃんねるは、
ここのサーバ
を使ってるです。。。