C言語の事訊いて!!!第.38支部
レス数が1000を超えています。これ以上書き込みはできません。
0001隊員NO.1919072 ◆rhAfp.iLoU
NGNGそれはそうと君もC言語隊員になろう!!
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
・前スレ <36>
http://pc3.2ch.net/test/read.cgi/tech/1035211039/
コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさん
NGNG0003隊員NO.1919072 ◆rhAfp.iLoU
NGNGgcc
http://gcc.gnu.org/
【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
0004デフォルトの名無しさん
NGNG0005隊員NO.1919072 ◆rhAfp.iLoU
NGNGhttp://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
1間違えた。隊員失格だね・・・
<前スレ(37支部)>
http://pc3.2ch.net/test/read.cgi/tech/1035623265/
0006Void ◆XHOW.zla5c
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGどこが?
0012デフォルトの名無しさん
NGNG0013隊員NO.1919072 ◆rhAfp.iLoU
NGNG前スレのリンクが、前々スレになってるよ・・・
ぐへぁ!
0014デフォルトの名無しさん
NGNG有りだが、個人的にはC99に特化した書き込みなら
そのように前置きしてほしい。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG(以下略
0018デフォルトの名無しさん
NGNG一部だが、前処理として実行されるため、Cの文法解釈を無視している。
0019デフォルトの名無しさん
NGNGchar文字列と比較するために単にint→charにしただけ?
0020デフォルトの名無しさん
NGNGあなたの好きにしていいのよ。
>>9
そうですね。
>>10
あなたには複雑に感じるのかも知れません。
>>12
はい、ただし C コンパイラの一部ではありません。
>>16
残念ながらスレ違いです。
0021デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG「C」 では getenv() を使ってください。
環境依存の話では、Windows で動く多くの処理系が main() の第三引数 envp
をサポートしているのでそれを走査してください。
002421
NGNGありがとうございます。試してみます。
0025デフォルトの名無しさん
NGNGもしchar文字列と比較するために型をそろえただけなら
なぜあんな論争になったのかがわかんないんだよ・・・
0026デフォルトの名無しさん
NGNG#include <stdlib.h>
int main(int argc, char* argv[])
{
printf("%d\n" , __argc);
return 0;
}
どうしてこれで動くのでしょうか?
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG動きませんが
0029デフォルトの名無しさん
NGNGまんま、19 の通り。
なぜそんな事をしているかと言えば、規格で引数が int なのに 「char に変換された値」
と明記されているから。
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGc = (char)c;
の c が int 型ってのは分かってる?
0032デフォルトの名無しさん
NGNGそれだけ。
論争の原因はたぶん、なくても動く処理系が多いから不要と考える人が多かったからかな。
003326
NGNG0034デフォルトの名無しさん
NGNGVC++ を使ってますね?
__argc は <stdlib.h> でコソーリ定義されています。
何に使っているのかはよくわかりません。
何にせよ、これは C の規格に無い事なので __argc を使っては逝けません。
0035デフォルトの名無しさん
NGNGウィソ厨は(・∀・)キエロ!!!
0036デフォルトの名無しさん
NGNGcharがsignedな処理系でも
strchrx("aアa", 0xb1);
がちゃんと'ア'にヒットするかどうか。
0037デフォルトの名無しさん
NGNG激しくコンパイラ依存の話ですまんが、
GUIアプリはエントリポイントがWinMain()だからだろうね。
BCCでも同じようなグローバル変数が用意されていたと思う。
0038デフォルトの名無しさん
NGNG規格で決まってるからという理由以外で説明するなら、
36が書いてるように、charの最上位ビットが1になるような
文字の場合に、それが負の数値で渡されても正の数値で渡されても
対応できるようにするため
というのが一番の目的だろうね。
(他に charで表現できない整数がcharに切り詰められるというのもあるね)
0039デフォルトの名無しさん
NGNGtypedef unsigned int bit_16;
が記述されていて、
Cのソース
void main(bit_16 argc, byte *argv[])
{
}
と記述されている場合、このCソースファイルをどうすれば
コンパイルできるのでしょうか。コンパイラにヘッダファイルの
置き場所を指定すれば良いのでしょうか。
0040デフォルトの名無しさん
NGNG先頭アドレスしか入ってないはずなのに、
printfするとちゃんとchinkoと表示されるのはなぜですか?
普通に考えると、cとしか表示されないはずです。
もう一度聞きます。
なぜポインタ周りの仕様は複雑ですか?
0041デフォルトの名無しさん
NGNGデンパですか?
0042デフォルトの名無しさん
NGNG・・・・・・・
0043デフォルトの名無しさん
NGNGint型の配列であれば、先頭だけしか表示されなかったはずです。
しかしchar型はcだけでなくchinkoまでちゃんと表示されるのです。
もう一度聞きます。
なぜポインタ周りの仕様は複雑ですか?
0044デフォルトの名無しさん
NGNG>printfするとちゃんとchinkoと表示されるのはなぜですか?
に答えればいいんじゃないすかね。皆さんがんばってください。
0045デフォルトの名無しさん
NGNG> しかしchar型はcだけでなくchinkoまでちゃんと表示されるのです。
cしか表示されません。なんででしょうか?
char *c="chinko";
printf("%c", *c);
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGソースファイルと同じ場所に置いておけば、
#include "そのヘッダー.h"
で取り込める。
ソースファイルと同じ場所に置いておくことができない場合は、
#include "フルパスのそのヘッダー.h"
で取り込める。
0048デフォルトの名無しさん
NGNG多くのコンパイラにはオプショナルなヘッダファイルの場所を指定するための
コマンドラインオプションとして -I がある
0049279
NGNG0050デフォルトの名無しさん
NGNG叩かれて人は強くなる。どんどん発言しなさい。
0051デフォルトの名無しさん
NGNG関数にポインタを渡したとき、普通にポインタが渡されます。
関数に配列を渡したとき、その配列の最初の要素へのポインタが渡されます。
だから char c[]="chinko"; でも char *c="chinko"; でも、 printf("%s", c)
には結局 "chinko" の c へのポインタが渡されます。
一方 printf() では、"%s" が渡されると対応する引数をポインタとして受け取り、
'\0' を検出するまでそのアドレスからその次のアドレスへと、ひたすら次々に文字を
出力していくのです。
だから表示は c ではなく chinko になります。
ポインタ周りはあなたにとっては難しいのかも知れませんね。
printf() の動作もよく研究して下さい。
0052デフォルトの名無しさん
NGNGprintf() の動作もよく研究して下さい。
>>43
「int型の配列であれば、先頭だけしか表示されなかったはずです」 とは、何を
表現したかったのでしょう。
int c[]="chinko"; ではエラーになりますし、int c[]={"chinko"}; でも c[0] に
"chinko" へのポインタが格納されます。
これは、おそらくあなたの意図した初期化ではないでしょう。
int c[]={'c','h','i','n','k','o','\0'}; なら c[] の要素要素ごとにそれぞれの
文字の値が入ります。
int の内部表現は少なくとも 16-bit が保証されていますから、c[0] == 0x0063 のよ
うになるでしょう。
しかし、この値がメモリ上に 00 63 と格納されるか 63 00 と格納されるかは処理系
依存です。
もし後者 (ビッグエンディアン) ならあなたの言う通り c だけが表示されますが、
もし前者 (リトルエンディアン) でかつ char が 8bit であれば、何も表示されない
可能性もあります。
ところで、char 型と言ってしまっているのは char 型の配列の事ですよね?
一方、char の配列やポインタは >>前 で述べた通り、'\0' が見つかるまで次々と
走査して行きますので、c だけで途切れることも無く chinko と表示されるのです。
なお、int 型の配列であれば絶対に chinko と表示されないような口ぶりですが、
int が 32bit、char が 8bit でリトルエンディアンの処理系の場合に、
int c[]={ 0x6E696863, 0x00006F6B }; printf("%s", c); は chinko を表示しますが
何か?
まあ、これは処理系依存の、ほんのお遊びですが、いずれにせよあなたの 「int型の配列
であれば、先頭だけしか表示されなかったはずです」 という仮定は成り立ちません。
ポインタ周りに加えて変数初期化周りも、あなたにとっては難しいのかも知れませんね。
0053デフォルトの名無しさん
NGNGあなたの試したコード printf("%c", *c); を見てみましょう。
まず *c は、c が指しているアドレスにある、char 型のデータを表します。つまりこの
場合、文字 c です。
一方 printf() では、"%c" が渡されると対応する引数を文字データとして受け取り、
その 1 文字だけを出力します。
だから表示は chinko ではなく c になります。
あなたも >>40 と同じく、ポインタ周りと printf() の動作を研究するべきです。
0054デフォルトの名無しさん
NGNG>>45はネタだろ。
0055デフォルトの名無しさん
NGNGメ(略
0056デフォルトの名無しさん
NGNG005751-53
NGNG005854
NGNG005945
NGNGでも
> しかし、この値がメモリ上に 00 63 と格納されるか 63 00 と格納されるかは処理系
> 依存です。
> もし後者 (ビッグエンディアン) ならあなたの言う通り c だけが表示されますが、
> もし前者 (リトルエンディアン) でかつ char が 8bit であれば、何も表示されない
> 可能性もあります。
ここまでネタ書かなくてもいいのにね。
0061デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG高水準出力関数は、OSとの間にバッファを持ち、プログラムではこのバッファとの間で
データの入出力を行うイメージになります。このバッファはOSが管理し、自動的に
“ディスクファイル”とデータの入出力を行います。
という使われ方してんねんけど、ディスクファイルだけ意味わからん。
マルチになりますがお願いします。
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG> マルチになりますがお願いします。
意味わかって言ってる?
0067デフォルトの名無しさん
NGNGそのくらいぐぐれや
0068デフォルトの名無しさん
NGNGええ、過去スレにも書きましたし、スレ立てるまでも…にも書いたんでマルチになるかと。
でも過去スレに書いたんはここが新スレって気がつかんかったんです。
スレ立てるまでも…には答えがないのでこっちに来たと言うことです。せっかちなんで。
006951-53
NGNGここの 「マルチポスト 」 はお読みになりましたか?
http://www.geocities.co.jp/SiliconValley/5634/t82DC_0004.html#555
0070デフォルトの名無しさん
NGNGここは2ちゃんねるですよ。
007151-53
NGNG0072デフォルトの名無しさん
NGNGどっちだ?
・ 調べ方が分からない
・ そもそも自分で調べるつもりは全く無い
0073デフォルトの名無しさん
NGNG意味は書いてなかった。ここならさくっと答えてくれるかなと思ったんやけど
そんなに難解なことなんかな?
0074デフォルトの名無しさん
NGNG73 が 69 の忠告を無視したり 72 の質問を無視したりする根拠だ。
第一、2 ちゃんねるをなんだと思ってる?
つーか難解だと思わないなら自分で調べてみれ。
0075デフォルトの名無しさん
NGNGここは2ちゃんねるですよ。
0076デフォルトの名無しさん
NGNGこのコードが未定義でないという理由がわからないので教えてください
0077デフォルトの名無しさん
NGNG2ちゃんねるはやりたいことを好き勝手やるとこに決まってんじゃん。
なにか疑問があったときに言葉巧みに答えを引き出したりするけどね。
0078デフォルトの名無しさん
NGNG> なにか疑問があったときに言葉巧みに答えを引き出したりするけどね。
なるほど。
> ここならさくっと答えてくれるかなと思ったんやけど
> そんなに難解なことなんかな?
これが「言葉巧み」に該当するわけね。
0079デフォルトの名無しさん
NGNG2 ちゃんねるは単なる媒体で、書き込みを行っているのは日本中 (世界中?) の
人間だ。
その面前で堂々と 「2ちゃんねるはやりたいことを好き勝手やるとこに決まってん
じゃん」 なんて言い放つとは・・・。
0080デフォルトの名無しさん
NGNG今度から気をつけよーおもてるし、72の解答としては「調べてみたけど分からんかった」
ってことになるかとおもたんや。
0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG匿名掲示板で言ってるの?
0083デフォルトの名無しさん
NGNGそれ、(a < c++) は問題無いけど、それが偽だった場合に
c = c++; と等価になるからまずくないか?
008482
NGNG正しくは、匿名掲示板で何言ってるの? ね。
0085デフォルトの名無しさん
NGNGある程度の好き勝手はいいけど、悪質が過ぎるならアクセス禁止食らうよ。
008773 ◆GRRPdDaVH.
NGNGとりあえず気を悪くしたんなら誤ります、すみませんでした。
0088デフォルトの名無しさん
NGNGアクセスできなくなるくらいだろ。
別に2ちゃんねるにアクセスできないなら出来ないで問題ないし。
どうしてもアクセスしたかったらプロバイダ変えればいいだけだし。
その程度じゃなんの問題も無いね。
0089デフォルトの名無しさん
NGNG持ってる本に (a < c++) のあとに副作用完了点があるから
問題ないとだけ書いてあるんです。で、自分も偽だったとき
まずいのではと思ったんです。
一応試しに a = 100 c = 1 で if (a < c++) c = y * c else c = c++;
をやると未定義ですが3になり、三項演算子のは2になりました。
0090デフォルトの名無しさん
NGNGそんなに言いたいなら俺以外の相手のことは全く考えてない奴全員に言ったら。
2ちゃんねるはそんな奴ばかりだから苦労するだろうね。
0091デフォルトの名無しさん
NGNG指摘されなきゃ反省のそぶりも見せないなら、そりゃあ怒るわさ。
でもすまん漏れもいい気になってた、確かに検索だとなかなか出てこないな。
しかし、ディスクファイルって文字通りディスクに格納されたファイルの事
なんだが、想像つかなかったか?
他に、メモリファイルとかあるわけだが。
検索で単語は引っかかったみたいだけど、それがどう使われているかで何と
なく感じ取れなかったか?
考えてね。
後、マルチポストがいけない理由はちゃんと理解した?
それは、あなたが恥をかくからじゃないよ。
より多くの人に迷惑というか手間をかけるから、しかもどこか 1 ヶ所で
答えが見つかったら他の探してた人の苦労が水の泡になるからだよ。
「スレ立てるまでも…」 の方では、ちゃんと質問を個のスレに写した事を
明記してきた?
0092デフォルトの名無しさん
NGNGここは2ちゃんねるですよ。
0093デフォルトの名無しさん
NGNG009473 ◆GRRPdDaVH.
NGNG最低やな、匿名性が高いから言うてそんなこと言うとったら私生活で隠してても
いつかボロがでて痛い目みるやろ。
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGいい人だな。俺だったらこんな奴には絶対答えたくない。
009873 ◆GRRPdDaVH.
NGNGレスくれてありがと。
なんとなくの予想はついてても、初心者やからちゃんとした知識身につけたいと
思ってて確証が欲しかった。
0099デフォルトの名無しさん
NGNG迷惑野郎ですよ。いや女かもしれないけどね。
2ちゃんねる以外でこんなことする奴は痛い目見るでしょうね。
私はしませんけど。
>>94
楽しみですね、その日が。まあ例えそうなってもあなたは私が痛い目を
見たことを知ることは無いでしょうが。匿名ってのは不便ですね。
010097
NGNGでなきゃ何書いても無駄だし。
0101デフォルトの名無しさん
NGNGわざわざそんなレスしないといけない程2ちゃんねるが重要なのか。。。
0102デフォルトの名無しさん
NGNG0103100 get したけど
NGNG0104デフォルトの名無しさん
NGNGん? 俺が面白いから書き込んでるだけだけど。
010589
NGNGあんなコード書かないだろうから、そんなに切実でもないけど。
0106デフォルトの名無しさん
NGNGというより、匿名掲示版で暴れないといけないって時点ですでにかなり
痛い状態になっているような。
0109デフォルトの名無しさん
NGNGごめんね。雑談ってのは一人じゃ出来ないんだ。
全部相手が悪いんだよ。俺は悪くないよ。
別に俺が悪者扱いされようがここだけの話だし知ったことじゃないが。
011091
NGNG集まってくる人はそれなりに応対しないとあかんと思う。
前にも出たけど、2 ちゃんねるは単なる媒体で、その向こう側は生の人間
なんだからな。
しかし、少しばかりその例外を作らないといけないようだ。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG本性? 本性ってのは本来のすがたってだけで本性が悪いとは限らないんだよね。
ここでの姿が仮の姿で本性はいい奴だよ。すでに本性ばればれだけどね。
0113デフォルトの名無しさん
NGNGいえ、こっちこそすいませんでした。つい取り乱して。
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG少しばかりの例外って何? 匿名性を低くするって事?
それには俺も賛成だ。2ちゃんねるはマナーが悪い奴が多すぎる。
俺の仮の姿みたいにな。もっと平和な所にしてほしいよ。
0116デフォルトの名無しさん
NGNGさて、誰と誰が同一人物でしょう?
0117デフォルトの名無しさん
NGNGせいぜい心の中で憐れむくらいでいいんだよ。
相手にするのは時間の無駄。
0118デフォルトの名無しさん
NGNG70と75と77と82と84と88と90と92と99と102と109と112と115が俺
0119デフォルトの名無しさん
NGNGその通り。ここは2ちゃんねるだしな。
0120デフォルトの名無しさん
NGNG2ちゃんねるはもともと平和な所じゃなくて喧嘩上等な所。
012173 ◆GRRPdDaVH.
NGNG匿名性が高いとこで出てくるのが本性や、そんなんもわからんか?
それとも分裂症か?
0122110
NGNGいや、匿名性が多少下がってもそんなに意味無いのはメーリングリスト等で
実証済みだし。
完全実名制でもないと。
そうでなくて、人にはそれなりに誠意もって応対すべき、ただし一部の誰かさんは
きっぱり無視すべき、って事。
>>116
5 人はいただろ、1 人は去ったようだが。
ま、大差ないか。
ROM はもうちょっといるだろう。
0123デフォルトの名無しさん
NGNG2 ちゃんねるのどの規約にそんな事書いてあった?
たまに、ローカルルールで許可されている板はあるものの。
0124デフォルトの名無しさん
NGNG煽りと荒しは違う。
中には目的もなく煽ってるやつもいるが。
0125123
NGNG0126デフォルトの名無しさん
NGNGなんつーか農水大臣みたいなお人だ
0128デフォルトの名無しさん
NGNG規約以前にいろいろな板を見ていればわかるだろ。
規約がすべてで現状認識ができていないのでは。
0129デフォルトの名無しさん
NGNG( ´,_ゝ`)プッ
0130デフォルトの名無しさん
NGNGそうそう。だから喧嘩上等な場所通りの行動をしているまで。
でもいやだよ。本性は。
>>121
匿名性が高い所で出てくるのが本性ってことは
匿名性が低い所では本性じゃないのかな? あなたは。
匿名性が高いここで本性を出しているってことは、匿名性が低いリアルではどんな奴なんだか。
0131デフォルトの名無しさん
NGNG法律がすべてで現状認識ができていないのでは。
( ´,_ゝ`)プッ
0132デフォルトの名無しさん
NGNG誤爆
0133デフォルトの名無しさん
NGNGこれはあなたか?
99 :デフォルトの名無しさん :02/10/28 04:15
>>93
迷惑野郎ですよ。いや女かもしれないけどね。
2ちゃんねる以外でこんなことする奴は痛い目見るでしょうね。
私はしませんけど。
0134デフォルトの名無しさん
NGNG131 の比喩を見ればよくわかるよ。
0135デフォルトの名無しさん
NGNGなんでわざわざ煽りに反応してやるんだ?
ここはCの話題を扱うスレだぞ。
0136デフォルトの名無しさん
NGNG匿名性が高い状態でチンポ出すやつもいれば、親の前でチンポ出すやつもいるってことだ。
0137デフォルトの名無しさん
NGNG013873 ◆GRRPdDaVH.
NGNGいや、そんなことは無いぞ。確実にいやな気分になるかムカついてるはずや、
根拠は
>>本性? 本性ってのは本来のすがたってだけで本性が悪いとは限らないんだよね。
>>ここでの姿が仮の姿で本性はいい奴だよ。すでに本性ばればれだけどね。
ここに書き込んでるのは仮の姿でほんまの自分じゃないって言っとる。
つまり、仮の姿の自分が虐められててほんまの自分は虐められてないってことにしとる。
何でそうせなあかんか?それはほんまの自分が傷つくからやろ。
そうやって仮の姿に現実逃避してても無駄やぞ、さっきも言うたけど今のお前がほんまのお前。
自分で気がついてないだけや
0139デフォルトの名無しさん
NGNGそんなのをちゃんと管理するなら俺も悪者ぶったりしないって。
疲れたので消えるよ。いや逃げるよ。いい暇つぶしになった。
今までお付き合いくださってありがとうございます。
0140デフォルトの名無しさん
NGNGCスレならCスレらしくしろ。
0141デフォルトの名無しさん
NGNG134 や 138 もそろそろ放置にしてくれ。
0142デフォルトの名無しさん
NGNGお前も頼むからもう書きこまないでくれ。冷静になってくれ。
マルチな質問を親切な住人に答えてもらったこのスレを
いつまで荒らす気だ?
0143デフォルトの名無しさん
NGNGスレ違いの話を延々と引っ張って己を正当化して逃げる貴方、ステキです
0144デフォルトの名無しさん
NGNGつっついてみたい気持ちはわかるが、140 とかの気持ちも考えてやれ。
0146デフォルトの名無しさん
NGNGといきたいところだが、今日はもう眠いので寝るか
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGc=(char)c;が何故必要?->c&=0xffではダメ?->ビット切り取りだと問題が出る事がある。
(char = signed char,int = signed intな環境と仮定)
int c = 0xFFFFFFB1を渡す時
cの上位ビットを切り取ると0x000000B1---------------------[A]
文字列中の文字*strのint昇格後取りうる値0xFFFFFF80-0x0000007F
(charはint型に昇格されて比較される,その際「符号は保持」する。)
マッチする筈の元のiの値0xFFFFFFB1がstrに入っていても[A]の為にはじかれる。
以上の理由でビット切り取りではダメ。
->しかし上記の論は「c=(char)cが必要である事の理由」では無い。
->ではchar,intをsigned,unsignedの各場合について分けて考えてみる。
変換前のint cと変換後(c=(char)c;を行った後)のc(混同を防ぐためc'とする) 比較
signed char,signed intな環境:∀c,-127<c<128でc'=cとなる
unsigned char, unsigned intな環境:∀c,0=<c<256でc'=cとなる
signed char,unsigned intな環境:0=<c<128はc'=c,128=<c<256ではc'が大きな値になる。
unsigned char, signed intな環境:∀c,0=<c<256でc'=cとなる
signed char,unsigned intな環境でかつ、128=<c<256な場合,cとc'に違いがある訳だが
この時c=(char)cがある場合と無い場合ではどのようになるか考えてみる。
無い場合: cは128=<c<256の値をとる。比較時でも当然128=<c<256の値,
一方*strはchar(signed char)であり整数への拡大が適用される。
この時-127=<*str<0なる*strは非常に大きな正の値に変換される為
c=*strであった筈の値でも合致しない事となる。
有る場合: 128=<c<256なるcはc=(char)cで非常に大きな正の値に変換される。
比較において意図した結果が得られる.
(変換前のint c(128=<c<256)に対応する*str(-127<=*str<0)中の値)
よってc=(char)c;はchar=signed char,int=unsigned intな環境で128=<c<256 なcの値の時必要。
0150デフォルトの名無しさん
NGNGはあ?ネタでつか?
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG全く的はずれ。
charがsignedかunsignedかは処理系依存だが、intはsignedであることが保証されてる。
さらに、intは最低でも16bitだがそれを全く考慮してない。
まあ、そんなことはどうでも良くて・・・なんだこりゃ!
前スレもう一回読んで見ろ。
それと壮大なネタか?
0153デフォルトの名無しさん
NGNGあれって処理系依存なんだよな〜
Cで確実に算術シフト(または論理シフト)をする方法ってあります?
0154デフォルトの名無しさん
NGNGよくもこんなにゴチャゴチャと書けるな。
0155デフォルトの名無しさん
NGNG確実に論理シフトしたいのなら、最初っからunsignedでやればいい。
だが、算術シフトは、移植性のある方法ってあるんだろうか。
0156デフォルトの名無しさん
NGNGunsignedなら論理シフトになるというのは規格では決まっていないはず・・・
0157デフォルトの名無しさん
NGNGunsignedなら必然的に論理シフトになると思うのだが・・・
0158デフォルトの名無しさん
NGNG漏れもそう思う。
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG> c&=0xffではダメ?->ビット切り取りだと問題が出る事がある。
比較の両辺とも処理すれば問題なし。
0161デフォルトの名無しさん
NGNGint n = -1;
n = (unsigned)n >> 1;
なんかはずしてる?
0162デフォルトの名無しさん
NGNG合ってるけどそれは155の言ってることに含まれてるはず。
0163デフォルトの名無しさん
NGNGprintf("int c(-1); %x\n", -1);
printf("c(変換後); %x\n", (signed char)-1);
printf("int c(0xff); %x\n", 0xff);
printf("c(変換後); %x\n", (signed char)0xff);
printf("*str(元の値): ff\n");
printf("*str(比較時): %x\n", (int)-1);
printf("unsigned char\n");
printf("int c(-1); %x\n", -1);
printf("c(変換後); %x\n", (unsigned char)-1);
printf("int c(0xff); %x\n", 0xff);
printf("c(変換後); %x\n", (unsigned char)0xff);
printf("*str(元の値): %x\n", 0xff);
printf("*str(比較時): %x\n", (int)0xff);
一旦charとして妥当な値に直してやってそれをまた比較の為符号拡張するのか。
なんとか分かった。
0164デフォルトの名無しさん
NGNG書籍ではargcの数を数えることしかしてないし。
getopt()はなんか機能不足な気もしますし。
フリーソフトウェアのソースを読むほどの技量がないので
どなたかごきょうじゅくだはい
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGargv は引数を取得する為に使う。
テキストファイルをコピーするプログラム fcopy.c について考えると、
Usage: fcopy "input filepath" "output filepath"
として、
/* fcopy.c */
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fin, *fout;
/* argc を利用した引数の数をチェックする */
if (argc != 3) {
fprintf(stderr, "引数が足りません\n");
return 1;
}
/* argv で任意のファイル名を使ってファイルオープン */
fin = fopen(argv[1], "r");
fout = fopen(argv[2], "w");
/* ファイルコピー処理 */
fclose(fin);
fclose(fout);
return 0;
}
argc, argv は、こんな感じで使います。
0168デフォルトの名無しさん
NGNG自分で面倒見るのならこうやってやるかなあ。
プログラムの機能によって全然変わっちゃうけど、いつもはこうしてる。
つうかいつもはunix前提なんでgetopt使っちゃうけど(w
argvをいじっちゃうのであまりよくないスタイルではある。
int main(int argc, char **argv)
{
while (*++argv) {
if (*argv[0] == '-') { /* スイッチの処理 */
char *p;
for (p = *argv + 1; *p; p++) {
switch(*p) {
case 'a':
:
}
}
}
else { /* ファイルの処理 */
:
}
:
}
ただこれだと'-'で始まるファイル名は扱えない。
0169164
NGNGなかなか穴の無い処理が書けなくて
悩んでたんですが、ある程度
端折っちゃって大丈夫ですよね。
考えすぎでしたスマソ
0170デフォルトの名無しさん
NGNG「Cでは配列の後に[]をつけずに、配列名だけ単独で書くと
配列の先頭要素へのポインタとみなす」
っていうのは間違いだ( ゚Д゚)ゴルァ!
って書いてたんだけど、ほんとうですか?
0171アフォ ◆Ez1ZxZMJoU
NGNGchar data[300];
char *p = data; // OK
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(data)); // NG
0172配列とポインタ
NGNGtypedef struct
{
double *base;
…
}matrix;
matrix A;
このAに
double a[4][4]={
{0.0,0.0,1.0,0.0},
…
};
と定数で宣言した配列の先頭アドレスを
A.base = (double *)a;
と突っ込んでいるんですが、ここでプログラムが落ちてしまいます
(コンパイルエラーはないです)
ポインタ宣言したAに直接、配列の定数を突っ込みたいのですが、
それが分からなかったので、こんな方法をやってます。
( *(A.base+0+0) = 1.0; とか突っ込むのも考えたんですが)
元のプログラムがMS-DOSのTurboC++で書かれていて(ある本のプログラム)
それをWin+BC++5.02J上でやりたいんです。
何が間違いでしょうか。
0173配列とポインタ
NGNGということでage
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGC++じゃないよ。
0176デフォルトの名無しさん
NGNG別に落ちないよ。BCC5.5.1だけど。
0177デフォルトの名無しさん
NGNGそれとも添え字演算子を使ってますか?
0178デフォルトの名無しさん
NGNGCの範囲だろ。
>>172
gccでやってみたけど特に問題は起きなかったよ。
typedef struct
{
double *base;
}matrix;
matrix A;
double a[4][4]={
{0.0,0.0,1.0,0.0},
{0.0,0.0,1.0,0.0},
{0.0,0.0,1.0,0.0},
{0.0,0.0,1.0,0.0},
};
int main(int argc, char * argv[])
{
A.base = (double *)a; /* ここ */
return 0;
}
本当に「ここ」の部分でエラー起きてる? どうやってそこだと特定したんだろう。
0179デフォルトの名無しさん
NGNGfgets(a,b,c)は
a=入力する文字列
b=文字列の長さ
c=入力場所
でいいんですか?
あとsscanf(a,b,c)は
それぞれどんな仮引数なんでつか?
0181デフォルトの名無しさん
NGNGってなんじゃらほい?
0182配列とポインタ
NGNGありがとうございます。
えっと、return 0; の前にgetch()をおいて
DOSプロンプトが自動的に閉じるのを防いで、
その後に
//A.base = (double *)a;
とすると他の行列はきちんと表示して自分の思い通りになるので・・・。
0183デフォルトの名無しさん
NGNG自分で調べる癖を付けましょう
http://tyrant.chem-eng.kyushu-u.ac.jp/2nd/Programming/Library/Main.asp
0184デフォルトの名無しさん
NGNG全画面をクリアしてから実行するようにするには
どうしたらいいんですか?
0185デフォルトの名無しさん
NGNGsystem("cls");
0186178
NGNGなるほど。178で書いたコードでは特に問題になるところはないと思う。
他に色々やってるようなので、どこか別のところで変数を壊すなりしてないか?
配列で確保した以上のところに書いているとかその辺。
0187デフォルトの名無しさん
NGNG> A.base = (double *)a; /* ここ */
変なキャストを行っているから
> typedef struct
> {
> double *base;
double (*base)[4];
> }matrix;
> A.base = (double *)a; /* ここ */
A.base = a;
こうしてみろ
>>186
> なるほど。178で書いたコードでは特に問題になるところはないと思う。
おいおい、問題ありまくりの糞ソースが「たまたま」動いたから
問題ないというのは非常に疑問だぞ。
0188デフォルトの名無しさん
NGNGそれは気づいていたけど、代入しただけで落ちるというから、別の理由が
あるんじゃないかと思っている。
0189配列とポインタ
NGNG>別のところで変数を壊すなりしてないか?
問題の処理の前後でメモリの配置・開放(行列式に適用したmallocのようなもの(?))
があるくらいで、>>178で書いていただいたコードとほとんど一緒です。
もっと詳しくプログラムを追ってみたほうが良さそうですね・・・。
ありがとうございました。
0190デフォルトの名無しさん
NGNGCywinをダウンロードしてインストールもしたんですが
このあとどうすればいいんですか?
英語のサイトばっかで訳がわかりません
0191デフォルトの名無しさん
NGNG> 代入しただけで落ちる
いいえ、現在の情報では、「代入をコメントにしたら落ちる」です。
どの箇所で落ちたのかは不明です。
おそらく、代入した部分ではなく、表示や計算の部分で落ちている
可能性が高いと思われます。
0192デフォルトの名無しさん
NGNG>>(行列式に適用したmallocのようなもの(?))
それだ!そこで確保した領域を破壊しているか。
freeすべき場所が書き換えられている。
A.base = &a[0][0]
でいいだろ。
0193デフォルトの名無しさん
NGNG・・・・・・・
もしかして初期化してないポインタを使っているとか、そういうオチは
ないよな?
0194配列とポインタ
NGNGありがとうございます。
キャストをしたのはコンパイラに怒られて、
この方法しか思いつかなかったので・・・。
ご指摘の通りにやってみましたが、やはりエラーログを吐いてしまいます。
(win2kの調子がおかしいんでしょうか・・・)
あと
>double (*base)[4];
なんですが、この場合のみならOKなんですが、
他の行列1*4や3*3の行列でも使用しますので、これだと少し都合が・・・。
(#defineなどで指定するのも都合が悪いです・・・)
0195デフォルトの名無しさん
NGNGほれ
http://www.mars.dti.ne.jp/~sohda/cygwin/setup.html
ただし、
> (9)ダウンロードするパッケージを選択します。
では全部defaultにしてしまうと、gccなとのコンパイラは
インストールされないので、Devel配下にあるgcc, gdb, make
ぐらいはインストールしといた方がいい。
容量に余裕があるならDevelを全部インストールする方法もある。
0196配列とポインタ
NGNGわかりづらくてすいません。
「代入したら落ちる(エラーログを吐く)」です。
コメントすると普通に動きます。
0197配列とポインタ
NGNG明日、別の環境で試してみます。
皆さん、ありがとうございました。
0198デフォルトの名無しさん
NGNG> 問題の処理の前後でメモリの配置・開放(行列式に適用したmallocのようなもの(?))
俺の経験と勘によるとそこが非常に怪しいのだが...そこは大丈夫なのか?
0199デフォルトの名無しさん
NGNGサンクス!
インストール成功しました!
環境変数変えたりとかはいいんでつか?
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG> 環境変数変えたりとかはいいんでつか?
そのページの下のリンクをよく見てみろ
Cygwin 環境の構築
http://www.mars.dti.ne.jp/~sohda/cygwin/setenv.html
環境変数を設定して.bashrcを書けば一応終了
Cygwinを起動してgccと打ってみて
gcc: no input files
と出るとインストール成功、hello,worldでも作ってろ
bash: gcc: command not found
とか出るとインストール失敗、インストールからやり直せ
0202デフォルトの名無しさん
NGNGhttp://rec.ncos.co.jp/cgi-bin/errorfrmC.cgi?161
0203193→一休さん
NGNGソースを、二つに分けて出力したいと思います。
int Iskanji1st(int c)
{
unsigned char uch=c;
if(uch>=0x81&&uch<=0x9f||uch>=0xe0&&0xfc)
return 1;
else
return 0;
}
0204193→一休さん
NGNG{
int n;
while((n=getchar())!=EOF){
if(Iskanji1st(n)){
if(isalnum(n=getchar()))
putchar('?');
else
putchar('*');
continue;
}
else if(isalnum(n))
putchar(n);
else
;
}
return 0;
}
0205デフォルトの名無しさん
NGNGどうでもいいが、こんな汚いコード書くな。
0206193→一休さん
NGNGその際、位置インジゲータとエラーインジゲータを返すとある。
この手のソースの中によくからんでくるのが。
getchar();だけで、読み飛ばしとか何かgetchar関数の細かい
操作がしてある。(while((n=getchar())!=EOF){}の中で)
こういったEOFを使ったループの使い方がいまいち把握できない。
ループ内で、getchar();とn=getchar();の違いなんですか!?
0207デフォルトの名無しさん
NGNG0〜99の数字を1秒間隔で表示。1〜9で改行、表示する
こんな感じです
1 2 3 4 5 6 7 8 9
10 11 12〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜99
これのプログラムを教えてください
よろしくお願いします
0208デフォルトの名無しさん
NGNGすれ違いだし環境書いてないし日本語がちょっと変。
0209デフォルトの名無しさん
NGNG> c++の質問をお願いします
ここはCスレ、以下の場所に逝ってくれ。
C++相談室 part12
http://pc3.2ch.net/test/read.cgi/tech/1035005882/
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG結論から言うと「状況による」です。
Linuxの場合、逆に速くなる場合もあるそうです。
# fjの「WORDは遅い、int の6倍遅い?」で
# 彼の勇姿をなま暖かく見守っていた一人
0212デフォルトの名無しさん
NGNGCの標準関数だけでもできないわけじゃないけどな・・・
ビジーループ使うから効率悪いけど。
0213デフォルトの名無しさん
NGNG彼の保護者はなにやってるの?
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG非常に丁寧かつ長文のレスありがとうございました。
特にprintfに関する説明には感謝しております。
確かに私にとってポインタ周りの仕様は複雑に
思えます。
また勉強し直し、髭をそり直しそして出直して参ります。
ギャフン
0216デフォルトの名無しさん
NGNGWin32API使うとしたら出来ますか?
0217デフォルトの名無しさん
NGNG>Win32API使うとしたら出来ますか?
できます。
0218デフォルトの名無しさん
NGNG> Cで点は描けますか?
printf("."); printf("点");
> Win32API使うとしたら出来ますか?
うん。
Win32API 質問箱 Build6
http://pc3.2ch.net/test/read.cgi/tech/1032548635/l30
0219デフォルトの名無しさん
NGNG0220rubyist@カラアゲうまうま
NGNGhttp://www.geocities.co.jp/Milano-Killer/8183/swf/wori.swf
0221デフォルトの名無しさん
NGNGスレ違いです。
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGリファレンスとかヘルプとか参考書とか読め。
scanf() の戻り値は、正常に値を入力できた変数の数。
何文字入力したかは関係無い。
0224配列とポインタ
NGNG>>198さんの仰るようにメモリ周りが怪しいので
その部分をいろいろいじってみたんですが、エラーログを吐きます。
関係する部分を以下に・・・
typedef struct
{
/* double base;*/
double *base;
unsigned row;
unsigned col;
unsigned temp;
}matrix;
/* main */
...
matalloc(&A,4,4); /* メモリ取得 */
...
A.base = &a[0][0]; /* 代入 */
...
mfree(&A);
0225配列とポインタ
NGNGvoid matalloc(a,row,col)
matrix *a;
unsigned row,col;
{
/* char *malloc();*/
char *p;
unsigned i;
p=malloc(row*col*sizeof(double));
/* (char *) でキャストすべきっすか?*/
if(p==0){
printf("\n メモリ不足");
exit(0);
}
a->base=(double *)p; a->row=row;
a->col=col; a->temp=0;
for(i=0;i<row*col;i++) *(a->base+i)=0.0;
}
以上、よろしくお願いします。
0226デフォルトの名無しさん
NGNGmfree()関数内で
free( a->base );
とかしてない?
0227デフォルトの名無しさん
NGNG>A.base = &a[0][0];
ここでメモリリークしている
0228デフォルトの名無しさん
NGNG(つかなんでポインタなの?)
0229デフォルトの名無しさん
NGNG0230配列とポインタ
NGNG>>226
void mfree(a)
matrix *a;
{
if(a->temp) abort();
free((char *)a->base); /* たしかにしてますね・・・ */
}
>>227
>A.base = &a[0][0];
あれ?上の方でこうしる・・といわれたような。
A.base = &a;
で良いですか?
>>228
えっとですね、参考にしている本が行列計算をポインタ中心で
やっているので、その行列計算(関数?)に合わせたいんです。
合わせると言っても引数のタイプを合わせるだけなんですが・・・。
main関数以外は本のプログラムのままなので、なんとも言えないのが実情です。。。
0231デフォルトの名無しさん
NGNGその参考書が怪しくねーか?
駄本も多いから気をつけろ。
0232デフォルトの名無しさん
NGNGmatirx A;
A->p=malloc(row*col*sizeof(double));
A->p = &a[0][0];
free(A->p);
明らかにおかしいだろが
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG∧||∧
( ⌒ ヽ
∪ 。ノ
∪∪
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGmatalloc(&A,4,4); /* メモリ取得 */
...
A.base = &a[0][0]; /* 代入 */
...
mfree(&A);
って領域確保とポインタ(アドレス)と実体とゴッチャになってるから
/*代入*/で間違っている。アドレスを代入するのではなくポインタが指し示す
メモリ上に値を埋めていく作業が必要。
0237デフォルトの名無しさん
NGNG今度はグローバル変数である事で何か問題が
起こる可能性もあるが。
0238配列とポインタ
NGNG>>236さんの
>メモリ上に値を埋めていく作業が必要。
というのが決め手で、分かりました。
自分では領域確保してアドレスを渡せば間接参照(?)されるかと思ってました。
for(i=0;i<M;i++){
for(j=0;j<N;j++){
*(A.base+i*N+j) = a[i][j];
}
}
こんな感じで作ったらうまく渡すことができました。
ありがとうございました。
0239配列とポインタ
NGNGmfreeのコメントをはずすのを忘れてました。
(mfreeが怪しいといわれたのでコメントをしてました。)
で、(一度コメントしてmakeした後に)mfreeのコメントをはずしたら
エラーログを吐き出されました・・。
mfree(free)せずに処理系に任せるのは・・・まずいっすよね・・・。
この場合、どのように対処したら良いのでしょうか。
0240デフォルトの名無しさん
NGNGa->temp
が 0 のままじゃない?
0241デフォルトの名無しさん
NGNG対症療法でやるなって。
ちゃんとポインタとかを理解して、コード組めよ。
0242デフォルトの名無しさん
NGNGアドレスのコピーを取って、使って、
使って居ないもとのアドレスを指している方をフリー
0243デフォルトの名無しさん
NGNG> A.base = &a[0][0];
この代入がまだ残ってるとか。
ちゃんと削除した?
0244配列とポインタ
NGNGa->tempは0のままで良いようです。
"保存用"なら0、"作業用"なら1のフラグを立てるところのようで、
今、Aには保存用のデータを収納したいので。
(abort()は飛ばされていることを確認しました)
>>241
ポインタ(配列)を100%理解はしていませんが、今は対症療法(打って覚える)を
実践しようと思ってやってるので・・・。
(理解が足りていないのは百も承知でやってます)
>>243
言われて削除したんですが、変わらずでした。
で、現在、>>242さんのご意見を頭の中で整理しています。
やはり、理解が足りないようです。出直してきます。
皆さん、ありがとうございました。
0245デフォルトの名無しさん
NGNGまず、いわゆる二次元以上の配列は初心者にはかなり理解が厳しいと思う。
やるのなら、matrixを操作する関数群を作るといいと思う。
matrixを確保、開放する関数、row、colを指定して値を設定する関数、
同様に取り出す関数、比較する関数、複製する関数など。
確保する関数はrowとcolを指定して、matrixのポインタを返すようにして、
残りの関数はmatrixのポインタと必要なパラメータを受け取るようにすれば
いいんじゃないかな。
0246配列とポインタ
NGNGご意見、ありがとうございます。
そうですね。matrixに関しての関数をもう一度、自分で作成するか
手元にある怪しい関数を一から見直す必要があるようです。
( >row、colを指定して値を設定する関数 は今作ってみました。 )
勉強と思って一から作成してみます。
では、これにて。。。
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGスレ違い。
http://pc3.2ch.net/test/read.cgi/tech/1030985362/l50
http://pc3.2ch.net/test/read.cgi/tech/1022499000/l50
0250デフォルトの名無しさん
NGNG↑非可逆圧縮のプログラムね
知ってたらソースファイル教えてください
スレ違いだったらすまん。
0251デフォルトの名無しさん
NGNGさんきゅです
0252デフォルトの名無しさん
NGNGスレちがい。
作者のサイトで公開されてなかったらあきらめろよ。
0253デフォルトの名無しさん
NGNG返しを使って実現せよ。ただし配列名をdata とすると、1 の位がdata[0]に、10 の位
がdata[1]に格納されるものとする。最後に配列の全要素を出力せよ。
例: 38459341 が入力された場合
配列には{1,4,3,9,5,4,8,3}が格納される
0254デフォルトの名無しさん
NGNGそれが人に教えを請う態度かよ。
つか、宿題は自分でやれや。
0255ぉ ◆Ez1ZxZMJoU
NGNGsprintf(data, "%d", N);
for(i = 0; i < 4; ++ i) {
c = data[i]; data[i] = data[7-i]; data[7-i] = c;
}
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG「問題の掲載ご苦労様でした。」 とでも言っとけ。
0258デフォルトの名無しさん
NGNGp="abc";
p="abcd";
p="abcde";
上でstrlenとやるとそれぞれ3,4,5になるのに、sizeofだと最初の4のままなのはどうして?
0259デフォルトの名無しさん
NGNGポインタの大きさと、文字列の大きさの違いについて調べてきなさい。
理解するまで、このスレにカキコ禁止。
0260デフォルトの名無しさん
NGNG1 のリンクにある C FAQ を通読してくれ。
0262260
NGNGだから、まず 1 のリンクにある C FAQ を通読してくれ。
ちなみに、ポインタの大きさはコンパイラが何ビットかとは直接関係無い。
たまたま一致する事もあるが、規格では規定されていないので思い込んではいけない。
0263配列とポインタ
NGNG>>242さんに言われたことを整理して
matalloc内の
p=malloc(row*col*sizeof(double))
このpをreturnで戻してmain関数内で(char *)型のchaaで受け取って
free(chaa)としたらエラー無しで終了できました。
>>242 "使って居ないもとのアドレスを指している方をフリー"
が重要だったようです。
皆さん、ありがとうございました。
(もっと勉強が必要だと感じました。。)
0265デフォルトの名無しさん
NGNGint型だけで、1兆+1兆=?
みたいな計算をどうやるかっていう問題で、
多倍長演算使うってとこまではわかったんですが、
多倍長演算ってのが何かわかりません。
誰か教えてください。
0266デフォルトの名無しさん
NGNGそこまで分かったのなら、とりあえず検索して見れ。
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=%E5%A4%9A%E5%80%8D%E9%95%B7
100進4桁にするといいよ。
0269デフォルトの名無しさん
NGNG# out | in のイメージで
/* out.c */
#include <stdio.h>
int main(void) {
char buff[128];
memset(buff, '\0', sizeof(buff));
while (fgets(buff, sizeof(buff), stdin) != NULL) {
fputs(buff, stdout);
memset(buff, '\0', sizeof(buff));
}
return system("./in");
}
/* in.c */
#include <stdio.h>
int main(void) {
char buff[128];
FILE *fp=NULL;
fp = fopen("./hoge.txt", "wb");
memset(buff, '\0', sizeof(buff));
while (fgets(buff, sizeof(buff), stdin) != NULL) {
fputs(buff, fp);
memset(buff, '\0', sizeof(buff));
}
return 0;
}
0270デフォルトの名無しさん
NGNGなんでreturn system("./in")なん?
0271269
NGNGpipe ってのがあるんですか・・・(´・ω・`)
そのものズバリな予感。
調べてみます
0272デフォルトの名無しさん
NGNGネットで探しても見つからないんで
0273デフォルトの名無しさん
NGNGプロキシークラスでぐぐれ。
0274デフォルトの名無しさん
NGNGという警告がたまにでるのですが、いいのでしょうか?
0275269
NGNGただ、この場合呼び出し先のリターンコードって取得できるんでしょうか?
0276デフォルトの名無しさん
NGNG0277ゆみこ
NGNG0279デフォルトの名無しさん
NGNG土建屋のゼネコンのような丸投げ君は禁止しています。
# 昔の1には書いてあったのだが...今は無いな。
自分でやってみてわからないところを質問するのは構いません。
0280ゆみこ
NGNG0281デフォルトの名無しさん
NGNGstruct hoge {
char a[4];
long b;
short c;
};
int main(void)
{
printf("%d\n", sizeof(struct hoge));
return 0;
}
↑のようなコードで、12 と結果が出ます。
sizeof(long)は4で、sizeof(short)は2です。
何故、構造体hogeのサイズが10にならんのですか?
0282デフォルトの名無しさん
NGNG>>1のC FAQを読んでから出直せ。
0283デフォルトの名無しさん
NGNG目に見えない何かが詰まってるんだよ。
0284281
NGNG納得しました。
sizeofは詰めものまで数えるのね。
0285デフォルトの名無しさん
NGNG0286269
NGNGpclose のリターン値ですが、
これって、fcloseに準拠するんでしょうか?
呼び出し先のアプリが複数ステータスを返す場合は
pipeで、やり取りするしかないんでしょうか?
0287デフォルトの名無しさん
NGNGC FAQ 2.13:を参照
http://www.catnet.ne.jp/kouno/c_faq/c2.html
> 構造体にsizeof演算子を使ったら、私が思っていたよりも大きな大き
> さを返してきた。まるで、おしりに詰め物がしてあるようだ。
0288デフォルトの名無しさん
NGNG> The pclose() function waits for the associated process to terminate and
> returns the exit status of the command as returned by wait4().
0289デフォルトの名無しさん
NGNG何から初めていいものか分かりません。
そもそも、こういう処理をコンピュータにやらせる事をなんていうんですか?
思考ルーチンとか?
0290デフォルトの名無しさん
NGNGbugsに
> Failure to execute the shell is indistinguishable from the
> shell's failure to execute command, or an immediate exit of the
> command. The only hint is an exit status of 127.
こんなことが書いてあるけど、pcloseでは成功の判断はできるけど
どのプロセスで何のエラーが発生したのかは判断できないんじゃない?
0291269
NGNG見落としてました・・・。・゚・(ノД`)・゚・。
0292デフォルトの名無しさん
NGNG以前おれ三目並べ作ったよ。一ヶ月もかかったがあれは楽しかった。
まずは紙に三目並べの局面の樹形図を描きまくることからはじめた。
0293デフォルトの名無しさん
NGNG三目並べ程度だったら今のマシンパワーだと、
枝刈りしなくても全然おっけーだから力技で解けちゃいそう。
つかMS-DOSの頃も枝刈りの必要なかったか。
とはいえ、練習だと思って枝刈り入れるといいかもね。
正規化するルール作って、回転対称とか軸対称とかで刈っちゃう。
んで、それぞれの局面を正規化して探索する、と。
0294デフォルトの名無しさん
NGNG樹形図しか理解できないんで、勉強してきます・・・
0295デフォルトの名無しさん
NGNG力技つってもたいしたことないな(w
ただ、それをどう評価するかを考えるのが楽しそうだ。
0296295
NGNG9!は362880か。
ただこれでも力技いけそう。
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0299すみません
NGNG#include<stdib.h>
#define juand() ((double)rand()/(32767.0+1.0))
void main()
{
double z;
int i;
srand(2);
printf("自分の名前の入力\n");
for(i=1;i<10;i++){
z=jurand();
printf("%4d番目の乱数は%10.7lf\n",i,z);
これを利用して、乱数10個の平均をディスプレイに
出力するプログラムを作りたいんですが、
どのようにすればよいのか全く分かりません。
どなたか教えてください。
0300デフォルトの名無しさん
NGNG三目並べも少しは面白くなるかもね。
0301デフォルトの名無しさん
NGNGsrandの引数を定数にすると結果がいつも同じ。
0302デフォルトの名無しさん
NGNGあちこちに張るなよ。ボケが。
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG酔っ払い五月蝿いよ
0305>>300を作ってみた
NGNG#define SL(i) (m[i][0]==m[i][1]&&m[i][1]==m[i][2]&&m[i][0]!=' ')
#define SC(i) (m[0][i]==m[1][i]&&m[1][i]==m[2][i]&&m[0][i]!=' ')
#define D1 (m[0][0]==m[1][1]&&m[1][1]==m[2][2]&&m[0][0]!=' ')
#define D2 (m[0][2]==m[1][1]&&m[1][1]==m[2][0]&&m[0][2]!=' ')
#define DU(i) (SL(i)||SC(i)||D1||D2)
#define PL() printf("-----\n");
#define PM(i) printf("%c|%c|%c\n", m[i][0], m[i][1], m[i][2]);
#define I(i) for(i=0;i<3;i++)
int main(void) {
char m[3][3]={},s[3],me[3]={},com[3]={};
int i,j,k,x,y;
I(i)I(j)m[i][j]=' ';
for (;;) {
fputs("手は?(x):", stdout);fgets(s,3,stdin); x=atoi(s);
fputs("手は?(y):", stdout);fgets(s,3,stdin); y=atoi(s);
if (x<0||x>2||y<0||y>2||m[x][y]!=' ')
{printf("そこには置けない\n");continue;}
memmove(me+1,me,2); me[0]=(x*4+y+1); /* player */
I(i){I(j){if(m[i][j]=='o')m[i][j]=' ';}}
I(i)if(me[i])m[(me[i]-1)/4][(me[i]-1)&3]='o';
PM(0);PL();PM(1);PL();PM(2); printf("\n");
I(i) if(DU(i)){ puts("o won");exit(1);}
I(i) I(j){if(m[i][j]==' '){x=i;y=j;goto ll;}} ll:
memmove(com+1,com,2); com[0]=(x*4+y+1); /* com */
I(i){ I(j){ if(m[i][j]=='x')m[i][j]=' '; }}
I(i)if(com[i])m[(com[i]-1)/4][(com[i]-1)&3]='x';
PM(0);PL();PM(1);PL();PM(2); printf("\n");
I(i) if(DU(i)){ puts("x won");exit(1);}
}
}
0306デフォルトの名無しさん
NGNG7行でオセロにはビビったよ
0307デフォルトの名無しさん
NGNGすごい・・・
マクロ展開したんだけど、質問。
char型の配列の宣言の要素はなんでないの?
あと、#include <stdlib.h>
#include <string.h>が必要で、
セミコロンが1個余計なとこはけーん
0308デフォルトの名無しさん
NGNGこれじゃないのかな
http://pc3.2ch.net/test/read.cgi/tech/1033143528/527
0309デフォルトの名無しさん
NGNG0310307
NGNGオレは未だに単なる3*3の○×ゲームで
思考ルーチンに試行錯誤なのに・・・
しかもif文ばっかだし。
ソース全部展開して、見やすくして
徹底的に盗んでやる!
0311307
NGNGhttp://pc.2ch.net/test/read.cgi/tech/984182993/336
336レス目ね
0312浦島太郎な気分。
NGNG良いでしょうか。6年前は、富士通FM−R50/S(OS MS−DOS Ver 3.3)というマシンで、
F−BASIC、Quick C、MASMを使っていました(アセンブラはほんのお遊び程度)。
ネット、Windowsはおろか、ハードディスクさえ無い環境でしたので、いざ再開せん、と
意気込んだは良いのですが、当時のPC環境とのあまりの違いに、何をどうしたらよいのやら全く
分かりません。
0313デフォルトの名無しさん
NGNGBorland C++ Builderにしとけ。
0314デフォルトの名無しさん
NGNGWindows 対応のコンパイラでコンソールアプリケーションを選べば、「昔」 と
ほぼ同じ感覚でプログラミングできる。
ウィンドウアプリは 「猫」 でも見ながら追々。
http://www.kumei.ne.jp/c_lang/
ただし C# なら 1 から始めるくらいの気持ちの方がいい。
0316デフォルトの名無しさん
NGNGこの場合puは値を返さない関数へのポインタってことなんでしょうか?
それはそうと"1"ってなんですか?
FreeBSDのソースでみかけたんですが
わからなくて困ってます
0317デフォルトの名無しさん
NGNG1を値を返さない関数へのポインタにキャストしているのかな?
なんでpuと書いてあるのかわからないけど。
0318デフォルトの名無しさん
NGNGvoid foo(void){}
void bar(void){ return foo();}
は合法とされているんでしょうか?
教えてください。
0319デフォルトの名無しさん
NGNGよくわからん。
VC6 と gcc-2.95 ではコンパイルエラーになる。
0320デフォルトの名無しさん
NGNG何がいけないと思うの?
0321デフォルトの名無しさん
NGNGあ、一般的なコーディングでこういうのって出て来るものですか?
C++で合法なのは知っていますが、Cではどうなのかなと。
プリプロセッサもどきを作成していて、こういうことが
したくなったのですが移植性が気になって。
0322321
NGNG(-_-)
0324デフォルトの名無しさん
NGNG320 は、つまりどうしてそういう疑問を持つ事になったのか訊きたかっただけだけど。
書き方は悪かった、すまん。
移植性が気になるようなプリプロセッサを作るなら、規格書ぐらい自分で
読めなきゃダメだろう。
ISO-C-FDIS.1999-04.pdf
6.8.6.4 The return staatement
| 1 A return statements with an expression shall not appear in a function
| whose return type is VOID. A return-type statement without an expression
| shall only appear in a function whose return type is VOID.
void 型の関数で、エクスプレッションのある return は使っちゃダメだとさ。
逆に、エクスプレッションの無い return は void 型の関数のみで使えと。
「with an expression」 って、「戻り値のある」 って訳していいのかな?
漏れも英語苦手なんだから、英文読ませないでくれ。
PDF 検索しる。
あと、C++ で合法って何故?? 何が根拠?
0325324
NGNGで、探したら PDF でなくて TXT のバージョンがあるからそっち使ってくれ。
# Acrobat Reader って何でコピペできないんだよぅ・・・
0326デフォルトの名無しさん
NGNG> 「with an expression」 って、「戻り値のある」 って訳していいのかな?
訳すなら「引数を持った return 文」かなあ。
要するに return; はいいけど return expr; は駄目ってことなんだけど。
0327デフォルトの名無しさん
NGNG多分やりたい事は 317 だろう。
しかし、どう見ても文法エラーなんだが。
昔のコンパイラならキャストに名前が混じっててもコンパイル通ったのかな?
0328318
NGNGおおう。 調べていただいてどうもありがとうございます。C99の規格
持ってなくて・・。
C++の方ですが、ISO/IEC 14882-1998 の p.98, section 6.6.3
| A return statement with an expression of type ``cv void'' can be used only in functions
| with a return type of cv void; the expression is evaluated just before the function returns
| to its caller.
によります。templateにvoid戻りの関数オブジェクトを渡すとき、このような規格
でないと問題になるケースがいくらかあります。
ありがとうございました。
0330デフォルトの名無しさん
NGNG普通に作ったPDFはコピペできるはず
できない文書はビットマップにしてあるんかな
0331デフォルトの名無しさん
NGNGcv void 型の表現を伴う return 文は cv void 型を返す
関数でのみ使うことができる。表現は呼び出し元に戻る直前に
評価される。
よく読め。
0332デフォルトの名無しさん
NGNG318が許される理由にはなっていない?
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNGC++の話題はメインじゃないんだから粘着せんでも。
0336デフォルトの名無しさん
NGNG4個の整数集合{a,b,c,d}と{e,f,g,h}が与えられたとき
2集合の全要素の組み合わせでかつ同一でない演算をする(+,−,×,÷,論理和,論理積)
※集合の要素値の与え方は自由
組み合わせとはa+eのような2要素からなるものとする
記号16通り×6で96通りの計算をすればいいとおもうのですがC言語まったくわからないので
さっぱりです。
#include <stdio.h>
までしかわかりません
0337デフォルトの名無しさん
NGNG>>336
スレ違い。
http://pc3.2ch.net/test/read.cgi/tech/1021862587/l50
0338デフォルトの名無しさん
NGNGint hoge;
char buf[256];
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&hoge);
っていうのが出てきたんだけど
sscanfって言い換えれば
文字列bufからscanf("%d",&hoge)しろって事?
あとなんでこんな事してるの?
0339デフォルトの名無しさん
NGNGこの前も同じようなの見た。
同じ学校なのだろうか…
0340デフォルトの名無しさん
NGNG> sscanfって言い換えれば
> 文字列bufからscanf("%d",&hoge)しろって事?
まぁ、大体そんなかんじです。
> あとなんでこんな事してるの?
その本が比較的まともな本だからです。
良く読めば何でそんなことをしているのかも書いてあるはずです。
0341デフォルトの名無しさん
NGNG>>338
参考までに、この場合に限っては
fgets(buf,sizeof(buf),stdin);
hoge = atoi(buf);
の方が一般的だし、わかりやすい。
関数のそれぞれのくわしい機能は調べておいてね。
0343デフォルトの名無しさん
NGNGprintf() なんかみたいに、渡すパラメータの数が決まってないんです
0344わかりません ◆MSEEFfect2
NGNGANSI C って、なんでしたっけ。
stdarg.h はあるなら、va_list 使う。
ない場合は、以下で逝って世し。
宣言
void myprintf();
定義
void myprintf(int a, int b, int c, int d, int e, int f, int g, int h, int i)
{
}
0345デフォルトの名無しさん
NGNG多分、君のやりたいことはC FAQ 15.4: or 15.5: で解決する。
http://www.catnet.ne.jp/kouno/c_faq/c15.html
0346デフォルトの名無しさん
NGNG<stdarg.h> は ANSI で定義されてたと思う。
0347343
NGNGやってきます
0348デフォルトの名無しさん
NGNG・C言語で開発している爺
・グローバルな変数はあまり使いたくない志向
・文字列”名前”を渡し、加工後に決められたコントロールにて表示という以下の関数を作成
void SetHogeName(HWND, LPSTR);
今までなんの疑いもなくこういう組み方をしていたんだけど、ある日気がついたんだ。
SetHogeNameって結構あちこちから呼び出しているんだよね。
で、コンパイルエラーが出ない範囲でHWNDやLPSTRを指定し間違えると、潜在バグってことになるよな?
ここで思ったんだが、どうせHWNDやLPSTRに指定するデータなんぞ出所は決まってるんだよ。
つまらんバグを回避するなら、いっそのこと必要データはグローバル変数に持っておき、SetHogeNameからグローバル変数にアクセスしに行けば良いんじゃないかと。
一応、グローバル変数って簡単に書き換えることが出来るという点で危険が残るのでよ、書き換える場合はアクセッサでも通してやれば良いかと思った。
ちょっとデムパ入ってるかのぅ?
C++なお年ごろ?
勘違い?
0349デフォルトの名無しさん
NGNG#include <stdio.h>
int main(
int argc,
char * argv[ ]
)
{
if (argc !=3)
printf("wrong no. of arguments\n");
else
{
printf("Sum: %d\n", atoi(argv[1]) + atoi(argv[2]));
}
return 0;
}
このプログラムを改良して。引数より少ない正整数で割りきれるものをすべて列記する。
プログラムを開発せよ。
例
a.out22なら
22は11で割りきれる
22は2で割りきれる
22は1で割りきれる
だれかお願いします。
0350デフォルトの名無しさん
NGNG20は10で割りきれる
20は5で割りきれる
20は4で割りきれる
20は2で割り切れる
20は1で割り切れる
引数より少ない正整数で割りきれるものをすべて列記する。
プログラムを開発せよ。
0351デフォルトの名無しさん
NGNG>>350
ヒント:素因数分解
0352デフォルトの名無しさん
NGNGもっとヒントプリーズ
できれば答えも
0353デフォルトの名無しさん
NGNGグローバル変数では無く、ファイルスコープのstatic変数にしろ。
でアクセサ経由でstatic変数にアクセスしろ。
これで意味が分かるか?
0355352
NGNGぎぶあっぷ
どうでもいいや俺の宿題じゃないし
0357デフォルトの名無しさん
NGNG君のレベルが知りたい
質問1:素数は知っているか。
質問2:任意の数が素数であることを判定するプログラムが作れるか?
質問3:任意の数の最大公約数を求めるプログラムが作れるか?
全部の質問にyesならば素因数分解するプログラムも作れるはずなのだが。
0358355
NGNG質問1にのみイエス
C言語は必須じゃなかったから去年あきらめたんだよ。
だから君のことは少し尊敬かも。でも無事卒業したよ。
0359デフォルトの名無しさん
NGNG�@1とそれ自身以外で割り切れない数
�A枝切りしながらやる
�Bこれも枝切り
よって、高枝切りばさみが必要
0360デフォルトの名無しさん
NGNG氏ね
>>357
�@握りこぶし位の大きさで、湿気の多い所にある
�A中火で5分、弱火で10分コトコト煮込む
�Bアニメ「一休さん」のさよちゃんによく似ていた
0361デフォルトの名無しさん
NGNG猫でも・・・を見ていたらエスケープシーケンスってのが出てきたから
やってみたんだけど、実行結果が
[2j
こういう風になって、全然画面が変わらない!
ちなみにソースは
#include <stdio.h>
int main()
{
printf("\x1b[2j");
return(0);
}
です。
色が変わったりするのも、何も起きなかったし。
OS XPで、BCC使ってます。
何か原因わかります?
0362デフォルトの名無しさん
NGNGたしかXPはエスケープシーケンスは使えなかったと思う。
0363デフォルトの名無しさん
NGNG( ̄□ ̄;)!!
まじっすか!?
ふざけんなビルゲイツ( ゚Д゚)ゴルァ!
できねーじゃねーか( ゚Д゚)ゴルァ!
アア・・・マジ切ないよ
やる気なくすよ・・・。
VC++なら出来ますか?
0364デフォルトの名無しさん
NGNGconfig.ntにansi.sysをデバイスドライバ登録すればいいじゃん。
0365教えて厨
NGNG4個の整数集合{a,b,c,d}と{e,f,g,h}が与えられたとき、
二集合の全要素の組み合わせで、かつ同一でない演算をする
プログラムを作る
(演算とは+−×÷、論理和、論理積)
集合の要素値の与え方は自由
「組み合わせ」とはa+bのような二要素からなるものとする
0366351
NGNG#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int n, i;
if(argc != 2 || (n = atoi(argv[1])) == 0)
{
printf("数値を入力してください\n", argv[0]);
return 0;
}
for(i = n - 1; i > 0; i--)
if((n % i) == 0)
printf("%dは%dで割り切れる\n", n, i);
return 0;
}
0367教えて厨
NGNGおながいします
0368デフォルトの名無しさん
NGNG第58章 コンソールアプリで文字色を変える
ってので色変えるヨロシ。
0369デフォルトの名無しさん
NGNGごめん!全然わからんw
こことか?
http://mayu.als.jp/XPcom/wxp_conf.html
これって、MS-DOS使ってやるの?
なんかダウンロードする必要ある?
0370デフォルトの名無しさん
NGNGこの板の何処かに同じような問題を見たなぁ。
答えも書いてあったような...
0371教えて厨
NGNG0372デフォルトの名無しさん
NGNGでもオレVC++でなくてBCCだから・・・
bccじゃ出来ないよね・・・?
0373デフォルトの名無しさん
NGNGhttp://www.tim.hi-ho.ne.jp/gonbuto/memo/nt-esc.txt
とりあえずこれやってみます。
0374デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1021862587/889-
>>372
bccでも可。
0375デフォルトの名無しさん
NGNGstep1:config.ntにansi.sysを追加。
step2:config.ntの最後に"dosonly"と追加。
step3:command.comを起動。
※NTのコマンドプロンプトはcmd.exeです。command.comはsystem32に含まれています。)
step4:エスケープシーケンスを含むバッチを実行。
ってあったんだけど、ステップ3のって
XPでいうとコマンドプロンプトなのかなあ
>>374
できる!?コンソールアプリね。
調べてきます
0376デフォルトの名無しさん
NGNGできたあ!ありがとうございます。
エスケープシーケンスはまだ出来ないけどw
再起動しないとダメなのかな。
で、質問なんだけどもw
コンソールAPIって、Win32APIみたいなものっすか?
windowsヘッダをインクルードしてるし・・・。
でもbccじゃWin32API使えないよね!?
0377デフォルトの名無しさん
NGNG> bccじゃWin32API使えないよね!?
MFCが使えないだけで、win32api SDKは使うことができます。
つまり、猫でも〜のSDK編に載っているapiは全て使える。
0378デフォルトの名無しさん
NGNGそうだったんですか!!
VC++だったら全部できるんだよね?
かおっかなー。でもまだまだだからいいや。
0379デフォルトの名無しさん
NGNGすいませぬが・・・
http://www.kumei.ne.jp/c_lang/sdk/sdk_25.htm
にあるソースをこぴって実行しようとしたら
エラー E2034 graph.cpp 25: 'void *' 型は 'HBRUSH__ *' 型に変換できない(関数 __stdcall WinMain(HINSTA
NCE__ *,HINSTANCE__ *,char *,int) )
というエラーが4つも出てきたよー!!
やっぱ何かがおかしい・・・
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNGbcc32 -tW xxx.cpp
ってやればできるよ。
0382デフォルトの名無しさん
NGNGC++としてコンパイルすると確かにそのエラーが出てくる
hoge.cpp をhoge.cにして
bcc32 -W hoge.c
でコンパイルすると
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
hoge.c:
警告 W8057 hoge.c 31: パラメータ 'lpszCmdLine' は一度も使用されない(関数 WinMain )
警告 W8004 hoge.c 79: 'y' に代入した値は使われていない(関数 ShowText )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
こんな警告が出てくるけどコンパイルと実行はできる。
0385デフォルトの名無しさん
NGNG> でもC++ではだめで、Cならできるってどういう事
俺も良くわからん。
以下のスレの方がもう少し詳しい回答をもらえそうな気がする。
タダで使えるBorland C++ part2
http://pc3.2ch.net/test/read.cgi/tech/1030493157
0386デフォルトの名無しさん
NGNGC++はそれだけ厳格だってこと。
0387デフォルトの名無しさん
NGNGint *ip;
ip=vp; // CだとOKでC++だとだめ。
ip=(int *)vp; // これならどちらでもOK
0388デフォルトの名無しさん
NGNG数字の0とは何が違う?
0389デフォルトの名無しさん
NGNG勘弁してください。
0390デフォルトの名無しさん
NGNG改行してもEOFまでひたすらとりこむ関数
0391デフォルトの名無しさん
NGNGfreadで出来ると思う
0392デフォルトの名無しさん
NGNGどもやってみます
0393デフォルトの名無しさん
NGNG/*学籍番号 02C1075 氏名 山下祥隆*/
/*作成日10月10日*/
#include <stdio.h>
int main(void)
{
int num1;
printf("あなたの年齢を入力してください。\n");
scanf("%d",&num1);
double num2;
double num3;
printf("あなたの身長と体重を入力してください(センチ、キログラム)。\n");
scanf("%lf",&num2);
scanf("%lf",&num3);
printf("あなたの年齢は'%d'です。\n");
printf("あなたの身長は、%lf、あなたの体重は%lfです。\n");
return 0;
}
すいません、他の板に書いたら不適切だとのご指摘を頂いたのでこちらに
カキコさせていただきます。二重カキコになりますがお許しくださいm(__)m
上記のプログラムを実行したらランタイムエラーが起きて、
プログラムがうまく実行できません。エラーは0なんですが・・・。
ご指導をいただけたら幸いですm(__)m
0394デフォルトの名無しさん
NGNG下の二つのprintf()で引数が足らない。
あと、板ではなくスレね
作成日から20日たってるけど全然間違いに気付かなかったのか、とか突っ込みどころ満載だけど…。
#トリップ忘れてた…
0396デフォルトの名無しさん
NGNGご返答ありがとうございますm(__)m
申し訳ありませんが引数とは何でしょうか?
わかりました、次から気をつけます。
0397デフォルトの名無しさん
NGNGおお!仲間ハケーンだ。
とりあえずVS.NETの学割版かなぁ・・・
0398デフォルトの名無しさん
NGNGあー面毒さw
0399デフォルトの名無しさん
NGNGしまった・・・それ自分のじゃないんです・・・聞かれてコピーしてしまいました・・・
その部分は見なかったことにしてやってください(T^T)
0400デフォルトの名無しさん
NGNGprintf("あなたの年齢は'%d'です。\n" , num1 );
/* %dで指定したら変数を指定しる! ↑ ここ。 */
printf("あなたの身長は、%lf、あなたの体重は%lfです。\n", num2 , num3);
/* ここも上と同じで%n.mが二つあるから二つ指定する。 ↑ここと↑ここ。*/
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNGとかいうのがあったとしまして
引数二個しかとらないfunc()関数をプログラム中から探し出すとき
$grep 'func(.*,.*)' unko
ってやったら引数2個どころじゃない行が該当します
任意の文字列に「,」を含めない正規表現はどーかけばいいですか?
0403デフォルトの名無しさん
NGNG出来ました!本当にありがとうございましたm(__)m
解答していただいた皆様本当にありがとうございましたm(__)m
0404デフォルトの名無しさん
NGNGここはC言語のためのスレッドです。
C言語とは何の関係もないんじゃ…
とりあえず /func([^,]+,[^,]+)/ でいいんじゃないの?
func("a, b", 10)とか出せないけど。
0406402
NGNGありがとうございます
0407デフォルトの名無しさん
NGNG・ヌルポインタは、ポインタが何も参照していない事を示す為に使う。
・ヌルポインタは、副作用無しに free delete できる。
・定数の "0" は、文脈によってヌルポインタ、または整数の 0 として解釈される。ただし、可変長引数、またはプロトタイプをもたない関数の引数に現れた場合は、整数の 0 として解釈される。
また、整数型とポインター型とで多重定義している関数の引数では、解釈は実装依存となる。
・ヌルポインタのビットパターンは実装依存である。
・条件式にヌルポインターが現れた場合、偽となる。
・ヌルポインタとヌルポインタとは等しい。
・ヌルポインタとその他のポインタとは、常に等しくない。
・ポインタ型によりヌルポインタのビットパターンが異なる場合があるが、コンパイラは(騙されない限り)正しい型を知っているので、比較は正しく行われる。
・NULL は 定数 "0" がヌルポインタとして解釈される場合のみ、定数 "0" の代わりに使用できる。他の文脈では、結果が実装依存となる。
(NULL を整数 0 の代わりに使用してはいけない)
・NULL の定義方法は実装依存である。(#undef NULL は合法)
0408デフォルトの名無しさん
NGNGオレはとりあえずVC++のアカデミック買うよ
たぶん1万2千くらいなはず!
フリーはなんだかんだいってフリーだからね
ボーランドごめん!
bccをサンクス・・・
0409デフォルトの名無しさん
NGNGよくchar型の配列strを宣言してるソースとかに
char str[256];
ってあるけど、
この256は2の8乗だよね?
分かりそうで分かんない256の意味をテルミー!
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGバッファを2の乗数倍にしておくと、処理によっては早くなるケースも
あるけど、ほとんどの場合、意味は無いんじゃない?
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG検索しる
http://www.wdic.org/
0417デフォルトの名無しさん
NGNG256mosukareru
0418417
NGNG0419デフォルトの名無しさん
NGNG#define SWAP(a,b) {int temp;temp=a;a=b;b=temp;}
こんなの作ったとするしょ?
で、ソース中に
SWAP(data[left_index],data[right_index]);
こんな風に出てきたら、セミコロンが余計でないの?
あとこの場合はコンマ演算子使えないよね。
でも例えば
#define putsa(str) (putchar('\a',puts(str))
putsa("警告!!");
とかはコンマ演算子使えるしょ?
この二つの違いってなんだ?
0420デフォルトの名無しさん
NGNG普通は
#define SWAP_INT(a,b) do { int temp = a; a = b; b = temp } while( 0 )
ってするね
0421デフォルトの名無しさん
NGNG;;;;;;;;;;;;;;;;;;;;;;;;;;;;
と書いてもエラーにはならない罠。
0422デフォルトの名無しさん
NGNGえ?(プロトタイプ宣言をしていれば)putchar('\a',puts(str))はエラーになるでしょ?
引数が多すぎるって・・・
関数の実引数リストのコンマはコンマ演算子とは別物のはず。評価される順番は保証されていないし。
0423422
NGNGそうかputchar('\a'),puts(str);と書きたかったのか。
0424419
NGNG空文ってことか。だったらなくてもおkだよね?
>>423
ごめん。まちがった。その通りです。
あとさ、>>490のは
#define SWAP_INT(a,b) {do { int temp = a; a = b; b = temp } while( 0 )}
って書かなくていいん?
>>422
オレが持ってる本に載ってたソースなんだけども
「こういうときはコンマ演算子を使いましょう」
って感じで紹介してるよ。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGつか、do..while()に終端の ; が無いからコンパイラが文句言うだろ
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGNULLはvoid *だったため。
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG要らない。428 のようなコードはクソ。
C++ ではきちんとしたキャストが必要だけど、NULL が型を持ってないから
結局キャストは要らない。
0432デフォルトの名無しさん
NGNG>要らない。428 のようなコードはクソ。
早く寝な(藁
0433428
NGNG>>431
はい。C++では <cstddef> で #define NULL 0 ですね。
0434デフォルトの名無しさん
NGNG混ざっているはずなので、まずC FAQを読むべし。
0436デフォルトの名無しさん
NGNG自信がない奴は読んどいた方がいいよ。
おそらく「そうだったのか」と思うだろうから。
0437デフォルトの名無しさん
NGNG悪いのは全部C/C++のせい。
0438デフォルトの名無しさん
NGNG> #define SWAP(a,b) {int temp;temp=a;a=b;b=temp;}
>>424
> #define SWAP_INT(a,b) {do { int temp = a; a = b; b = temp } while( 0 );}
if(a < b)
SWAP(a,b);
else
a = b;
と書いた時、文法エラーになる。
420 が正しい。
>>424
> 「こういうときはコンマ演算子を使いましょう」
その本のタイトルを晒したのち、すぐさま燃やせ。
コンマ演算子は何の役にも立たず、ソースを見にくくするだけの機能しかない事が
既にわかっている。
0439デフォルトの名無しさん
NGNGあと、誤解をさも真実のように言いふらす生兵法馬鹿が
過去に大勢いたせい、というのもあるねえ(ワラ
0440428
NGNGCでは 0 か ((void*)0) にdefineされるんでしょう?ならキャスト不要では。
0441デフォルトの名無しさん
NGNG勘違いしているのはあなたのせい。
プログラムが動かない時、すぐ処理系のせいにする DQN が多くて困る。
一体何でつまずくんだか。
0442デフォルトの名無しさん
NGNG言語仕様書を読むことにつまづくんだろうよ(ワラ
0443428
NGNG0444デフォルトの名無しさん
NGNGその通り。
432 のような DQN が、428 のようなクソコードを書く。
真に優れた人は char *p = 0; と書く。
0445デフォルトの名無しさん
NGNGそら思いっ切り処理系じゃなくて読む人のせいだ。
0446デフォルトの名無しさん
NGNG0447428
NGNG0448デフォルトの名無しさん
NGNGそりゃ意味が違うとおもうが・・・
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNGお前がまず読め
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGお前がまず嫁
0455デフォルトの名無しさん
NGNGそのコードは C じゃなくて C++ だから話が違う。
>>453
DQN。
0456デフォルトの名無しさん
NGNGどこがC++?
0457456
NGNG0458デフォルトの名無しさん
NGNGpascalとDelphiぐらい違います。
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNGわかってないから言ってるんです。
0461デフォルトの名無しさん
NGNGじゃぁ何番が何をわかってないのか書いて(はぁと)
0462デフォルトの名無しさん
NGNG皆さんがCとC++は別物ということをわかっていない。
0463デフォルトの名無しさん
NGNG相手にすんのやめよ・・
0464デフォルトの名無しさん
NGNGそうそう。さっさと去れ。
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG変数の初期化に非定数を指定するのは C では OK なのか?
0469456
NGNG返答願う。
0470455
NGNGいや、そう思って VC6 で試したら、477 のコードが通ってしまうので規格見てた。
C99 では 6.7.8 の 4 で 「constant expressions or string literals」 って
書いてある。
ANSI ではどうなんだ?
0471デフォルトの名無しさん
NGNG0472428
NGNGあら、ごめん。>>448 の宣言と使用は別行ってことにしてください。
でも、gccの3.2で gcc -Wall -ansi -pedantic でも何も警告されんなぁ。
0473455
NGNGそうか、じゃあ多分 ANSI では OK だったんだな。
ちなみに今しがた DOS の MS-C6 で試したけど、やっぱり通ったよ。
C++ ならもちろん OK なんだよな。
0474428
NGNG勉強になりましたサンクスコ
0476428
NGNG0478428
NGNGだれかの突っ込みを待ちまつ。
0479455
NGNG初期化は定数!!初期化は定数!!
0480デフォルトの名無しさん
NGNG寝つきがわるいのか?お子様は突然置きださないでちゃんと麻まで寝なさい。
0482デフォルトの名無しさん
NGNGじゃあまずは&演算子の優先順位から何とかしてくれ。
0483419
NGNG関数形式マクロってのは、ただ単純に展開するだけだよね。
>>438が書いてる
#define SWAP(a,b) {do { int temp = a; a = b; b = temp } while( 0 );}
if(a < b)
SWAP(a,b);
else
a = b;
ってのは、展開して
if(a < b)
{
do
{
int temp = a;
a = b;
b = temp
} while( 0 );
}
else
a = b;
こういう風には解釈されないの?
というか、わざわざdo{}while()で囲んであるのに、更にそれをブロックで囲んだのは誰?
if(a < b)
{
do
{
int temp = a;
a = b;
b = temp
} while( 0 );
}; /* <- セミコロンが!*/
else
a = b;
0485デフォルトの名無しさん
NGNGif(a < b)
{
do
{
int temp = a;
a = b;
b = temp
} while( 0 );
};
else
a = b;
こう展開されるのでは?
0486419
NGNGそうなるねw
でさ、今>>483に書いたソースでやってみたら
if(a < b)
SWAP(a,b)
こうやって、最後の;はずしたらできたんだ。
Cって文末には;がいるけど、この場合は例外?
でも好ましくはないよね?
だとすると、ソース中にセミコロンがつくように
マクロの部分を調整するのがベスト?
0487デフォルトの名無しさん
NGNG0488419
NGNGオレがやったのはこういうの
#include <stdio.h>
#define putsa(str) {do{putchar('\a');puts(str);}while(0);}
int main(void)
{
int na;
printf("整数を入力してください:");
scanf("%d",&na);
if(na)
putsa("その数は0ではありません。")
else
putsa("その数は0です。")
return(0);
}
これならおkだった。
あとさ、マクロの部分は{}をつけなきゃだめなんでないの?
それとも複文のときのみ?
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGその意見を持つヤツに恐ろしく汚いコードを書くヤツは少なくない。
0495デフォルトの名無しさん
NGNG>>438
>>494
マクロで複数ステートメント書きたかったら、do { } while(0) は定石。
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG参照とインライン関数ってなんか関係あるんですか?
って言うか最近のインライン関数ってほとんどregister変数とかと同じ扱いでは?(初めからか・・・)
0500デフォルトの名無しさん
NGNGregisterは指定してもレジスタに割り当てられるけど、
inlineは指定しないと、インライン展開されないでしょ。
0501デフォルトの名無しさん
NGNGないよりましと。なるほど。
0502デフォルトの名無しさん
NGNG○registerは指定しなくてもレジスタに割り当てられるけど、
0503498
NGNGC++ なら関数でも SWAP(a, b) って書き方できるでしょ。
C だと SWAP(&a, &b) って書かなきゃいけない。
それだけ。
ちなみに、最近のコンパイラでは register というキーワードは単に無視してるみたい。
あと、inline 指定しても内容が長かったり呼び出しが多かったり関数ポインタを得てる
場合はインライン展開されない。
頭のいいコンパイラは、inline 指定してなくてもインライン展開する事もある。
というか、C では inline はキーワードじゃないけど。
0504デフォルトの名無しさん
NGNG0505503
NGNG0506デフォルトの名無しさん
NGNG配列とか使ってやるの?
でも1兆だったらたとえば、
int vc[4]={1,0000,0000,0000};
ってやっても、無駄だよね。
charが使えないからなー。どうしたらいい?
0507デフォルトの名無しさん
NGNG意味が分からない。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNGでもintしか使えないから無理だなあって
0510デフォルトの名無しさん
NGNG0511また貴様か!&rlo;!ろり懲はし少 &lro;
NGNG/ \ \
∧_∧/
(;´Д`) i i i
/ ヽ _ i i i--、
./| | | |  ̄ ̄ ̄ |:::::|.
/ \ヽ/| | ノ__ノ..
/ \\| |
/ /⌒\ し(メ .i i i . .
/ / > ) \ ノノノ
/ / / / .\_ ザックザック
し' (_つ /:::::/::... /ヽ
; "ノ・ ./∴: / )i iヽ-、_へ ,ヘ
'',, : :―― / / i i i iヽ . ̄ ゙― ノ /
n_ _/; i .ノ / /ノ-' ̄ ゙ ― 、__ノ
_ノ 二二二、_( _Д_ ;)-ヽ_ノ-'>>506
゙ー ''~ ∨ ̄∨
0512デフォルトの名無しさん
NGNGでええんちゃう。無駄が多いかもしれんが。
0513デフォルトの名無しさん
NGNGsizeog(int) >= 8 の処理系を使う。
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGそれでやったら0000ってただの0に解釈されんの?
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGつーかよくしらねーんだが。
0520デフォルトの名無しさん
NGNG正確にはゾーン 10000 進だが。
つーか、ここはネタスレか?
0521デフォルトの名無しさん
NGNGてかそんな難しい話じゃないと思うよ。
まだ1ヶ月ちょっとしかたってないうちに
出された課題だからさ
0522デフォルトの名無しさん
NGNG人ごとみたいないいぐさ。
いいキャラだね。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG一ヶ月でもう授業についていけなくなってるのか。
かわいそうに。
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG時間かかるけど。メモリーの許す限りの数を扱えるからな。
0528デフォルトの名無しさん
NGNG桁を増やすたびにreallocするの?
0529デフォルトの名無しさん
NGNG多倍長なんて習ってねーんだよ
なのいいきなり出しやがって、あのやろー。
無理なんでないの、こんなの。
お前らから、あのハゲにそう言ってやってくれ。
だってまだ授業じゃ関数の作り方すらやってねーんだもん
0530デフォルトの名無しさん
NGNGくれぐれもプログラマは目指さないでくれよ。
0531デフォルトの名無しさん
NGNG多倍長整数、関数使ったほうがすっきりするけど、全部 main() でも
書けない事無いでしょ。
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGあめーな、今出来た。お前よりは頭いいんだよボケ
#include <stdio.h>
int main(void)
{
int vc1[13]={1,0,0,0,0,0,0,0,0,0,0,0,0};
int vc2[13]={1,0,0,0,0,0,0,0,0,0,0,0,0};
int vc_data[13];
int s;
int up_s=0;
int i;
for(i=12;i>=0;i--)
{
s=vc1[i]+vc2[i]+up_s;
up_s=0;
if(s<10)
vc_data[i]=s;
else
{
vc_data[i]=s-10;
up_s=1;
}
}
for(i=0;i<13;i++)
printf("%d",vc_data[i]);
return(0);
}
0534デフォルトの名無しさん
NGNGC初めて一ヶ月のオレに何も教えてやれないなんてw
頭のデキがちげーんだよ
特に>>530
煽る事しか能がねーw
ぷ
0535デフォルトの名無しさん
NGNG何桁ごとにreallocするかのか?という発想が欲しいね。
64byte(128桁)ごとに確保していたプログラムを打った。
0536デフォルトの名無しさん
NGNGgetche()・・・?
0537デフォルトの名無しさん
NGNGinlineに展開しないのは、あとは再帰関数かな。
0538デフォルトの名無しさん
NGNG2ちゃんねらーよりあなたのほうがはるかにレベルが上です。
だれもあなたの質問に答えられません。
だからもうここでは聞かないでね
sage
0539デフォルトの名無しさん
NGNGバッファリングなしにするのなら、
setvbuf(pf, NULL, _IONBF, 0);
fgetchar(pf);
ってやればいいかな。
0540デフォルトの名無しさん
NGNGなに偽者煽ってるんだよ(藁
お前本当に2ちゃんねらーか?
0541デフォルトの名無しさん
NGNGsetvbufてstdio.h?
0542539
NGNGfgetchar(pf); /* × */
fgetc(pf); /* ○ */
0543デフォルトの名無しさん
NGNGそれ。処理系依存だけど。
0545デフォルトの名無しさん
NGNGfgetc() にしる。
0546デフォルトの名無しさん
NGNGサンクス!やってみる!
0547デフォルトの名無しさん
NGNG変数のこと?
0548デフォルトの名無しさん
NGNGないぞ。
0549デフォルトの名無しさん
NGNGグローバルな変数名および関数名の事。
0550デフォルトの名無しさん
NGNG多分バッファリングなしに入力ってEnterキーを押さなくても入力できる方法という意味だと思うぞ。
それなら多分setvbufじゃ無理。それとfgetcharってなによ。
0551デフォルトの名無しさん
NGNGお。そうそう。
getcharだと\nまで溜め込むしょ?
そうじゃなくて、いちいちリターン押さなくても
入力されるようにしたいのさ
0552デフォルトの名無しさん
NGNGマジ!?
多倍長整数て・・・どんなもの?
0553533
NGNG#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int vc1[13]={1}; /* 13桁の数字1 (単位は兆で、13桁目は1) */
int vc2[13]={1}; /* 13桁の数字2 */
int vc_data[13]; /* 計算結果を格納 */
int s; /* 一桁ずつ計算して、vc_dataにいれる数 */
int up_s=0; /* くりあがり(1か0) */
int i;
int t;
srand((unsigned int)time(NULL));
/* vc1とvc2にランダムで数を入れる */
for(i=1;i<13;i++){
vc1[i]=rand()%10;
vc2[i]=rand()%10;
}
0554533
NGNGfor(i=12;i>=0;i--){
s=vc1[i]+vc2[i]+up_s;
up_s=0;
if(s<10)
vc_data[i]=s;
else{
vc_data[i]=s-10;
up_s=1;
}
}
/* vc1の表示 */
for(i=0;i<13;i++)
printf("%d",vc1[i]);
printf(" + ");
/* vc2の表示 */
for(i=0;i<13;i++)
printf("%d",vc2[i]);
printf(" = ");
/* 計算結果の表示 */
for(i=0;i<13;i++)
printf("%d",vc_data[i]);
putchar('\n');
return(0);
}
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG機種依存関数を使わないとできないと思うよ。
(この問題はたしかFAQにもあった)
0558デフォルトの名無しさん
NGNGDOS/Windows なら getch() ね。
0559デフォルトの名無しさん
NGNG>多倍長整数ってのは、例えば short に対する long とでも思ってくれ。
これは違うだろ。
0560デフォルトの名無しさん
NGNGじゃあどういうこと?
以外にどこにも書いてないよ
多倍長の定義って。
0561デフォルトの名無しさん
NGNG定義はしらないけど、ネットで公開されてる多倍長整数演算ライブラリはどれも
>>533みたいに変数をいくつも使ってでかい数を計算するライブラリじゃん。
(もちろんやり方ははるかに洗練されてるけど)
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG多倍長整数の定義はC言語自体には含まれない。
処理系が独自の型として long long などを持っていたり、
gmp のようにライブラリとして存在する。
0564デフォルトの名無しさん
NGNG_dos_findfirst() in <dos.h>
スレ違い。
0565557
NGNG0566デフォルトの名無しさん
NGNGすいません。有難う御座いました。
0568デフォルトの名無しさん
NGNG勘違いされるからその表現はやめてくれ。
多倍長整数は、整数というからにはバイナリで整数だ。
「変数をいくつも使ってる」 ように見えるのは、単にデータが複数回に分けないと
アクセスできない大きさだからだ。
0570デフォルトの名無しさん
NGNGええ?
じゃあ、単にlongを使っただけで多倍長整数?
0571デフォルトの名無しさん
NGNGなってない。あれは単なるゾーン計算。
しかし、関数も教えていない学生に多倍長演算を出題する講師もまた DQN だな。
0572デフォルトの名無しさん
NGNGsizeof(long)==sizeof(short)*2 の環境ならそれでも間違いではないけど、
そもそもそれじゃ 1 兆を表現できないでしょ。
一般的に多倍長演算は、処理系で扱えないサイズの整数をなんとか扱おうという
仕組みの事を指すよ。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGshort * 3 の 48bit か、long * 2 の 64bit で計算するといいだろうね。
0575デフォルトの名無しさん
NGNG>>506
0576デフォルトの名無しさん
NGNGゾーン演算とやらで、このレポートを提出します。
みんなありがとう。
0577デフォルトの名無しさん
NGNG(ユーザーはカンマも打ち込む)(入力例:2,3)
scanf("%d"",""%d",&x,&y);
とするとうまくいきます。
うまくいくんですが、"%d"に挟まれた","が
どういう働きをしてるのか調べても本に載ってません。
コメントを書かなくてはならないので
ご存知の方どうか教えてください。お願いします。
0578デフォルトの名無しさん
NGNG可変個の引数をとるからコンパイルエラーにはならないけど、
それだと引数が多すぎるぞ。
scanf("%d%*[,]%d",&x,&y);でうまくゆくかも。
0579578
NGNGということはその三つの文字列が連結されて・・・
0580デフォルトの名無しさん
NGNG素直にこう書けばいいってことか。
0581578
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585583
NGNGありがとうございました。
0586デフォルトの名無しさん
NGNG数値にはunsigned short a[N+1];のような配列を用いる.ここでa[0]が整数部分、
a[1]からa[N]までが小数部分で、32768(=32768)進法で表す.たとえば3という値は
a[0]=3,a[1]=...=a[N]=0で表す.log[10]32768≒4.5154であるからm配列要素1個分が
10進4.5桁に相当する.したがって、10進で小数第1000位まで求めるには、N≒1000/4.5≒
222とする.(〜〜うんたらかんたら)
とか書いてあります。
「C言語による最新アルゴリズム事典」(P.179)より抜粋
本読めよ。
0587デフォルトの名無しさん
NGNGやべー持ってるw
でも意味わかんねー
勉強します
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG効率良く詰め込む感じでしょ。
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG_lwrite(fp, (LPSTR)&fh, sizeof(fh)); だと
一番左が書き込むファイルのハンドルで、2番目が良くわかんないです。
3番目がfhのバイト数の指定ってとこまでは分かってます。(間違ってたら指摘下さい)
お願いします。
0592デフォルトの名無しさん
NGNG書き込むバッファの戦闘アドレスだろうが。
0593デフォルトの名無しさん
NGNGスレ違いぽ
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG処理系依存なのは分かってるけど、小数点が入ることで
どう変わるのかなって分かんない
0596デフォルトの名無しさん
NGNGIEEEフォーマットだと、
struct ieee_double {
u_int dbl_fracl;
u_int dbl_frach:20;
u_int dbl_exp:11;
u_int dbl_sign:1;
};
なので
-(2^52)*2^2047 〜 +(2^52)*(2^2047)-1
かな?
0597デフォルトの名無しさん
NGNG<float.h> の DBL_??? の定義を見てください。
DBL_DIG が 10 進での有効桁数。
表せる範囲は DBL_MIN 〜 DBL_MAX です。
0598デフォルトの名無しさん
NGNGstruct hoge hoge_data {
bind: hoge_bind,
accept: hoge_accept,
ioctl: hoge_ioctl
};
てな構造体定義があったんですけど、この
bind:
のコロンの意味は何でしょうか?
今までこんな書式見たことない・・・制御系の基本なんだったらすみません。
0599デフォルトの名無しさん
NGNGビットフィールドじゃないの?この文脈なら。
0600デフォルトの名無しさん
NGNGbcc32でうまくいきません。
「)がありません」とか「構文エラー」とか「ひきすうが多すぎる」とか
でるのですが、どこがいけませんか?
勘違いをたぶんしてるとおもいますが。
struct Player
{
long money;
long game_num;
/* 省略。longとintしかない。 */
int luck;
}
void play()
{
plyr1.money -= 500;
printf("%ld\n",plyr1.money);
return;
}
int main()
{
Player plyr1;
plyr1.money = 10000;
play(&plyr1);
return 0;
}
0601598
NGNGOSはLinuxっす。
ioctlを呼んでいる部分はあるんすけど、hoge_ioctlとかpochi_ioctlとか…
宣言されている同種類(と思える)関数は、どこからも呼ばれている形跡がないので
もしかして上の構造体宣言は、システムコールをハックするような特別な記述なのかなーと
思ったんですが、社内誰も「そんな書式知らん」なんですよ。
>>599
早レスありがとうございます。
ビットフィールドは
型 変数名:ビットサイズ;
と違いましたっけ?
0602デフォルトの名無しさん
NGNGvoid play()
play(&plyr1);
この2行に違和感を感じないのが不思議だ。
0603デフォルトの名無しさん
NGNGあ、ゴメソ。
void play(Player *player)
です。
0604デフォルトの名無しさん
NGNGあ、ゴメソ。
void play(Player *player)
です。
#age忘れスマソ。
#つーかインデントを に置換しときゃよかった。
0605デフォルトの名無しさん
NGNG回線切れたw
0606デフォルトの名無しさん
NGNGvoid play(Player *player)
void play(Player *player)
0607デフォルトの名無しさん
NGNG{
plyr1->money -= 500;
printf("%ld\n",plyr1->money);
}
0608デフォルトの名無しさん
NGNGこれって構造体定義じゃなくて、変数宣言なんじゃねーの?
bindは構造体のメンバで、メンバを指定し、初期化できる仕様が
あるという話をどっかできいたようなきかなかったような…
0609598
NGNG回答どうもです。
ん〜、変数で同名のものは見当たらないので、関数へのポインタであると
思ってました。
何にせよ、 bind: のコロン部分の意味がわからない。
付けても付けなくても同じとかゆー ふざけたもんではないと思うし。
今日中にわからないと上司に頃されるわけではないので
どなたか・・・月曜までに(休出)何らかのヒントを・・・でないと犯頃しにされるかも。
0610デフォルトの名無しさん
NGNGstruct hoge {
int a;
int b;
int c;
};
struct hoge hoge_data = {
a: 1,
c: 2
};
みたいなことができるよ。少なくともgccでは。
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNGこれがstructつけてもダメなんです。。。
ゴルァって思ってたらソース消してもた
#しかもShift-Delでゴミ箱残ってないw
#どうせクソコードだからいいよ、いいよw
0613デフォルトの名無しさん
NGNG{
long money;
long game_num;
/* 省略。longとintしかない。 */
int luck;
};
最後に;をつける。
0614デフォルトの名無しさん
NGNGなんかいろいろ意見がでてるが、gccの拡張仕様だよ。それ。
>>608と>>610が正解。
gccのinfoが参照可能なら、C Extensions -> Labeled Elements を見てみましょう。
0615デフォルトの名無しさん
NGNG初めて見た。gccはんなこともできるのか。
0616デフォルトの名無しさん
NGNGソース消えましたが、こんど作ったときにやってみます。
さんくすこ。
0617デフォルトの名無しさん
NGNGstruct hoge hoge_data = {
a = 1,
c = 2
};
とかだったらいいのに。
0619デフォルトの名無しさん
NGNG0621598(609)
NGNG>>610
>>614
おおう! 知識人さん情報ありがとうございます from 無知人
ううむ・・・拡張仕様でつか。
それで再度確認してみます。
これで上司に頃されないですむ・・・しかも今日中にヒントが得られたと言って
安心させることができる!
と思ったら、さっきトイレ行ってた間に上司帰ってしまって鬱。。。
0622デフォルトの名無しさん
NGNGstruct hoge hoge_data = {
a := 1,
c := 2
};
0623598(609)
NGNGioctlやbindってのは、構造体ではなくてlinuxのシステムコール関数のはずなんですが・・・
余計わけわからん(T−T
GCCの解説ページでも探して、解決目指します。
情報どうもでした(引き続き何か情報あればお願いします・・・まだまだ帰れそうにないので)
0624598(609)
NGNGてことは、システムコール関数へのポインタとユーザー関数へのポインタを
結びつけて、結果的にシステムコール関数が呼び出されたらユーザー定義の
関数へ流れるよう、ハックしていることになるのかいな???
あーむず。10分ほど休憩しよう。。。
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGhogeのioctlが関数へのポインタか、何かの変数なのか調べる。
0628598(609)
NGNG拾ったのはGNUとして公開されている某通信系のソースコードで、基本的な概念の説明としてテキストファイルがちょこっと同梱されている以外は
ソースコード内にもコメント一切なし(あっても、 ret = xxx; /* set return code */ 程度)、で泣く泣く解析しているところなんです。
Linux板の某スレで超初心者として質問したこともあり・・・。初Linux・初通信系・初デバイスドライバで頭壊れそうですわ。
んで、その定義部分。
/* Protocol family operations */
struct proto_ops rpf_ops = {
family:PF_AFFIX,
release:rpf_release,
bind:rpf_bind,
connect:rpf_connect,
socketpair:sock_no_socketpair,
accept:rpf_accept,
getname:rpf_getname,
poll:datagram_poll,
ioctl:rpf_ioctl,
listen:rpf_listen,
shutdown:sock_no_shutdown
setsockopt:rpf_setsockopt,
getsockopt:sock_no_getsockopt,
sendmsg:rpf_sendmsg,
recvmsg:rpf_recvmsg,
mmap:sock_no_mmap
};
これ以上の説明なし。 なんとかなるかいな〜
0629デフォルトの名無しさん
NGNGttp://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Designated-Inits.html#Designated%20Inits
struct point p = { .y = yvalue, .x = xvalue };
is equivalent to
struct point p = { xvalue, yvalue };
Another syntax which has the same meaning, obsolete since GCC 2.5,
is fieldname:, as shown here:
struct point p = { y: yvalue, x: xvalue };
0630デフォルトの名無しさん
NGNGThax.
> >> 607は無視か?
なんかgcc関連の話題で見過ごしてた。ス
0631デフォルトの名無しさん
NGNGstruct proto_ops は include/linux/net.h にあるみたいやね。
http://rainbow.mimuw.edu.pl/SO/Linux/Kod/include/linux/net.h.html
ほとんど関数だし、こっちでつくった関数をカーネルにわたすんじゃない?
0632デフォルトの名無しさん
NGNGプロトコル毎に関数のポインタを構造体にしてるだけじゃないのか?
下位部分から rpf_ops->bind(...) みたいにして使うんでしょ。
パッと見ただけでわかるやん…
0633デフォルトの名無しさん
NGNG該当するのかしないのか??
0634デフォルトの名無しさん
NGNG何を言ってるの?
0635デフォルトの名無しさん
NGNG(,, ゚д゚) ┳┳┳┳┳
0636デフォルトの名無しさん
NGNG例えば、その配列の添字に使うために特別に用意したtypedef enumを使えば、その
タイプを添字に使う限りはいいと思うのですが、そうではなく、もっと一般的に、汎
整数型の添字を使った場合に、コードの中で検査しなくても自動的になんらかの対策
をとる方法はありますか?
0637デフォルトの名無しさん
NGNGスマートな回答は無い。
配列を直接扱わず、配列を操作する関数を作る事ぐらいしかできない。
あるいは、C を諦めて C++ に移行する。
0638デフォルトの名無しさん
NGNGどういう対策をとりたいのかによって
返事は変わってくると思われ。
0639デフォルトの名無しさん
NGNGoperator[]を定義して、添え字の値次第で例外を投げるとかにすれば?
0640デフォルトの名無しさん
NGNG境界線チェックをきちんとするということ?
なら>>637がいうように関数をつくることしか・・・・
そういえばC++ Primerの配列クラスの作成のところにまさにそんなものがあったような。
0641デフォルトの名無しさん
NGNGなにを言っているのかわかりませんが? と突っ込んでみるテスト
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNGデバッグが難しくなるから、素直に core 吐いて落ちてくれる方がマシだ。
0644デフォルトの名無しさん
NGNG>636には理解できたろうか?
0645デフォルトの名無しさん
NGNGgoto label;
a[n];
label:
0647デフォルトの名無しさん
NGNG当たり。でも 643 参照。
実際のところは 645 にして、エラー処理をするべき。
0648デフォルトの名無しさん
NGNG&を入力されると、
test1=1&test2=2&3 (test2に2&3を入れた)
のようになり、うまく切り分けることができません。
&の時はエラーを出すようにするしかないんでしょうか?
0649デフォルトの名無しさん
NGNG%2fに変換しろ
0650デフォルトの名無しさん
NGNGん、それってブラウザの問題じゃないの。
URLエンコーディングしてないってことでしょ。
そんなブラウザあるの?
0651デフォルトの名無しさん
NGNGconst char *strの違いがよく分からん。
上のは「srcは、キャラ型への読み出し専用のポインタ」で、
下のは「srcは、読み出し専用のキャラ型へのポインタ」?
違いが全然わかんねー。だれか分かりやすく教えてくり。
0652デフォルトの名無しさん
NGNG上は src = NULL; とするとエラーになる。
下は *src = 'A'; とするとエラーになる。
0653デフォルトの名無しさん
NGNGconst char*はポインタの指す値を変えられない。char* constはポインタの指す
値は変えられるがポインタそのものは変えられない。
0654デフォルトの名無しさん
NGNGhttp://member.nifty.ne.jp/maebashi/programmer/pointer.html
0655デフォルトの名無しさん
NGNG( (char *) const) src; ポインタがconst
( (const char) *) str; charがconst
( (char const) *) str;の方が対比としてはわかりやすいかも。
「後置の*はconstより優先度が低い」と覚えればよい。
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGこれと同じように考えればいい。
つまり char * const p; は (* (const p)) であり、p そのものを変更する事はできない。
p が指す先を変更する事はできる。
一方 char const * p; は (const (*p)) であり、p そのものは変更する事ができる。
p が指す先を変更する事はできない。
そして char const * const p; は (const (* (const p) ) ) であり、p も p が指す
ものも変更できない。
なお const char * p; は char const * p; と全く同一である。
654-655 の説明は、かえってわかりにくいと思う。
「ポインタ演算子と同じく右から順に結合する」 と覚えればよい。
0658デフォルトの名無しさん
NGNGchar const **p; // 1
char *const*p; // 2
char **const p; // 3
pへの代入がエラーになるのはどれ?
*pへの代入がエラーになるのは?
**pへの代入がエラーになるのは?
0659デフォルトの名無しさん
NGNGhttp://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
0660デフォルトの名無しさん
NGNG俺はとりあえず通常通り切り出して、必要なキーをもつ値が見つからなければエラーにするようにしているよ。
0661デフォルトの名無しさん
NGNGpへの代入がエラーになるのは3
*pへの代入がエラーになるのは2
**pへの代入がエラーになるのは1
0662デフォルトの名無しさん
NGNGじゃあ
char const *p1, *p2;
はどう説明するんだYO
0663デフォルトの名無しさん
NGNG配列名はリードオンリーのポインタだという意見はなしで。
0664デフォルトの名無しさん
NGNGそれってchar (const *p1), *p2; って意味でしょ。
0665デフォルトの名無しさん
NGNGCのrand関数を使って乱数を取得したときに5桁の整数が最大になってしまうのですがなぜでしょうか?
7桁の乱数を取得したいのですが・・・
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG> 5桁の整数が最大になってしまうのですがなぜでしょうか?
そういう仕様だからしかたないよ。
0668デフォルトの名無しさん
NGNG自前でrand()作れ。
0669デフォルトの名無しさん
NGNG(long)rand() * RAND_MAX + rand()とかすれば?
0670デフォルトの名無しさん
NGNGそれじゃ、出目が偏るでしょ。
0671651
NGNGconst考えるときは型名排除して考えるって感じかな。
ところで上の二つの書き方はどっちの方が好ましいの?
0672666げt
NGNG0673デフォルトの名無しさん
NGNGrand() が返す値は 0 〜 RAND_MAX です。
RAND_MAX は <stdlib.h> で定義されています。
0674デフォルトの名無しさん
NGNGそうか?
0675デフォルトの名無しさん
NGNGどっちでもいい。
ただ漏れの意見としては、const が頭の方が定数である事を強調してていいと思う。
0676デフォルトの名無しさん
NGNG違うよ。
char const *p1, *p2;
p1もp2もchar const *だよ。
0677デフォルトの名無しさん
NGNGそしたら
char const *p1, const *p2;
って書いたらエラー?
0678デフォルトの名無しさん
NGNG(int)(
((double)rand() * (RAND_MAX + 1) + rand())
/ ((RAND_MAX + 1) * (RAND_MAX + 1) - 1)
* 1000000000.0
)
0679デフォルトの名無しさん
NGNGオレもそう思う。
読むのは慣れれば自然にわかるようになるから
書きやすい方でいいと思うよ。
オレは*const pとか使ったこと全然なかったから、
ずっとconstを先頭にもってきてた
0680デフォルトの名無しさん
NGNGdouble det(const double matrix[][N]); // 書き換えないのでconstつけた
これでdet(a)と呼ぶと警告が出るんだけど、どうするのが正しいの?
0681デフォルトの名無しさん
NGNGエラーだよ。
だから>>657に納得できないの。
0682デフォルトの名無しさん
NGNGどんな警告?それでいいんじゃないの?
0683デフォルトの名無しさん
NGNG良くないらしい。
warning: passing arg 1 of `det' from incompatible pointer type
0684デフォルトの名無しさん
NGNGそれって、RAND_MAXがたとえば0x10000だったら、うまく動かないでしょ。
0685デフォルトの名無しさん
NGNGhttp://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/letsc/6-body.html
これを書いた香具師はアフォか?
0686デフォルトの名無しさん
NGNGどんなコンパイラ?gcc3.2だとエラー出ないぞ。
0687デフォルトの名無しさん
NGNG間違いなくアフォです。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG出目に偏りがでるよ。
0690デフォルトの名無しさん
NGNGgcc 2.95.3ではでないぞ(-Wallもつけた)
0691690
NGNG>>683です。
0692デフォルトの名無しさん
NGNGchar const *p1, const *p2;
parse error before `const'
gcc 2.96
0693デフォルトの名無しさん
NGNGもちろん rand() を 2 回呼ぶ事で偏りは大きくなるけど、それは RAND_MAX が
いくつかどうかは全く関係無いでしょ。
0694665
NGNGどうすればいいのでしょうか。アドバイスお願いします。
0695デフォルトの名無しさん
NGNG自分で乱数発生関数をかく。
0696デフォルトの名無しさん
NGNGつーか、RAND_MAX+1って、たとえば0x7fffみたく+1して、
(2進数で)桁上がりする数値を想定してるでしょ。
たいていの処理系はそうだろうけど、そういう保証はないし。
0697デフォルトの名無しさん
NGNG乱数の生成ルーチンは検索すれば、いいのが見つかるんじゃないの?
0698デフォルトの名無しさん
NGNG出るよ。-Wallつけなくても。
それに、出て当然だ。
const T *とT *はcompatibleだが、
const T **とT **や
const T *[N]とT *[N]はcompatibleでないから。
0699デフォルトの名無しさん
NGNGgcc3.2でも警告でないんですけど・・・・
0700デフォルトの名無しさん
NGNGRAND_MAX+1が2のべき乗でないと、
2つの一様分布乱数を足し合わせることになって、
一様分布でなくなる。
0701デフォルトの名無しさん
NGNG一万円程度も出して買う価値ありますか?
0702デフォルトの名無しさん
NGNGgcc-2.96.1とegcs2.91とVC++6.0とSun Forte 6.0では警告でマシタ。
0703デフォルトの名無しさん
NGNGありません。フリーのを使いましょう。
0704デフォルトの名無しさん
NGNGということはgcc3.2の-Wallって糞?
0705デフォルトの名無しさん
NGNG> 桁上がりする数値を想定してるでしょ
してないよ。何で?
範囲が 0 〜 RAND_MAX の場合、発生する乱数の数値の数は常に (RAND_MAX + 1)
でしょうが。
まず手始めに、RAND_MAX == 2 くらいだった時のケースを考えてみなさい。
0706デフォルトの名無しさん
NGNG2 進数で考えるなよ。
(RAND_MAX + 1) 進数で考えろ。
0708デフォルトの名無しさん
NGNG>でしょうが。
わけわからん…
0709デフォルトの名無しさん
NGNG>>665
(int)(
((double)rand() * ((double)RAND_MAX + 1) + rand())
/ (((double)RAND_MAX + 1) * ((double)RAND_MAX + 1))
* 1000000000.0
)
0710デフォルトの名無しさん
NGNG(RAND_MAX+1)が2のべき乗じゃなくて、かつ
RAND_MAX*(RAND_MAX+1)がdoubleの有効桁より大きかったら?
0711デフォルトの名無しさん
NGNG誰が確保して誰が開放しているの?
グローバル変数?
0712デフォルトの名無しさん
NGNG桁落ちするね。
0713デフォルトの名無しさん
NGNGdouble det(const double matrix[][N]) { return 0.0; }
double a[N][N];
int main()
{
det(a);
return 0;
}
これで本当に警告でないの?
0714デフォルトの名無しさん
NGNGその場合はそもそも 665 の質問が出てこない。
>>711
グローバル変数。
static で確保されている。
勝手にいじりまわしたりしないように。
0715デフォルトの名無しさん
NGNG出る。defineの前に#がない。・・・・・
というのは冗談で、-Wallにしても本当にgcc3.2(MinGW)では通ります。
0716デフォルトの名無しさん
NGNGstaticな領域へのポインタを返す。
だからリエントラントでないし、2回呼んだら前の値は壊れる。
0717デフォルトの名無しさん
NGNG(define の # は置いといて)
0718デフォルトの名無しさん
NGNG>まず手始めに、RAND_MAX == 2 くらいだった時のケースを考えてみなさい。
RAND_MAX が 2 で下記の計算を実行したら、
(rand() * (RAND_MAX + 1) + rand())
出目の確率はそれぞれ下のように偏るよ。
0=50%
1=25%
2=0%
3=25%
0719デフォルトの名無しさん
NGNGint main()
{
const char **p;
char **p2;
p = p2;
return 0;
}
0720デフォルトの名無しさん
NGNG>>698参照
0721デフォルトの名無しさん
NGNGそれは警告出ました。
invalid conversion from 'char**' to 'const char**'だそうです。
0722718
NGNG0723デフォルトの名無しさん
NGNGRAND_MAX == 2
↓
(RAND_MAX + 1) == 3
↓
rand(/*1*/) * (RAND_MAX + 1) + rand(/*2*/)
0 * 3 + 0 = 0
0 * 3 + 1 = 1
0 * 3 + 2 = 2
1 * 3 + 0 = 3
1 * 3 + 1 = 4
1 * 3 + 2 = 5
2 * 3 + 0 = 6
2 * 3 + 1 = 7
2 * 3 + 2 = 8
何で結果の範囲が 0 〜 3 なわけ?
0724718
NGNGすまん。
頭の中で % 2でやってしまった。
0725デフォルトの名無しさん
NGNGconst 値を非 const 仮引数に渡すのはダメだけど、
非 const 値を const 仮引数に渡すのが何故いけない?
0726デフォルトの名無しさん
NGNGいけなくないと思うが・・・
いけなかったら
char s1[1024],s2[]="abc";
strcpy(s1,s2);
とかできないし。
0728デフォルトの名無しさん
NGNG↓ちなみにこれですと警告出ません。
int main()
{
const char *const*p;
char **p2;
p = p2;
return 0;
}
0729723
NGNG(RAND_MAX + 1) 進数で考えた時、
rand(/*1*/) * (RAND_MAX + 1) は必ず 2 桁目になり、rand(/*2*/) は必ず
1 桁目となって絶対にぶつからず、足し合わされる事は無い。
なのに、そんなに偏りが出たりするわけ?
それと、2 のべき乗か否かは分布に何の関係があるの?
0730デフォルトの名無しさん
NGNGなぜかは知らんが↓のように決まっているらしいYO
void f(char const **);
void g(char * const *);
int main()
{ char *p;
f(p); // NG
g(p); // OK
return 0;
}
0731デフォルトの名無しさん
NGNG>>655
0732デフォルトの名無しさん
NGNGdoubleじゃなくて、長い整数で計算するのかと思ったんだよ。
>rand(/*1*/) * (RAND_MAX + 1) は必ず 2 桁目になり、rand(/*2*/) は必ず
>1 桁目となって絶対にぶつからず、足し合わされる事は無い。
整数なら2桁目の計算が溢れたときぶつかるよね。
0733デフォルトの名無しさん
NGNGBEGIN
WHILE *s1++ == *s2
DO IF *s2++ == 0
THEN return(0);
FI
OD
return (*--s1 - *s2);
END
これは何をやっている処理なのでしょうか?
0735デフォルトの名無しさん
NGNG1 億光年スレ違い。
0736デフォルトの名無しさん
NGNG#define END }
0737デフォルトの名無しさん
NGNG何じゃこの言語は?
0738665
NGNG0739デフォルトの名無しさん
NGNGまちがえた。
char **p;
0740デフォルトの名無しさん
NGNG#define DO ){
#define OD }
#define IF if(
#define THEN ){
#define FI }
0741733
NGNGCですが、何か問題がありますか?
0743デフォルトの名無しさん
NGNGCをPascalのソースのようにみせかけるマクロ群か?(w
0744デフォルトの名無しさん
NGNGstrcmp() と同じ処理。
でも、そのようなソースを書く香具師は足蹴りにしていい。いや、そうすべきだ。
0745デフォルトの名無しさん
NGNG{
while (*s1++ == *s2)
if (*s2++ == 0) return(0);
return (*--s1 - *s2);
}
0746デフォルトの名無しさん
NGNG単にstrcmpを少し効率悪くコーディングしただけだと思うが。
0747デフォルトの名無しさん
NGNGCだとこうなのかな?
int compare(char *s1, char *s2)
{
while( *s1++ == *s2) {
if(*s2++ == 0) return 0;
}
return *--s1 - *s2;
}
0748デフォルトの名無しさん
NGNGとりあえず >>709 でしのげ。
乱数の内容に不満があるなら、Web で乱数ライブラリを探せ。
0749723
NGNGすまん、レス見落としてた。
> 整数なら2桁目の計算が溢れたときぶつかるよね。
了解。
ただし、その場合は >>714。
で、
> 2 のべき乗か否かは分布に何の関係があるの?
これには答えてくれぬのかのう、>>700 の人。気になるんだが。
0751デフォルトの名無しさん
NGNGいや、単に2のべき乗なら、(RAND_MAX+1)かけるかわりに
左シフトすれば、下位はぶつからなくなると思っただけです(敬語)
0752751
NGNG0753デフォルトの名無しさん
NGNGchar random_=rand(20)+rand(20)*20;
とかだったりすると、
取り得る最高値が、399で、mod(256)かかった時に、
399-256=143
143以上(少しずれるのかも)の値が出にくいと言う偏りが出るって事ですよね。
RAND_MAXとchar,int,longのずれが偏りを産むような。
0756デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
#include <time.h>
#define RAND_NUM ((double)RAND_MAX + 1)
int main()
{
unsigned r, i, cnt[10];
srand(time(NULL));
start:
memset(cnt, 0, sizeof(cnt));
for(i = 0; i < 2000000; i++)
{
r = (unsigned)( (rand() * RAND_NUM + rand()) / (RAND_NUM * RAND_NUM) * 1000000000.0);
cnt[r / 100000000]++;
}
for(i = 0; i < 10; i++)
printf("%u ", cnt[i]);
putchar('\n');
goto start;
return 0;
}
0757753
NGNG例えだよ。
実数型であれば問題無い。と思う。
0759756
NGNG乱数の結果の 1 〜 7 桁目について、0 〜 9 のそれぞれの出現回数をサンプリングする。
試しに実行したけどまあまあなばらつき。各要素が 100000 付近に落ち着く。
#define RAND_NUM ((double)RAND_MAX + 1)
int main()
{
unsigned r, i, j, cnt[10];
unsigned div[7] = { 1000000, 100000, 10000, 1000, 100, 10, 1 };
srand(time(NULL));
start:
for(i = 0; i < 7; i++)
{
memset(cnt, 0, sizeof(cnt));
for(j = 0; j < 1000000; j++)
{
r = (unsigned)( (rand() * RAND_NUM + rand()) / (RAND_NUM * RAND_NUM) * 10000000.0);
cnt[r / div[i] % 10]++;
}
printf("%u: ", i + 1);
for(j = 0; j < 10; j++)
printf("%u ", cnt[j]);
putchar('\n');
}
putchar('\n');
goto start;
return 0;
}
0760751
NGNGポインタの代入やパラメタ渡しの際には、変数と値がcompatibleであるか、
値が変数へconversionできる必要がある。
const TへのポインタとTへのポインタはcompatibleでない。
TへのポインタはT constへのポインタにconversionできる。
なので、char ** 型の値((char*)へのポインタ)は、
char *const *p ((char *)constへのポインタ型変数)には代入できるが、
const char **p ((const char)*へのポインタ型変数)に
代入することは出来ない。
同様に、double (*)[N] ((大きさNのdouble配列)へのポインタ)は、
double const (*)[N] ((大きさNのdouble constの配列)へのポインタ)
に代入できない。
ISO-C99規格の6.3.2.3と6.7.3を参照。
0761デフォルトの名無しさん
NGNG#define N 10
typedef double T[N];
double det(T const * matrix) { return 0.0; }
T a[N];
int main()
{
det(a);
return 0;
}
0762デフォルトの名無しさん
NGNG「なので」 の前と後ろが全然繋がっていない。
FDIS 1999 の 6.3.2.3 と 6.7.3 のどこを見ればそんな解釈ができるんだ?
「なので」 の後ろの部分のように判断した文を引用してくれ。
>>761
まず、コンパイラは何を使っているか晒してくれ。
0763デフォルトの名無しさん
NGNG漏れの使っているどのコンパイラでも警告出ないよ。
コンパイラは何を使ってるの?
0764デフォルトの名無しさん
NGNG1 つ減らして考えてみようか。
typedef char* LPSTR;
> char ** 型の値((char*)へのポインタ)は、
> const char **p ((const char)*へのポインタ型変数)に
> 代入することは出来ない。
LPSTR* 型の値(LPSTR へのポインタ)は、
const LPSTR *p (const LPSTR へのポインタ型変数)に
代入することは出来ない。
・・・何でだよ。
↓はどうなった?
> TへのポインタはT constへのポインタにconversionできる。
0765デフォルトの名無しさん
NGNGおいおい。const LPSTR *はLPSTR const *と同じなんだから、
char * const *だろう。
0766デフォルトの名無しさん
NGNGLPSTRへのポインタはLPSTR constへのポインタにconversionできるよ。
>const LPSTR *p (const LPSTR へのポインタ型変数)に
これはLPSTRへのconstポインタ型変数であって
(const LPSTR)へのポインタ型じゃない。
0768デフォルトの名無しさん
NGNG>char *const *p ((char *)constへのポインタ型変数)には代入できるが、
>const char **p ((const char)*へのポインタ型変数)に
>代入することは出来ない。
typedef char *T; としよう。
T*はT const *へconversionできるが、const char **へはconversionできないし
compatibleでもない。Tとconst char *は別の型だから。
わかった?
0769760
NGNGポインタの代入ができるのは、
6.5.16.1 (1) both operands are pointers to qualified or unqualified
versions of compatible types, and the type pointed to
by the left has all the qualifiers of the type pointed
to by the right;
のとき。だからcompatibleでない型へのポインタは(他で許されてない限り)
代入しちゃいかんのよ。
0770デフォルトの名無しさん
NGNG> Tとconst char *は別の型だから。
const 値と非 const 値は、確かに別の型だ。
しかし、別の型だからというだけの理由で変換ができないなら、
> T*はT const *へconversionできる
のは何故だ?
> T*はT const *へconversionできるが、const char **へはconversionできないし
> compatibleでもない。Tとconst char *は別の型だから。
T*はT const *へconversionできるが、const char **へはconversionできないし
compatibleでもない。
> Tとconst char *は別の型だから。
char* が const char* に変換できないなら、char は const char に変換できないのか?
いいや違う。
char* は const char* に変換できる。
でなければ strcmp() 等はプロトタイプが間違っている事になるが、実際はそうではない。
従って char** は const char** に変換できる。
> だからcompatibleでない型へのポインタは(他で許されてない限り)代入しちゃいかん
それは了解。
だが、char* が const char* に変換できないとはどこに書いてある?
0771770
NGNGchar** は、const char** の役割を充分に果たす。
なのに compatible でないと言いきるのか?
(逆は成り立たないが)
0772デフォルトの名無しさん
NGNG自分の論に都合のよさそうな場所をみつくろってるだけか?
726 も無視してるみたいだし。
0773デフォルトの名無しさん
NGNG(char) * と (char) const * が別と言うなら、
(char *) * と (char *) const * も別だろう。
0774デフォルトの名無しさん
NGNG>のは何故だ?
規格にそう書いてあるから。
6.3.2.3 (2) For any qualifier q, a pointer to a non-q-qualified
type may be converted to a pointer to the q-qualified
version of the type; the values stored in the original and
converted pointers shall compare equal.
>> Tとconst char *は別の型だから。
>char* が const char* に変換できないなら、char は const char に変換でき
>ないのか?
>いいや違う。
>
>char* は const char* に変換できる。
>でなければ strcmp() 等はプロトタイプが間違っている事になるが、実際はそ
>うではない。
T * → T const *はOKなので、
char * → char const *はOKだよ。(T=char)
char ** → char *const *もOK。(T=char*)
char ** → char const **はダメ。(Tをどう置いてもうまくいかない。)
>だが、char* が const char* に変換できないとはどこに書いてある?
どこにも書いてないよ。
>char** は、const char** の役割を充分に果たす。
>なのに compatible でないと言いきるのか?
規格は言いきってるね。
6.7.6.1 (2) For two pointer types to be compatible, both shall be
identically qualified and both shall be pointers to
compatible types.
0775760
NGNG760で書いたのは「conversionできる」「compatibleである」ことを定義した箇所。
768で書いたのは「compatibleでないと代入しちゃいかん」と判断した根拠。
0776760
NGNG>>760で書いた
>ISO-C99規格の6.3.2.3と6.7.3を参照。
の重要な部分は>>774に示したから、>>762にも答えたことになると思う。
0777760
NGNG>(char *) * と (char *) const * も別だろう。
compatibleではない。
しかしconversionできる。>>774の通り。
0778770
NGNG個人的には、char * → char const * の時点で valid で、それ以上いくつ
ポインタがネストしても OK のような気はするんだが・・・。
規格書じっくり読んでみる。
0779760
NGNG実際、const char **にchar **を代入すると警告出るだろ?
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNGそうなの?
なんて書いてあるの?
0782770
NGNGところが、VC6 ではそのままスルー。
今 gcc で試したら警告出た。
あれと思って VC6 の方で拡張子を c から cpp に変えたら、警告じゃなくて
エラーになった。
もしかして、ANCI C では OK だったんじゃないか?
だとしたら、漏れらが OK だと思い込んでいたのも頷ける。
0783デフォルトの名無しさん
NGNGこれ最強!!これ最強!!
0784デフォルトの名無しさん
NGNGま、警告を抑制するためだけとかのキャストは最強にクソだわな。
0785デフォルトの名無しさん
NGNGでもしかたない場合もあるよ。
例えばstrchrの中でreturnする時。
あれはキャストするしかないよ。第一引数の型はconst char *と決まっているんだから。
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGんなわきゃない
786みたいなド素人は #define {static,const,reinterpret}_cast(type,expr) ((type)(expr)) とでもしてなさいってこった。
078860cm浮き上がるストレート
NGNGVC++.netのことはよくわかりませんが、Cのを使ってもいいならこんな感じ?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
long land(long);
int main(void)
{
printf("7桁の乱数は %ld です\n",land(7));
return 0;
}
long land(long keta)
{
long a,b,c,r/*,d,e*/;
srand(time(0));
for(a=1,b=1,r=0;a<=keta;a++,b*=10)
{
/*e=rand()%10;
for(d=0;d<=e;d++)
rand();*/
c=rand()%10;
r+=b*c;
}
return r;
}
0789こういう考え方は?
NGNG#include <stdlib.h>
#include <time.h>
long land(long);
int main(void)
{
printf("7桁の乱数は %ld です\n",land(7));
return 0;
}
long land(long keta)
{
long a,b,c,r/*,d,e*/;
randomize();
r=floor(((double)random(RAND_MAX/*+1?*/)/RAND_MAX)*10000000l);/**/
return r;
}
0790789
NGNG<time.h> 要るっけ?
0791ダメっぽいな
NGNG#include <stdlib.h>
#include <time.h>
#include <math.h>
long lrand(long keta)
{
long r;
r=floor(((double)random(RAND_MAX)/RAND_MAX)*10000000l);
return r;
}
int main(void)
{
long r1;
randomize();
printf("7桁の乱数は %ld です\n",r1=lrand(7));
printf("7桁の乱数は %ld です\n",r1=lrand(7));
printf("7桁の乱数は %ld です\n",r1=lrand(7));
return 0;
}
0792デフォルトの名無しさん
NGNGrand()%10 を使ってる時点で DQN。
理由は Web に転がっている。
>>789-791
未定義の randomize() や random() を使うな。
いいから >>759 を試せ。
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG適切なヘッダはインクルードした?
0795デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
#include <time.h>
0797デフォルトの名無しさん
NGNGif( aaa | bbb | ccc )
の、aaa~cccの評価の順番はどうなりますか?
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNGttp://www-ccs.ucsd.edu/c/express.html#sequence%20point
0800デフォルトの名無しさん
NGNGhttp://www.sharp.co.jp/corporate/rd/journal-78/13-5-3a.htm
こういうハードウェア設計システムでつかわれる拡張(?)C言語では
C言語に演算のビット幅指定やローテート命令が拡張されているのですが、
普通にCでプログラムを組んでいてもそういうビットがらみの演算って必要なことがありますよね?
俺はインラインアセンブラでやっているのですが、正直、エレガントでないと思うこのごろ。
ポータブルに書くためにはどうしたらいいのでしょうか?
0801デフォルトの名無しさん
NGNGそれぞれ何か適当なメッセージを表示する aaa() bbb() ccc() 関数を作れば
一目瞭然です。
0802デフォルトの名無しさん
NGNGビットにそれぞれ意味を持たせるなら構造体のビットフィールド。
そうでなく単にシフト等を行う場合はむしろインラインアセンブラの方が
スマートです。
C にはローテイトがありませんし。
0803デフォルトの名無しさん
NGNGやっぱインラインアセンブラですか。
いままで Z80, 6809, 680x0, x86系 しかやったこと無くて、
最近(なぜか) Power4 (OSは IBM AIX5L) でやれと・・・
制御やさんなどのために、ANSI なんかで関数群が決められているのなら、
まずそっちを実装してしまおうかと考えてたんですが。
これって俺的には Z80 使って Small C 使ってたときからの永遠の課題なんです。
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG馬鹿?
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG私は行った覚えがありません。
0808806
NGNGfopenでもですか?
勇者ですね。
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG0811806
NGNGエラー判定せずに空のファイルを作成して見に行くのか?
まさに選ばれし者
0812デフォルトの名無しさん
NGNG言われていて「fclose()がエラーの時はどうするんですか?」と
聞いたら「それはエラーにならないからチェックしないでいいよ」と
言われた……
0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG0816(;´Д`)
NGNG0817デフォルトの名無しさん
NGNGfseek(fp, 0, SEEK_END);
length = ftell(fp);
0818(;´Д`)
NGNGサンクスコ(;´Д`)
0819デフォルトの名無しさん
NGNGDOS/Windowsの上で、テキストモードでfopenしてるときは
817の方法だと、予想外の結果が返ってくることがあるので要注意。
0820デフォルトの名無しさん
NGNGfcloseでもディスクへの書き込みが発生するから
エラーの可能性は大いにあり。
その前にfflushしてるなら別だけど。
ネタの意味で書いたんだったらごめんよ。
0821デフォルトの名無しさん
NGNGCってDOS上でしか動かせないのですか?
あと、Cで作られたアプリケーションを見てみたいのですが
どこにあるのでしょうか?
0822緑茶。(ZAPONEZE) p0225-ip01kagawa.kagawa.ocn.ne.jp
NGNG0823緑茶。(ZAPONEZE) p0225-ip01kagawa.kagawa.ocn.ne.jp
NGNG失礼。Cでもwindowsアプリは作れますよ。
http://www.kumei.ne.jp/c_lang/
0825デフォルトの名無しさん
NGNG2000もXPもCで作られてるのに。
0826デフォルトの名無しさん
NGNGあー、だからダメなんだ(藁
0827デフォルトの名無しさん
NGNGこれ何て読むんですか?
アンシ?アンジ?
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNGアンジーですが何か?
0830デフォルトの名無しさん
NGNGしかし慣れないメモリ管理などは怖いので、とりあえず何事も練習だし
JavaのStringみたいなの作ってみるかな〜と思ったのですが、
メソッドに対して自分自身のポインタを渡す方法が分かりません。
これでは、せっかく自分自身を適切に扱う関数へのポインタをメンバとして持ってても、
(strをインスタンスとして)
str.strcpy( &str , "This is Test!!");
~~~ ~~~~~
になってしまい、ダサさ&バグ100倍です。
プリプロセスでまとめて……なんての以外で、なにかうまい方法はないものでしょうか?
0831デフォルトの名無しさん
NGNGCだとプリプロセスでごちゃごちゃやる以外にうまくやる方法はないと思うよ。
昔そのあたり追及してみたけど、おれには無理でした。
あるのなら教えて欲しい。
自分自身のインスタンスを渡す必要があるならC++使っといたほうがいいと思う。
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG#define invokevirtual(obj,method,...) ((obj)->vtbl->(method)(obj,...))
0834太田
NGNGmakeすると以下のエラーが出てしまいます。
make: Fatal error in reader: Makefile, line 317: Unexpected end of line seen
Makefileの間違いは見つけにくくてよく困ります。
Makefileを書く際のコツ(間違いやすいポイント)がありましたら教えてください。
0835デフォルトの名無しさん
NGNGネタだろ?
str.の.ってなんだよ。
str.いらねーじゃん。
0836デフォルトの名無しさん
NGNGchar* mystrcpy (char* dst, const char* src) { 〜 }
struct { char* (*strcpy) (char*, const char*); } str = { mystrcpy };
# 書き方あってるかちょっと自信ないけど。
0837830
NGNGう〜む、やはりプリプロセスでやるのですか。
そこまでやってしまうと、"Cの味わい"を超えてC++になってしまいますね……
ちょっと前、本質的に安全なコンテナについて思考したときもそんな感じでした……。
>835
名前空間に関するまつわる問題の解決や、
再コンパイルなしのポリモルフィズム実現のために必要と思うのですが……
もっと他によい方法をご存知でしたらぜひ御師事ください。
0838デフォルトの名無しさん
NGNG> プリプロセスでまとめて……なんての以外で、なにかうまい方法はないものでしょうか?
> 名前空間に関するまつわる問題の解決や、
> 再コンパイルなしのポリモルフィズム実現のために必要と思うのですが……
どう見てもネタだな。言ってることが矛盾だらけだ。
OOから入った甘チャンにはCは無理だ。一生Java使っとけ。
0839デフォルトの名無しさん
NGNGまずは落ち着いてから書き込め
読みづらい
0840デフォルトの名無しさん
NGNGなぜJavaの考え方でわざわざCを使うことに拘る?
C++にした方がいいんじゃないか?
0841830
NGNGう〜む、ネタを出せるほどの能力もありません。
顔を洗って出直してきます。
>839
すみません、Cはまだ慣れてないので、これ以上整理できないのです。
>840
まず、
>今までJava野郎でしたが、その内部にも踏み込みたいのでC(not C++)はじめました。
のとおり、CでJavaっぽくするためにはどうすればいいかを理解する、のは目的です。
さらに、仕事でフレームワークを担当しているので、
「どうせならよりよく部品化・共通化してしまおう」という意思が働き、
Cの本質に反しない範囲でライブラリ的なものを整備してみようかと思ったのです。
しかし、やはり >840 さんの言うとおり、Java -> C よりも、
C++を一段挟んだほうがよさそうですね……
明日から、C++について勉強してみます。
それでは、失礼しました。
0842デフォルトの名無しさん
NGNG教えてもらえませんか?
0843デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1028653822/l50
の方がヒット率高いんじゃない?
イメージとしては
1日
2日
3日
というファイルを
1日(金)
2日(土)
3日(日)
というように編集したいのですが、、
0845デフォルトの名無しさん
NGNGwhile (一行読んでEOFじゃない) {
if (目的の行か?) {
行を編集する
それを出力
}
else {
そのまんま出力
}
}
テンポラリファイルに書いて、
成功したときのみrenameすればよろし。
元のファイルをとっとくかどうかは適宜判断してくれ。
0846デフォルトの名無しさん
NGNGawkでやったほうが早いと思われ。
0847デフォルトの名無しさん
NGNGsend(obj, message, ...)と書くなら
それほど抵抗はないんじゃないか。
それでは汎用性に欠けるので、
if(目的の行か?)
の部分を
if(読み込んだ行が日付であるかどうかを自動解析して、日付であるか?) {
曜日を自動取得して出力
}
と出来るソースを書いてみてください。
0849デフォルトの名無しさん
NGNG乱数を一万個発生させるプログラムを作りました。それで、発生させた一万個の乱数のうち
ランダムに10個出力させたいのですが、「アドレス」、「番地」という考えが
分かりません。色々と本を調べましたが、よく分かりません。
どなたか教えてください。
0851デフォルトの名無しさん
NGNGconst char const *(*foo[10])(int **P);
0852デフォルトの名無しさん
NGNGネタとしか思えんほどの複雑さだ。
0853デフォルトの名無しさん
NGNGintへのポインタのポインタを引数にとり、変更できないcharへのポインタを返す、
要素数10の関数ポインタの配列fooを宣言している。
0854851
NGNG0855デフォルトの名無しさん
NGNGhttp://science.2ch.net/test/read.cgi/math/987602293/
1
0856デフォルトの名無しさん
NGNGまず、そこに書かれている英字が読めません意味もわかりません。
0857デフォルトの名無しさん
NGNGcの上でosのコマンドを使う方法を教えてください。
ちなみにsolarisです。
system()ですか?
馬鹿全開ですいません。
0858デフォルトの名無しさん
NGNGshine(const char *)だよ。
0859sage
NGNGありがとうございます。
早速明日にでも試してみます。
0860デフォルトの名無しさん
NGNGsageの使い方間違ってるし・・・
嘘でも仕様です、とかいうなよ。
0861デフォルトの名無しさん
NGNGごめんなさい初心者なんです。
sageの使い方はこれでいいんですか?
>嘘でも仕様です、とかいうなよ。
意味わかりません。板違いなのは分かってますがさらっと教えてくださると嬉しいです。
0863デフォルトの名無しさん
NGNGいや、仕様の意味は知ってますけど・・・
つまり、この場合は『sageの使い方がわかんなかったことを、自分以外のせいにするな』ってこと?
あってたら無視してください、間違ってたら再教授お願いします。
0864860
NGNG>sageの使い方間違ってるし・・・
と言われたことに腹を立てて、(本当は知らないのに)
「知ってるよボケ」とか書き込んでくんなよという意味
ワカタカイ?
0866デフォルトの名無しさん
NGNGんなこと誰が決めたんだよ!!!
0867デフォルトの名無しさん
NGNG2chができた時から決まってんだよ???
0870875
NGNG08711
NGNG0872おながいします
NGNG「はじめてのc言語」という本の付録についていたコンパイラ
(LSI C−86VER3.30試食版)というのを使用しています。
プログラム自体はMS−DOSを立ち上げてノートパッドで書き込み
しているのですが最近エデイターの存在を知りました。
それでお聞きしたいのは使いやすいエデイターはないでしょうか?
しかも出来ればフリーのもので。
以前「1週間でマスターするPERL」という本を購入したのですが
付録のエデイターが色が何色も出ていて字の大きさも適当で使いやすいので
C言語でもこういったエデイターがあれば助かるのですが・・。
本に載っていたTeraPadというのを試してみたんですがちょっと
使いにくいです。秀丸エデイタというのが使いやすそうな感じなんですが
正直シェアウェアっていうのを使ったことが無くて。出来ればフリー
のものが良いのですが。長くなってすみません。
0873デフォルトの名無しさん
NGNGShareなら秀丸。
・・・て言うか秀丸のPASSならみんな知ってるんじゃ・・・
(教えてあげないよ)
0874デフォルトの名無しさん
NGNG0875ぽりんきー=872
NGNGそのPASSがあればただで使えるんですか?
秀丸以外でフリーでいいものないんでしょうか。
教えてください。
0876デフォルトの名無しさん
NGNG学生だったら、秀丸は無料で使えるよ。
オレは秀丸使ってるし。
あとオレはbccとCPadっていう組み合わせでやってる。
ドス窓立ち上げなくてもすぐにコンパイルとかできるから
便利だ。VC++っぽくて(・∀・)イイ!w
金ないから、フリーで固めてます
0877デフォルトの名無しさん
NGNGマジすか。期限とか機能に制限ないんすか?
0878manko_chinko ◆GLc2rpKRNM
NGNG0879デフォルトの名無しさん
NGNGNothing!!
ほとんどボランティアだよね。
0880デフォルトの名無しさん
NGNGvoid tiny_printf(char *format, ...)
{
int i;
va_list ap;
va_start(ap,format);
for(i=0;i!='\0';i++)
{
switch(format[i])
{
case 's':
printf("%s",va_arg(ap,char*));break;
case 'd':
printf("%d",va_arg(ap,int));break;
default:
assert(0);
}
}
va_end();
putchar('\n');
}
va_endの引数が間違ってるってエラーが出るんだけど
どういうこと?
int main(void)
{
tiny_printf("sdd","結果・・・",3,5);
return(0);
}
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGおれはずっとTeraPad使ってますけど何か?
0883デフォルトの名無しさん
NGNGうげー、今までプログラミングでよく使われてると聞いてたけど
シェアウェアだから全然眼中になかった。
乗り換えるかな・・・
つーか板違いだからこれで終わりにすます。教えてくれてありがと。
0884デフォルトの名無しさん
NGNGva_end(ap);
と書き直せ。
0885872
NGNGありますか?あったら一応学生なので使いたいです。
↓秀丸さんのHP
ttp://hidemaru.xaxon.co.jp/index.html
0886デフォルトの名無しさん
NGNGそりゃよかったね。はいはい。
0887デフォルトの名無しさん
NGNGいや、多分違法(秀丸)
けど、まわりの奴はそれで秀丸使ってる奴多い。
俺はTeraPadだけど。
TeraPadって拡張ファイルがフリーで出てたりするから探してみたら?
俺はCとJAVAだし、あれで充分だけど。
0888デフォルトの名無しさん
NGNGブラクラじゃないんだから直リンすれよ。
あとsageろ。
0889872
NGNGTeraPadでもいいですかね。もうちょっと調べます。
ありがとうございました。
0890デフォルトの名無しさん
NGNG自作自演だからage
0891デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/va_end.3.html
>void va_end(va_list ap);
0892デフォルトの名無しさん
NGNGでも本にあったソースをそのまま打っただけなのに・・・
なんなんだこの著者は!!
( ゚Д゚)ゴルァ!
0893デフォルトの名無しさん
NGNG著者名と書名さらしageろ!
0894デフォルトの名無しさん
NGNGTeraPadってコード書くのはいいんだけど、置換とか文字列操作が遅すぎ!
でも、愛用してるけど。
0895デフォルトの名無しさん
NGNGどっかにあったのかな・・・?
まあ大体マクロやから、通るヤツもあるやろうけど。
0896デフォルトの名無しさん
NGNG---------
●秀丸フリー制度について
秀丸エディタは、以下の方々には送金無しで使っていただけます。秀まるおのホ
ームページの「サポート」ページで必要事項を入力して申し込んでください。
秀まるおのホームページはhttp://hide.maruo.co.jp/ です。
− WINDOWS関係を扱う本や雑誌の著者の方(著書をお知らせください)
− フリーソフトウェア作者の方(ソフトを公開していることが条件)
− 学生の方で難儀している方、または学校内PCでの学生による利用の場合
(アカデミックフリー制度)
学生の方の場合で卒業後も継続して秀丸エディタを使用する場合は、そのときに
送金をお願いします。
----------
0897872
NGNG0898デフォルトの名無しさん
NGNG0899892
NGNG前橋和弥 著
C言語ポインタ完全制覇
104ページ
ほんとそのまま載せるんで、チェックきぼんぬ
0900892
NGNG#include <stdarg.h>
#include <assert.h>
void tiny_printf(char *format,...)
{
int i;
va_list ap;
va_start(ap,format);
for(i=0;i!='\0';i++)
{
switch(format[i])
{
case 's':
printf("%s",va_arg(ap,char*));
break;
case 'd':
printf("%d",va_arg(ap,int));
break;
default:
assert(0);
}
}
0901892
NGNGva_end(ap);
putchar('\n');
}
int main(void)
{
tiny_printf("sdd","結果・・・",3,5);
return(0);
}
0902デフォルトの名無しさん
NGNG通報しました。
0903デフォルトの名無しさん
NGNGこっちは合ってるじゃねーか。
お前が写し間違えたんだろ(w
0904デフォルトの名無しさん
NGNGあふぉだね。
ちゃんとこういう風に書いたら、法律的には「引用」に当たるんだよ?
覚えとけ房が
0905デフォルトの名無しさん
NGNGhttp://member.nifty.ne.jp/maebashi/seiha/seigo.html
p.104 List2-5の23行目
誤
va_end();
正
va_end(ap);
0906デフォルトの名無しさん
NGNG引用は、引用に対する評論が主でないといかんかった気がする。
0907892
NGNGえー!!
したっけ、これコンパイルして実行してみて
本には「結果・・・3 5」ってなってるから
オレはできない・・・
0908デフォルトの名無しさん
NGNG禿同。
いるよな自分の未熟を本とかのせいにする奴・・・
0909デフォルトの名無しさん
NGNGお前がな。
引用はあくまで「主文」に対する補足的な「副文」でなければならない。
お前が引用と呼ぶ他人の著作物を丸々貼り付ける行為は引用とは認められない。
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG同意。「今から宇多田の新曲全部張るぞ!」と声高らかに宣言しているに等しい。
>>910
許可を取らなくても他人の文章を載せてもよい。(>>909他いろいろ制約はある)のが「引用」の目的。
0912デフォルトの名無しさん
NGNG計算でよく使う変数をグローバルで宣言、main関数内でmallocにて領域確保
すると計算が速くなる・・・ってことになりますか?
それともコンパイラの速度重視っていうオプションで指定した方が良いでしょうか?
0913デフォルトの名無しさん
NGNG0914デフォルトの名無しさん
NGNG今のギガヘルツマシンとかだと下手な小細工したところであまり効率は上がらないと思われ。
0915892
NGNG死んできます。
0916デフォルトの名無しさん
NGNGhttp://www.melonpan.net/aboutcopyright.html
これから考えると、微妙に901は複製にあたる。
まあ、でもどっちでもいーや。
0917デフォルトの名無しさん
NGNGあ、そうっすね。ボケてました。
>>914
クラシックPentiumでも軽く・・・っていうのが目標なんで・・・。
ベンチ取りに逝ってきます。
0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNGなぜこれはちゃんと出力されないんでしょうか!!!
#include<stdio.h>
main()
{
char* color_name[]=
{
"hoge",
"piyo",
"hoge_p"
};
printf("%s\n",&color_name);
printf("%s\n",&color_name+1);
printf("%s",&color_name+2);
}
0920デフォルトの名無しさん
NGNGint main(int argc,char argv[][])
{
int (*shine)() = main;
printf("無限ループ\n");
shine(argc,argv);
}
0921デフォルトの名無しさん
NGNG出力は
hoge
oge
ge
でいいの?
0922>>921
NGNGpiyo
hoge_p
と出力されると思うんですが文字化け起こしてます。
0923デフォルトの名無しさん
NGNG取りあえず配列に対してアドレス操作するのやめなさいな。
文字列ポインタと配列は仕様が似ているだけで別の概念ですわ。
0925デフォルトの名無しさん
NGNG&coloename -> colorname[0] -> &"hoge" != "hoge"
0926デフォルトの名無しさん
NGNGmain()
{
char* color_name[]=
{
"hoge",
"piyo",
"hoge_p"
};
printf("%s\n",*(&color_name));
printf("%s\n",*(&color_name+1));
printf("%s",*(&color_name+2));
}
0927デフォルトの名無しさん
NGNGアフォですか?
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNG確実にアフォですね。
アドレス演算しないんでしょうか?
K&Rは読め無そうですね。(プッ
0930デフォルトの名無しさん
NGNG│ *char │h │o │g │e │\n│
└─────┴─┴─┴─┴─┴─┘
┌─────┬─┐ ┌─┬─┬─┬─┬─┐
│ char[] │* ├──→ │h │o │g │e │\n│
└─────┴─┘ └─┴─┴─┴─┴─┘
0931930
NGNG0932930
NGNG┌─────┬─┬─┬─┬─┬─┐
│ char[] │h │o │g │e │\n│
└─────┴─┴─┴─┴─┴─┘
┌─────┬─┐ ┌─┬─┬─┬─┬─┐
│ *char │* ├──→ │h │o │g │e │\n│
└─────┴─┘ └─┴─┴─┴─┴─┘
0933デフォルトの名無しさん
NGNGコンパイルしたんですが、文字化け起こしてます。
0934デフォルトの名無しさん
NGNG文字列の終端って\0じゃないの?
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNG俺もそう思った。
しかしニュー速+なんか引用だらけだが。
0937デフォルトの名無しさん
NGNG>変数名では
と、言うことはJavaで言うリフレクションのようなことも可能になるのですか?
0938デフォルトの名無しさん
NGNGてか素直に配列で書けと
printf("%s\n", color_name[0]);
printf("%s\n", color_name[1]);
printf("%s", color_name[2]);
0939デフォルトの名無しさん
NGNG文字列終端は'\0'。凡ミスか?
急ごしらえで作るとそーゆー目にあう。
下の奴も935の言うとおりだろう。
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG>K&Rは読め無そうですね。(プッ
時代遅れですと。
0942デフォルトの名無しさん
NGNG禿同
ANSICの規格読め
K&Rは規格化される以前に書かれてるから(当たり前だけど)
間違いっつーか、規格と違うとこがある
くそ本です
0944デフォルトの名無しさん
NGNGええ、ただの負け惜しみです。
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG次スレよろ
0951デフォルトの名無しさん
NGNGつまらん。とっとと立てれ。
0952デフォルトの名無しさん
NGNG次スレよろ
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNGC言語のことは漏れらに聞けモルァ!!<39刷>
でどう?
0956デフォルトの名無しさん
NGNGC言語だけは俺に聞くな!【サンキュー】
0957デフォルトの名無しさん
NGNGそれじゃスレ内容と全然違うだろ?
i--; /* increment i */
って書くか?
0958949
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1036409391/
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG>>955は漏れ 引き分けだな。
0961955
NGNG0962デフォルトの名無しさん
NGNGラベルの後にはなにかしら文が必要だからセミコロンが必要。
0963デフォルトの名無しさん
NGNGそうだったな。スマソ
0964デフォルトの名無しさん
NGNGTeraPadっていいよな。HTML書くときも使ってる。
でもSakuraEditも捨てがたい。
いやEmEditorのインデント機能は最高だ。
TeraPadではインデントがちょっと。。。
ちょっとあさってこよう。
0965デフォルトの名無しさん
NGNGやっぱりTpadはいいよな。
SakuraEditor,Emeditorってのは初めて聞いたな。
ダウソして見る。
あと秀丸は個人的には機能がありすぎて苦手かな。
あとVC++のエディタってどうなの?
0966デフォルトの名無しさん
NGNG> va_end();
va_end(ap);
その本、本当に引数何も書いてない?
あと、va_end の説明は読んでない?
それとも書いてない?
前者だったらあなたが DQN、後者だったら本が DQN。
0967966
NGNG逝ってくる・・・
0968デフォルトの名無しさん
NGNGマジで書いてないよ。どう見ても書いてない。
va_endの説明は、「たいていの処理系ではただのお飾り」
って書いてある。
ああ、この本失敗かーー。評判よかったのに・・・
0970デフォルトの名無しさん
NGNG> TeraPadってコード書くのはいいんだけど、置換とか文字列操作が遅すぎ!
はっきり言って、外部ツール作って置換させた方が速いよ。
外部ツールは DLL プラグインじゃなくて単なる EXE だから難しいことは無い。
作るなら ↓ の cTeraPad.h がユーティリティーライブラリ。
http://www.egroups.co.jp/files/team-terapad/C%2B%2B/cTeraPad_20020206.lzh
C++ だけど better C としてしか使ってないから C には簡単にダウングレードできる。
0971よっちゃん
NGNG教えて下さい。
0972デフォルトの名無しさん
NGNG・・・要はクソエディタってことか。
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNGC言語の本を10冊詠んでください。
0975よっちゃん
NGNG0976デフォルトの名無しさん
NGNGそして、わざわざ低機能低性能のエディタを選択する理由もない。
0977デフォルトの名無しさん
NGNGどうしたら自転車が乗れるようになるか説明できますか?
同じことです。
0978デフォルトの名無しさん
NGNG・・・に見えた。
>>975
試しもしないでいい加減と言う訳かい。
あんた一生 「C言語がよくわかる」 ようにならないよ。
漏れも C の本なら 5 冊は読んだし、C で〜〜プログラミング系の本だと
数え切れない。
Web にある解説ページも見て回った。
あんたは何もしないのかい。
つーか次スレ立ってるんだからそっち・・・いや逝くな。
0979デフォルトの名無しさん
NGNG旧すれあげるな
0980デフォルトの名無しさん
NGNG「低機能低性能エディタ」 も作れない DQN
0981デフォルトの名無しさん
NGNG確かにいい加減だ。本なんぞいくら読んでも書けるようには成らん。
一冊でいい。読みつぶせ。それだけで問題ない。
書いて書いて書きまくれ。基本がわかれば後はもう己の頭の程度の問題だ。
本ばかり読んで言語仕様には詳しいがプログラムは書けない馬鹿が多いのも事実だ。
そうならないようにがんばれ!
0982よっちゃん
NGNGありがとうございます。
0983>>844
NGNG亀レスでごめんなさい。
数千行のうち1行しか編集しない場合、非効率に感じるのですが
Cで実現するにはこの方法しか無いようですね。
取りあえず、845さんの方法でやってみます!!
>>846さん
awk()という関数があるのかと思ったら、awkって言語だったのか、、(^_^;
短いプログラムでいろいろ出来そうみたいですが、
今回はCで作ってみます(というかCしか知らないのです)。
0984デフォルトの名無しさん
NGNG可変長のファイルシステムを使っており、
行の長さが可変長であれば、
その行がディスクのどの位置にあるか
ファイルの頭から読んでみないと分からないので、
どの言語でもその方法しかない(あったりして)。
例えば一行が 256 byte 固定であれば
n 行目はファイルの先頭より 256 * (n-1) byte 目から始まることが
計算できるのでそこまで fseek(3) すればいい。
0985デフォルトの名無しさん
NGNGどちらにしろ、その行がどの行なのかは比較してみないとしょうがないかと。
0987デフォルトの名無しさん
NGNGファイルを先頭からシークすると言うことです。
固定で構いません。
リファレンスくらい引こうな。
0988デフォルトの名無しさん
NGNGボケにボケで返してどうする。
0989デフォルトの名無しさん
NGNGいい方法ってないでしょうか?
ファイルを1バイトずつ覗いて、おきかえって言う方法しかないんでしょうか・・・
0990デフォルトの名無しさん
NGNG\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
http://big.freett.com/scheme_a/num1000.swf
0991デフォルトの名無しさん
NGNGエディタであるでしょ。
0992989
NGNG処理の中のバッファファイルなんです。
既存のソフトから標準出力で受け取ると、改行コードがCRLFがLFになってしまって・・・
当方の環境は Linux + gcc です
0993デフォルトの名無しさん
NGNGライブラリを探してきたところで結局やってることは同じだと思われ。
一回は読まないとそこに改行コードがあるか否かなんて判定できないわけで。
0994デフォルトの名無しさん
NGNG0995989
NGNGperl -pe 's/\n/\r\n/' wk > wk
とやってみたんですが、
Substitution replacement not terminated at -e line 1.
と返ってきてしまいます。
後、シェルスクリプトって、system()でコールできるんでしょうか?
> 993
それしかないんでしょうか・・・(鬱
0996デフォルトの名無しさん
NGNGセミコロンがない。
0997デフォルトの名無しさん
NGNGC言語のことは漏れらに聞け!!<サンキュー>
http://pc3.2ch.net/test/read.cgi/tech/1036409391/l50
0998デフォルトの名無しさん
NGNGwhile ((c = getchar()) != EOF) {
if (c == '\n') putchar('\r');
putchar(c);
if (c == '\r') putchar('\n');
}
\r\n が \r\n\r\n になってしまうが。
0999デフォルトの名無しさん
NGNG> perl -pe 's/\n/\r\n/' wk > wk
perl -pe 's/\n/\r\n/' wk > temp; mv -f temp mk
入力ファイルにリダイレクトはできない。
> 後、シェルスクリプトって、system()でコールできるんでしょうか?
yes, でもセキュリティホールには気をつけろよ。
1000デフォルトの名無しさん
NGNGだと読み込んでる途中の wk を上書きしてエラーになるぞ。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。