C言語なら、俺に聞け! <9>
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001C言語ハッカー Kusakabe Youichi
NGNGあちこちの言語に手を出したが結局極めたのは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
0002デフォルトの名無しさん
NGNGって何か2.3日真面目に仕事してたらえらい勢いですすんでるですね
0003(・∀・)イイ
NGNGそれとprintfとputcharでは使用するメモリの領域が違うとかあるんですか?
0004Kusakabe Youichi
NGNG> おれは21才、9年間プログラムを一生懸命作ってきた。
> あちこちの言語に手を出したが結局極めたのはC言語だけだった。
これってようするにおちこぼれ? (^^;
0005Kusakabe Youichi
NGNG> 疑問に思ったんですが、printfがあればputsは必要ないのではないでしょうか?
そういう人にとっては、「中華庖丁があれば、柳刃も出刃も菜切りもペティナイフ
も
いらない」んでしょうね :)
0006デフォルトの名無しさん
NGNGputs は勝手に改行する。
(2)いろんな書式指定をするならprintf が便利だが、書式指定が特にないならputsを使えばよい。
0007デフォルトの名無しさん
NGNG>それとprintfとputcharでは使用するメモリの領域が違うとかあるんですか?
混在して使っても、特に問題はないと思いますよ。
0010newbieM
NGNG移動して再度質問させていただきます。
今ある特定のディレクトリの中のファイル名を比較して
リネームというようなソフトを作ろうと思っているんです。
つまりaっていうフォルダに
abc.txt
efg.txt
・・・・
ってあったとき
abc.txtをエービーシー.txt
efg.txtをイーエフジー.txt
という風に初めからあるリストと比較してリネームしたいんです。
ですが具体的にどのように書いたらいいかがわかりません。
どの命令を組み合わせるかおしえていただけないでしょうか?
OSはwin98です。
0011newbieM
NGNG0012デフォルトの名無しさん
NGNGPerlか何かででバッチファイルを書き出せば?
0013デフォルトの名無しさん
NGNGwindowsはディレクトリを開けないんだっけ?
とりあえずdir.hにfindfirst,findnextとかあったかな
あとstdio.hのrename
windowsではwindows.hのfindfirstfile,findnextfile
あたりだな
0014(・∀・)イイ
NGNGtypedef struct TagPerson{
char *a
int d;
}Person;
と書くのと、
TagPerson{
char *a;
int d;
};
と書くのでの違いはなんなんでしょうか?
0015Kusakabe Youichi
NGNG> 今ある特定のディレクトリの中のファイル名を比較して
> リネームというようなソフトを作ろうと思っているんです。
> ですが具体的にどのように書いたらいいかがわかりません。
> どの命令を組み合わせるかおしえていただけないでしょうか?
man 5 rename
0016(・∀・)イイ
NGNG構造体の宣言で
typedef struct TagPerson{
char *a
int d;
}Person;
と書くのと、
struct TagPerson{
char *a;
int d;
};
と書くのでの違いはなんなんでしょうか?
0017Kusakabe Youichi
NGNG> >>10
> windowsはディレクトリを開けないんだっけ?
> とりあえずdir.hにfindfirst,findnextとかあったかな
Windows移植したopendirもころがってますね。
0018デフォルトの名無しさん
NGNGそのまえに typedef の意味わかってる?
0019デフォルトの名無しさん
NGNGtypedef使うと、タイプ量が減って楽。
0020(・∀・)イイ
NGNGtypedefの意味は知っています。ようは型定義でしょ?
struct TagPerson{
char *a;
int d;
};
でのグループ名はどこにいっちゃってるんでしょうか?
違いがよくわかりません。
0021デフォルトの名無しさん
NGNG「グループ名」って、なんだったっけ?
a
0022デフォルトの名無しさん
NGNGの意味は分かる?
0023Kusakabe Youichi
NGNG> 構造体の宣言で
> 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章にわかりやすく解説されています。
0024デフォルトの名無しさん
NGNGPerson person;
person.a = "name";
person.d = 0;
---------------------------
struct TagPerson person;
person.a = "name";
person.d = 0;
わかる?
0025デフォルトの名無しさん
NGNGstruct 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のも取り値はキャストしなくていいけどね。
0026デフォルトの名無しさん
NGNGこの疑問って、自分でコード書けば一発で分かる類のヤツだと思うが。
(それとも、なんか深い意味でもあるのか)
0027デフォルトの名無しさん
NGNGstruct TagPerson{
char *a;
int d;
};
で、TagPerson 型の構造体を宣言したら、後は
struct TagPerson suzuki;
で、 struct TagPerson 型の変数suzukiを宣言すればいいよ。
0028Kusakabe Youichi
NGNG> >>18
> typedefの意味は知っています。ようは型定義でしょ?
実際には型定義ではないのだが、そうだと思っていても実害はほとんどないので
最初のうちはそう覚えておけばいいかも。
> struct TagPerson{
> char *a;
> int d;
> };
> でのグループ名はどこにいっちゃってるんでしょうか?
それに「グループ名」ってなんだ? 「構造体名」のこと?
0029デフォルトの名無しさん
NGNG前の800位から凄いなちょっと
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGあんた、「適材適所」って言葉も知らないでしょ ? C 言語の前に、「日本語」
覚えたら ?
0032newbieM
NGNG#include<stdio.h>
main()
{
char old[] = "借金帳.txt", new[] = "asdcz.txt";
rename( old, new );
}
みたいに作ってみました。ディレクトリからって言うのは
調べてみたんですけどやっぱり使い方わからなくて・・・
でもこれだと200個とか変換するのに
かなり書かなきゃいけませんよね?
そこで
借金帳.txt→asdcz.txt
の部分をリスト化してそれを使ってリネームしたらいいのかなと
思ったんですが・・・そういった場合はどうすればいいんでしょうか?
0033で
NGNG0034デフォルトの名無しさん
NGNG名前リストをコンパイル時に確定してしまっていいのなら、これが楽かなぁ。
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);
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGYup. シンプルで良いでしょ? (まぁ、実際には rename の戻り値ぐらいチェック
しないとアレだが)
0037名無しだゴルァ
NGNG簡単じゃねえかゴルァ!!
誰か答えてくれたっていいじゃないかゴルァ!!
ってもう出来たからいいけど・・・
以上、愚痴でした。
0038デフォルトの名無しさん
NGNG愚痴は sage でな。
0039デフォルトの名無しさん
NGNGKusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
が用意されて いるので、ム板では書かないようにお願いします。そのような書き
込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をし てるのと
変わりません。
日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/
#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
------
0040デフォルトの名無しさん
NGNGおまえの方がよっぽどウザイよ。
風紀委員やりたいなら、学校でやってろ。
0041デフォルトの名無しさん
NGNGオマエモナー
0042(・∀・)イイ
NGNGchar *a
int d;
}Person;
で、structの部分、TagPersonの部分、Personの部分をそれぞれなんていうんですか?
なんかこの前聞いた人と違うこと言ってて・・・
0043デフォルトの名無しさん
NGNGプログラミング言語Cの付録から。
TagPerson はタグ名
Person は typedef 名
0045デフォルトの名無しさん
NGNGアレだけみんながよってたかって教えてるのに全滅かい!
0046デフォルトの名無しさん
NGNG目的語が良く分からんけど、もしかして >>34 見ると解決したりします?
0047デフォルトの名無しさん
NGNGまあそう言うな。向こうじゃ全員ではないが
たいていの人間が同意してる。
彼も良かれと思ってやってることだ。
彼のkittyさを知らないわけでもないだろ。
0048デフォルトの名無しさん
NGNGが用意されているので、荒れないようにそこでレスしてください。
http://pc.2ch.net/test/read.cgi/prog/1006918877/
#同意も反論も不要です。何かあったら↑のスレでお願いします。
糞壁はカスです。みんなで力を合わせて排除しましょう。
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG言いたいとは良く分かる(やつのせいでお気に入りのスレが荒廃したし)。
だが、基本的にスレ違いな内容だから sage で書け。
0051デフォルトの名無しさん
NGNG言いたいことは良く分かる(やつのせいでお気に入りのスレが荒廃したし)。
だが、いちいち書かれるとはっきり言って鬱陶しい。10回に一回くらいの割合で書け。
0052デフォルトの名無しさん
NGNGstruct TagPerson{
char *a;
int d;
};
で、TagPerson 型の構造体を宣言したら、後は
struct TagPerson suzuki;
で、 struct TagPerson 型の変数suzukiを宣言すればいいよ。
そしたら
*suzuki.a = 25
suzuki.d = 125
と代入できる。
0055デフォルトの名無しさん
NGNGできる。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGまた、構造体メンバのデータ位置もあまり気にしない人なのでしょうか。
0058デフォルトの名無しさん
NGNG気にしますよ。
0059デフォルトの名無しさん
NGNG人や環境による。
オレはかなりおおまか。
0060デフォルトの名無しさん
NGNG場合による。
組み込み系で、開発にPC上のエミュレータなんか使ってる場合、
バウンダリの扱いに気をつけて構造体使わないとハマる。
PCアプリ作る場合なら、ほとんど気にしない。
0061デフォルトの名無しさん
NGNGJAVAがそうです。
0062デフォルトの名無しさん
NGNG1、2、3、・・・10と並んで出る確率と
1、1、1、・・・1と全部1が出る確率は同じでしょうか?
0063デフォルトの名無しさん
NGNGそれC言語関係ないんじゃ?
確率論的には同じじゃない?
0064デフォルトの名無しさん
NGNGrand()の実装についてききたいのか?
0065デフォルトの名無しさん
NGNGC--あるよ
0066デフォルトの名無しさん
NGNGB言語?
0067デフォルトの名無しさん
NGNG検索しろ
0068デフォルトの名無しさん
NGNG検索しろって言われてもな、--←これはキーワードとして見てくれないんだよ。
0069デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=%22C--%22&hl=ja&lr=
007067
NGNGhttp://www.programmersheaven.com/search/search_all.asp
0071デフォルトの名無しさん
NGNGだめみたい・・・
多分--もキーワードとして見てくれているんだろうけど、Cと--を勝手に分けてしまっているんじゃないかな?
>>70
本当にあるんだね(笑)
面白い情報サンクス
0072newbieM
NGNG無事それを使ってできました!
今やっと250ほどのデータ打ち込み終わったところです。
ありがとうございました。
007362
NGNG過去に取得した値を調べて、同じのが無ければ決定する
方法が紹介されていましたが(どのスレだったか忘れました)。
これだと、なかなかループから抜けなくなるかもしれません。
よって、
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)
になるから・・。
0074Kusakabe Youichi
NGNG> 重複しない乱数を取得する質問で、
> 過去に取得した値を調べて、同じのが無ければ決定する
> 方法が紹介されていましたが。
どろくさい方法ですよね:)
> これだと、なかなかループから抜けなくなるかもしれません。
数が増えるとかなり遅いですね。
(現実的にはたいがい有限時間内に終わっていますが^^)
> よって、
> 0〜100の値を10個取得する場合、
> 配列A[101]にA[0]=0、A[1]=1、...と代入して、
> 最初は0〜100からランダムに一つ選び、その値を配列から削除し、配列の要素数
を-1する。
> 次は、0〜99からランダムに一つ選び、.....
> ...
> とやる方がいいかな? と思ったのです。
それって意味ないような(^^;
0075デフォルトの名無しさん
NGNG乱数の範囲が大きくなると、配列のサイズがでかくなるので、
使えないって事?
0076デフォルトの名無しさん
NGNGたとえば、2を含めないと決めたら、
A[10] = {0, 1, 3, 4, ..., 9}
を作って、並べ替えるやり方。
0077Kusakabe Youichi
NGNGwrote:
> 意味ないの意味が分からないよ。
> 乱数の範囲が大きくなると、配列のサイズがでかくなるので、
> 使えないって事?
そうじゃなくって、要件を満たしていないのでは? っていう意味。
0078デフォルトの名無しさん
NGNG0079Kusakabe Youichi
NGNGwrote:
> あらかじめ含めない値をランダムに求めておいて、並べ替えるやり方はどうです
か?
> たとえば、2を含めないと決めたら、
> A[10] = {0, 1, 3, 4, ..., 9}
> を作って、並べ替えるやり方。
ですから、その「あらかじめ含めない値をランダムに求めておいて」のところは
どうやるの? :)
0080デフォルトの名無しさん
NGNG結局何の確率が知りたいのかわかんない。
rand()関数の出目の確率なのか。
配列を使った自作関数での出目の確率なのか。
0081デフォルトの名無しさん
NGNG自分なりに考えてやって見ました。
これで何点くらい、もらえますか?
#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;
}
0082デフォルトの名無しさん
NGNGFAQには符号付き整数の右シフトは処理系依存と書いてあります。
#define RSHIFT(i,n) ((i>0?1:(-1))*(signed)(((unsigned)i)>>n))
こんな馬鹿みたいなのしか思いつかないのですが。
0083デフォルトの名無しさん
NGNGな処理系、あるいは両者のcastがうまくいかない処理系って
どんなのがありますか?規格では保証していないようですが。
0084デフォルトの名無しさん
NGNGそのやりかた、あってる?
あと、FAQの何章に書いてありました?
見つからなかった(^^;
0085デフォルトの名無しさん
NGNGいいんじゃないの?
それならcharでもintでもいけるし。たぶん。
最上位ビットを残して云々 って一瞬考えたけど
処理系にすげー依存しそうだしやめた。
0086デフォルトの名無しさん
NGNGマイナスのとき、処理がうまくいかないよ。
0087Kusakabe Youichi
NGNGIn article >>81, 81 デフォルトの名無しさん
wrote:
> for( i = 0; i < M; i++ ) {
こういうふうに「for」と「(」をはくっつける、
「(」と「)」の内側に空白を明けるっていうのは、
どこの影響だろう :)
括弧のフォントをデザインした人がかわいそうだ :)
0088デフォルトの名無しさん
NGNGでも、そういうのはアセンブラで書いたほうが確実。
処理系依存部分は、処理系依存言語に任せる。これ最強。
0089Kusakabe Youichi
NGNGwrote:
> 符号付き整数を符号維持したまま右シフトするもっとも単純な方法って?
「>>>」 :-P
> FAQには符号付き整数の右シフトは処理系依存と書いてあります。
> #define RSHIFT(i,n) ((i>0?1:(-1))*(signed)(((unsigned)i)>>n))
> こんな馬鹿みたいなのしか思いつかないのですが。
unsignedにcastするか、負の場合だけ場合分けしてmaskを使うかでしょうね。
009082
NGNGすみません。処理系依存とは書いてないですね。
ですが Q20.15(書籍版ですが)に「負の数を右シフトすることは割算と
等しくない」とあります。
また、K&R第2版の253ページに「右シフトを負の数にした場合、結果は処
理系依存」という旨の文章があります。
>>84,86
思いきりまちがえてますね。失礼しました。
(ちょっとオリジナルFAQ&JIS本見る時間が無いので夜まで失礼します)
0091デフォルトの名無しさん
NGNG右シフトしたときに処理系によって
0が入るのと符号がはいるのと両方ある
って書いてあるね
手元のだとP60だから、まあその辺
0092デフォルトの名無しさん
NGNG>>> って古いコンパイラでもつかえる?
0093デフォルトの名無しさん
NGNG60点。確率が均等でない。
ためしに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;
> }
0094Kusakabe Youichi
NGNGwrote:
> なるほど、カニチャーハンには
> 右シフトしたときに処理系によって
> 0が入るのと符号がはいるのと両方あるって書いてあるね
私なら、「そこだけJavaやる」:) も。
なんでCには「>>>」がないんだろうね。
0095Kusakabe Youichi
NGNGwrote:
> >>89
> >>> って古いコンパイラでもつかえる?
いや、新しいのでも無理では?
0096デフォルトの名無しさん
NGNG> 私なら、「そこだけJavaやる」:) も。
もうね、アホかと。馬鹿かと。
0097Kusakabe Youichi
NGNGwrote:
> >>94
> > 私なら、「そこだけJavaやる」:) も。
>
> もうね、アホかと。馬鹿かと。
そんなにうれしいですか? :)
0098デフォルトの名無しさん
NGNG0099Kusakabe Youichi
NGNGwrote:
> インラインアセンブラはあっても、インラインジャヴァはありません
あってもだれもつかわなそう:)
0100てきとう
NGNG0101てきとう
NGNGかっこがおおいのはかんべんしてちょー ぷりぷり
0102デフォルトの名無しさん
NGNG> なんでCには「>>>」がないんだろうね。
Cは実行効率至上主義だから。
CPUの都合を考えて実行効率の良い方法でやっちゃって良いよって方針だから。
符号拡張しなけりゃならんとか決めたら、
そーゆー命令のないCPU上で実行効率が落ちるから、そーゆーのを嫌って。
0103Marezo
NGNG0104デフォルトの名無しさん
NGNGそれnが2以上だと
0105味噌醤油醸造株式会社
NGNGうちのPCだと、変な結果になります(T-T)
0106デフォルトの名無しさん
NGNGうん。間違ってるもん。
0107初心者
NGNG画面上のラインとカラムを指定して、値の入力・出力ができるんでしょうか?
又、表形式で罫線をひいたりすることはできるんですか?
C言語入門の本は読んだのですが、上記の部分は載っていませんでした。
公開されているサンプルPGも調べてみたのですが、
(調査不足ならすいません)見つけることができませんでした。
教えてください。
0108デフォルトの名無しさん
NGNGncursesのようなライブラリが用意されてれば
それを使うがいいし、もしなければ
機種依存上等!てな感じで
コントロールコードやエスケープシーケンスを駆使して
描画すればいいじゃん、って感じ
0109初心者
NGNG0110デフォルトの名無しさん
NGNG絵を描きたいならそう言えよ。
0111初心者
NGNGすいません。
本には一行単位で入出力が行なわれているんですが、
画面単位で特定の項目の内容を受け取りたい場合や
画面単位で項目名や注意書きを表示する方法が
無かったんです。
で、調べていくうちグラフィック関数の名前だけを知り
それで、表作成ができるのかなと思ってたんです。
0112Kusakabe Youichi
NGNGん wrote:
> > なんでCには「>>>」がないんだろうね。
>
> Cは実行効率至上主義だから。
> CPUの都合を考えて実行効率の良い方法でやっちゃって良いよって方針だから。
> 符号拡張しなけりゃならんとか決めたら、
> そーゆー命令のないCPU上で実行効率が落ちるから、そーゆーのを嫌って。
でも、その割には1の補数とか、1命令でできないハードウェアもたまに
存在するのに、演算子はありますね。
0113デフォルトの名無しさん
NGNGたとえばどのハード?
そういうハードに出会ったこと無いので教えてほしい
0114デフォルトの名無しさん
NGNG>>82 のまんまでいいと思うけど。
0115Kusakabe Youichi
NGNGyndns.org> wrote:
> C言語で画面の制御はどんな関数を使用するんですか?
環境依存でしょう。
0116デフォルトの名無しさん
NGNG11111000 -8
(unsigned)
00001000 8
>>1
00000100 4
符号復活
11111100 -4
あー>>82のままでいいのか。納得
0117あぼーん
NGNG0118Kusakabe Youichi
NGNGん wrote:
> >>112
> たとえばどのハード?
> そういうハードに出会ったこと無いので教えてほしい
正確には「ない」のではないかもしれないが、
メルコムとか、その上のCの処理系が履くコードをみてみると、
わざわざ数命令で実現しているので、「ない」のだと思ったが。
(そのマシン純正のfortranもそうだったのでたぶん本当にハード的にないんだと思
う)
まあ、「ないようなハードがいけない」といわれればそれまでだが、
だったら「>>>」も入れてくれてもいいのになーと思ったわけです。
0119デフォルトの名無しさん
NGNG>あー>>82のままでいいのか。納得
printf("%d\n", RSHIFT(-8,1));
うちで実行すると結果はこうなります。
-2147483644
これで、いいんでしょうか?
(俺が勘違いしてるかのかな?)
0120デフォルトの名無しさん
NGNGおいおい確認もしないで発言してたのかよ
0121デフォルトの名無しさん
NGNG>>100のはどうよ?
0122デフォルトの名無しさん
NGNG0x80000004 だな
なんかヘンテコリン
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGprintf("%d\n", RSHIFT(-8,1));
で結果は
-4
だった。
0125デフォルトの名無しさん
NGNGじゃあ>>100のが正解か
もうちっと短くならんかね?
0126デフォルトの名無しさん
NGNGそれじゃあ、iが負のとき正になっちゃうんじゃないか?
0127デフォルトの名無しさん
NGNGC++は?
VBは?
誰か教えて!
0129初心者
NGNG環境依存って、例えばエクセルやアクセスで画面展開して、
必要項目をテキストファイルでCで受け取る。
というような事ですか?
0130デフォルトの名無しさん
NGNGCは二ヶ月。
C++は半年。
VBは一日。
0131about:RSHIFT
NGNG内部表現が2の補数であるという仮定に基づいていると
思いますが、この仮定って規格で保証されてましたっけ?
保証されていない場合、最上位ビットの判定は
n&~((~((unsigned)0))>>1)
でいいでしょうか?
この問題って、いかなる内部表現であれ、
2の補数表現の数を2で割ったようなビット操作を
エミュレートせよ、ってことなのかな。。
0132デフォルトの名無しさん
NGNGどんな感じでやればいいのでしょうか?
char *buf[4][8];
今は下みたいにしていて、コンパイルは通るけど
sub関数でmemcpyをして、その値を出そうとするとcoreを吐いてしまうのですが
void sub( char *[][] );
main(){
char *buf[4][8];
sub( buf );
}
sub( char buf[][8] ){
}
0133デフォルトの名無しさん
NGNGおおっと。たしかにそんな規定は無いかもしれないけど
内部表現が2の補数じゃないアーキテクチャって
どんな表現なのかな?
つーかビット演算って
0134デフォルトの名無しさん
NGNGmain(){
char *buf[4][8];
sub( buf );
}
sub( char *buf[][8] ){
}
でいいんでないの?
0135デフォルトの名無しさん
NGNG数値表現は全て正数表現っていうアーキテクチャが一部の
大型計算機にある(あった?)というのを聞いたことがある。
正か負は符号ビットで判断するんだって。
0136Kusakabe Youichi
NGNGん wrote:
> Cを習得するのにどれくらいかかった?
3日
> C++は?
3週間
> VBは?
3version:)
0137Kusakabe Youichi
NGNG> こんな感じの変数を宣言した場合、関数に渡すときって
> どんな感じでやればいいのでしょうか?
>
> char *buf[4][8];
> 今は下みたいにしていて、コンパイルは通るけど
> sub関数でmemcpyをして、その値を出そうとするとcoreを吐いてしまうのですが
>
> void sub(char *[][]);
> sub(char buf[][8])
っていうか、よくコンパイル通りますねえ
0138デフォルトの名無しさん
NGNG>Cを習得するのにどれくらいかかった?
一年くらいかかた。
COBOLをやってたから、最初は、ローカル変数とか引数ってのが
ビンとこなくて、変数は全部、ソースの先頭のところにグローバル
で使ってた。しかも仕事で。はっはっは!
0139デフォルトの名無しさん
NGNG>sub関数でmemcpyをして
なにやりたいのか,よくわからんのだけれど,
*buf[][]に、memcpyするってこと?
0140デフォルトの名無しさん
NGNGそれはageなくちゃいけないような内容なのか?
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG処理系依存じゃないか?
0143デフォルトの名無しさん
NGNG2進数表現を素直にマッピングできないような
アーキテクチャのマシンわざわざ作る奴いないだろ。
数字を左から書く文化圏でコンピュータが発明されていたなら
あったかもしれないけど。
数値にグレイコードとか使う変態マシンも理論上ありえるけど
アキュムレータが大変なことになりそう。
0144デフォルトの名無しさん
NGNGで、cpadのコンパイラパス入力すれば歓声〜〜、ですか?
0145C初心者
NGNG0146デフォルトの名無しさん
NGNG破って尻を拭かないように。
0147デフォルトの名無しさん
NGNG右にシフトしたら数が小さくなる、んじゃなくて、
シフトして数が小さくなる方向が右、なんじゃない?
0148デフォルトの名無しさん
NGNG0149C初心者
NGNGありがとうございます。
他の本でK&Rをケチョンケチョンにこき下ろしてる記述(K&RはC言語を分かりづらくしている諸悪の根源とか)
があったりするのですが、実際どうなのでしょうか・・・・。
0150デフォルトの名無しさん
NGNGCが分からないと言う奴はそもそもK&Rを読まない。
0151C初心者
NGNGオレもそう思うんですけどね。。。
K&Rをこき下ろしてる本とは、これです。↓
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=971
0152デフォルトの名無しさん
NGNGだからintは4バイトだの、void mainだのって平気で書いちゃう
K&Rには未定義な動作は未定義と書いてるだけだから、そこは別途調べる必要が有ります
0153C初心者
NGNGいや、この本はその辺はちゃんとしてます。
void main についてもわざわざ欄を設けて説明してありました。
0154デフォルトの名無しさん
NGNG0155C初心者
NGNGと、言いますと?
0156デフォルトの名無しさん
NGNGああ、あれか。K&Rの第五章を焼き直した本ね。
参考文献にK&Rが入っていないCの本は見たことない。
参考文献すら書いてない本は買うに値しない。
ちがう?
0157C初心者
NGNGそんな、オレを責められても困りますよ。
0158デフォルトの名無しさん
NGNG3分で吐き気がした。
コンピューターとは話せるが、まともな人間と普通のコミュニケーションが取れないヲタが文章を書くと、ああなるという、良い見本だった。
教育学の教科書にサンプルとして採用しようと思った。
もちろん、ダメな解説例として。
人にわかりやすく物事を教えるには、それなりに「教えるスキル」が必要だ。
カニチャーハンは、その辺がまったくわかっていない。
K&Rは、最後の一冊として読むべきだ。最初に読んではいけないし、勉強の途中で読んでもいけない。
ほとんど全部他の本を読み尽くして、C++に逝く直前に読むと良い。
0159C初心者
NGNGワロタ!
0160C初心者
NGNG0161デフォルトの名無しさん
NGNG> うーん、K&R買わなければ良かったかなあ・・・(鬱
買っといて損はない。
K&Rが理解できればCの文法は理解したと思って良い。
あと、K&Rは規格書やマニュアルに近い書き方なので、
慣れていない人が読むと>>158のような感想を持つでしょう。
0162デフォルトの名無しさん
NGNGK&R はあくまで「Cの入門書」であって「プログラミングの入門書」でも教科書でも
ないからね。
基本的なプログラミング技術が身についていない人間が読むのは、ちょっと辛い。
身近に質問できる先輩とかいれば、どうにかなるけど。
0163C初心者
NGNGなるほど・・・。
「解説書」ではなくて「規格書」「Cの定義文」みたいに接すれば有用だということですね?
0165デフォルトの名無しさん
NGNG0166C初心者
NGNGその話はよく聞きますね。
0167デフォルトの名無しさん
NGNGあれって許可いるのか?
0168C初心者
NGNG0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGいや、引用でなくて、丸ごと一冊訳そうとたくらんどるんだけど。
0172デフォルトの名無しさん
NGNGどっかスレ作って、そこでガンガン訳しちゃうってのはどう?
添削も出来るし。
まーこの際著作権は無視だな、ムシ
0173デフォルトの名無しさん
NGNGなんならオレがその役をかってでてもいい
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG役所が金出してくれればいいんだが。
0176デフォルトの名無しさん
NGNGこきおろしている、というより「時代遅れな記述がある」と言っているんじゃ・・・
俺にはそう読めましたが。
(まあ、たしかにどうでもいいあげあしとりもありますが)
0177Marezo
NGNG勘違いしていた(^^;
#define RSHIFT(i,n) i<0 ? (signed)!(!(unsigned)i >> n) : i >> n;
確か「!」はnotだったはず。
0178デフォルトの名無しさん
NGNGつーか負の表現に2の補数を使ってるところなら
>>100で完了してるんだけど、どうよ?
0179デフォルトの名無しさん
NGNGstatic void hoge();
void hoge();
returnした時に挙動が変わるようなのですが・・・・
よろしくお願いします。
0180デフォルトの名無しさん
NGNG外部から参照できる(static なし)かできないかの違い(static)
0181デフォルトの名無しさん
NGNGstatic にすると同一の翻訳単位 (厳密に言うと #include とかあるからアレなんだが、
基本的には同じ *.c に書いてある範囲)からしか呼び出せない。static にしないと、
外部からでも呼び出せる。
> returnした時に挙動が変わるようなのですが・・・・
それは static 変数と勘違いしてないか?
018282
NGNGなんだかお題の書き方が曖昧だったみたいですんません
割算をしたいという趣旨ではなくて、最上位ビット以外をシフトしたい
ということでした。てことでいろいろヒントをいただいた結果こんなん
になりました。
#define MASK ((~(unsigned)0)>>1)
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|(((unsigned)i&MASK)>>n))
簡単にならんかな・・・
0183179
NGNGreturnした時の挙動というのは具体的に言うとこういう事です。
static void alarm(int);
int connect(int a, int b)
{
...A
signal(SIGALRM, alarm);
...B
}
alarm(int signo)
{
return;
}
とあった時SIGALRMシグナルが呼び出されてalarm関数に飛んだ後
returnで一気にconnectへ帰って...Bの領域を実行して無いようなのですが・・・
アドバイスよろしくお願いします。
018482
NGNG018582
NGNG0186デフォルトの名無しさん
NGNGOSは
0187デフォルトの名無しさん
NGNG0188説明より手を動かした方が理解できるだろ
NGNGまず下記のような2つのファイルを作って
% cc -o main a.c b.c
としろ。エラーが出るだろ。
次にstaticを除いて同じことをしてみろ。エラーが出ないだろ。
外から参照できないってのはつまりこういうこと。
a.c
---
extern void func();
int main() {
func();
}
---
b.c
---
static void func () {
}
---
0189179
NGNGstatic宣言するメリットというのは外から参照できないというのに尽きるのでしょうか?
0190デフォルトの名無しさん
NGNG#define RSHIFT(i,n) (signed)(((unsigned)i&MASK)|(((unsigned)i)>>n))
これダメかな
(unsigned)→(signed)が処理系依存なんで
厳密にはどうしようもない気もしますが…。
0191179
NGNGhttp://www4.big.or.jp/~kanai/data/unpv12e/lib/connect_timeo.c
の
connect_alarm(int signo)
{
return; /* just interrupt the connect() */
}
のreturnの役割がわからないです。
これはただ呼び出し元に戻るだけではないのでしょうか?
0192デフォルトの名無しさん
NGNGんー…。これってさ alarm() でエラーハンドラに飛ぶ仕掛けが
あるから、ダミーのやつ入れて意図的に処理しないように
してるんじゃないかな。全体見てないのでよくわかりませんけどね…。
0193デフォルトの名無しさん
NGNGそれはstaticをつけるかどうかによって挙動が変化してるのか?
>>191
returnに意味はないでしょう。
0194デフォルトの名無しさん
NGNG負の数を右シフトしたとき、最上位以外の左には、0を詰めたいの?
0195Kusakabe Youichi
NGNG> K&Rを初めて購入したのですが、この本を使う上での注意点とかありますか?
訳本の場合は「誤植に注意」かな。
不審な箇所があったら原書と見比べよう。
0196Kusakabe Youichi
NGNG> 他の本でK&Rをケチョンケチョンにこき下ろしてる記述
(K&RはC言語を分かりづらくしている諸悪の根源とか)
> があったりするのですが、実際どうなのでしょうか
デマですね。その本を「わかりやすいいい本だ」と薦められて、
それなのにその本を理解できなかった馬鹿が、
「自分の理解力に問題がある」ことを認めたくないがために、
事実のほうをねじ曲げて「わかりにくい本だ」ということにしようとしたのでしょう。
0197デフォルトの名無しさん
NGNG0198Kusakabe Youichi
NGNG> >>152
> いや、この本はその辺はちゃんとしてます。
> void main についてもわざわざ欄を設けて説明してありました。
どう書いてありましたか? :)
0199Kusakabe Youichi
NGNG> 人にわかりやすく物事を教えるには、それなりに「教えるスキル」が必要だ。
カーニハン氏はその点もうしぶんないですね。
0200Kusakabe Youichi
NGNG> >>158
> K&R はあくまで「Cの入門書(I�C任△辰董屮廛蹈哀薀潺鵐阿瞭�臀(I�C任盒飢塀颪任發覆い�C蕕諭」
え? よくできた「入門書」だと思いますけどねえ。
0201Kusakabe Youichi
NGNG> >>161
> なるほど・・・。
> 「解説書」ではなくて「規格書」「Cの定義文」みたいに接すれば有用だということですね?
厳密性に欠けるので「規格書」や「定義」ではないですね。
「Cの入門書」「解説書」っていうのが正しい。
0202Kusakabe Youichi
NGNG> つか、日本語版訳が悪いから止めとけってばよ
そうですね誤訳や誤植が多いです。
英語読めるひとはなるべく原書を読みましょう。
0203Kusakabe Youichi
NGNG> じゃー漏れがもっとわかりやすく翻訳しなおしてやろうか?
> あれって許可いるのか?
翻訳するのはかまわないですが、それを出版するには翻訳権の問題が
ありますね > 2次著作を出版
0204Kusakabe Youichi
NGNG> 引用には許可は不要です。翻訳してもOK.
こういうデマを本気にしないようにね。
0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGint 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は真の乱数を返すとします。
ここでは関数の実装方法による出目の確率は問題にしません。
0207デフォルトの名無しさん
NGNGK&Rは開発者なので、K&R本が良い悪いとか教育者として
どうこういう話は俺もなんだか的外れな印象を受けますね。
0208あぼーん
NGNG0209デフォルトの名無しさん
NGNGunsignedが処理系依存なら、abs()使えば?
0210デフォルトの名無しさん
NGNG第三十二条 公表された著作物は、引用して利用することができる。
この場合において、その引用は、公正な慣行に合致するものであり、
かつ、報道、批評、研究その他の引用の目的上正当な範囲内で行なわれる
ものでなければならない
0211デフォルトの名無しさん
NGNGそれなのにその本は実は悪書だと理解していない馬鹿が、
「自分の理解力に問題がある」ことを認めたくないがために、
事実のほうをねじ曲げて「わかりやすい本だ」ということにしようとしたのでしょう。
0212デフォルトの名無しさん
NGNGんー… abs() をどう使うのか思いつかない。
おしえて。
0213デフォルトの名無しさん
NGNG#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|((abs(i)&MASK)>>n))
では、だめか?
0214デフォルトの名無しさん
NGNGわかりやすかったからわかりやすいというのではなく
わかりやすくなかったのにわかりやすかったといわないと
わからないばかだとおもわれるから
わかりやすいといっているわけですよ
0215Kusakabe Youichi
NGNG> 引き続きレスありがとうございます。
> static宣言するメリットというのは外から参照できないというのに尽きるのでしょうか?
178ペイジと254ペイジに解説してありますよ。
0216デフォルトの名無しさん
NGNGなるほどー。1の補数と2の補数でもOK?
ビットパターンが変わりそうなんだけど…
0217206
NGNGこれも一つ値が決まると、次は99種類の値から選ぶ事になるので、
確率は同じ。
>>206のやりかたで問題ない。
求める個数が少なく、randomの範囲が大きい場合、配列の大きさがもったいないので、
その時は日下部法を使えばいいかな。
求める個数とrandomの範囲が大きく、かつ近い場合は206のやり方がいい。
求める個数が多い(=配列Bが大きい)ので配列Aの大きさは問題無し。
0219Kusakabe Youichi
NGNG> はじまったか。
>
> K&Rは開発者なので、K&R本が良い悪いとか教育者として
> どうこういう話は俺もなんだか的外れな印象を受けますね。
っていうかカーニハンは教え方上手いですよね。
0220Kusakabe Youichi
NGNG> おこずかいの欲しい女の子募集!!
づ
0221Kusakabe Youichi
NGNG> >>190
> unsignedが処理系依存なら、abs()使えば?
...
0222デフォルトの名無しさん
NGNG(unsigned char)(-1)
1 ? 255 ?
0223デフォルトの名無しさん
NGNG俺もよくわからんです。(w
算術シフトみたいなのをイメージしたんだけど、負数の表現方法で
ビットパターンそのものが違うから、最上位ビット以外シフトに
どういう意味があるのか俺はよくわかってなかったりする。(w
0224206
NGNG0225デフォルトの名無しさん
NGNG本当は規格書を参照した方がいいのでしょうけど。。
なお、K&Rの正誤表なるものがベクターにありました。
内容は未確認ですが。。
0226デフォルトの名無しさん
NGNGけどまだちょっと違うとの声
0227デフォルトの名無しさん
NGNG0228Kusakabe Youichi
NGNG> 個人的にはK&Rは辞書代わりに使ってました(ます)。
> 本当は規格書を参照した方がいいのでしょうけど。。
主にどんなことを調べていましたか?
演算子の結合の優先順序?
0229デフォルトの名無しさん
NGNG1 の名前はネタ。本物の Kusakabe Youichi は煽りのプロ、かつスレ違いな話を
age で延々と続けるので、相手にしないことが推奨されてます。また騙りも多く、
Kusakabe Youichi 名義の人間を相手にした結果、荒廃したスレッドは数知れず。
ただし、本物の Kusakabe Youichi は煽りのプロとはいえ、技術的には「それなり
に分かってる」人なので、まっとうな返事をもらったら感謝しておきましょう。スレ
違いなツッコミを受けたら、はらわたが煮え繰り返っても相手にせず無視しましょ
う。
#スレを読んでる人には、どっちがバカかは論争せずとも分かってます。
Kusakabe Youichi について、これ以上の詳しいことはプログラマー板の自治スレ
や隔離スレを読んで悟ってください。
0230206
NGNGごめんなさい、あやまります。
0231Kusakabe Youichi
NGNG> 私が無視されるのって、もしかして日下部さんの痛い所を突いたからですか?
え、どの発言ですか? > 無視された
0233デフォルトの名無しさん
NGNG0234Kusakabe Youichi
NGNG0235デフォルトの名無しさん
NGNG痛い/痛くないは技術的な話から逸れそうだから、続きはこっちでやれば?
日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/
0236デフォルトの名無しさん
NGNGmain()
{
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してアドレスが変わる可能性が有るから、最適化出来ないのかなぁ・・・
とか勝手に思ってるんですが、
と言うかこのやり方馬鹿ですか? (汗
0237デフォルトの名無しさん
NGNGchar *chkptr;
chkptr = buf + sizeof(char)*(size - 3);
です 、、
0238デフォルトの名無しさん
NGNGどういう書き方をすると、速くなるかは実際にコンパイルするまで
分かりません。
工夫した書き方で、逆に遅くなることもあります。
その例だと、どちらが速くなっても、わずかな差しかないと
思うので、自分が「素直」だと思う書き方が良いと思いますよ。
スピード重要で少しでも早くしたいときは、ソースで判断せずに、
実際に実行させて、計測してください。
0239デフォルトの名無しさん
NGNG>chkptr = buf + sizeof(char)*(size - 3);
この sizeof はいりません。
charだから動いているけど、それ以外の型だと、このコードは
正常にうごきませんね。
0240デフォルトの名無しさん
NGNG最適化を語るのは、それからの話だ。
0241236
NGNG>>238
気にする程でも無いですか、そう言われると気にならなくなって来ました
当分は-O3様にお任せしますです。
>>239
ぎゃっ、すいません。キャストか良く分かっていないです。。。
>>240
戻り値はこの場合だとbufですよね、、でもif(buf=fgets(buf,size,fp))とか
すると開放する時に if(buf);free(buf); って出来なくなるし。。。
取り合えず変なやり方と言う事ですよね。うーん
0242236
NGNGキャストか → キャストとか
if(buf=fgets(buf,size,fp)) → if((buf=fgets(buf,size,fp))!=NULL)
逝ってきます
0243Kusakabe Youichi
NGNG> 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 じゃなくて?
0244Kusakabe Youichi
NGNG> まず判定方法を改めろ。fgetsの返値を使うとかな。
どう使うのでしょうか? :)
0245Kusakabe Youichi
NGNG> > memset(buf,'\0',size);/* 塗りつぶしておきます */
> 何の意味があるの? (末尾だけじゃだめなの?)
っていうか末尾の1つ前か
> > この[size-3]の添え字計算はマズイと言うか最適化されませんか?
> > char *chkptr = size - 3;として
>
> なぜ-3なの? -1 じゃなくて?
-2かな。
0246236
NGNG>意味のない初期化ですね。
はい、厨房です、bufに付いては後でfreeする時に怖いので(勘違い?)(鬱
>変数に入れなくてもいいのでは?
/* 領域を拡張して読み直します */ の部分が
bufExpansion(&buf,&size,fp);とかになっとります(鬱
>じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?
力の限り(鬱
>なぜ-3なの? -1 じゃなくて?
end of string\n\0というパターンを考えました(鬱
何かスレのレベル下げまくりみたいなんで山に帰ります。
謝謝了。
0247Kusakabe Youichi
NGNG> > 意味のない初期化ですね。
> はい、厨房です、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ではない」のだからいいのでは?
0248デフォルトの名無しさん
NGNGfree(baz);
で破棄した時にbazにゴミが入ってたらヤバイっつってんだろ
魔板でレスするなって怒られてるんだけどな B -)
0249Kusakabe Youichi
NGNG> if(baz)
> free(baz);
> で破棄した時にbazにゴミが入ってたらヤバイっつってんだろ
この馬鹿理解してないみたい(^^;
つまり、ifでNULLだけどけてみたり、freeでゴミが入ってるかもしれない
なんていうコードの書き方ってのは「場当たり的すぎ」だという意味です。
(「予防的プログラミング」に似ているがその実が違う)
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGアホが書いたランダム爆撃コードを良く退治させてもらったもんだが
多分アンタの本読んだんだろね p
素人には難しいかもしれないが、コーダーってのは色んなレベルの寄せ集め
なんだよ、もし話が理解出来なくて気を悪くしたならすまないね。
0252Kusakabe Youichi
NGNG> つくづくこのオッサンは口だけだと思ってしまう
「思ってしまう」->「思いたい」ですかね。
> アホが書いたランダム爆撃コードを良く退治させてもらったもんだが
> 多分アンタの本読んだんだろね p
11月12日発売でした。
> 素人には難しいかもしれないが、コーダーってのは色んなレベルの
とか偉そうに言うやつにかぎってしょーもないコード書くのよね:)
0253デフォルトの名無しさん
NGNG保証されているはず。
どっかのタコな実装は知らん。
0254デフォルトの名無しさん
NGNGそりゃ良かったよ、色んな意味でね
>とか偉そうに言うやつにかぎってしょーもないコード書くのよね:)
俺やお前を含めてね。
0255Kusakabe Youichi
NGNG> 少なくともANSIの規格上ではfree(NULL)は何も起きないことが保証されているはず。
あれ? そうでしたっけ。
調べてみます。
> どっかのタコな実装は知らん。
ベル研に言ってください :) > どっかの
0256Kusakabe Youichi
NGNG> > 11月12日発売でした。
> そりゃ良かったよ、色んな意味でね
時系列的因果関係は合ってますか?
> > とか偉そうに言うやつにかぎってしょーもないコード書くのよね
> 俺やお前を含めてね。
無理に私までいっしょにしなくてもいいですよ :)
0257デフォルトの名無しさん
NGNG0258ヒツキー@プロゴルァミング
NGNG騙されてる>>257みたいなのも多いなぁ。
0259Kusakabe Youichi
NGNG> Kusakabeは無視。
とかいちいち書くやつ :)
0261Kusakabe Youichi
NGNG> > 少なくとも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; のように初期化しておくことにも言えます。
0262デフォルトの名無しさん
NGNG書ければすむ話なんですがね。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)
0263Kusakabe Youichi
NGNG> まぁ 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を入れておかないと危険」なような書き方自体に問題がある
わけです。
0264デフォルトの名無しさん
NGNGfree(hoge)hoge=NULL; なんだけどなあ・・・
つまりhogeにはまともなポインタかNULL以外入って欲しく無いし
それでバグ取りがやり易かったり超実用的なんだけど・・・
こんな事言うと「そんなヘボい構造自体が」とか言われそうだけど
私が書いたんじゃないんだよなあ
って言うと「そもそもそう言う設計自体が」って来るんだろねえ (^∀^)アハハッ
0265Kusakabe Youichi
NGNG> if(hoge)free(hoge); と言うより
> free(hoge)hoge=NULL; なんだけどなあ
なるほどfreeしたあとですか?
だったら、宣言時だけじゃあだめですね。
(freeしたたびに代入ですかー)
> つまりhogeにはまともなポインタかNULL以外入って欲しく無いし
でもそれはfreeに渡す変数だけじゃなく、すべてのポインターに関して
言えるのでは?
(ある時点でその指しているものが無意味に成ってしまうポインター変数なんて
いくらでもありそうですし)
> それでバグ取りがやり易かったり超実用的なんだけど
ですからそれは「本末転倒」ってやつですね。
「わかりにくいプログラム」を「わかりやすく直す」ことをせずに、
デバッグしやすくする方法って感じですね。
0266デフォルトの名無しさん
NGNG構造体ポインタはちょっと、、とか平気で言っちゃう人もプロジェクトには居る訳ですね
嫌あなたが超絶天才的C言語完全体なのはわかりますがね。
実際そう言う人とやってくのが仕事な訳ですよ、ええ。
そう言う人相手に「for使うならカウンタの初期化は無駄です」なんて
教えると会社潰れる位のつけ払う事になりますわ、多分
0267デフォルトの名無しさん
NGNG0268Kusakabe Youichi
NGNG> とにかくこの人は言ってる事がかなりヤバイです、いやホント。
「ということにしたい」のですね? :)
> 構造体ポインタはちょっと、、とか平気で言っちゃう人もプロジェクトには居る訳ですね
意味がわからないですが...
「構造体ポインタは使わないほうがいい」という人がプロジェクトにいたりする
っていう意味ですか?
っていうか、そんな人が平気で存在できるようなプロジェクトや会社に
自分がいるっていう事実はどう認識しているのですか? :)
> 実際そう言う人とやってくのが仕事な訳ですよ、
自分のあまりにも情けない環境を「世の中のごくふつう」だと
思い込みたいからといって、事実をねじまげるには無理がありますね :)
0269Kusakabe Youichi
NGNG> 糞壁はその存在自体が壮大なネタだからね
こういうのがいっぱい暴れて会話の邪魔をするところなんですね。
2chって。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG氏んだです (´ー`)
0272Kusakabe Youichi
NGNG> Kusakabe Youichi先生は4徹でデバッグとかした事有りますか?
それって何ですか? > 4徹
0273デフォルトの名無しさん
NGNGえっネタじゃ無いんですか? (^^;
0274iku
NGNGあ い うのデータを
CSVにあ,い,うという形で出力する方法を知りたいのですが,
教えて頂けないでしょうか?
それともう一つ,
もしその出力するCSV1にデータが存在していた場合,
初期化してからデータ出力をしたいのですが,
どうすれば初期化できるのでしょうか?
よろしくお願いします。m(_ _)m
0275Kusakabe Youichi
NGNG> こんにちは。ikuと言います。
> あ い うのデータを
> CSVにあ,い,うという形で出力する方法を知りたいのですが,
> 教えて頂けないでしょうか?
ふつうに書けばいいのでは?
でも文字列は全部「"」で括ってたような > ふつうのCSV
> それともう一つ,
> もしその出力するCSV1にデータが存在していた場合,
> 初期化してからデータ出力をしたいのですが,
man fopen
0277デフォルトの名無しさん
NGNGここでしつこく語ってるかと言うと、fjでは突っ込まれるのが怖くて
発言できなかったから。
0278デフォルトの名無しさん
NGNG要するに、日本語を含んだスペース区切りのCSVを
コンマ区切りにCSVに直した言ってことか?
普通にスペースをコンマにReplaceすりゃいいじゃん。
C言語でやると漢字の2バイト目にスペースと同じ文字コードが
含まれてる可能性があって、分岐がめんどくさくなるような。
0279Kusakabe Youichi
NGNG> なんで、こいつは、fjでほとんど発言しなかったfree()問題を
> ここでしつこく語ってるかと言うと、
はつみみですね。fjで何度か話題になったのは、
「exitするときにいちいちfreeコードは意味があるか?」という
話題なので、全然ちがう話題ですね。
> fjでは突っ込まれるのが怖くて発言できなかったから。
ということにしたいわけですね? :)
(それで私の発言は見なかったことにしてるのですね^^)
0280デフォルトの名無しさん
NGNGCODE COMPLETE 読みましょう。
私は dangling pointer 嫌いです。ただ C だと全面的に dangling pointer
を追放するのは難しい(いちいち NULL を自分で代入しないとならなず、現実
的ではない)から、諦めてますけど。
C++ を使う場合には「所有する」オブジェクトに関しては std::auto_ptr な
どのスマートポインタを多用しますし、また関連を張るために使うポインタに
ついては NULL or 意味のあるポインタ値が常に保たれるように注意します。
0281名無し
NGNGvisualC++でそのプログラムを
見るにはどうしたらいいのんですか?
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG> Cでもできますね > ブロックの先頭以外に変数宣言を書く。
できませんよ。途中にブロックを作ってその先頭に変数宣言を
書くことはできますが。
0284Kusakabe Youichi
NGNG> >>263
> > Cでもできますね > ブロックの先頭以外に変数宣言を書く。
>
> できませんよ。
いえできますよ。
> 途中にブロックを作ってその先頭に変数宣言を書くことはできますが。
そりゃもちろんできますね。でもそれは「ブロックの先頭」ですね。
逆アセンブルすればいい。MSDNをよく調べろ。
つーか、コンパイルがなんであるか良く分かってないだろ。
0286デフォルトの名無しさん
NGNGC99からはブロックの途中から変数宣言できるようになったんですか?
ANSI X3.159 の古い規格しか知らない物で。
0288デフォルトの名無しさん
NGNGC99からできるようになったのよ。
http://std.dkuug.dk/JTC1/SC22/WG14/ 参照のこと。
厳密じゃなくてもいいなら http://seclan.dll.jp/ あたりもお手軽かも。
# 単にCと言った場合は混乱するなあ。規格の趣旨から言うと現行規格は
# ISO/IEC 9899:1999のみなんだけどさ。
0289Kusakabe Youichi
NGNG> C99からはブロックの途中から変数宣言できるようになったんですか?
なってますよ。
for (int i = 0; ... みたいなのもできるし。
複合定数も、指定付き初期化も。
0290デフォルトの名無しさん
NGNGC99サポートしたコンパイラなんてまだ一般的ではないんだから、一言
「C99では」と前置きしとけ。
0291Kusakabe Youichi
NGNG> ここはニュースグループじゃないんだから(Iyぢ無駄な引用はするなボケ。
また「ニュースグループ」とかわけのわからないこと言うやつがいた :)
0292Kusakabe Youichi
NGNG> # 単にCと言った場合は混乱するなあ。
混乱しないでしょ? override...じゃないや、えっとようするに
新しいのが古いのを上書きしてるんだし。
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNGJIS があるやん。
0295288
NGNG> 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を読んだ感想です。
C99に対応していないgcc2.95.3を使っている俺としては、
C99でしか使えないことは明記して貰うとありがたい。
0297Kusakabe Youichi
NGNG> > 新しいのが古いのを上書きしてるんだし。
> 288でもそのように書いたつもりですが。
> ANSI X3.159-1989、ISO/IEC 9899:1990、ISO/IEC 9899:1999のそれぞれで仕様が
> 異なる場合はC89、C90、C99と明記することが多くありません?
うーん、C90っていう言い方はあまり聞かないですね。
C89でまとめちゃってる気がする。
> (いまだにC9Xと呼んでる人もいるけど)
C99をそう呼ぶひとってのは、確実にC90とはいいそうにないですね。
0298288
NGNG> うーん、C90っていう言い方はあまり聞かないですね。
ほとんど一緒ですから。
> C99をそう呼ぶひとってのは、確実にC90とはいいそうにないですね。
そんなことないですよ。C99がdraftのころは自分のことをC9Xと呼びつつ、
ANSIを参照するときはC89、ISOを参照するとき(めったにないけど)はC90
と書いてました。その時のくせがまだ抜けない人もいるみたいです。
0299デフォルトの名無しさん
NGNGネタにマジレスですか?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGそれがC言語と関係あるのか? 荒らしたいならプログラマー板の隔離スレに
いけ、ヴァカ。
0302namber
NGNGint **a;
としたときの動的変数のメモリ確保の方法がわかりません。
例えば、
int a[3][3];
と同じ大きさのメモリを確保する場合どうしたらよいでしょう。
どうぞよろしくおねがいします。
0303デフォルトの名無しさん
NGNGint a[3][3] の置き換えならば、
int **a; ではなくて、
int (*a)[3]; であろう。
0304デフォルトの名無しさん
NGNGC FAQ見れ。
0306デフォルトの名無しさん
NGNGprintf("%s", s);
printf(s);
これって実行結果同じ?
0307デフォルトの名無しさん
NGNG文字列に代入文字があると変わる。
だからprintf(s)は危険。
0308デフォルトの名無しさん
NGNGもう
「K&R読め」
の時代でなくて
「C99の規格書読め」
という時代なの?
0309307
NGNGとりあえず、printf関数の第一引数は文字列定数にするべき。
#include <stdio.h>
main()
{
char *s;
s = "%%";
printf("%s", s);
printf("\n");
printf(s);
printf("\n");
}
--------------
%%
%
こんなふうに、、、
0311デフォルトの名無しさん
NGNGそれはまだいいよ。
#include <stdio.h>
main()
{
char *s;
s="%d";/* %sとでもよい */
printf(s);
}
----------------------
こういうことをすると、必要な引数が足りなくて、無いものを参照しようとして実行時にエラーになると思う。
0312311
NGNG○ /* %sとかでもよい */
0313デフォルトの名無しさん
NGNGよし、盛大に騙ってやろう。
まず、C99では以下のような関数定義が可能になった。
もちろん今までのようなold styleも許される。
int
main(argc, argv)
int argc;
char **argv;
{ return 0; }
0314デフォルトの名無しさん
NGNG変数宣言をカーリーブランケットの外に出せるってこと?
0315デフォルトの名無しさん
NGNG∩
| |
| |
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!その場合プロトタイプ宣言はどうなりますか!
/ / \___________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0316C99ならここを読め
NGNGhttp://seclan.s5.xrea.com/c99d/
デニス・リッチー氏インタビュー――CとUNIXの開発者が見る未来
http://www.idg.co.jp/lwonline/backnumber/200101/20010112_01_report.html
0317デフォルトの名無しさん
NGNG・・・
一応突っ込んどくね。
0318デフォルトの名無しさん
NGNGこれが2chでいう
「ネタニマジレスカコワルイ」
という奴なのか・・・?
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGプロトタイプ宣言など必要ない。
型の正当性はプログラマが保証すればよい。
あと、予約語にはentryというのが追加された。
これはエントリポイントを生成し、関数の途中から処理を実行できる。
例えば
int neta(int a)
{
a++;
entry dayo:
a++:
return a;
}
gomen = neta(2);の場合、gomen:4となるが、
gomen = neta.dayo(2)の場合、gomen:3となる。
0321デフォルトの名無しさん
NGNG. ∩
|::|
|::|
∧_∧ |::| ./ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(:∵´Α`)/:/< 先生!僕は先生しんじてます!
/:∵:∵:∵:/ \____________
/::/|:∵:∵:∵/
__|::| .|:∵:∵:∵|
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0322デフォルトの名無しさん
NGNGIn 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:
> 清水国語辞典
> じょうきょう【上京】 ジヤウキヤウ[名][自サ]地方から都に出ること‥豕・惱个襪海函
>
> 誤植ですね。
民明書房国語辞典 じょうきょう【上京】 [名][自サ]地方から都に出ること。京都へ出ること。
0323デフォルトの名無しさん
NGNGprintf("%s",str);
と書きますが、HTML的には
printf("%s%",str);
と前と後ろと囲ってもらわないと気持ち悪いです。
0324デフォルトの名無しさん
NGNGその辞書そのものが捏造かもしらんじゃん。
コンパイラー トロジャンという言葉を知らんのか。
0325デフォルトの名無しさん
NGNG厨房相手に反応すんのやめようよ(・∀・)
0326デフォルトの名無しさん
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)< 辞典はやっぱり民明書房だね♪
( ) \_______
| | |
(__)_)
0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNGどうしようもないレスで age るな、バカ。日下部先生を鑑賞するスレはプログラマー板
にあるから、こっちに来るように。
0329デフォルトの名無しさん
NGNG#define Today 25
と
const int today=25;
と書くのとは、どちらがいいのでしょうかね?
みなさんはどちらを書くんですか?教えてください。(出来れば理由などもあればお願いします)
よろしくお願いします。
0330デフォルトの名無しさん
NGNGenum のほうがよいんじゃない?
理由:gdbで25がtodayに読める
0331名無しさん@お腹いっぱい。
NGNG#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);
}
コンパイルしてもうまくいかないんですけど、どうしてでしょうか?
よろしかったら教えてください。
0332Kusakabe Youichi
NGNG> 例えば、
> int a[3][3];
> と同じ大きさのメモリを確保する場合どうしたらよいでしょう。
(sizeof(int) * 3 * 3)では?
0333Kusakabe Youichi
NGNG> char *s;
> printf("%s", s);
> printf(s);
> これって実行結果同じ?
sのなかにバックスラッシュや%がなければね。
0334Kusakabe Youichi
NGNG> だれかC99について盛大に語って。
> もう
> 「K&R読め」
> の時代でなくて
> 「C99の規格書読め」
> という時代なの?
K&RもC99対応のが出るのでは?
0335Kusakabe Youichi
NGNG> >>306
> とりあえず、printf関数の第一引数は文字列定数にするべき。
なんで連体形?
0336Kusakabe Youichi
NGNG> >>313
> 変数宣言をカーリーブランケットの外に出せるってこと?
ライナスがいつも持っているやつですね! > ブランケット
ライナス 《漫画 Peanuts に登場する Lucy の弟;
いつも安心毛布 (security blanket) を持ち歩くインテリ少年》
―民明書房刊『ライナスのすべて』より
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGネタはやめれ。
0339デフォルトの名無しさん
NGNGsizeof(int[3][3])じゃだめ?
0340デフォルトの名無しさん
NGNG用途おしえて
0341デフォルトの名無しさん
NGNGprintf("kusakabe");
0342デフォルトの名無しさん
NGNGvoid callback(void)
{
;
}
用途は実行速度を飛躍的に高める。
0343Kusakabe Youichi
NGNG> todayを25置き換える場合、
> #define Today 25
> と
> const int today=25;
> と書くのとは、どちらがいいのでしょうかね?
第4章に書いてありますね。
0344デフォルトの名無しさん
NGNGvoid inarticle(char *wrote)
{
puts("kusakabe");
}
0345Kusakabe Youichi
NGNG> double M=10.0+h,h,pi=M_PI; ←ここのhと
> void integ() ←ここが
> コンパイルしてもうまくいかないんですけど、
いくわけないですね。
> どうしてでしょうか?
書き方がまちがっているからです。
0346Kusakabe Youichi
NGNG> >>332
> sizeof(int[3][3])じゃだめ?
問題ないね。
0347デフォルトの名無しさん
NGNG> double M=10.0+h,h,pi=M_PI; ←ここのhと
宣言前にhを参照してるし、hは定数でない。
> void integ() ←ここが
標準的なCでは関数定義はネストできない。
0348デフォルトの名無しさん
NGNGくさかべ名乗ればいいから
ラクに皮肉や否定ができるな。
0349デフォルトの名無しさん
NGNGもともと匿名なんだから、他人の名を借りなくても出来るだろ。
糞壁名乗ってるのは遊んでるだけ。
0350Kusakabe Youchi
NGNGということにしたいのですね?:)
0351デフォルトの名無しさん
NGNG> (sizeof(int) * 3 * 3)では?
ホントに?
問:
int a[3][3];において常に&a[0][3] == &a[1][0]は成り立つか。
(10点)
0352むぎ茶
NGNG0353デフォルトの名無しさん
NGNG成り立つ
0354重複しない乱数考えてみたよ1/2
NGNG#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;
}
0355重複しない乱数考えてみたよ2/2
NGNGint 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;
}
0356デフォルトの名無しさん
NGNGなにがしかの関数呼び出しの際、そこに渡す引数名と
渡した後、そこの内部で使われる引数名は
似たような名前にしたらイカンとですか?
0357Kusakabe Youchi
NGNGそんなことも分からないような人がいるからですね:)
0358デフォルトの名無しさん
NGNGべつにそんなこと無いんじゃない?
0359デフォルトの名無しさん
NGNG必ずしもなりたたないよー。
0360同じような
NGNGそして関数に渡した
んで、maxを入れてることが分かりやすいようにと思って、渡され側にも「max」と入れようとしたら
「何やってるかわからなくなるから、そこは limit とでもしといて」
だって。
余計に分かりづらいやないかい。
0361デフォルトの名無しさん
NGNG残念はずれ。
0363デフォルトの名無しさん
NGNGケツの穴にツララを突っ込まれた気分だ・・・
0364デフォルトの名無しさん
NGNGはアセンブラやりすぎ。
0365デフォルトの名無しさん
NGNGC言語には「コメント文」という概念があります。
覚えておくと便利ですよ〜〜〜〜〜〜〜〜。
0366Kusakabe Youichi
NGNG> >>360
> C言語には「コメント文」という概念があります。
> 覚えておくと便利ですよ〜〜〜〜〜〜〜〜。
文だったのか。
0367Kusakabe Youichi
NGNG> お尻に詰め物が入る(処理系が有る)ですか?
> 糞壁の言う事は絶対聞かない (^^;
構造体と混同?
0368デフォルトの名無しさん
NGNGそれより、>>351 答えたら。
0369Kusakabe Youichi
NGNG> >>367
> それより、>>351 答えたら。
どんな質問?
0370デフォルトの名無しさん
NGNGなんだ、マ板でニセモノ合唱されたら、こっちに逃げてきたのか。
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNGコンパイラは通るのですが、
#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;
}
は実行時エラーが出て止まります。
なんでですか?
0373デフォルトの名無しさん
NGNGってなんでする必要があるの?
0374デフォルトの名無しさん
NGNG「会議室を使いたい」
と思って、予約しないで勝手に使いたい時間にいくと、既に他の部署の人に使われてたりする。
なので、
「何月何日の何時何分から何時何分まで会議室を使います」
と予約しておく必要がある。
0375デフォルトの名無しさん
NGNGなぜメモリ確保するのかは聞かないことにして、
k[j] = (int *)malloc(sizeof(int));
ではなく
k[j] = (int *)malloc(sizeof(int)*COLUMNS);
すべきでわ?
0376デフォルトの名無しさん
NGNG2)は↓こうすべきだと思うが
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;
}
0377iku
NGNG返事が遅くなってすいません。
みなさんご意見どうもありがとうございました。
fprintf(fp1,"%s,%s,%s,%s\n",strPath,strSheet,strPCNAME,strErrMsg);
で解決しました。
0378iku
NGNG下記の様な処理でファイルからデータを読みこんで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);
0379デフォルトの名無しさん
NGNG> この操作をするにはbuff1+"a.txt"なんてすれば良いのかな?
良くないです。strcat() 使いましょう。
0380sage
NGNG0381iku
NGNGちなみに3文字を+したい場合は
strcat(s1,s2);
strcat(s1,s3);
と2回やらなきゃいけないのでしょうか?
それともう一点,何で文字化けしていたのでしょうか?
0382デフォルトの名無しさん
NGNG> ちなみに3文字を+したい場合は
「+ する」というのは、意味が曖昧だから使わない方がいい。s2, s3 が指している
文字列を s1 が指している文字列に連結したい、ということだと思うが、それなら
>>381 のように 2 回 strcat() する以外に
char path[MAXPATH];
sprintf(path, "%s%s%s", s1, s2, s3);
なんて書く方法もある。(ファイルから読み込んでる場合には、改行文字を事前に
潰しておくことをお忘れなく)
> それともう一点,何で文字化けしていたのでしょうか?
それは正確に話すと、わりと面倒なんで俺はパス。とりあえずポインタと文字列
をキーワードに、書籍を読んでみたら、とだけ言っておきます。
0383iku
NGNGご指摘ありがとうございます。
これからはもっと注意します。
ポインタと文字列をキーワードに,わかりました。
もしお勧めの本がありましたら教えて下さい。
よろしくお願いします。m(_ _)m
それにしてもCって難しいですね。
プログラムが動く仕組みをよく理解していないと・・・・・
0384デフォルトの名無しさん ?
NGNG「プログラムが動く仕組み」どころか、
文字列のなりたちをきちんと理解してくれると いいなぁ。
C言語じゃなくても、他の言語でも共通の部分なので。
0386デフォルトの名無しさん
NGNGsage で書いてくれ。
0387デフォルトの名無しさん
NGNGそのメールアドレスって本物?
場をわきまえようね(^_^;)
0388デフォルトの名無しさん
NGNGでもさ、実際こういう風に晒したところでなにか問題ある?
mailto:[email protected]
0389デフォルトの名無しさん
NGNGうざいメールがイパーイ
売られる可能性もあるし。
0390Kusakabe Youichi
NGNG> くさかべせんせえ、下は九九を表示するプログラムで、両方とも
> コンパイラは通るのですが、
そうですか。
0391Kusakabe Youichi
NGNG> それにしてもCって難しいですね。
簡単ですよ。
> プログラムが動く仕組みをよく理解していないと・・・・・
それは他の似た言語でも同じでしょう。
0392デフォルトの名無しさん
NGNGint 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;
}
0393デフォルトの名無しさん
NGNGこれはメモリのどこかに"aaa"という文字列定数が記憶されて
それへのポインタが入るってことでいいのでしょうか?
0394デフォルトの名無しさん
NGNGよい。
0395デフォルトの名無しさん
NGNGどうもありがとうございました!
0396Kusakabe Youichi
NGNG> ↑char *a="aaa"の部分ですが、
> これはメモリのどこかに"aaa"という文字列定数が記憶されて
> それへのポインタが入るってことでいいのでしょうか?
そうですね。
0397デフォルトの名無しさん
NGNGこの後にIn article君がうるさいことを言うだろうけど、無視してね。
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG一回も許さない。
0400Kusakabe Youichi
NGNG> for 文のネストって実際の業務では何重まで許されるんですか?
「業務では」ってのはとくにないでしょう。
Cの規格で許されているところまででは?
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNGあなたは何重まで許せますか?
0403デフォルトの名無しさん
NGNG規格で認められていてもたとえば「プロジェクトのスタイルに反する」
という理由でリジェクトされる可能性はあるでしょう。
規格を知らない人間でもスタイルにはうるさいもんだし。
0404デフォルトの名無しさん
NGNGそういう人間とクサカベたんの対決が見てみたいなぁ。
0405Kusakabe Youichi
NGNG> でも8重ネストとか見ると叩きたくなりませんか?
いいえ。
0406Kusakabe Youichi
NGNG> >>400
> 規格で認められていてもたとえば「プロジェクトのスタイルに反する」
> という理由でリジェクトされる可能性はあるでしょう。
っていうか、プロジェクトごとにコーディング規約はちがうわけだから、
こんなところで一般論を聞いてもいみないのでは?
で、それを承知で聞いているのだから、
プロジェクトごとのコーディング規約のことではないと
思われる。
0407デフォルトの名無しさん
NGNG人間が書いたコードだと許せんが、コードジェネレータが吐いたコードなら
許す。
0408デフォルトの名無しさん
NGNG定義したのですが、次のようなエラーが出ました。
でもコンパイルは通って、ちゃんと動きますし、_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です。このままほっておくとマズイのでしょうか。
0409デフォルトの名無しさん
NGNGmain.h内で
extern bool ending;
main.cpp内で
bool ending;
で、みんなでmain.hをインクルード。
0410393
NGNGint 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;
}
ワカワカメヨ。。。モウ
0411デフォルトの名無しさん
NGNGとりあえず、確保した領域初期化したら?
0412デフォルトの名無しさん
NGNG通りました!ありがとうございますです・・・。
課題○投げスンマセン。
0413デフォルトの名無しさん
NGNG>int a[3][3];において常に&a[0][3] == &a[1][0]は成り立つか。
が気になるんですが、どういうときに成り立たないんでしょう?
成り立つと思ってたんですが
0414393
NGNGint 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の値が変わって行かないのはなぜなの?アカン。。。
0415デフォルトの名無しさん
NGNGポインタ変数に++してるから。では。
0416デフォルトの名無しさん
NGNGb++; ってしても &b の値は変わらないでしょ。
int *a; のときも一緒。
0417デフォルトの名無しさん
NGNGa++で代わるのは
変数aの値であって
aのアドレスではない。
0420デフォルトの名無しさん
NGNG_ から始まる識別子(厳密にはもうちょっと制限されるけど)は、処理系や
標準ライブラリが使うために予約されている。_ending はおそらく CRT の
スタートアップルーチンあたりで使われているものとコンフリクトしている
ものと思われ。
不幸なことになる可能性が高いから、とりあえず _ から始まるシンボルを
使うのはやめとけ。
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGありがとうございます。
__FILE__とかですね(多分)。ちょっと目印に、と思ったのですが
アホでした。しかもなんだか危険極まりないカンジの予約語ですね・・・
名前のつけ方勉強しなおしますです・・・
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG環境変数を読んでくれなくて -I -L
オプションで逃げたのですが
今度はリンカが膨大なエラーを吐くので
(undefined reference _virtual_なんとか)
へこんでおります。
3.0はオブジェクトの出力形式も違うのでしょうか?
(こんなときに FAQ の mail-archive の cgi が止まってる-- >_<)
0425機種依存の勉強
NGNGstruct {
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です
0426デフォルトの名無しさん
NGNG3.0からC++のmangling schemeが変わってる。ライブラリもコンパイルしなおせ。
0427名無し
NGNG実行してみればわかるだろハクチデスカ ┐(´ー`)┌ by むぎ茶風
0428機種依存の勉強
NGNGえーすみません
動かしました。わかりました。aに入りました。
野村監督 辞任だってさ
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNGえ?
0432デフォルトの名無しさん
NGNGビッグエンディアンとリトリエンディアンの由来を調べてみれ。
0433393
NGNGint main(){
int *a;
a=(int *)malloc(sizeof(int)*10);
free (a);
return 0;
}
これでちゃんとfreeされてます?
それはいいとして、
int型ポインタ変数aはmalloc確保されたアドレスの先頭しか
わからないですよね?
終わりはここ!ってのはわからないはず?なのに、
なぜちゃんと解放してくれるのでしょうか?
どこかにここからここまで確保しましたっていう情報が
記録されてるのでしょうか?それとも・・・
0434デフォルトの名無しさん
NGNG> 記録されてるのでしょうか?
これが正解。
ただし、移植性のある方法でそれを調べる方法はない。
0435424
NGNGありがとうございます m(__)m お教えの通り自作のライブラリを
コンパイルしなおしたのですが、まだエラーが...
試してみると3.0のライブラリのみ使うプログラムは正常に
スタティックリンクできました。自作ライブラリをリンクすると
エラーみたいで…。
環境変数から無視される辺りから何か変ですよね。
オプションが正しく渡っていないのかも…。
0436デフォルトの名無しさん
NGNG実は公にされてはいませんが、
CPUにはラプラスの悪魔が仕組まれています。
0437デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNG気にするな。
0440393
NGNGマエカラキニナッテタモンデ・・・
0441デフォルトの名無しさん
NGNGmalloc() のソース読め。
0442デフォルトの名無しさん
NGNG侍
0443デフォルトの名無しさん
NGNGwhile (1) {
printf("気になる");
}
0444デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNGエスケープシーケンスを使いBorland C++ 5.5.1で
コンパイルをすると不具合がでます
例えば画面消去をしたくて
printf("\x1b[2J");
としても
[2J
↑のように出力されます
コンパイルしたEXEはDOS/Vのほうでは正常に動作します
何か対処方法はあるのでしょうか?
0447デフォルトの名無しさん
NGNG98版のWindowsってANSI.SYSついてないんだっけ?
ま、プログラミングとは関係ないから別の板で聞いた方がいいと思われ。
0448デフォルトの名無しさん
NGNGUMBも使え
0449446
NGNGでも一応 LSI C-86でコンパイルするとPC-98でも
エスケープシーケンスは正常に動作します
0450デフォルトの名無しさん
NGNG0451446
NGNGちょっと調べてみたらPC-98はANSI.SYSを組み込む
必要がないみたいでした
でも原因が特定できてよかったです。ありがとうございました
あとスレ違いスイマセン
0452デフォルトの名無しさん
NGNGchar str[] = "あAAAA";
とやって
if (str[0] == 'あ')
とか
printf("%c", str[0]);
をやりたいのですが失敗します
mbchrcmpとかmbprintfとか無いのでしょうか?
0453デフォルトの名無しさん
NGNG0454Kusakabe Youichi
NGNG> char str[] = "あAAAA";
> とやって
> if (str[0] == 'あ')
> とか
> printf("%c", str[0]);
> をやりたいのですが失敗します
「失敗します」じゃあ「どうなったか」がわからないですね。
ちゃんとできるようになるには、質問とかのときに「ちゃんと現状を報告できる」
ことがまず必要ですよ(ちゃんとした質問にするためだけじゃなくて、自分の理解の
ためにも)
あと、この場合は環境の報告も必要ですね。
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGすいません、ちょっと専門的な話をしてるので黙っててもらえますか
もし話に入れなくて気分を害されたならごめんなさい
0457デフォルトの名無しさん
NGNG0458Kusakabe Youichi
NGNG> >>454
> すいません、ちょっと専門的な話をしてるので黙っててもらえますか
「専門的」な質問ですね ;)
0459デフォルトの名無しさん
NGNG0460Kusakabe Youichi
NGNG> 「」で囲むのは、何か意味があるんですか?
そういうのはCの文法にないですね :)
ヒント: %lcについては415ペイジに解説があります。
0461デフォルトの名無しさん
NGNGVB厨には違いないが
0462Kusakabe Youichi
NGNG> VB厨なんかなmbchrcmpて、スゲー気になる
っていうか、てきとーな入門書でも見ればいいのにとは思う。
0463デフォルトの名無しさん
NGNGとやって
if (wstr[0] == L'あ')
とか
printf("%lc", wstr[0]);
をすればいいのでは?
0464デフォルトの名無しさん
NGNG0465452
NGNG半角1バイト、全角2バイトは知ってましたが、どうすればよいか分からなかったので。
463さんありがとうございます。
出来ました。
Lを付けるのは知りませんでした。もっと勉強します。
0466デフォルトの名無しさん
NGNG日本語は2バイトだから駄目、どうしてもそうしたいなら
if(str[0] == "あ"[0] && str[1] == "あ"[1])
0467452
NGNGいいこと教えてくれて有難うございます。
0468Kusakabe Youichi
NGNG> wchar_t wstr[] = L"あAAAA";
> とやって
> if (wstr[0] == L'あ')
> とか
> printf("%lc", wstr[0]);
> をすればいいのでは?
そういう教え方では本人のためにならないような(^^;
0469iku
NGNGエラー処理の(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{
// その他のエラー処理
}
}
}
0470デフォルトの名無しさん
NGNGスレ違い。C++スレ逝け。
0471じゃばちゅぅ〜
NGNG配列がポインタに***なりさがる***の意味がイマイチ分かりません。
例えば、2次元配列は100%ポインタのポインタに成りうるけど、逆は必ず真では無い
と言う感じでしょうか、と言うかfunc(char **str_ptr);
みたいなプロトタイプが有ったとすると、str_ptrが2次元配列なのか
単にchar型へのポインタへのポインタなのかは定義部を見ないと分からないですかね。
何かメッチャ戸惑っています
今日K&R買いに行くので、これだけ教えてプリーズです
0472じゃばちゅぅ〜
NGNG単に文字列へのポインタなら func(char **str_ptr);
みたいに、、なってないですよね んー、、むずかしひ
0473デフォルトの名無しさん
NGNGp=(char **)malloc(4);
free(p);
こうするとfreeのところで失敗します。なぜなのでしょうか。
コンパイラはVC++6.0のものを使っています。
0474Kusakabe Youichi
NGNG> 例えば、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買いに行くので、これだけ教えてプリーズです
英語を読めるならばできれば原書のほうがいいです。
0475デフォルトの名無しさん
NGNGchar* str = "あいうえお";
int len = strlen(str);
for( int i = 0 ; i < len ; i++ ){
if( *(unsigned short*)(str+i) == *(unsigned short*)"あ" ){
処理;
}
}
ではどうかな?
0476デフォルトの名無しさん
NGNGcharのアドレスを、shortのアドレスに変換してアクセスするのって
保証されてるんだっけ?
0477Kusakabe Youichi
NGNG> 例えばargvとかなら main(int argc,char *argv[],char *envp[]);
> 単に文字列へのポインタなら func(char **str_ptr);
> みたいに、、なってないですよね んー、、むずかしひ
152〜154ペイジにわかりやすく解説してあります。
0478Kusakabe Youichi
NGNG> char **p;
> p = (char **)malloc(4);
> free(p);
>
> こうするとfreeのところで失敗します。なぜなのでしょうか。
「失敗します」が具体的にどうなることを言っているかを
うまく説明する練習をしましょう。
0479kusokabe Youichi
NGNG> > char **p;
> > p = (char **)malloc(4);
> > free(p);
> >
> > こうするとfreeのところで失敗します。なぜなのでしょうか。
>
> 失敗します」が具体的にどうなることを言っているかを
> うまく説明する練習をしましょう。
糞レスをつけるのならレスをしない方がよいでしょう。
もちろんこのレスに限ったことではありません:)
0480デフォルトの名無しさん
NGNGあ;;
len-1だね:)
0481デフォルトの名無しさん
NGNGいや、質問の仕方が悪いってのは、まっとうな指摘だと思うが…
0483Kusakabe Youichi
NGNG> >>466
> char* str = "あいうえお";
> int len = strlen(str);
> for( int i = 0 ; i < len ; i++ ){
> if( *(unsigned short*)(str+i) == *(unsigned short*)"あ" ){
> 処理;
> }
> }
> ではどうかな?
shortがそのバイト数である保証はどこにもないですね。
0484Kusakabe Youichi
NGNG> >>475
> charのアドレスを、shortのアドレスに変換してアクセスするのって
> 保証されてるんだっけ?
何がですか? > 保証されているかどうか
(「可能かどうか」ですか? できる内容がですか?)
0485じゃばちゅぅ〜
NGNG>その前にCの関数の引数はcall by value..
えっと、結局配列でも値渡しするのは先頭要素へのポインタだから
まとめちゃえって感じですよね?、でも、例えば2次元配列を期待してる
関数に、単なるポインタへのポインタを渡したりするときっと中で添え字アクセス
とかされて死ぬと思うんですが、、その辺は呼び出す時に**ptrの意味を良く考えなきゃ
駄目なんですね、ヒャー
>a++はできてもb++ができないのはなぜか
はい、何となく分かります
>152〜154ペイジにわかりやすく...
教科書ですね、まさかプロの翻訳屋さんより読める気はしないので
おとなしく日本語のを買ってきます。
ありがとうございました m(_ _)m
0486デフォルトの名無しさん
NGNG>>485
図書館で借りろ:)
0487Kusakabe Youichi
NGNG> In article >>478,kusakabe Youichi/478 wrote:
> > > char **p;
> > > p = (char **)malloc(4);
> > > free(p);
> > >
> > > こうするとfreeのところで失敗します。なぜなのでしょうか。
> >
> > 失敗します」が具体的にどうなることを言っているかを
> > うまく説明する練習をしましょう。
>
> 糞レスをつけるのならレスをしない方がよいでしょう。
とかいうくだらない反応するぐらいなら何もしないほうがいいのでは? :)
私は最も適切な反応しているわけですので。
0488Kusakabe Youichi
NGNG> >>476
> あ;;
> len-1だね:)
EUCだったらどうするの? :)
0489Kusakabe Youichi
NGNG> >>478
> いや、質問の仕方が悪いってのは、まっとうな指摘だと思うが…
「仕方が悪い」というだけの指摘ではなく、どの部分がというのも示し、
「どうするべきか」の指針も与えているわけですからね。
0490デフォルトの名無しさん
NGNG立ち読みで十分だよ、薄い(内容もね)本だから。
誤植が多いから注意してよんでね。
0491デフォルトの名無しさん
NGNG>何がですか? > 保証されているかどうか
もしかすると、環境によっては動かないかも、
と思ったんですけど、大丈夫なんですかね?
CPUによっては、奇数のアドレスにchar以外では、
アクセスできないとかってあるじゃないですか。
0492デフォルトの名無しさん
NGNG俺も厨房だが、その辺は何となくNULL参照しまくりながら慣れていった
個人的にはオライリーもお勧めしておく。
0493デフォルトの名無しさん
NGNGアラインされてない場合の動作は未定義。
つまり、何も問題なく動いてもいいし、バスエラーが起きてもいいし、
モニタを爆発させてもいい。
0494Kusakabe Youichi
NGNG> >その前にCの関数の引数はcall by value..
> えっと、結局配列でも値渡しするのは先頭要素へのポインタだから
> まとめちゃえって感じですよね?
べつに「まとめて」いるわけじゃないです。
> でも、例えば2次元配列を期待してる
> 関数に、単なるポインタへのポインタを渡したりするときっと中で添え字アクセス
> とかされて死ぬと思うんですが、、その辺は呼び出す時に**ptrの意味を良く考えなきゃ
> 駄目なんですね、(I訪�
二次元配列であろうが、ポインターのポインターであろうが、
引数で渡るときにはアドレス1つです。
> >152〜154ペイジにわかりやすく...
> 教科書ですね、
あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
0497デフォルトの名無しさん
NGNG> あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
他人に分からないレスはしないでください。非常に迷惑です。
ただでさえあなたは迷惑な存在なのですから。
0498デフォルトの名無しさん
NGNG> 引数で渡るときにはアドレス1つです。
はつみみです。引数で渡るときにはポインタ1つだと思ってました。
ところで、アドレスって何ですか?
0499デフォルトの名無しさん
NGNG加える服
0500Kusakabe Youichi
NGNG> >>494
> >あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
>
> ↑これね、糞本てのは。
そう思いたいのですね? :)
0501デフォルトの名無しさん
NGNG偽日下部相手に目くじら立ててもしょうがありませんよ。
彼もそのうち気付くでしょう。本物の足元にも及んでいないと。
イゴ スベテノ クサカベハ ニセモノ トイウ ツウセツデ ヨロシク。
ニセモノアツカイ デキナイヒトハ ムシニ ツトメテクダサイ
0502デフォルトの名無しさん
NGNGRISCなんかだと、アライメントされてないアクセスはだいたいSIGBUSかなんかくらうな。
エミュレートしてくれるOSもあるが、激烈に遅くなる。
0503デフォルトの名無しさん
NGNG> foo(int);というプロトタイプの関数があったとして、
> それにfoo(a);と呼び出すときと、foo(100);とやるときで、
> 受け取る側でどうなるかを関数定義部分(きっとfoo(int x){ ....}みたいに書いて
> あるはず)でどうなるかを考えてみてください。
禿死苦意味不明
0504デフォルトの名無しさん
NGNG0505Kusakabe Youichi
NGNG> > あ、いえ、いまたまたま私の手もとにあった日本の入門書のペイジ数でした。
>
> 他人に分からないレスはしないでください。
「他人」っていってもいろいろいますね。
> ただでさえあなたは迷惑な存在なのですから。
そう思いたいのですね? :)
0506Kusakabe Youichi
NGNG> ところで、アドレスって何ですか?
住所でしょ。
0507Kusakabe Youichi
NGNG> まあまあ、みなさん。
> 偽日下部相手に目くじら立ててもしょうがありませんよ。
というと安心できるんですか? :)
0508Kusakabe Youichi
NGNG> >>476
> RISCなんかだと、アライメントされてないアクセスはだいたいSIGBUSかなんかくらうな。
>
> エミュレートしてくれるOSもあるが、激烈に遅くなる。
DGのがそうだったなあ > 遅く
0509デフォルトの名無しさん
NGNG本物の存在は一切認められていません。
ここで日下部を騙る事はコスプレして銀座の町に迷い出るようなものです。
0510デフォルトの名無しさん
NGNG住所って何ですか?
0511デフォルトの名無しさん
NGNGム板ってここのことだけど・・・
それにしても、糞壁っていかれた人工知能プログラムみたいだな。
0512じゃばちゅぅ〜
NGNG皆さんアドバイス大感謝です、今からK&R買いに行って来ます。
>492 オライリーはPracticalですよね、詳説が本棚の肥やしになってる
んだよなぁ・・・・と言うかお金が無い(泣
何か適当にやったらコア吐きまくるので、コード書かずにアレばっかり読んでたんです。
サンクス!>>みなさま
0514デフォルトの名無しさん
NGNG名前も誤爆(w
0515509
NGNGかくなる上は逝って詫びます。
あ、でもココに居る日下部はみんな偽者らしいので相手にしても
しょうがないですよ。テイセツラシイデス
有意義な時間をお過ごしください。
0516デフォルトの名無しさん
NGNG次のスレNoは10ではなく0x0Aがいいな
頼んだぞ(まだ早いって)
0517デフォルトの名無しさん
NGNGくなった。毎日のぞいちゃうよ。
0518Kusakabe Youichi
NGNG> つまんなかったム板が、日下部さんが来て以来おもしろ
> くなった。毎日のぞいちゃうよ。
いごよろしく
0519デフォルトの名無しさん
NGNG0520iku
NGNG以下様な処理を環境Windows2000pro,SQLServerで
行いたいのですが,考え方としてどういうやり方で
やれば良いのかアドバイスを頂きたいと思い投稿しました。
端末を立ち上げると自動的にその端末の情報が
データベースに蓄積されるシステム(毎日更新予定)なのですが,
長期出張,産休といった人が出た場合,その端末は
立上がらないので何ヶ月も前の日付のデータが存在します。
理由あってそのデータを調査するという事で
今日の日付から一ヶ月前以上のデータを別テーブルへ
移動するという事をやる事になりましたが,
一ヶ月前,二ヶ月前,三ヶ月前のデータの
日付をどうやってわりだしたら良いのかわかりません。
どなたかこの日付調査で良い方法があったらよろしくお願いします。
何かCで参考になる関数,APIなどあれば・・・・
0521デフォルトの名無しさん
NGNGlib\math.lib: Warning: Unresolved external symbol 'errno'.
って言われてしまいます。ちゃんと
#include <math.h>
はしているのですが、なにが原因なんでしょう。
P/ECEなんですが教えていただけますか?
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGお約束的な関数が沢山載ってるサイトを教えて欲しいです
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGC言語を使ったプログラムで
時間計算をするプログラムを書けという問題がでたのですが
はっきりいってわからなかったんです。
問題は5曲の曲の時間の合計を出すというものです。
もしよければおしえてください。
0526デフォルトの名無しさん
NGNG%g
%p
%n
って仕事でよく使うんですか?
0527デフォルトの名無しさん
NGNG全部、秒に直せ!
そのあと足せ!
そして、戻せ!
ヒントをやろう・・・
1時間は60分ッ!!
1分は60秒だぁああーーッ!!
0528デフォルトの名無しさん
NGNG%gはあんまり使ったことがない。普段数値計算とかしないから。
%pはデバッグではよく使う。
%nは場合による。
0529525
NGNG分= (t - ji * 3600) / 60 を整数に切り捨てたもの
秒= (t - ji * 3600 -分 * 60)
??
0530デフォルトの名無しさん
NGNG#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言語入門スーパービギナー編
0531デフォルトの名無しさん
NGNGうむ。だんだん良くなってきたな。
ここで108ある秘奥義のうちのひとつを伝授しよう。
a = b % c;
これで a に、 bをcで割ったときの余りが入るぞ。
0532デフォルトの名無しさん
NGNGごめん。いきなり答えばらしちゃった。
0533デフォルトの名無しさん
NGNGC++ビルダーはもうないんですか?
MS製品は極力使いたくないんですけれど。
0534デフォルトの名無しさん
NGNGいいですよ。非奥義はあと107ありますから
0535デフォルトの名無しさん
NGNG0536Kusakabe Youichi
NGNG5 wrote:
> すいません、おもいっきり初心者です。
> C言語を使ったプログラムで
> 時間計算をするプログラムを書けという問題がでたのですが
書けばいいじゃん。
> はっきりいってわからなかったんです。
「どうわからなかったのか」の説明が、
「はっきりいって」だけじゃあわからないですね。
はっきり言ってってのはこの場合せいぜい「正直に言って」と同じ程度の意味の
ことしかいってないわけなので、ようやくすると
「xxxという問題が出たのですがわかりません」
とだけしか言っていないことになります。
> 問題は5曲の曲の時間の合計を出すというものです。
> もしよければおしえてください。
2:51 コルコヴァード
2:42 酒とバラの日々
3:15 ジョーンズ嬢に会ったかい?
3:55 イパネマの娘
5:16 D&E
という5曲の演奏時間の合計を手計算できない人には無理でしょう:)
0537525
NGNGそれは非奥義107に含まれていますか??
0538デフォルトの名無しさん
NGNGそれは秘奥義には入ってない。
環境に依存するものは秘奥義には入らんのだ。
宿題ていどならばscanfでも使うがよかろう。
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNG2:42 酒とバラの日々
3:15 ジョーンズ嬢に会ったかい?
3:55 イパネマの娘
5:16 D&E
という5曲の演奏時間の合計を求めるプログラムを結局は求めるの?
つーか宿題くらい自分でやれよ(w
0541Kusakabe Youichi
NGNG> printf の変換文字列の
> %g
> %p
> %n
> って仕事でよく使うんですか?
使いますね。%pは実装依存だけどよくつかう。
0542Kusakabe Youichi
NGNG> ここで108ある秘奥義のうちのひとつを伝授しよう。
> a = b % c;
> これで a に、 bをcで割ったときの余りが入るぞ。
bが負の数だったら? cが0のときは?
0543デフォルトの名無しさん
NGNG0544Kusakabe Youichi
NGNG> これで、曲数と分も入力できるようにしたいのですが
> それは非奥義107に含まれていますか?
それは107の1 n = 0; ... n++; を使うのでは?
0545Kusakabe Youichi
NGNG> C言語で小麦を作れますか?
Cでならできるかも。C言語では無理かも。
0546デフォルトの名無しさん
NGNGhttp://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
0547デフォルトの名無しさん
NGNGやっぱみんな、大人だわぁー。ここなら安心。
0548Kusakabe Youichi
NGNG> ひたすら無視される悲惨な偽日下部(w
ということにしたいのですね。
0549デフォルトの名無しさん
NGNGと
sum = sum + a;
とどっちがいいの?
0550デフォルトの名無しさん
NGNGどちらでもコンパイル時に精製されるものは変わらないでしょう。
0551デフォルトの名無しさん
NGNG0552Kusakabe Youichi
NGNG> sum += a;
> と
> sum = sum + a;
> とどっちがいいの?
Cだったら前者でいいのでは?
後者のように書く意味はとくにないでしょう。
0553デフォルトの名無しさん
NGNG入力秒 : s
hour += (mim += (sec += s) / 60 + m) / 60;
min %= 60; sec %= 60;
0554defaultの名無しさん
NGNG0555デフォルトの名無しさん
NGNGよい。
糞壁が書き込むよりずっとまし。
0556Kusakabe Youchi
NGNGスレって何ですか?
0557デフォルトの名無しさん
NGNGここは祭り禁止ですよ。
0558デフォルトの名無しさん
NGNGとりあえず >>1 にある C FAQ だけは読んどけ。
0560あり
NGNGこのfpって次に使うときは、進んだままになっちゃうの?
はじめてのCって本の例題見るとそんな感じになっていました。
0561デフォルトの名無しさん
NGNG戻したければ fgetpos(), fsetpos() 使う。ftell(), fseek() でも良いけど。
0562デフォルトの名無しさん
NGNGそれはプログラマー板で聞きましょう。技術じゃないし。
0563Kusakabe Youichi
NGNG> fread()とかでファイルを読むときにfp指定するけど、
> このfpって次に使うときは、進んだままになっちゃうの?
fpで指している構造体の中の一部にそれを覚えておく箇所があるわけですね。
次にreadしたりwriteしたりfseekしたらずれますが。
0564デフォルトの名無しさん
NGNG不思議ですね。
0565デフォルトの名無しさん
NGNGを知りたいのですが、
グーグルで「c 組み合わせ アルコリズム」で出ますか?
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG0568Kusakabe Youichi
NGNG> 日下部先生マンセー
ビル建設中にべつの場所にあったときのほうがおいしかったですね > 黒豚のトンカツ
0569デフォルトの名無しさん
NGNGわ、わかりにくい... 一瞬考えてしまったが肉屋の方か。
0570time.h
NGNGウツダ
0571デフォルトの名無しさん
NGNG割算の答えを100桁(割り切れた場合はその桁まで)表示する方法を
教えてください。お願いします。
0572デフォルトの名無しさん
NGNG>割算の答えを100桁(割り切れた場合はその桁まで)表示する方法を
ライブラリでも用意するしかないよ。
0573デフォルトの名無しさん
NGNG> 割算の答えを100桁(割り切れた場合はその桁まで)表示する方法を
そんなに大きな桁を何に使うの?
無量大数でも68桁(88桁の説もあり)なのに...
0574デフォルトの名無しさん
NGNG演習2-9で分からないところがあるので、おしえていただきたいのです。
コードの改良は、
int bitcount (unsigned x)
{
int b;
for (b=0;(x=(x & (x-1)) != 0;b++)
;
return b;
}
でいいんじゃないかと思うのですが、
2の補数システムではなぜそうなるか、の説明がよくわかんないです。
最も右の1ビットから下位ビットが1の補数となり、&によって、0がセットされるため、
最も右の1ビットが消える。
では、ちょっと的外れのようなので、正しい理由を教えていただきたく思います。
もちろん、コードの間違いもありましたら、お願いします。
0576デフォルトの名無しさん
NGNG「多倍長整数演算」とかで、検索かけてみ。
ここで説明するのはきつい。
0577デフォルトの名無しさん
NGNGコンパイルする環境ないの?
そのコードは動いてないよ。
0578デフォルトの名無しさん
NGNG何も間違ってないぞ。
その解釈であってる。
0579デフォルトの名無しさん
NGNG101000 (x)
100111 (x-1)
100000 (x & (x-1))
0581デフォルトの名無しさん
NGNGhttp://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/index.html
リンク先の項番71から読め
0582デフォルトの名無しさん
NGNGこれだと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");
}
0583571
NGNGありがとうございます。
読んでみましたがよくわからないです。。。
C言語及びプログラム言語初心者には
難しい課題を与えられた気がします。。。
もっと簡単にできないでしょうか?
0584デフォルトの名無しさん
NGNG> srtcmpを使って数字を比較しようとしているのですが、
そもそもstrcmpは数字を比較するものではない。
> ちゃんと等しいときに0を返してくれるのってどうすれば
> いいのでしょう?
「ちゃんと等しい」をもっと「ちゃんと」定義して欲しい。
とりあえず
> if(strcmp(&a[1], &a[2])==0)
if(a[1] - a[2])
では駄目なのか?
0585デフォルトの名無しさん
NGNG>srtcmpを使って数字を比較しようとしているのですが、
もうね、アホかと。馬鹿かと。
0586デフォルトの名無しさん
NGNG割り算ってどーやるの?あれ?
まずふつーにやるだろ?余りがでんだろ?
その次どーすんの?0くっつけんだろ?それってなに?10倍ジャン?
そーやってやると小数圏に突入(乳突起きぼんぬ)すんだろ、
そんでつづけていけば最高じゃんか
そーやってやれ。余裕だ。
0587デフォルトの名無しさん
NGNG> そもそもstrcmpは数字を比較するものではない。
ごもっともです。
でも、a[1],a[2]を文字に置き換えてもstrcmpの結果が
0にはなってくれません。
とりあえずif(a[1]-a[2])でもできないこともなさそうです。
ありがとうっす。
0588デフォルトの名無しさん
NGNGすごい妄想だな!
strcmpは同じだとTRUE=1を返すんだっけ?そこが逆?
あと、数字の大きさ比較するにはなにも、引き算でいいじゃんか
0589デフォルトの名無しさん
NGNGたとえば文字(列)"4"を数字でつかえる4にしてくれるZO
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNGfor (b=0; x != 0; x&=(x-1), b++)
にしないと、x=1のときゼロになる
0594デフォルトの名無しさん
NGNG> でも、a[1],a[2]を文字に置き換えてもstrcmpの結果が
> 0にはなってくれません。
残念ながらstrcmpは「文字」を比較するものでもありません。
「文字列」を比較します。
「文字」と「文字列」の違いについては入門書を良く読んでください。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG文字を比較したかったら=使えばいいじゃんか
strcmpは文字も比較できるぞ。
=使ってて例えばabcdefghi(\0)からbcdなりcなりを
抽出したいときはどーする?そーゆーときstrcmpとか
シリーズを使うのだ!
0597デフォルトの名無しさん
NGNG> strcmpは文字も比較できるぞ。
できません。
できると思う人はできる例を示してください。
char a = 'a';
char b = 'a';
これをstrcmpでどう比較するの?
0598デフォルトの名無しさん
NGNGstrncmpを使えばできるね。
strcmp(&a,&b)でも比較対象a,bのそれぞれのすぐ後ろが'\0'なら
できないと言えなくも無いね。
だけど、そんなコードを俺の目の前で書いたら、氏なす。
0599デフォルトの名無しさん
NGNGそれはたまたま'\0'があったらってことだよね?
多くの場合において無いと思うから、同じ文字だったらアクセス違反になるだろうね。
ところで、なんで比較演算子を使いたがらないんだろう?
数字が昇順に並んでいない文字コードがあるの?
もしあったとしても、atoi()で変換してやればいいじゃない。
0600599
NGNG0601Kusakabe Youichi
NGNG> ところで、なんで比較演算子を使いたがらないんだろう?
> 数字が昇順に並んでいない文字コードがあるの?
けっこうありますね > そういうコードセット
0602Kusakabe Youichi
NGNG> あ、昇順に並んでいなかったらstrcmpもstrncmpも使えないか・・・・
え、それとは独立な問題ですよ。
0603デフォルトの名無しさん
NGNG馬鹿言うな
文字比較したいときは人間の手で一文字の
配列をつくるんですYO。
たとえば文字(列)検索ルーチンで
わざわざ一文字と複数文字の区別するんですか?
(ちょっとはするけどさ)基本的に文字列としてあつかうでしょ?
0604Kusakabe Youichi
NGNG> たとえば文字(列)検索ルーチンで
どっちですか? > 文字/文字列
0605デフォルトの名無しさん
NGNGCに於いて文字列とはヌルターミネートされた文字の並びを指します(例え一文字でも)
strcmpは文字列を対象に書かれてますので、文字の照合は///出来ません///
0606デフォルトの名無しさん
NGNG>>できないと言えなくも無いね。
この辺りから糞壁信者っぽい、ネタにもならんね
0607デフォルトの名無しさん
NGNGこだわる必要ねーんだよ。意味がわかったら
人間語の文字つー意味にもどれよ。
要は終記号がないとコンピューターが判断できない
つー話でしょうが。
テキスト中の文字(列)検索したいときに
いちいち一文字と複数文字の区別考えて
「えーっと、いま検索窓にaっていれたから
今は文字検索したな」やれ「あ、”あいう”っていれたから
これから文字列検索をします!」とか下らんことかんがえる
わけですか?語句検索すんのに文字も文字列もきにしないんですけど。
0608デフォルトの名無しさん
NGNGできないじゃん。
どーせちょちょっとやって、strcmp使ったって
いいんじゃんか。おんなじことだぜ?ほかの方法つかったって。
0609Kusakabe Youichi
NGNG> 糞壁が痛い人を呼んでいるので終了。
わたしのせいにしようとしても無駄ですよ:)
呼んでいるのはあたなでしょう:)
> Cに於いて文字列とはヌルターミネートされた文字の並びを指します(例え一文字でも)
なんじゃそりゃ:) > 例え
0610Kusakabe Youichi
NGNG> テキスト中の文字(列)検索したいときに
で、どっち? :) > 文字/文字列
0611デフォルトの名無しさん
NGNG===終了===
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG僕はヤフー検索するのに文字か文字列
なんて考えません。語句です。語ですか?句ですか?
とかいっちゃうあなたにマイナス1点
だいたいあなた、間違ってるYO.
文字列or文字、それでWholeをカバーするんですか?
絶対にどっちかだ!とか考えてんでしょ?
文字列を文字の区別はYes or Noとは違いますよ?
僕は人間言葉の文字という意味を使った。
0614574
NGNG考え出したら、ぐるぐる巡ってしまって、ちょっと解んなくなってました。
コードは、')'が足りなかったですね。
有り難うございます。
では、また、頑張ってみます。
0615デフォルトの名無しさん
NGNG再現しなくていいよ (^^;
0616Kusakabe Youichi
NGNG> うぉ!まだ言ってるんのか!
> 僕はヤフー検索するのに文字か文字列なんて考えません。
っていうかどっちですか?
1文字の文字と、
1文字の文字列は別物ですよ。
0617デフォルトの名無しさん
NGNG>>613
>僕は人間言葉の文字という意味を使った。
人間言葉の文字って何? 検索しても出てきませんが?
0618デフォルトの名無しさん
NGNG1〜6のそれぞれの目が出た回数を記録していきます。
振り終わった時に考えられる結果(1がm回、2がn回、3が…)
の総数と、一番多く出た目の数と一番少なく出た目の数の
差がB以下になる確率を出します。
Aを入力してからBを入力すると計算が始まります。
不正な数字が入力された時のチェックなどは省いています。
と、いうプログラムを気合で作りました。C初心者です。
添削希望です。
もっといい書き方などありましたら教えていただきたいです。
2回に分けてコピペします。
0619618
NGNG#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;
}
0620デフォルトの名無しさん
NGNGつーか下げでやれ下げで
0621618
NGNG{
(*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)++;
}
以上です。よろしくおねがいします。
0622デフォルトの名無しさん
NGNG0623あぼーん
NGNG0625デフォルトの名無しさん
NGNG> じゃぁ文字照合したいときはどーすんの?
strchr
ちなみに文字列照合の場合はstrstrを使う。
>>616も言っているが
「文字」と「文字列長が1の文字列」は別物
入門書から読み直せ
0626Kusakabe Youichi
NGNG> 入門書から読み直せ
どんな入門書がよいでしょう?
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG紙面の余白がとても多いのも良い、メモ帳にぴったりですね
次からはミシン目を入れて下さい :-D
0630Kusakabe Youichi
NGNG> 作ってわかるCプログラミング、紙質が素晴らしいね
はい、ペイジ数がとても多いのに、厚さを増さないように、
高い紙を使ったそうです。
> 紙面の余白がとても多いのも良い、メモ帳にぴったりですね
え? 余白は「少ない」ですよ。わたしはもっと余白をとってほしかった
(とくに小口側じゃなくてノドの側、ぎっしりすぎて読みにくい)
「余白が多い」とかって、ようするに実物見てないのでは? :)
(ここで誰かが書いてたデマを信じて書いたんだったら、恥かくだけですよ^^)
0631デフォルトの名無しさん
NGNGここでやるなよ。
隔離板へ逝け。
0632デフォルトの名無しさん
NGNGC言語入門書
http://www.amy.hi-ho.ne.jp/~lepton/program/prog/prog78.html
によると
> 「悪い入門書」のチェックポイント
> ・著者のイニシャルがK(あ、あとついでにMも)である :-p
だそうです。
# 例えばK下部とかかな?
0633574
NGNGあの辺りのスレ読み飛ばしていました。
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGhttp://www.amy.hi-ho.ne.jp/~lepton/program/mail/19990628.html
78の K西本批判は、その通りだと思います。
0636デフォルトの名無しさん
NGNGの意味だ、と言った覚えがないのだが
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGここは C 言語スレです。一般的な「文字」について語りたいなら、別のスレでお願いします。
(そもそも「俺」って誰だよ、番号書いてくれないと名無しさんばっかで分からん)
0639exciteさんに訊いてみました
NGNG↓
The character of human language
↓
人間の言語の特徴
0640デフォルトの名無しさん
NGNGするときにせいぜいアスキーコードでも
使って配列でもつくるんだねw
0641Kusakabe Youichi
NGNG> だから俺は明示的にC言語の「文字」
明示的っていう日本語はないですね。
0642デフォルトの名無しさん
NGNG0643仕様書無しさん
NGNG日本語語って欲しくないです。
0644デフォルトの名無しさん
NGNG京都の人間にとっちゃ、みやこは今でも京都だし、
それを聞いた東京の人間は、とっくに遷都しただろと思う。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG誤植です。
0647Kusakabe Youichi
NGNG> 上京を(I☆ぢ京都に行くこと(I�C般�C洪祐屬法「
何言ってるんだかわからないですね。
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNG> それはCとは関係あるの? 関係ないならsageでね。
sageていれば関係無いことをいくら書き込んでもいいということですか?
0650デフォルトの名無しさん
NGNG0651Kusakabe Youichi
NGNG> なんでKusakabeの引用は化けるの?
わたしのが化けているのではなくて、もとのがいけないだけでは?
0652デフォルトの名無しさん
NGNG0653Kusakabe Youichi
NGNG> kusakabeが悪いよ。
いいえ。
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656Kusakabe Youichi
NGNG> どうせKusakabeが変なソフト使ってるんでしょ。
私のは問題ないですね。
0657デフォルトの名無しさん
NGNGJIS X 0201仮名が化けたり、JIS X 0208の英数字をISO 8859-1に変換したり
するのは、少なくとも2chの閲覧に限っては問題あると思います。
閲覧するだけならどうでもいい話ですが、引用時にそれを行うのは著作者人格権の
同一性保持権を侵害していることになります。
0658Kusakabe Youichi
NGNG> JIS X 0201仮名が化けたり、JIS X 0208の英数字をISO 8859-1に変換したり
はつみみです。
0659デフォルトの名無しさん
NGNGstrcmpで文字列でなく (見た目上)文字を比較する方法を編み出したよ!
やり方は簡単さ!
int a = 'a';
int b = 'b';
if( strcmp(&a,&b) )printf("chigau\n");
ほら、これなら 文字を比較 してるように見えるだりろぉ?
あー石投げるな〜機種依存〜
0660デフォルトの名無しさん
NGNG変数名、引数名が適当すぎる。
それじゃ添削以前に、やってることが理解できないから
読む気がしない。
もっと意味のある変数名にするか、コメントで説明をつけてくれ。
変数名がちゃんとしていれば、コメントは最小限で済む。
0661デフォルトの名無しさん
NGNGif ( a < b ) kill(>>659);
0662Kusakabe Youichi
NGNG> つまらない。
> if ( a < b ) kill(>>659);
2項演算子ですね。
0663デフォルトの名無しさん
NGNG0664Kusakabe Youichi
NGNG> 下位7ビットでasciiをサブセットに持っていない文字コードは何があるの?
いくらでもあるとおもうが。
0665デフォルトの名無しさん
NGNGつまらない、って一刀両断することも無いだろ。
どうして特定の環境で>>659のコードが正しく動いてしまうのか
ということを考えてみた方が面白くはないか?
少なくとも俺が昔このコードを読ん
0666デフォルトの名無しさん
NGNG具体的に教えて。
そしてその文字コードを使うOSも教えろゴラア。
0667デフォルトの名無しさん
NGNG読ん?続きないの?
0668デフォルトの名無しさん
NGNG> 少なくとも俺が昔このコードを読んだときには一目で動く理由がわかったぞ
0669デフォルトの名無しさん
NGNG> 少なくとも俺が昔このコードを読んだら一目で恋に落ちたぞ
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGRS232Cシリアルポートの送受信ってどするのでしょう?
0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNGI/Oポートに直接ガンガン書けばいいんじゃない?
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG割り込みつかうのは邪道?
0676デフォルトの名無しさん
NGNGだいたいOSの上からは割り込みなんて使えんだろ。
0677デフォルトの名無しさん
NGNGリトルエンディアンでも、plain charがsigned charの処理系で
'\377'とかと比較したら面白いことになるな。
0678デフォルトの名無しさん
NGNGえーとレスつくようなのでもう少し説明。
環境 Win98でVC
状況
ぶっちゃけて言うと手付かずです。とりあえずどっかのサンプル見て
勉強してから質問しようと思ったんですけど、それすら見つからなかった。
局地的なプログラムならちらほらあったけど、よくわかるのはなし。
で、参考文献とかでもいいので教えてもらいたい。
目的
とりあえず、受信と送信を確立したい。
たぶんオレはすごく間抜けな質問してるんだろうな・・・みなさん大目にみてください。
ちなみにCの経験は大学の授業レベルです。
(つまりポートやタイマなんて関係のないプログラムしか作ったことないんです)
0679デフォルトの名無しさん
NGNGあとはファイルのリードライトと同じ要領。
ハンドシェイクやプロトコルは適当に自分で考えろ。
ってゆーかVC++関連スレのほうが良いのでは?
0680名無し
NGNGで、news<->2ch Converterの仕様か、iso-2022-jpの仕様かは
知らんが、UNICODE文字が、すべてはmapされない。
だから、Halfwidth Katakanaとかハングルとか、見えなくなってしまう
文字の出てくる可能性だって、あるわけ。
だれが悪いのか、って言えば‥‥‥文化摩擦としか。
#Halfwidth Katakana領域を正しく変換しないコンバータが責任かも
個人的には、UNICODE実体参照とかをどう処理するかも気になるが。
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGこんなのあったけど、どうか。
ttp://www.vector.co.jp/soft/win95/prog/se173131.html
0683681を全角に復元してみました
NGNG> クソカベニ ヨメナイヨウニ ハンカクカナ デカキコモウ 。。。 シネ クソカベ!!!
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0.1*10;
0686デフォルトの名無しさん
NGNG深入りしたくない場合、
予め計算機で計算して即値で 1 と書いておきます。
言語によっては、RationalとかRatio aとかのクラスか型が
有るので、それを使います。
0687686
NGNG0688デフォルトの名無しさん
NGNGそれって数学的に正しい答えが出るって保証されてるの?
0689デフォルトの名無しさん
NGNGint main(void)
って書いてあるけど、これって正しいの?
int main()
のほうがいいんじゃないの?
0690デフォルトの名無しさん
NGNGANSI C準拠のコンパイラならどちらでもいいと思うけど。
0691デフォルトの名無しさん
NGNGmain(void)の方が良いだろう。
0692デフォルトの名無しさん
NGNGあんさん、それプロトタイプ宣言の時だけですぜ。
最後にセミコロンが無いから、689は関数定義の話をしていると思われ。
0693デフォルトの名無しさん
NGNGint main(void);
で、関数の時は
int main()
でいいんですね?
0694デフォルトの名無しさん
NGNGchar 型の範囲が、0 〜 255
のものって生き残ってるの?
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGchar が signed ではなく unsigned のものがあるか、って話?
0698デフォルトの名無しさん
NGNGそう。
getchar()をcharで受けてはいけない。int で受けなさい、という説明で、
現在のコンパイラーでは、charは -125〜126 だけど、古いコンパイラーでは
0 〜 255 だから、EOFで-1を返すgetchar()を受けるときは、安全性を考慮してintで宣言する、という
説明を読んで、そんな古いコンパイラーいまだに使ってるところあるのかよ。と思ったのです。
あと、ANSI的にはどっちが正しいの?
0699デフォルトの名無しさん
NGNG>ANSI的にはどっちが正しいの?
char が符号付か符号無しかは、処理系によって違う。
あたらしい、古いの問題じゃなくて。
0700デフォルトの名無しさん
NGNGgetchar()で返すのはEOFと0〜UCHAR_MAXのUCHAR_MAX+1通り。
(charが8bitの場合は-1〜255の257通りね。)
signed charでもunsigned charでも足りんと思わんか?
0701デフォルトの名無しさん
NGNG/J default char type is unsigned
ちなみに -125〜126 ってのはいったいどこから出てきた数字?
-127〜127 または -128〜127 ならわかるが。
0702デフォルトの名無しさん
NGNG> -127〜127 または -128〜127 ならわかるが。
-127〜127ってのはいったいどこから出てきた数字?
-128〜127 ならわかるが。
0703701
NGNG<limits.h> SCHAR_MIN/MAXの最小値は -127,+127 と規定されとる
世の中「2の補数系」ばかりじゃないからな
0704デフォルトの名無しさん
NGNG> -127〜127ってのはいったいどこから出てきた数字?
1 の補数表現でしょ。
0705Kusakabe Youichi
NGNG> 入門書を見ると
> int main(void)
> って書いてあるけど、これって正しいの?
どの入門書ですか?
0706Kusakabe Youichi
NGNG> >>697
> そう。
> getchar()をcharで受けてはいけない。int で受けなさい、という説明で、
> 現在のコンパイラーでは、charは -125〜126 だけど、古いコンパイラーでは
> 0 〜 255 だから、EOFで-1を返すgetchar()を受けるときは、安全性を考慮してintで宣言する、という
> 説明を読んで、
そりゃ説明が間違っているって。
べつにunsignedのがあるからintになっているわけじゃあない。
いったいどこにそんなウソの説明が書いてあったんだ。
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGhttp://www.bell-labs.com/
0709
NGNG0710デフォルトの名無しさん
NGNGってどんなんだ?
sigaction()の使い方、とかだったらUnix系のフリーソフトのソース
見るんじゃ駄目なのか?
0711デフォルトの名無しさん
NGNGプログラミング止めた方がいいよ
0712デフォルトの名無しさん
NGNG呼び出す前に調べる方法無いですかね?
0713Kusakabe Youichi
NGNG> sprintfが出力する文字数を、
> 呼び出す前に調べる方法無いですかね?
sprintfをエミュレイトする関数をつくればいい:)
0714デフォルトの名無しさん
NGNGfprintf, vfprint で /dev/null (\\.\null) に書き出して、戻り値をチェック。
0715デフォルトの名無しさん
NGNGそれが面倒なので…
>>714
winの場合は"\\.\null"のファイル開いてそこに書き出すってことですよね。
ありがとうございます。
0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG> winの場合は"\\.\null"のファイル開いてそこに書き出すってことですよね。
Yes
ただファイル名は \\.\nul が正解 (l は1つ)ね。すまん。
0718デフォルトの名無しさん
NGNG簡単な奴ご存知でしょうか?
あとひらがなをかたかなに変換する関数とかあったら
お願いします。
0719雪江
NGNG簡単に実装するには、ひらがなデータベースをつくって
全文字比較 ・・・でしょうね。
変換もまた同じです。
文字コード関係は煩雑だから適当なライブラリを拾うといいと思いますよ
がんばって
0720デフォルトの名無しさん
NGNGどうもありがとう! 頑張ります。
0721デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG突っ込まなくてもいいのですか?
文字コードがどうのとか言わなくていいのですか?
0724さんばー
NGNGでデータを送信するプログラムをC+winsockでを書いているのですが、
closesocketするか、プログラムを終了させないとデータが届きません。
おそらくどこかにバッファされてしまっているのでは、
と思っているのですが、どのようにするとすぐにsendした内容が
届くように出来るのでしょうか。
0725デフォルトの名無しさん
NGNGバンド外データとして送信したいのか?
winsock.h
#define MSG_OOB 0x1 /* process out-of-band data */
つーか、スレ違いだけどな。
0726さんばー
NGNGすみません単に間違えました。フラグは0にしています。
perlだと $|=1;してストリームをフラッシュしますよね。
このような動作が必要なのではと思っているのですが・・・
0727デフォルトの名無しさん
NGNG0728味噌醤油醸造株式会社
NGNGint n = 1000000;
puts((const char*)&n);
0729デフォルトの名無しさん
NGNGおいおい、ネタか?
'\0'が見つからなくて暴走する可能性があるぞ。
>>727
> puts() って数字は出力できないの?
できん。文字列に変換しろ。
char buf[100]; // バッファサイズは適当
sprintf(buf, "%d", n);
puts(buf);
0730デフォルトの名無しさん
NGNGしばらく時間がたつと送信されると思うけど
バッファしてほしくないときはsetsockoptでTCP_NODELAYを指定する。
0731デフォルトの名無しさん
NGNGsscanf(line,"%s %s...", data1,data2,...)としたいのですが、
フォーマットの形式が極端に長い場合、これを使うと書くのに時間が
かかるのですが、これ以外の方法はないのでしょうか?
0732デフォルトの名無しさん
NGNGエディタにコピーの機能はないのでしょうか?
0733Kusakabe Youichi
NGNG> sscanf(line,"%s %s...", data1,data2,...)としたいのですが、
> フォーマットの形式が極端に長い場合、これを使うと書くのに時間が
> かかるのですが、これ以外の方法はないのでしょうか?
そんなにかかりませんよ。
全部%sばかりで同じ繰り返しならば、
少しは速くする方法はありますが、まあそれでも3倍速くなるわけではないですが。
0734デフォルトの名無しさん
NGNGEmacs Lisp でマクロを組む。
0735まあ
NGNGこんなのはどう?
0736そもさん
NGNGマルチスレッド化するとき
スレッドセーフでないかもしれない
malloc/free(new/delete)を遣うときは
クリティカルセクションでくるむべきでしょうか?
0737デフォルトの名無しさん
NGNG間に1つクッションいれた設計にしたらどーかしら?
poolアロケーターとか、GCつかうこと考えてもいいんじゃない?
www.annexia.orgにある、c2libってなかなかいいよ。
0738デフォルトの名無しさん
NGNGどうやってつくるんだ?
0739デフォルトの名無しさん
NGNG0740736
NGNGありがとうございます。
メモリ管理を集中的に行うオブジェクトを導入して
オブジェクトのミューテックスにするという理解で良いでしょうか。
なるほど・・綺麗です。
>www.annexia.orgにある、c2libってなかなかいいよ。
ありがとうございます、見てきます〜。
0741デフォルトの名無しさん
NGNG何に使うんだ?
0742デフォルトの名無しさん
NGNG何なのか教えてください。
c2libはこの前つかったんですがUNIX系な環境でCでサーバー
書く目的には便利ですよ。Apacheのpoolベースの文字列、
各種コンテナ関数が独立したライブラリになったようなかんじです。
0743736
NGNG>スレッドセーフじゃないかもしんない環境って
古い libc や DOS+gcc や組み込み系のオールドな環境です
今日びスレッドセーフでない環境のほうが珍しいと思われます。(^^;
0744デフォルトの名無しさん
NGNGunsigned 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);
0745デフォルトの名無しさん
NGNGそうでしたか。Thanksです。気を使うことが多くて大変そうですね。
パズルといてるみたいで面白いかも?
処理効率の面で許されるならなるたけ「富豪的」にGCやプールで
ラクしたいですね。Bohem GCやc2libは使えるかどうか不明ですが、
参考にはなりそうですね。
0746736
NGNG>処理効率の面で許されるならなるたけ「富豪的」にGCやプールで
>ラクしたいですね。
はい。スレッド消滅時にはアロケートしたメモリは解決する必要が
あるのでGCに処理してもらえると楽になります。メモリ管理だけでも
(私にとって)奥深いです。
0747デフォルトの名無しさん
NGNGえっと話かわりますが、Hoardっつーのを思い出しました。
dosとか古いlibc向け用途にはダメですが、なかなか
ぐっとくる宣伝文句ですよ。
http://www.cs.utexas.edu/users/emery/hoard/
0749雪江
NGNGhttp://3.141592653589793238462643383279502884197169399375105820974944592.jp/
円周率です。どうぞ。
0750デフォルトの名無しさん
NGNGconst char *PI =
"3.14159265358979323846264338327950288419716939937510"
"58209749445923078164062862089986280348253421170679";
int main()
{
puts(PI);
return 0;
}
0751デフォルトの名無しさん
NGNGグローバルで、
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には何にも格納されていないのですが、
なにか根本的に間違ってますか?
0752デフォルトの名無しさん
NGNG間違ってるようにま見えません。
なにか他のことが原因になってるのでは?
0753デフォルトの名無しさん
NGNGほかの参考書などをみるに、ほとんどが
void main()内で、
struct _data data[16]などと
やっているものが多く、グローバルなデータベースとして
扱っているものが見当たらず、できないのかとも思ってしまいました
・・・・なんででしょ(・・・少しいらいらします)
0754デフォルトの名無しさん
NGNG的外れかもしれませんがvolatile宣言をつけてみてはどうでしょうか?
0755Kusakabe Youichi
NGNG> >>752
> ほかの参考書などをみるに、ほとんどが
> void main()内で、
> struct _data data[16]などと
どんな本を読んでいるのでしょうか?
0756Kusakabe Youichi
NGNG> 構造体のところではまっているのですが、
> グローバルで、
(中略)
> なにか根本的に間違ってますか?
(1)「グローバルで」といいつつ関数定義のスコープ内で行っている。
(2)「別関数」といいつつ実はそれはべつのコンパイル単位にある。
(3)「値が格納されていない」ってのは実はコンパイルエラーがでてる。
(4) func1を呼び出す前にfunc2を呼び出していた。
(5) 実はfunc1は呼び出されていなかった。
(6) 1のつもりでlと書いていた
...
なんてことがないことを示すために
ソースをそのまま書いた方が早いと思うが。
0757731
NGNGレスありがとうございます。
楽せずにコピペを繰り返すことにしました。
0758人間のくず
NGNGという問題教えてくれませんか?
if構文の問題なんですがelse if などがよく分かりません
0759初心者
NGNGファイルから文字列を読み込み表示してそれをタイプ
するんですがどうしても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);
}
0760初心者
NGNG0761デフォルトの名無しさん
NGNGうるう年の計算方法はわかりますか?
0762デフォルトの名無しさん
NGNG>char honbun[10],fname[5],type_moji[10];
いろいろあるけど、とりあえず、こうしてください。
char honbun[1024],fname[256],type_moji[1024];
0763初心者
NGNGやっぱり出来ませんです。
0764HELP!!
NGNG↑
966-967
0765デフォルトの名無しさん
NGNGファイルのオープンは成功してますか?
0766758
NGNGそれくらいは分かります。
月が2・4・6・9・11月でないときは31日。
月が4・6・9・11月のときは30日。
月が2のとき
西暦が100の倍数のとき400の倍数のときはうるう年で29日
そうでない場合は28日
西暦が100の倍数ではないが4の倍数のときうるう年で29日
そうでないときは28日
これをどう書いたらいいのかよく分からないんです。
0767?Sメ
NGNGファイルはオープンできてます。
読み込んだ文字列を表示して終ってしまいます。
0768Kusakabe Youichi
NGNG> 西暦が100の倍数のとき400の倍数のときはうるう年で29日
> そうでない場合は28日
> 西暦が100の倍数ではないが4の倍数のときうるう年で29日
> そうでないときは28日
2行めと4行めは同じ場合では?
あと「4の倍数じゃないとき」を忘れてますね。
> これをどう書いたらいいのかよく分からないんです。
ちゃんとした入門書でも買ったらどうでしょう?
0769初心者
NGNG<<759
お願いします。
0770デフォルトの名無しさん
NGNGもっと簡単に、
西暦が400の倍数のとき、29日
!(西暦が100の倍数) && (西暦が4の倍数)、29日
その他、28日
とすれば。
0771名無し
NGNG0772デフォルトの名無しさん
NGNGhttp://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/
これでいけるかな?
ちいうか検索くらいしれ。
0773名無し
NGNG西暦が400の倍数のとき、29日
西暦が100の倍数のとき、28日
西暦が4の倍数のとき、29日
その他、28日
の方が素直な感じがするけどな。
0774Kusakabe Youichi
NGNG> Kusakabe Youichi さん
> <<759
> お願いします。
ん? それは何ですか?
0775デフォルトの名無しさん
NGNGまっ、それでもいいけど(W
0776初心者
NGNG出来ました。ありがとうございました。
>> Kusakabe Youichi
759をやってもらいたかったのです。
でも出来ました。また宜しくお願いします。
0777初心者
NGNGことによって終った場合 改行文字が含まれていますよね。
それを消す方法はないんですか?
0778名無し
NGNG0779デフォルトの名無しさん
NGNGこれはstdio.hには入っていない関数なんですか?
そんなもの定義されていないってエラーくらいました…。
どの本見ても他のヘッダファイルをインクルードしていないのに
この関数が当たり前のように使われているんですが。(カニチャーハンですら)
なにか私の知らないインクルード技術を使っているっていうことなんでしょうか?
0780名無し
NGNG0781Kusakabe Youichi
NGNG> 出来ました。ありがとうございました。
> >> Kusakabe Youichi
> 759をやってもらいたかったのです。
なんだろう?
0782初心者
NGNG0783Kusakabe Youichi
NGNG> fgetsでとってきた文字配列には改行を読み込む
> ことによって終った場合 改行文字が含まれていますよね。
> それを消す方法はないんですか?
Do you have a rubber? (英)
Do you have an eraser? (米)
172ペイジに書いてありますよ > それを消す方法は
0785Kusakabe Youichi
NGNG> ファイルオープンをエラーしたときにexit関数を使いたいのですが、
> これはstdio.hには入っていない関数なんですか?
stdlib.hには入ってるのでは?
> そんなもの定義されていないってエラーくらいました…。
ほんとにエラーになったんだろうか...。
> どの本見ても他のヘッダファイルをインクルードしていないのに
> この関数が当たり前のように使われているんですが。
ちゃんとした入門書読んだら?
0786デフォルトの名無しさん
NGNGstdlib.hに関数が入っているのですか?
はつみみです
0787(・∀・)イイ
NGNG関数プロトタイプと標準ライブラリ関数って何ですか?
0788Kusakabe Youichi
NGNG> stdlib.hに関数が入っているのですか?
> はつみみです
わたしもはつみみです。
0789Kusakabe Youichi
NGNG> 関数プロトタイプと標準ライブラリ関数って何ですか?
前者は82、270ペイジ、
後者は77ペイジに書いてありますよ、
0790デフォルトの名無しさん
NGNG> わたしもはつみみです。
わたしははつみみです。
0791779
NGNGちゃんとした入門書…というのはどういうことでしょうか?
K&Rは名著だと聞いていたのですが…。(日本語版P199を参考にしました)
エラーになったことを証明しろといわれても。
VC++で
D:\VisualStudio6.0\VC98\make\Text.cpp(13) : error C2065: 'exit' : 定義されていない識別子です。
と言われているんですが…これでは証明になりませんか?
たしかにstdlib.hをインクルードすると動きます。
でも、参考書がインクルードせず載せているのが何故か、理由が知りたいのです。
わたしははつかねずみです。
0794Kusakabe Youichi
NGNG> >>785
> ちゃんとした入門書…というのはどういうことでしょうか?
K&Rでだめなら、ちまたにいっぱいある入門書から、ましなのをえらべという
程度の意味です。
> たしかにstdlib.hをインクルードすると動きます。
じゃあすればいいじゃん。
> でも、参考書がインクルードせず載せているのが何故か、理由が知りたいのです。
そういうのはK&Rに書いてあるので読めばわかると思うのですが、
K&Rの説明で意味がわからないなら、ほかのを読んだら? というだけのことです。
0795デフォルトの名無しさん
NGNGマジレスするとK&Rの本はあの人たちが
「おれたちゃーこういう風に使ってるんだよ」
と紹介してる本であって、間違っても入門書じゃないです。
もちろん入門書としても最高峰に位置しますが。
記述が抜けてるのは当たり前田のクラッカー って感じです。
はつみみですか?
はい、はつみみです。
0796779
NGNGVC++の使い方がまずかったということでしょうか。申し訳ありませんでした。
まだVC++を手に入れたばっかりなので、そのあたりが全然わかっていないのです。
Cプログラムを作っていたつもりが、C++プログラムを作っていたのですね。
これからVC++でCプログラムを作るための修行に逝ってきます。
0797Kusakabe Youichi
NGNG> マジレスするとK&Rの本はあの人たちが
> 「おれたちゃーこういう風に使ってるんだよ」
> と紹介してる本であって、間違っても入門書じゃないです。
いえ、わかりやすい解説がしてある入門書だと思いますよ。
0798779
NGNGC言語を作った人たちの本なのだから、間違った記述などまったくないという前提で読んでいました…。
記述が抜けているなんて、はつみみです(笑
0799Kusakabe Youichi
NGNG> まだVC++を手に入れたばっかりなので、そのあたりが全然わかっていないのです。
どうやって手に入れたのですか?
0800Kusakabe Youichi
NGNG> >>795
> C言語を作った人たちの本なのだから、間違った記述などまったくないという前提で読んでいました…。
っていうか、C++はCのスーパーセットではないですよ。
> 記述が抜けているなんて、はつみみです
記述が「抜けている」とはだれもいってないのでは?
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNG>>795 で書きましたが、書いてないことにしたいのですね? :)
0803デフォルトの名無しさん
NGNG教え方はうんこレベルです。
もともと、スペーストラベルをやりたいがために、わざわざOSから組んじゃう基地害です。
そのOSを組むためにわざわざ新しい言語をつくっちゃうキモイ人達です。
関わらないほうが身のためです。
0804Kusakabe Youichi
NGNG> K&R はコンピューターと同化しちゃってるやばいヲタであって、
> インストラクターではありません。教え方はうんこレベルです。
そう思い込めば自分が理解できなかった現実をごまかせると思ったんでしょうかね :)
カーニハンは文章もうまいし、教え方もいいですね。
他の著書でも感心してしまいます。
あとは全体の構成力とか、すごいと思います。
> もともと、スペーストラベルをやりたいがために、
> わざわざOSから組んじゃう基地害です。
それはTompsonですね。
> そのOSを組むためにわざわざ新しい言語をつくっちゃうキモイ人達です。
それはふつうでしょう。
わたしもよくやりましたし。
0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNG0807Kusakabe Youichi
NGNG> 糞壁はC++が出来ない石器人 (・∀・ )芹何嚇挿挿伽泗
ということにしたいのですね? :)
0808デフォルトの名無しさん
NGNGそのとおり、本物はどうでもいい昔話が好きなちょっとウザイおじいちゃんです。
完全無視を心掛けましょう。 B-)
0809デフォルトの名無しさん
NGNG0810Kusakabe Youichi
NGNG> kusakabeはむかつくことを言うときに使用する共用ハンドルですか?
っていうかわたしはごく普通のことしか言ってないのですが、
何が気になるんですか?
0811Kusakabe Youichi
NGNG> >>806
> そのとおり、本物はどうでもいい昔話が好きなちょっとウザイおじいちゃんです。
ということにしたいのですね? :)
0812デフォルトの名無しさん
NGNG折角でしゃばって名前入れてもらったんだから
NKF32使えば? って又雑談ごめんなさい→他の人
0813デフォルトの名無しさん
NGNG0814Kusakabe Youichi
NGNG> って又雑談ごめんなさい→他の人
本気でそう思っているなら、えらそうに書かなきゃいいのに
(実際には思ってもいないことを書いたのだろうけど)
0815Kusakabe Youichi
NGNG> って又雑談ごめんなさい→他の人
本気でそう思っているなら、えらそうに書かなきゃいいのに
(実際には思ってもいないことを書いたのだろうけど)
0816デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG> 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++は微妙に違う
0820(・∀・)イイ
NGNG#define NDEBUG
の
NDEBUGは何をするものなんでしょうか?
0821デフォルトの名無しさん
NGNGなにもしないよ
0822デフォルトの名無しさん
NGNGデバッグ用のマクロを無効にするやつ。
詳しくは検索してちょ。
0823デフォルトの名無しさん
NGNGするだろ。
>>820
assert() を検索。
0824(・∀・)イイ
NGNGわかりました。ありがとうございます。 m(_ _)m
0825教えてくん
NGNG1.実行ファイルのあるディレクトリの取得方法
2.隠しファイルの作り方
OSはUNIX系です。
0826デフォルトの名無しさん
NGNG移植性のある方法はない。
0827教えてくん
NGNG0828デフォルトの名無しさん
NGNG条件付きコンパイルでいいじゃん。
0829デフォルトの名無しさん
NGNG> 1.実行ファイルのあるディレクトリの取得方法
一般的にはargv[0]をみてPATHを検索するとかくらいしかないが、不確実。
> 2.隠しファイルの作り方
ファイル名の先頭に.(ピリオド)をつける
0830Kusakabe Youichi
NGNG> 1. 実行ファイルのあるディレクトリの取得方法
man sh
> 2. 隠しファイルの作り方
man chmod
manの使い方がわからないなら、
man man
0831Kusakabe Youichi
NGNG> > 1. 実行ファイルのあるディレクトリの取得方法
> 一般的にはargv[0]をみてPATHを検索するとかくらいしかないが、不確実。
「実行ファイルのある」をその意味にとりましたか...。
っていうかunixだったら、そこには入ってないのでは?
0833デフォルトの名無しさん
NGNGsystem関数じゃだめなのか?
0834デフォルトの名無しさん
NGNG> 1. 実行ファイルのあるディレクトリの取得方法
man which
0835教えてくん
NGNG0836Kusakabe Youichi
NGNG> シェルではなく、C言語でコーディングする方法はありませんか?
man fchmod
Cの入門書の1つぐらい買いましょう。
0837教えてくん
NGNG入門書も持ってますけど、標準関数を網羅したのは高いので…。
リファレンスとして、LSI-Cのマニュアルを使っています。
だからUNIXだとわからないことが多いんですよ。
0838デフォルトの名無しさん
NGNGなら素直に従ったら?
0839デフォルトの名無しさん
NGNG> 「実行ファイルのある」をその意味にとりましたか...。
あぁ、自分自身じゃなくてか。
> っていうかunixだったら、そこには入ってないのでは?
だから不確実だって。
Linux限定なら
readlink("/prco/self/exe", buf, sizeof(buf))
で自分自身のパスも取れるけどね。
0840デフォルトの名無しさん
NGNG> man fchmod
>
> Cの入門書の1つぐらい買いましょう。
Unixの入門書じゃなくて?
0841Kusakabe Youichi
NGNG> 入門書も持ってますけど、標準関数を網羅したのは高いので…。
標準ともかぎりませんよ。
それに「高い」って、いくらぐらいまでなら買えるのですか?
> リファレンスとして、LSI-Cのマニュアルを使っています。
> だからUNIXだとわからないことが多いんですよ。
manならタダじゃん。
0842Kusakabe Youichi
NGNG> >>831
> > 「実行ファイルのある」をその意味にとりましたか...。
>
> あぁ、自分自身じゃなくてか。
いや、どっちの意味かわたしもわからないです。
わたしはたぶんそっちじゃないと思う。
0843Kusakabe Youichi
NGNG> >>836
> > man fchmod
> >
> > Cの入門書の1つぐらい買いましょう。
> Unixの入門書じゃなくて?
そっちはmanでいいのでは?
お金ないみたいだし。
0844デフォルトの名無しさん
NGNGという属性があるの?
0845デフォルトの名無しさん
NGNGDOS でいうところの隠しファイル扱い。
0846839
NGNGreadlink("/proc/self/exe", buf, sizeof(buf))
欝山車
0847Kusakabe Youichi
NGNG> Kusakabe氏はchmod系列の関数を出してるけど、Linuxって「隠しファイル」
> という属性があるの?
...
そのファイルの属するディレクトリーのrとxで隠すっていう意味じゃなく?
0848デフォルトの名無しさん
NGNGお前の生まれた皮革産業地域以外では
UNIXの隠しファイルはドットファイルの事指すんだよ
役立たずはとっとと消えろ、四足が
0849Kusakabe Youichi
NGNG> ヴぁーカそりゃディレクトリの属性だろが
そうですよ。-rのときと-xのときの違いはわかってますよね? (わかってないのかな?)
> UNIXの隠しファイルはドットファイルの事指すんだよ
はつみみです。それは隠しファイルとは呼ばないような.。
0850デフォルトの名無しさん
NGNG0851Kusakabe Youichi
NGNG> すごい言われようだ (^−^;
ですね。でも結局は自分が恥をかくだけ...っていうか
言えばいうほどあとで恥ずかしいだけでしょうけど、
でもまあ匿名ですからね。
0852デフォルトの名無しさん
NGNGが正解なんじゃないかなあ。
0853Kusakabe Youichi
NGNGKusakabe Youichiで間違った事書いても、所詮、偽者だって言えば済む事ですしね。
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGNetNewsに於いてのみだよ。
ここだと常識を超える質と量の厨房に圧倒されて中々力を発揮出来ないと思ってるね。
後コイツは頭の回転が悪いからIRCだと駄目なんだよ、実際この粘着レス考えるのにも
ある程度考える時間が居るってのが痛いね。まあその点では善人って訳よ(アヒャ
まあ俺みたいな先天的ムカツキ発言野郎にはRCじゃ遠く及ばんわけよ OK?
0856デフォルトの名無しさん
NGNGおまえはKusakabe玄人。それでいいよ。
0857デフォルトの名無しさん
NGNG0858Kusakabe Youichi
NGNG> >>851
> Kusakabe Youichiで間違った事書いても、所詮、偽者だって言えば済む事ですしね。
っていうか、とくに間違ったこと書いてないからもんだいないですね。
#「事」はひらがな。
0859Kusakabe Youichi
NGNG> お前素人だろ、糞壁通の俺から言わせてもらえばコイツが潜在能力のすべてを
> 発揮するのはNetNewsに於いてのみだよ。
そう自分に言い聞かせると安心できるのですね :)
> ここだと常識を超える質と量の厨房に圧倒されて中々力を発揮出来ないと思ってるね。
それは「希望」ですか? :)
> 後コイツは頭の回転が悪いからIRCだと駄目なんだよ、
はつみみです ;)
0860デフォルトの名無しさん
NGNG初心者の漏れにとっては、すごくいいスレだったのだが。
「彼のいない」C言語質問スレってある?
もしあるならそこへ行って質問したいんだけど。
0861デフォルトの名無しさん
NGNGお前がここで聞いて、誰かが答えた時点でその板はもう
「彼のいない」C言語質問スレではない。
徹底的に無視して聞くか、だめなら2ちゃんでは聞くな。
0862デフォルトの名無しさん
NGNGホットゾヌを入れて NG ワードに Kusakabe Youichi と指定しろ(メニューバーから [ツール]
- [NGワード設定])。これでヤツの発言は自動的に透明あぼーんされる。
0863Kusakabe Youichi
NGNG> もうここではC言語の質問を出来そうにないな…。
ということにしたいのですね?
0864デフォルトの名無しさん
NGNG:)←これはどうした?
0865Kusakabe Youichi
NGNG>:)←これはどうした?
ということにしたいのですね? :)
0866デフォルトの名無しさん
NGNGそうです。そうしたいです。
それ以外にどの様に読めますか?
0867デフォルトの名無しさん
NGNGscanf("%s")でfputs関数を使うのと、scanf("%c")でfputchar関数を使うのはどちらがいいですか。
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGどっちでもいいよ。
scanf()は使わないにこしたことはないけどね。
0870デフォルトの名無しさん
NGNGgetchar(), putc()
そもそもCにはfputcharという標準関数は存在しないし、
putcharは標準出力に出力する。
# その機能はcatでもできるような気がするが(゚ε゚)キニシナイ
0871867
NGNGごめんなさいです。fputc使おうと思ってました。
どっちでもいいのはわかるんですが、一般的にどちらが使われているのか
知りたくて質問しました。
あと、もしstrという配列(バッファというやつですか?)を使ってファイルに書き出そうとしたら、
要素数はどのくらいがいいんでしょうか。
やっぱりstr[256]とか2の倍数がよいのでしょうか?理由は知りませんが…。
0872デフォルトの名無しさん
NGNGということにしたいのですね? :)
ってサッパリ意味がわからん。
何これ、キティ語なの?
0873デフォルトの名無しさん
NGNGその質問はスレ違い。
マ板の該当スレで聞け。
0874デフォルトの名無しさん
NGNGどこくらいのバッファがいいかは、実際に動かす環境で
実験してみるしかないね。
標準入出力関数を使えば、一応バッファリングはしてくれるから、
そんなにせいいっぱいの性能を求めるんじゃなかったら、
一文字ずつ処理してもいいよ。
0875デフォルトの名無しさん
NGNG最近のマシンなら、1メガくらいとってみるとか。>バッファ
0876867
NGNGありがとうございます。
レスを読むと、どうも文単位で読み込むのが常識みたいですね。
とりあえずscanf("%s")→putsで作成してみます。
0877デフォルトの名無しさん
NGNGバッファサイズは BUFSIZ を使うのが普通かもね。
だが、普通は getc()/putc()マクロを使えば十分速いです。
fgetc()/fputc() はたぶん一番遅いっす。
0878デフォルトの名無しさん
NGNG866 に返事を書けないことでわかるが、無意味な言葉。
「ぼく、降参」程度に受け止めておけばよい。
0879デフォルトの名無しさん
NGNGscanf("%s") 使うぐらいなら、fgets() 使えって。
キケンでなおかつ遅くて良いことないよ。
0880デフォルトの名無しさん
NGNG> とりあえずscanf("%s")→putsで作成してみます。
scanfでファイルの終わりをどうやって検出しようと思っているのか
小一時間問いつめたい
# まぁ無理すればできなくはないが...
0881デフォルトの名無しさん
NGNGscanfを使うと、シロウトあつかいされますよ。
0882デフォルトの名無しさん
NGNG戻り値見ろよボケ。
0883867
NGNGファイルの終わりはctrl+Dで出力します。(UNIX環境です)
学校の自習問題の一部ですので…。
fgets()ならEOFの時NULLが返るので扱いやすいのでしょうか。
でも、これだと先ほどのstr[256]とかしたときに256文字を越える行が
出て来ると処理できないのかと思うのですが。
たとえば260字の行が出てきたら、最後4文字が読み込めないのではないですか?
これが気になってscanfを使おうと思っていたのです。
無知でスミマセン。
0884867
NGNGほんと素人なので、右も左もわかんないんです。
なぜscanfを使うべきではないのか、理由を教えてもらえないでしょうか?(煽りではなく、マジ質問です)
0885デフォルトの名無しさん
NGNGそれでもバッファオーバランを防止できないんですよ
そこでまたブチギレですよ。
0886デフォルトの名無しさん
NGNG> でも、これだと先ほどのstr[256]とかしたときに256文字を越える行が
>出て来ると処理できないのかと思うのですが。
fgetsは2回に分けて読めばいいのですが、
scanf, getsだと256文字を越える行が出て来ると
何が起こるかわかりません。
0887867
NGNGあ、二回に分けて読むことができるんですね。
それだとどんな長い文がきても安心できます。
ありがとうございます。
fgets→fputsでやってみることにします。
0888デフォルトの名無しさん
NGNGgetchar(),fputc()で一文字ずつ処理したほうが簡単かも。
0889デフォルトの名無しさん
NGNGヤーヤーヤー
0890867
NGNG標準入力からファイルに書き出す時は、ファイルオープン、ファイルクローズをしなくてもよいのでしょうか?
0891デフォルトの名無しさん
NGNG> 標準入力からファイルに書き出す時は、ファイルオープン、ファイルクローズをしなくてもよいのでしょうか?
標準入力、標準出力、標準エラー出力は最初からopenされていて、
プログラム終了時にcloseされていることは保証されている。
だから(゚ε゚)キニシナイ
0892867
NGNGレス下さった皆さん、本当にありがとうございました!
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNGバッファサイズ指定しろあゴルァ
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGアンサーブックの通りになっていたのですか。
いや簡単なやつなら全く同じになりますが
複雑な方はちょっと
0897Kusakabe Youichi
NGNG> > とりあえずscanf("%s")→putsで作成してみます。
> scanfでファイルの終わりをどうやって検出しようと思っているのか
> 小一時間問いつめたい
> # まぁ無理すればできなくはないが...
そう「無理」はしなくてもいいでは?
0898Kusakabe Youichi
NGNG> ファイルの終わりはctrl+Dで出力します。(UNIX環境です)
> 学校の自習問題の一部ですので…。
その授業ではどんな教科書を使っているのですか?
0899Kusakabe Youichi
NGNG> >>881
> ほんと素人なので、右も左もわかんないんです。
<--こっちが右 こっちが左です-->
# 信用するかな?
> なぜscanfを使うべきではないのか、理由を教えてもらえないでしょうか?
教科書にそんなことも書いてないのですか?
0900!f84%3dm2
NGNG書いてない教科書多いと思うけど。
0901Kusakabe Youichi
NGNG> > 教科書にそんなことも書いてないのですか?
>
> 書いてない教科書多いと思うけど。
いい教科書を選びましょうね。
0902ig
NGNGc言語のキャストについての質問です。
環境は、Solaris2.6&SUNのccコンパイラです。
(intを返す関数へのポインタ)を(longを返す関数へのポインタ)型に
キャストするにはどのようにコードを書けばよいのでしょうか?
---以下、詳しい説明
(longを返す関数へのポインタ)をメンバ変数に持つ構造体
を宣言しました。
仮にこの構造体を
typedef struct {
long (*function)();
} sa;
とtypedefするとします。
その後、.cファイルの中で
sa va[]={{a},{b},{c}}
てな感じで宣言したいのです。
ただし、a(),b(),c()は、intを返す関数として定義してしまって
るんですよね…
だからキャストして{警告: 初期値設定の型が一致していません}
ってな警告を黙らせたいなと思ってます。
0903デフォルトの名無しさん
NGNGtypedef int (*int_func)();
sa va[]={{(int_func)a},{(int_func)b},{(int_func)c}}
動作確認してないけど、こんな感じかな?
0904ig
NGNG>>デフォルトの名無しさん
ありがとうございます。
このやり方でコンパイラは黙ってくれました。
ただ、
typedef long (*long_func)();
でしたけども。
0905デフォルトの名無しさん
NGNG>typedef long (*long_func)();
だね。スマソ。
0906デフォルトの名無しさん
NGNGいような奴は最初から見込みないと思う(ゲラ
0907デフォルトの名無しさん
NGNG話が見えませんが…
0908Kusakabe Youichi
NGNG> ただし、a(),b(),c()は、intを返す関数として定義してしまってるんですよね…
> だからキャストして{警告: 初期値設定の型が一致していません}ってな警告を黙らせ
喇叭を使う :-P
0909Cハッカー日下部陽一
NGNG早めの移行をお願いします。
http://pc.2ch.net/test/read.cgi/tech/1008300863/l50
レス数が900を超えています。1000を超えると表示できなくなるよ。