C言語なら、俺に聞け! <11>
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001スーパーハッカー 日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
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プログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通のようだぞ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するようなヤツはこれでも買え。
これでわからない、救いがたいヤツはあきらめろ。
・作ってわかるCプログラミング(アヒル本と呼べば通のようだぞ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419
・前スレ C言語なら、オレに聞け! <10>
http://pc.2ch.net/test/read.cgi/tech/1008300863/l50
0002デフォルトの名無しさん
NGNGそれでも買ってしまうようなら、Cの才能はないと思え。
0003デフォルトの名無しさん
NGNG教えてください。
0004デフォルトの名無しさん
NGNGsscanf(pData, "%c", &cData);//pDataは文字列のポインタ
このコードが不安定なんです。
0005デフォルトの名無しさん
NGNGOSは Sun0S4.1.3 です。
0006デフォルトの名無しさん
NGNG何を?
>>4
不安定って具体的にどういうこと?
>>5
どんなメッセージが出てるの?
コンパイラの種類は?
# SunOSにはデフォルトでccはついてないような気がする
00075
NGNGありがとう!とりあえず cc をインストールしてみる事にします!
0008Kusakabe Youichi
NGNG> おれは42才、24年間プログラムを一生懸命作ってきた。
それってかなりおちこぼれでは? :)
0009Kusakabe Youichi
NGNG> 「作ってわかるCプログラミング」を書店で見て、
> それでも買ってしまうようなら、Cの才能はない
「ということにしたい」:) ?
0010デフォルトの名無しさん
NGNG長い間プログラムを作ってると落ちこぼれなのかよ。
あんただって、まだJavaとかやってるんだろ?
0011デフォルトの名無しさん
NGNGさーね、5年後くらいにはっきり結果がでるんじゃない。
三田本みたいにいわれないといいけどね(反語表現
0012デフォルトの名無しさん
NGNG臭がりすぎ〜
0013Kusakabe Youichi
NGNG> 長い間プログラムを作ってると落ちこぼれなのかよ。
っていうか、そんなことしかしてないようじゃおちこぼれでしょう。
> あんただって、まだJavaとかやってるんだろ?
Javaをさわるとおちこぼれなんですか? :)
0014Kusakabe Youichi
NGNG> さーね、5年後くらいにはっきり結果がでるんじゃない。
でしょうね。
> 三田本みたいにいわれないといいけどね
そうですね。(さすがにあそこまでひどい本はないでしょうけど)
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGstring,float,float
string,float,float
という形のCSV形式のファイルから1レコードを読み込むにはどうすりゃいいのさ?
0017デフォルトの名無しさん
NGNG001816
NGNGstring,float,float
このレコードを読み込んでから、各フィールドごと変数に入れるには
どうすればよいのですか?
0019Kusakabe Youichi
NGNG>string,float,float
>このレコードを読み込んでから、各フィールドごと変数に入れるには
>どうすればよいのですか?
strtok()でフィールド分割してatof()で変換すればいいのでは?
312ペイジと314ペイジに書いてありますね。
K&R2版の:)
0020Kusakabe Youichi
NGNG>312ペイジと314ペイジに書いてありますね。
>K&R2版の:)
314ペイジと316ペイジでは?
K&R2版の:)
0021デフォルトの名無しさん
NGNG0022Kusakabe Youichi
NGNG> sageクサあらわる
すなおにアヒル本を読めばいいのにね:)
0023デフォルトの名無しさん
NGNG>そんなことしかしてないようじゃ
べつに1は、それしかしてないとは言ってないだろ。
0024あべだす
NGNGBMP画像からRGB値を取りだしたいのですが、
どうすればいいのでしょうか。
手もとの参考書には基礎的な事しか書いてなく、
どう考えても分かりませんでした。
0025デフォルトの名無しさん
NGNGもともと、自分の同類を卑下した書き込みなんだからいいっしょ。
そこまで問い詰めなくても。
障害者が障害者を馬鹿にした発言をするのと同じ思考。
0026デフォルトの名無しさん
NGNG猫でもわかるに、ビットマップがどうたらって章があるけど、
これじゃいかんの?
http://www.kumei.ne.jp/c_lang/index_sdk2.html
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGネタだよね?
0029Kusakabe Youichi
NGNG>BMP画像からRGB値を取りだしたいのですが、
>どうすればいいのでしょうか。
Windowsで一般的に扱われる拡張子BMPの画像はDIBと呼ばれます。
DIBのRGB表現は色深度によってインデクスドカラーとマスクドカラーに分けられます。
16色や256色と呼ばれるのが前者、ハイカラー、フルカラーと呼ばれるのは後者です。
この両者は色データの表現方法が違うので、RGB値を取り出す方法も違ってきます。
まずはDIBのファイルヘッダ情報を解析するところからはじめてはどうでしょうか?
0030デフォルトの名無しさん
NGNGいや、RLE圧縮とかもあるし、オフスクリーンに展開するというのは普通の方
法じゃないか? たぶん1ピクセルだけ取り出して終りってわけでもないだろう
し。
0031デフォルトの名無しさん
NGNGここじゃダメなのか?
http://www.sm.rim.or.jp/~shishido/windows.html
0033Kusakabe Youichi
NGNG>「オフスクリーンに展開するというのは普通」だね。
言葉尻をとった無意味な書き込みはやめたほうがいいのでは?
もっと内容のある情報を共有しましょう:)
003432
NGNG>言葉尻をとった無意味な書き込みはやめたほうがいいのでは?
話の流れを読まずに無意味な書き込みはやめたほうがいいのでは?
>>27「画面に表示してから」に対して
>>30「オフスクリーンに展開するというのは普通」
と書いたから、>>32「だね。」と同意したまで。
よく読め。
#つーか、その名前やめれや。
0035名無しさん@お腹いっぱい。
NGNG林晴比古の本は良くないって本当なの?
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGそれはおかしくない?
0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNG1000行位かましたった方が効果的
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG「作ってわかるC〜」だったかの著者だったとは・・・
あんなんでも本が出せるのか
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG世の中にはさ、なんつーか常識じゃ考えられないソースを
書く人もいるわけよ
0049デフォルトの名無しさん
NGNG本物はもう少し偏屈で根性の曲がった性悪で卑屈な人です。
0050Kusakabe Youichi
NGNG> In article >>21, デフォルトの名無しさん/sage/21 wrote:
> > sageクサあらわる
> すなおにアヒル本を読めばいいのにね:)
それはどんな本ですか?
0051Kusakabe Youichi
NGNG> まずはDIBのファイルヘッダ情報を解析するところからはじめてはどうでしょうか?
ダウト
0052Kusakabe Youichi
NGNG> >「オフスクリーンに展開するというのは普通」だね。
>
> 言葉尻をとった無意味な書き込みはやめたほうがいいのでは?
> もっと内容のある情報を共有しましょう:)
「共有」してどうする:)
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG文句ばっか言ってないでヤホーの掲示板で
困ってる初心者に教えにいってやれよ
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG>> すなおにアヒル本を読めばいいのにね:)
>
>それはどんな本ですか?
ログくらい読めよ。>日下部
人には本買えとか読めとか言ってるくせに。
0057名無しさん@お腹いっぱい。
NGNG0058デフォルトの名無しさん
NGNG引数で、範囲外の値だとかNULLは処理しないのにNULLが渡されたときとか。
配列の値がソートされているはずなのにされてないとか、プログラム内部の
データがおかしいとき。
ファイルとか、キー入力のような外部からのデータにはassert()は使わない。
0059デフォルトの名無しさん
NGNGそういえばそんなのも有ったな。
活用した事が無い漏れって、DQN?
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG0063Kusakabe Youichi
NGNG> 日下部って人が
> 「作ってわかるC〜」だったかの著者だったとは・・・
> あんなんでも本が出せるのか
買ってみればいいのに。
0064Kusakabe Youichi
NGNG> 文句ばっか言ってないでヤホーの掲示板で
> 困ってる初心者に教えにいってやれよ
ヤホー?
0065デフォルトの名無しさん
NGNG>マクロ切ってデバッグビルド時にだけ有効にしとくのが常道。
オレもそう思ってたけど、このまえ読んだ「達人プログラマ」には
リリースバージョンでも残しとけって書いてあった。
(ま、好き好きだと思うけど)
0066デフォルトの名無しさん
NGNG0067
NGNG最近公開されたQuake2のソースとか読みたいんですけど
膨大な数のソースファイル、関数を読むのを支援してくれるツールとかってなんかないでしょうか?
0068デフォルトの名無しさん
NGNGVisual C++
0069デフォルトの名無しさん
NGNGOSくらい示せよ
0070デフォルトの名無しさん
NGNG↑の2.6のAで書かれている
struct name {
int namelen;
char namestr[MAXSIZE];
};
が「規格の厳密な解釈によると許されない」というのが
わかりません。構造体のメンバに配列はだめってこと?
0071デフォルトの名無しさん
NGNGマクロは使ってはならないということ。
0072 67
NGNG007370
NGNGそれは構造体のメンバだから?
それとも普通の配列宣言でもマクロはだめ?
0074デフォルトの名無しさん
NGNGマクロ使うのはOK。
struct a {
int namelen;
char namestr[10];
};
struct b {
int namelen;
char namestr[20];
};
のとき、offsetof(struct a, namestr) == offsetof(struct b, namestr)である
保証がないということ。C99では配列の長さを変数にした場合や省略した場合、
struct c {
int namelen;
char namestr[namelen + 1];
};
struct d {
int namelen;
char namestr[];
};
において、offsetof(struct c, namestr) == offsetof(struct d, namestr)となる
ことが保証されてる。
0075Kusakabe Youichi
NGNG> http://www.catnet.ne.jp/kouno/c_faq/c2.html#0
> ↑の2.6のAで書かれている
> struct name {
> int namelen;
> char namestr[MAXSIZE];
> };
> が「規格の厳密な解釈によると許されない」というのが
> わかりません。構造体のメンバに配列はだめってこと?
その構造体自体は何も問題ないですね。
そうではなく、[1]の一番小さいのだけとって「かぶせて」使うのと同じように、
mallocとかでその構造体のsizeof分だけとるのではなくて、それより小さくとった
ものに「かぶせて」(もちろんnamestrに書くときにははみ出さないように気をつけて)
使うことが問題あるということでは?
007770
NGNG古い規格では構造体内の配列のサイズが違うと、構造体内でのアドレスのオフセット
が同じである保証が無いということですね。
>>75
凄く解りやすい。納得。
本物ですか?(藁
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG> 古い規格では構造体内の配列のサイズが違うと、構造体内でのアドレスのオフセット
> が同じである保証が無いということですね。
C99でも配列のサイズが定数の場合は保証されません。
保証されるのは、新しく導入された可変長配列を使った場合だけ。
0080デフォルトの名無しさん
NGNG保障されないことによって不具合が生じるコードは
例えばどんなものですか?
008170
NGNGどもです。
オフセットが保証されないってことは、仮想的に宣言した配列でかぶせるという
行為自体が危険ですね。
標準規格の変遷にちょっと興味が出てしまいました。
詳しいサイトとか無いでしょうかね。
できれば日本語(^^;
008270
NGNGこういう使い方がマズイということじゃないかな。
struct a{
int namelen;
char namestr[10];
};
struct a{
int namelen;
char namestr[20];
};
foo()
{
struct a *pa;
struct b *pb;
pa = malloc(sizeof(struct a));
/* pa->namestr[] に値をセット*/
pb = (struct b)pa;
/* pb->namestr[] の値を参照*/
}
008370
NGNG訂正です
誤)pb = (struct b)pa;
正)pb = (struct b*)pa;
0084デフォルトの名無しさん
NGNG下のようなコードを書く際、bar()を呼んでもhogeと表示される保証がないという
こと。俺はhogeと表示されない処理系は見たこと無いし、
struct sockaddr_in sin; して bind(s, (struct sockaddr *)&sin...)すら
規格では保証されないことなるのであまりこだわってもしょうがないとも思う。
#define MAXSIZE 1024
struct name {
int namelen;
char namestr[MAXSIZE];
};
void foo(struct name *np)
{
printf("%s\n", np->namestr);
}
void bar()
{
struct my_name {
int namelen;
char namestr[5]; /* 5で充分 */
} n = { 4, "hoge" };
foo(&n);
}
008570
NGNGこんな感じに宣言してたことがあった。(変数名は適当)
#define DATA_HEAD \
int id; \
void *next; \
void *prev; \
int size; \
typedef struct {
DATA_HEAD
data[DATASIZE1];
} DATA1;
typedef struct {
DATA_HEAD
data[DATASIZE2];
} DATA2;
今おもうとC言語で「継承」を実装しようと考えられた結果
なんだろうけど、ANSI的には保証外のコードということにな
りますね。
もちろんそのプロジェクトのプログラムは問題なく動いて
いましたが(^^;
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG| | _________. | |
| | | 故・糞壁を斬る! | | |
| |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | 1.マ板 ∧ ∧ .,, < 粘着にかけては世界一だった!
| | 2.ム板 (,, ゚Д゚)/ビシッ \__________________
| |. :__(__つ__ | |
| | | ギコ猫大助教授 | || オオー
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | サスガ!
|_____________|
0090便乗
NGNG| | _________. | |
| | | 故・糞壁を斬る! | | |
| |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | 1.マ板 ∧ ∧ .,, < 粘着にかけては世界一だった!
| | 2.ム板 (,, ゚Д゚)/ビシッ \__________________
| |. :__(__つ__ | |
| | | ギコ猫大助教授 | || オオー
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | サスガ!
|_____________|
0091デフォルトの名無しさん
NGNGhttp://cheese.2ch.net/cook/
0092Kusakabe Youichi
NGNG> クサカベがお料理板に住み着いてる・・・・・・
> http://cheese.2ch.net/cook/
ここで宣伝するともっと客がくるとでも思ったのですか? :)
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096Kusakabe Youichi
NGNG> ↑ コイツ何必死になってるの?
何か「必死になっている」ことにしたいらしい:)
0097Kusakabe Youichi
NGNG> 相変わらず薄っぺらい人だ
「ということにしたい」
0098デフォルトの名無しさん
NGNGこれがホンモノのデンパってやつ?
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG>In article >>93, デフォルトの名無しさん/sage/93 wrote:
>> ↑ コイツ何必死になってるの?
>何か「必死になっている」ことにしたいらしい:)
>97 名前:Kusakabe Youichi :01/12/30 07:30
>In article >>94, デフォルトの名無しさん/94 wrote:
>> 相変わらず薄っぺらい人だ
>「ということにしたい」
馬鹿?
0101Kusakabe Youichi
NGNG> 宣伝とか客とかわけわからん。
> これがホンモノの(I筑殃澆辰討笋ト?
ってことにすればごまかせるとも思ってるのかな? :)
0102Kusakabe Youichi
NGNG> おこってるおこってる :-)
「っていうことにしたい」? :)
0103Kusakabe Youichi
NGNG> >96 名前:Kusakabe Youichi :01/12/30 07:30
> >In article >>93, デフォルトの名無しさん/sage/93 wrote:
>
> >> ↑ コイツ何必死になってるの?
>
> >何か「必死になっている」ことにしたいらしい:)
>
>
> >97 名前:Kusakabe Youichi :01/12/30 07:30
> >In article >>94, デフォルトの名無しさん/94 wrote:
>
> >> 相変わらず薄っぺらい人だ
>
> >「ということにしたい」
>
> 馬鹿?
ということにしたい?
0104Kusakabe Youichi
NGNG>馬鹿?
ようやく気づきましたか :)
0105デフォルトの名無しさん
NGNG↓の板であなたのことが話題になってますよ。
http://choco.2ch.net/news/
0106デフォルトの名無しさん
NGNG>In article >>100, デフォルトの名無しさん/sage/100 wrote:
>> >96 名前:Kusakabe Youichi :01/12/30 07:30
>> >In article >>93, デフォルトの名無しさん/sage/93 wrote:
>>
>> >> ↑ コイツ何必死になってるの?
>>
>> >何か「必死になっている」ことにしたいらしい:)
>>
>>
>> >97 名前:Kusakabe Youichi :01/12/30 07:30
>> >In article >>94, デフォルトの名無しさん/94 wrote:
>>
>> >> 相変わらず薄っぺらい人だ
>>
>> >「ということにしたい」
>>
>> 馬鹿?
>ということにしたい?
>104 名前:Kusakabe Youichi :01/12/30 07:50
>In article >>100, デフォルトの名無しさん/sage/100 wrote:
>>馬鹿?
>ようやく気づきましたか :)
へ?
0107デフォルトの名無しさん
NGNG104のメアド見ろ。
0108デフォルトの名無しさん
NGNG0109Kusakabe Youichi
NGNG> In article >>100, デフォルトの名無しさん/sage/100 wrote:
>
> >馬鹿?
>
> ようやく気づきましたか :)
意味不明ですね。
0110Kusakabe Youichi
NGNG> >>Kusakabe Youichi
> ↓の板であなたのことが話題になってますよ。
そうやって
ここで宣伝するとお客さんが来るとでも思ってるのですか? :)
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGいみふみょう??
0113デフォルトの名無しさん
NGNGこる?>来る
0114デフォルトの名無しさん
NGNGうん。
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117なぜ?
NGNG今、本に書いてあるプログラムを打ってビルドしてみたのですが
上手くいきません。
平均値を算出するプログラムなんです。
で、好きな数数字を入力した後「^D」と打つと平均値を算出するようなのですが
なぜか「^D」を打った時点で永遠にループしてしまうんです。
ソース載せますので原因を教えていただきたいのです・・・
開発環境はWin98,VisualC++6.0です。
0118なぜ?
NGNGmain()
{
double ave;
int data;
int num=0;
double sum=0;
printf("to terminate input ^D\n");
printf("data=");
while(scanf("%d",&data) !=EOF)
{
sum+=data;
num++;
printf("data=");
}
if(num==0)
printf("can't calculate the average\n");
else
{
ave=sum/num;
printf("the average of %d data is %f\n",num,ave);
}
}
0119デフォルトの名無しさん
NGNG> なぜか「^D」を打った時点で永遠にループしてしまうんです。
> 開発環境はWin98,VisualC++6.0です。
WindowsではキーボードからのEOFは^Zだから。
scanf()が^Dを変換できなくて0を返すので、ループする。
sfanf() != 0にしてみ。
0120できた!
NGNGありがとうございます♪
迅速にお答えいただき大変ありがとうございました。
>119先生
0121Kusakabe Youichi
NGNG> 先生方、質問です!
> 今、本に書いてあるプログラムを打ってビルドしてみたのですが
> 上手くいきません。
> 平均値を算出するプログラムなんです。
> で、好きな数数字を入力した後「^D」と打つと平均値を算出するようなのですが
> なぜか「^D」を打った時点で永遠にループしてしまうんです。
それは本がだめなのでしょう。
0122Kusakabe Youichi
NGNG> >>117
> > なぜか「^D」を打った時点で永遠にループしてしまうんです。
> > 開発環境はWin98,VisualC++6.0です。
> WindowsではキーボードからのEOFは^Zだから。
^Z + 直後の改行では?
(あ、改行の直後の+Zである必要もあるか)
> scanf()が^Dを変換できなくて0を返すので、ループする。
っていうかscanf()つかってる教科書って...。
0123デフォルトの名無しさん
NGNGstdio.hは ""じゃなく <> で囲んどけ。
0124デフォルトの名無しさん
NGNG0125Kusakabe Youichi
NGNG> >>118
> stdio.hは ""じゃなく <> で囲んどけ。
それに、なんで空白あけないんだろう。
なんか悪い本の影響らしいが。
0126デフォルトの名無しさん
NGNGああ あの本ですねきっと (笑
0127デフォルトの名無しさん
NGNGア○ル本?
納得。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG0131Kusakabe Youichi
NGNG> なんでスペース入れることにこだわるのかが前から疑問
っていうかなぜ抜くのか疑問。
0132デフォルトの名無しさん
NGNGうんうん納得。あの本で勉強してもダメでしょ。
もっといい本を買いましょう。
0133Kusakabe Youichi
NGNG> > なんか悪い本の影響らしいが。
> うんうん納得。あの本で勉強してもダメでしょ。
でしょうね > #inlucdeのあと空けない本
0134できた!
NGNGダメダメでしょうか?アヒル本じゃないんですが・・・
一応この本には<>でくくってあるんですが
なんか友達に""でくくった方がカコイイって言われててw
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG<>と""は意味が違います。
0137デフォルトの名無しさん
NGNG自分で用意したファイルだけ""を使え。
#include "./itteyoshi.h" こんな感じに
0138デフォルトの名無しさん
NGNG> #include "./itteyoshi.h" こんな感じに
./ は付けない方がよくないか?
0139デフォルトの名無しさん
NGNG念のためつけてみたが、やっぱりないほうがいいか。
0140できた!
NGNG早速調べてみます。
とりあえずは自分が用意したファイルだけ
""でくくっておけば問題ないわけですね。
なるほど。
もう一つ質問したいのですが、
n=0
と
n==0
とでは何が違うんでしょうか?
イマイチわからないんですが・・・
0141デフォルトの名無しさん
NGNGちょっと本読み直せよ
誰か答えてくれるだろから俺は書かないぞ
0142デフォルトの名無しさん
NGNGn=0 これはnに0を代入
n==0 これはnの値が0と等しいかどうかの比較
0143できた!
NGNGある時から突然使われていたのでどう違うのかなと思ってたんです。
includeについては調べて何となく理解できました。
2重に括るとどうなるかの部分がイマイチ理解できませんでしたが・・・
n==0は比較なんですか・・・
だとすると
if(n=0)
といった構文はおかしいんですね。
くだらない質問にお答えいただいてありがとうございます。
本当に助かりました。
0144デフォルトの名無しさん
NGNGおかしくない。条件式の中で代入することはよくやることだ。
0145144
NGNG0146デフォルトの名無しさん
NGNG0147できた!
NGNGif(n=0)
は必ず偽になるので判別としての意味は無いということですよね?
0148デフォルトの名無しさん
NGNGと言うお話な
でも自分でも調べろゴルァ〜ん
0149できた!
NGNG頑張ってみます♪
本当にありがとうございました。
0150デフォルトの名無しさん
NGNG0151Kusakabe Youichi
NGNG> 大学で使っている教科書なんですが・・・
> ダメダメでしょうか?
タイトルは何でしょうか?
できれば大学名も。
> 一応この本には<>でくくってあるんですが
> なんか友達に""でくくった方が
そのへんの説明は270ペイジに書いてあります。
0152Kusakabe Youichi
NGNG> 意味が違うんですか!?知らなかった・・・
それさえ書いてない教科書なんですかー
なんて言う本だろうか?
> もう一つ質問したいのですが、
> n=0
> と
> n==0
> とでは何が違うんでしょうか?
かなり意味がちがいますね。
どんな本を使っているのだろう?
0153できた!
NGNGアヒル本つかってます。
クソの役にもたちません。
0154Kusakabe Youichi
NGNG> アヒル本つかってます。
> クソの役にもたちません。
と、いうことにしてみたいが、実際には買っていないので、
こじつけができない :)
# こわらがずに買えばいいのにー:)
0155デフォルトの名無しさん
NGNG0156できた!
NGNG0157153
NGNGすまん >156
0158できた!
NGNG0159できた!
NGNG止めれ
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG{
void *v = malloc(size*(nh-nl+1+NR_COMPATIBLE));
if (!v)
return NULL;
else
return v - size*(nl-NR_COMPATIBLE);
}
これさっぱりわからないんです。具体的にこれの返り値ってなに?
あとvoidって返り値無しってことじゃないの?
0163デフォルトの名無しさん
NGNGvoid *は型の決まっていない汎用ポインタ
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGvoid 辞書で引いたら空虚って事だった
なぜ空虚なものへのポインタが型の決まってないものへの
ポインタなのか考えるとミラクルなので
考えない事にします。
0167デフォルトの名無しさん
NGNG新年だよー(・∀・)ノ
0168デフォルトの名無しさん
NGNGの関数はreturnで値を返すと
最初の無名float型の変数に代入されて
呼び出し側で使われる、、
らしい。
0169Kusakabe Youichi
NGNG> こわいから買いません。
こわがりすぎー
0170Kusakabe Youichi
NGNG> これさっぱりわからないんです。具体的にこれの返り値ってなに?
> あとvoidって返り値無しってことじゃないの?
「かえりち」って読むんですか? :)
0171デフォルトの名無しさん
NGNG0172Kusakabe Youichi
NGNGということにしたい?
0173デフォルトの名無しさん
NGNG0174Kusakabe Youichi
NGNG> >そう返り血だ
>
> ということにしたい?
引用の仕方がちがうって。
0175Kusakabe Youichi
NGNG> 草、こわいょぅ > (;´д`)⊃ (^-^;)<こわがりすぎー
元来のこわがりすぎ体質なんですか?
017617歳
NGNGお年玉よこせやゴルァ!
パパ、お願い(はぁと)
0177テレホマン
NGNG0178162
NGNGchar *c=malloc(sizeof(char)*5);
return ++c;
}
void *(testv)(void){
void *v=malloc(sizeof(char)*5);
return ++v;
}
void *(testcv)(void){
void *v=malloc(sizeof(char)*5);
return ++((char*)v);
}
gccとbcc32でコンパイルしてみたら、gccでは全部問題ないのに
bccでは真中のは
エラー E2453 pointerinc.c 12: 'void' 型のサイズは未知あるいはゼロ(関数 testv )になるのは何でだろ
bccでは一番下のと入れ替えてもだいたい意味は一緒ですか?
0179デフォルトの名無しさん
NGNGvoid * に対して演算ができるのはgccの拡張仕様
0180デフォルトの名無しさん
NGNGp++;
の結果はどうなるの?
0181デフォルトの名無しさん
NGNGサイズがわかんねーのにどうやって進めるってんだよ
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG「C言語を勉強しているのですが、ポインタがよくわかりません。教えてください」
みたいなポストがあって、ま、fjみたいな場所に、こんな書き込みをする方もする方だと思いますけれどもそれは取り敢えず置いとくとして、それに対するフォローアップが、
「コンピュータのメモリとアドレスの概念について勉強するのがいいですよ」
とか、
「先にアセンブラを勉強したらどうでしょうか」
みたいな調子だったのを見て、ちょっと暗澹たる気持ちになりました。
0184Kusakabe Youichi
NGNG> 「コンピュータのメモリとアドレスの概念について勉強するのがいいですよ」
> とか、
>
> 「先にアセンブラを勉強したらどうでしょうか」
> みたいな調子だったのを見て、ちょっと暗澹たる気持ちになりました。
ごくふつうの反応では?
0185じゃあ
NGNG0186Kusakabe Youichi
NGNG> 前橋対日下部?
それはだれですか?
0187デフォルトの名無しさん
NGNG-Wpointer-arithですかね
0188_
NGNG0189デフォルトの名無しさん
NGNGそれともしちゃいけないんですか?
0190デフォルトの名無しさん
NGNGkusakabe先生に教えてもらえ w
0191デフォルトの名無しさん
NGNGメモ帳だといくらなんでもキツイので。
できればフリーのエディタがいいです。
0192デフォルトの名無しさん
NGNG超おすすめ
0193Kusakabe Youichi
NGNG> お前はfreeに付いて何も分かって無い
> kusakabe先生に教えてもらえ
とかけばそう思うひとがいるかもしれないという効果を狙って書いたのでしょうか? :)
# 無駄なような。
0194Kusakabe Youichi
NGNG> Cプログラムを書くのにお勧めのエディタってありますか?
viは?
> メモ帳だといくらなんでもキツイので
エディターのせいにしないように
0195189
NGNG0196デフォルトの名無しさん
NGNGだめ
0197デフォルトの名無しさん
NGNGどうすりゃいいんですか?
0198デフォルトの名無しさん
NGNG>>197
どう?
0199Kusakabe Youichi
NGNG> 理論OR演算子が表示できません
> どうすりゃいいんですか?
どんな環境を使っているんだろう。
0200デフォルトの名無しさん
NGNGちゃんとした奴じゃないとダメなのかな?
因みにこれなんだけど
ttp://homepage1.nifty.com/kentake/
0201デフォルトの名無しさん
NGNGどうだすの?
0202デフォルトの名無しさん
NGNG0203Kusakabe Youichi
NGNG> フリーのコンパイラーつかってんだけど
> ちゃんとした奴じゃないとダメなのかな?
> 因みにこれなんだけど
> ttp://homepage1.nifty.com/kentake/
そんなゴミで遊んで時間つぶしている暇があるなら、
ふつうにCの勉強でもすればいいのでは?
0204デフォルトの名無しさん
NGNG普通じゃないのはお前の出た大学だけどね ぷ
0205デフォルトの名無しさん
NGNGbccでも使えば?
0206Kusakabe Youichi
NGNG> ゴミはお前だし
とか意味のない反応してみたところでも無駄でしょう :)
すくなくとも
http://homepage1.nifty.com/kentake/
これはゴミでしょうね。そんなので無駄な時間使う暇があるなら、
ふつうのコンパイラーでも無料なのはいくらでもあるんだから、
それを使えばいいのでは?
0207デフォルトの名無しさん
NGNGYahooBBSで教えてもらったのかな?
0208デフォルトの名無しさん
NGNGこいつ>>204に反応しないなんて大人ですな
0209デフォルトの名無しさん
NGNG/⌒彡
/冫、 )
/ ` ∩
(つ 丿
( ヽノ
し(_)
0210デフォルトの名無しさん
NGNGセンクス
0211ひしたぶ
NGNG0213デフォルトの名無しさん
NGNGchar a[] = { 65, 10, 0};
と
char a[] = { 65, 10, '\0');
は同じと考えてよいのでしょうか。バイナリのdiffを取ると同じになったのですが・・・
0214デフォルトの名無しさん
NGNG同じです。
0215デフォルトの名無しさん
NGNG0217問題
NGNG2.キーボードから入力された学生証番号、氏名、住所をディスプレイに表示するプログラム(このとき実行した人がキーボードから入力した学生証番号などが表示されるようにする)
3.ディスプレイに 整数nを入力するように表示し、0 からキーボードから入力された n 以下の偶数の和を求めその結果をディスプレイに表示するプログラム(2づつ数を増やすには +=2 を用いる)
4.ディスプレイに和を求める 番号 n を入力するように表示し、1,6,11...のような 5飛びの数の1から入力された番号nまでの和を求めてディスプレイに表示するプログラム(注意。k番目の数は 1+5*(k-1) で与えられる。)
5.10人の身長のデーターをキーボードから入力して、その平均をディスプレイに表示するプログラム(繰り返し文を使用すればよい)
6.ディスプレイに二つの 実数を入力するように表示して、キーボードから入力された二つの実数の 和、差、積、商(始めに入力された数割る二番目に入力された数)をそれぞれディスプレイに表示するプログラム
7.優、良、可にする最低点を実行時初めに設定できるようにし、その後キーボードから入力された学生の点数によって成績を優、良、可に振り分けるプログラム
8.キーボードから二つの実数を入力するように表示し、入力された二つの数を大きい順に並べて表示するプログラム
9.個人情報として、 氏名、年齢、住所、電話番号、趣味 を含んだ構造体を用いて、個人情報を入力できるプログラム
10.乱数を用いて 丁半 を表示するプログラム
解ける人は全て解いてみてください。…というよりお願いします(涙)
0218デフォルトの名無しさん
NGNGマルチポストするなよ。
以後この件は宿題スレで。
宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/
0219デフォルトの名無しさん
NGNGそれくらい頑張って自分で解け
0220デフォルトの名無しさん
NGNGchmod("foo", (statbuf.st_mode & S_IXGRP) | S_ISGID);
とあった時S_ISGIDビットがオンになりS_IXGRPがオフになると
詳細UNIXプログラミングのP82に書いてあるのですが
これではS_ISGIDビットだけが立つのではないのですか?
要するに
chmod("foo",S_ISGID);と同じ意味なのではないでしょうか?
間違っているのでしょうか?お願いします。
0221デフォルトの名無しさん
NGNG~S_IXGRP の間違いじゃない?
0222デフォルトの名無しさん
NGNGこんなバイブルと呼ばれている本にも誤植があるのかしら?
0223デフォルトの名無しさん
NGNG読者から指摘を受けて、ちょっとづつ修正しながら10年くらいかけて100%に近づいていくのです。
たまに絶対に間違いを認めない人もいますが。
0224デフォルトの名無しさん
NGNGK&Rの第二版なら303ページに明らかな間違いが(笑)
0226長くてすみません・・・。
NGNG親プロセスからそのプログラムの標準入力へ文字を送り、その文字を加工して標準出力へ
文字を送ってそれを親プロセスから取得するプログラムを作成中なのですが、
うまくいきません・・・。 子プロセスに gets(buffer); printf("TEST[%s]",buffer);と
あるのですが、getsを待たずに、printfへ飛んでしまいます・・・。 親プロセスから得られる出力は、
TEST[] となってしまいます・・・。 どうやったら、子プロセスで実行されるプログラムのgets関数は、
標準入力に親プロセスから送られてくる文字を待ってくれるのでしょうか?
それぞれのコードは、次のメッセージにコピペします。
0227長くてすみません・・・。
NGNGメインのコードが
http://www.geocities.com/foobar_54321/main_code.html
です。
子プロセスで呼ばれるコードが
http://www.geocities.com/foobar_54321/test9.html
です。
よろしくお願い致します。
0228Kusakabe Youichi
NGNG> K&Rの第二版なら303ページに明らかな間違いが
あの訳本なら誤植・誤訳だらけなのは有名ですが、
原書の話ですか? > 303
0229デフォルトの名無しさん
NGNGint main(void)
{
int u=0;
int x;
int y;
int z;
printf("足したい整数の数を入力して下さい:");
scanf("%d",&x);
for(y=1;y<=x;y++)
{
printf("No.%d:",y);
scanf("%d",&z);
u+=z;
}
printf("%d\n",u);
return(0);
}
これでいんだよね?
でも参考書には
#include<stdio.h>
int main(void)
{
int u=0;
int x;
int y;
int z;
printf("足したい整数の数を入力して下さい:");
scanf("%d",&x);
for(y=1;y<=x;y++)
{
printf("No.%d:",y+1);
scanf("%d",&z);
u+=z;
}
printf("%d\n",u);
return(0);
}
とか書いてあるからわけわからん??
0230デフォルトの名無しさん
NGNG変数宣言はまとめたら?
0231デフォルトの名無しさん
NGNG今度からまとめることにします
初期化はまとめとめない方がいいよね?
int x,y,z,u=0;
とか
0232デフォルトの名無しさん
NGNGまとめたって別にいいじゃん?
漏れは、この例みたいな一文字変数ならば>>231みたいにまとめちゃう。
視認性が気になるならば一文字変数はなるべく使わない。
0233デフォルトの名無しさん
NGNGなるほど
thx
0234デフォルトの名無しさん
NGNG画面に複数コントロールを置いたとして
C++などではクラス型にしてサブクラス化すればいいんだろうけれど
Cの場合はどうすればよいんですか?
例えばstatictextの背景色変えたりするのは
設計時に一つ一つのコントロールのwndprocを全部記述しないといけない?
うまい方法があれば教えてください。
最悪の方法はIf文でhandle比較だろうけれど
なんか
http://pc.2ch.net/test/read.cgi/tech/1009190994/337
http://pc.2ch.net/test/read.cgi/tech/1009071535/183
と同じ種類の質問かな?
一番簡単なのは
1)SetWindowLongで GWL_USERDATA に背景色を埋め込む
2)WM_CTLCOLORSTATIC でコントロールハンドルから
GetWindowLongして もう判るよね
事で、背景色だけじゃないなら構造体のポインタを渡してやればいいんじゃないの?
0237デフォルトの名無しさん
NGNGようはsetwindowLongでHandleに構造体のポインターを読ませるということですね。
大体見えてきました。ありがとうございます。
0238
NGNGintはエラー値が返せるつーのはあるんだろうけど、mfcはBOOLだよねぇ
統一できねぇ〜〜
boolの存在意味がわからん。エラー値不要の部分に使うにしてもtrue/falseが逆で混乱の元
一体なんに使うの?
0239デフォルトの名無しさん
NGNG統一しなくていいから、
関数の前に引数と戻り値の説明を
コメントでつけとけ。
0240デフォルトの名無しさん
NGNG1bitで表現できるから、メモリの節約になるんだよ。
(と言ってる人がいたら要注意)
0241デフォルトの名無しさん
NGNGCで書いたプログラムの一部を、アセンブリ言語で書く方法を
教えろよ。
0242デフォルトの名無しさん
NGNGそういう態度なら一生教えません。
0243デフォルトの名無しさん
NGNGなんで? おしえてよ、知りたいんだよ。
0244デフォルトの名無しさん
NGNG処理系依存。
0245デフォルトの名無しさん
NGNGunsigned char asmcode[]にアセンブラコードぶち込んで
そこめがけてジャンプすりゃいいんだよ。
0246デフォルトの名無しさん
NGNG例えば、DOSのCの関数をASMで書くときは、その関数の名前の先頭に
アンダーラインを足した名前のプロシージャを書くだろ? そして、関数を
呼び出すと、関数の引数が右から順にスタックに積まれて、関数の実体
である、ASMで書いたコードがcall命令で呼び出されるって寸法じゃん。
けど、これって、Windowsでも通用するやり方なんかな。
0247デフォルトの名無しさん
NGNG貴方の命題は自己矛盾しており実現不可能です
お使いのコンパイラをご指示頂ければ回答可能な質問としては
1)Cのソースがあり、コンパイル出力の一部をアセンブリソース形式で出力したい
2)Cのソースの一部をアセンブリ言語で書き直したい
3)Cのソースの一部にアセンブリ言語を埋め込みたい
があります。
0248デフォルトの名無しさん
NGNGもちろん通用する。
0249241
NGNGけっこう難しい日本語だね。 2と3の違いがけっこう微妙で分かりに
くいよ。 まあ、要は、cの関数をアセンブラのコードで直接書くって
やり方だよ。
0250デフォルトの名無しさん
NGNGホントにむかつく態度だな。
Cの関数内にアセンブラコードを埋め込む(インラインアセンブラ)のと
アセンブラで書いてアセンブルしたオブジェクトをリンクするのでは
やり方が違う。
おまえは前者でもやってろよ。
0251デフォルトの名無しさん
NGNG暴力的なことが男らしいと痛い勘違いをしてるんだよ。
0252241
NGNGまあ、まあ、そんなにプンスカすんなよ。又ー利いこうよ、又ー利と
インラインアセンブラ使ったら、擬似命令つかえねーじゃん。
オレが言ってるのは、それぞれ別々に、コンパイルとアセンブルして
オブジェクトを結合するやり方なんだよ。
0253デフォルトの名無しさん
NGNG0254241
NGNGばかにスンナよな. リンかぐらい使えるってよ。 けど、オレが出来る
のは、DOSまでであって、Windowsの場合を知りたいんだYO!
Windowsの、内部をあんまし知らないし、下手にアセンブラでコードィ
ングしたら、一般保護例外が出ちゃうし。 そもそも、下手にレジスタと
かイジるコードとか書いてもいいのかなっと思っただけ。
0255デフォルトの名無しさん
NGNGまずはWindowsの勉強でもしろ。
0256247
NGNG1、拡張子がpasのファイルを作成して下さい
2、アセンブラ関数は
function 関数名(引数):返り値;
asm
アセンブラによるコード
end;
とすれば、アセンブラによりC++から呼び出される関数が作成出来ます
0257247
NGNG拡張子 .ASM のファイルを作成し、TASMを呼び出す方法もありますが
上記方法がお手軽です
0258デフォルトの名無しさん
NGNGC++でも単独でインラインアセンブラは使えるよ。
それに書いている内容は単にアセンブラの関数をPASCALのインラインで書いているだけだ
アセンブラだろうとPASCALだろうとhファイルで明示的に示してあるものは
call文で呼べるのでは?
>>254 ばかというより無知なんだからもう少しアセンブラとCについて調査すべきでは?
いまの無知のレベルは1日か2日で解消できるレベルだ。
リンカの使い方はわかってないぞ。
MP3関連のソースとプロジェクトファイルを探してソースをみれば
MASMやNASMとVC++やGCCになっているはずだから
その辺(特にmake)をじっくりみることだ。
大体アセンブラで組んで高速化が期待できないものは無理にアセンブラを使うべきではない。
ループ演算とか独立した関数とかに特化するか
CとかPASCALで書いてから展開すべきだ
C単独やC++でのWin programingをやってから出直せ
0259258
NGNG割と見つけやすいサンプルとして3DNOW関連のヘッダーを探すといいかも
0260デフォルトの名無しさん
NGNGそりゃ下手だ
0261デフォルトの名無しさん
NGNGp = (char *)malloc(sizeof(char) * mojisuu);
if(p == NULL) return;
みたくやってます。でもよく考えると何故mallocが失敗するんでしょうか?
ヒープを使い切ったとか?mallocが失敗する理由って主に何があるの?
unixかwindowsでお願いします。
以前
if((p = (char *)malloc(sizeof(char) * mojisuu))==NULL)
p = (char *)malloc(sizeof(char) * mojisuu);
見たく、一度失敗したらもう一回繰り返しているのみたことあるけど
こういうやり方って意味あるんでしょうか?
0262デフォルトの名無しさん
NGNGふつー、ないと思われ。
そんなモノが通る処理系があるか、よく知らない。
0263デフォルトの名無しさん
NGNGメモリが断片化して連続して領域を取れない場合がある
後の問題は、たぶん意味はな。
でももしかしてマルチスレッドで動いているなら
その間に他のスレッドでヒープが空くかもしれないけど、時間を
置いてないので確率はゼロに近い
0264デフォルトの名無しさん
NGNGどうやらmallocミスったら潔くあきらめるのが良さそうですね。
それかwhileでとれるまで回すとか(w
先にある程度の大きな領域を非常用にダミーでmallocしておいて
メモリ不足になったらこの領域を開放して再度 mallocしてみる という自作アロケート関数を用意
で、メインループのどこかで この非常用ダミー領域が使われた場合に警告を出して安全に
終了するよう全力を尽くすと
いう方法が常套手段かと
0266デフォルトの名無しさん
NGNGうーん。やっぱ皿とフォークがそろってから
食事にとりかかるのが美しいでしょうね。
なければやらない。
そうじゃないと奪い合いしているようで。
0267デフォルトの名無しさん
NGNGつまり一番最初にガバッととっちゃうんですか?
自分はいつも必要なときにmalloc。とれなきゃ処理を終わらせちゃいます。
あちこちでmallocするのでいちいち失敗の処理とか書いてます。
そうすると異常系のデバッグが大変だけどね。
これは非常用だから文字列用とかファイルバッファとかが収まる程度の大きさね
すると、文字列用とかファイルバッファ用ではあんまり厳密にチェックしなくて済むでしょ?
大きな領域とか取る前だけチェックすればいいでしょ?
異常処理がだいぶ楽になるでしょ?
C++なら例外使えばいいんだけどね
0269デフォルトの名無しさん
NGNG�@最初に予備のメモリをある程度取る
�Amyallocでアロケート。戻り値はチェックしない。
�Bmyallocはアロケートできなければ予備を解放してアロケート
予備を使ったというフラグもたてる。
�Cどこかでフラグをみてメモリがやばそうだから終了処理に移行
というかんじですか?
0270デフォルトの名無しさん
NGNG教えてください。よろしくお願いします。
0271仕様書無しさん
NGNG「スタートアップルーティン」とかで検索しろやゴルァなのですぅ
0272デフォルトの名無しさん
NGNG解からなかったら又質問させてもらいます。
0273デフォルトの名無しさん
NGNG関数とかライブラリを教えてください
0274デフォルトの名無しさん
NGNGlibjpeg, libgifで検索してみ
0275デフォルトの名無しさん
NGNGまたデータセグメントの変数とスタックの変数はどう違うのでしょうか?
0276273
NGNG助かりました。どうも
0277デフォルトの名無しさん
NGNGa = 10;
と
int a = 10;
は意味が違うのですか?
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGそれぞれテキスト領域、初期化データ領域、bss領域、スタック領域のどれに格納されるのでしょうか。
1.外部変数
2.関数内でstatic int hoge = 1;
3.関数内でstatic int hoge;
4.関数外でstatic int hoge = 1;
4.関数外でstatic int hoge;
また、初期化データ領域、bss領域が違う必然性はゼロ初期化するか否かだけなのでしょうか。
0280デフォルトの名無しさん
NGNG普通は初期化されてなければbss、一部でも初期化されてればdata
bssは実行ファイルを小さくする意味がある
静的持続時間の変数の格納場所にスタックは使えない
0281デフォルトの名無しさん
NGNGが表示されるのですが、このGMTっていうのは、C言語で何の関数を使えばよいのでしょうか?
0282デフォルトの名無しさん
NGNG関数内というのを何らかのブロック内と判断すると---
1と、ひとつめの4とふたつめの4は、スコープをファイル中に
制限するかどうかの違いのみ。
すべて静的なので、初期化データ領域かbss領域に割り当てられる。
データかbssかは、初期化されているかどうかで決まる。
bssは実行ファイル中にはその変数のサイズのみ保持していて
ロード時に実際の領域の分だけメモリを確保する(で、そのあと
ゼロクリアされる)。どこかで、bssはBetter Save Spaceとかって読んだ気が。
ほんとかな??
いいかげんな言い方をすると、「静的」という言葉は、
コードの実行開始時に確定している、といった意味で
使われている様子。Cに関して言えば、staticというのが
一般的な静的という意味の指定と、スコープの限定の両方に
使われるため混乱しがちかも。
UNIXが使える環境があるならば、大きな配列を作って、
初期化したりしなかったり、staticにしたりautoにしたり
してみて、各実行ファイルについて、sizeコマンドを
実行するといいかも。Winなら、DLLやEXEをクイックビューアで
みれば、ある程度のことはわかります。そこまでしなくても
静的であることがわかっているならば、実行ファイルの
ファイルサイズでデータかbssかはなんとなくわかるかも。
0283デフォルトの名無しさん
NGNGGMTの文字列を作成したいの?
それとも解析してtime_tとかに変換したいの?
せめてそれくらいは教えてちょん。
0284デフォルトの名無しさん
NGNGとても解かりやすかったです。
0285デフォルトの名無しさん
NGNGGMTの文字列を作成したいのです・・・。
0286ななしさん
NGNG2 localtime() あるいはlocaltime_r()
3 sprintf()で出力。でもlocaltime()はその名のとおり時差が
入っているので、修正しとくこと。
0287ななしさん
NGNGする奴はまずいないと思われるので。
まぁ好きにしてくれ。
0288デフォルトの名無しさん
NGNG0289
NGNG0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGカンキチ・リョウツの略です。
なぜ真ん中が&なのかについては諸説あります。
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGtime_tを与えたら直接文字列を生成してくれるなら重宝するが。
汎用性がないなら素直にsprintf使ったほうが便利と思われ。
つーか、使いたくなるだろうな。
で、gettimeofdateじゃなくてgettimeofdayだろうな。
0296デフォルトの名無しさん
NGNGint get_lastmod_str(char *buf, time_t lastmod)
{
strftime(buf, 1024, "%a, %d %b %Y %H:%M:%S GMT",
gmtime(&lastmod));
return (1);
}
0297デフォルトの名無しさん
NGNGそれとも、localtimeで日付を管理と言う位だから
MS-DOSをサーバーOSとして採用しているのかな。
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGstrftime()のフォーマットの細部に差があるのは知ってるよ。
だけど、RFC822形式の出力に使う程度なら問題ないはずだけどね。
少なくとも、OSがファイルの日時をローカル時間で管理しているとは思わないし、
time()やstat()/fstat()のtime値がTZに依存しない事も知っている。
だから、「timeをGMTで出力」にgmtime()でなくlocaltime()を使おうなどとは
考えた事もない。
0300初心者
NGNG0になったりします。何がおかしいのか教えててください
#include<stdio.h>
#include<math.h>
int main(void)
{
double s,c,g;
scanf("%d",&g);
s = sin(g);
c = cos(g);
printf("sin= %f\n",s);
printf("cos= %f\n",c);
return 0;
}
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG先頭のポインタだけを渡すのが一般的なのでしょうか??(&char[0])
0304デフォルトの名無しさん
NGNGchar[100]を構造体でくるんだり、文字列の
末尾ポインタだけを渡すようなことは、
あまり一般的ではないと思いますよ。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG・ヒープ領域って具体的にどんなのですか?
絶対アドレスのココからココまで、みたく決まってるんですか?
・ヒープってプロセス事に非干渉なんですか?ほかのプロセスに壊されることはないの?
・ローカルやグローバルにもっている静的な配列や変数はヒープに作成されるの?
いろいろ教えてください。とりあえず、unix&winで。m(_ _)mペコリ
0307デフォルトの名無しさん
NGNGchar* buff
下側のように書きたいです。
以 上
0308デフォルトの名無しさん
NGNG1Uとか0Uとか
でてくるんだけど、これって何?
0309デフォルトの名無しさん
NGNGなお、単位を変更するには、setlocale(LC_LUCK, "ISO")などと
すればよい。類似のものに、int k=2B;などがある。
0310デフォルトの名無しさん
NGNG>でてくるんだけど、これって何?
ここで聞くなとは言わないけど、
こういうどんなダメな解説書にも必ず説明があるような
事を聞く人って、本を買わないのか?
0312デフォルトの名無しさん
NGNG> setlocale(LC_LUCK, "ISO")
好運量もISO規格化されてたのか。
0313デフォルトの名無しさん
NGNG私は現在C言語を勉強しているものですが
二次元配列の引数の渡し方がわかりません。
どうか教えてください。
0314デフォルトの名無しさん
NGNGとりあえず俺が答えられるのは
> ・ヒープってプロセス事に非干渉なんですか?ほかのプロセスに壊されることはないの?
1. ヒープはプロセス空間の一部です。
2. *まともな*メモリ保護を持っているOSの場合、
自分のプロセス空間以外の空間を破壊することはありません。
よって、*まともな*メモリ保護を持っているOSの場合、
ヒープを他プロセスが破壊することはありません。
ちなみにメモリ保護自体持っていないOSとしてMS-DOSがあります
# MS-DOSはOSかどうかを議論するつもりはないです
0315日下部さんチェキ!
NGNG/*test*/
#include <stdio.h>
void foo(char (*p)[10]){
printf("%s\n", p);
printf("%s\n", p+1);
}
int main(int argc, char *argv[]){
char str[][10] = {"january", "february"};
foo(str);
}
わたしもビギナーですが、確かCプログラミング専門課程という本に詳しくのってますよ。
0316デフォルトの名無しさん
NGNG使ってはいけないという話をききます。
こんど小数部が二桁の計算を行うので、どのくらい
誤差が出るかとおもい、ためしにVC++で下のような
処理を書いて試してみました。
しかし、どうも誤差はでないようです。
扱う値が小さい場合は、誤差はでないのでしょうか?
{
srand(time(0));
const int loop_num = 10000;
int total = 0;
double real_total = 0;
for (int i = 0; i < loop_num; i++) {
int n1 = rand() % 1000; // 整数部
int n2 = rand() % 100; // 小数部
total += n1 * 100 + n2; // 整数計算
double d = (double)n1 + (double)n2 / 100; // 実数計算
real_total += d;
}
TRACE("%f\n", (double)total/loop_num/100); // 整数での計算結果
TRACE("%f\n", real_total/loop_num); // 実数での計算結果
}
0317デフォルトの名無しさん
NGNGXの付かないMacOSモナー
0318デフォルトの名無しさん
NGNG乱数つかってるところ
int n1 = 0 ;
int n2 = 3
にでもして、最後に
if(total/100.0==real_total) TRACE("hogehoge\n") ;
でもしてみそ
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGモジュール構成図を書け
グローバル変数の一覧表や構造体の一覧表を作れ
まともな関数名を付けている場合、これだけで処理の概要はわかる
まともなソースでない場合、あきらめろ
例)ローカル変数がない、
1000行以上ある関数が何個もある
0321デフォルトの名無しさん
NGNG日本語化の類いなんですけど.
後諦めきれない場合は自分で書いた方が早いですか?
人のソース見るのって大変だ.
0322NERO
NGNGCでビジュアル的な部分の作り方を書いてある本を見たこと無いのですが。
RPGの作り方や、シューティングの作りかたとか
0323デフォルトの名無しさん
NGNGRPGやシューティングでもファイル操作は必要だろうよ。
“ビジュアル的”ってのが何を指しとるのかしらんが、
例えばWindowsならDirect Xとかか?
そういったライブラリは“Cの本”の範疇外だろうよ。
Cの本ではなく、画像処理系の本を買って読め。
0324デフォルトの名無しさん
NGNGCの入門書とかにそういう話が出ないのは、「ビジュアル的な部分」は
Cの仕様の範囲外で、OS依存の部分だから。
「Windowsで」のようにOSを限定した本なら、探せばあるでしょう。
でもそれは「Cの本」じゃないよね。
0325デフォルトの名無しさん
NGNGでもどっちにしてもCの本ではないな。
0326デフォルトの名無しさん
NGNGそれ、C++の作法よ。
C言語だと char *buff の方が普通。
>>313
出来ないこともないけど、面倒だからやめとけ。
2次元配列やめて、C++とSTL勉強してstd::vectorを2重にして使え。
std::vector<std::vector<Type> >
関数に渡すときには参照渡しな。
>>325
結局、表示部分で機種依存な本ばっかりだけどな。
0327デフォルトの名無しさん
NGNGvoid hen(float ab,float b,float c);
for(i=0;i<N;i++){
hen(ab[i],b[0],b[i]);
printf("%4.1f\n",ab[i]);
}
void hen(float ab,float b,float c){ /*関数*/
if(ab>1){
ab=b*c/10;
}
0328デフォルトの名無しさん
NGNGC言語などで文字リテラルってありますよね。
一般的には処理系依存と言うことになっているけど、ASCIIに関しては
ほとんどの文字コードでは下位7bit以下がASCII互換だと思います。
と言うことは英数字のみに限定すればASCIIの16進コードで
処理してしまってよろしいのでしょうか?
それともASCII互換ではない文字コードを標準文字セットとして使う
OSやコンパイラがあるのでしょうか。
知っている方教えて下さい。
0329デフォルトの名無しさん
NGNG何故と問われても、“引数”という物を理解してくださいとしか…
float hen(float ab,float b,float c){
if(ab>1){
return b*c/10;
} else {
return ab;
}
}
for(i=0;i<N;i++){
ab[i]=hen(ab[i],b[0],b[i]);
printf("%4.1f\n",ab[i]);
}
03302月発表なド素人君
NGNG間に合う気がしなく、高校卒業不可能の危機におちいってる者です。
C言語がここまで難しいものだったとは、今頃後悔している所です。
ただ後悔してももぅ仕方ないのでなんとかして完成させようと思っています・
今日は質問させてもらいます。
WindowsでSDLを使って、グーとチョキとパーの絵を画面に出し、
選択したら、相手のランダムの手で勝ち負けの結果を出し、
続けるか続けないか尋ねるという形で
最終的に結果を表示できるような物にしたいです。
結果の数字や、じゃんけんの手、それから背景画面すべて
用意したbmpファイルを載せる形にしたいと思っています。
家では、Cマシーン ttp://homepage1.nifty.com/kentake/ を利用させていただいており、
学校ではTurbo C++を利用しています。
もちろん発表は学校で行われるのですが、
どうも分からない事だらけで助言をお願いしたい。
SDLをヘッダファイルとして利用できるようにする方法
(新たなヘッダファイルを加える方法)が分からないのですが、
分かる方、助言お願いいたします。
0331NERO
NGNG質問させてもらいます。 Cの基楚本をクリアーした後、
皆さんどのような道を歩んだんですか? 教えてください。
0332デフォルトの名無しさん
NGNGどこから突っ込んでよいものやら…
“SDL”って何?SDKのTYPOなんだろうけど。
“Cマシーン”って何?
Turbo C++って、Win32用のコンパイラだったっけか?
一年留年してもう少し勉強し直せば?
その方が後々の為にもなるでしょう。
あと、課題丸投げは別スレ逝け。
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
とかね。
0333クソレススマソ
NGNG0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG見ちゃいけない物を見ちゃったときに、こっそりもとに戻しておくときに使え也
0336デフォルトの名無しさん
NGNGそこまでいったら自分の好きなものを作ればいいのでは?
「ビジュアル的(Visual的?)」な本も読めるようになっているはず。
というか、中上級の「Cの本」は初級に比べて非常に少ないし。。
あと、ひまをみて、アルゴリズムの勉強をしといたほうがいいかと。
ほかには、とりあえず一般論程度でいいのでOSやアーキテクチャの話も
おさえておくとなおよし(2種でも勉強して受けるのが手っ取り早いか?)。
要は、自分の興味・必要性を中心に、幅広く、ね。
「クリアー」といっても練習問題がとける「技量が身についている」
ことが必要で、一通りやったからといってクリアーとはいえない
かもしれないのでご注意あれ。やればわかるってのは確かにあるけど、
やってもわからない場合は基礎が身についていない可能性が高いので。
0337デフォルトの名無しさん
NGNGgetch()ないしgetche()とペアにして、「先読みしたいとき」と
暗記しておけば、先読みしたくなったときに幸せになれるかも。
0338デフォルトの名無しさん
NGNGC系は必ず弄ったほうがいいの?
とりあえず
とりあえず現在はsed -> awk -> Perlまで弄ってます。
C -> C++ -> Delphiと習得ビジョンを立ててるんですが。
(基礎から固めた方がやり易いと思って)
0339NERO
NGNG0340デフォルトの名無しさん
NGNG> “SDL”って何?SDKのTYPOなんだろうけど。
cross-platform multimedia libraryのSDLを知らんのか。
http://www.devolution.com/~slouken/SDL/
0341デフォルトの名無しさん
NGNGcurses.h? stdio.hじゃなくて?
0342デフォルトの名無しさん
NGNGPerlの次にC・・・・
今まで当たり前だと思っていたことがそう簡単にはできないよ。
0343デフォルトの名無しさん
NGNGperlは忘れて
cに打ち込む事にします。
0344デフォルトの名無しさん
NGNG>それともASCII互換ではない文字コードを標準文字セットとして使う
>OSやコンパイラがあるのでしょうか。
EBCDICがあるよ。
0345日下部さんチェキ!
NGNG>>326のレスを見て気付いたんですが
2次元配列を丸々渡すのであれば、たしか構造体のメンバーにすればよかったと思います。
/*↓参考*/
#include <stdio.h>
typedef struct{
int test[2][3];
} FUCK;
void unko(FUCK fuk){
for(int i=0; i<2; ++i){
for(int j=0; j<3; ++j){
printf("array[%d][%d]=%d\n", i, j, fuk.test[i][j]);
}
}
}
int main(){
FUCK fuk;
for(int i=0; i<2; ++i){
for(int j=0; j<3; ++j){
fuk.test[i][j] = i+j;
}
}
unko(fuk);
return 0;
}
0346デフォルトの名無しさん
NGNGstdio.hにあるのは標準ライブラリ関数のungetc()。
ungetch()はDOS系ならconio.h。UNIX系にはconio.hは多分ない。
ので、ungetch()を使うなら多分cursesライブラリに頼ることになる。
ので、curses.hで(も)よいのでは?
(ところでDOS/Winのgccだとどうなるんでしょ?やっぱりcurses??)
0347デフォルトの名無しさん
NGNGそりゃ固定長のときはそれでいいけどな。
それやるんだったら
void func(int array[][2]) // ←2次元目は固定長
{
}
ってやれば配列を引数に出来るし。
まあ、これやると参照渡しになっちゃうけど、普通こんなでかいデータを値渡ししないし。
0349ハク
NGNGC言語初心者で、現在、圧縮法の勉強をしている者です。
早速質問なのですが、
C言語で書かれたプログラムで、実際に圧縮プログラムを体験してみたくて、
先日、Cで書かれた圧縮プログラムを手に入れたのですが、実行ファイル
(ファイル名.exe)しかないので、動作はMS-DOSプロンプトから確認できるのですが、プログラムソースが見れません。
どうしても、ソースを見てどのようなプログラムになっているのか知りたいと思
うのですが、実行ファイルのソースの見方が分かりません、どなたか教えて頂けないでしょうか?
ちなみに、VC++6.0を日ごろC言語の学習に使用しています。
それでは、どうぞよろしくお願いいたします。
0350デフォルトの名無しさん
NGNG逆コンパイルをしたいの?
難しいと思うけどなぁ。最適化されているだろうし。
0351
NGNG実行ファイル-->逆アセンブル-->逆コンパイル な話題になると不毛だから、
単純に作者にソースコードもらった方が良い。
もしくはソースコードを公開しているHPを検索する。
0352デフォルトの名無しさん
NGNG実行ファイルからソースを見ることは面倒です止めておいた方がいいです。
どーしても圧縮法の勉強をしたいなら
http://www.gzip.org/
にgzipのソースがあります
くだらん蘊蓄をたれるとgzipはLZ77の圧縮法を使っています。
0353ハク
NGNGやはり、難しいですか・・・。
そうですね。ソースコードを公開しているHPを探してみます。
ありがとうございました。
0354デフォルトの名無しさん
NGNGその渡し方、俺はCを初めた頃猿の様に使ってたんだけど(sizeofしたい時とか便利だった)
何故か学校のせんせに「構造体の使い方が正しくない」とか言われて
減点された事あるぞ (笑)
宣言が面倒なんですぐ辞めたけど、あれは理不尽だったなぁ・・・・
0355_
NGNG正しいと思うけど・・・
0356デフォルトの名無しさん
NGNGメモリーの無駄遣い
sizeofしたいのならしかたがないけど。
0357デフォルトの名無しさん
NGNG0358かじりたてフォートラン
NGNGユニックス・フォートランー>PCフォートランにコンバート作業中なのですが、
ユニックス上で組まれているフォートラン・プログラムの
各ソースプログラムからのサブルーチン経路がわかるようなモノ(ツリー)を
出力することは可能でしょうか? お願い致します。
0359デフォルトの名無しさん
NGNGFortran スレ
http://pc.2ch.net/test/read.cgi/tech/1003214738/l50
0360デフォルトの名無しさん
NGNGいつからFORTRUNはCになったんだろう。
0361デフォルトの名無しさん
NGNGそれは先生もDQNな気がするな。
でも、配列を値渡ししたいそれなりの理由無しに>>345の方法使うのもどうかと思うけど。
あの渡し方は裏技みたいなもんだし。
0362デフォルトの名無しさん
NGNGバイナリフォーマットが ELF になった頃からかなぁ、シンボル名の先頭に _ がつかなくなったのは(違
0363デフォルトの名無しさん
NGNGint main(void) {malloc(100);}
0364363
NGNGこんな場合は?
char *a = "hoge";
printf("%s", strdup(a));
やはりメモリの無駄使いになるんでしょうか.
0365デフォルトの名無しさん
NGNG三次元画像を表示したいんです。
どんな方法があるんでしょうか?
0366デフォルトの名無しさん
NGNG無駄使いというか・・。
ネタは余所でやってください
0368デフォルトの名無しさん
NGNGまじめに回答して欲しいのか? まずは OS の仮想記憶とプロセスサブシステムに関して概要だけでいいから
把握した上で、代表的な malloc, free の実装を 2, 3 当たれ。その上で C の規格書を読み直せば、言わんとす
るところが分かるようになる。
0369デフォルトの名無しさん
NGNGアプリケーションの作成はどうすればいいんでしょうか?
そういった本を探してみたりしましたが売ってませんでした。
0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGじゃあ解説してやれよ。
俺は、さんざん fj やマ板の malloc/free スレで繰り返された話を、噛み砕いて解説する気はない。
(あの話、まじめに追おうとすると OS の実装にまで踏み込まんと理解できんと思うけど)
0372YUU
NGNG周りが男ばっかで聞けません。
最初はC言語からでも大丈夫ですか?
それといずれJavaも使ってみたいですがはじめはどちらからやればいいですか?
それと参考書を教えてください
0373デフォルトの名無しさん
NGNG大学で、って事なら授業ではないのか?
使用言語は指定されていないのでしょうか。
データ解析とかやるのかな。
> 周りが男ばっかで聞けません。
そんなの言い訳にならんよ、甘えるな。
> それと参考書を教えてください
K&R
0374YUU
NGNG科目はプログラミング基礎です
0375デフォルトの名無しさん
NGNG周りが男だらけなら、きかなくても教えてくれるかも(プ
最初は何からはじめても苦労すると思われ。
C言語はすべての基礎になるから、教養として必須。
Pascalやるなら一緒にDelphiおぼえるほうがいいかも。
0376デフォルトの名無しさん
NGNG大学生にもなって
> 周りが男ばっかで聞けません。
っつーのは、やはりネタなんだろうか。そうでなければ、人生やり直したほうが言いと思うぞ。
0377デフォルトの名無しさん
NGNGおれ使ったこと無いからよくしらないけど、
ここなんか参考にならないか?↓
http://www.geocities.co.jp/SiliconValley-Oakland/1999/lcc/index.html
0378377
NGNGprojectをcreateして、WizerdつかえばすぐにWinアプリのスケルトンできるよ。
これはいいカモ。
0379デフォルトの名無しさん
NGNGおそらく「周りが」と「男ばっかで・・・」の間に
本来入るはずの形容詞を入れ忘れただけだと思われ。
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNGどれだろう?
1) 周りが「C 言語なんか朝飯前、いちいち聞くなよバカ、というレベルの」男ばっかで
2) 周りが「女性と見ると緊張してまともに口もきけない」男ばっかで
3) 周りが「語尾に *にょ* をつける」男ばっかで
個人的には 3 を推したい。
0382YUU
NGNG友達がYahooで2ちゃんねると入れてみるといろいろな
掲示板があるのでそこで聞いてみろと言われたので
書き込みしました。
インターネットぐらいしかやったこと無いので
プログラミングは初めてです。
よろしくお願いします
0383デフォルトの名無しさん
NGNGネタ風味120%だけど。
ココに書き込んでいるのも大半が男ばっかじゃないのかな。
グダグダ逝ってないでその友達なり周りの人間、先輩方に聞きなさい。
0384デフォルトの名無しさん
NGNG2ch初心者?メール欄が意味不明だが、ここは匿名なので個人情報はあまり公開しないように。
インターネットつかえるならば、2ch頼る前に「〜入門」とか「〜講座」とかで
webサーチしてみようね。
0385YUU
NGNGその2ちゃんねるを教えてくれた友達がE-mail欄に
適当に文字を入れるとIDが消えると教えてくれたので
適当に入れました。
そこにメール送っても届きません。
入門見てからまた来ます。ありがとうございました。
0386>>363
NGNG0388デフォルトの名無しさん
NGNGお前が説明してやれよ、懇切丁寧簡潔明瞭にな
0389デフォルトの名無しさん
NGNG競合してない?
0390デフォルトの名無しさん
NGNGそれを言ったら重箱の角をつつく例はいくらでもあるよ
0391デフォルトの名無しさん
NGNGatofは互換性のためだけに存在しています。
0392389
NGNGじゃ、今時はふつーstrtod()?
0394デフォルトの名無しさん
NGNGという理由で、エラーがおこらない事がわかってるときは
atof()という使い分けをしていました。が、>>391を読んで、
ホント!?と思い、atof()がstrtod()のマクロで実現されているかと
勝手に判断し、ヘッダを調べたところそんなことはありません
でした(BCCとLSIC)。もちろんだからといって>>391が違う
ということにはぜんぜんなりませんけど。
あ、でもよく考えたら、整数系とちがって基数指定がないから
機能差による速度差はほとんどないか。。
で、それってホント!?>>391
0395デフォルトの名無しさん
NGNGいつも、いいところまでいくと
数値の値が = nan0x7fffffff
というエラーメッセージなのか、限りなく大きな値を示しているのかわからないメッセージが表示され
それから先の計算ができなくなってしまいます。
他サイトでしらべてみると、
入力データのデータ型がデータを格納する変数のデータ型と一致していないと、
期待した動作をしてくれません。
とあるので、int型とdouble型の計算を何度も見直したのですが、
特に、間違ってはいないようです。
nan0x7fffffffが何を意味しているのかと、
その対処法などありましたら教えていただきたいのですが?
0396デフォルトの名無しさん
NGNGNaN は 0/0 みたいな「意味のない」計算をした結果として格納される数値。IEEE 754 で検索。
> その対処法などありましたら教えていただきたいのですが?
どこかで、無意味な計算をしてるんだろうね。環境によるけど、その場合に NaN を格納せずに例外を
送出できることもあるんで、それとデバッガを組み合わせて場所を特定してみたら?
0397395
NGNGありがとうございます。
私もおそらくどこかで変な計算をしているのではと思います。
原因としては、配列の中身が途中で変な値に化けてしまったのではと考えてます。
データが壊れて欲しくないものは、
static int b1[180],b2[180],b3[180],b4[180];
static double g1[30],x1[15][30],x2[15][30];
と、staticを使っています。
デバッカは使ったことがないのですが、これから検索してみます。
0398デフォルトの名無しさん
NGNG変換できなかったとき未定義になるa系は基本的に使うべきでないが、
歴史的にはa系のほうが先にあるし、a系が簡単なのも確かだから
なくせないだけ、と認識していますが。
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGうーん。
0404デフォルトの名無しさん
NGNGこれかー!
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG予測のつく要らないレスなら、はじめからつかんようにモノ訊け。
見てて腹立たしい。
0407デフォルトの名無しさん
NGNGその方が効率がいいからね。
構造体のメンバーにすれば配列をそっくりそのまま渡せるけど。
0408デフォルトの名無しさん
NGNGThx!
でも下側が、よくわからず。。。
0409デフォルトの名無しさん
NGNGtypedef struct _T {
char s[255];
} T;
void foo(T o) {
puts(o.s);
}
void main(void){
T o;
strcpy(o.s,"HOGE");
foo(o);
}
0410デフォルトの名無しさん
NGNGわかった気がしました。Thanx!
0411デフォルトの名無しさん
NGNGいつもわざとtypedefしないで、その構造体を使って変数を宣言するたびにstructを書いているんだけど。
標準ライブラリにあるtmなんかはしていないからしない方がいいのかなと思って。
0412デフォルトの名無しさん
NGNG0413日下部圭子 ◆ib749tYo
NGNG> CとJava、最初にやるならどっちですか?
どちらでもいいですよ。
2つ同時にやってもいいです。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0414Riva ◆RivaByXA
NGNG0415デフォルトの名無しさん
NGNGそういう人がどんなCのコードを書くのか想像できない。
0416YUU
NGNGJavaの謎+落とし穴徹底解明という本を立ち読みしたのですが
著者ははじめはJavaをおすすめしないと書いてありました。
やはりCから始めた方がいいのでしょうか?
それとCからなら作ってわかるCプログラミングを購入しようと考えています
私は趣味でShadeでCGを作っていますいずれプラグインなどを作ってみたいです
スクリプトはtcl、jscript、vbscript
プラグインはVC++を使用してのC++
と言われたのですがどうゆうことなのでしょうか
0417日下部圭子 ◆ib749tYo
NGNG> 漏れの周りには Java→C という順におぼえたっていう人間がいないから、
大学の授業や企業の新人研修でJavaを使っているところが増えている
らしいですから、若い人はJavaから入る人も多いと思いますよ。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0418デフォルトの名無しさん
NGNG僕はいつもtypedefしてるよ。
structってつけるのめんどくさい。
僕はアマチュアだからプロの人がどうしてるかは知らないけど。
0419デフォルトの名無しさん
NGNGJavaは無料で環境構築できるから、興味があるならJDKをインストール
しとけばいいんじゃない?
初心者の人は、いきなりたくさんは覚えられないから、どの言語から始
めるか教えて欲しい、というのかも知れないけどそんなことは気にせず。
今時のPCならC/C++、Java、Delphi(Pascal)の処理系を全部入れたって
余裕だし、タダで全部そろうんだから、とりあえず全部入れといて、気が
向いた時にすきなの起動できるようにしとくのがいいと思う。
プログラミングの上達のためには、いつでも思い立ったときに開発環境が
使えるってうのは大事なことです。
いざというときのために、いろいろ入れときましょう。
0420デフォルトの名無しさん
NGNG趣味の問題だと思うが。なんとなく UNIX 系のプログラムを書いてると struct つけて、Win32 系のプログラム
書いてると struct つけないことが多いな。(そもそも Win32 だと C++ 使うことが圧倒的に多いからだが)
>>417
どうでもいいが、シグネチャは邪魔だから止めてくれ。
0421YUU
NGNG全部ただでそろうんですか?
ビジュアルC++6.0のアカデミックパックを買おうかと思っていました
0422デフォルトの名無しさん
NGNG少なくとも、勉強のための環境なら揃います。
0423デフォルトの名無しさん
NGNGどんな言語でもただで使えるというわけではないけどね。
例えばVisual Basicはただでは使えないと思う。
サブセット版のVBScriptならIE上で実行できるけど。
0424423
NGNGその言語を使ってソースを書くのは自由だから(言語自体には著作権は存在しない)。
0425デフォルトの名無しさん
NGNGMsgBox("(・∀・)イイ!!")
っていうテキストを拡張子.vbsで保存して、そのファイルをダブルクリック
すればダイアログでるっしょ。
0426デフォルトの名無しさん
NGNGこれ以上立ち入った話は移動してやりましょう。
初心者ネタはなるべくここで↓
***すれ立てるまでもない質問はここで 第8刷***
http://pc.2ch.net/test/read.cgi/tech/1010673275/
C/C++のフリーコンパイラについてはこのスレの7↓
お勉強ページ 勝手にリンク 第2版
http://pc.2ch.net/test/read.cgi/tech/967778156/
その他、参考書はこちらをどうぞ↓
推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/
0427デフォルトの名無しさん
NGNGプログラム自体が終了してしまいます。
vc++の環境?のせいらしいんですが、
ctrl+z以外でEOFを入力する方法は無いんでしょうか?
0429427
NGNGctrl+dですか?
ctrl+dだと」みたいなのが出るだけでうまくいきません。。
0430デフォルトの名無しさん
NGNG回避方法は知らん
0431427
NGNGじゃ、あきらめることにします。
428さん、430さん深夜にありがとうございました。
0432デフォルトの名無しさん
NGNGDOS時代の名残。
0433デフォルトの名無しさん
NGNGmake.exeはどうしてます?
0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436433
NGNGリネームは私も考えたけど、アリなんですかね。邪道かとおもいました。
両方入れてる人は普通どうしているのかと、経験談をきいてみたかったです。
とりあえず手っ取り早いのはリネームですかね。bmake.exeにでもします。
0437デフォルトの名無しさん
NGNGどうすればいいんですか?
0438デフォルトの名無しさん
NGNGないと無理かと思われ。
0439デフォルトの名無しさん
NGNGC# がお勧め (とか書くとスレが荒れる)。
>>420
そういう問題じゃないと思われ。
C言語だと、struct 付けないとエラーになるし。
>>411 が聞いてるのは。
typedef struct Type
{
// .....
} type_t;
↑こういう構造体の変数を宣言するときに、
struct Type t;
ってするか、
type_t t;
ってするかだろ。
普通、typedefしない?
0440デフォルトの名無しさん
NGNGたとえば、
char str[10]="hello";
strcpy(str, str);
など。
0441デフォルトの名無しさん
NGNGそりゃ、
char *p; // 初期化しない
strcpy(p, "aaaa");
とか、
char s1[3];
s1[0] = 'a';
s1[0] = 'b';
s1[0] = 'c'; // 文字列の終わりにヌル文字を入れない
char s2[3];
strcpy(s2, s2);
とか。
0442デフォルトの名無しさん
NGNG言いたい事はわかるけど、あんまりおおちゃくしないでね、あいては初心者なんだから…
0443デフォルトの名無しさん
NGNG420はまさにそのtypedefするか否か、について
主にCでプログラムする際にはtypedefしている、
C++を使うことが多いWin32では、typedefしなくてもコンパイル通るんで
結果としてtypedefは使わない、と逝っているのでは?
> 普通、typedefしない?
趣味が入るだろうなぁ…
structがあれば構造体であると一目で分かるし、
その例でいえばTypeとtype_tという2つの識別子
(一方はおそらく使用されない)が出来るし。
0444Riva ◆RivaByXA
NGNGtypedef struct tree{
int key;
char data[256];
} treebox;
とやれば、
treebox box1;
とやればいいだけだし。
0445デフォルトの名無しさん
NGNGchar *str;
str = "Hello";
strcpy(str, "World!");
printf("%s\n", str);
0446デフォルトの名無しさん
NGNGおまえにCは早すぎた
0447混乱してる初心者
NGNGstrが文字列リテラルを指してるから、書き換えられない処理系はいろいろある。
"Hello" と "World!"では後者の方が長いから、どっか壊してる。
どっちっが本当の原因かわかんなけけど、たぶんどっちか。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGあなたの書いたスンバラシイコードがcore dumpを起こしたからですよ。
あと"Hello World!"としたいのなら、
strcmp()ではなくstrcat()を使いましょう(゚∀゚)アヒャヒャ
0451デフォルトの名無しさん
NGNG> char *str;
> str = "Hello";
配列を初期化するなら、
char str[] = "Hello";
> strcpy(str, "World!");
strcpy()の第一引数には、第二引数に渡す文字列の大きさ(字数+1)
以上の大きさを持つメモリ領域が必要。
char str[255];/* 255は便宜上の値 */
strcpy(str2, "World!");
0452451
NGNGchar str2[255];/* 255は便宜上の値 */
strcpy(str2, "World!");
っす。
0453445
NGNGこのプログラムでは、別にHello Worldって出力したいわけではなくで、
str="****"ってした後に、strcpy(str,"%%%%")とすると、
どういう理由でcore dumpになるのかが知りたいんです。
447サンのレスが一番求めているものに近そうですが、
どなたかもっとわかりやすく説明していただけませんか?
0454デフォルトの名無しさん
NGNGまともな本読めよ
つーか糞本でも100%書いてるし
ここは解説サイトじゃないぞ
0455デフォルトの名無しさん
NGNG文字列って何ですか?
リテラルって何ですか?
何故書き換えられないんですか?
処理系って何ですか?
壊してるって何ですか?
こう言う事を知りたいんですか
0456デフォルトの名無しさん
NGNG1 規格上、文字列リテラルを書き換えたときの動作は「未定義」
未定義というのは、何事も無く動くかもしれないし、コアダンプするかもしれないし、コンピュータが火を噴く
かもしれないし、鼻から悪魔が出てくるかもしれない、と言うこと。鼻から悪魔が出てきても C 言語の規格
上は問題ない。
2 キミが使ってる実装では、文字列リテラルを変更した場合にコアダンプするよう、処理系が、書込み禁止
属性をつけたメモリ領域に文字列データを配置した。
っつーことだろ。良かったな、鼻から悪魔を出すように処理系が実装されてなくて。
0457デフォルトの名無しさん
NGNG> 447サンのレスが一番求めているものに近そうですが、
> どなたかもっとわかりやすく説明していただけませんか?
アフォな上に失礼なヤツですね。
> char *str;
> str = "Hello";
これは文字列リテラル"Hello"が格納された領域を指すアドレスを、
ポインタ変数strへ代入している。
447さんが書かれたように、文字列定数領域を書き換えることはあまりお勧めできない。
仮に文字列定数領域の書き換えに目を瞑っても、
> strcpy(str, "World!");
この時点で"Hello"が指す領域に"World!"を複写しようとしている。
"Hello"の大きさは6バイト(5文字+NULL終端)
"World!"の大きさは7バイト(6文字+NULL終端)
で、451に書いたように、
> strcpy()の第一引数には、第二引数に渡す文字列の大きさ(字数+1)
> 以上の大きさを持つメモリ領域が必要。
なので、ここでアボーンする。
質問をする事は恥ではない。
しかし与えられた回答を吟味しようともせず同じ質問を繰り返すのは、
己の無能をさらけ出すだけでなく、回答者を馬鹿にする行為。
お前が職業プログラマにならない事を祈る。
0458445
NGNG447さんの説明は正しいのですか?
ちなみに後者のほう(World!)をHelloより短くしても
core dumpとなりました。
0459デフォルトの名無しさん
NGNGDOS時代でも強制終了なんかしなかったぞ?
NT系はまともに動く。
DOSアプリやDOSエクステンダアプリとして作った場合も。
Win9x上のWin32アプリだけがCtrl+Zに対して
わけわからん反応を示す。
0460デフォルトの名無しさん
NGNG質問だけど、どういう環境で勉強すると
そう言う状態になるの?
0461デフォルトの名無しさん
NGNG環境を出さずに、せっかくの回答に対して「ただしいのですか?」とか返すあたり、教えてクンの素質十分
だな(w まぁ、これでも読んで精進してくれ。
http://piza2.2ch.net/jisaku/kako/977/977945208.html
0462デフォルトの名無しさん
NGNG文字列リテラルの書き換えは処理系依存だから、こうという回答は出せない。
処理系とコンパイラのバージョンを特定するのを先にしなさい。
0463デフォルトの名無しさん
NGNG処理系依存ではなく未定義と思われ。細かい突込みだが。
0464Riva ◆RivaByXA
NGNGstr = "Hello";
とすると、Helloの入ったメモリ領域の先頭アドレスの値がstrに入る。
で、仮にその後に
str = "World!";
と入れると、World!を指す先頭アドレスがstrになる。
ただし、strは配列構造ではないので、strcpyでは書き換えは
できない。
配列の各要素はその1文字ずつに初期化子があるため、strcpyで
取り扱える。
ポインタは先頭アドレスで初期化されるため、その先のデータに
初期化子が与えられない。
0465デフォルトの名無しさん
NGNGいや、あの、
その書き方だとまるでstrcpy()はポインタを扱えない様に読めます。
各要素の初期化子(構築子の事?)が存在する事は関係なく、
受け側に必要な大きさのメモリ領域さえあれば良いかと。
0466デフォルトの名無しさん
NGNGそのメモリ領域に書き込めることも大事かと。
0468デフォルトの名無しさん
NGNG0469 yahoogaatui
NGNG0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGsync(2)はシステム全体のバッファフラッシュをスケジューリングするシステ
ムコール。戻った時点で必ずしもすべて書き出されている保証はない。
fflush(3)はプロセス内のバッファをフラッシュする関数。
ついでにfsync(2)というのもあって、これは指定されたファイルディスクリプ
タに関連するファイルのデータをフラッシュする。
fflush()->fsync()->fclose()とすればシステムクラッシュしてもデータが無
事な可能性は他界。
0472デフォルトの名無しさん
NGNGfor( X = 0 ; X < iWidth ; X++){
memcpy( &DstArray[X + iLeft][iTop],
*(SrcArray + X),
sizeof(int) * iHeight);
}
図で説明しますと
□□□ // SrcArray
□□□
■■■■■■ // DstArray
■■■■■■
■■■■■■
■■■■■■
■■■■■■
↓
■■■■■■
■■■■■■
■□□□■■
■□□□■■
■■■■■■
こんな感じに出来るのですが、
これだとBitBltのSRCCOPYですよね(笑。
ようは、BitBltのSRCPAINTがやりたいのです。
for( X = 0 ; X < iWidth ; X++){
for( Y = 0 ; Y < iHeight ; Y++){
DstArray[X + iLeft][Y + iTop] |= (*(*(SrcArray + X) + Y));
}
}
この様に書けば出来るんですけど少し遅い気がするので
ぜひ御力を・・・(長々とすみません)
0473デフォルトの名無しさん
NGNGはかってみた?
0474デフォルトの名無しさん
NGNG> 447さんの説明は正しいのですか?
> ちなみに後者のほう(World!)をHelloより短くしても
> core dumpとなりました。
447さんの説明が正しいから core dump したんでしょ?
これ以上、何を求めているんだか…
>>464
> 配列の各要素はその1文字ずつに初期化子があるため、strcpyで
> 取り扱える。
配列変数を宣言しただけでは要素の初期化は行われないと思うのだが?
char str[6] = "Hello";
とかならともかく、
char str[6];
では、各要素の初期値は不定でしょ?
> ポインタは先頭アドレスで初期化されるため、その先のデータに
> 初期化子が与えられない。
割と意味不明だけど“ポインタ変数へアドレス値を代入しても、
その事でアドレス値が指す領域が書き換わる事はない”、と言いたい?
> ただし、strは配列構造ではないので、strcpyでは書き換えは
> できない。
書き換え可能なメモリ=“配列構造”という意味で使っているのかな。
“strは配列構造ではない…”というか、
“例示のコードにおいてstrが指すのは書き換え可能なメモリではない…”
とでも言えば良いのでは?
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG・必要ならレジスタの内容を保存
・パラメータをスタックに積む
・ジャンプする
ってところかね
0478デフォルトの名無しさん
NGNGが、今ではスタックはレジスタ並のCPUもありますしね
double CHoge::getData(){ return MyData;};
みたいなコードでない限り、
ヘタにインライン化してコードサイズが増えるより適切に関数化した方が
良い結果がえられますよ
0479デフォルトの名無しさん
NGNG> 関数呼び出しはオーバーヘッドが凄いと
場合による。きわめて単純な関数だと呼び出しオーバーヘッドが効いて来るが、中身が複雑になったら
無視できる程度。実際に、アセンブラコードを読んでみるのがいいと思うけど。
関数呼び出しの場合には、詳細はプロセッサのアーキテクチャによるんだが
1 関数呼び出しを通じて破壊される可能性があるレジスタの退避/復元
2 引数をレジスタに設定したりスタックに積む手間
3 分岐命令の実行 * 2 (関数へ分岐するときと、関数から戻るとき)
4 スタックフレームの作成、後始末
5 レジスタウィンドウの保存
なんかが必要になる。最適化をかけると 4 は消せる場合もあるけど。
0480デフォルトの名無しさん
NGNGとても解かりやすかったです。
みなさんのような人がいるから2chは辞められません。
私の周りの人間ときたら・・・・
よく会社が成立しているものだと感心させられます。
0481Riva ◆RivaByXA
NGNG>>447さんの例を実際にやってみて、デバッグしてみればわかる。
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[]){
char *a = "abcdefg";
strcpy(a,"abc");
return(1);
};
>“strは配列構造ではない…”というか、
>“例示のコードにおいてstrが指すのは書き換え可能なメモリではない…”
>とでも言えば良いのでは?
面倒なのでどうとらえても結構。
0483デフォルトの名無しさん
NGNG「配列構造ではない」は、あきらかに間違い。
0484Riva ◆RivaByXA
NGNG「構造」っていう日本語ちゃんとわかってる?
ポインタは確かに、配置のされ方は配列に似てるよ。
初期化のされ方が違うと言っただけだ。
だから、ポインタも[]演算子でアクセスできる。
メモリの領域についてはふれた覚えはない。
>面倒なのでどうとらえても結構。
と言ったのはつっかかってきてうざいという意味です。
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNG> >面倒なのでどうとらえても結構。
> と言ったのはつっかかってきてうざいという意味です。
それはつまり474の書いている事が間違っているといいたい?
中途半端な理解で書いているのか俺言語で書いているのか、
はっきりいってあなたの配列とポインタに関する説明は意味不明。
0487Riva ◆RivaByXA
NGNG間違ってるとは言わない。
探究心があっていいと思うよ。
自分自身もわかってるとは思ってない。
人の揚げ足を取るような発言をするので、
>>面倒なのでどうとらえても結構。
>と言ったのはつっかかってきてうざいという意味です。
と言っただけ。
>>気分を悪くした人へ
ごめんなさい。
0488デフォルトの名無しさん
NGNGつづきが読みたいです。
0489Riva ◆RivaByXA
NGNG○strcpyで落ちるのは記憶域の長さが問題ではない
○配列とポインタの違いは
char abc[2]で、
abc[0]
abc[1]
それぞれが値を変えられるのに対し、
char *abc = "ab"
だと変えられるのはポインタ変数のabcのみ。
と言いたかっただけ。ただ、記憶領域がオペレーティングシステムの
書き込み不可領域に割り当てられるかはわからない。
自分も>>474さんの発言の意味を十分理解していなかったと思います。
「strcpyで落ちるのは記憶域の長さが問題である」
と>>474さんが言いたいのかと勝手に勘違いしてしまいました。
>>474さんには謝ります。すみませんでした。
0490デフォルトの名無しさん
NGNGしつもんしていいですか?
char a[10];
char *p="abc" ;
p=a;
の場合、
strcpy(p,"def");
は、出来ないって事ですか?
0492デフォルトの名無しさん
NGNG初心者ってみんなけいけんすんの?
俺がお馬鹿なだけ?
0494デフォルトの名無しさん
NGNGじゃぁ、
char a[10];
char *p="ab" ;
p=a;
strcpy(p,"123456789");
は、落ちますか?
0495デフォルトの名無しさん
NGNGp=a;なくてもウチのコンパイラならとおりそう。
0497デフォルトの名無しさん
NGNGでも
>>489
>char *abc = "ab"
>だと変えられるのはポインタ変数のabcのみ。
って書いてありますよ。
ポインタは配列のアドレス入れると、配列構造になるっていうことですか?
0499デフォルトの名無しさん
NGNGじゃあやっぱり、書きこめるアドレスと、書きこめないアドレスがあるんですね。
0501デフォルトの名無しさん
NGNGそうか、じゃやっぱり、
>>474さんの
>例示のコードにおいてstrが指すのは書き換え可能なメモリではない
っていう方が正解なんですね。
ありがとうございました。
0502デフォルトの名無しさん
NGNG配列構造なんて謎の単語は忘れたほうがいい。
0503
NGNG画像ファイルを読みこんでメモリ内のイメージに展開して下さい。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGdouble d[10];
int i;
for(i=0;i<10;i++){
scanf("%f",&d[i]);
printf("%f",d[i]);
}
として入力すると なんかとんでもない数が表示されるのですが
フォーマット指定子のところを%lfにかえると 正常に表示されるんです
馬鹿でかい数を入力してるわけでもありません
これはローカル変数でやってるんですが
グローバル変数にすると 全部0.00000...と表示されてしまいます。
いろいろ実験したり サイトまわったりして調べたのですが
どうしてもわかりません なぜとんでもない数が入力されてしまうのか
ぜひご教授ください・・・
0507?
NGNGC言語、(・∀・)イイ!
0508デフォルトの名無しさん
NGNGで受けてはいけません。
Cの可変長引数では、floatはdoubleに格上げされますが、
float *はdouble*にはなりえないからです。
0509デフォルトの名無しさん
NGNGscanf()のフォーマット指定子%fのところを小一時間読め。
0510デフォルトの名無しさん
NGNG詳しい説明ありがとうございます
なんとなくわかりました
>>小2時間くらい読みます 納得できないとなんか気分悪いですから。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG悪い事はいわん。
入門本を買ったらscanfの書いてあるページは破り捨てろ。
scanfは初心者潰し関数だ。
0513デフォルトの名無しさん
NGNGなかなか逝けると思うが?
%[]なんてどうよ。
0514デフォルトの名無しさん
NGNGどっかにないでしょうか?
C++にMapってのがあるんですが、C++は使いたくないのでよろしくお願いします。
0515デフォルトの名無しさん
NGNGdbm シリーズなんかいんじゃないの
0516デフォルトの名無しさん
NGNG0517ほたる
NGNGちなみにコンパイルにかけると、
「:\Windows\デスクトップ\Vcant\FrameWork\StaGrpDlg.cpp(59)
: error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、
対応する関数ヘッダーがありません。」
となってしまいます。んー??
グローバルスコープってなに??
関数ヘッダーってなに??
0518ほたる
NGNGLRESULT StaGrpDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
if ( message == UWM_DRAWFITNESS )
{
DrawState();
}
return CDialog::WindowProc(message, wParam, lParam);
}
BOOL StaGrpDlg::OnInitDialog();
{ ←ここ???がおかしいらしいです
CDialog::OnInitDialog();
m_State.GetClientRect( &rectState );
m_OKBtn.GetClientRect( &rectOKBtn );
return TRUE;
}
void StaGrpDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
RECT rc;
if ( cx != 0 )
{ rectState.right = cx - 2;
rectState.bottom = cy - 62;
}
m_State.MoveWindow( &rectState,FALSE );
OrgX = 0; OrgY = 0;
cWidth = rectState.right - rectState.left;
cHeight = rectState.bottom - rectState.top;
int dw = rectOKBtn.right - rectOKBtn.left;
int dh = rectOKBtn.bottom - rectOKBtn.top;
rc.left = rectState.right - dw; rc.top = rectState.bottom + 5;
rc.right = rc.left + dw; rc.bottom = rc.top + dh;
m_OKBtn.MoveWindow( &rc,FALSE );
Invalidate();
}
0519デフォルトの名無しさん
NGNG直前の行の行末を良く見ましょう。
0520デフォルトの名無しさん
NGNGC++だから簡単に連想配列ライクなコンテナを使えるんだよ。
C言語だと、似たようなこと出来ても操作とかむちゃくちゃ面倒になるぞ。
それでもやりたいならハッシュとか探索木とかで調べろ。
0521デフォルトの名無しさん
NGNG指定するにはどうすればよいでしょうか。マニュアル見ても
英語が分からないので具体的にどう書けばいいか想像できません。
よろしくお願いします。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG> sprintf などで、strncpy みたいにバッファの最大長を
> 指定するにはどうすればよいでしょうか。
sprintfではバッファの最大長は指定できない。
snprintfではバッファの最大長は指定できるが、Cの標準関数ではない。
# まぁ、大概の処理系には存在するが...
> マニュアル見ても
> 英語が分からないので具体的にどう書けばいいか想像できません。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/snprintf.3.html
0524デフォルトの名無しさん
NGNGsnprintfってC99に入ってなかったっけ?
とか言ってみる。
0525デフォルトの名無しさん
NGNG話はそれるけど、strncpy()って半端な関数だよな。
バッファ長をこえてると、最後に0がつかないから、
使うときは結局strlen()なんかで、長さをチェックしなければいけない。
strncat()なんかはしっかり最後に0を付けてくれるのに。
0526デフォルトの名無しさん
NGNGstrncpy()の想定するコピー先は、文字配列であり、
'\0'終端文字列では*ない*。
バイナリフォーマット上の固定長バッファに字面
を埋め込むような場合に使う。
最大n文字を、'\0'終端文字列としてコピーしたい場合は、
*d = '\0'; strncat(d, s, n); としとけ。
0527デフォルトの名無しさん
NGNG> strncpy()の想定するコピー先は、文字配列であり、
> '\0'終端文字列では*ない*。
どうして?
strncpy()の振る舞いって、コピー元の終端か指定したサイズで
変わるでしょ。
コピー先がどうとかって関係ないんじゃない?
0528デフォルトの名無しさん
NGNG526 の意図はよく分からんが strncpy() は、
末尾に '\0' を 1 バイトつける
関数じゃなくて、
もとのデータをコピーして
残りをすべて '\0' で埋める
関数なのは確かだ。文字列じゃなくて固定長のバイナリデータって気がする。
0529デフォルトの名無しさん
NGNG>バイナリフォーマット上の固定長バッファに字面
>を埋め込むような場合に使う。
http://www.catnet.ne.jp/kouno/c_faq/c13.html
バイナリっていうか、FAQには(時代遅れの)文字列って書いてあるね。
0530デフォルトの名無しさん
NGNG8文字分の領域に7文字しか詰め込まないはとても勿体無い事だったのだ
0531デフォルトの名無しさん
NGNGでもそれすると余計に標準の使うときに困ると言う悪循環
0532デフォルトの名無しさん
NGNGってしといてから strncpyは1個分少なくすればOKだよ
0533デフォルトの名無しさん
NGNGそんなことするぐらいなら、素直に
buf[0] = 0; strncat(buf, s, sizeof(buf)-1);
でいいだろ?
0534521
NGNGがーん。素直に strn* を使うことにします。
0535デフォルトの名無しさん
NGNG環境によって変わる?
0536
NGNG環境によって変わりますけど、変わる環境はあまりないと思われ。
怖かったら'A'の部分を#defineなりで一括変換できるソースを書けばよい。
0537
NGNGvoid my_printf(char *,...);
void my_printf(char *src,...)
{
va_list ap;
char *param;
va_start(ap,src);
while((param=va_arg(ap,char *)!=NULL))
{
ここに必要な処理
}
va_end(ap);
}
my_printf("%s %s","param1","pram2",NULL);
みたいな関数を書いたとして、可変引数の終了条件はNULLです。
標準のprintfのように最後のNULLをつけなくてよくする方法はありますか?
可変引数の個数を引数として渡す方法以外で。
0538デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNG> 'A' はどの環境でも 0x41 に等しいんでしょうか?
> 環境によって変わる?
EBCDICでは'A' == 0xC1だが何か?
0541536
NGNG>>536
ごめん、自己スレ・・・
#defineで定義するより'A'をそのまま書いたほうがいいね。
char a='A';
if(a == 0x41)
↓
if(a == 'A')
みたく、でも
int numric = '5' - '0';
みたいのは、やっぱり環境依存。
0542デフォルトの名無しさん
NGNG自作printfを作りたいんだったら
vprintf, vsprintf, vfprintfあたりを調べてみ
>>538
"%% %s"の場合、破綻しないか?
0543デフォルトの名無しさん
NGNG> int numric = '5' - '0';
> みたいのは、やっぱり環境依存。
数値の場合は規格で規定されてます。
上記の場合、numric == 5は必ず真になることが保証されてます。
ただし、アルファベットの場合
'A' <= c && c <= 'Z' と isupper(c)
の結果が一致することは保証されてないし、
EBCDICコードの処理系の場合は多分一致しない。
0544デフォルトの名無しさん
NGNGおお、アリガトウございます。
環境の変化に耐えられるようにコード書いてるんだけど、
もしかして無駄な努力なのだろうかと思ったもので。
勉強になりました。
0545デフォルトの名無しさん
NGNG0546537
NGNG>vprintf, vsprintf, vfprintfあたりを調べてみ
調べてみました、goto文とかやたら長い関数で大変でしたけど、
>>538さんの言うとおり%の数を調べてますね、%%を別条件ではねてます。
for (;;)
{
/* This code is arranged to give in-line flow to the most frequent
* case, literal transcription from *formP to *outP.
*/
if ((fc = *formP++) == _TEXT('\0'))
goto respond; /* end of format string */
if (fc == _TEXT('%')) /* '%' char begins a conversion */
{
if ((fc = *formP) == _TEXT('%'))
formP++; /* but "%%" is just a literal '%'. */
else
break;
}
PutToS(fc,&put); /* copy literal character */
}
勉強になりました。
0547デフォルトの名無しさん
NGNG↓であってますでしょうか?いちおう自分が期待する通りに動いてくれたのですが…
void f(int **a, int n)
{
*a = (int *)malloc(n * sizeof(int));
}
main()
{
int *a;
f(&a, 10);
}
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGあってます。
int *f(int n)
{
return((int *)malloc(n * sizeof int));
}
main()
{
int *a;
a = f(10);
}
というやり方もあるけど
0550デフォルトの名無しさん
NGNG間違いではない
けど私の主観ではキモイ
int* f(int n)
{
return (int*)malloc(n * sizeof(int));
}
main()
{
int *a;
a = f(&a, 10);
}
0551デフォルトの名無しさん
NGNGゲゲン…
main()
{
int *a;
a = f(10);
}
0552デフォルトの名無しさん
NGNGしかも、先にレスされているという罠
0553デフォルトの名無しさん
NGNG__
―=三 \も \
―=三 \う \
―=三 \来 \
―=三 \ね.\
―=三 \え \
―=三 \よ.\
. .―=三 \ !!.\ ナニシテンダヨ
. ゚ 。 ゚ 。  ̄ ̄\ ウワアァァァン!!
―=三 ヽ(`Д´)ノ ヽ(`Д´)ノ (`Д´)ノ
―=三 | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─- カレイナ コーナーリング!!
―=三  ̄◎ ̄ . ̄◎ ̄  ̄◎ ̄ (`Д´)-,
( ,/。ヽ ))
'”ヽ゚ ,、
 ̄ヾ_、
0554デフォルトの名無しさん
NGNG僕も>549派です
0555デフォルトの名無しさん
NGNGこの調子で関数いっぱい作ろうっと♪
0556デフォルトの名無しさん
NGNGレベルなのですが、今度買う参考書はどのようなものがいいのか迷って
おります。私ぐらいのレベルに合う良い参考書があったら教えてください。
0557デフォルトの名無しさん
NGNGあなたがこれから使うも処理系によって、次に買うべき本が違う可能性があります。
たぶん、処理系のリテラシーの本でしょうけど。
0558デフォルトの名無しさん
NGNGその書き方じゃどんなレベルかサパーリだよ。
せめて読んだ書名くらい書けば?
あと、スレ違いかな。
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50
0559????
NGNGhttp://www.kyoto-su.ac.jp/~wd/sentan-a
に問題があります。お願いします。
0560デフォルトの名無しさん
NGNG>559
ブラクラ
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG課題丸投げとか課題文丸写しとか色々あるけど、
こいつは課題文へのポインタ示すのみか…
サバログのHTTP_REFERERに沢山残るのな、ttp://pc.2ch.net/...が(w
0563デフォルトの名無しさん
NGNG2ちゃんで○投げクンに頼まれました、って言えば、つかわしてくれるのかな??
0564????
NGNGすいませんでした。
うっかりしておりました。
もうしわけありません。。。
0565デフォルトの名無しさん
NGNG10号館でコンパイルしてあげてもいいけど、
京都までの旅費くらい、だしてくれるよね?
漏れ、千葉に住んでるんだけどさ。
0566デフォルトの名無しさん
NGNGそれ(・∀・)イイ
みなで管理者に問い合わせメール投げるが吉(w
0567????
NGNGみなさんお手数おかけして申し訳ありませんでした。
忘れてやってください。
0568デフォルトの名無しさん
NGNG> movl 12(%ebp),%ebx
> movl (%esi,%ecx,4),%edx
こういう形式、あんましすきじゃないな。
0569デフォルトの名無しさん
NGNGmov ebx, dword ptr [ebp + 12]
の方が好みだ、という話?
0570568
NGNG0571デフォルトの名無しさん
NGNG{
char *a="abcdefg";
return a;
}
int main(void)
{
printf("%s\n",f());
return 0;
}
これなんですが
コンパイラはエラーにならず通りました。
局所変数のアドレスを返すのはまずいと知っているんですが
定数は大丈夫なんでしょうか?
290デフォルトの名無しさん sage 02/01/17 20:41>>289
問題ない。
char a[]="abcdefg";
return a;
だとまずいが。
ただ、文字列定数はconst char*にした方が良いと思われ。
const char* f(void)
{
const char *a="abcdefg";
return a;
}
294デフォルトの名無しさん sage 02/01/17 20:55>char a[]="abcdefg";
>return a;
>だとまずいが。
何故ですか?
295デフォルトの名無しさん sage 02/01/17 20:59ぞくにいう
宙ぶらりんのポインタ
296デフォルトの名無しさん sage 02/01/17 20:59>>294
次からは
C言語なら、俺に聞け! <11>
http://pc.2ch.net/test/read.cgi/tech/1009499565/
で聞け
それは ブロック内だけ有効な実体である aのアドレスをブロック外に返してるからだ
297デフォルトの名無しさん sage 02/01/17 21:00>>294それだと、局所変数のアドレスを返すから。
>>289は局所変数ではなく、文字列リテラルのアドレスを返してるから大丈夫。
0572デフォルトの名無しさん
NGNG文字列リテラルだとブロック外から参照してもよいのですか?
それはCの規格でそう決まっているのですか?それとも実装依存なのでしょうか?
0573デフォルトの名無しさん
NGNG積分範囲の最初 a と最後 b、積分の分割数 n を入力して、
定積分値∫f(x)dxをあらわすプログラムを作りたいんですけど、
まったくわかりません。本当によろしくお願いします。
0574_
NGNGいってることがわからん・・・・
0575デフォルトの名無しさん
NGNG文字列リテラルは定数の仲間、整数定数を返すのと同じく安全。
int f(void)
{
int a = 123;
return a;
}
0576デフォルトの名無しさん
NGNG局所的な自動変数のアドレスでなければ返しても大丈夫だと思うけど。
return "ITTEYOSHI";
こんなことしても大丈夫だし。
0577デフォルトの名無しさん
NGNG局所変数でも静的変数なら大丈夫じゃん。
0578デフォルトの名無しさん
NGNG{
static int a = 123;
return &a;
}
正直気持ちのいい物ではないね。
0579デフォルトの名無しさん
NGNG{
static struct Singleton obj;
return &obj;
}
とか…Cでは普通やらないか。
0580デフォルトの名無しさん
NGNG昔は、そういう実装の関数/システムコールも結構あった。スレッドセーフにならないので、最近は
廃れてるけど。
0581デフォルトの名無しさん
NGNGシンプソン則ってあんまり良く知らんけど台形則より
ちょっと難しいだけみたい。
ttp://www.geocities.co.jp/Playtown-Dice/1023/num-analys/simpson.html
とか、ヒントにやってみたら。
優香、宿題スレ逝け。
0582デフォルトの名無しさん
NGNG0583Voidさま萌え
NGNG0584デフォルトの名無しさん
NGNGここで、"\x070", "\x080"は何を表しているのでしょうか?
0585日下部圭子 ◆ib749tYo
NGNG文字コードを16進数で表記したもの。
たとえば下の二つは同じ文字列になる(ASCIIの場合)
"\x041"
"A"
文字列リテラルなどで検索してみましょう。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0586作ってもわからない
NGNG作ってわかる〜 の52ページにあるmain(int argc, char *argv[])
のargvのとらえ方はp53,p72,p73付近でなんとなく理解できましたが、いつの間にかこのフレーズが
main(int argc, char **argv) になっていて困ってます。
「*」が二つもついていると理解に苦しいのですが、今の段階では覚えるだけでいいのでしょうか?
初心者ですいません。
0587超初心者
NGNGEnterを押さない限り次のprintfの内容が
表示されないようにするにはどうしたらよいのでしょうか?
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG$man 3 atoi
atoi, atol, atoll, atoq - 文字列を整数型に変換する
スマソ
0591日下部圭子 ◆ib749tYo
NGNG> atoi, atol, atoll, atoq - 文字列を整数型に変換する
ato*系の関数でもいいですけど、エラーチェックをやりたいときには
strto*系のほうが便利ですよ。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0592デフォルトの名無しさん
NGNGジョブ図2世からあなたがこんどこのスレを
まかなっていくことになったのですね。
よろしくお願いします。
0593デフォルトの名無しさん
NGNG今LinuxでCの勉強をしているのですが、
$man strto*
と万個マンドにアスタリスクが使えるんですね。
初めて知りました。これでライブラリ関数を調べる
効率がぐんと上がりそうです。ありがとうございました。
0594デフォルトの名無しさん
NGNGzsh使えば、補完出来るよ
0595デフォルトの名無しさん
NGNG漏れなんか、manコマンドで標準関数の説明まで見られるなんて今まで知らなかったぞ(愚)
0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG質問ってのは、main関数の引数についてなんだけどな。 これについて教えて
くんないいかな。 自分の理解では、main関数の引数は、コマンドラインのオプ
ション解析の為にあるらしいんだけどな。
0598デフォルトの名無しさん
NGNG>>597
> コマンドラインのオプション解析の為にあるらしいんだけどな。
そうですか、良かったですね。
0599デフォルトの名無しさん
NGNG宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/
0600デフォルトの名無しさん
NGNG=================================
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int da[i];
double hi[i];
double lo[i];
int i, j, max, min;
if ((fp = fopen("Temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}
fscanf(fp)"%d %lf %lf",&d, &f, &g";
for (i = 0; i < (n-1); ++i) {
x = data[i];
max = i;
for (j = i + 1; j < n; j++) {
if (data[max] < data[j]) {
max = j;
}
}
printf("最高気温, 日付=%d\n, %d\n" hi[max], max);
for (i = 0; i < (n-1); ++i) {
x = data[i];
min = i;
for (j = i + 1; j < n; j++) {
if (data[min] > data[j]) {
min = j;
}
}
printf("最低気温, 日付=%d\n, %d\n" low[min], min);
fclose(fp);
}
9-1.c:40:35: missing terminating " character
9-1.c:17:34: possible start of unterminated string literal
9-1.c:36:35: missing terminating " character
9-1.c:13:34: possible start of unterminated string literal
0601デフォルトの名無しさん
NGNG逝ってよし
0602デフォルトの名無しさん
NGNGマルチポストウザイ
というか宿題スレの誤爆か
0603デフォルトの名無しさん
NGNGしらねーのかよ、ばーか。 んじゃあ、レスすんなって、、、
0604デフォルトの名無しさん
NGNG597の文章って、質問になってないじゃん(笑
何が聞きたいの?
あと、課題なら>>599さが誘導してくれたスレにね。
0605sage
NGNG0606デフォルトの名無しさん
NGNGE-mail欄にsageと書けるようになります。
あと、初心者を虐めることも出来るようです。
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNGどのような違いがありますか?
また、普通どちらを使うものなんですか?
0609デフォルトの名無しさん
NGNGなら、もう死んでるってことだろ。
どうにもできないと思うが。
0610デフォルトの名無しさん
NGNG勝手に core を吐くのと、明示的に exit(EXIT_FAILURE); するのとは別物だな。
>>608
こうでは?
s/プログラムが不正終了したとき/プログラムをエラー終了させるとき/
0611デフォルトの名無しさん
NGNGエラーハンドラをどうこうできる/しないといけないなら、longjmpとか、return。
0612デフォルトの名無しさん
NGNGエラー処理させるとき、です。たとえばfopen()がNULLを返したときとか。
自分でどうしようもないときはexitで、どうにかできそうなときはreturnなんですか?
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG場合によるなぁ。
エディタだったら fopen() で NULL が返ってくるたびに終了するようじゃ使い物にならん。むしろ
存在しないファイル名で fopen() したら
「指定されたファイルは存在しません。新規作成しますか」
とか、パーミッションの関係などで書き込みができないなら、その旨を表示して処理を続けるべき。
フィルタの類なら perror() & exit() でも良いと思う。
0615608
NGNGエディタじゃなくて、あるデータをあらかじめファイルに保存しておいて、
中身を表示するときにファイルを展開するんです。
だからもしなんらかの原因でファイルがないとどうしようもなくて。
0616sprit
NGNG0617デフォルトの名無しさん
NGNG宿題スレへ逝け。
0618デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <limits.h>
int main()
{
char* aszCmds[] ={
int n;
for(n = 0; n < INT_MAX; n++){
FILE* fp = tmpfile();
printf("%5d ", n);
if(n%10 == 0)
printf("\n");
fclose(fp);
}
return 0;
}
一時ファイルを作っては消し、作っては消しするプログラムです。
これを実行すると、どうしても32600回くらいで止まってしまいます。
なぜなんでしょう。。。
っていうか、皆さんの環境ではどうなるか
教えて欲しいです。
0619デフォルトの名無しさん
NGNGchar* aszCmds[] ={
この行は無しです。
0620デフォルトの名無しさん
NGNGネタ?
あなたの環境でのintの限界です。
0621デフォルトの名無しさん
NGNGtmpfileがNULLを返すね。つか、チェックしろよ>618。
0622デフォルトの名無しさん
NGNGファイルシステムの制限じゃないのか? ディレクトリの中に入れられる
ファイル数に制限があるとか。
0623デフォルトの名無しさん
NGNG32767個以上のテンポラリファイル名作れないようになってたよ。
仕様つことで。
0624 ◆0jAJSEXI
NGNG0625type
NGNGinputというファイルから文字列(日本語)を読み込んで、
それと同じ文字列を入力して同じならば…というような
タイピングゲームを作りたいのですがsystem("kinput2&")を
実行するとうまくいきません。どうしてですか?
void num2(){
int n=100,i;
FILE *fp1;
char honbun[100],type_moji[100];
fp1=fopen("input","r");
if(fp1==NULL)
exit(-1);
do{
printf("%s", fgets(honbun,n,fp1));
system("kinput2&");
fgets(type_moji,n,stdin);
}
while(!strcmp(honbun,type_moji));
fclose(fp1);
}
0626デフォルトの名無しさん
NGNG「うまくいきません」とはどういうことが。
0627type
NGNGWarning: KinputProtocol: SelectionClear event received
のがでます。
0628デフォルトの名無しさん
NGNGsystem("kinput2 2>/dev/null&");
とでもしろ。
つーか、kinput2なんて普通.xinitrcとか.xsessionから動かさんか?
ちなみに板違いなのでUnix板あたりに逝け。
0629type
NGNGsystem("kinput2 2>/dev/null&");
としたら警告でなくなりました。どうしてなのか?
でも入力した文字がリターンをおすと化けます。
どうしてなのですか?
0630デフォルトの名無しさん
NGNG0631type
NGNG下のプログラムなんですがファイルからとってきたのと
同じものをタイプしても配列の長さが違います。
つまりi,jの長さが違うんです、
どうしてですか?
void num2(){
int n=100,i,j;
FILE *fp1,*fp2;
char honbun[100],type_moji[100];
fp1=fopen("input","r");
if(fp1==NULL)
exit(-1);
system("kinput2 2>/dev/null&");
do{
printf("%s", fgets(honbun,n,fp1));
fgets(type_moji,n,stdin);
i=strlen(honbun);
j=strlen(type_moji);
printf("%d %d",i,j);
}
while(!strcmp(honbun,type_moji));
fclose(fp1);
}
0633デフォルトの名無しさん
NGNGデバッガ使うか、printfで適当に表示してみて、変数の中身確認してみそ。
0634デフォルトの名無しさん
NGNG(´o`).。oO(pipeにもつながないで、こいつはなにをやっているの?
unixは詳しくないんだけど、kinput2ってこういう使い方するの?)
0635デフォルトの名無しさん
NGNG不正な文字 'character' (0x'value')
入力ファイルの中に無効な文字がありました。
その文字の 16 進値が出力されます。
これは,関数マクロに余分な引数が渡されたことが原因であることもあります。
・・・というエラーが出るのですが原因が全くわかりません。
配列の[]の中の文字に対するエラーなのですが、他の文字に
変えても同じエラーが出ます。
「関数マクロに余分な引数が・・・」このあたりが原因でしょうか。
なにか心当たりがある人いたら教えてください。お願いします。
0636デフォルトの名無しさん
NGNGで、このvalueはいくつなわけよ?
0637デフォルトの名無しさん
NGNGエラーが出てるあたりのコードを見せるのが手っ取り早いと思われ
0638
NGNGもしかして、コードの中に全角のスペースとか入ってない?
0639デフォルトの名無しさん
NGNGIllegal character ' ' (0x8140)
と出てくるのですがド素人なので何のことやらさっぱりわかりません。
0640638
NGNGだから、全角スペースが入ってるって。
0641デフォルトの名無しさん
NGNG文字を変えていろいろ試してもだめだったのでそれはないと思います。
でも、もう一度確認してみます。
0642デフォルトの名無しさん
NGNG全く見当がつかないんです。全部載せるのもちょっと・・・
0643デフォルトの名無しさん
NGNG0x8140はSJISで全角スペース。
0644デフォルトの名無しさん
NGNG2>dev/nullはエラー出力を標準出力からNULLデバイス行きにするってことでし。
当然エラーは画面に出力されないようになりますw
0645デフォルトの名無しさん
NGNGマジっすか?それは全角スペースが入ってると考えて間違いない
と言うことですか?
0646デフォルトの名無しさん
NGNG聞く前に動け。
ソースを全角スペースで検索しろ
0647638
NGNGコンパイラは何使ってるの?
普通、エラーがでたら「このファイルの何行目」っていう情報はついてるよ。
っていうか、どんなコンパイラでもついてる、ついてなきゃおかしい。
でも、しつこいけど絶対、全角スペースが入ってると思うよ。
ためしに全てのソースで、全角スペースを半角に置換してみ。
0648デフォルトの名無しさん
NGNG全角スペースありました!初歩的なミスってやつですね。
全然かんけいないところにありました。
>>647
定義文の直後あたりに全角スペースが入ってたので、その文字が
使われてる場所全てにエラーが出てたようです。
考えてくださったみなさん本当にありがとうございました。
0649デフォルトの名無しさん
NGNGなんで定義文のところにエラーが出ず、正しい文字のほうに
エラーが出たんだろう?
解決したからいいんだけどちょっと気になる・・・まいっかぁ
0650618
NGNGレスどうもです。
>621
NULL返すのはなんでかなーってことでした。説明不足スマソです。
>623
仕様でしたか。。ありがとうございます。
0652凛
NGNG"123.4"といった任意の数値の文字列(数値で4桁)があり、小数点前を1000倍(123 * 1000)、
小数点後を1000倍(0.4 * 1000)して数値(long型?)にするのはどうしたら良いのでしょうか?
(123000 + 400 = 123400という値を作りたいのですが・・・。)
ただ、これをfloat型を使わないでなんてできますか?
0653デフォルトの名無しさん
NGNGstrchrなんかで '.'を検索せよ。
んで、そこで文字列を分割、その後に数値化。
本とか見てじっくりやればきっとできるぞ。
0654凛
NGNGやっぱり本、買わないとダメですね。
"123.4"(数値の文字列)から1000倍して、400(数値型)を作る方法がいまいち解らないんです。
0655デフォルトの名無しさん
NGNGdouble d;
d = atof("123.4");
printf("%d, %d", (int)d * 1000, (int)((d-(int)d) * 10 * 100));
0656デフォルトの名無しさん
NGNG中身をカラにするにはどうすればいいですか?
0657凛
NGNG小数点という考えを無くしてできますか?
0658デフォルトの名無しさん
NGNGお勧めしないが
int i, j ;
printf("In>") ;
scanf("%d.%d", &i, &j) ;
printf("Out>%d\n", i*1000+j*100) ;
0659デフォルトの名無しさん
NGNGそれだと、微妙にバグ有ると思う。
int power(int base, int r)
{
int ret=1;
while( r-- > 0)
ret *= base;
return ret;
}
main ()
{
const char *p="123.40";
char *pe;
const char *pr = strchr(p, '.');
long first = strtol(p,NULL,10) *1000;
long second=0;
if( pr )
{
pr++;
second = strtol(pr,&pe,10)*1000;
second /= power(10,pe - pr) ;
}
printf("%d %d",first, second);
}
0660凛
NGNGありがとうございます。
"123.4"という文字列に対して使いたいんです。
0661デフォルトの名無しさん
NGNGsscanfくらい知っとけ。
0662デフォルトの名無しさん
NGNG一度クローズして、"w+b"でオープンし直すのが一番お手軽かも。
0663デフォルトの名無しさん
NGNG>それだと、微妙にバグ有ると思う。
うむ、だからお勧めしない。
>>660
int i, j ;
sscanf("123.4","%d.%d", &i, &j) ;
printf("%d\n", i*1000+j*100) ;
0664656
NGNGレスどうもです。
てことは、ファイル名がいりますね。
他に思いつかないし、
ヤパーリファイル名を記憶するようにした方がいいかな。
0665デフォルトの名無しさん
NGNG0666662
NGNGfreopen()ってやっぱりファイル名がいるのでは?
>>664
Cの標準関数じゃなくなっちゃうけど、UNIXだと
rewind(fp); ftruncate(fileno(fp), 0);
てな感じでできそうな気がする。
まあ、ファイル名を覚えとけばいい話なので、ものぐさしないで
そうした方がいいかも。
0667656
NGNGありがとう。
0668デフォルトの名無しさん
NGNG#include <ctype.h>
#include <stdlib.h>
#include <string.h>
struct fixed {
long n;
unsigned long f;
};
struct fixed
parse_fixed(const char* s)
{
struct fixed x;
x.n = strtol(s, (char **)&s, 10);
if (*s++ == '.' && isdigit(*s)) {
char tmp[4];
int i = 0;
do {tmp[i++] = *s++;} while (isdigit(*s) && i < 3);
while (i < 3) tmp[i++] = '0';
tmp[3] = 0;
x.f = strtoul(tmp, NULL, 10);
}
else {
x.f = 0;
}
return x;
}
int main()
{
struct fixed x = parse_fixed("123.45");
printf("%ld, %ld\n", x.n, x.f);
return 0;
}
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG"123. 40"みたいのも通ってしまうと思われ。
それにsecondはstrtoul()でないとまずくなかろうか。
というか、>>659はオーバーフローする可能性がないか。
0671日下部陽一
NGNG0672仕様書無しさん
NGNG遅れてすまんが…
全角スペースなどの特殊な文字は
ソースの画面では色付き記号で表示されるよう、
エディタの設定をキチンとしておけゴルァ
あと、(半角スペースを書きたかったのかな?)
印字しても見えない文字はマクロで
#define HALF_WIDTH_SPACE 0x20
なんて定義して使うのもいいんじゃなかろうか。
0673デフォルトの名無しさん
NGNG俺の部下がやったら、殴るとおもうな…
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG#define _RMXFTMPL_H_
/////D3DRM_XTEMPLATES[]の定義
#ifndef
で定義されたヘッダファイルを2つの(drawx.h,Cobj.h)ヘッダファイルでインクルード
すると次のようなエラーが出てリンクエラーになります。1つだと大丈夫なのですが、
その場合どちらかのヘッダ&ソースファイルをプロジェクトから外さないとできません。
2つとも必要なんです。
>drawx.obj : error LNK2005:
>"unsigned char * D3DRM_XTEMPLATES" (?D3DRM_XTEMPLATES@@3PAEA) は
>すでに Cobj.obj で定義されています
ソースファイルのほうで定義しても同じでした。
どちらかのヘッダだけでこれをインクルードしてそのヘッダを別の方でインクルード
してもダメでした。た、助けて。何かリンクエラーの説明を詳しくやっているHPがあったら
教えて下さい・・・。
0676デフォルトの名無しさん
NGNG実体はどっかの.cppで確保すること。
0677デフォルトの名無しさん
NGNGヘッダでは「宣言」だけを行い、ソースで「定義」を行え。
0678675
NGNGこのヘッダを書き換えるんでしょうか?
このヘッダファイルはDirectXRMの中の定義ファイルなんです。
できたら書き換えないようにしておきたいのですがそれ以外に
何か方法はないんでしょうか?
.cppでの確保ですが、配列の内容が既にこのヘッダファイルで初期化代入
されてるんですけどそれがメチャメチャ長いんです。
0679デフォルトの名無しさん
NGNG> .cppでの確保ですが、配列の内容が既にこのヘッダファイルで初期化代入
> されてるんですけどそれがメチャメチャ長いんです。
そのヘッダ書いた奴馬鹿杉
0681デフォルトの名無しさん
NGNG教えていただけないでしょうか
バイナリファイルのコピーとテキストファイルのコピーの違いなんですが
ファイルをコピーするとき
バイナリ・テキストファイル両方コピーできるようにするならば
FILE *filename,filename2
char ch;
from=fopen(filename,"r");
to=fopen(filename2,"w");
while(!feof(from)){
ch=fgetc(from);
fputc(ch,to);
}
fclose(from);
fclose(to);
で出来ると思うのですが、なぜchar型に代入しているのにもかかわらず
バイナリがコピーできるかがわからないんです
確かchar型は-127〜127までの数しか扱えないとおもうのですが
バイナリは日本語を含めると255くらいまでの数がでてくるはずだとおもうのですが
この理由がさっぱりわかりません
お分かりになるかた教えてはいただけないでしょうか
0682デフォルトの名無しさん
NGNGバイナリでファイルを扱うなら、バイナリモードでオープンしないと。
fopen(file,"rb")
fopen(file,"wb")
0683デフォルトの名無しさん
NGNGchar型が符号無しかありかは処理系依存。
不安ならunsigned charにすればいいだろ。
0684デフォルトの名無しさん
NGNGすいません 書きミスってしまいました うっかりでした
ご指摘ありがとうございます
>>683
つまり処理系によっては これでコピーできないこともある ということですよね?
要するに unsigned charにして255まで扱えるようにすればいい ということですよね
0685デフォルトの名無しさん
NGNG計算さえしなければどうでもよい。
↑厨房意見
0686684
NGNGint型でも両方表示してみたんですが 数が違うのにコピーは出来てる・・・
いったいなぜなんでしょうか・・・
0688684
NGNG0689仕様書無しさん
NGNG元気に試すのは進歩の素。ガンガレ!
しかし
「確かchar型は-127〜127までの数しか扱えないとおもうのですが」って
-128〜127 なんじゃないかな?
ふつうは2の補数表現だからね。
あと、あなたが試していた例だと
unsigned char の 511 と signed char の -128 は同じビット並びで
内部表現されているわけです。
今回の最大の問題は、あなたがデータ型の修飾語を
明示的に使っていないことです。
>>686 「int型でも両方表示してみたんですが」って言ってるけど、
それも unsigned/signed を しっかり明示的に書いて試さないと、
なかなか理解できないぞ!
横着しちゃだめだぞ!
0690684
NGNG了解です!!ありがとうございます
これからは明示的にしっかり書いていくことにします!
まだC言語初めて 10日くらいしかたっていないのですが
みなさんに暖かくされるとやる気がでてきます
ありがとうございました
0691デフォルトの名無しさん
NGNG> char ch;
int ch;の方が好きだな
while((ch=fgetc(from)) != EOF){
fputc(ch,to);
}
の方がすっきりしてる。
0692デフォルトの名無しさん
NGNG0693689
NGNG「unsigned char の 511 」 ×
「unsigned char の 255 」 ○
回線切って首吊って帰宅して転生します。お休みなさい
(・∀・∀・)ヌッヘッホー
0694ななし
NGNGスコープの数を出力する
スコープの深さを出力する
コマンドラインツールありませんか?
0695デフォルトの
NGNG***.cgiファイルをリクエストされたときに
Perlにそのファイルを処理させて結果をブラウザに返すようにしたいのですが、
C言語から多言語に処理を渡す方法はどうしたらいいのでしょう?
0696デフォルトの名無しさん
NGNG0697ななし
NGNG0698デフォルトの名無しさん
NGNG0699684
NGNGちょい考えてみたんですが その式でいくと
ファイルの終端でEOFが帰ってきたのか エラーで帰ってきたのか
わからなくなっちゃわないでしょうか?
あと int型2バイトでやるよりchar型1バイトのが 処理が早くなるような
気がするんですが・・ 厨房なんでこんなことしか考えられないのですが
違ってますか?
0700デフォルトの名無しさん
NGNG処理の速さを改善するのだったら、read(), write()
で数Kバイト一気に読み書きしたほうがいい。
読み込み中のエラーを考慮するのならば、あらかじめ
ファイルの大きさを調べておけばいい。
0701デフォルトの
NGNGOS画ウインドウズなんですけど、そのまま出来るんでしょうか?
system("C:\perl\bin\perl test.cgi")ってのも考えたんですが、
これだと戻り値をソケットに流し込むことができないんですよね。
0703デフォルトの名無しさん
NGNG> ファイルの終端でEOFが帰ってきたのか エラーで帰ってきたのか
エラーのチェックはしてないように見えるが。
> int型2バイトでやるよりchar型1バイトのが
気にする程違いがあるわけじゃないよ。処理系にもよるけど。
それよか、1バイトだと (unsigned char)255 と (int)-1 の区別が
つかないぞ。
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG現在for文の例題をやっているのですが、もなかなか綺麗に書けません。
諸兄方に添削をお願いできますと有難いです。
内容:
dataというint型配列に、正数のデータがあり、エラー(-1)が混ざっています。
それを除外対象として、s番目の値を出力するプログラムを書いています。
(s=0 結果=1, s=1 結果=2, s=5 結果=6, s=7 結果=8)
----------------------私の書いたプログラム----------------------
#include <stdio.h>
int data[] = {-1, 1, 2, 3, 4, -1, 5, -1, -1, 6, 7, 8, 9};
int s=7; /*簡単に考えるため、dataの添え字が無効にならない範囲と仮定*/
main()
{
int i, j;
for (i=j=0; i<=s; ++i, ++j) {
while (data[j] == -1) {
j++;
}
}
j--;
printf("result = %d\n", data[j]);
}
--------------------------------------------------------------
無い知恵絞ったのですが、ループ内で完結せずに j-- が外に出ています。
ソートなどの難しい問題をやる場合には、ループ内での比較処理はよく使われると
思うのですが、このプログラムももっとシンプルになりませんでしょうか?
定石のような書き方がありましたら、教えて下さい。よろしくお願い致します。
0706デフォルトの名無しさん
NGNGその後に新しい配列のn番目にアクセスすればOK。
とか。
0707デフォルトの名無しさん
NGNGi を使わなきゃもっとシンプルになるだろうに。
0708707
NGNG0709デフォルトの名無しさん
NGNGfor (i=0,j=-1; i<=s; ++i) {
++j;
while (data[j] == -1) {
++j;
}
}
//or
// for( i=0, j=-1; i<=s; ++i )
// while( data[++j]==-1 );
とか。しかしfor文の例題ということなら仕方ないが、
この場合 do〜while で書いた方がスッキリするような。
0710705
NGNG>>706
書き換えてみました。
data2という配列を用意して、
for (i=j=0; i<(sizeof(data) / sizeof(int)); ++i) {
if (data[i] != -1) {
data2[j++] = data[i];
}
}
printf("result = %d\n", data2[s]);
とすると、一重のループで書けるんですね。
>>707
私こそ、汚いプログラムで、すみません。
forのカッコ内には、いっぱい書かない方がスッキリするんでしょうね。
0711705
NGNG>>709
j(添え字)に、0未満の値を入れておくなんて、思いつきませんでした。
whileよりも先にj++しておけば、ループ内で完結しますね!
プログラム技術板の方々は、さすがスゴイですね。
#まだ制御文はif,for,whileだけで、do〜whileには至ってません。
そこまでいけましたら、復習でdo〜whileを使って書き換えてみます。
0712デフォルトの名無しさん
NGNG独習Cを端から端まで読んでも書いてない
ネットで調べてものってない なんなんだこりゃぁ・・・
たとえばローカル配列変数
char str[100][2][30];
で100のリストに2つづつ入る文字列テーブルを作って
それのポインタを関数に送って その関数ないで strの中身まとめてを書き換える
というのが どうしてもわかりません
グローバル変数でやってしまえばポインタを仮引数にして送る必要もないんですが
どうしてもそれじゃ納得できないんです・・・
0713デフォルトの名無しさん
NGNGfoo(char (*strp)[100][2][30])
{
...
}
foo(&str);
ではだめか?
0714デフォルトの名無しさん
NGNGあなたの目は節穴ですね :)
0715デフォルトの名無しさん
NGNGp[i] = &a[i][0];
とかでやる。
0716デフォルトの名無しさん
NGNGvoid func(***a)
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGfoo(char (*strp)[2][30]){;}
foo(str);
でいいんじゃない?
>グローバル変数でやってしまえばポインタを仮引数にして送る必要もないんですが
無理に次元増やさなくても。
>>716
>>714
0719デフォルトの名無しさん
NGNG>たとえばローカル配列変数
>char str[100][2][30];
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGそれ偏見。
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNG確かにそうだがその認識は間違っている。ANSI読んでね。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNG内部的にはポインタ扱い
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNGint n[1];
int *p;
printf("%d", n[0]);
printf("%d", p[0]);
最適化をきってコンパイルしてアセンブラ出力を見てみ。配列は間接参照せずに、
直接アドレスを出してるはずだから。
0731デフォルトの名無しさん
NGNG「内部」とか、自分にしか通じない用語を使うなよ。
「配列は右辺値として評価したときにはポインタに縮退する」であって、左辺値と
しての扱いは全く異なるし、一般にはメモリ配置もポインタを使う場合と配列を使
う場合で違う。
0732718
NGNG#include <stdio.h>
int tech(char (*strp)[2][16])
{
int a, b;
for (a=0; a<10; a++)
for (b=0; b<2; b++) {
printf("str[%d][%d]@%p = \"%s\"\n", a, b, *(strp+a)+b, *(*(strp+a)+b));
printf("str[%d][%d]@%p = \"%s\"\n", a, b, &strp[a][b], strp[a][b]);
}
return 0;
}
main()
{
int a,b,c;
char str[10][2][16];
for (a=0; a<10; a++)
for (b=0; b<2; b++) {
str[a][b][0] = '0'+a;
str[a][b][1] = '-';
str[a][b][2] = '0'+b;
str[a][b][3] = '\0';
}
tech(str);
return 0;
}
要素数小さくしてあるよ。
0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG0736むふふ
NGNG0737デフォルトの名無しさん
NGNG0738_
NGNGするのがいいと思うんだが
0739むふふ
NGNG0740_
NGNG配列とポインタはまったくおなじである。
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG煽ってるじゃねえよ!
お前! 間違ってるんなら、教えて下さい。
>739
関数で、配列は渡せません。
配列名だけを記述すると、先頭要素へのポインタとなります。ポインタを渡しています。
740も書いているけど、関数の仮引数として[]を記述しても、ポインタの意味です。
foo(int x[]) でも foo(int x[256]) でも foo(int *x) でも同じです。
可読性のためです。厳密には、一次元の配列しか存在しません。
foo(int x[4][10]) と foo(int x[][10]) と foo(int (*x)[10])
どちらも、大きさ10のint型配列へのポインタを仮引数として受け取ります。
foo(int **x) は、int型へのポインタへのポインタを仮引数として受け取ります。
だから、712の問題では func(***a) と書くのは文法的に間違い。
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG>foo(int x[4][10]) と foo(int x[][10]) と foo(int (*x)[10])
演算子の優先度 () = [] > * なので、3番目の記述では()が必要。
0745むふふ
NGNGポインタのポインタで関数側で受けるということでしょうか?
0746705
NGNG0747むふふ
NGNG元の配列にも影響しているのは、アドレスをコピーしてるからですか?
0748むふふ
NGNG0749デフォルトの名無しさん
NGNG言語仕様と実装を混乱してるだろ?
0750デフォルトの名無しさん
NGNG0751むふふ
NGNGint data;
struct list *next;
struct list *prev;
}LIST;
ってどうなってるの?
0752むふふ
NGNG0753デフォルトの名無しさん
NGNG0754むふふ
NGNG0755デフォルトの名無しさん
NGNG0756むふふ
NGNG0757むふふ
NGNG0758むふふ
NGNG0759デフォルトの名無しさん
NGNG…それ読んで駄目ならお前プログラマ辞めろ。
つーか、本当に読んだのか?
理解する気あんのか?
0760むふふ
NGNGでもハッシュ探索わからないと、テストやばいっす
0761むふふ
NGNG0762むふふ
NGNG0763デフォルトの名無しさん
NGNG短時間にいくつも書き込むなよ。邪魔だ。
> でもハッシュ探索わからないと、テストやばいっす
理解できないなら、単位を取得できないのは妥当だと思われ。他の科目で
頑張るか、己の才能のなさと友人の少なさを恨みつつ留年しなよ。
0764デフォルトの名無しさん
NGNG悪いが俺は、猿に微積を教えるような真似はしたくない。
0765むふふ
NGNG宣言が再帰的なんですか?
0766むふふ
NGNG0767デフォルトの名無しさん
NGNGこの掲示板では、だれもあなたに説明する義務はありません。学生なら
先生捕まえて質問しろ。そのために学費払ってるんだろ?
0768デフォルトの名無しさん
NGNGそうです、この板には残念ながら“あなたに”教えられる人はいません。
あきらめて他所へ逝ってください。
かしこ
0769むふふ
NGNG0770むふふ
NGNGMoran!
0771デフォルトの名無しさん
NGNGそんな古典的な煽りをいれたって教えてはくれないって。
0772むふふ
NGNG0773むふふ
NGNG0774デフォルトの名無しさん
NGNG何がどう分からないんだよ。
このスレの住人はそれが分からないんじゃなくて君へのうまい教え方が分からないんだろ。
無理もないよ。
0775デフォルトの名無しさん
NGNGそんなことのできる香具師がこの板にいるとおもうか?
0776デフォルトの名無しさん
NGNG真・技術系メーリングリスト
http://www.geocities.co.jp/SiliconValley/5656/
これでも読んで出直して来い。ここは匿名掲示板で ML じゃないが、通じる
話は多いぞ。
0777むふふ
NGNG0778デフォルトの名無しさん
NGNG> でもハッシュ探索わからないと、テストやばいっす
> 高校生です、、独学なんで。
学校のテストに出る事を勉強してて独学って何?
つーか、お前が何がわからんのかが分からんわ。
0779むふふ
NGNG0780デフォルトの名無しさん
NGNGprevやnextがポイントする対象がstruct listだからそう書いてるだ
けのことです。
0781デフォルトの名無しさん
NGNG真・技術系メーリングリスト「FAQ」ね。
0782むふふ
NGNGあまり怒らないでください
0783デフォルトの名無しさん
NGNGCASLで受ければ?
0784むふふ
NGNG>780
0785むふふ
NGNG>784
0786むふふ
NGNG0787むふふ
NGNG0788デフォルトの名無しさん
NGNGだとしたら、分裂症か多重人格で病院送りだな(ワラ。
0789デフォルトの名無しさん
NGNG> デフォルトの名無しさんは同一人物なんですか?
そうだよ、暇で暇でしかたないんだよ(w
0790デフォルトの名無しさん
NGNGリストを理解できているならばその書式の必要性は分かるだろう。
必要だから構文として認められている。
0791むふふ
NGNG0792デフォルトの名無しさん
NGNGネタじゃないと仮定して、
2ch初心者なのね・・・
0793むふふ
NGNG0794むふふ
NGNG0795むふふ
NGNG0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG(゚д゚)♀!?
(;´Д`)ハァハァ。
0798むふふ
NGNG0799むふふ
NGNG親切に教えてくださった方、感謝します。
0800むふふ
NGNG0801デフォルトの名無しさん
NGNGあなたが頑張ってるかどうかはどうでも良いですが、私は迷惑してます。
(せめて sage ろ)
0802むふふ
NGNG0803デフォルトの名無しさん
NGNG0804むふふ
NGNG0805デフォルトの名無しさん
NGNGなんで逆切れするかなあ?
とりあえず名前欄に何も入れずに書き込んで見ろ。
ただし沈んでいるスレでsageてな。
0806むふふ
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったらオレに聞け。」
って書いてたのに、、(涙)
0807むふふ
NGNG0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG自分で書いたことぐらい責任を持って実行しろよ。さっさと (・∀・) カエレ!
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNGこんなネタが‥‥キヅカナカッタ
0812むふふ
NGNGなのに、言いすぎじゃないですか!
0813デフォルトの名無しさん
NGNGうーん。初心者のパターン通りで少々詰まらぬな。
ネタ職人は、もっと努力するように。3点。
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG713=722=725=…=733=749=むふふ(一部) と見た!
0816むふふ
NGNG0817むふふ
NGNG0818むふふ
NGNG0819むふふ
NGNG0820デフォルトのむふふさん
NGNG0821Kusakabe Youichi
NGNG>ってどうなってるの?
1312ペイジと1314ペイジに書いてありますね。
0822むふふ
NGNG0823むふふ
NGNG0824むふふ
NGNG0825むふふ
NGNG0826むふふ
NGNG0827むふふ
NGNG0828むふふ
NGNG0829デフォルトの名無しさん
NGNG0830むふふ
NGNG0831デフォルトの名無しさん
NGNG| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
| | | ̄ ̄ ̄ /| ||
| | | / /|TTTTTT TTTTTTTTTT||TTTTT
| /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
| / / |// / /|
| / / |_|/|/|/|/|
| / / |文|/ // /
|/ /. _.| ̄|/|/|/ ∧_∧
/|\/ / / |/ / (___)
/| / / /ヽ /〔 祭 〕〕つ
| | ̄| | |ヽ/l `/二二ヽ
| | |/| |__|/ ∧_∧ / /(_)
| |/| |/ ( ´∀`) (_) ∧_∧
| | |/ // / ^ ̄]゚ (` )
| |/ ゚/ ̄ ̄_ヽ ⊂〔〔 祭 〕
| / /_ノ(_) ┌|___|
|/ (__) (_ノ ヽ ヽ
/ (_)
0832むふふ
NGNG0833デフォルトの名無しさん
NGNG(´-`).。oO( もうわけわからんわ… )
0834Kusakabe Youichi
NGNG>教えられないだけなんですか?
ということにしたい?
0835むふふ
NGNG0836むふふ
NGNG| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
| | | ̄ ̄ ̄ /| ||
| | | / /|TTTTTT TTTTTTTTTT||TTTTT
| /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
| / / |// / /|
| / / |_|/|/|/|/|
| / / |文|/ // /
|/ /. _.| ̄|/|/|/ ∧_∧
/|\/ / / |/ / (___)
/| / / /ヽ /〔 祭 〕〕つ
| | ̄| | |ヽ/l `/二二ヽ
| | |/| |__|/ ∧_∧ / /(_)
| |/| |/ ( ´∀`) (_) ∧_∧
| | |/ // / ^ ̄]゚ (` )
| |/ ゚/ ̄ ̄_ヽ ⊂〔〔 祭 〕
| / /_ノ(_) ┌|___|
|/ (__) (_ノ ヽ ヽ
/ (_)
0837むふふ
NGNG0838デフォルトの名無しさん
NGNG二回目は、たんなるコピペ荒らしだ。ネタは時宜を心得てな。
0839むふふ
NGNG| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
| | | ̄ ̄ ̄ /| ||
| | | / /|TTTTTT TTTTTTTTTT||TTTTT
| /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
| / / |// / /|
| / / |_|/|/|/|/|
| / / |文|/ // /
|/ /. _.| ̄|/|/|/ ∧_∧
/|\/ / / |/ / (___)
/| / / /ヽ /〔 祭 〕〕つ
| | ̄| | |ヽ/l `/二二ヽ
| | |/| |__|/ ∧_∧ / /(_)
| |/| |/ ( ´∀`) (_) ∧_∧
| | |/ // / ^ ̄]゚ (` )
| |/ ゚/ ̄ ̄_ヽ ⊂〔〔 祭 〕
| / /_ノ(_) ┌|___|
|/ (__) (_ノ ヽ ヽ
/ (_ )
0840むふふ
NGNG0841むふふ
NGNG0842むふふ
NGNG0843むふふ
NGNG0844むふふ
NGNG0845むふふ
NGNG0846むふふ
NGNG0847むふふ
NGNG0848むふふ
NGNG0849むふふ
NGNG0850むふふ
NGNG0851むふふ
NGNG0852むふふ
NGNG0853むふふ
NGNG0854むふふ
NGNG0855むふふ
NGNG0856超おそレス
NGNGバカなことをやってみました。
Cは長い間つかってないので、これで動くか知らん。テストしてない。
#いや、末尾再帰は最適化されるので良いんです(笑
#include <stdio.h>
#define ERROR -1
int data[] = {-1, 1, 2, 3, 4, -1, 5, -1, -1, 6, 7, 8, 9};
int main()
{
int tmp;
tmp = lambda( data , s , sizeof(data) / sizeof(int))
if (tmp != ERROR) { printf("result = %d\n", tmp ); } else { printf "Not Found !\n") }
return 0;
}
lambda(int *dat, int count, int limit)
{
return limit == 0 ? ERROR :
*data == ERROR ? lambda(dat + 1, count, limit-1 ) :
count == 1 ? *data : lambda(dat + 1, count-1, limit-1);
}
0857自称電気科の先生
NGNG0858自称電気科の先生
NGNG0859オイラー法なんですけど、エラーが出るんです
NGNG#include<math.h>
double F70(double x,double y);
void EULER(double h,int n,double x0,double y1[],double yy[]);
int main(void)
{
double n,i;
double x0,y0,y1[50],yy[50];
double h,xn;
printf("\n x0=");
scanf("%lf",&x0);
printf(" y0=");
scanf("%lf",&y0);
printf(" xn=");
scanf("%lf",&xn);
printf("n=");
scanf("%d",&n);
h=(xn-x0)/n; y1[0]=yy[0]=y0;
EULER(h,n,x0,y1,yy);
printf("\n");
for(i=0;i<=n;i++)
{
printf("x=%8.5f y=%9.5f ",x0+h*i,y1[i]);
}
return(0);
}
double F70(double x,double y)
{
return(-100*y+100);
}
void EULER(double h,int n,double x0,double y1[],double yy[])
{
int i;
for(i=0; i<=n; i++)
{
y1[i+1]=y1[i]+h*F70(x0+h*i,y1[i]);
yy[i]=exp(x0+h*i)-(x0+h*i)-1;
}
}
0860階乗
NGNG0861自称電気科の先生
NGNG参考になります。この資料で考えてみます。
0862自称電気科の先生
NGNG0863びぎな
NGNGmain関数と他の関数を別のファイルに分けた場合(それぞれファイル1、ファイル2とする)、
ファイル1で定義したグローバル変数を、ファイル2に書かれた関数で使うことって
できなんですか? エラーが出るもので。
ファイル2にも同じグローバル変数を定義するとコンパイルは通るのですが、
これって二度定義してるようでなんか気持ち悪い…。
0864デフォルトの名無しさん
NGNGexternって調べても出てこない?
0865デフォルトの名無しさん
NGNGextern 使って「宣言」すればいい。
ふつーは
file1.c
file1.h
file2.c
file2.h
とファイルを作って file1.h, file2.h には file1.c, file2.c のうち公開関数やグローバル
変数に関する「宣言」をまとめて書いておく。で、file1.c, file2.c では file1.h, file2.h
を #include する。
0866デフォルトの名無しさん
NGNGextern を使う。
参照側で extern TYPE VAR;
0868びぎな
NGNG0869デフォルトの名無しさん
NGNGexturnじゃない、extern
0870デフォルトの名無しさん
NGNGプログラマがそれを読んで 分析することがある。
この手法の長所と短所を考察せよ。
この問題を教えていただけないでしょうか?
0871デフォルトの名無しさん
NGNGhttp://myhome.hananet.net/~crazyghost/goto.htm
0872デフォルトの名無しさん
NGNG短所 面倒くさい
0873デフォルトの名無しさん
NGNGhttp://myhome.hananet.net/~crazyghost/goto.htm
08741時間
NGNGasciiでprintf("hello,world!");
を16進数で書くのに1時間もかかった俺って一体・・(;´д`)
0875デフォルトの名無しさん
NGNG機械語は16進数じゃなくて2進数だろ。
0877デフォルトの名無しさん
NGNG>>874-875
こいつらつまみ出して!
0878デフォルトの名無しさん
NGNGバカばっか。
0879デフォルトの名無しさん
NGNG>>876 の、p="printf(\"hello, world!\")"; のとこって、
勝手にメモリ確保されるんですか?
やってみたらやっぱりちゃんと動きましたが。
0880デフォルトの名無しさん
NGNG> 勝手にメモリ確保されるんですか?
確保っつーか、文字列リテラルはプログラム起動時からメモリ中に
存在するはず。
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGって、、なんなの?
0883デフォルトの名無しさん
NGNGびびりました。
0884デフォルトの名無しさん
NGNGまた、それはforkで複製されますがプロセスのアドレス空間以外も複製されるという事なのでしょうか?
お願いします。
0885デフォルトの名無しさん
NGNG否
CのストリームI/O(stdio)を理解せよ。
0886デフォルトの名無しさん
NGNGよくみると、けっこう俺の好みのタイプかも…
0887デフォルトの名無しさん
NGNG/ / o △o \丶
ノ//ノノハ))))\| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
| | 川 σ σ 川 || < ナス入れてもイイよ
| / 丶 ー ノ \| \_________/
/⌒ - - ⌒\
/⌒\ ・ ・ /⌒\
/ _____\ /____ \
/\/ 、____⊇((゚))⊆_____\/\
/ / \_)*(_/ \ \
|_/ \_
0888デフォルトの名無しさん
NGNGマジかよ…
0889自称電気科の先生
NGNGほわかんがぁぁあ!!!(謎
危なそうなのでウィンドウ消しました
何だあれ??ヘンな文字・・・・・
0890デフォルトの名無しさん
NGNG>標準入出力のバッファが置かれてるのはカーネル内という認識でよろしいのでしょうか?
ここが否なのでしょうか?
それならば標準入出力用のバッファもプロセスのアドレス空間内に取られているのでしょうか?
ヒープ領域にでも取られているのでしょうか?
教えてください。それかどの書籍を調べれば良いのか教えてください。お願いします。
0891886
NGNGあと、白目をちゃんと書いて、肌色にして…
あ、やっぱブスだわ、ごめん。
0892デフォルトの名無しさん
NGNGルーク、ソースを使え
一般的には
- カーネルに直接アクセスする (read, write システムコール)
- ユーザ空間でキャッシュする (FILE 構造体を使う)
という実装が多いはず。とりあえずデバッガで fread() あたりにブレークポイントをかけて
そのごの挙動を追ってみ。
0893デフォルトの名無しさん
NGNGワラタ
ソースの暗黒面は何だろう…
gotoとか処理系依存のコードか?
0894デフォルトの名無しさん
NGNGfopenとかで読み込んだファイルのサイズを調べることってできますか?
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGlong が 32bit の環境で 2GB 以上のファイルだとマズー。
0897デフォルトの名無しさん
NGNG文字配列buf[64]を用意してfgets(temp)してからsscanf(temp,"%d", i)として
ある配列sample[i]を表示させようとするとうまくいきません。
これは多分fgetsしたときにint型としてbuf[]に入っていないからだと思うのですが、
よい対策方法はありませんか?
また、このような数字を取得する方法についてもっとよいものがあったら教えてください。
0898895
NGNGsscanf(temp,"%d", &i)ではないのか?
>896
_filenoをつかって、_lseeki64と_ltelli64で、かえ?
0899897
NGNGああ、&iにしてませんでした。。なんと初歩的なミスを。逝ってきます。
というかバッファ名がtempとbufでごちゃまぜになってますね。どっちかで統一してください(汗)
…鬱だ。
0900デフォルトの名無しさん
NGNGとした時、
(arr == &arr[0]) && (arr == &arr)
が成り立ちます(VC6Pro, Cygwinで確認)。
前者の比較が真と評価されるのは当然ですが
後者のが真になる(それ以前にコンパイルが通る)理由がわかりません。
&arrは文法的にどう解釈されるのでしょう?
0901デフォルトの名無しさん
NGNGオブジェクトって言葉は使い慣れないんだけど、
配列arrは一つのオブジェクト、arr[0]は一文字の
オブジェクト、とかそーゆー感じじゃないのかな。
ちょっと言葉足らずかな。
0902デフォルトの名無しさん
NGNG> &arrは文法的にどう解釈されるのでしょう?
このポインターはarrへのポインターで配列の最初の要素を指す。
要するに&arr == &arr[0] == arr
0903デフォルトの名無しさん
NGNG通常は>>895の方法で十分だろうね。
<sys/stat.h>と<sys/types.h>があればstat()を使った方がいいかも。
0904デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
#define HSIZE 10
/* slist構造体とSLISTを定義する */
typedef struct slist{
char *pkey;
char *pchar;
struct slist *next;
}SLIST;
/* ハッシュテーブル */
SLIST *htable[HSIZE];
/* ハッシュ関数 */
unsigned long Hash(char *pch)
{
/* 種としてアドレス値を与える */
srand((unsigned int)pch);
/* rand()を使って擬似乱数を生成する */
return (unsigned long)(rand() % HSIZE);
}
/* ハッシュテーブルを作成する関数 */
void RegisterHashTable(char *pch1, char *pch2)
{
SLIST *lpnew, *lptemp;l
unsigned long h = Hash(pch1);
/* 新しいリスト要素を生成する */
lpnew = (SLIST *)malloc(sizeof(SLIST));
if(lpnew == NULL){
/* stderrにエラー文字列を出力する */
fprintf(stderr, "メモリエラー\n");
/* exit()関数を使って実行を終了する */
exit(1);
}
/* 新しい要素に値を代入する */
lpnew->pkey = pch1;
lpnew->pchar = pch2;
/* 自分自身とする */
lpnew->next = lpnew;
/* 未登録のケース */
if(htable[h] == NULL)
/* ハッシュテーブルに登録する */
htable[h] = lpnew;
else
{
lptemp = htable[h];
while(lptemp->next != lptemp)<--------------ここはどういううこと?
lptemp = lptemp->next;
/* リンクする */
lptemp->next = lpnew;
}
}
0905デフォルトの名無しさん
NGNG> while(lptemp->next != lptemp)<--------------ここはどういううこと?
リストの最後まで繰りかえす。
8行ほど前で
> /* 自分自身とする */
> lpnew->next = lpnew;
とデータの最後を自分自身と定義しているので、これが終わりの印となる。
もっと詳しい情報が知りたい場合、
「循環リスト」を検索キーワードとすると良い
0906デフォルトの名無しさん
NGNGそのnextがnextじゃないのはリンクされてるからだ。
だからリンクをたどってて、最後のnextにmallocで確保したのをリンクしてるんだろ。
0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNGマルチポストした上に“正しい?”ってのは随分な態度ですね?
0909デフォルトの名無しさん
NGNGそれのどのあたりが循環リスト?
単に終端子がNULLでなく、thisなだけやないかと。
0910デフォルトの名無しさん
NGNG正しい。めっちゃめちゃ正しいですが、何か?
0911910
NGNGあ、そういえば、たしかに hoge->next == NULL で お尻なのではない
(自分自身を指すと お尻である、と定義する) リストの実装って
ほとんど見たことがなかったよ…。
0912デフォルトの名無しさん
NGNG0913905
NGNGスマン、間違えた
以下の認識で合ってる?
循環リスト
□→□→□→□→□→□→□
↑ │
└───────────┘
終端子がthis(904のリスト構造)
# ところでこれって何かメリットあるの?
□→□→□→□→□→□→□─┐
↑ │
└─┘
0914デフォルトの名無しさん
NGNG知らない間にほげ->next=NULLが終わりだとして
「これがリスト構造ってやつだな」って思ってつかってたぞ。
オブジェクト指向も言葉の意味がちんぷんかんぷんだったけど、
今では何気にオブジェクト使ってるぞ。クラスの使い方も
わかったぞ!最初はグローバル変数で管理してたけどな!
ごるぁーーー
0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNGメリットっていったってどっちもどっちでしょ?
0917905
NGNGちょっとモナ板に逝って練習してくる。
0918905
NGNG1)循環リスト
□→□→□→□→□→□→□
↑ │
└───────────┘
2)終端子がthis
□→□→□→□→□→□→□─┐
.↑ │
.└─┘
3)終端子がNULL
□→□→□→□→□→□→□→NULL
普通は単方向リストの場合、3)が使われると思うけど、
2)を使う理由が知りたいです。
1)と2), 3)の違いは>>916で理解しました。
0919デフォルトの名無しさん
NGNG(見物人)
0920デフォルトの名無しさん
NGNG違いなんてあるの?
終端を識別するのにNULLポインタ(無効なアドレス値)を使用するか、
自分自身(意味的に無効な値)を使用するか、趣味の問題では?
# 積極的な理由があるのなら、私も知りたいデス…
0921デフォルトの名無しさん
NGNG2)だと判定が1こ必要になるなぁ、なにかメリットあるんだろうか…
0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNGNULLでアクセス違反を起こすようなコードは、
むしろ、さっさと起こして貰った方が健全かと。
0924デフォルトの名無しさん
NGNG&arrと&arr[0]では、型が違うんではないの。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGarrはポインタと書式を一致させるために付け加えられた文法
0927デフォルトの名無しさん
NGNGちがう。arrはchar[4]、&arr[0]はchar*。値を評価するときにchar[4]がchar*
にpromoteされるというだけ。
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNGarrと&arr[0]って、、、本には書いてあったのに??
柏原正三に ゆーてんか!
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG・sizeof と 単項& のオペランドになるときは、char[4]
・それ以外は char* const
として扱われるんだった気がする。
もう一通りくらい配列扱いになる場合があったかも。
0932デフォルトの名無しさん
NGNGvoid foo()
{
char arr[4];
struct{int n;}n;
n = arr;
n = &arr;
n = &arr[0];
}
コンパイル中...
test.cpp
c:\test\test.cpp(6) : error C2679: 二項演算子 '=' : 型 'char [4]' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
c:\test\test.cpp(7) : error C2679: 二項演算子 '=' : 型 'char (*)[4]' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
c:\test\test.cpp(8) : error C2679: 二項演算子 '=' : 型 'char *' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
cl.exe の実行エラー
0933デフォルトの名無しさん
NGNGそれ、もらった。
0934デフォルトの名無しさん
NGNG>>932はいつも教えてもらってんだろうなぁ。
0935n
NGNGchar *hugahuga=malloc(sizeof(char)*24);
strcpy(hugahuga,"hugahuga");
で
hogehoge と hugahugaの違いはなんだ?
なんでhogehogeはfreeしなくていいの?
0936デフォルトの名無しさん
NGNG0937n
NGNG0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNGmalloc()が返すポインタはヒープ領域に確保されたメモリブロックの先頭アドレス。
free()にこのポインタを渡す事でメモリブロックは解放され、以降プロセス内で再利用できる。
少し本やマニュアル読めば分かる事聞いてんなよ、バァーカ。
おめぇはプログラムの前に日本語を学べ、バァーカ。
0940デフォルトの名無しさん
NGNGfree()すべきなのは動的に確保した領域のみ。
ちなみに malloc() して strcpy()、なんてダルイことをせずに、
strdup() または _strdup() を使え。
0941デフォルトの名無しさん
NGNG細かいことは気にすんな。
いつか分かるよ。
どうしても気になるなら、アセンブラでもやってみ。
0942デフォルトの名無しさん
NGNGいや、アセンブラやるよりもライブラリのソース読むほうが。
0943デフォルトの名無しさん
NGNGそうとは限らん
0944デフォルトの名無しさん
NGNGを期待すべきではないっつーのは確かだろ。
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG日下部某を連想するのは私だけでしょうか?
0947デフォルトの名無しさん
NGNGC99ではstrdupが標準関数に追加されていますか?
0948デフォルトの名無しさん
NGNGされてない。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951940
NGNG主要な処理系(組み込み除く)のライブラリは strdup/_strdup を
用意しているので、現実には困らん。
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGんー。でも、そーすると1行で書けなくなるんよね・・・
malloc は NULL を返さないという前提の元でよろしく。富豪的プログラミング万歳。
0954デフォルトの名無しさん
NGNGそれは富豪的プログラミングではなく、単なる手抜きだ。
0955n
NGNG0956ウルトラハッカー 日下部陽一
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1012348974/l50
0957ウルトラハッカー 日下部陽一
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。