C言語なら俺に聞け(入門編)Part 73
レス数が1000を超えています。これ以上書き込みはできません。
★前スレ
C言語なら俺に聞け(入門編)Part 72
http://hibari.2ch.net/test/read.cgi/tech/1287876803/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0002デフォルトの名無しさん
2010/11/06(土) 22:12:36ノ } ゙l、 」′ .,/′ .,ノ _,,y
.,v─ーv_ 〕 〕 .| .il゙ 《 ._ .,,l(ノ^ノ
,i(厂 _,,,从vy .,i「 .》;ト-v,|l′ _,ノ゙|.ミ,.゙'=,/┴y/
l ,zll^゙″ ゙ミ .ノ .il|′アll! .>‐〕 \ _><
《 il|′ フーv,_ .,i″ ||}ーvrリ、 ¨'‐.` {
\《 ヽ .゙li ._¨''ーv,,_ .》′ ゙゙ミ| ,r′ }
\ ,゙r_ lア' .゙⌒>-vzト .ミノ′ 〕
.゙'=ミ:┐ .「 ./ .^〃 :、_ リ .}
゙\ア' .-- ,,ノ| 、 ゙ミ} :ト
゙^ー、,,,¨ - ''¨.─ :!., リ ノ
〔^ー-v、,,,_,: i゙「 } .,l゙
l! .´゙フ'ーv .,y ] '゙ミ
| ,/゙ .ミ;.´.‐ .] ミ,
| ノ′ ヽ 〔 ミ
} } ′ } {
.| .ミ .< 〔 〕
.{ \,_ _》、 .{ .}
{ ¨^^¨′¨'ー-v-r《 〔
0003デフォルトの名無しさん
2010/11/06(土) 23:59:430004デフォルトの名無しさん
2010/11/07(日) 15:40:080005デフォルトの名無しさん
2010/11/08(月) 08:08:200006デフォルトの名無しさん
2010/11/08(月) 08:32:030007デフォルトの名無しさん
2010/11/08(月) 14:28:51char *str;
scanf("%s", str);
のどこがいけないのかをわかりやすく教えて下さい
0008デフォルトの名無しさん
2010/11/08(月) 14:40:43strが初期化されてないから
strは配列とかのアドレスで初期化しないと駄目
0009デフォルトの名無しさん
2010/11/08(月) 14:47:07strはあくまでポインタを格納するための変数なので
初期化してない状態ではどこを指しているか未定義
たまたまプログラムから書き換え可能なアドレスを指していれば
『その部分を破壊することによって』そこに文字列を読み取ることができるかもしれないが
大抵はアクセス不可能な場所を指しているのでメモリのアクセス違反を起こして止まる
つまりstrはきちんと確保されたメモリ空間の先頭アドレスを指している必要がある
0010デフォルトの名無しさん
2010/11/08(月) 15:34:58if(!str) exit(1);
0011デフォルトの名無しさん
2010/11/08(月) 15:46:57文字、文字列、配列、ポインタ、アドレスあたりを
ちゃんと理解しないままきてしまい、
今更困っています
わかりやすいサイトや本をご存知の方は
是非教えて下さい
0012デフォルトの名無しさん
2010/11/08(月) 17:19:500013デフォルトの名無しさん
2010/11/08(月) 18:50:43↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ
↓
神の誕生
0014デフォルトの名無しさん
2010/11/08(月) 20:59:27C言語によるオブジェクト思考プログラミング入門って面白そうなタイトルだな
0015デフォルトの名無しさん
2010/11/08(月) 21:12:14サンプルがダウソできるから見てみたけど、ドンデモテクニックだった。
0017デフォルトの名無しさん
2010/11/08(月) 23:01:15こんなAA作るのってどんな気持ちなんだろう
0018デフォルトの名無しさん
2010/11/08(月) 23:15:290019デフォルトの名無しさん
2010/11/08(月) 23:36:570020デフォルトの名無しさん
2010/11/08(月) 23:39:14このプログラムなんですけど
printfにポインタの配列を出力したかったんですが変な実行結果でした。
しくみがよくわからないので教えてください
0021デフォルトの名無しさん
2010/11/08(月) 23:44:400022デフォルトの名無しさん
2010/11/08(月) 23:45:10printf("%d\n",**p);
p[0]にはいってるのはa[0]のアドレスが入ったアドレス
0024デフォルトの名無しさん
2010/11/09(火) 00:03:110025デフォルトの名無しさん
2010/11/09(火) 00:04:25先生そうなんだけど、なんか解りづらい
p[0]=&a[0];
p[0] == *(p + 0) == *(p)
よって、*(p) == &a[0]
*(&a[0]) == a[0] == *(*(p))
0026デフォルトの名無しさん
2010/11/09(火) 00:30:23俺的には本気でポインタ完全制覇がお勧めだな。
騙されたと思って読んでみて欲しい
0027デフォルトの名無しさん
2010/11/09(火) 00:42:40p[0] == *(p + 0) == *(p)
よって、*(p) == &a[0]
*(&a[0]) == a[0] == *(*(p))
つまり配列の分、ポインタを設けるということですか?
*(&a)=(&a[0])
0028デフォルトの名無しさん
2010/11/09(火) 00:46:27日本語でおk
0029デフォルトの名無しさん
2010/11/09(火) 00:57:170030デフォルトの名無しさん
2010/11/09(火) 01:00:380031デフォルトの名無しさん
2010/11/09(火) 01:01:19>ポインタの配列を出力したかったんですが変な実行結果でした。
正しくポインタ配列の先頭要素を出力しているじゃないか
正しいのを変って.....
あっ、*pでポインタ配列の全ての要素を出力したいってことか
0032デフォルトの名無しさん
2010/11/09(火) 01:03:58右辺 == *(&a) == a
左辺 == (&a[0]) == a
*(&a)=(&a[0])
は
a = a
をまどろっこしく書いているだけ。
0033デフォルトの名無しさん
2010/11/09(火) 01:05:38[]と*の関係を述べよ
先生達から駄目判定貰ったら、>>26のアドバイスを実行する
0034デフォルトの名無しさん
2010/11/09(火) 01:18:14main()
{
int a[3]={1,2,3};
int *p;
p=a;
printf("%d\n",*(p));
rerurn 0;
}
0035デフォルトの名無しさん
2010/11/09(火) 01:33:06格納場所が出力されるor配列の要素すべての値を出力(intなので不可)
or 一番目のa[0]が出力
ということが考えられます
片方の*では単純に*pを出力(アドレス内の値を出力。)
もう一方の*で配列、つまり(*+1)で[1]という意味になる
時間かけて考えましたよ どうですか
0036デフォルトの名無しさん
2010/11/09(火) 03:22:10改行があるたびに配列みたいなのが何本もある感じ?
日本語でおkか分かりませんがお願いします。
0037デフォルトの名無しさん
2010/11/09(火) 03:26:41char型の配列の配列のイメージで良い
0038デフォルトの名無しさん
2010/11/09(火) 05:32:09誤解釈してるような?
変数宣言時の*pと参照する(代入とか)ときの*pは違うんだけど...
0039デフォルトの名無しさん
2010/11/09(火) 05:38:14図解・配列とポインタの関係
コレで分からなかったら俺はお手上げだ
http://www5b.biglobe.ne.jp/~mya_a/dx/pointer.png
0040デフォルトの名無しさん
2010/11/09(火) 08:32:34こういう書き方するやつってアホだろ。
0041デフォルトの名無しさん
2010/11/09(火) 08:41:28全部一直線だよ。
0042デフォルトの名無しさん
2010/11/09(火) 09:39:49環境にstdlib.hがなくて関数が使えません。
0043デフォルトの名無しさん
2010/11/09(火) 09:42:440044デフォルトの名無しさん
2010/11/09(火) 09:43:210045デフォルトの名無しさん
2010/11/09(火) 09:52:05004642
2010/11/09(火) 10:20:420047デフォルトの名無しさん
2010/11/09(火) 11:50:18画面に入力された文字数を表示して
文字列を前・後(中央折り返し)で反転した後、
入力文字列と反転後の文字列を表示する
となる、プログラムを作りたいんですが
何か、フがめっちゃ出ます
どうすればいいでしょうか?
http://www5.pf-x.net/~wannabees/cgi-bin/upload/src/si0059.txt
0048デフォルトの名無しさん
2010/11/09(火) 12:03:16ループ内で毎回 pIn = in; pOut = out; を実行しているので pIn, pOut がいつも同じ場所を指している
pOut--; としているが、配列の先頭よりもさらに前へ戻ってはいけない
文字列 out を '\0' で終えていない
0049デフォルトの名無しさん
2010/11/09(火) 12:05:270050デフォルトの名無しさん
2010/11/09(火) 12:05:55ありがとうございます
具体的に書き直すと、どんな感じでしょうか?
0051デフォルトの名無しさん
2010/11/09(火) 12:07:21さすがだな
>>50
自分で考える気が微塵もないなら宿題スレ行け
0052デフォルトの名無しさん
2010/11/09(火) 12:14:19最近の分岐予測はかなり高精度と聞くが……これはなかなか
0053デフォルトの名無しさん
2010/11/09(火) 12:48:54char* rev_str(char* str)
{
int i;
char temp;
for(i=0; i<strlen(str)/2; i++){
temp = str[strlen(str)-1-i];
str[strlen(str)-1-i] = str[i];
str[i] = temp;
}
return str;
}
int main(void){
char str[256+1] = "";
scanf("%s", str);
printf("str_num :%d\n", strlen(str));
printf("input_str :%s\n", str);
printf("reverse_str:%s\n", rev_str(str));
return 0;
}
0054デフォルトの名無しさん
2010/11/09(火) 13:10:200055デフォルトの名無しさん
2010/11/09(火) 13:14:42宿題スレに来てた子だよ
0056デフォルトの名無しさん
2010/11/09(火) 18:27:32基地外に回答しやがって
0057デフォルトの名無しさん
2010/11/09(火) 18:37:20クソコード垂れてんじゃねーよ。書き直してこい。
0058デフォルトの名無しさん
2010/11/09(火) 20:45:13そして、使い分け方も教えてください
005958
2010/11/09(火) 20:46:020060デフォルトの名無しさん
2010/11/09(火) 20:46:41他のスレにもあたってみますので・・・
0061デフォルトの名無しさん
2010/11/09(火) 20:49:220062デフォルトの名無しさん
2010/11/09(火) 20:53:35日本語が読めませんか?
知らないならレスしないでください迷惑ですこのスレの総意です。
人にれすんする前に日本語を勉強汗。
0063デフォルトの名無しさん
2010/11/09(火) 20:54:380064デフォルトの名無しさん
2010/11/09(火) 20:54:56>人にれすんする
>人にれすんする
0065デフォルトの名無しさん
2010/11/09(火) 20:55:580066デフォルトの名無しさん
2010/11/09(火) 21:23:50そこより勉強汗の方が気になった
0067デフォルトの名無しさん
2010/11/09(火) 22:33:11だってマって最底辺者の職種ITドカタが超多いんだからしょうがないよ
0068デフォルトの名無しさん
2010/11/09(火) 22:37:430069デフォルトの名無しさん
2010/11/09(火) 22:44:46あなた、どかたでしょ
0070デフォルトの名無しさん
2010/11/09(火) 22:46:17hoge.h
extern void hoge(); ←何が違うの?
void hoge(); ←これと
hoge.c
void hoge(){}
0071デフォルトの名無しさん
2010/11/09(火) 23:33:56有無による差は無いよ。
0072デフォルトの名無しさん
2010/11/10(水) 00:14:58このプログラムはswap()でaとbの値を入れ替えるものなんですが
思ったように動きません なんでですか
0073デフォルトの名無しさん
2010/11/10(水) 00:19:57仮引数をいくら入れ替えても無駄
参照先を入れ替えろ
void swap(int *x, int *y)
{
int z = *x;
*x=*y;
*y=z;
}
0074デフォルトの名無しさん
2010/11/10(水) 00:25:53説明が下手なんで分からんかな。
0075デフォルトの名無しさん
2010/11/10(水) 00:39:58なんとなくだけどわかりました
0076デフォルトの名無しさん
2010/11/10(水) 02:00:04円周率 π の値を近似式
π ≈ 4Σ(−1)^n[{(1/2)^2n+1} +{(1/3)^2n+1}]/( 2 n + 1 ) を用いて小数第8位まで正しい値(3.14159265)を出力し,(Σはn=0。100まで)
その π の値を用いて入力された数値 ε に対して,次の不等式を満た
す最小の自然数 N を求めるプログラムを作れ.
|{π^2}/6-Σ(k=1.N)1/k^2|<ε
できる方がいたらやり方を教えてください。
全くできなくて困っています。
不明な点などありましたら教えてください!
0077デフォルトの名無しさん
2010/11/10(水) 02:39:460078デフォルトの名無しさん
2010/11/10(水) 20:54:14*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
こういうのってできるのか?
0079デフォルトの名無しさん
2010/11/10(水) 20:56:080080デフォルトの名無しさん
2010/11/10(水) 20:57:23まじかー
簡単なプログラムきぼんぬ
0081デフォルトの名無しさん
2010/11/10(水) 21:06:16int main() {
printf("*\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
printf("*\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
printf("*\n");
printf(" *\n");
printf(" *\n");
printf(" *\n");
return 0;
}
0082デフォルトの名無しさん
2010/11/10(水) 22:10:370083デフォルトの名無しさん
2010/11/10(水) 22:55:090084デフォルトの名無しさん
2010/11/10(水) 23:35:260085デフォルトの名無しさん
2010/11/10(水) 23:36:200086デフォルトの名無しさん
2010/11/11(木) 00:49:19int x = 00110011;
x << 1;
if(x=1○○○○○○○){
こういう感じで先頭のビットが1の場合(他のビットは不問)で判別したいんですけれども、
x>=128という表記以外に、何かやりかたはありますでしょうか?
0087デフォルトの名無しさん
2010/11/11(木) 00:50:460088デフォルトの名無しさん
2010/11/11(木) 00:51:100089デフォルトの名無しさん
2010/11/11(木) 00:54:110090デフォルトの名無しさん
2010/11/11(木) 01:09:57当時は1バイトでも少なくできるコードが主流だった
16進や8進で可読性は十分だった
必要が無かったんだよ
0091デフォルトの名無しさん
2010/11/11(木) 01:13:310092デフォルトの名無しさん
2010/11/11(木) 01:36:41for文とかを使ってもっと綺麗に書くんだ!こんな汚いコードじゃ点数は貰えないぞ!
0093デフォルトの名無しさん
2010/11/11(木) 03:14:01どういった方法がありますか?
0094デフォルトの名無しさん
2010/11/11(木) 07:42:08CHAR_BIT が 8 だと半端になるのが難点だけど。
1 バイト 9 ビットだとピッタリなのにな。
0095デフォルトの名無しさん
2010/11/11(木) 09:35:190096デフォルトの名無しさん
2010/11/11(木) 11:08:290097デフォルトの名無しさん
2010/11/11(木) 11:41:36いっぱい出しゃいいって
0098デフォルトの名無しさん
2010/11/11(木) 12:41:40その後続けて読み込みをするのは不味いでしょうか?
なにかストリームを回復させる典型的なコードみたいなものはありますか?
0099デフォルトの名無しさん
2010/11/11(木) 17:38:580100デフォルトの名無しさん
2010/11/11(木) 17:40:270101デフォルトの名無しさん
2010/11/11(木) 17:51:12その後続けて読み込んでもどうせまたエラーになるんじゃないか
0102デフォルトの名無しさん
2010/11/11(木) 18:26:180103デフォルトの名無しさん
2010/11/11(木) 19:00:56icc で実行時のエラーをチェックしてくれるコンパイルオプションってありますか?例えば
配列で宣言外の部分を参照したときに、ソースのどこどこで間違ってるぞゴルァと怒ってくれるようなオプション
ifortで ifort -check all -traceback *.f とやるようなことをiccでもやりたいのだけれど・・・
0104デフォルトの名無しさん
2010/11/11(木) 19:26:23質問溜まってんぞ
0105デフォルトの名無しさん
2010/11/11(木) 19:40:060106デフォルトの名無しさん
2010/11/11(木) 21:43:350107デフォルトの名無しさん
2010/11/11(木) 22:59:55エラーになったらどうしようもないだろ。
0108デフォルトの名無しさん
2010/11/11(木) 23:35:440109デフォルトの名無しさん
2010/11/12(金) 01:30:03C言語とはあまり関係ないかも
0110デフォルトの名無しさん
2010/11/12(金) 02:14:260〜24時 0〜60分の0〜24の部分はどうやったら出すことができますか?
0111デフォルトの名無しさん
2010/11/12(金) 07:46:36strcmp関数で文字列を比較して戻り値を利用した処理を行いたいのですが
この時文字列に日本語を使うとまずい事ってありますか?
知識が無いので何となくですが
全角文字だと使用者のPC環境によって影響ありそうな気がして…
0112デフォルトの名無しさん
2010/11/12(金) 08:02:56手順は、
1. 縦方向にDFTを行い実数部分と虚数部分にわける
2 .周波数処理
3. IDFTで元に戻す
4 .横方向にDFTを行い実数部分と虚数部分にわける
5 .2と同様の周波数処理
6. IDFTで元に戻して出力
これで合っていますか?
0113デフォルトの名無しさん
2010/11/12(金) 08:13:19ユニコードのテキストだと \0 が頻繁に出てくるので
strcmp では比較できない
0114デフォルトの名無しさん
2010/11/12(金) 08:17:391
4
2(5)
3
6
が普通だと思うが
”周波数処理”したい内容によっては
>>112 のままでもうまくいくかもしれない
0115デフォルトの名無しさん
2010/11/12(金) 09:07:50ありがとうございます。
LPFかHPFをやってみたいと思ってます。
>>112でやってみて出来なければ>>114の方法をためしてみます。
0116デフォルトの名無しさん
2010/11/12(金) 10:06:11構造体の処理についてです エラーがでます。おしえて
ちなみにヘッダファイルkouzou.hの内容は
struct P{
char name[20];
int age;
};
です
0117デフォルトの名無しさん
2010/11/12(金) 10:51:19実際のコンパイル環境で出たエラーメッセージを張った方が判りやすいよ
考えられるのは
・kouzou.h を2回 include している、多重インクルードガードが kouzou.h に施されていなければエラーになるだろう
・C言語なら struct P {〜}; ではなく typedef struct P {〜}; とすべきはず
でもこれがエラーの原因となるかは俺も定かでは無い
0118デフォルトの名無しさん
2010/11/12(金) 11:25:10× up(&suzuk);
○ up(&suzuki);
× p>-age=78;
○ p->age=78;
あと117の言うようにインクルードガードが必要
0119デフォルトの名無しさん
2010/11/12(金) 11:35:18おまえ何を言ってんだよ
0120デフォルトの名無しさん
2010/11/12(金) 11:47:34エラーを貼れ。
>>117
知識がないなら黙ってろ。少なくとも、下から2行目は見当違いだ。
0121デフォルトの名無しさん
2010/11/12(金) 11:49:02#include<stdio.h>
#include"kouzou.h"
main()
{
struct P suzuki;
up(&suzuki);
printf("name=%s age=%d",suzuki.name,suzuki.age);
}
mainのプログラムなんですけどこれは教科書のまま書いたものです
(up関数を自作したものを別ファイルに保存しています。)
そこで上のプログラムを見てもらってわかるんですがup()のプロトタイプ宣言がありません
ちなみに"kouzou.h"には構造の定義だけしか書いてません。
教科書ではこのようにプロトタイプ宣言が書いておらず、それにも関わらず
実行可能です。なぜですか
長文すいません 意味不明でしたら修正しますので
0122デフォルトの名無しさん
2010/11/12(金) 11:59:06Cの場合はプロトタイプ宣言は必須ではありません。
しかし、必ず書くことをお勧めします。
また、main()の戻り値型も必ず書くべきでしょう。
尚、コンパイラの警告レベルは上げておきましょう。
0123デフォルトの名無しさん
2010/11/12(金) 12:06:360124デフォルトの名無しさん
2010/11/12(金) 12:08:330125デフォルトの名無しさん
2010/11/12(金) 12:12:37新しいですね CDも付属してる
いい参考書ですよ おすすめ
0126デフォルトの名無しさん
2010/11/12(金) 12:12:50宣言してない場合はint型を戻り値とする関数としてみなされるんじゃなかったっけ?
これは単になんの値も返してないから一見正常に動いてるように見えるだけで
0127デフォルトの名無しさん
2010/11/12(金) 12:15:000128デフォルトの名無しさん
2010/11/12(金) 13:45:1350文字Aとかかれたテキストファイルをバイナリで読み込みら、キャラクターコードを加算するという処理を作ってます。
これだとiCntに入るのは文字数となってしまいます。よろしくお願いします。
pFileIn = fopen(゙Test.txt゙, rb゙);
while(iRet = fgetc(pFilIn) != EOF){
iCnt += iRet
}
fclose(pFilIn);
0129デフォルトの名無しさん
2010/11/12(金) 13:48:19なりません。
0130デフォルトの名無しさん
2010/11/12(金) 13:50:16どうやればよいでしょうか?
0131デフォルトの名無しさん
2010/11/12(金) 13:52:10× while(iRet = fgetc(pFilIn) != EOF){
○ while((iRet = fgetc(pFilIn)) != EOF){
0132デフォルトの名無しさん
2010/11/12(金) 14:49:050133デフォルトの名無しさん
2010/11/12(金) 15:18:090134デフォルトの名無しさん
2010/11/12(金) 15:23:520135デフォルトの名無しさん
2010/11/12(金) 16:32:100136デフォルトの名無しさん
2010/11/12(金) 17:47:050137デフォルトの名無しさん
2010/11/12(金) 17:50:550138デフォルトの名無しさん
2010/11/12(金) 18:15:14eclipseってソフトはc言語には
向いてないの?
まだパッケージとか良く分からんから
書いたソースをパッと実行できる感じの
ソフトがあるとありがたいんだけど・・・
0139デフォルトの名無しさん
2010/11/12(金) 18:58:500140デフォルトの名無しさん
2010/11/12(金) 19:37:30windows なら bcc + bcpad で良いんじゃないの
linux なら普通に gcc と a.out で良いけど
0141デフォルトの名無しさん
2010/11/12(金) 19:54:220142デフォルトの名無しさん
2010/11/12(金) 19:57:210143デフォルトの名無しさん
2010/11/12(金) 20:19:19この一文はsuzukiという変数に構造体Pを宣言しているんですが
このsuzukiという変数名を他の変数の値からとってくることは可能でしょうか
つまり
char a=suzuki;
struct P a; というように。
0144デフォルトの名無しさん
2010/11/12(金) 20:26:01日本語でおk
0145デフォルトの名無しさん
2010/11/12(金) 20:26:30struct P a;
0146デフォルトの名無しさん
2010/11/12(金) 20:31:070147デフォルトの名無しさん
2010/11/12(金) 20:40:53それが可能だとしてどんなメリットが生じると考えるのか知りたい
0148デフォルトの名無しさん
2010/11/12(金) 20:51:390149デフォルトの名無しさん
2010/11/12(金) 20:56:230150デフォルトの名無しさん
2010/11/12(金) 21:19:31Turbo C++ 1.01 がオススメ。
0151デフォルトの名無しさん
2010/11/12(金) 21:37:12int main(int argc, char* argv[])
{
ifstream ifs(FILE_NAME);
string str;
while ( !ifs.eof() )
{
ifs >> str;
cout << str;
}
return 0;
}
こういう単にファイルを読み込んでコンソールに出力するプログラムなんですが、
読み込んだ文字列の頭に「・ソ」っていうゴミがいつもくっつくんです。
原因は何でしょうか?
0152デフォルトの名無しさん
2010/11/12(金) 21:42:04bom付きのファイルじゃないかね
0153デフォルトの名無しさん
2010/11/12(金) 21:56:15嫌がらせのつもりじゃないがなんで質問する前にやって見ないのかが理解できない。
0154デフォルトの名無しさん
2010/11/12(金) 21:59:19ttp://codepad.org/lQMNnmtQ
これでいいですか?最後が・・・
0155デフォルトの名無しさん
2010/11/12(金) 22:23:30もう少しシンプルになるんじゃないかね?
ttp://codepad.org/BOJN1X92
0156デフォルトの名無しさん
2010/11/12(金) 22:29:19#include<stdio.h>
int main(void)
{
int space[]={0,1,2,3,2,1};
int i;
for(i=0;i<16;i++)
{
printf("%*s*\n", space[i%6], "");
}
return 0;
}
0157デフォルトの名無しさん
2010/11/12(金) 22:33:43ありがとうございます
まだまだ未熟でした
0158デフォルトの名無しさん
2010/11/12(金) 22:36:020159デフォルトの名無しさん
2010/11/12(金) 22:40:440160デフォルトの名無しさん
2010/11/12(金) 22:45:260161デフォルトの名無しさん
2010/11/12(金) 22:49:30int main(void) {
int i=0;
while(i < 16)
printf("%*s*\n", i%6-((i%6-3)*(i%6>>2&1)<<1), ""), ++i;
return 0;
}
0162デフォルトの名無しさん
2010/11/12(金) 23:03:05これだからゆとりは困る。
0163デフォルトの名無しさん
2010/11/12(金) 23:13:10おおあじなグラフ
http://codepad.org/1fmYgvQf
0164デフォルトの名無しさん
2010/11/12(金) 23:21:10ファイル3つを三回にわけてここに書き込んだら迷惑ですかね
0165デフォルトの名無しさん
2010/11/12(金) 23:36:040166デフォルトの名無しさん
2010/11/12(金) 23:36:400167デフォルトの名無しさん
2010/11/12(金) 23:42:38じゃあ自分で試してみろよ
http://codepad.org/iJzpcY6n
これのどこが>>78のグラフになってんだよ
0168デフォルトの名無しさん
2010/11/13(土) 00:00:24int *b;
};
という構造体があって、bのメモリ領域をmain関数内で動的に確保するにはどうすればいいですか?
0169デフォルトの名無しさん
2010/11/13(土) 00:02:31struct a x;
x.b = (int *)malloc( );
じゃだめ?
0170デフォルトの名無しさん
2010/11/13(土) 00:06:04もしもbに確保した領域が構造体aのサイズより大きいサイズになっても問題とか起きないんですかね・・・
0171デフォルトの名無しさん
2010/11/13(土) 00:07:06ありましたらヒントをお願いします。
0172デフォルトの名無しさん
2010/11/13(土) 00:08:07bはポインタ
つまり、構造体の外のどこかに確保したメモリ領域を「指している」だけ。
struct aのサイズは関係ないよ
0173デフォルトの名無しさん
2010/11/13(土) 00:11:250174デフォルトの名無しさん
2010/11/13(土) 00:13:49http://codepad.org/cUSf1lJB
確保したからってbのサイズが変わるわけではないよ。
0175デフォルトの名無しさん
2010/11/13(土) 00:32:27ありがとうございます
そうなんですね・・・
もう少し勉強します
0176デフォルトの名無しさん
2010/11/13(土) 00:45:50ありがとうございます
新規作成からちゃんとテキストファイル作ったら大丈夫でした
0177デフォルトの名無しさん
2010/11/13(土) 12:22:230178デフォルトの名無しさん
2010/11/13(土) 12:52:210179デフォルトの名無しさん
2010/11/13(土) 13:50:32main()
{
FILE *fp;
char *p;
char s[500];
char n[100];
puts("ファイル名を入力してください");
gets(n);
fp=fopen(n,"r");
while(p!=NULL)
{
p=fgets(s,500,fp);
printf("%s",s);
}
fclose(fp);
}
画面からgetsでファイル名を入力しそれを表示させるプログラムなんですが
だぶって表示されてしまいます。(同じ内容が2回表示される)
このプログラムでのfgetの動きについて教えてください
0180デフォルトの名無しさん
2010/11/13(土) 13:54:10printf の前に
if(p==NULL) break;
をいれればおk
0181デフォルトの名無しさん
2010/11/13(土) 14:07:33while(p!=NULL)
{
p=fgets(s,500,fp);
printf("%s",s); なんでprintfが2回実行されるかわかりませ
}
0182デフォルトの名無しさん
2010/11/13(土) 14:10:522回じゃなくて、読み込むファイルの行数+1だろ。
0183デフォルトの名無しさん
2010/11/13(土) 14:14:29仕組みとか関係ねーよ
pの判定がprintfの後だからだ
つか初回ループに入るかどうかすら未定義だな
0184デフォルトの名無しさん
2010/11/13(土) 14:16:53ある程度できるようになったけど、完全にできるようになったわけではない…
他のC派生行こうとと思うのですが(C#を勉強しようと思ってます)、C言語を完全に理解できているわけではありません
コンパイラの仕組みとかソースファイル分割とかがよくわかっていません
このまま他の言語行っても大丈夫でしょうか?つまずきそうですごく怖いんです・・・
0185デフォルトの名無しさん
2010/11/13(土) 14:17:27while(fgets(s,500,fp)!=NULL){ printf("%s", s); }
0186デフォルトの名無しさん
2010/11/13(土) 14:18:41(はじめからNULLだった場合,while文以下は実行されない)
で,pはfgetsの結果を記録してNULLかどうかを判定させるわけだから
fgetsをやってからp!=NULLか判定をしなければならないのに>>179では順序が逆になっている
fgetsは成功したら第1引数のポインタを,失敗したらNULLを返すんだから
while( fgets(s, 500, fp) != NULL )
でも問題ない
0187デフォルトの名無しさん
2010/11/13(土) 14:18:520188デフォルトの名無しさん
2010/11/13(土) 14:20:21別に他の言語でも勉強しっかりやればC経由じゃなくても良いと思うが。
0189デフォルトの名無しさん
2010/11/13(土) 14:21:01C、C#だけじゃなくて、C++、Java、Ruby、Python、Ocaml、Scalaあたりも平行してやったほうがいいよ。
0190デフォルトの名無しさん
2010/11/13(土) 14:23:21どの言語も使えない駄目プログラマの完成ですね。
0191デフォルトの名無しさん
2010/11/13(土) 14:30:57まあ>>189は半分ジョークだけど、言語ひとつしか使えないって
プログラマはレベル低い場合が多いよね。
ひとつしか知らないからそれを深く知ってるかっていうとそんなことはない。
0192デフォルトの名無しさん
2010/11/13(土) 14:33:370193デフォルトの名無しさん
2010/11/13(土) 15:05:01学習意欲もないんだろうね
0194デフォルトの名無しさん
2010/11/13(土) 15:15:55他人の目的と手段なんて分からんだろうに
0195デフォルトの名無しさん
2010/11/13(土) 15:19:44用途に足るのを1つ覚えれば充分なんだよな。
ただし、それとは別にアセンブラは必須だけどな。
0196デフォルトの名無しさん
2010/11/13(土) 15:27:36そもそも何ができるの
0197デフォルトの名無しさん
2010/11/13(土) 15:29:010198デフォルトの名無しさん
2010/11/13(土) 15:29:40理想の彼女
0199デフォルトの名無しさん
2010/11/13(土) 15:33:41おまえらが生きてるこの世界がそれだよ。
0200184
2010/11/13(土) 15:36:02アセンブラが必須な理由を教えてもらえないでしょうか?
>>196
C言語だけじゃほとんど何もできないと思う
Win32APIとかDirectX使えないと駄目だってばっちゃがいってた
0201デフォルトの名無しさん
2010/11/13(土) 15:38:140202デフォルトの名無しさん
2010/11/13(土) 15:44:18文の終わりって意味?
0203デフォルトの名無しさん
2010/11/13(土) 16:47:52一行は一行だろ
改行までだよ
0204デフォルトの名無しさん
2010/11/13(土) 16:49:090205デフォルトの名無しさん
2010/11/13(土) 17:07:20ものすごく大雑把に言うとC言語はアセンブラのラッパ的立ち位置だから。
アセンブラ知っとくと初心者がまずつまづくポインタとかでつまづかない。
アセンブラ必須って言うかCPUやらなんやらの基礎知識をしっかり知っとくといい。
逆に言うとそれらの仕組み知らないやつの書いたCプログラムは信用できない。
今の時代新規だとJavaとかのLL言語のが案件多いから低レベル制御とか書かないやつらは
無理してC言語しなくてもいいんじゃないかと思う。
0206デフォルトの名無しさん
2010/11/13(土) 18:21:54それはそれで正論だけど、VBしか知らないとかCしかできないみたいな
連中は実際レベル低いしね。
初心者の「複数の言語をやって中途半端になりませんか」って質問には
そんなもん気にすんなとかしかいいようがない。
0207デフォルトの名無しさん
2010/11/13(土) 18:47:53これだからゆとりは
0208デフォルトの名無しさん
2010/11/13(土) 18:49:41CとC++どちらが良いだろうか
0209デフォルトの名無しさん
2010/11/13(土) 18:51:390210デフォルトの名無しさん
2010/11/13(土) 19:03:500211デフォルトの名無しさん
2010/11/13(土) 19:06:330212デフォルトの名無しさん
2010/11/13(土) 19:15:210213デフォルトの名無しさん
2010/11/13(土) 19:15:54Cだね
CとC++は似ているようで言語との付き合い方が違ってくる
せっかくJavaをやってきたのなら、わざわざJavaがアンチテーゼを示したような類似言語で
Java訛りなコード書いてもC++使いとしては三流の域を出られない
いっそまるで思想の違うCのほうが憶え甲斐があると思う
0214デフォルトの名無しさん
2010/11/13(土) 19:40:58それは言い過ぎ
0215デフォルトの名無しさん
2010/11/13(土) 20:07:34それは言い過ぎ
0216デフォルトの名無しさん
2010/11/13(土) 20:09:22ゆとりうるせー
0217デフォルトの名無しさん
2010/11/13(土) 20:09:57それは言い過ぎ
0218デフォルトの名無しさん
2010/11/13(土) 20:21:37あれは文法がCとかBASICみたいな普通の文法とはずいぶん違うので、新鮮でおもしろいかもね。
あとparlだっけ?perlだっけ?あれも新鮮でおもしろいかも。cしか知らない当方には暗号みたいに見えるw
0219デフォルトの名無しさん
2010/11/13(土) 20:38:240220デフォルトの名無しさん
2010/11/13(土) 20:50:150221デフォルトの名無しさん
2010/11/13(土) 21:51:26これだからゆとりは
0222デフォルトの名無しさん
2010/11/13(土) 21:54:35それは言いすぎ
0223デフォルトの名無しさん
2010/11/13(土) 21:56:520224デフォルトの名無しさん
2010/11/13(土) 22:05:16が設置してある(配列・カウンタとも5個くらいあった)
色々な関数でインクリメントやらデクリメントやらしてるプログラムに出会ったんだ
5万行くらいあったんだが、書いた奴出て来いよwww
メンテする身になってくれ…マジで綱渡りしてるみたいに仕様変更したぞ
0225デフォルトの名無しさん
2010/11/13(土) 22:11:58日本語扱えるようにするには文字列を
char型をwchar_t型に変更すればおkですか?
0226デフォルトの名無しさん
2010/11/13(土) 22:13:010227デフォルトの名無しさん
2010/11/13(土) 22:16:530228デフォルトの名無しさん
2010/11/13(土) 22:25:00これだからゆとりは
0229デフォルトの名無しさん
2010/11/13(土) 22:25:17漢字とかも問題ないってことですか?
0230デフォルトの名無しさん
2010/11/13(土) 22:26:56扱ってるエンコーディングが一文字8ビットのやつなら。
0231デフォルトの名無しさん
2010/11/13(土) 22:30:39これは正しい
0232デフォルトの名無しさん
2010/11/13(土) 22:32:10これは正しい
0233デフォルトの名無しさん
2010/11/13(土) 22:33:14マ板行け
0234デフォルトの名無しさん
2010/11/13(土) 22:34:400235デフォルトの名無しさん
2010/11/13(土) 22:34:45もし使う可能性があるなら……
ttp://wisdom.sakura.ne.jp/programming/c/c63.html
こんな風にして扱っていけばいいんでしょうか?
0236デフォルトの名無しさん
2010/11/13(土) 22:42:270237デフォルトの名無しさん
2010/11/13(土) 22:43:59でも学習段階なら、かなや漢字の扱いはひとまず後回しにしておいて、
ASCII のみで一通りやってからにしたほうがいいよ。
0238デフォルトの名無しさん
2010/11/13(土) 22:49:44文字列はwchar_tであつかって、文字列の操作もwcscpy()とかワイド文字系を
つかえばとりあえず動くよ。
まじめにやろうとすると、サロゲートペアとか結合文字とかあるんで、
けっこうめんどう。
0239デフォルトの名無しさん
2010/11/13(土) 22:54:50もう少し勉強してからやりたいと思います
ありがとうございました
0240デフォルトの名無しさん
2010/11/13(土) 23:04:330241デフォルトの名無しさん
2010/11/13(土) 23:10:56漢字は1文字2バイトだからchar2個で1文字分のデータを確保すればいいだけやん
0242デフォルトの名無しさん
2010/11/13(土) 23:16:260243デフォルトの名無しさん
2010/11/13(土) 23:24:35これは釣りだけどcharが1byte固定って言うのは幻想で厳密にはlimits.hのCHAR_BIT見なきゃいけないし
0244デフォルトの名無しさん
2010/11/13(土) 23:27:17charは1バイトってきまってる。
0245デフォルトの名無しさん
2010/11/13(土) 23:28:130246デフォルトの名無しさん
2010/11/13(土) 23:28:590247デフォルトの名無しさん
2010/11/13(土) 23:29:11『これは釣りだけど』
0248デフォルトの名無しさん
2010/11/13(土) 23:30:18「charは1byte固定っていうは幻想」
↓
「いや1バイトだろ」
0249デフォルトの名無しさん
2010/11/13(土) 23:31:14え?
0250デフォルトの名無しさん
2010/11/13(土) 23:46:391 byte の幅は 8 bits とは限らない。
0251デフォルトの名無しさん
2010/11/14(日) 00:13:390252デフォルトの名無しさん
2010/11/14(日) 00:32:030253デフォルトの名無しさん
2010/11/14(日) 00:47:520254デフォルトの名無しさん
2010/11/14(日) 00:47:590255デフォルトの名無しさん
2010/11/14(日) 01:19:460256デフォルトの名無しさん
2010/11/14(日) 01:38:22志村それ1WORD
0257デフォルトの名無しさん
2010/11/14(日) 02:01:42バイトってのは若干の曖昧さがある用語で
今日では大部分のケースで1バイト=8ビットを仮定してもいいが、
そうでない環境もある
厳密さが必要な場合は、バイトを使わずにビットのみで表現するか
あるいは(特にネットワーク分野では)オクテットを使ったり
0258デフォルトの名無しさん
2010/11/14(日) 02:03:420259デフォルトの名無しさん
2010/11/14(日) 02:05:27じゃあCASL2の1バイトは何ビット?
0260デフォルトの名無しさん
2010/11/14(日) 03:50:520261デフォルトの名無しさん
2010/11/14(日) 04:26:580262デフォルトの名無しさん
2010/11/14(日) 04:36:19struct LIST_UNIT* next;
};
LIST_UNIT を L で表し、たとえば LIST_UNIT が3個つながった状態
L -> L -> L
各Lを判別しやすいように添字をつけて説明すると、たとえば
L0 -> L1 -> L2
と図示した方がわかりやすいかも。
struct LIST_UNIT L0;
struct LIST_UNIT L1;
struct LIST_UNIT L2;
この段階だと、L0,L1,L2 は、まだ繋がっていない。
L0の次にL1をつなげるには、
L0.next = &L1;
として、L0のnextが、L1のアドレスを指すようにセットしなければならない。
同様にして
L1.next = &L2;
とすれば、L1の次にL2を繋げたことになる。
L2.next には NULL が入る。next が NULL だと、最後という意味になる。
0263262
2010/11/14(日) 04:38:38L0 -> L1 -> L2
を A とする。
L10 -> L11 -> L12
を B とする。
B の L10 と L11 の間の位置に、L0 を挿入すると、それは L0 単体ではなく、Aを挿入することになる。つまり
L10 -> L0 -> L11 -> L12
ではなく
L10 -> L0 -> L1 -> L2 -> L11 -> L12
となる。
<<シーク>>
L0 -> L1 -> L2 -> L3 -> L4 -> L5 -> L6 -> L7 -> L8 -> L9
だとして、
LIST_UNIT から x個先 の LIST_UNIT のポインタを得る。
たとえば
struct LIST_UNIT* p;
p = シーク(&L5, 3);
なら、p には L5 から 3個先の L8 のアドレスが入る。
0264262
2010/11/14(日) 04:45:31L0 -> L1 -> L2 -> L3 -> L4 -> L5 -> L6 -> L7 -> L8 -> L9
だとして、
LIST_UNIT から x個先までを、新たなリストにコピーする。
たとえば、
struct LIST_UNIT* p;
p = コピー(&L5, 3);
なら、L5 から 3個分の L7 までが、あらたに
L10 -> L11 -> L12
の、長さ3のリストとして領域確保・設定され、p には L10 のアドレスが入る。
<<消去>>
L0 -> L1 -> L2 -> L3 -> L4 -> L5 -> L6 -> L7 -> L8 -> L9
だとして、
LIST_UNIT から x個先までを、リストから消去し、リストをつなぎ直す。
struct LIST_UNIT* p;
p = 消去(&L5, 3);
なら、L5 から 3個分の L7 までが、リストから消去され
L0 -> L1 -> L2 -> L3 -> L4 -> L8 -> L9
L4.next が L8 になる。
0265262
2010/11/14(日) 04:59:03struct LIST_UNIT* next;
void* date;
};
void* data に、実データへのアドレスを記録できるようにすれば、
struct LIST_UNIT A, B, C;
A.next = &B;
B.next = &C;
C.next = NULL;
char c0 = "AAA";
char c1 = "BBB";
char c2 = "CCC";
A.data = (void*)(&c0);
B.data = (void*)(&c1);
C.data = (void*)(&c2);
として、char 型をデータとして記録できる。
また、char 以外の型もデータとして記録できる。たとえば、char 型を記録した A -> B -> C のリストを ABC として、同様に DEF, GHI のリストもあるとしたら、
struct LIST_UNIT X, Y, Z;
X.next = &Y;
Y.next = &Z;
Z.next = NULL;
X.data = (void*)(&A); // A -> B -> C
Y.data = (void*)(&D); // D -> E -> F
Z.data = (void*)(&G); // G -> H -> I
という具合に、リストのリストも、わりと単純に書けそうな気がする。
0266デフォルトの名無しさん
2010/11/14(日) 05:05:19オススメはいつでも Turbo-C 2.01 だよ。
0267262
2010/11/14(日) 05:07:510268デフォルトの名無しさん
2010/11/14(日) 06:36:440269デフォルトの名無しさん
2010/11/14(日) 09:52:04他の言語も昔からあるけど、それらの言語よりも速いの
0270デフォルトの名無しさん
2010/11/14(日) 10:11:340271デフォルトの名無しさん
2010/11/14(日) 10:12:360272デフォルトの名無しさん
2010/11/14(日) 10:44:440273デフォルトの名無しさん
2010/11/14(日) 10:55:34アセンブラで書いたコードが速度でC言語に負けたらしい
Cコンパイラ>先生の脳みそ
0274デフォルトの名無しさん
2010/11/14(日) 11:57:2312,3年前にアセンブラの高速化の本を読んだら、ペアリングがどうとか
分岐予測がどうとか、すでについていけない世界だった。
0275デフォルトの名無しさん
2010/11/14(日) 13:55:21ttp://www5f.biglobe.ne.jp/~mitarou_mutarou/index.html
0276デフォルトの名無しさん
2010/11/14(日) 17:18:35ポインタ→配列はできるのですか?
0277デフォルトの名無しさん
2010/11/14(日) 17:23:05できるってどういう意味だろう。
[]でアクセスならできるけど。
0278デフォルトの名無しさん
2010/11/14(日) 17:28:33レジスタ割り付けとかごく低レベルな部分については
最適化コンパイラが人間を超えることも多い
人間が強い部分は、コードから読み取れない
暗黙の条件などを使って最適化できるケース
例えば、Cのエイリアス周りは最適化困難だと知られている
0279デフォルトの名無しさん
2010/11/14(日) 17:28:580280デフォルトの名無しさん
2010/11/14(日) 17:33:28よく分からんがこういうことか?
http://codepad.org/WqmSxMHq
0282デフォルトの名無しさん
2010/11/14(日) 17:47:24出来ます
0283デフォルトの名無しさん
2010/11/14(日) 17:48:49もっと具体的に書かないと、正確な解答は得られないよ
0284デフォルトの名無しさん
2010/11/14(日) 17:52:34int n[10] ;
int* p ;
p = n ;
はできるけど
n = p ;
はできないという意味ではできない
nは既にメモリ上に確保されてしまってるのでそのアドレスはずらせないよ
p=nはそのアドレスを指すポインタを取得してるだけ
0285デフォルトの名無しさん
2010/11/14(日) 17:53:290286276
2010/11/14(日) 17:56:31こういう答えが聞きたかった
thx
>>282
何故できるのですか?
ポインタと配列の違いは、こんな感じでおkですか?
・スコープ
・長さ(要素数)を求められるか
・定数かそうじゃないか
0287デフォルトの名無しさん
2010/11/14(日) 17:59:58ポインターは参照するメモリー上のアドレス。
配列はメモリー上の実態。
0288デフォルトの名無しさん
2010/11/14(日) 18:08:11こういう試せばわかるんじゃね?って疑問って多いよね。
座学でやってたりするんだろうか。
0289デフォルトの名無しさん
2010/11/14(日) 18:09:06配列とポインタはセットで語られることが多いけど全く別物です
相互変換できるものではないし、並列で比べることは無意味です
0290デフォルトの名無しさん
2010/11/14(日) 18:10:44ポインタで躓く奴の典型だな
0291デフォルトの名無しさん
2010/11/14(日) 18:14:33エラ エラー
0292デフォルトの名無しさん
2010/11/14(日) 18:15:52そういう情報を小出しにする質問もイラっとするな。
最初から、こんなことをしたけどできません、みたいに質問すればいいのに。
0293デフォルトの名無しさん
2010/11/14(日) 18:16:352:アーサ王
3:アサ王
どれ?
0294276
2010/11/14(日) 18:16:37delete[] s;
なんで、*sなのに配列のサイズがわかるのかな?って思ったの
0295デフォルトの名無しさん
2010/11/14(日) 18:21:26メモリブロックにサイズの情報もってるんだろうな。
malloc()、free()も、開放するときはサイズ指定しないから、
そういう疑問ってもったことなかった。
0296デフォルトの名無しさん
2010/11/14(日) 18:25:120298デフォルトの名無しさん
2010/11/14(日) 18:34:200299デフォルトの名無しさん
2010/11/14(日) 18:36:35mallocで得たメモリの先頭アドレスから、基本ブロックサイズ分だけ戻ったアドレスに、確保された領域サイズの情報が入ってる実装が
おそらくいちばん素直な実装だと思う。だからfree89はサイズを必要としないのだと思う。
0300299
2010/11/14(日) 18:56:51void main()
{
unsigned char* p = (unsigned char*)malloc(123);
free(p);
}
たとえば、これは実行時にメモリエラーにならないけど。
#include <stdlib.h>
void main()
{
unsigned char* p = (unsigned char*)malloc(123);
// p が指すメモリの、一つ手前の位置の値を、異常な数値に書き換える。
*(p-1) = 0xFF;
free(p);
}
これだと、free(p); が実行時エラーになったです(gcc, eglibc)
逆に言うと、このmallocの内部的な基本ブロックとして使われてる共用体のフォーマットがわかれば、(struct malloc_unit*)(p-1)->len = 3;などと書き換えて、
free()で開放するメモリの量を勝手に多くしたり少なくしたりもできるかもしれないなぁ…と思いました。(なにもメリットありませんがw)
0301デフォルトの名無しさん
2010/11/14(日) 18:59:13環境によって違うだろうけど
0302デフォルトの名無しさん
2010/11/14(日) 19:08:22他のメモリブロックと兼ね合いがあるから、勝手にサイズ変更したらうまくいかないだろ。
0303デフォルトの名無しさん
2010/11/14(日) 19:13:27んなことしたら
freeとか関係無しに落ちるだろw
0304デフォルトの名無しさん
2010/11/14(日) 19:16:05www
0305デフォルトの名無しさん
2010/11/14(日) 19:55:14bcc で確認したら p - 4 から入ってたよ、アライメントを考慮して4バイト単位で変化する
char* p = malloc( 1 );
p[3] = 0x00;
こんな事しても平気かな(何もメリット有りませんが2)
0306デフォルトの名無しさん
2010/11/14(日) 20:01:42メリットない以前に、動かなくなるんじゃないか?
0307デフォルトの名無しさん
2010/11/14(日) 20:18:08まったくの仮定の話ですが、
mallocが内部的に使ってる基本ブロックが、たとえば
union malloc_unit {
struct {
unsigned long block_size;
void* next;
};
unsigned char a[32];
};
だとすれば、共用体 malloc_unit ひとつあたりのサイズは 32バイトなので、
malloc関数に指定した確保サイズが1バイトだとしても、実際には32バイト確保されてしまうのだろうから、
すくなくともp[1] から p[31]までは、なにを書いても平気(mallocの動作には支障ない)ような気がします。
もしも malloc が内部的に使ってる基本ブロックサイズが、たとえば
union malloc_unit {
struct {
unsigned char block_size;
unsigned char next_address;
};
unsigned char a[1];
};
だとしたら、malloc_unit ひとつあたりのサイズは2バイトなので、p[3] は、次のブロックの next_address あたりを指すことになるでしょうし(まったくの仮定の話です)、mallocの動作に問題が生じるはずだと思います。
基本ブロックのサイズ次第だと思います。(そもそも、基本ブロックなんてものが本当に使われてるかどうかもわかりません。まったくの仮定の話です。もしかしたら別テーブルがあるのかもしれませんし…)
0308デフォルトの名無しさん
2010/11/14(日) 20:22:32exploitじゃねーか
0309デフォルトの名無しさん
2010/11/14(日) 20:22:46malloc() をキャストしてない点に突っ込んだのなら細かい奴だな
一応確認したけど動くよ、p + 3 は p に割り当てられてるから何の問題も無い
確認して気が付いたんだけど bcc の場合は malloc の最低単位は 12Byte みたいだ
つまり p[11] までは使えるって事だね(そんな実装したら殺されるけど)
0310デフォルトの名無しさん
2010/11/14(日) 20:27:580311デフォルトの名無しさん
2010/11/14(日) 20:30:240312デフォルトの名無しさん
2010/11/14(日) 20:36:51bcc ではそんな感じでは無いな、メモリ管理テーブルが別に有るみたいだ
p0=16byte, p1=1byte, p2=1byte と確保して得られたアドレスの差分とアドレス直近8Byteを確認してみたら
アドレスの差分は p1-p0=0x14, p2-p1=0x10
p0 0x0000000010000000
p1 0x000000000c000000
p2 0x000000000c000000
だったよ
p0のサイズが0x10でp1のサイズの0x04を足した0x14がp1-p0だからサイズと領域以外は存在しない
0313デフォルトの名無しさん
2010/11/14(日) 20:38:33○p0のサイズが0x10でp1のサイズ領域の0x04を足した0x14がp1-p0だからサイズ領域と確保領域以外は存在しない
0314デフォルトの名無しさん
2010/11/14(日) 20:40:28倫理的とかの問題は有るけど、物理的な問題は無いって話だぉ
物理的に問題が有るならどういうケースか教えてほしいな
0315デフォルトの名無しさん
2010/11/14(日) 20:41:260316デフォルトの名無しさん
2010/11/14(日) 20:58:450317デフォルトの名無しさん
2010/11/14(日) 21:41:55union malloc_unit {
unsigned char size[0x04]; // unsigned long // 4byte
unsigned char[0x0C]; // 12byte
};
だとしたら、
■ = malloc_unit = 12byte
p0 p1 p2
↓ ↓ ↓
■■■■■■
↑ ↑
| p2_size
|
p1_size
(p0は最低でも16バイト以上必要、p1は最低でも1バイト以上必要、p2は最低でも1バイト以上必要)
p1 - p0 = 12 * (2 + 1) = 36byte
p2 - p1 = 12 * (1 + 1) = 24byte
こうなるかと思ってましたが、
実際にはもっとメモリ使用量を節約できるように、size は4byte、block は12byte と、単位が異なるようですね。
これだと、メモリ領域を未使用領域として再設定する場合など、フラグ関係をどこでどのようにやっているのか想像つきません。
管理用にわざわざ別テーブルを用意するなら、管理情報もふくめて、共用体としてサイズ等のヘッダに項目を作ってしまった方が単純で良いような気が。はて?
0318デフォルトの名無しさん
2010/11/14(日) 21:55:41そのサイズぶんだけ進んだところが次のブロックなのだからサイズさえわかれば先頭から順に全ブロック辿れますし
性能さえ気にしなければ、他に何の情報も要らないと思いますが
0319デフォルトの名無しさん
2010/11/14(日) 22:14:17mallocで確保した領域以外へのアクセスを行ってたまたまプログラムが動きづつけるかどうかなんて特定のコンパイラの実装の話。
言語的には完全にNG。
0320デフォルトの名無しさん
2010/11/14(日) 22:58:09変数名の後ろに菊があるとかこの言語考えた人エロすぎ
0321デフォルトの名無しさん
2010/11/14(日) 23:03:15確かに管理テーブルで管理するならサイズもそこに書けば良いじゃんって思うしなぁ
0322デフォルトの名無しさん
2010/11/14(日) 23:14:240323デフォルトの名無しさん
2010/11/14(日) 23:19:27C言語=コンパイラなんだからここで話す
0324デフォルトの名無しさん
2010/11/14(日) 23:22:490325デフォルトの名無しさん
2010/11/14(日) 23:23:35残念ながら定義されているんだよなぁ、これが。w
0326デフォルトの名無しさん
2010/11/14(日) 23:28:520327デフォルトの名無しさん
2010/11/14(日) 23:30:200328デフォルトの名無しさん
2010/11/14(日) 23:38:53開始アドレスより小さいアドレスへのアクセスなんて全く定義されていない。
0329デフォルトの名無しさん
2010/11/14(日) 23:43:110330デフォルトの名無しさん
2010/11/14(日) 23:47:03組み込みシステムでは「規格に書いてないから・・・」とか通用しない。アドレスじかうち。
0331デフォルトの名無しさん
2010/11/14(日) 23:48:080332デフォルトの名無しさん
2010/11/14(日) 23:48:22ソース
0333デフォルトの名無しさん
2010/11/14(日) 23:49:45*0xFFFFFFFFFFFFFFFFFFFF = 0;
0334デフォルトの名無しさん
2010/11/14(日) 23:49:48ISO/IEC 9899:1999
0335デフォルトの名無しさん
2010/11/14(日) 23:51:02馬鹿発見。w
0336デフォルトの名無しさん
2010/11/14(日) 23:53:220337デフォルトの名無しさん
2010/11/14(日) 23:54:100338デフォルトの名無しさん
2010/11/15(月) 00:16:450339デフォルトの名無しさん
2010/11/15(月) 00:19:150340デフォルトの名無しさん
2010/11/15(月) 01:11:000341デフォルトの名無しさん
2010/11/15(月) 01:14:18VC#
0342デフォルトの名無しさん
2010/11/15(月) 01:21:49Turbo-C 2.01 がオススメだっつってんだろがよ。
0343デフォルトの名無しさん
2010/11/15(月) 01:22:50C/C++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
C言語なら俺に聞け(入門編)Part 73
http://hibari.2ch.net/test/read.cgi/tech/1289049065/
0344デフォルトの名無しさん
2010/11/15(月) 01:23:320345デフォルトの名無しさん
2010/11/15(月) 01:24:11自己参照発見
0346デフォルトの名無しさん
2010/11/15(月) 01:30:58「決定版 はじめてのC++ 初版」を読みながらXP sp3 / VC++2008 EE sp1 で
Windowsプログラムを作成しております。
わたくしはプログラミング歴2日ほどの初心者です。
動的変数の配列への適用(p.405)についての質問です。
TCHAR型の動的配列の書き方についてです。
Windowsの変数型であるTCHAR型変数への記載が当然ながら書いてありません。
またchar型変数のことも記載がないのでとまどっております。
TCHAR *str1 ;
str1 = new TCHAR[ 256 ] ;
…
delete [] str1 ;
という記述は正しく機能するでしょうか?
なぜネットで散見いたします
char *str1 = new char[ 256 ] ;
のような書き方をしないかについて申しあげます。
LPCTSTR lpcszMes1 = TEXT( "hogehoge" ) ;
LPCTSTR lpcszMes2 = TEXT( "mesomeso" ) ;
LPTSTR lpszUnited ;
があるときに
void MessageUnited( TCHAR *unit , LPCTSTR mes1 , LPCTSTR mes2 )
{
// ここでmes1とmes2のそれぞれの文字数を合計した数値sumを計測して
// unit = new TCHAR[sum+1] ;
}
といった関数で合体処理して、新しい文字列変数unitのポインタをlpszUnitedで参照して、活用した後、deleteしたいのです。
私の頭は大丈夫でしょうか。
0347デフォルトの名無しさん
2010/11/15(月) 01:32:22その理由は?
0348デフォルトの名無しさん
2010/11/15(月) 01:37:22誘導されて来たみたいだけど、
テンプレ視てくれると分かるがC++は特別扱いなんですわ
あっちで誘導した人の認識ミスだから、安心してここに行ってくれ
C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
0349デフォルトの名無しさん
2010/11/15(月) 01:39:25次はWin32スレに誘導されそうな予感w
0350デフォルトの名無しさん
2010/11/15(月) 01:39:33テンプレを満足に読まなかったわたくしに責任があります。
まことにすみません。
そしてありがとうございます。
C++相談室へ行ってきます。
0351デフォルトの名無しさん
2010/11/15(月) 02:31:16将来立派なIT土方になれるだろう
0352デフォルトの名無しさん
2010/11/15(月) 02:43:26コンパクトで使い易く性能も良い。
各メモリモデルにも対応していて実用的。
0353デフォルトの名無しさん
2010/11/15(月) 02:47:200354デフォルトの名無しさん
2010/11/15(月) 03:13:04http://homepage2.nifty.com/c_lang/intro/no_56.htm
0355デフォルトの名無しさん
2010/11/15(月) 03:21:180356デフォルトの名無しさん
2010/11/15(月) 03:21:270357デフォルトの名無しさん
2010/11/15(月) 03:28:350358デフォルトの名無しさん
2010/11/15(月) 04:11:590359デフォルトの名無しさん
2010/11/15(月) 06:08:27main()
{
char *p="hello";
puts(p);
}
このプログラムのputsなんですが予想に反して正常にコンパイルされました
puts()って格納先のポインタも出力できるんですか
0360デフォルトの名無しさん
2010/11/15(月) 11:11:59http://msdn.microsoft.com/ja-jp/library/tf52y4t1%28VS.80%29.aspx
> int puts( const char *str );
0361デフォルトの名無しさん
2010/11/15(月) 12:24:09逆に、puts("hello")としたときには"hello"を指すポインタがputs()に引き渡されているだけ。
puts()はどちらの場合もポイント先の文字をナル文字に到達するまで順に出力して、最後に改行文字も出力する。
0362デフォルトの名無しさん
2010/11/15(月) 12:35:460363デフォルトの名無しさん
2010/11/15(月) 16:47:490364デフォルトの名無しさん
2010/11/15(月) 17:10:110365デフォルトの名無しさん
2010/11/15(月) 17:49:51○
// ∧_∧ ○
○、<#`Д´>||<ウリを嫌うやつはネトウヨニダ!
||( ) ○
○ ヽ___フ/ //
レ ○
「ネット・ウヨクと毎日闘っている」 by民団関係者
0366デフォルトの名無しさん
2010/11/15(月) 18:18:300367デフォルトの名無しさん
2010/11/15(月) 18:21:200368デフォルトの名無しさん
2010/11/15(月) 22:04:270369デフォルトの名無しさん
2010/11/15(月) 22:21:25aのアドレスが書き換わらないです 教えてください
0370デフォルトの名無しさん
2010/11/15(月) 22:25:18http://codepad.org/eBm3sB8K
0371デフォルトの名無しさん
2010/11/15(月) 22:26:21main()
{
char *a="fkuha";
ai(&a);
puts(a);
}
void ai( char **a)
{
*a="hlh";
}
0372デフォルトの名無しさん
2010/11/15(月) 22:38:11char *ai( char *a);
main()
{
char *a="fkuha";
a = ai(a);
puts(a);
}
char *ai( char *a)
{
return "hlh";
}
0373デフォルトの名無しさん
2010/11/15(月) 22:38:19なんでCだと毎回mallocとかで領域確保しないといけないの?
0374デフォルトの名無しさん
2010/11/15(月) 22:40:370375デフォルトの名無しさん
2010/11/15(月) 22:40:49Cでも最初から適当な大きさのバッファを用意しておけば?
0376デフォルトの名無しさん
2010/11/15(月) 22:40:580377デフォルトの名無しさん
2010/11/15(月) 22:41:16ちなみに普通の変数に長文を入力するとき、いつも配列をで一つずつ代入してたん
だけど配列を使わないで直で長文を代入したらa="njhld"←このように
文字一個一個は変数のどこに格納してるの?
0378デフォルトの名無しさん
2010/11/15(月) 22:43:000379デフォルトの名無しさん
2010/11/15(月) 22:44:10そらメモリのどっかだろ。
0380デフォルトの名無しさん
2010/11/15(月) 22:44:16中身は格納してねーよ。
0381デフォルトの名無しさん
2010/11/15(月) 22:46:020382デフォルトの名無しさん
2010/11/15(月) 22:47:56読解力の無い素人はすっ込んでろぃ。
0383デフォルトの名無しさん
2010/11/15(月) 22:48:170384デフォルトの名無しさん
2010/11/15(月) 22:49:16そんなのわかってて言ってるに決まってるだろ。
0385デフォルトの名無しさん
2010/11/15(月) 22:50:44読w解w力w
0386デフォルトの名無しさん
2010/11/15(月) 22:52:24char a[] = "hoge";
ができるなら、同様に、
int *p = {0,1,2,3};
int a[] = {0,1,2,3};
もできるようにしてほしいよね。
0387デフォルトの名無しさん
2010/11/15(月) 22:54:42ほーw
じゃあ何でそんな回答が出てきたのかな?w
ま、引っ掛け問題が意地悪だったかもねw
0388デフォルトの名無しさん
2010/11/15(月) 22:55:470389デフォルトの名無しさん
2010/11/15(月) 22:57:07型情報が無いんだよね。
単独でリテラルたりえるには。
(int){0,1,2,3}
こんな表記でどうか。
0390デフォルトの名無しさん
2010/11/15(月) 22:57:13いや、なんか思い違いしてるのはお前だろ。
0391デフォルトの名無しさん
2010/11/15(月) 22:57:214番目は元々出来るだろ
0392デフォルトの名無しさん
2010/11/15(月) 22:58:160393デフォルトの名無しさん
2010/11/15(月) 22:58:42両方が、って意味。
0394デフォルトの名無しさん
2010/11/15(月) 22:58:47複合リテラルで出来る
C99未対応なんか知るか
0395デフォルトの名無しさん
2010/11/15(月) 23:00:54これだからゆとりは
0396デフォルトの名無しさん
2010/11/15(月) 23:01:490397デフォルトの名無しさん
2010/11/15(月) 23:02:33要素数が無いんだから危ないだろ。
文字列は終端が決まってるからできるんだよ。
読み専用領域にデータ列を配置したいならリソースとか使えば良いんじゃね。
0398デフォルトの名無しさん
2010/11/15(月) 23:06:49int a[] = {0,1,2,3};
これでOK.
0399デフォルトの名無しさん
2010/11/15(月) 23:07:22ほんとだ。できたな。
C99は使う機会ないけど。
http://ideone.com/DnU3E
0400デフォルトの名無しさん
2010/11/15(月) 23:23:00http://hibari.2ch.net/test/read.cgi/unix/1268282846/272-273
272 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:42:30 ID: Be:
マウントオプションとは別に、CRLFをLFに変換するツールはないでしょうか?
美乳セーラー女子高生とSEX顔射フィニッシュ
というコマンドやnkfでも一応可能なのですが
専用のツールはなかったかと思いまして
273 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:43:21 ID: Be:
>>272
コピペミスった、、、、、
見なかったことにしてください
コマンドは、
cat crlf.txt | tr -d '\r' > lf.txt
です。
0401デフォルトの名無しさん
2010/11/15(月) 23:32:52コピペスレから転載乙。
0402デフォルトの名無しさん
2010/11/15(月) 23:36:29氏ねばいいのに
0403デフォルトの名無しさん
2010/11/15(月) 23:38:260404デフォルトの名無しさん
2010/11/16(火) 03:09:09そういう用途に向いてるC言語のコンパイラって何があるの?
0405デフォルトの名無しさん
2010/11/16(火) 03:18:10まぁ、いくら最近のコンパイラが頭いいからって
予め小さくなるようなコードで書いとかないと最適化きかないけどな
0406デフォルトの名無しさん
2010/11/16(火) 03:26:12Turbo-C 2.01 が最適だよ。
0407デフォルトの名無しさん
2010/11/16(火) 07:17:020408デフォルトの名無しさん
2010/11/16(火) 11:38:520409デフォルトの名無しさん
2010/11/16(火) 12:24:400410デフォルトの名無しさん
2010/11/16(火) 13:58:58素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数n
解答
/* 素数か判定して素数ならその数字を返し、そうでなければ0を返す */
int prime(int n)
{
int i;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
return i;
}
/* 素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数nを求めよ */
int main(void)
{
int i, sum;
sum = 0;
for (i = 2; sum <= 9129; i++)
sum += prime(i);
printf("素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数\nn: %d\n", i - 1);
return 0;
}
という解答らしいのですがここのint prime(int n)とsum += prime(i);の意味がよくわかりません
説明をお願いします
0411デフォルトの名無しさん
2010/11/16(火) 14:43:17sum += prime(i);はsum = sum + prime(i);と同じ。
int prime(int n)の何がわからないのだ?
%は剰余(割った余り)。
0412デフォルトの名無しさん
2010/11/16(火) 15:15:450413デフォルトの名無しさん
2010/11/16(火) 15:28:280414デフォルトの名無しさん
2010/11/16(火) 17:44:22まずこいつが何をしてるか考えるんだ。
関数単位で物事を見れるようにならないとダメだぞ
0415デフォルトの名無しさん
2010/11/16(火) 17:46:59悪かった。
プログラム辞めた方がいい
0416デフォルトの名無しさん
2010/11/16(火) 17:55:13411の回答で意味が分からないとすると
素数の定義が分からないとしか思えないw
int prime(int n)
{
int i;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
printf("素数:%d\n",i); ←追加
return i;
}
こうしても分からんか?
0417デフォルトの名無しさん
2010/11/16(火) 18:31:13for( i=3; i*i<=n; i+=2 ) {
if( n%i == 0 ) return 0;
}
return n;
0418デフォルトの名無しさん
2010/11/16(火) 18:33:390419デフォルトの名無しさん
2010/11/16(火) 19:27:58「それは素質のある人が言う言葉」って誰かが言ってたな
412には素質がないんだ諦めろ
0420デフォルトの名無しさん
2010/11/16(火) 20:34:280421デフォルトの名無しさん
2010/11/16(火) 20:52:540422デフォルトの名無しさん
2010/11/16(火) 21:14:24#include <stdio.h>
int main(void) {
unsigned int i,j;
for (i=0 ; i<=32 ;i++) {
j = (0xFFFFFFFF<<i);
printf("%d %08X\n",i,j);
}
return 0;
}
こうなります
28 F0000000
29 E0000000
30 C0000000
31 80000000
32 FFFFFFFF
これは何故でしょう? コンパイラはMinGWです。
参考になるサイト等教えて頂けないでしょうか?
0423デフォルトの名無しさん
2010/11/16(火) 21:21:3732ビット整数を32ビット以上シフトした結果は未定義だからです
参考になるサイト
http://www.vmunix.com/~gabor/c/draft.html#101
> If the value of the right operand is negative
> or is greater than or equal to the number of value and sign
> bits in the object representation of the promoted left
> operand, the behavior is undefined.
0424デフォルトの名無しさん
2010/11/16(火) 21:22:5980386以上のCPUではローテート・シフト回数を指定できるが、
32回を超えてシフトした場合の結果は未定義
0425デフォルトの名無しさん
2010/11/16(火) 21:25:23>>423
0426デフォルトの名無しさん
2010/11/16(火) 21:28:24IA-32 インテルR アーキテクチャ・
ソフトウェア・デベロッパーズ・
マニュアル
中巻:
命令セット・リファレンス
IA-32 アーキテクチャにおける互換性
8086 は、シフト・カウントをマスクしない。しかし、(Intel 286 プロセッサで始まる) その他の
すべてのIA-32 プロセッサは、シフト・カウントを5 ビットにマスクするので、最大カウント
は31 になる。このマスク設定は、( 仮想8086 モードを含めた) すべての動作モードで行われ、
命令の最大実行時間を減少させる。
つまり32を5ビットでマスクすると0になってしまう
0427デフォルトの名無しさん
2010/11/16(火) 21:30:29>>423
0428デフォルトの名無しさん
2010/11/16(火) 21:31:07そんな物は役に立たない
貼るなら規格票を貼れや
§6.5.7 Bitwise shift operators
3 The integer promotions are performed on each of the operands. The type of the result is
that of the promoted left operand. If the value of the right operand is negative or is
greater than or equal to the width of the promoted left operand, the behavior is undefined.
0429デフォルトの名無しさん
2010/11/16(火) 21:32:00>>423
0430デフォルトの名無しさん
2010/11/16(火) 21:32:29しつこいカス
0431デフォルトの名無しさん
2010/11/16(火) 21:34:20ありがとうございました。#include <stdio.h>
これを実行したところ
int main(void) {
unsigned int i,j;
unsigned long long jj;
for (i=0 ; i<=32 ;i++) {
j = (0xFFFFFFFF<<i);
jj = 0xFFFFFFFF;
jj <<= i;
printf("%d %08X %08X\n",i,j,(unsigned int)jj);
}
return 0;
}
こうなった
28 F0000000 F0000000
29 E0000000 E0000000
30 C0000000 C0000000
31 80000000 80000000
32 FFFFFFFF 00000000
ので、
> 32ビット整数を32ビット以上シフトした結果は未定義だからです
の意味が分かった気がします。
0432デフォルトの名無しさん
2010/11/16(火) 21:34:23427 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
429 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
0433デフォルトの名無しさん
2010/11/16(火) 21:42:15脳内でメモリマップするとZiLOG系でマップしてしまうな
変換するから別に困らんけどね
0434デフォルトの名無しさん
2010/11/16(火) 21:43:350435デフォルトの名無しさん
2010/11/16(火) 21:47:06正しいかどうかも分からないサイトのURL貼るなや
0436デフォルトの名無しさん
2010/11/16(火) 22:00:28エラーがでます 文法がおかしいのでしょうか
0437デフォルトの名無しさん
2010/11/16(火) 22:04:420438デフォルトの名無しさん
2010/11/16(火) 22:10:35よっぽど悔しかったのか
0439デフォルトの名無しさん
2010/11/16(火) 22:13:01悔しいとかの問題ではなくて信用にもとる真似をするなという事
0440デフォルトの名無しさん
2010/11/16(火) 22:18:47必死すぎ
0441デフォルトの名無しさん
2010/11/16(火) 22:39:230442デフォルトの名無しさん
2010/11/16(火) 22:49:40JISのを貼ればいいじゃん。
0443デフォルトの名無しさん
2010/11/16(火) 22:51:52できますか?
0444デフォルトの名無しさん
2010/11/16(火) 22:54:43言わせんな恥ずかしい。
0445デフォルトの名無しさん
2010/11/16(火) 22:56:51JISに合致してると明言してる処理系使ってないくせに
0446デフォルトの名無しさん
2010/11/16(火) 22:58:30クレクレ乙
0447デフォルトの名無しさん
2010/11/16(火) 23:14:14最初に覚えたのが標準になっちゃうんだよな。
0448デフォルトの名無しさん
2010/11/16(火) 23:31:150449デフォルトの名無しさん
2010/11/16(火) 23:38:250450デフォルトの名無しさん
2010/11/16(火) 23:39:02あ?
0451デフォルトの名無しさん
2010/11/16(火) 23:43:07http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3010
から pdf が見えるんですが、この pdf は保存もテキストのクリップボードへのコピーもできないのです。
(規格票を売るのが商売だからあたりまえといえばそうですが、ガードがかかっています。)
ISO/IEC 9899:1999 や ISO/IEC 14882:2003 の英文 pdf はググるとみつかるのですが、日本語のは転がっていないようです。
0452デフォルトの名無しさん
2010/11/16(火) 23:53:25送料だけで良いだろ
0453デフォルトの名無しさん
2010/11/16(火) 23:56:210454デフォルトの名無しさん
2010/11/16(火) 23:57:02ポインタ変数に文字列を代入してputs()やprintf()で個々の文字を出力する
ことってできないんですか 配列で宣言せずに
0455デフォルトの名無しさん
2010/11/16(火) 23:58:250456デフォルトの名無しさん
2010/11/16(火) 23:59:180457デフォルトの名無しさん
2010/11/17(水) 00:00:40Intelだからな
0458デフォルトの名無しさん
2010/11/17(水) 00:04:140459デフォルトの名無しさん
2010/11/17(水) 00:05:520460デフォルトの名無しさん
2010/11/17(水) 00:07:450461デフォルトの名無しさん
2010/11/17(水) 00:09:15outでもできる
0462デフォルトの名無しさん
2010/11/17(水) 00:10:120463デフォルトの名無しさん
2010/11/17(水) 00:12:170464デフォルトの名無しさん
2010/11/17(水) 00:15:470465デフォルトの名無しさん
2010/11/17(水) 00:19:380466デフォルトの名無しさん
2010/11/17(水) 00:20:260467デフォルトの名無しさん
2010/11/17(水) 00:20:41http://codepad.org/3yfY7XhB
0468デフォルトの名無しさん
2010/11/17(水) 00:20:55どっちにしろ質問の意図から外れる。
printf でできるんだから解答は既に出てる。
0469デフォルトの名無しさん
2010/11/17(水) 00:20:59http://msdn.microsoft.com/ja-jp/library/1570wh78(VS.80).aspx
0470デフォルトの名無しさん
2010/11/17(水) 00:22:04まじでwrite()とかout()とか標準関数と思ってたのか。
0471デフォルトの名無しさん
2010/11/17(水) 00:22:070472デフォルトの名無しさん
2010/11/17(水) 00:24:45入門書 適当な本
実用書 Cリファレンスマニュアル コーディングルール本 セキュアプログラミング本
教養書 K&R
娯楽書 エキスパートC
0473デフォルトの名無しさん
2010/11/17(水) 00:25:110474デフォルトの名無しさん
2010/11/17(水) 00:28:26いられるんだろ。
入門書とか読まないで、ネットとかで偏ったおぼえ方でもしたのかね。
0475デフォルトの名無しさん
2010/11/17(水) 00:28:27設問を満4回は熟読して読み直せ。
0476デフォルトの名無しさん
2010/11/17(水) 00:29:110477デフォルトの名無しさん
2010/11/17(水) 00:30:220478デフォルトの名無しさん
2010/11/17(水) 00:31:330479デフォルトの名無しさん
2010/11/17(水) 00:32:44満4回は熟読して読み直せ。
0480デフォルトの名無しさん
2010/11/17(水) 00:34:24満4回は熟読して読み直せ。
0481デフォルトの名無しさん
2010/11/17(水) 00:35:14満4回は熟読して読み直せ。
0482デフォルトの名無しさん
2010/11/17(水) 00:35:35満4回は熟読して読み直せ。
0483デフォルトの名無しさん
2010/11/17(水) 00:35:52「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ
↓
神の誕生
0484デフォルトの名無しさん
2010/11/17(水) 00:36:06満4回は熟読して読み直せ。
0485デフォルトの名無しさん
2010/11/17(水) 00:36:56満4回は熟読して読み直せ。
0486デフォルトの名無しさん
2010/11/17(水) 00:37:26満4回は熟読して読み直せ。
0487デフォルトの名無しさん
2010/11/17(水) 00:37:460488デフォルトの名無しさん
2010/11/17(水) 00:38:49最後の本はいらねーだろ。
0489デフォルトの名無しさん
2010/11/17(水) 00:39:310490デフォルトの名無しさん
2010/11/17(水) 00:39:55これ見たときから、>>483がくるんじゃねーかって思ったんだよ。
0491デフォルトの名無しさん
2010/11/17(水) 00:40:44で?
0492デフォルトの名無しさん
2010/11/17(水) 00:42:270493デフォルトの名無しさん
2010/11/17(水) 00:44:48なんで普通に説明したら簡単な事をああも煩わしく書けるかね。
0494デフォルトの名無しさん
2010/11/17(水) 00:47:47満4回は熟読して読み直せ。
0495デフォルトの名無しさん
2010/11/17(水) 00:51:06コピペしすぎだろって遠まわしに言ってるんだよ。言わせんなよ。
0496デフォルトの名無しさん
2010/11/17(水) 00:51:53で?
0497デフォルトの名無しさん
2010/11/17(水) 00:53:190498デフォルトの名無しさん
2010/11/17(水) 00:53:58ぺろぺろ
0499デフォルトの名無しさん
2010/11/17(水) 00:55:49人口が多いから、変なのもいっぱいいる。
0500デフォルトの名無しさん
2010/11/17(水) 00:56:570501デフォルトの名無しさん
2010/11/17(水) 01:01:090502デフォルトの名無しさん
2010/11/17(水) 01:03:050503デフォルトの名無しさん
2010/11/17(水) 01:06:22そんなもんどっちでもいいよ。
0504デフォルトの名無しさん
2010/11/17(水) 01:08:05483にしとけ。
0505デフォルトの名無しさん
2010/11/17(水) 01:10:050506デフォルトの名無しさん
2010/11/17(水) 01:11:27なんだ、やっぱ下の本の宣伝でコピペしまくってるのか。
エキスパートCとか名著が腐れるから、セットでコピペすんな。
単独でやれ。
0507デフォルトの名無しさん
2010/11/17(水) 01:16:22宣伝乙
0508デフォルトの名無しさん
2010/11/17(水) 01:17:27http://studiokingyo.fc2web.com/
0509デフォルトの名無しさん
2010/11/17(水) 01:17:580510デフォルトの名無しさん
2010/11/17(水) 01:20:06すげーなおい未発見のC言語高度関数実装まで揃っている
0511デフォルトの名無しさん
2010/11/17(水) 01:23:37なつかしい感じのサイトだな。
ブログの隆盛でなくなったもんな。
こういうぱっと見で作者のセンスが伝わってくるデザイン。
0512デフォルトの名無しさん
2010/11/17(水) 01:23:52(´・ω・`) n
 ̄ \ ( E)
フ アフィ /ヽ ヽ_//
0513デフォルトの名無しさん
2010/11/17(水) 01:31:24確かにブログの乱立で役に立たない情報がブログの多すぎだが>>508は昔ながらの高度情報を取り揃えているな
言いたいことが分かるぞ同意ですね、分かります。
0514デフォルトの名無しさん
2010/11/17(水) 01:38:440515デフォルトの名無しさん
2010/11/17(水) 01:42:23いや、高度情報がなきゃCodeを書くにも材料が足りだろ。
0516デフォルトの名無しさん
2010/11/17(水) 01:45:41言葉知ってても、使えなきゃ意味ないし...
0517デフォルトの名無しさん
2010/11/17(水) 01:47:250518デフォルトの名無しさん
2010/11/17(水) 01:49:47プログラミングには役立たない
0519デフォルトの名無しさん
2010/11/17(水) 01:52:28>>508には基礎の高度情報もあるよ
0520410
2010/11/17(水) 01:55:54ご指摘の通りまだ本当に学び始めたばかりで関数も習っていません
sum += prime(i)に関しては>>411の方のレスで理解出来ました。
int prime(int n)というのはint prime , nという意味ではないのですよね
すみませんが教えてくださる方はいらっしゃいますか?
後>>412は自分でありません
0521デフォルトの名無しさん
2010/11/17(水) 01:56:490522デフォルトの名無しさん
2010/11/17(水) 01:59:180523デフォルトの名無しさん
2010/11/17(水) 02:02:29君はまったく自分で学習をしようとしていない
それが許されるのは小学生の中学年あたりまでだ
人に聞く前に自分で調べる努力をしない奴にタダで教える奴はキチガイだよ?
0524デフォルトの名無しさん
2010/11/17(水) 02:10:43関数を習っていないということなら、
まず関数を習うというか自習するのが先決だろう
文法すら分からないんじゃ、本質的な部分の理解にも支障が出る
0525410
2010/11/17(水) 02:22:120526デフォルトの名無しさん
2010/11/17(水) 02:31:42あの、そんな回答は期待していないのですが……
誰か、この人たちに代わって教えてください
0527デフォルトの名無しさん
2010/11/17(水) 02:34:390528デフォルトの名無しさん
2010/11/17(水) 02:37:58ここで聞いてこい
http://hibari.2ch.net/test/read.cgi/tech/1289715349/
0529デフォルトの名無しさん
2010/11/17(水) 02:39:560530デフォルトの名無しさん
2010/11/17(水) 10:45:350531デフォルトの名無しさん
2010/11/17(水) 14:11:32死ね
0532デフォルトの名無しさん
2010/11/17(水) 15:35:51C言語 関数 でググればいいんじゃねーの?
>それが許されるのは小学生の中学年あたりまでだ
523の言うとおりでそれ以上になると自分で解決するか友人に聞くしかないっしょ
>ご指摘の通りまだ本当に学び始めたばかりで関数も習っていません
学生なのであれば先生に聞けば良い
人に聞くことを覚えるのも大切だよ
別にここで聞いてもいいじゃんって話もあるけど、教えてもらう姿勢ってもの学ばないといけないからね
0533デフォルトの名無しさん
2010/11/17(水) 17:16:500534デフォルトの名無しさん
2010/11/17(水) 17:22:09int main() {
printf("パステルカラー\n");
}
0535デフォルトの名無しさん
2010/11/17(水) 17:24:240点
0536デフォルトの名無しさん
2010/11/17(水) 18:33:50ヒントくれ
0537デフォルトの名無しさん
2010/11/17(水) 19:14:090538デフォルトの名無しさん
2010/11/17(水) 20:05:49とりあえずOSとコンパイラの名前を教えてくれ。
0539デフォルトの名無しさん
2010/11/17(水) 20:29:14printf("");
printf("");
return 0;
}
を
void test1();
void test2();
int main(){
test1();
test2();
}
void test1(){
printf("");
}
void test2(){
printf("");
}
のようにすると、プログラムは遅くなりますか?
よろしくお願いします。
0540デフォルトの名無しさん
2010/11/17(水) 20:33:02入門編何てタイトルにいれんなよクズ。
0541デフォルトの名無しさん
2010/11/17(水) 20:35:52門をくぐる前に準備が必要なんだよ
0542デフォルトの名無しさん
2010/11/17(水) 20:39:01殺すぞ、分かりやすく教えてくれよ、手とり足とり教えてくれ。
0543デフォルトの名無しさん
2010/11/17(水) 20:40:07画像処理でパステル調にしたいんですができないんです
0544デフォルトの名無しさん
2010/11/17(水) 20:42:10ではまず性別と年齢を聞こうかw
0545デフォルトの名無しさん
2010/11/17(水) 20:43:11そらぁ関数コールのコストはかかるから遅くなる
微々たる差だけどループの中で何万回もコールするなら気にしなきゃならない場合も有るだろうな
0546デフォルトの名無しさん
2010/11/17(水) 20:44:490547デフォルトの名無しさん
2010/11/17(水) 20:45:14こっちで質問した方がいいかもな
http://hibari.2ch.net/test/read.cgi/tech/1247100724/
0548デフォルトの名無しさん
2010/11/17(水) 20:45:31殺すぞてめぇ、気安くしゃべりかけんな。
お前らの話は専門用語並べてるだけなんだよ
0549デフォルトの名無しさん
2010/11/17(水) 20:50:440550542=548
2010/11/17(水) 21:06:23でもまじで君らのレスはわかりにくいんだよ。
分からない人の気持ちは分かる人は分からないんだよな。
0551デフォルトの名無しさん
2010/11/17(水) 21:11:250552デフォルトの名無しさん
2010/11/17(水) 21:13:310553Perl忍者 ◆M5ZWRnXOj6
2010/11/17(水) 21:15:02殺人予告で通報しますねwwwwwwwwwwwwwwwwww
ねえ「君逮捕だよwww
クソがクソ言語板でわめいてんじゃねえよがいきちw
Cやってるやつはカスばっかりw
ほんとカスw
クソなPICとかやってろよwハンダゴテかってw
五味みたいな成果物だされてwおわってるじゃんw
Cやってるやつはバカだよw
実用性にかけるごみみたいなも作品ばっかりw
とくに動画プレイヤーつくってるばかなw
死ねw
0554デフォルトの名無しさん
2010/11/17(水) 21:15:480555Perl忍者 ◆M5ZWRnXOj6
2010/11/17(水) 21:21:35図星で必死にすげえくいついてきたページャーばかだとおもうけどw
まだこのスレにいんの?w
カスバカはてなのクソバカインターンwwwwwwwwwwwwwwwwwwwwwwwww
0556デフォルトの名無しさん
2010/11/17(水) 21:39:24さすがCスレ、キチガイが続々と湧いてくるな
0557Perl忍者 ◆M5ZWRnXOj6
2010/11/17(水) 21:44:16はてなのバカイーンタンセイ君w
糞なページャー処理してるってほんとですか?w
0558デフォルトの名無しさん
2010/11/17(水) 21:47:56ソースが見やすくなるので関数にしたいと思ってました。
ひとまず関数で作って、そのあと関数コールしない形と比較してみようと想います。
ありがとうございました。
0559デフォルトの名無しさん
2010/11/17(水) 22:42:55>>543
こういうのがお望みですか?
http://codepad.org/6rtXABMl
ビットマップファイルをパステル調に変換します。
第1引数 入力 .bmp ファイル名
第2引数 出力 .bmp ファイル名
パステル調化のアルゴリズムはもうちょっと工夫したほうがいいかもしれません。
(現状、単に色あせた感じになっているだけ、という気が‥‥‥)
0561デフォルトの名無しさん
2010/11/17(水) 23:26:130562デフォルトの名無しさん
2010/11/17(水) 23:32:12ここ来るならせめてコテハン外せよ
0563デフォルトの名無しさん
2010/11/17(水) 23:35:470564デフォルトの名無しさん
2010/11/17(水) 23:38:240565デフォルトの名無しさん
2010/11/17(水) 23:44:040566デフォルトの名無しさん
2010/11/17(水) 23:56:31http://hibari.2ch.net/test/read.cgi/tech/1247100724/815-816
0567デフォルトの名無しさん
2010/11/18(木) 01:12:59コテハン忍者がキモイのは分かったが
0568デフォルトの名無しさん
2010/11/18(木) 01:17:430569デフォルトの名無しさん
2010/11/18(木) 01:23:380570デフォルトの名無しさん
2010/11/18(木) 01:54:42main()
{
char *p;
char a;
char *b;
char str[56];
gets(str);
p=(&str[2]);
puts(p);
a=str[2];
b=&a;
puts(b);
}
プログラムを実行したとき二番目のputs()に"(全角文字)("が
余計に表示されてしまいます
なんでですか?
0571デフォルトの名無しさん
2010/11/18(木) 02:00:40文字列の終端 '\0' がないから
0572デフォルトの名無しさん
2010/11/18(木) 02:04:420573デフォルトの名無しさん
2010/11/18(木) 02:11:260574デフォルトの名無しさん
2010/11/18(木) 02:12:12putsは'\0'にぶつかるまで表示し続けるからね。
0575デフォルトの名無しさん
2010/11/18(木) 02:14:58\0 が現れるまでのメモリの内容すべて
0576デフォルトの名無しさん
2010/11/18(木) 02:19:16main()
{
char *p;
char a[2];
char *b;
char str[56];
gets(str);
p=(&str[2]);
puts(p);
a={str[2],'\0'};
b=&a;
puts(b);
}
エラーでした 直してくれませぬか
0577デフォルトの名無しさん
2010/11/18(木) 02:19:51a[1] = '\0';
0578デフォルトの名無しさん
2010/11/18(木) 03:38:310579デフォルトの名無しさん
2010/11/18(木) 05:11:160580デフォルトの名無しさん
2010/11/18(木) 10:01:180581デフォルトの名無しさん
2010/11/18(木) 14:52:04C言語をやってるのですがさっぱりわかりません。わかる方いればお願いします。
最初にnの値を入力して、各入力を行った後、それぞれの目的を実行する以下のプログラムを必ず配列を用いて作成しなさい。ただし、nの大きさは100を超えないものとする
n次元ベクトルの要素を入力して、ベクトルの長さを求めるプログラム
(2,3)のベクトルの長さは?
最初に行列の次元nの値を入力し、配列を使って次の計算をするプログラムを作りなさい。ただし、nは100以内で、n次の正方行列とする。
行列AとBを入力すると、その足し算A+Bを計算するプログラム
できるかたいればお願いします
0582デフォルトの名無しさん
2010/11/18(木) 15:06:040583デフォルトの名無しさん
2010/11/18(木) 15:31:56#include <math.h>
int main(void)
{
double a[100], s;
int n, i;
printf("n: ");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
printf("ベクトルの第%d成分を入力せよ: ", i + 1);
scanf("%lf", &a[i]);
}
s = 0.0;
for(i = 0; i < n; i++)
{
s += a[i] * a[i];
}
printf("(");
for(i = 0; i < n; i++)
{
printf("%f", a[i]);
}
printf("の長さは %f です。\n", sqrt(s));
return 0;
}
0584デフォルトの名無しさん
2010/11/18(木) 15:46:150585デフォルトの名無しさん
2010/11/18(木) 15:51:540586デフォルトの名無しさん
2010/11/18(木) 15:57:290587デフォルトの名無しさん
2010/11/18(木) 16:00:140588デフォルトの名無しさん
2010/11/18(木) 16:04:200589たせばいいんでしたっけ?(うろおぼえ
2010/11/18(木) 16:34:49#include <stdlib.h>
struct MAT { float a[100*100]; int n; };
void init_MAT(struct MAT* m, int n) {
float* p = m->a; int i=100; while(i-->0){*p++=0;}
m->n = n;
}
void input_MAT(struct MAT* m) {
float* p = m->a; int i = m->n * m->n; while(i-->0) {scanf("%f",p++);}
}
void print_MAT(struct MAT* m) {
float* p = m->a; int i = m->n * m->n; while(i-->0) {printf("%8.8f\t", *p++);} putchar('\n');
}
void add_MAT(struct MAT* dst, struct MAT* src1, struct MAT* src2) {
float* a = src1->a; float* b = src2->a; float* c = dst->a; int i = dst->n * dst->n; while(i-->0) {*c++ = *a++ + *b++;}
}
void main() {
int n; scanf("%d",&n);
struct MAT m0, m1, m2; init_MAT(&m0,n); init_MAT(&m1,n); init_MAT(&m2,n);
input_MAT(&m0); print_MAT(&m0);
input_MAT(&m1); print_MAT(&m1);
add_MAT(&m2, &m0, &m1); print_MAT(&m2);
}
0590デフォルトの名無しさん
2010/11/18(木) 16:46:480591デフォルトの名無しさん
2010/11/18(木) 17:58:190592Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 18:03:28こんなのCできるうちにはいらねってw
0593デフォルトの名無しさん
2010/11/18(木) 20:51:260594Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 21:17:59w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
Cなんてネットやってるやつが遊ぶ必要ないからw(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)w
w(核爆笑)wvw(核爆笑)wvw(核爆笑)wっっvvw(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)wvw(核爆笑)wvw(核爆笑)w
vw(核爆笑)ww(核爆笑)w
0595デフォルトの名無しさん
2010/11/18(木) 21:25:110596Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 21:28:38基礎教養のウンコード乙
0597Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 21:32:010598デフォルトの名無しさん
2010/11/18(木) 21:55:040599デフォルトの名無しさん
2010/11/18(木) 21:58:24達観してるなPerl忍者君
0600デフォルトの名無しさん
2010/11/18(木) 22:00:130601デフォルトの名無しさん
2010/11/18(木) 22:01:000602デフォルトの名無しさん
2010/11/18(木) 22:54:440603デフォルトの名無しさん
2010/11/18(木) 22:55:120604Perl忍者 ◆vx6KgJyjvE
2010/11/18(木) 23:32:100605デフォルトの名無しさん
2010/11/18(木) 23:38:20http://dada.perl.it/shootout/
0606Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 23:44:37暁に喧嘩うる下忍乙
10名の忍で構成されている謎の小組織
かつて,マツモトヒロユキも所属していた。その後メンバーは倒されていき構成人数は激減した。各国の抜け忍たちで構成され
構成員のほとんどが S 級 犯 罪 者 である
0607Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 23:45:52前に一緒にツーマンセル組んでいて
行動が不審だったから 暗殺命令がでてたんだよ
そして潰そうとしたら逃げられたよ
まだどっかに潜伏してるみたいだが
0608Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 23:49:53赤い国を作ってるらしいな
よくしらんが
俺のチーム入りたかったら
Skype: perlkageにコンタクトおくれ
0609Perl忍者 ◆M5ZWRnXOj6
2010/11/19(金) 00:26:28てえめらカスはこれねえか?
0610954
2010/11/19(金) 00:27:120611Perl忍者 ◆M5ZWRnXOj6
2010/11/19(金) 00:31:042chっていうグループSkypeつくってまってんだけどw
0612Perl忍者 ◆vx6KgJyjvE
2010/11/19(金) 00:33:240613599
2010/11/19(金) 00:33:59597で
>C言語なら俺に聞けにくるやつはカスしかいない(笑)
この発言をした時に自分でカスだと認めたってことなんだと思う。
それ以上でもそれ以下でもない
0614Perl忍者 ◆M5ZWRnXOj6
2010/11/19(金) 00:34:14wwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwww
早くSkypeこいよ
perlkage
もう一人きてる 2chの最強グループをつくるために
人材をあつめる
0616Perl忍者 ◆M5ZWRnXOj6
2010/11/19(金) 00:35:38びびってこれねえの?
0618Perl忍者 ◆M5ZWRnXOj6
2010/11/19(金) 00:41:54休戦
0619Perl忍者 ◆YNS0qIRC9I
2010/11/19(金) 00:42:340620Perl忍者
2010/11/19(金) 00:46:120621デフォルトの名無しさん
2010/11/19(金) 01:55:00printfでの出力がうまくいきません
エラーはでませんが予想と違う動きになります
ちなみに一文字だけ出力させようとしています
0622デフォルトの名無しさん
2010/11/19(金) 01:59:40もしかして \0 と /0 のうち間違い?
0623デフォルトの名無しさん
2010/11/19(金) 01:59:550624デフォルトの名無しさん
2010/11/19(金) 02:00:36○ '\0'
0625デフォルトの名無しさん
2010/11/19(金) 02:02:55ありがとうございます
0626デフォルトの名無しさん
2010/11/19(金) 04:59:49yen mark
back slash
0627デフォルトの名無しさん
2010/11/19(金) 06:43:250628デフォルトの名無しさん
2010/11/19(金) 11:44:130629560
2010/11/19(金) 12:28:22>>543
http://hibari.2ch.net/test/read.cgi/tech/1289715349/43
0630デフォルトの名無しさん
2010/11/19(金) 14:01:140631デフォルトの名無しさん
2010/11/19(金) 15:15:00#include "bmp.h"
int main ( void )
{
static BMP bitmap1;
int i, j;
readBMP("input.bmp", &bitmap1);
printf("横幅%d,縦幅%d\n", bitmap1.width, bitmap1.height);
for (j = 0; j < bitmap1.height; j++) {
for (i = 0; i < bitmap1.width; i++) {
bitmap1.image[j][i].r = 255;
}
}
writeBMP("output.bmp", &bitmap1);
return 0;
}
何度もすいません、OSはウィンドウズでコンパイラはBCCデベロッパーです。
これでパステルカラーを作りたいんですがお願いします
0632デフォルトの名無しさん
2010/11/19(金) 15:17:260633デフォルトの名無しさん
2010/11/19(金) 15:17:500634デフォルトの名無しさん
2010/11/19(金) 15:26:13bmp.hはこれでお願いします
0635デフォルトの名無しさん
2010/11/19(金) 15:30:090636デフォルトの名無しさん
2010/11/19(金) 15:30:490637デフォルトの名無しさん
2010/11/19(金) 15:35:450638デフォルトの名無しさん
2010/11/19(金) 15:35:510639デフォルトの名無しさん
2010/11/19(金) 15:39:300640デフォルトの名無しさん
2010/11/19(金) 16:02:56RGB→HSL から明度だけ底上げ→RGB なのか 減色なのか
0641デフォルトの名無しさん
2010/11/19(金) 16:16:100642デフォルトの名無しさん
2010/11/19(金) 16:16:36信じられないんですけど
0643デフォルトの名無しさん
2010/11/19(金) 16:18:260644デフォルトの名無しさん
2010/11/19(金) 16:29:12だよな。
0645デフォルトの名無しさん
2010/11/19(金) 16:34:15なんで、static BMP bitmap1;
なの?
そして、int i, j;
には、なんでstaticないの?
教えてください
0647デフォルトの名無しさん
2010/11/19(金) 16:39:40bmp.hを読むことができないので、なんともエスパーするしかありませんが、
もしかして struct BMP bitmap1; のかきまちがいなんじゃないかなぁ〜〜…っておもいました。ちがってたらごめんなさい(^_^/
0648デフォルトの名無しさん
2010/11/19(金) 16:41:20bitmap1.image[j][i].g = 100;
bitmap1.image[j][i].b = 100;
0649デフォルトの名無しさん
2010/11/19(金) 16:44:36BMPが最大サイズ決め打ちの二次元配列持ってるんだろう多分
0650デフォルトの名無しさん
2010/11/19(金) 16:55:54みたいにして使用するメモリ領域を動的に確保できるようにはなってないの?
0651デフォルトの名無しさん
2010/11/19(金) 17:02:460652デフォルトの名無しさん
2010/11/19(金) 17:25:560653デフォルトの名無しさん
2010/11/19(金) 17:38:360654デフォルトの名無しさん
2010/11/19(金) 17:39:000655デフォルトの名無しさん
2010/11/19(金) 17:46:180656599
2010/11/19(金) 17:49:39びびってこれねえの?
ってことなのでSkype繋いでみました。
会話ログは「Perlで2ch系まとめサイトを作ろう」にあります。
怖い人ですねぇ
0657デフォルトの名無しさん
2010/11/19(金) 18:04:38BMPファイル → Cの配列
BMPファイル ← Cの配列
と交互に変換できる関数をまず誰かが用意してくれたらいいとおもう。
配列は
struct PIXEL {
unsigned char r;
unsigned char g;
unsigned char b;
};
struct PIXEL a[bmp_width * bmp_height];
0658デフォルトの名無しさん
2010/11/19(金) 18:17:220659デフォルトの名無しさん
2010/11/19(金) 18:26:57windowsビットマップとOS/2ビットマップは両対応なのか
0660デフォルトの名無しさん
2010/11/19(金) 18:30:10300色あるっぽいから
int Pastel[300];
16進で全部埋めて、作ってやればいいのかね
質問の意味が良く分からないんでなんとも言えないんだが
0661デフォルトの名無しさん
2010/11/19(金) 18:40:350662デフォルトの名無しさん
2010/11/19(金) 18:46:410663デフォルトの名無しさん
2010/11/19(金) 18:50:42だから相当のものを用意してるんでOKでしょ
パステル調 とか セピア調 とか 画像変換の話と違うぜ
0664デフォルトの名無しさん
2010/11/19(金) 19:10:00>>631のプログラムから
読み込んだinput.bmpをパステルカラー調に変換してoutput.bmpに書き込む
んだって分るだろ。
つまり、パステルカラー調に変換するフィルタを作ってってこと。
断片から全体像を推察できないか?
0665デフォルトの名無しさん
2010/11/19(金) 19:11:590666デフォルトの名無しさん
2010/11/19(金) 19:12:37【◆QZaw55cn4c 隔離】C/C++の問題を片付けます のスレに bmp をパステルカラーに変換するプログラムが上がってるよ
残念なことにパステルカラーに変換する部分は上手く出来てないけど、リードしてライトする機能はちゃんと動く
task_convert() が変換部分だからそこだけ実装すれば良いんじゃないかな
unsigned char dataR[bmp_width * bmp_height];
unsigned char dataG[bmp_width * bmp_height];
unsigned char dataB[bmp_width * bmp_height];
の形だけど大きな問題は無いだろ
0667デフォルトの名無しさん
2010/11/19(金) 19:16:530668デフォルトの名無しさん
2010/11/19(金) 19:39:03struct PIXEL {
unsigned char r;
unsigned char g;
unsigned char b;
};
struct BMP {
int w;
int h;
struct PIXEL p[30000 * 30000];
};
// file_name のBMPファイル(24ビット無圧縮)を読む。
extern void read_BMP(struct BMP* a, char* file_name);
// file_name のBMPファイル(24ビット無圧縮)として書く。
extern void write_BMP(struct BMP* a, char* file_name);
こんなのを誰かが書いてくれるといいとおもう。
エラーとか無視でいいから、なるべく短いコードでおねがいしますw
0669デフォルトの名無しさん
2010/11/19(金) 19:40:39自分で書けよ
0671デフォルトの名無しさん
2010/11/19(金) 19:47:140672デフォルトの名無しさん
2010/11/19(金) 19:50:35sizeof(struct BMP) を答えよ
0673デフォルトの名無しさん
2010/11/19(金) 19:55:34いまのパソコンってメモリー4ギガくらい普通だし、ダイジョブダヨ!! バンテリンあるよ!! ぜったい有利だよ!!
0674デフォルトの名無しさん
2010/11/19(金) 19:56:460675560
2010/11/19(金) 20:11:00修正しました。
http://hibari.2ch.net/test/read.cgi/tech/1289715349/53
0676Perl忍者 ◆YNS0qIRC9I
2010/11/19(金) 21:26:000677Perl忍者 ◆35I122rnS2
2010/11/19(金) 21:39:520678Perl忍者
2010/11/20(土) 00:38:580679デフォルトの名無しさん
2010/11/20(土) 02:15:49>>675はよく見てないけどやってることは大体同じ臭い
パステル変換っていうかHSVに変換して白にちょっと近づけてるだけ
だれか上手い変換式考えてみて
http://codepad.org/YwgJpPli
0680デフォルトの名無しさん
2010/11/20(土) 02:22:300681デフォルトの名無しさん
2010/11/20(土) 02:37:240682デフォルトの名無しさん
2010/11/20(土) 02:40:31センス不足と言うより経験不足、学生だと思うよ
0683デフォルトの名無しさん
2010/11/20(土) 04:35:130684デフォルトの名無しさん
2010/11/20(土) 07:55:31#include <stdlib.h>
#define T typedef
T unsigned long ul; T unsigned short us; T unsigned char uc; T double D;
T struct{uc r;uc g;uc b;}P;T struct{long w;long h;P p[4096*4096];}B;
T struct{ul f_sz;ul pd0;ul p_ofs;ul bhs;long w;long h;us pd1;us pl;us bit;ul cmp;}H;
void r_B(B* a,char* f){
FILE* fp=fopen(f,"rb");H hd;fseek(fp,2,SEEK_SET);fread(&hd,sizeof(H),1,fp);
a->w=hd.w;a->h=hd.h;ul p_ofs=hd.p_ofs;int q=4-(a->w%4);q=(q==4)?0:q;
P* p;int j=a->h;while(j-->0){
p=a->p+(a->w*3)*j;fseek(fp,p_ofs+((a->w*3)+q)*j,SEEK_SET);fread(p,sizeof(P),a->w*3,fp);
}
}
void w_B(B* a,char* f){
FILE* fp=fopen(f,"wb");fseek(fp,0,SEEK_SET);uc BM[2]="BM"; fwrite(BM,sizeof(uc),2,fp);
int q=4-(a->w%4);q=(q==4)?0:q;ul p_ofs=54;
H hd={p_ofs+((a->w*3)+q)*a->h,0,p_ofs,40,a->w,a->h,1,24,0};fseek(fp,2,SEEK_SET);fwrite(&hd,sizeof(H),1,fp);
P* p;int j=a->h;while(j-->0){
p=a->p+(a->w*3)*j;fseek(fp, p_ofs+((a->w*3)+q)*j,SEEK_SET);fwrite(p,sizeof(P),a->w*3,fp);
}
}
void p_P(P* p){
D o=1.2;D q=0.5;D s=0.2;D r=p->r,g=p->g,b=p->b;r/=255;g/=255;b/=255;
D* u=(r>g)?((r>b)?&r:&b):((g>b)?&g:&b);D* d=(r<g)?((r<b)?&r:&b):((g<b)?&g:&b);
D _u=*u,_d=*d;r+=(1-_u)*((_u-_d+s)*o);g+=(1-_u)*((_u-_d+s)*o);b+=(1-_u)*((_u-_d+s)*o);
_u=*u;_d=*d;r+=(_u-r)*((_u-_d+s)*q);g+=(_u-g)*((_u-_d+s)*q);b+=(_u-b)*((_u-_d+s)*q);
p->r=(r>=1)?255:r*255;p->g=(g>=1)?255:g*255;p->b=(b>=1)?255:b*255;
}
void main(int u,char** v){
B* a=(B*)malloc(sizeof(B));r_B(a,v[1]);P* p=a->p;int i=a->w*3*a->h;while(i-->0){p_P(p++);}w_B(a, "a.bmp");
}
0685684
2010/11/20(土) 08:02:49あえて明示的なRGB←→HSV変換を経ないでやってみるアプローチを試してみようと思いました。
ほぼ、でたらめやってます。数式に理論的根拠はあんまり無いですw
<つかいかた>
実行ファイル名 画像.bmp
変換結果は a.bmp というファイル名で出力されます。
0686デフォルトの名無しさん
2010/11/20(土) 10:13:59何も邪悪なコードにせんでも...
codepad あたりに張ってくれれば見る気になるのに
0687デフォルトの名無しさん
2010/11/20(土) 10:20:58ビットマップの一行を構成するピクセルのバイト数が 4 の倍数でないときの処理が必要ではないでしょうか?
あと、コンパイルする環境を教えてください。(bcc32 でいいですか?)
こちらでは実行するとだんまりになってしまいます。
0688デフォルトの名無しさん
2010/11/20(土) 10:44:230 division を回避すれば、bcc32 でコンパイルして正常に動作することを確認しました。
>h = 1.0/(double)(max - min) ;
テストに使用した画像は、Windows XP のマイドキュメントの下にあるサンプル画像です。
0689デフォルトの名無しさん
2010/11/20(土) 11:50:38他にどんなのがあって何が便利で何ができるんでしょうか?
あとstdlib.hとstring.hくらいしか使ったことないです
/usr/include以下にあるのは知ってるけどこれらのファイルの中身見ても意味がわからないです・・・
0690デフォルトの名無しさん
2010/11/20(土) 11:53:540691デフォルトの名無しさん
2010/11/20(土) 11:54:35http://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96C%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA
0692Perl忍者
2010/11/20(土) 14:47:36Perl最強だぜ!
0693Perlキチガイ
2010/11/20(土) 15:13:570694デフォルトの名無しさん
2010/11/20(土) 15:19:34printf("1");
printf("2");
printf("3");
をエクセルの1行目のAセルに1、1行目のBセルに2、1行目のCセルに3、
となるようにリダイレクトしたいんだけどどうやってやるか分かる?
0695デフォルトの名無しさん
2010/11/20(土) 15:24:13csv で書き出すなら
printf("1,2,3");
でおk
0696デフォルトの名無しさん
2010/11/20(土) 15:40:41サンクス。
CSVか。
0697デフォルトの名無しさん
2010/11/20(土) 16:17:300698デフォルトの名無しさん
2010/11/20(土) 16:26:000699デフォルトの名無しさん
2010/11/20(土) 19:23:14じゃダメなのかな・・・
0700デフォルトの名無しさん
2010/11/20(土) 19:39:480701デフォルトの名無しさん
2010/11/20(土) 21:45:380702デフォルトの名無しさん
2010/11/20(土) 21:50:120703デフォルトの名無しさん
2010/11/20(土) 21:55:10main()
{
char p[3];
char a;
char b;
char c;
a='a';
b='s';
c='\0';
p=&a;
puts(p);
}
これはなんでエラーなんですか
0704デフォルトの名無しさん
2010/11/20(土) 21:56:47pは定数だから代入できない
0705デフォルトの名無しさん
2010/11/20(土) 21:57:100706デフォルトの名無しさん
2010/11/20(土) 21:57:200707デフォルトの名無しさん
2010/11/20(土) 22:00:530708デフォルトの名無しさん
2010/11/20(土) 22:03:53{
char p[3];
char *pp;
p[0]='a';
p[1]='s';
p[2]='\0';
pp=p;
puts(pp);
}
ならわかるが
0709デフォルトの名無しさん
2010/11/20(土) 22:18:41main()
{
char p[3];
char c[3];
p[0]='a';
p[1]='s';
p[2]='\0';
c=p;
puts(c);
}
これもエラーです
0710Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 22:19:180711デフォルトの名無しさん
2010/11/20(土) 22:19:33だから配列名は定数だからエラーだって
変数じゃないか
0712デフォルトの名無しさん
2010/11/20(土) 22:20:34#include<stdio.h>
#include<string.h>
main()
{
char p[3];
char c[3];
p[0]='a';
p[1]='s';
p[2]='\0';
strcpy(c, p);;
puts(c);
}
書くならこうしなければならない
0713デフォルトの名無しさん
2010/11/20(土) 22:23:01あなたは普段生活していて日本語に魅力を感じますか?
つまりはそういうことです。
0714デフォルトの名無しさん
2010/11/20(土) 22:33:00main()
{
char p[3];
char c[3];
p[0]='a';
p[1]='s';
p[2]='\0';
p=p+1;
puts(p);
}
なるほど代入できない
なんとなくわかったよ
0715デフォルトの名無しさん
2010/11/20(土) 22:37:37char *b="abc";
a[0] = 0; /* OK */
b[0] = 0; /* NG */
a = (char*)0; /* NG */
b = (char*)0; /* OK */
0716デフォルトの名無しさん
2010/11/20(土) 22:38:190717デフォルトの名無しさん
2010/11/20(土) 22:52:34PC側に偏った考え方を学べる。(アセンブラやっても構わない)
Cを分かっているかは他の言語をやる上でも基盤になっていくと思うよ。
脳内にメモリマップしたりするしな
0718デフォルトの名無しさん
2010/11/20(土) 23:20:22main()
{
char c[6][9]=
{
"baas",
"saaa",
"daad"
};
char **a;
char *b;
**a=(c[0][2]);
b=**a;
puts(b);
}
またまたエラーです なんでですかね
0719Perl忍者 ◆35I122rnS2
2010/11/20(土) 23:27:290720デフォルトの名無しさん
2010/11/20(土) 23:32:13すいません 解決しました
#include<stdio.h>
main()
{
char c[6][9]=
{
"baas",
"saaa",
"daad"
};
char *a;
*a=(c[0][2]);
puts(a);
}
0721デフォルトの名無しさん
2010/11/20(土) 23:32:590722デフォルトの名無しさん
2010/11/20(土) 23:34:00718とかスルーだな。712で書かれたことを全く理解してない
0723デフォルトの名無しさん
2010/11/20(土) 23:36:050724Perl忍者 ◇35I122rnS2
2010/11/20(土) 23:38:44Perl最強だぜ!
0725デフォルトの名無しさん
2010/11/20(土) 23:40:390726デフォルトの名無しさん
2010/11/20(土) 23:41:46Cは書きやすし、読みたかし。
0727デフォルトの名無しさん
2010/11/21(日) 00:12:14void t(int t[][9]);
main()
{
char c[6][9]=
{
"baas",
"saaa",
"daad"
};
t(c);
puts(c[0]);
}
void t(int n[][9])
{
*n[0]="hkh";←ここです
}
すいません 二次元配列の関数側からのアクセス方法を教えてください
0728722
2010/11/21(日) 00:14:13初心者がポインタのポインタなんぞ使うもんでもあるまい
警告を発したまでだ、それ以上でもそれ以下でもない。
難解なコード大会があるようにもはやCだかなんだか分からない構文も多々ある
ここは初心者の来るべき場所であって適当な構文を理解すべき場所ではない。
0729デフォルトの名無しさん
2010/11/21(日) 00:21:13ポインタの概念から読み直してこいよ
正直言って同じような質問にうんざりなんだよ
1+1=2って説明しないと分からないのか?
1+2=が分からないんならプログラム辞めることをオススメする
0730デフォルトの名無しさん
2010/11/21(日) 00:24:50疑問に思ったこととか周りに聞く人がいないからここで質問してるわけ
ここならスパッと解答してくれるから重宝してまつ
0731デフォルトの名無しさん
2010/11/21(日) 00:26:38strncpyのほうがいいかも
それと関数tの宣言がおかしい
0732デフォルトの名無しさん
2010/11/21(日) 00:29:440733デフォルトの名無しさん
2010/11/21(日) 00:31:310734デフォルトの名無しさん
2010/11/21(日) 00:37:240735デフォルトの名無しさん
2010/11/21(日) 02:53:32C言語をはじめるきっかけは?
0736デフォルトの名無しさん
2010/11/21(日) 02:55:04I/Oの特集を見て
0737デフォルトの名無しさん
2010/11/21(日) 03:17:09BASICが処理が遅い → Cが速いらしいと訊いて
0738デフォルトの名無しさん
2010/11/21(日) 03:30:23io_bmp.c
BMPファイル ←→ RGB構造体の一次元配列
読み込めるBMPファイルは”24ビット、無圧縮、windows形式”のみです。
http://codepad.org/Wk0mkW6a
http://codepad.org/onSoceGv
pastel.c
第一引数のBMPファイルを読み込んで、パステル調にして a.bmp として出力します。 ”24ビット、無圧縮、windows形式”のみです。
http://codepad.org/5S4m32yy
gcc -o pastel pastel.c io_bmp.c
./pastel aaa.bmp
0739デフォルトの名無しさん
2010/11/21(日) 04:00:04と言う感じで代入してたのですが
ループを出たら全部消えてしまうのですが何故でしょうか?
0740デフォルトの名無しさん
2010/11/21(日) 04:31:430741デフォルトの名無しさん
2010/11/21(日) 07:57:31mallocした配列の長さはポインタからどう求めればいいのでしょうか?
void castDtoF(float *output,double *input){
unsigned int length=sizeof(input)/sizeof(input[0]);
for(unsigned int i=0;i<length;i++){
output[i]=(float)input[i];
}
}
0742デフォルトの名無しさん
2010/11/21(日) 08:01:37長さを別に渡して下さい
0743デフォルトの名無しさん
2010/11/21(日) 08:16:110744デフォルトの名無しさん
2010/11/21(日) 08:21:10やっぱりかー
そうします。
ありがとうございます。
>>743
それはちょっと...
0745デフォルトの名無しさん
2010/11/21(日) 15:49:33いえいえ
0746デフォルトの名無しさん
2010/11/21(日) 16:22:59C言語とかアホしか使わないからなwww
Perl最強だぜ!
0747デフォルトの名無しさん
2010/11/21(日) 16:23:43例えばint a[10][10]などの多次元配列についてです。
この場合、aのポインタの型は(int (*)[10])になり、
*(a+1)==a+1==a[1]が成り立ちますよね?
つまり間接参照先が配列の場合、間接参照の対象が、
その配列の先頭のポインタになっているという解釈でよいのでしょか?
このあたりが、なかなか理解に苦しむんですが・・・
0748デフォルトの名無しさん
2010/11/21(日) 16:26:120749デフォルトの名無しさん
2010/11/21(日) 16:34:450750デフォルトの名無しさん
2010/11/21(日) 16:36:340751デフォルトの名無しさん
2010/11/21(日) 16:46:24>>747で、*(a+1)というのは配列自身
を指している、のであるが、*(a+1)==a+1
などの式の中で用いられた場合には、
間接参照先の値として、*(a+1)がa+1
というポインタに変換される、という理解
でよいのでしょうか?
0752デフォルトの名無しさん
2010/11/21(日) 17:27:050753デフォルトの名無しさん
2010/11/21(日) 17:31:22うひょ〜っふっ
0754デフォルトの名無しさん
2010/11/21(日) 17:35:07何が疑問なのかよく判らない。
0755デフォルトの名無しさん
2010/11/21(日) 17:47:550756デフォルトの名無しさん
2010/11/21(日) 17:54:350757デフォルトの名無しさん
2010/11/21(日) 17:55:220758デフォルトの名無しさん
2010/11/21(日) 17:57:230759デフォルトの名無しさん
2010/11/21(日) 17:58:310760デフォルトの名無しさん
2010/11/21(日) 17:59:07なんかツライことでもあった?死ねよ
0761デフォルトの名無しさん
2010/11/21(日) 17:59:400762デフォルトの名無しさん
2010/11/21(日) 18:00:020763デフォルトの名無しさん
2010/11/21(日) 18:01:120764デフォルトの名無しさん
2010/11/21(日) 18:01:260765デフォルトの名無しさん
2010/11/21(日) 18:02:580766デフォルトの名無しさん
2010/11/21(日) 18:03:18なんかツライことでもあった?死ねよ
0767デフォルトの名無しさん
2010/11/21(日) 18:03:41/ ヽヽ,
/ヘ、 / l |
/,/ \ / | |
| l \ ./ | |
. | | \ / /'⌒(⌒\
| | \ / / _/~___`\ \
/⌒)¨゙\ X //:::::::::::::::ノ、`ヽ\
/ / ~\ \ /. \ /./::::;;-‐‐''"´ |:::::::|. \
/ / .ノ´⌒`ヽヽ / \ / ..|:::| 。 .|:::::::|、 \
/ γ⌒´ \ヽ/ \ ( |:/ ⌒ ⌒ ヽ::::| ) )
. / .// ""´ ⌒\ / ヽ. \', .| -・‐ ‐・- |:::| / /
| .i / ⌒ ⌒ i./) ノ \ | ー'/ _.'ー `|/ /
| i (・ )` ´( ・)/,/ / V \(_人__)ヽ | / こっちも釣れた!
| l (__人_)/ | /. 丶ヽ゚しニ ノ / / こいつはもっとスゴいぞ!
| \ |┬J゚ ノ/ つ、釣れた! 〉 ヽ_ _/ /
ヾ、. `ー' く これは大物のバカに違いない!/
ヽ ヽ / /
ヽ /
0768デフォルトの名無しさん
2010/11/21(日) 18:04:370769デフォルトの名無しさん
2010/11/21(日) 18:05:280770デフォルトの名無しさん
2010/11/21(日) 18:07:160771デフォルトの名無しさん
2010/11/21(日) 18:08:280772デフォルトの名無しさん
2010/11/21(日) 18:09:41なんかツライことでもあった?死ねよ
0773デフォルトの名無しさん
2010/11/21(日) 18:11:53一人そういう奴がいて、そいつが気に入らないレスがあったらこうなるってこと
おそらく自分の考えたレスが馬鹿にされたもんだから、他人のレスのコピペしてるんだろうな
0774デフォルトの名無しさん
2010/11/21(日) 18:12:400775デフォルトの名無しさん
2010/11/21(日) 18:15:110776デフォルトの名無しさん
2010/11/21(日) 18:15:45じゃあ早く死ねよ。
0777デフォルトの名無しさん
2010/11/21(日) 18:16:540778デフォルトの名無しさん
2010/11/21(日) 18:18:34図星突かれて悔しいんか?あ?w
0779デフォルトの名無しさん
2010/11/21(日) 18:18:460780デフォルトの名無しさん
2010/11/21(日) 18:19:39これは恥ずかしい。
0781デフォルトの名無しさん
2010/11/21(日) 18:21:59あ?w
0782デフォルトの名無しさん
2010/11/21(日) 18:22:48そんなに悔しいのか?w
0783デフォルトの名無しさん
2010/11/21(日) 18:23:260784デフォルトの名無しさん
2010/11/21(日) 18:23:570785デフォルトの名無しさん
2010/11/21(日) 18:24:010786デフォルトの名無しさん
2010/11/21(日) 18:24:250787デフォルトの名無しさん
2010/11/21(日) 18:25:130788デフォルトの名無しさん
2010/11/21(日) 18:25:340789デフォルトの名無しさん
2010/11/21(日) 18:26:180790デフォルトの名無しさん
2010/11/21(日) 18:27:050791デフォルトの名無しさん
2010/11/21(日) 18:27:200792デフォルトの名無しさん
2010/11/21(日) 18:27:450793デフォルトの名無しさん
2010/11/21(日) 18:28:050794デフォルトの名無しさん
2010/11/21(日) 18:29:030795デフォルトの名無しさん
2010/11/21(日) 18:29:420796デフォルトの名無しさん
2010/11/21(日) 18:30:01ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!コピペ厨出てこいw
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
0797デフォルトの名無しさん
2010/11/21(日) 18:30:220798デフォルトの名無しさん
2010/11/21(日) 18:31:14どっちもどっちだカス
0799デフォルトの名無しさん
2010/11/21(日) 18:32:04ここぞとばかりにAA貼ってるけど、お前も同類だからね。
0800デフォルトの名無しさん
2010/11/21(日) 18:33:090801デフォルトの名無しさん
2010/11/21(日) 18:33:100802デフォルトの名無しさん
2010/11/21(日) 18:34:05ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!コピペ厨出てこいw
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
800 :デフォルトの名無しさん:2010/11/21(日) 18:33:09
釣れたw
荒らすなボケ
0803デフォルトの名無しさん
2010/11/21(日) 18:34:580804デフォルトの名無しさん
2010/11/21(日) 18:35:230805デフォルトの名無しさん
2010/11/21(日) 18:36:520806デフォルトの名無しさん
2010/11/21(日) 18:38:310807デフォルトの名無しさん
2010/11/21(日) 18:39:480808デフォルトの名無しさん
2010/11/21(日) 18:40:520809デフォルトの名無しさん
2010/11/21(日) 18:43:100810デフォルトの名無しさん
2010/11/21(日) 18:45:560811デフォルトの名無しさん
2010/11/21(日) 18:49:130812デフォルトの名無しさん
2010/11/21(日) 18:50:50ブリーフだろJK
0813デフォルトの名無しさん
2010/11/21(日) 19:00:440814デフォルトの名無しさん
2010/11/21(日) 19:03:19↓ ↓ ↓ ↓ ↓ ↓ ↓
┃:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ∧||∧
∧ ∧ ∧∧ ∧ ∧ ┃:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ( / ⌒ヽ
(・∀・) ∩∀・) (・∀・)∩ ┃:::∧∧:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | | |
/ ⊃⊃ ヽ ⊃ノ /⊃ / ....┃:::('д` )::::::::::::::∧∧::::::::::::::::::::::::::::::::::: ∪ / ノ
〜( ( ヽ )つ 〜( ヽノ ......┃:::と ヽ::::::::: ('д` ):::::::( )⌒ヽ;:::::::::: | ||
(/(/' (/ し^ J ......┃:::⊂,,_UO〜:::(∩∩ ):::::|/.|/uと )〜::::: ∪∪
0815デフォルトの名無しさん
2010/11/21(日) 19:14:510816デフォルトの名無しさん
2010/11/21(日) 21:36:270817デフォルトの名無しさん
2010/11/21(日) 22:27:21飛び石連休だからよもう少し別のAAにしとけ
0818デフォルトの名無しさん
2010/11/21(日) 22:42:390819デフォルトの名無しさん
2010/11/21(日) 22:53:210820デフォルトの名無しさん
2010/11/21(日) 23:01:060821デフォルトの名無しさん
2010/11/21(日) 23:53:550822デフォルトの名無しさん
2010/11/22(月) 23:24:48cygwinではcd C:cprogram/testって入力したらできるんですが
0823Perl忍者 ◆M5ZWRnXOj6
2010/11/22(月) 23:38:080824Perl忍者◇35I122rnS2
2010/11/22(月) 23:41:560826Perl忍者 ◆M5ZWRnXOj6
2010/11/22(月) 23:48:34C言語なんてお前らがやっても
まじいみねーだろ
0827Perl忍者 ◆M5ZWRnXOj6
2010/11/22(月) 23:58:50こ
の
ス
レ
来
た
の
が
間
違
え
だ
っ
た
0828デフォルトの名無しさん
2010/11/23(火) 00:24:390829デフォルトの名無しさん
2010/11/23(火) 00:58:04spr.c
http://codepad.org/U1SDmzt6
24ビット無圧縮ウィンドウズ形式のBMPのみ。
BMPの読み込み書き込みには io_bmp を使ってるので一緒にコンパイルしてリンクしてください。
io_bmp.h
http://codepad.org/Wk0mkW6a
io_bmp.c
http://codepad.org/onSoceGv
コンパイル
gcc -o spr spr.c io_bmp.c
使い方
./spr 24ビットBMP画像.bmp
思い浮かんだんでダメもとで組んだら動いた(笑
本当はちゃんとしたアルゴリズムがあるんだろうけど知らない。
RGBの被視感度補正も考慮するべきなのだろうか?と思った。でもそれをすると色ズレが起こるし?。はて?
0830デフォルトの名無しさん
2010/11/23(火) 03:07:09p*←これはなんですか
0831デフォルトの名無しさん
2010/11/23(火) 03:07:560832デフォルトの名無しさん
2010/11/23(火) 05:32:170833デフォルトの名無しさん
2010/11/23(火) 11:47:470834デフォルトの名無しさん
2010/11/23(火) 13:18:150835デフォルトの名無しさん
2010/11/23(火) 14:21:17ポインタ変数を宣言するとき
int* i;
int *i;
というように*の位置が違うんだけど
なにか違いがあるの?
0836デフォルトの名無しさん
2010/11/23(火) 14:25:07int*i; でもいいし
int * i; でもいいし
int
*
i; でもいいよ
0837デフォルトの名無しさん
2010/11/23(火) 14:31:58ポインタ型であることを明確にするために
int* i;
とする派と
複数宣言するときでも統一できるように
int *i, *j;
とする派がいるだけ
でも1つ宣言のときは前、複数宣言の時だけ後ろの混在で使ってる人がほとんどじゃね?
0838デフォルトの名無しさん
2010/11/23(火) 14:32:26Cではint *p
C++ではint* p
が使われることが多い。
0839デフォルトの名無しさん
2010/11/23(火) 15:16:24Cではint *p
C++ではint* p
が使われることが多い。
0840デフォルトの名無しさん
2010/11/23(火) 15:17:190841デフォルトの名無しさん
2010/11/23(火) 15:17:400842835
2010/11/23(火) 15:24:42ちなみに
int* x, y;
とした場合はxだけがポインタ変数ということで
いいんでしょうか?
0843デフォルトの名無しさん
2010/11/23(火) 15:25:570844835
2010/11/23(火) 15:29:13また来る
0845デフォルトの名無しさん
2010/11/23(火) 15:37:34intptr_t x, y;
では両方ともポインタですねか?
0846デフォルトの名無しさん
2010/11/23(火) 15:39:500847デフォルトの名無しさん
2010/11/23(火) 17:56:490848デフォルトの名無しさん
2010/11/23(火) 17:58:50c99のstdint.hとかぶってる
0849デフォルトの名無しさん
2010/11/23(火) 19:11:28あるサイトで,detは変数なんだけど。
1eから3引くってことなのかい?
1eってなんぞ?
0850デフォルトの名無しさん
2010/11/23(火) 19:12:480851デフォルトの名無しさん
2010/11/23(火) 19:12:550852デフォルトの名無しさん
2010/11/23(火) 19:13:050853デフォルトの名無しさん
2010/11/23(火) 19:14:321e1 = 10
1e0 = 1
1e-1 = 0.1
1e-2 = 0.01
0854デフォルトの名無しさん
2010/11/23(火) 19:48:070855デフォルトの名無しさん
2010/11/23(火) 19:51:080856デフォルトの名無しさん
2010/11/23(火) 19:59:440857デフォルトの名無しさん
2010/11/23(火) 20:01:430858デフォルトの名無しさん
2010/11/23(火) 20:48:37int sum(int *kadf[2]) {
return *kadf[1]+*kadf[2];
}
int main(void) {
int valew[2]={1,2};
printf("%d\n",sum(&valew));
}
なぜかエラーが起こる
0859デフォルトの名無しさん
2010/11/23(火) 20:50:08return *kadf[0]+*kadf[1];
0860デフォルトの名無しさん
2010/11/23(火) 20:53:07int sum(int *kadf[2]) {
return *kadf[0]+*kadf[1];
}
int main(void) {
int valew[2]={1,2};
printf("%d\n",sum(&valew));
}
修正したけど
何故かエラーになる
0861デフォルトの名無しさん
2010/11/23(火) 20:57:26なぜかじゃねーよ。
#include <stdio.h>
int sum(int *kadf) { /* もしくは int kadf[] */
return kadf[0]+kadf[1];
}
int main(void) {
int valew[]={1,2};
printf("%d\n",sum(valew));
return 0;
}
0862デフォルトの名無しさん
2010/11/23(火) 20:59:380863デフォルトの名無しさん
2010/11/23(火) 21:01:06#include <stdio.h>
int sum(int (*kadf)[2]) {
return (*kadf)[0]+(*kadf)[1];
}
int main(void) {
int valew[2]={1,2};
printf("%d\n",sum(&valew));
}
0864デフォルトの名無しさん
2010/11/23(火) 21:03:56君は 860 ではないか? return 0; がないけど。
0865デフォルトの名無しさん
2010/11/23(火) 21:04:00return *kadf[0]+*kadf[1];
}
とした場合の、
int *kadf[2] 、*kadf[0]は何を表すか教えて
sum(&valew)とした時に
&valewで何が渡ってるんですか
0866デフォルトの名無しさん
2010/11/23(火) 21:08:37kadf[0]でintへのポインタで*kadf[0]で、そのポインタの指す先のintの値だろ。
0867デフォルトの名無しさん
2010/11/23(火) 21:09:00intへのポインタ型の要素数2の配列を引数kadfを取ることを示す。
*kadf[0] は、
kadfの0番目の要素(intへのポインター型)が指す要素(int型)を示す。
0868デフォルトの名無しさん
2010/11/23(火) 21:09:52変数valewのアドレスを示す。
0869デフォルトの名無しさん
2010/11/23(火) 21:15:22><むずかしいよー
>>868
アドレスだけで型情報はないの?
0870デフォルトの名無しさん
2010/11/23(火) 21:16:460871デフォルトの名無しさん
2010/11/23(火) 21:20:18value じゃないか?
0872デフォルトの名無しさん
2010/11/23(火) 21:28:46まず関数の引数に使われる[ ]の中の数字に何の意味もない、
int *kadf[0] だろうが int *kadf[1000] だろうが同じ意味。
* は一番優先度が低い、したがって"int *kadf[] は配列です"と解釈される。
配列のに格納されるデータ型は int*。
だから int sum(int *kadf[2]) は引数にint*の配列を取り、
戻り値 int の関数 sum と解釈される。
*kadf[0]は"配列kadfの最初の値(ポインタint*)"の中身。
0873デフォルトの名無しさん
2010/11/23(火) 21:30:18void aho(int saru[][100]);
0874デフォルトの名無しさん
2010/11/23(火) 21:51:51猛スピードで駆け抜けると何処かで転落する
0875デフォルトの名無しさん
2010/11/23(火) 21:55:17↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ
↓
神の誕生
0876デフォルトの名無しさん
2010/11/23(火) 21:56:470877デフォルトの名無しさん
2010/11/23(火) 22:00:410878デフォルトの名無しさん
2010/11/23(火) 22:00:48配列の領域として使いたいなら、配列にキャストして使えばいい。
0879デフォルトの名無しさん
2010/11/23(火) 22:01:15どちらでもお好きなように。
0880デフォルトの名無しさん
2010/11/23(火) 22:02:35どうもありがとう。
0881デフォルトの名無しさん
2010/11/23(火) 22:09:06#include <stdlib.h>
int main(void) {
char (*p)[5];
char *pp;
int i;
p = (char(*)[5])malloc(3*sizeof(char[5]));
pp = (char*)p;
sprintf(pp,"123456789012");
p[0][4] = p[1][4] = p[1][4] = 0;
for (i=0;i<3;i++) printf("%s\n",p[i]);
return 0;
}
08821eの人
2010/11/23(火) 22:09:090883デフォルトの名無しさん
2010/11/24(水) 00:59:37scanf("%d",&i);
としてint型の変数iに数字を入力したらその変数iを子スレッドで使用するにはどうすればいいですか?
0884デフォルトの名無しさん
2010/11/24(水) 01:07:21子スレッドにアドレス渡しとけばいいじゃん
0885デフォルトの名無しさん
2010/11/24(水) 01:10:25どうやって渡すんですか?
複数でもいけますか?
0886デフォルトの名無しさん
2010/11/24(水) 01:10:48それを使って変数 i へのポインタを渡せばいいと思わないか
0887デフォルトの名無しさん
2010/11/24(水) 01:11:340888デフォルトの名無しさん
2010/11/24(水) 01:13:54>複数なら構造体にまとめればいい
なるほど。
そういう考えですか
0889デフォルトの名無しさん
2010/11/24(水) 01:15:500890デフォルトの名無しさん
2010/11/24(水) 01:16:560891デフォルトの名無しさん
2010/11/24(水) 02:32:09今こんな感じなんですけど
滅多にスレッドが起動しません。
起動しても3回くらいです。
http://main.s377.xrea.com/test5.c
ソース見てください。
0892デフォルトの名無しさん
2010/11/24(水) 02:53:54struct test mode -> static struct test mode にしても駄目かな?
0893デフォルトの名無しさん
2010/11/24(水) 03:00:53http://main.s377.xrea.com/test5.c
なんか
始まりの数字を・・・:0
終わりの数字を・・・:100
とかにしてもスレッドが0から表示されないんですよね>_<
よかったらexeをぅpしたので実行してみてもらえないですか?
http://main.s377.xrea.com/test5.exe
0894デフォルトの名無しさん
2010/11/24(水) 03:22:40その後mythreadが動き出してもすでに lpx->start == lpx->end だから何もすることがない
0895デフォルトの名無しさん
2010/11/24(水) 03:28:38理解できました。
では書き方自体におかしいところはないのですね?
これたとえばすごい回数まわしたとして
普通にループするより早くなるのでしょうか?
0896デフォルトの名無しさん
2010/11/24(水) 03:46:25そのままmain関数で一万回まわしたのを比較したら
スレッド使わないほうが早かったんですけど・・・
0897デフォルトの名無しさん
2010/11/24(水) 03:52:491スレッドで1万回と、2スレッドで各1万回=計2万回を、比べちゃいかん
スレッドを管理する負荷が増えるぶん遅くなるだけ
せっかく複数のスレッドを使うなら、それぞれのスレッドで役割を分担しなければ
1スレッド目は0から5000まで、2スレッド目は5000から10000まで、とか
0898デフォルトの名無しさん
2010/11/24(水) 03:55:330899デフォルトの名無しさん
2010/11/24(水) 05:53:56やっと完成しました。
早すぎてびっくりです。
0900デフォルトの名無しさん
2010/11/24(水) 17:11:100901デフォルトの名無しさん
2010/11/24(水) 19:36:150902デフォルトの名無しさん
2010/11/24(水) 19:52:080903デフォルトの名無しさん
2010/11/24(水) 19:55:420904デフォルトの名無しさん
2010/11/24(水) 20:23:140905デフォルトの名無しさん
2010/11/24(水) 20:34:410906デフォルトの名無しさん
2010/11/24(水) 22:45:110907デフォルトの名無しさん
2010/11/25(木) 01:12:26配列に格納された英文があります。この英文の最初のみ大文字に、それ以外を小文字に変えてファイルに出力したいのですが、どのようにしたらよいのでしょうか。
英文の区切りはピリオドとしているのですが、複数の英文を配列に格納している場合、どのようにしたらいいのかわかりません。
一つの英文のみならtoupper関数などをそのまま利用するだけなのでしょうが、複数の英文を認識し、それぞれ変換させる方法がわかりませんでした。
Who are you. I am Tom.
というような感じの複数の英文が格納されています。
なお、ファイルへの出力そのものはできます。
0908デフォルトの名無しさん
2010/11/25(木) 01:26:45一例として、ざっくり書くなら
1.先頭文字を大文字にする
2.以降の文字を順に読み、どんどん小文字にしていく
3.ピリオドを発見したら1に戻る
こんな処理を文字列の最後まで繰り返すとかね
0909デフォルトの名無しさん
2010/11/25(木) 01:36:11読み込んだ文字がピリオドならheadフラグを立てる
その文字が英字なら
headフラグが立っていれば大文字にしてフラグを消す
立っていなければ小文字にする
英字でなければ(ピリオドの場合も)
そのまま
文字列終端になるまで繰り返す
0910デフォルトの名無しさん
2010/11/25(木) 07:24:33条件分岐などはコンパイラの中身を理解していないと厳しいですかね
0911デフォルトの名無しさん
2010/11/25(木) 07:27:330912デフォルトの名無しさん
2010/11/25(木) 09:15:360913デフォルトの名無しさん
2010/11/25(木) 21:12:230914デフォルトの名無しさん
2010/11/25(木) 21:18:240915デフォルトの名無しさん
2010/11/25(木) 23:34:49int flg=0,atk=0;
while( 「不明」 )
{
flg ^= atk;
if( flg == 0 )
{
character[1].nHP -= character[0].nAttack;
printf("PHP %d \n", character[1].nHP );
}
if( flg == 1 )
{
character[0].nHP -= character[1].nAttack;
printf("敵HP %d \n", character[0].nHP );
}
}
互いにHPを削りあうプログラムを組んでるのですが、
マイナス値までいってしまいます。
マイナス値まで行かずに0で止めたいのですが、どうすればいいでしょうか?
お願いします。教えて下さい。
0916デフォルトの名無しさん
2010/11/25(木) 23:42:42character[1].nHP -= character[0].nAttack; のあとに
if (character[1].nHP <= 0) {
character[1].nHP = 0;
break;
}
を入れれば。
下の計算のあとにも。
0917デフォルトの名無しさん
2010/11/25(木) 23:44:37flg ^= atk; これだと、0と-1の繰り返しになるから
flg = !flg; で。
0918デフォルトの名無しさん
2010/11/25(木) 23:47:01ありがとうございます
おかげで解決しました
>>917
なるほど、ありがとうございます
0919デフォルトの名無しさん
2010/11/26(金) 02:06:18LinuxやBSDなどのシステムコールの表記方法としてopen(2)やexit(3)といったものがありますがカッコの中の数字はどういう意味なのでしょうか?
0920デフォルトの名無しさん
2010/11/26(金) 02:10:440921デフォルトの名無しさん
2010/11/26(金) 02:12:28同じスレにいたのかな
0922デフォルトの名無しさん
2010/11/26(金) 02:26:05ありがとうございます。
ということはカッコ内の数字でシステムコールか関数か判別できるということなのですね。
>>919
おそらく関係ないと思います。2-3日2ch開いてすらいないので…
0923デフォルトの名無しさん
2010/11/26(金) 02:34:16配列a[9]={1,3,2,5,8,4,0,9,0}があるとして
配列には1〜9の数字のどれかが入っているとして
配列の中にない数字6と7を出力したいんですが
やり方をおしえてください
0924デフォルトの名無しさん
2010/11/26(金) 02:39:43マニュアルの区分
標準コマンドとかC言語の関数とかで分けられてる
0925デフォルトの名無しさん
2010/11/26(金) 02:51:10まぁ、適当
ソートして隙間があったら表示
http://codepad.org/o2zq2j3d
0926デフォルトの名無しさん
2010/11/26(金) 02:57:340927デフォルトの名無しさん
2010/11/26(金) 02:59:33普通は
int b[10] = 0;
int i;
for( i = 0; i < 9; i++ )
b[a[i]]++;
for( i = 0; i < 10; i++ )
if( ! b[i] ) printf( "%d\n", i );
ってやるんじゃない、a[] に10以上の数字が入ってたらアウトだけど
0928927
2010/11/26(金) 03:04:52○ b[10] = {10};
0929デフォルトの名無しさん
2010/11/26(金) 03:19:530930デフォルトの名無しさん
2010/11/26(金) 03:22:21配列の初期化について質問があります。
test.Buffer[100] = 0.0;
構造体の中の配列を上のようにすると、中身が全て0.0にできていました。
インターネットや参考書には
test.Buffer[100] = {0.0};
とするように書いてあります。
しかしこちらでは構文エラーとなりコンパイルできません。
構造体の中の配列を一括で初期化する際、本当はどのように記述したらよいのでしょうか?
よろしくお願いいたします。
0931デフォルトの名無しさん
2010/11/26(金) 03:28:53それは初期化じゃなくて代入だよ
0932デフォルトの名無しさん
2010/11/26(金) 03:42:51納得しました!!
本当にありがとうございます。
0933デフォルトの名無しさん
2010/11/26(金) 07:55:480934デフォルトの名無しさん
2010/11/26(金) 14:23:47いえいえ
0935デフォルトの名無しさん
2010/11/26(金) 14:32:15おそらく根本的に勘違いしてる
0936デフォルトの名無しさん
2010/11/26(金) 15:15:550937デフォルトの名無しさん
2010/11/26(金) 16:10:280938デフォルトの名無しさん
2010/11/26(金) 16:13:58別に無理して使わなくていいぜ
0939デフォルトの名無しさん
2010/11/26(金) 17:31:380940デフォルトの名無しさん
2010/11/26(金) 19:42:570941デフォルトの名無しさん
2010/11/26(金) 20:24:39C++コンパイラでC使ってるから忘れちまったけど…
初期化はちょっと時間掛かるから使わないで済む場合は初期化しないってのが
始まりなのかな(今となっては読みにくくなるだけだから最初にmemsetとかしちゃうけどね)
0942デフォルトの名無しさん
2010/11/26(金) 22:09:180943デフォルトの名無しさん
2010/11/26(金) 22:13:130944デフォルトの名無しさん
2010/11/26(金) 22:17:240945デフォルトの名無しさん
2010/11/26(金) 22:47:31普通に構造体を宣言する時となにか違うの?
0946デフォルトの名無しさん
2010/11/26(金) 22:51:56アライメントに気をつけないと想定していたサイズと違うサイズで読んじゃうことはあるかもね
0947945
2010/11/26(金) 23:00:340948デフォルトの名無しさん
2010/11/26(金) 23:32:240949デフォルトの名無しさん
2010/11/26(金) 23:35:27「C++ クラスと継承完全制覇」 でCとC++の違いを垣間見る
↓
「ロベールのC++入門講座」 でC++の文法など基礎を習得
↓
「Effective C++」 でよりよいC++プログラムの記述法を学ぶ
↓
「STL標準講座 標準テンプレートライブラリを利用したC++プログラミング」 でSTLを習得
↓
「オブジェクト指向における再利用のためのデザインパターン」 で大規模プログラムの設計法について学ぶ
↓
神を恐れぬ者の誕生
0950デフォルトの名無しさん
2010/11/27(土) 00:17:220951デフォルトの名無しさん
2010/11/27(土) 00:52:04chara cnt=’1’;
printf(“%d”,cnt);
で
49が表示されるのは何故?
0952デフォルトの名無しさん
2010/11/27(土) 00:54:470953デフォルトの名無しさん
2010/11/27(土) 01:00:03int Part;
float i=1/Part*BottonCount;
Draw(float tx);って関数にiを突っ込もうとしてもうまくいきませんなぜ?
0954デフォルトの名無しさん
2010/11/27(土) 01:00:330955デフォルトの名無しさん
2010/11/27(土) 01:16:36Asciiコード表で1に割り当てられているコードを
%dで10進数で表示しているから
0956デフォルトの名無しさん
2010/11/27(土) 01:25:530957デフォルトの名無しさん
2010/11/27(土) 01:39:330958デフォルトの名無しさん
2010/11/27(土) 01:43:47なんなんじゃない?
0959デフォルトの名無しさん
2010/11/27(土) 02:25:09fwrite ( data, 1, 10000, fp ) ;
と
fwrite ( data, 10000, 1, fp ) ;
だったらどっちがいいの?
なんか差はある?
0960デフォルトの名無しさん
2010/11/27(土) 02:33:18高々10KB程度、大差ないべさ。途中で失敗したときの戻り値は違ってくるけど。
0961デフォルトの名無しさん
2010/11/27(土) 02:47:39fwrite() のソース見ないと判らんね
結局は write() をコールするんだけど、write( fd, buf, size * n ) としてるのか write( fd, buf, size ) を n 回コールしてるのか
後者なら、>>959 の後者の方が良いのは明らかだ
0962デフォルトの名無しさん
2010/11/27(土) 03:05:11よく出る話題だわな。これ。
そういえばintelが「将来は1000コアのプロセッサを作るーー!!」とか言ってるそうで。
1byte を 1000回にして、1000個のコアに割り当てたら、1000倍速いじゃん! みたいな?
いや、どうもこの先コアあたりの速度ってムーアの法則みたいには行かないっぽいし? 多コアの時代になるだろうし?
0963962
2010/11/27(土) 03:09:30そのへん、どうなるんだろうか?やっぱメモリも1000枚差しとかになるのかね…w いや、wじゃなくて、ほんとに
0964デフォルトの名無しさん
2010/11/27(土) 03:39:42それ以前に read/write なら物理的な媒体の方が問題じゃね?
0965デフォルトの名無しさん
2010/11/27(土) 09:13:52これはab共に真なら〜てことだけど
if(a & b)
てどういう意味?
0966デフォルトの名無しさん
2010/11/27(土) 09:19:120x1 && 0x2 真
0x1 & 0x2 疑
0x2 & 0x2 真
0xF & 0x2 真
0967デフォルトの名無しさん
2010/11/27(土) 09:25:520968デフォルトの名無しさん
2010/11/27(土) 09:35:400969デフォルトの名無しさん
2010/11/27(土) 11:27:13バッファリングについて調べるといいよ
0970デフォルトの名無しさん
2010/11/27(土) 11:48:39知らないとでも?
0971デフォルトの名無しさん
2010/11/27(土) 12:18:300972デフォルトの名無しさん
2010/11/27(土) 13:50:05printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
ってゆうのが出てくるんだけど
このprintfは何かを比べてその結果から'Y'か'N'を出力してるの?
0973デフォルトの名無しさん
2010/11/27(土) 13:54:100974デフォルトの名無しさん
2010/11/27(土) 13:55:50c_file.attrib と _A_RDONLYをビット単位でAND演算して、結果が0以外であればY、0ならNが表示される
ビット演算と条件演算子でググると知りたいことが書いてあると思う
0975デフォルトの名無しさん
2010/11/27(土) 13:56:53あー、空白も必要か。
それなら
printf(" %c ", (c_file.attrib & _A_RDONLY) ? 'Y' : 'N');だな。
0976デフォルトの名無しさん
2010/11/27(土) 14:04:44実際はどうなの?
0977972
2010/11/27(土) 14:11:56処理の重い軽いはまだよく分からんが
使い方としては理解できた
ありがとう。
0978デフォルトの名無しさん
2010/11/27(土) 14:18:32フォーマット文字列のない場合printfじゃない別の関数に置き換えるコンパイラとかあるらしいが
0979デフォルトの名無しさん
2010/11/27(土) 14:45:20重さよりも、通常使用における安全をとって、第一パラメータを可変にするのを避けた。この場合は問題にはならないけどね。
>>978
「フォーマット文字列のない場合」なんて有り得ないので何を言いたいのか判らない。
フォーマット指定がある場合でも例えば、gccはprintf("%s\n", foo)をputs(foo)に置き換えるね。
0980デフォルトの名無しさん
2010/11/27(土) 15:36:590981デフォルトの名無しさん
2010/11/27(土) 17:20:260982デフォルトの名無しさん
2010/11/27(土) 19:47:40死ね
0983デフォルトの名無しさん
2010/11/27(土) 20:32:33C言語なら俺に聞け(入門編)Part 74
http://hibari.2ch.net/test/read.cgi/tech/1290857610/
0985Perl忍者◇35I122rnS2
2010/11/27(土) 20:35:19良いサイトおしえてください
0986デフォルトの名無しさん
2010/11/27(土) 20:48:20http://homepage1.nifty.com/rucio/VBNyumon/Index_beg.htm
0987デフォルトの名無しさん
2010/11/27(土) 21:23:10なるほど printf() 内ではフォーマット文字列終端に \n が有るか無いかで分岐が有るんですね
無いと思います
0988デフォルトの名無しさん
2010/11/27(土) 21:30:590989デフォルトの名無しさん
2010/11/27(土) 21:37:26誰か知ってる人居ますか?
0990デフォルトの名無しさん
2010/11/27(土) 21:40:590991デフォルトの名無しさん
2010/11/27(土) 21:42:37printf内で処理が分岐してるわけじゃなくて
コンパイル時にprintfをputsに置き換えてるだけだからなあ
0992デフォルトの名無しさん
2010/11/27(土) 21:59:52置き換えになってねえだろバカ
0993デフォルトの名無しさん
2010/11/27(土) 22:57:32乙梅
0994デフォルトの名無しさん
2010/11/27(土) 23:31:11やってみろよ、間抜け
0995デフォルトの名無しさん
2010/11/28(日) 00:07:18│お|ハ,,ハ
│断|゚ω゚ ) お断りします
│り _| //
└○┘ (⌒)
し⌒
0996デフォルトの名無しさん
2010/11/28(日) 05:57:210997デフォルトの名無しさん
2010/11/28(日) 10:43:11しかも途中で忍者が現れて荒し始めるし
トンでもテクニックワロタ
0998デフォルトの名無しさん
2010/11/28(日) 15:53:520999デフォルトの名無しさん
2010/11/28(日) 15:54:351000デフォルトの名無しさん
2010/11/28(日) 15:55:2610011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。