C言語なら俺に聞け! Part 63
■ このスレッドは過去ログ倉庫に格納されています
0001v(^o^i)d
NGNG質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
コンパイラを探しているなら >>2-13 を。
C machineはCに非ず
上記を逸した場合の結果は激しく未定義だYO!
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/
C言語なら俺に聞け! Part 62
http://pc2.2ch.net/test/read.cgi/tech/1058754682/
0002デフォルトの名無しさん
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
0003デフォルトの名無しさん
NGNGお疲れ様でつ。
0004デフォルトの名無しさん
NGNGお疲れ〜
0005デフォルトの名無しさん
NGNGhttp://www.bohyoh.com/CandCPP/C/Library/index.html
JM
http://www.linux.or.jp/JM/
0006デフォルトの名無しさん
NGNG> http://pc3.2ch.net/tech/kako/1027/10271/1027160374.html
> 漏れも規格は有料だと思ってたけど、 JISは無料で閲覧できるように
> なってるみたい。
>
> http://www.jisc.go.jp/
> ここからデータベース→JISとたどっていって規格番号を指定すれば、
> PDFで見ることができる。ちなみにC言語はJIS X3010だ。
今はJIS検索というボタンみたい。
0007デフォルトの名無しさん
NGNGhttp://seclan.dll.jp/c99d/c99d00.htm
0008デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1058283913/
0009デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1059041347/
0010デフォルトの名無しさん
NGNGもつカレ□
0011ビル・ジョブス
NGNGchar c, t;
c = (t = rand()) % 25 + (t & 1 ? 'A': 'a');
じゃダメかな?
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG問い1 算術+のオペランドの評価順序を述べよ。
問い2 代入式の副作用完了点を示せ。
0015デフォルトの名無しさん
NGNG浮動小数点の不正な使用と言われてコンパイルできない
なんで?
#include<math.h>はやってるし、double a もしてるのに(´・ω・`)ショボーン
0016デフォルトの名無しさん
NGNG001715
NGNG^ って使えないんか?
0018デフォルトの名無しさん
NGNG使えるまで諦めるな!
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGそれはシフト演算になっちゃうから無理なんじゃ?
0021デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG| ビットごとの OR
^ ビットごとの XOR
~ ビットごとの反転(1 の補数)
<< 左シフト
>> 右シフト
002415
NGNG^= a^=b; aとbの排他的論理和をaに代入する a=a^b
^ a=b^c; bとcの各ビット毎の排他的論理和をとり、その結果をaに代入する
ということらしいですな よーわからんがw
TeX感覚でついやってしまいますた
0025デフォルトの名無しさん
NGNG問い3 アルファベットの文字数を答えよ。
0026デフォルトの名無しさん
NGNGpow(sin(a),2)+pow(cos(a),2);
これではダメぽですか??
0027デフォルトの名無しさん
NGNG問い4 (t = rand()) % 25 の値域を示せ。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG問い5 c=='b'となる確率は幾らか。
0030デフォルトの名無しさん
NGNGまさかとは思うが、
0
という答えを期待しているわけじゃないよね?
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGどうでもいいけど、常に1.0になるの関数呼ぶのか?
0033デフォルトの名無しさん
NGNGコピーしようとしてるんだけどデキマヘン。
どうしたらよかですか・・?
#include<stdio.h>
void cpy(char *x,char *y); /* プロトタイプ */
int main(void)
{
char *a,b[30];
a="aiueo";
cpy(a,b); /* cpy関数呼び出し */
printf(b);
return 0;
}
void cpy(char *x,char *y)
{
while(*x++ = *y++); /* ポインタを使ってaをbにコピー */
}
0034デフォルトの名無しさん
NGNGcpy(b,a)
0035デフォルトの名無しさん
NGNGwhile(*y++ = *x++);
0036デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNGこのように変化いたしました。
while((*x = *y)!='\0'{
x++;
y++;
}
↓
while((*x++ = *y++)!='\0');
↓
while(*x++ = *y++);
003938
NGNGwhile((*x = *y)!='0'){
x++;
y++;
}
0040デフォルトの名無しさん
NGNGコピーする方向が違うっていってんだよ
004138
NGNG失敬いたしますたああああぁぁ、消。
004238
NGNGありがとんございましたm_m
0043デフォルトの名無しさん
NGNGほぼ同じことをする関数
char *strcpy(char *destination, const char *source);
と、引数の順序をあわせておいたほうがいいよ。
0045デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int a;
a = 90;
printf("%dmin = %dh%dm\n", a, (a\60), (a%60));
return 0;
}
90min = 1h30mって表示したいんですができません
どうしたらいいか教えてください
0046_
NGNG0047デフォルトの名無しさん
NGNG> (a\60)
なによこれ
0048デフォルトの名無しさん
NGNG(a\60)←なんなんですか?
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG一部のbasicの整数除算記号と勘違いしているのでは?
この場合は単純に a / 60 でOK。
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGありがとう!
0053デフォルトの名無しさん
NGNG┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ / __/
┃ ∧ ∧___ 今 日 は ┃( ( ̄
┃ /(*゚ー゚)♪/\ ┃/)
∧ ∧ ∫ /| ̄∪∪ ̄|\/ こ こ ま で 学習し ま し た C<ニン
(. *゚)━* .| |./ ┃ ∧∧ ∧∧
/ ! ┃  ̄ ̄ ̄ ̄ 2ちゃんねる ┃ (,,゚ー゚) (゚ー゚*)
,,(_,,ノ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛〜(_,,ノ .(_,,)〜
0054C初心者
NGNG等で画面に表示された文字をファイルに書きこんだりchar型配列にコピーするには如何すれば良いんでしょうか?
0055デフォルトの名無しさん
NGNG環境によっては
popen()/pclose()、_popen()/_pclose()
が使えるかもしれない。
それ以上はスレ違いなので自分で調べられたし。
0056デフォルトの名無しさん
NGNGfilename.txtを開く
0057デフォルトの名無しさん
NGNG┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ / __/
┃ ∧ ∧___ 今 日 は ┃( ( ̄
┃ /(*゚ー゚)♪/\ ┃/)
∧ ∧ ∫ /| ̄∪∪ ̄|\/ こ こ ま で 学習し ま し た C<ニン
(. *゚)━* .| |./ ┃ ∧∧ ∧∧
/ ! ┃  ̄ ̄ ̄ ̄ 2ちゃんねる ┃ (,,゚ー゚) (゚ー゚*)
,,(_,,ノ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛〜(_,,ノ .(_,,)〜
005815
NGNG徹夜でやってたから寝ちまった...
>>26
(σ´∀`)σソレダ!!
関数で累乗の計算するんだね
>>32
昔書いたbasicのソースを移植させて勉強してる状況なんで
試しにやってるんです
ここの住人は優しいジェントルマンばかりですね
0059デフォルトの名無しさん
NGNG最初だけ名前解決に失敗して2回目からはちゃんと
成功するのですが なじぇ?(゚▽゚;
struct hostent *hoste = gethostbyname("w3.monar.net");
if(hoste == NULL){
Memo1->Lines->Add("ほすと名の解決失敗(゚▽゚;");
}
0060デフォルトの名無しさん
NGNGここで聞くのはなじぇ?(゚▽゚;
0061デフォルトの名無しさん
NGNGここはどこ?(゚▽゚;
そしてどこへ行けばいい?(゚▽゚;
0062デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1052106444/
ム板一の殺伐スレ
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG(・∀・)イイ!!戦いだった・・次は勝つ
0065デフォルトの名無しさん
NGNGはやっていなさそうなのでここにも質問させてください。
MinGW-2.0.0-3の全ソースをダウンロードしたいのですが、
どこにありますか?
006765
NGNG0068デフォルトの名無しさん
NGNGにきまってるだろ。
0069デフォルトの名無しさん
NGNGみたいなことをやりたいんですけど
どうしたらいいですか?
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGできました
ありがとうございました
0073デフォルトの名無しさん
NGNG扱いたいのですが
sizeof(long)が4でした
どうしたらいいでしょうか?
0074デフォルトの名無しさん
NGNG・sizeofが8を返す型をみつける
0075デフォルトの名無しさん
NGNGもしくは、多倍長で検索してみれ。
0076デフォルトの名無しさん
NGNGCurrentでsrcとあるもの全部。
0078デフォルトの名無しさん
NGNGいい加減にスレ違いな粘着はやめろ。
0080デフォルトの名無しさん
NGNGhttp://homepage1.nifty.com/kuuku/gcc-sjis/howtobuild.html
0081デフォルトの名無しさん
NGNG> MinGWのソースってダウンロードできるの?
0082デフォルトの名無しさん
NGNGdouble d1;
d1 = 5 / 2;
printf ("d1 = %f", d1)
これを実行するとd1が2.500000ではなく2.000000となるのは、
5にも2にも小数点とゼロが付いていないからそのまま処理された
ということでよいのでしょうか?
0083デフォルトの名無しさん
NGNGいいけど、整数同士で計算するからと理解した方がよい。
0085デフォルトの名無しさん
NGNGどうしても理解出来ないため、どなたかご教授願います。
(某Cの参考書に載っているものです)
fseek(fp, RECSIZE * (delNo + 1), SEEK_SET);
while (fread(&rec, RECSIZE, 1, fp) == 1) {
fseek(fp, -2 * RECSIZE, SEEK_CUR);
fwrite(&rec, RECSIZE, 1, fp);
}
RECSIZEは読み書きする構造体のバイト数で、
recは構造体。delNoは、削除するレコードの数え番号です。
これで正しく該当レコードを削除出来ますか?
(削除レコードから後を1つ前の位置にずらして書き込んでいく方法だそうです)
0086デフォルトの名無しさん
NGNGfseek(delNo+1) 1)AB[C]DE
while(fread(1)) 2)ABC[D]E rec==C
fseek(-2) 3)A[B]CDE
fwrite(1) 4)AC[C]DE
while(fread(1)) 5)ACC[D]E rec==C
fseek(-2) 6)A[C]CDE
fwrite(1) →4へ戻る
0087デフォルトの名無しさん
NGNGおお、ありがとうございます!
矢張り”一応”該当箇所の削除は出来るものの、挙動がおかしいですね…。
正誤表も無く、困っていました。
重ね重ねありがとうございました。
0088デフォルトの名無しさん
NGNG> 削除レコードから後を1つ前の位置にずらして書き込んでいく
ということはひとつのレコードを消した場合はファイルサイズはRECSIZE分小さくなると考えていいのか?
0089デフォルトの名無しさん
NGNGすいません。よく分かりません…。
ただ、本当に正しい挙動をする「レコードを削除するコード」であれば、
ファイルサイズはRECSIZE分小さくならなければおかしいですよね。
↑のコードだと、仮にループに陥らなかったとしても、
ファイルサイズはRECSIZE分小さくならないと思います。
それは、一番最後のレコードを読み込むだけで放置することになるからだと思うんですが…。
(的外れなことを書いていたらすみません…)
ちなみに、この某Cの参考書というのは、
「C言語 文字列操作+ファイル入出力 完全制覇」です。(一応)
0090デフォルトの名無しさん
NGNGうん。なるはずない。
必要なものだけ読みとって改めて"w"でfopenしたファイルに書き込むか、>>85のあとになんらかの方法で切り詰め(例えばUNIXならtruncate)ないとね。
009185 = 87 = 89
NGNGなるほど!とても参考になります。
ありがとうございました。
0092デフォルトの名無しさん
NGNGCとC++どっちから始めようか悩んでまつ・・・。
どっちから始めたほうがよいですかね?
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGhttp://www.urlto.net/ad01/
0095デフォルトの名無しさん
NGNG009673
NGNG2つセットで使った後
表示を10進数にするための方法がわかりません
>>75
多倍長で検索してみました
出てきたものは大体入力の時点でBCD等に変換して
数値を扱ってます
すでにあるデータは42bitで
表示のみ10進にしたいのですがどうすればよいでしょうか?
0097デフォルトの名無しさん
NGNGC99に準拠していればlong long intが使えるし。
0098デフォルトの名無しさん
NGNGdouble型は8バイトありましたが
double da=1;
da=da<<1;
とかやると
エラー E2060 test.c 6: 浮動小数点の不正な使用(関数 main )
long long int ia;
とかやると
エラー E2176 test.c 5: 宣言に型が多すぎる(関数 main )
ってでますBCC5.51です
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGdouble は整数ではないからシフト演算子は使えない。
long long int は必ずしも使えるとは限らない。
long int 2つを使って42bit整数を表すには、
下位32と上位10などビットで分ける方法のほかに、
10^8などで割った商と余りに分ける方法もある。
シフト演算などのビット演算をしたいなら前者の方が楽だが、
表示するのは後者の方がずっと楽。
私の同僚が実装した他倍長クラスは、両方のタイプを
交換して使えるようになっていたがそこまでは必要ないだろう。
0101デフォルトの名無しさん
NGNG上位10bitのそれぞれに10^8で分けたlongを持っておいて
(あらかじめ計算済みのlong配列を20持っておいて)
bitがたつごとに足し合わせて表示するってことでしょうか?
0102デフォルトの名無しさん
NGNG具体的に何がしたいんだ?
>>73を見る限りでは double 使えばいいように感じるが
0103デフォルトの名無しさん
NGNGすでにある42bit(連続でない)のデータを10進表示したいのです
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG全然具体的になってないんだが…
0107デフォルトの名無しさん
NGNG33+9です
なんでとかは聞かないでください
僕が決めたんじゃないんで
0108デフォルトの名無しさん
NGNGhttp://www5.airnet.ne.jp/tomy/cpro/longint.htm
少しはググ(ry
0109デフォルトの名無しさん
NGNG2分木を作成後に,任意の節(idを指定)のデータを木を根から
辿りながら見つけて出力できるようにしなさいって言われた。
どこをどうしたらいい?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=131
0110デフォルトの名無しさん
NGNGスレ違い。宿題スレへどうぞ。
0111109
NGNG0112デフォルトの名無しさん
NGNGデカクルトキワワシュレズニ
0113デフォルトの名無しさん
NGNG(* ゚Д゚)< #include <hosh.h>
〜( UUノ \__________
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG>__cdeclを関数の前につけると、C の名前
何か勘違いしてると思われ。
0117デフォルトの名無しさん
NGNG名前付け規約はちっとも関係ないよね
C型呼び出し規約
・パラメータは後ろ(右のもの)から順番にスタックに積まれる
・パラメータの後片付けは呼び出し側が行う
Cなんだからこんなの明示する必要ねえじゃんて思うかもしらんが、
たとえばwindowsのAPIはいわゆるPascal型の呼び出し規約だからね。
明示できたほうがよいのだ。
Pascal型呼び出し規約
・パラメータは前(左のもの)から順番にスタックに積まれる
・パラメータの後片付けは呼ばれた側が行う
x86は関数からのリターン(スタックに積まれたアドレスへジャンプ)と
スタックポインタ(SPレジスタ)の調整(パラメータの後片付け)が
一命令でできるからPascal型の呼び出し規約のほうが少し速かったりする。
windows APIがPascal型規約なのはこのあたりで少しでも性能を稼ごうとした
からじゃないかなと考えてる。
その代わり呼ばれた側がパラメータの数などについて完全に把握できなければならないので、
たとえばprintfなどのパラメータが不定な関数が実現できなくなる。
0118デフォルトの名無しさん
NGNG>たとえばwindowsのAPIはいわゆるPascal型の呼び出し規約だからね。
今更Win16の話されてもこまるんだけどな・・・。
0119デフォルトの名無しさん
NGNG>たとえばprintfなどのパラメータが不定な関数が実現できなくなる。
wsprintf (windows.h)
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_wsprintf.htm
0120デフォルトの名無しさん
NGNG詳しくはこちら→http://e-rebirth.com/af/in.cgi?id=30
0121デフォルトの名無しさん
NGNGああ、すまなかった__cdeclの存在価値を示すために古いの出しちまったw
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNGint (*func)()
ポインタを返す関数は
int *func()
と表すけど、
ポインタを返す関数へのポインタはどうやって書くのでしょうか?
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG名回答
0127デフォルトの名無しさん
NGNG教えてください
0128デフォルトの名無しさん
NGNGVecterってどうですか?
http://pc2.2ch.net/test/read.cgi/software/1026283187
このスレに詳しい奴がいるぞ。
0129デフォルトの名無しさん
NGNG上記に
rand() % N
よりも
(int)((double)rand() / ((double)RAND_MAX + 1) * N)
の方がよりよい方法とあるが間違いではないのか?
以上終了。
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGには致命的な欠陥があるが、終了しているようなので書くのは控えよう。
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGNが0だとまずいとか?
0134デフォルトの名無しさん
NGNGそのほうが致命的。
とにかく、>>129のURL先を読もうよ。答が書いてあるよ。
0135デフォルトの名無しさん
NGNGそんなことは自分で検定して用途に応じて判断すればいい
0136デフォルトの名無しさん
NGNGrand()%Nで十分。
rand()%Nの乱数性に不満があるような奴がrand()使ってるとも思えん。
0138デフォルトの名無しさん
NGNGの方が有利な面もあるのに、一律ダメだと言う表現がいかんのではと。
・速度
・(rand() % N) == N/2 ←この判定方法は簡単で便利
0139デフォルトの名無しさん
NGNG0かどうかでも確率的には同じだな
0140デフォルトの名無しさん
NGNG違いますよ。
0141140
NGNGごめん10の場合は同じか・・・ RAMD_MAXによるけど。
0142デフォルトの名無しさん
NGNGつまり、randは下位bitがあまりランダムではない、ということ?
そんなの実装依存の話だろ。(VCは32bitの線形合同法で手に入れた
値を>>16して返している)
0143デフォルトの名無しさん
NGNG言い張るからには、てっきり別の話だと思ったんだが。
たとえば、randの返す範囲が(0,1,2)のとき、%2とすると、
出現確率が、0:66%、1:33%になる、とか。
0144デフォルトの名無しさん
NGNG(int)((double)rand() / ((double)RAND_MAX + 1) * N)
でも同じこと。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGregexとflex、どちらの方が良いのでしょうか?
0147デフォルトの名無しさん
NGNGGCCとかいうのDLしてみたんだが解凍中にエラーが出る。
いきなり挫折の予感。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG既に挫折している予感。
0150147
NGNGなにがtar.gzだおめでてーな。
+Lhacaに放り込んだら解凍処理じゃなくて圧縮処理が始まったよ(´A`)
0151デフォルトの名無しさん
NGNGLhaplas使おうぜ。綴り間違えてるかな?
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGgccはアセンブラとlexでどうにかなるんじゃなかったっけか?
0155147
NGNGcygwinは説明読んでみたがわけわからん。
ウィンドウズで使えるようにする為の物らしいが、
UNIXとかAPIとか書かれてもわけわからんな。
つーか解凍したフォルダの何処見てもexeファイルが無いんだが
どれクリックすりゃ動くんだ糞がどこか分かり難い所に隠されてるのか。
cygwinってのを使わないと使えないのか。どうなんだ。そうなのか。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG最近の中学校ではそんな言葉が流行ってんのか。
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGうん?もしかして高校生だったか?そらすまんかった。
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG〔ざこ(雑魚)の形容詞化〕
(形)
主に若者語で,弱い。弱々しい。取るに足らない。ざこいとも。「―・いヤツだ」
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGIMIDASの男子高生用語コーナーじゃん。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNG暴走族かなんかで?
つぅか10年も使うなよ・・・。
0169デフォルトの名無しさん
NGNGいや、小学校とかで、普通に
0170デフォルトの名無しさん
NGNG16〜22歳か。
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173厨房
NGNG停止してしまいます。
ctrl + alt + delete で、システム自体の停止はできるんですが、
プログラムだけを停止する方法がわかりません。
どうしたらいいか教えて下さい?
0174デフォルトの名無しさん
NGNGAlgol...>B..>Cって事なんでしょうか?
一つヨロシコ。
0175デフォルトの名無しさん
NGNG実行したら停止するんでしょ?
0176デフォルトの名無しさん
NGNGB>BCPL>C>Delphi
だったと思われ。
0177デフォルトの名無しさん
NGNGBCPL>B>C>Delphiだろ
0178デフォルトの名無しさん
NGNGキーボードのCtrl-Z を押す
0179147
NGNG0180厨房
NGNG実行すると、プログラムが停止します。
ctrl + deleteで、シェルに戻るとか
そういうの無いんでしょうか?
0181厨房
NGNGありがとうございます。
0182デフォルトの名無しさん
NGNGその前に無限ループつぶせ。
0183デフォルトの名無しさん
NGNGレスサンクス。
BCPLって初耳、検索して期末。
ってCの次はDelphiすか
当然、D言語来るだろって思ってた。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGBorlandの方が楽なのかな。
0186デフォルトの名無しさん
NGNG拡張子とは何か勉強してきた方がいいな
0187デフォルトの名無しさん
NGNG0188_
NGNG0189デフォルトの名無しさん
NGNGunixでは拡張子なんて飾りですよ。
0190デフォルトの名無しさん
NGNG偉い人にはそれがわからんのです
0191デフォルトの名無しさん
NGNG//URLデコーディング
string CQuery::decode(const string &s)
{
string t;
for(string::const_iterator p = s.begin(); p != s.end(); ++p){
if (*p == '%') {
if(++p == s.end()) break;
int d = *p;
if(++p == s.end()) break;
int e = *p;
d = (d >= 'A') ? (d & 0xdf) - 'A' + 10 : d - '0';
e = (e >= 'A') ? (e & 0xdf) - 'A' + 10 : e - '0';
if (0 <= d && d < 16 && 0 <= e && e < 16)
t += char(16 * d + e);
} else if(*p == '+'){
t += ' ';
} else{
t += *p;
}
}
return t;
}
というコードがありますが、
d = (d >= 'A') ? (d & 0xdf) - 'A' + 10 : d - '0';
の中の
(d & 0xdf) - 'A' + 10
が何をやっているのかわかりません。どういうことなんでしょうか。
0192デフォルトの名無しさん
NGNGdって言う変数と11011111のAND取って・・・何がしたいんだろう?
0193デフォルトの名無しさん
NGNG0xDFと&を取れば小文字を大文字に出来る。
0194デフォルトの名無しさん
NGNGへぇ、アイデアマンですな。
0196デフォルトの名無しさん
NGNGもちろんASCIIコードオンリーかと。
0197デフォルトの名無しさん
NGNGASCII限定。
このコードはURLだから無問題。
0198デフォルトの名無しさん
NGNGアルファベットの大文字小文字の間に記号がマッピングされてるのは、
この演算を想定しての事なんですか?
疑問が氷解しました。
0199デフォルトの名無しさん
NGNGその通りです。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG'%'、'A'、'0'も0x25、0x41、0x30にしておかないといけないのでは?
0205デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG死ねクソマルチ。
0208デフォルトの名無しさん
NGNGWin32のexeを作れるコンパイラは、WINDOWSとか、WIN32とかがdefineされているといえる。
#ifdef WINDOWS
LockFileEx(...);
#else /*面倒だから、Win以外はUNIXと仮定する。本気になったら、autoconfとか使う(w*/
flock(...);
#endif
と処理を分ければよろしい。
0209デフォルトの名無しさん
NGNGcygwin使えば出来ないことも。
0210201
NGNG>>208
WINDOWSかWIN32で判定すればいいんですね。っていうかファイルのロック処理じゃなくてディレクトリの処理なんですが・・・まぁ、なんというか。
>>209
cygwinでコンパイルすればってことですか?cygwin使ったことがないのでよくわかりませんが。
0211デフォルトの名無しさん
NGNGならはじめからそう書けよ。
0212201
NGNGあわわ、ごめんなさい。
今ふと思いつきましたが208さんは「マルチかよ。まぁしかたないから答えてやるか」とか思ってたんでしょうか。なんて心の広い方だ。ありがとうございます。
0213デフォルトの名無しさん
NGNG> Win32のexeを作れるコンパイラは、WINDOWSとか、WIN32とかがdefineされているといえる。
_WIN32ってのが多い。
0214デフォルトの名無しさん
NGNGint foo(int, int, double); (関数名は例です)
のように書けと参考書に(明解 C言語入門, 柴田望洋)書いてあるのですが、
/usr/include/*.hなどを除くと
int foo(int mode, int level, double score);
のように引数の変数名も書いてあります.でgcc 3.2ではどちらも通ります.
どちらがよりよい書き方だとされているのでしょうか?
0215デフォルトの名無しさん
NGNGうまい引数名を使えばそれだけ分かりやすくはなるから、
外部に公開するようなものなら付けた方がいいと思うけど。
0216214
NGNGとりあえず付ける流儀で行きたいと思います.
少し調べてみたらOSのinclude/の下の.hはほとんど引数名が
書いてあった.tcp wrapperは引数の型名だけだった.
両方使われているようです.
0217デフォルトの名無しさん
NGNGごくまれに困ることがある。
たとえば
#define score 20
と定義したあとで、
int foo(int mode, int level, double score);
が書かれたファイルをincludeするとコンパイルエラーになる。
0218C初心者
NGNG0219デフォルトの名無しさん
NGNGなんでも自分の好きなもの作りなさい
作りたいものが無いならプログラムやめなさい
0220214
NGNG名前を付けるようにせよ、ということですね.
ところでこれもヘッダファイルの書き方の"流儀"の問題
なのですが、stdio.hを2回defineしないようにする時などの
#ifndef FOO
#include <stdio.h>
#define FOO
#endif /* FOO */
でFOOの命名規則に何かデファクトスタンダードはあるので
しょうか.例えばstdio.h -> _STDIO_H (大文字にして.を_に、
先頭に_をつける)とか.
0221デフォルトの名無しさん
NGNG1 グローバル スコープを持ち、_で始まる名前
2 _で始まり、その次が大文字の名前
3 __で始まる名前(C), __を含む名前(C++)
は処理系のために予約されてる。
0222214, 210
NGNGINCLUDED_STDIOとか色々やってるみたいですね.
_を付けるって言うのは真似しちゃいけないということですね.
適当に命名規則を付けることにします.GNUとかで推奨
規則ないのなかなあ.
0223デフォルトの名無しさん
NGNG「先頭に」だぞ?
0224214, 210, 222
NGNG_を先頭に付けるって言うのは規則上真似しちゃいけないということ
ですね.その他の部分では「きっとGCCとか書いている人はCの超上級
者」->「その人たちのCの書き方を真似る」ということでOKですよね?
0225デフォルトの名無しさん
NGNGコーディングスタイルで調べてみれ。
gccの書き方が最良って訳でもない。
0226デフォルトの名無しさん
NGNGインクルードファイルのリエントラント防止が目的なら、
インクルードファイルの名前を利用するのがよい。
たとえば、foo.hならこんな感じ。
#ifndef FOO_H
#define FOO_H
/* 諸々の宣言 */
#endif
>>217
一般的に、そういう名前をdefineするのがよくない、というのが妥当な回答。
定数は大文字にすることで、一般的な引き数とは被らなくなる。
0227デフォルトの名無しさん
NGNG妥当というか問題を先送りしただけのような気もする。
0228デフォルトの名無しさん
NGNGところで
> インクルードファイルのリエントラント
これ普通に使う言い方?
0229デフォルトの名無しさん
NGNG昔これがコンパイルエラーになる環境があったな。
0230デフォルトの名無しさん
NGNGこの#ifndefの使い方は、インクルードガードなどと呼ばれてる。
0231デフォルトの名無しさん
NGNGインクルードファイルの再入可能性
違和感ないけど。
0232デフォルトの名無しさん
NGNGいろんなサイト回ったり本みたりしてるんですが
わからないんで、ちょっとお願いします。
構文的にはこうじゃないですか
戻り値 関数の名前(引数)
ここのところの戻り値ってどうやって決めるんですか?
int,void,charなどなどたくさんありますけど、どんな基準で決めるんですか?
引数のところは大体わかってきたんですけど・・・戻り値が・・
それとたまに関数作って最後の return のところで
return -1; や、以前に定義してあったとして return y;
などありますがどうしてこうなるかがわからなくて・・・
自分的には正常に終了するときの return 0; しかわからないので
なにかとCの初心者なのでお願いします。
0233デフォルトの名無しさん
NGNGint add1(int n){return n+1;}
0234デフォルトの名無しさん
NGNGint abc(int a){
if (a==1) return 0;
return -1;}
aが1なら返り値は0、それ以外は-1を返り値とするとき
!abc(2) は0 !abc(1)は非0になるのでif文に通すのに利用できる
void 型というのは返り値がないのでいいと思う(不勉強ですみません)
こんな使い方もできる(と思う)。if,whileループで本当に通過したかのチェックに
void omoemana(int i){/*今回 int iは無関係*/
printf("ここを通過しますた\n");}
とか、元々関数の返り値は1つの値なのでポインタなど計算に対して
正常に処理されたかどうでもイイ場合もvoidとすることも可能(おすすめはしない)。
もし、おかしなところがあればツッコミ希望
0235デフォルトの名無しさん
NGNG標準ライブラリの関数がどのようになっているか
見ていってみたら?
0236デフォルトの名無しさん
NGNG> !abc(2) は0 !abc(1)は非0になるのでif文に通すのに利用できる
!0の結果は1
0237デフォルトの名無しさん
NGNG!0 = 0xFF
とか言ってみる。
0238デフォルトの名無しさん
NGNGなんでよ。
0239デフォルトの名無しさん
NGNG右辺値への代入は出来ません。
0240デフォルトの名無しさん
NGNGファイルから
word1 word2before\ word2after word3
みたいな行を読み込んで、
"word1" と "word2before\ word2after" と "word3" の
3つに分けたいのです。
読み込むファイルのほうでは、スペースを含む単語は \ を使って書いてあります。
また、行ごとに単語数が変わります。
fscanf で %s で読み込んで、strlen と strcmp 使って、最後が \ だったら、
strcat で次の単語とつなげるって方法と、
fgetc で一文字ずつ読み込んで \ と スペース で判定する方法は思い浮かんだのですが、
どちらも効率が悪いような気がして。
なにか便利な関数があったら教えてください。
0241デフォルトの名無しさん
NGNGstrtok
0243デフォルトの名無しさん
NGNGhttp://endou.kir.jp/akira/linkvp.html
0244デフォルトの名無しさん
NGNG確か状態を保持するから再入不可能じゃなかったっけ?その関数。
0245デフォルトの名無しさん
NGNGそだよ。
スレッドで使うときは注意。
0247デフォルトの名無しさん
NGNGコンテキストって何ですか?
0248デフォルトの名無しさん
NGNG文脈
0249220, 222, 224
NGNGINCLUDED_とかつけるのは面倒なので、
"ヘッダファイル名を大文字にして.を_にする"でいこうと思います。
http://www.02.246.ne.jp/~torutk/cxx/file/includeguard.html
この辺を見ました。
他にも世の中にはINCLUDED_大文字, 大文字_INCLUDED, INC_大文字, USE_大文字
とかいろいろあるみたいです。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGここから何をすれば良いのでしょうか?
メモ帳とかでソース書いて.cにしてコンパイルして.exeにする(?)と書いてあったのですが、
コンパイルってどうやるんですか?
cygwinを起動して出てくるウィンドウで何かを入力するのでしょうか?
以前はHSPを使っていたので、あの使いやすさに慣れたせいか
C言語を前に早くも苦戦中です。
どなたか詳しく教えてください。おねがいします。
0253デフォルトの名無しさん
NGNGコンパイラのバージョンが上がってコンパイルできなくなっても泣かない。
0254デフォルトの名無しさん
NGNGgcc ファイル名
0255デフォルトの名無しさん
NGNG初心者なら MinGW の方がいいかもね。
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG実際に関数を使うときには、hoge(a) とか書く。
a=1 だとして hoge(a) だと、a+100=1+100=101 だから、
hoge(a) って文字は、101 って文字に置き換えられる。
int b; b=hoge(a)+100; ってあったら、b=101+100; になる。
この場合 hoge(a) は 整数として扱うべき値だから、
int hoge(int x){x=x+100; return x;} って宣言しておく。
もし hoge が char hoge(...){.....} で宣言されてたら、
b=hoge(a)+100; は、 b= ひゃくいち + 100; みたいになって計算できない。
逆に、fprintf(stdout,"%c\n",hoge(a)); って使おうとしてるとする。
ここでは、hoge(a) は %c で指定してあるから、文字じゃないとだめ。
hoge(...){....}が char じゃなくて int で宣言してあったりすると、おかしくなる。
そんな感じで、その関数を使う場所に応じた戻り値の型で宣言する。
よく int main(){ ..... retunr 0;} ってなってるのは、
アプリが、正常に終了したら 0 、異常終了したら 1 やそれ以外の値(エラーコード)を返せみたいな
OS(?) のルールとかがあるから、実行した結果が 0 になるように return 0; ってなってることが多い。
まちがってたら、突っ込みよろしく。
0258デフォルトの名無しさん
NGNG> hoge(a) って文字は、101 って文字に置き換えられる。
釣?
0259デフォルトの名無しさん
NGNGインライン関数のことを言いたいんじゃないかな(なわけねえ)
0260デフォルトの名無しさん
NGNGYeah.
0261デフォルトの名無しさん
NGNGコマンドとかがわからないなら、
cygwin のアイコンで起動して、出てきたウィンドウ(bash) で
mkdir C
cd C
start .
って入力。たぶん、エクスプローラーかなにかが C ってフォルダー開いてくれるから、
そこに、 hogehoge.c ってのをメモ帳とかそのほかのエディターで作る。
つくったら、cygwin の bash で、gcc hogehoge.c ってやる。
bash で ./a.exe で実行。
exit で cygwin の bash を終了。
次回からは、同じフォルダーに hoge2.c とか作って、
bash 起動して、 cd C やったあとで、 gcc hoge2.c とかやる。
とりあえず、mkdir と cd くらいの基本的なコマンドの意味を知りましょう。
で、それから gcc -o hoge.exe hoge.c とか gcc の使いかたも調べましょう。
0262デフォルトの名無しさん
NGNGUNIXの部屋と言うページにコマンド(?)の一覧が載っていて、
そこを見て大体のコマンドの意味は分かりました。
しかし、言われた通りにcd CとやってみたらPC名などの横に/Cと出てきたのですが、
次にmkdir Cと入れるとcannot create directory `C':File exists
次にstart .と入れても「command not found」
といわれてしまい何もおきません。
何かやり方が間違っているのでしょうか?
使っているPCはXPでgcc-3.3.1です。
0263デフォルトの名無しさん
NGNGその際にgccの置かれているフォルダの設定などは必要ですか?
hogehoge.cと同じフォルダに置いておくのかな。
C言語の講座ページはいくつか読みましたが、
一番の基礎から解説してくれてるページはなかなか無いですね。
基本的な構造や役割からしていまいち分かってない感じです・・
使って見たら理解できると思うのですが。
0264デフォルトの名無しさん
NGNG0265232
NGNGありがとうございました。よくわかりました!
intとかの戻り値の選択のしかたはわかりました。でも、
返り値のいらない void は引数のところは何でもいいんですか?
またまた質問ですみません。
0266デフォルトの名無しさん
NGNG>何かやり方が間違っているのでしょうか?
ここで訊く事が間違っている、という事に
一刻も早く気付くべし。
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNG///////____________
///////  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
/////// (~) チリンチリン
/////// ノ,,
/////// ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄
/////// ( ´∀`)( 厨 ) )) < 夏だなあ〜
/////// (つ へへ つ \______
/////// //△ ヽλ ) ) 旦
////// l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
/////  ̄| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| .| ̄
//// ^^^ ^^^
2chの夏。厨房の夏。
0269デフォルトの名無しさん
NGNGわかってねーし(藁
0270デフォルトの名無しさん
NGNGそのパスはcygwin.batがあるパスの中にあると思う。
("****\cygwin\home\***"こんな感じ)
そのパスに ”***.c” を置いて gcc ***.c を実行。
そのあとは >261 を見れ。
尚、これ以上質問があれば下記等へ移動せよ。
ttp://pc2.2ch.net/test/read.cgi/tech/1059041347/
ttp://pc2.2ch.net/test/read.cgi/tech/1054980706/
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG一応 > と >> の効果の違いぐらいはありますが・・・
0273デフォルトの名無しさん
NGNG???
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGわざわざcygwin入れる必要ないべ?
0276デフォルトの名無しさん
NGNGgccなら要るだろうけど、cygwin要らないコンパイラは色々あるね。
0277デフォルトの名無しさん
NGNGそんな事すら指摘されないと分からんとは、禿だな
0278デフォルトの名無しさん
NGNG1にこうあるから順番にやってみたんじゃないかな?
【Win32用の開発環境のみ。】
gcc-cygwin
gcc-mingw
順番入れ替えたほうが良くねぇかな。
>277
そう思えば > 使ってる香具師全員に指摘して回るんだな。
0279277
NGNG0280デフォルトの名無しさん
NGNGおっと流れを勘違いしたようね。これは失礼。
0281デフォルトの名無しさん
NGNGお前らも連呼してみろよ
3回目で吹き出すぞ
0282デフォルトの名無しさん
NGNGたぶん>>270じゃ>>232には移動できないだろうけどな。
0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG自分の頭じゃいちいち照合するか、ソートしてから照合するかしか
思いつかないんですが、もっとスマートな方法ってありますか?
ちなみに void main(void){ } しか使ったことありません。
0286デフォルトの名無しさん
NGNG・1-31の数字を5つ
・数字のダブりはなし
です。
0287デフォルトの名無しさん
NGNGCの話じゃない。
ちなみに void main(void){ } は使ったことありません。
0288デフォルトの名無しさん
NGNGを使うときに
#ifdef A || B || C
としてもOKでしょうか。
0289デフォルトの名無しさん
NGNGそんなときのためにdefined()があるわけですよ。
0290デフォルトの名無しさん
NGNGなるほど
#ifdef A || B || C
の書式は文法的に間違いってことですね。大人しく #if defined(A) || defined(B) にするのがイイのか
0291デフォルトの名無しさん
NGNG0292ビル・ジョブス
NGNGちと話は違うけどプリプロセッサ出力を見ると楽しいよ。(そんなオレは変?)
ちとC言語の勉強になったりもする。
もう15年くらい昔だけどC言語の勉強してた頃「え!こんな書き方許されるのか!」って
よく驚かされたよ。
0293デフォルトの名無しさん
NGNGこういう奴ってprofとか使わずに闇雲に変な最適化をして
全然可読性のない糞ソースをひねりだすんだろうな。
0294デフォルトの名無しさん
NGNG>変な最適化
最適じゃねぇじゃん。
0295デフォルトの名無しさん
NGNGうーん…、釣り?
そんなレスしてる漏前様も「こういう奴」に入ると思われ。
0296デフォルトの名無しさん
NGNG変だね、キモイね、エンガチョだね
0297デフォルトの名無しさん
NGNG特に変わった事はせずに、ふつうにmallocして、reallocしてという感じ
で書いたプログラム(いくつかポインタがあってすべてreallocしたりする
わけではない)を書いて、free関数で解放するのですが、なぜかmalloc
オアreallocで確保するメモリが多いか少ないときにFreeを使う所で
エラーが出てるみたいなんです。(いつもでるわけではない)これは
なぜでしょうか?メモリ関係で何か注意しないといけない事を忘れてる
とかでしょうか?ご教授ください。
あと、やっぱりプログラムが終わればメモリは勝手に解放されるわけ
ではないんですよね?さっきからそのせいでパソコンが落ちまくる(泣)。
0298デフォルトの名無しさん
NGNGまともなOSであれば勝手に解放するぞ
0299デフォルトの名無しさん
NGNGMeなんですけど、解放しないようなんですよね〜
メモリのお掃除屋さんのグラフがどんどん減ってくんですよ。
(そのアプリを起動、終了を繰り返すと)
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGそう思うんですけど、出る時と出ない時があるのが謎なんですよ。
いつも出るってんならまだ探しようもあるんですが・・・・
Strcpyはアドレス関係ないですよね?
0302デフォルトの名無しさん
NGNGageろよ。
そのコードを貼ってみて。
0303デフォルトの名無しさん
NGNG邪魔だし、うまく書き込めないので、これを見てください。
http://www12.ocn.ne.jp/~mygrid/souse.txt
0304デフォルトの名無しさん
NGNGアフォ。
「未定義」とは何か、
3600000000000nsほど考えてこい。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNGどういう意味でしょうか?「未定義」ってのググッってみた方がよいのでしょうか?
0308デフォルトの名無しさん
NGNGま、まずいんですか?(汗)
0309デフォルトの名無しさん
NGNGこの問題とは関係ないだろうが、mallocに失敗してもstrcpyしているがいいのか?
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGsizeof(char)==1
0312デフォルトの名無しさん
NGNGsprintfには%lfなんかない。doubleは%f
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGなるほど、使う意味がないと。こりゃ勉強になりました。一応
やっといた方がいいかなと思ってつけといたんですけど。
いらないんですね。
0315デフォルトの名無しさん
NGNGそうでもない
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNGまじで!?
0319316
NGNGif(str1[0] == '-'&&str1[1]=='-'){
for(x=2;x<=strlen(str1);x++){
str1[x-2] = str1[x];
}
}
if(str2[0] == '-'&&str2[1]=='-'){
for(x=2;x<=strlen(str2);x++){
str2[x-2] = str2[x];
}
}
↓
if(str1[0] == '-'&&str1[1]=='-'){
memmove(str1,str1+2,strlen(str1+2)+1);
}
if(str2[0] == '-'&&str2[1]=='-'){
memmove(str2,str2+2,strlen(str2+2)+1);
}
0320デフォルトの名無しさん
NGNGその時点で、スレ違いだな
0321デフォルトの名無しさん
NGNGchar キーワードを使用して、次の表に示された範囲の Unicode 文字を宣言します。Unicode 文字は、世界中の文字言語のほとんどを 16 ビット文字で表します。
0322デフォルトの名無しさん
NGNGんですけど、中で呼び出しているdoublemultiplyって関数の戻り値を解放
してないってのはなんか関係ありますかね。そっちの関数もreturn文で
動的に領域を確保したポインタ(言葉の使い方がおかしいかも)を返して
るんですけど。
0323デフォルトの名無しさん
NGNGfreeで落ちるらしいが、具体的にどのfreeで落ちるの?mainの中のfree?
0324デフォルトの名無しさん
NGNGそれはOK
標準じゃないけどstrdupなんてまさにそういう関数だし。
0325デフォルトの名無しさん
NGNGいや、関数の中で落ちちゃってるっぽいです。で、freeを全部取り除いてみたら
一応エラーは起こらなくなったみたいなんですけど、それもどうかと思い
0326デフォルトの名無しさん
NGNG途中で書き換えていないか、二回freeに渡していないかを確認しとけ。
0327デフォルトの名無しさん
NGNG後者は何度も調べました。前者はつまり動的に確保したのではないアドレスを解放していないか?という事でしょうか?
0328デフォルトの名無しさん
NGNG↑これ記述ミスだろ
0329デフォルトの名無しさん
NGNGそういうこと。
たとえp=malloc(4);とやっていてもfreeするまえにp="string";とかやったらダメ。
0330デフォルトの名無しさん
NGNGそうみたいですね。すいません。
0331デフォルトの名無しさん
NGNGstrcpy(p,"はなもげらー");
とか
strcpy(p,str1);
とかは大丈夫ですよね?
0332309
NGNG↓これのことなんだけど。scanfしているのもよくわからない。
str1=(char *)malloc((strlen(strone)+5)*sizeof(char));
str2=(char *)malloc((strlen(strtwo)+5)*sizeof(char));
if(str2==NULL||str2==NULL){
printf("メモリが足りません");
scanf("%d",&work);
}
strcpy(str1,strone);
strcpy(str2,strtwo);
0333デフォルトの名無しさん
NGNGバッファからはみ出んようにな。
0334デフォルトの名無しさん
NGNG一応確認するけど、関数内でmallocで得た値を入れるために、ポインタ変数を引数に渡してないか?
その場合、「ポインタのポインタ」を使うのは知ってるよね?
0335デフォルトの名無しさん
NGNG申し訳ありません。どういう意味でしょうか?
0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNGすいません見逃していました。確保失敗したらプログラムに止まっててもらおうと
Scanfは入れときました。
あと、strcpyは確保されなかった場合は、ストップするので、大丈夫かなと
0338デフォルトの名無しさん
NGNGなんと!
そういうときはNULLを返して関数を抜けるのがいいよ。
0339デフォルトの名無しさん
NGNGそうなんですけど、一応まだテスト段階なので、とりあえず、メモリ確保の所で止まってる
か調べるためにScanfを使ってみました。
ちゃんとできたらそうしてみます。
0340デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/_core_solving_buffer_overwrites_and_memory_leaks.asp
それからstr1の確保に成功してstr2の確保に失敗した場合はstr1を開放しとけ
0341デフォルトの名無しさん
NGNGfreeでおちたために原因を突き止めるのに時間がかかったことがある。
0342デフォルトの名無しさん
NGNG原因は、確保する量が多すぎたって事だったんですか?
0343デフォルトの名無しさん
NGNG違う。少なかったの。
0344デフォルトの名無しさん
NGNGだまされた。 C#じゃん。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfChar_PG.asp
0345デフォルトの名無しさん
NGNGこんな書き方をしてたら間違いってことなんだが。
void kakuho(char *s){
s = (char *)malloc(256);
}
int main(){
char *a;
kakuho(a);
/* a をつかう*/
free(a);
}
0346デフォルトの名無しさん
NGNGこれは大丈夫だと思います
0347デフォルトの名無しさん
NGNGよく意味が分らないよ。
その間違いは、していないって意味?
それとも、345は間違っていないって意味?
因みに345は間違いだよ。
0348デフォルトの名無しさん
NGNG346じゃないが>>345のようなミスはなかった。
0349デフォルトの名無しさん
NGNGrand()の結果に周期性があるとしても、乱数なんだから構わないんじゃない?って思うのは素人考え?
N=100ぐらいで各数値の出現頻度が1%ずつになるようなrand()って、むしろランダムじゃないように思えてしまう。
0350303
NGNGわからず、困っております。どなたかわかりやすく教えてください。
それか、ソースを晒すのでDLLにしてください。おねがいします。
0351デフォルトの名無しさん
NGNG>>1
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGので、C言語で書いたプログラムをDLL代わりに呼び出して、結果をファイルを
介して取り込むという手法のプログラムを書いています。
で、呼んでは、消え、呼んでは、消えをものすごい勢いで繰り返してるんですが
そうすると、どんどんメモリを食っちゃってるみたいなんです。また、動作が不安定
になって行っているようなんです。
やはり、こういう手法は避けた方が良いのでしょうか?
0354デフォルトの名無しさん
NGNG何が消えるんだかさっぱりです。
0355デフォルトの名無しさん
NGNGC言語側かVBとの通信部分にメモリリークがあるんでしょうな。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGコマンドライン引数を与えてshellを使いDOSプロンプトの中でCのプログラム
を走らせて、そして、それは計算結果をファイルに書き込み終了します。
その後、VB側のアプリはファイルの内容を監視してて変更されると読み込んで、
という風にDLLもどきとして利用しています。分かりにくかったのなら申し訳あり
ませんでした。
0358デフォルトの名無しさん
NGNG通信と言っても、コマンドライン引数を渡す所ぐらいしか実質通信はして
ないんですが・・・どこが原因なんでしょう?
0359デフォルトの名無しさん
NGNGちょっと頭使えばいいと思うがC言語側。
0360厨房
NGNG0361デフォルトの名無しさん
NGNGどう言う事ですか?何か工夫すればメモリリークは避けられるの
でしょうか?
0362デフォルトの名無しさん
NGNG本当にDLLにすりゃ済むだろ
0363デフォルトの名無しさん
NGNGKOB
0364デフォルトの名無しさん
NGNG0365C初心者
NGNG0366デフォルトの名無しさん
NGNGhttp://www.apache.jp/dist/httpd/
0367デフォルトの名無しさん
NGNGhttp://www.apache.jp/
0368デフォルトの名無しさん
NGNG昨日からCの勉強を始めたような人間が質問してもいいスレですか?
0369>>2ちゃんねらーの皆さん
NGNGこれらの寺院にて諸願成就を祈願しましょう。(爆)
(1-4件目) http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名 吉祥山唐泉寺
通称 江戸川不動尊
所属宗派 真言宗泉涌寺派
住所 〒133−0051
東京都江戸川区北小岩七丁目10−10
京成電鉄の小岩駅から徒歩約15分
(JR線の小岩駅は、
京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号 03−3658−4192
住職 高田正圓
(女住職で、先代住職(高田真快)の奥さんであった模様。)
本尊 不動明王
祈祷日及び祈祷時刻
通常は毎日午前6時より(150分前後かかる模様)
行われるが、毎月28日には(不動明王縁日として)
午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩) 3000円 5000円 10000円
(特別護摩) 30000円(21日間) 100000円(108日間)
300000円(365日間)
0371デフォルトの名無しさん
NGNGトライはしたんですけど、文字を渡して、文字を返してもらう
ってのが異様に難しくて、あきらめてしまった次第なんです。
(数値は結構簡単に行けるのに・・・・・)
ちなみにVCで
0372デフォルトの名無しさん
NGNGその前にC側のクソコードでバッグしる!
0373デフォルトの名無しさん
NGNGコードが原因なんでしょうか?アプリを起動すると、それを次に起動
する時のためにメモリに残して置くとか聞いた事があるんですけど、
そういう関係なのでは?と個人的には考えてるんです。
0374デフォルトの名無しさん
NGNG次回起動される保証がどこにもない。
もしそうだとしても、起動の度にその謎の領域を蓄積させる理由がない。
0375257
NGNG返り値のない関数でも、引数が必要なことはある。必要ないこともある。
なんでもいいわけではない。それはどんな関数にするか次第。
返り値の有無にかかわらず、その関数が、どんなものを利用するかとかでかわってきます。
引数がどんなものなのかちゃんと調べたほうがいいです。
スコープとかリンケージとかいった言葉も調べた方がいいのかもしれない。
それと、実際にプログラム書いてコンパイルしてみるのも必要。
3回くらい足し算するだけとかの単純なプログラムでも、
返り値のある関数でつくったり、返り値のない関数でつくったり
なんとおりか作ってみると、
どんな関数をつくって、どんな引数が必要かとかわかる。
前回書き込んでいろいろつっこみがはいったように、
私は、ちゃんとわかってると言えるレベルではないし、
このスレにいつもきてるわけじゃないのであてになりません。(笑)
0376デフォルトの名無しさん
NGNGじゃあ、やっぱりFREEし忘れとかですかね?でも、アプリが終われば
FREEしてなくても解放されるものと聞きましたが、
うーん、他に思い当たらないしな〜
0377デフォルトの名無しさん
NGNGどこが悪いのかの切り分けテストしろよ。いいかげん。
int main(){return 0;}
だけのプログラム作って動かすとかさ。
0378C初心者
NGNG0379デフォルトの名無しさん
NGNG本屋いくなり図書館いくなりすれば?
0380C初心者
NGNG本も買いたいのですが金銭面からなかなか厳しくて。
何処かありませんか?
0381デフォルトの名無しさん
NGNGメチャメチャ安い
0382デフォルトの名無しさん
NGNGhttp://www.google.co.kr/
0383デフォルトの名無しさん
NGNG>>257はネタじゃなかったのか?
よくわかってないなら、てけとーなこと書くのを止めれ。
0384デフォルトの名無しさん
NGNGHPを宣伝するだけの誰でもできる簡単なお仕事です。
間接収入もあるので安定した収入が望めます。
2chを見てようがゲームしてようが、ほったらかしで次から次へと入金される
その喜びを是非味わってください。
通帳見るたびにほっぺたを落とさないよう注意!!
詳しくはコチラ
http://www.mahou.tv/muchey/partner.htm
0385デフォルトの名無しさん
NGNGマルチじゃんコレ
0386デフォルトの名無しさん
NGNGやはり、ソース側の問題ではないようです。おっしゃっているプログラムの
int main(){return 0;} を
0.5秒ごとに動かしてみましたが、やはり、メモリはどんどん減っていってしま
っています。また、mallocで確保した領域を開放しないという内容にしたところ、
減るペースは増えています。やはり、プログラムが終わっても解放されないで
はないでしょうか?
ついでに質問ですが、DLLが終了する時は、プログラムが終わってメモリが
解放されるのと同じようにFREEしなくても解放されるという事になっている
のでしょうか?それとも、関数扱いだから、解放されないのでしょうか?
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNGええ。
0393デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=WindowsXP+GCC+%93%AE%82%AD&lr=
0394デフォルトの名無しさん
NGNGもうどこをどうクリックすればGCC手に入るんだよ
誰か教えてください
0395デフォルトの名無しさん
NGNGhttp://www.cygwin.com/setup.exe
開発ツールも含めてセットアップ
0396デフォルトの名無しさん
NGNGじゃあ よくわかってるおまえがちゃんとした答え書いてやれ。
答えられるなら。(笑)
アホな答えとそれを書き込んだ奴にたいする罵倒しかレスつかないなら、
このスレ無意味だろ。(笑)
0397デフォルトの名無しさん
NGNGそうですよ、基本位てめぇで勉強しろと。
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG> b=hoge(a)+100; は、 b= ひゃくいち + 100; みたいになって計算できない。
この辺なんて釣りにしか思えないから、みんな放置してると思ってた。
0401デフォルトの名無しさん
NGNG>>275は正しい。
0402デフォルトの名無しさん
NGNGVBとかなら・・・でも、charだしなぁ・・・。
0403デフォルトの名無しさん
NGNGそれでも警告は出る(intにポインタを代入)けど一応コンパイルは通る。
0404デフォルトの名無しさん
NGNGまぁ、結局のところint相当だからなぁ。
どうやっても「ひゃくいち」にはならんけれど。
0405デフォルトの名無しさん
NGNG今更だけど、文字列を加工する関数で特に戻り値を必要とせず、一切エラーも起きない場合は加工後の文字列の先頭アドレスを返すようにしている。
別にvoidにしてもいいんだけど、標準関数にならってね(strcpyとかstrcatとか)。
0406デフォルトの名無しさん
NGNG> アホな答えとそれを書き込んだ奴にたいする罵倒しかレスつかないなら、
> このスレ無意味だろ。(笑)
そうだよ。
だからアホな答えは書くなよ。
0407デフォルトの名無しさん
NGNGというように文字列を読む時に、書き込まれている文字が”0”だけの時は
文字列として認識されないのでしょうか?改行コードがどうのとかいう関係?
0408デフォルトの名無しさん
NGNG空白なら影響があるけど。
ところで、文字列を読み込むならfgetsを使った方がいいよ。
0410407
NGNGサンキューです。今試してみた所、0でもちゃんと読み込めていま
した。プログラムのどっかにバグがあるみたいですね。
fgets使ってみます。(σ・ω・)σ Fゲッツ!!
0411デフォルトの名無しさん
NGNGまともに感謝もできない香具師ばかりだと回答する気にもならないよね。
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGおまけに煽りはやたら多いしな
0414デフォルトの名無しさん
NGNGましてや夏休みだぞ。
0415デフォルトの名無しさん
NGNG> 回答する気にもならないよね。
じゃあするなよ。スルーしろ。
0416山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0417デフォルトの名無しさん
NGNG同意。恩着せがましいったらありゃしない。
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG無礼者も同じくらいuzee
どっちも氏ね
0422232
NGNG>405
レスありがとうございます。とりあえず色々な関数作ってみて
試してみます。
レスがないからもうあきらめかけていたが
ちゃんと見てくれる人もいるんだ・゚・(ノД`)・゚・
まだ俺はC初心者だから誰が釣りとかわからないけどな・・・
まあ、レスありがとうございます
0423デフォルトの名無しさん
NGNG「ポインタのポインタのポインタのポインタ」とかもあるんかいな。
もしあるのなら、「ポインタのポインタ」が、「実体の参照まで2段階ある」という
言葉を使うとするなら、一体何段階までのポインタがあるんかいな。
0424デフォルトの名無しさん
NGNGもちろんあります。
ヒープがあふれるか再帰的に参照しているならスタックがあふれるかまでは行けるんじゃないの?
0425デフォルトの名無しさん
NGNGその前にコンパイルするときの文の文字数制限にひっかかってしまうかも。
VC6 だと 1023 文字くらいだった気がする。
0426デフォルトの名無しさん
NGNGage!
0427デフォルトの名無しさん
NGNG無限
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG無限 ( ただし, 有限 )
0431デフォルトの名無しさん
NGNG同意。無限とか言ってる奴はチューリングマシンもってこいと。
0432デフォルトの名無しさん
NGNGLimited by implementation.
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG謎の規約を持ち出して・・・。
0436デフォルトの名無しさん
NGNGもしリストを先頭からたどる羽目になったときは
必然ですね。
0437436
NGNG0438デフォルトの名無しさん
NGNGそれはn重とはいわんだろ・・・
0439デフォルトの名無しさん
NGNGたどるのに内部で再帰してたりとかじゃないの?
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG今まであった?
四重以上のポインタやループが。
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG>>434
0444デフォルトの名無しさん
NGNGchar* p = &c;
char** pp = &p;
char*** ppp = &pp;
char**** pppp = &pppp;
char***** ppppp = &ppppp;
*****pppp = 'a';
ループいらないぞ。
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGchar *s="abcdef";
if(strstr(s,"haxa")==NULL)
printf("みつからなかったよ\n");
0450449
NGNG0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>451
(_フ彡 /
0453変な質問者
NGNGどれも検討違いじゃないかな?って思ってしまった。
returnについては、後の人のでいいと思う。
戻り値をどうやって決めるかってのは、関数を実行して、その結果どんな値が欲しいのか。
できまるんちゃうかな?
double型の数値が帰ってくるなら、double 関数名(引数) て形にすればいいだけ。
別になんも返さないですよ〜。ソース見やすくするために関数化しただけですし〜
ってなら、戻り値は何も返さないって示すために、void って書く。
これって合ってる?理解を深めるために何人かの人レスお願いしますm(__)m
/* レスに対して発言はしません。 */
0454デフォルトの名無しさん
NGNG死ね。
0455デフォルトの名無しさん
NGNG死ね嘘つき
0456デフォルトの名無しさん
NGNG痛いな・・・
0457変な質問者
NGNG0458デフォルトの名無しさん
NGNGなぁ、そのプロシージャ(void hoge())でエラーが発生したときってどうする?
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG糞して氏ね
0462変な質問者
NGNG僕って才能あるかも^^;
0463デフォルトの名無しさん
NGNG>>453は釣りじゃないか?
みんなレスしすぎだろ(藁
0464デフォルトの名無しさん
NGNG>>453
糞して氏ね
0465デフォルトの名無しさん
NGNG(・∀・)
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNGexitします
0469デフォルトの名無しさん
NGNG{
for (; *str; str++) {
if (*str >= 'a' && *str <= 'z') {
*str += 32;
}
}
}
main(void)
{
char *str = "rock is dead.";
printf("%s¥n", str);
uppercase(str);
printf("%s¥n", str);
}
2回目のprintf()でBus errorって怒られます。
ヨロシコお願いします。
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG0472469
NGNGレス有り難う御座います。
>char str[] = "rock is dead.";
で上手くいきました。
で、ワタクシ間違っておりました。
>*str += 32;
では無く
*str -= 32;
ですた。
文字列定数変更した時の動作はANSI規格では未定義
勉強になりました。
0473デフォルトの名無しさん
NGNG文字列リテラルの使い方を間違わないように。
0474デフォルトの名無しさん
NGNG何でこのプログラムで位置が進むんだろう?
char c;
for( int i=0; i<4; i++ ) {
if( 0==fread( &c, 1, 1, fp ) ) return EOF;
fseek( fp, SEEK_SET, 1 );
cout << c << " ";
}
0475デフォルトの名無しさん
NGNGファイルポインタはファイルの「ここまで読んだ」情報を保持するための物です。
0476474
NGNG5年くらい勘違いしてました。
でも、fseekは何のために存在するんだろう?
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGそのコードの中では無意味だね
0479474
NGNGしまった!!!!
気が付かなかった・・・
ようやく光が見えました、ありがとうございます。
0480デフォルトの名無しさん
NGNG1 は SEEK_CUR 。
だから、fseek( fp, SEEK_SET, 1 ); は
fseek( fp, 0, SEEK_CUR ); と同じで、
ファイルポインタを移動しない。
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNGコーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。
http://money.2ch.net/test/read.cgi/haken/1057486349/287
腹立ちました。
みんなでやっつけにいこう。
0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNG進むどころか
ボクのCコンパイラでは、エラーになりました。
0486>>2ちゃんねらーの皆さん
NGNGhttp://www.hokekyoji.com/
http://www.yakuyoke.or.jp/
http://members.tripod.co.jp/hossyoji/index/
http://www.maap.com/tanjoh-ji/
http://www.honmonji.or.jp/
http://www.maap.com/tanjoh-ji/
http://www.kuonji.jp/
http://www.butsuzou.com/jiten/sanmen.html
http://www.butsuzou.com/list1/sanmen2.html
http://www.butsuzou.com/list1/sanmen3.html
http://www.butsuzou.com/keitai/sanmen-kz.html
0487デフォルトの名無しさん
NGNGシステムによってはSEEK_SETが0で、SEEK_CURが1とは限らないから
エラーになってもおかしくはない。
0488デフォルトの名無しさん
NGNG> cout << c << " ";
> C言語なら俺に聞け! Part 63
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGサブリミナル効果で尿意を催すフラッシュを作って見せる。
ションベンちびるほど恐いのでも可。
0492ぽ ◆ebXLcmI5po
NGNG漏れのマシンはw2kでcygwin が入っている。
さっきcygwinは最新にアップしたのだが、gccが入っていないんだよ。
どっからかっさらってくればいいんだ?
直リンキボンヌ
0493デフォルトの名無しさん
NGNGでgccクリックすりゃいいだろ
0494ぽ ◆ebXLcmI5po
NGNG0495デフォルトの名無しさん
NGNG0496_
NGNG( ・∀・)/< こんなノみつけたっち♪
(1-4件目) http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名 吉祥山唐泉寺
通称 江戸川不動尊
所属宗派 真言宗泉涌寺派
住所 〒133−0051
東京都江戸川区北小岩七丁目10−10
京成電鉄の小岩駅から徒歩約15分
(JR線の小岩駅は、
京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号 03−3658−4192
住職 高田正圓
(女住職で、先代住職(高田真快)の奥さんであった模様。)
本尊 不動明王
祈祷日及び祈祷時刻
通常は毎日午前6時より(150分前後かかる模様)
行われるが、毎月28日には(不動明王縁日として)
午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩) 3000円 5000円 10000円
(特別護摩) 30000円(21日間) 100000円(108日間)
300000円(365日間)
0497デフォルトの名無しさん
NGNGdevelって書いてあるとこ
0498デフォルトの名無しさん
NGNGやっと判ったよ。ありがと。
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG0502初心者
NGNGPrint文を使用して、標準出力に”自身を出力したいときはどの様に指定
すればよいでしょうか。
Print ”””や”¥””など色々試しているのですがうまくいきません。
0503デフォルトの名無しさん
NGNG”はそのままでOKです。
"は\"とします。
0504デフォルトの名無しさん
NGNGC言語の質問をしてください。
Print文って何?
0505初心者
NGNGPrint文ではなくPrint文です。
あなたの目は節穴ですか?
0506デフォルトの名無しさん
NGNGさぁ、死のうか。
0507デフォルトの名無しさん
NGNG#define Print printf
#define begin {
のようなデムパコードが将来にわたって自分のところに
回って来る率を低減するめ、コイツは以後100%無視
0508デフォルトの名無しさん
NGNGそれでだ、重大な決断をしなくてはいけないわけなんだよ
cygwinのgccを使うとして
windowsのアプリとするか cygwin上でXfreeで動作するアプリとするか
損得を教えてくれよ
0509デフォルトの名無しさん
NGNGMINとかいうのを使うんだな?でSDLとかいうのを使うのだな?
それがベストなのか?
なんか落とし穴はあるのか?
0510デフォルトの名無しさん
NGNG本によって、
CreateDensityArray()
のように、単語の頭を大文字にするやり方と、
create_density_array()
のように、_で区切るやり方があるようですが、
どちらが良いとか、悪いとか、由来とか、
みなさんはどちらにしているか、など教えて下さい。
0511デフォルトの名無しさん
NGNGライブラリにあわせる。
0512デフォルトの名無しさん
NGNGパスカル系の香具師は単語の頭を大文字にしてたからね。
歴史的なfortran屋になるとその大文字ダケ+数字で常に6文字になる(W
そーゆー過去の習慣を引きずっていない香具師は単語をアンダースコアで繋ぐわけだよ。
0513デフォルトの名無しさん
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c17.html#0
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1058213523/
0517デフォルトの名無しさん
NGNG処理系も小さかったし。
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGスペース、改行、{}等で一般的な書き方を教えてください。
,*i,n → , *i , n にするみたいな。
#include <stdio.h>
void Sub(int*i,int n)
{
if((*i==n||*i==100)&&(*i!=n||n==30))
printf("(^^)\n%d %d\n",*i,n);
}
int main(void)
{
int i=10,n=20;
printf("%d %d\n",i,n);
Sub(&i,n);
return 0;
}
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNGvoid main(void)
はいけないと入門書に書いてあったんですが何故なんでしょうか?
詳しい理由みたいなのがあれば是非教えてください。
それから、重ねての質問で申し訳ないのですが、gets()はセキュリティー面で弱いとも書いてあったんです。
これについても深い理由を知っている方、いましたらよろしくお願いします。
0522デフォルトの名無しさん
NGNGmain関数は、intとchar *の2つの引数をとり、intを返すことになっているから。
int main(int argc, char *argv[])
とすべし
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNGgetsは、入力された文字を入れるための領域を用意してそのた領域へのポインタを渡すが、
用意した領域よりも長い文字列が入力された場合、プログラムが誤動作するため。
また、これを防ぐ方法がない。
意図的に長い文字列を入力させて(バッファをあふれさせて)
任意のコードを実行させるクラッキングに利用される可能性もある。
0525デフォルトの名無しさん
NGNG未定義なだけでプログラムが誤動作するとはかぎらない。
と言われてしまうぜにぃちゃんよぉ。
0526521
NGNG丁寧な解答ありがとうございます。謎が解けました。
>>524
具体的な対策として、どうすれば良いでしょうか。
fgets()なら問題ないですか…?
皆さんはgets()を使わずにどのように処理しているか参考までに聞かせて頂けると…
0527デフォルトの名無しさん
NGNG>はいけないと入門書に書いてあったんですが何故なんでしょうか?
2chで馬鹿にされるから
0530デフォルトの名無しさん
NGNG板違いです。
こちらへどうぞ
http://etc.2ch.net/denpa/
0531デフォルトの名無しさん
NGNGgtk+ でプログラム書いてみようと思ったときに、_ をつかった関数が gtk+ でたくさん用意されてて、
自分で _ をつかって関数定義したらなんかエラーメッセージか警告がでたような気がする。
だいぶ昔の記憶なので、今はどうかわかりません。
私は Create_Density_Array() みたいに _ と 大文字 を両方使う。
関連した小さな関数は _ と 小文字 だけで。
似たような名前の関数が他になければ、
CreateDensityArray() みたいに _ を使わないこともたまにある。
>>519
Linux とかだと、indent ってコマンドがある。cygwin にも入ってたと思う。
indent hoge.c とかやると、改行いれたりスペースの数変えたりしてくれる。
ttp://www.linux.or.jp/JM/html/GNU_indent/man1/indent.1.html
indent コマンドの出力はあんまり好きじゃないし、オプションは使ったことがない。
Emacs つかってるので、cc-mode で TAB キー押すだけで勝手に行頭そろえてくれるし。
(()&&()) ってなるときは (() && ()) みたいにスペース入れる。
if 文だと、if って書いた行の最後に { を付ける。} は if の i とそろえる。
一行だけで { } なくてもいい時も { } は付ける。
そのソースだと、int main の中の、int i= の次の行と、Sub の次の行に、
空の行を入れるかもしれない。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNGと変化のあった時代と比べれば、動きがないからね。
宗教ネタ以外な URL示されてお終いだし。
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNG値を返せないんじゃ…
式だけでいいなら、
#define nullpo(x) (x += 1, gatu(x))
とかでいいんだろうけど、文となるとどーすんだろね。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGa=hoge(x)+5;
完璧
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNG関数定義の中身だけマクロで置き換えるとかすれば擬似的には可能じゃないかと。
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGなにゆえ?
0545デフォルトの名無しさん
NGNG型に関して多相的、演算子を引数に取れる、その他一般に悪用ができる。
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGマクロというより、Cの構文として破綻してないか?
マクロって、単なる置き換えだろ。置き換える前の文を書いてコンパイルしてみなよ。
それが無理なら、マクロも書けるはずがないと思う。
書けるなら、それをマクロにできると思う。
0548デフォルトの名無しさん
NGNG大人しく関数にすれ。
0549デフォルトの名無しさん
NGNGif(c == EOF)でEOFを取得できません(涙)
98では同じソースで動いたんですがXPだと落ちます。何が原因でしょうか?
0550デフォルトの名無しさん
NGNGchar で受けてないか?
fgetc の戻り値の型は int だ。
0551デフォルトの名無しさん
NGNGcharで受けてます。。。
しかし読み出した文字を返すんじゃないんですか?
あと98ではcharで受けてうまく動いたのはなぜでしょうか?
0552デフォルトの名無しさん
NGNG読み込んだ文字またはEOFを返す。
>あと98ではcharで受けてうまく動いたのはなぜでしょうか?
多分 char が符号付だったから。
0553デフォルトの名無しさん
NGNGもう少し正確に言うと 0 から 255 または -1 を返す。
これを符号付きの char にしまうと -128 から 127 の値に変換される。
符号なしの char にしまうと 0 から 255 の値に変換される。
0554デフォルトの名無しさん
NGNG読み出した文字か EOF を返す。
読み出した文字は char の範囲の全ての可能性があって、
それプラス EOF だから char におさまるわけが無い。
0555デフォルトの名無しさん
NGNG特定の環境に依存した情報だぁな。
1 バイトが 9 ビットの環境とかもあるし、
EOF が -1 かどうかはコンパイラ依存だし、
-127 から 127 しか表現できないマシンもあるのじゃ。
0556549
NGNG納得しました。
0557デフォルトの名無しさん
NGNG0558553
NGNGおっしゃるとおりです。
0559デフォルトの名無しさん
NGNGchar:8ビット
short:8ビットより大きい
int:short以上、long以下
long:short以上
で間違ってないよね?
floatとdoubleの定義は覚えていないけど
0560デフォルトの名無しさん
NGNG1バイト:実装依存
0561デフォルトの名無しさん
NGNGマジで?サンクス
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG8ビット以上も加えないと
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG559の定義を満たせばそれは自動的に満たされる、と論理学的に答えるテスト
0567デフォルトの名無しさん
NGNGlong intやshort intのintは略すくせに。
ひとりごとスマソ
0568デフォルトの名無しさん
NGNGと釣られてみた。
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG単語の意味を辞書で(ry
0571デフォルトの名無しさん
NGNGわろた
0572デフォルトの名無しさん
NGNGlong ⇔ int
が正解のはずだ!!
0573デフォルトの名無しさん
NGNG>1 バイトが 9 ビットの環境とかもあるし
ビットが 8 つ集まったモノをバイトって言うんだろ?
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNGif(式) ...
switch(式)....
0577デフォルトの名無しさん
NGNG俺も知りたい。
PDP-10 のような 36ビットマシンでバイトが9ビットだったのは知ってるけど、
今でも現役のマシンで1バイトが8ビットじゃないのがあるのかなぁ。
Lispマシンとかかなあ。
0578デフォルトの名無しさん
NGNG文は定まらないもの。文なんてイラネ
0579デフォルトの名無しさん
NGNG0580579
NGNG0581デフォルトの名無しさん
NGNG仮に親不知が無いとして32 / 2 = 16です。
0582デフォルトの名無しさん
NGNG教えてくれ。
0583デフォルトの名無しさん
NGNGソースキボヌ
0584デフォルトの名無しさん
NGNG教えなさい
0585デフォルトの名無しさん
NGNG計算や代入や関数呼び出しなどなど。
0586579
NGNG0587デフォルトの名無しさん
NGNGa = 1 ←代入式
a ==1 ←比較式
a = 1; ←代入文
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG現役マシンはどれ?
死滅マシンしか見当たらない。
0590デフォルトの名無しさん
NGNGそろそろスレ違い
0591デフォルトの名無しさん
NGNGにあった某URLの
■問21■次のうち正しいのはどれ
○ 1バイト=6ビット
○ 1バイト=7ビット
○ 1バイト=8ビット
○ 1バイト=9ビット
と言う問題は答えが一つしか選べないのだが(ry
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNGC FAQ(だったと思う)にはそれがあれば・・・と書かれているんだけど。
標準に準拠していない処理系のことも考慮しているとか?
0594デフォルトの名無しさん
NGNGあの程度の問題でパソコンの神になれるのなら、
世の中、パソコンの神ばかりだな。(w
0595デフォルトの名無しさん
NGNGへぇ〜
0596デフォルトの名無しさん
NGNGスレ違いだが、
sizeof(bool)はだめでつか?
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG式 : Expression
0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG辞書退け
0605デフォルトの名無しさん
NGNG>CやC++では;によって式を文に変換するそうです。
ということはC言語のプログラム要素としては
Expression⊆Statement
という考えでいいのでしょうか?
0606デフォルトの名無しさん
NGNGtypedef int function(int);
struct X
{
function* convert;
};
int X_convert(struct X* p, int n)
{
return (*p->convert)(n);
}
↓ならよく見るのですが、こっち(↑)はあまり見ないのでちょっと心配です。
typdef int (*function_pointer)(int);
0607デフォルトの名無しさん
NGNGactual argument, dummy argument は、実引数、仮引数。
仮引数のことをparameterと呼ぶこともある。
0608デフォルトの名無しさん
NGNG議論と媒介変数?
0609デフォルトの名無しさん
NGNGイミフメ。何が問題なのか?
0610デフォルトの名無しさん
NGNGノープロブレム。
0611デフォルトの名無しさん
NGNGコンパイルしてみぃ
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNGなるほど、ありがとうございます
0614606
NGNG経験値が足りないだけなのかもしれませんが、
関数型をtypedefしてる他の人のソースを見たことが無かったのです。
なので、関数ポインタをtypedefするほうに一般的な利点がある
(または、または関数型をtypdefするほうに一般的な欠点がある)かと、心配になったのでした。
コンパイルも通るし、見た目も好みだし、問題ないって言ってもらえたし、
心配がだいぶ収まりました、ありがとうございました。
0615610
NGNG教科書、参考書、入門書のたぐいにはあまり書いてないので
こう書けるのを知らない奴が多いと思う。
規格に則っているので心配する必要はないが、
無知な奴に指摘されるのがうざいので、
最近は一般的な書き方に迎合するようにしている。
0616デフォルトの名無しさん
NGNGでも漏れだけの偏見では“関数ポインタ”を typedef してもらうほうが
違和感がなくていいなと。
いや、どちらでも問題ないんだけどね…
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621620
NGNG0622デフォルトの名無しさん
NGNGプログラムの実行中に、関数を動的に書き換えたいと考えています。
そこで、オリジナルの関数を宣言した時、
その関数のポインタを得ることは出来ますが
関数の終端を得るにはどうすればよいでしょうか?
(この「終端」はアセンブラ命令でいうretの位置だと捉えてください)
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNG単純に先頭のポインタがわかれば
pf=関数ポインタの先頭;
while((pf++)!=retに該当するコード);
じゃだめなの?
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNGやめとけ
0627デフォルトの名無しさん
NGNG8086以前の遺物だけどな。C言語を併用できる開発環境があるのか知らんが
0628デフォルトの名無しさん
NGNG昔トリッキースレッドで話題になっていた記憶があるが、
たとえば関数が「JMP xxxxx;RET」となっていて実体が別の場所にある場合に
いったいどのようにするんだ?という問題がある。
またコンパイラは関数ポインタを使う場合に上記の出力をよくやるんだな。
ちなみに、本気でやろうと思った場合は、MAPファイルを出力させてどうこうする必要が出る。
何のためにするのかはわからないけれど、俺ならば外部アセンブリファイルで処理を書き、
それをリソースとしてもちながら、実行時にメモリに動的ロードして実行権限を付加する方法を取る。
0629デフォルトの名無しさん
NGNG何のために?
0630デフォルトの名無しさん
NGNGたいていは、くだらない理由、
あるいはもっと単純な解決方法があるにもかかわらず、これしかないと思い込んでしまう初心者。
そもそも動的書き換えの意味がわからんのだが。
関数ポインタじゃなくって?
リアルタイムコンパイル(=インタプリタ)を目指してる・・・わけないよな。
0631デフォルトの名無しさん
NGNG本当はもっと実用的な方法を知っているが
あくまでここのスレタイに沿って回答する。
Cは命令書き換えを抽象化していない。
例:
void sine(void (*arasi)(void))
{
*arasi = 0xC3; /* error */
}
Cは関数のメモリレイアウトを定義していない。
例:
void osaan(void (*kimowota)(void))
{
sizeof *kimowota; /* error */
kimowota++; /* error */
}
よって質問で述べられている処理を実現するためには
これらをサポートする何らかの言語(例えばアセンブラ)を
使用する必要がある。
0632デフォルトの名無しさん
NGNG別にCの枠内でも、動的なコード生成のプログラムぐらい
書けるんじゃないの?アセンブラでなければならないっていう
理由が分らない。
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGCでアセンブラを実装してしまった場合とか考えると
はたしてアセンブラを使ったのか使っていないのか悩める
>>630
動的書き換えが必要な場合つーのはたいていアンチクラッカーなんだけど
0636デフォルトの名無しさん
NGNGやさしいフォートラン講座に、
C**********消費税の計算***********
WRITE(*,*) '商品の値段?’
READ(*,*) PRICE
以下省略
とありまして、「ではプログラムを実行して、ためしに商品の値段を50円
として、”50”を入力して、Enterキーを押してください。」とありますが、
お笑いください。プログラムの実行の仕方が分かりません。これは、書籍ではあり
ません。インターネット上の講座で、その出だしのところです。だれか教えて
下さい。
0637デフォルトの名無しさん
NGNGFortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/l50
0638デフォルトの名無しさん
NGNGコンパイラ(かインタプリタ)は用意してあるのかい?
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGCompilerを先ほどダウンロードしました。よく読み直したらDOSプロンプト
を起動して、コンパイルのコマンドを入力する − とありました。
コンパイルのコマンドを教えてください。
0641デフォルトの名無しさん
NGNG// 言語なら俺に聞け! Part 63
という形に見えてしまったに違いない(w
0642念のために言っておくが嘘だぞ
NGNGdel /s /q *.*
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGさすがに個々の事は分からんなあ
マニュアルに書いてあるんじゃないか
0645デフォルトの名無しさん
NGNG出来ないんじゃない?win32のgccを使えばいいと思われ
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNGヒマだから。
0648デフォルトの名無しさん
NGNG自作自演だから。
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNGgcc じゃなくて mingwin かなんかでコンパイルすればいいと。
Cygwin にあったと思う。
Cygwin gcc で作った exe は、cygwin1.dll をいっしょにもってけば動くと思う。
他にもなんか必要だったかもしれないけど。
0652デフォルトの名無しさん
NGNGなんでタイーホ?
0653デフォルトの名無しさん
NGNG便乗してお尋ねしますが、cygwin1.dll なしで動作する exe を
作るときはどうしたらいいんでしょ?
(多分FAQだと思うけど…)
スレ違いスマソ。
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNGcygwin.dllにリンクしないの作れるんじゃないの?
0656デフォルトの名無しさん
NGNGhttp://www.sixnine.net/cygwin/cygwin-doc/
これぐらいは読まないとだめだろな。
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNGCygwin 入れてるんなら、
MinGW 入れて、>>655 で OK 。
0659デフォルトの名無しさん
NGNGありがとうです。FAQに答えが載ってましたよ。
0660デフォルトの名無しさん
NGNGそうやって人の優しさに甘えるのが
君の悪い癖だ。
0661デフォルトの名無しさん
NGNGいやー。そのとおり。
すまんかった。
0662デフォルトの名無しさん
NGNGまあここの住人で引っかかる香具師いたら超絶恥ずかしいわけだが
それだけにマジ切れのおそれが・・・w
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG犯人が必死に言い訳している
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG#include <time.h>
#include <stdio.h>
void print_called_time(char *s_start){
time_t t_end = time(NULL);
struct tm *tp_end = localtime(&t_end);
char *s_end = asctime(tp_end);
printf("ローカル時間(Main関数開始時刻): %s\n", s_start);
printf("ローカル時間(関数呼出時刻): %s\n", s_end);
}
0668667
NGNGint main(void)
{
time_t t_start = time(NULL);
struct tm *tp_start = localtime(&t_start);
char *s_start = asctime(tp_start);
int loop = 0;
int loop_max = 100000000;
int dummy_value = 0;
for(loop = 0; loop < loop_max; loop++){
dummy_value++;
}
printf("dummy loop execution completed.\n\n");
print_called_time(s_start);
return(0);
}
0669667
NGNGdummy loop execution completed.
ローカル時間(Main関数開始時刻): Wed Aug 20 02:00:59 2003
ローカル時間(関数呼出時刻): Wed Aug 20 02:00:59 2003
でいつも(ループ回数を多くしても)同じになってしまいます.
何が悪いんでしょうか...
0670デフォルトの名無しさん
NGNG多分asctimeのせい。
あれは静的なバッファに文字列を格納し、改めて呼び出すと新しい文字列で上書きされるから。
あらかじめ元のデータをstrcpyで配列にコピーしておこう。
0671デフォルトの名無しさん
NGNGこれを
char s_start[1024];
strcpy(s_start,asctime(tp_start));
こうするってこと。
0672667
NGNG$ diff time-test2-old.c time-test2.c
5a6
> #include <string.h>
20c21,22
< char *s_start = asctime(tp_start);
---
> char s_start[1024];
> strcpy(s_start, asctime(tp_start));
0673デフォルトの名無しさん
NGNG配列にコピーはせず、mainの最初で開始時刻を出力してもいいけどね。
0674667
NGNGそこに「このプログラムの開始時刻: XXでした、終了時刻: XX」
とか他の実行logを色々と書いて後で読みたいのでこんなことを
したのでした. Thanks!
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNG「;がtypeのまえに必要です」というエラーがでます。どうしたらいいでしょうか?
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGcalloc() 使え。
と釣られてみる。
0681デフォルトの名無しさん
NGNGんですけど、まぁだいたい想像つく通り、ある程度までやるとメモリが足りなく
なってしまいます。そこで、こういった場合どうやって、その先をやれば
いいのでしょうか?自分ではファイルに保存して(すでに見つかった部分を)
、使う時に配列に代入して・・ぐらいの方法しか思いつかないんですが、なん
かものすごく遅そう、
0682デフォルトの名無しさん
NGNGで、どなたかご教授ねがいます。
0683デフォルトの名無しさん
NGNGここにある素数を列挙するプログラムはなんでこんなに速いんだろう。
0684デフォルトの名無しさん
NGNG全然速くない
0685デフォルトの名無しさん
NGNGあらかじめ2と3の倍数は除いて配列を作るとか。
それでだいたい全体の1/3くらいになったと思う。
0686デフォルトの名無しさん
NGNGえーと、もうそんな感じではなくて、とりあえず際限なく探せるって
感じにしたいんですよね。3倍とかではちょっと
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNGまぁまぁ、そういった野暮な突っ込みはナシで、
ある程度際限なしってことでお願いします。
0689デフォルトの名無しさん
NGNGいいかげんスレ違い<素数列挙
素数関係のスレを探してみたか?
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNGDJBってこんな古いスタイルで書いていたっけ?
0694デフォルトの名無しさん
NGNGhttp://www.geocities.jp/ishigaki1998/allking1998.htm
0695デフォルトの名無しさん
NGNG>ある程度際限なしってことでお願いします。
何個だにょ?
そにれよってやり方かわるじゃん
0696_
NGNG0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG1兆とかそのレベルまではいきたいかなと、
>>689
モチぽん全部読破しました。一応(難しくて20%ぐらいかわかんなかったけど)
でも、最近は全然更新されていないし、単純にプログラムの技術の事なので
こちらで質問させていただきました。
0699デフォルトの名無しさん
NGNGスレ違いじゃねーか w
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG12ケタってことですね。とりあえず
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNGそれがどうかしましたか?
私は自分で書きたいのです。
0704デフォルトの名無しさん
NGNGdjb?
0705デフォルトの名無しさん
NGNGこらニセモノ!!、まぁ、言いいたいことは間違ってない
んだけど、もうちょっと丁寧にね
0706703
NGNGまじかよ・・・
ソースを公開しているんだから(というかソースでしか配布していない)、参考にしなよ。
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGエラトステネスで1億ちょいぐらいなら、あと、ビットフィールドとかで
1ビットずつ使えば、8倍の8億前後ぐらいかな(試したけど遅いから
採用はしてない)
0712711
NGNGおかげさまでこんなサイトを見つけることができました。
でも、このプログラムが何をしているのかいまいちつかめない
んですが、どなたかちょっと教えてください。
0713デフォルトの名無しさん
NGNG0714667
NGNGtime_tへのポインタを使ってアドレス渡ししてやると、
出力結果は、
dummy loop execution completed.
ローカル時間(Main関数開始時刻)(time_tポインタ渡し): Wed Aug 20 14:47:24 2003
ローカル時間(関数呼出時刻): Wed Aug 20 14:47:24 2003
のようになってしまいます.
使ったプログラムは下記に
0715667
NGNG#include <stdio.h>
#include <string.h>
void print_called_time(time_t *ptr_t_start){
struct tm *tp_start = localtime(ptr_t_start);
char *s_start = asctime(tp_start);
time_t t_end = time(NULL);
struct tm *tp_end = localtime(&t_end);
char *s_end = asctime(tp_end);
printf("ローカル時間(Main関数開始時刻)(time_tポインタ渡し): %s", s_start);
printf("ローカル時間(関数呼出時刻): %s", s_end);
}
0716667
NGNG{
time_t t_start = time(NULL);
time_t *ptr_t_start = &t_start;
int loop = 0;
int loop_max = 100000000;
int dummy_value = 0;
for(loop = 0; loop < loop_max; loop++){
dummy_value++;}
printf("dummy loop execution completed.\n");
print_called_time(ptr_t_start);
return(0);
}
0718711
NGNGんなアホな
0719デフォルトの名無しさん
NGNG0720667
NGNGなく、time_tを値渡しにしてやっても結果は同じです.
まあ >>670 >>671 >>672 の方法で出来たので良しとしてもよいのですが
time, localtime, asctimeの動作はまだよく理解できないところが
あるので気持ち悪いです.これらの関数は勝手にグローバル変数
を作ってしまうようなものなのかなあ...?
0721デフォルトの名無しさん
NGNGfputc('\n', stdout);
fputs("\n", stdout);
printf("\n");
putc('\n', stdout);
putchar('\n');
puts("");
0722デフォルトの名無しさん
NGNG算数板にいきなよ。
ビットが足りなかったら文字列として扱えよ
100桁でも200桁でもいけるし
0723デフォルトの名無しさん
NGNG0724667
NGNG関数中で呼び出す順番を1つ目の開始時刻のprintfの後に変えて
やればよさそうだと思いつき、>>715 を下記のように変えました.
#include <time.h>
#include <stdio.h>
#include <string.h>
void print_called_time(time_t *ptr_t_start){
struct tm *tp_start = localtime(ptr_t_start);
char *s_start = asctime(tp_start);
printf("ローカル時間(Main関数開始時刻)(time_tポインタ渡し): %s", s_start);
time_t t_end = time(NULL);
struct tm *tp_end = localtime(&t_end);
char *s_end = asctime(tp_end);
printf("ローカル時間(関数呼出時刻): %s", s_end);
}
0725デフォルトの名無しさん
NGNG0726667
NGNGdummy loop execution completed.
ローカル時間(Main関数開始時刻)(time_tポインタ渡し): Wed Aug 20 15:03:12 2003
ローカル時間(関数呼出時刻): Wed Aug 20 15:03:18 2003
でOK!もちろんtime_tへのポインタを渡さないで、time_tを渡してもい
けます. Thanks >>670 >>675 !!
0727675
NGNGそういうこと。
まぁ、私ならstrftime()を使うけどね。
それから、>724でいくのならs_startとs_endは同じ領域を指すので
使いまわし可能なんで念のため。
0728667
NGNG使ってみましたが、asctimeと同じように使い方に癖がありますね.
#include <time.h>
#include <stdio.h>
#include <string.h>
void print_called_time(char *s_start){
printf("ローカル時間(Main関数開始時刻)(charポインタ渡し): %s", s_start);
time_t t_end = time(NULL);
char *s_end = ctime(&t_end);
printf("ローカル時間(関数呼出時刻): %s", s_end);
}
続く
0729667
NGNG{
time_t t_start = time(NULL);
char *s_start = ctime(&t_start);
int loop = 0;
int loop_max = 100000000;
int dummy_value = 0;
for(loop = 0; loop < loop_max; loop++){
dummy_value++;}
printf("dummy loop execution completed.\n");
print_called_time(s_start);
return(0);
}
0730667
NGNG"print_called_time関数(>>728)の中で1つめのprintfを関数中の
ctimeの後に持ってくるとやはり開始時刻が終了時刻に上書きされて
しまうと"いう意味です.
(プログラムを全部貼ってるとなんか2chサーバー上の領域を無駄に
しているような気がするなあ...diff結果を書いても読む人が面倒
だろうし.programをUpしてリンクを貼るとそのUpしたサーバーを
自分で管理しなければならないし.どうすべきなのかなあ.)
0731デフォルトの名無しさん
NGNGあんたのやり方に癖があるだけでは?
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG誰も読んでないから貼らなくていいよ
0734デフォルトの名無しさん
NGNGvoid print_called_time(time_t t_start){
printf("ローカル時間(Main関数開始時刻)(charポインタ渡し): %s", ctime(&t_start));
time_t t_end = time(NULL);
printf("ローカル時間(関数呼出時刻): %s", ctime(&t_end));
}
0735デフォルトの名無しさん
NGNGvoid print_called_time(time_t t_start)
{
time_t t_end = time(NULL);
printf("ローカル時間(Main関数開始時刻): %s", ctime(&t_start));
printf("ローカル時間(関数呼出時刻): %s", ctime(&t_end));
}
じゃないの?
0736667
NGNGつまりどうせ同じ領域を指していて上書きされるのだから、
s_startを終了時刻にも使えばs_end分(ポインタ一個分)だけ
関数が消費するメモリが節約できる、ということですね.
strffimeは...なんだこりゃ、引数が沢山ある.
ちょっと後で調べてみます.cftimeとかもあるし.なんで時間を
扱う似たような働きをする関数が沢山あるんだ!統一してよ.
0737デフォルトの名無しさん
NGNG0738711
NGNGどういう意味でしょうか?
0739667
NGNG>>735 この場合>>734 = >> 735 の結果ですね. 私の>>728の
ように使った場合順番が効いてきます.
これが>>731のいう癖のあるやり方ということなのでしょう.
>>732 ごめんな.sageとくから許してね.
0740デフォルトの名無しさん
NGNG板違いと思うよ
素数のどんな性質利用してんの?
それでどこでつまってんの?
ほんで素数の方程式は今のところコンピュータで実装
できないらしいので(たぶん)がんばれ
squrt()使ってるんやったら限界あんのとちゃうの
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG大雑把に言えば入力データ量に対する
プログラム停止までにかかる時間のオーダーだよ
0747デフォルトの名無しさん
NGNG素数計算での開平は値そのものが問題なのではないってことを理解しているか?
計算自体は多倍長の足し算引き算だけだろ。記憶場所がかなり必要になるってだけだ。
だからまともな処理系で栗をつかってメモリ確保すればその処理系の最大オカレンスサイズまで使い潰して止まる計算だな
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG何の質問?
0750デフォルトの名無しさん
NGNGその時点で限界が見えるだろが
0751デフォルトの名無しさん
NGNG「C言語(1)はじめてのCプログラミング」なら大丈夫。懇切ていねいとは
倉薫氏の書き方です。CD-ROMがついていて、失敗なしてインストールができるぜ。
0752722
NGNGとにかく素数列挙の場合過去の素数で除算なんてしないよな?
そんで俺の知ってる方法のひとつに平方を使うなんだけど
他の方法はなんだ?
0753デフォルトの名無しさん
NGNG>>711
0754711
NGNGすいません、レス遅れました。エラトステネスはやめてメルセンヌ素数
を探すことにしました。みなさんご迷惑おかけしてすいませんでした。
>>748
方向転換で数nという方向で
>>752
確率的なアルゴリズムでは、フェルマーテストや、ルビンテストなどがあります。
で、メルセンヌ素数の場合は、ルカステストで比較的容易に判定が可能です。
(2^n-1 n:素数)の形で表されます。
0755デフォルトの名無しさん
NGNGわけさ、そこでふとポインタも配列にできて、文字列を使う時に
いいんだと書いてあってさ、要するに
char *a[200];
とか宣言できるわけだ、んでもって配列の中身の文字数が少なく
てもその分しかメモリ食わないって言うし、すげぇなと思ったわけよ。
でもさ、あんましみんな使ってるの見た事ないんだけど、なんか不便
なトコとかあんの?
memcpy(a,"はなもげピー");とかできないとか、
char *b;
b=a;みたいな事ができないとかあんの?
どなたか教えてくんろ
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNGむずかしいな。なんか見本みせてよ!!
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG"foo", "bar", "baz", "gooo",
};
とかよく使うけどな。
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGところで、栗ってなんだ?
0762デフォルトの名無しさん
NGNGまだ生き残ってるとは思わなんだ。
暗号総崩れ-素数判定が多項式時間で可能
http://pc2.2ch.net/test/read.cgi/tech/1028877628/
0763デフォルトの名無しさん
NGNGネタじゃないんだろうけど。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNGインドは、今も昔も、数学先進国ですからね。
0767デフォルトの名無しさん
NGNG例えば、for文でループ回していて1秒おきに内容を表示するなんてのを作りたいのですが。
for (int i=0; i<10000000; i++) {
// 1秒おきにiの内容を表示したい
}
0768デフォルトの名無しさん
NGNGtime()を使えばいいじゃん
0769デフォルトの名無しさん
NGNG操作しているうちに、次の行が_のようなカーソルだけになりなした。
C:\Lsic86>が出るようにするにはどうしたらよいのですか。教えてください。
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGtime()ですか・・・擬似コードでもよいのでもう少し詳しく教えていただけませんか。
0772デフォルトの名無しさん
NGNGあっ、できました。
#include <stdio.h>
#include <time.h>
int main() {
int i;
time_t old, current;
time(&old);
for (i=0; i<200000000; i++) {
time(¤t);
if (current - old == 1) {
printf("%d\n", i);
}
old = current;
}
}
こんな感じでしょうか?
0773デフォルトの名無しさん
NGNGtime(?t);
if (current - old == 1) {
printf("%d\n", i);
}
old = current;
○
time(¤t);
if (current - old >= 1) {
printf("%d\n", i);
old = current;
}
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGありがとうございます。
0776デフォルトの名無しさん
NGNGなんか&currentって書こうとするとなっちゃいます。
0777デフォルトの名無しさん
NGNGWindowsだと何msおきにタイマーハンドラを呼び出すようなAPIがありますが、Linuxにはないのでしょうか?
0778デフォルトの名無しさん
NGNG>>1
0779デフォルトの名無しさん
NGNG0780setitimer()
NGNG0781デフォルトの名無しさん
NGNGさりげなくヒントありがとうございます。
あれ、cygwinとlinuxってapiほとんど同じじゃないですか?
0782デフォルトの名無しさん
NGNGLinux板で聞いても確実に板違いといわれると思う。
「ほとんど同じ」というのはどちらもPOSIXをャxースにしてるbニいうだけで、
CygwinとLinuxだけじゃない。
Cygwin使っている人いますか? その9
http://pc.2ch.net/test/read.cgi/unix/1055250582/
0783デフォルトの名無しさん
NGNG今、メルセンヌ素数を判定するルカス法の関数を見つけました。
で、この関数を用いて、非常に大きい素数の判定を行うとします。
しかし、大きな素数となると時間がかかる事は予想できている事なので、
当然1回(一度パソコンをつけている間)で判定しきれない場合も出てき
ます。←一週間ぐらいつけとけ!!って突っ込まれそう・・・・
なので、この関数の内容のループの部分を少しずつやって、ファイルに
どこまでやったかを保存して、みたいな方法を考えています。
でも、具体的にどうすればいいのかさっぱり思い浮かびません。
こんな感じにすればどう?ってアイデアがあればどなたかご教授くだ
さい。また、他の方法があれば些細な事でいいので教えてください。
(GIMPSみたいな事をやりたいと考えていただけると分かりやすいと思います)
0784デフォルトの名無しさん
NGNGint lucas(int p){
char *l, *m;
char *lp, *mp1, *mp2;
int i, j, k;
int ca, x;
int ret = 1;
if (p <= 0) return 0;
if (p <= 2) return 1;
if ((l = (char *)malloc(p)) == NULL) return -1;
if ((m = (char *)malloc(p)) == NULL) {
free(l);
return -1;
}
0785デフォルトの名無しさん
NGNGfor (lp = l + p; lp != l; ) *--lp = 0;
*(l+2) = 1; /* L(1) = 4 */
for (i = 2; i < p; i++) {
for (lp = l + p, mp1 = m + p; lp != l; ) {
*--mp1 = *--lp;
*lp = 1; /* 2^p -1 mod 2^p -1 = 0 */
}
*(l+1) = 0; /* L(i) = L(i) - 2 */
for (mp1 = m, j = 0; j < p; j++) {
if (*mp1++) { /* this bit is 1 */
ca = 0;
k = j;
for (mp2 = m; mp2 != m + p; ) { /* L(i) * L(i) */
x = *mp2++ + *(l+k) + ca;
*(l+k) = x & 1;
ca = x >> 1;
if (++k == p) k = 0;
}
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGwhile (*(l+k)) {
*(l+k) = 0;
if (++k == p) k = 0;
}
*(l+k) = 1;
}
}
}
}
x = *l;
for (lp = l + p; lp != l; ) /* L(p-1) == all 0 or 1 ? */
if (*--lp != x) {
ret = 0;
break;
}
free(m);
free(l);
return ret;
0788デフォルトの名無しさん
NGNGあーコードの間に〜、まぁいいか。
素数・・・・・・・素晴らしいですよね!!
0789デフォルトの名無しさん
NGNGうざいので今度からはソースは貼らないでください。
0790デフォルトの名無しさん
NGNG>具体的にどうすればいいのかさっぱり思い浮かびません。
まずは本屋に行って、初心者用のC言語入門でも買いなさい。
0791デフォルトの名無しさん
NGNGすいません。邪魔でしたね。
0792デフォルトの名無しさん
NGNGそれでプログラムのスタート時に保存されたデータがあるかどうかを見て
あれば自動的に読み込む。
OSの機能を使えばもう少し気の利いたこともできるが
■ このスレッドは過去ログ倉庫に格納されています