トップページ⇒tech
985コメント296KB

C言語なら、俺に聞け! <8>

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001凡才ハカーNGNG
おれは21才、9年間プログラムを一生懸命作ってきた。
あちこちの言語に手を出したが結局極めたのはC言語だけだった。
大体のことなら分かるからオレに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

・前スレ C言語なら、オレに聞け! <7>
http://pc.2ch.net/test/read.cgi/tech/1003418249/l50
0002デフォルトの名無しさんNGNG
2げっと
0003デフォルトの名無しさんNGNG
>>盆栽ハカー
readlineの使い方を教えてください
0004デフォルトの名無しさんNGNG
>>3
Why don't you read readline's manpage?
0005ケイNGNG
C言語歴2ヶ月の超初心者です。
今は、ルートを使った計算を習っています。

main()
{
int i;
float a,b,c,d,e;
a=2.0;b=3.0;d=b-a;
e=1.0e-5;
i=1;
printf("%3d:%8.5f\n",i,a);
while(d>=e){
c=(a+b)/2;
if(c*c<6)
a=c;
else
b=c;
d=b-a;
printf("%3d:%8.5f\n",i,a);
}
while(d>=e){
c=(a+b)/2;
if(c*c<11)
a=c;
else
b=c;
d=b-a;
printf("%3d:%8.5f\n",i,a);
}
}
これと同じ条件で11の三乗根を求めたいのですが、教えて頂けないでしょうか?
テキスト等で調べてみたものの、初歩的な事は以外と載っていなくて苦労しています。
0006デフォルトの名無しさんNGNG
>>5
プログラムというより数学の問題じゃない?
0007デフォルトの名無しさんNGNG
>>5
google で 「ニュートン法 三乗根」を調べれ
0008デフォルトの名無しさんNGNG
>>3
前のスレからreadline, readlineとしつこいんだが…
manを読めという適切なアドバイスがあるのになぜ実行しないの?

読んだけど分からんと書いてたけど、あんなに簡単に使える関数なのに?
readline()に比べたらprinf()の方が数倍複雑な仕様なんだけど。
分からんじゃなくて読んでないんじゃないの?
0009デフォルトの名無しさんNGNG
ぎゃあ。もちろんprinf() -> printf()の間違い。
えらそーに書いてしまったので恥ずかし。
0010ケイNGNG
すいません、ご迷惑かけました。
ありがとうございます。
0011デフォルトの名無しさんNGNG
#define SOME_SYMBOL_A 0x0000
#define SOME_SYMBOL_B 0x0001
#define SOME_SYMBOL_C 0x0002
#define SOME_SYMBOL_D 0x0003
...
みたいな定数が何百もあるとき、手作業だとかなり困ると
思うのですが、定数マクロで定数値が重複しないように
定数を自動生成してくれるツールはないでしょうか?
0012デフォルトの名無しさんNGNG
>>11
何故enumを使いませんか?
0013デフォルトの名無しさんNGNG
>>11 enumじゃだめ?
0014デフォルトの名無しさんNGNG
「C language」と「C言語」の違いを教えて下さい。
別のスレで聞いたら自分の頭で考えろっていうだけで何も教えてくれません。
どうも「C言語」という言葉を使うのはよくないようなのですが
そこらへんはどうなのでしょう?
0015デフォルトの名無しさんNGNG
「milk」と「牛乳」とか、「baseball」と「野球」とか、
その程度の違いじゃないの?
0016デフォルトの名無しさんNGNG
>14

ハゲシクワラタ。
0017デフォルトの名無しさんNGNG
>>14
きみは「C言語」と言って下さい。
「C language」と言えるのは平井堅がギリです。
0018デフォルトの名無しさんNGNG
特別にProgramming Language C って呼ぶことを許してやるよ。
0019デフォルトの名無しさんNGNG
(`∀′)
0020デフォルトの名無しさんNGNG
ま、童貞の俺には関係のない話さ
0021どうでもいいがNGNG
>>14

独習C
0022デフォルトの名無しさんNGNG
>>11 のシンボル定義はどのように使おうとしているのだろうか。
使い道が思いつかん。
0023デフォルトの名無しさんNGNG
baseballと野球はまったく違うものです。
0024デフォルトの名無しさんNGNG
>>21

>独習C

オナーニみたいでやだよね。
0025デフォルトの名無しさんNGNG
C言語でXMLやりたいんだけど
いい勉強サイトない?紹介して
0026デフォルトの名無しさんNGNG
>>25 こことか。
http://xml.apache.org/xerces-c/index.html
0027デフォルトの名無しさんNGNG
双方向リストのことで質問なんだけど。
 先頭と後ろに番兵を配置して番兵の中にもデータを格納するのが一般的なのでしょうか?
番兵にデータを入れると ノードを外ずしたり付け加えるときににチェックが大変
なのと チェックにかかるコストが大きいような気がするんですがどうでしょう?
0028 NGNG
素直にはじっこのポインタはNULLにしちゃえばいいんじゃないの?
0029デフォルトの名無しさんNGNG
双方向リストはリングにしちゃえばケツを探すのが速くなって(゚д゚)ウマーなことも多いよね。
003027NGNG
>>29
リストをリングにするやりかたでのデータの終端のチェックは、
ノードが指す次のポインタが、一番最初に読み始めたノードのアドレスかどうか
を 実アドレス同士で比較するってことでしょうか?
0031デフォルトの名無しさんNGNG
リンク先をたどっていって、元のポインタに戻ったら終わりだヨ
0032デフォルトの名無しさんNGNG
>>30

struct ListElement {
 struct ListElement *prev, *next;
 struct data *body;
};

struct ListElement head = {&head, &head, NULL};

void insert(struct ListElement *e)
{
 e->prev = head;
 e->next = head.next;
 head.next->prev = e;
 head.next = e;
}

void remove(struct ListElement *e)
{
 e->prev->next = e->next;
 e->next->prev = e->prev;
}

int empty(void)
{
 return head.next == &head;
}

void search(struct data *x)
{
 struct ListElement *l = head.next;

 while (l != &head)
  if (l->body == x)
   return l;

 return NULL;
}
003327NGNG
>>32
ほんと助かりました。
一部理解できない部分があるけど 後は、どうにかやってみます。
ありがとうございました。
 
0034デフォルトの名無しさんNGNG
>>27
両端を扱うときに場合分けするのが面倒だから、ふつーは番兵にはデータを入れない。双方向連結
リストは良く使うデータ構造で、よくできた実装が既にあるから、自分で書かずに既存のライブラリを
利用するのも手だよ。

たとえば FreeBSD で使っているリスト構造だと、これ。
http://cvsweb.freebsd.org/src/sys/sys/queue.h?rev=HEAD&content-type=text/plain

>>29
リストの先頭と末尾を個別に保持する TAILQ ってのもアリですな。4.4BSD の <sys/queue.h> には
リング上のリスト構造 CIRCLEQ と TAILQ 両方あったけど、能力は同一、速度の面では (FreeBSD
の当時の実装では) 後者のほうが良かったという理由で CIRCLEQ 抹消されてます。
0035デフォルトの名無しさんNGNG
システムコマンドを実行してその結果を得たいのですが
どうしたらよいのでしょうか?
例:dirとかの実行結果を表示したい
どなたかお願いします
0036デフォルトの名無しさんNGNG
>>35
一般的な話なら、ユニークなファイル名を作ってそこにリダイレクトし、
そのファイルを開く。
0037デフォルトの名無しさんNGNG
>>35
コンソールアプリなら system()

なんにせよ「プログラミング言語C」読みましょう。
003835NGNG
さっそくありがとうございます
>>36
テンポラリーなファイルに書き込ませるというのは
盲点でした
でもファイルに書き出すのはちょっと・・・
>>37
sytem("dir")
だと実行されたかどうかしか分からないのではないのでしょうか?
003935NGNG
sytem
systemの間違いです
鬱だ
0040デフォルトの名無しさんNGNG
>>38
普通は、system() 呼び出し時点での stdout, stderr, stdin 引き継ぐから、出力があれば
そのままコンソールに出てくるが。
004135NGNG
えっと,コンソールじゃなくて
文字配列として得たいのです
0042デフォルトの名無しさんNGNG
>>41
じゃあ
> 例:dirとかの実行結果を表示したい
と書いちゃダメでしょ。

標準 C ライブラリの範囲からは逸れますが popen() (処理系によっては _popen() の場合もある) が
目的に合うかと。
0043デフォルトの名無しさんNGNG
リダイレクトして呼び出せばいいじゃん
system("dir > dir.log");
open("dir.log");
0044デフォルトの名無しさんNGNG
>>43
>>36
004535NGNG
>>42
すんません
popen() で出来そうです
>>43
それも検討してみます

あとは頑張ってみます.こんな時間にありがとうございました
0046へっぽこぷろぐらまNGNG
プロトタイプ宣言を関数スコープの内部に書くのは邪道ですか?

foo1.c:
int foo1() {
return 1;
}

foo2.c:
int foo2() {
int foo1();
return foo1();
}

この二つのファイルはコンパイルされ、リンクされるます。
0047デフォルトの名無しさんNGNG
( ´_ゝ`)そうかい
0048デフォルトの名無しさんNGNG
( ´Д`)y──┛~~
そいつはよかったな
0049デフォルトの名無しさん NGNG
( ´_ゝ`)おめでてーな
0050デフォルトの名無しさんNGNG
( ● ´ ー ` ● )クソレス付けんなゴラ
0051名無しさん@おひさまのよう。NGNG
つーか、ヘッダにプロトタイプ宣言書くの面倒だよね?
http://homepage2.nifty.com/nowsmart/opinion_needless_prototype.htm
0052デフォルトの名無しさんNGNG
>>51
一見凄そうだけど、よく読むとアレなページだ...
0053デフォルトの名無しさんNGNG
ってNASMんとこだね。
0054デフォルトの名無しさんNGNG
gccのデフォルトlib検索パスを調べるにはどうすればいいのでしょうか?

/usr/lib/にはデファルトでパスが通っていますか?
gcc -L/usr/lib/ main.cとするとリンカがエラーを出して
gcc main.c /usr/lib/libpthread.a とすると大丈夫です。
0055デフォルトの名無しさんNGNG
>>54
% gcc main.c -lpthread

多分、正解はこれだと思うが。gcc のパス設定に関しては、gcc -v で表示される specs ファイルに書いて
ありますが、これはマクロなので読みにくいかも。実際に展開後の動作を見たいなら

% gcc -c -v main.c

で、どうでしょ。
0056デフォルトの名無しさんNGNG
>>55
レスありがとうございます。
とてもわかりやすいです。早速やってみます。
0057デフォルトの名無しさんNGNG
>>46
邪道。あとで int foo1() の定義を変更した場合にコンパイルエラーを検出できず、実行時に謎の
エラーが出ることになる(foo1 を呼び出すとスタックが壊れて、デバッグさえまともにできずに苦し
む、とか)。

C++ を使うなら、クラスのメソッドをヘッダに書いてしまうのはアリです。最近のテンプレートベー
スのクラスライブラリ (ATL, WTL とか) を使うと、そういうコードにせざるを得なかったり。
0058デフォルトの名無しさんNGNG
>>32はちょっとおかしくない?
headは構造体でeは構造体のポインタだよね?
0059デフォルトの名無しさんNGNG
% gcc main.c -lpthread

の -lpthreadってなんにゃ?
pthreadってディレクトリはないにゃ。
0060デフォルトの名無しさんNGNG
-lXXX とやると、 -L で指定したディレクトリから
libXXX.a というライブラリを探してくれます。
libも.aも指定する必要はありません。(←分かりにくいよねえ、コレ)

実際にはもうちっと細かいけど基本はコレ。
0061デフォルトの名無しさんNGNG
ありがとにゃ
0062デフォルトの名無しさん NGNG
#include<stdio.h>

main()
{
int i,n;

printf("How many times?\n");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
printf("チンコ!!\n");
}
}

/* バカプログラム */
0063デフォルトの名無しさんNGNG
#include<stdio.h>

int main(void)
{
int i,j=0,n ;

printf("How many times?");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
printf("チンコ");
for(i=1;i<=j;i++)
{
printf("!");
}
printf("\n");
j++ ;
}
} /*バカプログラム改良版*/
0064デフォルトの名無しさんNGNG
Cってソースが汚いよね。
0065デフォルトの名無しさんNGNG
そんなこと言うなよ!
俺はCしか知らん!(藁
0066デフォルトの名無しさんNGNG
scanf考えた奴クソ。
0067デフォルトの名無しさんNGNG
>>66何でだ!?
ところでscanfを考えたのはデニス・リッチーか?
0068デフォルトの名無しさんNGNG
gets考えた奴はもっとクソ。
0069デフォルトの名無しさん NGNG
mallocした領域はsizeof出来ないんでしょうか?
reallocする前にサイズが知りたいのです。。。
自分で変数とかに入れて管理しないとだめですか
初心者でごめんなさい。。。
0070デフォルトの名無しさんNGNG
2つの整数の最大公約数をもとめる関数を作りたんだけど、
互除法以外に方法はないのかな?
誰かアイデアを出してみてくれ!
0071デフォルトの名無しさんNGNG
>>69
VC++固有だったら_msize()なんてのがあるな。
0072デフォルトの名無しさんNGNG
>>71
他に持っていったとたん、コンパイルできなくなる。諸刃の剣。
0073デフォルトの名無しさんNGNG
-4にサイズは格納されていないの?
0074デフォルトの名無しさんNGNG
出来ないんですね、、難しいです、溢れるからreallocするのにその前
に比べられないなんて
他にも返り値にAUTO変数のポインタ返してる関数が有るし、、、
これでよく動いてたもんだ(-▽-
PC初心者板に逝って来ます。。。。
0075ビル・ジョブスNGNG
>>69
おいおい・・・
sizeofって演算子だよね。ってことは、演算の出来なければ、
コンパイルエラーだよね。

で、メモリーアロケーターっで関数だよね。(malloc()とかLocalAlloc())
コンパイラは関数の処理内容までは知らないよね。っていうか知る術が
ないよね。ということは、確保した領域のサイズはコンパイラには分かりません。

よって、「サイズの分からない領域へのsizeofは、式が評価できない」
という結論になります。

ファイルのサイズを、sizeof出来ないのと同じだよ。
0076デフォルトの名無しさんNGNG
>>75
sizeof(void *)は4か8になるCPUが多いと思われ。
コンパイルエラーにはならん。
0077デフォルトの名無しさんNGNG
free時サイズを指定しませんが、サイズを知る必要がないのですか?
mallocのソースでもみんと解らん。
0078デフォルトの名無しさんNGNG
freeはブロックごと放り投げるだけだからね、無責任主義
0079デフォルトの名無しさんNGNG
>>77
K&Rの8.7--記憶割当て見てみれ。単純なmallocの実装が載ってる。
0080ビル・ジョブスNGNG
>>77
まず、LocalAlloc()・LocalFree()等のメモリ管理APIはサブシステム
として導入されてます。
しかし、簡単なメモリ管理の構造として、DOSはMCB(MemoryControlBlock)を
用いていて、構造体で管理しています。

typedef struct tagMCB {
char cCheck[2]; // ブレークチェックキャラ
unsigned nBytes; // 確保したバイト数
struct tagMCB *prev; // リストの先頭方向へのポインタ
struct tagMCB *next; // リストの後方方向へのポインタ
} MCB;

のような構造体を、確保したメモリーブロックの先頭に置いて管理
するのが最も基本的。自分自身へのポインタをメンバに含めるのが
ポイントかな。

図解しないと分からないかな?
0081 NGNG
>>57
ご回答ありがとうございました。

Cで>>57さんのいう問題を回避しつつヘッダふぁいるを用いない方法はありますか?
(なぜこだわるのかはきかないで)
0082デフォルトの名無しさんNGNG
なんでCの勉強がこんなに大変か説明しよう。
Cを作ったカーニハンとリッチーは、開発者としては優秀だったが、インストラクターとしては最低の部類だった。
彼らはいわゆるヲタで、コードは書けるがニンゲンにわかりやすく説明する能力は装備されていなかった。
Programmming language C を書いたが、これにはCのすべてはのっていなかった。
よくわからないところは、Unix のソースを読んでくれ、という雰囲気があった。
このため、さまざまなCの解釈が生まれ、ANSIで統一されるまで混乱が続いた。

開発者自身の手ではじめからわかりやすく統一された解説がなかったのが、混乱の理由だ。
0083ビル・ジョブスNGNG
>>82
Cの勉強って大変?ならやめとけよ。おれは楽しいぜ。
とりあえず、言語の説明(言語仕様)というところは、
Programmming language C で十分じゃないか?
この本は、Cの使い方の説明書じゃないぞ。
0084デフォルトの名無しさんNGNG
>>82
低水準だからだろ・・・・
無知は黙ってなさぁぃ
0085デフォルトの名無しさんNGNG
大変だからやらない、というポリシーはすばらしい。
負け犬になりたいのなら、ぜひ採用したい。
0086デフォルトの名無しさんNGNG
>>82
大昔の話をしてんじゃねーよ。age
0087デフォルトの名無しさんNGNG
>>82
だいたい、今ANSI C制定前の名残が原因で混乱するような事例あるか?
デフォルトでANSI準拠じゃないコンパイラ使ってるってか?
そんなもん10年も前に絶滅したと思ったが。
0088デフォルトの名無しさんNGNG
「ANSI 完全準拠」
と書かれたコンパイラーを買って、実は全然準拠していないということがわかって愕然とすることはたまにある。
0089デフォルトの名無しさんNGNG
while(1)とfor(;;)はどちらが正しいの??
0090デフォルトの名無しさん NGNG
どっちも駄目
通はgotoでループ、これ最狂(´^`;)
0091win98 borland C++ compilerNGNG
「EOFには0か1のどちらかが入ってる。確認せえよ演習問題」

で、printfで確認したら-1と出ました。

なして?
0092デフォルトの名無しさんNGNG
>>90
それはコンパイラの最適化を阻害するから、論外。
0093デフォルトの名無しさんNGNG
>>91
処理系依存。
ガッコのマシンでやったら違うかもよ。
0094デフォルトの名無しさんNGNG
>>91
-1はどのキャラクタコードにもマップされていない特殊なオードで便利だから
0095デフォルトの名無しさんNGNG
>>89
while(1)はコンパイラによってはwarningでるから、for(;;)がおすすめ。
0096win98 borland C++ compilerNGNG
ようわかりました。
ありがとうございます。
0097デフォルトの名無しさんNGNG
EOFみたいな真偽値は「0か0じゃないか」で判定するので、-1でも1でも
なんでもいいちゅうこと。だからコンパイラによって違う。
0098デフォルトの名無しさんNGNG
馬鹿かお前
0099デフォルトの名無しさんNGNG
>>97
しかし、それじゃあgetcがEOFを返せなくなっちゃうよ。
0100デフォルトの名無しさんNGNG
>EOFみたいな真偽値
おい
0101デフォルトの名無しさんNGNG
EOFはcharで表せたらいけないんじゃなかったっけ?
0102デフォルトの名無しさんNGNG
>>97
EOF と feof() と勘違いしているに 1 ガノッサ。feof() も 0, 1 ではなく 0, 非0 だけどさ。
0103デフォルトの名無しさんNGNG
EOF みたいなのは ANSI C ではなんと言ってるんだろ。
シンボル値?
0104デフォルトの名無しさんNGNG
>>103
規格書は斜め読みしただけだが、単にマクロとしか書いてない気がする。ただし

 「EOF は整数定数に展開される。型は int で値は負」

と規定してあるから 0 or 1 ということは、ありえん。
0105デフォルトの名無しさんNGNG
getchar != EOF

なら
0106デフォルトの名無しさんNGNG
()忘れた
0107デフォルトの名無しさんNGNG
このスレばかばっかりだぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ!
0108プログラミンゲNGNG
そんなあなたにK&Rからの問題!!!!!!!!!!!!!!!!

「getchar() != EOFという式の値が0か1であることを確認せよ」

ひげぶ&貧乏人 プログラミンゲ言語C より
0109デフォルトの名無しさんNGNG
>>108
比較演算式の結果は 0 と 非 0 になるが。
0110デフォルトの名無しさんNGNG
Kusakabe & real cyuubouに訊け
0111デフォルトの名無しさんNGNG
>>109
わかってねぇなあ。だから>>108をやってみろって。
0112デフォルトの名無しさんNGNG
>>111
特定の処理系でどうなるかを言っても意味がないって。こういうときには規格書持ってこないと。
0113名無しさん++NGNG
>>109
111 じゃないけど、これですね。C99 の規格書から。

> 6.5.8 Relational operators
> 6 Each of the operators < (less than), > (greater than), <= (less than or equal to), and >=
> (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.89)
> The result has type int.
>
> 6.5.9 Equality operators
> 3 The == (equal to) and != (not equal to) operators are analogous to the relational
> operators except for their lower precedence. Each of the operators yields 1 if the
> specified relation is true and 0 if it is false. The result has type int. (後略)

<, >, <=, >=, ==, != の結果は 0 or 1 になることが要請されています。
0114ビル・ジョブスNGNG
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

みなさん、レベルが低すぎます!
質問するのは自由だが・・・もう少し考えてからなら、やってよし!

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
0115デフォルトの名無しさんNGNG
お題がC言語じゃレベルが高いも低いもないと思われ。
0116デフォルトの名無しさんNGNG
しかしそうはならんぞと。
0117デフォルトの名無しさんNGNG
int main(int argc, char *argv[])
{
 char *a[2];

 a[0] = strcat(argv[1], "age\0");

...


ってのはやばいですか?

argv[1]に入ってる文字列に "age\0" という文字列を追加したい。

仮にargv[1]にsageが入ってるとすれば、 "sage\0age\0"になるのかな?
とか思っちゃいます。
0118デフォルトの名無しさんNGNG
>仮にargv[1]にsageが入ってるとすれば、 "sage\0age\0"になる

なるわけない。
sageage\0
になる。
0119デフォルトの名無しさんNGNG
*argv[]はポインタの配列.

以下の文と同じような理由で追加は無理.(**avにも*a[0]にも)
char *p = "test";

strcat(p, "ok"); /* 代入できない */
0120デフォルトの名無しさんNGNG
curses を使ったプログラムを作りたいのですが、日本語の分かりやすい
チュートリアルないでしょうか。
0121名無しさん++NGNG
>>119
それは間違いです。

> 5.1.2.2.1 Program startup
> The parameters argc and argv and the strings pointed to by the argv array shall
> be modifiable by the program (後略)

argv 配列が指している文字列は、変更可能です。ただし、各文字列用に何バイトの領域を確保して
いるかは不明なので、縮小したり上書きする分には構いませんが、strcat() なので追記するのはま
ずいでしょうね。
0122デフォルトの名無しさんNGNG
あぁ,嘘教えてしまった..すまない.
0123デフォルトの名無しさんNGNG
**avはallocateされてるのかな,そうすると.
0124デフォルトの名無しさんNGNG
たびたび教えて君ですみません。>>117です。

/* 256もあれば十分 */
char tmp_argv[256];

strcat(tmp_argv, argv[1]);
strcat(tmp_argv, "age\0");

でうまくいってるらしいです。
ワケワカラン・・・。
0125デフォルトの名無しさんNGNG
>>124
そういうプログラム作ってっとバッファオーバーフローであぼーんされちゃうぞ。
0126デフォルトの名無しさんNGNG
>>117
>>124desu

strcatの使いかたまちがってますね・・・。
欝で死にます。
0127デフォルトの名無しさんNGNG
>>124desu

atterunokana?
wakewakaran...
0128デフォルトの名無しさんNGNG
すいません、昨日のアホです
int main(void)
{
  struct {
    char *mem;
    unsigned int memSize;
  }st;
  
  st.mem = (char *)malloc(2);
  st.memSize = 2;
  memset((char *)st.mem,'\0',st.memSize);
  printf("Here is main \n");
  printf("st.mem -> %p st.memSize -> %d \n",st.mem,st.memSize);
  st.mem = reallocMemory(st.mem,&st.memSize);// ここで領域を拡大してるつもり・・・
  printf("Turn back from func\n");
  printf("st.mem -> %p st.memSize -> %d \n",st.mem,st.memSize);
  printf("st.mem -> %s \n",st.mem);
  return 0;
}
char *reallocMemory(char *target,unsigned int *size)
{
  char str[409600];
  memset((char *)str,'a',409600);
  str[409600] = '\0';
  
  if (*size < strlen(str)){
    target = realloc(target,strlen(str)+1);
    *size = strlen(str)+1;
  }
  strcpy (target,str);
  return target; //新しいポインタを返してるつもり・・・
}
このコードを書いてテストすると、思ったように動いたのですが、
時々返ってきたポインタが変な所を指している様です。
パラメータと返り値をどちらもポインタのポインタにしたら上手くいくのですが
何処かでローカル変数を指してますでしょうか。。。。
0129デフォルトの名無しさんNGNG
ああ、何か変な事言ってる気がする。
もっと考えて来ます。
0130デフォルトの名無しさんNGNG
>>128
何がしたいのかよくわからんが、malloc()、realloc()の返り値くらい
チェックしたらどうだ?
あと、
> char str[409600];
> memset((char *)str,'a',409600);
> str[409600] = '\0';
str[]でアクセスできるのはstr[0]〜str[409600 - 1]だぞ。
0131デフォルトの名無しさんNGNG
>>128
せっかく構造体を宣言・定義したのですから、
  Result = reallocMemory(&st);
のようにされては如何?
0132デフォルトの名無しさんNGNG
gccのエラーメッセージ一覧が載っているページというのは存在するのでしょうか?
0133デフォルトの名無しさんNGNG
>>132
gcc manual
0134デフォルトの名無しさんNGNG
ありがとぅ
0135☆質問です☆NGNG
思い出せなくてどこにも乗ってなくて困っています(汗汗)

>a.out file.txt

としたときに、実行ファイル名のあとにあるファイル名(file.txt)を
実行ファイルから読み込む方法をどなたか教えていただけますでしょうか★
おねがいします!
0136デフォルトの名無しさんNGNG
>>135
argv[1]
0137デフォルトの名無しさんNGNG
K&Rの演習問題、模範解答なんぞは本に載ってましたかね?

最初の方の問題で、「ここはポインタとか使ったら簡単に済む鴨」てなことアドバイスされたのですが、
「やさしい入門」での問題だから上級手法はまだ説明されていない。

演習問題ってのは、「今まで出てきたものの応用だけで作ってみろ」ということだと思うんですが
それだとコードが長くなるんです。
それでもいいんでしょうか。
0138>>136 sanNGNG
>>136 さんへ
解決しました★すばやい回答ありがとうございました♪ _(._.)_
0139デフォルトの名無しさんNGNG
>>137
まずその時の自分の技量で自分で解く。
後で新しいことを覚えたらまたその時の技量で解く。
それで両者を比べてみる。
0140Kusakabe YouichiNGNG
> 実行ファイル名のあとにあるファイル名(file.txt)を
> 実行ファイルから読み込む方法

第2章に出ていますよ。
0141Kusakabe YouichiNGNG
> K&Rの演習問題、模範解答なんぞは本に載ってましたかね?

K&R 『THE C PROGRAMMING LANGUAGE』Prentice-Hall
の演習問題の模範解答が
『THE C ANSWER BOOK』』Prentice-Hall
です。

訳本も出ています。

2ndに対応したものも出ています。
0142デフォルトの名無しさんNGNG
2ndに対応したものも出ています。
『TWO Ch ANSWER BOOK』』Prentice-Hall
です。
0143デフォルトの名無しさんNGNG
>>140-141
ム板にも来たのか…

>>142
>2ndに対応したものも出ています。

「2chに〜」と書きたかったんだろうなぁ…
0144128 NGNG
>>129さん>>130さん、ありがとう御座います。
どうも文字配列の扱いに四苦八苦しておりまして(´д`;)
呼び出した先で領域を広げようとしてたんですが、
構造体ポインタ、、上手く使えるかなぁ・・・・
でも、便利そうです。
頑張ります、有難う御座いました。
0145デフォルトの名無しさんNGNG
>>144
JavaとかVC++とかのString型の考えを導入するといいかも。
あれって大きさは変えられんのだよね。
たとえば、文字列の連結なんかは
新たに確保した領域に文字列をコピーして
コピー元を開放する って発想。
あとから大きさを変えられると謳ってるクラスは
大抵、中でこんなことを泥臭く繰り返してる。
それか、最初に大雑把に領域を確保してて
足りなくなったら確保しなおしてコピーとか。
0146無名λ式NGNG
>>145
通常、C++のbasic_stringでは、
大抵ropeとかいわれるデータ構造や類似のデータ構造が使われ、
あなたの言うような原始的な実装は行なっていません。

C++ではoperator[]がoverload出来るので、こういう事が出来るのです。
構文糖衣のおかげで、まずは原始的な実装から始められるのも嬉しいですね。
0147デフォルトの名無しさんNGNG
>>145
大きさを変えられる構造って何ですか?

---------------------------
string1|string2|empty     |
---------------------------
こういう状態のときに、確保しなおすことをせずにstring1の大きさを変えてください。
0148デフォルトの名無しさんNGNG
>>146 JavaのStringが変更不可なのは手抜きじゃなくて
マルチスレッド対応のため。
Stringみたいに頻繁に使用されるオブジェクトで
排他同期が必要になると性能に影響が出る。
だから変更可能なStringBufferとreadOnlyなStringとに分けられた。
C++のライブラリはスレッドの事は関知してないんでそ?
0149デフォルトの名無しさんNGNG
SDKってC言語なの?
C++じゃないの?
0150デフォルトの名無しさんNGNG
どのSDKを指してるか不明だが、WindowsのPlatformSDKならC。
0151デフォルトの名無しさんNGNG
SDKは言語に依存しませんが、何か?
0152デフォルトの名無しさんNGNG
D言語はできないんですか?
0153デフォルトの名無しさんNGNG
うo(^。^o) ん(o^-^)o こo(^O^o)♪
0154デフォルトの名無しさんNGNG
>>148
>C++のライブラリはスレッドの事は関知してないんでそ?

Cのライブラリの間違い? というかCのライブラリですらWindows
なんかではスレッドセーフになっている場合がある。
Javaなんぞと違ってC/C++はスレッドについては実装によって異なるだけ
0155デフォルトの名無しさんNGNG
>>152
http://pc.2ch.net/test/read.cgi/tech/1003674814/
0156デフォルトの名無しさんNGNG
>>148
> C++のライブラリはスレッドの事は関知してないんでそ?
ANSI C++ にはスレッドに関する規定がない、というのが正しいかな。

最近の処理系だと、ライブラリ側でスレッドセーフな関数を一部提供しているのが普通。今時の
ライブラリだと、operator new あたりはふつースレッドセーフ。
0157デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>

int shortest(int, int) ;

int main(void)
{
int m, n, x ;

printf("Input m:") ;
scanf("%d",&m) ;

printf("Input n:") ;
scanf("%d",&n) ;

if( m<0 || n<0)
{
printf("error! m or n is less than 0.\n") ;
exit(1) ;
}

x = shortest(m, n) ;

printf("The number of shortest paths from (0, 0) to (%d, %d) = %d\n",m,n,x) ;
}


int shortest(int m, int n)
{
int s ;

printf("called ===> number of shortest paths(%d, %d)\n",m,n) ;

if(m==0 || n==0)
{
printf("return <=== number of shortest paths(%d, %d) = 1\n",m,n) ;
return 1 ;
}
else if(m>=0 && n>=0)
{
s = shortest(m-1,n) + shortest(m,n-1) ;
}

printf("return <=== number of shortest paths(%d, %d) = %d\n",m,n,s) ;
return s ;

}

あえて再帰処理で作りました。
0158デフォルトの名無しさんNGNG
任意の待ち時間をつくりたのですが?
0159デフォルトの名無しさんNGNG
希望の時間が過ぎるまで clock で計測しながらループ待ち
0160デフォルトの名無しさんNGNG
>>159
お前みたいな奴がいるから困るんだ (涙
0161デフォルトの名無しさんNGNG
>>160
組み込みなら許すかも。

>>158
環境依存だから、環境を書くように。Win32 なら Sleep(), UNIX なら sleep(), usleep() あたりか。
0162159NGNG
>>160
あはは (^▽^;
ひとつの案として言ってみただけです。
自分がプログラム作るときはちゃんと Sleep とか使いますから、ご安心召されよ〜。
0163デフォルトの名無しさんNGNG
>>162
ネタとしても面白くないな。逝って良し。
0164デフォルトの名無しさんNGNG
ntpで時間が戻って亜ボーン
って、大した誤差はでないだろうな藁
0165デフォルトの名無しさんNGNG
closedir()に失敗して強制終了
closedir()をコメントアウトすると、無事に?終了します
0166デフォルトの名無しさんNGNG
それは良かったね
0167デフォルトの名無しさんNGNG
今日からC言語を始めてみようと思って、
LSIC86をダウンロードしたのはいいのですが、
テストのためにマニュアルにのっている
hello.c というプログラムをコンパイルしようとしたところ

hello.c 1: can't open: stdio.h: No such file or directory

とエラーが出てしまいます…。
マニュアルで綴りや設定の仕方など見直したのですがわかりません。
すごく初歩的な質問で申し訳ないのですが、
どなたかよろしくお願いします…。
0168デフォルトの名無しさんNGNG
>>167
INCLUDE環境変数をちゃんと設定した?
確か必要だったような気がする
0169デフォルトの名無しさんNGNG
>>167
ここがLSIC86の初期設定を解説しているから読んでみそ。
http://www.sting.co.jp/mag/comp.htm
0170デフォルトの名無しさんNGNG
>>167です。

>>168-169さん、ありがとうございます。
INCLUDE環境変数というものが何かよくわかっていないのですが
>>169さんの紹介してくださったページ通りに設定はしてみました。
やはり同じエラーが出てしまいました…。

関係ないかもしれませんが、Win98SEを使っています。
Win95/98対応と書いてあったのですが、
SEには対応していないのでしょうか…?
0171あきじん ◆jx8Uh8fk NGNG
何故今頃LSIC-86なのか…。確かANSI-C準拠じゃないよね?

↓これとか使った方がいいよ。
http://www.borland.co.jp/cppbuilder/freecompiler/index.html
0172横やりNGNG
>>170
>169のページ見たけど

> -XC:\LSIC86\BIN -LC:\LSIC86\LIB -IC:\LSIC86\INCLUDE -T -O
となります。

のあたりだろ
0173デフォルトの名無しさんNGNG
>>170
Win98SEでも動作するよ。現にオレのWin98SEマシンでも動いた。
多分、ファイル_LCCの記述にタイプミスがあるんじゃないかな?
もう一度よく見直してみてくれ。

INCLUDE環境変数はCコンパイラがインクルードファイルを見つける
ときのパスを記述したもの。入門書を読めば大抵は前半部で
解説があると思う。


で、171氏が指摘しているようにLSIC86でなければいけない
特別な理由でもない限り、Borland C++を使った方がいいと
思うぞ。
0174デフォルトの名無しさんNGNG
>>167です。

>>171さんのところのをよく読んでみているところですが、
>>172
> -XC:\LSIC86\BIN -LC:\LSIC86\LIB -IC:\LSIC86\INCLUDE -T -O
はちゃんと直したんですよ…。
うーん。

設定するときにC:\CONFIG.SYSとC:\AUTOEXEC.BATを
書き変えたのですが、元々文字が書いてあったのでそれに書き足しました。
マニュアルには「…と書いてください」とあったのですが
元々C:\CONFIG.SYSとC:\AUTOEXEC.BATは空ファイルなのでしょうか??
0175167NGNG
>>173さん ありがとうございます。
もう一度_lccを見直してみることにします。
でも、別に特別な理由があるわけではなくて
LSIC86を最初に見つけたというだけなので
>>171さんのところのコンパイラをダウンロードしてみます。

どうもありがとうございました!
0176あきじん ◆jx8Uh8fk NGNG
AUTOEXEC.BATが空なのは問題無いはず。
それよりもAUTOEXEC.BAT変更したら
再起動しなきゃ駄目だよ。SHIFT+再起動でも駄目。

じゃ頑張ってね。
0177デフォルトの名無しさんNGNG
すんごいレベルの低いこと聞きます

register char *p;
として、このpは内容が0xffであるようなメモリのアドレスを格納したとします。
そして
if(*p == 0xff){
}
とこれを判定しようとしました。これって真にならないんですか?
0178デフォルトの名無しさんNGNG
>>177
if(p == (char*)0xff)
これだったら真になるよ。
0179デフォルトの名無しさんNGNG
あ、メモリの内容が0xffなんです。そのアドレスは0xffではないです。
デバッグ中に変数の値見ても*p=0x000000ffって表示されます。(VC++)
0180178NGNG
すまん。勘違いだ。178は取り消し。
0181デフォルトの名無しさんNGNG
>>179
符号拡張で、*p == -1 になってるんじゃない?
0182デフォルトの名無しさんNGNG

>>181
あ、きっとそれです!
0xffとではなく(char)0xffと比較しないとダメなんですね?(^^;
どうも有り難うございました。
0183デフォルトの名無しさんNGNG
>>179
if (*p == (unsigned char)0xff)
こうすればどうよ?
0184あきじん ◆jx8Uh8fk NGNG
>182
コンパイルの時にwarning出なかった?
いっぱい出るからって無視しちゃ駄目だよ(w
0185デフォルトの名無しさんNGNG
>>183
有り難うございます。今試したところ
if(*p == (char)0xff)が正解でした。
pがchar*なのでこれにあわせてcharでないとダメと言うことでしょう。

>>184
いっぱいでるから無視してました(w
たぶんでてるかも。
0186183NGNG
char型変数との比較なのに符合無しにキャストしてしまうとは
激迂闊なオレ。回線切って、アキバに新設された公開首吊り場
に逝ってきます。
海よりも深く反省し、心から謝罪と賠償を(以下略)
0187一部ですがNGNG
質問です。
コンパイルできないです。
スマソ
char *txt = "今日は大変良い天気です。1012abアイウaiu012";
char *p = txt;

if (isalpha(p)!=0) printf("%c===>半角英字\n",p);
else if (isdigit(p)!=0) printf("%d===>半角数字\n",p);
else if (IsKigouS(p)!=0) printf("%c===>半角記号\n",p);

alphabet.cpp(98) : error C2664: 'isalpha' : 1 番目の引数を 'char *' から 'int' に変換できません。 (新しい機能 ; ヘルプを参照)
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
0188デフォルトの名無しさんNGNG
>>187
こう直してみてください。
isalpha(p) -> isalpha(*p)
0189デフォルトの名無しさんNGNG
>>187
何がしたいの?文字列の一番目の文字を判定したいのか?
文字と文字列の違いは分かってる?
0190187NGNG
>>188-189
とりあえずコンパイルはできました。
ありがとう。
0191デフォルトの名無しさんNGNG
マルチスレッドなプログラムでグローバル変数を読み書きしたいのですが、
どうやって排他処理をすればよろしいのでありましょうか?
0192デフォルトの名無しさんNGNG
>>191
セマフォ、クリティカルセクションなど。
0193191NGNG
初耳の言葉だ・・・
調べてまいります。ありがとう。
0194191NGNG
どうも調べ方が悪かっただけらしい。ありがと。
http://www.remus.dti.ne.jp/%7Etom3/multi_thread_basic.html
http://www.hlla.is.tsukuba.ac.jp/%7Eyas/coins/dsys-1998/1999-01-26/pthread-sync.html
http://www.ncad.co.jp/%7Ekomata/c-kouza17.htm
0195デフォルトの名無しさんNGNG
いまどきCをはじめるのはやめたほうがいいぞ
0196デフォルトの名無しさんNGNG
Rubyが入門には最適。
Rubyだけで十分。
0197デフォルトの名無しさんNGNG
Javaでもいいけどな。
0198 ◆RubyOmS2 NGNG
>>196
RubyのライブラリをCで書く為にCを勉強し始めている俺は、
Ruby厨としては、失格なのか?
0199デフォルトの名無しさん NGNG
軽い気持ちでcrypt使ったら
undefined reference to `crypt' って (−_−)
プロの皆さんは何を使ってますか、高い強度は必要ではないです
>>195
自分はタコだけど、メモリにグッっと近づいた感じは触ってて気持ち良いよ
生産性を論じてるならアレだけど
VB、Java、Perl辺りをやっていた
0200199 NGNG
すまそん、事故怪傑しました
UltraFastって言うのを頂きました (^^v
0201デフォルトの名無しさんNGNG
CGIやりたいって言ったら
Perlの入門書を薦められ、
その前にCを触っておくべきだと
言われたのですが
どうでしょう?
0202デフォルトの名無しさんNGNG
目的がCGIなら、いきなりPerlでもよかろ。
0203デフォルトの名無しさんNGNG
>>199
C言語の存在ってPascalに近づいてきたかもね、
つまり、教育用言語。
0204 NGNG
>>199

Windowsで実行してない?UNIX系じゃないと実装されてないよ。
0205デフォルトの名無しさんNGNG
C言語でCGIを作っていますが、何か?
というか、Perlがよく分からないのでCです。はい。
0206デフォルトの名無しさんNGNG
#define A "\0\0\0\0"

fn(char* a){

}

int main(){
 fn(A);
}

とした時
fn の a 指す値は
*a 〜 *(a+4) は全部 \0 になるの?
0207デフォルトの名無しさんNGNG
>>206
なる、と思う・・・
0208デフォルトの名無しさんNGNG
全部\0になるよ。

main内に
fn("\0\0\0\0");
と書いたのと同じだもん。
0209 NGNG
>>205

文字列操作とか大変じゃないですか?
フォームから送られてくるデータの項目ごとの分割とか。
(Perlではハッシュでかんたん。)
何か美しい解決法があれば聞きたいです。
0210login:PenguinNGNG
C言語の"C"の由来ってなんなんだろ?
0211デフォルトの名無しさんNGNG
>>209
そういうのは全部ライブラリでなんとかしたり、
データベースに突っ込んでなんとかしたりするから平気です。
0212デフォルトの名無しさんNGNG
"B"の次だから "C"

K&R読んだことないの?
0213 NGNG
>>210

Bの次。が有力。
0214デフォルトの名無しさんNGNG
>208
ありがと
じゃあ、文字列の最後を \0 2個にしたいときは
#define A "abcde\0"
ってすればいいですよね
0215デフォルトの名無しさんNGNG
すればいいですよ
0216デフォルトの名無しさんNGNG
>>210
BCPLの頭文字とったのがB言語で、
ダブルにその次ってことでCらしい。よくわからんけど。
次はPか。ピー言語。なんか嫌っ('Д`;)
0217デフォルトの名無しさんNGNG
>215
ありがとございました
0218 fNGNG
http://cm.bell-labs.com/cm/cs/who/dmr/bintro.html

興味があったのでB言語について。
文法的にはほぼCですな。
BとCって何が違うんですか?
ポインタがないとか?
0219デフォルトの名無しさんNGNG
>>218
ざっと読んでみた。
ポインタはあるみたい。というか、型は整数しかなくて、キャストしなくても
* 付ければポインタとして扱われているように見える。
0220デフォルトの名無しさんNGNG
char *ExtractFileNameM(const char *FullPath)
{
char *szFindPoint;
char *szFileName;

if(strlen(FullPath)>MAX_PATH)
return NULL;

else
{
szFindPoint=strchr(FullPath,'\');

while(szFindPoint){
szFileName=szFindPoint;
szFindPoint=strchr(szFindPoint,'\');
}
}
if(!szFileName)return FullPath;
else
return szFileName;

}
こいつを実装とやらをしたいんだけどスタックとかから教えてください
0221デフォルトの名無しさんNGNG
>>220
まずは日本語を勉強しましょう。「実装とやら」と言われても、何のことやら分かりません。
0222デフォルトの名無しさんNGNG
え?汎用関数つくることを実装というのではないのかや?
0223デフォルトの名無しさんNGNG
>>222
意味不明。
0224デフォルトの名無しさんNGNG
これじゃSJIS扱えないよ
0225デフォルトの名無しさんNGNG
if(mblen(szFindPoint-1,2)!=2)
szFileName=szFindPoint;
このようにさっき変えた。

そろそろスタックとかやりたいYO
0226デフォルトの名無しさんNGNG
\\も直したから安心してョ
0227デフォルトの名無しさんNGNG
こりゃまたすごい意味不明。
>>220さんはスタックってなにか知ってるのかな?
0228デフォルトの名無しさんNGNG
めもり確保して
めもりに一個ずついれてくんだろ?
0229デフォルトの名無しさんNGNG
ちなみにstackは積むとかそーゆー意味だと思うんだけどョ
0230 NGNG
>>220
スタック、リスト、キュー、どれもメモリー確保して格納する作業ですが?
出直しておいで。
0231デフォルトの名無しさんNGNG
なぜ「実装とやら」をしたいのだ?
セインセイにいいつけられた?
0232デフォルトの名無しさんNGNG
さっきのマイプログラム、配列つくって
whileつかって、ひとつひとつ
if(FullPath[i]='\\'&&mblen(FullPath[i-1],2)!=2)
とかやったほうがいいとおもう?
0233デフォルトの名無しさんNGNG
いや、はじめてライブラリに挑戦する僕チンなんだ
(スタティック)どーせならひたすら低級路線
で行こうとおもっただけアル
0234デフォルトの名無しさんNGNG
要するに、
C言語の「標準ライブラリ」を極力使わずに、自作ライブラリを作りたい
ということだろ。
で、手始めにpath nameの分解をしたいと。
大方、mainのargvでわたされたファイルパス名を分解しようという動機だろう。

とりあえず、strlen使ってたら、<string.h>必要になるから、
そこも自作しなさい。
あとmblen() なんてだれもしらん。
0235デフォルトの名無しさんNGNG
>>234
strchr()もだめだね。
0236デフォルトの名無しさんNGNG
クララが・・クララが・・・

でさぁ、どっかのHPにstrchrの定義が
あって、char *strchr( ,int)だったんだけど
あれって実体を返すうーーー、いいのだ。
VCLにはExtractFileNameがあるけど、あれは実体を
返すの?それともポインタかなぁ。もうっかい見てみるからナ!
0237いかりや長介NGNG
だめだこりゃ。
0238デフォルトの名無しさんNGNG
mallocで64バイトとったらヌル文字は65バイト目ですか?
それとも64バイト目をヌル文字って考えながらプログラム
することがプログラマの使命なのですか?
0239デフォルトの名無しさんNGNG
>>238
掟です。
0240デフォルトの名無しさん NGNG
しょっちゅうアクセス違反してるお馬鹿な私は
char *ptr;
/* 処理 */
if(hoge != NULL && strlen(hoge))
と書いていますが、これは正しいでしょうか。もしNULLならstrlenは
判定されませんか。(僕の環境では大丈夫です)
また、時々重複freeしちゃうダメっぷりなので
if(hoge){
 free(hoge);
 hoge = NULL;
}
こんな感じであっちこっちに散りばめてるのですが、これはドキュソですか
変な事聞いてごめんなさい、、、、
0241スシばっか食ってるNewBeeNGNG
Bの次って
0242デフォルトの名無しさんNGNG
>>240
&&の処理順序は保証されているし、そのような書き方はよく見かける
後者のfreeについてはそういうマクロなり関数なりを用意しとけ
0243デフォルトの名無しさんNGNG
>>240

free() のことなんだけど、>>242 さんみたいにマクロ定義するのが一般的です

#define free_safety(v) if(v){ free(v); v=NULL; }

ただし注意して扱わないといけないんだけど、
こうやってるとハマるんだよなー。。。
  char *ptr = some_ptr;
  /* some long long loooong proc. */
  free_safety(ptr);
ptr には NULL が代入されるけど some_ptr には NULL が代入されないんで、
そこからどんなバグが生成されるやら(笑い
0244デフォルトの名無しさんNGNG
>>240
二重 free() するのは厳禁だが、条件反射的に

if (hoge) {
 free(hoge);
 hoge = NULL;
}

と書くと、今度は free したポインタを参照するバグに出くわすと思うぞ。これは検出しづらいから、
ムチャクチャにタチが悪いバグになる。

どこで、いつ malloc() して、どこで、いつ free() するのかを良く考えてプログラミングするのが先。
その上で防衛的に NULL 代入するようにするのはアリだと思う。(俺はやらないけど)
0245デフォルトの名無しさんNGNG
240です、ありがとうですぅ
安心しましたです、出来る方の言葉を聞きたくて(^-^*
でももっと本を読まないと
何故かCよりgdbばっかり触ってるような(鬱
早速マクロにしますです
0246デフォルトの名無しさんNGNG
>>244さん
なるほど!、次にはまるのはそれの様な気がします(^-^; コワ
やっぱり人間GCよろしく適当に散りばめるのはヤバイんですね
構造がつかめて無いのは仰るとおりです。
0247デフォルトの名無しさんNGNG
>>246
真面目な話、GC 使うという選択肢はアリだよ。

http://www.hpl.hp.com/personal/Hans_Boehm/gc/
0248デフォルトの名無しさん NGNG
getsの時に漢字で入力してprintfの時にひらがなで出力するには
どうすればいいの?誰かおしえて。
0249デフォルトの名無しさんNGNG
漢字をひらがなに変換するプログラムを組んで、それでひらがなになおしなさい。
0250デフォルトの名無しさんNGNG
ほんとにあったら欲しいな
出来たら英語に翻訳してくれると尚良し
0251デフォルトの名無しさんNGNG
>249
その変換するプログラムをおしえて欲しいのよ。
0252デフォルトの名無しさんNGNG
とりあえず、機械翻訳とデータベースについて勉強してからもう一度来なさい。
0253デフォルトの名無しさんNGNG
形態素解析、あたりで検索。
0254デフォルトの名無しさんNGNG
>>251
漢字と読み仮名の辞書を作れ。10年もあればできる。
0255デフォルトの名無しさんNGNG
>>254
単語に区切るのが難しい。
0256デフォルトの名無しさんNGNG
最長一致法と二文節最長一致法をさらっと流して、
最小コスト法まで話しをもっていくべきか?

IMEのやってることと比べるとUIがいらない点と、
学習する必要がない分、作り込みは簡単だと思うがどうよ?
0257デフォルトの名無しさんNGNG
KAKASI - 漢字→かな(ローマ字)変換プログラム
http://kakasi.namazu.org/

GPL だから、扱い注意な。自分のプログラムにコードを取り込んだ場合、自分のコードも自動的に
GPL になる。
0258デフォルトの名無しさんNGNG
>>256
248 のような質問をするやつが理解できるかどうか。
0259デフォルトの名無しさんNGNG
>>257
茶筅の方がライセンスゆるいよ。
http://chasen.aist-nara.ac.jp/index.html.ja
0260デフォルトの名無しさんNGNG
Win2k上で2GB以上のバイナリファイルをアクセスしたいのですが、
fseek(FILE *fp,long pos,SEEK_SET)
を使うと、posが、long型なので2G以上は指定してみてもオバーフローして
ファイル先頭に戻ってしまいます。
どうすれば、2GB先にシークできるのでしょうか?
0261shigeNGNG
#include <stdio.h>
int fsetpos(FILE *stream, fpos_t *pos);
0262デフォルトの名無しさんNGNG
SEEK_CUR で 2GB ずつ何度も移動するとか
0263デフォルトの名無しさんNGNG
Ruby!
0264 NGNG
>>261

API使った方が良いのでは?
まぁ、内部ではAPI呼び出してるんだけど・・・。
0265デフォルトの名無しさんNGNG
Win9xがあぼ〜んされるまでは標準ライブラリでは32bitのファイルオフセットが
使われ続けるのだろうなあ。
0266デフォルトの名無しさんNGNG
C言の本でなんかいいのないか?
0267デフォルトの名無しさんNGNG
K&R読み終わってから聞きに来い
0268デフォルトの名無しさんNGNG
おうよ!
0269 NGNG
>>265
NTカーネルでも、intが32ビットの間は、fseek()は、32ビット。
0270デフォルトの名無しさんNGNG
ISO/IEC 9899:1999調べてみた。fseekの2番目のパラメータはlongなのね。
ftell()もlongを返すからlongであらわせない位置にファイルポジションが
あるとエラーになるのか。
0271デフォルトの名無しさんNGNG
K&R てのはね。
アセンブラを知ってて、FORTRANを知ってて、BASICを知ってて、COBOLを知ってて、LISPを知ってて、PASCALも知ってる、てゆー人向けに書かれた本だよ。
プログラミングの初心者は林春比古の本からはじめたほうがいいよ。
ついでにいうと、この板の住人は技術者であって、インストラクターではないから、そのへん注意したほうがいいよ。
教育心理学の本とか読んでる人少ないからね。ここは。
0272デフォルトの名無しさんNGNG
お前第一章読み飛ばしただろ(藁
0273デフォルトの名無しさんNGNG
林晴彦の本かうなら第一章読み直した方がまし。
0274デフォルトの名無しさんNGNG
K&R読む。わからなくてもとにかく読み進む。(わからないことはメモしておくとなお良し)
最初にわからなかったことに気をつけながらもう一度読む。
それでもわからないようなら、プログラマには向いてないのであきらめる。
0275デフォルトの名無しさんNGNG
>>273
同意
0276デフォルトの名無しさんNGNG
char *ExtractFileNameM(const char* szFullPath,char* szFile)
ポインタと実態についてまた少し知識が確かになったので
このようにしてして無難にやった。
0277デフォルトの名無しさんNGNG
K&Rの訳者前書きは萎える。
こんな意識の低いやつが翻訳しているのかと思うと読む気にならん。
0278デフォルトの名無しさんNGNG
>>277 原書買え
0279デフォルトの名無しさんNGNG
              ∧            .∧
              / ・           / ';,
            . /  ';          ./  ';
            /   ;______/   ;
          /                  \
         /    /          \     \
        /´       |____|          |
        |  /////    |     |    /////    |
       |        .|     |           |
        |         |    |           |
        |        ';    /           /
         \        \/        .. /
           ヽ             ........:::::::<
 __________∧___________
/                                   \
|  英語読めないや...                   |
0280デフォルトの名無しさんNGNG
勉強しろ
0281デフォルトの名無しさんNGNG
>>185
>pがchar*なのでこれにあわせてcharでないとダメと言うことでしょう。

違います。
0282デフォルトの名無しさんNGNG
>>240
if(hoge){
 free(hoge);
 hoge = NULL;
}
は、
free(hoge);
hoge = NULL;
で十分。

ところで、>>244の
>今度は free したポインタを参照するバグに出くわすと思うぞ
って、どういうこと?
0283デフォルトの名無しさんNGNG
>>282
ちょっと複雑なデータ構造(たとえばツリーとか)を解放するときに、

free_tree(struct tree* p)
{
  if (p->left != NULL)
    free_tree(p->left);
  if (p->right != NULL)
    free_tree(p->right);
}

みたいな関数を作るじゃない。単に free() を SAFE_FREE() みたいなマクロで置き換えた場合、
こういう状況では何の役にも立たなくて、やっぱり同じようなバグに出くわすって話じゃないの。
0284デフォルトの名無しさんNGNG
free_treeが一個抜けてる。
0285デフォルトの名無しさんNGNG
>>284
抜けてるのは free_tree() ではなく free() と思われ。
0286美空ひばりNGNG
func()という関数があるときに、
funcっていう表現(カッコがない)はどういう意味になりますか?
0287デフォルトの名無しさんNGNG
>>286
関数のアドレス
0288284NGNG
ガ━━(゜Д゜;)━━ン!
同レベルかよ
0289デフォルトの名無しさんNGNG
http://www.bohyoh.com/CandCPP/C/Library/pow.html

定義城って・・・・
定義域の間違いだよね・・・・・

でもなんでコンピュータ上で間違うんだろう・・・・
0290デフォルトの名無しさんNGNG
>>289 OCRだろ
0291 NGNG
あるプログラムのswitch文と同じ意味のif文ではどちらが速いでしょうか?
0292デフォルトの名無しさんNGNG
>>291
同じだろ。
0293デフォルトの名無しさんNGNG
>>291
場合による。
switch(i){
case 0:
case 1:
case 2:
case 3:
}
って感じだと、if より速くなるかもしれない。
コンパイラの最適化の話だから、確実とは言えないが、
if の羅列が switch より速くなることはないだろう。
0294 NGNG
良スレさげ
0295293NGNG
> if の羅列が switch より速くなることはないだろう。

と思ったけど

if(unsigned(i) < 20){
}else if(i < 40){

のように効率的に条件判断するのと比べるなら何ともいえないな。
単純に == で判断してるだけなら switch の方がいいのでは?という程度。
0296デフォルトの名無しさんNGNG
>>293
たとえばその例ではどういう最適化でifより速くなる可能性があるの?
0297デフォルトの名無しさんNGNG
ジャンプテーブルを生成したり。
配列みたいな感じで飛び先アドレスが格納されてて、
インデックスで飛び先アドレスを取ってきてジャンプ。
0298 NGNG
間接参照アドレスから即ルーチン先へ飛んで、結局一回の判定で済むからじゃないのか。
0299デフォルトの名無しさんNGNG
ごめんなさい。
VC で試したら if の羅列でも同様に最適化されました。
最近のコンパイラは優秀なんで、どっちでも同じです。
0300デフォルトの名無しさんNGNG
bcc出も試してミロ
0301デフォルトの名無しさんNGNG
ウソ言いまくり。見間違いでした。激しく鬱、、、

if の羅列では最適化されません。
switch では最適化されます。

よって switch でどうぞ。
0302デフォルトの名無しさんNGNG
テーブルジャンプで最適化されたswitchは確実にパイプラインが
ストールしますから、よく分岐する部分をifで抜き出して、それ
以外(インデックスが連続しなくなる場合はダミーをうめて)を
switchにしたほうがよいです。
0303デフォルトの名無しさんNGNG
文字列から数値への変換は atoi, atol, atof などありますが
数値から文字列への変換はあるのでしょうか?
0304デフォルトの名無しさんNGNG
sprintf
0305_NGNG
>>303

itoaとか。後は類推しましょう。
0306_NGNG
>>304

うん。最強。
0307デフォルトの名無しさんNGNG
>>305

そんな標準関数はないよ。VC++にはおまけで_itoa()なんてのがあるみたいだけど。
ちなみに>>304が正解。
単に数値を数字列に変換するだけでsprintf()なんて使っていられるか!!と言う人もいるみたいだけれど、いちいち自作するよりはましだと思うね。
0308周富徳NGNG
mallocでメモリを確保する意味がわかりません。
いきなり
int a[1024]
とかで変数を宣言しただけでは、メモリは確保されないんでしょうか?

また、すべてのmallocはcallocで代用してもいいんでしょうか?
0309デフォルトの名無しさんNGNG
ところで、printf系って標準関数の中でも一番すごい関数だと思わない?
0310_NGNG
>>305
glibcにも搭載されてますけど標準関数じゃないんですねitoa。
勉強になりますわ。
0311デフォルトの名無しさんNGNG
>>308

私の場合、関数内で一時的に文字列をコピーする時に役立つ。
どんな長さの文字列が来るか分からないから、引数の文字列の長さをstrlen()で測って、+1した分の領域を確保すると丁度よくなる。
恐怖のセグメンテーション違反も起きないし(笑)
0312305NGNG
>>310

私も最初は標準関数だと思っていたよ。
でもgccでコンパイルできなかった時に初めて気づいたよ。
調べてみたらそんなものはないと・・・
0313デフォルトの名無しさんNGNG
そうだよ。
hello worldにも使われる関数をばかにしちゃあいかん。
0314デフォルトの名無しさんNGNG
>>308
たまたまデータの個数が1024個よりも多かったらどうします?
0315デフォルトの名無しさんNGNG
strdupはしないの?>>311
0316デフォルトの名無しさんNGNG
>>315

うん。
0317_NGNG
>>308

int a[1024]
でもメモリは確保できるけど1024個しか情報を登録できないソフトって使えないと思うよ。

Windowsのエクスプローラのツリービューとかってどうやって実現すれば良いんだろう?って話にもなってきます。
0318デフォルトの名無しさんNGNG
MS-DOSのコマンドは最大1024文字みたいだけれど、あれはchar s[1025]とやっているのかな。
0319あそぼNGNG
>>318

VFATのネームスペースの関係だと。
固定長のブロック(char s[1025]とは言わないが)が続いているんでしょう。
0320デフォルトの名無しさんNGNG
>>319

そうか。ありがとう。
一度1025文字以上入力してみようかな(笑)
0321デフォルトの名無しさんNGNG
>>308
mallocなんて、前世紀の遺物です。
使う必要はまったくありません。
コードが不必要に複雑になるだけです。
データの、想定される最大長の同じ長さの配列を使えば、
後は、OSが仮想記憶でうまくやってくれます。
0322プヨプヨNGNG
mallocは
データ数が保障されている場合は意味ないの?
0323デフォルトの名無しさんNGNG
>>322
データ数が1024が上限とか、そういう仕様だったら、
必要ないですね。
0324あそぼNGNG
>>322
リストとか木とか実現するときとか使わない?
まぁ、記憶領域をあらかじめ最大数確保してそのポインタを管理すれば良いんだろうけど。

スマートじゃない・・・。
0325周富徳NGNG
こんな時間にこんなに早くレスがつくとは思いませんでした。
お仕事中ですか?
0326デフォルトの名無しさんNGNG
いや、自宅ですが、ヒマなもんで。
0327あそぼNGNG
>>321

WindowsにはVirtualAllocって関数がそういう使い方を想定してるみたいだね。
ってことは逆に普通のLocalAllocとかって何らかの弊害があるってことじゃないですかね?
0328デフォルトの名無しさんNGNG
>>327

どうでもいいが、せっかくならvallocという名前にしてほしかった(笑)
0329白いパラソルNGNG
他人のコードを読むのが一番勉強になるとかいいますが、
公開されているソースとかで勉強した人とかいますか?

昔、INNをすすめられたんですが、
もちろん挫折しました。
0330デフォルトの名無しさんNGNG
>>329

標準関数のコードで勉強しようと思ったがどこにあるのか分からずに挫折。
0331あそぼNGNG
>>329

俺の場合はある程度書けるようになってから他人の技を盗むってかんじですね。
そのソフトの基礎(通信系ならSocketとか)はあらかじめ押さえておかないと読めないと思います。
友人は人のコードがないとプログラム書けなかったりしますが。
0332平壌市民NGNG
私が引き継いだコードは
全部mallocした後に'\0'で初期化されているんですが、
これは糞コードの類に入るんでしょうか?

callocでやるべき?
0333デフォルトの名無しさんNGNG
char型でカウントアップすることは出来ますか?
例)1 -> 2 -> 3
0334_NGNG
>>333

char a;
a++;

無理だった?
VC6で確認。
0335デフォルトの名無しさんNGNG
>>333

char型って1byteのunsigned intでしょう?
0336デフォルトの名無しさんNGNG
>>335
unsigned かどうかは処理系依存だが、いずれにしろ C では char が整数型であることは間違いない。
0337_NGNG
>>333

これからはできますか?じゃなくてできないんですけど?になってから来なさいよ。
これくらい実験しないと一生プログラムなんて書けないよ。
0338デフォルトの名無しさんNGNG
>>333

よく文字定数を代入するときに、
char c;
c='A';

こういう風にするけれど、char=65;やchar=0x41としても全く問題ない(内部では等価だから)。
だから文字は数値として扱えるよ。
0339デフォルトの名無しさんNGNG
>>336

訂正ありがとう。
処理系依存ということは、

int c;
while((c=getchar())!=EOF)
         ;

このおなじみのコードは処理系によってはcharでもうまくゆくんだね。
0340デフォルトの名無しさんNGNG
戻り値がint型の関数でエラーと判断した場合、どんな値を返すのがよいと思いますか?
0341340NGNG
ちなみに、正常の場合、負・0・正のいずれも返す可能性があります。

ポインターならナルポインタでも返してやるんですが・・・
0342デフォルトの名無しさんNGNG
>>340
期待されるintの範囲による。
期待されるのが0以上ならば、負の数にするのが一般的。
-1,-2...にエラーコードを割り当てれば、エラーパターンを細分化できる。
0343342NGNG
>>341
あら、そういうことだと・・・

戻り値として期待されない値にエラーを割りあてるわけだから、
正常時にあらゆるint値を返す場合は、そもそもこの方法でエラーを通知
することは不可能だよ。
0344デフォルトの名無しさんNGNG
>>343

やっぱりそうですか。。。
それならもうこの関数を使う前に予め正常かどうか判断するしかないですね。

ありがとうございました。
0345342NGNG
>>344
解決策としては、戻り値じゃなく、引数に出力用の変数を設ける方法があるよ。
0346344NGNG
>>345

エラーコードを設定する変数を呼び出し元で用意するということですか?
0347342NGNG
>>346

そう、それでもいい

int foo(int input, int *err)
と定義して、呼び出すときは。
int err,ret;
ret = foo(100,&err);
if(err == ERROR){}

とか、あるいは。
int foo(int output, int input)
として
int out,err;
err = foo(100,&out);
if(err == ERROR){}

でもいい。

後者のほうが使いやすいと思うけど、前者もあり。
0348342NGNG
>>347
訂正
後者の定義は
int foo(int output, int *input)
ポインタで渡す。
0349342NGNG
違う
int foo(int input, int *output)
だ。

鬱・・・
0350344NGNG
>>347

なるほど。よく分かりました。実際に前者と後者を試してみて使いやすい方を使うことにします。

ありがとうございました。
0351sageNGNG
さて、どれからつっこむべきか?
0352_NGNG
>>351

やるならさっさとな。
0353デフォルトの名無しさんNGNG
>>351
全部やれ。
0354デフォルトの名無しさんNGNG
>>351

今やれ。すぐやれ。
0355デフォルトの名無しさんNGNG
>>355
再帰
0356ジョジョの奇妙なソースコードNGNG
再帰不能(リタイヤ)

K.O
0357デフォルトの名無しさんNGNG
みなさんはmain関数(コマンドライン引数無し)をどう書いていますか?
main() ? void main(void) ? int main() ? その他もろもろ
0358デフォルトの名無しさんNGNG
int main()
0359357NGNG
ちなみに私はmain()です。書かなければint型として見てくれるし。
0360デフォルトの名無しさんNGNG
int main(void)
0361358NGNG
理由
int書かないとwarning出ることがあるから。
0362デフォルトの名無しさんNGNG
>>361

そうなんだ。VC++,bcc32,gccのいずれも出ないからいいのかと思っていたけど。
bcc32でmain()の場合はreturnを書かないと警告が出るけどね。
0363デフォルトの名無しさんNGNG
>>357
全部間違ってるのが悲しい。
0364デフォルトの名無しさんNGNG
>>363

int main(void)が正しいということ?
0365デフォルトの名無しさんNGNG
>>363
意味不明。
0366デフォルトの名無しさんNGNG
mainの第三引数(環境変数)はANSI非準拠なのに、getenv()がANSI Cの標準関数なのはおかしいと思いませんか?
0367デフォルトの名無しさんNGNG
envp age。
0368デフォルトの名無しさんNGNG
int main( int argc, char *argv[ ], char *envp[ ] )
これ以外を使ってる奴は基地外
0369デフォルトの名無しさんNGNG
>>368

変数名なんてどうでもいいじゃない。  
0370デフォルトの名無しさんNGNG
どちらかといえば、368の方がキティ
0371デフォルトの名無しさんNGNG
int main(int, char**)
0372デフォルトの名無しさんNGNG
char main[1] = { 0xC3 };
とかいうのがあったような・・・
0373デフォルトの名無しさんNGNG
実数が等しいかどうかを下のようにイコールで
判定するのは「素人」って、この板で言ってた
人が居たんですけど、玄人はどうやって判定
するんですか?

double a,b;
...
if( a == b ) {
...
0374デフォルトの名無しさんNGNG
>>373

そう言った人が素人
0375デフォルトの名無しさんNGNG
>>373
それで構わないと思うけど、
計算結果を比較する場合は
丸め誤差でちょっとでもずれたりすると
イコールにならないから注意。
0376デフォルトの名無しさんNGNG
どんな場合においても実行時にエラーが起きなければコンパイル時にWARNINGが出ても無視して大丈夫ですか?
大抵はコンパイラによってWARNINGが出たり出なかったりする程度のものなんですが。
0377デフォルトの名無しさんNGNG
>>373
玄人はこのマクロ使う。
てか、資料無しで書いたんで、間違ってたらゴメソ

#define DOUBLE_EQ(x,v) (((v - DBL_EPSILON) < x) && (x <( v + DBL_EPSILON)))
0378デフォルトの名無しさんNGNG
EPSILON・・・・ε←これ?
0379デフォルトの名無しさんNGNG
>>376
警告の内容を理解して、無視して大丈夫かどうかそのつど、判断するしかないね。
警告の内容を理解しないで、闇雲にソースをいじって、無理に消しても
それが、バグの原因になったりするしね。
0380デフォルトの名無しさんNGNG
1+ε≠1 になる最小の値εって定義だったかと。
0381仕様書無しさんNGNG
>>373
整数だろうが実数だろうが、等しいか否かの判定は == 演算子でできる。
問題なのは、実数型の計算の場合、丸め誤差などのせいで予想と違う結果が
出やすいってこと。
とりあえず、

for ( double i = 0; i < 1; i += 0.1 ) {
 cout << i << endl;
}

このコード実行してみな。

>>377
DBL_EPSILON はどこで定義してるんだよ。許容誤差がなきゃ始まらないだろ。
0382デフォルトの名無しさんNGNG
>>381
DBL_EPSILONはfloat.hで定義されてるね…
0383デフォルトの名無しさんNGNG
>>381

LIMITS.Hで定義されているらしい。
あくまでもMSDNライブラリに載っていただけだからANSI C準拠かどうかは分からないけど。
0384383NGNG
違った。FLOAT.Hだ(鬱
同じページに書いてあったから・・・
0385383NGNG
ちなみに、VC++では、
DBL_EPSILON = 2.2204460492503131e-016
と定義され、意味は、
1.0+DBL_EPSILON !=1.0 になるような最小の数
らしいです。
0386仕様書無しさんNGNG
>>381
まともな結果になるんじゃないか?それ。
i < 10 にするなり、i += 0.01 にするなりしないと、誤差は表には現われないと思われ。
0387デフォルトの名無しさんNGNG
>>385
てことは、差をDBL_EPSILONと比較するのはあまり意味がないような。
やっぱ有効数字を設計時に決めておくのがいいと思われ。
0388デフォルトの名無しさんNGNG
#define DOUBLE_EPSILON 0.001
とかって、やればいいのかな?
0389デフォルトの名無しさんNGNG
今までmalloc関数で確保した領域は必ずその関数内でfree関数を使って解放しなければならないと思っていたのですが、
プログラミングC第二版の173ページのstrdup関数の例ではfree関数でを解放していないようです(そんなことをしたらどうなるかくらいは分かります)。

もしかして、場合によっては解放しなくてもよいのですか?
0390389NGNG
× free関数でを
○ free関数で
0391デフォルトの名無しさんNGNG
>>389
>もしかして、場合によっては解放しなくてもよいのですか?

プログラム終了まで確保しっぱなしでも困らない場合は構わない。
でもおすすめできるようなことではない。
0392デフォルトの名無しさんNGNG
>>391

分かりました。ありがとうございます。
0393fjネタNGNG
>>389
> もしかして、場合によっては解放しなくてもよいのですか?
まともなOSかつANSI準拠であれば、exitの直前のfreeはいりません。
0394デフォルトの名無しさんNGNG
>>393

まともでなかったらプログラムが終了しても解放されないということですか?
で、メモリーリークの原因になると・・・・
0395デフォルトの名無しさんNGNG
絶対に関数内でfreeしなきゃならなかったら、困ると思うのだが。
0396デフォルトの名無しさんNGNG
>>394
DOS, Win16, Win32, Solaris, FreeBSD, NetBSD, OpenBSD, Linux あたりは、ぜんぶ問題ない。
っつーか問題がある環境が実例として挙げられた試しがない。(freestanding は除く)
0397デフォルトの名無しさんNGNG
C歴史と伝統と恒例の祭りが始まった!!!
0398デフォルトの名無しさんNGNG
伝統の一戦ですね
0399デフォルトの名無しさんNGNG
>>396
つーことは、組み込み系の人だけ?
mallocを使うのかどうかという問題もあるが。
0400デフォルトの名無しさんNGNG
>>399
ANSI C の規格は二種類あって、組み込みのほうの処理系は普通 freestanding の方を採用
している。で freestanding の方では、そもそも malloc, free は標準関数ではないから、その
あたりは処理系によりけり。

そもそも、巨大な単一ヒープを前提にした malloc, free は、メモリ制約が厳しい環境では使い
モノにならんよね。
0401399NGNG
「ANSI C の規格は二種類」「freestanding」、今初めて聞いた……
0402デフォルトの名無しさんNGNG
> 「ANSI C の規格は二種類」「freestanding」、今初めて聞いた……
なんか誤解してそうだな。
正確に書くと、「ISO/IEC 9899 (ANSI C)に準拠する実装としてはhostedと
freestandingの二種類ある。」てこと。
0403デフォルトの名無しさんNGNG
外部のバイナリファイルからデータを読み込んで、
色々と操作する関数を書いているのですが、
それをライブラリとして使うようにした場合に、
外部のデータもライブラリとしてまとめてられるのでしょうか?

できれば、winとlinuxの両方で、やり方が知りたいのですが…。
0404デフォルトの名無しさんNGNG
>>403

外部のデータが何を指しているのか分からない。
0405デフォルトの名無しさんNGNG
>>403
・・・はい?
外部のデータって、「外部のバイナリファイル」なんでわ?
ライブラリとしてまとめる???
サパーリ妖精が出そう。
0406デフォルトの名無しさんNGNG
ぶっちゃけなんでポインタってあるの?
0407デフォルトの名無しさんNGNG
アセンブラでできることがCでできないと困るから。
0408デフォルトの名無しさんNGNG
>>406

配列を関数に渡せないから。(←初心者発言)
0409デフォルトの名無しさんNGNG
>407
どゆこと?
>408
・・・・そうだね(冷笑)
0410デフォルトの名無しさんNGNG
そうなんだよね。配列をスタックに積んでくれないんだよね
なんか方法ある?
0411C++忘れかけNGNG
>408
ポインタで、関数配列とか…
0412デフォルトの名無しさんNGNG
typedef で配列を宣言できないの?
0413デフォルトの名無しさん NGNG
添え字計算だと遅いから(←原始人
0414デフォルトの名無しさんNGNG
ポインタは熱いんだYO!
C言語マンセーーーー!!!!
参照なんて捨てちまえ!!!!
* このうめぼし見ただけで唾が出てくるぜ!
**(*(ptr[3])[3]);
うおーーーーーーー (オーバーラン)アヒャっ
0415デフォルトの名無しさんNGNG
>414
やはりポインタは危険だな。
0416デフォルトの名無しさんNGNG
>>410
構造体にする。
0417デフォルトの名無しさんNGNG
age
0418デフォルトの名無しさんNGNG
文字列が扱えなくなるから
0419デフォルトの名無しさんNGNG
>>416
確かに構造体にすれば配列でも渡せるけど、例えば1MBの配列をそうやって
渡すのはとんでもなく非効率的だし、下手するとスタックが足りなくなる
からねえ…。
0420デフォルトの名無しさんNGNG
>>406
C言語ってのはな、もっと殺伐としてるべきなんだよ。
メモリ操作で「どこが間違ってんだよぉ?」いつモニタに喧嘩を売り始めてもおかしくない、
アクセス違反が起きるか起きねーか、そんな雰囲気がいいんじゃねーか。
まあお前、>>406は、VBでも使ってなさいってこった。
0421デフォルトの名無しさんNGNG
>>419

ただ関数内で参照するだけなのに、データ自体をコピーするなんて非効率的だよね。
在処さえコピーすればいいんだから。そのためにはポインターは必須。
0422デフォルトの名無しさんNGNG
>>421 参照でもいいじゃん
0423デフォルトの名無しさんNGNG
>>422
そもそも「ポインタの存在意義は何か」って話に対して「配列を効率よく関数間で渡すこと」という
意見が間違ってると思われ。それなら >>422 が言うように参照でも良いし、参照回数計測 +
copy on write を言語の機能として実装してしまってもいい。

C でポインタがあるのは、言語仕様を小さく押さえつつ、高度なデータ構造、たとえばリストやツリー
などをプログラマが実装できるようにするためでしょ。
0424デフォルトの名無しさんNGNG
どどど素人意見ですが。
>>423
VBでも実装できるんじゃぁないんすか?
リスト&ツリー

参照ではだめでポインタを使わねば!っていう
具体例を俺もしりたーい!
0425デフォルトの名無しさんNGNG
ビデオメモリの読み書き(DirectDrawとか)
0426デフォルトの名無しさんNGNG
参照といっても、Javaのクラス変数みたいに、
ポインタっぽく扱えるものであれば、それで済むのです。

C++の参照は、柔軟性に乏しく、用途が限定されてるので、
ポインタでないとダメなのです。

単にそれだけのことです。
0427デフォルトの名無しさん NGNG
>>414みたいな人は多くないかい (´д`;)
Cやってるといつも頭の中に2次元配列の2次元配列の2次元配列
みたいなのがグルグルしてくる。。。3次元ってのはおかしいよなあ・・・・
0428デフォルトの名無しさんNGNG
>>426
C++の参照とJavaの参照を比べないで欲しい。
Javaのは参照という名前のポインタ。
0429デフォルトの名無しさんNGNG
ポインタ=参照+イテレタ+キャストに係る邪悪なα
0430デフォルトの名無しさんNGNG
>>407 で答えが出てるだろうに..
参照とか文字列とかそんなものぜんぜん違う次元の話しだ。
0431デフォルトの名無しさんNGNG
>>430
システム記述言語として誕生した初期の C では正解だけど、現在の ANSI C の規格の背景は? って
ことになると、微妙に違う気がする。

ポインタに関して単に「メモリアドレス」と書かずに、あれだけ微妙な言い回しをしているのは、それなりの
意味があると思わん?
0432デフォルトの名無しさんNGNG
メモリアドレスという概念がOSごとに微妙に異なるから、
言語の定義としてポインタ=メモリアドレスと明示的に定義することを
避けたんだ。

アドレス=ポインタは、C++に派生してもその意義は失われていない。
その中でも唯一扱いが異なるのはNULLポインタだが、
そこまで言及する必要もないだろ。
0433デフォルトの名無しさんNGNG
もちろん、OSのないアーキテクチャ上でCのプログラムを動かすことだってできるし
そういうものも多いよね。
0434組長NGNG
16進数がテキスト形式(“f4c6・・・・”みたいな感じ)
で書かれたファイルを読み込んで、
int変数まで持っていくプログラムを考えています。
atoi()とsscanf()を使えば簡単と思っていたんですがなかなかできません。
どなたか教えてくだし。
0435デフォルトの名無しさんNGNG
いやすげえ簡単だろ、それ
0436デフォルトの名無しさんNGNG
数字なら0x30アルファベットなら
0x37をひけ。
0437デフォルトの名無しさんNGNG
>>436

アルファベットって二種類あるよ。
0438デフォルトの名無しさんNGNG
バイトオーダーの問題?
並び順はテキスト作った人にしかわからん。
0439デフォルトの名無しさんNGNG
>>434
strtol (stdlib.h)
0440デフォルトの名無しさんNGNG
>>434

char *hex;
int i;

sscanf(hex,"%x",&i);

こうしたらできたけど。
もちろん、hexは初期化してね。
0441440NGNG
あ、テキストから読むのか。
0442 NGNG
strtol()って16進数でもいいの?
0443デフォルトの名無しさんNGNG
>437
それぐらい判断してからひけ。それかマスクしろ。
0444デフォルトの名無しさんNGNG
>>442

10進数字列として数値にすると思うけど・・・
アルファベットの無い16進数字列は10進数字列と見分けがつかないし。
0445デフォルトの名無しさんNGNG
おっと、strtolは基数を指定するんだ(鬱
0446デフォルトの名無しさんNGNG
>>442,444
マニュアル見ろや。2進から36進まで可能。
0447デフォルトの名無しさんNGNG
>>446

すまない。名前しか知らない関数でatolと同じものだとばかり思っていた。
0448デフォルトの名無しさんNGNG
>>442
long int strtol(const char *nptr, char **endptr, int base);
0449447NGNG
メール欄に444と入れてしまった(鬱
もう寝よう・・・
0450デフォルトの名無しさんNGNG
>>434

int i;
char hex;

if((( hex & 0xff ) > 0x30) && (( hex & 0xff ) < 0x7a)){
if(( hex & 0xdf ) < 0x41 )
i = hex-0x30;
else
i = hex-0x37;
}
0451デフォルトの名無しさんNGNG
char *p="abcde\0";
p=realloc(p,64);
できる?
さいごにfree(p);
で問題ない?
0452デフォルトの名無しさんNGNG
>>451

reallocはmalloc,callocで確保した領域にしか使ってはならない。freeも同様。
0453デフォルトの名無しさんNGNG
ちぇ!明日やろうと思ってたんだけど
今やったんだけどできなかった。
あーあ。
0454デフォルトの名無しさんNGNG
char *p=strdup("abcde\0"); なら可
0455デフォルトの名無しさんNGNG
¥0は要らないと思うけどーー
0456デフォルトの名無しさんNGNG
>>450
うちの会社のCコンパイラでは動かないんですけど
0457デフォルトの名無しさんNGNG
うちの幼稚園のCコンパイラでも動かないんですけど
0458デフォルトの名無しさんNGNG
WindowsとUNIXで使ってる文字コードがすべてだと思ってるかわいそうな人なんだよ。
0459デフォルトの名無しさんNGNG
>>456
コンパイラに何つかっているの?
それとOS。
0460デフォルトの名無しさんNGNG
hitac-cとかでは?
0461デフォルトの名無しさんNGNG
ふつー動かん。
0462デフォルトの名無しさんNGNG
i_random(int n)っていう0-nの整数の乱数を取る関数があります。
で
for(i=0;i<N;i++){
a[i]=i_random(n);
}
ってやってa[i]に乱数をポコポコ入れていきたいんですが、
a[i]!=a[j](j<i)という条件をいれたいんです。
で、do-whileとかつかうのかなぁと考えたんですが、
どうすりゃいいのかさっぱりわかりません。どうすりゃいいですか?
0463デフォルトの名無しさんNGNG
重複を無くしたいの?
a[]に0〜Nまで入れて、
位置をランダムに変えればいいYO!
0464Kusakabe YouichiNGNG
>>462 デフォルトの名無しさん wrote:
> で、do-whileとかつかうのかなぁと考えたんですが、

そんなダサいやつでいいのならば、
たとえば、
for (i
0465デフォルトの名無しさんNGNG
いや、そうじゃないんすよ。
ええっと、N<nなわけで。
簡単に言うと、N=10でn=100で、

a[N]=[10,53,75,4,32,87,44,39,1,24]
みたいにしたいわけです。
でa[N]=[1,1,5,96,47,76・・]とか[5,4,47,87,35,32,47,・・]
とかはだめと。そんなかんじなんです。
0466Kusakabe YouichiNGNG
In article <[email protected]>, デフォルトの名無しさん <2
[email protected]> wrote:
> いや、そうじゃないんすよ。

なんでだめなんだろう(^^; > do-whileで、すでに使ったのは使わないように
する泥臭い方法:)
0467デフォルトの名無しさんNGNG
>466
いや、それでもかまわないす。
でも、それでどうかけばいいのか。

for(i=0;i<N;i++){

do{
a[i]=i_random(n);
}while()←ここになんと書けばよいのでしょう?
0468デフォルトの名無しさんNGNG
0〜100までの値を重複無しで10個ランダムに作成したいって事?
0469デフォルトの名無しさんNGNG
そういうことっす。
0470デフォルトの名無しさんNGNG
do-while使わなければいいじゃん。
forでやれ。
0471デフォルトの名無しさんNGNG
そっか!!
0472デフォルトの名無しさんNGNG
int included_p(const int *ary, int num, int val)
{
  int i;
  for (i = 0; i < num; ++i) {
    if (val == ary[i]) return 1;
  }
  return 0;
}


for (i = 0; i < N; i++) {
  do {
    a[i] = i_random(n);
  } while (included_p(a, i, a[i]));
}

ただし、乱数に偏りがあると遅くなる危険性はある。

もしnがNに比べてそう大きくないなら、
>>463のやり方でn個の乱数列を作ってからN個取り出すとか。
0473デフォルトの名無しさんNGNG
頑張って作ります。ありがとうございました
0474Kusakabe YouichiNGNG
>>46 デフォルトの名無しさん wrote:
> でも、それでどうかけばいいのか。
> do{
> a[i]
0475デフォルトの名無しさん NGNG
UNIXで大きなテキストのお尻500行とか抜きたい時
真C屋さんな皆さんならどうしますか? 低レベルの方が速いですかね
tail読めって言うのは無しの方向でお願い出来ますでしょうか(^^;
0476Kusakabe YouichiNGNG
>>475 デフォルトの名無しさん wrote:
> UNIXで大きなテキストのお尻500行とか抜きたい時
> 真C屋さんな皆さんならどうしますか? 低レベルの方が速いですかね
> tail読めって言うのは無しの方向でお願い出来ますでしょうか

tail読め。
0477デフォルトの名無しさんNGNG
やっぱり(^-^
こう言うのってレベル高い人には一番面白く無さそうですよね
低レベルでシコシコやってみるです。。。
関数も全部突っ込んで。。。main一個で
tail読めるかなあ。。。。
0478デフォルトの名無しさんNGNG
>>477
基本的には

1. fseek() 使ってファイルの最後に移動

2. getc() などで 1 バイト読み出す
3. fseek() 使って、ファイル位置を 1 バイト前に移動
4. goto 2

でぐるぐる回すだけじゃない。'\n' が出てきたら行の区切り目ということで。
0479デフォルトの名無しさんNGNG
>456
あんたの使ってる糞マシンの文字コードに合わせればいい。ただそれだけ。
0480デフォルトの名無しさんNGNG
>>472
そういうのって、毎回重複をチェックするんではなくて、
あらかじめ乱数を生成しといて、あとでシャフルするのが
定石だと思うけど。
0481デフォルトの名無しさんNGNG
>>478
unixだったらそれでいいけど、移植性なくなるよね。
0482デフォルトの名無しさんNGNG
>>481
fseek() は ANSI C 標準関数だけど。(そういう話じゃなくて?)
0483デフォルトの名無しさんNGNG
>>482
テキストモードだと、3.の動作が保証されないみたい。
http://www.bohyoh.com/CandCPP/C/Library/fseek.html

バイナリモードだと、dosやmacで、\nが使えないし。
0484デフォルトの名無しさんNGNG
>>483
あとマルチバイト文字の扱いを考え出すと、話が厄介になるね。
0485デフォルトの名無しさんNGNG
ファイルを頭から読んでいって、改行が見つかるたびにファイル位置を
記録していった方が楽じゃない? ファイルの最後に達したところで、
500行手前のファイル位置へseekしてそこから先を表示すればOK。

この場合、全ての行のファイル位置を記録する必要はなくて、戻りたい
行数分の位置を格納できるバッファだけを確保すればよい。
0486デフォルトの名無しさんNGNG
たしか、GNUのtailは、ファイルポインタを一気に
最後尾まで移動して、後ろから順番にみていってた
ような記憶がある。
0487デフォルトの名無しさんNGNG
一旦EOFにfseek()、ブロック単位で先頭に向かってfseek()&fread()、'\n'の
数を数えていく。
0488デフォルトの名無しさんNGNG
>>487
がいしゅつなんてもんじゃないな。>>483読め。
0489475 NGNG
みなさんご回答有難う御座います。これはちょっと意地悪問題みたいなのでして
最低でもtail位の実行時間で、だそうです 鬱
readとlseekでやってみようと思います、後はなるべくインラインにして、、
普段ジャバ夫で、ざっくりしたのしか書かないので、こう言うの超苦手なんです
心がおもひ
失礼します
0490487NGNG
>>488
DOSでも'\n'があれば改行とみなしてもいいんじゃないの。

'\r\n'ペアだけを改行とみなしたい場合も、ブロック境界に跨ったときの判断
が若干複雑になるだけで、バイナリでオープンすればとくに問題になるような
こともないし。

>>478との違いはブロック単位のI/Oで高速化を図るだけだが。
0491あははNGNG
誰か教えてください。以下の関数がよくわかりません。自分の買った本にも
載ってないので・・・
assert  <assert.h>
isprint <ctype.h>
malloc  <stdlib.h>
free   <stdlib.h>
多くてすいません。でもお願いします。
0492デフォルトの名無しさんNGNG
>>491 自分の買った本ってCの本ですか?ジャンプには載ってませんよ?
0493あははNGNG
>>492
ジャンプってマンガ雑誌の?なんでそんなものに・・・

当然C言語の本です!
0494デフォルトの名無しさんNGNG
>>491
man
ttp://www.linux.or.jp/JM/
0495デフォルトの名無しさんNGNG
>>491
☆assert
assert(i == 0);
などと書くと、i が 0 以外のときはプログラムがエラー終了します。

☆isprint
何か文字があったとき、それが表示できるものかどうか調べます。
例えば 'A' とか 'B' とかは表示できる文字で、'\0' とかは
表示できない文字です。

☆malloc
メモリを確保します。
malloc(100000) ってやると、メモリが 100000 バイト確保されます。

☆free
確保したメモリが要らなくなったら、free で解放します。

これでOK?
0496デフォルトの名無しさんNGNG
malloc/free すら載っていない C の本って…
0497 NGNG
>>496
よく見たら”++”があって、new、deleteの解説にちっこく載ってたりして。
0498デフォルトの名無しさんNGNG
ANSI C言語辞典(技術評論社)買え。
0499デフォルトの名無しさんNGNG
その前にK&Rだろ。
0500デフォルトの名無しさんNGNG
その前に「はじめてのC」だろ。
0501デフォルトの名無しさんNGNG
その前に「はじめてのB」だろ。
0502デフォルトの名無しさんNGNG
その前に「はじめてのCASL」だろ。
0503デフォルトの名無しさんNGNG
C言語でマイナス無限大からプラス無限大への積分はどうやったらいいのでしょうか? 無限という概念はなさそうなのでどうしたらいいのかわかりません。
わかる方いたら教えてください。
初心者ですみません汗
0504Kusakabe YouichiNGNG
>>503 デフォルトの名無しさん wrote:
> C言語でマイナス無限大からプラス無限大への積分はどうやったらいいのでしょ
うか?

だいたい同じですよ > Fortranのときのやりかたと
0505デフォルトの名無しさんNGNG
積分範囲が有限範囲に収まるように式を書き直してから計算したら?
0506デフォルトの名無しさんNGNG
積分を計算可能な式に解いてから計算すれ。
0507デフォルトの名無しさんNGNG
はじめて〜の〜チュウ
0508あははNGNG
>>495
よくわかりました。ありがとうございます。

>>496
明解C言語です。索引のところに載っていないので・・・

>>498.499.500
それらの本は自分には難しくて・・・
0509デフォルトの名無しさんNGNG
新しく、2ch言語というのを作ろうと思うんだけど、皆どう思う?
0510デフォルトの名無しさんNGNG
>>509

gotoの代わりに逝ってよし!とか?
0511デフォルトの名無しさんNGNG
これ以上 意味の無い言語を増やすな。
0512デフォルトの名無しさんNGNG
とりあえず、ギコBASIC完成させろ
0513デフォルトの名無しさんNGNG
どうでもいい質問ですが、よろしければ教えてください

リスト構造で頭に新しいデータを入れるものですが
1と2のどちらの方がいいのでしょうか?
処理速度やメモリ使用量などが変わるのでしょうか?

struct LIST{
struct LIST *next_ptr;
int value;
};

main(){
struct LIST *top;
int i;

top=insert1(top, i); >1

insert2(&top, i); >2
}

struct LIST *insert1(struct LIST *ptr, int i){
struct *newcell;
newcell=(struct LIST *)malloc(sizeof(struct LIST));

newcell->next_ptr=ptr;
newcell->value=i;

return(newcell);
}

struct LIST insert2(struct LIST **ptr, int i){
struct LIST *newcell;

newcell=(struct LIST *)malloc(sizeof(struct LIST));

newcell->next_ptr=(*ptr);
newcell->value=i;

(*ptr)=newcell;
}
0514デフォルトの名無しさんNGNG
>>513
1 は使い方を間違う可能性がありそう。戻り値を入れ忘れるとか。
2 なら間違いは起きまい。おれ的には 2 を推奨。
0515デフォルトの名無しさんNGNG
headとtailのポインタもって、尻尾に追加していったほうが使いやすいと思う。
0516デフォルトの名無しさんNGNG
キーボードバッファをクリアする為に

rewind(stdin);

とするのは良くないでしょうか?
0517デフォルトの名無しさんNGNG
rewind・・・?
またワケのわからんことを・・・

標準入力がコンソールの場合は知りませんが、
標準入力がファイルにリダイレクトされてたりすると、
クリアどころか先頭に戻って入力し直しになる気がする〜。
0518デフォルトの名無しさんNGNG
UNIXでプログラムをつくっているのですが、
三次以上の配列をつくるとすぐに
Segmentation fault
とでてしまいます。
また、一次の配列でも千以上のものを2つとると同じような状況になります。
メモリ不足なのでしょうか?
これを解決しないと僕の卒研が進まないので
だれかわかる方、教えていただけないでしょうか?
0519デフォルトの名無しさんNGNG
その糞コードを晒してくれないと答えようもない。
0520デフォルトの名無しさんNGNG
>>518
かなり FAQ ですが、配列を自動変数で取ってますね? 自動変数は、一般には
スタックという比較的狭いメモリ領域に配置されるため、巨大な配列を取るとスタッ
クを使い切ってしまいます。

1. グローバル変数として宣言する
2. 関数内 static 変数として宣言する
3. malloc を使ってヒープ領域に確保する

いずれかの方法をとってください。
0521デフォルトの名無しさんNGNG
たぶんスタックの使いすぎ。
mallocを使ってミロ。
0522デフォルトの名無しさんNGNG
>>518
それにしても、一次元配列で「千以上のものを2つ」で、
落ちるってのは小さすぎるな。せいぜい数キロから数十キロだろ?
10年くらい前のパソコンでもそのくらい平気なはずだけど。
0523デフォルトの名無しさんNGNG
UNIXってスタックあふれるとsegmentation faultなん?
0524デフォルトの名無しさんNGNG
>>522
スタックサイズは環境による。

科学計算系のプログラムっぽいから
配列は一個だけじゃないんだろうよ。
0525516(初心者)NGNG
>>517
レスありがとうございます。

fflush(stdin)は良くないと聞いたので(C FAQ 12.26も見ました)、
何かいい方法は無いものかと調べたところ、MSDNライブラリに

> キーボード バッファをクリアするには、
> デフォルトでキーボードに結合している
> 標準入力ストリーム (stdin) に対して
> rewind 関数を使います。

と出ていたので、これなら大丈夫なのかと思ったのですが、
やっぱり問題があるみたいですね。。。
「標準入力がファイルにリダイレクトされている」というのが
どういう事なのかよく解りませんが、そこは勉強します。
0526デフォルトの名無しさんNGNG
Windows NTで、

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   FILE *fp;
   if((fp = fopen("C:/abc/test.txt", "r")) == NULL) { /* フルパス指定でファイルをオープン */
     puts("File not open !!");
     exit(1);
   }else{
     puts("File opened");
   }
   fclose(fp);
   return (0);
}
とすると、ファイルが開けなくて、"File not open !!"となってしまうのですが、
どうしてなのでしょうか?
Windows95だとちゃんと動くんだけど・・。

どうか、教えてください!
0527デフォルトの名無しさんNGNG
>"C:/abc/test.txt"
"C:\\abc\\test.txt"じゃない?
0528デフォルトの名無しさんNGNG
>>522
環境によるけど、OS の制限ではなくシェルで limit かけてる可能性もある。その
場合にはシェルのコマンド (ulimit とか) で、OS の制限まではスタックを増やせる
ね。

>>523
前に BSD 系のカーネル読んだけど、確か

- ユーザプロセスのスタックサイズは可変
- スタック用に確保してある仮想メモリの上限部分に「読み書き実行禁止」属性をしていた
 ページ (*1) を貼り付けておく。

となっていたと思う。(*1) にアクセスするとページフォルトが発生するので、それを OS が
検出して

1. 現在、スタックサイズは OS や (BSD 系だと setrlimit で指定した) プロセスの
 上限値にひっかかってないか?
2. 上限に達していなければ、スタック用に「読み書き実行可能」属性のページを
 割り当てる。
3. 上限に達していれば、プロセスにシグナル (SIGSEGV) を送る。

という感じで処理。今ソースが手元にないので、間違ってたらごめんな。
0529デフォルトの名無しさんNGNG
>>526
とりあえず、エラーは perror() で表示しよう。その方が詳しい原因が
分かるよ。
0530デフォルトの名無しさんNGNG
>>526

アクセス権の問題とか?
0531デフォルトの名無しさんNGNG
たぶんファイル名を区切る / がマズイんではないかと。
0532デフォルトの名無しさんNGNG
実は単にファイルが無いだけとか・・・
0533デフォルトの名無しさんNGNG
超厨房です。スマソ
Cって変数をスコープの最初にまとめて宣言するじゃないですか。
あれって変数を使用する個所と宣言が離れてしまって気持ち悪いんで
たとえばifとかforなどでは、
for(;;) {
int a; /* a, b ともfor内だけのローカル変数 */
int b;
--- a, b を使用 ---
}

ってな具合にしたいんですが、これって
int a;
int b;
...
for(;;) {
--- a, b を使用 ---
}
って書いた場合よりパフォーマンスの面で問題あるんでしょうか。
それともコンパイラの最適化とかいうもののおかげで問題ないのでしょうか。
(過去ログもあんまり読んでません。再度スマソ)
0534デフォルトの名無しさんNGNG
>>533
なんだそのへりくだった態度は?

つーのはさておき
まじでなんでだろね。オレも疑問。
0535デフォルトの名無しさんNGNG
>>533
構文解析器が作りやすい。
0536デフォルトの名無しさんNGNG
NULLが臭くない?
0537533NGNG
>>534
2chで初めてポストしたんでびびってました(ます)。
ってか厨房ってのはほんと。
で、もとの質問なんですが、ローカルに変数を宣言してもコンパイルは
通るんで、できればそうしたいんですが、普通そうしていないというのは
(少なくとも漏れが見たソースの範囲で)、
>>535
という理由だけでなくてパフォーマンス的に実際問題あるってことなんでしょうか。
そこがずばり疑問なわけです。
0538デフォルトの名無しさんNGNG
厨ですいませんが、
atoiの逆の関数ってないでしょうか。
数を文字列にしたいんです。
たとえば
int a = 123 を
char b[] = "123"
みたいに。
上の桁から数字を取り出して
b[i] = 数字 + '0'
b[おわり] = '\0'
とかやってみたんですが、
もっとスマートな方法でなんとかしたいんです。
0539デフォルトの名無しさんNGNG
>>という理由だけでなくてパフォーマンス的に実際問題あるってことなんでしょうか。
ない。
昔の言語は使う変数は最初に宣言するのが普通だった。
その名残なんじゃないの。
0540デフォルトの名無しさんNGNG
>>538
sprintf( b, "%d", a); とか。
バッファオーバーフローが怖いなら sn 系とか
バッファかました関数作るとかてきとーにやってくれい。
0541デフォルトの名無しさんNGNG
>>538
C FAQ 読みましょう。
http://www.faqs.org/faqs/C-faq/faq/

> 13.1: How can I convert numbers to strings (the opposite of atoi)?
> Is there an itoa() function?

URL 忘れたけど、どこかに日本語訳もあったはず。
0542540NGNG
s/オーバーフロー/オーバーラン/
0543デフォルトの名無しさん NGNG
何だ???マジレスしちゃダメなのか(´д`;)??
>>533
俺も厨房だけど、スコープ絞りたいなら最適化されると困るんじゃないの?
ていうか初期値代入するのにまたカッコで括って、、、
余計ややこしそうな気がするけど
ifはともかくループの中でそんな事出来るんだろうか??
0544デフォルトの名無しさんNGNG
>>540-541
ありがとございました。
0545533NGNG
>>539
ありがとうございました。
といいたいところでしたが、
>>543
意味がよくわかりませんでした。やっぱ漏れって厨房だね。
0546デフォルトの名無しさんNGNG
>>543
ループスコープで宣言するのは可。
ふつースタックフレーム(古いね)に展開するから
宣言の手間は構文解析→変数配置の時点で終了しているはず。
ちゃうの?
0547デフォルトの名無しさんNGNG
>>533
Javaやればそんな事は忘れちまうぜ!

for( int i=0;i<10;i++){

}
0548デフォルトの名無しさんNGNG
>>547
スレ違い――と言おうかと思ったけど、せっかくだから聞いておこう。Java だと、
そうやって i を定義した場合、実行時効率に差が出る? バイトコードのレベル
と、最近の JVM で JIT かけた場合と、両方について簡単にコメントもらえると
嬉しいかな。
0549546NGNG
眠くなってきたよ…おやすー
0550533NGNG
>>546
ループスコープの中で宣言しても外で宣言しても、スタックフレームに
展開した時点で結果は同じになるのでしょうか?
0551533NGNG
>>550
行き違いスマソ。おやすみなさい。またよろしく。
(当方アメリカ在住)
0552あやふやな人NGNG
>>548
違わないんじゃないかなぁ。
変数はスタックに積まれるだけだし、
どのタイミングで積んでも実行効率変わらないんじゃない?
JITだろーとなんだろーと最適化しないし(現時点では)

ただ、しょっちゅうループ変数に i 使うなら
変数の寿命を延ばした方が (つまり先頭で宣言しとく)
実行速度は当然速くなるんじゃないかなぁ?
宣言する=(スタックに)領域確保する=処理発生 だしさ
ってこれは何の言語でもおなじだーね

どうだろ?
0553デフォルトの名無しさんNGNG
>514
お答えありがとうございます
私も今まで2しか使っていなかったのですが
ふとWebで1をみましてどうなのかとおもいました
今後も2を使うことにします

>515
順不同で集合として保持したいだけなので
スタックっぽく使ってました

>533 >543
↓やってみました
ループ内ではやはり毎回宣言してしまいますね
ifなら使えますね

main(){
int i=0;
for(;;){
int a=0;
printf("i=%d a=%d\n",i,a);
a=a+1;
printf("i=%d a=%d\n",i,a);
i=i+1;
if(i==3)break;
}
printf("\n");
if(1){
int b=0;
printf("i=%d b=%d\n",i,b);
b=b+1;
printf("i=%d b=%d\n",i,b);
}
}

結果
i=0 a=0
i=0 a=1
i=1 a=0
i=1 a=1
i=2 a=0
i=2 a=1

i=3 b=0
i=3 b=1
0554あやふやな人NGNG
int i,j;
for(i=0;i<1000;i++)for(j=0;j<1000;j++);
ってのと

for(int i=0;i<1000;i++)for(int j=0;j<1000;j++);
ってのは

やっぱ外側のループが大きくなればなるほど
速度に差がでるんじゃないかなぁ
0555デフォルトの名無しさんNGNG
>553
はげしい間違いでした。逝ってきます
0556デフォルトの名無しさんNGNG
>>533
漏れもわからんかったから期待してスレ見てたけど余計わからん。
だれかびしっと答えてくらさい。もう寝るけど。
0557デフォルトの名無しさんNGNG
>>556

int a,b;
for(;;){

と

for(;;){ int a,b;

なら明らかに後者の方が遅くなりそう
最適化しなければ
Cじゃこれは出来ないからまあ置いといて

>>533の例だとパフォーマンスに差は出ようもないよ
0558デフォルトの名無しさんNGNG
a, b が1度しか出てこないなら変わらない
何度も出てくるなら初めに宣言した方がいい
と言う事でよろしいでしょうか?

>あれって変数を使用する個所と宣言が離れてしまって気持ち悪いんで

色んな所に宣言がある方が気持ち悪いのは漏れだけでしょうか?
0559Kusakabe YouichiNGNG
>>533 デフォルトの名無しさん wrote:

> 超厨房です。熟ソ
> Cって変数をスコープの最初にまとめて宣言するじゃないですか。

べつに途中でもOKですよ。

> あれって変数を使用する個所と宣言が離れてしまって気持ち悪いんで

それはそのコードが整理されてないからでしょう。

> たとえばifとかforなどでは、
> for(;;) {
> int a; /* a, b ともfor内だけのローカル変数 */
> int b;
> --- a, b を使用 ---
> }

すればいいじゃん。

> ってな具合にしたいんですが、これって
> int a;
> int b;
> ...
> for(;;) {
> --- a, b を使用 ---
> }
> って書いた場合よりパフォーマンスの面で問題あるんでしょうか。

ないでしょうね。

もしくはfor (int a = 0;;)みたいにするか。
0560Kusakabe YouichiNGNG
>>538 デフォルトの名無しさん wrote:
> atoiの逆の関数ってないでしょうか。
> 数を文字列にしたいんです。

sprintfでは重すぎ?
0561デフォルトの名無しさんNGNG
int main(){
..
 {
   int a,b;
  for(;;){}
 }

と

for(;;){
  int a,b;
}
だとどうでしょうか。
0562デフォルトの名無しさんNGNG
>>561 → >>557
0563561NGNG
>>562
あ、スマソ。寝ぼけてきたみたい。回線きって逝きます。
0564553NGNG
> なら明らかに後者の方が遅くなりそう
> 最適化しなければ
これは>>533で書いたのと同じなのではないですか?
こちらでは遅くなりそう、なのに
>>533の例だとパフォーマンスに差は出ようもないよ
では変わらないというのはどういうことでしょうか。
ところで、
> Cじゃこれは出来ないからまあ置いといて
コンパイルは通るんですが(gcc,VC共)、だめなんでしょうか?

コンパイラが最適化してくれるということも含めて、
1)
int a,b;
for(;;){ }

2)
for(;;){ int a,b; }
ではスタックフレームでの変数の配置のされかたという点で
違いはあるのでしょうか。
>>553 の結果ではもしかして変数は同じ個所に配置されていて
ループごとにa,bに0が代入されているのかもしれないと思ったり。

>>559
質問でスレ伸ばしてスマソ。
このあたりのことについての厨房向けの書籍などあったら教えてください。
修行して戻ってきます。
0565Kusakabe YouichiNGNG
>>550 533 wrote:
> >>546
> ループスコープの中で宣言しても外で宣言しても、スタックフレームに
> 展開した時点で結果は同じになるのでしょうか?

コンパイラーにもよりますが、
その同じ変数名を中と外で使っているような場合でない限り、
同じコードがでてくるのがふつうでしょうね。
0566Kusakabe YouichiNGNG
>>552 あやふやな人 wrote:
> ただ、しょっちゅうループ変数に i 使うなら
> 変数の寿命を延ばした方が (つまり先頭で宣言しとく)
> 実行速度は当然速くなるんじゃないかなぁ?
> 宣言する=(スタックに)領域確保する=処理発生 だしさ
> ってこれは何の言語でもおなじだーね

あのー、何か勘違いしていませんか?
0567Kusakabe YouichiNGNG
>>557 デフォルトの名無しさん wrote:
> int a,b;
> for (;;) {
> と
> for (;;) { int a,b;
> なら明らかに後者の方が遅くなりそう
> 最適化しなければ

いったい、どこが「あきらか」なんだろう?

> Cじゃこれは出来ないからまあ置いといて

なんで「できない」とか勝手に思い込んでいるんだろう?
0568デフォルトの名無しさんNGNG
>>566
for文のなかで宣言するより外で宣言した方がそりゃはやいだろ
0569デフォルトの名無しさんNGNG
>>Kusakabe
根拠示せ
0570Kusakabe YouichiNGNG
>>558 デフォルトの名無しさん wrote:
> a, b が1度しか出てこないなら変わらない
> 何度も出てくるなら初めに宣言した方がいい
> と言う事でよろしいでしょうか?

「何度も出てくる場合に各スコープで宣言していると遅くなる」は
デマですよ。(少なくともauto変数をスタックに確保する処理系では)
信用しないように。

しくみがどうのの解説をここでするのもいいのですが、

それ以前に、カーニハン氏の「効率を云々するならまず測定せよ」という
言葉をプリンターで印刷して画面の上に貼ってください。
0571デフォルトの名無しさんNGNG
>>Kusakabe
測定結果示せ
0572553NGNG
>>565
ありがとうございます。納得しました。
漏れネット歴も浅いんで良く知らんのですが、なんかすごい人らしいですね。
0573デフォルトの名無しさんNGNG
よくわからないけどcygwinのgccではできました
>553は
int a=0
にしてるから毎回0が入ってるだけかと
ループ内でも宣言は1度だけで値は保持してます

for{
int a;
a=a+1;
}

だとaは1ずつ増えていきます
0574デフォルトの名無しさんNGNG
>570
てことは変わらないんですね
さすがに速くなるはないですよね?w
0575Kusakabe YouichiNGNG
>>568 デフォルトの名無しさん wrote:
> >>566
> for文のなかで宣言するより外で宣言した方がそりゃはやいだろ

なんでそう思い込んでいるのですか?
0576デフォルトの名無しさんNGNG
>>568-569
Kusakabe は放置の方向でお願いします。

まともに技術的な話をしている分には相手にして構いませんが、思い込みでいい加減
な事を言い出したら、取り合わないで下さい。こちらから質問しても、はぐらかされた回
答がくるだけで、スレが荒れる原因になります。
0577デフォルトの名無しさんNGNG
>>573
それって問題コードだと思うよ・・・
初期値不定なところで、たまたまスタック上の同じ場所に
aが確保されてるだけだから。
0578Kusakabe YouichiNGNG
>>569 デフォルトの名無しさん wrote:

> >>Kusakabe
> 根拠示せ

...

# 入門書から勉強しなおしたほうがいいぞ :)
0579Kusakabe YouichiNGNG
>>574 デフォルトの名無しさん wrote:
> >570
> てことは変わらないんですね

でしょうねえ。変わるような実装はまずないでしょう。

> さすがに速くなるはないですよね?

遅くなる実装の存在する確率と同じぐらいでしょう > 速くなる
0580Kusakabe YouichiNGNG
>>576 デフォルトの名無しさん wrote:
> >>568-569
> Kusakabe は放置の方向でお願いします。
>
> まともに技術的な話をしている分には相手にして構いませんが、思い込みでいい
加減
> な事を言い出したら、

っていうか「思い込みでいい加減なことを言って」が誰かを考えてみるといいです
:)
0581デフォルトの名無しさんNGNG
>>575
ああっと!
今分かった。オレの勘違いだ。すまん。速度に差は出ないや。

だけど、変数が初期化されずに使われるワーニングを恐れて
int a=0,b=0;
for(;;)
ってのと
for(;;){int a=0,b=0;
ってのを比べたら確かに後者の方が遅い・・・のかな?
まー なんでコード書くのですか? って言われるだけか
0582デフォルトの名無しさんNGNG
つーかさー毒舌もいいんだけどさー、
せっかく正解知ってるんだったらとっとと教えてくれよ
プログラマとしちゃ優秀かもしれんがヒトとしちゃなってないぜ?
0583573NGNG
>577
aは初めにifで1回だけ0を入れてうまくいったんですが
たまたま同じ場所を確保したら値が残っててうまくいっただけなのですね
先頭以外で宣言したことないのでよくわかりません・・・
0584Kusakabe YouichiNGNG
>>581
>> 581 デフォルトの名無しさん wrote:
> だけど、変数が初期化されずに使われるワーニングを恐れて

ウォーニングのことか? :)

> int a=0,b=0;
> for(;;)
> ってのと
> for(;;){int a=0,b=0;
> ってのを比べたら確かに後者の方が遅い・・・のかな?

そもそもその2つじゃあ違う処理になるじゃん。
何をマヌケなことを言ってるのやら。
(中に++a;でも書いてみればバカでもわかるでしょ?)
0585デフォルトの名無しさんNGNG
隔離スレから外に出るなよ。
0586デフォルトの名無しさんNGNG
>(中に++a;でも書いてみればバカでもわかるでしょ?)

バカでもわかる、ということにしたいのですね?
0587デフォルトの名無しさんNGNG
for 文の中で宣言しようが、外で宣言しようがアセンブリ言語の
レベルでは一緒ですよ。一度コンパイルしてアセンブリリストを眺めてみては?

#両者に違いがでる特殊な処理系があるのかもしれないけどね
0588Kusakabe YouichiNGNG
>>582 デフォルトの名無しさん wrote:
> つーかさー毒舌もいいんだけどさー、

どこが毒舌なんだろうか? こんなんが毒舌だったら、
世間のマニュアルや書籍は超毒舌だぞ。

> せっかく正解知ってるんだったらとっとと教えてくれよ

っていうか、少しは頭使え。

正解は「速度に有意な差がでることはまずない」と書いてるだろうに
正解を「みえないふり」しているの?

> プログラマとしちゃ優秀かもしれんがヒトとしちゃなってない

「ということにしたい」だけですね?
0589デフォルトの名無しさんNGNG
>世間のマニュアルや書籍は超毒舌だぞ。

世間のマニュアルが超毒舌、ということにしたいのですね?
0590デフォルトの名無しさんNGNG
>正解を「みえないふり」しているの?

見えないふりしてる(ということにしたい)ですね。
05917ポイントゲット!NGNG
ちっ
あんまりポイント稼げなかったな
最後の文はわりと高得点だったけど
0592Kusakabe YouichiNGNG
>>586 デフォルトの名無しさん wrote:
> >(中に++a;でも書いてみればバカでもわかるでしょ?)
>
> バカでもわかる、ということにしたいのですね?

ということは、あなたは「それでもわからなかった」例外的な馬鹿なのですか?
0593デフォルトの名無しさんNGNG
いい大人がこんな時間に何やってるんだろうね。。
0594デフォルトの名無しさんNGNG
だから Kusakabe の煽りには反応するなって。技術的な話だけに絞って議論する
ならともかく、そうでない部分まで反応しだすと話が拡散してスレが荒れる。

どうでもいい話は放置してくれ。
0595デフォルトの名無しさんNGNG
>ということは、あなたは「それでもわからなかった」例外的な馬鹿なのですか?

「例外的な馬鹿」ということにしたいのですね?
0596Kusakabe YouichiNGNG
>>589
>> 589 デフォルトの名無しさん wrote:
> >世間のマニュアルや書籍は超毒舌だぞ。
>
> 世間のマニュアルが超毒舌、ということにしたいのですね?

「〜ならば」の条件節を無視したいのかな:)
0597Kusakabe YouichiNGNG
>>590 デフォルトの名無しさん wrote:
> > 正解を「みえないふり」しているの?
>
> 見えないふりしてる(ということにしたい)ですね。

いいえ。わたしが「そうしたい」のではなく、
「そうなのか?」と質問しているだけですが。
0598Kusakabe YouichiNGNG
>>593
>> 593 デフォルトの名無しさん wrote:
> いい大人がこんな時間に何やってるんだろうね。。

2chでは?
0599Kusakabe YouichiNGNG
>>594 デフォルトの名無しさん wrote:
> だから Kusakabe の煽りには反応するなって。

「反応」しているのは私のほうですね。(話が逆)
0600Kusakabe YouichiNGNG
>>595 デフォルトの名無しさん <[email protected]> wrote:
> >ということは、あなたは「それでもわからなかった」例外的な馬鹿なのですか?

>
> 「例外的な馬鹿」ということにしたいのですね?

「なのですか?」と質問しているだけですよ。
(でも答えていない)
0601デフォルトの名無しさんNGNG
Kusakabe 氏は少々ぶっきらぼうだけど
間違ってないですね

C の auto 変数では宣言をループの外に移しても高速に
なることは(処理系の実装しだいだけど)まずない。
int a = 0; は初期化込みだから、宣言と全く同じではない。

ループの外に移すことで高速になるのは C++ で何らかの
処理を行うコンストラクタ付きのクラス変数を宣言したとき
でしょうか。でも、ここは C スレなので脱線しますが。
0602Kusakabe YouichiNGNG
>>601 デフォルトの名無しさん wrote:
> Kusakabe氏は少々ぶっきらぼうだけど

え、ちっともぶっきらぼうじゃないですよ。
すごく丁寧で親切だといつも言われています。
0603Kusakabe Youichi NGNG
ではまた明日。
0604デフォルトの名無しさんNGNG
>>601
本題と逸れるけど「宣言」と「定義」を混同してる。これは規格で明確に使い分け
られてる単語なんで、細かい話をするときには注意した方が良いです。
0605601NGNG
>>602
そうですね。失礼しました。

ここは C 初心者も書き込みますので
そのあたり察してあげてくださいませ。 :)
0606デフォルトの名無しさんNGNG
>>602
いつも言われてます、か・・・
0607601NGNG
>>604
あー混同してましたか。またしても失礼をば…。
C の本読みなおしてくる :)
ありがとう
0608Kusakabe YouichiNGNG
>>606 デフォルトの名無しさん wrote:
> >>602
> いつも言われてます、か・・・

はい。
0609Kusakabe YouichiNGNG
>>607 601 wrote:
> C の本読みなおしてくる

いったいどんな本を読んでいるのでしょうか?

興味があります。
0610デフォルトの名無しさんNGNG
>>609
>いったいどんな本を読んでいるのでしょうか?

そのツッコミワラタよ。
0611Kusakabe YouichiNGNG
>>610 デフォルトの名無しさん wrote:
> >>609
> >いったいどんな本を読んでいるのでしょうか?
>
> そのツッコミワラタよ

ん? まじめに聞いているのですが。興味があるので。
0612デフォルトの名無しさんNGNG
Cでは最初に変数の宣言が必要では?
0613Kusakabe YouichiNGNG
>>612 デフォルトの名無しさん wrote:
> Cでは最初に変数の宣言が必要では?

べつに「最初」じゃなくても、使う前ならOKですね。
0614土曜の朝はパラダイムNGNG
main()
{
 int a=0;
 {
  int a=1;
  {
   int a=2;
   {
    int a=3;
    printf("%d\n",a);
   }
   printf("%d\n",a);
  }
  printf("%d\n",a);
 }
 printf("%d\n",a);
}
0615C勉強中 ◆RubyOmS2 NGNG
>>614
3
2
1
0
やっとわかったよ。ありがとう〜〜〜

>>613
K&Rの付録AのA9.3複文って所を見ると

compound-statement:
  { declaration-list statement-list }

#下付けoptは書けないので除いたYO!
ってあるんですけど、、、
どっちが正解なんですか?
0616Kusakabe YouichiNGNG
>>615 C勉強中◆RubyOmS2 wrote:
> K&Rの付録AのA9.3複文って所を見ると
> compound-statement:
>   { declaration-list statement-list }
> ってあるんですけど、、、
> どっちが正解なんですか?

どっちが、って、どちらも同じでは?
0617デフォルトの名無しさんNGNG
for( int i=0;i<100;i++){

これってCだとダメなのな。ちょっと残念。
0618Kusakabe YouichiNGNG
>>617 デフォルトの名無しさん wrote:
> for (int i = 0; i < 100; i++) {
>
> これってCだとダメなのな。ちょっと残念。

Cでも使えますよ。
(古いコンパイラーでは通り魔園が)
0619デフォルトの名無しさんNGNG
>>618
まじ?
手元で試したコンパイラのバージョンをみたらこんな感じ

$ gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
gcc version 2.95.3-5 (cygwin special)

どのバージョンのgccならコンパイルできる?
つーかgccじゃだめなの?
0620617=619NGNG
どうも gcc 2.95.x だと全然だめっぽいな
gcc 3.0以降ならいいのかな?

>>617がOKなコンパイラをぜひ教えてください。
0621Kusakabe YouichiNGNG
>>619
In article <[email protected]>, 619 デフォルトの名無しさ
ん <[email protected]> wrote:
> 手元で試したコンパイラのバージョンをみたらこんな感じ
> $ gcc -v
> Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
> gcc version 2.95.3-5 (cygwin special)

ああ、それだと通らないですね。

> どのバージョンのgccならコンパイルできる?

少なくとも-C99オプション通るやつじゃないと。
0622デフォルトの名無しさんNGNG
>>620
http://gcc.gnu.org/gcc-3.0/c99status.html

この程度は通る>gcc3.0
0623620NGNG
>>622
おお!サンクス!
0624デフォルトの名無しさんNGNG
クサカベって、叩かれると急に真面目になるからなあ。
0625C勉強中 ◆RubyOmS2 NGNG
>>616
え?
>べつに「最初」じゃなくても、使う前ならOKですね。
って言ってるようですけど、
K&Rの付録にはANSI Cでは宣言はブロックの「最初」になってませんか?
612が言っている「最初」というのはブロックの「最初」って言うことだと思ったんですが、、、

少なくとも>>613の言い方では、

int x;
x = 0;
int y;
y = 0;

としていいよと聞こえるんですが、、、
#僕はCについては初心者なので、、、
0626Kusakabe YouichiNGNG
>>624 デフォルトの名無しさん wrote:

> クサカベって、叩かれると急に真面目になるからなあ。

はつみみです。「そういうことにしてしまいたい」のかな? :)

# そんなにこわがらなくていいのに。
0627Kusakabe YouichiNGNG
>>625 C勉強中◆RubyOmS2 wrote:
> > べつに「最初」じゃなくても、使う前ならOKですね。
> って言ってるようですけど、
> K&Rの付録にはANSI Cでは宣言はブロックの「最初」になってませんか?

ああ、K&Rのは古いですね。
古いコンパイラーに合わせてかくときにはK&Rにしたがっておいたほうがいいです
。

> 少なくとも>>613の言い方では、
>
> int x;
> x = 0;
> int y;
> y = 0;
>
> としていいよと聞こえるんですが、、、

現在の標準規格ではOKですね。

> # 僕はCについては初心者なので、、、

入門書としてK&Rを選んだのは正解でしょうね。
(でも現在の標準規格については書いてないので...でもまあ些細な差ですが)
0628デフォルトの名無しさんNGNG
>>625
K&RはISO/IEC 9899:1990についての解説。これは古い規格で、ISO/IEC 9899:1999
によって置き換えられています。
0629デフォルトの名無しさんNGNG
ところで-C99(もしくは同等の)オプションが通るコンパイラって
一般的なのかな?
0630デフォルトの名無しさんNGNG
少ない言葉で曖昧に説明して、独自の解釈や妙な前提条件を強要するアフォは
相手にしないほうがいいと思うよ>625
0631Kusakabe YouichiNGNG
>>628 デフォルトの名無しさん wrote:
> >>625
> K&RはISO/IEC 9899:1990についての解説。これは古い規格で、

こっちは俗にC89と呼ばれるやつ。
その昔「ANSI対応」とか言われていたのはこれですね。

> ISO/IEC 9899:1999によって置き換えられています。

こっちが俗にC99と呼ばれるやつです。
ですのでISOやANSIにも複数の規格が(時間軸上は)存在したわけで、
いまどきの本で「ANSI対応」とか書いてあるやつはちょっと内容が古いかも。
0632デフォルトの名無しさんNGNG
クサカベって誰?
0633Kusakabe YouichiNGNG
>>629 デフォルトの名無しさん wrote:
> ところで-C99(もしくは同等の)オプションが通るコンパイラって一般的なのか
な?

3年前までは一般的ではなかったですね(あたりまえ)。

これからは一般的ですね。
0634デフォルトの名無しさんNGNG
クサカベは放置の方向でお願いします。
0635Kusakabe YouichiNGNG
>>630 デフォルトの名無しさん wrote:

> 少ない言葉で曖昧に説明して、独自の解釈や妙な前提条件を強要するアフォ

ということにしたいみたいですが、
実際には一番適切に(多すぎず少なすぎず)、もっとも正しい教え方をしていますね
。
0636C勉強中 ◆RubyOmS2 NGNG
>>627
そうなんですか、、、
Cってたくさん規格があるみたいで面倒ですね、、、
で、現在の標準規格というのは、何て言うのですか?
それは、gcc2.95.3(cygwin)でも使えるのですか?
#>>619と同じコンパイラを僕も使ってます、、、
0637デフォルトの名無しさんNGNG
>>632
二度は書かないよ(荒れるから)

“作ってわかるCプログラミング”でCを勉強 part4
http://pc.2ch.net/test/read.cgi/prog/1007148964/

ここで暴れてる人。
0638Kusakabe YouichiNGNG
>>636 C勉強中◆RubyOmS2 wrote:

> >>627
> そうなんですか、、、
> Cってたくさん規格があるみたいで面倒ですね、、、

たくさんはないですよ(ほかの言語よりは)

C99、C89とそれ以前のtraditionaなものの3種類だと思えばよいでしょう。

> で、現在の標準規格というのは、何て言うのですか?

俗に「C99」といわれています。
0639デフォルトの名無しさんNGNG
>>636
使えないYO!

とりあえず、「標準」が本当の標準になるまでは
てきとうに教科書にしたがってコーディングしとこうZE!
0640C勉強中 ◆RubyOmS2 NGNG
ありゃ、、ログが流れるのが早い、、、
>>628さん、ありがと〜〜〜
でも、-C99オプションって、、gcc2.95.3では通らないの?
0641Kusakabe YouichiNGNG
>>637 デフォルトの名無しさん wrote:

> >>632
> 二度は書かないよ(荒れるから)

荒らすのかー
0642C勉強中 ◆RubyOmS2 NGNG
>>639
うぃっす、、、
がんばるっす!
0643Kusakabe YouichiNGNG
>>639 デフォルトの名無しさん wrote:
> とりあえず、「標準」が本当の標準になるまでは

もうなっていますよ。
古い標準の範囲内で書くかどうかは、
そのソースを古いコンパイラーで処理する可能性がある場合に
気をつかうべきでしょうね。
0644Kusakabe YouichiNGNG
>>640 C勉強中◆RubyOmS2 wrote:
> ありゃ、、ログが流れるのが早い、、、
> >>628さん、ありがと〜〜〜
> でも、-C99オプションって、、gcc2.95.3では通らないの?

新しいのにすればいいのに。
0645デフォルトの名無しさんNGNG
>>633
> 3年前までは一般的ではなかったですね(あたりまえ)。
ISO/IEC 9899:1999が発行されたのはちょうど2年前の今日です。
3年前どころか、2年前ですら準拠した処理系はなかったはずです。

>>640
gcc 2.95.3だと、対応しようとしたらしい-std=iso9899:199xという
オプションがありますが、そのコードは通らないみたいです。
gcc 3.0以降にするしかないみたい。
0646デフォルトの名無しさんNGNG
>>643
とりあえず手持ち全部のコンパイラでコンパイルできないんだもん
そのソースを古いコンパイラーで処理する可能性が100%だし
しょうがねいね
0647デフォルトの名無しさんNGNG
>>643
なってないよ。JIS X 3010:1993はまだ改訂されてない。
0648デフォルトの名無しさんNGNG
VisualCとViaualBasicをやるならどっちがいい?
と友人に聞かれた。
俺は自分に合ったほうにすればと一応答えておいたが
本当はどちらのほうがいいんだろう…
やる用途にもよるだろうが友人は色々やってみたいと言っていたので
やはりどちらかと言えばVisualCの方だろうか…
0649デフォルトの名無しさんNGNG
むむむ
とすると、標準 の基準ってなんだ?
0650Kusakabe YouichiNGNG
In article <[email protected]>, 645 デフォルトの名無しさ
ん <[email protected]> wrote:

> >>633
> > 3年前までは一般的ではなかったですね(あたりまえ)。
> ISO/IEC 9899:1999が発行されたのはちょうど2年前の今日です。
> 3年前どころか、2年前ですら準拠した処理系はなかったはずです。

だから「あたりまえ」と書いてあるわけです。

> gcc 3.0以降にするしかないみたい。

gccの場合はそうですね。
0651Kusakabe YouichiNGNG
>>647 デフォルトの名無しさん wrote:
> >>643
> なってないよ。JIS X 3010:1993はまだ改訂されてない。

JISは問題外ですね。
0652デフォルトの名無しさんNGNG
>>649
http://www.jsa.or.jp/ 見れ。
0653デフォルトの名無しさんNGNG
一夜にして 100 レス以上・・・珍しいこともあるもんだ。
0654デフォルトの名無しさんNGNG
デファクトスタンダード=標準 って考えちゃだめ?
0655Kusakabe YouichiNGNG
>>648 デフォルトの名無しさん wrote:
> VisualCとViaualBasicをやるならどっちがいい?

どちらもやらない。
0656デフォルトの名無しさんNGNG
>>655
そりゃあんまりだ。
0657Kusakabe YouichiNGNG
>>649 デフォルトの名無しさん wrote:
> むむむ
> とすると、標準 の基準ってなんだ?

標準に「基準」なんてないでしょう。

そもそもCに関して「ANSI対応!」とか「ISO標準準拠!」とかかかれた
本はあっても「JIS準拠のC!」とか書かれたやつは見たことないですね:)
0658デフォルトの名無しさんNGNG
マジで放置の方向でお願いします。相手にしてはいけません。
0659デフォルトの名無しさんNGNG
すくなくとも今流通してるコンパイラで
新しい標準でコンパイルできないは
けっこう多いので、古い基準で作った方が
幸せになれる、と
0660デフォルトの名無しさんNGNG
相手にしてはいけません。レス付け厳禁。
「あれ?」と思っても、それは罠なので無視しましょう。
0661デフォルトの名無しさんNGNG
変数を宣言するたびにスタックを確保するとか変なことを言ったので
猛烈にKusakabeさんが活躍したんですか?
0662デフォルトの名無しさんNGNG
じゃあひとりごと。ひとりごとなので意見無用。
条約が批准され、国会で承認されないかぎり国内において効力を持たないのと同様、
国際規格は国家規格として制定されてはじめて国内で効力を得るのになあ。
0663Kusakabe YouichiNGNG
>>654 デフォルトの名無しさん wrote:
> デファクトスタンダード=標準 って考えちゃだめ?

それがC99でしょ。いまは。
0664デフォルトの名無しさんNGNG
放置の方向でお願いします。レス厳禁です。荒れないためにも。
0665仕様書無しさんNGNG
voidにレスする,無視できない人間は、ム板の住人として
失格である。よってお前は去れ!
0666デフォルトの名無しさんNGNG
>>657
>「JIS準拠のC!」とか書かれたやつは見たことない

ほとんどのC処理系は海外製だから。
0667デフォルトの名無しさんNGNG
放置の方向でお願いします。レスしないでください。
0668デフォルトの名無しさんNGNG
>>665
そういうお前はマ板の住人じゃないか。
0669:デフォルトの名無しさん NGNG
>>668
今,マ板でやりあってるから、名前がそうなった。
voidにレスしたければ,ここへこい。
http://pc.2ch.net/test/read.cgi/prog/1007148964/
現在,討論中。
0670Kusakabe YouichiNGNG
In article <[email protected]>, 656 デフォルトの名無しさ
ん <[email protected]> wrote:

> >>655
> そりゃあんまりだ。

いや、そんな悩みかたをする人はぜったいどっちもやらないほうが正解です。
0671Kusakabe YouichiNGNG
>>659 デフォルトの名無しさん wrote:
> すくなくとも今流通してるコンパイラで
> 新しい標準でコンパイルできないは
> けっこう多いので、古い基準で作った方が
> 幸せになれる、

それはそこローカルな特殊な事情であって、「標準かどうか」の話題とは
無関係ですね。

単に「おれは古いのを使ってるぞ」っていうだけのことじゃん。
0672Kusakabe YouichiNGNG
>>661 デフォルトの名無しさん wrote:

> 変数を宣言するたびにスタックを確保するとか変なことを言ったので

そういう変なことを言ってたひとがそういえばいましたね。

> 猛烈にKusakabeさんが活躍したんですか?

私が書いたのはそれより前からです。
0673Kusakabe YouichiNGNG
>>662 デフォルトの名無しさん wrote:
> じゃあひとりごと。ひとりごとなので意見無用。
> 条約が批准され、国会で承認されないかぎり国内において効力を持たないのと同
様、
> 国際規格は国家規格として制定されてはじめて国内で効力を得るのになあ。

で、「国内」がどこかが問題ですね。

# こういうひとはきっと世の中にタイムゾーンも1つしかないと思っているに
# ちがいない:)
0674デフォルトの名無しさんNGNG
放置の方向でお願いします。

***決してレスしてはいけません***
0675Kusakabe YouichiNGNG
>> 666 デフォルトの名無しさん wrote:
> >>657
> >「JIS準拠のC!」とか書かれたやつは見たことない
>
> ほとんどのC処理系は海外製だから。

っていうか、日本の本とかの話ですが。
0676デフォルトの名無しさんNGNG
放置の方向でお願いします。相手にしてはいけません。発言は無視してください。
0677デフォルトの名無しさんNGNG
まあ、Linux界もほぼ全部ローカルな特殊事情だあね。
cygwinもそうだね。
UNIXっぽい世界はほとんど特殊なローカル事情だあね。
0678デフォルトの名無しさんNGNG
すみません、最近Cをはじめた者ですが
ディメンジョンを
例えばa[10][10][10][10][10][10]やa[10000][10][10]
としたいのですが、コンパイルは通るんのですが、
走らせるとセグメンテーションエラーとなります。
ディメンジョンを小さくすると
走るのでこれが原因だと思うのですが、
ディメンジョンを多くするにはどうしたら良いですか?
gccのバージョンは2.95.2です。
0679デフォルトの名無しさんNGNG
>>678
charだとしても、10の6乗だと、えーと、すげー大きいので
スタックに入らないとかなんとかじゃねーの?
よくわかんねーけど
そういうときは何かおまじないがあったと思うけど
面倒だからスタティックなところに確保しちゃえば?
それかmallocで確保しちゃうとか
0680Kusakabe YouichiNGNG
>>678
In article <[email protected]>, 678 デフォルトの名無しさ
ん <[email protected]> wrote:

> すみません、最近Cをはじめた者ですが
> ディメンジョンを
> 例えばa[10][10][10][10][10][10]やa[10000][10][10]
> としたいのですが、

すればいいじゃん、4個でも5個でも通ります。50個は無理でしょうけど。

> 走らせるとセグメンテーションエラーとなります。
> ディメンジョンを小さくすると
> 走るのでこれが原因だと思うのですが、

じゃあそうなのでしょう。

> ディメンジョンを多くするにはどうしたら良いですか?
> gccのバージョンは2.95.2です。

そもそもそんなに確保しなきゃいいだけでは?
0681デフォルトの名無しさんNGNG
fopenしたらfcloseは絶対にしないといけないのですか?
0682デフォルトの名無しさんNGNG
>>681
ほっといてもプログラムが終了したら閉じてくれると思う
でもなるべくなら開けたら閉じよう。
このへん、マッピーのドアと一緒だね
0683デフォルトの名無しさん NGNG
>>681
っつーか、それfjねたじゃん。
malloc()、free() みたいな。
0684Kusakabe YouichiNGNG
>>681 デフォルトの名無しさん wrote:
> fopenしたらfcloseは絶対にしないといけないのですか?

fcloseするか終了するまでは開いたままになりますが、
それでかまわなければ。
0685デフォルトの名無しさんNGNG
>>678
その配列は、サイズが最低でも 1000000 バイトもあって、
スタックが足りません。
グローバル変数にするか、static 変数にするか、
malloc で確保するか、スタックサイズを大きくするか、
しましょう。
0686デフォルトの名無しさんNGNG
>>681
さては、開けたドアを閉めないタイプの人間だな?
0687デフォルトの名無しさんNGNG
>>686
自動ドアだから気にしたことないもんで…
0688デフォルトの名無しさんNGNG
OSのファイルハンドルに直結していると
OS側の上限個数にひっかかるだろうねえ
0689デフォルトの名無しさんNGNG
>>678
679 さんの言う「おまじない」は,多分 679 さん自身がズバリ言ってる
「スタティックに確保」じゃないかなーと思いました
  static Type a[10000][10][10];
ただし調子に乗って要素数を増やしていくと
  static Type a[10000][10000][10000];
コンパイルエラー「配列が大きすぎます」が出てきました(VC++5.0)
10000x10000x10000 が整数型か何かで表せないからかなあ? よく知らないけど・・・

個人的には malloc でメモリを割り当ててくれるとなんか安心します
int i, j;
Type ***a;
a = (Type ***)malloc(10000 * sizeof(Type **));
for(i=0; i<10000; ++i){
  a[i] = (Type **)malloc(10 * sizeof(Type *));
  for(j=0; j<10; ++j){
    a[i][j] = (Type *)malloc(10 * sizeof(Type));
  }
}

コレはコレで問題がないワケじゃないんだけど,
それはまた別のお話・・・
0690Kusakabe YouichiNGNG
>>687 デフォルトの名無しさんwrote:
> >>686
> 自動ドアだから気にしたことないもんで…

っていうか、ふつうの自動ドアは「開け閉め」が自動なので、
stdinみたいなもので、「開ける」ことはしないでしょうね手動で。

だからよくある「半自動」ドア(閉まるのだけ自動)みたいなのを
例に出したほうがいいのでは?
0691デフォルトの名無しさんNGNG
>>689
あーあー
開放わすれてるー
0692689NGNG
>>691
ぎゃふん (;´Д`) そこまで示さないとダメですか

for(i=0; i<1000; ++i){
  for(j=0; j<10; ++j){
    free(a[i][j]);
  }
  free(a[i]);
}
free(a);
0693デフォルトの名無しさんNGNG
>>688
OSの制限以前にfopenで、開けるファイル数は制限されてる。
てか、今回の話題とは関係薄い。
0694デフォルトの名無しさんNGNG
しなかったときの弊害、という点では関係があると思うけど。
0695デフォルトの名無しさんNGNG
CのプログラムをC++のコンパイラでコンパイルするのは
いけないことなのでしょうか?
0696Kusakabe YouichiNGNG
>>692 689 wrote:
> >>691
> ぎゃふん (;´Д`) そこまで示さないとダメですか
>
> for(i=0; i<1000; ++i){
> for(j=0; j<10; ++j){
> free(a[i][j]);
> }
> free(a[i]);
> }
> free(a);

で、それがプログラムの終了時だったりすると「アホだ」といわれたりする
わけです:)
0697デフォルトの名無しさんNGNG
>>693
それってOSの制限なのでは?
0698Kusakabe YouichiNGNG
>>694
694 デフォルトの名無しさん wrote:
> しなかったときの弊害、という点では関係があると思うけど。

ないですね。

fcloseすればかならず上限を超えないという保証があるわけじゃあないんだから。
0699デフォルトの名無しさんNGNG
放置の方向でお願いします。
***レス付け厳禁です***
荒れないために、ご協力ください。
0700Kusakabe YouichiNGNG
>>695 デフォルトの名無しさん wrote:
> CのプログラムをC++のコンパイラでコンパイルするのは
> いけないことなのでしょうか?

お好きなように。(コンパイルできるコードなら(上位コンパチじゃあないからね))
0701デフォルトの名無しさんNGNG
>>689
>a[10000][10000][10000];

10000×10000×10000 = 1000000000000 = 1テラ (1000ギガ)
それわ無理です。。。
0702Kusakabe YouichiNGNG
>>697 デフォルトの名無しさん wrote:
> >>693
> それってOSの制限なのでは?

OSの制限以前にプロセスごとの制限が小さいのでは?
0703デフォルトの名無しさんNGNG
>>702
小さい って言い切る根拠は?
0704デフォルトの名無しさんNGNG
>>697
fopenの制限はOSの制限よりかなりきつめ。(の処理系が多い)
0705デフォルトの名無しさんNGNG
放置の方向でお願いします。>>703
***レス付け厳禁です***
荒れないために、ご協力ください。
0706デフォルトの名無しさんNGNG
OSのファイルハンドルそのものと直結しない実装もありそうなもんだが・・・
0707692NGNG
>>696
それもいいけど,アソコにも突っ込んで欲しかった・・・
誤:for(i=0; i<1000; ++i){
正:for(i=0; i<10000; ++i){

ところで free on exit ネタにも触れたいんだけど
Kusakabe さんとしては
「終了時には free すんな!(`Д´)!」派?
「終了時には free してもしなくてもいいよ(´_`)」派?
「終了時でも free しろ!(`Д´)!」派?
0708689NGNG
>>701
今気づいたです (;゚∀゚)> あと,笑ったです
0709デフォルトの名無しさんNGNG
あ、ニセモノ探知機なのか
0710Kusakabe YouichiNGNG
>>703 デフォルトの名無しさん <[email protected]> wrote:
> >>702
> 小さい って言い切る根拠は?

「のでは?」を「言い切る」だとぼけたことを言う頭の程度は? :)
0711デフォルトの名無しさんNGNG
放置の方向でお願いします。***レス付け厳禁です***荒れないために、ご協力ください。
0712Kusakabe YouichiNGNG
>>707 692 wrote:
> ところで free on exit ネタにも触れたいんだけど

これはよそでやったほうが楽しめるのでは?

> Kusakabe さんとしては
> 「終了時には free すんな!(`Д´)!」派?
> 「終了時には free してもしなくてもいいよ(´_`)」派?
> 「終了時でも free しろ!(`Д´)!」派?

わたしのfj.comp.lang.cに以前書いた記事をみればわかりますね:)
0713デフォルトの名無しさんNGNG
放置の方向でお願いします。
0714デフォルトの名無しさんNGNG
>>711 >>713
誰もアンタにレス付けたりしないよ。放置しといてやるから安心しな。
0715707NGNG
んー・・・んじゃ,fj 再読します・・・
# だって fj の記事って皮肉交じりで読みにくいんだもん
0716デフォルトの名無しさんNGNG
ロケールについての質問はここでいいですか?
0717デフォルトの名無しさんNGNG
傲慢だなKusakabeは。
0718Kusakabe YouichiNGNG
>>715 707 <[email protected]> wrote:
> んー・・・んじゃ,fj 再読します・・・

あ、もしくは、fjだけじゃなくて本もいっしょに読むと、
「実はどう主張しているのか」わかるかも:)

> # だって fj の記事って皮肉交じりで読みにくいんだもん

気のせいでは? 気にしすぎというか。
0719Kusakabe YouichiNGNG
>>717 デフォルトの名無しさん wrote:
> 傲慢だなKusakabeは

ということにしたいのですか?

# でもどこも傲慢ではないですね。
0720デフォルトの名無しさんNGNG
放置の方向でお願いします。
0721デフォルトの名無しさんNGNG
傲慢だね。
0722715NGNG
すいません
こ,これだけ,これだけ教えてくれればすぐに逝きますんで

 fj の記事のバックナンバーどこぉ?

>>718
> > # だって fj の記事って皮肉交じりで読みにくいんだもん
> 気のせいでは? 気にしすぎというか。

そですかー
ニューズグループのこと,まだあんまし慣れてないや・・・
0723デフォルトの名無しさんNGNG
>>722
>fj の記事のバックナンバーどこぉ?

検索してください。

http://groups.google.co.jp/groups?hl=ja&group=fj.comp.lang.c
http://queen.heart.ne.jp/
0724722NGNG
>>723
クスコ
言い訳:www.google.co.jp で検索しても出てこなかったんだー(T_T)
0725Kusakabe YouichiNGNG
>>722 715 wrote:
> すいません
> こ,これだけ,これだけ教えてくれればすぐに逝きますんで
>
>  fj の記事のバックナンバーどこぉ?

当該グループでそのように、大きめのフォントで叫べば、
親切な人がその話題をまとめたファイルを送ってくれる可能性は大きいです。
(そんなときのための全国40万人のfj読者がある)

もちろんその前にあちこちのアーカイヴを探して見つからないという
前提が必要ですが。

> > > # だって fj の記事って皮肉交じりで読みにくいんだもん
> > 気のせいでは? 気にしすぎというか。
>
> そですかー
> ニューズグループのこと,まだあんまし慣れてないや・・・

ニュースグループじゃないでしょ。

たとえばTVやTVの番組はいくつものチャネルにわかれていますが、
「TVに出演する」のかわりに「ちゃねるに出演する」とか、
「TVに慣れていなくて」のかわりに「ちゃねるになれていなくて」って言いますか
?
0726デフォルトの名無しさんNGNG
下手な例え話は、本質を霞ませるだけなので嫌い。
0727デフォルトの名無しさんNGNG
こんなに書き込みがあるーっ!! (^o^)
0728デフォルトの名無しさんNGNG
放置の方向でお願いします。
0729デフォルトの名無しさんNGNG
># でもどこも傲慢ではないですね。

へみねこかぁ。別に傲慢ではないな。

あたりまえのことをあたりまえに言ったら傲慢あつかいされるという妙な現世ならば、
存在するけど。

あともう1つ。
へみねこを、「状態をもつ」という意味での人間あつかいをする必要は、ないだろう。

現世が上記のように妙なことになってる理由は、(多くの)人が自分の「状態」を
持ちたがる(自分の考えかたとか好みとかを曲げたくない)という意味で
「状態」を持っていて、そのことを正当化したいから、だ。
だからこそみんなが言うんだ。「俺を思いやってくれ」と。

それに半旗(ナイス誤字)を飜してる(本人狙ってるのかどうか知らぬが)のが奴なんだから、
そのへみねこの「状態」にこっちが気を配る必要は、ない。
こっちが奴に何を言ったからといって、奴の「状態」、たとえば
怒ったとか笑ったとか悲しんだとか、がどうなっちゃうか?を気にする必要は、ない。

そう捉えれば、あれくらい「つきあいに手のかからない」人間(たぶん人間なんだよねえ)は
めずらしいくらいであり、かえって重宝する、と思われ。
0730引用ウザNGNG
0731Kusakabe YouichiNGNG
>>729 デフォルトの名無しさん wrote:
> へみねこかぁ。別に傲慢ではないな。

ですね。
0732デフォルトの名無しさんNGNG
放置の方向でお願いします。
0733デフォルトの名無しさんNGNG
ほうちほうち言ってる方へ。
日下部さんにかまわないで、放置してください。
0734Kusakabe YouichiNGNG
>>733 デフォルトの名無しさん wrote:
> ほうちほうち言ってる方へ。

新聞の勧誘なのかも。
0735デフォルトの名無しさんNGNG
>>733

放置って言っている奴はうざいから放置しよう。
0736デフォルトの名無しさんNGNG
わけわからんが、荒れてるのは確かだな。
0737デフォルトの名無しさんNGNG
そのきっかけが誰かも確かだな。逝ってよし。
0738Kusakabe YouichiNGNG
お願いですから、思いやってください。
0739デフォルトの名無しさんNGNG
でもよー、K&R読めとかあれはわかりやすいとか知ったかコイてるヤツは、
「実はガッコで懇切丁寧に教えられたクチ」なんだよ。K&Rで真に理解したんじゃないのよ。
K&Rは難解だとの評価は大多数から既に出ている。
人の理解度なんかはそれぞれだから、K&Rが難しく感じても気にすることではないし
わかったからって偉いものでもない。

そういう俺はK&Rをバイブルとして崇め奉ってるけど(w
「自分がわかりやすいと思うものでやれ しかし向上心は何であれ忘れるな」
つうこったわ(ワラ
0740デフォルトの名無しさん NGNG
voidにレスするから、こんなことになる。
煽りたいやつは勝手に煽れ。俺はもうこのスレ放置する。
0741デフォルトの名無しさんNGNG
voidじゃねえだろ、あれ。
つまらん
0742デフォルトの名無しさんNGNG
>>681
いいえ。規格上、main 終了後に正しく後始末されることが保証されています。

>>740
俺も、このスレは今後放置する。今まで何度か回答側に回ってたけど、ね。

俺程度の人間が一人抜けたところで大した影響はないけど、スレを荒らすと
回答側に回ってる人間に見放される可能性があるから、注意しろよ。>質問
してる人
0743デフォルトの名無しさんNGNG
構造体と共用体ってなんでしょうか?
あと、プログラムを作る際の手法として流れ図と状態遷移図以外に何かあるんでしょうか?
0744デフォルトの名無しさんNGNG
>743
同じフィールドに複数の名前を割り当てるのが共用体。
別の名前は別のフィールドに割り当てるのが構造体。
0745デフォルトの名無しさんNGNG
>>744
厨房ですいません。フィールドって何でしょうか?
それと構造体をもう少し詳しく教えてもらえないでしょうか?

みなさんに聞きたいんですが、プログラムを作る際の手法として流れ図と状態遷移図以外に何かあるんでしょうか?
0746デフォルトの名無しさんNGNG
>>745

同じ記憶領域に複数の名前をつけるの。
同じデータを共用するから共用体と。
0747デフォルトの名無しさんNGNG
>>747
なるほど〜 ありがとうございました。
C言語でポインタの所では結構詰まる人が多いようですが何ででしょうね?

質問ばかりで申し訳ないんですが、コマンドラインパラメータとオプションフラグって何でしょうか?
0748デフォルトの名無しさんNGNG
>>747

コマンドラインパラメータはmain関数の第二引数(第一引数はそれの個数)かな?
0749デフォルトの名無しさんNGNG
プログラムを作る際の手法として流れ図と状態遷移図以外に何かあるんでしょうか?
0750Kusakabe YouichiNGNG
>>738
In article <[email protected]>, 738 Kusakabe Youichi
<[email protected]> wrote:

> お願いですから、思いやってください。

意味不明ですね。
0751デフォルトの名無しさんNGNG
>749
HIPO,PADとか(w

っていうか宿題くさいんだが気のせいか?
0752Kusakabe YouichiNGNG
>>739 デフォルトの名無しさん wrote:`
> でもよー、K&R読めとかあれはわかりやすいとか知ったかコイてるヤツは、
> 「実はガッコで懇切丁寧に教えられたクチ」なんだよ。

そう思い込みたいんでしょうね:)

> K&Rで真に理解したんじゃないのよ。
> K&Rは難解だとの評価は大多数から既に出ている。

あれを難解だと思うようでは「なんちゃって」系なんでしょうね:)
0753デフォルトの名無しさんNGNG
>プログラムを作る際の手法として流れ図と状態遷移図以外に何かあるんでしょうか
「プログラムを作る際の手法」としての「流れ図」とかって言葉としてどうなん?
意味はわかるけど微妙にひっかかる。
0754Kusakabe YouichiNGNG
>>743 デフォルトの名無しさん wrote:
> 構造体と共用体ってなんでしょうか?

本に説明が書いてありますよ。
0755デフォルトの名無しさんNGNG
あぁ、相変わらずstaticの使い勝手がわからんのだが、ぁ、
大きい領域をあるスコープ内で宣言すると、ときたま
文字列が壊されちゃう可能性があるから、その文字列の
安全を保証するためにstatic宣言を行うんですか?
長くなくても、ある瞬間だけ使う変数じゃなくて、
数プロセスを経ても内容を安全に確保したいときは
staticを使うんですか?
0756デフォルトの名無しさんNGNG
>>753
なんて言ったらいんでしょう・・・
プログラムを記述する際に、流れ図や状態遷移図なんかを書いてからプログラム作りませんかね?
プログラムを作る前に使う道具として流れ図や状態遷移図以外にないですかねって事なんですけど・・・
これじゃさっきと同じですかね・・・?
0757デフォルトの名無しさんNGNG
>>755
金をケチらないで、入門書買え。
0758デフォルトの名無しさんNGNG
>>756
書く人もいるし書かない人もいると思います。
0759Kusakabe YouichiNGNG
>>747 デフォルトの名無しさん wrote:
> >>747
> なるほど〜 ありがとうございました。
> C言語でポインタの所では結構詰まる人が多いようですが何ででしょうね?

難しいとおもいこまされているからでは? > つまる

実際どうってことないです。

> 質問ばかりで申し訳ないんですが、
> コマンドラインパラメータとオプションフラグって何でしょうか?

41ペイジと102ペイジを読みましょう。
0760デフォルトの名無しさんNGNG
書く場合で考えたいんですが、作る前の道具として『流れ図』や『状態遷移図』以外に何かないですかねって事です。
なにかないですかね?
0761Kusakabe YouichiNGNG
>>749 デフォルトの名無しさん wrote:
> プログラムを作る際の手法として流れ図と状態遷移図以外に何かあるんでしょう
か?

べつにそれは「手法」ではないですね。

「プログラム作成の一般的な手順」については182ペイジに書いてあります。
0762デフォルトの名無しさんNGNG
>>761
182ペイジって何の本の話?
0763Kusakabe YouichiNGNG
>>755 デフォルトの名無しさん wrote:
> あぁ、相変わらずstaticの使い勝手がわからんのだが、ぁ、
> 大きい領域をあるスコープ内で宣言すると、ときたま
> 文字列が壊されちゃう可能性があるから、その文字列の
> 安全を保証するためにstatic宣言を行うんですか?

いいえちがいます。

> 長くなくても、ある瞬間だけ使う変数じゃなくて、
> 数プロセスを経ても内容を安全に確保したいときは
> staticを使うんですか?

まず、関数の定義内に書いてあるstaticと、外に書いてあるstaticでは
意味が違います。
あとは178ペイジと254ペイジを読んでください。
0764デフォルトの名無しさんNGNG
>>756
使っているかどうかはともかく、プログラムの設計のためのダイアグラム
なら、DFDとかUMLとかいっぱいあるよ。

俺はJavaやC++では、UMLのクラス図ないときついな。
0765デフォルトの名無しさんNGNG
>>760
それはそういった設計手法を新たに会得したいという
ことなのか?
流れ図や状態遷移図が肌に合わないとかで。
それだったらどれぐらいの規模のプログラムを組むとか
書いてくれなきゃなんともいいようがないよ。
短いプログラムで再利用もしないのならそんなの要らないし。
0766デフォルトの名無しさんNGNG
>>761
あの・・・ 何の本のことでしょうか・・・
できればタイトルを教えていただきたいです。

>>764
そういうのがあるんですか。初めて知りました。

>>765
いえ、別に会得したいとかじゃなくて、ただ単に気になったので・・・
0767デフォルトの名無しさんNGNG
>>766
K&R
0768デフォルトの名無しさんNGNG
関数スコープで宣言したローカル変数は関数を抜けると領域開放されてしまう。
次回その関数が呼ばれたときのために、前回の内容を残しておきたい場合に
はstatic宣言する。そうすれば変数領域は開放されない。
0769Kusakabe YouichiNGNG
>>760 デフォルトの名無しさん wrote:
> 書く場合で考えたいんですが、作る前の道具として『流れ図』や『状態遷移図』
以外に何かないですかねって事です。
> なにかないですかね?

そもそもなんで「書く」が前提になるわけ?
どれがいいかわからないぐらいの知識なのに。
0770デフォルトの名無しさんNGNG
>>767
あの・・・ どちらの版でしょうか・・・
0771@@NGNG
http://freepage.gaiax.com/home/higashide/main このサイトつぶしてください
0772デフォルトの名無しさんNGNG
>>769
書くにこだわらなくてもいいんです。
ただどんなものがあるのかを知りたくて・・・
0773デフォルトの名無しさんNGNG
>>771
ムリ。
0774デフォルトの名無しさんNGNG
>>772
意味不明、やっぱり宿題か?
0775デフォルトの名無しさんNGNG
>>772
書かないなら「手法」はいらないじゃん?
0776Kusakabe YouichiNGNG
>>766 デフォルトの名無しさん wrote:
> >>761
> あの(Iゥァ_燭遼椶里海箸任靴腓Δォ(Iゥ・
> できればタイトルを教えていただきたいです。

文字化けしないようにもう1回書いてみてください。
0777デフォルトの名無しさんNGNG
>>770
http://cm.bell-labs.com/cm/cs/cbook/
0778デフォルトの名無しさんNGNG
Kusakabeに質問すると効率悪いので無視の方向で。
0779デフォルトの名無しさんNGNG
>>752 デフォルトの名無しさん wrote:`
>> でもよー、K&R読めとかあれはわかりやすいとか知ったかコイてるヤツは、
>> 「実はガッコで懇切丁寧に教えられたクチ」なんだよ。

>そう思い込みたいんでしょうね:)
そう思い込みたいんでしょうね:)

>> K&Rで真に理解したんじゃないのよ。
>> K&Rは難解だとの評価は大多数から既に出ている。

>あれを難解だと思うようでは「なんちゃって」系なんでしょうね:)
人それぞれを理解できないようではプログラム以前の問題ですね:)
0780デフォルトの名無しさんNGNG
放置の方向でお願いします。荒れないように。
***レス付け厳禁です***
0781Kusakabe YouichiNGNG
>>772 デフォルトの名無しさん wrote:
> >>769
> 書くにこだわらなくてもいいんです。
> ただどんなものがあるのかを知りたくてゥ・

知る必要はないです。
0782Kusakabe YouichiNGNG
>>779 デフォルトの名無しさん wrote:
> > > でもよー、K&R読めとかあれはわかりやすいとか知ったかコイてるヤツは、
> > > 「実はガッコで懇切丁寧に教えられたクチ」なんだよ。
>
> > そう思い込みたいんでしょうね:)
> そう思い込みたい

なるほど、やはりそうでしたか。

> > > K&Rで真に理解したんじゃないのよ。
> > > K&Rは難解だとの評価は大多数から既に出ている。
> >あれを難解だと思うようでは「なんちゃって」系なんでしょうね:)
>
> 人それぞれを理解できないようではプログラム以前の問題ですね

本気で「ひとそれぞれ」だと思っているんだったら、
「K&Rは難解だとの評価は大多数から既に出ている」とかいう理屈は
使えないわけですよね:)
つまり「ひとそれぞれ」という言葉を使ってごまかそうとしているだけな
わけですね。
0783デフォルトの名無しさんNGNG
>>779 デフォルトの名無しさん wrote:
> > > でもよー、K&R読めとかあれはわかりやすいとか知ったかコイてるヤツは、
> > > 「実はガッコで懇切丁寧に教えられたクチ」なんだよ。
>
> > そう思い込みたいんでしょうね:)
> > そう思い込みたいんでしょうね:)
>私はそう思い込みたい。

なるほど、やはりそうでしたか。

> > > K&Rで真に理解したんじゃないのよ。
> > > K&Rは難解だとの評価は大多数から既に出ている。
> >あれを難解だと思うようでは「なんちゃって」系なんでしょうね:)
>
> 人それぞれを理解できないようではプログラム以前の問題ですね

大多数が認めているから
「K&Rは難解だとの評価は大多数から既に出ている」とかいう理屈は
使えるわけですよね:)
つまり「そう思い込みたい」という言葉を使ってごまかそうとしているだけな
わけですね。
0784デフォルトの名無しさんNGNG
おんなじ内容がダブってるね。
nntpの中継システムがバグってるのかな?
0785デフォルトの名無しさんNGNG
適当にまんまコピーをしているので。
0786デフォルトの名無しさんNGNG
本人たちにはわからないの?
ハタから見てると間抜けでしかない。
0787デフォルトの名無しさんNGNG
ん〜、適当なものに
臭かべちゃんが狼狽しているとしか・・・(笑
0788デフォルトの名無しさんNGNG
>>768
わかりやすくてサイコーでした。
そっかー、そーすっと、少し応用的に考えると、
コールバック内でHWND hChildとかをstaticにしないと
ページ違反とかがおきるのは、存在してるhChildが
関数を抜けるときいたづらされちゃうからとかそーいうのも
あるのKANA
0789デフォルトの名無しさんNGNG
>>788
スレ違いだがそれはまったく別の理由だと思う
0790デフォルトの名無しさんNGNG
>>788

便利な使い方を聞いていたんじゃなくて、意味を聞いていたのか。。。
0791デフォルトの名無しさんNGNG
あるのKANAって書いて正解でした。
断定しないでよかったです。
前にAPI初心者のときstaticにしたかどうか忘れたけど
switch(msg)の前にi++とかやってカウンタできるかな
とか思って失敗してそれきりだった覚えがあるんですけど、
void func(){
static i=0;
i++
.....
}
とかやればiはカウンタになるのかが疑問だ!
0792デフォルトの名無しさんNGNG
C実践プログラミング VS プログラミング言語C

どっちの本がいいか?
0793デフォルトの名無しさんNGNG
>>789
別の理由かな?
HWNDをローカル変数に格納してるから、コールバックされたとき参照できな
くなって、スタックのゴミ値でWindowクラスにアクセスしようとしてるんじ
ゃないの?
staticにすれば解決するよ、多分。
0794デフォルトの名無しさんNGNG
つきなみですがint
つきです
0795デフォルトの名無しさんNGNG
>>791
なるよ。
0796デフォルトの名無しさんNGNG
おっしゃー!
ナイスゲッチュー
ありがとうでゴザイ!(ました)
0797Kusakabe YouichiNGNG
>>792 デフォルトの名無しさん wrote:
> C実践プログラミング VS プログラミング言語C
>
> どっちの本がいいか?

「迷ったら両方買う」が秋葉原の原則1の2
0798それはいいNGNG
両方参照すべし。
0799名無しさん@お腹いっぱい。NGNG
>>792
やっぱK&RがCのバイブルなのでは・・・?
0800デフォルトの名無しさんNGNG
>>788
テンションは妙だが、それであっている。
0801デフォルトの名無しさんNGNG
>>779 デフォルトの名無しさん wrote:
> > > でもよー、K&R読めとかあれはわかりやすいとか知ったかコイてるヤツは、
> > > 「実はガッコで懇切丁寧に教えられたクチ」なんだよ。
>
> > そう思い込みたいんでしょうね:)
> > そう思い込みたいんでしょうね:)
>いや、そもそもK&Rとは、Kusakabe & Real 厨房なので、
>そんなものをバイブルにするなどもってのほか:)

なるほど、やはりそうでしたか。

> > > K&Rで真に理解したんじゃないのよ。
> > > K&Rは難解だとの評価は大多数から既に出ている。
> >あれを難解だと思うようでは「なんちゃって」系なんでしょうね:)
>
> 人それぞれを理解できないようではプログラム以前の問題ですね

この"K&R"は読むに及ばないものですね:)
いやさ、何かいいものがあるはずさ。キラリと光る禿げの一つもあろうというものさ。
:)
0802デフォルトの名無しさんNGNG
>>801
面白くないからもうヤメレ。
0803Kusakabe YouichiNGNG
>>801
In article <[email protected]>, 801 デフォルトの名無しさ
ん <[email protected]> wrote:
> > > > K&Rで真に理解したんじゃないのよ。
> > > > K&Rは難解だとの評価は大多数から既に出ている。
> > >あれを難解だと思うようでは「なんちゃって」系なんでしょうね:)
> >
> > 人それぞれを理解できないようではプログラム以前の問題ですね
>
> この"K&R"は読むに及ばないものですね:)

っていうか「自分が理解できないぼけ」だったことを正当化したいといって
K&Rを不当におとしめるのは問題ありますね:)
0804デフォルトの名無しさんNGNG
ANSI-C言語辞典(技術評論社)は辞典です。
大部分は標準ライブラリ関数についての説明です。
欲しい関数があったらここから探せます。
便利ですので一冊持っておきましょう。
0805デフォルトの名無しさんNGNG
>いや、そもそもK&Rとは、Kusakabe & Real 厨房なので、
>そんなものをバイブルにするなどもってのほか:)

>この"K&R"は読むに及ばないものですね:)



「このK&R」にしないと理解できないのかヨ!
0806臭カベ勇み足NGNG
買う人が少ないので、単価が
0807デフォルトの名無しさんNGNG
伝わることを願うのですが、
3次配列をやりたいんです。
char *data1[]={"1","2","3"};
char *data2[]={"a","b","c"};
char *data3{}={"A","B","C"};
....
だったらいっそのことdata[1][][],data[2][][]...
としたいのが人情というものです。
僕は
char *data[][]=(***dataとか**data[])
{
{"1","2","3"},{"a","b","c"},{"A","B","C"}
}
とかしか思いつかないんですけど、これでいいんですか?
あぁ、
0808デフォルトの名無しさんNGNG
>>807
いいんじゃねーの?;
0809デフォルトの名無しさんNGNG
まぢですか?やってみりゃいいっつー話も
あるんすけどやってみるっす。
0810デフォルトの名無しさんNGNG
>>808
二次以上の場合、配列の上限値をすべて書かずに [][] だとまずいと思われ。
0811デフォルトの名無しさんNGNG
現実問題、そこまで複雑になったら構造体つかうべき。
0812ミニラNGNG
マクロの__func__が使えない場合、
代わりにデバッガ等でできますか?
環境はSun WorkShop 5or6です
使えたらデバッグ便利になるのになあ
0813デフォルトの名無しさんNGNG
単純配列にいちいち構造体割り当てるの?
0814デフォルトの名無しさんNGNG
「代わりにデバッガ等でできますか」って意味わかんない。
0815デフォルトの名無しさんNGNG
かなり限定された処理系のマクロじゃない?
0816デフォルトの名無しさんNGNG
当方、C言語を始めて5日目。恥ずかしながら四則計算が関の山です。
助けてっください。

次の方程式の解を以下の4つの方法で求めるプログラムを作成し、小数点以下第4位まで正確に解を求めよ。
   
   x−cos(x)=0

1、2分法
2、割線法
3、ニュートン法
4、反復法
0817デフォルトの名無しさんNGNG
printf("%s\n",__STDC__);
printf("%s\n",__TIME__);
printf("%s\n",__DATE__);
printf("%s\n",__FILE__);
printf("%s\n",__LINE__);

だけかな標準__マクロ__は
0818デフォルトの名無しさんNGNG
数学板逝ってください
0819デフォルトの名無しさんNGNG
検索エンジンで 2分法 割線法 ニュートン法 反復法 で検索して出てきたソース使え。

つーか、C言語初めて5日目でそんな課題出されたのか?
0820デフォルトの名無しさんNGNG
>>819
5日目にしちゃ簡単な問題だと思われ
0821デフォルトの名無しさんNGNG
プログラムの問題というより補間法の知識の問題だからねえ。
0822デフォルトの名無しさんNGNG
くさかヴェ先生2号がカタッてた洒落なのですが

「構造体を使ってプログラム構成をやり直すことを"構造改革"と呼びます」

こりゃ何点あげればよかと?
0823デフォルトの名無しさんNGNG
>>822
山田君、ざぶとん全部持ってきなさい

(ついでに sage なかった 822 のざぶとんも没収)
0824816ですNGNG
せめてヒントだけでも
0825 NGNG
>>817

printf("%s\n",__LINE__);

文字列出力できたっけ?
0826デフォルトの名無しさんNGNG
すいません %dですだ。
0827デフォルトの名無しさんNGNG
>>824
おいおい、たった20分弱でしびれを切らすなよ。
0828デフォルトの名無しさんNGNG
puts(__LINE__);
0829デフォルトの名無しさんNGNG
>>824
簡単なプログラムなんだな。
だが俺は補間法なんかとっくに忘れてしまっているから答えられないんだな。
0830デフォルトの名無しさんNGNG
2分法なんてバイナリサーチの実数版でしょ。
0831○NGNG
>>814
プログラム実行して、
使われる順番に関数名出力したいんでしょ

やりかたはわからんけどね
0832デフォルトの名無しさんNGNG
じゃあ書いてやるからアルゴリズム書け!(一休)
0833デフォルトの名無しさんNGNG
K&Rの演習問題1-13をやっているのですが、(先には進んでますが、ここだけが引っ掛かってます)

格納された数をヒストグラム風に出力してみようと思い、

( 0, * *
  1, * * * * * *・・・・ というふうに)

色々試したのですが、どうも上手くいきません。
ndigit[c - '0']で数を格納したときに、ヒストグラム部でも" *"を足していけばいいのかなと思いましたが
上手いコードが書けず、
結局、ndigit[1]、ndigit[2]、・・・・とイチイチ一つづつ格納されている数を見させながら

n = 0;
while(ndigit[1] > n) {
    n++;
    printf(" *");
      if(n == ndigit[1])
printf("\n");
 }

こんな感じで
ヒストグラムを表示させる方法しかできませんでした。
理想的なコードはどのようなものなのでしょうか。
0834デフォルトの名無しさんNGNG
>>824
何がわからん?

>>833
終端は何?
とりあえずそのプログラム滅茶苦茶
0835816ですNGNG
ああ、無能な俺・・・
ヘルプ・・・
0836833NGNG
や、でしょうなあ。

K&Rの27ページと28ページにまたがって載ってるプログラムに、
これをホイッとくっつけてみたのです。
0837暇人allザピーポーNGNG
>>835
とりあえず、どこがわからないのか書きなさいよ。
そうしたら手伝ったゲルよ
0838833NGNG
これでも必死に考えてやってみたんですよ・・・
何かものすごく短くできる良い案が浮かびそうでカタチにならない、
そんな状況で、コレが出来てしまいました。
0839デフォルトの名無しさんNGNG
>>833
for(i=1;i<=MAX;i++){
printf("%d,",i);
for(j=ndigit[i];j--;)
printf("*");
printf("\n");
}
普通にこんな風で駄目?
0840デフォルトの名無しさんNGNG
<pre>
   for(i=0;i<100;i++){
n=rand()%10;
hist[n]++;
}
    for(k=0;k=10;k++){
printf("%d",k);
for(i=0;i<hist[k];i++){
printf("*");
}
printf("\n");
}
}
</pre>

恐ろしく適当に作って見ました。
0841デフォルトの名無しさんNGNG
K&Rスタイル
K&R時代の(今となっては旧式の)書き方を言う。
(ANSIC言語辞典(技術評論社)より)
0842デフォルトの名無しさんNGNG
どうでもいいけど__func__はC99にあるよ。
まあ、C99は限られた環境かもしれないけど…
0843833NGNG
試しています・・・・・・・・・・・・・・・・
0844 デフォルトの名無しくんNGNG
C99ってコンパイルオプションとかで指定できるの?
0845デフォルトの名無しさんNGNG
>>844
とりあえずgcc3.0以上ならオッケーっぽいぞ
0846833NGNG
#include <stdio.h>

int main()
{

int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for(i=0; i<10; ++i)
ndigit[i] = 0;

while((c = getchar()) != 'Q'){

if(c >= '0' && c <= '9'){
ndigit[c-'0']++;
d = ndigit; }
else if(c == ' ' || c == '\n' || c == '\t'){
nother++;
e = nother; }
else {
nwhite++;
f = nwhite; }

}

printf("digit =");

for(i=0; i<10; ++i)
printf(" %d", ndigit[i]);

printf(" other = %d white = %d\n", nother, nwhite);

return 0;

}


元のはこういうものなんです・・・・
0847デフォルトの名無しさんNGNG
私はプログラム初心者で、Cを習ってるんですが、全く分かりません。
何か良い本はありますか?プログラミング自体初心者です。
ホントに基礎から勉強したいんですが、いい本あったら教えてください。
お願いします
0848833NGNG
あ、d, e, fはテスト用です。消し忘れました。

頭が悪いもので、短時間では上手いこと結果が出せません。
腰据えてやりたいと思います。
アドバイスくださった方、ありがとうございました。
0849デフォルトの名無しさんNGNG
>>847
明解C言語 入門編 柴田望洋 著  ソフトバンク
これ、初心者に最高!
0850デフォルトの名無しさんNGNG
この問題、教えてください。お願いします
キーボードから二つの整数x、yを入力し、
それらの整数の最大公約数(gcd)と最小公倍数(lcm)とを求める
。そして、入力データとgcdおよびlcmwp出力するプログラム(gl.c)を書きなさい。
また、入力データが正の整数以外のときは、"illegal number"と出力するようにする。
 なお、lcm=x・y/gcdである。
0851デフォルトの名無しさんNGNG
↑四行目 lcmwp→lcmを の間違えです。すいません
0852デフォルトの名無しさんNGNG
Visualc++高くて買えないんですが、ただのやつないんですか?
0853デフォルトの名無しさんNGNG
通は「初めてのC」
ネーミングがやばめ。プログラミングの本色薄め。これ。
で、これ電車の中で読んでいると次から他のリーマンからマークされる
危険を伴う両刃の剣。素人にはお勧めできない。
0854   どうですか?NGNG
初心者ですがBCBのプロフェッショナルと
Delpyi6プロフェッショナルを貯金をおろして
買ってしまいました。もう、後には引けません。
0855デフォルトの名無しさんNGNG
>>852 cygwin と gcc じゃダメかい?
0856デフォルトの名無しさんNGNG
>>852
Win32 なら、Borland C++ Compiler か Cygwin の gcc が無料で入手可能。
VC の無料版はない。
0857デフォルトの名無しさんNGNG
>855とりあえず、プログラムが組めるなら何でもかまわないっす。
0858デフォルトの名無しさんNGNG
どこにあるのでしょうか・・・
0859デフォルトの名無しさんNGNG
>>858
君は検索エンジンを知らないのかね?
0860デフォルトの名無しさんNGNG
BCBのプロフェッショナルってなに?
0861デフォルトの名無しさんNGNG
Bolandは無料DL止めちゃったのか。
0862デフォルトの名無しさんNGNG
>>859
この件に限っては、検索エンジンで探し当てるのは難しい。
0863   どうですか?NGNG
↑ボーランドC++builderです。
0864デフォルトの名無しさんNGNG
なぜ、SCANF関数には格納する変数がアドレスなのか?
その理由とPRINTF関数で出力する時、なぜ
* 変数ではなくそのまま出力できるのか?
&変数に値を格納しても、&を外した変数そのものは
空っぽではないのか?
これってさらっと書いてあるけど、自分には良くわからないです。
誰か分かる人、教えて下さい
0865デフォルトの名無しさんNGNG
これでいいのかな?
http://www.borland.com/bcppbuilder/freecompiler/cppc55steps.html
リンク切れてただけかな?
0866デフォルトの名無しさんNGNG
http://www.jaist.ac.jp/~fujieda/cygwin/
0867デフォルトの名無しさんNGNG
>>862
http://www.google.com/search?hl=ja&q=C%2B%2B+Compiler+%96%B3%8F%9E%81%40%83_%83E%83%93%83%8D%81%5B%83h&btnG=Google+%8C%9F%8D%F5&lr=
そうか?
0868デフォルトの名無しさんNGNG
>>850
テキトゥー

int i, j, t, x, y ;

printf("x,y>") ;
if(2!=scanf("%d,%d", &x, &y)){
printf("illegal number\n") ;
return ;
}

i = x ;j = y;

while(i%=j){
t = j ;
j = i ;
i = t ;
}

printf("GCD:%d\nLCM:%d\n",j,x*y/j) ;
0869デフォルトの名無しさんNGNG
>>861

君はどこを見ているんだい?まさかFTPの使えない環境から落とそうとしたとか言わないよね?

http://www.borland.co.jp/cppbuilder/freecompiler/bcc55download.html
0870デフォルトの名無しさんNGNG
>>864
printf に渡すのは変数ではなくて、変数から取出した値。
だから printf("%d", a * 100); みたいな式も値として渡せる。
scanf に渡すのは値の格納先(つまりポインタ)。
scanf の中で、受取ったポインタ値 p に対して *p = 入力値;
のように代入している。これでわかるか?
0871デフォルトの名無しさんNGNG
>>867
キーワード知ってればそりゃ出せるよ。
そういうのを後知恵というの。

>>864
ポインタで受けてる関数だから。
0872デフォルトの名無しさんNGNG
>>871
別段特殊なキーワードは入れてないつもりだが?
0873デフォルトの名無しさんNGNG
>>871

>>856がキーワードを言っていると思うが・・・
0874デフォルトの名無しさんNGNG
>>870

格納先を渡す関数は他にもいっぱいあるよね。getsとかstrcpyとか。
ただ、実際使うときに、&をつけてアドレス渡しすることがscanf以外ではあまりないというだけで。
0875デフォルトの名無しさんNGNG
>>873
まーなぞなぞみたいだがその通りかもしれない。

>>872
そうか?俺なら
C言語 無料 ダウンロード コンパイラ
とか入れるぞ。
0876874NGNG
× scanf
○ scanf系
0877デフォルトの名無しさんNGNG
>>874
配列名で渡すと異常動作する処理系が一杯あるから。
俺はいつも &配列名[0] で渡してる。
0878デフォルトの名無しさんNGNG
>>877

まじ!?
配列名==先頭のアドレスと定義されていないことがあるとか!?
0879デフォルトの名無しさんNGNG
マジ。
今まで三つ体験した。
0880デフォルトの名無しさんNGNG
>>879

初耳・・・
今までVC++,BCC32,gccしか使ったことがないから知らなかった・・
0881   NGNG
参考書を一通り理解できても
役に立つプログラムが書けません。
どうしたら役に立つプログラムが
書けるようになれるのでしょうか?
0882デフォルトの名無しさんNGNG
>>881

自分が必要に迫られるとか。
0883デフォルトの名無しさんNGNG
>>881
何か自分で作りたいプログラムは無いのかよ。
0884デフォルトの名無しさんNGNG
>>880
2つはgccだったり・・・。
0885     NGNG
それが何を作っていいのか
分らないのです。
0886デフォルトの名無しさんNGNG
>>884

古いバージョンの?
私は最近のだからなぁ(LINUX用)。
0887デフォルトの名無しさんNGNG
>>885

役立ちそうなライブラリを作って配るとか・・・
0888デフォルトの名無しさんNGNG
参考書ってのがどの類の物か知らんが、言語を一通り理解したんなら
次は自分が使っている環境について勉強。
それで何も思いつかないようなら向いてないんじゃない?
0889デフォルトの名無しさんNGNG
>>886
2つはターゲットがx86じゃ無い奴ね。
0890デフォルトの名無しさんNGNG
>>889

そうか。なるほど。
0891デフォルトの名無しさんNGNG
>>885
1)ゲーム。
2)就職。(嫌でも何を作るか判ります。)
0892       NGNG
>>888
そうですね、気軽に頑張ってみます。
0893デフォルトの名無しさんNGNG
>>870 そうなんですか。 SCANFの中でポインタ(入力した値そのもの)
を受け取って
そのポインタの先の変数にそのポインタの値(つまりアドレス)を
代入してるという事ですか。
そうすると アドレスとそのアドレスの先にある変数は同じ値という
事になるのですね。
0894デフォルトの名無しさんNGNG
>>893
ちがう
0895デフォルトの名無しさんNGNG
>>893

ポインタは入力した値そのものじゃないよ。入力してフォーマットした後のものを入れる場所を指すアドレスだよ。
0896895NGNG
アドレス自体はコピーされるけれど、二つのアドレス(実引数と仮引数)は指すところは同じだからその指すところをいじれば間接的に値を変更できるというわけ。

なんか説明が変だな・・
0897デフォルトの名無しさんNGNG
そうすると SCANFの代入する値は変数そのものではいけないの
ですか?まず入力した値は、SCANFの&変数の中に代入される
みたいに書いてあったような気が・・
0898デフォルトの名無しさんNGNG
>>892
「エロサイトのポップアップを消すソフトを作るために勉強するやつ。」
↑こういうのが上達すると思う。
0899デフォルトの名無しさんNGNG
ポインタが難しいっていうけど何が難しいの?
Cのポインタって(C++は知らんが)すげー便利だなっておもったよ。
0900デフォルトの名無しさんNGNG
>>899

一歩間違えばセグメンテーション違反
0901デフォルトの名無しさんNGNG
この場合は関数側で加工するからじゃない?
変数のコピーを渡すと、加工しても元の変数は加工されないまま。
データを加工する関数は大抵ポインタ渡しだね。
0902デフォルトの名無しさんNGNG
やれやれ…土曜の夜は厨房ばかりか。

>>897
入力された値を戻り値として受け取れないから、入れ物の場所を指定して
そこに入れてもらうため。
つか、ポインタと戻り値を理解できるまでK&Rを復唱せよ。
0903デフォルトの名無しさんNGNG
>>899
ポインタのポインタのポインタとポインタのポインタが
ポインタの配列と混じっている関数へのポインタ
とかを使ってデバグではまったら分かる。
0904デフォルトの名無しさんNGNG
参照でもメモリ違反起こせますが何か?
0905デフォルトの名無しさんNGNG
>>903
んなものは無い。
0906デフォルトの名無しさんNGNG
ムヒョース。
0907デフォルトの名無しさんNGNG
例外を捕捉したい

try{}catch(){}
みたいな簡単な仕組みでよろしく

セグメンテーションフォールトが手に入ればそれでいい
0908デフォルトの名無しさんNGNG
>>903
デバッグ以前に設計が悪い。
0909デフォルトの名無しさん NGNG
実際問題極端な例(そう言う実装をせざるを得ない)を除いて、
梅干何個くらいならOK?
俺は***までは割とすんなりですが、
それを超えると逝ってよしと思ってしまう。。
0910デフォルトの名無しさんNGNG
漏れも梅干しは3つぐらいまでだな。
それ以上は酸っぱすぎる。
文字列の配列へポインタとか。
0911デフォルトの名無しさんNGNG
P/ECEを買ってC言語を…って方はいらっしゃいますか?(w
0912Kusakabe YouichiNGNG
>>807 デフォルトの名無しさん wrote:

> 伝わることを願うのですが、
> 3次配列をやりたいんです。
> char *data1[]={"1","2","3"};
> char *data2[]={"a","b","c"};
> char *data3{}={"A","B","C"};

これ2次元では?
(ああcharレヴェルで数えると3次元か)
0913Kusakabe YouichiNGNG
>>811 デフォルトの名無しさん wrote:

> 現実問題、そこまで複雑になったら構造体つかうべき。

なぜ連体形? :)
0914Kusakabe YouichiNGNG
>>816 デフォルトの名無しさん wrote:

> 当方、C言語を始めて5日目。恥ずかしながら四則計算が関の山です。
> 助けてっください。
>
> 次の方程式の解を以下の4つの方法で求めるプログラムを作成し、小数点以下第4
位まで正確に解を求めよ。
>   
>    x−cos(x)=0
>
> 1、2分法
> 2、割線法
> 3、ニュートン法
> 4、反復法

ニュートン法とはなにか、ってのをちゃんと授業効いてなかったのでわからない
だけでは? :)

# プログラム以前の問題のような。
0915Kusakabe YouichiNGNG
>>831 ○ wrote:
> >>814
> プログラム実行して、
> 使われる順番に関数名出力したいんでしょ
> やりかたはわからんけどね

ふつうに__func__つかえばいいんじゃないの?
そういう話じゃなくって?
0916デフォルトの名無しさんNGNG
日下部さんって日コン連の人?
0917Kusakabe YouichiNGNG
>>841 デフォルトの名無しさん wrote:
> K&Rスタイル
> K&R時代の(今となっては旧式の)書き方を言う。
> (ANSIC言語辞典(技術評論社)より)

いまK&RっていうとK&R2ndのことを言いそうな気がするが。

C89以前のtradな書き方のことだろうか??
0918Kusakabe YouichiNGNG
>>847 デフォルトの名無しさん wrote:
> 私はプログラム初心者で、Cを習ってるんですが、全く分かりません。
> 何か良い本はありますか?

あるのでは?
0919デフォルトの名無しさんNGNG
もう少しヒネリの効いたレスの付け方を考えられないのだろうか(わ
0920Kusakabe YouichiNGNG
>>864
In article <[email protected]>, 864 デフォルトの名無しさ
ん <[email protected]> wrote:

> なぜ、SCANF関数には格納する変数がアドレスなのか?
> その理由とPRINTF関数で出力する時、なぜ

標準になさそうな関数ですね:) > SCANF, PRINTF

> * 変数ではなくそのまま出力できるのか?
> &変数に値を格納しても、&を外した変数そのものは
> 空っぽではないのか?
> これってさらっと書いてあるけど、自分には良くわからないです。
> 誰か分かる人、教えて下さい

110ペイジに書いてあります。
0921Kusakabe YouichiNGNG
>>877 デフォルトの名無しさん wrote:
> >>874
> 配列名で渡すと異常動作する処理系が一杯あるから。
> 俺はいつも &配列名[0] で渡してる。

それってようするに、バグですよね > 異常動作する処理系

そういうのをさももっともらしく書くと本気にする人がいるかも。
0922Kusakabe YouichiNGNG
>>881 wrote:

> 参考書を一通り理解できても
> 役に立つプログラムが書けません。

参考書が悪かったか、もしくは
自分では理解したと思っているが理解できていないかどちらかでしょう。

参考書に書いてあるプログラムが実際に役に立つプログラムだったりすると
そっちほうめんに行きやすいでしょうね。
0923デフォルトの名無しさんNGNG
おい糞壁。
こっちの板の人達に迷惑かけてんじゃねえよ。
0924Kusakabe YouichiNGNG
>>885 wrote:
> それが何を作っていいのか分らないのです。

つまり必要性がないかいぎり「役に立つ」ことは不可能なので、
あなたは何も作る必要はないのです。

# モティヴェイションは重要
0925デフォルトの名無しさんNGNG
>>885
宿題スレにいって、答えてあげて下さい。
役に立ちます。
0926デフォルトの名無しさんNGNG
日下部さんのヒープソートが大好きです! (・∀・)ヒマナオッサンダナ
0927デフォルトの名無しさんNGNG
元祖厨房って・・・。
ttp://www14.big.or.jp/~midoriko/kusakabe/jinmei_4.htm
0928Kusakabe YouichiNGNG
>>926 デフォルトの名無しさん wrote:
> 日下部さんのヒープソートが大好きです! (・∀・)(I墨典�Z歙淌

「ねたを仕入れた」とおもって得意げにかくまえに、
ちゃんと本読んでみたほうが恥かかなくてすむぞ :)
0929名無しさん@お腹いっぱい。NGNG
おっさんさぁ、結構ちゃんとしてるし頭切れるのも分かるんだけど
何でそんなにネットに時間費やすの?
俺見たいのなら分かるが、何か時間の使い方間違えてる気がするなぁ・・・
それでストレス発散になるってんならここはいい場所だろけどねー
0930デフォルトの名無しさんNGNG
日下部さんの配偶者が美人だと聞きましたが本当でしょうか?
0931Kusakabe YouichiNGNG
>>929 名無しさん@お腹いっぱい。 wrote:

>結構ちゃんとしてるし頭切れるのも分かるんだけど
> 何でそんなにネットに時間費やすの?

そんなに時間使っていますか?

> 俺見たいのなら分かるが、何か時間の使い方間違えてる気がするなぁ・・・

つまり2chばかりしてると思い込んでいるのですね:)
0932デフォルトの名無しさんNGNG
>>930 かわいい人だと思った。
女ってのは駄目な男にひかれるのかな、、、 と(失礼
0933デフォルトの名無しさんNGNG
>>930
http://www.void.tako.org/void/
0934デフォルトの名無しさんNGNG
>933
写真がいっぱいある・・・。
結構可愛いですね。
0935デフォルトの名無しさんNGNG
>>934
嫉妬と羨望だよな。
そのサイトを注意深く探れば、もっといい写真が隠されてるよ。
0936デフォルトの名無しさんNGNG
サイトが広いから探せない。
0937デフォルトの名無しさんNGNG
すいません、初心者です。 下の方法はおかしいでしょうか
どうしても返ってきた時distの値が切れてしまうんです(実際は構造体のメンバからのコピー)
strcpyの後でprintしても切れてしまいます 鬱
main()
{
  char *dist = NULL;

  func(&dist);
  printf("%s \n",dist);
  exit(0);
}
func(char **dist)
{
  char src[] = "TEST STRINGS";
  *dist = (char *)realloc(*dist,strlen(src)+1);
  strcpy(*dist,src);
}
0938937 NGNG
あわわ、やっぱりしょうもない間違いでした −_−;
コピーの手前でlength=strlen(structsrc->member);メンバの名前を
間違えてました  情けない、、、2時間悩んだよぅ
0939デフォルトの名無しさんNGNG
>>907
Win32 なら構造化例外 (SEH) で捕まえられる。

int isViolated = 0;
__try {
  // やばそうな処理
} __exception (GetExceptionCode() == STATUS_ACCESS_VIOLATION)
{
  isViolated = 1;
}

UNIX だと SIGSEGV に対応するシグナルハンドラを登録すれば、アクセス保護違反が
発生した瞬間にシグナルハンドラが呼ばれる。ただし、そのときに適切な処理を行うた
めには、設計段階でアクセス保護違反が発生しうることを想定しておく必要がある。後
づけてコードを追加するのは、けっこう難しい。
0940デフォルトの名無しさんNGNG
ロギングについてご助言下さい。
複数のプロセスから fprintf() で
一つのログファイルに書き出す場合の排他処理の定石は?
特別なこと(排他処理)をしなくてもうまく書き込めている
気がするのですが木の精ですか?
同じようなことをバッファリングなしで putc() で行うと
ログファイルがぐちゃぐちゃになります。
バッファリングとか fprintf() の実装とか関係ありますか?
あとログファイルのローテーションはどう実装したらよいですか?
0941デフォルトの名無しさんNGNG
>>940
ログ専用プロセスを用意してそいつとプロセス間通信。
ローテーションもそのプロセスがやればよい。
0942デフォルトの名無しさんNGNG
>>940
write()で一つのブロックを一回で追加書きこみが定石。
ファイルアクセスはそれ自体が排他的なんで、追加書きこみなら
何も気にしなくて良い。
0943デフォルトの名無しさんNGNG
>>902 それなら、納得です。
いや、本みたら、ポインタ変数に直接、入力した値が書き込まれるみたい
に書いてあったので、へっ?って思ったけど、そのアドレス先の実体だけに
書き込んでいるのですね。 だからscanf( "%d" , &a)で入力した値は
aに書き込まれて,&aの値(番地)は入力前も入力後も同じですよね。
0944デフォルトの名無しさんNGNG
質問なんですが(厨な質問でしたらゴメンナサイ)、なぜ
scanf()を使うのがよくないんですか?
誰か説明してくれませんか?初めて知りました・・・
0945デフォルトの名無しさんNGNG
scanf()を使うのがよくないって誰か書いた?
0946デフォルトの名無しさんNGNG
>>945
いや、なんかさっき別の板でも言ってた人いましたし、
ずいぶん前に、知り合いがボソッと言ってました。
何でかって、知り合いに聞いたんですけど難しい言葉を
並べられただけで・・・
自分には理由がわからないんです。だから教えてもらい
たくって・・・
0947デフォルトの名無しさんNGNG
>>939
>SIGSEGV に対応するシグナルハンドラ
おっとーそういやそんな仕組みあったな。
つーか、例外が起こったら適当に傷を記録して
そのあと元処理に復帰したいんだけど、なかなかムずいね

Javaってこの辺楽なんだよね。遅くっても許すって感じ
0948デフォルトの名無しさんNGNG
>>946
書式と型や入力数が異なってもエラー検出できないからかな?
CUIやらないんで使った事ないや。
0949Kusakabe YouichiNGNG
>>946 デフォルトの名無しさん wrote:
> ずいぶん前に、知り合いがボソッと言ってました。

その知り合いに聞くってのはだめですか? > scanf()がダメだとかいう人

> 何でかって、知り合いに聞いたんですけど難しい言葉を
> 並べられただけで

なんだ聞いたのですか。
もう少しわかりやすく言ってくれってたのんだらどうですか?
0950デフォルトの名無しさんNGNG
>>949
忘れてました。
でもこの板見つけたから、詳しい人が沢山いるだろうと思って聞いてみました。
0951デフォルトの名無しさんNGNG
>>946
scanf() が使いづらいのは

1. 字句解析
 文字列の並びから、ここまでが数値、ここまでが演算子、といったようにトークンを
 切り出す処理
2. 型変換
 文字列の "1111" を int 型の 1111 に変換するような処理

を一つの関数にまとめてしまっていて、エラー処理などが難しいからでしょう。

実はscanf() の書式指定はかなり強力で(正規表現ほどではないけど、かなりのことが
できる)使いこなすと便利なのですが、それでも

1. 字句解析は getc(), ungetc() で一文字ずつ拾いながら、トークンの切れ目を探す
2. トークンの切れ目が見つかったらところで、トークン種別を確定して itoa, sscanf()
 などで型変換

と 2 段階にした方がつぶしがきくので、よく使われます。
0952Kusakabe YouichiNGNG
>>951 デフォルトの名無しさん wrote:
> scanf() が使いづらいのは
>
> 1. 字句解析
>  文字列の並びから、ここまでが数値、ここまでが演算子、といったようにトー
クンを
>  切り出す処理
> 2. 型変換
>  文字列の "1111" を int 型の 1111 に変換するような処理
>
> を一つの関数にまとめてしまっていて、エラー処理などが難しいからでしょう。


あと、ほかのsscanf()などとちがって、改行をまたぐときの問題がありますね。
0953デフォルトの名無しさんNGNG
>>951.952
ありがとうございます。知りたかったことがわかってよかったです。
0954デフォルトの名無しさんNGNG
さて、そろそろ次スレの季節。
0955デフォルトの名無しさんNGNG
他にC言語で、あまりよくないものってあるんでしょうか?

getc,sscanfの他にgetsなんてのはどうなんですか?
0956デフォルトの名無しさんNGNG
>>955
gets() は最悪ですね。バッファオーバーランが防げない。
0957デフォルトの名無しさんNGNG
バッファオーバーランってなんですか?
入力はgetcとsscanfがいいって事ですか?
0958デフォルトの名無しさんNGNG
>>957
とりあえず google 逝け。
0959デフォルトの名無しさんNGNG
>>942
write()では一度に指定したサイズを書ける保障はないので、
ロック -> ファイル末尾へシーク -> 書き込み -> アンロック
の方が確実だと思われ。
0960Kusakabe YouichiNGNG
>>955 デフォルトの名無しさん wrote:
> 他にC言語で、あまりよくないものってあるんでしょうか?
>
> getc,sscanfの他にgetsなんてのはどうなんですか?

388ペイジに書いてありますね > gets()
0961デフォルトの名無しさんNGNG
gets() では、例えば

 char str[80];  //char 型の str変数を str[0] から str[79] まで 80個確保
 gets(str); //gets でキーボードから文字列を入力

としても、70文字以下の入力だったら問題無いが、80文字以上の入力をされたときになにもできないため、オーバーフローがおきる。
セキュリティーホールになる。

fgets だったら、最大入力可能文字を数字で指定できる。その数字を超えたものは次回の入力にまわせる。
だから、gets は使わず fgets を使うべき。
0962デフォルトの名無しさんNGNG
>>960
すいませんが、特定の本を出されても困っちゃいます。
それに何の本ですか?

>>961
なるほど。そういうことなんですか。ありがとうございます。
0963デフォルトの名無しさんNGNG
>>962
> すいませんが、特定の本を出されても困っちゃいます。
> それに何の本ですか?

Kusakabe 先生のスレ違い/意図不明な書き込みに対する苦情には専門のスレ
が用意されて いるので、ム板では書かないようにお願いします。そのような書き
込みにコメント をつけるのは、彼と一緒に一緒になって荒らし行為をし てるのと
変わりません。

日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/

#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
0964Kusakabe YouichiNGNG
>>957 デフォルトの名無しさん wrote:
> バッファオーバーランってなんですか?

たとえば、飛行機が離陸するときに滑走路からはみ出して海に落ちたら痛いですよ
ね。
0965デフォルトの名無しさんNGNG
CGIプログラムとして動作させるときは、CONTENT_LENGTHの値から入力されたバイト数が分かる(POSTの場合)ので、gets()でも構いませんよね?
0966デフォルトの名無しさんNGNG
> バッファオーバーランってなんですか?

幼女タンのマムコに、大人のチンポを無理やりねじこんだら、子宮破裂するでしょ。
それと同じ。
0967デフォルトの名無しさんNGNG
>>965
それを騙す人がいなければ。
というか、ふぇーるせーふ でなるべく使わないに越したことはないかと
0968デフォルトの名無しさんNGNG
CONTENT_LENGTHの値ってだませるんですか!?
WWWサーバーソフトが設定するのだとばかり思っていましたが。
0969968NGNG
とりあえず、fgetsにします。
0970デフォルトの名無しさんNGNG
>>968
今時 Web サーバにバグがない、なんてことは誰も信じてません(w

まぁ CONTENT_LENGTH が腐ってることはまずないと思いますが、それでも万が一の
ときにバッファオーバーランが発生する(しかも検出できない)のと、エラーをプログラ
ム側で検出してログに残すなり何なりの対処を取るのでは、プログラムの信頼性が
違ってきますし、バグへの対処に要する時間も変わってきます。
0971デフォルトの名無しさんNGNG
赤信号が出てるので新スレ作りました。
速やかに移動してください。
http://pc.2ch.net/test/read.cgi/tech/1007272267/l50
0972newbieMNGNG
今ある特定のディレクトリの中のファイル名を比較して
リネームというようなソフトを作ろうと思っているんです。
つまりaっていうフォルダに
abc.txt
efg.txt
・・・・
ってあったとき
abc.txtをエービーシー.txt
efg.txtをイーエフジー.txt
という風に初めからあるリストと比較してリネームしたいんです。
ですが具体的にどのように書いたらいいかがわかりません。
どの命令を組み合わせるかおしえていただけないでしょうか?
0973デフォルトの名無しさんNGNG
>>972
そのプログラムを組むには、いろいろ関数を使います。
もう少し的を絞って質問してください。
それと、新しい、スレに移動もおねがいします。
0974Kusakabe YouichiNGNG
>>972 newbieM wrote:
> 今ある特定のディレクトリの中のファイル名を比較して
> リネームというようなソフトを作ろうと思っているんです。

man 5 rename
0975newbieMNGNG
了解しました。
早速移動して書き直したいと思います。
が、ほんとにまったくわからないんです。
一つのファイルだけならできるんですが・・・
0976デフォルトの名無しさんNGNG
>>975
プラットフォームは?
0977newbieMNGNG
>974さん
意味わからないです(w_−; ウゥ・・
0978デフォルトの名無しさんNGNG
>>977
分からなくていい。>>963 見とけ。
0979デフォルトの名無しさんNGNG
>>977
OSは?
答えはは新スレで
0980デフォルトの名無しさんNGNG
>本気で「ひとそれぞれ」だと思っているんだったら、
>「K&Rは難解だとの評価は大多数から既に出ている」とかいう理屈は
>使えないわけですよね:)

「人それぞれ」って「K&Rは簡単ってことになる」と思い込んでいる人もいるようですね:)
っていうか「そういうこと言う人が多いですよ」ということと「理屈は使えない」ってどう繋がるのでしょうね:)
0981デフォルトの名無しさんNGNG
>>980
なに、この人?
0982デフォルトの名無しさんNGNG
名無し登場臭壁チャン
0983C初心者NGNG
結城浩せんせのC言語プログラミングレッスンの
EOFまで繰り返せまで進んだんですが僕も話しに加われますか?
0984デフォルトの名無しさんNGNG
>>983
加わってもいいけどもうスレが終わりです。
0985デフォルトの名無しさんNGNG
ちなみに次スレはこれね。

C言語なら、俺に聞け! <9>
http://pc.2ch.net/test/read.cgi/tech/1007272267/
レス数が950を超えています。1000を超えると書き込みができなくなります。