トップページ⇒tech
1001コメント260KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001ともっちNGNG
C言語質問すれ

・comp.lang.c FAQ
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

・前スレ
<18> http://pc.2ch.net/test/read.cgi/tech/1020260813/l50
リンクは>>2-3
0002ともっちNGNG
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならすべてわかるから、疑問な点があったら漏れに聞け。

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

・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

C言語なら、俺に聞け!
<17> http://pc.2ch.net/test/read.cgi/tech/1019372139/l50
<18> http://pc.2ch.net/test/read.cgi/tech/1020260813/l50
0003ともっちNGNG
コンパイラ

タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/l50

Win32用の開発環境のみ。

gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

------------------------ ライセンスや機能などに問題あり ---------------------
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

その他
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
0004デフォルトの名無しさんNGNG
>>1
ともっちかよ!
0005デフォルトの名無しさんNGNG
>>2
ともっち 38 かよ!
0006_NGNG
JAVAとC言語ってどんな違いがあるんですか?
0007デフォルトの名無しさんNGNG
>>6
ほとんど一緒。
天と地ほどの差しかない。
0008デフォルトの名無しさんNGNG
>>6
生ハムと生肉くらいの違いです
0009_NGNG
金融系のITでは、どちらが主流なんですか?
なんかコボルというのは前時代のプログラムで
こんなの学んでも食えんと言われてしまいました。
0010デフォルトの名無しさんNGNG
>>9
いやコボルだろ〜
CはUNIX記述用言語として生まれただけあってUNIXと制御系でよく使われる。
0011_NGNG
制御系っていうのはウイルスからPCを守ったりする
ソフトを開発する仕事のことですか?

あと、10氏レスを見ると、UNIXを学ぶなら、先にC言語を学んだほうがいいみたいな
感じですね
0012デフォルトの名無しさんNGNG
>>11
一緒でいーんじゃねーの
0013デフォルトの名無しさんNGNG
制御系ってOSとかじゃないの?
0014デフォルトの名無しさんNGNG
Cが使われる制御系ってプロセス(工程)制御とか
エンジン制御とか埋め込み系じゃなか?
0015デフォルトの名無しさんNGNG
C をやる前に Lisp か scheme をやったほうがいいYO
0016デフォルトの名無しさんNGNG
>>15
まじかよ!
Emacs Lispとか?
0017デフォルトの名無しさんNGNG
>制御系っていうのはウイルスからPCを守ったりする
>ソフトを開発する仕事のことですか?
違う。

>制御系ってOSとかじゃないの?
それも違う。

厳密な定義がある訳じゃないけどある特定の機械を動かすためのプログラムをさして
制御系とか組み込みなどという。いま身の回りにある電化製品はほとんどICが入っていて
これを「制御」しているのもやはりプログラムなわけです。
Cはこの制御系でよく使われるのですがそれは言語仕様が小さくてプログラム全体が
小さくできるからです。
0018デフォルトの名無しさんNGNG
>>17
> 小さくてプログラム全体が小さくできるからです。

比較的低水準だからだとオモテタ
0019デフォルトの名無しさんNGNG
制御系と組み込みは同じものだったのか・・・
逝こう・・・
0020デフォルトの名無しさんNGNG
>>17
前橋さんの本でちょこっとかいてあったんですけど、「テレビのリモコンに使う組み込みチップ」
などは実務における、Cのよくある使い方の1つなのですか?
初心者丸出しの質問で申し訳ないですが。
0021デフォルトの名無しさんNGNG
>>18
だからプログラムを小さくできるということでは。
0022デフォルトの名無しさんNGNG
言語仕様が巨大で、処理系も巨大でも、サイズの最適化が強力ならプログラムのサイズ小さくできるんでないの?
0023デフォルトの名無しさんNGNG
>>22
巨大も部分による。
予約後が莫大=巨大というとらえ方もあるし
0024デフォルトの名無しさんNGNG
プログラムサイズがどうのこうのっていうのは、処理系側の話では?
0025デフォルトの名無しさんNGNG
Smalltalkは予約語は無いし文法は最小限だけど、おせじにも言語仕様が小さいとは言えない、とか。

で、Cは出力されるコードが予想やすい言語仕様だから、小さく作りやすい、って事でないのかな?
あとライブラリが切り離せるとかもあるかな。
0026デフォルトの名無しさんNGNG
void (*MainLoop)()=StartInit;

while(1){
 if(PeekMessage(&msg,(HWND)NULL,0,0,PM_REMOVE)){
  if(msg.message == WM_QUIT) break;
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }else{
  MainLoop();
 }
}

というふうにループ構造を作って,

void StartInit()
{
   printf("はじめ\n");
   MainLoop=SecandInit;
}

というふうにしているのですが、危険でしょうか?
0027デフォルトの名無しさんNGNG
>>26
ぜんぜん平気。
0028デフォルトの名無しさんNGNG
でもダサイ
0029デフォルトの名無しさんNGNG
>>28
ガ━━Σ(゚д゚lll)━━ン
0030デフォルトの名無しさんNGNG
>>26
そう言う風にする危険性より、MainLoop と言うへんてこな変数名や
SecandInit とか言う Manoy に匹敵するスペルミスが、あなたの
プログラムを糞なものにする危険性のほうが高いでしょう。
0031デフォルトの名無しさんNGNG
>>30
ガ━━Σ(゚д゚lll)━━ン

    ∧ ∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   < もう寝るよ。おやすみ。
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
0032デフォルトの名無しさんNGNG
>>29 >>31
リアクションに ワラタ
0033デフォルトの名無しさんNGNG
>言語仕様が巨大で、処理系も巨大でも、サイズの最適化が強力ならプログラムのサイズ小さくできるんでないの?

スレの流れを読んでよ。制御系の話でしょ。
制御系と言うことはOS上で走らせるプログラムじゃないんだから汎用的なコンパイラの
最適化は無意味じゃん。

22にわかりやすく言えばOS(組み込みにOSも何も無いんだけど)に当たる部分も書かなきゃ
いけないということ。
003422NGNG
>>33
ハァ?
チミ、クロス開発って知ってる?
0035デフォルトの名無しさんNGNG
>>33
> 制御系と言うことはOS上で走らせるプログラムじゃないんだから汎用的な
> コンパイラの最適化は無意味じゃん。

ハァ ?

> 組み込みにOSも何も無いんだけど

ハァ ? (まあ、ない奴もあるけどさ...。)
0036デフォルトの名無しさんNGNG
ハァハァいうな。うみびらきならもうすぐだ。
0037デフォルトの名無しさんNGNG
善意に取れば >>35 は「ソースとオブジェクトが良く対応してた方が
(つまりソースがある程度低レベルな方が)組み込みのデバッグが楽」
といいたいのかも知れん。
003837NGNG
ごめん>>35じゃなくて>>33だった。
0039デフォルトの名無しさんNGNG
なんかこう、ちょびっとasmとかm80とかの使い方覚えて
最適化のこと分かった気になって、ついつい2chでかたりはじめちゃう連中、
ほのぼの。
0040デフォルトの名無しさんNGNG
>>37
> つまりソースがある程度低レベル
お前のプログラムみたいだな。(藁)
00412NGNG
(藁を(藁)とする>>40は新参
0042デフォルトの名無しさんNGNG
>>41
2ch の古参でうれしいの ?
0043デフォルトの名無しさんNGNG
必死な>>42を晒しage
0044デフォルトの名無しさんNGNG
>>42
新 参 者 必 死 だ な ( 藁
0045デフォルトの名無しさんNGNG
√藁
004642(騙りNGNG
そう、よかったわね。
004735NGNG
>>37
そんな変な取り方すんなよ。
別に制御系と言ったって、特殊なコンパイラ使ってるわけじゃない。まあ、
CPU が普通と違うとか、いろんな領域のアドレスがちゃんと指定できる
(どっちかってーと、リンカの仕事もあるけど) 等の機能はあるけど、
最適化に関しては、普通のコンパイラと同じだよ。
「組込に OS も何も無いんだけど」に至っては、何年前の話だ ? って感じが
する。まあ、俺もテレビのリモコンなんかは手がけたこと無いから、そのクラス
だとそう言うこともあるとは思うが、ちょっと大き目の LBP とか、銀行の端末
とかなら最近は、OS 乗せるのが普通。特に、GUI と Net (.NET では無いぞ。
TCP/IP とかのことだよ。) と ファイルシステムを備えるものなら、まず OS は
載っている。ちなみに、携帯電話用の OS もあるのは、知ってるよね。
0048綾ナムナム(´人`)NGNG
>>47 そんな必死に言い訳しなくてもいいのよ
ここがどんな場所だかわかってるの?
0049デフォルトの名無しさんNGNG
>「組込に OS も何も無いんだけど」に至っては、何年前の話だ ? って感じが
>する。まあ、俺もテレビのリモコンなんかは手がけたこと無いから、そのクラス
>だとそう言うこともあるとは思うが、

いやまさにそういうレベルの話だったんだけど自分の周りの方が特殊だったんだ、、。
おはずかしぃ。
0050デフォルトの名無しさんNGNG
目からもろこ?
0051デフォルトの名無しさんNGNG
ちなみに33 = 49でそれ以外の方は違う方です。
善意の方も悪意の方もネタの方もそのつもりでお願いします。

#いや善意にとってくれた人が自己弁護しているようにとられているから申し訳なくて、、。
0052デフォルトの名無しさんNGNG
正直、OSが使える人は羨ましい
仕事でブッちぎれたときはHello,world.
標準出力がある幸せ
0053デフォルトの名無しさんNGNG
もろこ!!
005447NGNG
>>48
あらあら、言い訳にしか取れなかっただね。ごめんな、あんたにはちょっと
難しすぎたみたいね。

>>49
まあ、そう言う世界もあるらしいけど、制御系一般の話としてはちょっと
ね。ところで、OS 云々はいざ知らず、そう言うクラスの話だと、
「汎用的なコンパイラの最適化は無意味」なのか ? メモリーが少なそう
だからプログラムサイズを最優先にするとかのことを言ってるのか ?
0055デフォルトの名無しさんNGNG
正直、小規模組み込み系の話はそっち系のスレでやって欲しい。
0056デフォルトの名無しさんNGNG
不特定多数が相手なんだから、
相手の解釈がどうのこうの言わずに自分の表現を変えてみたら?
0057デフォルトの名無しさんNGNG
>>56
誰に言ってるんだ。誤爆か ?
0058デフォルトの名無しさんNGNG
リスト構造のプログラムで
struct node {
int data;
struct node *next;
};
なる構造体を定義し、メモリを確保する際に、
struct node *p_new;
p_new=(struct node *)malloc(sizeof(struct node));
とC言語の本に載っています。しかしながら、別の本には、
p_new=(struct node *)malloc(sizeof(struct node)+4);
のように+4、あるいは+8などしているのですが、これは
なぜでしょうか?何のためでしょうか?教えていただけませんか?
いずれにしてもコンパイルは出来ますし、実行も正常にできます。
0059グリーンNGNG
どなたか、ぜひ教えて下さい。
Windowsプログラムで、エクスプローラでフォルダを選択して右クリックの[共有]で開く画面(フォルダ共有設定をする画面)を出したいのですが、方法はないものでしょうか。
0060デフォルトの名無しさんNGNG
>>58
一般的に言って足す必要なし。
+4してる本に特殊な状況であることについての説明があるんじゃないの?
もしなければその本がクソ。
0061デフォルトの名無しさんNGNG
理由なんか無いだろ
0062デフォルトの名無しさんNGNG
>>59
C言語じゃ無理だね
0063デフォルトの名無しさんNGNG
>>62
ワラタ
0064デフォルトの名無しさんNGNG
>>58
メモリー屋さんの陰謀かもしれん。その本の題名と著者をさらせ。
と言うのは、おいといて...
struct node {
 struct node *next;
 int data[1];
}
って定義して (next と data の順序に注意)、
p_new = (struct node *)malloc(sizeof(struct node) + 4);
なら、p_new->data[0〜1] が使えて
p_new = (struct node *)malloc(sizeof(struct node) + 8);
なら、p_new->data[0〜2] が使える。と言う方法は昔あったけど...。
ちなみにこれは、sizeof(int) == 4 を仮定してるから、普通は...
p_new = (struct node *)malloc(
 sizeof(struct node) + (n - 1) * sizeof(int));
と言うようにやる。
0065デフォルトの名無しさんNGNG
つうか質問です。
コンパイラ(visual C++.NET)は
どうしてレジストリいじくっちゃうんですか?
仕組みわかる人教えて
0066デフォルトの名無しさんNGNG
>>65
API。アフォか。
0067伊集院光NGNG
突然ですが私は伊集院光です。水曜25時25分
ゲームWAVE見てね。


0068デフォルトの名無しさんNGNG
>>67
前まで見てたけどお前アフォなので見なくなった
0069デフォルトの名無しさんNGNG
>>58
むかしむかし小さなメモリブロックをアロケートすると4だか8だかの倍数の
大きさにメモリブロックのサイズを調整しようとした時にバグになる処理系があった。
もしかしたらそれのトラウマが感染してるんじゃなかろうか?
007058NGNG
>>60,>>61,>>64,>>69
レスありがとうございます。助かりました。
0071記念式典国民大会NGNG
なんかこのスレも回数を増すごとに>>1の名前におもしろみが薄れていく・・・
スーパーハイソサエティーハッカー日下部陽一から次はどう来るか楽しみだったのに・・・
0072デフォルトの名無しさんNGNG
俺は糞壁の名前だけでむかつくから使わんで欲しいが。
0073デフォルトの名無しさん NGNG
くだらない質問なんですけど、
TurboC++っていうコンパイラソフトで、
複数のファイルからなるプログラムをコンパイルする時はどうすればいいのでしょうか?
初心者なので優しく教えてね。よろしくお願いします。
0074デフォルトの名無しさんNGNG
>>73
tcc file1 file2 file3...
もしくはmakeを使う。
0075デフォルトの名無しさんNGNG
>>73
IDEからやりたいのなら、プロジェクトにコンパイルしたいファイルを追加する。
しかし、Turbo-C++のIDEのプロジェクトにはバグがあって、よく泣かされたな・・・・
(遠い目)
0076デフォルトの名無しさんNGNG
>>74
レスありがとうございます!

出来ればtcc file1 file2 file3...、メイクの使い方を詳しく教えてください。
たびたびすいません。
0077デフォルトの名無しさんNGNG
>>76
例えばfile1.cとfile2.cとfile3.objをコンパイルしたければ

tcc file1.c file2.c file3.obj

file1をオブジェクトファイルにコンパイルしたければ

tcc -o file1.c

makeはmakefileに次のような内容を編集する。

file.exe: file1.obj file2.obj file3.obj
0078デフォルトの名無しさんNGNG
>>77
スマソ。tccのオブジェクトファイル作成は

tcc -c

だったです。
0079デフォルトの名無しさんNGNG
>>77
何回やってもエラーが出ちゃいます(泣

tcc -c file1.c←あんまり意味がわかりません。。。すません。
根本的にどう繋げればいいか教えてくれると嬉しいです!
0080デフォルトの名無しさんNGNG
>>75
レスありがとうございます!
それって単純に複数のプログラムを開いてコンパイルのボタン押すだけのことですよね?
0081デフォルトの名無しさんNGNG
TurboC++ってマニュアルねーのかよ。
0082デフォルトの名無しさんNGNG
なんかみんな親切やねぇ。
0083saNGNG
初心者です。

10     15  
5   →  10
3   を  5
       3

というふうにファイル(.txt)の先頭に書き込みしたいのですが、
fseekでストリームのファイルの位置をを先頭にもってきて書き込みすると、
15
5     と2行目が削除されてしまいます。
3

どうしたらうまくいくでしょうか?レス頂けるとありがたいです。
0084デフォルトの名無しさんNGNG
ファイルの中身全部読み込んで1行書き込んでから
読み込んだ内容を戻してやったらだめなの?
0085デフォルトの名無しさんNGNG
>>83
いきなりファイルの上で挿入する手段は無い。
>>84のいうとおりメモリ上で挿入してからファイルに書くか、もう1つファイル使え。
0086デフォルトの名無しさんNGNG
他スレにも書いたのですが、
VC6.0にてfopen()を発行するとerrnoが12(ENOMEM)でエラーになってしまいます。
また、この現象が起こるPC、起こらないPCがありまして、
エラーとなっていたPCでも電源を切って翌日になると成功し始めたりします。。。
対策方をご存知でしたらおしえてください。おねがいします。
0087デフォルトの名無しさんNGNG
マルチは氏ね
0088デフォルトの名無しさんNGNG
コンパイルエラー?
DLLかなんかがぶっ壊れてるか、マシンの日付が未来になってるとか。
新規インストールのOSと新規インストールのVCで動作確認しる!

再現性がないやつは特定が困難かもなぁ。
0089デフォルトの名無しさんNGNG
ENOMEM・・・本当にメモリが足りないとか?
それとも、ディスクが足りなくなってるとか、リソースが尽きてるとか、ファイルを開きすぎてるとか(閉じてないとか)、それ系のエラーかと。
0090デフォルトの名無しさんNGNG
>>88
コンパイル時ではなく、実行時のエラーです。
ちなみに、一度エラーが起こらなくなるともう大丈夫なようです。
0091デフォルトの名無しさんNGNG
>>89
同じスペックのマシンでも動く動かないがあるので、メモリは大丈夫なので、
リソースなのかなぁ。。。。?
0092デフォルトの名無しさんNGNG
>>91
CRTのソースのfopen関係のあたりでENOMEM検索してみれば
いいんでない?
0093デフォルトの名無しさんNGNG
雑誌で,
for(i=0;i<20;i++){
 Num[i]=i;
}

を

for(i=0;i<10;i+=2){
 Num[i]=i;
 Num[i+1]=i+1;
}

としたほうが早くなるよ。
都かいてあったのですが,皆さん使ってますか?使ったほうがいい?
0094デフォルトの名無しさんNGNG
>>93
loop unrollingだな。
オプション付ければコンパイラがやってくれるよ。
0095デフォルトの名無しさんNGNG
>>93
この程度はコンパイラが最適化するだろ。
バグを生みやすい意味不明のコーディングは逝ってよし!
0096デフォルトの名無しさんNGNG
無駄。>>93
実際の性能改善だと
そんな細かい小細工以前に
やる事がたくさんある。
0097デフォルトの名無しさんNGNG
関数の戻り値として,文字列を返したいのですが,

char *ReturnMoji(int i)
{
if(i==1)
return "1だよ"
if(i==2)
return "2だよ"
if(i==3)
return "3だよ"
}

というふうにして,char Text[256]; char mes[256];
Text=ReturnMoji(1);
sprintf(mes,"答えは%sです",Text);
DrawText(hdc,mes,-----);
としているのですが,%sの部分が変な文字で表されます。
どうしたらいいでしょうか?
0098デフォルトの名無しさんNGNG
>>97
それでコンパイルが通るはずが無い。
ちゃんとコンパイル済のソースを賭。
0099デフォルトの名無しさんNGNG
>>97
その方法では無理なので

char *ReturnMoji(char *buf,int i)
{

〜

return *buf;
}

な感じで
0100デフォルトの名無しさんNGNG
そもそも、
char Text[256];
Text=ReturnMoji(1);
constの配列にポインタは代入できまへん。
0101デフォルトの名無しさんNGNG
>>98
まぁまぁ、コンパイラじゃあるまいし。

>>100
レベルの低い煽りだな。
0102デフォルトの名無しさんNGNG
>>79
亀レスだが・・・・・・・
tlink.cfgとかtcc.cfgの設定はちゃんとできてる?パスが通ってない場合が
ほとんどだよ。
0103デフォルトの名無しさんNGNG
char *ReturnMoji(int i)
{
static char *ret_str[3] = {
"1だお","2だよ","3だよ"
};
return (i>0 && i<=3)?ret_str[i-1]:NULL;
}

char *txtp, mes[256];
txtp = ReturnMoji(1);
sprintf(mes,"答えは%sです",txtp);
DrawText(hdc,mes,-----);
010479NGNG
>>102
レスありがとうございます。

tlink.cfgとかtcc.cfgの設定ってどこでおこなうのですか?
夕方からずーっとやってるんですが、ヘルプ見てもできないんです…
0105デフォルトの名無しさんNGNG
>>103
あ、staticな領域は消えないか・・・ってまぁたトリッキーなw。
0106デフォルトの名無しさんNGNG
>>104
全部教えないと何も出来ないのか?
コンパイラが入ってるbinフォルダにあるだろ
0107デフォルトの名無しさんNGNG
>>104
オプションを記述するだけ
-Ic:\include_file_path\
-Lc:\library_path\
みたいに

懐かしいね
0108デフォルトの名無しさんNGNG
>>103
そんなことする必要はないだろ
文字列リテラルはスタック領域に書き込まれる物じゃないんだから
0109デフォルトの名無しさんNGNG
>>106
.NET SDKのコンパイラ群はなぜか%WINDIR%以下に展開されて死ぬほど悩みましたが?
0110デフォルトの名無しさんNGNG
>>108
ハァ?
staticにしないとポインタがスタックにつまれて返せなくなるだろ。
0111デフォルトの名無しさんNGNG
>>103
エラーチェックしろ。
0112デフォルトの名無しさんNGNG
>>110
>>108さんの意見に同意。
char *ret_strは関数の終了と同時に破棄されるが、文字列リテラルの
アドレスは依然として有効。
0113デフォルトの名無しさんNGNG
>>110は勘違いをしている。
ret_str配列は無くなってしまうが、
ret_str[i-1]はただのポインタだから
普通に返せる。
0114110NGNG
と思ったがポインタは消えても文字列リテラルのアドレスは残るか
0115110NGNG
>>112-113
ああ、勘違いした。スマソ
0116デフォルトの名無しさんNGNG
char *ReturnMoji(int i)
{
char Moji[3]={"1だよ","2だよ","3だよ"};
if(i==1)
return Moji[0]
if(i==2)
return Moji[1]
if(i==3)
return Moji[2]

return NULL;
}

とすれば,文字列へのポインタがなくならないので,大丈夫ということでしょうか?
0117デフォルトの名無しさんNGNG
バカにされた108への謝罪は無かったのでありました(まる)
0118デフォルトの名無しさんNGNG
>>116
char *Moji[3]だろ。
普通は添え字は書かない。*Moji[]

ポインタはなくなるが、指していたものは残るので、そのアドレスを返して使っても問題ない。
0119デフォルトの名無しさんNGNG
>>117
>>113は>>108だからOK
0120デフォルトの名無しさんNGNG
>>118
*Moji[3]にデフォルト値入れると大変なことに。
0121デフォルトの名無しさんNGNG
const char* ReturnMoji(int i)
{
 char *Moji[] = {"1だよ", "2だよ", "3だよ"};
 if (sizeof(Moji) / sizeof(Moji[0] > i)
  return Moji[i - 1];
 else
  return NULL;
}

だけど、>>97でも問題はない。
>>97でおかしいのは、
Text=ReturnMoji(1);
これ
0122デフォルトの名無しさんNGNG
>>119
勝手に決めるな
0123デフォルトの名無しさんNGNG
>>120
なぜ?
0124デフォルトの名無しさんNGNG
int Human; と宣言して,
Humanの第4ビットまでにage=10;を入れて
第5ビットから第8ビットまでtaijyuu=50;を入れて,
第9ビットから第12ビットまでseibetu=1;を入れて扱いたいのですが,
どのように実現したらいいでしょうか?
0125デフォルトの名無しさんNGNG
>>116
それはダメダメ。自動変数に文字列が確保されてしまうので、
関数の終了と同時に文字列が破棄される。
0126デフォルトの名無しさんNGNG
>>124
構造体だったか共用体だったか忘れたが、それでできる。
ビットなんとかってやつ。
0127デフォルトの名無しさんNGNG
>>125
その前にコンパイルが通らない
0128デフォルトの名無しさんNGNG
>>124
そう言う共用体の書き方があった。。。

int a:3
int a:6

みたいな。詳しくはしらん。
(H8マイコンCコンパイラの知識。)
0129デフォルトの名無しさんNGNG
>>97
char Text[256]; ---> char *Text;

または

Text=ReturnMoji(1); ---> strcpy(Text, ReturnMoji(1));

のどちらかで。下の場合は #include <string.h> を忘れずに。
0130113=98NGNG
>>119
いや108じゃないけどね(にが藁

>>116あのなあ。return文にセミコロンが無きゃエラーになるダロー。
本当に使ってるソースを書かずに間違いだらけのを書かれると、
どの間違いについて聞きたいか分からないから手間がかかって
しょうがないんだよ。
0131デフォルトの名無しさんNGNG
>>124
できない。
どう考えても3bitじゃ50を保持できない
0132126NGNG
>>131
そうだな(ワラ
考えなかった。
0133デフォルトの名無しさんNGNG
>>126 >>128
共用体じゃない。ビットフィールドだ
struct {
int x : 4;
int y : 4;
int z : 4;
int w : 4;
};
0134デフォルトの名無しさんNGNG
>>124, >>128
ビットフィールドですね。
ttp://black.sakura.ne.jp/~third/c38.html
0135デフォルトの名無しさんNGNG
>>131
4bitだよね。それでも無理だけど。
0136デフォルトの名無しさんNGNG
>>135
10進コンピュータなら出来る。
と言ってみたい。
0137デフォルトの名無しさんNGNG
>>128
ビットフィールドのことだろ。ビットの並びは実装依存なので、何ビット目に
確保されるかとかは保証されないよ。

union uni {
int Human;
struct bit {
unsigned age : 4;
unsigned taijyuu : 6;
unsigned seibetu : 4;
};
};
0138デフォルトの名無しさんNGNG
>>136
bit (<binary digit) n. 【コンピユータ】 ビット ((情報を数量的に表す基本単位)). 
goo 英和辞典より。

つっこもうと思ったが1bitが10のステートをとっても良いんだね。
0139デフォルトの名無しさんNGNG
>>138
そう。
なんかそんなスレがあった。
実現するのかしら。
0140デフォルトの名無しさんNGNG
( ´∀`)そーですね
0141デフォルトの名無しさんNGNG
>>138 binaryだから2進に決まってるだろ。
だいいち10ステートあったら最小単位じゃないじゃないか。
ってスレ違い。
0142デフォルトの名無しさんNGNG
>>141
ああそうか。
10進だとditか
0143デフォルトの名無しさんNGNG
decimal digit = ditを提唱するぞ!俺は!!
今なら現在の電圧を10分割するくらい・・・。
0144デフォルトの名無しさんNGNG
>>143
各種記憶装置との互換性がなくなりそう・・・
0145デフォルトの名無しさんNGNG
138
それは無理。
アナログ情報を表すnatと言う単位では無限の状態を
取ることが可能。
0146デフォルトの名無しさんNGNG
dit VS nat

Fight!
0147デフォルトの名無しさんNGNG
保持できる情報量が圧倒的に違いすぎるので、natの勝利!
0148デフォルトの名無しさんNGNG
>>143
別にいいけど…ってそれただの「10進ヒトケタ」やん。
わざわざ情報量の単位にする意味なし。
bitが単位になってるのはそれ以上細かい単位が無いからだよ。
0149デフォルトの名無しさんNGNG
int mona=10;
int monao=20;
int a=mona;
a=monao<<4;
printf("mona=$d,monao=%d\n",mona,monao>>4);
こんな感じでできなかったっけ?
0150デフォルトの名無しさんNGNG
漏れは最小単位として
unary digit = ditを提唱することにするぞ!
0151デフォルトの名無しさんNGNG
ditじゃねー、uit(うぃっと)だ
0152デフォルトの名無しさんNGNG
まぁ、量子コンピュータが出たらbitなんて鼻くそポイさ。
0153デフォルトの名無しさんNGNG
>>152
能力がいくら増えても情報量はbitで表されると思われ
0154デフォルトの名無しさんNGNG
スレ立て30時間でまだ150とは・・・
0155デフォルトの名無しさんNGNG
量子コンピュータって何だよ!
そんなもん基本概念からして違うんだから
今のコンピュータとリプレースは出来ないだろ
0156デフォルトの名無しさんNGNG
>>155
まぁ、お前はDNAコンピュータの原料にでもなってろってこった。
0157デフォルトの名無しさんNGNG
int mona=10;
int monao=20;
int a=mona;
a=monao<<4;
printf("mona=%d,monao=%d\n",mona,monao>>4);
こんな感じでできなかったっけ?
0158デフォルトの名無しさんNGNG
>>151
その話も10進コンピュータスレで外出
位どり記数法では0しか表せない
0159デフォルトの名無しさんNGNG
>>157
いや、2回も書かんでも・・・。
0160デフォルトの名無しさんNGNG
intが当たり前のように256bitの時代とか来るのかなぁ?
016179NGNG
>>106

すいません…BIN見たのですがどれがどのファイルかわかりません…

>>107

>>オプションを記述するだけ
>>-Ic:\include_file_path\
>>-Lc:\library_path\

具体的にどこに記述するものなのか教えて下さい。
0162デフォルトの名無しさんNGNG
>>161
おぃおぃ
tlink.cfgとかってファイル名書いてあるだろ?
0163デフォルトの名無しさんNGNG
>>159
ワラタ
0164デフォルトの名無しさんNGNG
>>161
ガイシュツだけど説明書はないの?
なければHELPの中を隅から隅まで目を皿のようにして探すこと。
0165デフォルトの名無しさんNGNG
int age=50;
int sex=1;
int human=age;
human=sex<<8;
として、ageを参照するときは,human&255とし,
sexを参照するときは,human>>8でどうでしょうか?
0166デフォルトの名無しさんNGNG
>>165
ソレダ!!
0167デフォルトの名無しさんNGNG
>>160
くる。
あとCPUも。
0168デフォルトの名無しさんNGNG
>>165
human|=(sex<<8)だろ。つーか、
なぜビットフィールドじゃダメなのか小一時間樋冷たい。
0169デフォルトの名無しさんNGNG
>>165
クリックしちゃったじぇねーか!!
ビットをずらしていたのか・・・
0170デフォルトの名無しさんNGNG
>>168
おけつめたい
017179NGNG
>>162
TCW5→BIN
で、この中にtlink.cfgっていうファイルがあるんですよね?

探してもないのですが…
なんでこんな簡単なことできないのだろ…(泣

0172デフォルトの名無しさんNGNG
>>169
printfで>>4を表示させても仕方ないだろう・・・w
0173デフォルトの名無しさんNGNG
>>169
8 :デフォルトの名無しさん :02/05/07 16:47
>>6
生ハムと生肉くらいの違いです
0174デフォルトの名無しさんNGNG
>>172
リンクがあるとついクリックするくせが(恥
0175デフォルトの名無しさんNGNG
>>161
turboc.cfg
だか
tcc.cfg
だかのファイルをカレントディレクトリに作る
0176デフォルトの名無しさんNGNG
166
128ビットのunsigned 型はint以外でどう表記するのですか。
unsigned lo--ng ・・・
0177デフォルトの名無しさんNGNG
もしかして、borland.comに落ちてるtc201.zipですか?
helpが無いみたいだし
0178デフォルトの名無しさんNGNG
>>171
いや、ないなら作ればよい。tcc.cfgもお忘れなく。もう少しだね。
0179デフォルトの名無しさんNGNG
THELP.COMを常駐させればヘルプが見れるはず
0180デフォルトの名無しさんNGNG
>>176
つぅかそろそろlong shortは終わらせた方が。。。
0181デフォルトの名無しさんNGNG
初期化したい時に,
human|=(0<<8)
は可能ですか?
0182デフォルトの名無しさんNGNG
移植性も考えればサイズ指定すべき。
0183デフォルトの名無しさんNGNG
>>181
初期化したいときに限ってダメ。
0184デフォルトの名無しさんNGNG
>>176
long long long int。C2003で対応予定。
0185初心者NGNG
教えてください。エラーもないのに実行できません

#include<stdio.h>
int main(void)
{
int i;
char moji[100];

printf("文字列を入力");
gets(moji);

for(i=100;i<=0;i--)
{
if(moji[i]==NULL)
{
}
else
{
printf("%s",moji[i]);
}
}
}

問題
文字列を読み込んで逆から表示 例 iptep==>petpi
018679NGNG
>>175,178

だんだん理解できてきました。
tcc.cfgって名前のファイルをカレントディレクトリに作ったのですが、まだできません。

ちなみにtest1.c incre.cってファイルを繋げてコンパイルしたいのですが、
tcc.cfgの中身は、tcc-c test1.c incre.cだけでいいのでしょうか?

本当にたびたびすいません。
0187デフォルトの名無しさんNGNG
>>186
いや、それは・・・
0188デフォルトの名無しさんNGNG
>>185
配列って
int hoge[100]
って宣言すると
hoge[0];
から
hoge[99];
までしか使えないって知ってた?
0189デフォルトの名無しさんNGNG
ファイルから日本語全角文字を配列に格納する方法を
教えてください。
0190デフォルトの名無しさんNGNG
>>186
もしかしたら>>175さんの言う通り、tcc.cfgでなくてturboc.cfgかもしれないので
両方作ってみて下さい。
中身はコマンドラインでなくて、

[turboc.cfg or tcc.cfg]
-IC:\TC\INCLUDE
-LC:\TC\LIB

[tlink.cfg]
-LC:\TC\LIB

のような感じになります。そして、
tcc test1.c incre.c[enter]です。-cは付けないで下さい。
うまく行けばtest1.exeが出来るはずです。
0191デフォルトの名無しさんNGNG
>for(i=100;i<=0;i--)

解説して。
0192デフォルトの名無しさんNGNG
>>191
俺も、いったいそのループ(になってない)が何をしたいのかサパーリ
0193デフォルトの名無しさんNGNG
>>191
つーか、一回もfor文の中身は実行されない罠。
0194デフォルトの名無しさんNGNG
while( fgets( kuni[i],256,country_fp ) != NULL ){
fputs( kuni[i],country_fp);
i++;}
なにがだめなの?
0195デフォルトの名無しさんNGNG
>>194
とりあえずおまえは
前橋のポインタ完全制覇でも読んでろ

あとcountry_fpってなに?
0196デフォルトの名無しさんNGNG
>>195
いなかのフライドポテト。
0197デフォルトの名無しさんNGNG
>>194
なんで入力ストリームと出力ストリームが同じなの?
0198194NGNG
わからんぽ
わからんぽ
おしえてぽ
0199194NGNG
FILE *country_fp;
0200デフォルトの名無しさんNGNG
>>199
どうやってオープンした?
0201デフォルトの名無しさんNGNG
>>194
こういう事する時は、"r+"で開いておいて、fseekなどで切り替えないと
動作の保証はない。
0202初心者NGNG
for(i=100;0<=i;i--)

の間違えでした。
0203 NGNG
文字列の行末にある空白を削除するにはどうすればいいでしょうか
020479NGNG
>>190

[turboc.cfg or tcc.cfg]
-IC:\TC\INCLUDE
-LC:\TC\LIB
ファイルの中身に記入。

[tlink.cfg]
-LC:\TC\LIB
ファイルの中身に記入。

tcc test1.c incre.c←これはどこのファイルに書けばよいのでしょうか?
0205デフォルトの名無しさんNGNG
>>202
まだ間違ってます。
0206194NGNG
ファイルから日本語全角文字を配列に格納する方法を
教えてください。

0207446NGNG
>>194
country_fpをfopen()したやり方にも夜が、
wとかwbとしたなら、オープンした時にファイルの長さが0になる。
aとかabとかa+bとかしたなら、ファイルの最後に追加することしかできない。

ちゃんとr+とかr+bでオープンしたとしても、
入力した直後に出力してはいけない。間にfflush()かfseek()をはさめ。
0208初心者NGNG
このfor文がおかしいのでしょうか?
0209デフォルトの名無しさんNGNG
>>204
tcc test1.c incre.cは、どこにも書かずにそのままコマンドラインから
打ち込むか、またはバッチファイルに書いて実行する。
0210デフォルトの名無しさんNGNG
203
sscanf()
0211デフォルトの名無しさんNGNG
>>204
もしくはmakefileというファイルをエディタで作成し、

test1.exe: test1.obj incre.obj

と書いて、make[enter]とやってもよい。だけど今はやめとけ。
0212デフォルトの名無しさんNGNG
>>208
俺の経験から言わせてもらうと、初心者に分類される人たちは、
プログラムを1行ずつ読むことが出来ていない気がする。
自分で書いたプログラムすら、その挙動が把握できてないというか。
0213デフォルトの名無しさんNGNG
>>212
つぅか丸写し以外でその質問している時点で努力も学力も才能も足りてない気がする。
021479NGNG
>>209

-IC:\TC\INCLUDE
-LC:\TC\LIBと書かれた[turboc.cfg or tcc.cfg] のファイルと、

-LC:\TC\LIB と書かれた[tlink.cfg] のファイルは、

test1.c incre.cの置かれたフォルダに入れればいいんですよね?

コマンドラインから打ち込んでもできなかったので、
バッチファイルに書く方法も教えてください。

よろしくおねがいします。
0215デフォルトの名無しさんNGNG
>>214
tcのbinフォルダに入れろ。
0216デフォルトの名無しさんNGNG
>>214
ちょっと待って。今Turbo-Cはどのディレクトリに入ってるの?
そのディレクトリ名をturboc.cfgやtlink.cfgに書くんだよ。
コマンドラインから打ち込んでもだめだったら、バッチファイルに
書いたってだめだよ。
0217デフォルトの名無しさんNGNG
>-IC:\TC\INCLUDE
>-LC:\TC\LIBと書かれた[turboc.cfg or tcc.cfg] のファイルと、
>-LC:\TC\LIB と書かれた[tlink.cfg] のファイルは、

-IC:\TC5W\include

とかじゃないのか?
自分の環境に合わせろ
0218デフォルトの名無しさんNGNG
打ち込んでも出来ない=コマンドまたはファイル名が違います?
それだったらパスを通せ
021979NGNG
>>215
test1.c incre.cの置かれたフォルダにはいれなくていいのですか?

>>216
Turbo-Cは、
C:\TCW5\BIN\tcw.exeです。
0220デフォルトの名無しさんNGNG
>>219
コンパイラの設定ファイルだから、
ソースがあるところに入れる意味がない
0221初心者NGNG
C言語でデータ配列の中から最大値を求める方法には
サーチングしかないのでしょうか?
サーチングだと処理に時間がかかっていやなのですが。
何か方法があれば教えてください。
0222デフォルトの名無しさんNGNG
>>221
ソートでも良いけど?
0223デフォルトの名無しさんNGNG
[turboc.cfg or tcc.cfg]
-IC:\TCW5\INCLUDE
-LC:\TCW5\LIB

[tlink.cfg]
-LC:\TCW5\LIB

これらをC:\TCW5\BINに置いてやってみ。
0224初心者NGNG
221です。
サーチングでもソーティングでも処理には
時間がかかるので、一括して処理できるような
ものがあればと思ったのですが。
0225デフォルトの名無しさんNGNG
>>221
じゃあ、ただ配列に入れるんじゃなくて、もっと工夫しろ。
データ構造の本を読んで「半順序木」の勉強を汁
0226デフォルトの名無しさんNGNG
>>224
人間に出来ないものはプログラムでも出来ないと思われ(速度以外
0227デフォルトの名無しさんNGNG
>>224
2分探索ならxlogx
バカサーチならx
0228初心者NGNG
185ですけど、いちおう成功したけど
この書き方って下手ですか?

#include<stdio.h>
int main(void)
{
int i;
char moji[100];

for(i=0;i<100;i++)
{
moji[i]=0;
}

printf("文字列を入力");
gets(moji);

for(i=99;0<=i;i--)
{
if(moji[i]==NULL)
{
}
else
{
printf("%c",moji[i]);
}
}
}
022979NGNG
>>220
わかりました!

>>223
やってみたのですけど、まだできません…。
コマンドはスクリプト→コマンドで入力ですよね?

単純にソースが間違ってるんですかね。。。
でも試食版コンパイラではできたのですが…。
0230デフォルトの名無しさんNGNG
>>228
if(moji[i]==NULL)
{
}
else
{
printf("%c",moji[i]);
}

まず、Cの薄い本でも読んでくれ。アイデアはおもしろい。
0231デフォルトの名無しさんNGNG
じゃぁ、
tcc test1.c incre.c

と入力して、その出力を一切改変せずに、
省略も一切しない状態ですべてここに貼り付けてみろ
0232デフォルトの名無しさんNGNG
>>228
40点
0233デフォルトの名無しさんNGNG
>>229
IDEからわざわざコマンドで実行させているんですか?まあいいけど。
一度、test1.cとincre1.cを別々にコンパイルして、エラーが出ないか
どうか確かめた方がいいですね。
多分incre.cにはmain()が無いというリンカエラーが出ると思うけど、
それは無視して下さい。
0234デフォルトの名無しさんNGNG
>>228
配列を逆さに読む意味は?
そもそも何がしたいんだ?
0235デフォルトの名無しさんNGNG
>>229
俺の所には古いBorland-C++5.02Jがあるけど、これから複数のプログラムを
コンパイルするには、ファイル→新規作成→プロジェクトでやると簡単だよ。
Turbo-C++も多分同じでしょう。
0236デフォルトの名無しさんNGNG
>>185にて
文字列を読み込んで逆から表示 例 iptep==>petpi
とかいてあるぞ。>>234よ

まぁ本来はもちっと難しい方法で解決するんだろうけど、
!=をつかってスリムにしない程の初心者なので良いんではないだろうか。
0237デフォルトの名無しさんNGNG
>>236
あれだと妙な空白が初めに出ない?
0238デフォルトの名無しさんNGNG
>>237
if(moji[i]==NULL)
{
}
だから出ないんじゃない?
0239デフォルトの名無しさんNGNG
>>185

宿題スレからコピペ

#include <stdio.h>

rev_put(ch)
{
 if (ch != '\n') {
  rev_put(getchar());
  putchar(ch);
 }
}

main()
{
 rev_put(getchar());
}
0240初心者NGNG
40点ですか。100点の解答は
どんな風にやるんですか?<232
ヒントをオクレ
0241デフォルトの名無しさんNGNG
for(i=99;0<=i;i--)
{
if(moji[i]==NULL)
{
}
else
{
printf("%c",moji[i]);
}
}

ここを

for(i=99;0<=i;i--)
{
if(moji[i]!=NULL){
printf("%c",moji[i]);
}
}

とするのはどうかな。
0242デフォルトの名無しさんNGNG
>>240
>>239じゃだめなんか?
0243デフォルトの名無しさんNGNG
>>242
無駄に再帰使ってるね。。。
024479NGNG
>>231
やっとのことで成功しました!
…ここまできたので、ついでといっては何ですが、
[turboc.cfg or tcc.cfg]
-IC:\TCW5\INCLUDE
-LC:\TCW5\LIB

[tlink.cfg]
-LC:\TCW5\LIB

IC,LCなどの意味も教えてくれないでしょうか?

この分からず屋にも親切に教えてくださったみなさん、
ありがとうございました!
これで、ますますCの勉強がやりやすくなります!
0245デフォルトの名無しさんNGNG
>>244
おめっと。
でも分からず屋ってこういうときに使う言葉か?(汗
0246デフォルトの名無しさんNGNG
>>231
ICじゃなくて
-Iがインクルードパス
-Lがライブラリのパス
C:\TC5W〜がディレクトリ
-Iと-Lでディレクトリを指定している。

しかし、水を差すようで悪いが、
bcc32を使った方がいいと思う
0247デフォルトの名無しさんNGNG
>>243
入力される文字列の長さが100文字限定というのはアレだからな
0248デフォルトの名無しさんNGNG
TurboC++ for Windows 5 って、Windows専用コンパイラじゃなかったっけ?
コマンドラインツールって含まれてるの?
コンソールアプリもEasyWindow(s?)でウインドウアプリにしちゃった気が・・。

エラーってさ、、、
 「コマンドまたはファイル名が違います」
じゃないよね?
024979NGNG
>>245
あっ、使い方間違ってますね(汗

>>246
ありがとうございます!
また質問で悪いのですが、bcc32とは何でしょうか?
0250デフォルトの名無しさんNGNG

#include <stdio.h>

int main(void)
{
char ch = getchar();
if ( ch!='\n' ) main();
putchar( ch );
}
0251デフォルトの名無しさんNGNG
>>250
returnがありませんw。
0252デフォルトの名無しさんNGNG
ワラタ
0253デフォルトの名無しさんNGNG
はっきり言ってなんかのコンパイラの設定聞いてる奴がうざい。
0254デフォルトの名無しさんNGNG
>>249
http://www.borland.co.jp/cppbuilder/freecompiler/
0255デフォルトの名無しさんNGNG
>>253
湧くな。
0256デフォルトの名無しさんNGNG
>>251
returnいるのか?
他のやつも省略してるし、コンパイラは警告もエラーもはかないし。
まぁ、戻り値無視してるからなんでも適当に付け足せば。
0257デフォルトの名無しさんNGNG
>>249
1のリンクくらいは見ようよ
0258デフォルトの名無しさんNGNG
>>256
main()
ならreturn省略してもいいが(よくないけど)
intと書いたのならきっちり値を変えそうよ
025979NGNG
>>253
すいませんでした。これからは自粛します…。

>>254
早速DLしてます!これからどっちが使いやすいか試します!
0260デフォルトの名無しさんNGNG
>>256
関数の型がintだからいるだろ。
0261デフォルトの名無しさんNGNG
>>258,260
省略時もintだろ?
0262デフォルトの名無しさんNGNG
>>258
int main()のreturnを省略していいのはC++だよ。
0263デフォルトの名無しさんNGNG
>>79がまず覚えるべきなのはgoogleの使い方だとオモフ。
0264デフォルトの名無しさんNGNG
>>259
多分今日味わった苦労が、BCC32のセットアップの時に役立つはず。
0265デフォルトの名無しさんNGNG
>>262
ん〜〜VC++でCとしてコンパイルしてるが、
まぁVC++の警告の出し漏れか。
0266デフォルトの名無しさんNGNG
>>259
おめでとさんついでに、もう一つ書いておいてあげます。
BCC32にはこれをペアで使うと楽だよ。
http://hp.vector.co.jp/authors/VA017148/pages/cpad.html
0267デフォルトの名無しさんNGNG
>>261
だから、よくないけどって書いてあるだろ。
心情的にはわかるってことだ
0268初心者NGNG
185ですけど
241さんのやだと見た人がわかりずらいので
やめました。はじめはそうしてたのですが・・

250
これは僕の実力をはるかに超えた解答でした。
1つの問題で多くの解答が出ることにプログラミング
に楽しさがあるのではと実感しています
0269デフォルトの名無しさんNGNG
>265
VC++でCとしてコンパイルしたら、returnがなくても警告でないんだ。
0270デフォルトの名無しさんNGNG
>>269
どうやらmain関数だけはそうらしい。
0271デフォルトの名無しさんNGNG
>>270
C++みたいですね。でもC++としてコンパイルすると、return 0;がないと
警告出ません?
0272デフォルトの名無しさんNGNG
241のも、NULLと'\0'を混同している点で、減点は必至。
0273デフォルトの名無しさんNGNG
>>272
どっちも0じゃん!
と、いつぞやの紛争をぶり返す俺。
0274デフォルトの名無しさんNGNG
>>271
C++でもmainだけは警告でなかった。
他の関数ではエラーになる。(VC.NET)
0275デフォルトの名無しさんNGNG
>>274
cppなら出るぞ(VC6SP4)。
0276デフォルトの名無しさんNGNG
なんだ、その、つまり、荒れてるのか?
0277デフォルトの名無しさんNGNG
>>274
C++で出ないのは標準だからね。Cででないのは仕方ないかな。規格書の
中にreturn省略時のmainが何を返すかまでは書いてないから。
0278デフォルトの名無しさんNGNG
main関数までプロトタイプ宣言している奴はいる?
0279デフォルトの名無しさんNGNG
いない
0280デフォルトの名無しさんNGNG
>>278
C始めて1ヶ月くらいまでしてた(w
0281デフォルトの名無しさんNGNG
>>273
NULLは ((void*)0) と定義されてあることもあるという
どうしようもないツッコミを入れてみる。
0282デフォルトの名無しさんNGNG
>>281
C++じゃNULLは0だよ

>>xxx
ここはCスレだ
0283 NGNG
たとえ動作上何の問題がないとしても
NULLマクロをヌルポインタ以外の意味で使うのは恥かしい
0284デフォルトの名無しさんNGNG
>>282
ここがC言語スレだと分かってるなら
な
ぜ
C++の話を無意味に持ち出す?
0285デフォルトの名無しさんNGNG
発展前に釘を刺しただけだと思われ
0286デフォルトの名無しさんNGNG
>>278
前橋和弥
0287saNGNG
初心者です。
テキストファイルをオープンして、そのテキストファイルに何行のデータがあるか
知りたいんですが、どうすればいいんでしょう?
0288デフォルトの名無しさんNGNG
wc -l
0289デフォルトの名無しさんNGNG
改行の数を数える。
0290デフォルトの名無しさんNGNG
>>287
fgetsでループしる。
029191NGNG
>>92
>CRTのソースのfopen関係のあたりでENOMEM検索してみれば
CRTってなんですか?
0292デフォルトの名無しさんNGNG
初心者なんだけどぶっちゃけ

#include< iostream.h>
のcout<<
タイプか

stdio.h
printf"
のタイプあどっちがいいの?
どっちが初心者むきで、どっちが一般的?
0293デフォルトの名無しさんNGNG
ぶっちゃけ、ここはCスレ
マジレスするとケースバイケース
0294デフォルトの名無しさんNGNG
>>292
ぶっちゃけた話、両方をやっておくべき。
0295デフォルトの名無しさんNGNG
>>291

 ディスプレイとかモニタとか画面とかとも言うね。
 人によっては、TVとか言う人も(笑)。
0296デフォルトの名無しさんNGNG
>>292
 Cでは、前者は一切使わない。
 無理して頑張って努力すれば出来ない事ない鴨しれないけど、ワシは知らん。
0297sageNGNG
>>295
ってことは、ディスプレイが原因なのか?
0298デフォルトの名無しさんNGNG
>>292
前者はほとんど使ったこと無い。
C++のオーバーロードの(悪い)例程度に見てる。
0299299NGNG
int c;
scanf("%d",&c);
これで間違って文字を入力された場合の対処法はどうすればよいのでしょうか?

自分でも考えたんですが
chara a;
int c;
scanf("c",&a);
c = atoi(a);
という方法もやってみたんですが
数字と文字を入力された場合(12yとか)は、駄目なんですよね。
0300デフォルトの名無しさんNGNG
>>299 scanf()で%sを使ってatoi()

scanf()で%dとか使うのは入力されるデータにまず間違いがない
(ファイルからの入力とか……おっとこれはfscanf()か)とき
だけにしておいたほうが良い

>>291 C RunTimeルーチンのこと? crt0.sとかをGoogleで検索.
0301デフォルトの名無しさんNGNG
scanf を使わない。
0302デフォルトの名無しさんNGNG
誤った入力に対処できないから scanf() は使うな、なんて言われて
何も考えずに使わないようにしていました。 fgets() と sscanf()
を組み合わせて使う方法は今でも常道なんでしょうか。少し脱線すまそ。
0303デフォルトの名無しさんNGNG
>>300
atoi()はatoi("a")とatoi("0")も0を返すので
0が入力されたのか文字を入力されたのかの区別が付かない


  
0304デフォルトの名無しさんNGNG
>>303
fgetsとstrtodでどうでしょう?
0305デフォルトの名無しさんNGNG
>>304
駄目、一見よさそうに見えるが指数形式も扱えてしまう為、
strtod("1e", &p);が正常終了する。

isdigitで1文字づつチェックするのが一番安全
0306デフォルトの名無しさんNGNG
>>305
fgetsとstrtolでどうでしょう?
0307カス野郎NGNG
>>292
だけど、秋に基本情報技術者の試験控えてるんですけど
どちらにしろ、たしか基本情報ではcout<<タイプはないよね。
printfの方だよね。

さらにVC++やってても変数とか出すときにsprintf使うけど
coutなんてまったく使わないし、printfタイプの方がいいという
ことでいい?みんなこっちつかってるよね。
0308デフォルトの名無しさんNGNG
>>307
「cout<<」を使えるのはC++だからね…
0309デフォルトの名無しさんNGNG
>>307
stringstreamは便利だyo!
0310デフォルトの名無しさんNGNG

cout<<の存在意義って何?
0311デフォルトの名無しさんNGNG
==で文字列が同じかどうか判断できたり、+で文字列を連結できるC++はまじですごい・・・・・
というか文字列型自体すごいのだが。
0312デフォルトの名無しさんNGNG
>>310
coutっちゅーか、streamに対する<<の意義は:
型に対する処理の選択が実行時ではなくコンパイル時に行われる。
operator <<(stream&, 〜)を実装しさえすれば後からどんなデータでも統一的に追加対応できる。
%dなどの書式文字についていちいち覚えなくても、<<で出るとだけ覚えれば使える。

しかし、こと書式の詳細指定に関しては冗長かつ結局実行時ステートなのがアレだ。
0313デフォルトの名無しさんNGNG
>>312
C++全然知らないんだけど、cout <<の<<はビットシフトの<<じゃないよね?
0314デフォルトの名無しさんNGNG
>>313
<<演算子はiostream等のクラスでオーバーロードされて、まるで出力用に
作られたかのように動きます。よくできすぎとるわ。
0315デフォルトの名無しさんNGNG
>>314
臨機応変に変えるんだ!?
すごいね。
でもコンパイラを作るのが大変そう・・・
0316デフォルトの名無しさんNGNG
>>311
それは言語の機能として型に対する演算子の処理を自分で作れるように
なっていて、ライブラリがそれを利用して作られているからということ。
文字列型というものはC++の言語そのものにあるんじゃなくてライブラリの
中にある。
0317デフォルトの名無しさんNGNG
>>316
そそ。なるべく本体は小さく保とうという精神がC++になっても受け継がれている。
しかし、内部が小さくてもC++では外部がばかでかくなり、今まで一番言語仕様
が大きいと言われていたAdaをもしのいでしまった。
0318デフォルトの名無しさんNGNG
>>315
その結果として、現在(多分)標準C++準拠と銘打っていても実際はbuggyな
処理系だらけです。
0319デフォルトの名無しさんNGNG
>なるべく本体は小さく保とうという精神がC++になっても受け継がれている。

うそつけ
あのクソ汚い文法のどこを見てそんなことがいえるんだ
0320デフォルトの名無しさんNGNG
>>319
出たな!「C++の文法は汚い」厨!
0321デフォルトの名無しさんNGNG
「汚い」は「小さい」の反意語なのか?
0322C++房NGNG
C++の文法は世界一キレイです。
0323デフォルトの名無しさんNGNG
諸君、ここはCスレだということを忘れていないかい?
0324デフォルトの名無しさんNGNG
>>323
CとC++が渾然一体となったスレもこうなると欲しいな。両者を切り離して
考えないスレを。
0325デフォルトの名無しさんNGNG
それはC++スレじゃダメなのかい?
0326デフォルトの名無しさんNGNG
>>325
C++スレでCの話するとスレ違いだと叩かれる。
0327デフォルトの名無しさんNGNG
ad-hoc polymorphismのどこがきれいなんだ?
ただad hocなだけなのに。
0328デフォルトの名無しさんNGNG
>>324
必要性を感じた人間が自ら実行するべき。

Cしかやらない私にはC++の話は邪魔なだけです。
0329デフォルトの名無しさんNGNG
>>328
了解。しばらく様子を見ます。
0330デフォルトの名無しさんNGNG
>>324
必要性を感じた人間が自ら実行するべき。

Cしかできない私にはC++の話は理解できなくていらいらするだけです。
0331デフォルトの名無しさんNGNG
今マウスの座標の取り方を GetCursorPos(&MousePos);
としているのですが,これではウィンドウ上の座標ではなく,
ディスプレイの画面上の座標を取るらしく困っています。
ウィンドウ上の座標をどうやったらえることができるのでしょうか?
0332デフォルトの名無しさんNGNG
>>331
ScreenToClient
0333デフォルトの名無しさんNGNG
ScreenToClient
0334デフォルトの名無しさんNGNG
>>332-333
それはクライアント座標しかとれないんですけど?
0335デフォルトの名無しさんNGNG
GetWindowRectして適当に変換すれば?
0336デフォルトの名無しさんNGNG
>>335
グッジョブ
できました
ありがとうございました
api集とかこれから買いに行ってきます
0337デフォルトの名無しさんNGNG
ESCコードを使ってコマンドプロンプト上に
色つきの文字を出力したいんです。ただし
OSはWindowsXP,コンパイラはLSI-C86(試食)。
(Win98の方は確認済)
実際にやってみると

printf("\x1b[34m hoge"); /* blue */
printf("\x1b[2J"); /* clear */   

ESCの部分が改行記号(半角)になって
しまいますが、やはり不可でしょうか?
(どれかのWin Ver. 以降, DOSが変わったと
 聞いたことがあるんですが。)
よろしくお願いします。

0338デフォルトの名無しさんNGNG
>>337
氏ねクソマルチ。
0339337NGNG
>>338
すみません。スレ16は間違いです。
(スレの進みに気づかなかったので。)
0340デフォルトの名無しさんNGNG
#include <conio>
textcolor(YELLOW);
cprintf("(・∀・)マンコー");
0341デフォルトの名無しさんNGNG
>>339
向こうで答えで照るのに。
0342初心者NGNG
プログラミング初心者です。
三日前に突然思い立ってC言語を始めました。
Micro$oftのVS.netを買ってCから勉強中です。

文字列を入力させて一文字ずつずらすプログラムを作りました。
8文字以内で入力させるようにしたのですが、ビルドしてもエラーも警告も出ないのに、
もの凄く長い文字を入力するとデバッグエラーが発生します。
Run-Time check Failure #2 - Stack around the variable 'string" was corrupted.

どうすればいいのでしょう?

#include <stdio.h>
#include <string.h>

main()
{
unsigned char i;
char string[8];

for (;;) {
puts("1〜8文字入力してください。");
scanf("%s", string);
if (strlen(string) <= 8) {
break;
}
}

for (i = 0; i < strlen(string); i++) {
string[i] = string[i] + 1;
}
printf("%s\n", string);
}
0343デフォルトの名無しさんNGNG
> scanf("%s", string);

stringが7文字分しか確保していないのに、
scanfは入力された文字(1000文字なら1000文字)全部詰め込もうとする。
0344初心者NGNG
>>343
即レスありがとうです。

>stringが7文字分しか確保していないのに、
>scanfは入力された文字(1000文字なら1000文字)全部詰め込もうとする。

ということはscanfがいけないということですね?
代わりに使うには何があるのでしょう?
教えてくれたらうれしいです。
0345デフォルトの名無しさんNGNG
そうじゃなくて
取りあえず
char string[8];
を
char string[1000];
とか
0346デフォルトの名無しさんNGNG
getchar();
を改行が来るまで最大7回ループ。
0347346NGNG
345に同意だ。346は忘れたほうがいい。
0348初心者NGNG
>>345
それですと無駄に領域を確保してしまう気がするのですが。
それはそれでありなんでしょうか?
できるだけコンパクトにまとめたいです。
0349デフォルトの名無しさんNGNG
char str[9];
int i,c;
for(i = 0;i < 8 && (c=getchar()) != '\n';i++)
str[i] = c;
str[i] = '\0';
とか
0350初心者NGNG
例えば2chでスレ立てする時にタイトル長くすると怒られますよね。
あんな風にしたいのです。
0351349NGNG
スマソ、よくソースミテナカッタ・・・
0352デフォルトの名無しさんNGNG
>>350
ifのあとにelseで警告出せばいいのではないだろうか・・・?
0353デフォルトの名無しさんNGNG
>>348
プログラム始めて三日ならそれでいいと思う。
一週間たてば動的に確保する方法も理解できるはず。
0354初心者NGNG
さらに今気付いてしまったのですが、8文字以内は大丈夫だと思ってたら、
8文字目でもエラー発生がしますね…(T-T)
やはり配列を長くしておくのが一番なんでしょうか…
でも1万字コピペして貼り付ける輩がいないとも限らないし。
0355初心者NGNG
>>352
その方法なら一応わかるんです。
あ、でも2chのスレタイに一万字貼り付けた事がないからどうなるかは分かりませんが。

>>353
それはどんな方法なのですか?
といっても今の私には理解できなさそうな気がしますが。
0356デフォルトの名無しさんNGNG
>>354
なんで8文字だとダメなのか、よーく調べてみよう。
0357デフォルトの名無しさんNGNG
>>354
細かいところにこだわりたいなら、自力で349を改造するのがいいと思う。
それが無理なら、今はそんなことにはこだわらないほうがいいと思う。
0358初心者NGNG
>>356
はい、調べてみる事にします。

>>357
>349に未知のモノがあってまだ改造どころではなさそうです。

これからも独学で逝くつもりなので頑張ってみます。
お騒がせしますた。
また来るかも知れませんが。
0359デフォルトの名無しさんNGNG
Cの勉強系スレに常駐するといいかも。
最近寂れてるし。

独学もいいけど、コンピュータの基礎(プログラミング意外のね)の本も
併読するといいよ。
0360デフォルトの名無しさんNGNG
>>358
fgets後sscanf
0361デフォルトの名無しさんNGNG
3日目でバッファオーバーフローの問題に気付くなんてなかなか才能あるカモね。
0362デフォルトの名無しさんNGNG
こんなんでどう?
8文字以内に改行が入ると出力されてしまうようになるので
削ってふ。

#include <stdio.h>
#include <string.h>

int main()
{
unsigned char i;
char string[8 + 1];

puts("1〜8文字入力してください。");
fgets(string, sizeof(string), stdin);

for (i = 0; i < strlen(string); i++) {
if (string[i] == '\n')
string[i] = '\0';
string[i] = string[i] + 1;
}

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

return 0;
}
0363デフォルトの名無しさんNGNG
/*
表示だけ。表示だけじゃいやーんなら、>>353の言っている
メモリの動的確保について勉強して。変数名はstringよか
bufか何かのほうが意味的に適切かも。
*/
while (fgets(string, sizeof(string), stdin)!=NULL) {
for (i=0;i<sizeof(string)&&string[i]!='\n';i++) {/*条件式の順に注意*/
if (string[i]=='\0') {/*念のため*/
string[i]='\n';
break;
}
else
string[i]=string[i]+1;
}
fputs(string, stdout);
}
メモリの動的な確保のかわりにファイルをバッファ的に使う
キタナイ方法もあるにはあるけど。。
0364デフォルトの名無しさんNGNG
fgets で 8 文字読みこむと必要なのは 10 文字分という罠。
0365デフォルトの名無しさんNGNG
>>364
'\0'の他に'\n'の分が必要なわけですね。
0366デフォルトの名無しさんNGNG
終わるときは EOF を打ち込む。

#include <stdio.h>

#define LINEMAX 1024

int main(void){

    char line[LINEMAX];
    int len;
    int i;


    while(0 < printf("1 - 8 文字入力してください : ") && fgets(line, sizeof(line), stdin) != NULL){

        if(9 < (len = strlen(line))){
            printf("文字が多すぎます。\n");
            continue;
        }

        for(i = 0; i < len; ++i)
            line[i] = line[i + 1];

        fputs(line, stdout);
    }

    return 0;
}
0367デフォルトの名無しさんNGNG
ループ継続条件の不等号の向きを全部逆にしてほすぃ
0368デフォルトの名無しさんNGNG
> for(i = 0; i < len; ++i)
ここは逆にしないほうがいぃ
0369366NGNG
いつも不等号の向き固定(大小関係固定)でやってるから。
一般的でないのはわかってるけど、対象固定だと気持ち悪くて。
0370370NGNG
>>354
この問題!!!
配列の領域以上に文字をぶち込まれた場合の処理どうやるんですか?
C言語初めて1ヶ月だけど、未だに出来ない・・・.
0371デフォルトの名無しさんNGNG
>>370
fgets()で一度に読み込める文字数を制限してしまえばよい。
0372デフォルトの名無しさんNGNG
>>370
スレ読めばわかると思うけど、ぶち込まれた場合のことを考えるんじゃなくて、ぶち込まれないようにがんばるんだよ。
0373370NGNG
>>371
fgets()はファイル読み込みじゃないの?
stdinからもOK?

>>372
頑張ってるんだけどさ・・・.
上司が「じゃあこれは?」とか言ってぶち込みやがるんだよ〜
0374デフォルトの名無しさんNGNG
fgetc( fd ) で地道にやろう。
>上司が・・・〜
当然だ。
0375デフォルトの名無しさんNGNG
>>373
「入力される」のと「配列に入れられる」のはぜんぜん違うよ。
入力されたときのことを考えて、
配列からはみ出ないようににがんばるんだよ。
0376デフォルトの名無しさんNGNG
>>373
もちろんstdinでもOKだよ。openされてるFILE*型なら大丈夫。
0377デフォルトの名無しさんNGNG
char string[10000];
とかにしちゃえば?
さすがに1万文字も入れられることはないし、
スタックの無駄遣いではあるけど。10KB程度全体から見たら微々たる物じゃないかと。
0378370NGNG
>>375
つまりこういうこと?
char str[100];
char a[8];
int i;

scanf("%s",str);

for(i=0;i<9;i++)
{
a = str[i];
}

・・自信ないなあ
0379デフォルトの名無しさんNGNG
>>378
for(i = 0; i < 7; i++) a[i] = str[i];
str[i] = '\0';
0380デフォルトの名無しさんNGNG
じゃなかったゴメソ
for(i = 0; i < 7; i++) a[i] = str[i];
a[i] = '\0';
0381デフォルトの名無しさんNGNG
三年後,>>377の作ったプログラムに10001文字入れられて現場は
バグ取りに追われるのでした・・・(>>377は既に転職)
0382デフォルトの名無しさんNGNG
こんなんどう?
#define MAX 15

int main(){

char str[MAX];
int len;

fgets(str,MAX,stdin);

len = strlen(str);

str[len-1]='\0'

return 0;

}

これなら改行もカンマも大丈夫かな?
0383デフォルトの名無しさんNGNG
コマンド入力画面で対話式に引数を入力していくプログラムってありますよね?
その操作を繰り返すのが面倒なのでテキストファイルに引数の一覧書き込んで
そこから読み込むという形で自動化したいんですけど出来るでしょうか?
0384デフォルトの名無しさんNGNG
>>383
stdinからの入力なら、単にテキストファイルをリダイレクトするだけの
話では。
0385383NGNG
>>384
私の使っているOSはリダイレクトをサポートしていません。
0386デフォルトの名無しさんNGNG
>>385
> 私の使っているOSはリダイレクトをサポートしていません。
えっ?リダイレクトってOSがサポートするものなの?
シェルがサポートするもんだと思ってた。
0387385NGNG
>>386
いわれると思った・・・(笑)
やっぱりシェルが提供しているのか。

ちなみに385!=383です。
0388デフォルトの名無しさんNGNG
>>384
えーと、そのプログラムを実行した後に
何度か対話式に引数の入力が求められるんですけど、
それら全ての引数をファイルから入力したいんです。
例えばdos窓とかでだと、
実行後に
実行しますか?
y/n:y
本当に実行しますか?
y/n:
こんな感じの入力画面になりますよね?
これはリダイレクトするだけで、出来るものなのですか?
勉強不足なら本当に済みません。
0389デフォルトの名無しさんNGNG
>>388
いちいち「本当に実行しますか?」と聞いてこないようにプログラムすればよい。
0390383NGNG
385さんは多分勉強不足の僕をからかっているんでしょう。。。
ほんとにすいません、もうちょっと調べてきます。
0391385NGNG
>>390
違うぞ。勉強不足は>>385の方だぞ(ワラ
0392383NGNG
>>389
いえ、実際は数値とかの入力なんですけど。。。
0393デフォルトの名無しさんNGNG
>>392
コマンドライン引数を使って計算するプログラムじゃないの?
0394393NGNG
対話的って書いてあるじゃない(汗
0395デフォルトの名無しさんNGNG
>>383
これが「プログラマは楽をするためならどんな努力でもする。」って奴ですか?
0396 ◆GpSwX8mo NGNG
#include "glibw32.h"
#include<stdio.h>
#include<math.h>
#define haikei BLACK
#define L 1000 //x方向の総分割数
const int TOTALTIME=1500; //総時間ステップ数
const double MAXamplitude=1; //波の最大振幅
main(void)
{
int M=TOTALTIME;
double u[L+2],preu[L+2],nextu[L+2],
dt=0.01, dx=0.01, v=1.0, max=MAXamplitude;
ginit(600,200,haikei);
GRAPH gra; gra.view(0,0,600,200);
gra.window(-dx*L/2,-max,dx*L/2,max);
///////初期条件の設定////////////////////////////
//
for(int l=0;l<=L+1;l++)
{
u[l]=exp(-pow((l-L/2)*dx,2));
preu[l]=u[l-v*dt/dx];
}
/////////数値シュミレーション/////////////////////
//
for(int i=1;i<=M;i++)
{
for(int l=1;l<=L;l++)//時間発展
nextu[l]=pow(v*dt/dx,2)*(u[l+1]-2*u[l]+u[l-1])+2*u[l]-preu[l];
nextu[0]=nextu[L]; nextu[L+1]=nextu[1]; //周期境界条件
//
/////////描画部//////////////////////////////
if(i%3==0)
{
gra.frectangle(-dx*L/2,-max,dx*L/2,max,haikei);//消去
gra.moveto(0,-max); gra.lineto(0,max); //縦軸
gra.moveto(-dx*L/2,0);gra.lineto(dx*L/2,0); //横軸
}
gra.moveto(-dx*L/2,u[0]);
for(int l=1;l<=L+1;l+=3)
{
gra.lineto(dx*(l-L/2),u[l],GREEN);
}
gra.moveto(-dx*L/2,u[0]);

/////////////入れ替え preu <- u, u <- nextu ///////////////
for(int l=0;l<L+2;l++)
{
preu[l]=u[l];u[l]=nextu[l];
}
}
gend();
}
0397 ◆GpSwX8mo NGNG
さっさと答えろおめーら。
0398デフォルトの名無しさんNGNG
>>378だと100文字以上ぶちこまれたときにコケる。
0399デフォルトの名無しさんNGNG
>>396-397
その前の質問しろ
0400デフォルトの名無しさんNGNG
s/その前の/その前に/
0401デフォルトの名無しさんNGNG
>>397
グヒヒ
0402 ◆GpSwX8mo NGNG
質問です。
396で
(1)形の違う波が衝突してすり抜けるようにする方法
(2)固定端や自由端にする方法
はどうすればいいんでしょうか。
これはコンパイルしても浮動小数点のエラーは出ますが問題なく実行できます。
いろいろ考えてみたのですが、
(1)は初期条件をうまいこといじればできそうな気がしますが、どうも
すり抜けるというか干渉しあいながらすれ違うみたいな図ができてしまいます。
(2)は周期条件をいじればできそうな気がしますが、もとの図と同じように
ただ往復する波の図ができてしまいます。
どなたか心当たりのある方、レスお願いします。
自分も新たなことがわかり次第、書き込んでいこうと思います。
0403 ◆reqfwMkc NGNG
>>397に偽者が出たのでトリップ変えます。
ちなみに#1でした。
0404デフォルトの名無しさんNGNG
subback.htmlを更新
0405383NGNG
>>395
そうなのかもしれませんけど、そのプログラムのソースが手に入らないんですよ。
厚かましい事この上ないですけど、実際に僕が質問した事は初心者レベルで実行可能かどうかだけdめお教えて下さい。

>>391
前のレスを見逃していました、申し訳ないです。
それと勉強不足はやはり違いなく僕の方だと思います。
シェルが何なのかさえ明確には分からないんですから。

>>393
で、出来そうでしょうか?
0406デフォルトの名無しさんNGNG
>>388
> これはリダイレクトするだけで、出来るものなのですか?
できる。
0407383NGNG
>>406
出来るんですか。。。
ありがとうございます、お手数おかけしました。
もう少し勉強しなおしてみます。
0408ふぁるこんNGNG
どなたか教えてください。
BorlandのHPより無料でTurboDebuggerをダウンロードしてきました。
小規模なC++ソースのデバッグをしたいのに以下のエラーがでます。
「not enough memory to load symbol table」
他のアプリも全部終わらせています。
メモリはそれなりに空いていると思うのですがどうすれば良いのでしょうか。
0409デフォルトの名無しさんNGNG
ど・初心者ですが、質問です
C言語のプログラム書くのに便利なソフトって何がありますか?
コンパイラするソフトではなく、プログラムを書くソフトでお願いします
0410デフォルトの名無しさんNGNG
>>409
vi
0411デフォルトの名無しさんNGNG
>>409
須れ違いの鼬買い
0412デフォルトの名無しさんNGNG
スレ違いって、では、どこで聞けばいいんでしょうか?
0413デフォルトの名無しさんNGNG
>>409
notepad
edlin
0414デフォルトの名無しさんNGNG
>>413
ありがとうございます
0415デフォルトの名無しさんNGNG
ねたのつもりなんだが・・・
0416デフォルトの名無しさんNGNG
>>415
他にどんなのがいいでしょうか?
0417デフォルトの名無しさんNGNG
emacs
0418デフォルトの名無しさんNGNG
マジレス
根っからのWinnerと限定してvi,emacsはじゃ排除

秀丸
vivi
SAKURA
cpad等の簡易統合環境

SAKURAはフリー
統合環境はそれ以外ではほとんど使い物にならないから特殊用途
viviと秀丸はシェア
0419デフォルトの名無しさんNGNG
マジレス
type con >source.txt
0420デフォルトの名無しさんNGNG
>>419
立派なエディタだねw
0421デフォルトの名無しさんNGNG
>>396
つーか、ここで聞かないでシミュレーション板で聞けば?
あと、その近似法だと波が干渉するのは当然だ。
0422デフォルトの名無しさんNGNG
>>419
DOS時は、数行で終わるファイルはそれで作ってた。
なつかしぃ。
0423 ◆reqfwMkc NGNG
>>421
レスどもです。m(_ _)m
板移ることにします。
0424デフォルトの名無しさんNGNG
>copy con test.c
だべ?

つーか、ソースなんか
#include <con>
の一行で済ませろ
0425デフォルトの名無しさんNGNG
>>424
冷静に考えると可能なのよね・・・。
0426342の初心者NGNG
皆様いろいろとありがとうございました。
いろいろと調べた結果、根本的解決にはなっていませんが以下のようにする事で解決しました。

char string[8];
scanf("%s", string);
↓
char string[9];
scanf("%8s", string);

ただ、調べていくうちに、解決策としてポインタとやらが有効なのではないかと考えています。
>353様のおっしゃられたメモリの動的確保を勉強中です。
入力された分だけメモリを確保するようにしようと思っています。
0427デフォルトの名無しさんNGNG
char string[9] = {0};
にしといた方がいいよ。
0428scanf推進派NGNG
>>426
>根本的解決にはなっていませんが・・・
もしかして2バイト文字も一文字としてずらすからでしょうか?
文字コードレベルでずらしていいのでしたら

#include "stdio.h"
#include "stdlib.h"

#define uchar unsigned char
#define num 8
/* ↓MS系コンパイラは定義されていないので↓ */
#define iskanji(_c) ((0x81<=((uchar)_c)&&((uchar)_c)<=0x9f)||(0xe0<=((uchar)_c)&&((uchar)_c)<=0xfc))

int main(void)
{
int i, n;
uchar string[(num*2)+1] = {0x00};

printf( " 1 〜 %d 文字入力してください。\n", num );
scanf("%s", string);

for(i=0, n=0; *(string+i)!=0x00; i++, n++){
if(iskanji(*(string+i)))
i++;
}
if(n > num){
puts( "多すぎ..." );
exit(30);
}
for (i=0; *(string+i)!=0x00; i++){
if(iskanji(*(string+i)))
i++;
*(string+i) += 0x01;
}
printf( "%s\n", string );
return (0);
}

は、どうでしょうか?コンパイルしてないのでうまく動作するかはわかりませんが...
また、質問の内容とずれていたらスマソ
0429デフォルトの名無しさんNGNG
UNIX環境でプログラムから自分が実行されてる
ウィンドウのサイズ(文字数)を調べる方法知ってる人教えてくれ。
0430デフォルトの名無しさんNGNG
>>429
取りあえず寝ろ。
0431デフォルトの名無しさんNGNG
とりあえず意味が分からない。
0432デフォルトの名無しさんNGNG
>>430
UNIXコマンドを作るんスよ!
実行されてるウィンドウサイズがわからなきゃ作りようがない!
んじゃなけりゃLinxコマンドとかのソースって何処にあるかだけでも!
0433デフォルトの名無しさんNGNG
質問です。
16bitの整数の上8ビットと下8ビットを入れ替えたいんですが、例えば

short int data[100];
:
:
for(i=0;i<100;i++){
  data[i]=(data[i]>>8 & 0xff)|(data[i]<<8 & 0xff00);
}

こんな事してるんですが、もっと早い方法ってありますか?
0434デフォルトの名無しさんNGNG
curses使え
0435デフォルトの名無しさんNGNG
>>428
そのscanf()の使い方だと振り出しに戻ってるような…
0436デフォルトの名無しさんNGNG
CPUにそういう専用命令があるかも。
あと、unsigned shortとしておけば、
&は要らないとおもう。
0437デフォルトの名無しさんNGNG
>>434
ありがとう。
0438デフォルトの名無しさんNGNG
curses
ってさ"かーしぃす"って読んだらいいの?
0439デフォルトの名無しさんNGNG
>>433
激しく機種依存だけど、union使ったら?
0440デフォルトの名無しさんNGNG
>>439
どんな感じに?
0441デフォルトの名無しさんNGNG
>>433
環境を特定しないような一般的なレベルでは、それがいいのでは?
それ以上気にするなら、メモリアクセスのスループットを最大化するこ
とを重視して最適化するのがよいと思う。組み込みプロセッサとかは知
らんけど。
0442デフォルトの名無しさんNGNG
>438
最後は ず の方がかっこいい。
0443433NGNG
皆さんアドバイスありがとうございます。
ところで、どのように共有体を使ったらいいのでしょうか>>439
興味あります。
0444名無しさんNGNG
printfなどの出力は、今では簡単にできますがもともとは誰かが設定した関数printfを使っているわけですよね。
そう考えて、どんどん根底まで突き詰めていくと(つまり、printf関数を作成した人はその関数内で別の関数を利用していたと考えられます。
が、その関数を定義した人は?というループ)、C言語のライブラリにある関数をプログラミングしている人は、こちらから見れば作成環境がどんどん悪くなっていきます。
どのような方法でプログラミングをしていたのでしょうか?
それとも、C言語というプログラミング言語は、ほかのプログラミング言語で定義されたものなのでしょうか?
0445デフォルトの名無しさんNGNG
>>444
?
0446デフォルトの名無しさんNGNG
>>443

union
{
 struct
 {
  char a;
  char b;
 } c;
 short s;
} r;

r.s = 数字;
swap(r.c.a,r.c.b);

アバウトにこんな感じ
0447439じゃないけどNGNG
>443
typedef union{
short s;
struct { char c1; char c2; };
} utype;
...
short int data[100];
utype *ptr = (utype*) data;
for(i=0;i<100;i++){
swap( ptr->c1 , ptr->c2 );
ptr++;
}
つーよーな感じでわ。
0448デフォルトの名無しさんNGNG
>>444
一度、printfのソースを眺めてみればいいと思う。
0449デフォルトの名無しさんNGNG
>>439
実行時間計ってみれ。
コンパイラが最適化してビット操作に置き換えちゃったりすることがあ
るので、コードを確認してみても面白い。
0450デフォルトの名無しさんNGNG
>>444 ソース読めば?
0451433NGNG
>>446,447
なるほど。共有体なんて使った事がなかったからそんな発想はありませんでした。
さんきゅうです。
0452デフォルトの名無しさんNGNG
>>446-447,451
構造体のパッキング・・・
0453デフォルトの名無しさんNGNG
>>444
わかりませんか?おかしいですね。
特に、初心者の方はよくわかると思うのですが・・・

たとえば、文字列の長さを調べるのに
int i;
char *s = ...
for (i = 0; s[i] != '\0'; i++)
;
i += 1;
とかやってませんか?

それがアレですよ、ええと、そうそうstrlen()
こんな調子であなたがやってることをライブラリ制作者はやっているんです
0454デフォルトの名無しさんNGNG
>>444
だいたいそんな感じですが、最終的には OS の機能を呼び出して文字を出力するわけですな。
0455デフォルトの名無しさんNGNG
>>454
もしくはVGAとかBIOS叩く〜
0456デフォルトの名無しさんNGNG
>>454
飛躍しすぎ
0457デフォルトの名無しさんNGNG
誤爆
>>455宛て
0458433NGNG
構造体のぱつきんぐって何?
それつおいの?
0459デフォルトの名無しさんNGNG
>>444
基本的にはアセンブラ
まぁ、機械語を書ける兵もいるかも知れんが…
0460デフォルトの名無しさんNGNG
近頃unionを共有体と呼ぶヤシが多いのはなぜだ?
0461デフォルトの名無しさんNGNG
共用体じゃないのか?
0462 NGNG
ファイル共有ソフトの関係じゃない?
0463デフォルトの名無しさんNGNG
昔は労働体と言ってたものじゃが…
0464C勉強中NGNG
なにやら評判がいいのでK&R本でC言語を勉強してます。

p22の演習1-6で getchar() !=EOF という式の値が0か1であることを
確認せよっていうのがどうすれば確認できるか分かりません。

アドバイスお願いします。
0465デフォルトの名無しさんNGNG
>>464

printf("%d\n", getchar() != EOF);
0466デフォルトの名無しさんNGNG
>>465
それはアドヴァイスではなく答えだ
0467C勉強中NGNG
{
int c;

while ((c = getchar()) != EOF){
putchar(c);
printf("%d\n", getchar() != EOF);
}

}
で、testと入力して実行すると
t1
s1
って結果になるんですがこれでOKです?結果が理解できないです。
0468デフォルトの名無しさんNGNG
>>467
それでOKです。"test"のうち2文字目の'e'と4文字目の't'がprintf内のgetchar()
によって食われ、1になっているからです。
0469デフォルトの名無しさんNGNG
int blean, c;
while (blean = (c = getchar()) != EOF){
if(c == '\n') continue;
printf("%c\t%d\n", c, blean);
}
printf("EOF\t%d\n", blean);
0470C勉強中NGNG
>>468
食われて?w;
まず拾ってきた1文字めがEOFじゃないからtをプットしますよね?
プットした=真だから次に1プリントアウトさるのは分かるのですが
eはいずこえ?つぎにeを拾ってこないの?

>>469
理解するにしばし時間を。
0471デフォルトの名無しさんNGNG
while ((c = getchar()) != EOF){ //tをゲト
putchar(c);
printf("%d\n", getchar() != EOF); //eをゲト
}

getchar()使う、読み出す位置、次へ移る
これプログラムの定説ある(´A`)
0472デフォルトの名無しさんNGNG
>eはいずこえ?つぎにeを拾ってこないの?
printf内のgetcharで拾ったよ。出力してないだけで。
0473デフォルトの名無しさんNGNG
>>470
食われてという表現はまずかったかもしれないけど、'e'がEOFではない
もんだから、getchar() != EOFの式が1になって、それがprintfで表示
される罠。
その後またwhileの条件文に戻って、's'をgetchar()してputchar()し、
最後の't'もまた例によって1になる罠。
0474デフォルトの名無しさんNGNG
>>470
ああわかった。どこで悩んでおられるのか。
getchar() != EOFという式が、char型を返すと思いこんでおられるようだ。
この式は1か0しか返さんよ。
0475C勉強中NGNG
なるほど。二つ目のgetchar() != EOFでも文字ゲットしてきますよね。
二つ目のgetchar() != EOFを一つ目のときの数字の1とだけしか見てませんでした。
やっと理解できました。ありがとうございますた。
0476デフォルトの名無しさんNGNG
>>474
ハァ?
標準入力から一文字読んでその文字を返す関数ですが。
0477476NGNG
おっと、式のことか。スマソ
起きたばかりでねぼけてしまった。
0478383NGNG
>>406
手持ちの参考書調べてみましたが、やっぱり分かりません。
なんか、一個目の入力で止まってしまって、目的のプログラムが終了するまで
残りの引数が入力されないような状態になってしまうんですけど。。。
なんか、ヒントとか参考になる書籍とかだけで良いので教えてくださいませんかね?
0479デフォルトの名無しさんNGNG
>>478
fgets(...);
fgets(...);
としてユーザの入力を得るなら、
y
y
n
と記述したテキストを用意して、

executable < commands.txt

これで出来る
0480デフォルトの名無しさんNGNG
設問が「確認せよ」だから、答えとしては

規格のこの部分で「〜」と定義されている。
よって、getchar() != EOF という式の値は0か1になる。

という記述の方がふさわしいような気がする。
printf("%d\n", getchar() != EOF);
これだとあらゆる入力を試さないと確認したことにならないし。
0481デフォルトの名無しさんNGNG
>>478
何でもいいから次の参考書を買え。参考書はいっぱいあるから尽きるこ
とはない。安心しろ。
0482デフォルトの名無しさんNGNG
>>481
時間が尽きると思われ
0483デフォルトの名無しさんNGNG
>>478
キーワードが幾つか出てるけど、それで検索掛けてみた?
0484デフォルトの名無しさんNGNG
>>479
>>405でソースが入らないと言ってるのに
fgetsならと言いきってしまう所が素敵

>>383
一通り、試してみて駄目だったら諦めた方が良いよ
0485デフォルトの名無しさんNGNG
>>481
482さんの仰る通りそんな事してたら時間が幾らあっても足りません。
意地悪な事は言わないで良書(出きればソース付きの)を教えてくださいませんか?

>>483
リダイレクト以外で何かキーワードが出てきたでしょうか?
リダイレクトでは検索かけてみたんですけど、
どうも参考書に書いてあることと変わらない内容ばかりで…
僕は応用が利かないんでしょうね。。。
けど、もう少し頑張ってみます。
0486デフォルトの名無しさんNGNG
>>484
>一通り、試してみて駄目だったら諦めた方が良いよ
とは一体どういう意味なのでしょうか?
出来るには出来るけど、僕には無理という事なのか、
実質的に無理なのか、どっちなんでしょうか?
多分前者だと思うんですけど。。。忌憚無き意見をお願いします。
0487デフォルトの名無しさんNGNG
ソースが手に入らないでプログラム的に解決する事じゃないなら、
そもそも板違いだろ?
0488デフォルトの名無しさんNGNG
とりあえず、環境は何なんだよ
それによって解答も違うだろ
0489デフォルトの名無しさんNGNG
char str[20];

fgets(str,sizeof str,stdin);

としたとき、改行文字も入れて20文字以上書き込むと標準入力に何文字か残ってしまいますよね?
これを消し去るにはどうしたらいいのでしょうか。

調べてみたところfflush(stdin)とすればできると書いてあったのですが、Linux+gccの環境ではできないようなんです。
0490デフォルトの名無しさんNGNG
>>489
規格ではfflush()は出力用にしか定義されてない。
0491デフォルトの名無しさんNGNG
>>490
環境依存でも構わないので、何かよい方法はないでしょうか。
0492デフォルトの名無しさんNGNG
>>489
scanf("%*s");
0493デフォルトの名無しさんNGNG
>>489
どういう組み方をしたいのかは知らないが、普通fgetsに標準入力は使わないと思うが・・・
0494デフォルトの名無しさんNGNG
>>493
よく使ってますが何か?
0495デフォルトの名無しさんNGNG
>>494
getsじゃダメダメ?
単にwarning回避したいだけ?
0496デフォルトの名無しさんNGNG
>>493
gets() がバッファサイズ指定できるならそっちを使うだが、
現状では fgets() するしかないような。
0497デフォルトの名無しさんNGNG
> 普通fgetsに標準入力は使わないと思うが・・・
常道じゃないの?
0498デフォルトの名無しさんNGNG
>>496
ああ、fgetsってバッファサイズ渡せるのね。
freadしか使ったこと無いよ。。。たしか。
0499デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> fgets
0500デフォルトの名無しさんNGNG
>>499
いや、意味わからんて。
0501デフォルトの名無しさんNGNG
stdinのバッファをフラッシュするのって、難しいね。いろいろやってみたけど、
やっぱり直接FILE構造体の中身をいじるしかないみたい。
0502デフォルトの名無しさんNGNG
fseek(stdin,0L,SEEK_END);

これはまずいよな・・・・一応VC++ではできるみたいだけど。
0503502NGNG
しかも別にフラッシュしているわけじゃないし。
0504デフォルトの名無しさんNGNG
>>501
ユーザがキーを先行入力している可能性があるので、何でもかんでもstdinを
フラッシュするのはいかがなものか。

バッファから溢れた行末部分を捨て去りたいなら
char str[20];
int c;
fgets (str, sizeof str, stdin);
if (str[0] && (str[strlen (str) - 1] != '\n'))
  while (((c = getc (stdin)) != EOF) && (c != '\n'))
    ;
こんな感じか。
0505デフォルトの名無しさんNGNG
>>485
君はどんな参考書でも役に立つレベルかと思われ。たくさん読め。
つーか問題も分かっててソースも必要と、具体的な要求があるんだから本屋で
探せばいいじゃん。できないなら読解能力不足だ。たくさん読んで読解能力を
身につけよう。
0506デフォルトの名無しさんNGNG
int mygets(char *buf, size_t bufsize, FILE *fp)
{
size_t n = 0;
int c;
whilie ((c = fgetc(fp)) != EOF)
{
if (c == '\n')
break;
if (n < bufsize)
buf[n] = c;
++n;
}
buf[n] = '\0';
return c;
}
こんなんいっこつくればいいやん。
0507デフォルトの名無しさんNGNG
n < bufsize -1
じゃないとまずいね。
0508デフォルトの名無しさんNGNG
if (n < bufsize - 1)
  buf[n++] = c;
じゃないとまずいね。
0509デフォルトの名無しさんNGNG
charが8ビットでない環境(自分は見たことないけど)では、
uint8_t とかはどのように定義されるのだろう???
0510デフォルトの名無しさんNGNG
>>505
んな事は分かってる。
レベルの低さからしても確かにどんな参考書でも多少は役に立つだろうよ。
でも、どんな本にも良い者と悪い物があるだろう、目的の技術が載っていない本だってあるだろう。
俺は何冊も本が買えるほど裕福じゃないし全部読めるほど暇でもないんだ。
また本屋でぱっと見たくらいじゃ分からないレベルだから、ここでお薦めの本がないか聞いているんだ。
昨日からの話の流れで、そのくらい判断できるだろう。
出来なかったんなら君こそ読解力を身につけた方が良いんじゃないか?それとも初めから答える気なんてないのか?
どんな本でも沢山読めっつうようなアドバイスなんて、別にC言語知らなくても出来るだろう。
もしも、一冊か二冊読んだくらいでどうこうなるような問題じゃないのなら謝罪するよ。
だが、もしそうなら君は一体何冊くらいの本を読んだんだ?そのくらいの情報はあっても良いと思うんだが。
質問しといてこういう事を言うのは非常に大人気無いが、君の発言にはちょっとカチンときたよ。

>488
OSはレッドハットです、バージョンは忘れましたけど。
>487
ソースは二種類あります。
繰り返し引数を入力して実行するプログラムと、引数の入力を自動化するプログラムです。
前者は手に入りました、後者を自作したいんです。
後者のプログラムを作るために参考になるソースがれば良いという意味で書いたのですが。
0511デフォルトの名無しさんNGNG
>>509
charが1バイトは仕様で定義されてた気がする・・・

>>510
俺はCの本は1冊読んだだけだけど、何を読むべきかなんて他人にはわからない問題かもしれない。
K&Rを激しく勧めるやつもいればK&Rは糞だと言うやつもいる。
0512デフォルトの名無しさんNGNG
>>510
ネットで調べれば?俺はそうしたよ
0513デフォルトの名無しさんNGNG
本のことです
0514デフォルトの名無しさんNGNG
charは決まってるね。
0515デフォルトの名無しさんNGNG
>>511
charは1byte。
でも1byteが8bitという決まりはない。
0516デフォルトの名無しさんNGNG
この前、charもintも32bitという環境で開発しているという人がいたな。
使いにくそう・・・・
0517デフォルトの名無しさんNGNG
>>510
相手が自分の期待したとおりの回答を出さなかったからといって切れるのはどうかと思うが。

ちなみに俺の場合は買ったのは二十冊ぐらいにもなったかな。
ほとんど500円以内で買った中古本。
読み終わったらフリーマーケット行き。

1冊だけと言うなら K&R を勧める。
続けるなら推薦図書スレでどうぞ。
0518デフォルトの名無しさんNGNG
>>517
アフォは放置。それがベスト。
0519デフォルトの名無しさんNGNG
>>571
アフォ3級に認定されました おめでとう!!
次は2級をめざしてがんばってね
0520デフォルトの名無しさんNGNG
>>519
アフォ2段の方は言うことが違うわ。
>>571の人!がんばってくれ!!
0521デフォルトの名無しさんNGNG
>>519のアフォ度は測定不能です。
0522_ NGNG
a[0] = 0;    // a is int*
a[1] = 1;
と
*a++ = 0;
*a = 1;
って基本的にどっちが速いの?
gccではほとんど変わらないみたいだけど・・・(最適化激しすぎ)
変わらないなら上のほうが分かりやすいな。
0523デフォルトの名無しさんNGNG
おまえら>>571にプレッシャーかけるなよ。
どんなふうにボケようか困るだろ。

あと約50か……(ドキドキ
0524デフォルトの名無しさんNGNG
ところで>>518が放置したのは>>510だと思うが。
>>519はその辺どう思う?
0525デフォルトの名無しさんNGNG
>>519は恥ずかしくてもう出てこれないそうです。
0526デフォルトの名無しさんNGNG
>>522
ケースバイケースで使い分ける。速度と可読性を秤にかけること。大抵の
場合は可読性を取った方がよい。
0527デフォルトの名無しさんNGNG
>>571 取り合戦などというめずらしい会場はここですか?
0528デフォルトの名無しさんNGNG
C言語ってなんでDOS窓で出てくるんですか?
0529デフォルトの名無しさんNGNG
>>522
前者じゃねぇのかなぁ。なんとなく。
サイズってどっちが小さいのかね。
0530デフォルトの名無しさんNGNG
>>528
たまたまprintfが標準出力に出力する仕様で
たまたま標準出力がコンソール(DOS窓)を指しているだけです。
0531デフォルトの名無しさんNGNG
>>528
EXEを作る際にリンカの設定でそうしているだけです。
0532デフォルトの名無しさんNGNG
>522
その程度だと、どんな環境でも差が出にくいんじゃないか?
aが構造体へのポインタで、更に同様の記述が多くなると
差が出そうだが(後者が速くなりそうだ)、それさえも大抵は
最適化でほぼ同じになってしまう。基本的に読みやすい方で
いいだろうな。
0533デフォルトの名無しさんNGNG
おーい。だれか構造体のパッキングって何かおしえてくれー。
0534デフォルトの名無しさんNGNG
>>533
水道の蛇口んところとかで水漏れ防ぐやつ?
0535デフォルトの名無しさんNGNG
>>533
ハッキング?
0536デフォルトの名無しさんNGNG
>>533
中途半端な大きさだとCPUが取得できなかったり非常に効率が悪くなったりする。
それを防ぐために構造体はある境界までサイズを増大させる。
それが嫌ならpackedさせる。
0537デフォルトの名無しさんNGNG
>>536
packedはpascalだね。
0538デフォルトの名無しさんNGNG
>>それが嫌ならpackedさせる。
えーと、手元にある参考書(独習C)には特に何も書いていないんですけどどういうことなんですか?
0539デフォルトの名無しさんNGNG
>>537
ごめんなさい、ほんとはDel厨です。

>>538
Cでpackedに対応するキーワードを付ければ構造体のサイズはメンバの合計サイズとなる。
0540デフォルトの名無しさんNGNG
知らないならしゃしゃり出ないでくれる?
0541!>>539NGNG
>>540
で、お前は何も答えられないのな。
0542デフォルトの名無しさんNGNG
>>539
C言語自体にはないけど、#pragma packで構造体をパックする処理系も
あるよ。説明書をよく読んでみそ。
0543デフォルトの名無しさんNGNG
>>517
ああいう反応をしたのは大人気無かったと自覚している。
言い訳になるけど、あれ以上ループを繰り返したくなかったんだよ。
昨日は肝心の質問内容には殆ど触れられずに終わっていまっていたから。
なにも言わずに諦めて去るという選択あったんだろうけど。
なんにせよ、ご回答には感謝する、ありがとう。
参考にさせてもらいます。

>511
そりゃ、一般的な技術を学ぶんだったら人それぞれかもしれないけど
今はこちらが問題点をここに書いて、それに合った技術が詳しく解説されている本を求めているわけで。
自分に合う合わないは二の次なんですよ、今回は。
0544デフォルトの名無しさんNGNG
>ああいう反応をしたのは大人気無かったと自覚している。
おこちゃまは背伸びしてみなくてもよいですよ
0545デフォルトの名無しさんNGNG
(最適化激しすぎ)
0546デフォルトの名無しさんNGNG
>>543
redhatつかってんだろ?
なんでリダイレクトしないんだよ?
0547デフォルトの名無しさんNGNG
redhatっていってもLinuxじゃない特殊な環境があるのか?
0548デフォルトの名無しさんNGNG
つか、リダイレクトごときでこんだけひっぱって、
あげくにソース付きの本紹介しろとか言っちゃったら、
なに言われても文句言えないだr(略
0549HHHNGNG
四次方程式の解を求めるプログラムを示して頂けないでしょうか
0〜4次の五つの係数を代入するヤシです
検索でアプリケーションは見つかったのですがソースが見れませんでしたッp
0550デフォルトの名無しさんNGNG
>>549
解の公式があればそれをコーディングするだけで終わると思うんだけどいかが?
0551デフォルトの名無しさんNGNG
これっておかしいでしょうか?

KOU *Kou;

ReadFile(hFile,&Kou,sizeof(KOU)*17,&byteCount,NULL);

0552デフォルトの名無しさんNGNG
すみませんでした

数行抜けてました

KOU *Kou;

if( ( Kou = (KOU *)calloc(17,sizeof(KOU)) ) == NULL )
 exit(1);
}


ReadFile(hFile,&Kou,sizeof(KOU)*17,&byteCount,NULL);
0553デフォルトの名無しさんNGNG
>>551
可笑しいです。たぶん
>ReadFile(hFile,&Kou,sizeof(KOU)*17,&byteCount,NULL);
ここを
ReadFile(hFile,Kou,sizeof(KOU)*17,&byteCount,NULL);
こうしたいんだと思う。
0554デフォルトの名無しさんNGNG
×ReadFile(hFile,&Kou,sizeof(KOU)*17,&byteCount,NULL);
○ReadFile(hFile,Kou,sizeof(KOU)*17,&byteCount,NULL);
0555554NGNG
ぎゃーかぶったー。
0556553NGNG
>>555
ふ・・・世の中考えることは皆同じなのさ。
0557デフォルトの名無しさんNGNG
>>553-556
説法ありがとうです
5時間悩んでいましたが,やっとうまくいきました
0558デフォルトの名無しさんNGNG
locateがうまくいかないんです。カーソル移動したいのに。何で出来ないの?
0559デフォルトの名無しさんNGNG
locateって何ですかー。ANSI C にそのような識別子は規定されておりません。
0560デフォルトの名無しさんNGNG
>>559
BASICか・・・。

ANSI.sys入れてエスケープシーケンスとか。
0561デフォルトの名無しさんNGNG
__WIN32__ とか __linux__ とか __MSDOS__ みたいに、
MacOS X を識別できる定義済みマクロってなんか無いでしょうか??
X で定義されて 9 以下では定義されないようなやつ。
0562デフォルトの名無しさんNGNG
>>561
>>1 C FAQ 10.19

9以下の環境とXの両方で試して比較すれ。
0563デフォルトの名無しさんNGNG
皆さん、K&Rの例題解いてます?
いまやってるんですが、1問につき1日費すこともあります。
これって遅いですか?
0564デフォルトの名無しさんNGNG
>>563
まあ焦らずゆっくりやれや。ペースはひとそれぞれだし。
0565デフォルトの名無しさんNGNG
>>563
心配するな。
俺の場合、5章、6章当たりは3日で1問とかだった。
0566デフォルトの名無しさんNGNG
>>564
確かにそうなんですどね

>>565
5、6章で1問につき3日ですか、私なら1週間掛りそうですね。
0567デフォルトの名無しさんNGNG
#defineとかの解釈アルゴリズム詳しくわかる人いる?
Cコンパイラ自作しようと思ったが、初めにマクロの解釈でつまずいた。
int a = 1;
int b = 2;
#define b a + b
#define a a + b
printf("%d", a);
例えばこれで何が出力されるか実際に試さないとなかなかわからないと思うが。
あと関数内にマクロを書いた場合、ソース上のどの範囲で有効になるかとか。

マクロの解釈アルゴリズム具体的にわかる人いる?
0568デフォルトの名無しさんNGNG
>>567
printf("%d", a + b);
に展開されるし、定義した位置から#undefするまでスコープ外でも有効
0569567NGNG
>>568
スコープについてはありがとう。
実際にやってみたら意外と4になった。
実際作るとしたらどういうアルゴリズムで展開したらよいのだろうか?
0570デフォルトの名無しさんNGNG
>>569
マクロ a の展開中にマクロ a は展開されない。
マクロ b の展開中にマクロ b は展開されない。
だから
a → a + b → a + a + b
で終わり。・・・のはず。
0571デフォルトの名無しさんNGNG
上で #define b a + b してるから、
これ #define a a + b はすなわち #define a a + a + b 。
ゆえに printf("%d", a); は printf("%d", a + a + b); と展開される。
なので出力結果は1+1+2の4。

ファイルの上から順に、単純に文字列置換していくだけでいいのでは?>>569
0572デフォルトの名無しさんNGNG
int a = 1;
int b = 2;
#define a a+b
#define b 100
printf("%d", a);
は 101 になる。 bccでは、なった。 やってみれ。
0573お願いしますNGNG
プログラマーの卵です。
いま研修中でwin32 console applicatison(DOS風の黒い画面上で動くソフト)
を作っています。初歩的な質問かもしれないですが参ってます。

printf("数値aを入力\n");
printf("必要なければそのまま[enter]を押してください。\n");
if(scanf("%d",&a)!='\n')/*この行の式がわかりません*/
  printf("%d",a);
  printf("入力無し");

というような感じで、エンターキーを押すと次の処理に移行
できるような、判別式を探しています。(\nでは無理でした。)
なにか方法はないでしょうか?よろしくおねがいします。
0574デフォルトの名無しさんNGNG
>>572
改めて考えると結構無茶苦茶な言語だな C って(w
最初のプリプロセッサの実装の都合に仕様が引きづられてそうだ。

>>573
scanf の返り値が何かくらい調べろ。
0575デフォルトの名無しさんNGNG
getsしたあとで sccanfして戻り値を調べろ。
0576567NGNG
ありがとう。ついでにもうひとつだけ、
int a = 1;
#define a b
#define b a
printf("%d", b);
では、これは?

ちなみに、
#define a b
#define a a
だったらaが再定義されているというエラーが出る。
だから#define b a → #define a a に展開されているとしたら、
aが再定義されているとエラーが出るはず。

もし左側の字句は展開されないのだったら、
上から順に展開されると b→a
で問題無く終わりのはずなんだが。

実際はbが定義されていないと出た。この場合どういう展開したかわかる?
0577567NGNG
すいません。567は勘違いです。わすれて。
0578567NGNG
↑567はじゃなくて576ね
0579デフォルトの名無しさんNGNG
>>576

#define b a
の時点でaは展開されるんじゃないの?
#define b b
の意味になるから、bはそれ以上展開されないで未定義。
ってゆうかcppすれ。
0580デフォルトの名無しさんNGNG
アホども、議論する前に参考書でも読め
0581デフォルトの名無しさんNGNG
>>579
>>572を眺めてみよう。
0582573NGNG
>>574 >>575

すいません、頭があんまりいいほうではないので
もう少しヒントが欲しいんですが・・。

読み込みをgetsでやって、その後scanfするというのは
エンターの入力をgetsなら文字として判定できるということですか??
0583デフォルトの名無しさんNGNG
>>571
あなたアフォ3級だって。
真面目に答えたのにご愁傷様。
0584デフォルトの名無しさんNGNG
>>582
*scanfの戻り値は実際に代入できた数でしょ?

char str1[]="333";
char str2[]="aaa";
int i;

sscanf(str1,"%d",&i); /* ここでは1が */
sscanf(str2,"%d",&i); /* ここでは0が */

返るはず。
0585デフォルトの名無しさんNGNG
いちいちきかねえでライブラリのマニュアル見ろバか
0586584NGNG
>>585
私に言っているの・・・・?
聞いているのとはちょっと違うんだけど。
0587デフォルトの名無しさんNGNG
このやり方であっているんでしょうか?

KOU Kou[6];

hFile = CreateFile("Kou.dat",GENERIC_READ,0,NULL,OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,NULL);
//読みこみを失敗したら終了
if(hFile == INVALID_HANDLE_VALUE){
 ErrorRead();
 GameExit();
}

ReadFile(hFile,&Player,sizeof(PLAYER)*6,&byteCount,NULL);
CloseHandle(hFile);

ReadFileの中は,あっているんでしょうか?
0588デフォルトの名無しさんNGNG
まちがいました

KOU Kou[6];

hFile = CreateFile("Kou.dat",GENERIC_READ,0,NULL,OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,NULL);
//読みこみを失敗したら終了
if(hFile == INVALID_HANDLE_VALUE){
 ErrorRead();
 GameExit();
}

ReadFile(hFile,&Kou,sizeof(KOU)*6,&byteCount,NULL);
CloseHandle(hFile);

ReadFileの中は,あっているんでしょうか?
0589デフォルトの名無しさんNGNG
APIの話をするならWin32スレに逝け。
0590デフォルトの名無しさんNGNG
なんでココの奴らは、

それは〜〜だよ。
すれ違いだから、今後は〜スレで聞けよ。

ぐらいできないのが多いの?
分からないから他にまわすってこと?
0591デフォルトの名無しさんNGNG
板違いだつーのがわからないならもう来んな
0592588NGNG
解決しました
板違いすんませんでした
0593デフォルトの名無しさんNGNG
>>591
板違いとスレ違いの違いがわからないならもう来んな
0594デフォルトの名無しさんNGNG
>>574
>改めて考えると結構無茶苦茶な言語だな C って(w
>最初のプリプロセッサの実装の都合に仕様が引きづられてそうだ。

プリプロセッサの動作は旧いCとANSI-Cではかなり違う。
旧いCの方は小技がかなり効きそうだけど、頑張った他人のソースを読むのは
嫌になるに違いない。
0595デフォルトの名無しさんNGNG
>>587コイツ、スゲー馬鹿
>>551と
http://pc.2ch.net/test/read.cgi/tech/1017072275/685
参照
0596567NGNG
>>579
576は勘違いでした。お騒がせしました。

>>571
> ファイルの上から順に、単純に文字列置換していくだけでいいのでは?
とりあえずいろいろ試して#defineの仕組みがだいたいわかってきたので参考までに。
どうやら上から順番に置換していくわけではないようです。
ちなみに#defineの行の自体は他の#defineにより置換されることはないようです。
例えば次の例を使うと
 int a = 1;
 int b = 2;
 #define b a + b
 #define a a + b
 printf("%d", a);
まず、#defineの第1字句がaと一致するものを検索して置換します。
 a → a + b
そしてこの#defineにフラグを立てます。一度使った#defineは置換完了まで再び使われません
次にこのaとbに対して再び置換を試みます。
a の#defineはさっき使ったのでもう使用不可です。そこで b に対してのみ置換が行われます。
 a + b → a + a + b
そしてこの#defineにもフラグを立てます。
次にこのaとbに対して置換が試みられます。もう使用できる#defineはないのでここで終了です。
こうやって使用できる#defineがなくなるか、もしくは
どの字句も全ての#defineの1字句目と一致しなくなれば終了です。

この方法だと#defineする順番を入れ替えても同じ結果が出ます。
0597デフォルトの名無しさんNGNG
printfでunsigned long型を表示したいのですが、%luというのは処理系(ANSI C準拠)に依存せずに使えるんでしょうか。
0598デフォルトの名無しさんNGNG
>>596
「一度使った#defineは置換完了まで再び使われません」というのが多少気になる。余計なお世話かもしれんけど、こんなの考えてみた。
int a = 1;
int b = 2;
int c = 3;
#define a a + b
#define b a + c
#define c b
#define d a + b + c
printf("%d", d);
意味判らん気味だけど、最終的に a + a + b + a + b + b + a + b + c = 15 になります。たぶんこれくらいややこしいのが正常に展開できたら問題ないんじゃないかと。>>596だと、
d (dを展開)→ a + b + c (aを展開)→ a + b + b + c (bを展開)→ a + a + b + a + b + c (cを展開)→ a + a + b + a + b + b (終わり)
になりそうな気がして。
0599デフォルトの名無しさんNGNG
>>597
うぃ。 %lu は ANSI 準拠です。 unsigned long で使えます。
0600デフォルトの名無しさんNGNG
Cは死滅言語です。きっぱりやめましょう
0601デフォルトの名無しさんNGNG
>>600
あなたもさっさとプログラマやめましょう。
0602デフォルトの名無しさんNGNG
>>601
やめるも何も>>600はプログラマじゃないよ。
Cを使えないがためにプログラマになれなかったの。
0603デフォルトの名無しさんNGNG
ああ、そうだったわね。
0604デフォルトの名無しさんNGNG
最近cを始めたばかりなのですが

int c;

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

とありますが、何を入力してEOFなのでしょうか?
EOFの値は-1と表示されますが、駄目元で-1と入力しましたが
やはり駄目でした。
申し訳ありませんが教えていただけると嬉しいです。
0605デフォルトの名無しさんNGNG
EOFはcharの範囲外の任意の値
従って、直接EOFを入力することは不可能
0606デフォルトの名無しさんNGNG
キターーー!!

>>604
キーボードのCtrl + Zよ
Windows系ならね
0607デフォルトの名無しさんNGNG
>>604
WindowsのコンソールならばCtrl+Z
UNIX、もしくはWindowsでもcygwinならばCtrl+D
0608604NGNG
>>606
できました〜!!
ありがとうございます。
0609デフォルトの名無しさんNGNG
>>605
(TДT)
0610604NGNG
>>607
ありがとうございます。
0611デフォルトの名無しさんNGNG
>>610
OSは何使っているの?
0612デフォルトの名無しさんNGNG
既出や板違いだったらすいません。
私はプログラミング知識ゼロの超ド素人です。
最近C言語でゲームを作りたいと思いまして、C言語を覚えようと思ってます。
覚えながら作る(作りながら覚える?)ようにしたいんですが、
必要なモノ、あると良いモノがあったらお教え下さい。
あとわかりやすい書籍なんかも教えていただけると幸いです。
0613デフォルトの名無しさんNGNG
>>612
コンパイラは>>2-3をみて。
エディタはなんでもいい・・・・と思う。強調表示できれば尚よいけど。
0614デフォルトの名無しさんNGNG
>最近C言語でゲームを作りたいと思いまして、C言語を覚えようと思ってます。

気のせいだかわからんがこういう台詞を聞くのは50回目くらいだな
いや、別にいんだけどね。
0615613NGNG
強調表示よりも自動的に字下げしてくれる機能の方が便利だな。
0616デフォルトの名無しさんNGNG
>>614
50回か・・・年季が入ってるね。
俺はまだ10回くらいかな。
0617デフォルトの名無しさんNGNG
C 言語でゲームというと数当てなどだろうか。
0618デフォルトの名無しさんNGNG
1スレッド2回半くらいで50回になっちゃうよ、<19>までくると。
0619デフォルトの名無しさんNGNG
C言語まではいいがWin32、C++、DirectXと
進むにつれて挫折すること請け合いだ。
0620デフォルトの名無しさんNGNG
ココで聞いてみていいものかどうか・・

> float 32ビット (IEEE754)浮動小数点数
> ±3.40282347E+38 〜 ±1.4E-45と0, ±無限大Infinity、非数NaN

つまり float の最大値最小値て幾らなんですか?
C言語勉強しててふと疑問に思ったんですが・・・
上に引用した説明がつまりよくわかりません。
0621デフォルトの名無しさんNGNG
>>620
表現したい値による
0622デフォルトの名無しさんNGNG
>>620
floatに最大値、最小値はあまり意味がない。
有効桁数のほうが重要。
0623わーいNGNG
>>612
C言語を独学でやるつもりなら、
大きな本屋に行って「〜入門」系の本を立ち読みでもして、
自分でこれなら良いかもって思うくらいのやつが見つかるまで買わない
っていうのが良いと思うけど。最初は本屋で勉強するつもりで。高いしね。
このスレの最初の方に良いのが書いてあるのかもしれないけど…
0624デフォルトの名無しさんNGNG
>>620
なにが知りたいのかよくわからないが、IEEE754のはそのとおり。
あなたの処理系がIEEE754を採用しているかは知らん。
そのC処理系での値なら、採用している表現に関わらずfloat.hに
いろいろ書いてある。limits.hの実数版ですな。引用したのがよくわからないとのことだが、旧2種(なんていうんだか
いまだに覚えられない)についてのページをあたってくれたまい。
0625デフォルトの名無しさんNGNG
>float の最大値最小値
>±無限大
などといまさら言ってみる。
0626デフォルトの名無しさんNGNG
#define A(s) B(s)
#define B(s) X##s
#define E C + D
A(E) ;
B(E) ;
でコプリセッサに通すと
XC + D ;
XE ;
になったりする謎の多いbccでした
ちなみに、bccを持ってる人は、これに
#define XC 10
を追加して試した後
#define C 2
を追加して試すと更に謎が深まりますので
暇な方はレッツチャレンジ♪
#define XE A(E)
を追加するのもお勧め♪
0627626NGNG
#define XE A(E)
は、ちょっとした勘違いで、そこに至るまでの
過程を別にすれば不思議はありませんでした(汗)
0628デフォルトの名無しさんNGNG
まず、visualc++をたちあげてから
うまく使えない。
俺はDQNだ、鬱。
どうやったら
Cが書けるのか。
0629デフォルトの名無しさんNGNG
Borland C Compilerを使え
簡単だ
0630デフォルトの名無しさんNGNG
>>626
コプリセッサって何?
0631デフォルトの名無しさんNGNG
>>630
地球連邦軍が開発したと言われる幻のガンダムのことだ。
0632デフォルトの名無しさんNGNG
>>631
なるほど。
0633デフォルトの名無しさんNGNG
>>620
"浮動"小数点というくらいだから最大値、最小値ともに表現次第で不定なんだろうな。
よく分からないけど。
0634デフォルトの名無しさんNGNG
>>633
けど、ビット数的な制約はあるよね。
0635デフォルトの名無しさんNGNG
>>634
うん。
無限ということは絶対にありえない。でもdoubleなら滅多に桁数が足りなくなるという事態は訪れないよな。
long doubleなんて実際に使うのかしら。
0636デフォルトの名無しさんNGNG
複数の文字列を連結しようとするとき、
sprintf(buf, "%s%s%s", str0, str1, str2);
とした場合、str0〜str2の中に漢字が含まれ、その漢字に%を表すバイトが
含まれていると期待した結果にはならないと聞きました。
漢字を含む文字列を連結する定石を教えてください。
一つずつstrcatするのでしょうか…
0637デフォルトの名無しさんNGNG
初耳です・・・。
0638デフォルトの名無しさんNGNG
>>636
>一つずつstrcatするのでしょうか…
取りあえずこっちの方が絶対安全だね。
こっちの方が早いだろうし
0639デフォルトの名無しさんNGNG
>>636
まあ確かに%と同じ文字コードが含まれていたらだめだねぇ・・・・
ひとつずつstrcatするしかないんじゃない?
0640639NGNG
文字コードがEUC-JPだったら確かASCIIの%とはかぶらなかったような・・・・
0641デフォルトの名無しさんNGNG
>>604へ

>>607の補足

Ctrl+Z または Ctrl+D を入力することにより、OSがそれ以上の入力を受け付けなくなる。
入力が無くなったため、getchar が EOF を返す。
決して、Ctrl+Z または Ctrl+D そのものが C言語の EOF というわけではない。
0642639NGNG
ん?
%が含まれているとまずいのはフォーマット文字列だけだよね?
0643デフォルトの名無しさんNGNG
>>642
俺もそう思ったけど取りあえずstrcatは確実だから奨めた。
確認するの面倒かつコンパイラ無い。
0644デフォルトの名無しさんNGNG
>>636
キミは嘘を教えられています!要注意!
str0〜2の中に % が含まれていても全然普通に動作します。

それはそれとして、連結後の文字列が buf のサイズより長くならないように注意すれ。
0645639NGNG
>>644
だよね。
危ない危ない・・・間違うところだったよ。
0646637NGNG
良かった(;´ー`)無知をさらけ出したかと思ったよ。
0647デフォルトの名無しさんNGNG
sprintfする時に必要なバッファのサイズが実行してみるまで分からないってことがありますよね?
そういうときはどうするのが最も良いのでしょうか。

私は、tmpfileしてからそれにfprintfで書き込み、返ってきた値に1足した数分、mallocするという方法を
考えたのですが、はっきり言って無駄が多すぎると思うんです。
0648デフォルトの名無しさんNGNG
>>647
strncat()
0649デフォルトの名無しさんNGNG
>>648
それは単に連結するだけですよね・・・?
0650636NGNG
あ、、こうやれば漢字じゃなくても自分で確認できた…
sprintf(buf, "%s%s%s", "hoge", "%%", "hoge");
すいません、お騒がせしました。
(聞いたというのはたしかC系のスレで見たということなんですが、
どこだったかな…この過去スレか、Win32APIスレあたりだと思うんですが。)
0651デフォルトの名無しさんNGNG
>>648
そりゃまずい。例えば%18.16fなどで桁数がどばっと増える時のことを
>>647さんは言っているんじゃない?
0652デフォルトの名無しさんNGNG
_scprintfはダメなの?
0653デフォルトの名無しさんNGNG
>>647
> 私は、tmpfileしてからそれにfprintfで書き込み、返ってきた値に1足した数分、mallocする
の部分を、ファイルに書き込まずに初めからmallocすれば・・・?
0654デフォルトの名無しさんNGNG
>>653
mallocでいくら確保すればいいかわからないってことでしょ?
文字列だけなら簡単なんだけどね。
0655デフォルトの名無しさんNGNG
/dev/nullかNULに(v)fprintfで書き込めば
サイズくらい分かるだろう
0656652NGNG
_scprintfじゃダメなのか教えてくれよ(;´Д`)
確か前にも同じような話してたし、
もし_scprintfが移植性無いんなら使わないようにしなきゃジャン。
0657デフォルトの名無しさんNGNG
>>656
Windows95じゃダメみたいだけど
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrf_scprintf_scwprintf.asp
0658デフォルトの名無しさんNGNG
_で始まる名前の関数は*すべからく*環境依存の関数。
0659デフォルトの名無しさんNGNG
>>657
わぉ!マジでWin95が入ってない!
>>658
たとえば>>657のリンク先の互換性にANSIとあっても、
動かないことはありうるってことですね。

どちらもサンクス。
0660デフォルトの名無しさんNGNG
>>659
ANSI準拠の関数には_から始まるものはないだろ?
POSIX準拠の関数にもなさそう。
0661デフォルトの名無しさんNGNG
>>656
なんだよ_scprintfって。思い切りVC++専用じゃねえかよぅ。
0662デフォルトの名無しさんNGNG
アマチュア10年プロ10年、様々な環境下でC/C++でプログラムを書いてきたが
正直言って_scprintfは初めて聞いた。

なんだそりゃ
0663デフォルトの名無しさんNGNG
>>647
int size = snprintf(NULL, 0, "%d", i);
char* buf = malloc(size+1);
sprintf(buf, "%d", i);
free(buf);
0664デフォルトの名無しさんNGNG
_で始まる名前は処理系依存だとANSIで定められている。
よってANSIに対する互換性アリ、ってことか?(w
0665デフォルトの名無しさんNGNG
>>664
ANSI互換と書いてないものもある。
何を基準に決めてるのかはM$に聞いておくれ。
0666デフォルトの名無しさんNGNG
>>664
.NETのunmanageみたいなもんかね。
0667デフォルトの名無しさんNGNG
>>663
snprintfもANSI規格ではないが、Windows系では標準のようだ。でも
UNIXではどうなの?
0668デフォルトの名無しさんNGNG
>>667
ISOなんとかに準拠でしょ?
0669デフォルトの名無しさんNGNG
snprintf は C99 標準のライブラリ関数です。 gcc にもあります。
0670デフォルトの名無しさんNGNG
MFCとかはsprintfの結果文字列長は自力計算してるね。
0671デフォルトの名無しさんNGNG
>>669
C99・・・・・時期早々だな
0672デフォルトの名無しさんNGNG
sprintf()で用意するバッファのサイズについては
C FAQでも取り上げられていましたね。

あと、かんけいないが、すべからくの意味は
すべて*ではない*です>>658
0673デフォルトの名無しさんNGNG
時期尚早。。。
0674デフォルトの名無しさんNGNG
exit(0)てどういう意味ですか?
0675デフォルトの名無しさんNGNG
>>671
いいのだ!自分はそんなこと気にしないのだ!
snprintf も uint32_t も __func__ も使いまくり!
可変長配列も使いたいところだが、gccにしか実装されてなくて・・・
0676デフォルトの名無しさんNGNG
>>674
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/exit.3.html
0677674NGNG
>>676
ありがとうございます。でもなに書いてるのかわかりません。
0678デフォルトの名無しさんNGNG
コンパイラのgccとccって違うんですか?
0679デフォルトの名無しさんNGNG
>>677
正常にmain関数を終了した事と同じになると思われ。
0680デフォルトの名無しさんNGNG
どうでもいいけど
>>672
すべからくは*すべて*という意味で、
その後ろに否定の言葉を欲しがるだけでは?
0681デフォルトの名無しさんNGNG
このスレは*すべからく*の意味を考えるスレになりますた。
0682デフォルトの名無しさんNGNG
すべからく[須らく] 意味:ぜひとも
全てという字ではないよ。
0683デフォルトの名無しさんNGNG
では知ったか>>672と>>680はすべからく逝ってください。
0684デフォルトの名無しさんNGNG
このあたり、岸田自らが立脚する
「唯幻論」そのものという感じであるがもっとズサンな所は他にもある。
岸田はケンカについて、こう言う。
「日本人のけんかというのは、すべからく『怨みを晴らす』という形」。
意味不明の日本語だ。
岸田は「すべからく」を「すべて」の高級表現だと思っているのである。
「すべからく」は漢字で書けば「須らく」で、意味は「ぜひ(〜をせよ)」であり、
つまり「すべからず」の反対語である。
早大文学部卒、和光大数授(「教授」の誤植だろうな、単なる)の岸田センセは、
本書の中で日本語の動詞の語尾変化についても論じていらっしやるが、
「ク語法」(高校古文で習う)については御存知ないらしい。
否、センセだけを非難してはいけない。
管見の範囲では、評論家・上野昂志、同・川本三郎、演劇家・唐十郎、
詩人・鈴木志郎康などが「須らく」を「全て」の高級表現と思い込んで使っている。
この四人に共通することは、いわば反権威・反規範主義である。
そういった人たちが文法規範に無知であること自体はかまわないとしても、
「全て」と平易に言えばすむものを、高級表現だと思って誤用する心は
皇室と縁組したがる成金のようで、卑しい。
その卑しさがファシズムを生んだとするのが、単純化して言えば、
心理学者・フロムの説である。
そこまで見すえた時、初めて、個別科学である心理学が、説明原理を支える一柱となりうるのだ。
0685デフォルトの名無しさんNGNG
頭痛が痛いでふ。
0686デフォルトの名無しさんNGNG
頭が割れるようにかゆいでふ。
0687デフォルトの名無しさんNGNG
こ「岸「意岸「つ早・・・??
意味わからんぞ、ゴルァ!
0688デフォルトの名無しさんNGNG
うーむ、さすが言語スレだなぁ
と、スレ違いを受け入れてみるテスト。
0689デフォルトの名無しさんNGNG
もとい板違いを
0690デフォルトの名無しさんNGNG
わからないとき、ヘルプを読む癖はついてても
国語辞書を引く癖はついてないのかな?
0691デフォルトの名無しさんNGNG
英和は引くけど国語はねぇ。
なまじわかってるつもりなだけにはまると痛いよねぇ。
0692デフォルトの名無しさんNGNG
#define nelem(x) (sizeof(x)/sizeof ((x)[0])) って配列にしか使えないんですよね。 ポインタだと確か駄目ですよね。 どうも好きになれないんですが良く使われている物なんでしょうか。
0693デフォルトの名無しさんNGNG
#define nelem(x) (sizeof(x)/sizeof ((x)[0]))
って配列にしか使えないんですよね。
ポインタだと確か駄目ですよね。
どうも好きになれないんですが良く使われている物なんでしょうか。
0694デフォルトの名無しさんNGNG
#define lengthof(arr)
という形で使ってるけど、わりとよく使われるのでは?
0695デフォルトの名無しさんNGNG
初心者ですが、
getpwnam()とかで確保されたstruct passwdの領域って解放しなくていいの?
0696695NGNG
getpwnam()じゃなくてもいいんですが、内部的にstaticで記憶されてる
領域なので、使わなくなっても確保されたままになってしまいますよね。
これがメモリリークというか無駄使いになってしまうように思うんですが。
どうなんでしょう。
0697デフォルトの名無しさんNGNG
sizeof(x) って配列にしか使えないんですよね。 ポインタだと確か駄目ですよね。 どうも好きになれないんですが良く使われている物なんでしょうか。
0698デフォルトの名無しさんNGNG
>>697
ポインタでも使えるけど・・・・?
ところで、括弧をつけるのは型の大きさを得る時だけだよ。
0699デフォルトの名無しさんNGNG
>>696
メモリリークとは、動的に確保した領域を指すポインタが失われる事を指すから、
静的な領域ならメモリリークとはならないと思うよ。
0700デフォルトの名無しさんNGNG
printf("Hello world.\n") の "Hello world.\n"の部分は内部的にstaticで記憶されてる
領域なので、使わなくなっても確保されたままになってしまいますよね。
これがメモリリークというか無駄使いになってしまうように思うんですが。
どうなんでしょう。
0701デフォルトの名無しさんNGNG
>>697
int *p;とあって、

sizeof(p);
sizeof(*p);

の意味は違うよ。注意。
0702デフォルトの名無しさんNGNG
>>700
をいをい、それがメモリリークだとしたら、実際のプログラムのほとんどが
メモリリークだらけになってしまうじゃないか。
0703デフォルトの名無しさんNGNG
>>700
メモリリークは開放できなくなった領域のことでしょ?
mallocで得た領域へのポインタをfreeする前に見失うとか。
0704デフォルトの名無しさんNGNG
ところでなんで君らはマジレスしてるんですか?
0705697,700NGNG
俺はわかってるよ。頼むから、>>692や>>696に言ってくれよ。
0706デフォルトの名無しさんNGNG
>>700
それがどうしても無駄に感じるのなら、文字列はすべてファイルに入れておき、
必要になったらmallocした領域に読み込み、不要になったらすぐfreeするしか
ないぞ。それこそ時間の無駄。
0707デフォルトの名無しさんNGNG
このスレはピュアな心のやつが多いのか・・・
0708デフォルトの名無しさんNGNG
>>705
ああ、答える代わりに、揶揄していたのか。
0709デフォルトの名無しさんNGNG
>>705
質問してる人にその内容で質問返しするともっとわかりやすかったかも。
0710695NGNG
レスくれた皆さん、どうもです。
staticな領域の解放なんて考えなくていいんですね。
0711デフォルトの名無しさんNGNG
>>710
そうそう。でも一度も使わなかったら警告を出すコンパイラがあるから、
一度は使うようにね。
0712デフォルトの名無しさんNGNG
getch って何て読むんデスカ?
0713デフォルトの名無しさんNGNG
>>712
げっち
0714デフォルトの名無しさんNGNG
>>712
ゲットチ(藁
0715デフォルトの名無しさんNGNG
ゲチ
0716デフォルトの名無しさんNGNG
げっちゅう
0717わーいNGNG
>>716に一票
0718デフォルトの名無しさんNGNG
>>717はユンピョウ
0719デフォルトの名無しさんNGNG
むしろ>>716を無理矢理標準的な読み方として広めたい
0720デフォルトの名無しさんNGNG
2,3年世間とずれてるスレはここですか?
0721デフォルトの名無しさんNGNG
なんだかヴォエーな人を思い出した
0722デフォルトの名無しさんNGNG
void put(FILE * fp,char * data[])
{
char temp[MAX];
int i=0;


while((fscanf(fp,"%s",temp))!=EOF)
{
data[i]=malloc(strlen(temp)+1);

if(data[i])
{
strcpy(data[i],temp);
}

i++;

}

}
なぜmallocでエラー?
0723デフォルトの名無しさんNGNG
俺はstrlenでトんでるとおもうが。
0724デフォルトの名無しさんNGNG
test.o(.text+0x26df): undefined reference to `sqrt'
collect2: ld returned 1 exit status

gcc でコンパイラオプションを
-O2
にするとリンクで上のエラーが出て、
-O3
だと成功します。理由はなんでしょうか?
0725デフォルトの名無しさんNGNG
画面に出力した文字って消せる?
一文字だけ。
0726デフォルトの名無しさんNGNG
*data[] -> **data
だとすると、

*data[i] = malloc();//つぅかキャストしてやれよ。
なのかなぁ?
0727デフォルトの名無しさんNGNG
スレ違いのような気もするが

>>724
sqrt()の返り値を使っていない、とか。
あるいはgcc -O3だとsqrt()が定数の場合はコンパイル時に
解の定数に置き換えている、とか。
0728デフォルトの名無しさんNGNG
>>727 レスありがとうございます。
計算部分は
bunsan = sum / (term -1);
hensa = sqrt(bunsan);
こんな感じなので定数に最適化はされないはずなのですが。
もう少し色々実験してみます。
0729デフォルトの名無しさんNGNG
main()
{
char a[10]="ohayou";
char *pa;

pa="oha";

printf("%s",a);
printf("%s",pa);
}
はできるのに

main()
{
char b[10];

b="ohayou";

printf("%s",b);
}
はできないのはなんでですか?
0730デフォルトの名無しさんNGNG
>>729
だってアレ初期化時のみに有効だし。
初期化終わればただのBYTE型の配列と等価。
0731  NGNG
プログラムする時に口には出さないけど頭の中で「printf」や「int」などって何て読んでますか?
0732デフォルトの名無しさんNGNG
アホか・・・
0733デフォルトの名無しさんNGNG
>>731
ぷりんとふ
いんと

口に出すときは

ぷりんとえふ
いんと
0734デフォルトの名無しさんNGNG
intっていんと以外に読み方あるのか?汗
0735デフォルトの名無しさんNGNG
いんてじゃ〜
0736デフォルトの名無しさんNGNG
画面に出力した文字って消せる?
一文字だけ。
0737デフォルトの名無しさんNGNG
>>734
>>731の周り(もしくは本人)に

「ここのアイエヌティー変数が変なんだよ。ここをアイエヌティーのポインタ変数にしなくちゃ。」

と調子こいているバカがいるのでしょう。
0738デフォルトの名無しさんNGNG
>>729
char a[]="oha";は、char a[]={'o','h','a','\0'};を手っ取り早く書くための特例。
0739デフォルトの名無しさんNGNG
>>734
インテジャー
0740デフォルトの名無しさんNGNG
>>737
インテジャーと読む人がいると思うけど・・・
俺もたまにそう言う。
0741デフォルトの名無しさんNGNG
>>736
putchar('\b');
できるとは限らないけど。
0742デフォルトの名無しさんNGNG
イントでもインテジャでもどっちでもいいだろ。好きな方で読め。
0743729NGNG
>>730
>>738
ええと、char a[10]="ohayou"; ていうのが特例であって
pa="oha"; やb="ohayou"; は
配列の先頭アドレスを代入しているという事ですか?
bはポインタじゃないからできないと。

""を使うと配列の宣言なしに配列が使えるわけですか?
0744デフォルトの名無しさんNGNG
>>743
char型の配列は主として文字列を表すのに使うから、配列宣言時の初期化のみ、
="aaa"が={'a','a','a','\0'}と同じものだと見なされるの。あくまでも特例。

それ以外の時は文字列リテラルの先頭アドレスを代入することになるので、
配列名には代入できない。
0745729NGNG
>>744
ありがとうございました。
もっと勉強します。
0746744NGNG
代入したかったらstrcpyを使うこと。
0747デフォルトの名無しさんNGNG
<=>
0748デフォルトの名無しさんNGNG
>>722
一行の文字数がMAX - 1文字を超えているとか。その場合は
fgets(temp, MAX, fp);で。
0749デフォルトの名無しさんNGNG
>>736
改行してなかったら、printf("\b \b");
でいけると思う。
0750デフォルトの名無しさんNGNG
i = i++; は「未定義」らしいですが、「未定義」というのは、例えばこの文に対して abort を呼び出すようなコードを生成しても構わないってことで解釈合ってるでしょうか。
0751750NGNG
・・・ふと思ったんですが、どうせならコンパイル時にエラーにしちゃったらダメなんでしょうか?
0752デフォルトの名無しさんNGNG
>>750
i = i;
i = i + 1;

って解釈されないの?それ。
0753デフォルトの名無しさんNGNG
>>752
そうとは限らない。=演算子の右辺と左辺はどちらを先に評価しても構わない
から、i = i;となってもよい。
0754デフォルトの名無しさんNGNG
>>736
printf("\t\b\b");
0755デフォルトの名無しさんNGNG
>>750
OSが壊れたりHDDから煙が吹いたりする処理系を出したとしても
とりあえずANSI準拠、K&R準拠をうたうことはできます。
0756デフォルトの名無しさんNGNG
Regetなどの最近のダウンローダーのように、レジュームや、ファイルの分割ダウンロードによる高速化について
書かれた書籍や、Webサイトありませんか?
0757デフォルトの名無しさんNGNG
>>756
なんでここで聞くんじゃーー!!
0758デフォルトの名無しさんNGNG
>>756
>Regetなどの最近のダウンローダーのように、レジュームや、ファイルの分割ダウンロードによる高速化について

曲がりなりにもプログラマなら推測できるだろ。
0759デフォルトの名無しさんNGNG
分割すると速くなるのだろうか・・・・
ウェブサイトでも時々無意味に画像をスライスしているところをみかけるが。
0760デフォルトの名無しさんNGNG
c言語でcgiプログラムを作るのはどうでしょうか?
メリット・デメリットなどがありましたら教えてください。
0761デフォルトの名無しさんNGNG
>>760
メリット:高速。
デメリット:文字列操作が大変。可変長文字列対応してないし。
0762デフォルトの名無しさんNGNG
>>760
スクリプト言語に比べてインタープリタを起動しないのでその分の負荷は減る。
0763デフォルトの名無しさんNGNG
>>759
サーバがこちらの通信速度未満に帯域制限している
場合有利。
0764デフォルトの名無しさんNGNG
>>763
ああ、なるほどね。
0765デフォルトの名無しさんNGNG
この前Cでチャットを作ってみたけど、確かに速かった。
でもそれは機能が少ないからのような気がする・・・・
0766デフォルトの名無しさんNGNG
つか未だにCのcgiに非対応な鯖もあるので注意
0767デフォルトの名無しさんNGNG
>>766
無料ならほとんど使えない。
0768767NGNG
鯖と全く同じ環境をつくって、ローカルでコンパイルしてからアップすれば使えるかもしれんが・・・・
0769デフォルトの名無しさんNGNG
xreaはLinuxでコンパイル済み(これも曖昧だが)のファイルが使える。
とくとくはtelnetでcc使えたはず。
0770デフォルトの名無しさんNGNG
>>766
Cだとシステムの弱点をついたウィルスを簡単に作れるので、鯖会社も
嫌がる罠。
0771デフォルトの名無しさんNGNG
>>770
というか、コマンドを実行できるようにするのが嫌なんでしょ。
コンパイルにはコマンド実行が必須だからねぇ。。
0772デフォルトの名無しさんNGNG
>>771
adminの権限を乗っ取ったらやりたい放題だもんね。
0773デフォルトの名無しさんNGNG
>>772
頼む、rootと言ってくれ。。。
0774デフォルトの名無しさんNGNG
ルート16ターボ
0775デフォルトの名無しさんNGNG
>>773
UNIX鯖とは限らないし〜と言ってみるテスト。
Win鯖なんか使いたくないけどな。
0776デフォルトの名無しさんNGNG
則巻ターボ
0777デフォルトの名無しさんNGNG
fw3
0778デフォルトの名無しさんNGNG
bcc32 languageC.cpp glibw32.lib
0779デフォルトの名無しさんNGNG
すいません教えてください。
バイナリファイルにデータを入力する際に
ソートして入れたいんですが(比較するのは入っているデータ
バイナリファイル上でひとつずつ比較していくのと
比較するデータとされるデータをメモリに格納してから
計算するのではどちらが効率的なのでしょうか?

0780デフォルトの名無しさんNGNG
>>779
ファイル + に 

だと出力するものだと思う。
0781デフォルトの名無しさんNGNG
比較しながらメモリに格納してそのまま書き出すのが早いと思う
0782やばいっすよ!!NGNG
整数を3つ入力→数の小さい順に出力
これはif文を使って作るものなんですか??
0783デフォルトの名無しさんNGNG
>>782
つぅかお前は誰だ?
0784やばいっすよ!!NGNG
>>783
明日プログラムのテストを控えた者です。工房です。
0785デフォルトの名無しさんNGNG
ならネットで遊んでないで勉強しなさい。
0786デフォルトの名無しさんNGNG
>>782
そんなお前に大ヒントだ。

クイックソートと言うキーワードで検索だ!
これで友達よりlogx分速いプログラムが書けるぞ!
0787デフォルトの名無しさんNGNG
>>779
メモリ領域があまりとれないなら、データを順方向に探索するだけでソート
できる、マージソート法というのがあります。一時的にランファイルという
作業ファイルを作成する必要がありますが、ほとんどメモリを食わずに
クイックソートと同じオーダーでソートできます。

ただし、ファイルの入出力を伴うので、ファイルキャッシュが効かないと激遅
になりますが。
0788デフォルトの名無しさんNGNG
まさに牛刀をもって鶏を割くってやつだな(笑)
0789デフォルトの名無しさんNGNG
別にメモリに作業領域を持ってもいいと思うんだが。
それから、平均的にクイックソートより遅いです
唯一の利点は安定である事だけ。

0790デフォルトの名無しさんNGNG
>整数を3つ入力→数の小さい順に出力
入力時に並び換えろ
0791やばいっすよ!!NGNG
>>785
はい。頑張りまっす。
>>786
クイックソートって良さげっす!!テスト終わったらじっくり勉強したい。

・・・・・ということで
0792やばいっすよ!!NGNG
>>790
それって詐欺ではないですか・・??
0793デフォルトの名無しさんNGNG
>>792
アホか。基本的な事だぞ。
0794デフォルトの名無しさんNGNG
>>789
もちろんメモリに全部読み込んでqsortかけるのが多分一番速いですね。
0795ななしNGNG
>>782
3行で書かないと減点される罠
0796COMPILERNGNG
16ビットのDOS汎用コンパイラの入手方法を教えてください。
0797デフォルトの名無しさんNGNG
>>796
google
0798デフォルトの名無しさんNGNG
LSI-Cを検索
0799やばいっすよ!!NGNG
ぐおおおおおおおおおおおおお!!!!!!!!!!!!まじでやばすっぎる!!!!!!!
プログラムは高得点あきらめて英語じゃ。
ということで世話になりました。テスト終わったらまた来ます。
0800デフォルトの名無しさんNGNG
がんばれ
0801デフォルトの名無しさんNGNG
つーか、そんなのは小学生のときにすでにやってたけど
当時はテストの点につながらなかったからなぁ。

あーでもあれか。今はテストの点につながるから
逆にプログラミングが苦痛になってたかも。
0802COMPILERNGNG
>デフォルトの名無しさん

Micosoft C コンパイラの入手方法があれば教えてください。
0803デフォルトの名無しさんNGNG
洒落だったんだが。。。 <クイックソート
そんな3つでクイックソートなんてしても得られるのはオーバーヘッドだけ・・・。
0804デフォルトの名無しさんNGNG
骨董屋で買うとか
夢の島をひたすら探索するとか
0805デフォルトの名無しさんNGNG
M$の16ビットのコンパイラってまだあったっけ?
MS-C7.0('94)あたりで終わってたような。
0806デフォルトの名無しさんNGNG
>>802
持ってるけど君とは連絡手段が無いので無理だな。
開き直ってMXとかで探せや。
0807デフォルトの名無しさんNGNG
VC1.52じゃなかったか?<最新
しかし、こんな骨董品エムエクースでも落ちてないと思われ
0808デフォルトの名無しさんNGNG
>>805
M$は諦めてBC++Suiteでも拾いなされ。BC++5.02Jは16ビット対応だぞよ。
0809デフォルトの名無しさんNGNG
LSICでいいじゃん
0810デフォルトの名無しさん NGNG
C初心者です。
CでRDBのプログラム作ってます。
そこで、射影はできたんですけど選択、結合が作れません。
助言ください!よろしくおねがいします。
0811デフォルトの名無しさんNGNG
質問はageましょう。
0812デフォルトの名無しさんNGNG
>>802
WinME DDK を落としてくれば 16bit な MS-C が手に入る。

というか Micosoft って何よ。
0813デフォルトの名無しさんNGNG
バージョンは?
0814612NGNG
みなさん、ありがとうございます。
今のところ最高の目標としては「P/ECE」のソフトを作りたいと思ってます。
皆さんの助言をもとに頑張ります。
0815デフォルトの名無しさんNGNG
P/ECEならLSICでもいいと思うんだが
Digital Mars
Watcom
も16bitのコンパイラあるし。
それから米BorlandのサイトにTurboC 2.01が落ちてるよ
ファイル名はTC201.zipかな
0816デフォルトの名無しさんNGNG
WinME DDK 同梱の cl.exe のバージョンは 8.00x と表示された。
0817デフォルトの名無しさんNGNG
巫女ソフトage
0818デフォルトの名無しさんNGNG
ポインタのポインタの参照渡しってのちょっとわからないんです。
なんかコツのようなものってあるんですか?
0819デフォルトの名無しさんNGNG
strtolの第二引数のように使えば
0820デフォルトの名無しさんNGNG
818
呼び出し側にポインタを返すときつかう。
(関数へのポインタとかstaticな領域とかOSが割り当てた領域など
アドレス不変なポインタを返す)
0821_NGNG
凡用系とオープン系の違いってなんですか?
これらの言葉意味って人によってまちまちですよね。
0822デフォルトの名無しさんNGNG
>>821
ぼんようじゃない。汎用。は・ん・よ・う
0823_NGNG
すみません・・・
汎用系でしたね。

特定のプログラムを組み込んで、ソフトを作ることですか?
0824デフォルトの名無しさんNGNG
Cすれでホスト系聞くなよ
0825デフォルトの名無しさんNGNG
>>824
じゃあどこで聞けばいいんだよ!
個簿留スレか?
0826デフォルトの名無しさんNGNG
そもそも言語スレで聞くべきか?
0827825NGNG
ちなみにあたいは>>821じゃないから。
0828デフォルトの名無しさんNGNG
情シ板に逝こう
ム板なら初心者質問スレぐらいか
0829デフォルトの名無しさんNGNG
gooooooooooooooooooogle!!
0830デフォルトの名無しさんNGNG
汎用系→汎用機。
オープン系→UNIX、Linux、Windows
0831デフォルトの名無しさんNGNG
>>825
逆ギレ?
0832デフォルトの名無しさんNGNG
char mes[256];
int num=100;

このnumをmesに文字列としていれたいのですが,一番適切な方法とはどういうのでしょうか?
0833デフォルトの名無しさんNGNG
boost::lexical_cast<>()
0834デフォルトの名無しさんNGNG
832sprintf

833ヲイヲイ
0835デフォルトの名無しさんNGNG
>>832
#include <stdio.h>
sprintf(mes,"%d",num);
0836 NGNG
Hyouji( 3, Onigiri.uni, 26, 21 );
Hyouji( 3, Onigiri.irura, 62, 21 );
Hyouji( 3, Onigiri.kaiware, 12, 21 );
Hyouji( 3, Onigiri.ninnniku, 1, 21 );
こういう場合
Hyouji( 3, Onigiri.uni, 26, 21 );
Hyouji( 3, Onigiri.irura, 62, 21 );
Hyouji( 3, Onigiri.kaiware, 12, 21 );
Hyouji( 3, Onigiri.ninnniku, 1, 21 );
こうしますか?
0837デフォルトの名無しさんNGNG
>>836
ウニおにぎりとは贅沢な!!!
0838デフォルトの名無しさんNGNG
>>836
どう違うの?(^_^;)
0839 NGNG
Hyouji( 3, Onigiri.uni, 26, 21 );
Hyouji( 3, Onigiri.irura, 62, 21 );
Hyouji( 3, Onigiri.kaiware, 12, 21 );
Hyouji( 3, Onigiri.ninnniku, 1, 21 );
こういう場合
Hyouji( 3, Onigiri.uni,   26, 21 );
Hyouji( 3, Onigiri.irura,  62, 21 );
Hyouji( 3, Onigiri.kaiware, 12, 21 );
Hyouji( 3, Onigiri.ninnniku, 1, 21 );
こうしますか?
0840デフォルトの名無しさんNGNG
>838
ワラタ
0841デフォルトの名無しさんNGNG
なんだ。ただの荒らしかよ。
0842838NGNG
あぁ、、半角スペースが一つにまとめられていたのね・・・・
私はしないな。
0843デフォルトの名無しさんNGNG
名前のない構造体を関数に渡すなにかよい、できれば移植性のある方法を教えてください。
0844デフォルトの名無しさんNGNG
>>843
名前つけるかtypedefしろよ(ワラ
なんで名前をつけないんだよ(ワラ
0845デフォルトの名無しさんNGNG
>>839
なんとなくわかった。
引数の列をそろえたいのね
0846デフォルトの名無しさんNGNG
名前を付けると愛着がわいちゃって誰にも渡したくないじゃないですか
0847デフォルトの名無しさんNGNG
>>844
 構造体がイパーイあるからです
 よろしくおねがいします
0848デフォルトの名無しさんNGNG
>839
いかに無駄な努力かということがよくわかるな。
>843
名前くらいつけてやれ。減るものじゃないし。
0849デフォルトの名無しさんNGNG
>>843は幼少の頃、孤児院にいたんだろ。
んで、名前が無い。そうなんだろ?
ネタは読めてるっつーの。
0850デフォルトの名無しさんNGNG
>>843
union NAMAE{
struct{
int i;
char str[2222];
} hensu;
};

これでどうだ。
共用体の中に入れているから関数に渡せるぞ。
0851デフォルトの名無しさんNGNG
>>843
void *で渡して、型キャストさせる。
0852デフォルトの名無しさんNGNG
>>851
型名は?
0853デフォルトの名無しさんNGNG
typedef
struct {
 char type_name[0xffffffff];
 void* p_struct;
} Type;

これでどうだ?
0854デフォルトの名無しさんNGNG
>>847
俺もさ、関数が1000個とか2000個とかあると、こいつらにいちいち名前つけずに
すめばなーと思うことはあるよ。でもな、世の中そんなにうまくできてねーんだ。
名前つけなきゃ関数を区別する手段がないんだよ。
構造体だって同じことだ。
名前自動生成ツールでも作るなり、連番で名前付けるなりしてがんがれ。

なお、英和辞典の見出し語を頭から順番に使ってゆくという方法は、
予約語等とぶつかる可能性があるのでおすすめできない。
0855デフォルトの名無しさんNGNG
lambda
0856デフォルトの名無しさんNGNG
>>854
関数ならかんすうポインタでいいじゃん。
(*func[2000])();
0857 NGNG
結局 名前はいるじゃん
0858デフォルトの名無しさんNGNG
マシン語埋め込めば名前は要らないと思われ
0859デフォルトの名無しさんNGNG
>>854
「xより大きいなら非ゼロを返す関数」
(xは実行時に決まる)とか、
「行のn番目のフィールドを比較する関数」
(nは実行時に決まる)とか、動的に関数を
作りたいことがあるけど、Cなら名前つけざ
るを得ないなー。

関数型言語なら無名関数が作れるし、
オブジェクト指向言語ならインスタン
スを使えば良いけど。
0860デフォルトの名無しさんNGNG
ttp://chizuru.bunkasha.co.jp/~yui/feb02.html#0226_3

「Cでは NULL == (void *)0 とは限らない」だそうですが、そうなんですか?
0861843NGNG
>>858
じつは僕もハナからそれがいちばん強力な解だとは思いますが移植性が限り無くゼロなのでためらいます。ふと、みんなはどう考えるかと思って。
すみませんヒマつぶしノ質問だとおもって忘れてください>答えてくれたひとたち
0862デフォルトの名無しさんNGNG
variantみたいなのにしてもいいが、
vtblっぽいのもたせて全部オブジェクトにするって手もある。

メンバを動的に追加する(この場合メンバに名前かIDをつける必要があるが)とか、
DBにデータを全部もたせてアクセスメソッドだけを提供するのも、有りだとは思う。

マクロを多用すれば品雑・定型的な処理も楽に書ける場合があるしね。
数が多いとはいっても、それぞれに意味はあるんだろう?
0863342の初心者NGNG
この間は皆様にお世話になりました。
またまた質問です。
下のようなプログラムを作ってキーボードの入力をアスキーコードに変換して確認してみました。
半角英数記号はいいのですが、バックスペースやCtl + Cのようなものはどのようにして扱われているのでしょう?
下の場合、右矢印→もバックスペースも8として出力されてしまいます。

#include <stdio.h>

main()
{
int i;

for(;;) {
i = getch();
printf("%d\n", i);
}
}
0864デフォルトの名無しさんNGNG
>>860
過去ログ読んでくれ。
3スレに一度はその手の論争が起きてるから。
0865デフォルトの名無しさんNGNG
>>849
誹謀中傷になってて笑えない。
0866デフォルトの名無しさんNGNG
>>843
 構造体を malloc で作って、そのポインタを渡すのは?
 参照渡しではなくなってしまうけど、渡せるよ。

 でも、移植性とか可読性考えると、無理にそんな方法取るのは馬鹿かと・・・アホかと・・・(^^;
 ネーミングは本当に大変だけど、考えてあげようよ?
0867デフォルトの名無しさんNGNG
>>866
じゃあ私のソースを見ても笑わないでね(;_;)
0868デフォルトの名無しさんNGNG
>>863
>>863
getchってなんじゃ〜
getcharだろ〜


(getchはMS-DOS専用の文字入力待機関数じゃなかった?入力した文字は読みとらなかったような・・・・)
0869デフォルトの名無しさんNGNG
>>868
Win32でもサポートはされている。移植性は無いが。
0870デフォルトの名無しさんNGNG
>>863
cursesにもgetchあるよ〜ん(by UNIX

# ローカルっちゃぁローカルかもしれんけどな
0871870NGNG
あうち・・・>>863向けじゃくて>>868向けね(>>870)
寝ぼけてもうた:-P
0872869NGNG
>>870
cursesかー。そりゃ知らんかった。FDcloneだと
・ttyからのread(2)でgetch()
・stdinのselect(2)でkbhit()
とかやってたから自前で実装するしか無いのかと思ってた。
0873デフォルトの名無しさんNGNG
>>872
cursesのgetchは端末から文字を得る関数
>>868のそれとは振る舞いは別物
呼び名が一緒ってだけですな
0874デフォルトの名無しさんNGNG
>>873
Windowsとかだとgetcheだよね?
0875デフォルトの名無しさんNGNG
OpenFileMappingでマッピングしたデータは
fgetとかfreadとか利用して読んだりできますか?
0876デフォルトの名無しさんNGNG
>>875
何のためのマッピングだと小一時間ほど問いたい。
0877デフォルトの名無しさんNGNG
>>874
そうですね
気になってヘルプ引いたらgetchとgetcheは近似なようです
getch - キーボードから一文字読み込む エコーバック無し
getche - キーボードから一文字読み込む エコーバック有り
注・両方ともWindows conio関数のはなしです
0878デフォルトの名無しさんNGNG
すいません、Cはじめてまだ数ヶ月の若造です。

MS-DOS で、キーボードからの入力が一定時間ないと
終了するプログラムを作成したいのですが、やりかたが分かりません。
どなたか分かる方、教えていただけないでしょうか?
0879デフォルトの名無しさんNGNG
int型をchar型に変換してchar型の変数に入れたいんですが
int p = 1;
char s;
s = (char)p;
上みたいなことは出来ませんでした。
atoiのようなint型をchar型に変換する関数ってないのでしょうか?
0880デフォルトの名無しさんNGNG
>>879
別にそのコードで出来るんじゃない?
0881デフォルトの名無しさんNGNG
ひょっとして、
s = p + '0';
みたいなことがやりたいのか……?
0882デフォルトの名無しさんNGNG
>>879
C++使え。
s = char (p);
ってな具合にint型をchar型に変換するchar()関数がある。
0883879NGNG
構造体のメンバに入れたいんですが
typedef struct{
char code[15];
char name[30];
}syouhin;

syouhin data[50];

↓main関数外にて
int i;
for(i=0;i<50;i++){
(data + i)->code[0] = ()i;
}
大体やりたいこと書くとこんな幹事です。
構造体だからまずいとかですかね?
0884879NGNG
>>882
C++は使えないんですよ。
事情が合ってLinuxでC言語使ってmす。
もしかしてLinux板で聞けってやつですか?
0885デフォルトの名無しさんNGNG
ハァ?
0886デフォルトの名無しさんNGNG
>>879
つーかできねーって言い張るんならその根拠(エラー、出力内容とか)を説明しろよ。
0887256NGNG
sprintf(data[i].code, "%d", i);
だろ。↑文字列が閉じてない。
0888デフォルトの名無しさんNGNG
typedef struct {
double re;
double im;
} complex;

complex SUMofCOMP(x,y)
complex x,y;
{
complex t;
t.re = x.re + y.re;
t.im = x.im + y.im;
return(t);
}

main()
{
double a,b;
complex c1,c2,c3;
scanf("%f%f",&c1.re,&c1.im);
scanf("%f%f",&c2.re,&c2.im);

c3 = SUMofCOMP(c1,c2);
printf("%f,%f\n",c3.re,c3.im);
}

これを実行して適当に値を入力すると
Floating point exception (core dumped)
が、返って来る。

なぜじゃ・・・
0889デフォルトの名無しさんNGNG
doubleに%fって問題ないの?
0890888NGNG
あ。
%lfにすればできるかも。

鬱死
0891デフォルトの名無しさんNGNG
complex SUMofCOMP(x,y)
complex x,y;
{
...
}
懐かしいような気が
0892デフォルトの名無しさんNGNG
>>879
>>887がほしかった答ならば、iを10進表記した文字列を取得するには?
と、きけばよかったようですな。
元の質問をそのまま素直に解釈するとたしかにああいう答が返ってくる。

ところで>>882のは関数じゃなくて、C++のキャストの記述法だったと思うが?もちろんC++でも従来の記述法も可能。
0893デフォルトの名無しさんNGNG
>>892
よく分からんのだけど>>882はcharのコンストラクタじゃないかな
0894デフォルトの名無しさんNGNG
型変換関数
0895デフォルトの名無しさんNGNG
typecast?
0896デフォルトの名無しさんNGNG
>>893
ただの cast。
0897デフォルトの名無しさんNGNG
C言語の標準入力のバッファを直接参照できるような
関数ないし手段がありましたらぜひとも教えてください。
0898デフォルトの名無しさんNGNG
>>897
stdin開いてメモリマッピング。
0899デフォルトの名無しさんNGNG
>>898
そういえば、stdin とかは FILE 構造体でしたね。
ありがとうございます。
0900デフォルトの名無しさんNGNG
(・∀・)900!
今日中に1000に逝くぞ!
0901デフォルトの名無しさんNGNG
ともっち!
0902デフォルトの名無しさんNGNG
ともっちのこと大好き!
0903デフォルトの名無しさん NGNG
ともっちって確か絵を書くのが好きなんだよね。
筆でかり裏の辺りをちょこちょことしたりして、
いろりろ遊びたい。。
0904デフォルトの名無しさんNGNG
お前ら来るスレ間違ってるよ(w
0905デフォルトの名無しさんNGNG
仕事中なのに妄想だけがどんどんいっちゃうよー
0906デフォルトの名無しさんNGNG
ともっちの棒、おいしそう!
ともっちの棒、ぺろぺろしたい。
0907デフォルトの名無しさんNGNG
>>904
どうせ1000ゲットまでいいかげんな書き込みしかねぇんだろうが
0908デフォルトの名無しさんNGNG
ともっち!はずかしがらなくていいんだよ!
ともっちにきたないところなんてないんだから。
おじさんがともっちのすみからすみまでぺろぺろしてあげるからね。
0909デフォルトの名無しさんNGNG
ぺろぺろ!
0910デフォルトの名無しさんNGNG
かわいい男子高校生
0911デフォルトの名無しさんNGNG
>>906>>908
きもっ!
0912デフォルトの名無しさんNGNG
純粋でちょっと恥ずかしがり屋な男子高校生、ともっち。
0913デフォルトの名無しさんNGNG
次スレもともっちでよろしこ!
0914デフォルトの名無しさんNGNG
>>911
きもいとかいうな!
ともっちのことを愛している気持ちを純粋に表現している
だけじゃないか!
0915デフォルトの名無しさんNGNG
>>913
激しく同意。
0916デフォルトの名無しさんNGNG
なんかこうしてるとともっちを大勢で回してるような
気分になれるから不思議だ。。
0917デフォルトの名無しさんNGNG
>>916
一度みんなでそういうことを本当に
やってみたいね。
0918ともっちNGNG
どうもはじめまして、ともっちといいます。
このたび僕はプログラミング言語というのを覚えてゲームでも
作ってみようかと思ったんですけど何をすればいいのか全く分かりません。
いろんな言語があるらしいんですが何かおすすめはアリマセンか?
それからよろしければ一から教えてもらえないでしょうか



0919デフォルトの名無しさんNGNG
↑
こっちが本当のともっち!
0920デフォルトの名無しさんNGNG
おれは世間一般じゃノンケで通してるけど、
やっぱり男の子が好きなんだよね。
日頃のたまりに溜まった願望がこうして出てきちゃう。
ともっちは酷い人です・・・
0921デフォルトの名無しさんNGNG
1がうかつにともっちなんか使うから・・・
0922デフォルトの名無しさんNGNG
高校生って、ティムポの方はしっかりと大人なんだけど、
外見や考え方にはまだ幼さがのこっているよね。
そういうあどけなさがだーい好き!
0923デフォルトの名無しさんNGNG
>>1
次スレも使ってください。
「ともっち」というハンドル。
0924デフォルトの名無しさんNGNG
ハァハァ
0925デフォルトの名無しさんNGNG
ゲイはちゃんとルールを守ります。
スレをのっとることはあるかもしれませんが、
スレを荒らすことはやりません。
なのでこんどもちゃんと「ともっち」をしようしてくださいね。
0926デフォルトの名無しさんNGNG
ともっちたん!
0927デフォルトの名無しさんNGNG
ゲイっていい人だったんだな。
一方で炉利は全く持って駄目だな。
0928デフォルトの名無しさんNGNG
とこで、男子高校生と知り合うにはどうしたらいいんだろう・・・
ともっちのことを考えてたら自分がゲイであることを自覚
しだしたんだけど。やっぱりともっちみたいなかわいいこがいいな。
0929デフォルトの名無しさんNGNG
カワイイ男子高校生、求む!
0930デフォルトの名無しさんNGNG
男子校にはどういうきっかけをつくれば入り込むことができるのかなぁ。
0931デフォルトの名無しさんNGNG
ともっち自身がダメならだれか友達紹介してくれないかな
0932デフォルトの名無しさんNGNG
>>931
俺は友達のほうよりともっち自身じゃなきゃだめだ!!
0933デフォルトの名無しさんNGNG
次スレ
0934デフォルトの名無しさんNGNG
>>933
URLは?
0935デフォルトの名無しさんNGNG
ともっちは酷い人です・・・
0936デフォルトの名無しさんNGNG
立てれ
0937デフォルトの名無しさんNGNG
その気にさせといて独りおれをおいていくなんて
0938デフォルトの名無しさんNGNG
あと、関係ないんだけど同性愛板、ブラクラとグロ多すぎ
高校生関連の書き込みは殆どそうじゃん!やれやれ
0939デフォルトの名無しさんNGNG
>>936
俺がたてていいのなら、ゲイに染めたやつを立てるぞ!
0940デフォルトの名無しさんNGNG
>>938
だからこっちでもゲイようのスレの需要があるんだよ。
0941デフォルトの名無しさんNGNG
お前ら、間違ってもタイーホだけは気をつけてください
0942デフォルトの名無しさんNGNG
やっぱりいるよね。
プログラム板に、ゲイ用のスレ!!!
0943デフォルトの名無しさんNGNG
>>941
ともっちの話で盛り上がっているときに
そういう水を差す話は止めてください。
そういうのは別のところでやってください。
0944デフォルトの名無しさんNGNG
【カワイイ男子高校生】お兄さんたちが優しく教えるC言語スレ!【専用】

こんなのでどうでしょうか?
0945デフォルトの名無しさんNGNG
カワイイ童貞の男子高校生専用の方がいいかな?
0946デフォルトの名無しさんNGNG
駄スレの再利用ならまだしも
普通のスレを乗っ取るのはやめてくれよ。
0947デフォルトの名無しさんNGNG
>>946
そうね、少し行き過ぎたかも、反省します
0948デフォルトの名無しさんNGNG
gccリリース間近
0949デフォルトの名無しさんNGNG
次スレは950が
0950デフォルトの名無しさんNGNG
gcc3.1リリース間近。ウレシー
0951デフォルトの名無しさんNGNG
>>946
>>947
このスレはもう次スレがたってしまっているので、
ゲイの書き込みをしたところで、乗っ取りにはなりません。
0952C言語NGNG
分割コンパイル、make使い始めたのですが
外部変数の定義、再定義ファイルをそれぞれ作ってインクルードするのと
#ifndefを使って再定義をするのとどっちがかっこいいですか
プロフェッショナルな方の意見をお聞かせ下さい
初心者の質問で恐縮です。
0953デフォルトの名無しさんNGNG
>>952
再定義?
変数の定義は一度しか出来ません。
宣言と定義のことだったらC FAQ嫁姑。
0954C言語NGNG
>>953
外部変数dす
ひとつのファイルには
#define MAX 40
float A[MAX];
ってやって残りのファイルには
#define MAX 40
extern float A[MAX];
ってやりたいってことです。
0955デフォルトの名無しさんNGNG
ヘッダファイルに extern float A[MAX]; と書き、それをインクルードする .c ファイルのひとつに float A[MAX]; と書く。
0956C言語NGNG
>>955
#ifndefを使うのとどっちがオススメですか?
0957デフォルトの名無しさんNGNG
>>956
ゴルァ!!
0958デフォルトの名無しさんNGNG
>>956
どう使うつもりなの?
0959C言語NGNG
>>957
わかりません
0960C言語NGNG
>>958
こんな感じです
- sample.h -
#ifndef _sample_h
#define _sample_h
int x;
#else
extern int x;
#endief
0961デフォルトの名無しさんNGNG
>>960
ヘッダーファイルの中じゃなくて、.cファイルの中で宣言しろって。
0962C言語NGNG
>>961
わかりました、そうします。
ありがとうございました。
0963デフォルトの名無しさんNGNG
#ifdef EXTRN
#define EXTERN extern
#else
#define EXTERN
#endif

とやり、すべての外部変数にEXTERNとつけておく。
main()のあるファイル(本当はどれか一つならよいが)に
#define EXTRN
と書く。
0964デフォルトの名無しさんNGNG
今日はじめて関数ポインタというものを知ったのですが、こりゃやみつきになりますね!
0965デフォルトの名無しさんNGNG
>>964
C言語でもクラスごっこが出来る。w
しかし、時代は関数ポインタを異端だとし始めている罠。
0966デフォルトの名無しさんNGNG
あと、C++初めて2年になるのですが、今日初めてexternの効果を知りました!こりゃ感動しますね!
いままでの僕がアホみたいに思えました!なにしろ別のファイルから別のファイルの変数にアクセスする方法を知らなかったのですから!
クラスから他のクラスを参照するときなんて、いちいちSetメソッド作ってポインタをメンバに保存してたんですよ!
あーもう!
0967デフォルトの名無しさんNGNG
>>964
その勢いでC++の仮想関数を学習してしまうとよい罠。
0968デフォルトの名無しさんNGNG
>>966
一歩間違うと収集付かなくなるぞ。
0969デフォルトの名無しさんNGNG
>>967
割り込みベクタみたいなテーブルがあるんでしたっけ?確か。
0970デフォルトの名無しさんNGNG
>967
いやあ。。オブジェクト指向はほとんど学習しましたよ。当然ポリモも。しかし本当に僕は基本的なところができてなかったんですねえ。
0971デフォルトの名無しさんNGNG
>>970
いや、知らない方が良かった、という事も。(汗
0972デフォルトの名無しさんNGNG
>>966
で、ポインタと配列は同じもの、という誤解のもとに
a.c:
int a[10];

b.c:
extern int *a;

とやって、悩むわけね。
0973デフォルトの名無しさんNGNG
>>969
ポインタが親のクラスを使っていても、実際に指しているクラスが派生
クラスならば、オーバーライドされた派生クラスの関数を自動的に
呼び出してくれるよ。これがないとポインタは全滅してたかも。
0974デフォルトの名無しさんNGNG
>972
まさか!ぼくが読んだポインタの本はそんな勘違いを起こしませんよ。
しかしその場合、どうすればいいのかな?両方ともa[10]で宣言すればいいかな。
0975デフォルトの名無しさんNGNG
(1 << 2)
これってどういう意味なんですか?
0976デフォルトの名無しさんNGNG
>>974
>ぼくが読んだポインタの本はそんな勘違いを起こしませんよ。

いや、お前が・・・
0977デフォルトの名無しさんNGNG
>957
00000000 00000000 00000000 00000001
↓
00000000 00000000 00000000 00000100
0978デフォルトの名無しさんNGNG
>>977
戻りすぎだろ。。。汗
975か?
0979デフォルトの名無しさんNGNG
>>961
ネタなのかポカなのかマジなのか分からん…
0980デフォルトの名無しさんNGNG
新スレ立てました
http://pc.2ch.net/test/read.cgi/tech/1021484276/l50
0981980NGNG
>>980は、2重で立ててしまったものなので
削除依頼に出しました。正しいスレは
http://pc.2ch.net/test/read.cgi/tech/1021459016/l50
0982デフォルトの名無しさんNGNG
そしてこっちのスレは最後までゲイネタを語り合うことに使いましょう!!!
0983デフォルトの名無しさんNGNG
ともっちは今日もおなにしてるんだろうなぁ。
0984デフォルトの名無しさんNGNG
俺はちゃんと毎日ともっちを想像しながらおなにしてるぞ!!
0985デフォルトの名無しさんNGNG
みんながともっち、ともっち言うから
俺のモノまで反応しちゃったよ・・・(*-_-)
0986デフォルトの名無しさんNGNG
>>979
おまえはextern〜だけでなく、変数宣言までヘッダーファイルの中に書き込むのか?
0987デフォルトの名無しさんNGNG
>>985
やっぱり体のほうは正直なんだね。
いっしょにきもちよくなろう!!
0988デフォルトの名無しさんNGNG
ともっち!プログラムだけじゃなくて、体の疑問や悩みも
詳しく分かるように教えてあげるよ!
0989デフォルトの名無しさんNGNG
ともっち!おじさんがいまから具体的な指導してあげるよ。
0990デフォルトの名無しさんNGNG
次にのっとるのに都合のよいスレはないのか?
0991デフォルトの名無しさんNGNG
なんだか、プログラマー板にあるスレは
議論の場になってしまっていて、
ともっちのこと好きだ−!
という系統の書き込みがやりづらいんですけど、、、、
0992デフォルトの名無しさんNGNG
>>991
いろんなスレに書き込もう!
0993デフォルトの名無しさんNGNG
もうすぐ1000!!
0994デフォルトの名無しさんNGNG
このスレの1000をとるのはやっぱりともっちなんだろうか、、、
0995デフォルトの名無しさんNGNG
あと5件
0996デフォルトの名無しさんNGNG
>>994
ハァ?
0997 ◆inFbM64o NGNG
10000!!!
0998デフォルトの名無しさんNGNG
dfffffddd
0999デフォルトの名無しさんNGNG
>>996
ともっちだよ!
1000デフォルトの名無しさんNGNG
やったー1000げっと成功!
みなさん今後も指導よろしくおねがいしまーす!
         by ともっち
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。