C言語なら俺に聞け! Part 62
レス数が1000を超えています。これ以上書き込みはできません。
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 61
http://pc2.2ch.net/test/read.cgi/tech/1057677056/
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デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG1. char* string と
2. char *string では何が違うのでしょうか。
1.のほうは通常のポインタだと思うのですが2.のほうはどう言う内容を示してるのでしょうか。
御存知の方よろしくお願いします。
0006デフォルトの名無しさん
NGNG1だと、
char* string,string2;
として書いたとき、string,string2両方ともポインタになるが、
2だと、
char *string , string2;
として書くと、stringのみがポインタで、string2は普通のchar型になる。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG全く同じ
char* mona,giko;
と書いてもgikoがポインタになったりゃ1000
0009デフォルトの名無しさん
NGNG論理学の試験問題みたくなってきたな
00105
NGNG早速のレスありがとうございます。
よく分かりました。
00115
NGNG0012デフォルトの名無しさん
NGNGよかったな。>>8は間違い>>6が正しいから釣られるなよ。
0013デフォルトの名無しさん
NGNG> char* string,string2;
> として書いたとき、string,string2両方ともポインタになるが、
ならないよ。
0014デフォルトの名無しさん
NGNG・・・自分で確かめるのがよろしいと思われ。 >>6 が嘘こいてる。
ってかこのやりとり全てがネタ?
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG何いってるんだ?
アフォですか?
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021↑MVP(´∀`)
NGNG0022デフォルトの名無しさん
NGNG基本は
型名 変数名;
だから
char* string;
と書くことをオススメします。
ついでに同じ行で複数の変数を宣言しない事をオススメします。
ただし年上の方から睨まれるという罠。
0023デフォルトの名無しさん
NGNG俺は char* string; 使うがなー。
>同じ行で複数の変数を宣言しな
ければ、紛らわしいこともないし。
0024デフォルトの名無しさん
NGNGchar id[256];
char (*pId)[];
pId = id;
このままだとidは単にchar型のポインタなので
エラーでるのはあたりまえっちゃあたりまえなんですけど
配列の先頭アドレスなら代入できるのかなと思ってました。
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGそれでもエラーがでます。
0028sage
NGNGchar (*pId)[256];
0029デフォルトの名無しさん
NGNGおお、なるほど
これで配列のエイリアスがつくれるということですか。
0030デフォルトの名無しさん
NGNG何をしたいのかわからん。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGまだ起きてるよ
0033デフォルトの名無しさん
NGNG>基本は
>型名 変数名;
誤り。
よって、これに立脚する話はすべて無効。
>>5よ、>>22のような主張は周りとの摩擦を起こしてまで
強情はっちゃだめだよ。>>22のような不勉強に陥るし、
何と言っても「解りやすく書くこと」はオナニーになったら
意味がない。1人で決めちゃだめなんだ。
0034デフォルトの名無しさん
NGNGは誤り。
理由も書かずに否定するだけでそれが有効となる。
楽な世の中だな。
0035デフォルトの名無しさん
NGNGK&R(邦訳)のP.150近傍を嫁
0036デフォルトの名無しさん
NGNGint main(argc,argv)
int argc;
char *argv[];
{
printf("今時K&Rでつか。");
}
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNGでは、あなたの言う「基本」とは何か?
発明者の説明以上に説得力のある「基本」があるならそれを示せば済むはず。
0039デフォルトの名無しさん
NGNG私は何も言っていません。
0040デフォルトの名無しさん
NGNGmain(argc,argv)
char *argv[];
{
extern char wara[];
puts(wara);
}
char wara[] = {
0x83,0x6f,0x83,0x4a,0x82,0xc9,0x82,0xb7,
0x82,0xe9,0x91,0x4f,0x82,0xc9,0x91,0x8a,
0x8e,0xe8,0x82,0xf0,0x92,0x6d,0x82,0xe8,
0x82,0xc8,0x3a,0x2d,0x70,0
};
0041デフォルトの名無しさん
NGNGextern char giko[];
puts(giko);
exit(0);
}
char giko[] = {
0063,0065,0202,0252,0214,0276,0202,0301,
0202,0304,0202,0351,0202,0314,0202,0315,
0304,0327,0303,0336,0250,0274,0256,0305,
0331,0103,0202,0305,0202,0315,0202,0310,
0202,0255,0226,0173,0202,0314,0202,0261,
0202,0306,0202,0276,0202,0353,0077,0040,
0315,0337,0260,0274,0336,0202,0334,0202,
0305,0217,0221,0202,0242,0202,0304,0202,
0240,0202,0351,0202,0266,0202,0341,0202,
0310,0202,0242,0202,0251,0201,0102,0061,
0065,0060,0225,0305,0202,0301,0202,0304,
0202,0261,0202,0306,0202,0315,0221,0346,
0062,0224,0305,0202,0276,0202,0310,0201,
0102,0
};
0042デフォルトの名無しさん
NGNG>>1
0043デフォルトの名無しさん
NGNG年齢=レス番
こんぐらっちれいしょん!
0044デフォルトの名無しさん
NGNGつーか俺もCを触った当初はそんな風に考えたこともあった。
「基本は、『型名 変数名』」と言うなら、基本形じゃないケースが
あることを忘れるな。そしてそれがポインタの場合。
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG一体、配列や関数ポインタの事を、どう解釈しているのだろうか…
とても気になる、今日この頃…
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGint* hoge; は整数ポインタ型のhogeと解釈するのかな
俺は整数型のポインタhogeとしてint *hoge;って書くけど
0051デフォルトの名無しさん
NGNGポインタと配列(typedef されたものを除く)だ。
じゃぁ、そうなってるのは何か?
それを「基本」と呼ぶのは悪いことではない気がする。
なぜなら、ポインタでも配列でもない変数を一番よく使うからだ。
って、そもそも規格でも整数型と浮動小数点型を合わせて
「基本型」って呼んでるでしょー。
0052v(^o^i)d
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG【「基本」と言うのは、「応用」と組み合わせて使うべきだ】
【「例外」と組み合わせて使うべきではない】
と思う。
つまり、
【宣言方法は例外を除いて「型名 変数名」しかない】
と言うなら分かるが(↑が正しいかを別にして)、
「応用」が無いのに「基本」を使うのは、何か違うと思う
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG出来ません
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG出来ます。
>>55
型だから
0059デフォルトの名無しさん
NGNG「型名 変数名」って考えてる人は、「型名 変数名 修飾子」で考えてて
「型名 → 修飾子 → 変数名」って解釈してるのかな…?
int i ;
俺的思考 → 「i」は「int型」
よって → 「int型」の「i」
型的思考 → 「int型」の「i」
int * p ;
俺的思考 → 「p」は「ポインタ」その指す先は「int型」
よって → 「int型」への「ポインタ」の「p」
型的思考 → 「intへのポインタ型」の「p」
int * p [4] ;
俺的思考 → 「p」は「サイズが4の配列」その配列は「ポインタ」その指す先は「int型」
よって → 「int型」への「ポインタ」の「サイズが4の配列」の「p」
型的思考 → 「intへのポインタ型」の「サイズが4の配列」の「p」
int ( * p ) [4] ;
俺的思考 → 「p」は「ポインタ」その指す先は「サイズが4の配列」その配列は「int型」
よって → 「int型」の「サイズが4の配列」への「ポインタ」の「p」
型的思考 → 「int型」の「サイズが4の配列」への「ポインタ」の「p」
int f ( char ) ;
俺的思考 → 「f」は「char型を引数とする関数」その返り値は「int型」
よって → 「int型」の「char型を引数とする関数」の「f」
型的思考 → 「int型」の「char型を引数とする関数」の「f」
int ( * f ) ( char ) ;
俺的思考 → 「f」は「ポインタ」その指す先は「char型を引数とする関数」その返り値は「int型」
よって → 「int型」の「char型を引数とする関数」への「ポインタ」の「f」
型的思考 → 「int型」の「char型を引数とする関数」への「ポインタ」の「f」
これ以上複雑にならなければ、こんな感じで、結構、楽に解釈できるのかも…
0060デフォルトの名無しさん
NGNG出来ません
sizeof演算子は、関数型とvoid型以外のオペランドのサイズを返します
by 規格
0061デフォルトの名無しさん
NGNG0062結果発表
NGNGint* variable; // 若者、オサレ
0063これからの時代
NGNGint*PI=&i; // およそ3
0064デフォルトの名無しさん
NGNGこの場合コンパイルされるか?されないか?の話かと。
0065デフォルトの名無しさん
NGNG手元にあるのでコンパイル出来るのはgccのみだが
まともな処理系ならエラーが出て当然(その他のコンパイラはエラーが出る)
0066デフォルトの名無しさん
NGNGvc7でもコンパイルされるぞ。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG日本語を勉強し直してきませう。
対義語は1種類しか無いとは限らない。
0069デフォルトの名無しさん
NGNG基本⇔発展
応用⇔基礎
例外⇔原則
が正解。54も68も勉強が足りない。
0070デフォルトの名無しさん
NGNG普通「〜の場合は」だと思うが。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGvoid nfor(unsigned int n)
{
inti[10], j=0;
switch(n){
case 9: for(i[9]=0; i[9]<=1; ++i[9])
case 8: for(i[8]=0; i[8]<=1; ++i[8])
case 7: for(i[7]=0; i[7]<=1; ++i[7])
case 6: for(i[6]=0; i[6]<=1; ++i[6])
case 5: for(i[5]=0; i[5]<=1; ++i[5])
case 4: for(i[4]=0; i[4]<=1; ++i[4])
case 3: for(i[3]=0; i[3]<=1; ++i[3])
case 2: for(i[2]=0; i[2]<=1; ++i[2])
case 1: for(i[1]=0; i[1]<=1; ++i[1])
case 0: for(i[0]=0; i[0]<=1; ++i[0]){
printf("j:%3d\n",j++);
}
break;
default: return;
}
}
引数で渡した数だけfor文を実行する方法ありませんか?上手く行きません。
007372
NGNG0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG2^n回ループしたいということ?
0077デフォルトの名無しさん
NGNG関数内で引数として渡した数だけ、forを実行したいのです。
例は(引数+1)になってますけど。
実際には他にも配列へのポインタ引数をとり。その配列長がnです。
for内の i[] は各々の配列に操作を加えるとき、パラメータとして使います。
0078デフォルトの名無しさん
NGNG再帰じゃ駄目なのか?
0079デフォルトの名無しさん
NGNGvoid nfor(int limit, int *i, unsigned int size, unsigned int depth)
{
if(depth == size) {
/* i を使って何やらしてちょうだい */
} else {
int *j = &i[depth];
for(*j = 0; *j < limit; ++*j) {
nfor(limit, i, size, depth + 1);
}
}
}
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG汚いソースだな。iがなぜ配列なのか、jに何を入れたいのかさっぱりわからん。
これってj=1にしかならない気がするが。
何がしたいんだ?Σiとかn!とか求めるのか?
>引数で渡した数だけfor文を実行する方法ありませんか
引数で渡した数だけfor文を実行すれば良いじゃないか。forの比較の部分で。
#include <stdio.h>
void nfor(unsigned int n)
{
int i, j=0;
for(i=1;i<n;i++) j += i;
printf("j:%3d\n", j);
}
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG008472
NGNGおぉ〜、再帰で出来ますね。
理解するのに少し時間がかかりました。
ありがとうございます。
ただ多分うん千回繰り返すのと、なるべく早い方がいいので、
関数呼び出しオーバーヘッド?が心配です。
この場合 while 等で再帰をなくすことは無理のようですね。
>>80
いまいちどういうことか分かりません。
よろしければ、もう少しだけ詳しく教えていただけませんか?
>>81
すみませんが、それは全然違います。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG十重ループってすごいね
009072
NGNGnはいっても20、大抵は3、4、5ってところです。
実はスレ違いになってしまうんですが、あるクラスのメンバ関数なんです。
だから、汎用性のある関数にしなくちゃと思って・・・
実際ケースごとに関数足していくのもきついですし。
スレ違いですが、C++だともっといい方法があるのでしょうか?
>>72の怪しいプログラムが上手く走ったら悦に浸れるところだったんですが。
こんなことを考えているようじゃ、まだまだ厨房ですね。
0091デフォルトの名無しさん
NGNG値の変わらない引数をメンバ変数に入れておくくらいはできるけど。
n が変数でなければ再帰テンプレートでどうこうできるかもしれんが、
inline にしてても inline 展開されるとは限らないので
面倒になったわりには大して変わらん気も。
0092デフォルトの名無しさん
NGNGfgets(buffer , sizeof(buffer) , stdin) ;
sscanf(buffer , "%c" , &hoge) ;
while(hoge != 'z') {
switch(hoge) {
case '+':
〜略〜break ;
case '-':
〜略〜break ;
default :
〜略〜break ;
}
fgets(buffer , sizeof(buffer) , stdin) ;
sscanf(buffer , "%c" , &hoge) ;
}
これは普通に走りますが
最初、int hoge ;でラベルをcase 1: case 2:にしてた時は、2週目以降
何を入力しても前回選択したラベルにジャンプするというエラーですた
訳を教えれ
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG009692
NGNGもしかして俺ッスか?
int hoge ; fgets(buffer , sizeof(buffer) , stdin) ; sscanf(buffer , "%c" , &hoge) ;
while(hoge != 3) {
switch(hoge) {
case 1':
printf("キーを入力\n> ") ;
fgets(buffer , sizeof(buffer) , stdin) ;sscanf(buffer , "%d" , &key) ;
result = insertnode(key) ;
if(result == 1 )printf("挿入完了\n") ;
else printf("キーが重複\n") ; break ;
case 2': 〜略〜break ;
default : 〜略〜break ;
}
fgets(buffer , sizeof(buffer) , stdin) ;
sscanf(buffer , "%c" , &hoge) ;
}
これで
> 1
キーを入力
> a
挿入完了
> d (適当に入力)
キーを入力 (何故かcase 1:に飛ぶ)
こんな感じです。
0097デフォルトの名無しさん
NGNGaじゃなくて数値だった
> 1
キーを入力
> 10
挿入完了
> d (適当に入力)
キーを入力 (何故かcase 1:に飛ぶ)
0098デフォルトの名無しさん
NGNGなんだか読む気がしない。
0099デフォルトの名無しさん
NGNGhogeはcharにしたいのかintにしたいのか
文字定数'1'を判定したいのか、数値1を判定したいのか
その辺をはっきりさせて統一しないと
010092
NGNG0101デフォルトの名無しさん
NGNG%c には char 変数のアドレスを対応させるべし。
0102デフォルトの名無しさん
NGNG円周率を計算するプログラム。
#include <stdio.h>
int main(void)
{
float pi=0.0;
int s=1;
int n;
for(n=1;;n++)
{
s=-1*s;
pi=pi+1/(2*n-1)*s;
printf("%d回目:%f\n",n,4*pi);
}
return 0;
}
試行錯誤の上に1/2の前に(float)を入れたら正しく動作したんですが,
なんで(float)が必要なのかわからないので教えてください。
型の昇格で型をint→floatと勝手に変えてくれるんじゃないんですか?
0103デフォルトの名無しさん
NGNGいいえ。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNGpi+1/(2*n-1)*s
があったら演算子の優先順位から
1/(2*n-1)*sが先に計算されるだろ。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG年二回。
0109102
NGNG011092
NGNG{
char buf[256] ;
int hoge ;
printf("\n> ") ;
fgets(buf , sizeof(buf) , stdin) ;
sscanf(buf , "%d" , &hoge) ;
printf("%d" , hoge) ;
return 0 ;
}
何度もすいません。
これで文字を読み込ませると、1がプリントされるのは何故ですか
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGint hoge = 100 ; としてみれ。
0113デフォルトの名無しさん
NGNGsscanf() の戻り値を調べて出直してこい。
0114デフォルトの名無しさん
NGNGint hoge=0;
にして、実行してみたら?
0115110
NGNG変換が失敗すると、読み込まないのか・・
0116デフォルトの名無しさん
NGNGむしろ、どう読み込むのか?と(ry
0117デフォルトの名無しさん
NGNGscanfで文字列を取り込みそれは何だったかを表示するプログラムです。
配列とかがもう・・
0118デフォルトの名無しさん
NGNGめちゃくちゃ簡単なら自分でやれよ
出来ないなら簡単とかぬかすな
0119117
NGNGint main(){
char a[];
scanf("%s",&a);
printf("入力されたのは%c",a);
}
こんな感じでいいのかなぁとか思ったんですが。
0120デフォルトの名無しさん
NGNG0121117
NGNGint main(){
char a[10];
scanf("%s",&a);
printf("入力されたのは%s",a);
}
これなら問題なく実行できるのですが、
入力される文字数を無制限にできないでしょうか?
0122デフォルトの名無しさん
NGNG0123117
NGNGならないということですか?
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNGint scanf( const char *format, ... )
{
/* 文字数無制限に読み込めるような実装をここに書く */
}
int main(){
以下略
でできる
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGstd::string str;
std::getline(std::cin, str);
だな。
ただし、VC6 ではバグってる罠。
0128デフォルトの名無しさん
NGNG標準ライブラリと同じ名前の関数を書くのって許されてたっけ?
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG問題なし。予約語じゃないから。
0131デフォルトの名無しさん
NGNGどこかで誰かが作っていたソース。
STRSIZE (ここでは4) より大きい入力が来ても平気、らしいよ。これ使えば何とかなるかも!?
#include <stdio.h>
#include <stdlib.h>
#define STRSIZE 4
typedef struct _Data{
char string[STRSIZE];
struct _Data *next;
} Data;
main(){
int i;
Data *start=NULL, *now, *temp;
while( 1 ){
if( ( temp = (Data *)malloc( sizeof( Data ) ) ) == NULL ){
printf( "memory run out!\n" );
break;
}
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGfgets( temp->string, STRSIZE, stdin );
if( start == NULL ) start = temp;
else now->next = temp;
now = temp;
for( i = 0; i < STRSIZE; i++ ){
if( temp->string[i] == '\n' ){
for( now = start; now != NULL; now = now->next ) printf( "%s", now->string );
break;
}
}
if( temp->string[i] == '\n' ) break;
}
for( now = start; now != NULL; now = temp ){
temp = now->next;
free( now ); }
return 0;
}
0134132
NGNG0136デフォルトの名無しさん
NGNG不正なオペランドというエラーがでてしまいます。
'^'では駄目なんでしょうか。
どなたかご指導お願いします。
言語はCです。
xyz2lab[i][j][0] =
116 * ((rgb2xyz[i][j][1] / y0) ^ 0.333 -
16 * (rgb2xyz[i][j][1] / y0));
0137デフォルトの名無しさん
NGNG^はビット毎の排他的論理和
累乗はpow関数を使う。pow(n,-3.0);
0138デフォルトの名無しさん
NGNG0139137
NGNG0140デフォルトの名無しさん
NGNG何故BASIC使いをVB使いと決め付ける?
N88やMSXかもしれんだろう?
0141デフォルトの名無しさん
NGNGべき(巾,冪)といい,かけた個数をその累乗の指数といいます。
0142137
NGNG累乗でもよかったんだ。
ショウガッコウカラヤリナオシテキマス
0145デフォルトの名無しさん
NGNGmathematicaだったらどうする
0146デフォルトの名無しさん
NGNGlong func(char* pData);
long func(char *pData);
long func(char * pData);
空白の位置が違うのですが
どれが良いのでしょうか?
0147デフォルトの名無しさん
NGNGlong func(char*pData);
0148146
NGNG空白を使わない、理由も教えて欲しいです。(どうせ茶化してるだけと思われますが)
私は、
char* pData
だと、char*型の pDataオブジェクトっぽく見えて良い感じだと思うのですが
標準ヘッダなどは、char *pDataが目立ちます。
古いCの規格に準拠とか
何か理由があるのでしょうか?
0149デフォルトの名無しさん
NGNG*はcharにではなくpDataに付いているものだから
0150デフォルトの名無しさん
NGNG1+2*3 を代入したら、 a[9] の値はNULLなんですか?
それとも処理系に依存するんですか?
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG"1+2*3"をa[10]に入れるってわけだろ?
a[0]='1';
〜
a[4]='3';
a[5]=NULL;
てなわけで、a[9]の値は変化しない。
0153デフォルトの名無しさん
NGNGすげぇ、そんな考え及びもしなかったぜ・・・
0154デフォルトの名無しさん
NGNGNULLじゃないだろう
0155デフォルトの名無しさん
NGNGすまそ、Cから数年離れてるもので・・・
a[5]='\0';
なのかな
0156150
NGNGじゃあ、初期化してないとどうなるんですか?
0157デフォルトの名無しさん
NGNGchar str[BUFSIZ]を初期化しないで表示してみるスレ
なんてのがあったな
0158デフォルトの名無しさん
NGNGstatic な変数なら 0 で初期化されるが、
自動変数の場合はどうなってるか分からない。
毎回違う値が入ってる可能性も大きい。
0159デフォルトの名無しさん
NGNG「変化しない」って言葉がわからない?
初期化してようがしてなかろうが今は関係ない。
0161デフォルトの名無しさん
NGNG>char* pData
>だと、char*型の pDataオブジェクトっぽく見えて良い感じだと思うのですが
確かにその通り。
でも、複数宣言する場合はそうはいかないよね。
char *pData, *pData2; の方が見栄えがいい。
まあ、typedef char* pchar; で型定義して
pchar pData, pData2; にすればいいんだけど。
これは個人の好みの問題だね。
0162デフォルトの名無しさん
NGNG数行で済む話だろ。
0163デフォルトの名無しさん
NGNG複数宣言なんて殆どしないなぁ。
どうしても複数宣言したくなった時のみするけど、
その場合は確かに * は変数にくっつけて書く。
0164デフォルトの名無しさん
NGNGちょっとわからない事があったので、ご意見を聞かせてください。
data1.txt に例えば
x y z
1 1 10
1 2 12
1 3 17
:
:
のようなn行3列のテキストデータがあったとします。
ここでdata2.txtには
x y
1 3
1 5
3 9
6 41
:
:
と n行2列のデータがあったとします。ここで私は data1.txt から
data2.txt の x y と一致する行だけ抜き出したいのですが上手くいきません。
どこを直したらよいか教えていただけませんか?
0165164
NGNG実行しても一行も出力されませんでした。
#include <stdio.h>
#include <string.h>
main(int argc,char *argv[])
{
FILE *file1;
FILE *file2;
char buf1[BUFSIZ];
char buf2[BUFSIZ];
char *p;
file1 = fopen(argv[1],"r");
file2 = fopen(argv[2],"r");
while(fgets(buf1,sizeof(buf1),file1)!=NULL){
while(fgets(buf2,sizeof(buf2),file2)!=NULL){
if( ( p = strstr(buf1,buf2)) !=NULL) {
puts(buf1);
}
}
}
0166デフォルトの名無しさん
NGNG・fgetsで得た文字列がどうなってるか
・file2が終端に達した後どうなるか
0167デフォルトの名無しさん
NGNGwhile(fgets(buf2,sizeof(buf2),file2)!=NULL){
while(fgets(buf1,sizeof(buf1),file1)!=NULL){
if(strncmp(buf1,buf2,strlen(buf2)-1) == 0) {
fputs(buf1, stdout);
break;
}
}
}
0168デフォルトの名無しさん
NGNG#include <string.h>
main(int argc,char *argv[]){
FILE *file1;
FILE *file2;
char buf1[BUFSIZ];
char buf2[BUFSIZ];
file1 = fopen(argv[1],"r");
file2 = fopen(argv[2],"r");
fgets(buf1,sizeof(buf1),file1);// 最初のx yの行を読み飛ばす
while(fgets(buf1,sizeof(buf1),file1)!=NULL){
int x1,y1,z1;
sscanf(buf1,"%d %d %d",&x1,&y1,&z1);
rewind (file2); // file2を最初から読み直す
fgets(buf2,sizeof(buf2),file2); // 最初のx yの行を読み飛ばす
while(fgets(buf2,sizeof(buf2),file2)!=NULL){
int x2,y2;
sscanf(buf2,"%d %d",&x2,&y2);
if( (x1 == x2) && (y1 == y2) ){
printf("%s",buf1);
}
}
}
}
0169164
NGNG>・fgetsで得た文字列がどうなってるか
>・file2が終端に達した後どうなるか
え〜と、
fgetsで得た文字列には改行コードがある。
よって改行コードも文字列の判定に入ってきてしまうから、
改行コードをはずさないと意図した通りにならない、ってことでしょうか?
file2が終端に達すると...?
え〜と、file2のwhileが終わってfile1の次の行を読み込んだ後、
またfile2を読み始めると思うのですが。
うーん。まだよくわからないです。すみません。
0170デフォルトの名無しさん
NGNGFILE1から読み込み
while(FILE2が終端まで行ってるか?){
FILE2から読み込み
}
}
FILE1から1つめのデータを読み込んで、FILE2上の全てのデータで含まれているかどうかチェックする
(この時点でFILE2上にはデータが残っていない)
FILE1から2つめのデータを読み込むと、FILE2には「もうデータが無い」と判断し誤動作する、というわけで。
0171デフォルトの名無しさん
NGNG0173164
NGNGなるほど。
2つ目の while は一回終端まで行ったので
次のループでは既にストリームが終わってしまっているわけですね。
と、なると>>167で教示していただいたループも上手くいかなそうに見えるのですが...
0174デフォルトの名無しさん
NGNGbuf1が"1 10 5"
buf2が"1 1"
や
buf1が"2 21 1"
buf2が"1 1"
等で、問題が発生する
従って>>168のように数値でチェックした方が良いだろう
0175デフォルトの名無しさん
NGNG0176164
NGNGレスしてくれたみなさん、どうもありがとうございます。
とても勉強になりました。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGsprintf()で渡したエリア以上に文字列を出力させた場合、
エリアを壊しますよね??
0180デフォルトの名無しさん
NGNGさぁ。直後がmallocで正当に確保された領域だったりメモリマップドファイルだったりすることも考えられる。
0181デフォルトの名無しさん
NGNGfor(d=0.0;d<pow(FLT_RADIX,DBL_MANT_DIG);d+=1.0){}
とあった時、pow(FLT_RADIX,DBL_MANT_DIG)回だけループするのでしょうか?
それとも、途中で、丸められてしまう事も、あるのでしょうか?
0182フラウボウ
NGNG0183デフォルトの名無しさん
NGNG1. double をループカウンタにしないのが吉。
数値誤差が溜まって、正確にループできないことが頻繁にある。
2. 関数の結果を一時変数に入れて、それをループのリミットとすること。
何度も pow を呼ぶのは非効率。
pow の結果が整数なら、
int i;
int limit = (int)(pow(...) + 0.5);
for(i = 0; i < limit; i++) { ... }
とするべし。
0184デフォルトの名無しさん
NGNG関数の引き数で複数宣言出来たか?
# 関数の引き数の場合と書いてあるが?
0185デフォルトの名無しさん
NGNGそもそも C だと文字列の代入なんて普通には出来ない。
初期化の指定なら a[9] は '\0' になる。
0186デフォルトの名無しさん
NGNG関数の引数と、そうで無い場合で使い分けるのはもっと気持ち悪いよ
0187デフォルトの名無しさん
NGNGmemset(str,0,sizeof(str));
ですましてる。
0188デフォルトの名無しさん
NGNG>>183
doubleの上限までループしようと言う無茶な181なんだから
精度云々以前にintが使えない罠。
で、doubleの有効桁数は10進で20桁もないので途中で1足しても値が増えなくなる。
0189デフォルトの名無しさん
NGNGどういう意味?
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGあ、そこまでループするのか。
pow の中身見てなかった。
なるほど。そのうち精度が悪くなって足しても d の値が変わらなくなるな。
0192デフォルトの名無しさん
NGNGdoubleの上限じゃない。
1足して値が変わる上限。
0193デフォルトの名無しさん
NGNGその値の場合においては問題ない
0194181
NGNG返事が遅れて、ごめんなさい。
何か、とても書き方が悪かったようで…
>>193さんが、問題ないと言われてますが、念の為、もう1度、お願いします。
ようするに、知りたい事は、3つ程あるのですが、
「doubleの初期値を0.0にして、1.0ずつ足せば、仮数部も1ずつ増えるのか?」
と言う事と、
「仮数部を意図的に1ずつ増やした場合、
仮数部の限界がくるまで指数部の値が、かわる事はないのか?」
と言う事と、
「指数部に余裕がある時に、
仮数部の限界の値と、仮数部の限界に1を足した値を比較しても
(FLT_ROUNDS等に関係なく)正しい結果が得られるのか?」
と言う事の3つです
知ってる方は宜しく、お願いします。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG仮数部って整数じゃないよね?
0197デフォルトの名無しさん
NGNG指数部の値によっては上記の条件を満たさないかもしれないが
0198デフォルトの名無しさん
NGNGはい、仮の数です。
だから、単純に1.0を足しても仮数部の内部が1増えるとは限りません
が、>>194に書いた事は、1つ目と2つ目は、出来そうな気がするし、
計算精度的に、出来なければ、おかしい気もします。
また、3つ目は、出来ても、出来なくても、何となく納得出来るので、
仕様上、どのように決まってるのかなと思いまして…。
0200デフォルトの名無しさん
NGNGC言語なら俺に聞け!
0201デフォルトの名無しさん
NGNGWhat Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.sun.com/source/806-3568/ncg_goldberg.html
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGなんでここで聞くの?
0204デフォルトの名無しさん
NGNGスレ違いです。
0205sage
NGNG0206181
NGNG分かりませんでした…。(T_T)
最初の方に、指数部が同じなら
仮数部の値は保証されるような事が書いてありましたが、
それが、途中のIEEE754や、最後の方に書いてあった、
C99の仕様と、どのような関係があるのか、全然分かりませんでした…。
誰か、英語の出来る人、教えて下さいませ。m(_ _)m
0207181
NGNGそれでも宜しければ、レスお願いします。
0208デフォルトの名無しさん
NGNG壊れます
>180の答えは無視してもいいです
0209デフォルトの名無しさん
NGNGなぜ自分で実験しないのかと小一(jr
0210デフォルトの名無しさん
NGNG| 次でボケて!!! |
|________|
∧∧ ||
( ゚д゚) ||
/ づΦ
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGご存じでしたら教えてください。
出来れば、概要だけではなく、アルゴリズムと実装の両方が記載されてる
ページをお願いいたします。
0213デフォルトの名無しさん
NGNGあるのでしょうか?
あるのなら教えていただきたい。
システム日付設定関数とかあるのかな???ネットで検索したが
見つからなかったので。
0214デフォルトの名無しさん
NGNG期間限定!もうお目にかかれない!
http://alink3.uic.to/user/angeler.html
0215デフォルトの名無しさん
NGNGこれ全部見た?
http://www.google.com/search?hl=ja&ie=UTF-8&oe=UTF-8&q=C%E8%A8%80%E8%AA%9E%E3%80%80%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%80%80%E6%97%A5%E4%BB%98%E3%80%80%E9%96%A2%E6%95%B0&lr=lang_ja
0216215
NGNGそれは、システムによって違うな。
0217デフォルトの名無しさん
NGNGまあ、どうしても設定したいのであれば、
system("date -s 2003-07-28");
という手もある(windows/linuxどっちでも動くかもね)
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNGファイルをfopenでバイナリモードで開き
fgetcで元のファイルを読み込んで、fputcでコピーして閉じたのですが
テキストファイルはうまくコピーできたものの
JPEGファイルはファイルだけが出来て中身がありません。
具体的にはどうすればいいんでしょうか?
0221デフォルトの名無しさん
NGNG"rb"
0222221
NGNG0223デフォルトの名無しさん
NGNGchar hoge ; scanf("%c" , &hoge) ;
scanf「だけは」使わないくせに
scanfより悪いことを平気でする低脳
0224デフォルトの名無しさん
NGNG具体的にはどうやったのでしょうか?
0225デフォルトの名無しさん
NGNG今、tiff画像の各ピクセルあたりの輝度を
取り出すプログラムを書いているのですがどうも値が間違ってるようなんです。
ちゃんと16bitの値を取り出して出力できているでしょうか?
コードは次のようになっています。
0226デフォルトの名無しさん
NGNG#include <tiffio.h>
main(int argc ,char *argv[])
{
TIFF *tiff;
uint32 width,height,row,x;
unsigned short int *buffer;
unsigned long int result;
tiff = TIFFOpen(argv[1],"r");
/*画像の幅と高さを取得*/
TIFFGetField(tiff,TIFFTAG_IMAGEWIDTH,&width);
TIFFGetField(tiff,TIFFTAG_IMAGELENGTH,&height);
buffer = (unsigned short int *)malloc(TIFFScanlineSize(tiff));
for (row = 0; row < height; row++) {
/*tiff から一行読み出して buffer に格納る。row で何行目かを指定。0は画像の番号。*/
/*読み出した配列は 16bit の整数データを要素に持つ */
TIFFReadScanline(tiff, buffer, row, 0);
for(x=0;x<width;x++){
result = * ((unsigned short int *)(buffer + x));
printf("%d %d %u \n",row,x,result);
}
}
}
0227デフォルトの名無しさん
NGNGそれとも、日本語で説明するんですか?
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGこれは
result = * ((unsigned short int *)(buffer) + x);
でないの?
0230デフォルトの名無しさん
NGNGmalloc の cast も無駄。
0232デフォルトの名無しさん
NGNG実際に、printfではどう表示されているの?
それと本来ならどう表示されるはずなの?
0233デフォルトの名無しさん
NGNG言うだけ無駄な相手だったな
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236225
NGNG実行結果は、
0 0 43
0 1 68
:
:
という感じで、一見すると正しい値が得られているようなんですが、
画像の輝度を全て得てからグラフツールでプロットすると
ただランダムな値が出力されているようにしか見えないんです。
>>234
endian がおかしいのでしょうか。
未熟で判断できません。すみません。
0237225
NGNGTIFFGetField(tiff,TIFFTAG_BITSPERSAMPLE,&cps);
TIFFGetField(tiff,TIFFTAG_SAMPLESPERPIXEL,&bpc);
別のプログラムで、この2行を加えて画像のbitは確認しています。
0238デフォルトの名無しさん
NGNG何処がおかしいか教えて下さい。
//includeは省略
char *mutation(char *str){
char *str1;int l;int i;
l=strlen(str);
str1=(char *)malloc(l*sizeof(char));
*str1='x';
for(i=1;i<l;i++){
*(str1+i)=*(str+i);
}
return str1;
}
int main(){
char *str;char *str1;
puts("文字列を入力して下さい!");
gets(str);
str1=mutation(str);
puts(str1);
return 0;
}
0239デフォルトの名無しさん
NGNG\0を移してない
0240デフォルトの名無しさん
NGNGstr1[i] = str[i];
で済むものを、なんでそんなにひねくる?
0241デフォルトの名無しさん
NGNGレス有難うございます
mallocの行をl+1に変えたけど上手くいきませんでした・・・
0242デフォルトの名無しさん
NGNG*(str1+strlen(str)+1) = '\0';
これ。
0243181
NGNG>>194の質問に答えられる方、
もしくは、>>201の先が書いてある事が分かる方は、
分かるように説明して下さい。お願いします。m(_ _)m
>>209
知りたいのは、自分の環境での動作ではなくて、
規格上での動作だからです
0244238
NGNGmain関数で文字列を入力する前に
str=(char *)malloc(BUFSIZ*sizeof(char));
とすると上手くいきいました。
あと、それに加えて>293さんの処理も必要だったみたいです。
>240
私はポインタと配列の違いが良く分かってないDQNなんです
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGこう言うのか?
(A+1)->B == A[1].B ;
0248デフォルトの名無しさん
NGNGp[i] は *(p + i) のシンタックスシュガー。
両方等価。
0249デフォルトの名無しさん
NGNGこれか?
p[n][m] == m[n[p]] ;
0250デフォルトの名無しさん
NGNG・仮数部は整数値ではない為、1を加算しても仮数部は1ずつ増えない
・仮数部は正規化された小数値なので、指数部は絶対値によって変化する
・overflow等が発生しない限り、指数に応じたEPSILONの加算では計算誤差は発生しない
と2chで回答されて、それを信じるのか(w
0251デフォルトの名無しさん
NGNGそーそー
>>248
ヘー
ポインタの理解は値を代入するところまでで止まってまつ
どうもありがとうです
0252181
NGNGレスありがとうございます。m(_ _)m
>仮数部は整数値ではない為、1を加算しても仮数部は1ずつ増えない
はい、最初は、自分も、そう思ったのですが、
良く考えると、基数が幾つであれ、整数を加算した場合は、指数部が0(基数^0)になり、
仮数部も、その整数と同じになるのではないかと思い質問しました
でも、規格上は、1ずつ増えるとは限らないと言う事なのですね。
>・仮数部は正規化された小数値なので、指数部は絶対値によって変化する
なるほど、絶対値で変わる事のですね
>・overflow等が発生しない限り、指数に応じたEPSILONの加算では計算誤差は発生しない
絶対値で指数部が変化すると言う事は、3つ目は大丈夫と言う事ですね
>と2chで回答されて、それを信じるのか(w
うむ…そう言われると…。
0253デフォルトの名無しさん
NGNG「浮動小数点 正規化」辺りで検索しなはれ
0255デフォルトの名無しさん
NGNGp はポインタ(アドレス+型)で、
i は整数、ということで。
0256デフォルトの名無しさん
NGNGよくわからん
0257デフォルトの名無しさん
NGNG>
> 配列と、配列の先頭要素へのポインタが等価なのは、
> 引数として渡された場合に限る。ねんのため。
引数として渡されてなくても、普通に等価のような気がするけどなぁ?
0258
NGNG198 の 181 の人は、仮数部、指数部の意味がわかってないと思いますよ。
数論的な捕らえ方をしている様ですが、そうではなくって、たとえばIEEE
なりの正規化処理が行われた well defined な「仮数部」「指数部」を仮定
して話さないと話が通じなかったり遠回りになったりします。
0259デフォルトの名無しさん
NGNG即ち、*(i + p)とi[p]は等価ということやね。
>>249
なので、
3["abcd"]とか1[strchr("abcd", 'c')]もできるわけだよ。
#両方とも結果は'd'に等しい。
0260デフォルトの名無しさん
NGNGans の型は char [2] で、
&ans[0] の型は char* だ。
だから、sizeof ans は 2 で、
sizeof (&ans[0]) は sizeof (char*) だ。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNGこれって本当なの?
gccじゃ何の警告も出ないんだけど?
0263デフォルトの名無しさん
NGNGint (*p)[5]=&a;
0265デフォルトの名無しさん
NGNG嘘。
&ans は配列ポインタを与える。
0266デフォルトの名無しさん
NGNGANSI C 以前の仕様では、&ans と書くと警告を招いたらしい。
CFAQ→ http://www.catnet.ne.jp/kouno/c_faq/c6.html#12
0267デフォルトの名無しさん
NGNG条件式で
(a == 5 || a == 8)と書けば
aが5か8である場合ってことですが
(a != 5 || a != 8)と書くと
日本語として、どういう場合と表現されますか?
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGif(a!=5||a!=8);
else printf("コンパイラのバグか?\n");
0271デフォルトの名無しさん
NGNG(a != 5 && a != 8)
だと、aが5と8でない場合で
(a != 5 || a != 8)
だとaが何であっても常に真ということですか?
0272デフォルトの名無しさん
NGNGaが5でない ・・・234x6789・・・
aが8でない ・・・234567x9・・・
てことだから、「常に」ってことになるわけか
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGあったほうがよい。大量の浮動小数点を処理する場合でさほど精度が必要ないとき。
とはいえメモリは安くなってきてるし、処理速度考えたらFPUネイティブ(な場合が多い)の
doubleで処理するほうがいいかも。存在意義はなくなりつつあるね。
0275デフォルトの名無しさん
NGNG参考にこれもどうぞ。
htttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4.4.html
0276デフォルトの名無しさん
NGNGさっきそこちらっと見てた
参考になりまつ
0277デフォルトの名無しさん
NGNGにゃんでや? メモリ容量2倍になるのにどんくらい松よ
0278デフォルトの名無しさん
NGNG3D 関係のライブラリは float を引数にとるものが多いので、
そういう場合は必要になる。
でも、そういう時以外はやっぱり必要ない。
大量に扱う場合って演算回数も多くなる傾向があって、
それらの演算で出てくる数値誤差も大きくなるから、
結局精度がいる場合が多いんじゃないかと。
よっぽどメモリをギチギチに使わないといけなかった時代ならともかく、
今は float の価値は低いよ。
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGhttp://www001.upp.so-net.ne.jp/y_yutaka/labo/math_algo/calcbench.html
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGスレ違い
かな
0287_
NGNG0288デフォルトの名無しさん
NGNGまあそうだが・・・
>>284を見てのコメントなので。
0289デフォルトの名無しさん
NGNGじゃあ初めからそう書けよ。
0290デフォルトの名無しさん
NGNG>※「最適化あり」の比較は、 最適化によって無駄なループがまとめられてしまっている
>可能性があります。 そのため、純粋な比較にはならないかもしれません。
こいつアセンブラ読めねーアフォだなw
0291デフォルトの名無しさん
NGNG頭ん中がせいぜいその程度ということをよく現している秀逸な標本だな。
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGはつみみです。
0294デフォルトの名無しさん
NGNGミ・・ ミ ねこみみです
( )〜
0295C初心者
NGNGダウンロードした無料C++Builderで、MS-DOSで動作しています。
普通はどうやってプログラムを動作させるのですか?なんかのソフトかなんか?
0296ヽ(´ー`)ノ
NGNGこの説明でOK?
http://www.renesas.com/jpn/products/mpumcu/toolhp/features/nc30wa_5/index_j.htm
>>293
それはいくらなんでも勉強不足でつ。
0297デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG俺もCのトリビアであるC99を勉強するか。
0300デフォルトの名無しさん
NGNGrestrict int *p1=&i;
int *p2=&i;
こういうことができないってことか。
0301デフォルトの名無しさん
NGNG二つの整数変数x,yを宣言して,以下の3つの代入操作を連続して行なう.
x := x-y;
y := x+y;
x := y-x;
この操作の結果,xとyの値はどうなるのか,考察せよ.
具体的にプログラムを作成して,適当な値を入れて実行してみる
手でいろいろな値を入れて紙の上で計算してみる
のどちらの方法でもよい. この一連の操作は,何を目的としているのか,答えよ.
0302デフォルトの名無しさん
NGNGx := 3-2 = 1
y := 1+2 = 3
x := 3-2 = 2
入れ替え。
0303デフォルトの名無しさん
NGNG最後の訂正。
0304無料動画直リン
NGNG0306デフォルトの名無しさん
NGNGy' := x'+y := (x-y) + y = x
x'' := y'-x' = x - (x - y) = y
…つーか、
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0307デフォルトの名無しさん
NGNGxとyの値を入れ替える
0310たく
NGNGstruct WORD
{
char str[10];
int count;
struct WORD *next;
struct WORD *prev;
};
struct WORD *word;
struct WORD *text;
と定義した場合
word = text;
word->next = text;
としたら、*word もしくは word->nextに
*textの先頭アドレスを代入したと考えればよいのでしょうか?
0311デフォルトの名無しさん
NGNG「*textの先頭アドレス」ではなく、text(の中身)を代入。
0312311
NGNG0313たく
NGNGレスありがとうございます。
では、word->next = text = word;ということですか?
wordとwordのなかのnextが同じというのも少し変な気がするのですが。
0314デフォルトの名無しさん
NGNG気のせいです。
僕のお父さんがおじいちゃんの子供だったなんて嘘だ!
と叫んでいるようなものです。
0315デフォルトの名無しさん
NGNG具体的には
fin=fopen(jpeg1,"rb");
fout=fopen(jpeg2,"wb");
while(s=fgets(fin)!=NULL){
fputs(s,fout);
}
fclose(fin);
fclose(fout);
バイナリモードで開いてコピーしたのですが
うまく中身がコピーされていないようです。
どうすればうまくいくでしょうか?
0316デフォルトの名無しさん
NGNGそのコードをコンパイルしてから出直してくださいませ。
0317デフォルトの名無しさん
NGNG0318314
NGNGfread,fwriteはどういうふうに使えばいいんですか?
引数が足りないとエラーが出たのですが
0319無料動画直リン
NGNG0320デフォルトの名無しさん
NGNG自分で調べる気がないなら putc/getc でも使っとけ。
0321デフォルトの名無しさん
NGNGうむ、やっぱりそう説明するのがわかりやすいか。fprintfについても説明があっていいサイトだな。
0322デフォルトの名無しさん
NGNG.曰 ,.'´ ィ 、 ヽ
.| | │ノノリ )) 〉
ノ__丶 ,{{i(!l´∀`ノ!i ヘェー
||幹|| | | lj|ヽ、ノ! リ
||古|| |i!/ ! ノ 〉つ))
||雲|| |!\) l | ̄| ヘェーヘェー
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGワラタ
0325デフォルトの名無しさん
NGNG例えば、入力したものに応じて結果を出すプログラムの場合、
どうやってその結果を表示させるのかわかりません。
たま〜に「Ctrl+C」で出てくるけど、一回出てきたらそれで終わり。
他のものはエンターキーだけでいけるのだが。
0326325
NGNG「入力した単語の数を数えるプログラム」とかだったら、
MS-DOSのコマンドに単語を適当に打つじゃないですか。
それから、Enterを押しても、改行されるだけで、プログラムの結果
の「単語の数」が出てこないんですよ。
それをたま〜に「Ctrl+C」で成功できるんだが、ほとんどのばあい、
「^C」が出てくるだけ。いってることわかるよね?
0327325
NGNG0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGもしやMS-DOS 1.25か?
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGおよそ推測で答えるが、改行が来たら集計結果を表示するように作ってないのでは?
そのプログラムのソース晒してみて。
0332デフォルトの名無しさん
NGNGとりあえずWindows98やWindowsMeを使うのはやめる。
0333デフォルトの名無しさん
NGNG^Cを押して強制終了すると以降のものが表示されない環境があるんだよ。
0334333
NGNG0335デフォルトの名無しさん
NGNG^C じゃなくて改行で出て欲しいんじゃないの?
しかも、たまに ^C で出てくるって言ってるし。
0338333
NGNG0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG色々調べてみたのですが、
どうしても原因がまったく分からないので、
よろしかったら教えていただけないでしょうか。
C言語の本(「C言語で学ぶプログラミング基礎の基礎」)を買ってきて、
付属のCDでコンパイラをインストールしようとしたのですが、
「C:WINDOWS\SYSTEM32\CONFIG.NT.システムファイルは
MS-DOSおよびMICROSOFT WINDOWSアプリケーションを実行するのに
適していません」
とでて、インストールをさせてもらえません。
これの原因はどこにあるのでしょうか。
OSはXPで、特にいじった覚えもありません。
よろしくお願いします。
0341デフォルトの名無しさん
NGNG何のコンパイラを入れようとしたわけで?
0342デフォルトの名無しさん
NGNGおはようございます。
LSI C-86 Ver 3.30試食版です。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNGhttp://www.borland.co.jp/cppbuilder/freecompiler/
これの方がいい
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGhttp://gcc.gnu.org/
これの方がいい
0348325
NGNG>>333
Ctrl+Zをためしてみましたが、ダメでした。
>>332
つかってるOSはWin XP Home Ediです。
プログラム組むにはVS.NETかなんか買ってこないとダメですか?
Linuxとかに変えたい場合はどうしたらいいんですか?
今のパソコンはWinで占領されていて市販のRed Hatをインストールだけでは
できないみたいなことをいわれたことがありました。新しいパソコンを買わないとダメ?
>331 :デフォルトの名無しさん :03/07/27 05:12
>>>326
>およそ推測で答えるが、改行が来たら集計結果を表示するように作ってないのでは?
>そのプログラムのソース晒してみて。
そういうことだと思います。ソースは長いし、2chだとみにくいので載せません。
0349デフォルトの名無しさん
NGNG集計結果をMS-DOS上で表示させることで、解決できました。
0350デフォルトの名無しさん
NGNG下のプログラムを実行するとfor文を回っても同じ値になってしまいます。
実行結果
40
40
40
(続く)
なぜでしょうか?どうすればいいでしょうか?どうかご指南お願いします。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//乱数取得関数
int get_rand(max){
int temp,ransu;
srand((unsigned int)time(NULL));
ransu=rand() % max;
return(ransu);
}
main(){
int i,ransu;
for(i=0;i<12;i++){
ransu=get_rand(128);
printf("%d\n",ransu);
}
}
0351デフォルトの名無しさん
NGNGsrandは初期値設定のための関数。何度も呼んではいけません。
mainで最初に一度だけ呼ぶ。
0352デフォルトの名無しさん
NGNG早速試してみたところ成功でした。超即レスありがとうございました。
実行結果
15
7
88
108
9
84
1
123
126
84
36
105
0353デフォルトの名無しさん
NGNGなぁ、でもseedが変われば出てくる値も変わるだろ?
time指定してんのになんで?
0354デフォルトの名無しさん
NGNGtime()関数はUNIX由来の関数で、世界標準時の1970年1月1日0時0分0秒から現在の時刻までの
経過秒数を返す関数です。例えば、日本時間の2001年1月1日 0時0分0秒は、978274800となります。
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGああ、一秒以内にループが実行されたのか。納得。
0357デフォルトの名無しさん
NGNGお前はなんか解ってない予感。
0358デフォルトの名無しさん
NGNGCtrl+Zを2回とか
Ctrl+Zの後でEnterとか
そっち系か?
0359デフォルトの名無しさん
NGNGように使っていく(アドレスを++して行く方法)をつかって、どんどん先ま
で使っていくと、パソコンが落ちてしまいます。なぜでしょうか?そういう
物なんでしょうか?(メモリ確保が少ないと問題なく動きます)
0360デフォルトの名無しさん
NGNG確保した以上に++しとらんか?
0361デフォルトの名無しさん
NGNGmallocで確保した領域以外に踏み込んじゃいけません。
0362デフォルトの名無しさん
NGNGp1 += 1000;
*p1 = 0; //どかーん
int *p2=(int *)malloc(1000);
p2 += 500;
*p2 = 0; //ちゅどーん
char *p3=malloc(1000);
p3++;
free(p3); //オカーサーン
0363デフォルトの名無しさん
NGNG宣言しても、落ちてしまいます。もしflag[1000000]みたいな感じに宣言
したら、エラーはどのタイミングで出るのですか?私の場合、宣言の時
にはエラーじゃないみたいなんですけど
0364デフォルトの名無しさん
NGNGと言うか、普通のパソコンならChar型で配列の大きさは、どれくらいまで
宣言できるのでしょうか?ウチだと10000ぐらいで落ちるんですけど
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG漏れよりじじいなら許す
364=342か?
0368デフォルトの名無しさん
NGNG誰が何時どのようにしてOSから貰ってくるのかを考えれ。
0369デフォルトの名無しさん
NGNGバグがとれません。どなたか教えてけろ。
#include<stdio.h>
void switch(int* c,int* d);
int main(void){
int a[ ]={1,2,3,4,5,6,7,8,9},b[ ]={9,8,7,6,5,4,3,2,1};
int* a_ptr=a;
int* b_ptr=b;
int i;
for (i=0,i<9,i++){
printf("a[%d]=%d, b[%d]=%d\n",i,a[i],i,b[i]);
}
switch(a_ptr,b_ptr);
for (i=0,i<9,i++){
printf("a[%d]=%d, b[%d]=%d\n",i,a[i],i,b[i]);
}
}
void switch(int* c,int* d){
int* temp;
temp=c;
c=d;
d=c;
}
0371デフォルトの名無しさん
NGNGint temp;
temp=*c;
*c=*d;
*d=*c;
}
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNGついでに関数名を swap になおせ。
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGどうしたらよいのでしょうか?
例えば
str="abcdefg,hijklmna"
の中からコンマを数えたり、aが二個あることを判定する処理をしたいのですが
strcmpy等を使っても動いてくれないんです・・・
0376デフォルトの名無しさん
NGNGそれは違うかと。
配列の先頭アドレスを交換するじゃないでしょうか。
>>372様
もちろんできません。
>>373様
100万回見直しました。
けどわかりません。
0377デフォルトの名無しさん
NGNGstrchr
0378デフォルトの名無しさん
NGNGあのさぁ、ポインタ以前にtempにいれた値を使っていないことに気づかないの?
0379デフォルトの名無しさん
NGNGうっかりしておりました。これは修正いたしました。
で、そろそろ誰か答えを!
0380デフォルトの名無しさん
NGNG気付いてないから放置してあるんですよ。アホか。
0381デフォルトの名無しさん
NGNGint* temp;
temp=*c;
*c=*d;
*d=temp;
}
これをループでまわせ。
0382デフォルトの名無しさん
NGNGとりあえずコンパイルが通るようにしましょうね。
0383デフォルトの名無しさん
NGNGintとtempの間の*はいらん
0384デフォルトの名無しさん
NGNG0385369
NGNG中谷美紀丸秘エロ画像をアップします。
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG市ね!
0389デフォルトの名無しさん
NGNGじゃあ答えを教えてやる。
「switch は予約語」
0390デフォルトの名無しさん
NGNGどういう順番で勉強してるのやら興味があるな。
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG0395369
NGNG皆様ありがとうございました。
お礼の中谷美紀エロ画像です。
ttp://anan.magazine.co.jp/issue/index.jsp?gosu=1374
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNGするどい!
0398369
NGNGみなさんなんで優秀なのに2chなんかやってんですか?
0399デフォルトの名無しさん
NGNGやりゃわかる
>>381
0400_
NGNG0401デフォルトの名無しさん
NGNGここの練習問題8-2のサンプルプログラムをC言語で作りたいのですが
うまく見れません。
サンプルプログラムひらいてそこのJavaのソ-スを見ながら真似て
C言語で書いてみたのですが,Javaの知識が無いためかうまくいきません。
どこがおかしいか指摘してもらえないでしょうか?
0402401
NGNG#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void boxrnd(double m,double sig);
double x=0,y=0;
main()
{
int i,j;
int hist[100];
int x2,y2;
for(i=0;i<100;i++)
hist[i]=0;
for(i=0;i<1000;i++){
boxrnd(2.5,10);
x2=fabs(x);
y2=fabs(y);
hist[x2]++;
hist[y2]++;
}
for(i=0;i<=20;i++){
printf("%2d :",i);
for(j=0;j<hist[i]/10;j++)
printf("*");
printf("\n");
}
}
0403401
NGNGvoid boxrnd(double m,double sig)
{
int r1,r2;
r1=rand();
r2=rand();
x =sig*sqrt(-2*log(r1))*cos(2*3.14159*r2)+m;
y =sig*sqrt(-2*log(r1))*sin(2*3.14159*r2)+m;
}
0404デフォルトの名無しさん
NGNGrandを使う前にsrandで初期化。
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG何文字も保存できるんですけど、これって、4Byteで最大
何文字保存できるんですか?
0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNGそのような方、諦めないで。
ここでは、異性に効果を発揮する香水、合法ドラッグなどがおかれています。
小売価格一万円以上の品が、半額以下の値段で取引されています。
是非ここでゲットして、貴方の気持ちを打ち明けて下さい。
相手の方も、きっとそれを待っていますよ。
http://www.adultshoping.com/index.cgi?id=1057809839
0409デフォルトの名無しさん
NGNG大爆笑ってなんで?
0410デフォルトの名無しさん
NGNG>>400のリンク先があまりにもおもしろかったから。
0411デフォルトの名無しさん
NGNGchar *sを保存しても無意味だぞ。
char (s[0],s[1],s[2],…)を保存したいんだろう?
0412デフォルトの名無しさん
NGNG>char*型の文字列
文字列は char*型 ではなく、
文字(char型)データが連なったものだが?
0413デフォルトの名無しさん
NGNGint hfile;
char *A;
hfile=FileCreate("E:\\Project\\char.txt");
FileWrite(hfile,&A.str,sizeof(char*));
FileClose(hfile);
}
↑これで保存して
↓これで読み直してるんだけど
{
int hfile;
char *B;
hfile=FileOpen("E:\\Project\\char.txt",0);
FileRead(hfile,&B.str,sizeof(char*));
FileClose(hfile);
}
普通にBにはAで保存した内容が入ってるんですけど…
PC内のメモリが初期化されてないからですか?
0414デフォルトの名無しさん
NGNG同一プロセスで動かすなよ。
0415デフォルトの名無しさん
NGNGプログラムを分離して別に実行したらどうなる
0416デフォルトの名無しさん
NGNGこれはどういうことでしょう?
ついでに、別にプログラム作ったら、ファイル名が表示されました。
なんで?
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNG> char *A;
> FileWrite(hfile,&A.str,sizeof(char*));
なんだこれわ。
0419デフォルトの名無しさん
NGNGその関数の仕様見たいかも
0420デフォルトの名無しさん
NGNGちなみに、スレ違いであることに気がつきました。
FileWriteはC++Builderの関数です。Delphi6にあるのと同じです。
0421デフォルトの名無しさん
NGNGってか、ポインタってのが何なのか勉強しる。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG勉強汁!
0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG◆ポインタ ( pointer,指標,指針 ) 被参照型の実体を間接参照可能なオブジェクト。
オブジェクト(のアドレス)を指すオブジェクトであり…
ポインタのポインタとは、オブジェクト(のアドレス)を指すポインタ(のア
ドレス)を指すオブジェクトのことである。
ポインタは一種のアドレスであるが、…
住所じゃないの?
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNGじゃあ、友達や知人の住所や連絡先を書き記しておくものは、
ポイント帳とでも呼んでいるのですか?
0429デフォルトの名無しさん
NGNG住所を格納する「変数」
て意味合いで取る場合もあるし、アドレスを指す言葉でもある。
「さんきゅう」と発音すると、「thank you」「産休」「三級」いろんな言葉の意味があるが
前後のやり取りにより、一発で意味わかるやろ?
例えが変でスマソ
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG配列の添え字も一種のポインタなのだが、
それもアドレスだと言うのですか?
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNGじゃあ、マウスポインタはメモリ上のどのアドレスのエイリアスなんですか?
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGマウスポインターはマウス用のポイントするもの(er)だ
変な説明だ。。。もうやめましょうYO!
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNGhttp://pointer.s12.xrea.com/
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNGたまに発生するエラーです。環境はVC++6.0 WinXP Windowsプログラミングですが、「C言語」に関することと思います。
解決方法がさっぱりわからないので、みなさんのお力を拝借したいと思っておりますm(__)m
まずはソースをご覧ください。お手元でコンパイルできるように大幅な編集をしております。
(Pyon関数内で、構文に関しエラーが発生しますが、ご了承ください)
が、このソースを実行しても問題のエラーは発生しないと思われます。
どういったアプローチをしているかが分かれば十分と思い、割愛させて頂きますm(__)m
#include <stdio.h>
#define MAX100
typedef struct _APP{
/*
いろいろ
*/
int freeFlg;
}APP;
typedef APP* PAPP;
APP App[MAX];
int g_Count=0;
bool Pyon( PAPP _1, PAPP _2 );/* 二つの構造体を様々に比較しようとしてる関数 */
0443デフォルトの名無しさん
NGNGint main( void )
{
int i;
PAPP pApp;
while(1){
g_Count++;
for( i=0; i+1<MAX; i++ ){
pApp = App+i;
if( !Pyon( pApp, pApp+1 ) ) continue;
/*
様々な処理
*/
}
}
return 0;
}
bool Pyon( PAPP _1, PAPP _2 )
{
return/* いろいろ */? false:true;
}
以下、問題点を記述します。
0444デフォルトの名無しさん
NGNGpAppポインタ変数に本来あるべきではないアドレス(APP構造体以外のアドレス)が保持されます。
そのアドレスは、10行後ぐらいに宣言している、int g_Countのアドレスです。
これは、VCのデバック機能で分かりました。例えを挙げますと、一度コンパイルして実行します。すると、
for文の i が64のとき、pAppにg_Countのアドレスが保持され、Pyon関数内で参照するときにエラーと言った具合です。
また、この場合MAX定数を50等変更すると、エラーはおきません。当然かな?σ(^_^;)アセアセ...
さらに、イメージとしては理解できるのですが、「g_Countを宣言する箇所を変更」した場合にも、エラーは直る場合があります。
コーディングを進めていく度に発生するので、どうにかして解決策が欲しいところです。
みなさま。どうかよろしくお願い致しますm(__)m
0445デフォルトの名無しさん
NGNG0446442
NGNG「int freeFlg」の宣言は意味がありません。すいませんでしたm(__)m
0447デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG無限ループになりそうだけど、/*様々な処理*/ってところにreturnがあるの?
0450デフォルトの名無しさん
NGNGhttp://yahooo.s2.x-beat.com/linkvp2/linkvp2.html
0451442
NGNGwhileの中をグルグル周り、ESCを押され等、ユーザーがイベント操作することで
whileを抜けるようになっています。
0452442
NGNGfor文中ではなく、
/*
様々な処理
*/
は、for文を抜け、while文の中に実装しております。
真に申し訳ないm(__)m
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG> for( i=0; i+1<MAX; i++ ){
> pApp = App+i;
> if( !Pyon( pApp, pApp+1 ) ) continue;
APP App[MAX];なら0..MAX-1まで。
i=MAX-1までループしたらApp[i+1]は範囲外。
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGここには書かれてないところで i か pApp かが
書き換えられてる予感がする。
明示的に書き換えられてると分かりやすいけど、
別の何かの配列の書き換えで
添字が変になってる場合だったりすると厄介だな。
あと、今回の話とは関係ないと思うけど、
グローバル変数使う前には
本当にそれがグローバル変数であるべきか
100 回考えるべし。
>>454
ループ条件を 100 回見直すべし。
0457デフォルトの名無しさん
NGNG80回にまけてくれ。
0458442
NGNGループ条件が分かりにくかったですね。すいませんでした。
>>456
>ここには書かれていないどこかで・・・
>・・・厄介だな
その可能性があると思い、関係あるソースを洗っていきましたが、見つかりませんでした。
探し方が足りない&開発者による盲点 の症状が出てるかもしれませんがσ(^_^;)
Ps.
グローバルについては四苦八苦している最中ですので、これから精進いたします。
0459デフォルトの名無しさん
NGNGすまん。
0460442
NGNG>>444で、エラーがどうすれば直るか。ということを述べている場所で
>「g_Countを宣言する箇所を変更」した場合にも
>エラーは直る場合があります。
とあります。どういった事か分かりにくかったと思い、具体例を出します。
>>442のソースで、
APP App[MAX];
int g_Count=0;
これを、
int g_Count=0;
APP App[MAX];
や、
APP App[MAX];
char str[255]; // この行は意味がありません。エラーをなくす為にです。
int g_Count=0;
とした場合、iの値が32の時g_Countのアドレスが保持されたり
MAX定数を100000にすると、iが798の時g_Countのアドレスが保持されたり
(↑の場合、当然MAX定数が従来の100としてあるときはエラーになりません)
といった、現象が起きます。
補足を終わりますm(__)m
0461デフォルトの名無しさん
NGNGpApp と i の値を
pApp = App + i; の時と
Pyon の呼ばれる直前とで調べて、
値が違ってたらその間で変なことが起こっている。
0462デフォルトの名無しさん
NGNG自己解凍書庫のようなことをやりたいのですが
WindowsのEXEファイルのファイルサイズ(EXE部分)を取得するにはどうすれば良いでしょうか?
DOSであれば
02〜03H 最後のページに入っているバイト数
04〜05H 512バイト単位のファイルの大きさ(ヘッダも含む)。
らしいのですが、Windows上で動く32bitEXEの場合
常に同じ値になってしまいファイルサイズが取得出来ません。
0463デフォルトの名無しさん
NGNG>>1
0464デフォルトの名無しさん
NGNGでしたね^^;
ごめんなさい。
0465デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1056033645/l50
0466デフォルトの名無しさん
NGNGそこで質問してきますね。
0467442
NGNG>まずはソースをご覧ください。お手元でコンパイルできるように大幅な編集をしております。
と書きましたが、461さんの発言で、
編集しすぎてしまい処理内容にすれ違いが起こっていると思いました。
その違いはごく単純なもので、main関数の3,4行目に
int i;
PAPP pApp;
と、二つの変数が宣言されていますが、実際のソースではmainでは行われません。
main関数は 、whileでぐるぐる回しており、
この様に変更します。
int main( void )
{
while(1){
g_Count++;
Hit();
}
return 0;
}
そして、新たにHit関数も設けます。定義は、void Hit( void ); です。
そして、Hit関数の中で、以前のmain関数の内部処理が行われます。
が、以前のmain関数でのwhileループは削除してください。
その結果、Hit関数は
0468442
NGNG{
int i;
PAPP pApp;
for( i=0; i+1<MAX; i++ ){
pApp = App + i;
if( !Pyon( pApp, pApp+1 ) ) continue;
// 様々な処理
}
}
です。
この違いで何が変更されるかといいますと、PAPP pAppの宣言が、一度行われるのではなく、mainのwhile関数によって
毎回行われているということ。そして、pAppへアドレスを保持する箇所は、Hit関数の
pApp = App + i;
でしか、行われていないことです。
ツギハギの説明なので、ややこしく理解に苦しむかと思われます。
うぜーとか不快に思われた人が多数いるなら、もうこれで終了にします。
出来れば、助けてくd・・・( ´ ・ ω ・ ` )
0469デフォルトの名無しさん
NGNGPyon(&App[i], &App[i + 1])
にしてもだめなの?
0470名無し@沢村
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1059262203/l50
0471442
NGNGポインタを必ず扱うようにしなくちゃならない関数になってるんでσ(^_^;)
ポインタを渡さない場合、添え字にする i 変数を
色々変化させないと好きなAPPを指すことができないんですよ(´・ω・`)
0472デフォルトの名無しさん
NGNG& が見えない?
pApp = App + i;
Pyon(pApp, pApp + 1)
と
Pyon(&App[i], &App[i + 1])
は、上のだと pApp が変更される恐れがあることを除いて
等価なコードだぞ(C++ だとまた話は違うが)。
0473デフォルトの名無しさん
NGNG実際にそのバグが出るソースを見ないことには
「どっかで値を壊してるんじゃないの?」としか言えない。
まあソース出されてもたぶん読まないけど…
0474デフォルトの名無しさん
NGNGPAPP から const App* に変えてみてはどうだろう。
比較関数なら内容を変えることはないでしょ?
0475442
NGNGうんうん。それは分かってるんだけど
Pyonに渡すのは、&App[i]とか、「i」で渡すと不便なんです。
実際は、pApp = App + i; したあとに、多くの処理をして
pAppが保持しているアドレスを#defineで書かれた定数を使い、
変化させてるんです。ちなみに定数はMAX未満です。
>>473
ソースコード全部で67kbytesありました。ちょい多いっすねσ(^_^;)
## 結構大きめなソフトなんで、こちらも説明しずらい部分がありました。
で、問題点となるものを新しく簡潔にしましたので、そちらをお願いしますm(__)m
442の出した質問は無かったことに(´・ω・`)
0476442
NGNGうん。比較関数なので、その形でいいです。
ですが、エラーになったとき、Pyon関数へ引数として渡される前に、
pAppにはg_Count を指すアドレスが入ってるので、Pyon関数自体は意味がなかったり^^;
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGやっぱり pApp 変えとったんかい!
その pApp を変化させるところで
App[MAX - 1] より大きいところを指すようになってるとしか
考えられない。
pApp は App にある数足してるんだから
定数が MAX 未満でも、pApp[MAX - 1] を越えてしまうこともあるやろ。
0479デフォルトの名無しさん
NGNGいえ。あくまでも模型なだけで、このソースでそういったエラーはおきていませんσ(^_^;)アセアセ...
>>478
うんうん。確かに俺もそう考えました。エラーが起きた当初はね。
でも、VCでのデバックモードで、
pApp = App + i;
この時点で、pAppに保持されている値は、App関連のアドレスではなくて(0x0012ff1c等)
「g_Count」って名前と、そのアドレスが入っていたんですよ。
それも478さんのでありえる話なのかな?・゚・(つД`)・゚・
0480デフォルトの名無しさん
NGNGchar Str[100]="ABCDEFGHIJK";
char *p;
p = Str + 4;
double Syousu = 0.0;
です。
Str[100]を宣言した瞬間、メモリにはchar型のサイズで101個分連続した空き箱を作るんですよね?
そして、p には、Str[4]のアドレスが保持される。であってますよね?
で、double型の変数Syousuのアドレスは、
char Str[100]の場所になる可能性はありますか?ここが非常に知りたいんです・゚・(つД`)・゚・
説明が分からないって方いません?σ(^_^;)アセアセ...
0481百済 ◆jrisyb5rl6
NGNGミ ( ,,,,,, ∧,,∧
∧,,∧ η ミ,,゚Д゚彡
ミ __ ミ,,゚Д゚彡 (/(/ ミ /)
て" ミ ミ つつ 彡 ミ `つ
⊂ ミ ミつつ 彡 ⊂ つ
彡" ミ 彡"。γ。ミ
∧,,∧ ∨"∨ 彡 ∨"∨ 彡 ∧,,∧ / ̄ ̄ ̄ ̄ ̄
( ,,,,,ミ,,゚Д゚彡 ミ,,゚Д゚彡 < 百済参上!
⊂,,,,,,,,,,,,,,,つつ ミ ,つ \_____
彡 〜ミ ,ミつ スタッ !
ピョン! (/
0484デフォルトの名無しさん
NGNGpApp = App + i;
の時点で pApp に保持されてる値が
g_Count のアドレスで、
かつ、i の値は MAX より小さい、
ということで?
もう一度確認してもそうなる?
ウォッチで
App[i], i, App, pApp, g_Count の 5 つを見て、
値に矛盾が出る?
0485デフォルトの名無しさん
NGNG0も含めると100個分だよね?リアル個数だと101個だと思うんだけど、俺はここから間違ってるか?(つД`)
>>479
今確認できないんです。すごく調子よくてエラー起きてないんでσ(^_^;)
前述しているように、g_Countを宣言する箇所が変化すると、エラーが起きなくなったりしてるんです。
そのせいで、どんどんコーディングしてるうちに、エラーが消滅しました。
今はMAXを4323111123ぐらいでしたっけ?保持できる場所を越えて@@@@APP _CODECなんたらかんたら
ってエラーが出るぐらいMAXを増やしても、大丈夫になったんですが、
なんでだろーって詳しくわからないんです。
で、ついさっき久々に出て、またエラーなくなりましたσ(^_^;)
0487百済 ◆jrisyb5rl6
NGNG○までの100個分が確保
0488デフォルトの名無しさん
NGNGあれ。。。そうなんだ
。。。って、試したらそうやったー。何考えてるんやろ俺・゚・(つД`)・゚・
0489デフォルトの名無しさん
NGNGVBの仕様と混同していたとか
0490デフォルトの名無しさん
NGNG解決方法はありますか?
例
printf(" "CENTER" ");
0491デフォルトの名無しさん
NGNG拡張表記
0492デフォルトの名無しさん
NGNG↓
printf(" \\\b\"\\\b\\\\\b\\\b\bCENTER\\\b\"\\\b\\\\\b\\\b\b \b");
0493デフォルトの名無しさん
NGNG\"使って
こう書けば(・∀・)イイ!!
printf(" \"CENTER\" ");
0494デフォルトの名無しさん
NGNG>>490と同じ事オレに聞いてきたな…。
プロのクセにそんな初歩的なこともわからないのか?
と小一時間問い詰めてやりたかったが仕事の関係上やめておいた…。
0495401
NGNG初期化をするとrandで乱数を発生させることには成功しました。
しかしその後がどうもうまくいきません。。。。
printfで確認したところrandで乱数は発生しているのですが、
x,yの計算結果が固定されてしまっています。。。
結果の一部はこんなかんじです。
r1=2084180332 r2= 510239677 x= 0 y=-524288
r1=1662509978 r2= 76901842 x= 0 y=-524288
r1=1183502636 r2=1564379174 x= 0 y=-524288
r1=1395037916 r2=1734631552 x= 0 y=-524288
0496401
NGNG#include<math.h>
#include<stdlib.h>
#include<time.h>
void boxrnd(double m,double sig);
double x=0,y=0;
main()
{
int i,j;
int hist[100];
int x2,y2;
srand((unsigned)time(NULL));
for(i=0;i<100;i++)
hist[i]=0;
for(i=0;i<1000;i++){
boxrnd(2.5,10);
x2=fabs(x);
y2=fabs(y);
hist[x2]++;
hist[y2]++;
}
0497401
NGNG{
int r1,r2;
r1=rand();
r2=rand();
printf("r1=%10d r2=%10d ",r1,r2);
x =sig*sqrt(-2*log(r1))*cos(2*3.14159*r2)+m;
y =sig*sqrt(-2*log(r1))*sin(2*3.14159*r2)+m;
printf("x=%7d y=%7d\n",x,y);
}
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG%d で double 型を表示させようとしてるから
0501401
NGNG0502デフォルトの名無しさん
NGNGhttp://yahooo.s2.x-beat.com/linkv/linkv.html
0503405
NGNGrandは0〜RAND_MAXまで。
Math.randomは0〜1まで。
乱数の範囲が違う。
sqrtの中に-2があるので、虚数がでないように0〜1の範囲にする。
log(0)は-∞となるので、特別な処理が必要。
0504401
NGNG教えてもらえないでしょうか?
0505401
NGNG結果がこのサイト ttp://www5c.biglobe.ne.jp/~MOGI/algorithm/algorithm02.htm#SEC1
のようにきれいにでません。なぜでしょうか?
0506アナ・コッポラ
NGNG0508デフォルトの名無しさん
NGNG↑の「CodeWarrior Development Studio for ColdFire Architectures」
ってヤツをダウンロードしたんだけど、WinXPでも大丈夫だよな?
ダウンロードは無料で使用するにはライセンスが必要って書いてるけど、
べつにライセンス買わなくたって誰にもバレやしないじゃないの?
「CodeWarrior Development Studio for ColdFire Architectures」
「CodeWarrior Development Studio for HC08 Microcontrollers」
「CodeWarrior Development Studio for HC12 Microcontrollers」
「CodeWarrior Development Studio for PowerPC ISA」
「CodeWarrior Development Studio for PowerPC DSP」
↑のようにいろいろあるわけだけど、一番上のヤツをダウンロードして
間違いないよな?だれかこれらの違いを説明してくれ。
0509デフォルトの名無しさん
NGNG0510508
NGNG答えないなら答えるまでage続けます。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNG0515_
NGNG0516デフォルトの名無しさん
NGNGどうせなら
CodeWarrior for PalmOS
がいいんじゃないか?(’’
0517デフォルトの名無しさん
NGNG今学習のために、完全数を探すプログラムを作ろうとしてます。
任意の数字までループさせ、そのそれぞれの数字の約数を表示させることには成功したのですが、
その約数を配列に代入する方法がわかりません。
約数の数はいくつあるかわからないので、いくつ配列を用意したらいいか等が
理解できません。
どなたか教えていただけないでしょうか?
unsigned int i,n;
for(i=2;i<4000000000; i++)
{
for(n=1;n<=(i/2);n++)
{
if((i%n)==0)
{
printf("%dの約数は%dです。\r\n",i,n);
}
}
}
main関数の中身です。unsigned int は40億位まで扱えるらしいので、それまでループさせ、
約数を表示させるまではできたんですが・・・。
どなたかよろしくお願いします。
0518デフォルトの名無しさん
NGNG配列を用意する必要は無い。
変数を用意して約数を見付けるごとに加算すればよい.
0519デフォルトの名無しさん
NGNG正攻法だと、intを溜めるための構造体を作って、
その構造体を管理する関数群を実装し利用するってことになるかね。
#define UNIT_ALLOCATE 256
typedef struct {
unsigned int *data;
size_t allocated;
size_t end;
} uintarray;
uintarray *ianew(void) {
uintarray *ia = malloc(sizeof(uintarray));
if (!ia) return NULL;
ia->data = NULL; ia->allocated = 0; size_t end = 0;
return ia;
}
uintarray *iaappend(uintarray *ia, unsigned int i) {
if (allocated <= end) {
unsigned int *tmp = ia->data;
ia->data = realloc(ia->data, ia->end + UNIT_ALLOCATE);
if (!ia->data) {
ia->data = tmp;
return NULL;
}
ia->end += UNIT_ALLOCATE;
}
ia->data[ia->end++] = i;
return ia;
}
こんな感じで。行数収めるのにちょっとヘンな表記してるけど。
0520デフォルトの名無しさん
NGNGまあいいや。その辺は練習問題w
intをためるならこんな感じでmalloc系を使ってやれってこと。
0521517
NGNG新たな変数PNを用意して、こんな風にしてみたんですがどうでしょうか?
main関数の中身です。
unsigned int i,n;
unsigned int PN;
PN = 0;
for(i=2;i<4000000000; i++){
for(n=1;n<=(i/2);n++){
if((i%n)==0){
PN=PN+n;
if(PN==n)//完全数かどうかを調べる
{
printf("%dは完全数です。\r\n",PN);
}}}}
行数節約のため変になってて申し訳ありません。
自分としてはこれが精一杯です。
しかもコンパイルしたら予想通りには動きませんでした・・・。
>>519
わざわざそんなに書いてもらってありがとうございます。
しかし、私にはまだ理解できませんので、少しずつ理解できるように読んで行きます。
できたら、簡単な流れを教えていただけるとありがたいです。
よろしくお願いします。
0522デフォルトの名無しさん
NGNGPN = 0;の場所が違う
n<=(1/2)が違う
0523デフォルトの名無しさん
NGNG0524522
NGNGn<=(i/2)が違う
0525517
NGNGunsigned int i,n;
unsigned int PN;
for(i=2;i<10000; i++){
PN = 0;
for(n=1;n<=i;n++){
if((i%n)==0){
PN=PN+n;
if(PN==2*i){
printf("%d\r\n",(PN/2));
}}}}
なんとか動き、6や28等は表示されるんですが120等無意味な数字も表示されてしまいます。
このソースのどこがおかしいのでしょうか?
0526デフォルトの名無しさん
NGNG2個目のif文の場所
0527517
NGNGありがとうございました。
しっかり動くようになりました。
ためしに動かしてみたんですけど、8128まではすぐ表示されたんですが
次の完全数は何分たっても表示されません(笑
達人はこんなのよりもっともっと高速なプログラムを組むんだろうなぁ・・・
0528デフォルトの名無しさん
NGNG高速な判定法が知りたかったら「メルセンヌ素数」あたりで
検索して見るとよいかと。
0529デフォルトの名無しさん
NGNG吊ってくる
0530デフォルトの名無しさん
NGNG他の人がageにくくなるからそういう書き込みはやめよう。
0531517
NGNGあ、知ってます。
(2^p)-1が素数になる場合、{(2^p)-1}{2(p-1)}が完全数になるやつですよね?
メルセンヌ数を探す方法で完全数を探すのと今見たいに探すのどっちが速いだろう・・・
0532デフォルトの名無しさん
NGNGアンダースコアで始まり次に大文字が続く識別子と、
アンダースコアを2つ連続で含む識別子は、
処理系や標準ライブラリのために予約されていて、
また、グローバル名前空間に属す識別子は
アンダースコアで始まる識別子全般も予約されている
んだけど、C ではどうなってるんですか?
教えて規格博士!
0533519
NGNG構造体uintarrayには、unsigned intを溜めておく領域へのポインタ(data)と、
確保した領域の大きさ(allocated)と配列の末尾(end)が含まれている。
実際のデータとその領域を管理するための情報があるといってよい。
ianewは、uintarrayの確保をして初期化して返す。
配列領域は確保してない。
iaappendは配列(data)の末尾に整数を一個付け加えるけど、
配列の領域が足りなかったら領域を確保しなおしてる(realloc)。
確保すべき領域のサイズの指定にバグあり。
他にも、確保したuintarrayを開放する関数やら、
uintarrayから値を取り出す関数やらが必要になるだろうね。
その辺全部関数に閉じ込めちゃえば作るのが楽よ。
ってこと。特に難しいことは何もやってないはず(でもバグ入れちゃった)。
0534デフォルトの名無しさん
NGNG> アンダースコアで始まり次に大文字が続く識別子と、
> アンダースコアを2つ連続で含む識別子は、
> 処理系や標準ライブラリのために予約されていて、
これはおなじ
0535デフォルトの名無しさん
NGNG規格博士じゃないけど、きいたところによるとアンダースコア二つで
始まる識別子は処理系のために予約されてるんだと思った。
0536デフォルトの名無しさん
NGNGつまり、アンダースコア全般で始まる識別子までは予約されてない、ってことですね。
ありがとうございました。
0537デフォルトの名無しさん
NGNGあなたもありが�d。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGを連想してしまった
すまん>>538
0540517
NGNGhttp://no.m78.com/up/data/up029959.zip
これを、もう少し高速に計算させたいのですができますでしょうか?
それと、このプログラムの出来を評価してもらえると嬉しいです。
0541デフォルトの名無しさん
NGNGすぐ思いついたのはこんなの。たいして速さは変わらんけど。
表示部分は省略。
for(i=2;i<4000000000; i++)
{
int max = sqrt(i);
PN = 1;
for(n=2;n<=max;n++)
{
if((i%n)==0)
{
PN+=n+i/n;
}
}
if (i == max * max) {
PN-=max;
}
if(i==PN)
0542デフォルトの名無しさん
NGNGforなどの繰り返し使う、エラトステネスの篩いを使う、
配列を使う、線形リストを使う、
この4種類のやりか方で作ったときに、
それぞれの計算量、メモリの使用量はどうちがうのですか?
エラトステネスの篩いを使うと
カウント変数ない分、配列のほうが変数の数は少なくなる。
繰り返し処理が多いと計算量が増えるので、
配列使ったほうがすっきりする場合多いからその分計算量減る。
線形リストではよりメモリの使用量は多くなる。
このくらいが思いつくのですがあってますか?
また、他にどういう違いがありますか
0543デフォルトの名無しさん
NGNG自分のしていることを把握していない真性アフォは
プログラムを作るな 社会悪だ
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGこれで俺のマシン(Celeron650)で5番目の完全数まで340秒かかった。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=126&fi=no
540だと10倍は軽くかかりそうだ
0548517
NGNG( д ) ゚ ゚
ハヤー
世の中は広いなぁ。
漏れが作ったやつじゃ40分ほど計算させても5番目は出ませんでした。
いやいや、スゲー。
俺もそんなプログラムが組める様になりたいなぁ。
いや、ほんとに凄杉。
うん。凄い。
0549デフォルトの名無しさん
NGNG2バイト文字の検索はどうやったらできますか?
ASC�UコードからシフトJISコードへの変換とか。
漢字やひらがなも検索できるようにしたいんですけど。
どうしたらいいんでしょうか?
よろしくおながいします。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGおそらくASCIIの半角英数からSJISの全角英数に変換したいんだろう。
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGjcodeなけりゃ何も出来ないんですか?
0556デフォルトの名無しさん
NGNGしかしここはC言語スレなんでperl使えはスレ違い
0557デフォルトの名無しさん
NGNGASCII(アスキー)コード
文字を 7 ビット(0x00〜0x7F)で表現する文字コード。
当然のことながら表現できる文字の種類は少ない。
シフト JIS コード
文字を1バイトと2バイトの混合で表現する日本語用文字コード。
1バイト文字のうち、0x00〜0x7F は ASCII コードと同じで、
0xA0〜0xDF は半角カナである。
2バイト文字は 0x81〜0x9F, 9xE0〜0xFC で始まり、0x40〜0x7E, 0x80〜0xFC で終わる。
シフト JIS コードを採用している OS でも、
標準 C でシフト JIS コードを扱える関数(mb 系関数)は
そんなになかったと思う。
標準 C を使う限りは細かい判定は自分でする必要がある。
VC++ 使ってるならそれなりの関数(_mb 系関数)があるので、
それを使ってみてはどうだろう。
それでも凝った検索アルゴリズム使う場合には
どこまで使えるか分かんないけどね。
055872
NGNGしかし、これは動作が保障されているのかな?
# 今までforループを考えうる n の最大数分書いて
# いらない部分のループは continue で逃げる方法をとっていました。
void nfor(unsigned int n)
{
int i[10], j=0;
switch(n){
case 9: for(i[9]=0; n>=9 && i[9]<2; ++i[9])
case 8: for(i[8]=0; n>=8 && i[8]<2; ++i[8])
case 7: for(i[7]=0; n>=7 && i[7]<2; ++i[7])
case 6: for(i[6]=0; n>=6 && i[6]<2; ++i[6])
case 5: for(i[5]=0; n>=5 && i[5]<2; ++i[5])
case 4: for(i[4]=0; n>=4 && i[4]<2; ++i[4])
case 3: for(i[3]=0; n>=3 && i[3]<2; ++i[3])
case 2: for(i[2]=0; n>=2 && i[2]<2; ++i[2])
case 1: for(i[1]=0; n>=1 && i[1]<2; ++i[1])
case 0: for(i[0]=0; n>=0 && i[0]<2; ++i[0]){
/* i[0〜n]を使った処理 */
}
break;
default: return;
}
}
0559デフォルトの名無しさん
NGNG>case 9: for(i[9]=0; n>=9 && i[9]<2; ++i[9])
ここは 9 以上の時しか来ないため、
case 9: for(i[9]=0; i[9]<2; ++i[9])
でよい。
その他も同じ。
また、「i[n]」は 0 〜 1 の間でしか値が変化しない。
よって
for( n=0; n<=9; n++ )
{
for( i[n]=0; i[n]<2; i[n]++ )
{
/* i[0〜n]を使った処理 */
}
}
で良いと思われるが?
0560デフォルトの名無しさん
NGNGやっぱりn重ループじゃねーか。
056172
NGNG>ここは 9 以上の時しか来ないため、
> case 9: for(i[9]=0; i[9]<2; ++i[9])
>でよい。
>その他も同じ。
この場合、9 の時はそれでいいかもしれませんが。
コンパイラは意図したコードを吐きません。で、悩んでたんです。
77 読んだら分かるでしょうか?
それではダメなんですよ。実際は 0〜1 ではないんで。
056272
NGNG配列のパラメータのとりうる組み合わせを全て評価関数で評価して、
最も良いものを探すって感じのプログラムなんです。
だからこの場合は 1024通りの中から選ぶって感じにならないといけないわけです。
561がなんかえらそうですんません。
0563デフォルトの名無しさん
NGNGって言うか、何をしたいのか書いてみろ。
他の解決方法がありそうだが?
0564デフォルトの名無しさん
NGNG1重ループ版。逆に遅くなってそうだけど…
j = n;
i[j] = 0;
for (;;) {
if (i[j] < 2) {
if (j == 0) {
/* i[0〜n]を使った処理 */
++i[j];
} else {
j--;
i[j] = 0;
}
} else {
j++;
if (j > n) break;
++i[j];
}
}
0565デフォルトの名無しさん
NGNGreadlineライブラリを使えないのです。
-lreadline
オプションだけではダメなのですか?
0566デフォルトの名無しさん
NGNGついでに言えばこっちの方が比較回数が減って良好。
void nfor(unsigned int n)
{
int i[10], j;
for(j = 0; j < 10; ++j)
i[j] = 2;
switch(n){
case 9: for(i[9]=0; i[9]<2; ++i[9])
case 8: for(i[8]=0; i[8]<2; ++i[8])
case 7: for(i[7]=0; i[7]<2; ++i[7])
case 6: for(i[6]=0; i[6]<2; ++i[6])
case 5: for(i[5]=0; i[5]<2; ++i[5])
case 4: for(i[4]=0; i[4]<2; ++i[4])
case 3: for(i[3]=0; i[3]<2; ++i[3])
case 2: for(i[2]=0; i[2]<2; ++i[2])
case 1: for(i[1]=0; i[1]<2; ++i[1])
case 0: for(i[0]=0; i[0]<2; ++i[0]){
/* i[0〜n]を使った処理 */
}
break;
default:
/* エラー吐いた方がいいんじゃないかしらん */
}
}
でも、あんたもトリッキーなことするね。再帰じゃダメなことでもあったの?
>>559
それじゃダメ。
例えば n が 3 の時、
例えば i[0] は常に 2 でしかない。
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGn には既に -1 されたのを渡すのか。
0569デフォルトの名無しさん
NGNGvoid nfor(unsigned int n)
{
int i[4], j;
for(j = 0; j < 4; ++j)
i[j] = 2;
switch(n){
case 3:
for(i[3]=0; i[3]<2; ++i[3]) {
case 2:
for(i[2]=0; i[2]<2; ++i[2]) {
case 1:
for(i[1]=0; i[1]<2; ++i[1]) {
case 0:
for(i[0]=0; i[0]<2; ++i[0]){
/* i[0〜n]を使った処理 */
}
}
}
}
break;
default:
/* エラー吐いた方がいいんじゃないかしらん */
}
}
switch は n の値を評価して、goto みたいに case ラベルの位置にジャンプする。
case/default ラベルは普通のラベルと同じように書けて、
もちろん for ループの中にも書くことができる。
変数の初期化に気をつけないといけないけど、
それをしているのが最初の for ループね。
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGlibreadline.a にライブラリ用のパス通ってる?
0572デフォルトの名無しさん
NGNGで、コンパイルしたのですが、
undefined reference to `_scntrl'
undefined reference to `_strol'
undefined reference to `_strcm'
と帰ってきます。
コンパイル時にオプション指定が何か足りないのでしょうか?
stdio.h、string.h、stdlib.h、ctype.h、errno.hをincludeしています。
0573デフォルトの名無しさん
NGNGscntrl, strol, strcm ... か。
iscntrl, strtol, strcmp の typo(タイプミス)では?
0574デフォルトの名無しさん
NGNGそうでした。ありがとうございます。
0575デフォルトの名無しさん
NGNGまぁ、C でも gcc を C99 モード(-std=c99)で使えば警告出してくれるけど。
0576デフォルトの名無しさん
NGNGウインドウ ハンドルだけ分かってる状態で、そのウインドウがアクティブかどうか
確認する方法はありますでしょうか?
どうか教えてください
0577デフォルトの名無しさん
NGNG>>1
0578デフォルトの名無しさん
NGNGそんなぁ〜 (ToT
Windowsって言ってもC言語ですし
検索しても見つけられませんでしたし
お願いしますよ〜
0579デフォルトの名無しさん
NGNGこの辺見てだめなのか?
それとスレ違いだからVCスレかwin32apiスレいったほうが誰か答えてくれるぞ
ぽまえがいってるのは、C言語ではなくwin32apiだ
0580デフォルトの名無しさん
NGNGわぉ〜 (^O^)
すみません、windowsはすれ違いでしたね
それはそうと、教えてくださってありがとうございます
リンク先の一番上にあった、GetActiveWindowでHANDLEと
比較すれば分かりそうです
ありがとう〜 (^o^)/^^^^
0581デフォルトの名無しさん
NGNGどのあたりがC言語の質問なのか50字以内で答えよ
0582デフォルトの名無しさん
NGNGANSI C 準拠ではないけど
定義方法、書き方、コンパイラ、などは、どう考えても、C言語だと思う
C++じゃないかと言われると、確かに使ってるところもあるからC++かなって思う
(MFCは完全にC++だけど…)
Win32APIがC言語で作られたから、C言語だとは思わないけど
(C言語で他の言語も作れるから…)
でも、今のWin32APIはC言語の拡張関数、ライブラリだと思います
だからC言語です
C言語が書けなかったり、書き方やコンパイラが変わった時
それはC言語ではなくなると思います
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNGもっと簡単な方法が(スレ違いの為略)
0585デフォルトの名無しさん
NGNG>今のWin32APIはC言語の拡張関数、ライブラリだと思います
激しく違います。
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG>
> 配列のパラメータのとりうる組み合わせを全て評価関数で評価して、
> 最も良いものを探すって感じのプログラムなんです。
> だからこの場合は 1024通りの中から選ぶって感じにならないといけないわけです。
int limit = 1 << n;
for (int k = 0; k < limit; ++k) {
for (int j = 0; j < n; ++j) {
i[j] = (k >> j) & 1;
}
/* i[0〜n]を使った処理 */
}
こういうことか?
0588デフォルトの名無しさん
NGNGまず、もちついて>>1のこれを嫁。
>GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
> でも、今のWin32APIはC言語の拡張関数、ライブラリだと思います
> だからC言語です
「○○だと思います(自分勝手な解釈)。だから××です(断定形)」という時点でご愁傷。それ以前に50字超えてるし。
と夏休み最初の1日目、派手に釣堀で戯れる。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG///////____________
///////  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄
/////// (~) チリンチリン
/////// ノ,,
/////// ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄
/////// ( ´∀`)( 厨 ) )) < 夏だなあ〜
/////// (つ へへ つ \______
/////// //△ ヽλ ) ) 旦
////// l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
/////  ̄| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| .| ̄
//// ^^^ ^^^
厨房の夏。2chの夏。
0592デフォルトの名無しさん
NGNGLinuxじゃC言語なんて使えないですよね?
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG使えません
C言語が使いたければWindowsに乗り換えてください
0596デフォルトの名無しさん
NGNG(ry
0597デフォルトの名無しさん
NGNGオマエハナー
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNGLinuxを含めたUNIXプラットフォームで最も多く用いられているのが
C/C++言語です。
WindowsでコンパイルしたものはWindowsでしか使えません。
Linuxで使うためにはLinuxでコンパイルする必要があります。
592-597は自作自演ですか???
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG嘘は書くな。
Windows環境で動くクロスコンパイラは
Windows以外で使うものを作るのが目的だぞ。
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNGβακα..._〆(゚▽゚*)
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG処理系、動作環境依存
あと、プラグラムはやめれ。
0609デフォルトの名無しさん
NGNG0 or 1ならそれでおっけーですね。勉強になります。
でも for で使うのは実際は double 型なんです。
>>566
そうできるんですね。なら、
for(j=n; j<10; ++j)
と、ここをしてもいいわけですね?そこまで気にしなくても、って感じですが。
>でも、あんたもトリッキーなことするね。再帰じゃダメなことでもあったの?
速度を優先するなら再帰はよくないかと思いまして。
0610デフォルトの名無しさん
NGNGif (strcmp(argv[1], "--help") == 0)
/* ほにゃらら */
これを
if (argc == 2 && strcmp(argv[1], "--help") == 0)
/* ほにゃらら */
と書くような技法を何ていうんでしたっけ?知ってる人教えてください。
0611デフォルトの名無しさん
NGNG技法?
技法じゃないが論理積か?
0612デフォルトの名無しさん
NGNGショートサーキット
0613デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG大抵の場合、この程度の時間で処理できればOKという線がある。
で、再帰ではそれを満たさなかったの?という話だと思う。
あと関数呼び出しのオーバーヘッドをなくすよりも
i[0〜n]を使った処理の方を見直した方が余程速度に影響する。
どうせそこでループがしてるんだろうし。
0617デフォルトの名無しさん
NGNGdouble をループカウンタに使うのは
数値誤差があるんでやめた方がいいと思うが...。
ループカウンタには int を使って、
同時にそれに対応する double 値が得られる工夫をするべし。
再帰が問題になるかは、実際に再帰してみてから考えれ。
それほど関数呼び出しのオーバーヘッドが問題にならないかもしれないし。
0618デフォルトの名無しさん
NGNG実際、doubleを制御変数にしていると速度低下を招く罠。
0619デフォルトの名無しさん
NGNGコードを教えて下さい
0620デフォルトの名無しさん
NGNGDel厨はDel厨らしくDelスレに帰れ。
0621デフォルトの名無しさん
NGNGtypedefを知らない人。#defineでやっちゃっています。
0622デフォルトの名無しさん
NGNGMFC だけど、MFC じゃなくてもやることは大体一緒。
http://www.kab-studio.com/Programing/Codian/MFCTips/01.html
0623619
NGNG私が聞きたいのはWindowsじゃないんですけど・・・・
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG>>1
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
0626デフォルトの名無しさん
NGNGC言語って使えるんですか?
それとよく聞く「コンパイラ」って何ですか?教えて下さい
0627626
NGNG0628626
NGNG0629デフォルトの名無しさん
NGNG0630あき
NGNG縦書きに
は
じ
め
て
・
・
というふうに表示させたいのですが、どこが間違っていいるのでしょうか?
#include <stdio.h>
main()
{
int i;
char str[30] = "はじめてのCプログラム";
for(i = 0; i < 11; i++)
{
printf("%c\n", str[i]);
}
return 0;
}
0631デフォルトの名無しさん
NGNG#include <stdio.h>
main()
{
int i;
char str[30] = "はじめてのCプログラム";
for(i = 0; i < 11; i+=2)
{
printf("%c%c\n", str[i],str[i+1]);
}
return 0;
}
0632デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
main() {
int i;
char str[] = "はじめてのCプログラム";
for(i = 0; i < strlen(str); i+=2)
printf("%c%c\n", str[i],str[i+1]);
return 0;
}
1バイト文字と2バイト文字にご注意と言う事。
0633デフォルトの名無しさん
NGNGおいおい、ループ終了判定で毎回strlen()呼ぶのか?
0634デフォルトの名無しさん
NGNGニーノさんのホームページ作り2
http://ex.2ch.net/test/read.cgi/entrance/1059029010/
ニーノ ◆p9GipySMGk によってラウンジにたてられたこのスレで、
http://page.freett.com/ninogumi/
【ニーノさんのホームページ】
というサイトが作られた。(現在もコンテンツは爆発的に増えてるよ。)
さぁ、君もアイディアを出して、2CHネラーだけの最強サイトをつくろう!
祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り
0635デフォルトの名無しさん
NGNGわはは。腕がなまってるな、オレ。
0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG初期化は可能だが、代入はできない。
「仕 様 で す」
0639デフォルトの名無しさん
NGNGどちらの書き方してもコンパイルしたら同じ結果になりますよね。
0640デフォルトの名無しさん
NGNGない。
あれで「ショートサーキット」という言葉が出てくる612はエスパー
0641_
NGNG0642デフォルトの名無しさん
NGNGhttp://www.rarPqQS5byCtf 9,654,651 e1b30988f7a4a9cb0f5495d0731c7878
0643デフォルトの名無しさん
NGNGargc!=2のときのstrcmpが実行されるかどうか)を、
保証しているのが、ショートサーキット。
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNGhttp://www1.kcn.ne.jp/~robe/cpphtml/html03/cpp03002.html
0646デフォルトの名無しさん
NGNG短絡、ショート
0647けん ◆gZE4xJJ95c
NGNGまあ、そういわないでくださいよ。(しょうがないですけど。。)
もうメンテナンス半分放棄してるから、C machine公開
終了しようと思ってます。
文法的にでも完全なANSI仕様にするのはかなり大変だったです。
0648デフォルトの名無しさん
NGNG0649けん ◆gZE4xJJ95c
NGNG>文法的にでも完全なANSI仕様にするのはかなり大変だったです。
結局、完全なANSI仕様にする前に力尽きた、というか、
本業が忙しくて、それどころじゃない状態になってしまい
開発ほとんど中止状態になっちゃったんですよね。
っと、言い訳はこれくらいにして、自分もひさびさにこのスレッド
でも見てC言語思い出してみようかな。。(ここ2年くらいC言語
から離れちゃってるんですよね。C++で開発してた時とかあったけど、
仕様の理解と実装はそれとはまた全く違う話ですからね。。)
0650けん ◆gZE4xJJ95c
NGNG自分宛ての意見ですか?
それはたまたま今見たからですよ。
プログラム板ってほとんど見ませんし。
0651デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNGsourceforgeにでもつっこんで終わりにしたら?
0655デフォルトの名無しさん
NGNG消滅つうても、宿題スレとかを観察してると学校の授業で使ってるところがあるっぽいのよね。
多分ずーっと使われつづけるよ…。
未だにN88BASICとかの授業やってるところもあるみたいだし、
一度慣れちゃったものにしがみつく教師は多いと思う。
晒してるようで(実際晒してるんだけど)申し訳ないんだが、
質問がなくなることはないだろうから言いつづける事になるだろうと思う。
>>1に書くかどうかは別としてね。
いやま、あのCの複雑怪奇な文法のパーザを書いた(少なくとも挑戦した)
ということは敬服いたしております。真面目にね。
0656デフォルトの名無しさん
NGNG来い!!!
俺様が何でも答えてやる。
0657デフォルトの名無しさん
NGNG基本から教えて下さい。
0658デフォルトの名無しさん
NGNGB言語の後継となったのが、1972年頃にDennis M. Ritchieが開発したC言語です。
当時Ritchieは、Ken Thompsonらと共同で、ミニコンピュータのオペレーティングシステムであるUNIXの開発に携わっていました。このOSは、初期の段階ではアセンブリ言語を用いて開発されましたが、その後、C言語で書き直されました。
初期のUNIXを移植するために開発されたのがC言語ですから、ある意味では
「C言語はUNIXの副産物である。」
ということになります。
そのUNIX本体だけでなく、その上で動作する多くのアプリケーションも、C言語で開発されることになります。
そのため、C言語は、まずUNIXの世界で広まりました。しかし、その勢いは全くとどまらず、次第に大型コンピュータやパーソナルコンピュータの世界にも普及していったのです。
0659●
NGNG0660デフォルトの名無しさん
NGNG聞いたのですが、それをBCC55で使うことはできるのでしょうか?
0661デフォルトの名無しさん
NGNGextrn mona, wara[], KuSo300t();
みたいな型はあったな
0662デフォルトの名無しさん
NGNGextrn mona, wara, KuSo300t;
0663デフォルトの名無しさん
NGNG激しくスレ違い。
0664山崎 渉
NGNG0665デフォルトの名無しさん
NGNG練習用にプログラムを作ったのですが、getsがうまく動いてくれません。
if文の外で使うとうまくいくのですが、if文の中で使うと入力を待たずにif文を抜けてしまいます。
なぜでしょう??
if(s==1){
printf("回転数\n");
gets(kaiten);
for(i=0;kaiten[i];i++) printf("%c",kaiten[i]);
}
こんな感じなんですけど、よろしくです
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG0668悩んでます
NGNGどうすれば良いですか?ASN.1でやりたいのですがCでの処理ルーチンが
分かりません。宜しくお願いします
0669デフォルトの名無しさん
NGNG0670悩んでます
NGNG例えばint i=48;
としてこれをバイナリに変換してchar *b;
に格納するケースでお願いします。
0671悩んでます
NGNG0x30は
unsigned long l = 0x30;
といった具合です。
0672デフォルトの名無しさん
NGNG0673悩んでます
NGNGという事はlongからchar *に変換すればいいという事ですか?
0674デフォルトの名無しさん
NGNGb には何が入ってるの?
0675悩んでます
NGNGえとイメージとしてはテキストエディタでバイナリファイルを開くと
意味不明な文字の羅列が char *b;に入ります。
ここからは予想ですがlong の lに格納された 0x30
00110000という文字コードがそのまま出力されているのではないかと
思います。
多分BorlandC++でいうHexToBinにあたると思います。
0676デフォルトの名無しさん
NGNG「バイナリ」「文字」「文字コード」についての定義を言ってくれ。
どうもその辺に混乱があるように思えてならない。
0677悩んでます
NGNGごめんなさいすごく混乱してるのです--;
ASN.1で定義されたタグを出力する為のものです。
既に定義されたlong型(HEX)をバイナリとして変換したいのです。
私もlong型をバイナリへという概念は理解できるのですが
具体的にどうすればいい分からないのです;;
0679デフォルトの名無しさん
NGNG「バイナリ」ってのが ASN.1 における「バイナリ」を表してるわけかな?
ASN.1 ってのをよー知らんので何ともいえないけど、このページはどうかな?
http://www.geocities.co.jp/SiliconValley-SanJose/3377/
他のページはここら辺で調べてちょ。
http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=ASN.1+%83o%83C%83i%83%8A&lr=lang_ja
0680デフォルトの名無しさん
NGNGchar buffer[10];
sprintf(buffer, "%d", i);
printf(buffer);
単に数値を文字列にしたいんだと解釈してみる
0681悩んでます
NGNGhttp://www.geocities.co.jp/SiliconValley-SanJose/3377/
このサイトを参考にしているのですが..勉強します
0682デフォルトの名無しさん
NGNGテキストに直したいってことだよな。
そういうことなら sprintf を使えばいいかと。
0683悩んでます
NGNG違うかも^^;あんがと
0684デフォルトの名無しさん
NGNGchar a[10];
unsigned long l = 0x30;
a[0] = l;
ということじゃないのか?
0685悩んでます
NGNGこれが正解だと思います。
少し試しますの しばし時間を..
0686デフォルトの名無しさん
NGNG何をしようとしたかと言うと、文字列として読み込んで、他の文字列とくっつけてファイルに出力したい。
しかし、それを数字としても認識したい為後でatoiを使って計算したい。
だったのですが・・・。
sprintfですか、調べてみます。
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG0689悩んでます
NGNGこの書き方でできましたありがとうございましたm(_._)m
本当にありがとう
0690デフォルトの名無しさん
NGNG((unsigned long*)a)[0] = l;
や
a[0] = (l >> 24) & 0xFF;
a[1] = (l >> 16) & 0xFF;
a[2] = (l >> 8) & 0xFF;
a[3] = (l ) & 0xFF;
とは別だと考えていいの?
0691悩んでます
NGNGはい違うと思います(多分ですが..)
charの配列で格納して これをなんらかの方法で
char *に連結して格納すれば完了です。
サンプルらしきものにmemmoveが使用してあり
また悩んでいますががんばってみます
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNGcase 1:
printf("回転数\n");
scanf("%s", ss);
printf("%s", ss);
break;
コレだと出来て。
case 1:
printf("回転数\n");
gets(kaiten);
printf(kaiten);
break
コレだと出来ません。
めちゃちゃ基本的なミスをしてるような気がしてならないのですが・・・。;
0694悩んでます
NGNGですね--;
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGchar kaiten[1000];
です!
0697デフォルトの名無しさん
NGNGgets 呼んでも入力が来ない、というのは、
1. 既に前にあった入力の内容が残っていた。
2. メモリ内容が何らかの操作で壊されておかしくなってる。
3. gets にバグがある。
の 3 つの可能性があるけど...。
とりあえず kaiten を
char kaiten[1000] = "XXXXXXXXXXXXXXXXXXXXXXXXXX";
って初期化して、
これ以外のが表示されたら 1. の可能性が高いかな?
0698_
NGNG0700デフォルトの名無しさん
NGNGありがとうございます!!
コンパイルに問題は無いんですけど、
回転数と出た後に変な数が・・・・。
やっぱおかしいんですかね??
でも、独習Cのサンプルコードで試すとちゃんとできるのに・・・。
普通Getsすると、入力を待ってくれるじゃないですか?
それさえもせずに終了してしまう・・・。
とりあえず明日試してまた報告します!
0701デフォルトの名無しさん
NGNGfgets(kaiten, sizeof kaiten, stdin);
を使った方が安全。
0702_
NGNG0704デフォルトの名無しさん
NGNGscanfとgetsを両方使うと、内部で混乱が起きるので、どちらかに統一すべき。
どうしても混在させたい場合は、作業領域を確保してgets/fgetsのみを使い、
sscanfを利用する方法。
char buf[1000], ss[80];
fgets(buf, 1000, stdin);
sscanf(buf, "%s", ss);
あと、printfの第1引数はフォーマット指定だから、
printf("%s", kaiten);
の方が安全。printf(kaiten)の場合、実行時に%dなどと打ち込まれてしまった場合、
次のint型引数を読み込もうとするが、そんなものはないのでクラッシュしてしまう。
0705デフォルトの名無しさん
NGNG蛇足な補足。
%dの場合は大抵クラッシュしないでごみ数字が出る。
寧ろ問題は%sの場合で、この場合、ナルキャラが見つかるまで出力しつづけることになる。
#或いは容易にメモリ領域を突破して異常終了する。
0706デフォルトの名無しさん
NGNG混乱って?
0707デフォルトの名無しさん
NGNG混乱とは、gets()を使う選択肢を残している香具師の状態のことだ。
0708デフォルトの名無しさん
NGNGそれでも懲りずに(σ´∀`)σゲッツ!!
0709デフォルトの名無しさん
NGNG得てしてデータとりこぼす関数は平気で使う
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGscanfとgetsを混ぜるべきではないというのはC FAQにも書かれていることだね。
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG使用するとってことか?
うちのgccはデフォルトででるね。あぶねーから使うなと。
scanfやprintfでフォーマットと引数の対応がおかしいと警告してくれるのがうれしい。
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGんん。コンパイル時に警告が出るからlibcは関係ないような。
と思って確認してみたらリンカが出してる模様。
0717デフォルトの名無しさん
NGNG前半に突っ込んでるだけど……
0718デフォルトの名無しさん
NGNG細かいところにつっこむねー
>>712はそういう意味で聞いたのか?
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGlibcが出す警告にコンパイラは関係ない
0721715
NGNG何か必死なレスが返ってきた。(´・ω・`)ショボーン
0722デフォルトの名無しさん
NGNGldじゃなくて?
0723デフォルトの名無しさん
NGNGldがlibcの警告を見てるだけ
0724デフォルトの名無しさん
NGNGrc=ランコマンドって何ですか?
0725デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGたとえばbashの~/.bashrcなど。
0729693
NGNG自分も学校に入ってgccでやってるんですけど、getsは使うな見たいな警告が出ます。
ご指摘されたとおりにやってみようと思います!!
また後ほど!
0730デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/prog/1059814696/
0731デフォルトの名無しさん
NGNG和川塚井が鳩口羽_子_が_駒大楽田がつ田池本布金輪反越原の_足川谷嶽が鳥__浜_鳥守空田田
美口安宿谷が元岩_神_原_込前園橋谷谷町山木十高台田銀中台_池台大山原町__蒲_居稲橋空西
園_行__谷郷淵茂谷子_込_______王一番輪__座延_原__塚___上田田谷_荷_港タミ
●――――――●――――――――●●●●●――――●―――――――――――●―――――●●空特
●――――――●――――●―――●――●―――――●――●――――――――●―――――●●特快
●●――●――●――●―●――●●●●●●●―●―●――●―――●――――●●―――●●●快速
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●各停
←――――――→←――――――――――――――→←→←――――――――――→・←――――→
. ↑ ↑ ↑ ↑ ↑ ↑
. 埼 営 営 東 京 京
. 玉 団 団 急 急 急
. 高 南 池 池 蒲 空
. 速 北 上 上 田 港
. 線 線 線 線 線 線
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGじゃあ高脳なやり方キボンヌ。
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNGatoi はクソ
0736今日のトリビア
NGNG読み方は「ゲットエス」でも「ゲットストリング」でもなく「ゲッツ」である
実際に聞いてみた。
(σ´∀`)σゲッツ!!(σ゚Д゚)σゲッツ!!
確かにゲッツであった。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGstrtol()ってエラー返したっけ?
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGアンダーフロウ→
0742693
NGNGscanf で全てやるとうまくいきました!
0743デフォルトの名無しさん
NGNGEXEを実行するときにコマンドラインから日本語を入力する事ってできるんですか??
0744デフォルトの名無しさん
NGNGGoogle Search: コマンドプロンプトで日本語
http://www.google.com/search?lr=lang_ja&q=%83R%83%7D%83%93%83h%83v%83%8D%83%93%83v%83g%82%C5%93%FA%96%7B%8C%EA
0745デフォルトの名無しさん
NGNGググッてみるべきでした!
どうもですm(__)m
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG関数の実行コードと同じ場所(コード領域)に置かれるんですか?
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNGサパーリわからん
0750749
NGNGC99より前しか知らない俺にとってはサパーリわからん
0751デフォルトの名無しさん
NGNG諸先輩方教えてくださいm(__)m
ちなみに現在はborlandを使っています OSはWinXPです
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNGBorland C++ + Win32SDKで問題なし
0754デフォルトの名無しさん
NGNGchar a[20],b[20];
strcpy(a,"ほげほげ");
strcpy(b,"ほげほげ");
if(a==b){
っていう風に比較ってできる?
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNGマジで?じゃあ文字列全部を比較するのってどうすればいい?
0757デフォルトの名無しさん
NGNGstrcpyを知っているのなら、もう少し勉強を進めれば分かるでしょう。
0758デフォルトの名無しさん
NGNG関数探したけど、それっぽいのないし、お願い教えて
0759デフォルトの名無しさん
NGNGif(a==b) ってすると、a[0]の示すポインタとb[0]の示すポインタの比較となるから
for文で20個比較でいいんじゃね?
0760デフォルトの名無しさん
NGNGごめん。あった、strcmpだべ!!でも、比較結果で左辺の方が小さい
とかもあるんだけど、文字コードで比較してんのかな〜
0761デフォルトの名無しさん
NGNGウソを教えるな!!
0762デフォルトの名無しさん
NGNG「同じ配列のメンバーを指していないポインタ同士の演算や比較を行うと、
結果は不定となる」
不定じゃなく未定義だったと記憶してるんだけど、未定義なら
比較することも駄目の様。
0763デフォルトの名無しさん
NGNGK&Rより
本当に文字列の扱いが苦手だよなぁ。
0764デフォルトの名無しさん
NGNGchar a[200],b[200],c;
strcpy(a,,"ふげふげ");
strcpy(b,"ほがほが");
c=func(a,b);
関数
↓
char *func(char *strone,char *strtwo){
ってすると、
error C2440: '=' : 'char *' から 'char [200]' に変換することはできません。(新しい動作 ; ヘルプを参照)
配列型への変換はありませんが、参照またはポインタから配列への変換があります。
ってなる。手元の「C」言語の本ではOKなのに、VCではだめっぽい。
ただのC言語とのVCとの違いのせいかな?それとも根本的に使い方
間違ってる?どなたか教えてくれやさい。
0765デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNGごめん。これもc=func(a,b)じゃなくてstrcpy(c,func(a,b))だね。
>>754のおかげで気づいた。ありがとう>>754
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGcの定義はなおさないのか?
0770デフォルトの名無しさん
NGNG手元のソースはC[200]って宣言してた!!
説明不足スマソ
0771デフォルトの名無しさん
NGNGみなさんは、ある変数に1プラスしたiを代入するのにどんな表現方法を使ってますか?
int i=0,j=0;
i++;
j=i;
自分は
j=i+1;
ってやってます。
j++i;
は、あえて使ってません。
0772デフォルトの名無しさん
NGNGj=++i;
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG「1プラスしたi」がどういう意味かによるな。
「iに1プラスした値」ならj = i + 1だろうし、
「iを1プラスしてその値」ならi++; j = i;だろう。
0778デフォルトの名無しさん
NGNGdouble a[5]={21,21,43,54,65} ←適当
で
char b[20]="はひふへほ〜"
cha c[20];
となっていて、
はひふへほ〜の後ろに、a[3]とかの中の数字をくっつけるにはどうすれ
ばいいのでしょうか?イメージ的には
strcpy(c,strcat(a,b[3]);
みたいな感じでやりたいんだけど、型が合わないし、文字列の扱いが
あまりよく分かりません。どなたか教えてください。
0779デフォルトの名無しさん
NGNG後者なら普通 j=++i; ってするんじゃないの?
0780デフォルトの名無しさん
NGNGならi自体は変化しないな
0781デフォルトの名無しさん
NGNGsprintf(c, "%s%4.2f", b, a[3]);
かな
0782デフォルトの名無しさん
NGNGなるへそ!!そんな手があったか〜、サンキョウ!!もといサンキュー
!!
0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNGさっきの逆で、char a[20]="7943798734834"
みたいに宣言したものを、それぞれの要素ごとに文字として代入する
にはどうすればいいの?(strtodとか使ってみたけどうまくできない。)
b=a[1]で左辺に9が代入されるみたいにやりたいんだけど、
誰か教えて!!
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG本当にごめん!!上の質問書き間違えた、"数値として代入する"
だった、左辺はdouble型の配列
0787デフォルトの名無しさん
NGNG追加・左辺は配列じゃなくていいや。
0788デフォルトの名無しさん
NGNG0789d
NGNG#include <stdio.h>
int main(void)
{
int a;
int b;
a = 1;
b = a;
a = 2;
printf("a = %d\n",a);
printf("b = %d\n",b);
printf("a = %d\n",a);
return 0;
}
これをa=1 b=1 a=2にしたいんだけど,a=2 b=1 a=2になってしまう
何でですか?
0790デフォルトの名無しさん
NGNGaに2を代入していたあとに表示しているから。
0791d
NGNGa = 1;
b = a; 変数Aの値を変数Bに代入
a = 2; 変数Aに新たな値”2”を代入
と書いてあった!
本の間違いっぽいですに
0792デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int a;
int b;
a = 1;
printf("a = %d\n",a);
b = a;
printf("b = %d\n",b);
a = 2;
printf("a = %d\n",a);
return 0;
}
0793d
NGNG0794デフォルトの名無しさん
NGNG.
0795デフォルトの名無しさん
NGNG本当にこれで出来んの?試したけどダメだったよ。
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNGその本のタイトルキボンヌ。
なんて言ったらマズイかな……。
0798デフォルトの名無しさん
NGNGchar a[20]="07211919";
double b[20];
double b[1]=char[1]-'0';
printf("%d",char[1]-'0'); ←確かめ(期待通りなら7が出力されるはず
でもだめだったポ
0799デフォルトの名無しさん
NGNGごめん上の式の中にdoubleとか,charとか式に入ってるけど無視で、
正しくは
b[1]=a[1]-'0';
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNGprintf("%d",char[1]-'0'); も直せ
0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNG非常に申し訳ない事に・・・・・出来た。てへ、ごめんよ
0804デフォルトの名無しさん
NGNG人間として、ね
0805d
NGNG俺はモロ初心者なんだけど一冊目にはいいかも
0806デフォルトの名無しさん
NGNGこんな本、あり得ません。
C言語を知らなすぎ、作者は恐らく
a = 1;
b = a; 変数Aの値を変数Bに代入
a = 2; 新たな変数Aに値”2”を代入
とでも思ったんでしょう。
記述された順番にどおりに変数を参照されたらたまったもんじゃねーよ
3回目に呼び出したときはどうなるんだ(w
0807デフォルトの名無しさん
NGNGi++;//iに1を足す
こんなコメントを書くようなプログラマが居るから
間違えないようにレベルを合わせてやらないと。
0808デフォルトの名無しさん
NGNG変数「A」や変数「B」なんてどこにもないだろ?
そんな本がいいわけないよ。
#仮に、Cが大文字小文字を区別しないならまた話は別だが。
0809デフォルトの名無しさん
NGNGま〜ま〜
0810デフォルトの名無しさん
NGNGint型の数字をchar型に変換する事は出来ないのでしょうか?
逆はatoiで出来ますよね?
何がしたいかというと、strcatで繋げてファイルに出力したいのですが・・。
やり方がわかりません
0811デフォルトの名無しさん
NGNG数値を数字列にしたいってことか?
sprintfで。
0812デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG数字=数を表す字⊂文字
0817デフォルトの名無しさん
NGNG0818813
NGNG0819デフォルトの名無しさん
NGNG0820初心者
NGNG#include <stdio.h>
int main()
{
printf("hello c");
return 0;
}
というプログラムをコマンドプロンプトでコンパイルしようとすると、
can't open: stdio.h No such files or directory
と表示されて、一向に前にすすみません。
どうすればいいのでしょうか?教えてください。
0821デフォルトの名無しさん
NGNGコンパイラはな〜に?
0822初心者
NGNGLSICです。
とにかくhttp://www.lsi-j.co.jpからダウンロードしました。
よろしくお願いします。
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGプログラムは間違ってない。(ちょっと気になる所もあるが)
includeファイル stdio.h がみつからないと言われている。
LSICはしばらく使っていないけど、lcc.exeがあるディレクトリに
設定ファイルがあったと思う。(確かbinの中)
その中の include ファイルのディレクトリを正しく書き換えれば多分OK。
0825デフォルトの名無しさん
NGNGLSI C-86試食版をインストールしたディレクトリに bin\_lcc という小さなファイルがあるはずです。
これはコンパイラの設定ファイルです。これをエディタで読み込んで下さい。
次のようになっていると思います。
# LSI C-86 compiler's configuration file
-DLSI_C
-XA:\LSIC86\BIN -LA:\LSIC86\LIB -IA:\LSIC86\INCLUDE -T -O
-acdos.obj $LSICOPTS
& #Command line argument will be inserted here
-lknjlib -ldoslib -v
この中に A:\LSIC86 と書いてある行があります。
LSI C-86試食版をインストールしたドライブ・ディレクトリが a:\lsic86 ならこのままでかまいませんが,
そうでないなら,この A:\LSIC86(3個所)を書き換えます。
-XA:\LSIC86\BIN -LA:\LSIC86\LIB -IA:\LSIC86\INCLUDE -T -O
↑ ↑ ↑
0826813
NGNG0827デフォルトの名無しさん
NGNGsprintf
0828813
NGNGどうやればいいのですか??
例えばa=100.1234123131213131・・・・・・のようなdouble型で
char b[100000];
sprintf(b,"%f",a);
コレで出来るのでしょうか??
0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNG0831813
NGNGsprintf(b,"%4f",a);
としても何にも変わらないのですけどどうすればいいのですか??
4桁だけchar型に変えたいのですが・・・。
0832デフォルトの名無しさん
NGNGhttp://shakosv.sk.tsukuba.ac.jp/jdoc/MATLAB5/jhelp/techdoc/ref/sprintf.html
0833デフォルトの名無しさん
NGNG11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
って出力させたいんですけど・・・
0834デフォルトの名無しさん
NGNGやりたいことを具体的に書こうや。
もしくはsprintf()のマニュアルを読むことと
Cの文字列取り扱い全般について調べることを薦める。
0835デフォルトの名無しさん
NGNG/* 一例を提示 */
int ic;
for (ic = 1; ic <= 40; ic++) {
printf("%d ", ic);
if (ic % 10 == 0) {
printf("\n");
}
}
0836813
NGNG今 double aに浮動小数点型の数字が入っています。
コレを別の文字列とstrcatで結合してファイルに出力しようとしています。
このaには例えば
100.123456という数が入るわけですが、
コレを文字列にした時、
100.12としたいのです。そこでsprintfを使って、
double a;
char b[1000];
sprintf(b,"%6f",a);
とか
double a;
char b[1000];
sprintf(b,"%3.2f",a);
とかやっても。
元の100.123456が入力されてしまいます。
どうすれば・・・。
0837813
NGNGdouble a;
char b[1000];
sprintf(b,"%3.2f",a);
でうまく行きました!!
違うファイルをコンパイルしていて変更が反映されていなかったという落ちでした・・・。
すみません、単純ミスです。
0838これは一体..
NGNGBorlandC++Builderを使ってます。
21行目に
static int conp(char *addr, int lint, int vint, lcomposition *lc);
として関数を定義しています。
ヘルプを読んだのですが
宣言に複数の基本型を指定することはできません。次に基本型を示します。
char
class
int
float
double
struct
union
enum
typedef
とあるのですがどう対処したら良いのかわかりません
宜しくお願いします。
0839デフォルトの名無しさん
NGNG削って宣言してみては
0840これは一体..
NGNGやってみましたが状況変わらずです;;
0841デフォルトの名無しさん
NGNG0842これは一体..
NGNG正しい呼び方が分かりました^^
0843デフォルトの名無しさん
NGNG21行目以前の構文は正しいか(;を付け忘れていないか)
漏れが思いつくのはこれくらい
0844845
NGNG0846デフォルトの名無しさん
NGNG0847これは一体..
NGNG結論がまだでていないのでまたこのスレで報告します。
0848_
NGNG0849デフォルトの名無しさん
NGNGトラブったときの基本
1つずつ外してチェック
1つずつ単体でチェック
0850これは一体..
NGNGはい 今回は冒険しすぎました><
0851デフォルトの名無しさん
NGNGってマクロって聞いたんですが
#define hoge 123
とかは意味わかるんですけど
#define hoge
ってのが意味わかりません
誰か親切な方教えてくださいお願いします
0852デフォルトの名無しさん
NGNG空の文字列への置き換え。
取り敢えず思いついたサンプルを。
#define NEW_LINE "\n"
printf("foo" NEW_LINE);
→改行される
#define NEW_LINE
printf("foo" NEW_LINE);
→改行されない
0855デフォルトの名無しさん
NGNGつまり何にもしないってことですか?
0856デフォルトの名無しさん
NGNGこいつを通すために、
#define hoge
とすることはよくある。
ま、別に適当な値を放り込んでもいいんだけどサ。
0857852
NGNG「何もしない」ではなく、「空になる」。
先程の例では、
printf("foo" NEW_LINE);
が
printf("foo" );
に展開されるわけ。
なお、>>856の言うように値が必要ない応用も多い。
典型的な例。
標準インクルードのstdio.hを覗くと、
次のようなマクロの使い方をしていると思う。
#コンパイラによってはpragmaで代用しているかもしれない。
#ifndef STDIO_H
#define STDIO_H
...
#endif
0858デフォルトの名無しさん
NGNG#if WIN16
#define FAR __far
#else
#define FAR
#endif
const char FAR *vram;
WIN16が定義されていない場合は FAR は何も指定しなかったのと同じになる。
結局852と同じだけど。
0859デフォルトの名無しさん
NGNG無意味に喧嘩腰の奴もいるからな。
0860デフォルトの名無しさん
NGNGまだよくわかんないですが
なんとなくイメージがつかめました
ありがとうございました
0861デフォルトの名無しさん
NGNG#define RESTRICT restrict
#else
#define RESTRICT
#endif
int func(int * RESTRICT p1,int * RESTRICT p2);
0862デフォルトの名無しさん
NGNG遅くなりましが、どうも、ありが�d
プラグラム・・・ハズイ・・・
0863デフォルトの名無しさん
NGNG最近プログラムをはじめたんですが、bccでコンパイルすると1行目に
左辺値が必要です。となるんですが、何が足りないのかわからないので
教えてください。そして、2行目が不正な代入となるんですが何が
不正なのかわからないです。
for(i = 1 ; i < 5 && magic = num2 ; i++){
if(magic = num2) {
if(i==1) printf("すごいね、正解だよ!");
if(i==2) printf("2回目ならまぁまぁかな。");
if(i==3) printf("3回目かよ。もうちょっと勘を使えよ。");
}
よろしくお願いします。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGダウト!
for(i = 1 ; i < 5 && magic = num2 ; i++){
magic = num2 ×
magic == num2 ○
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG最初からのせるとこんな風になります。
#include<stdio.h>
int main(void)
{
int magic, num1, num2, i ;
printf("数当てゲームです。あなたの入力した整数をある一桁の数に変換します。\nその変換された数を当ててください。\n");
printf("整数を入力してください: ");
scanf("%d", &num1);
magic = (num1*num1)%10;
printf("変換された数はいくつでしょうか?:");
scanf("%d", &num2);
for(i = 1 ; i < 5 && magic = num2 ; i++){
if(magic = num2) {
if(i==1) printf("すごいね、正解だよ!");
if(i==2) printf("2回目ならまぁまぁかな。");
if(i==3) printf("3回目かよ。もうちょっと勘を使えよ。");
}
0869デフォルトの名無しさん
NGNGmainの戻り値がありません。
JavaならコンパイルエラーだがCでは平気なんだな・・・
---------------------------------------------------------
このプログラムでは1回目だけしか判定できません。
main関数と判定関数を分離して、mainから何回も判定関数を呼べるように
しないと意図しているプログラムはできません!
0870デフォルトの名無しさん
NGNG”=”と、”==”の違いがはっきりと分からないのですが、
”=”は代入する
”==”は実際に同一かどうか
とか理解しているんですが、
magic == num2
と
(magic = num2)
のどちらかでいいというところが理解できないんですが・・・。
ちなみに、下のほうでやったら通りました。ありがとうございます。
0871デフォルトの名無しさん
NGNGmainの一部しか書いていないだけだろ
0872デフォルトの名無しさん
NGNGこの後もまだまだ続くんです。
867だけだとmain関数が閉じられてないのでエラーがでるはずです。
0873デフォルトの名無しさん
NGNG16進数ならandとビットシフトでできますが、
1桁目:a & 0x0F
2桁目:(a & 0xF0) >> 8
10進数ではどうやるんでしょう?
0874デフォルトの名無しさん
NGNGmagicにnum2の値を代入し、その値が真であれば(0でなければ)
0875デフォルトの名無しさん
NGNG10の倍数で割った余り。
0876875
NGNGint i=45678;
printf("%d\n",i/1000%10); /* 5と表示されるはず */
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGできるのか!?と思って試してしまったじゃないか。
0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNGああ、void *か。
どんなポインタでも代入できるので、よく汎用的な配列を扱う関数で使う。
memmove,memcmp,qsortなど。
これらの関数の引数がもしも特定の型のポインタ(int *とか)だとしたら、呼び出し側でキャストしないといけなくなる場合がある。
あとmallocの戻り値もvoid *だね。
0882デフォルトの名無しさん
NGNGどうもありがとうございました。
最初脊髄反射的な質問してしまってすみませんでした。
0883デフォルトの名無しさん
NGNGたとえば、for( i = 0 ; i < 11 ; i++);
とかなっているところに、for関数内のコードブロックで、i=0
に戻して永遠とループさせることとかってできますか?
0884デフォルトの名無しさん
NGNG出来るけどさ
無限ループならwhile文使おうよ・・・
0885883
NGNGあっと、初期設定部ではなくて、何回かループした
ところで、i=0に戻してもう一度最初からループさせることは
できますかということでした。
0886デフォルトの名無しさん
NGNGやればわかるkと聞くなよ
0887_
NGNG0888883
NGNG宿題でforループを使ってやりなさいって
指令が下ってるもんで。
しいませんでした。
0889デフォルトの名無しさん
NGNG0890ヽ(´ー`)ノ
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG利用されない定数があります。
0893デフォルトの名無しさん
NGNG>永遠とループさせる
永遠にループさせることはできるかもしれませんが、
永遠とループさせることはできないと思われます。
0894デフォルトの名無しさん
NGNGfor (i = 0; i < 11; i++) {
i = 0;
}
0895デフォルトの名無しさん
NGNG>宿題でforループを使ってやりなさいって
>1
0896883
NGNG0897デフォルトの名無しさん
NGNGprintf("永遠\n");
}
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNGMingw: File Download http://www.mingw.org/download.shtml
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNGiconvでEUCからSIJSに変換したい
unsigned char *ps; *EUCのデータが入ったバッファの先頭アドレス
chardst[48]; *変換後のデータを格納するcharの配列
こんな条件でやりたいのですがご指導お願い致します。
0905デフォルトの名無しさん
NGNGiconv使ってるソースをパクって...いや参考にすれば?
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGマニュアルくらい読めよ。
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG0910質問age
NGNG関数が終われば、mallocとかcallocとかで確保したメモリをわざわざ
freeとかで開放する必要ってないの、それとも、そういった事はプログ
ラムが終了する時だけ?
0911デフォルトの名無しさん
NGNG少なくとも関数を抜けただけでは解放されない。
0912質問age
NGNGじゃあさ、returnで文字配列を返してたとする。その文字配列は動的に
確保されていました。さて、これはどうやって開放すればよろしいので
しょうか?(その文字配列はローカル変数)
returnって来たらその後のは実行されず戻っちゃうんでしょ?
0913デフォルトの名無しさん
NGNG> その文字配列は動的に確保されていました。
> その文字配列はローカル変数
どっちなんだ?
0914デフォルトの名無しさん
NGNGchar *foo()
{
char buf[BUFSIZ];
...
return buf;
}
てことか?
氏ね。
0915デフォルトの名無しさん
NGNG文字列を返すってことは、その文字列の先頭のアドレスを返すってことだろ
0916質問age
NGNGうんそういう事。わかりにくかったかな。ローカル変数ってのはポインタ
をローカルで宣言したって事。だから
char *buf;
〜〜〜〜←動的に確保
returan buf;
とこんな感じ
0917デフォルトの名無しさん
NGNGその戻り値をどこかでfreeすればよいのでは。
UNIXのstrdupみたいに。
0918質問age
NGNGどこかとは?あと、strdupってのは悪いけど知らないな〜、unix使い
じゃないから
0919質問age
NGNGあっ!!くそ!下の方になんか書いてありやがった。
お、おまえが氏ね〜、ウェーン
0920デフォルトの名無しさん
NGNG戻り値と言っているのにわからないの?
0921質問age
NGNG受け取った側っつー事け?
0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNGそう。専用の解放関数をつくってその中でfreeしてもいいけど。
0924デフォルトの名無しさん
NGNGその誤字だらけを何とかしろ。
で、面倒だから一例を。
char *func(void);
char *p = func();
free(p);
...
char *func(void)
{
return malloc(ANY_SIZE);
}
0925デフォルトの名無しさん
NGNGなんだかんだ言って優しいね。ありがとう!!
0926デフォルトの名無しさん
NGNGa[10]={0};
だと全部0が代入されますが、
a[10]={-1};
だとa[0]のみ-1が代入されてa[1〜9]に0が代入されるのは
仕様なんでしょうか?
0927デフォルトの名無しさん
NGNG仕様です。
int a[10]; /* 自動変数では何が入るか分からない(静的変数なら全て0) */
int a[10]={0}; /* 全て0 */
int a[10]={3,-9}; /* 3,-9,あとは0 */
0928デフォルトの名無しさん
NGNGそんな便利な事できんの?
0929デフォルトの名無しさん
NGNGint a[10]={0};は最初のa[0]に0を入れて、後、入れてないとろは勝手に0になるってことですね
ありがとうございました
0930デフォルトの名無しさん
NGNGそういう事ってmallocとかで配列用のメモリ確保した時にもできれば
便利なんだけどな〜
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNGメモリを超える量確保しようとしたり、腸デカイ配列とか宣言したらさ、
勝手にハードディスクの上を使おうとするのかな?
あと、自分からハードディスクをメモリとして使えたりするの
0934デフォルトの名無しさん
NGNG( ´∀`)
0935デフォルトの名無しさん
NGNGそれはC言語とは関係ない。
0936デフォルトの名無しさん
NGNG( ´∀`) < nullpo
0937デフォルトの名無しさん
NGNGそうなの?
0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGmmapとかで検索してみろ。
0941898
NGNG0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG文字の入力待ちで何か文字を打ち込み(getsにより)
あらかじめ指定しといた文字とあたったらその処理をおこなう
というプログラムを組みたいんですけど何かいい方法ありますか?
if文かswitch文でお願いします
0944デフォルトの名無しさん
NGNGif文でstrcmp()じゃダメなの?
0945デフォルトの名無しさん
NGNGgets(a);
if(*a=='H')
・・・
switch(*a){
case 'A':
・・・
case 'B':
・・・
}
0946デフォルトの名無しさん
NGNGgets()なんか使うな!
0947デフォルトの名無しさん
NGNGすみませんまだよくCについて理解してないんで・・・
strcmp()って何ですか?
>>945さんありがとうございます
まだちょっと試してないんですけど
それは文字列でもできますか?
>>946さんありがとうございます
gets()以外でほかにありますか?
今自分が知ってるのはscanf()とgetchar()とgets()
くらいしかないんですけど・・・
0948943,947
NGNGそれと947での発言で943って書いたところ944です。
すみません
0949デフォルトの名無しさん
NGNGgets() を使うなら fgets() の方が良いよ。
http://www.bohyoh.com/CandCPP/C/Library/index.html
0950デフォルトの名無しさん
NGNG文字列の比較を行うのがstrcmp
Cは文字列の比較も関数を使う。
新スレ立ててくるか。
0951デフォルトの名無しさん
NGNG>>1のリンクにある、C FAQ 日本語訳 は目を通しましょう。今は分からなくても。
聞く前に試しましょう。わからないことがあったら調べましょう。
0952デフォルトの名無しさん
NGNG新スレ
0953944
NGNG>>950がすでに言ってるけど、参考までに。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strcmp.3.html
0954947
NGNG>>950さん
>>951さん
>>952さん
>>953さん
ありがとうございました。
いろいろなサイトに回ったり、家にあった本などの索引など利用して
どうにかできました。
結局strcmp()使って解決しました!
知らないいろいろなキーワードからいろいろな世界が広がりました!
ためになることなど知れたので、ありがとうございました!
0955デフォルトの名無しさん
NGNGありましたか?
0956デフォルトの名無しさん
NGNGピュ.ー ( ・3・) ( ^^ )(^ё ^)<これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄ ̄ ̄〕
= ◎――――――――◎ 山崎渉&ぼるじょあ&みんちぇ
0957デフォルトの名無しさん
NGNGよくわからん。
ランダムにアルファベットを発生させたいのか?
0958957
NGNGこうか?
0959GET! DVD
NGNG☆★☆★☆★ 新商品 ゾク・ゾク 入荷 ☆★☆★☆
★☆
☆★ 送料激安!! 送料激安!! 送料激安!!
★☆ http://www.get-dvd.com.tw
☆★ 激安アダルトDVDショップ
★☆ お買い得!! 1枚500円〜 急げ!
☆★ インターネット初!「きたぐに割引」
★☆ 北海道・東北の皆様は送料も激安!
☆★ http://www.get-dvd.com.tw
★☆ スピード発送!
☆★ http://www.get-dvd.com.tw
★☆ 商品が豊富!
☆★ http://www.get-dvd.com.tw
★☆
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0960デフォルトの名無しさん
NGNG"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand()%52];
が普通かな。
0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNGaのコードは61でzは7a
41〜5a、61〜7aの乱数が作れれば、アスキーコード→英文字に変換→ランダムで英語の表示
みたいなことはできないのでしょうか?
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNGの代わりに、
int tmp = (double)rand() / ((double)RAND_MAX + 1) * 52;
char ch = tmp >= 26 ? 'a' + tmp - 26 : 'A' + tmp;
としたいということかな?
複数文字出力したいならこれをループさせればいい。
0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNG多分そんな感じです
ありがとうございましたm(_ _)m
0970デフォルトの名無しさん
NGNGagain:
printf("big(1),reg(2),end(3)を入力しEnterを押してください(半角で入力)\n");
scanf("%d",&s);
if(s!=1&&s!=2&&s!=3){
printf("1,2,3のいずれかを押してください!\n");
}
switch(s){
case 1:
case 2:
case 3:
}
goto again;
こんな感じになってるんですが、1,2,3を押したときはもちろん、4,5など数字を押すとちゃんと働くのですが、
aとかbとか打つと永遠にループしてうまく働いてくれません。
どうしてなのでしょう?
0971デフォルトの名無しさん
NGNGscanf が永遠に数字を探し続けるから。
0972デフォルトの名無しさん
NGNGあとなぜアルファベットが押されたときにだけバグるのでしょう?
教えてください!M(__)M
0973デフォルトの名無しさん
NGNGif(s!=1&&s!=2&&s!=3){
printf("1,2,3のいずれかを押してください!\n");
}
0974デフォルトの名無しさん
NGNGどうにかして回復させる方法はないものでしょうか???
0975デフォルトの名無しさん
NGNGWHILE INKEY$<>"" : WEND
だな
0976デフォルトの名無しさん
NGNGどうもっす。もっと勉強します(何かいてあるのか分からないから(^_^;))
それって割り込みとかですか??
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG俺もそのゴミ捨て方法の決定版は知らん
とりあえずscanfの戻り値をチェックして正しく
変換されたかどうかを見る。次にstdinがEOFでなければ
ゴミ捨てだが、見たことがあるのはfflush(stdin) (未定義っぽい)
rewind(stdin) (うまく行く理由が特にない)とかで俺の使っている
処理系では確かにこれでできるのだがいまいち納得がいかない。
scanf("%*s")とかでどうなんだろう。
詳しい人よろしく
0979デフォルトの名無しさん
NGNG文字列を打ち込む可能性があるので、
int i;
scanf("%d",&i);
ではなく、
char s[256];
scanf("%s",s);
を使う。
そして返ってきた文字列を数値に変換する。"a"とかは失敗するので
エラー処理とか0を返すようにするのがいいかと思われ。
しかし、もっといい方法はそもそもscanfは糞なので使わない方がいい。
下の12.20あたりを参照されたし。
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C-faq-12.html
0980デフォルトの名無しさん
NGNG0981976
NGNGありがとうございました、もう少し勉強してみます!
0982976
NGNGscanf("%s",&f);
s=atoi(f);
でバグらくなりました。
0983デフォルトの名無しさん
NGNGscanf("%d",&d); でゼロが帰ってきたら他のものが入ってるってことになる。
scanf("%s",&s); しとけば、%dでとれなかった文字列がとれる。
0984デフォルトの名無しさん
NGNG0985次スレ案内
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1060085935/l50
0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989次スレ案内
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1060085935/l50
0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG10
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。