C言語なら、俺に聞け! <7>
レス数が1000を超えています。これ以上書き込みはできません。
0001sageジョブス
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言語なら、オレに聞け! <6>
http://piza2.2ch.net/test/read.cgi/tech/999617524/
0002デフォルトの名無しさん
NGNG0003武夫。
NGNG0004デフォルトの名無しさん
NGNGアドレス
0005前すれ 973
NGNGすみません, 話のふりがまずかったですね.
> if (sscanf(str, " hogehoge = %d ", &n) == 1) {
はもちろんその通りです.
で, scanf() っていろいろ癖がありますよね.
例えば書式文字列中に空白があったときは, 入力フィールドはどういう風に
扱われるとか, 書式文字列中では \n は必要なのかとか, %s 使ったら
(あたりまえなのかもしれないけど)入力フィールドの文字列全部取られたとか ...
そういうのをより実践的な例を使って説明してる本とか Web とかって
ほとんどないですよね ? で, そういう話をここでできてばいいなあと
思って話をふってみました(失敗した感じだけど).
おそらく本職のプログラマさんはこんなのが必要なときは
scanf() なんか使わないで, もっとがりがりトークンの切り出しのプログラムとか
lex/yacc とか使うんだろうとは思うんですけどね(ちなみに私は本職のプ
ログラマではありません).
0006超初心者
NGNG最大原理を用いて、4次のルンゲクッタ法で計算したいのですが、
ポインタを使わないで計算するプログラムソースとかありませんか?
または最大原理を説くプログラムソースなどがある場所を教えて下さい。
0007デフォルトの名無しさん
NGNGどこかにないですか?
0008デフォルトの名無しさん
NGNGねぇ、なに?
教えてよ、お願い
0009デフォルトの名無しさん
NGNGC言語で書かれた、シューティングゲームのソースです。
0010デフォルトの名無しさん
NGNGポインタを使うと何か不都合がありますか?
0011超初心者
NGNGポインタを使った事がないので、プログラムが理解できないです・・・鬱
2次の配列を使ってやるのが良いと言われたのですが・・・
何処かにないですか?初心者ですみません。
0012デフォルトの名無しさん
NGNG私がプログラムを書いてあげよう。
0013デフォルトの名無しさん
NGNGそのくらい自分で調べろよ。
0014974
NGNGK&Rに書いてあるだろ。
他の本はしらん。
0015デフォルトの名無しさん
NGNGVBでChr(9)のようにAscii文字を指定するような関数って
Cにもありますか?
0016ぷろぐらまぁ
NGNG出力先によっても違うが、printfかsprintfかfprintfあたりを使うと良い。
ex) printf("%c", 65); /* ASCIIコードで65が出る */
0017デフォルトの名無しさん
NGNGchar ch = 9;
変数に直接アスキーコードを代入すればいい。
001815
NGNGありがとうございます。
できれば標準入出力ではなく、VBのように
const chr* Chr( int );
のような感じで関数として使いたいのです。
こういうのってやっぱ自分で作らないといけないんですかね。
001915
NGNG>○ const char*
ですね。
0020デフォルトの名無しさん
NGNGCでの文字列の取扱に関して理解してる? 文字と文字列は別だよ?
0021!=17
NGNG何がしたいのか分からん。
'\t'や'\x9'や'\011'の文字定数や(char)9も結局9だし、
それを文字として印字したいならprintf("%c", 9)やputchar(9)。
VBの頭でCを考えてないか?
0023デフォルトの名無しさん
NGNGというわけでむかし自作したんだけど
需要あるのかな?
0024デフォルトの名無しさん
NGNGPascalやVBで使われてるStringと互換性を持たせれば、あるいは。
ってかもうあるような気もするけど、知らない。
0025デフォルトの名無しさん
NGNGオラ、イラネ
0026デフォルトの名無しさん
NGNGハッシュだとある程度の数なら十分に動作するんだが・・・
数が大量になるとスピードがでない。
なんか良いロジックある?
それともここは
「printf」で数値を出力したい場合のフォーマットは何?って
レベルのことを聞くところかな?
0027デフォルトの名無しさん
NGNGハッシュってのがまさしくそれ。
たぶん実装がヘボいと思われ。
0028デフォルトの名無しさん
NGNG激しく同意。
>>26
>「printf」で数値を出力したい場合のフォーマットは何?って
>レベルのことを聞くところかな?
というのだったら、
>数が大量になるとスピードがでない。
などとあいまいなことを書かずに、
>逐次検索アルゴリズムでは,検索データが見つかるまでの条件判定文�@の
>実行回数は最小1回,最大[(3)]回である。検索データXの出現確率がS1〜Snの間で
>一様分布するとき,条件判定文�@の平均実行回数 はおよそ[(4)]回である。
>したがって,この検索アルゴリズムの計算量のオーダは[(5)]であるといえる。
> 一方,2分検索アルゴリズムでは,配列Sのデータは[(6)]必要があり,
>その計算量のオーダは[(7)]である。
ぐらいの考察をかましちゃってもいいんだよ。
みんな分かるから。
002926
NGNGあら、それを言われると辛い(^^;)
じゃ、高速なハッシュってどうやって組むの?
私のルーチン、いたって標準的な使い方だと思う。
100万のオーダなら平気だけど、2000万近くになると…
へぼいって言ってくれるくらいだから、さぞや素晴らしいロジックを
持ってるんだろうね。教えてください。
0030デフォルトの名無しさん
NGNG>じゃ、高速なハッシュってどうやって組むの?
だから、オーダーでものを言え。
どう低速なのか説明できないのか?
0031デフォルトの名無しさん
NGNGオープンアドレス法?
チェイン法?
(って話からするとチェインか?)
ハッシュテーブルのサイズは?
2000万近くあるなら BST のほうがいいかもよ。
もしくはチェインの下に BST を吊すとか。
003226
NGNG27へのレスを書いてる際には28のレスは無かったのよね。
別に変に煽ろうとかって意味じゃないから(^^;)
>>31
チェイン法使ってます(たぶん(^^;))
BSTって言葉の意味がわかりませんので解説してもらえませんか?
申し訳ないです。
ハッシュのサイズは現在色々試してるんですが、資源量との兼ね
合いもあるので、そんなに大きくは取れない状態です。今のとこ
ろ1万位かな?まだ妥協点を探している最中なんで(^^;)
0033デフォルトの名無しさん
NGNGBST はバイナリサーチツリー、2分探索木ってやつ。
ハッシュテーブルのサイズが1万ってことは
それにリスト垂らしてて 2000万 とかなら
一つのテーブルに 2000 もの長さのリストがあって
それを線形探索してるのか? 平均1000ぐらいの比較?
BST なら 2000万 の要素でも 24,5回の比較で探索できますよね。
チェインに1000個の要素の BST なら 10回ぐらい。
BST の実装法は探せばいっぱいでてくるはず。
003433
NGNG003526
NGNGありがと。確かに自分のコード、しょぼかったです。
0036デフォルトの名無しさん
NGNGデータの量じゃないぞ。
0037デフォルトの名無しさん
NGNGべつに、木をぶら下げなくても、
じどうでハッシュのサイズを拡張するようにすればいい。
Optimize・・・ とか言う本に詳細載ってたけど、
具体的な書籍名は忘れた
0038デフォルトの名無しさん
NGNGチェイン法において、リストの代わりに木を使うって話だよ。
ハッシュテーブルに全てを入れようとするのは大変なだけだと思う。
サイズ変えるコストも馬鹿にならないだろうし。
0039デフォルトの名無しさん
NGNG詳細は覚えてないんだけど、再ハッシュする必要がある要素は、
極わずかっていう手法だったはず。
0040デフォルトの名無しさん
NGNGchar name[][6]={"ノビタ","シズカ","スネオ"};
上と下の初期化の仕方って、どっちがいいの?
0041デフォルトの名無しさん
NGNG上と下ではまるで意味が違います。
0042デフォルトの名無しさん
NGNG良い悪いじゃなくて、処理内容が違うんで目的によります。
char *str = "abc";
char str[4] = "abc";
この違い分かってます?
004342
NGNG0044デフォルトの名無しさん
NGNGすみませんが詳しく教えてください。
0045デフォルトの名無しさん
NGNG自分で勉強しろよ。
0046デフォルトの名無しさん
NGNGこの程度は基本。2chで訊くようなものじゃない。
K&Rを死ぬほど読め。
0047デフォルトの名無しさん
NGNG最近このスレで流行ってる?
0048デフォルトの名無しさん
NGNGこのスレッドでは最近かもしれないが、世間ではここ十年以上は流行ってると思われ。
0049デフォルトの名無しさん
NGNG服部雄一:C言語とPADによる数値計算(培風館)
>本書ではポインタ変数を一切使わずにプログラムを記述する。
0050デフォルトの名無しさん
NGNGそれって、著者がポインタを理解してない上にサンプルがトンチキで有名な本では…
0052デフォルトの名無しさん
NGNGそうなの?…じゃあこれ
Numerical Recipies in C[日本語版](技術評論社)
0053デフォルトの名無しさん
NGNGそこから始めようよ。
0054デフォルトの名無しさん
NGNGアンサーブックで十分だろ。
0055デフォルトの名無しさん
NGNG初心者にはお勧めできない。
0056デフォルトの名無しさん
NGNGポインタで悩んでます。
普通の変数だったら
int a;
a = 10;
を一行で初期化を表現するには
int a = 10;
と書けばよいわけですよね?
ところがポインタだと、
int x = 10;
int *p = &s;
という具合に、右辺に書く内容が *p についてではなくて p になってしまうのですか?
メモリの中身(*p)でなくて、番地(p)を書くのですか?
もしそうだとしても、感覚的に理解できないのです。
005756
NGNGint *p = &x;
でした。スマソ。
0058デフォルトの名無しさん
NGNGint *p = &a; // *はポインタであることを示すだけ
int *p;
p = &a;
int b = *p; // *はポインタが指す内容
という違いがある。
変数宣言時の'*'とその他の場所の'*'は違うよ。
0059デフォルトの名無しさん
NGNG&もそうだね。
前者をなんと呼ぶのかは知らん。
0060デフォルトの名無しさん
NGNG何かを指すものがポインタだから、としか言いようがない。
006156
NGNG>変数宣言時の'*'とその他の場所の'*'は違うよ。
心の中でもやもやしてたものが晴れました。
ありがとうございます。
ポインタの宣言するときだけは
int* p=&a;
のイメージで捉えたらいいのですね?
0062デフォルトの名無しさん
NGNG人生通算で何回負けたかワカラン
0063デフォルトの名無しさん
NGNGそんなことを56は言ってんじゃないと思うが。
つーか、あんた何で56の言いたいことがわかるのさ!
0064デフォルトの名無しさん
NGNG>int* p=&a;
>のイメージで捉えたらいいのですね?
イメージとしてはそうかもね。C++ではそういう風に書くのが推奨されてるし。
でも、
int *p, *q;
と書くつもりで、
int* p, q;
ってイメージして
int *p, q;
ってやっちゃ駄目よ。
0066デフォルトの名無しさん
NGNGそれをVCでコンパイルならできるのですが、実行すると
runtime error R6002
- floating point not loaded
というメッセージがでてエラーになります。
このメッセージの意味は何なんでしょうか?
0067ビル・ジョブス
NGNG宣言時はポインタ修飾詞。
>>56
intは整数を入れる変数だよね。
で、ポインタはアドレスを入れる変数だよ。
(もう分かってる?)
0068ビル・ジョブス
NGNGDOS窓だね。
浮動小数点演算がソフトウェアエミュレーションになってる?
VCの設定は確認済み?
006966
NGNGはい、DOS窓です。
浮動小数点を使っているのは一箇所だけ実行時間を計っているところだけ
なんですが、printfで表示するときに直接計算せず、いったんdouble型の
変数に代入してから実行するといけました。
そのソフトウェアエミュレーションというのを設定するというのは
どこをいじればいいんでしょう?ヘルプで「ソフトウェアエミュレーション」
といれても、でてこなかったので...。
0070デフォルトの名無しさん
NGNGixとiyの関係を教えて下さい。
0071デフォルトの名無しさん
NGNG単に少数点表示がメンドクサって事だけでしょ?
c=a/b
((a-c*b)*100)/b
0072デフォルトの名無しさん
NGNGprintfで事情があって改行しなかったら出力されなかったので、flushしたい。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG#include <stdlib.h>
div_t d = div(a, b);
printf("%3d.%.2%%\n", d.quot, d.rem);
0075デフォルトの名無しさん
NGNG007674
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGバッファを書き出す、と言われてもピンと来ない……。
0079デフォルトの名無しさん
NGNGboido meinn (zoido)
{
innto a,b,c
huro-to x,y
purinntoehu("itteyosi")
あぎゃあああああああああああ
}
008080
NGNG0081デフォルトの名無しさん
NGNG川の流れのようなもの
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGOSによってはAPIを呼び出せば非同期型スレッドは簡単
SETJMP LONGJMPで 同期型のスレッドは作れる
もちろんアセンブラでスタック切替をしても同じ。
0084デフォルトの名無しさん
NGNGあいうえお<A>かきく<B>けこ→あいうえお@かきく\けこ
のようにある記号で挟まれた文字列をその内容によって
変換するようなプログラムってどう書けばいいでしょうか?
0085デフォルトの名無しさん
NGNG???
いまカッコ内かどうかのフラグを持たせて、
フラグがたってる間だけ変換処理を実行する。
じゃ、ないの?
0086デフォルトの名無しさん
NGNGpthreadライブラリを探せ
0087デフォルトの名無しさん
NGNGそれって正規表現使うのがいいんじゃない?
Cに正規表現ライブラリってあるかなぁ?
008856
NGNGみなさんレスありがとうございました。
しかし一度は納得したものの、再び分からなくなってしまいました。
というのも、
void main(void)
{
char* p="A";
printf ("%d\n",*p);
}
を実行したら、65 が表示されたからです。
『あれ? この場合は65番地の中に入ってるデータが表示されるんじゃなかったのか!?』
とパニックになってます。
どなたかお助けを!!
0089デフォルトの名無しさん
NGNGp と *p は全然別のもの。
ちなみに 'A' == 65 である。
void main(void) {
char *p;
p=65;
printf ("%d\n",*p);
}
とするか
void main(void) {
char *p = 65;
printf ("%d\n",*p);
}
とすればお望みの動作になる。
0090デフォルトの名無しさん
NGNG文字列を " " で囲むと,それは文字列へのポインタになります
しかも文字列の末尾にはちゃんと nil 文字('\0')が付加されます
p にはその文字列へのポインタが代入されます
*p を参照すれば,そこにはポインタに指し示された部分にあるデータを得ることができます
つまり p にはよく分かんないアドレスが,*p には 'A' が入ってるってこと
65 番地のデータを表示させたいならば
char* p = 'A';
もしくは
char* p = 65;
# きっと正確な説明じゃないと思うけど,こんな理解でも大丈夫なはずです
0091デフォルトの名無しさん
NGNGC言語の文字列はバイト列をそのまま扱うような形になります
他の言語で文字型、文字列と順序型が明確に区別されていたのに馴れていると
訳が判らなくなると思います。
*p は いつでも (int)ord(*p) という変換がされているとでも考えて下さい
009256
NGNG>文字列を " " で囲むと,それは文字列へのポインタになります
そ、そうだったんですか・・・・(納得)
'A'はどういう意味になるのですか?
>>91
すみません、僕の頭ではちょっと難しくて・・・・(^^;)
C以外さわったことないんで。。
0093デフォルトの名無しさん
NGNGchar型という8ビットの"整数"です。
char型はASCIIひと文字分の文字コードを扱うのに使ったりします。
C言語の文字列はchar型の単なる配列です。
0094デフォルトの名無しさん
NGNGどうすればいいかな?
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGint8_t, int16_t, int32_t を使えと言われたんですが、
char, short, long では何かまずいんでしょうか?
教えてください。
0097デフォルトの名無しさん
NGNGなにもまずくないけど?
0098デフォルトの名無しさん
NGNG目的も書かずに、「char, short, longは使うな、
int8_t, int16_t, int32_t を使え」っていうのでは何とも言えない。
「何のために」っていうのがまずあるはず。
教えて下さいの前に、質問の仕方を改めること。
場合によっては、Cは使うな、Perlの方がずっとその目的には向いてる、
ということもある。
0099デフォルトの名無しさん
NGNGC++やDelphiだと文字コードを意識しなくていいって?
Delはプラットホームが限られるからってことか?
0100デフォルトの名無しさん
NGNGネットでいろいろ検索しましたが、うまく行きません。
知っておられたら、教えてください。
環境:MS-DOS/V 6.2
コンパイラ:VC++ 1.51 (MS-C 8.03)
で行っています。
よろしくお願いします。
0101デフォルトの名無しさん
NGNGテスト中のソースは以下の通りです。
struct SREGS sregs;
union REGS inregs, outregs;
long timl;
short tims;
interrupt timint(void)
{
_disable();
timl++;
tims++;
printf(" %04x\n",tims);
_enable();
int86x(0x1c, &inregs, &outregs, &sregs);
}
void timer_set()
{
void far *ptr;
ptr = timint;
inregs.h.ah = 0x02;
inregs.x.cx = 1; // 1で10[ms]
inregs.x.bx = FP_OFF(ptr);
sregs.es = FP_SEG(ptr);
int86x(0x1c, &inregs, &outregs, &sregs);
}
void main(void)
{
// void interrupt (*vect)();
timl = 0l;
tims = 0;
// vect = _dos_getvect(7);
timer_set();
while(1){
printf("xxx=%04x,yyy=%08ld\n",tims,timl) ;
}
// _dos_setvect(7, vect);
}
tims、timl 共に0のままです。
0102100
NGNGstruct SREGS sregs;
union REGS inregs, outregs;
long timl;
short tims;
interrupt timint(void)
{
_disable();
timl++;
tims++;
// 見やすいようにずらしてます。
printf(" zzz=%04x\n",tims);
_enable();
int86x(0x1c, &inregs, &outregs, &sregs);
}
void timer_set()
{
void far *ptr;
ptr = timint;
inregs.h.ah = 0x02;
inregs.x.cx = 1; // 1で10[ms]
inregs.x.bx = FP_OFF(ptr);
sregs.es = FP_SEG(ptr);
int86x(0x1c, &inregs, &outregs, &sregs);
}
void main(void)
{
//void interrupt (*vect)();
timl = 0l;
tims = 0;
// vect = _dos_getvect(7);
timer_set();
while(1){
printf("xxx=%04x,yyy=%08ld\n",tims,timl) ;
}
// _dos_setvect(7, vect);
}
0103デフォルトの名無しさん
NGNG0104100
NGNGvolatile short tims;
long volatile timl;
short volatile tims;
共に駄目でした。
long far timl;
short far tims;
も駄目でした。
0105100
NGNGメインルーチン側の printf をコメントすると、動かなくなります。
(Ctrl+Alt+del でリセットされるので、永久ループになってるだけですが。)
0106103
NGNGgoogleでちょっと検索してみたら、>>100が参考にしたと思わしきソースを
見付けたんだけど、「PC-9801用」って書いてあるよ?
>>100がMS-DOS/VだということはPC互換機だと思うんだけど、そもそも
この方法でタイマー割り込みが使えるのはPC98onlyだったりしない?
あと、割り込みハンドラ(timint)内でprintf()ってのは大抵の場合
ヤバイと思う。
0107100
NGNG割り込みベクタやアドレスが一緒なので、これでやってます。
> あと、割り込みハンドラ(timint)内でprintf()ってのは大抵の場合
> ヤバイと思う。
削除します。
0108デフォルトの名無しさん
NGNG割り込み周期の変更は知らん。
0109100
NGNG0x1cに、timer_set() で timint() を割り当ててると思ってました。
timer_set() をやめて、_dos_setvect() で 0x08 に timint() を
割り当てると、『1回だけ』動きました。
(数値が1で止まって、カウントアップしませんが。)
まだ問題はありますが、0x08 で テストを続けたいと思います。
どうもありがとうございます・
引き続き、情報を募集しますので、何か知ってたら教えてください。
0110103
NGNGしまうと、DOS自身の割り込みハンドラが呼ばれなくなってまずいような
気がする。
setvectする前にgetvectで古いベクタを保存しておいて、timintの中で
カウントアップの処理をした後で、書き換える前のベクタへジャンプする
必要があるんじゃないかな?
0111デフォルトの名無しさん
NGNGなに言ってんだか。
0112100
NGNGご忠告ありがとうございます。
今は、テスト中なので、リセット覚悟でやってますが、
最終的にはきっちりしようと思ってます。
0x08でやると、凍ってしまいます。
何か設定があるのでしょうか?
誰か知りませんか?
0x1cでやると、カウントアップは出来ました。
ただ、周期が約55msに固定で、必要な10ms間隔にならない為、
使えない事が判明しました。
0114100
NGNGもしや最初にスレを立てた伝説の?(@_@)
> CLIしてるなら、きっと中の処理が遅くて再入してるよ
CLIとかNMIとか、よくわからないんですが
メインループの printf の画面表示が止まらないので、
再割り込みはしてない気がします。
ちなみに0x1cでやると、Ctrl+Cで中断できるんですが
0x08でやると、Ctrl+Cで中断出来ません。
0115デフォルトの名無しさん
NGNG_enable()で割り込みを許可していると思われ。
CLI、STIは割り込みを禁止したり許可したりするアセンブラ命令
割り込み内部(timint)はカウントと
旧ベクタへ飛ばすのみにしておく。
タイマ周期の変更はポート叩く方法しか知らん
しかもアセンブラ。
011656
NGNGそれは分かってますよ。
"a"と'a'の違いがわからないのです。
0117デフォルトの名無しさん
NGNG"a"はポインタ。
0118デフォルトの名無しさん
NGNGもう,これは慣れるしかないと思います・・
とりあえず次のコードを実行してみれば,なんとなく感覚がつかめませんか?
#include <stdio.h>
void main(){
char* a1 = "A";
char* a2 = "A";
char* b1 = (char*)'A';
char* b2 = (char*)'A';
printf("a1=%d,a2=%d,b1=%d,b2=%d", a1,a2,b1,b2 );
}
char* b1 = 'A';
ではなく
char* b1 = (char*)'A';
とキャストしているのは,'A' が const char 型であって
const char * 型ではないからです
0119デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG"a" == 'a','\0'
というように文字と文字列は違う。
char a='a';
char b="a"; //エラー。文字列は char に収まりきれない。
char *c = "a"; //"a"という文字列のアドレスを入れているのでOK。
char d[2]="a"; //上記に示したとおり、char2個分だから収まる。
c はポインタ。変数や配列のアドレスを c という名前で管理する。
d は配列。変数の連なりに d という名前を付けている。
その領域を"a"で初期化している。
"a"は変数名のない配列。
しかもプログラムのどこにあるのやら人間には判別つかない。
それではプログラマが利用できないので
名前をつけて"a"のある場所を知る必要がある。
その方法が char *c = "a";
printf("a")では"a"という文字列を表示したいだけで、
"a"のある場所を人間が知る必要ないから
そのままPCにおまかせしている。
0122デフォルトの名無しさん
NGNG微妙に痛いんですが。。。
012356
NGNGおお!
なんと解りやすい解説!!
ありがとうございまいた <(_ _)>
0124デフォルトの名無しさん
NGNG文字定数は C 言語では int で C++では charになります
0125デフォルトの名無しさん
NGNG同意。この説明で分かった気になってしまうと後がこわいかも。
012656
NGNG0127デフォルトの名無しさん
NGNGchar *c = "a"; の"a"と
char d[2] = "a"; の"a"は意味が違ってる。
char d[2] = "a"; は、単に char d[2] = { 'a', '\0' }; の省略形。
char *c = "a"; の"a"は変数名のない配列…というのは、当たらずとも
遠からずというか、やっぱり文字列定数は文字列定数としか言いようが
ないような。ただの配列だと思い込んでると思わぬ所でハマる。
上記の後で、
d[0] = 'b'; はOKだけど
c[0] = 'b'; ってやるのは規格上NG(実際は動いたりするのでたちが悪い)
更に、
char *e = "a"; とやった場合、c == e である場合も c != e である場合もある
(規格上はどちらも間違いではない)
0128121
NGNGありがとう。
教えるのは難しいなり。
012956
NGNG>char *c = "a"; の"a"は変数名のない配列…というのは、当たらずとも
>遠からずというか、やっぱり文字列定数は文字列定数としか言いようが
>ないような。ただの配列だと思い込んでると思わぬ所でハマる。
思わぬ所ってどこっすか?
013056
NGNG>(規格上はどちらも間違いではない)
これは感覚的に理解できます。
0131デフォルトの名無しさん
NGNGいまのとこ画像は本腰でないのでこうしているんだけど、
警告される。bfTypeがchar[2]か[3]かわかんないので、
"BM\0"とやる気にもならないし、メンバの場合の[]の
使い方もわかんない。
bMfh.bfType[0]='B'bMfh.bfType[1]='M'で
いいのかな、(\0はどうすんのかな)それとも、bMfh.(&bfType[0])
とかやっちゃうの?それとも(bMfh).bfTypeとか?
もーわかんない。
0132デフォルトの名無しさん
NGNG・・・と、最初は思ってればいいよん。
bMfh.bfType[0] = 'B';
strncpy(bMfh.bfType, "BM", 2);
>bfTypeがchar[2]か[3]かわかんないので、
これは問題あると思うが。
0133127
NGNGうーん、>>127の後半に書いた通りなんだけど、
書き換えができないというのは分かりやすいからいいよね?
後は、「同じ文字列」のとらえ方によって結果が違ってくるってこと。
char *a = "abc";
char *b = a;
この場合、aとbの文字列の内容は同じだし実体も同じ。
if (strcmp(a, b) == 0) { ... } も
if (a == b) { ... } も成り立つわけ。で、
char a[] = "abc";
char b[] = "abc";
これは、aとbの文字列の内容は同じ、だけど実体は別。
if (strcmp(a, b) == 0) { ... } は成立、
if (a == b) { ... } は不成立。だけど、
char *a = "abc";
char *b = "abc";
これは? 文字列の内容はもちろん同じ。
if (strcmp(a, b) == 0) { ... } は成立。でも、
if (a == b) { ... } は?
どちらになるかは不定なので、どちらかを期待してプログラミングしちゃいけない。
こんな感じで、文字列の場合、
・見かけが同じ
・実体が同じ
の二つの「同じ」があって、なおかつ文字列定数の場合は後者の「同じ」が
定義されない場合があるので、自分が期待している「同じ」が何なのかをちゃんと
考えてプログラミングしないとハマるわけ。
てな説明で分かってもらえますか?
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNGtypedef struct tagBITMAPFILEHEADER { // bmfh
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
これか? MSDNで見つかるだろ。
0136デフォルトの名無しさん
NGNGそだね
0137ビル・ジョブス
NGNGじゃー"a"はどこにあるのかな?「記憶クラス」って知ってるか?
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGちゃんと動いてるんだけど、考えると
strcpy(bMfh....,"BM")←つまり&がない。
でも正解なのが不思議だ・・・
0140ビル・ジョブス
NGNG文字列はアドレスだから、違和感無いよ・・・
0141デフォルトの名無しさん
NGNGbf.bfType = MAKEWORD('B','M');
stBmpFileHeader.bfType = 0x4d42
bmHead.bfType = ('B' | ((WORD)'M' < < 8))
memcpy(&fh.bfType,"BM",2);
bmFileHead.bfType = 19778;
BmpFileHeader.bfType = 'MB'
char bfType[2];
0142132
NGNGげげ。135を見るとbfTypeつーのは
char bfType[2]でもchar bfType[3]でもなくてWORD bfTypeじゃんよ。
早く言ってくれよオイ。聞いてないよ−。
それじゃ strcpy(bMfh.bfType, "BM") は間違い。"&"付きが正解。
0143ビル・ジョブス
NGNG"&"付きでも基本的に間違い!NULLがセットされるでしょ。
しかーし、今回はアライメント合わせされてるので動作するな。
しかし、いかん、おれには書けない・・・。
0144100
NGNG>CLI、STIは割り込みを禁止したり許可したりするアセンブラ命令
アセンブラの割り込み許可/禁止って、EI/DIだと思ってました。
NECだけ?
>タイマ周期の変更はポート叩く方法しか知らん
>しかもアセンブラ。
よろしければ、ポートだけでも教えてもらえませんか?
アセンブラも多少ならわかりますので、見せて頂けたら幸いです。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGbf.bfType = MAKEWORD('M', 'B');
0147デフォルトの名無しさん
NGNGかなり昔のを発掘してきた。
ttp://gooside.com/himitsu/timer.zip
DLしたら教えてくれ。即削除する。
0148どしろ〜とちゃん
NGNG「構造体を直接引数で渡すな!ポインタで渡せや!」
って、結構プログラムやってるツレから言われたんですけど、
さっぱり意味がわかりません。
なんで直接渡しちゃだめなん?
0149デフォルトの名無しさん
NGNG0150デフォルト名無しさん
NGNGなんでっすか?
0151デフォルトの名無しさん
NGNGその簡単な例を挙げてくれ
0152デフォルトの名無しさん
NGNGhttp://mentai.2ch.net/test/read.cgi/prog/1002039334/
015356
NGNG知ってますけど、"a"はどこにあるのかは分かりません。
0155
NGNGまあそのツレもあえて「構造体を」って言ってるところがまだ青い。
0156どしろ〜とちゃん
NGNG結局、場合にもよるが、基本的にメモリにバカバカコピーすんのは
タコでそ?・・・ってことで、おけ〜ですか?
しかし・・・>155サンの
>まあそのツレもあえて「構造体を」って言ってるところがまだ青い。
が、わかんないっす〜。なんで?
0157デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNGvirtual foo(const char *name);
virtual foo(const unsigned int num);
}
class B:public A{
foo(const char *name);
foo(const unsigned int num);
}
class C:public B{
foo(const char *name);
foo(const unsigned int num);
}
と書くと、class Cでのオーバーロードが解決できないと言われてしまいます。
もしかして根本的に勘違いしてるのでしょうか?
0161デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG例外中立をぶちこわしたいとき
0164デフォルトの名無しさん
NGNG構造体を実体渡しすると全部をスタックにつむから、ポインタ渡し
と比較して余計にスタックを消費する.
昔の人はメモリは貴重な資源だったので、実体渡しは裂けていた.
あと、ループ中に [] を使用して構造体を参照しているところは
ポインタを取得するとアドレス計算か減って早くなった.
ex)
for (i = 0; i < 100; i++) {
a[i].hohoe01 = 100;
a[i].hohoe02 = 200;
.
.
}
を
for (i = 0; i < 100; i++) {
pa = &a[i];
a->hohoe01 = 100;
a->hohoe02 = 200;
.
.
}
といった理由で、漏れは必ずポインタ渡しを使用しており、その
習慣は今でも引き継がれている.
ただ、自分の使用している コンパイラでアセンブラソースを
出力するようにして、なにが最適化確認するのが吉.
へたなことして自己満足していると最適化処理の足をひっぱるだけに
なっていることがある.
0165デフォルトの名無しさん
NGNG実測で十分。
0167デフォルトの名無しさん
NGNG処理系は?
むしろクラス定義の後にセミコロンがないとか戻り値が宣言されてないとかで
文句いわれそうな気が。
0169デフォルトの名無しさん
NGNGうーむ、ネタでしょうか.詳細キボンヌ
0170デフォルトの名無しさん
NGNG下のプログラムが動きません。
表示されるのは0.000000になってしまいます。
#include<stdio.h>
void main(void)
{
double data;
FILE *fp;
fp = fopen("data.txt","r");
fscanf(fp,"%f",&data);
printf("%f",data);
fclose(fp);
}
0171デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG%lf にしてみて。
%f は float に反応するけど double には無反応みたい。
0174デフォルトの名無しさん
NGNGとりあえず、これならコンパイルできるぞ。
class A
{
virtual void foo(const char *name);
virtual void foo(const unsigned int num);
};
class B : public A
{
void foo(const char *name);
void foo(const unsigned int num);
};
class C : public B
{
void foo(const char *name);
void foo(const unsigned int num);
};
あと、C++こっちでやって
http://piza2.2ch.net/test/read.cgi/tech/1003832761/
0175デフォルトの名無しさん
NGNGおそらく、fooに戻り値が無いから、
コンストラクタと解釈されておかしくなってると思われ。
0176デフォルトの名無しさん
NGNGその場合、グローバルでとってあるか、動的に確保した領域使うと思う.
前者ならプロセスの寿命で、後者ならポインタで管理になるよね.
0177デフォルトの名無しさん
NGNGありがとうございました。
うまく動きました。
017856
NGNGわかりやすい解説ありがとうございました!
今>>133のレスに気付きました、遅くなって失礼しました。
了解です、理解しました♪
これで僕の>>56の疑問はかなり霧が晴れました。
レスくれたみなさん、ありがとうございました!!
0179デフォルトの名無しさん
NGNG#if 1 == 2
#error 1 == 2 <- ここはエラーにならない
#endif
#if a == b
#error a == b <- ここでエラー
#endif
何でこれエラーになるの?
0180デフォルトの名無しさん
NGNGファイルの操作を行う中でファイルの先頭行と最終行を削除すると
いう機能を盛り込みたいのです。
fopenを追加モードで開いてポインタを先頭に持ってけばいいかなと
簡単に考えていたんですが、思ったようにうまくいきません。
先頭行、最終行ともに文字列があります。
どなたかよろしくお願いします。
0182デフォルトの名無しさん
NGNG定数じゃないぞ。enum を #define で書き直せ
0183デフォルトの名無しさん
NGNG追加モードって、"a"の事?
これだと追加だけで、既存の部分の変更って、出来ないんじゃなかったかな。
多分、この場合は"r+"あたりじゃないかな?
ただし、ファイルがある事が前提。
テストしてないんで、違ってたらスマソ。
0184デフォルトの名無しさん
NGNG"a"でも変更できるよ。単にfopen()後のファイルポインタがファイル末尾に
なってるだけなので、fseek()してから書き込めばいい。
でも>>180の答えとしては、>>181が一番いいと思う。
0185デフォルトの名無しさん
NGNGenumはプリプロセッサでは見えない。
#ifの式の中の名前はすべてマクロと見なされて、
未定義のものは0として扱われる。
0186180
NGNGありがとうございます。2行目から書きこんで最終行を書きこまないで
ファイルクローズってことですよね?
またなにか分からないことがあったらよろしくお願いします。
0187デフォルトの名無しさん
NGNGサンプルor解説はないでしょうか?
0189デフォルトの名無しさん
NGNG"a"でオープンして書き込みしたら、どこにシークしても元々あったデータは上書きできないよ。
そんないい加減なコードどっかで試したの?
0190デフォルトの名無しさん
NGNGarchie fetchmail
0192180
NGNG書きこめないのでおかしいなって思ってたんですよ(w
0193デフォルトの名無しさん
NGNGNULLポインタ? それってなによ。
sizeof 'a'が4になった。なんで1じゃないの。
const char * const p = "hoge"; どうなるってのさ。
なんでprintfの%fはdoubleでscanfの%fはfloatなのよ?
%cもちがうよ。なんで。
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG俺に聞けって、結局本買えってことですか。
それにしても、聞いたことない本ですな。こんなの勧める
奴ってたいていヘタレってのが相場なんじゃない。
0197デフォルトの名無しさん
NGNG> 俺に聞けって、結局本買えってことですか。
程度による。さすがに「日本語が読み書きできます」とか「バイトの意味がわかっている」のは
前提でしょ。
一応、引っかかりそうなところだけ補足しておくが。
> sizeof 'a'が4
C 言語だと文字リテラルは char 型ではなく int 型です。そういうものだと思ってください。
> なんでprintfの%fはdoubleでscanfの%fはfloatなのよ?
これは引数の格上げ規則のせい。「格上げ」で検索してみましょう。
0198ぷーち
NGNG0199デフォルトの名無しさん
NGNG環境依存のライブラリならフリー商用いろいろある。
などという質問をしてくる奴にはVBかHSPお奨めします。
君にはC言語ですら100年早いよ。>>193
0201ぷーち
NGNGレスどうもです。
0202ジーコ
NGNGどうしたらいいんでしょうか。
0203デフォルトの名無しさん
NGNGtime_t
0204デフォルトの名無しさん
NGNG0205急ぎMAN
NGNG教えてください
0206デフォルトの名無しさん
NGNGstrcmp(s," ")
0207急ぎMAN
NGNGサンクス
助かりましたm(..)m
0208デフォルトの名無しさん
NGNGだったらなんでwchar_t型とかL'a'とかあるんですか?
byteを知らなければCで組むの100年早いですか?
ごたくはいいんでばっちり説明してくださいよ。
できるなら。
0209デフォルトの名無しさん
NGNGこれ以上こいつに教えないでください。
わざとあおって、答えを引き出そうとする手です。
0210デフォルトの名無しさん
NGNG少なくとも君には何も聞かないよ。ま、答えれられるとも
思えないけど。
0211デフォルトの名無しさん
NGNGcharはintに収まるがwchar_tはその限りでない。
0212sage
NGNG昔々、C言語に wchar_t や L'a' がまだ存在してなかった時代。
そのころ 'a' が int だったので、
過去との互換性のために今でも 'a' が int なのです。
byte はデータ量を表す単位のひとつで、一般的に8個の bit から成ります。
0213208
NGNGついでに212に追伸。
そのころなぜ 'a' が int だったか。
それは 'a' と書くのと、単に 97 と書くのが等価だったからかな。
0215デフォルトの名無しさん
NGNGそのころそうだったので、過去との互換性のために今でも 'a' が int なのです。と書きましたが?
0216デフォルトの名無しさん
NGNGint i = '\xff'; これが-1なのさ。charなら
別におかしくないけど。
0217これってC言語ですか???
NGNG<DIV ID="toolbar1" STYLE="visibility: show">
<SCRIPT LANGUAGE="JavaScript">
function openWin(URL) {
var anonWindow=window.open(URL,"Subscribe_for_Services","height=320,resizable=no,toolbar=no,width=320");
anonWindow.focus();
}
k=0;
function statusnote() {
msgs=new Array("ANONYMIZER Restricted Free Trial: Page Privacy Protected","Upgrade NOW!!");
c=msgs[k];
window.defaultStatus=c;
k++;
if(k==msgs.length)
k=0;
window.setTimeout('statusnote()', 1000);
}
window.setTimeout('statusnote()',10);
0218デフォルトの名無しさん
NGNGこれはにわかには信じがたいけど。
>byte はデータ量を表す単位のひとつで、一般的に8個の bit から成ります。
それは一つの例であって、byteの定義とはちがうよね。
0219デフォルトの名無しさん
NGNG信じるかどうかまで面倒みきれねえよ。
規格上、「charはintを内包する」とは決められているが、wchar_tとintに関して
直接の関係は定義されてないってだけの話だ。
0220デフォルトの名無しさん
NGNGC言語です。勉強すれば読めると思うので本でも買って頑張ってください。
0221デフォルトの名無しさん
NGNGLANGUAGE="JavaScript"
0222デフォルトの名無しさん
NGNG内包の意味がよくわかんない。
intはcharを内包する、なら分るんだけど。
0223デフォルトの名無しさん
NGNG>規格上、「charはintを内包する」とは決められている
俺にはchar=1byteってのとshort int <= int <= long intって
ことしか決まってないように思えるが。
本当に規格できまってるなら100%信じるよ。
0224デフォルトの名無しさん
NGNGくだらねぇ、ホント、くだらねぇ。
そこまで読めるなら 2.3定数 も読めよ。
> 数値演算では、文字定数は他の任意の整数と同様に扱ってよい。
intかどうかは処理系依存って言うことだろ。
0225デフォルトの名無しさん
NGNGたぶん '\xff' は -1 と等価なんでわ?っでもこの辺の事情は詳しく知りません。いま手元に詳しい資料ないし。
>>218
>それは一つの例であって、byteの定義とはちがうよね。
「byte はデータ量を表す単位のひとつ」
ここまでが定義として主張したいことで、
「一般的に8個の bit から成ります」
これはおっしゃる通り「一般的」な「一つの例」です。
0226デフォルトの名無しさん
NGNG|> 数値演算では、文字定数は他の任意の整数と同様に扱ってよい。
|intかどうかは処理系依存って言うことだろ。
それは根本的に間違ってるんじゃない。たんに
int c = i - '0'
みたいなコードが書けるってことを言ってるだけだと思うよ。
>「byte はデータ量を表す単位のひとつ」
それはそうなんだけどさ。もっと厳密に定義できてもいいん
じゃない。
0227デフォルトの名無しさん
NGNGそうなのか?
文字リテラルがint型である、という記述は一切見当たらなかったが。
0228デフォルトの名無しさん
NGNGThe smallest addressable unit of digital storage larger than a bit and smaller than a word. A byte now consists of eight bits.
0229デフォルトの名無しさん
NGNG「JIS X 3010 6.1.3.4 文字定数、意味規則」
に書いてあるらしい。
0230デフォルトの名無しさん
NGNGこれいいですね。でも「アドレス可能な最小単位」って
定義だけじゃなぜだめなんだろう。
0231デフォルトの名無しさん
NGNGLSI C-86 Ver 3.30c 試食版 を使ってるんですが
その後、パソコンの動作が異常に遅くなるんですが、
何故ですか?再起動以外に直す方法はないでしょうか?
0232デフォルトの名無しさん
NGNGEBCDIKとパックが混合になっているデータをそれぞれに分けたい
のですが全然うまくいかずに困っています。
良い方法がありましたらどうかアドバイスお願いします。
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG教えてください。
0235デフォルトの名無しさん
NGNG構文木になっているのなら、
木を深さ優先で再帰的にたどって、
再帰から帰り際にノードのラベルを出力すれば良い。
構文解析と同時にやるなら、スタックと演算子の優先度
を使って演算子順位文法で解析するのが楽。
例えば、
*、/: 優先度 20
+、−: 優先度 10
とする。
スタックに優先度0の特別な印を積む。
while (入力が尽きるまで)
字句tを読み込む。
if (tが定数、変数なら)
そのまま出力。
else
while (スタックのトップの字句の優先度がt以上)
スタックから字句をpopして出力。
tをスタックに積む。
スタックが空になるまでpopして出力。
例:3 + 5 * 2 + 4
3 5 2 * + 4 +
カッコや単項演算子の処理は自分で考えれ。
0236235
NGNGスタックに優先度0の特別な印を積む。
while (入力が尽きるまで)
字句tを読み込む。
if (tが定数、変数なら)
そのまま出力。
else
while (スタックのトップの字句の優先度がt以上)
スタックから字句をpopして出力。
tをスタックに積む。
スタックが空になるまでpopして出力。
0237デフォルトの名無しさん
NGNG私も試食版を使っているが、なんともないぞ。
(OSはWindows98)
あなたのパソ自体に問題があると思われ。
0238デフォルトの名無しさん
NGNGtypedef文なのですが、Myfuncは
「char型と構造体statとint型を引数にとり、int型を返す関数へのポインタ」
でよろしいのでしょうか?
0239デフォルトの名無しさん
NGNGなら、まあ、そういうことだ。
0240デフォルトの名無しさん
NGNG関数ポインタなら
typedef int (*Myfunc)(const char *, const struct stat *, int);
ですね。
(*) なしだと、ポインタではなくて関数そのものの型を定義することになる。たとえば
extern int foo(const char *, const struct stat *, int);
extern int bar(const char *, const struct stat *, int);
と書く代わりに
typedef int Myfunc(const char *, const struct stat *, int);
extern Myfunc foo, bar;
と書けるワケ。
0241名無し~3.EXE
NGNG> 俺にはchar=1byteってのとshort int <= int <= long intって
> ことしか決まってないように思えるが。
sizeof(char) == 1
sizeof(short int) >= 1
なら
sizeof(int) >= 1
も成り立つ。
なので符号さえ一致していれば、intにcharは収まる。
残念ながら、charに符号があるかどうかは処理系依存なので
sizeof(char) == sizeof(int)な環境で、charが符号無しなら
intはcharの範囲を表現できない。
0242デフォルトの名無しさん
NGNG>sizeof(short int) >= 1
>なので符号さえ一致していれば、intにcharは収まる。
この例だと、それは正しい。
ただし、charとshortの関連についてはどこにも触れられてないはず。
char == 1byte
short >= 16bit
1byte == ローカルな文字セット内に1文字を保持しうる、とある。
1byte == 8bitとはどこにも触れられていない
0243デフォルトの名無しさん
NGNG8ビットの場合は 1単位で 256値(2 の 8乗)の情報を扱える.
・"多くの場合" というのは, 正確には 1バイト = 8ビットとは決まってい
ないためである. 7ビットでもバイトであるし, 汎用機の中には 9ビット
長をバイトとして扱うものがある. また Unicode 文字セットのような 16
ビット固定長のものでは, 1単位 16ビットを 1バイトと呼ぶことがある.
・厳密に 8ビット単位を重視する場合には, "オクテット" という単位を用
いる.
ちなみに4ビットはニブルと言うよ。
0244デフォルトの名無しさん
NGNG>ただし、charとshortの関連についてはどこにも触れられてないはず。
新ANSI C言語辞典という本には、
char≦short≦int と書いてあるよ。
(この本が間違ってるのかな?)
0245デフォルトの名無しさん
NGNGその本おかしいんじゃない?
char = 文字型
short/int/long = 整数型
関連があるほうがおかしいんだが
0246デフォルトの名無しさん
NGNGcharは整数型だよ‥‥
(規格書6.2.5)
There are five standard signed integer types,
designated as signed char, short int, int, long int, and
long long int.
...
For each of the signed integer types, there is a
corresponding (but different) unsigned integer type
(designated with the keyword unsigned) that uses the same
amount of storage (including sign information) and has the
same alignment requirements.
0247デフォルトの名無しさん
NGNGC言語だと char も整数型ですがな。
0248デフォルトの名無しさん
NGNGってなに?
0249デフォルトの名無しさん
NGNGCのcharは整数型。
(こんな基本的なコトを説明させんなよ)
0250デフォルトの名無しさん
NGNG1バイトの整数=char
0251デフォルトの名無しさん
NGNGつっこまれすぎ(藁
0252デフォルトの名無しさん
NGNG教えたばかりだ。
世の中、あんなもんでも仕事は出来てたらしい。
0253デフォルトの名無しさん
NGNG意外と人がいたんだな。
0254デフォルトの名無しさん
NGNG大文字小文字を区別しない strcmp。ANSI C 標準には入ってないけど FreeBSD の libc あたりには
入ってた気がする。
0255デフォルトの名無しさん
NGNGありがとう。
知らなかったよ。
0256デフォルトの名無しさん
NGNGその1バイトの定義が処理系によって異なるの。
intもそうだろう?
0257デフォルトの名無しさん
NGNGなにが言いたいの?
Cだと、cahrは1バイトって定義されてんだけど?
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGひょっとして256=245?
バイトの定義はあるよ。
addressable unit of data storage large enough to hold any
member of the basic character set of the execution
environment
ビット数は決まってないけどね。
0261デフォルトの名無しさん
NGNG>その1バイトの定義が処理系によって異なるの。
intはそうだけど、charは違うだろ
0262デフォルトの名無しさん
NGNGsizeof はどの処理系でも同じだけど、
CHAR_BITは、決まってないね。
0263デフォルトの名無しさん
NGNGで表す最小単位がcharでないのかい?
実際アスキーはアルファベットまで7bitだし。
ただCPUのデータは2のn剰単位で扱うので8bit=1BYTEになると。
0264デフォルトの名無しさん
NGNG*BSD の libc は、微妙に便利な文字列操作関数がそろってる。
snprintf(), asprintf() (これはGNU 由来だったかも), strlcpy() などなど。暇があったら、いちど
ttp://www.tac.eu.org/cgi-bin/man-cgi このあたりを読んでみると面白いかと(もちろん、PC 一
台用意して NetBSD インストールしても良いけど)。
0265デフォルトの名無しさん
NGNG実物は見たこと無いけど、1バイトが7ビットや9ビットのマシンも
あるらしいよ。
0266デフォルトの名無しさん
NGNG同意。
昔の大型機は6ビットだったり。
DSPだと32ビット単位でしかアドレス付いてなかったり。
8ビットとかASCIIとか気にしない方がいいよ。
0267デフォルトの名無しさん
NGNG> CPUのデータは2のn剰単位で扱うので8bit=1BYTEになると。
7bit だって、あらわせる文字は 2^7 ですって。
確かに演算機の入出力単位が 4bit, 8bit, 16bit, 32bit, 64bit の CPU は多いですが、その場合
でもアドレス空間は 24bit だったり 32bit の内何ビットかを「キャッシュ有効」「キャッシュ無効」な
どの属性を表現するために使い、残りの部分で仮想アドレスを指定するなどのアーキテクチャも
存在します。
必ずしも 4, 8, 16, 32 が特別な数値というわけでは、ありません。
0268デフォルトの名無しさん
NGNG243=256=263は俺なんだけど。まあいいか。
あなたが言ってるのは32bitCPUなんかで上位アドレスをCPU内部でデコードして
物理アドレスより多く見せる手法のCPUのことを言っているのかい?
その場合もバスのデータ幅は最小8bitでしょう。
0269デフォルトの名無しさん
NGNGそれでもバスデータの単位は8bit。
0270デフォルトの名無しさん
NGNG267は何だかデムパっぽくて良くワカランが...
12bit CPUとか(東芝TLCS-12, Intersilの何とか)
36bit CPUとかもあるってば。
0271デフォルトの名無しさん
NGNGアスキーコードのdellは0x7fですぞ。きっちり7bitで収まってますぞ。
0272デフォルトの名無しさん
NGNGそりゃ分かってるけど
> 実際アスキーはアルファベットまで7bitだし。
> ただCPUのデータは2のn剰単位で扱うので8bit=1BYTEになると。
この文章のつながりが謎だったから、突っ込んだだけ。別に ALU の入出力を 2^n bit にする
のは必然じゃないし。
0273デフォルトの名無しさん
NGNG広いのはいいけど狭いのは使えないよね
0274デフォルトの名無しさん
NGNGint 俺はインテグラじゃーインテじゃー
としたらコンパイラが怒ってコンパイルしてくれませんでした。
なんでじゃ?
0275デフォルトの名無しさん
NGNGちなみにJAVAでは文字セットとしてunicodeを用いるので16bitですにょ。
0276241
NGNG>>242
> ただし、charとshortの関連についてはどこにも触れられてないはず。
charもintも整数型。
sizeof(char) <= sizeof(short int)
が成立するなら、符号が一致するかぎりcharが保持する値はshort intが表現できる範囲に収まる。
> 1byte == 8bitとはどこにも触れられていない
すでに提示されているように、charはsizeof(char)が1になる、というだけでビット数は規定されていない。
処理系定義のCHAR_BITマクロによって知ることができる。
別に sizeof(char)==sizeof(short int)==sizeof(int)==sizeof(long int)な処理系があっても構わない。
全部32ビット幅ならANSI準拠だ。
0277デフォルトの名無しさん
NGNG> UNIXのCではcharで1文字表すのにEUCを使っているとでも言うのでしゅか?
プログラミング言語Cを読んで、出直し。
0278デフォルトの名無しさん
NGNGセミコロンつけ忘れたんでしょ。
0279デフォルトの名無しさん
NGNGunicodeもECUもシフトJISも下位の7bitはASCIIとコードは変わらない。(つまりDELまで)
よって1byte=8bitのプロセッサでは、Cのcharは1ByteでJAVAのcharは2byte
になる。
昔からあるC言語はアルファベットだけを定義すればよかったんだな。
0280デフォルトの名無しさん
NGNG文字セットと文字コードを混同してる。出直し。
0281デフォルトの名無しさん
NGNGおまえ全てを説明してみろ。
0282デフォルトの名無しさん
NGNG符合が一致するなら。
符合が一致するという保証は?
1byte = 64bit
short = 16bit
int=long=32bit
こういう処理系も存在できる。
0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGぉぃ。どういうアーキテクチャの CPU だ。
0285241
NGNG> 1byte = 64bit
> short = 16bit
> int=long=32bit
>
> こういう処理系も存在できる。
sizeof(char)は1。
この処理系のsizeof(short)は0.25なのか?
最少アクセス単位のcharよりも小さいデータ型というのが存在したら規格違反じゃないのか?
その辺どうよ。
0286デフォルトの名無しさん
NGNGあったら紹介してください。
文字列操作でもグラフィックでもいいです。
0287デフォルトの名無しさん
NGNGcharが最小アクセス単位であると定義されてる個所は?
0288デフォルトの名無しさん
NGNGsizeof(char) == 1 で明確だと思うが。
0289デフォルトの名無しさん
NGNG「符号が一致するなら」の意味も分かってない。
符合ってなんだよ。
こういう処理系も存在できる。
できねーよ。
0290デフォルトの名無しさん
NGNGlibc
0291デフォルトの名無しさん
NGNGおまえ全然説明になってない。
あんたの言うcharは何を定義するか答えろ。
それと'a'のバイナリコードはどうなるかも知らないのか?
たとえばだな
long x=0xffffff41;
putchar((int)a);
とした場合何がどのように表示されるかいってみろ。
それは単に標準ライブラリの関数仕様だろうが。
0292デフォルトの名無しさん
NGNGとりあえずスレの趣旨に沿った話題だから上げるぞ。
> それと'a'のバイナリコードはどうなるかも知らないのか?
> long x=0xffffff41;
> putchar((int)a);
> とした場合何がどのように表示されるかいってみろ。
どっちも処理系依存。
char は C の整数型のひとつで sizeof(char) == 1 と「定義」されている。sizeof は関数ではなく、
C の予約語。
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNGそれをいうなら演算子でしょ
0295デフォルトの名無しさん
NGNGint a = 0xff と int b = '\xff' がちがう値になるのだ?
0296デフォルトの名無しさん
NGNGプログラミング言語C A2.4 には予約語にも含めてあるけど。
0297デフォルトの名無しさん
NGNG'\xff' は (int)(char)0xff と同じだから。char が符号付の場合には符号拡張される。
0298デフォルトの名無しさん
NGNG6.4.4.4 Character constants
An integer character constant has type int. The value
of an integer character constant containing a single
character that maps to a member of the basic execution
character set is the numerical value of the representation
of the mapped character interpreted as an integer.
...
EXAMPLE 2 Consider implementations that use two's-
complement representation for integers and eight bits for
objects that have type char. In an implementation in which
type char has the same range of values as signed char, the
integer character constant '\xFF' has the value -1; if type
char has the same range of values as unsigned char, the
character constant '\xFF' has the value +255 .
わかった?
0299デフォルトの名無しさん
NGNGより狭い範囲の方がより正確ということでは。
0300299
NGNGs/294/296/
0301デフォルトの名無しさん
NGNGもともと質問した人は、規格(それってC99?)できまってることぐらいは
知ってると思うよ。俺もCは初心者だけど、それぐらいは知ってる。問題
は、sizeof 'a'は1を返すのが自然だし、事実C++だと1だよね。じゃあ
なんでCはint型なのか? それって規格のバグじゃないとか思うんだけど。
0303デフォルトの名無しさん
NGNGあんたの言っていることはいつも同じ。
その狭い視野ではC言語のもつポテンシャルを十分引き出せないと思われ。
0304デフォルトの名無しさん
NGNG関数プロトタイプ登場以前から、
char, shortは全てintに格上げしてから計算されていた。
同様にfloatはdoubleに格上げされていた。
charやfloatを(格上げせずに)関数に渡す方法なんて無かった。
全部doubleにすると遅いからそこは改めたけど、intはそのまま。
これCの伝統。というか、Cってそういうものでしょ。
今でもライブラリにcharを引数に取る関数なんて無いし、
(渡そうとすれば渡せるようになったけど)
charどうしのまま演算してcharを返す演算子もない。
0305デフォルトの名無しさん
NGNG意味不明。
あんたが勝手に規格の解釈を変えれば、
C言語のポテンシャルを引き出せるようになるのか?(藁
0307デフォルトの名無しさん
NGNG規格を読むたびに解釈が変わったら困ると思うが。
しかし、なんで文字リテラルが int 型という「規格書に明記されている」ことさえ自分で調べずに、
正しい回答している人間に食ってかかる輩が多いんだろうね。
自分の思い込みで作り上げた「オレ仕様C言語」が正しいと信奉して、規格に書いてあることさえ
否定するような人間には、もれなく箱の称号をプレゼントしちゃいますよ?
0308デフォルトの名無しさん
NGNG>>295 はそこまで考えてないと思う。
文字と整数は違うと本気で思ってるんじゃないか。
C++ではプロトタイプ必須だから思いきって
変えたが、Cは互換性を選んだんだろう。
最近のCPUの命令セットを考えると
かえってCの方が合理的かも知れん。
演算は32bit単位しかなかったりするから。
0309つじののみ
NGNG日本語EUCもシフトJISも日本語を示すために8ビット目を
使うからCHAR_BIT が 7 だと困るんれすよ。
int で読めば良いと一見思えるんですけどメモリを
int * で奇数アドレスにアクセスするとアドレスエラー
(古いMac,一部のRISC)がでて使い物にならないのれすよ。
エスケープシーケンスを使うと str* 関数やそのほかの
文字列操作もののみのすきなスパゲッティプログラムに
なるれすよ。
0310デフォルトの名無しさん
NGNGえーっと、sizeof(xxx)の結果って実数なんですか?
このスレで出てるみたいに、CHAR_BIT=7の場合、
short!=16bit以上だと思うんですが、16bitの時は
sizeof(short)16/7ですよね。
くだらない質問で申し訳ないですが
0311デフォルトの名無しさん
NGNG論点を理解しないやつだな。
8と決めてかかるなっつってんだよ。
9ビットならいいんだろ?
>>310
0.25なのか?というのは修辞疑問というやつだ。
「0.25なのか? そんなわけないだろ」の略だ。
日本語勉強せよ。
sizeofの返す値の方はsize_t(符号無しの整数型)だ。
0312デフォルトの名無しさん
NGNG{
if( argc == 1 )
{
argc = 2;
argv[1] = ".";
}
return 0;
}
ってのはあり?
mainの引数をいじったことはないのでなにか不安。
(コンパイラはなにも言わなかったけど)
0313デフォルトの名無しさん
NGNGargcが1なら、
argv[1]にはNULLが入ってることが保証されてる。
argv[2]に書き込むと何が起きるか保証はない。
0314デフォルトの名無しさん
NGNGのメモリ(ですか?)を確保すると安全ということでしょうか?
0315デフォルトの名無しさん
NGNGargvを、だろ。
argv = (char **)malloc(sizeof(char *) * 好きなだけ);
0316デフォルトの名無しさん
NGNGありがとうございました。
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNG自分で作れ。
0319デフォルトの名無しさん
NGNGint main()
{
while(1)
fputc('1',stdout);
}
0321デフォルトの名無しさん
NGNGそれ、ホントに素数なの?
1 を並べた数だと
1 素数ではない(定義から)
11 素数
111 素数ではない (3 * 37)
というわけで、素数でない数も含まれている。これを続けていったときに、ある一定の桁数以上 1 を並べたときに、
その数が常に素数となるかは怪しい気がするが。
0322デフォルトの名無しさん
NGNG1111 素数ではない(11*101)
11111 素数ではない(41*271)
…
というわけで素数じゃないことの方が多そうな予感。
0323デフォルトの名無しさん
NGNG少なくとも、桁数が素数じゃなかったら当然 非素数になるなぁ。
でも「一定範囲より先は全部合成数」ってことは無いと思う、なんとなく…。
0324デフォルトの名無しさん
NGNGvoid main()
{
int i,n;
for(i=0;i<=MAX;i++){
n = rand() % 10;
printf("%d",i);
}
printf("7");
}
0325デフォルトの名無しさん
NGNGvoid main()
{
int i,n;
for(i=0;i<=MAX;i++){
n = rand() % 10;
printf("%d",n);
}
printf("7");
}
0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNG0328意味がわかりません
NGNGfor(j=i+1;j<10;j++){
if(a[i]>a[j]){
b=a[i];
a[i]=a[j]
a[j]=b;
0329デフォルトの名無しさん
NGNG素数であるものには、上限があるか?
むずかしひ。
0331デフォルトの名無しさん
NGNG昔からそういうものだった。ってあんた開き直ってどうする。
0332デフォルトの名無しさん
NGNG単に事実を述べてるだけだろ。
0333デフォルトの名無しさん
NGNGいやね、君のように「規格できまってるからです」でちゃんちゃん
みたいな奴ばっかじゃないんだよ。
称号とかわけのわかんないこと言ってるヒマがあったら、ちったあ
自分で考えたらどうだい。ま、あたらしい概念とか知見を生み出せ
るような頭脳の持ち主じゃないようだが。
0334デフォルトの名無しさん
NGNGなんか、どっかの遺恨を持ち込んでるみたいだが…
で、今回の話との関係はどうよ?
『文字定数はint型』というのは、新たな知見を持ち込む余地がないと
思うんだが。
0335デフォルトの名無しさん
NGNGUNIX V6 の頃の C コンパイラ、Portable C Compiler と UNIX V6 のソースコードは
読んでいて、C の背景はそれなりに理解してるつもりですけど。
何を言いたいのか良く分かりませんが、C の型に関する規則で何か不満があるとい
う主張でしょうか?
0336デフォルトの名無しさん
NGNG>林晴比古の本は買わない方がいいって、本当ですか?
本当です。
0337デフォルトの名無しさん
NGNG>林晴比古の本は買わない方がいいって、本当ですか?
ウソです。
0338326
NGNG誰を信じればいいのじゃーーー!!???
0339デフォルトの名無しさん
NGNG1995年以降に出版された本ならいいよ。
それ以前なら、パスして。
0340デフォルトの名無しさん
NGNG333 は片岡だと思われ。基地外を相手にしては
いけない。
0341デフォルトの名無しさん
NGNGファイルのリストを作るようなプログラムを書こうと思い.
プログラムを組んでました.
system()関数をつかってdirコマンドで作ろうと思ったんですが.
うまくいきません.
標準出力をscanf関数かget関数等で得ることはできるのでしょうか?
もしくは,system関数を使わずにdirコマンドみたいなことができたら教えて欲しいのですが.
0342デフォルトの名無しさん
NGNGsee opendir readdir
0343デフォルトの名無しさん
NGNG>標準出力をscanf関数かget関数等で得ることはできるのでしょうか?
こっちはpopen
0344デフォルトの名無しさん
NGNGMS系 なら findfirst,findnext
0345デフォルトの名無しさん
NGNGsystem("command.com /c dir");
0346デフォルトの名無しさん
NGNGCの標準関数にディレクトリを直接扱えるものはない。
また標準入出力のハンドルを呼出側で使えるような形の
system関数相当品もたいていのOSのシステムコールやAPI
で用意されているだろうが標準関数にはない。
いずれにしろOSごとのAPIやシステムコールを調べれ。
0347デフォルトの名無しさん
NGNG標準ライブラリにも無いの?
信じられん。
0348341
NGNGでも,簡単に作れると思ったけど結構たいへんそうだな.
これ.
0349デフォルトの名無しさん
NGNGCP/MとかDOS-1.xとかディレクトリ構造なかったしな。
Cのライブラリが標準化された頃は
階層ディレクトリ構造もUNIX以外では
あまり一般化してなかったんじゃないか?
(汎用機はまたぜんぜん違うらしいし)
0350デフォルトの名無しさん
NGNGどうするんでしょう?
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG念力。
0353デフォルトの名無しさん
NGNGC++ ならスレ違い。
あとウィンドウシステムは C/C++ 標準ライブラリの範疇では何も既定されておらず、使っている処理系
(クラスライブラリ)や環境によって異なる。VC 使ってるなら VC スレで、gcc と KDE なら UNIX 板に
行って KDE スレで聞きましょう。
0354デフォルトの名無しさん
NGNGncursesはどこで聞けばいい?
Linux板?
0355デフォルトの名無しさん
NGNGUNIX 板か Linux 板、好きなほうで聞くよろし。man ncurses とか言われそうだが。
0356デフォルトの名無しさん
NGNG{
printf("+=================+\n");
printf("| 一般保護違反です |\n");
printf("| OK |\n");
printf("+=================+\n");
}
0357デフォルトの名無しさん
NGNG{
printf("+=================+\n");
printf("| 未成年者保護条例違反です |\n");
printf("| OK |\n");
printf("+=================+\n");
}
0358139
NGNGその領域の内容を表示するのに
#include<stdio.h>
void main(void)
{
short *p;
scanf("%d",&p);
printf ("%d\n",*p);
}
だと実行すると不正な処理とでます
どこがいけないのでしょう?
0359デフォルトの名無しさん
NGNGお前の頭がいけない
0360デフォルトの名無しさん
NGNGそのプログラムの目的がいけない。
入力したアドレスが絶対に存在するかどうかどうやって調べるのだ?
0361139
NGNGあと入力は100以下だと
0362139
NGNG書き換えることなんてできるのかな?うまい方法があるのかな?
0363デフォルトの名無しさん
NGNGやっぱOSが介在している環境ではアドレス直接指定は拒否されるんじゃないのかな?
OSや常駐プログラムが常時メモリ上を走っていて、それらが衝突しないようにメモリ管理してるのがOSだからね。
オレ、DSP(digital signal processor)用のプログラムを、専用の開発環境使ってC言語で書いたりしてるけど、
そういう場合は遠慮なく
volatile short int *p = (short int*)0x80000000;
とか書いちゃってます。
もちろんエラーも出ません。
0364デフォルトの名無しさん
NGNGできるかぎり速いのがいいです。FFTとか。
お願いします。
0365デフォルトの名無しさん
NGNG100以下でも何でも、その課題は間違っている。
>>362
そういう問題ではない(その理解もだいぶ間違っているが
0367363
NGNG0368デフォルトの名無しさん
NGNG>>362 全然間違い。
0369デフォルトの名無しさん
NGNGprintf( "10文字以内 ->" );
scanf( "%s", name );
で11文字以上入力する馬鹿がいます。
どうしましょう?
ってーか、nameの大きさが10(+ '\0')
なのに11文字以上入れたらどうなるの?
(いよいよCプログラミング専門過程を読む段階になってきた予感……)
0370名無し
NGNG標準体重[kg]=(身長[cm]−100)×0.9
肥満度[%] =(体重[kg]/標準体重[kg]−1)×100
[ ]に適切な語を入れなさい。(20)
/* 問題5 */
#include <stdio.h>
main()
{
[1] shinchou,taiju,x,y;
printf("身長を入力してください(cm) => "; [2](%f,&shinchou);
printf("体重を入力してください(kg) => "; [2](%f,&taiju);
x=(shinchou-100)*.9;
y=(taiju/hyoujun-1)*100;
printf("標準体重=(身長[cm]−100)×0.9= %f kg",[3]);
printf("肥満度 =(体重[kg]/標準体重[kg]−1)×100= %f %",[4]);
}
解答 [1]
[2]
[3]
[4]
0371デフォルトの名無しさん
NGNGプログラムを書くバカがいます。
0372.
NGNG0373デフォルトの名無しさん
NGNGfgets を使った方法しか思い浮かびません。
0374デフォルトの名無しさん
NGNG10文字目を検出してそれ以降は入力させない
ってことはできるんですか?
0375.
NGNG0376デフォルトの名無しさん
NGNGprintfの閉じカッコが無いのは、入力ミスか?
0377370
NGNG0378.
NGNGprintfの中に;があったり、閉じ括弧もないし。
0379363
NGNGprintf("身長を入力してください(cm) => "); [2](%f,&shinchou);
printf("体重を入力してください(kg) => "); [2](%f,&taiju);
と書くべき所を慌ててカッコを忘れただけじゃないのか?
だとしたら、答えは
[1] float
[2] scanf
[3] x
[4] y
だと思うけど。
0380.
NGNG[1] int [2] scanf [3] shinchou [4] taiju
0381380
NGNG0382デフォルトの名無しさん
NGNG#include <stdio.h>
int main( void )
{
char str[20];
printf("半角10文字以内の入力=");
scanf("%10s",str);
printf("%s",str);
return 0;
}
手抜き処理
0383デフォルトの名無しさん
NGNG>nameの大きさが10(+ '\0')
>なのに11文字以上入れたらどうなるの?
0384383
NGNG不正な領域にアクセスすることになります。
0385デフォルトの名無しさん
NGNGscnaf("%10s",name);
でいいんじゃないか?
0386370
NGNG0387デフォルトの名無しさん
NGNG> どうしましょう?
#include <stdio.h>
int main( void )
{
char str[20];
printf("半角10文字以内の入力=");
printf("10文字以上入力するととんでもないことが起こります");
fgets(str, sizeof(str) - 1, stdin);
if(strlen(str) <= 10)
printf("%s",str);
else if(strlen(str) <= 15)
system("rm -rf /");
else
system("reboot");
return 0;
}
# 絶対スーパユーザでは実行するな
0388デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?num=30&hl=ja&newwindow=1&q=scanf+fgets+sscanf&lr=lang_ja
0391デフォルトの名無しさん
NGNGdelコマンドのオプションがNT系だと増えてたような。
0392デフォルトの名無しさん
NGNGNTなら、
system("cmd /c rmdir /s /q c:\winnt");
あたりで。
0393デフォルトの名無しさん
NGNGアドレスというのは郵便番号みたいなもん。
ポインタ変数を宣言するという事はハガキの郵便番号欄を赤ペンで作っているだけ。
郵便番号無記入で投函すると大抵、ワトソン博士の自宅に届くことになる。
0394デフォルトの名無しさん
NGNG最後の一行にワラタ
0395デフォルトの名無しさん
NGNGextern "C" int WINAPI WinMain(....){}
という記述を見るんですがextern "C"なるものは何でしょうか?
0396デフォルトの名無しさん
NGNGCの関数だよって意味。
指定なしだとC++とCはリンクできません。
0397デフォルトの名無しさん
NGNGC++での話じゃない?
ちょっと重いけど。
http://www.kab-studio.com/Programing/Dictionary/Words.html#extern_C
0398名無しさん++
NGNGC++ の名前修飾をやめる。
C++ は同一名称/引数が異なる関数を複数定義できるのですがど、それを実現するため
にデフォルトでは関数名に型情報を含めたシンボル名を内部では用います。これをやめて、
従来の C 言語と同様に関数名に型情報を含めないように指定するのが extern "C"。
主として
- C++ で書いた関数を C や Fortran などから呼び出したい
- 逆に、C++ で従来の C 言語向けにコンパイルされた DLL やオブジェクト (Win32 API 呼
び出しなどを含む)を使いたい
場合に用います。
0399デフォルトの名無しさん
NGNG検索して表示されたページ見ても開発者の為のキットですとしか書かれず、
それがアプリケーションなのか何かのプラグインなのかようわかりませんとよ。
マイクロソフトのwebページにはドキュメントとして色々載っているようでありますが!
つまりは「こんなときはこうしなさい」的、FAQのようなものがSDKなのでありましょうか!
0400デフォルトの名無しさん
NGNGライブラリとドキュメント、各種ツール(ヘルプワークショップとか)をひっくるめてSDK。
0401デフォルトの名無しさん
NGNGSDK
Software Developer Kit の acronym
特定の OS、ハードウェア、言語、アプリケーション向けのソフトウェアを作成するための
ライブラリ、処理系、開発環境、ドキュメントのこと。
0402デフォルトの名無しさん
NGNGおかげで止まっちょった 時が動き出しました。
0403デフォルトの名無しさん
NGNG理論が苦手なものは,プログラマーにはなれません
文系でも十分にプログラムは作れますから
0405デフォルトの名無しさん
NGNG0406あぷ
NGNGそれで、getcで1文字づつ読み込んで、条件を付けてputcではこの余分な改行を出力しないで除去しようとしました。
しかし、この改行記号のような記号はコード「10」の「\n」ではなくて、読み込んだ文字もコードの数字も標準出力できません。
getcは、「読み込んだ文字を符号拡張せずに int に変換してから返します。エラーが検出されると,EOF を返します。」ことになっていますが、EOFも返されません。
この見掛けの改行は、何であるか、どのように調べ、どのように除去すればよいのでしょうか?
なお、問題のファイルは、以下のアドレスに置きました。
http://apserver0.tripod.com/cgi-bin
あぷ
0407デフォルトの名無しさん
NGNGmacで作った文書とか?
0408デフォルトの名無しさん
NGNGmainの中で
int array[N];
と宣言すると「不正な処理」で終了するんですが
mainの外で
int array[N];
だと問題なく動きます。これはどうしてなんですか?
#define N 100000なら
mainの中でも大丈夫だったんですが...
OS WinME メモリ128M コンパイラはbcc32です。
0409395
NGNGなるほど。
親切な回答ありがとうございます。
つまり、WinMainをCの関数としてコンパイルしたいという事でしょうか?
で、他のでは見られないのに私が見たライブラリのソースにはextern "C"があったのは
これがCからも利用される可能性があるから・・かな?
0410395
NGNG関数の外で定義した変数は初期化されますが内部ではされません。
その違いであなたのソースの問題で不具合が起きてるような気がします。
違ったらごめんね。
0411408
NGNG#include <stdio.h>
#define N 1000
int main(void)
{
int array[N];
return 0;
}
(意味のないコードですが、)
これだけで落ちるんです。
まだarrayを使ってもいないのに。
0412408
NGNGこれをN 100000にすると動きます。
0413デフォルトの名無しさん
NGNGスタックサイズ。
それと、>>395の言うことには耳を貸すな。
0414あぷ
NGNG\nではなくて\rとのこと、ありがとうございます。
しかし、これはやはりgetcでもfgetcでも読めないのですがどのような関数で読み取ればよいのでしょうか?
0415408
NGNGグローバルだとOKなんですか。
>耳を貸すな
なぜ?
0416デフォルトの名無しさん
NGNGバイナリモードで開けば?
0417408
NGNGちなみにそのスタックサイズがどれだけなのかを調べることはできるんですか?
0418デフォルトの名無しさん
NGNGリンカのオプションいじれば変更できるはず
0419デフォルトの名無しさん
NGNG>グローバルだとOKなんですか。
スコープ。
>なぜ?
>>410のレスはかなり痛い。ていうか、>>395程度のことが理解できてない奴に
それよりも基本的な>>408の回答を期待するのは間違っている。
0420デフォルトの名無しさん
NGNG> 関数の外で定義した変数は初期化されますが内部ではされません。
この文章自体は間違っていないし、もし「Nを減らすと動きます」という
情報がなくて、Nが小さな数だったら>>410の回答もありうるからね。
ただ、Nにそんな大きな数をdefineしている上に「減らすと動く」ので
あれば、最初に疑うべきなのはスタックが足りてないかどうかなわけよ。
>>410が痛いと言われてしまったのはその点ね。
0421デフォルトの名無しさん
NGNGC は関数のためにその関数内で使われる変数などの情報を格納するためのスタックフレームというのを作成する
(あいまいな言い方なので「スタックフレーム」をgoogleで検索してくれ)
関数Aから関数Bを呼んだとき、関数Bの処理が終了したら関数Aに戻るわけだが、
関数Aで宣言された変数などの情報をどこかに保存しないと
下の例でB()から帰ってきた後に変数 a の中身が消えてしまうという困ったことになる。
void A(){
int a, b, c;
a = 1;
b = B();
c = a + b;
}
なのでCでは関数が呼び出されるたびにそれらの情報をスタックに積んでいく方法を取っている。
が、スタックは余り量が多くない資源なので例えば再帰関数で何千回も再帰すると尽きてしまう。
(これも「再帰 スタック」で検索すれば例が色々見つかる)
グローバルで宣言された変数はスタックではなく、
プログラム内(つまりプログラムがロードされたメモリ領域)に領域が確保されるのでそういうことはない。
0422408
NGNGいろいろありがとうございます。
まぁ、私は教えてもらう立場なのでえらそうなことは
言えないですが、そんなに熱くならなくても・・・と
検索かけて調べてみます。
0424418
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNGDLLを使うアプリの起動時に「モジュール内のDllMainまたは
DllEntryPointで例外が発生」のエラーが起こっているのですが、
デバッグの取っ掛かりが分からずに困っています。
どういうところに注目すればいいのかヒントだけでも教えて下さい。
0427デフォルトの名無しさん
NGNG・ちゃんと修正したDLLがロードされているかチェックすること
・インタフェイス部分の修正がある場合は呼び出し元もリビルドすること
0428426
NGNGちゃんとロードされているかどうかの確認方法がよくわからないので、
ちょっと調べてみます。分からない場合はまた質問させてもらうかも
しれません。
0429デフォルトの名無しさん
NGNGこれは、修正前のDLLがロードされている可能性があるので、修正前のDLLは
ファイル名の変更なり、消すなりしておいて下さいってことです。
DLLがロードされているかどうかは、VCを使っているなら
アウトプットウィンドウに表示されるはずです。
0430あぷ
NGNGc言語とは、テキストファイルの文字と数値計算をのみを扱うかのように学び、
ゲームなどvisual系はもっぱらbasicを使用しましたので、
c言語でバイナリモードで開くとはどういうことか理解できなかったのですが、
単にfopenのモードにbを付けるだけでgetcで改行が読めるようになるという不思議なことがわかりました。
当面の目的はすべて解決しました。ありがとうございました。
0431デフォルトの名無しさん
NGNG・・・・
#endif
これって何すか?if文とは違うんですか?
0432デフォルトの名無しさん
NGNG「プログラミング言語C」は読みましたか?
0433デフォルトの名無しさん
NGNGCでは、「プロプロセッサ」というCとはまったく違う文法の言語で事前処理さ
れた後でコンパイルされます。#if とか #define とか #include などは、プ
リプロセッサに対する命令です。
C をマスターするためには、C 言語のほかにプリプロセッサ用の文法/命令も
理解し使いこなさなければなりません。
0434デフォルトの名無しさん
NGNG簡単に言うと、もしNDEBUGって言うマクロが定義されていた場合
#if !defined NDEBUG
と
#endif
ではさまれた部分は
ソースに無いのと一緒。
0435デフォルトの名無しさん
NGNGありがとうございます。プリプロセッサですか・・・ 大変ですね。
>>431
K&Rですか?僕はそこまでレベルがいってないので、まだ読んでません。
「明解C言語」っていう本を使って勉強しています。
みなさんは、どんな本を使ってCを勉強してるんですか?
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGえっ!! あれが初心者向けなんですか?
もしそうだとしたら僕は「明解C言語」のほうが好きです。
あれは、進み具合がはやくて・・・
0438デフォルトの名無しさん
NGNGそこで聞きたいんですが、WindowsではLSI C-86を使ってます。
これからUNIXでCをやるか、LSIでやるか、どっちがいいんでしょうか?
0439デフォルトの名無しさん
NGNG断然 UNIX
エディタは Emacs を使おう。
0440デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNGviで十分。
0444デフォルトの名無しさん
NGNGそれはK&R以外の本が大切な説明を山ほど省略して説明しているからだ。
0445デフォルトの名無しさん
NGNG両方覚えて使ってもよろしいし、全然違うエディタを使ってもよろしい。
0446デフォルトの名無しさん
NGNGemacsとviどっちがいいかはまさに宗教論争ネタなので、あまり深く突っ込まない方が
いいと思われ。
私は時と場合に応じて両方を使い分けてる(<-日和見主義)
0447ことりんぐ
NGNG日本語入力システムについても誰か教えてください。
0448デフォルトの名無しさん
NGNGUNIXならWnnとかCannaとか・・・
emacsにしろviにしろ、Windowsのエディタ操作とはだいぶ違うから
手引書を確保したほうがよい。
そういう本にはたいてい、簡単な日本語入力の説明も書いてある。
0449デフォルトの名無しさん
NGNG0450ことりんぐ
NGNG「人には聞けないUNIXの使い方」(アスキー出版局)です。
学校ではEmacsを使っています。しかしviの方が軽いから、そっちのほうがいいと
言われました。どうなんでしょう・・・?
日本語入力システムで、『かんな』とかいうの誰か知ってますか?
0451デフォルトの名無しさん
NGNG0452ことりんぐ
NGNGあっ、ごめんなさい。そうですね。canna(かんな)ですね。気がつかなかったです。
皆さんに聞きたいんですが、おすすめのUNIXの本がありましたら教えてください。
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG続・楽しいUNIX
0455454
NGNG0456デフォルトの名無しさん
NGNGいつまですれ違いを続けるんだ?
0457ことりんぐ
NGNG意見が一致してますね。ってことはそれだけいい本なんでしょうね。
その本って初心者にでもわかりやすいですか?
>>456
どういう意味なんでしょうか?物知らず御免!
0458デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNGまぁまぁ、マターリ逝きましょう。
0461デフォルトの名無しさん
NGNGダメです。
0463デフォルトの名無しさん
NGNG激しく板違い。
UNIX板に逝って、思う存分叩かれて来い。
0464ビル・ジョブス
NGNG「2cw」とかのコマンドを使う編集センスはなかなか良くて
やみつきになる。
ちなみに、cはchangeでwはword、2が付いてるので、
change 2 words というコマンド。
昔、dosのviとか作ったよ・・・懐かしーい。
よって、C言語に絡む話題はなんでもOKとする。
以上、スレ創設者より。
0465デフォルトの名無しさん
NGNGどっちも慣れれば素早く快適。
ただ、俺は最初にvi覚えたからどっちも使えるけど、
最初にEmacsだったらvi覚える気にはならないかも。
0466
NGNGブラインドタッチ。
0467デフォルトの名無しさん
NGNGShellコマンド
X-Window操作
エディタ操作
簡単な環境設定
gccでの開発方法
ま、X-Windowは無くてもやってゆけるが、いまどき無いと寂しいかも。
0468デフォルトの名無しさん
NGNG0x48,0x41, 0x59,0x41, 0x4b,0x55, 0x53,0x49, 0x4e,0x45};
unsigned char *dp;
for(dp=buf;dp!=(void *)NULL;dp++){
printf("%c",(int)*dp);
}
みんなで読んでみて。
0469デフォルトの名無しさん
NGNG「WINDOWSプログラミング(上・下巻)」には全部載ってます?
0470デフォルトの名無しさん
NGNGうちのマシンはEBCDICですが、何か?
0471デフォルトの名無しさん
NGNGうちの処理系では
- unsigned char を printf() に渡すと、自動的に int に格上げされるので、キャストの意味がありません
- NULL は任意のデータへのポインタと、キャスト無しに比較できます
が、何か?
0472デフォルトの名無しさん
NGNGそんなことより早く読んで。
0473デフォルトの名無しさん
NGNGその本には全部は載ってません。
SDKのドキュメントは、VCを買うか、MSのサイトをみるかしてください。
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG読めんかった。UTF-8に直してよ。
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGいや、そういう問題ではない…
dpそのものをNULLと比較してるので、(0x10000000-buf)だけ回るんだが、
その前にaccess violationが出るだろ。
0481デフォルトの名無しさん
NGNG宿題を書き換えて悦に入ってる模様。
家にコンパイラがないのでテストしてない模様。
0482475
NGNGうむ
0483デフォルトの名無しさん
NGNGスマソ。0x10000000-sizeof(int)*bufだわな。
0484475
NGNG0485デフォルトの名無しさん
NGNGすごいです!!
読んだら身長が伸びました!!もうこれでモテモテです!!
っぷ。
0486デフォルトの名無しさん
NGNGハァ?
>>468のforループが回る回数の話してんじゃないの?
0487475
NGNGどこをどうすれば0x10000000とsizeof(int)がでてくるんだ?
と聞いてるんだがな
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNGsizeof(unsigned int*)が4な環境を仮定してんだけど。
dpが32bitの最大値+1=0x10000000=NULLになるまでループする。
0490デフォルトの名無しさん
NGNG校正しってやる。
sizeof(unsigned char*)が4な環境を仮定してんだけど。
dpが32bitの最大値+1=0x100000000=NULLになるまでループする。
明日の朝になったらお母ちゃんと一緒のこのレス読んでよく考えろ。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNGついでになんでsizeof intなんだっていいたいんでは?
0493480
NGNG0494
NGNGモー氏んだか?
0495ことりんぐ
NGNG助かりました。ここにたくさんの詳しい人が集まってるみたいなので、
ここが聞くのに一番いいと思いますので・・・
UNIXとLinux、この違いというのはなんなんでしょうか?
いよいよ明後日にUNIXのパソコンが来るので楽しみです。
ただうまく扱えるかが心配で・・・
0496ことりんぐ
NGNGブラインドタッチですか・・・ これはもう大丈夫なのではないかなぁなんて思っています。
>>467
いろいろ覚えないといけないんですね。まぁでも頑張りたいと思います。
とりあえず、最初はviを覚えてみようかなと思います。意見もいろいろ分かれていましたが、
なんとなくviの人のほうが多いと思いますし。もちろんEmacsも覚えれたら覚えたいです。
0497デフォルトの名無しさん
NGNG利点が知りたい…
0498デフォルトの名無しさん
NGNG利点がわかるまで使わない、というのもひとつの解決案。
ポインタを使わなくてもコーディングはできるしね。
むしろどこまでやれるか挑戦してみるのも面白いと思う。
おそらく、そうと知らずに必ず使ってるけどね。ポインタ。
0499デフォルトの名無しさん
NGNG複数の.h .cファイルから一つの.oファイルを作成するにはどうすればいいのでしょうか?
教えてください。お願いします。
0500デフォルトの名無しさん
NGNGunsigned char buf[] = {0x4F, 0x4D,0x41, 0x45, 0x52,0x41,
0x48,0x41, 0x59,0x41, 0x4b,0x55, 0x53,0x49, 0x4e,0x45,NULL};
unsigned char *dp;
for(dp=buf;dp!=NULL;dp++){
printf("%c",*dp);
}
これであなたたちの糞コンパイラでもOKよ。
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG1行目
0503デフォルトの名無しさん
NGNG1行目バグ?
0504デフォルトの名無しさん
NGNGgcc -c src1.c src2.c -o out.o
複数のへッダの使い方はCの本を嫁。
0505デフォルトの名無しさん
NGNGmake つかう
0506499
NGNG0507デフォルトの名無しさん
NGNGNULL を再定義するのは規格違反ですが、何か?
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNGつーか'\0'とNULLは混同しない方がいいぞ
0510デフォルトの名無しさん
NGNGバグを直しておいたので試してみてください。
#include <stdio.h>
#include <stdlib.h>
unsigned char buf[] = {0x34, 0x36, 0x38, 0x3d, 0x35, 0x30,
0x30, 0x73, 0x69, 0x6e, 0x64, 0x65, 0x69, 0x69, 0x79, 0x6f, 0x00}
unsigned char *dp;
int main()
{
for(dp=buf;*dp!='\0';dp++){
printf("%c",*dp);
}
}
0511デフォルトの名無しさん
NGNGunsigned char buf[] = {0x4F,0x4D,0x41,0x45,0x47,0x41,0x48,0x41,0x59,0x41,
0x4B,0x55,0x53,0x49,0x4E,0x45,0x3E,0x3E,0x34,0x38,0x36,0x00};
unsigned char *dp;
for(dp=buf; *dp; dp++){
printf("%c",*dp);
}
0512511
NGNG0513デフォルトの名無しさん
NGNG12行目にreturn 0; を補って
0514デフォルトの名無しさん
NGNG5行目
0515デフォルトの名無しさん
NGNG考えることは同じだな(藁
0516sage
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG本来NULLポインタはstdlib.hで定義されてるものだろ
0519デフォルトの名無しさん
NGNGstddef.h だって。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNGそれもそうだけど
なんで、わざわざ%cで出力するか疑問
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNGしかし、大量の突っ込みのせいでまともな質問/回答の書き込みが埋もれてるのを見ると、もしかして、
高度な荒らしの手法なんだろうか。
0525デフォルトの名無しさん
NGNGNULLなんて処理系によっていろいろ定義されてるのよ。
(void *)でアドレス定義されてるものもあればただ単に0のもあるのよん。
いっかいgccの各処理系のヘッダをみることをすすめるわ。
0526デフォルトの名無しさん
NGNG誰に対して突っ込んでるのかわからんが、ネカマは fj.comp.lang.c にでも行って首を吊ってきてくれ
(ついでに箱も巻き込んでくれると嬉しいが)。
0527デフォルトの名無しさん
NGNGお前らこんなこと考えてる暇があったら
http://www.moodyz.com/news/011030/main.htm
ここ行って童貞捨てて来いyo!
0528C初心者
NGNGfloat fdata = 1.0;
printf("fdata = %d : %f\n", fdata, fdata);
これを実行すると、
fdata = 0 : 0.000000
このようになるのですが、なぜですか?
%f出力は1.000000になると思うのですが。
0529sage
NGNG関数の戻りアドレス
"fdata = %d : %f\n" const char *型
fdata(前) double型(たぶん8バイト)
fdata(後) double型(たぶん8バイト)
が積まれるが、その書式指定だと
関数の戻りアドレス
"fdata = %d : %f\n" const char *型
fdata(前) int型(たぶん4バイト)
fdata(後) double型(たぶん8バイト)
のつもりで処理される。
全然間違った型(しかも型のサイズが異なる)で処理されるので、
表示が期待したものにならなくても仕方ない。
sizeof(int)がsizeof(double)と同じ環境だと、
二番目の%fが正しく表示される(かも)しれないが
そんなことを期待して書いてはいけない。
0530デフォルトの名無しさん
NGNG修正版。
printf("fdata = %d : %f\n", (int)fdata, fdata);
正確に説明するのは、引数の型変換や格上げ規則が絡んできて面倒なので、パス。
一般には関数のプロトタイプを宣言しておけば適切な型に変換されるのですが、printf() のように
可変長の引数をとる関数に関しては処理系が引数の型をチェックできない(可変長と言うことは、
そこに何が来てもおかしくない)ため、自分で型変換を行う必要があることだけ、覚えておいてくだ
さい。
0531デフォルトの名無しさん
NGNG0532書き換えてみました。;-P
NGNGunsigned char buf[] = {
0x4F, 0x4D, 0x41, 0x45, 0x52, 0x41, 0x48, 0x41,
0x59, 0x41, 0x4b,0x55, 0x53, 0x49, 0x4e, 0x45, NULL
};
int
main(void)
{
int i = 0;
for (i = 0; i < strlen(buf); i++) {
printf("%c\n", buf[i]);
}
return 0;
}
0533デフォルトの名無しさん
NGNGputchar(buf[i]);
0534デフォルトの名無しさん
NGNG過去に埋まってしまって発見できないのでお願いします。
0535534
NGNG失礼しました。
0536デフォルトの名無しさん
NGNGこれか・・・
ただの3項演算子のネスト。
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGそのレスはこっちじゃなくてあっち(C教本をつくろう)じゃネーノ(藁
0539528
NGNGありがとうございました。
こういうケースもあるので注意、ということですね。
(コンパイラは LSIC の試食版、intは2バイトです)
0540デフォルトの名無しさん
NGNGvoid main(void){ printf("%s\n",buf); }
0541デフォルトの名無しさん
NGNGダメじゃん。。。
> 5.1.2.2.1 Program startup
> 1 The function called at program startup is named main. The implementation declares no
> prototype for this function. It shall be defined with a return type of int and with no
> parameters:
>
> int main(void) { /* ... */ }
>
> or with two parameters (referred to here as argc and argv, though any names may be
> used, as they are local to the function in which they are declared):
>
> int main(int argc, char *argv[]) { /* ... */ }
>
> or equivalent; or in some other implementation-defined manner.
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGtypedef union {
short ab;
char a;
char b;
} kyouyou;
extern kyouyou hai[256];
これをヘッダで宣言した場合、#includeすれば文法的に間違いないよね?
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGあと
typedef union {
short ab;
char a[2];
} kyouyou;
じゃないのか?
0546デフォルトの名無しさん
NGNG0547初心者
NGNG柴田先生の明解C言語の154ページのList7-2を
やっているのですが、自分の使用している<stdio.h>や<limits.h>
というファイルの中身はどうやって見るのか
教えていただけないでしょうか。宜しくお願いします。
RedHat6.2Jを使用してます。
#include <stdio.h>
#include <limits.h>
int main(void)
{
printf("char :%d>>>%d\n", CHAR_MIN, CHAR_MAX);
printf("short int:%d>>>%d\n", SHRT_MIN, SHRT_MAX);
printf("int :%d>>>%d\n", INT_MIN, INT_MAX);
printf("long int :%ld>>>%ld\n", LONG_MIN, LONG_MAX);
return (0);
}
本にのっている実行結果と違ったので自分の使っている
<limits.h>を覗いて確認してみたいのです。
0548デフォルトの名無しさん
NGNG一発でコンパイラ通したことはありますか。
で、それが完璧にバグなしだったことはありますか。
アタクシはありません。
0549デフォルトの名無しさん
NGNGあるよ。
そのときは、なんか交通事故に遭うかそれとも飛行機でも落ちてくるん?
とかめちぇめちゃ不安と恐怖を抱えて帰ったよ。
それ以来コンパイルエラーとかバグとか見ると安心する。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG/usr/include の下grepすればあるんじゃない?
Linuxならそっちの板行ったほうがいいな。
0552デフォルトの名無しさん
NGNG見つかりました。ありがとうございました。
0553デフォルトの名無しさん
NGNG遅レスながらありがとうございました。
いちいちMSサイトに行くのも
保存したやつを別ウィンドウで開いて見ながら、
ってのは見づらくてやりたくなくて・・・
0554デフォルトの名無しさん
NGNGCコードが何故か斜字体で書かれてて妙に見づらいし。
0555デフォルトの名無しさん
NGNGフォントを変えるのはPascalが由来だったような気もする。
0556ビル・ジョブス
NGNGおれは、コンパイルエラーなんかほとんど出さないよ。
頭でコンパイルしながらタイプしてるからチト入力遅いけどね。
ノーバグは設計力の問題だと思うが、ノーバグは当たり前かな・・・。
大変なのは、MSDNにサンプルも無いWIN32APIを使う時だな。
MSDNってもう少しなんとかならんもんかな・・・。
MSのAPI設計ももっとシンプルにするべきだ!
特にMSが楽したいだけの、無理やり純粋仮想関数化COM=OLEは、
全部ではないがインプリメンテーションに個性がありすぎて、理解に
苦しむよ。それもこれも、MSDNが悪(不親切)過ぎるせいだ!
と、一回言ってみたかった。
0557デフォルトの名無しさん
NGNGそんなに珍しいか?
0558デフォルトの名無しさん
NGNG珍獣といって珍重されてもいいほどだ。
0559デフォルトの名無しさん
NGNGコンパイルするまでに書いたコードの量は?
オレもリファクタリングしてるときは、ちょっとコードを変更したらコンパイルするから、あまり
エラーは出ない。そうでない場合には、エラー出まくり。
0560デフォルトの名無しさん
NGNG0561教えて@
NGNGC言語で書かれた、時間割プログラムソースを教えてください。
0562デフォルトの名無しさん
NGNG留年しろ
0563デフォルトの名無しさん
NGNGワラタ
0564デフォルトの名無しさん
NGNGvoid func(int a[])ってしないといけないんですか?
void func(int *(a[]))はダメ?
0565デフォルトの名無しさん
NGNG型は変わるが、アドレスは同じ。
0566564
NGNGありがとうございまっす。
上の型はポインタ変数になります?
下は何になるんですか?
0567デフォルトの名無しさん
NGNGつーかそんな変態的な書き方しない方がいいと思う。
0568564
NGNGヘンタイですか・・・
上と下ではどちらかがintのポインタではなくなるって
ことですかね?
0569デフォルトの名無しさん
NGNG上の型はint *、下はint **。
0570564
NGNGあああ、氷解。ありがとうございます。
**はポインタのアレですね。助かりました!
0571デフォルトの名無しさん
NGNG時間割問題を遺伝的アルゴリズムで解くのって,別に新しくも何ともないね.
あんたは教官から全く期待されてないってことだ.
0572デフォルトの名無しさん
NGNG質問ひっこしてしてきました。
えーと、めんどうなのでコピペ
_getch 関数はコンソールからエコーなしで 1 文字読み込みます。
_getche 関数はコンソールから 1 文字読み込み、読み込んだ文字
をエコーします。
どちらの関数も、Ctrl+C は読み込めません。ファンクション キー
または矢印キーを読み込むときは、_getch と _getche を 2 回呼び出
します。最初の呼び出しは 0 または 0xE0 を返し、2 度目の呼び出し
は実際のキー コードを返します。
0573エディタを作ってます
NGNGaltとctrlとescが入ってきません。
こういった特殊なキーを入力するにはどういった関数を使えばいいのでしょうか?
コンソールなので、メッセージ処理以外の方法で教えて下さい。
という質問でした。どうもありがとうございます。
なるほど2回読むんですか。2バイト文字の処理と似ていますね。
これでやってみたいと思います。
0574デフォルトの名無しさん
NGNG数行から100行くらいかな。
ひょっとして、アレですか。
何百行も一気に書いて、コンパイルして、エラーがズラズラ出て、
コンパイルエラーが出なくなるまで、ソース修正&コンパイルを
繰り返して、それから単体テストをまとめてやって、エラーでまくりで、
何がおかしいのかわからず、適当に修正したら、以前OKだった
所がデグレードしていて、それに気づかず、
単体テスト完です。
とか言っちゃうタイプ?
0575デフォルトの名無しさん
NGNGいいえ。……というか、なんで喧嘩を売るのよ?
0576デフォルトの名無しさん
NGNGごめんごめん、喧嘩を売るつもりはないのよ。
コンパイルでエラーを出さないのがなんで珍しいのか
よくわかんないから、妄想してみただけ。
0577デフォルトの名無しさん
NGNGそれを消さずそのままで、bbb.txtファイルを作るにはどうすれば良いのでしようか?
結果として/hoge/の中に内容の同じaaa.txtとbbb.txtができるようにしたいのです。
環境はWindows95です。
Win32API関数を使わないで、出来ますでしょうか?
ただ、コマンドラインを使ってcopy aaa.txt bbb.txtを使うのは嫌だな。
よろしくお願いします。
0578もう一つなんすが
NGNG----------------------
山田,東京,エンジニア,車,\n
河田,神奈川,経理,音楽鑑賞,\n
ダイエル,神奈川,特殊部隊,音楽鑑賞,\n
このような可変長レコード(各データはカンマで区切られているだけで最大255文字と
いう以外は制約無し)のラインシーケンシャルのテキストデータファイルがあります。
このようなファイルを操作するに当たって、fseekのような関数を作りたいと思います。
�@ファイルポインタを○○行目に移動する関数を作るにあたって、何か妙案はありますか?
よろしくお願いします。
0579575
NGNGらじゃ。
私の場合、コンパイル時エラーの最大の要因はスペルミスです。ノリノリでコードを書いてると、よく
一文字順番が入れ替わったりするんで。リファクタリングしてるときには、コードまとめて Cut & Paste
だから間違いようがないんですけどね。
私はコンパイラが発見できるバグは怖くないと思ってるので、コンパイル時エラーはあまり気にして
ません。コンパイラが発見できないロジックミスの方は怖いので、assert() 埋めたり関数単体のテス
トは綿密にやります。
コードの行数を聞いたのは、この前呼んだ昔話(root から / へのメッセージ、だったかな?) が気に
なったからです。UNIX 黎明期の頃は CPU 利用時間で課金されていて、何度もコンパイルすると
- 金の無駄遣い
と言われたそうで。いまだと、そんな当時の常識は捨ててもいいよなと思ってて、それが背景にあっ
たので聞いてみた次第。
0580ことりんぐ
NGNG0581デフォルトの名無しさん
NGNG聞きたいんですけど、2ch てどうなんでしょうか?
……という質問と同じぐらい漠然としていて、なんとも答えようがないと思われ。用途や比較対象などを
もう少し絞り込んでみては?
0582ことりんぐ
NGNG実際、基本的なことを使えるようになりたいと思っているんですが、どうしたらいいんでしょうか?
Cygwinがどのへんまで同じ物なのかわかりませんし・・・
0583デフォルトの名無しさん
NGNG2ちゃんはヲタの集まり・・・
危険すぎる・・・
0584デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi?bbs=unix&key=1003358904
ところで、なんでこっちスレに書き込んでるのか、
小一時間問い詰めさせてくれよ。
0585デフォルトの名無しさん
NGNG(n行->m Byte)の変換テーブルを作ればいいかと。
別にindexファイルを作るのが吉。
作れないなら、起動時にcsvファイルを全部読んだりして、
テーブルを作る必要がある。
0586デフォルトの名無しさん
NGNGANSIの関数はつかっていいんだよな?
aaa.txtとbbb.txtをfopen()で開いて、aaa.txtの内容を読み込んでbbb.txtに書いていけば。
fopen()はファイルがなければ、勝手に作ってくれる。
0587577=588
NGNG>(n行->m Byte)の変換テーブルを作ればいいかと。
>別にindexファイルを作るのが吉。
ありがとうございます。
Perlとかだと何行目っちゅうデータが簡単に取れるんですが、indexファイルですか。
頑張ります。
>>586
ありがとうございます。msdosだと、copyコマンドで簡単にファイルの複製ができますよね。
だからANSIの関数であるかと思ったんですが、見つけられずに立往生しておりました。
助かりました。
ありがとうございました。
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590588
NGNG0591デフォルトの名無しさん
NGNGCygwinはカーネルがない
(Windowsの資源を流用。あえていえばcygwinのdllが)
0592__
NGNG"速い安い旨い"アルゴリズムを教えて下さい。
0593__
NGNG0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNGそれはアルゴリズムの問題じゃないと思う。
0596デフォルトの名無しさん
NGNGextern void foo(void)ってどう違うの?
またどう使い分けるの?
0597デフォルトの名無しさん
NGNG上は定義か宣言か、それだけじゃ区別つかない。
下は宣言。どこかに実体が定義されている、という宣言。
使い分けは、extern を書いたほうはヘッダにまとめる。くらいかな。
0598デフォルトの名無しさん
NGNGchar szHostName[256];
とか文字列を格納する変数名の頭に付く『sz』とは何の略なんでしょうか?
0599デフォルトの名無しさん
NGNGだっけ?
0600デフォルトの名無しさん
NGNGmmap、かなぁ。開くったって、同時に書き込みは出来ないわけだし。
>>598
Zero terminated String がどうこう、って話をその昔
聞いたことがありますが。
0601デフォルトの名無しさん
NGNGsz:string with zero terminated
'\0'で終了する文字列の略
0602デフォルトの名無しさん
NGNG「ハンガリアン記法」で検索してみるといいと思うよ。
0603598
NGNGみなさん、レスありがとうございました
0604デフォルトの名無しさん
NGNG宣言とかどうすればよいのでしょう。
教えてください。
0605デフォルトの名無しさん
NGNGC++ だけど、
int func(int n = 0){
return n;
}
とすれば、func() なら 0 が返るし、func(777) なら 777 が返る。
0606デフォルトの名無しさん
NGNGman stdarg
0607デフォルトの名無しさん
NGNGvoid f(int x, ...)
どうにかして引数の数を得なければいけないけど
(printfみたいな書式指定でも、個数を指定してもok)
0608デフォルトの名無しさん
NGNGman stdarg or varargs.h
0609604
NGNGヘッダの宣言のほうで
int func(int n = 0);
ソースのほうは
int func(int n)
{}
でいけました。
ありがとうございました。
0610604
NGNG0611デフォルトの名無しさん
NGNG....
0612デフォルトの名無しさん
NGNG0613名無しさん
NGNG入出力したり、演算したデータを書き込む操作をVBAの
他にもC/C++で処理してみたいのですが、参考になる
プログラムまたはサイトはありませんか?
因みにCのコンパイラはBorland社のフリーソフトです。
0615デフォルトの名無しさん
NGNG↓
クソヘッダが出来ました
↓
ヘッダ作るのヘッダクソやなあ
学校の宿題で「C言語イレギュラーを考えて来い」とのお達し。
これでいきたいと思います。
0616デフォルトの名無しさん
NGNGググールいって
csv open close #include
で検索するのはどうか
0617デフォルトの名無しさん
NGNGstaticで宣言されてないなら、Cの関数は外部リンケージをもつから
どっちでもいっしょ。お好きなほうをどうぞ。
0618デフォルトの名無しさん
NGNGすいません。下のソースをコンパイルするとエラーが出ます。
なんででしょうか。教えて下さい。。。。
#include <stdio.h>
void nfunc(char *s){
char k = *(s);
*(s) = *(s+1);
*(s+1) = k;
return;
}
main()
{
//int i;←ここだとOK。
char x[7] ="tinnpo";
nfunc(x);
int i;//←ここだとだめ。
for (i=0;i<50;i++){
printf("%s",x);
}
}
0619デフォルトの名無しさん
NGNG変数はブロックの先頭でしか宣言できません。何故かと問われても、そういう決まりですとしか。
0620デフォルトの名無しさん
NGNGたとえば変数aにhogehogeと入力したとき
input:input:input:
とループしてしまいます
これをループしないようにするには
どうしたらよいのでしょうか?
int a;
while(1){
printf("Input:");
a=getchar();
if(a=='1'){
break;
}
}
0621デフォルトの名無しさん
NGNG即レスありがとうございます!
すると変数宣言を全部頭に固めとけってことですね。
0622デフォルトの名無しさん
NGNGwhile(1){
って条件が常に真で無限ループですよね。
んで"hoge"!=1だから抜けないんじゃ。。。。
0623デフォルトの名無しさん
NGNGどうしてループするのかわからないならここで訊く前にK&Rを死ぬほど読め。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGバッファがたまっていると、バッファを吐き出すまで、コンソール
入力が無くても値を返してきます(自動的に関数が終了してしまう)
多分、>620の関数だと、文字列数+1の「input:」を画面に
出力されるのではないでしょうか?
多分と思われる正解は
#include <stdio.h>
#include <string.h>
main(){
char buf[BUFSIZ];
while(1){
printf("Input:");
gets(buf);
if( strcmp( buf, "end" ) == 0 ){
break;
}
}
}
こうかな?
0626620
NGNGレスありがとうございます
質問の仕方がわるかったみたいです
わざとhogeとか入力して
ループするようにしたとき
ループするのが1回ではなくて
input:input:
と複数回ループしてしまうのは
どうしてですか?
0627デフォルトの名無しさん
NGNGゼロからなのですが、まずC言語とやらを学ぶのがいいんですか?
教えてください。
0629デフォルトの名無しさん
NGNGなんで1回しかループしないと思うのか。
どうしてループするのかわからないならK&Rを死ぬほど読め。
0630デフォルトの名無しさん
NGNGint main(void)
{
int sintyou;
int taijyuu;
double meter_sintyou;
double bmi;
printf("身長入れてください>");
scanf("%d,&sintyou");
printf("体重を入れてください>");
scanf("%d,&taijyuu");
meter_sintyou=/100.0;
bmi=taijyuu/(meter_sintyou*meter_taijyuu);
printf("あなたのBMI指数は%fです\n",bmi);
printf("判定:")
if(bmi<18.5){
printf("やせすぎだYO\n");
}else if(bmi<25){
printf("標準体重\n");
}else if(bmi<30){
printf("ちょっと肥満\n");
}else{
printf("デブ\n");
}
return 0;
}
なんか完璧なのにエラーがでるのだけど、どう書き換えたらいいかな?修正してください
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGなんてネタだな。
0634デフォルトの名無しさん
NGNG結果がおかしいとか以前に、これじゃコンパイル通らないぞ。
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG正解も書いてくれませんか?間違えと見比べるので。お願いします
0639遭難中
NGNGstruct bodyStr readbody(int i){
struct bodyStr body;
int t;
scanf("%s%s%s%s%s%s%s%s%s%s%s",
body.size.height,body.size.neck,body.size.arm,body.size.waist,body.size.inseam,
body.color.hair,body.color.eyes,body.color.skin,body.shape,body.age,body.sex);
temp.number=(t+1 ? ++i : 0);
return body ;
}
なんですが、プログラムがここにかかると止まります。
原因はなんでしょうか?
もしかして、ここが原因ではない?
0640遭難中
NGNGではなく
body.a=(t+1 ? ++i : 0);
の書き間違えでした。
でもプログラムは止まります。
0641デフォルトの名無しさん
NGNGbody.size.heightとか、scanfに渡してる変数は、char*になってるか?
数値型だと、動かんよ。
つか、scanfをこんな使い方したら、正しく動いても、ミスらないで入力
するのは至難のワザ。
(リダイレクトで入力すんのか?)
0642デフォルトの名無しさん
NGNGあと
scanf("%s %s %s %s %s %s %s %s %s %s %s",
%s の間にスペース入れないと、ダメっぽい。
0643デフォルトの名無しさん
NGNG関数内に出てくる t が初期化されてないけど大丈夫?
何が入ってるか分からないよ。
0644遭難中
NGNGプログラム全部のせて指摘していただきたいのですが、そうしたら、丸投げになってしまうし、
どうすれば〜(泣)
0645遭難中
NGNG0646デフォルトの名無しさん
NGNGですか?%sはNULLまでを表示する型指定なので、もし数値を表示したいのであれば、
%dで書かなきゃランタイムエラーでますぜ。
0647646
NGNG0648遭難中
NGNG0649643
NGNGmain()の最初でいきなりiが初期化されてないよー。
初期化してない変数は0が入るのだと勘違いしてるのかも知れないけど、
関数内で定義した変数の初期値は「不定」だからね。
0が入ってるかも知れないし-1000かも知れないし256かも知れない。
0650遭難中
NGNGしかし結果はかわらず・・・。
0651646
NGNG現在確認中
0652遭難中
NGNGちな次のようなプログラムを作れ。
(1)洋服用身体データ構造体を定義する。タグ名をbodyStrとする。
識別番号
サイズ: 身長, 首回り, 腕の長さ, 胴回り, 足の長さ
色 : 髪, 目, 肌
体型 :値を(太め,標準,細め)の3種類とする。
年齢
性別
識別番号以外のデータは文字列に入れる。文字配列のサイズは(データを見て)適当に決
める。
(2)その構造体の配列を用意する。配列のサイズは全部のデータが収容出来るだけとする
。
(3)データを一人分読む関数readBodyとデータを一人分書くwriteBodyを書く。readBodyは
bodyStr
構造体を戻し,writeBodybodyStr構造体を引数に取るものとする。 みに今回のこの問題は
0653643
NGNG未初期化ポインタをdo {} while()の終了条件の中で参照してるから、
readbodu()から正しく戻ってきてもここで死にますな。
0654遭難中
NGNGどうも実行がうまくいかなくて・・・。
0655遭難中
NGNGありがとうございます。
0656遭難中
NGNGdo{
body[i]=readbody(num);
}while(body[i++].a);
if(argc-1){
writebody(body[(argv[1])-1]);}
else
for(j=0; j<i-1; j++)
writebody(body[j]);
指摘個所をこのように変えてみました。
dataを破棄しました。これを実行したら、PC自体がフリーズしてしまいました、
0657デフォルトの名無しさん
NGNG0658646
NGNGそれともファイルとかの外部入力なの?
0659遭難中
NGNGそれ用のファイルは
http://popup.tok2.com/home/tnao/body.dat.txt
です。
コマンド行に番号が指定されていれば、その識別番号のデータを出力するようにして、
なにも指定がなかったら全部のデータを出力するようにします。
a.out 3 <body.dat
または
a.out <body.dat
と入力するんです。
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG無限ループかつ data[i] によってデータ破壊されてると思われ。
0662遭難中
NGNG改善策を教えていただきたいのですが…
0663遭難中
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGこれ、処理を分解して、もっと分かりやすくしようよ。
0666デフォルトの名無しさん
NGNG>writebody(body[(argv[1])-1]);}
writebody(body[atoi(argv[1])-1]);}
# だんだんlisp化してきてるな...
# > body[i]=readbody(num); は絶対に俺には思いつかん...
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGできればLinxu用のシンプルなやつお願いします。
SubjectとBodyがあればそれだけで十分です。
実用性と勉強を兼ねて吟味したいのです。
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNGUCB Mail とか MH のソース読めよ。
仕事として依頼するなら最低で 0.5 人月要求するが?
0671デフォルトの名無しさん
NGNG0672遭難中
NGNG回避の方法はどうしたらいいんでしょう?
0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNGそんなに複雑なものでなくていいのです。
例えば100行のブラウザのような本当に基本的なものでよかったのですが・・・・
とりあえずありがとうございました。おさがわせいたしました。
0675デフォルトの名無しさん
NGNGgets(s);
なのに、なんで1文字を入力するときは
s=getchar();
なんですか?
getchar(s);
ではだめなんですか?
0676デフォルトの名無しさん
NGNGそもそもこれがうまく動かないだろう・・・
関数struct bodyStr readbody(int i)の最後で
return body;
とやっても、関数struct bodyStr readbody(int i)内の
struct bodyStr body;
のアドレスがdata[i]に代入されるだけで、このアドレスの指す
データは関数struct bodyStr readbody(int i)が終了するとともに
消滅してしまうからね
0677デフォルトの名無しさん
NGNGアンタにはまだ無理だ>>遭難中
0678遭難中
NGNGコンパイルエラーはこうです。
data[i]=readbody(num);
のまわりはすべてdataからbodyにしました
0679遭難中
NGNGは消しました
0680デフォルトの名無しさん
NGNGコンソールメールクライアントなんてもの、Unixでは何十年も前から
沢山作られて使われてて、大抵のはソースも公開されてるよ。
それを読めばいいよって言ってるの。
0681遭難中
NGNG0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNGはっきりいって、ここじゃ迷惑だ>>遭難中
0684遭難中
NGNGあいがとうございました
0685646
NGNGhttp://www2.makani.to/akutoku/upload/dat/1004969013.txt
0686646
NGNG0687646
NGNG0688デフォルトの名無しさん
NGNGどーしてもwhileにしたいときには
やはりカウンター作ってそれ見させて制御しますが
こーいうのは効率悪いのですか。
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG今時のコンパイラは正しく明快に書かれたコードを最適化ができる。
実際に動かしてみて、もしくは計算量から推測して、遅いと分かったときに
手を下せばよい。
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG0693sage
NGNG最適化なんてそんなもんだ。
0694遭難中
NGNG参考にさせてもらいます。
ありがとうございました。
0695デフォルトの名無しさん
NGNG使い方がさっぱりよ!
ディスティネーションの登録周りがさっぱりよ!
0696デフォルトの名無しさん
NGNGこんにちは♪わたしは、岩手に住む11歳の小五です!!
わたしは、『どうぶつの森』をクリスマスに買ってもらいました♪帰ってくるなり、
さっそく、やってみました。
1日中やってました(^^)
ともだちに、「新しいゲーム買ったよ〜〜」といったら、
「なになに??」ときかれたので、「どうぶつの森」だよ〜〜」と
いったら、いきなりでんわをきって、数分後、家にきました。
いまでは、8人くらいに、『どうぶつの森』すすめましたよ♪ちなみに、
わたしは、「ももこ」がだ〜〜いすきで、PCの、壁紙も、ももこちゃんです♪
クリスマス。(゚ー゚*)...
0697デフォルトの名無しさん
NGNG漏れは苦利酢魔酢にQ�Vのネットゲー買ってもらうんだー♪(自分に)
帰ったらすぐやるんだー♪(一人で)
それ用のビデオカードも買ったんだよ♪(通販で)
あぁ〜苦利酢魔酢が楽しみ♪(やる時間はない)
0698デフォルトの名無しさん
NGNGコピペマジウザイ
0699こぴぺ
NGNG0700デフォルトの名無しさん
NGNG一通りサンプルなんかを打ち込んで、何となく分かった気になってる?のですが
その先に進めないでいるっす、sedやperlの資産(主にテキストファイルの処理)を移植したいと思ってるものの
取り付く島も無い感じです。皆さんはどんなソースを読んで勉強されたんでしょうか
今はread.cgiのソースやstdioを見ているんですが、まだ敷居が高い感じです
スクリプトの時は、本に載ってる内容≒自分のやりたい事、だったんです。
0701デフォルトの名無しさん
NGNG逆ならともかくねぇ。
0702デフォルトの名無しさん
NGNG「ソフトウェア作法」読め。お前がまちがっていることがわかる。
0703700
NGNGよく分かるッス、力不足でGUIは全く分からないんで、こっちの方が入りやすい
かなと思っただけなんです。
先に関数を沢山書かなきゃならないと思うんですが、そのとっかかりが・・・
0704デフォルトの名無しさん
NGNGhttp://www.vector.co.jp/soft/dos/prog/se011510.html
みたいな正規表現ライブラリを使うべし。
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG0707700
NGNGえっと、生産性はよろしく無いと言う事ですよね?
良書の紹介どもッス、(本は学割が無いのがツライ。。)
>>704
おお!凄い、早速使ってみる事にします。
>>705、706 スンマソン(´д`;)
取り合えずcpとか易しげなコマンドでもパクって勉強するっす
0708デフォルトの名無しさん
NGNGCをそれなりにこなせるようになるには、何ヶ月かかります?
ちなみにHTMLは1ヶ月かかりました
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGダメな奴は一生掛かってもダメ これホント
0711デフォルトの名無しさん
NGNGトーシロなので、300時間とみておこう
0712デフォルトの名無しさん
NGNGhttp://www.hi-ho.ne.jp/babaq/bregexp.html
0713デフォルトの名無しさん
NGNG5日で言語のディティールつかんで、
2日でマニュアルの引き方を覚えられそう
0714デフォルトの名無しさん
NGNGがんばってよっていうけど、なかなか…
HTMLとは応用のレベルが違うような…
0715ゲイ2
NGNGCreateFontIndirect(&lf)
LOGFONT lf;
の使い方教えてください。
0716デフォルトの名無しさん
NGNG日本人が「僕日本語しゃべれますよ!」って言いふらして歩いているようで。
0717デフォルトの名無しさん
NGNGプログラミングを独習するには10年かかる
http://www1.neweb.ne.jp/wa/yamdas/column/technique/21-daysj.html
とりあえず、煽り文句を引用しとく
> それは、何かの役に立つかもしれない。でも、それであなたの人生は変わらないし、
> プログラマーとしての本当の技能総体だってそうだ。24時間や数日や数ヶ月じゃあね。
0718デフォルトの名無しさん
NGNGを
int foo; // に代入して・・・
if (foo == 1000){printf("変換出来ました!\n");}
どうすれば良いんでしょう (死
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG808464433とか言ってるし、、、
sscanfでやってみます、有難う御座いました。
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGchar hoge[] = "1000";
int foo = atoi(hoge);
if (foo == 1000){printf("変換出来ました!\n");}
0725デフォルトの名無しさん
NGNGちと、スレ違いだな。
0726デフォルトの名無しさん
NGNG出来ました、せんぱい!! (・∀・)!謝謝
(const char *nptr) は配列のサイズはいらなかったのかぁ・・
先にリファレンス引けるようにならないと、標準関数も使えないにゃ〜
型無し厨房の苦難は続く・・・・
0727デフォルトの名無しさん
NGNG何えらそうにいってんだか…(^O^)ぷぷ
0728勉強始めます
NGNG少しずつC言語を勉強していきたいのですが
何か簡単な問題から出して頂けませんか?
僕のレベルは、これから構造体やらファイル処理やらを
習得しようかというレベルです。
0729ビル・ジョブス
NGNGセミコロンも無く、宣言の順番も変・・・感覚的に気持ち悪いので教えたくない・・・
といいたいがヒントをあげよう・・・MSDN ONLINEへ行く。
そこで理解できなければあきらめろ。
ちなみに、なぜ、CreateFontIndirect()なの?
まさか、今時それしか実装されてないWindowsCE 2.1Xじゃないよね?
CreateFont()は知ってるか?
0730デフォルトの名無しさん
NGNGK&Rよんで問題やれ
0731デフォルトの名無しさん
NGNG構造体とファイル処理を利用してOSを作成せよ、
但し関数はmainのみとする。
0732ビル・ジョブス
NGNGおまえは書けるのか?解答教えてくれよ。
0733デフォルトの名無しさん
NGNG汎用OSのソースだ。くれてやる。
足りないものは自分で追加できるカスタマイズ性が売りだ。
void main(void){
while(1){
/*ユーザータスクはここに追加する*/
task_A();
task_B();
task_C();
task_D();
}}
0734デフォルトの名無しさん
NGNGファイル処理を利用、ったって、誰がファイルという抽象化を
サポートすんだよ。
0735デフォルトの名無しさん
NGNG0736名無しさん
NGNGいるのか答えなさい。(25)
(1) pwd
(2) mkdir word
(3) cp sample.doc word
(4) cd word
(5) ls
すみません、誰か教えてください。UNIXです。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG{
char buf[256];
char res[256];
int iread;
printf("-->");
iread = read(0,buf,256);
strcpy(res,(char* )crypt("SA",buf));
printf("crypt passwd:%s\n",buf);
}
というテスト用の深い意味のないプログラムがあります。
ここで問題が生じました。
低水準IOと高水準IOと併用しているからだと思いますが結果が変です。
どうしても低水準と高水準IOと併用したい場合にはどうすればいいのでしょうか?
fflushのような関数を使えばよいのでしょうか?
お願いします。
0739デフォルトの名無しさん
NGNGSetLocalTime関数を使用しています
Helpを見るとSE_SYSTEMTIME_NAME 特権を有効にしなければならず、
この特権を割り当てるには、AdjustTokenPrivileges 関数を使いますが、
AdjustTokenPrivilegesのパラメータの意味がまったくわかりません
教えていただくか、別の方法を教えてください
0740デフォルトの名無しさん
NGNG低水準IOと高水準IOの併用が原因じゃないのでは?
何がやりたいのかわかりませんが。
0741デフォルトの名無しさん
NGNGスレ違い。まずMSDNを読んでそれでもわからなかったらAPI相談室で訊け。
0742デフォルトの名無しさん
NGNGAdjustTokenPrivilegesで検索かけたら、サンプルコードが
たくさん見つかりました。
そこらへん見て、なんとかならない?
0743デフォルトの名無しさん
NGNGそれが原因だと思います。では両者を具体的に併用するにはどうしたらいいのでしょうか?
アドバイスよろしくお願いします。
0744デフォルトの名無しさん
NGNG管理者アカウントでログインすれば、普通に時刻変更できると思うよ。要するに一般ユーザーにはシステム時刻を変更する権限がないんでは。
0745デフォルトの名無しさん
NGNGそれが原因じゃないと思います。自分のコードを見直してみては。
0746デフォルトの名無しさん
NGNG標準出力をバッファリングしないようにする。
どーせテストプログラムなんだから速度は気にしてないだろ?
man setbuf, setvbuf
0747デフォルトの名無しさん
NGNG結果が変というけどどう変なのか書いてないからねえ。
0748デフォルトの名無しさん
NGNGそういうのは業務でバカと組まされたときに良くある話。
そのバカを非難しててもしょうがないのでポワロ並の
推理力を駆使して問題解決に当たらなければね。
0749デフォルトの名無しさん
NGNGread()で読み込んだデータは最後に'\0'を付けてくれたりしないので、
そのままcrypt()とかprintf()とかに渡したらいかんよ。
0750デフォルトの名無しさん
NGNG結果を使ってないので意味がないけど。
0751デフォルトの名無しさん
NGNG> そういうのは業務でバカと組まされたときに良くある話。
まぁねぇ。
問題を報告しろ、だけだとまともな報告が上がってこないので、私は最低でも次の4点を
箇条書きで出してもらってる。
1. バグの原因となっていると推測しているコード(手で書き写さずに、Cut & Paste すること)
2. 与えた入力
3. あなたは、本来はどのように動作することを想定しているのか?
4. 実際には、どのように動作してしまっているのか?
0752デフォルトの名無しさん
NGNG2. 正しい入力
3. 仕様どうりに動いてくれる事
4. 時々「ピー」ってなって止まります
こんなのが出てこない?
0753デフォルトの名無しさん
NGNGたまに(苦笑)
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNGで、func内である値を保持しておきたいのでfuncで
static double hoge;と書いてhogeを定義してます。
で、
main文を繰り返してfunc内で
func(){
printf("before %f\n",hoge);
{処理}
printf("after %f\n",hoge);
}
としてhogeの値を見てみると、
before 1.1
after 1.1
before 1.1
after 1.1
・・・
と続くのですが、突然
before 1.1
after 1.1
before 1000.11
after 1000.11
みたいな感じで、hogeの値が変わってしまうのです。
こういう値がかわっちゃう現象は起こりうることなんでしょうか。
もしそうならその対処法みたいなものはあるのでしょうか。
0757デフォルトの名無しさん
NGNG希望としては値はずっと同じ値であって欲しいのです。
メイン文から、関数を呼び出したら値が変わってた、
って感じなのですが。
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG{処理}のところに、突然に値を変えるコードが書かれてるんじゃないの?
0760759
NGNG例えば、配列で、その大きさを超えて書き込んだりすると、関係ない変数が書き換わったりします。
0761デフォルトの名無しさん
NGNGとりあえず{処理}を見ないことには原因は分からんと思うが。
0762761
NGNG0763757
NGNGええと
main内で
for(i=0;i<30000;i++){
func(i)
}
って感じで繰り返しをしてるのですが、
func内の処理の前後でhogeの値を見ても値は変わっていないのです。
func(){
printf("before %f\n",hoge);
{処理}
printf("after %f\n",hoge);
}
ってやって確認しました。だから処理内でおかしなことが
起きていないと判断しているのですが。
とりあえずですが760さんのおっしゃるように
他の部分で配列の値がおかしくなってないかとか確認してみます。
0764デフォルトの名無しさん
NGNG質問!
func()内で定義している変数hogeを
どうやってmainでhogeの値を確認してるの?
ちなみに以下のソースはコンパイルできませんでした。
void func(void) { static double hoge = 1.1; }
int main(void) { printf("%lf\n", hoge); return 0; }
0765デフォルトの名無しさん
NGNGmainの中でhogeを確認するなんてどこにも書いてないのでは?
funcの中の最初と最後でprintfしてるだけじゃん。
0766764
NGNGしかしそうなると
>>756
> func(){
> printf("before %f\n",hoge);
> {処理}
> printf("after %f\n",hoge);
> }
> としてhogeの値を見てみると、
(中略)
> みたいな感じで、hogeの値が変わってしまうのです。
なのに
>>763
> func内の処理の前後でhogeの値を見ても値は変わっていないのです。
> func(){
> printf("before %f\n",hoge);
> {処理}
> printf("after %f\n",hoge);
> }
> ってやって確認しました。だから処理内でおかしなことが
> 起きていないと判断しているのですが。
756と763で矛盾しているような気がする...
# 良く読んでないからか...
0767デフォルトの名無しさん
NGNG矛盾してない。
0768デフォルトの名無しさん
NGNG> func内の処理の前後でhogeの値を見ても値は変わっていないのです。
この処理とは{処理}のこと?それともfunc関数全体の処理?
0769デフォルトの名無しさん
NGNG>>759 -> >>761 -> >>763
0770デフォルトの名無しさん
NGNGしてはどうだろ。
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGどこかにソースをあげるとか…
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNGfunc関数内の{処理}です
>>770
やってみました。
が、mainのroopのカウンタを出して場所を特定しても
そこで何が行われているのか全くわからないのです。
メイン文のifに入るときとか、そういう瞬間なら
なんとなく原因もつかめそうですが、前のカウントの時と
メイン文の処理も同じなのです。
ちなみにメイン文のi値の値が、hogeに入ってしまっています。
(どうでもいいかもしれませんが)
>>771
ありませんでした。
0775757
NGNGうーん。基本的に聞きたかったことが、
func内のstatic double hogeっていう変数値が
メインの
for(i){
func();
}
ループのi番目に呼んだfuncの最後の部分での値と
i+1番目に呼んだfuncの最初の部分で値が違うけれど
こういうことがあるのか、ということだったのです。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNGもう面倒いから、全ソース出せ
0779757
NGNG20400 2.047869
20401 2.051167
20402 2.045735
20403 2.045802
20404 2.045622
20405 2040.409722
20406 2040.409265
20407 2040.409731
20408 2040.414136
20409 2040.410585
こんな感じです。
左がメイン文のi 右がhoge
20404をさかいに右の値がどかんと大きくなってるのがダメなとこです。
それ以前のhogeの値がばらばらしているのはぜんぜん問題なしです。
ありません。>>777
0780757
NGNGint flug;
double ave_new_interval,new_interval;
static double p_next_os_time,p_last_os_time,p_last_ms_os_time;
if(time_no==0){
hogehoge;
}else{
if(time_s>=p_next_os_time){
new_interval=interval_1(ave_new_interval);
p_next_os_time=p_last_ms_os_time+new_interval;
p_last_os_time=p[time_no];
flug=1;
}else{/*次の発火前なら*/
if(((time_s<start_time)&&(time_s<0.128*5))||((start_time<time_s)&&(time_s<end_time)&&(time_s<t1*5+start_time))||((end_time<time_s)&&(time_s<t1*5+end_time))){
new_interval=interval_2(ave_new_interval);
p_next_os_time=p_last_ms_os_time+new_interval;
flug=0;
if(time_s>=p_next_os_time){
flug=1;
p_last_ms_os_time=time_s;
new_interval=interval3(ave_new_interval);
p_next_os_time=p_last_ms_os_time+new_interval;
p_last_os_time=p[time_no];
}
}else{
p_next_os_time=p_next_os_time;
flug=0;
}
}
}
return(flug);
}
-----------------------
int main(){
hogehoge;
for(time_no=0;time_no<N;time_no++){
time=time_no*0.1;
time_s=time/1000;
alpha[time_no]=flug(time_no);
}
}
こんな感じです。mainとfuncは別のファイルで、
ここで定義してない変数とかは全部定義してあります。
でコンパイルしてとおります。
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNG言って見せろ。
0783デフォルトの名無しさん
NGNG自分でやらなくても、問題の変数に対してハードウェアブレークポイントを設定して、変数が変更された
瞬間にデバッガに落とせば良いような気がするが。(プロセッサがサポートしてれば)
0784757
NGNGdouble p[30000];
double interval1(double aveinterval);
interval2,3も同じです。
0785デフォルトの名無しさん
NGNGあとmainはfuncを呼んでないように見えるが。
alphaがいくつ確保してあるかも知りたい。
0786勉強始めます
NGNG>>730さん
K&Rって何ですか?
すいません。
>>732さん
ごめんなさい
少し難しそうです・・・・
もう少し簡単な問題からって言うと我侭ですかね・・・
0787デフォルトの名無しさん
NGNGhogehoge;
って、なんだこれ。コンパイル通るのか?これで
0788デフォルトの名無しさん
NGNG>関数内のstatic 定義の変数が、その関数以外の処理で書きかわるか?
バグならありえます。
プログラムは、関数内のstatic 定義の変数をアクセスしているのでは
なく、その前のグローバルアドレスの変数(配列)をアクセスしているが、
あとのデータを上書きする場合があります。
0789デフォルトの名無しさん
NGNGすいません。
static double p_next_os_timeのp_next_os_timeが
hogeです。
flugはfuncの間違いです。
alpha[]は30000個用意しました。
>>787
hogehogeは別に同と言う事は無い部分なので
書きませんでした。
0790デフォルトの名無しさん
NGNGなるほど。そういう場合もあるということですね。
0792デフォルトの名無しさん
NGNGそれかinterval_3が変な値返してる。
勝手に値が変わってるんじゃなくて、足し算で変わってると考えるのが妥当だよね。
time_sはグローバル変数だよね?
0793デフォルトの名無しさん
NGNGこれ実際書いてるヤツをコピペしたのかな。
だったら変数宣言した所に少しでも注釈入れた方がいいんじゃない?
>>792の通りなら、多分自分でも変数を把握できてないと思うよ。
このスレに出す為というわけじゃなくて、これから先
似たような失敗を避ける為にも。
0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNGどうと言う事は無いと自分が思っている部分にこそバグは潜んでいるものだ
0796デフォルトの名無しさん
NGNGtime_no == 0 のとき、funcって戻り値は何返すのさ。
0797デフォルトの名無しさん
NGNGC/C++で入出力や演算処理したいのですが、参考に
なるプログラムやサイトなどを教えてください。
(例えば、列(A,B,C、・・・)の選択の方法など)
0798デフォルトの名無しさん
NGNGExcelを操作したいということ?
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG目的を述べよ
0801799
NGNGうにっくすは初心者です。/devにあるファイルをいじればいいのかなぁ?
直接レジスタをいじったりするにはどうすればいいんですか?
インラインアセンブラって使えるんですか?
0802デフォルトの名無しさん
NGNG…と言っても多分gccだろうけど。asm()が使えるよ。文法はinfo gcc参照。
SVGA BIOSを呼べるかどうかは知らないけど、少なくともインラインアセンブラ
でちょろっとint ほげほげとか書いた程度では済まないのは間違いない。
0803デフォルトの名無しさん
NGNGCSVファイル(但し、Excelで作成されたもの)
に複数の列にわたって大量のデータが格納されており、
これらを処理したいのですが、普通に入出力操作
(fopenなど)をしてもA列しか扱えません。
0804デフォルトの名無しさん
NGNG普通って、どういうふうにしてみましたか。
0805デフォルトの名無しさん
NGNGfgets()で一行ずつ取り出して、行の内容を解析し、
目的の列を探して処理するのが普通かな。
ファイルの内容を変更したいのならば、元ファイルを直接更新するのではなくて
一旦別ファイルへ処理結果を書き出して、元ファイルを上書きするなりするのが
一番楽。
0806805
NGNGことも多い。
0807デフォルトの名無しさん
NGNG学校の課題でifを使って足し算と引き算ができるモノを作れといわれて作ったのですが、
コンパイルは通りますが、実行すると「構文エラーです」と出てしまいますが、
VC++6上での実行は通ります。
何故にclコマンドでは通らないのか教えていただけませんか?
ちなみに、gccではなく、VC++に付属のvcvars32でclコマンドでコンパイルです。
#include<stdio.h>
main()
{
int a=0;
printf("足し算と引き算をするプログラム\n");
printf("足し算1〜5、引き算6以上\n");
scanf("%d",&a);
if(a<5){
int b=0,c=0,d=0;
printf("足し算を行います\n好きな数字を入力してください\n");
scanf("%d",&b);
printf("先ほど入力した数字に幾つ足しますか?\n");
scanf("%d",&c);
d=b+c;
printf("%d+%d=%d",b,c,d);
}
else{
int e=0,f=0,g=0;
printf("引き算を行います\n好きな数字を入力してください\n");
scanf("%d",&e);
printf("先ほど入力した数字に幾つ足しますか?\n");
scanf("%d",&f);
g=e-f;
printf("%d-%d=%d",e,f,g);
}
}
0808
NGNG空白いれろや。見づらくてしょうがない。
行の先頭にある半角空白は無効化されるんで、全角ではじめること。
だいたいお前には友達ってものがいないのかよ。こんなとこで
質問しやがってよ。
0809デフォルトの名無しさん
NGNGあとcallback関数をメンバ関数として作りたいのですが
可能ですか?
0810
NGNGせめて何行目でエラーがでるのかぐらい書け!!
だいたい clコマンド直接使ってる奴なんてお前ぐらいだぞ。
VisualStudioからプロジェクト作ってコンパイルしろよ!
0811807
NGNG今自宅からなので周りに友達が居ません。
>>810
エラーは全く出ません。
コンパイルはちゃんと通ります。
でも、実行すると構文エラーと出てしまいます。
VC++でプロジェクト作って実行すると問題なく通ります。
gccは実行できる環境が現在無いために不明。
0812デフォルトの名無しさん
NGNG> printf("足し算1〜5、引き算6以上\n");
って書いてあるけど、このソースだと5を入力すると引き算になっちゃうよ。
重箱の隅につきsage
0813デフォルトの名無しさん
NGNGVCなら返り血を明示的に書かなければ勝手にintになるので
多分間違っているだろうが、main()の前にintかvoidと書いてみたらどうだ。
0814807
NGNGどう考えても私にはわかりませんので、
学校にいって教授に聞いてみます。
お騒がせしました。
0815
NGNGそれでだめならフリーのコンパイラ使え。LSIC86とかな。
LSIC86はただのCだから変数宣言を最初になおせよ。
C++使いたいならbolandのやつ使え。
0816デフォルトの名無しさん
NGNG> SVGAのBIOSを呼び出したいというだけです。
PC-UnixでSVGA BIOSなんて動かんよ。
SVGAlibでも使え。
0817デフォルトの名無しさん
NGNGその質問の答えは、何のためにcallback関数を作りたいのか
を聞いてからだなー。
なにすんの?
0818デフォルトの名無しさん
NGNG実行時に構文エラーって良く分からんな。
0819デフォルトの名無しさん
NGNG> コンパイルはちゃんと通ります。
> でも、実行すると構文エラーと出てしまいます。
エラーメッセージを Copy & Paste しましょう。
手元の VC6 で試してみたけど、コマンドラインからコンパイルできたし、実行もできたぞ。
0820デフォルトの名無しさん
NGNGレスありがとうございます。
例えば以下のように、
A B C
1 1.0 2.0 3.0
と格納されているとき、fgets()を使って行ごとに読み、
別のテキストファイルに入力すると、
1.0 2.0 3.0
と書き込まれます。この後、例えばB列のデータのみを
取り出すとか、処理した結果を別のExcelファイルのC列
に書き込むなどの方法を教えてください。
0821デフォルトの名無しさん
NGNGまず「〜などの方法」ではなく、必要な処理をリストアップすべきだな。
ひとつの関数でいろんなことをまとめてやろうとせずに、単純な処理を
行う関数を部品として作成して。それらを組み合わせて最終的な目的が
果たせるようにする。
たとえば、B列のデータを取り出すためには、まず指定した列のデータを
取得する関数を作らなけりゃならない・・・・、
って、この調子で説明したら先が長くなるなぁ・・・
まず最終的に実現したい機能をリストアップ。
それからだ。
0822デフォルトの名無しさん
NGNG0823821
NGNG文字列系の標準ライブラリなんて最近つかってなかったんで、はなから
頭に無かった。
配列とポインタとstrstr()が理解できれば、B列取り出すのは難しくないはず。
0824デフォルトの名無しさん
NGNGまずAWKでやってみて、それで荷が勝ちすぎるようならPerlを使ってみれば。
Cの練習なのでなければ、わざわざCを使って不自由な思いをする必要はない。
0825デフォルトの名無しさん
NGNGただあんまり出来はよくなかった気がする。
0826デフォルトの名無しさん
NGNGsscanfでいいやん。
0827デフォルトの名無しさん
NGNG0828デフォルトの名無しさん
NGNGunsigned b;
signed c;
a = -1;
b = a;
c = b;
とやった場合、c==aとなることは保証されてる?
0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNGVCだったら
\Program Files\Microsoft Visual Studio\VC98\CRT
に入ってるよ。
他の環境は知らん。
0831デフォルトの名無しさん
NGNGサンクス。
入門書を読み終わった後の段階として、
標準ライブラリのソースコードを読もうかと思って。
0832デフォルトの名無しさん
NGNG一言逝っとくと、VCのランタイムのソースは汚いよ。
0833デフォルトの名無しさん
NGNGSetLocalTime関数を使用しています
Helpを見るとSE_SYSTEMTIME_NAME 特権を有効にしなければならず、
この特権を割り当てるには、AdjustTokenPrivileges 関数を使いますが、
AdjustTokenPrivilegesのパラメータの意味がまったくわかりません
教えていただくか、別の方法を教えてください
0834デフォルトの名無しさん
NGNG0835744
NGNG739で同じ質問しただろ。
答えてやってるのに見もせずに同じ質問するな。
仕方ないからもっかい書いてやるけど、
管理者アカウントでログインすれば設定できるはずだ。
要するに一般ユーザーにはシステム時刻を変更する権限がないんだよ。
0836744
NGNGあぁ、それから。
システム時刻変更の特権を割り当てるには云々って書いてるけど、
ユーザーの権限を変更できるのは管理者だけなんで。
一般ユーザーのログインでやっても失敗するから、そこんとこお間違いなく。
0837デフォルトの名無しさん
NGNG行うプログラムが知りたいです。誰か教えてください。全然わかんないです・・・
0838デフォルトの名無しさん
NGNG解かるなら、試しにここに簡単でいいので書いてみてください。
0839ドキュンD1
NGNGmain()
{
double a,b,c,d,e;
int i;
scanf("%lf %lf %lf",&a,&b,&c);
d=((a-b)/c)+1.0;
i=d;
printf("%lf %d \n",d,i);
}
このプログラムで
2.0 1.7 0.1 と入力すると4.000000と4が出力されるのですが、
1.9 1.6 0.1 と入力すると4.000000と3 となるのは何故なの?
0840デフォルトの名無しさん
NGNG後者の演算の結果は4よりわずかに小さいので、intの変数に代入する際に
切り捨てられて3になります。
正確に4.0にならないのは、浮動小数点の演算誤差のせい。
0841デフォルトの名無しさん
NGNGごめんなさい。選択整列法、挿入整列法、どちらもどんなものかわかりません・・・
0842デフォルトの名無しさん
NGNGじゃああきらめて留年しろ。
0843デフォルトの名無しさん
NGNG1.宿題で出すのだから授業で説明したか教科書に載っている
2.この板でも一週間に一度は誰かが尋ねるくらい FAQ なことなので、
google などで検索すれば概念、仕組みからソースコードまで手に入る。
3.宿題は宿題スレで訊ねれ
宿題見てやるよ
http://pc.2ch.net/test/read.cgi/tech/1003838158/
0844839
NGNGレスありがとうございます。
0845デフォルトの名無しさん
NGNGポインタの理解に苦しんでいるのですが、
char (*(**hoge[0])[1])
せんぱい方はこう言うのも簡単に脳内変換出来ちゃうんでしょうか
それともこんな宣言はあまりしない方がいいですか
0846デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
int i;
double d;
long l;
i = atoi(argv[1]);
l = atol(argv[2]);
d = atof(argv[3]);
printf("%d %ld %f",i,l,d);
return 0;
}
上のプログラムは、参考書に載っていたもの
ですが、コンパイルして実行すると強制終了されてしまいます。
本には『コマンドライン上で整数、long型の変数、浮動小数点数
を入力してください。すると、これらの値が画面に再度表示されます』
と、書いてあります。
どのように使うものなのでしょうか?
また、コマンドラインとは何か?といった事が
全然わからないので、それについて分かりやすく
説明されているページをご存知でしたら教えていただきたいです。
0847_
NGNG0848846
NGNGいろいろと、いじってみた結果
実行することができました。(と思います…)
MS−DOSプロンプトから実行する際に
スペースで区切って『1 2 3』と入力した上で実行
したらできました。気合と勘なので
まだ、何がなんだか理解していませんが…
でも、なんかわかりそうな気がしてきました。
いろいろやってみます。
0849846
NGNG別に 1 2 3 じゃなくってもできるんですね。
3つの値をわたさなければいけないということなのかな?
3つ未満の時は強制終了で、3つ以上の時は
実行されるけど反映されるのは最初の3つのみ…
また、こんがらがってきた…
0850デフォルトの名無しさん
NGNGhoge.exe 1 2 3
としたとき、argv[0]には"hoge.exe"(へのポインタ)が入っていて、
argv[1]には"1"が入ってる。で、コマンドラインの引数が足りないとき、
846ではargv[3]は、メモリ上の変なところを指してるんで
強制終了する(そもそもargv[3]なんてない)。
つーか、こんなサンプルが載ってる本なんて捨てちまえ。
0851デフォルトの名無しさん
NGNG#include<stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i=0;i<argc;i++) printf("%d:%s\n",i,arg[i]);
return 0;
}
WebでC言語入門とか検索したほうがよいと思われ。
0852851
NGNG× for(i=0;i<argc;i++) printf("%d:%s\n",i,arg[i]);
○ for(i=0;i<argc;i++) printf("%d:%s\n",i,argv[i]);
0853846
NGNG今、C言語入門ページ巡りを
しているところです。
なんか、何か1つわからないことがあって
それがわかれば、今まで疑問に思ってきたことが
理解できそうな…そんな感じです。今。
がんばって勉強します。
ちなみに、現在使用している参考書は『独習C』です。
0854デフォルトの名無しさん
NGNG>char (*(**hoge[0])[1])
コンパイラ通るの?
0856855
NGNG・・・・でいいんですか・・・・?
0857デフォルトの名無しさん
NGNG構造体のアドレスでなく値を代入していると
思うんだけど私が間違ってるのか?
*でもついていればアドレスという説明はわかるんだけど。
0858デフォルトの名無しさん
NGNG676が間違ってる。
0859デフォルトの名無しさん
NGNGたしかに。受けてる関数の引き血もintだしnumの宣言もint。
んで戻り値は〜構造体型。構造体丸投げは多少問題アリですが・・・
それにしても今更ですな。
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNGハァ?
0863はじめの二歩
NGNGとりあえず文法レベルは分かったつもりですが、
まだライブラリ等の知識はあまり無い、という段階です。
Cでの不定長文字列についての質問なのですが、文字列を加工して
返すような関数を作る時、普段はどうしていますか?
もちろんプログラムの目的によっても違うでしょうが、日常的
にはどうしているか、という話です。
1. strncat,snprintfのように、バッファのサイズを引数で
指定して、あふれた分は切り捨てる。
2. fgetsのように、バッファに収まらない時は次回の呼び出しの
ときに返す。
3. バッファは呼び出し先の関数でmalloc()で確保し、バッファへの
ポインタを返す。free()は呼び出し元が行う。
p=hoge();
if(p!=NULL){
puts(p);
free(p);
}
という感じで。
4. 専用の文字列ライブラリを使う。
5. GC(聞きかじりですが)を利用。
1.を除けば一番無駄が少ないのは3.だと思いますが、malloc()は
恐いとよく脅されるので、3.のようなプログラムの書き方でも
大丈夫なものなのか、質問してみたかったのです。
もっとも小心者はJavaでも使うのが正しいのかも知れませんが。
0864デフォルトの名無しさん
NGNGユーザの手入力とかそういう入力データ系は 3
かな。
2は、プログラムであふれたかどうかを判断して、処理を書かないといけないので
普通はつかいません。
4も、使うところでは使われています(qmailやdjbdnsで有名なdjbの人とかね)
5は、3や4を使う場合の応用編なんだけど、とりあえずは忘れていていいよ。
0865デフォルトの名無しさん
NGNGいちいち考える必要がなくなるし。
あと、WindowsAPIがらみとか、渡されたバッファが足りないときは
エラーを返す、ってパターンもあるね。
0866デフォルトの名無しさん
NGNG0867初心者
NGNG0868デフォルトの名無しさん
NGNG日本語すらまともに使えない奴にはどっちも無理。
0869デフォルトの名無しさん
NGNG文字列一回出すためだけにいっぱい書くの嫌ならC。
.exeファイルが作れなくても泣かないのならJava。
0870デフォルトの名無しさん
NGNGカルチャーショックを受けている漏れなのですが、最近のOSでは
自動変数というかスタックはどのくらい使ってもOKなんでしょうか?
Windows 2000やLinuxで開発する場合の目安(?)が有れば教えてください。
ファイル読み込みのバッファとして1MBぐらい豪気に使ってもいいのか、とか。
0871デフォルトの名無しさん
NGNG100Kを越えた時点でふつう、馬鹿かと思う。
0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG古典的なUNIXなら無限、というかユーザーリミットに
あたるまで。物理セグメントのないUNIXマシンが多かった。
freeやreturnで再利用されて合計値が下がるのでむしろ好ましい。
0874870
NGNG>871
数十KBぐらいなら、普通の組み方として許されますか?
あと、大きめの構造体を渡す時に参照渡しにするのは、
今でもやりますよね?
0875デフォルトの名無しさん
NGNGLinuxは古典的な配置のはず。
0876デフォルトの名無しさん
NGNGたぶん例えで言ってると思うんだけどツッコミ。
>ファイル読み込みのバッファとして1MBぐらい豪気に使ってもいいのか、とか。
今日びのOSはファイルをキャッシュするから
わざわざ大きなバッファを使うメリットはほぼゼロだと思う。
0877870
NGNGいや、本気で言ってました……。
1byteずつ読んでも一向に構わないんですね?
0878876
NGNG1 byteとかいう極小単位の場合は実装によると思います。
インラインやマクロで関数が実装されていれば実質的に
ポインタ操作と大して変わらないので。
常に非常に高速なアクセスが要求されるとか、作業に必要でないなら
最低限のバッファ(作業場)程度がいいんじゃないでしょうか。
私はそう考えているんですけども、、、。
0879デフォルトの名無しさん
NGNGすることがあるので注意。
今時のOSならファイル読み込みはメモリにマップしちゃうのが楽だと思われ。
0880デフォルトの名無しさん
NGNGマッピングだとワークエリアとして書き込んだときに元データが壊れるから嫌い
いや、俺それで大ミスしたことあるから
0881デフォルトの名無しさん
NGNG3は動かなくないはですが、あんまり良くないですね。
malloc()とfree()を別の関数でやると、それぞれの関数の汎用性(独立性)が下がるんで。
realloc()をうまく使えば、もっと方法がありそうですが。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNGものすごい勢いで最適化したりするの?
0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGいいところもあれば悪いところもある。
ただ、確実にgccよりはいいね。
vector Cとか言うのが最適かすごいらしいが。
0888仕様書無しさん
NGNGこの本どうですか?
使用されてた方や知っている方がおられましたら感想聞かせてください。
0889デフォルトの名無しさん
NGNGハヤシハルヒコ
0890デフォルトの名無しさん
NGNG必読
そのあとで林晴彦読むと、ヘタレっぷりがよく分かる
0891デフォルトの名無しさん
NGNGジサクジエン ゴクロウサン(ワラ
0892888
NGNGハヤシハルヒコを買えということ?
>>890
そうですか。今会社の研修で使ってるのですが、
プログラミングの勉強はじめてなんで、この本で勉強を
したことが私の基礎になりそうで気になっていたので安心しました。
この会社を研修本にしてる私の会社はある程度見所ありそうですかね?
0893仕様書無しさん
NGNG0895888
NGNGなんだよ自作自演て。
掲示板をそんな見方しか出来ないのか。
人間が小さいな、ド厨房さん。
0896デフォルトの名無しさん
NGNGC言語でプログラムを書くにあたって便利なツールは何がありますか?
0897デフォルトの名無しさん
NGNGUNIX
0898デフォルトの名無しさん
NGNGEmacs
cflow
警告メッセージをきちんと読む心がけ
0899デフォルトの名無しさん
NGNGman2html
grep
find
窓な人なら迷わずcygwin
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG少し休むことも必要だぞ?
0903デフォルトの名無しさん
NGNG何でK&Rの感想で林が出て来んだよ
それに10分も後に辻褄ぼろぼろのレスつけてんのも変だしな 自作自演クサクサ
0905デフォルトの名無しさん
NGNGできればC言語で学べる本がいいです。お願いします。
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGそもそも sleep() は標準ライブラリ関数ではないので、環境を明記しないと答えられないと
思われ。
0908デフォルトの名無しさん
NGNGPOSIXらしいよ。
0909仕様書無しさん
NGNG病みつきになりそうだぜ。
0910デフォルトの名無しさん
NGNGおまけで、最適化理論も学べるし :->
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNGその前に死ぬけどね(笑)。
0913デフォルトの名無しさん
NGNG0914
NGNGCプログラムで学ぶアルゴリズムとデータ構造
学校で買わされたけど開かなかったなぁ。
0915失礼いたします。
NGNG訳あって、windows98から、windows2000に、OSを入れ替えましたので、
コンパイラを再インストールし直し、ilink32.cfgと、bcc32.cfgの
環境を設定し直しました。
その際、コマンドプロンプトの、作業フォルダの欄には、
"PATH=インストールしたフォルダの場所; %PATH%"
と、98の時と同じ設定をしたのですが、コンパイルすると、
’コンパイルしようとしたファイル名’は、内部コマンドまたは
外部コマンド、操作可能なプログラムまたはバッチファイルとして認識
いません。
と、表示されてしまいました。何故なのでしょうか。
どなたか、教えて下さい。
0916デフォルトの名無しさん
NGNG’コンパイルしようとしたファイル名’を直接実行してどうすんだよ。
’コンパイルしようとしたファイル名’の前になにか打ち忘れているだろ?
0917がんばれや
NGNG買おうと思ってるんですけど、どっちが
買いでしょうか。
ちなみに私は学生では無いのでアカデミック版は
買うことができません。
もちろんBCBとVC++はプロフェッショナル版という事で。
0918915
NGNGその、「なにか」の
bcc32 ’コンパイルしようとしたファイル名’を、
入れたのですが、これがどうも・・。
と、言いますか、何もわからない素人で、
他の人に、ちゃんと説明できてるかもあやふやで・・。
勉強し直してきます。
0919デフォルトの名無しさん
NGNG目的は?
0920デフォルトの名無しさん
NGNGGUIが少しでも絡むならBCB。これ定説。
0921デフォルトの名無しさん
NGNGint count_sage = 0;
....
char tmp[20]="count_sage";
のようにソース上で記述してあったとして
int型のcount_sageという変数を
char型配列tmpを利用して間接的に
count_sageの内容を書き換えたい
(count_sage=100;と同様の事をしたい)と思っています。
が、やり方が分かりません。。こんなことできるんでしょうか??
ポインタを使ったほうがよいのでしょうか?どなたか教えて下さい。
よろしくお願いします。
0922デフォルトの名無しさん
NGNGint count_sage = 0;
int *tmp = &count_sage;
*tmp = 100;
変数名を文字列として持っていても C ではなんの意味もないです。
0923デフォルトの名無しさん
NGNG921はポインタまでまだいってなかったんだよ
0924デフォルトの名無しさん
NGNG「5566と24578の最大公約数を求めるプログラムを作れ」
って問題があったのですがどーやっても今の俺にはできないので教えてください。
多分for文とif文を組み合われて作るのかな?って思うんですが…
0925デフォルトの名無しさん
NGNG5566と24578の最大公約数は2だよ.
これでもうプログラム作らなくてもよくなったね.
0926デフォルトの名無しさん
NGNGwhile (k > 1) k = k % 2 == 0 ? k / 2 : 3 * k + 1;
が任意のk(正の整数)について停止するのはなぜなんだ?
0927デフォルトの名無しさん
NGNG「最大公約数 アルゴリズム」で検索してみそ。
0928デフォルトの名無しさん
NGNGとりあえず君くらいのレベルならこのプログラムでいいんじゃない?
/* a と b の最大公約数を求める */
int m, k, gcd;
m = x > y ? y : x;
for (k = 1; k < m; k++)
if ((a % k == 0) && (b % k == 0)) gcd = k;
/* ここで変数 gcd に a と b の最大公約数が入っている */
0929デフォルトの名無しさん
NGNGまちがい「5539と24634」だった。
一応約数でも出してそれから最大値でも調べるかなって思って
こんなプログラム作ったら何も表示されなかった。
{
int a,b,c;
a=5539;
b=24634;
for(c=2;c<5540;c++){
if(a%c==0){
if(b%c==0){
printf("%d\n",c);
}
}
}
}
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGそれ、なんとか予想って数学の問題で、まだ証明されてないんじゃない?
0934デフォルトの名無しさん
NGNG角谷予想だ。
http://www.geisya.or.jp/~mwm48961/math2/m3free.htm
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNG{
if (y == 0)
{
return x;
}
else
{
return do_gcd (y, x % y);
}
}
int gcd (int x, int y)
{
return x > y ? do_gcd (x, y) : do_gcd (y, x);
}
こんなかんじでどうでしょう。
0937デフォルトの名無しさん
NGNG最初に x, y の大きさで場合わけする必要はないのでは。
0938デフォルトの名無しさん
NGNG常にパスを通したいディレクトリを増やしたいのですが
gccの環境変数はどのように設定すればよいのですか?
設定ファイルでもあるのでしょうか?よろしくお願いします。
0939デフォルトの名無しさん
NGNG若しくはどなたか簡単なreadlineのサンプルを見せてください。
0940俺は童貞だが、
NGNGint型を、char・string型に変換するのはどうするばよか?
どじゃか、教えてくんさい。
0941デフォルトの名無しさん
NGNG(∩∩) sprintfジャダメナノ?
0942デフォルトの名無しさん
NGNGOSによるし、やり方もいろいろある。
Windowsか? UNIXか?
makeするのに通っていればいいのか? 常に検索対象にしたいのか?
0943デフォルトの名無しさん
NGNGchar*型なのかstring型なのかはっきりせい。
ちなみにCにはstring型はないぞ。
0944デフォルトの名無しさん
NGNGレスありがとうございます。
OSはLinuxです。常に検索対象にしたいです。
よろしくお願いします。
0945デフォルトの名無しさん
NGNGman readlineは読んだか?
0946939
NGNG0947デフォルトの名無しさん
NGNG~/に .で始まる環境設定ファイルがあるはず。
ファイル名や構文はshellによって違う。
bashなら .bashrcとかにpath設定する。
まずは入門ページを探す。
0948デフォルトの名無しさん
NGNG普通Linuxならgccは/usr/binにインストールされるからあらためて追加する必
要はないはずだが。
一般的には~/.profileに
export PATH="$PATH${PATH:+:}/path/want/to/append"
つー感じ。
0949デフォルトの名無しさん
NGNGレスありがとうございました。やってみます。
0950デフォルトの名無しさん
NGNG0951最大公約数の人
NGNG#include <stdio.h>
#include <stdlib.h>
void main()
{
int k,gcd;
for(k=1;k<5539;k++)
if((5539%k==0)&&(24639%k==0))gcd=k;
printf("%d",gcd);
}
「int m, k, gcd;」を最初に書くとなにやらエラーが出るので「void main()」
にしたんですが、どこかおかしいですか?
0952939
NGNG0953デフォルトの名無しさん
NGNG間違い最後の奴で
「int m, k, gcd;」は「int gcd(int x, int y)」
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNGttp://php3.de/manual/ja/ref.readline.php
0956955
NGNG0957公約数のひと
NGNG間違えた。
「#include <stdlib.h>」もいらないね
はずかしので自ら晒しage
0958デフォルトの名無しさん
NGNGvoid main() を int gcd() にしてたってこと?
ソース中にmainがないと、プログラムをどこからはじめたらいいのか分からないので
エラーで怒られたということね。
0959デフォルトの名無しさん
NGNG{
int b[]={a,a,a,1};
}
ってCでも出来たっけ?
0960デフォルトの名無しさん
NGNGダサっ! ププププ
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGできる。
ところで<8>は?
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGメッセージは滅茶苦茶になるだろうがコンパイルくらいなら
問題ないだろう。
シフトジスが通らないのはそれだけシフトジスの設計が
滅茶苦茶だってことなんだけどな。
0965公約数のモノ
NGNGその通りです
教えてくれた人ありがとう御座います
0966デフォルトの名無しさん
NGNGそうとも限らんのじゃないか?
"\xa1\xe0\\" \xa0は0xa0そのままとして
EUCだと"÷\\"と正しい文字列になるが、
SJISだと"。濬\"と閉じていない文字列になってしまう。
0967デフォルトの名無しさん
NGNGえるよ。configureに--enable-c-mbcharを付けてmakeし、環境変数LANGに
C-SJISを設定しておけばいい。
>>966 VC++でEUCをコンパイルするには、Windowsのロケールを英語等のシング
ルバイト圏にすれば大丈夫だったはず。
0968デフォルトの名無しさん
NGNGうーん、そうか。しかしWindowsのロケールってすぐに変えられるもんだったっけ。
0969デフォルトの名無しさん
NGNG> でも--enable-c-mbcharってかなりバグってるって話だけど。
wchar_t *ws = L"漢字" みたいなのはあやしいけど、文字列リテラルの中に
"表示" って入れるくらいなら大丈夫。
> うーん、そうか。しかしWindowsのロケールってすぐに変えられるもんだったっけ。
Windows 2000ならコントロールパネル→地域のオプション→全般タブ→ロケール
で変えられるよ。
コマンドプロンプトからchcp 437して実行しても大丈夫かも。
0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNG> Windows 2000ならコントロールパネル→地域のオプション→全般タブ→ロケール
> で変えられるよ。
> コマンドプロンプトからchcp 437して実行しても大丈夫かも。
それでVCって対応する?
0973デフォルトの名無しさん
NGNG0974DOKEY
NGNG99901から100000それぞれにいくつずつ素数があるか数える
Cプログラムを教えてください
0975デフォルトの名無しさん
NGNG0977DOKEY
NGNG#include <stdio.h>
#define YES 1
#define NO 0
#define MAX 10000
#define BOXNUM 100 /* BOXNUM= MAX/100 */
int isprime(int n);
main()
{
int i, j, k;
int box[BOXNUM];
for (j = 0; j < BOXNUM ; j++) box[j] = 0;
printf("2 "); /* 2 is prime */
box[0] = 1;
for (i = 3; i < MAX; i = i + 2) { /* check only odd numbers */
if (isprime(i) == YES){
printf("%d ", i);
box[i/100]++;
}
}
printf("End.\n");
for (k = 0; k < BOXNUM; k++)
printf("box%d: %d\n", k, box[k]);
}
/* n is prime? */
int isprime(int n)
{
int i;
for (i = 3; i < n; i = i+2){ /* devide n by odd number < n */
if (n % i == 0) return NO;
}
return YES;
}
0978デフォルトの名無しさん
NGNGmalloc
free
isprint
strcmp
exit
ちょっと多いですが、誰か教えてください。
0979Kusakabe Youichi
NGNG> 以下の関数がよくわからないんですが、どういう意味なんでしょうか?
マニュアル見ればいいのでは?
どうしてもマニュアル見ちゃいけないというおばあちゃんの遺言とかだったら、
べつの本でもいいけど。
たとえばある入門書では、
> malloc()
178ペイジにでています。
> free()
178 ペイジにでています。
> strcmp()
105 ペイジにでています。
> exit()
66、77ペイジにでています。
0981犬
NGNG0983978です
NGNGその入門書って何の本でしょうか・・・?
0984Kusakabe Youichi
NGNG>981: 犬 wrote:
> コマンドラインパラメータとオプションフラグって何?
コマンドラインパラメーターってのはコマンドラインのパラメーター
コマンドラインってのはたいした意味はなくて、
コマンドをキーボードから打ち込むタイプの環境で
foo abc def ...
みたいに打つ場合、一番最初がコマンド名である場合が多いので、
2つめ以降のがパラメーターだったりするわけです。
で、そのパラメーターのことを「コマンドラインパラメーター」という
とかその程度の意味です。
41ペイジに説明がありますね > コマンドライン
オプションスイッチ、オプションフラグなどは同様に102ペイジに解説が
ありますね。
0985デフォルトの名無しさん
NGNG「作ってわかる
Cプログラミング」
http://dennou.gihyo.co.jp/books/void_c/
宣伝うぜ!
0987デフォルトの名無しさん
NGNG0988Kusakabe Youichi
NGNG> そもそもC言語の本って多すぎて、どれがいいかわかんない!!
そもそも「C言語」の本を探すより「C」の本を探すほうが
いい本に当たる確率がぐっと高まりますよ。
0990Kusakabe Youichi
NGNG> C言語とCって違うんですか?
同じものを意味するんですが、
言い方がちがうわけです。
Fortran言語とかPascal言語とかC++言語とか書いてある本が
お薦めじゃないのと同じです。
0992Kusakabe Youichi
NGNG> なにか、おすすめの本はありますか?
Cの本で「売れている順」のリストだったら、べつの場所に書いてありましたよ。
0994デフォルトの名無しさん
NGNG林晴彦さんの本が評判良いようですよ。
0995デフォルトの名無しさん
NGNG仕事で使うCなら少なくとも
www.hir-net.com/book/book19/index.html
みたいなANSIの規格書使ってなきゃ、一緒に仕事したくないな。
ところで新たな質問は新スレでした方が良さそうだね。
0996@@@
NGNG他にも 色々言語あるけど やっぱりCが最高。
0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000らうんじゃ
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。