前スレ
>>997 無理にstruct tmとidとpassに分解してソートするから遅いのかな
単純にstrcmpでやったら速いみたいです
>>2 日時、14桁の数値と見なせばそのままintに収まるんじゃない?
同じパソコンにおいて、CPUやメモリなどのパソコンの機器の部分を変えずに 書くプログラムだけを改良することによって格別に早いソートを作る事は可能 なのでしょうか?正しライブラリやソフトウェアは使っていいことにします。
前スレのソートの質問者だけどここまで発展するとは思いませんでした
全部読んで文字列ソートで十分な速さだね
ttp://codepad.org/HXDyRNHA $ ./makepass (前スレ965のgenrandを直したやつ)
$ time ./a pass.txt > sorted.txt
real 0m1.478s
user 0m1.279s
sys 0m0.125s
この順で実行すると、計測時はキャッシュ効いた状態?効いてない状態?
1ギガのテキストのソートことやる意味がある。
SQLServer2008でやったら0.7秒だった。
>>8 pass2.txtの日付が全部1970-01-01<>08:59:59になるぞ
>>5 無理
quick sort以上の速度を得ることはまず不可能
L2L3キャッシュの大きなCPUを使うと劇的にソート速度が向上する事があるが
それとこれとは話が別
使ってるハードウェア(CPUとかHDDとか)のキャッシュの仕様を熟知して アセンブラチューニングみたいなことすれば 改善程度はできるんじゃない?格別にってのはどうか知らんけど
>>13 まずそれgenrandがおかしいから生成できない
50c50
< return about + (int)(rand() / 32768. * width);
---
> return about + (int)(rand() % width);
genrandを直して生成したやつ食わせても同じ結果だな
>>15 おかしいなあうちの環境では動きますねえ(BCC6.3.1)
特に機種依存の場所もないし何が原因なんだろう?
日本語のコメントをしてるからかな?
これで頼むわ。
#include <stdio.h>
#define FILENAME "pass.txt"
#define MAXFILESIZE (1<<29)
#define BUFSIZE (1<<20)
unsigned int rand_xor() { static unsigned int t, x=123456789UL,y=362436069UL,z=521288629UL,w=88675123UL;t=x^(x<<11); x=y; y=z; z=w; return w^=(w
>>19 )^t^(t
>>8 ); }
void strgen( char *str, int &sz ) {
unsigned int x,n;
for(n=0; n<32 + rand_xor()%128 ; n+=6) {
x=rand_xor();
str[sz+n+0]='0'+x%64; x>>=6; str[sz+n+1]='0'+x%64; x>>=6;
str[sz+n+2]='0'+x%64; x>>=6; str[sz+n+3]='0'+x%64; x>>=6;
str[sz+n+4]='0'+x%64; x>>=6; str[sz+n+5]='0'+x%64; }
sz+=n; str[sz-1]='\n'; }
int main() {
FILE *fp = fopen(FILENAME, "wb");
int sum=0;
char *buf = new char [BUFSIZE+1]; int sz=0;
do{
if( sz+1024 >= BUFSIZE ) { fwrite( &buf[0], 1, sz, fp); sum+=sz; sz=0; }
strgen( buf, sz ); }while(sum < MAXFILESIZE);
fwrite( &buf[0], 1, sz, fp);
fclose(fp); }
>>17 エラーが出てコンパイル出来ません
エラー E2293 pass4.c 8: ) が必要
>>16 うち(gcc version 4.3.4 20090804 (release) 1 (GCC))だとmktimeが-1を返してた
t.tm_isdst = -1;(サマータイムなし)を指定しておかないと動かないようだ
>>18 C++の機能使っているのでCPPの拡張子で。
>>19 了解です
それが原因だと思います
うちのgcc4.3.2(MinGW)ではサマータイムを指定しなくても動くので
MinGWとLinuxで違うのかもしれませんね
>>20 了解です
メモリについて教えてください。 例えば2Dスクロールゲームとかで 画面に映るステージの範囲って限られてますよね。 ドカンがあって、敵がいてみたいな。 では、画面に映ってないこれから進んでいく領域の情報はメモリに 保存されてるんですか?
23 :
22 :2011/04/17(日) 22:23:35.94
DirectXとC言語でゲーム作っています。
映っている映ってないに関係なくステージ全体のマップをメモリに持っていて、 その中から映ってる分だけを画面に出します
>>24 それはひどい、そんなひどい作り方したらメモリがいくらあっても足りねーよ、ボケ。
ちょっとビール買いに行っていました
>>17 コンパイルして実行してみたらえらくグチャグチャな内容のランダムなテキストが
生成されましたが、これは何に使うのですか?
27 :
22 :2011/04/17(日) 22:42:51.49
>>25 メモリに保存されてる情報ってゲームのある瞬間において、
どのくらいの範囲までなんでしょう。
それ以外はストリームを介したバッファ領域に保存されてるんですか?
それともHDD?
>>27 あのさ、プラットフォームが何かにもよるよね。
論理的に考えれば少なくともメモリに置いとくのは
キャラクタのいる画面とその周囲の画面分でいい事ぐらいわかるだろふつう。
(4画面一気に飛び越えたりとかしないかぎり。)
あとはロードにどんだけ時間がかかるかでどれだけ先読みするか決めりゃいいだけ。
ていうかスレ違いだから空気読んで。
ステージ毎で問題あるの?
>>26 ランダムな文字列で速いソートを作ろうという意図。
>>22 画面に映ってなくても少し先までの画面はすぐ表示できる状態でメモリに入れてる
少なくとも自分の知ってるNintendoDSのVRAMはそんなふうだった
>>23 環境というよりも、どういう実装をするかによるだけなんじゃないかな
>>29 50000x2000 とか?
100Mピクセルだから
フルカラーとして 300MB か 400MB
メインメモリに乗せるなら大丈夫だね
画面に描画する色情報ってことなの? マップチップのIDとかのことだと思ったんだけど
34 :
デフォルトの名無しさん :2011/04/17(日) 23:10:43.17
ってことは、メモリの量は瞬間瞬間でリセットされるから、瞬間における 主人公の動作を快適にするのにメモリを使いまくっていいってことですか?
>>30 ああ了解です
じゃあプログラムを完璧に作り直す必要がありますね
Cと普通のstrdup()で確保した文字列のソートと、C++でvectorに突っ込んだ
stringをsortアルゴリズムでソートして比較したりいろいろ楽しめそうです
C++の場合もstringのポインタをunique_ptrに入れて突っ込んでソートした方が
速いでしょうね
>>35 なによりもまず500MBの入力の扱いを考えるのが最初だと思うんだが
入力部分はiostreamよりcstdioの方が速いですね
38 :
デフォルトの名無しさん :2011/04/17(日) 23:28:39.46
つかコード書いたファイルが1mbくらいあったんだがでかすぎワロタww ソースコードだけで1mbってでかすぎないか?
やれやれ、賑わっていると思ったら馬鹿自慢かよ。スレタイ位見てから馬鹿やれよな
馬鹿と言ってる奴が一番馬鹿という法則
私が一番馬鹿でいいからこのスレでやるなってばさ。 それと、どうせやるなら測定条件をはっきりさせなきゃ意味ないじゃん囧
ほっほっ
測定条件があいまいなのがいいんじゃないか 最初から古いPCとか、そこそこのマシンとかいう表現されてる時点でわかるだろ
>>41 ええそうです。だからわざと32768.と実数で割っているのです。
>>46 肝要なのは、なぜ32768なのかってところなんだが。
randの結果が1000000だった時どうなるかね。
>>47 済みません、間違いに気付き(double)RAND_MAXと直しました。
>>48 気づいた上で、
>>15 よりも優れている点は最下位ビットを使用することについての懸念から、ですかね。
で?ランダムなデータのリストを作りたいのか、それともリストをソートするプログラムを作りたいのかはっきりしろやw
>>17 これをいかに速くソートするか。読み込みから書き込み終了まで。
巨大ファイルのソート方法。 行の先頭文字ごとに複数のファイルへ分類する。 それぞれのファイルをソートして連結すれば終わり。 各ファイルのサイズが均一になるように、サンプルを取って分割区間を決める。
>>52 それだと
2011-1-3〜
2011-1-6〜
2011-1-1〜
2011-1-2〜
2011-1-7〜
2011-1-5〜
で2011-1-2〜の箇所で半分に分かれた時
2011-1-1〜
2011-1-3〜
2011-1-6〜
2011-1-2〜
2011-1-5〜
2011-1-7〜
ってなっちゃうよ?
>>53 違うぞ。例えばファイル内容がこうだとしよう。
b****
c****
a****
b****
a****
c****
c****
そしたらファイルをよみつつ、ファイルa.dat、b.dat、c.datへ次のように書き出す。
a.dat
a****
a****
b.dat
b****
b****
c.dat
c****
c****
c****
.datだってよw馬鹿かこいつ。。.txtで充分だろうに。カッコばっかだな。 書き出すってこと自体アホそのものだからどうでもいいが。
56 :
52 :2011/04/18(月) 14:19:43.82
書き込みバッファを用意すれば読み書きがシーケンシャルでプレのソートが行える。 工夫はどの区間で分類するか決める点。 メモリ上でソートするには、せいぜい30メガ程度に抑えた方がいい。各ファイルがその程度になるように分類。 大きすぎても、小さすぎても効率が落ちる。
57 :
52 :2011/04/18(月) 14:22:36.40
>>55 テキストのまま書き出すのはアホ。改行の区切り位置は、初めの読み込みで分かっている。
区切りを覚えておきつつ、データを圧縮して書き出せば、ロード時間が減らせるむ。
rand()を使うときは上位ビットをとるとか工夫しないで
rand()%nでいいんじゃないの?
最近の(とういうかだいぶ前から)処理系は下位ビットだから
極端に周期が短いとかないでしょ。
>>41 も本当は
return about + (int)(rand() / ((double)RAND_MAX+1) * width);
だろうし、変に工夫してバグってる例をよく見る。
>>57 おまえアホだろ、バイナリデータだろうが.txtで書きだしゃいいんだよ。バカジャネーノ
拡張子がファイル形式を決めてると思ってるアホがいるな
>>62 day = genrand(1, 31);
hour = genrand(0, 23);
こう使われてるから関数の定義があいまいなんじゃないかな
65 :
52 :2011/04/18(月) 14:34:05.62
http://fallabs.com/mikio/tech/promenade.cgi?id=89 特筆すべきは二点で、一点目はLZOは半分以下に圧縮しているにもかかわらず
ほとんど時間的オーバーヘッドがかかっていないこと。
二点目はLZMAの圧縮処理は多大な時間的オーバーヘッドがかかっているが、
10分の1にまで圧縮できるということ。ZLIBはそれらの中間的な特性を示す。
http://alpha.mixi.co.jp/blog/?p=191 圧縮をするとしないとではデータベースのサイズが全然違うということはおわかりいただけると思います。
ZLIBだと43.7%、BZIP2だと39.1%、LZMAだと37.5%に圧縮できているわけです。
Deflateだと更新処理は195%の時間がかかりますが、検索処理は138%で済んでいます。
BZIPやLZMAはそれよりも空間効率重視だということがわかります。
LZMAはBZIP2より圧縮率が高く、探索もBZIP2よりも高速であることが確かめられました。
逆にLZOは空間効率はそれほど向上しませんが、更新処理は121%、検索処理は114%の時間で済むことが確かめられました。
67 :
52 :2011/04/18(月) 14:40:03.56
一端ファイルへ分類しようとするのは、元のサイズが100ギガ以上とか巨大なケース。 これだとコピーするだけで時間食う。IO速度のため、1/3〜1/2にでもなったらそれだけ速い。
68 :
デフォルトの名無しさん :2011/04/18(月) 15:02:54.37
>>55 まさかとは思うが拡張子とファイル編成が無関係なことくらい知ってるよな?
69 :
デフォルトの名無しさん :2011/04/18(月) 15:12:33.32
ソートの話題で恐縮ですがサマータイムについてご教授お願いします 東証では7/1〜9月末までサマータイム導入を決めたそうですが 時刻の差が1時間である場合とします。 プログラムで現在時刻を表示させたいのですが、7/1のAM2時になったら時刻に1時間プラスして、 10/1のAM3時になったら1時間引くだけでよいのでしょうか?
サマータイム、実にタイムリーで興味がある話題である
>>69 東証のあれは別に時計は変えないんじゃないの?
>>69 OSがサマータイム対応でその設定がされていれば難しいこと考えずlocaltimeでいいはず
日本で急遽サマータイム導入したときMSは急遽パッチく作るのか?
>>75 そんなの見せられてもねw
日本はタイムゾーン未導入なんだよ?OSでどうやって自動的にタイムゾーンに変更すんの?
あ、手動で時刻を変更しろって低レベルな事を言いたいわけじゃないよな?
>>76 日本でサマタイ未導入なら設定する必要もないだろボケ
C++のSTLにあるようなDirectoryなどのコンテナで、 Cで標準的に使用できるものはございますでしょうか? もしかして標準関数でよういされているのでしょうか・・・。
>>80 たすかりました。
ありがとうございます。
>>77 はあ?急遽導入されたケースを話してるんだろ
バカは黙ってろ
>>82 はぁ?急遽?「明日からサマータイムにします」ってことはねーからw
それに東証のはあんなのは真の意味でのサマータイムじゃねーよ。
いわゆるズレ勤ってだけ。
>>76 > 日本はタイムゾーン未導入なんだよ?
まじっすか
> 自動的にタイムゾーンに変更 どういうことっすか
>>86 お前、人の話を聞かないタイプってよく言われてきたでしょ
なにせ日本はタイムゾーン未導入らしいからな〜w
>>76
| |∧∧ | | 支\ | |#`ハ´) | |⊂ ノ ずっと友達でいてね | |(_)))グリグリ ∧∧ |_|北∧ / 台\ ∧日∧ うん。 |共|#`Д´> ( *゜ー゜ ) (・ω・` ) | ̄| ノ∧韓∧ ( つ旦O O旦⊂ ) | |⌒⊃;`Д´>⊃ と_)_) (__(__ ̄)
ニヤニヤ
で?日本はいつになったらタイムゾーン導入なんだ?
>>76
それは国に聞くべきじゃないのか?
>>75 そのリンク先を見てどうやってサマータイムに対応するのか教えて欲しい
煽りとして受け取らないでちゃんとした答えを書いてもらい
「サマータイムになったら自分で時刻をずらす」ってなら期待はずれだけど
サマータイムの設定ファイルみたいなのを配信してるんだよ、updateの時
>>93 おまえのPCはタイムゾーンすら未対応なんだから関係ない話だろーが
>>95 何でタイムゾーンの話を俺に振るのか良く分からないけどちゃんとした回答を待ってるよ
>>94 ありがとう
関数をRAMに展開して実行したいけど、関数ポインタで実装出来るかな?
>>98 意味が良くわからん
普通にプログラムを読み込むとスワップが起きない限りメモリ上にあると思うが
>>98 RAMに展開してって、オンメモリでっていう意味か?
実行可能状態にせんと動かんの(x86とか)がある。
もしかして、コードイメージを配列で持たせて、それを実行したい、とか?
.netみたいなことがやりたいんじゃないの?
DEP:Data Execute Preventionを回避するにはLinuxならmmap、WindowsならVirtualAllocに適切なプロテクトフラグを付けてRAM確保かな で、具体的には何をどんな理由でやりたいの?
ほっほっ
ふっほっ
ふっほっ
2進数数値リテラル(0b11010011)やprintfのフォーマットに2進数変換指定子(%b)がないのは何故ですか?
さぁ? それらが必要だと思う人がいなかったんじゃね
110 :
デフォルトの名無しさん :2011/04/19(火) 13:08:11.37
K&R の時代からすっげえ欲しかったしライブラリでの実装例も腐るほどある 近年ビット数が増えて 0x1234 5678 9abc def0 のような区切り表記も欲しくなってきた
一部のGCC改変版で方言としてあったのはおぼえてる。 アセンブラからやってきたものとしてはありがたいものなんだけどな。
慣れれば0xだけで事足りるしな 0〜Fまで覚えれば済むわけだし
#define b0000 0 ・ ・ ・ #define b1111 F ・ ・ ・ とか秀丸マクロとかでつくっといてインクルードするとか? ちょっと重たすぎるかね。
114 :
デフォルトの名無しさん :2011/04/19(火) 14:38:31.84
いやまあ 255 や 033 なんか普通に使うけど、そういう問題ではなくて
#define B4__(n) (((n)&7) + ((((n)
>>3 )&7)<<1)+ ((((n)
>>6 )&7)<<2)+ ((((n)
>>9 )&7)<<3))
#define Bit4(n) B4__(0##n)
#define Bit8_4(h,l) ((B4__(0##h) << 4) | B4__(0##l))
#define Bit16_4(hh,hl,lh,ll) ((Bit8_4(hh,hl) << 8) | Bit8_4(lh,ll))
OpenGLでラインパターン(点線とか)指定のときに
glLineStipple(1, Bit16_4(1111,1100,1100,1111));
こうできるので少しだけ直感的 (16進⇔2進 8進⇔2進 が即脳内でできるなら不要だろうけど)
皆・・・・・・・・・・・・・・死ね!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>0##n ああ、やべえ。 この書き方の意味がわからねえ・・・
>>117 マクロ引数に渡されたシンボルの連結
#define A(n) 0##n
A(123) は 0123 に展開される
A(aabb) は 0aabb に展開される
大丈夫だ、define以外何書いてるか分からない俺みたいなのもいる 何コレホントにC言語?
#define int char
ほっほっ
ふっほっ
ほっほっ
ぶはっ!選ぶはっ!
ふっほっ
ほっほっ
ほっへっ
ふっふっ
どぴゅっどぴゅっ
ビュクッ!ビュクッ!
ほっほっ
ほっほっ
ほっほっ
ふっへっ
ほっほっ
ふっほっ
/ ̄\ | | \_/ _ |__ / \ / ─ ─\ / ⌒ ⌒ \ | ,ノ(、_, )ヽ | \ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」 / _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」 三. i! ゙ヽ、 Y" r‐!、 ヽ. 三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y! \_|!_二|一"f , !゙\ 三 〈, l|゙》-i|┴ーi´ / イ ´ i! 三 ♪ ゙ー-ニ二__,/ / / 三 ♪ /゙ У / / 三 //,/-‐、 / i! _{! j!'〈 ♪ / ,,.ノ \'' ヽ \ 〈 ーぐ \ ヽ ゙ー″ 〉ー- 〉 〈___ノ
へっふっ
ほっふっ
/ ̄\ | | \_/ _ |__ / \ / ─ ─\ / ⌒ ⌒ \ | ,ノ(、_, )ヽ | \ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」 / _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」 三. i! ゙ヽ、 Y" r‐!、 ヽ. 三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y! \_|!_二|一"f , !゙\ 三 〈, l|゙》-i|┴ーi´ / イ ´ i! 三 ♪ ゙ー-ニ二__,/ / / 三 ♪ /゙ У / / 三 //,/-‐、 / i! _{! j!'〈 ♪ / ,,.ノ \'' ヽ \ 〈 ーぐ \ ヽ ゙ー″ 〉ー- 〉 〈___ノ
ふっはっ
ほっほっ
ふっほっ
ほっほっ
べっほっ
main{ char buf[4096]; kansuu(buf); } kansuu(char buf[]){ memset(buf, '\0', sizeof(buf)); } sizeof(buf)の値は、4でした。 変更 memset(buf, '\0', sizeof(buf)); →memset(buf, '\0', 4096); これで期待通りでした。 配列全体をゼロクリアしたい。 適当な書き方を教えてください。
返信ありがとうございます。
>>149 引数にサイズも渡す方法はできました。
スマートにしたいなぁと。
サブルーチン内で確保すべきかな
>>150 定数は避けたいです。
152 :
148 :2011/04/20(水) 01:52:53.93
>>150 失礼しました。
勘違いしてました。
サブルーチン内で、ゼロクリアしたいです。
>>152 コンパイラによっては配列サイズを知ることもできるらしいが
そうだとしても渡されるものが配列の先頭である保証がないから
やっぱりサイズも渡すのが無難
memset() を使いたいなら、こんな感じかなあ。。。 #include <string.h> #define BUFSIZE 4096 int main() { char buf[BUFSIZE]; func(buf); } void func(char buf[]) { memset(buf, 0, BUFSIZE); }
そもそもサブルーチンの中で初期化しなければならない状態ってのがどうなんだろう? 実は初期化しなくともどうにかならないかい
typedef char HOGE[64]; HOGE hoge;//char hoge[64]; こういうtypedefの使い方ってすごく気持ち悪いんですけど一般的なんですか?
>151 Cでは関数の引数として配列を渡すことはできない。 常にポインタとして渡すことになる。 (>148でsizeof(buf)が4になるのはそのため) スマートも何も、引数として渡すしか方法はない。 0クリアしたいというのなら、どのみち関数内でも 配列のサイズが必要になると思われる。
>>148 MSC の cgets() みたいにすれば。
main{
char buf[4096];
*(int*)buf = sizeof buf;
kansuu(buf);
}
kansuu(char buf[]){
memset(buf, '\0', *(int*)buf);
}
>157 配列とか、ポインタが隠蔽されるのは個人的には嫌い。 しかし、型が入れ子になっている場合、宣言が読みやすくなるという人もいるだろう。 char (*p)[64]; より HOGE *p; が読みやすい、など
>154のようにBUFSIZで縛るのは愚策だな
>>159 環境に依っては実行時に転けるので要注意。
>>164 char配列をint境界に割り当てないコンパイラと、境界を跨いだintアクセスのできないCPUの組み合わせ。
ARMなんて捨てちまえよ。
知ったかを主張したいんですね
/ ̄\ | | \_/ _ |__ / \ / ─ ─\ / ⌒ ⌒ \ | ,ノ(、_, )ヽ | \ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」 / _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」 三. i! ゙ヽ、 Y" r‐!、 ヽ. 三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y! \_|!_二|一"f , !゙\ 三 〈, l|゙》-i|┴ーi´ / イ ´ i! 三 ♪ ゙ー-ニ二__,/ / / 三 ♪ /゙ У / / 三 //,/-‐、 / i! _{! j!'〈 ♪ / ,,.ノ \'' ヽ \ 〈 ーぐ \ ヽ ゙ー″ 〉ー- 〉 〈___ノ
ほっほっ
ほっほっ
ふっほっ
>>173 Eが落ちた。
>>172 使い回しできない。使い回ししないなら、関数内でクリアするより呼び出し側でクリアする方が自然(≒依存度が下がる)。
私はmemsetの話を関数の依存性の話にすり替えることで優位に立とうとします。
優位もへったくれも、そんなもの気にするから小物なんだよ。
WindowsでC99コンパイラーはありますでしょうか?
MinGW は C99 使えるよ
GNU gcc Cygwin でも C99 使えるよ
>>174 君が言ってるのは、お題が気に食わないってことかな?
ここでは関数内で初期化する事が要件なんだけど。
それと、数行のコードの再利用性で愚作とまで言い切るのは相当凄腕のエスパーだよね。
この程度のコード片なら、使い回し等考えずに一番簡潔な方法で書いた方が良いと思うわ。
関数に配列の大きさを渡さないで、関数内部に固定の数値を持つことが気に食わないんだろ
>>181 ×愚作
○愚策
普段から策もなく行き当たりばったりに作っているから間違えるんだよ。
そもそも、memset()するだけの関数なんて存在意義がない。
何らかの処理をする関数の一部と考えれば使い捨てと断じるのは迂闊。
でも論点ズレてるよね^^ ブフフwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
あれ?揚げ足取ってるだけじゃね?w
そろそろマクロに頼る頭カチカチコーディングから卒業するべき 配列のサイズを知る方法は確立されてるんだからそれを使え
memsetはインライン展開される場合もあるのに、関数化などお笑い
今まで書いたコードを間違って上書きしてしまいました。 CTRL+Oでファイルを開くつもりが、人的操作ミスでファイルを保存するダイアログを開いてしまい、 現在の内容を選択したファイルに保存してしまいました。 このような事を二度と繰り返したくないのです(3回ミスをしました) どのようにバックアップを取ればよいでしょうか?
190 :
52 :2011/04/20(水) 13:49:14.07
自動で履歴をとっておけよ。そういうソフト入れろよ。
Emeditorや秀丸とかのエディタは、過去の履歴を自動でバックアップする設定付いてるぞ。 別のエディタでも設定ある可能性。 自分は、少しでも変更あったらすべての連番を自動バックアップしてる。
最近は、編集中のバックアップとるとか気にしたことないな。
バージョン管理ツール
194 :
デフォルトの名無しさん :2011/04/20(水) 14:12:24.19
>>189 そういうミスをする根本原因を解決しないと、どんなツールを使っても同じミスをするぞ。
マウスの操作が苦手ならキーボードショートカットを使うとか、
判っていながら間違ったダイアログを開いてしまうのなら……その場合はどうしたらいいか知らんが。
>>191 自動バックアップって、>189のような上書きにも対応しているのか?
少なくとも一世代は先祖還りしそうな気がするのだが。
その点では、>189のミスに対応するには保存した版をバックアップする機能が必要になるね。
リビジョン管理ツールと連動できるエディタならできるだろうけれど。
>>189 エディタの開くダイアログや名前を付けて保存ダイアログを使わない
エクスプローラから直接開いて上書き保存だけする
つうかsizeof以外に配列のサイズ求める方法ってあるの?
>>195 対応するエディタを使っていれば、上書き保存される前に、未変換のテキストをバックアップフォルダへ連番でバックアップできる。
秀丸エディタ使ってます GITをWindowsに入れてみたいのですが使い方とか良く分かりません
入れてみる前から分かるはずないだろ
>>199 おまえ、不正なPASSで秀丸使ってるだろ。
ちゃんと金払えよな。
>>189 ショート・カットキーは押し間違えやすい
ミスタイプってあるよな?あれと同じ事が起きる
俺もCtrl+CとCtrl+Vをたまに押し間違える
対策はボタンを使うか、面倒だけどもメニューから
開くを選択する事だ
すいませんミスです入れてた後です 入れた後なんですがどうやってバックアップを取ればよいのか Gitって難しいですね SVNなら簡単なんでしょうか? 秀丸エディタはお金を払って利用はしておりませんが作者様から免除のライセンスを頂いてますので正式ユーザーです 一応フリーソフト開発者です
バージョン管理ツールは使い方わからん。 これって関数の仕様が決まってからでないと使えないのか? 動作しファイル組み合わせは自動で記録できるのか。
すいませんミスです ×Gitのスレも除いてみます。ありがとうごじあます ○Gitのスレも覗いてみます。ありがとうございます 興奮して早くレス打たないといけないと思って誤字になりました。
秀丸のファイルタイプ別の、保存とかいう所に世代バックアップあるぞ。 常に秀丸を使うんだったら、この機能ONにしとけば全部残る。
秀丸のバックアップを試してみたんですが 保存した内容と同じでないのでツライです 2回保存しないと同じ内容でバックアップになんないのでキビシイです
>>210 世代にしろ。変更前、保存前のデータが残るんだ。
変更前と変更後を常に残していけば良いんだよ。
動作しては。Aを更新して上書き保存する場合。 Aをバックアップフォルダへ移動した後に、変更後の内容をAのあった場所へファイル作成して保存するの。
作業過程(途中) と 区切れ目(どりあえず動作可能な一式がそろった とか) とを 区別してるな 前者はバックアップとってない or フォルダ(ディレクトリ)ごと 別にコピー(おおがかりに変更かけるときとか) 後者は バージョン管理ツールでコミット
>フォルダ(ディレクトリ)ごと 別にコピー(おおがかりに変更かけるときとか) これこそ(分散型)リビジョン管理ツールの出番だ。
何、C言語やってんのにここの連中はバージョン管理も出来ないの?
>>214 主目的が コピペ元 なんで、基本的には管理ツールでことたりてるね
基本 1本幹で 枝からの平行成長は使わない方向かな…
枝分け 複数並行リビジョン運用 根に修正はいって マージどおすべぇ問題に目を背けてる使い方
自分専用と割り切るならどの段階でもコミットしていいんでないかな。 タグだけ打っとけばどうにかなるだろ
219 :
デフォルトの名無しさん :2011/04/20(水) 15:50:24.80
>>215 入門書では教えないからね(このこと自体クソだが)
マージは怖くないよ
便利なマージツール、マージンガーZってのをみつけたよ。 まじでググってみるといいよ。
書けるのに読めない人がバージョン管理なんて出来るわけ無いでしょ
自分はwindowsエクスプローラーで手動でドラッグアンドドロップして、 コピー 〜 ○○というのを作る。 失敗したら手動で戻す。 SVNとかテキストでそのまま残らないず管理ツール本体が壊れたら嫌だ。
>>223 SVNなら週一でスナップショットをローカルに保存しときゃいいだろ。
まあGIT使えばそんな心配もねえけどな。
言語の入門とバージョン/リビジョン管理入門はセットになってると良いが… なかなかそうはいかんよな
バージョン管理は使わん。 自動でやってくれないし、無駄なファイルを生成するし。 自動でバックアップフォルダへ連番つきで保存してくれれば十分。 普通のテキストエディタでこの機能は付いている。
そりゃそうよ。本を書いているのは現場経験のない人間なんだから。 だから、未だにprintf()とscanf()のフォーマット指定は互換だなんて書いてある本が出回るわけで。
重複しない名前でバックアップしてくれるだけで、 あとは問題起こったとき更新日時から手動で復元できる。 バージョン管理ツール何が良いのか。
>>211 それだと
保存したときに、変更前の内容がバックアップに残り、
最新の内容がバックアップに残りません
最新の内容を間違えて上書きしちゃったときのためにバックアップを取りたいのでキツイです
>>226 連番だけでひたすら保存して、特定の状態に戻したくなったらどうするの?
私は連番管理や日付け管理ではその辺りがどうにもならないからリビジョン管理ツールを使っているのだけれど。
分岐の管理もできるしマージは強力だし、今では只のバックアップに留まらずいろいろ有効活用しているけどね。
差分見て違いがわからないと...
>>229 最新の内容を上書きする前に自動でバックアップするから、
間違って上書きしないわけだが。エディタを固定して使っていたら。
>>232 うああああああああああああああバックアップされてました
ためしに無題ファイルで上書きしたらバックアップされてました
すいませんでした
あ、やっぱだめです ファイルを削除したときはバックアップされませんでした
削除すんなよw ゴミ箱に入ってんじゃない
無理ですよ シフト+DELETEで消しましたから
今度は間抜け自慢か?
シフト+DELETEなどはまれに起こる異常事態と考えてあきらめて、一つ前の履歴から復元しろ。 これからはシフト+DELETEを使わなければ良い。
一分ごとに自動保存、自動バックアップしていれば 異常事態が起こっても 最大で一分間の作業が無駄になるだけじゃん。 一分くらい気にするな。
つか一度書いたソースくらいさっさと書き直せよ。 さっきより良いコードが必ず書ける。
書くしか能がないのに覚えてるわけが
/ ̄\ | | \_/ _ |__ / \ / ─ ─\ / ⌒ ⌒ \ | ,ノ(、_, )ヽ | \ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」 / _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」 三. i! ゙ヽ、 Y" r‐!、 ヽ. 三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y! \_|!_二|一"f , !゙\ 三 〈, l|゙》-i|┴ーi´ / イ ´ i! 三 ♪ ゙ー-ニ二__,/ / / 三 ♪ /゙ У / / 三 //,/-‐、 / i! _{! j!'〈 ♪ / ,,.ノ \'' ヽ \ 〈 ーぐ \ ヽ ゙ー″ 〉ー- 〉 〈___ノ
ほっほっ
教えてください キーボードのAを押している間はディスプレイに任意の文字を出力させて、離したらその文字を消す というプログラムをつくりたいです ご教授お願いします
>>183 >何らかの処理をする関数の一部と考えれば使い捨てと断じるのは迂闊。
使い回すと考えるのも早計だと思うけど。
あの質問からそこまでネチネチ考えるのはむしろナンセンスじゃない?
茶茶入れする為の茶茶入れをしても誰からも感謝されないと思うんだが・・・
/ ̄\ | | \_/ _ |__ / \ / ─ ─\ / ⌒ ⌒ \ | ,ノ(、_, )ヽ | \ トェェェイ / おしっこジョボジョボミラジョボビッチ♪」 / _ ヽニソ, く おしっこジョボジョボミラジョボビッチ♪」 三. i! ゙ヽ、 Y" r‐!、 ヽ. 三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y! \_|!_二|一"f , !゙\ 三 〈, l|゙》-i|┴ーi´ / イ ´ i! 三 ♪ ゙ー-ニ二__,/ / / 三 ♪ /゙ У / / 三 //,/-‐、 / i! _{! j!'〈 ♪ / ,,.ノ \'' ヽ \ 〈 ーぐ \ ヽ ゙ー″ 〉ー- 〉 〈___ノ
普通は変更した部分なんて全部覚えてるから手動で戻せるだろ。 おまえら記憶力に障害でもあるのか? 脳の検査してきたほうがいいんじゃね?
>>245 なんとかできそうです
ありがとうございました( ´ ▽ ` )
ほっほっ
ひゅん
へっほっ
いつの間にか不具合が紛れ込んでたみたいなときにどの修正がまずかったか切り分けができるのがいいね
はっぷっ
どぴゅっどぴゅっ
ぶはっ!選ぶはっ!
しゅっしゅっ
ほっほっ
ふっほっ
memset
ひっふっ
はっはっ
ぴっふっ
べっぽっ
がう
ぽひょ
ひっへっ
ほっほっ
ほっほっ
ふっほっ
ふっふっ
ひっひっ
ほっほっ
ほっふっ
ふっふっ
ふっほっ
>267 サンクス
285 :
デフォルトの名無しさん :2011/04/21(木) 12:40:54.28
C言語でOSってかけますか??
>>285 書けますが、基幹部分とI/O及びアトミック操作はアセンブラで書かざるを得ない
場合がほとんどです
LINUXの95%くらいはC言語で書いてあるんじゃないかな?
99.6%
単位はByte。 Cソースコード分量 / (Cソースコード分量+アセンブラコード分量)
LinuxはC++だろ
LinuxはモノリシックだからC言語が最適だな あれをアセンブラで書けと言われたら気が狂う
C++のテンプレート部分だけはCにも欲しいな。 まあべつにCでポリモできねえわけじゃねえし。
テーブルのサイズが大きすぎてメモリを使い果たすことはありますが ソースコード量が多すぎてテキスト領域がバッファオーバーフローすることはないんですか
それはもしあったとしても実行ファイルをリンクする時点で判明するんじゃない
やっぱりCだけ覚えとけばC++は必要ないの!?
>>296 どちらでも
ただバグ取りはCよりC++の方が格段に楽
なんで!?何でC++のほうが楽なの?Cと比べてC++だと何がいいの?
クイックソートの欠点って何でしょうか? クイックソートが一番早いならソートは全部クイックでやればいいのでは?
C++のほうがプログラムが容易になる。クラス、テンプレート、STLなど。
>>299 同値のデータがあったときに、並び方が変わることかな?
>>299 データすべてがメモリに乗っていないと遅くなる。
HDDを補助に使えるソートのほうが速くなる可能性。
シーケンシャルアクセスで済ませれば、HDD使ってもそれほど遅くならん。極端には。
メモリ使用パターンとインデックスソートソート 対象の配列が主記憶を使い切るような大きさであった場合、より低速な補助記憶装置が使われるので、 アルゴリズムのメモリ使用パターンが重要となる。 そのような状況では、主記憶上ですべてソートできることを前提としたアルゴリズムは効率が極端に悪化する可能性がある。 このような状況では、比較演算回数はあまり重要ではなくなり、ディスクとのメモリ領域のスワップ回数が重要となる。 したがって、なるべくスワップ回数を増やさないようにするために、配列全体を走査する回数や比較の局所性が比較回数よりも重要となる。 例えば、再帰型のクイックソートは主記憶上では性能が良いが、ソート対象の配列が主記憶に収まらない場合は スワップが頻繁に発生して、性能が極端に低下する。 したがって、そのような場合は比較回数が多くても他のアルゴリズムを使った方がよい。 ソート - Wikipedia
分布数えソート(最高速のソート)
最高速のソートとは大きく出たなと思われるでしょうが、
分布数えソートはクイックソートですら足元に及ばないほど高速です。
おそらく、広く知られたソートアルゴリズムの中ではこれが最高速のソートでしょう。
その計算量のオーダは O(N)という驚異的なものです。
しかも分布数えソートは安定なソートなのです。
http://www.moon.sannet.ne.jp/okahisa/sort/node25.html バケットソートは、ソートのアルゴリズムの一つ。
バケツソート、分布数えソート、計数ソート、ビンソートなどともいう。
計算時間はO(n)と高速だが、要素の定義域分の外部記憶が必要。安定ソートが可能。
バケットソート - Wikipedia
307 :
デフォルトの名無しさん :2011/04/21(木) 22:33:32.84
>>304 スワップって何ですか?
プログラムを書いただけではメモリ使用パターン何て分かりません・・
マージやヒープソートはどうなんですか?
>>306 クイックソートより早いソートは不可能って前レスであったけどどうなんでしょう?
308 :
デフォルトの名無しさん :2011/04/21(木) 22:34:14.97
テキストファイルを編集して別の新しいテキストファイルに出力するコードを作り、エラーもなくコンパイル出来たのですが、 ファイルのどこを探してもそのテキストファイルがありません・・・ 漠然としすぎだとは思いますが、どこに問題があるのか分かる方いらっしゃいますか?
そのコードをコンパイルしてできた実行ファイルはどこにある?
>>307 スワップは、巨大メモリ(仮想メモリ)を使用して、ランダムリード、ライトがあれば起こりやすい。
メモリ上だけ処理できないってことだ。
クイックソートだと、初めに二分割するときに、メモリ上で大規模な入れ替え、大移動が起こる。
>>307 分布数えソート(パケットソート)は、ソートする値が、たとえば 0〜100 の間、という風に狭い範囲に限定しているときに力を発揮します。
もっと一般の場合、たとえば 0〜4294967296 の範囲といった場合には、主記憶をそれだけ必要とするゆえに、現実的でなくなります。
312 :
デフォルトの名無しさん :2011/04/21(木) 22:49:31.92
そんなことよりも何よりも、クイックソートは整列済みのデータのソートが呆れるほど苦手だな。
分布数えソートってなんだろうって思ったらバケットソートの別称なのね
またクイックソート信者か クイックソートは悪くないけど、盲信してる奴は最悪計算時間を知らない奴が多い あと非安定だから用途によってはマージソートとか使った方が良い
最悪計算時間よりも、平均計算量が大事。多くの場合は平均時間になるため。 クイックは大域的なメモリアクセスが起こるのも良くない。
巨大なソートは、分布数え + クイックでいいのでは? たとえばソート対象はaa* 〜 zz*として。 aa - ca、 cb - fd 、fe - ma、・・・ とファイルへ分類して書き出しておき 各ファイルはメモリ上でソート可能とする。 それらをソートして連結。 前にも同じような事書いたが。
ちょっとまって! ってことはCよりC++を勉強したほうがいいってことなの!? Cがおすすめってここで教えてもらったのに超損した!
>>318 Cでオケ。C++やるならもっと他の選択肢も検討した方がいい。
>>313 えっ、なんでなんすか?
整列済みなら、手間が省けて余計に早くなるんじゃないん?
違うんですか?
勉強してください
C言語よりコードが読みやすい言語はないだろ。緻密だから分かりやすい。
シーケンシャルアクセスで済ませれば、HDD使ってもそれほど遅くならん。 >> ___ ━┓ / ― \ / (●) \ヽ / (⌒ (●) / /´ ___/ | \
326 :
デフォルトの名無しさん :2011/04/22(金) 00:32:20.12
>>306 大きくも小さくも最速かどうかは証明か反証のどちらかが見つかっているということだ
驚異的とかハァハァするとかそういう主観は誰もおまえに尋ねてはいない
おまえに対する要求はただ1つ、嘘をつくな
>>326 データ数Nで計算量がO(N)より縮まることはない。
質量保存則、運動量保存則と共通する原理に近い。
C言語には文字列型がないと聞きました。 文字列型がある言語では、例えば"TREE"や"mountain"などの文字列は 全て同じバイト数なんでしょうか?
計算量的最速って意味ね。実測ではクイックソート他のほうが速いことはあり得る。
>>328 同じバイト数でそれら扱う言語があるかも知れませんが、スレ違いですね
331 :
325 :2011/04/22(金) 01:09:26.27
fC0eNFSnjkhYtDZに水遁されたw まじ糞過ぎるwwwwww
>>315 非安定は、たとえばデータに通し番号を打って比較交換のときに考慮すればいいので、大きな問題ではない。
なお私はシェルソート信者。
>>327 それはソートにおける原理と限定しておかないと。
内部安定ソート以外は欠陥だっつってんだろ
せやな
CでGUI作ろうと思ったら環境依存じゃないと駄目なの? そんなモジュールとか用意されてない? 例えばLinuxだとどうしたら・・・
仕事でやってる人に質問です Cが出来てJavaが出来ない人っていますか? その逆もいますか?
>>341 Cができれば、Javaは出来るんじゃないか?
逆は無理かも知れない。
>>341 両方いるね。
書けても、形だけとかそんな感じのも多い。
CをやってC++,JavaをやってCに戻ったらCのコードがオブジェクト指向臭くなってよくなったわ
>>341 俺俺 C⇔C++ はOK
Java は無理
当たり前に使ってる標準関数とかの相当品をリファレンス頼りにいちいち探さないとっていう理解度なので
道具として即使えてる C/C++ で済ましてる
C言語で少数点20以下〜20桁までの計算(結果もこの範疇)したいのですがどうしたらいいですか? 10000000000000000000.00000000000000000000です。 例えば6323234×32342とか 0.2323×0.232453とか。
>341 両方いる。 Cがちゃんと分かっている人には、ちょっと説明すれば、Javaは かけるようになる。あとはAPIを覚えるだけ。 Javaがちゃんと分かっている人も、説明すればCでかけるだろうけど、 Cは標準関数があまりにも質素すぎて、我慢出来ないと思う。 まぁ設計が判る人というかOOPやデザパタが判る人なら、 C⇔Javaは可能でしょ。
Cでコード書けてもちょっと説明されただけじゃJavaでまともなコードかけない。
350 :
デフォルトの名無しさん :2011/04/22(金) 22:41:54.96
プログラマーになるためにはC言語を最低限どの程度覚えたらいいでしょうか?
ならされた奴 いつのまにかなってた奴 は心当たりはあるけど なりたいって言ってなった奴 ってあんまり印象ないな
最低限って、 書き方覚えてもダメってことがこのスレ見たらわかるでしょ
最低でも人様に使っていただく事ができるソフトをいくつか提示できる程度
354 :
デフォルトの名無しさん :2011/04/22(金) 22:54:04.27
>>341 漠然と聞きたければマ板へ行け
ム板で聞きたければ具体的な問題を用意しろ
>>346 その精度で計算できるハードウエアを持ってくる
356 :
デフォルトの名無しさん :2011/04/23(土) 00:45:02.95
参加申請とかはそこを見ればいいんですか?
リトルエンディアンとビッグエンディアンについて質問。 <前提> 例えば 0xAABBCCDD の場合、これを配列 unsigned char a[4] だと リトル: a[0] = DD a[1] = CC a[2] = BB a[3] = AA ビッグ: a[0] = AA a[1] = BB a[2] = CC a[3] = DD となります。 これを printf("%x %x %x %x", a[0], a[1], a[2], a[3]) とすると、 リトル: DD CC BB AA ビッグ: AA BB CC DD となります。
359 :
358 :2011/04/23(土) 06:38:09.24
a[0] と a[3] の、メモリー中での位置を比較した場合、 上位番地 0xFFFF a[3] a[2] a[1] a[0] 下位番地 0x0000 となります。 だから &a[1] + 1 == &a[2] です。 配列の番号と、メモリの番地が比例関係なのは、リトルエンディアンでも、ビックエンディアンでも同様です。 (もしもリトルとビックで、配列の番号順が逆になってしまったら、 反比例の場合 &a[1] + 1 == &a[0] という現象も起こりうるはずですが、実際には起きてません。) 0xAA を2進数に直すと 10101010 です。これは 上位ビット(上位番地) 1 0 1 0 1 0 1 0 下位ビット(下位番地) です。 これも配列同様に、ビックでもリトルでも、変化しません。 <質問> つまり、ビックエンディアンで順序が逆転するのは、あくまで1バイト単位のブロックの並べ替え単位にすぎない。 ビット単位での逆転は起きない。ビット単位で見れば、上位ビットの高位桁、下位ビットに下位桁が記録されるというフォーマットに違いはない。 という理解で良いですか?
C言語まったく関係ねえじゃん
361 :
358 :2011/04/23(土) 07:13:25.38
ビックとリトル、どちらが自然か?という観点で考えた場合、リトルの方が自然だと思います。 なぜなら、『数値の位』と『メモリー番地』が対応するからです。 リトルエンディアンの場合 1 の位が、メモリー番地 0x0001 だとします。 2 の位は、メモリー番地 0x0002 です。 4 の位は、メモリー番地 0x0003 です。 8 の位は、メモリー番地 0x0004 です。 つまり、位が増加すれば、メモリー番地も増加します。 ビックエンディアンの場合 1 の位が、メモリー番地 0x0018 だとします。 2 の位は、メモリー番地 0x0019 です。 4 の位は、メモリー番地 0x001A です。 8 の位は、メモリー番地 0x001B です。 (1の位 〜 128の位までに関しては、位の増加 = 番地の増加です) しかし、 256 の位は、メモリー番地 0x0020 ではなく、 0x0010 になります。 つまり、位の増加と、メモリーの番地の増加が、必ずしも比例しないということです。 だからビックエンディアンは不自然だと思います。 もしもビックエンディアンの目的である「下位桁よりも、上位桁を先に読んでいける」を自然に実現したいのであれば、 バイト単位の入れ替えではなく、ビット単位での入れ替えをして記録すべきだと思います。(そこまで徹底してほしいです) つまり、 Xエンディアンの場合 1 の位が、メモリー番地 0x001F だとします。 2 の位は、メモリー番地 0x001Eです。 4 の位は、メモリー番地 0x001D です。 8 の位は、メモリー番地 0x001C です。 という具合に、メモリー番地と位が、完全に反比例します。(ビット単位で)
362 :
358 :2011/04/23(土) 07:18:25.78
補足: 361のメモリー番地は、バイト単位ではなく、ビット単位としてです。 つまり 0x0000 〜 0x0020 で4バイトという意味です。
ビット単位の順序は無意味 ビットにはアドレスが付いておらず、ビット単位でメモリから読むことは出来ない バイト単位で読めば例えバイト内でビットが逆順で記録されてても読むときには通常の順序に戻る
>359 質問にたいしては、その理解で良い、かな。 エンディアンを「バイトオーダー」ともいいますが、要するに、バイト単位でのデータ配置 方法を指しています。バイトの中身のビットフォーマットについては触れていません。 というか、Cの中ではビットの具体的な配置方法を知る方法は無いから、実際の ビットフォーマットが逆転していてもわからないと思いますよ。
365 :
358 :2011/04/23(土) 07:38:38.05
この仕様書の
http://k.osask.jp/nosup/knzk000a.zip #0004 : エンディアン等
の章で、ビッグエンディアンを採用するらしきことが書かれてるのですが、
気になったのは、最後の行の「これがワード列やビット列になってももちろん同様の方針
を採る。」です。
『ビット列でも同様』ということは、つまり
ビット単位で『上位アドレス=下位桁、下位アドレス=上位桁』をやろうとしてる? ということなのでしょうか?
だとしたら、これはビッグエンディアンと呼べるのでしょうか?
別物ではないでしょうか?
むしろ、さっきの例のXエンディアンに相当しませんか?(ビット単位での、全体的な、上位下位の逆転)
どうにもこの章の言わんとしてることが、いまいち理解できなくてこまってます。
ただ、思想としては、「符号ビットをまっさきに読みたい」という考えなのだろうから、
データの記録や送信や運用の方法として、「まず上位桁のバイトから転送していく」という考えなのだろうか?
366 :
358 :2011/04/23(土) 07:40:22.54
誤:「まず上位桁のバイトから転送していく」 正:「まず上位桁のビットから転送していく」
そもそも1バイトが何ビットであるかは決まっていない。
>>365 先ず第一に、スレ違い。
第二に、仕様書の問題なら当事者に聞け。
まぁ、趣旨としては「データをビット単位で扱う場合もワード単位で扱う場合も先頭データが先頭バイトに格納される」だと思うが。
データの並びと格納されるバイトの中身をごっちゃにしちゃいかんよ。
369 :
364 :2011/04/23(土) 08:29:50.56
>365 >ただ、思想としては、「符号ビットをまっさきに読みたい」という考えなのだろうから、 >データの記録や送信や運用の方法として、「まず上位桁のバイトから転送していく」という考えなのだろうか? メモの内容はそうですね。というか符号ビットが大事だから、先に置くというポリシーらしい。 くり返しなりますが、 Cでは「物理的なビットオーダー」を気にする場面は無いはずです。 0x0aが MSb 0b1010 LSb でも LSb 0b0101 MSbでも Cで扱う場合は、それを区別できないですよね。 少なくとも同一のハード上で、それを気にすることはないです。 異なるハード間の話になれば、それはプロトコルの問題になります。
>>369 >0x0aが
>MSb 0b1010 LSb でも LSb 0b0101 MSbでも
それ一緒や
ビッグエンディアンだとハード屋さんにとって何が嬉しいの
嬉しくない…
ビッグエンディアンってみんなを不幸にするシステムなんじゃないの
a[0] と a[3] の、メモリー中での位置を比較した場合、 上位番地 0x0000 a[0] a[1] a[2] a[3] 下位番地 0xFFFF となります。 >>って、直してあげればいいんじゃない。...
>370 だから一緒だって。 物理的な並びと、それを同解釈するかは別問題でしょ。 横書きを左から右に読むのか 一期一会 右から左に読むのかは 会一期一 決め事でしか無いわけだから。
376 :
369 :2011/04/23(土) 11:30:30.38
369=375です。 なんだか舌足らずですみません。 物理的なビットオーダーがどうなっていようが、意味的なビット状態が 同じならば気にならない、ということです。 そもそもCではビットオーダーがわかりません。 Cでプログラムしている上では気にしたことも無いです。 いま気づいたけど、 >362 >361のメモリー番地は、バイト単位ではなく、ビット単位としてです。 ビットにはアドレスは無い。ここから勘違いが始まっている?
377 :
374 :2011/04/23(土) 11:51:26.62
エンディアンにビット順序は関係ない。エンディアンはバイト順序。
378 :
デフォルトの名無しさん :2011/04/23(土) 16:00:12.26
10日でおぼえるC言語入門教室という参考書を一通りしたのですが、 これだけではプログラマーになるには難しいですか?
君は今、プログラマーじゃないだろう? そういう事だ
>>378 プログラマーとはプログラムを作る人だ
つまり何らかのプログラムを作れば、あなたはプログラマーだ
参考書を読んだだけとか参考書のソースを写しただけとかじゃ自分でプログラムを作ったとは言いにくいが
何か作ってみ
そういうのはいいです
まずプログラミング言語とは道具であるという理解が大切。 10日でおぼえる〜を読んで自分のしたいことを実際に作れるか。 それで知識が足らないと思うんならもっと勉強する。 これでアナタも立派なプログラマー
そういうのもいいです
無理。終わり
進化とは淘汰の結果である つまりできるやつは最初からできるしできないやつはできないまま死んでいく 努力したらできないやつができるようになるわけじゃないセンスのないやつにはどうしようもない つまり向いてないから死ねということ
web系やるならCはコンソールで何か作れる程度に抑えて、JavaやPHPを極めたほうが仕事としては良いですか?
>>387 そうですね。
C は必要になったら思い出せる程度で良いと思います。
それと SQL と JavaScript も習得すると良いと思います。
結局今からやるならどの言語よ? C++, Java, PythonでOK?
C, Java, Python, JavaScript を薦めとくわ
ここは C 言語のスレですから・・・
C++, Java
もうC++の栄光の時代は終わった すでに使えるならともかく、今から覚える言語としては・・・
ほっほっ
むしろいまだにJavaが勧められることに驚き
サーバサイドで生き残り、スマートフォンで生き残り とにかくしぶとい印象があるから
Androidアプリ作りたいんですけどJavaって今からならやらないほうがいいですかね?
組み込みにおけるCのようにモバイルの主流はJavaじゃないの
>397 Androidアプリをやりたいなら、Javaをやらざるを得ない。 >398 レイヤーによる。 アプリ層はJavaが多いが、下回りはCが多いのではないか。
bitfieldの記述の時にエンディアンで変わるんですけど...
質問ですがWindowsのシステムはC言語で作られているんですか? それともコンパイラによってC言語が使えるようになってるだけですか?
低レベル部分は謎だな
一番低レベルな何言語、どんなOSにも共通する言語って何なんですか? また言語を開発するときその低級言語を理解してないと言語の開発はできないのでしょうか?
>>403 1行目:そんなものは存在しない
2行目:そんなことはない
windowsの機能を使うには、winapiやダイレクトXでいいだろ。 それより低級なアクセスはせず言語作れるだろ。
日本語でお願いします
開発した言語からCに変換できればそれでいい
フリーの逆コンパイラは一応あるけど 雰囲気が掴めるかな〜程度だったな
winAPIって難しいよね〜 普通に構造体やら配列のポインタやら使いこなせないと分からん。。。
>>409 全部を理解しようと思わずに、やりたいことがあればその度調べながらって割り切ってやればそんなに難しくない
ってかまともにやってられないわ
WinAPIは面倒くさいだけで難しくはないと思うが
412 :
デフォルトの名無しさん :2011/04/24(日) 00:50:27.67
C++な部分の多くはCのラッパーなんじゃなないの
414 :
デフォルトの名無しさん :2011/04/24(日) 12:56:17.64
あかん、俺、どうもプログラムだけは性に向いてないみたいだわ。 10年やっても、どうにもならんかった。
いいえ。Cのトランペッターです。
ループ処理内で1つの条件を満たした時の値を変数に代入したいのですが 1回目見つかったとして、2回目が見つかったとき、変数の値に1回目、2回目の値と保存させたいのですが どうすればいいでしょうか?
変数Xに代入するとして X += X の式で継続的に値が入っていきますか??
値を入れる配列と、いくつ入れたかを保存する変数を用意する
+=演算子をオーバーロードすればおk
>>419 C言語でのオーバーロードのやり方を教えてください
ほら、釣りだっただろ?
>>416 >ループ処理内で1つの条件を満たした時の値を変数に代入したいのですが
>1回目見つかったとして、2回目が見つかったとき、変数の値に1回目、2回目の値と保存させたいのですが
質問者の意図を判断しかねるんだが。
条件によるデータの検索なのか、
値を使った計算値が条件を満たすか、とか。
前者なら、同一ループ内で複数見つかる事もあるだろうし。
代入したい値というのが、満たしたときのループの条件なのか、
それとも条件を満たす、見つけたデータなのかもはっきりしない。
>>424 条件によるデータの検索です
代入したい値は見つけたデータです
data[N], data_cnt = 0; for( ; ; ) { if(データ発見) data[data_cnt++] = 見つけたデータ; }
>>426 ありがとうございます
配列を使用するみたいですね
配列を勉強してきます
for(;ω;){
418で終わってりゃいいのにな
スレチになるとは思うけど、ふと思ったんで書いてみる。 fseek関数ってファイルの先頭と末尾の両方を指定できるんだから、 現在のメモリ番地を返却できるようにしてくれれば 簡単にファイルサイズ分かる気がするのは気のせいだろうか。
>>430 そうだな ftell みたいなのがあればなぁ・・・あれっ
fseek(SEEK_END)してftell()するイディオムは、対象がストリームやテキストモードの場合に破綻するので要注意。
素直にstat使えばいいのに。駄目なの?
ftell()はリターン値がlongだから。
これだからUNIX厨は
ファイルシステムが環境によって異なるからなんだろうが、 ファイルサイズくらいは標準的な取得方法があってもいいよね?
WindowsでもVCなら_stat(), _wstat()が使えるな BCBなら _stati64, _tstati64, stati64, _wstati64 Win32ならGetFileAttributes()
その調子であらゆるプラットフォームについて書いていってください
やだよ stat()のラッパーでも書けば?
関係ないかもしれないけれども、 win32api で既存のファイルにある内容をアペンドしようとして、 SetFilePointer(, , ,FILE_END) -> WriteFile() すると、ゴミが混入してしまいました。 SetFilePointer(f, 0, NULL, FILE_END) でも SetFilePointer(f, 1, NULL, FILE_END) でもうまくいかない。もしかして -1? まさか‥‥‥。 苦肉の策として s1 = GetFileSize(f, &s2); SetFilePointer(f, s1, (PLONG)&s2, FILE_BEGIN); WriteFile(f, p, strlen(p), &n, 0); にしてしまったんですが、正解はなんでしょうか?
スレ違いです Win32 APIスレで聞いてください
443 :
デフォルトの名無しさん :2011/04/25(月) 12:05:44.75
yonmoji.exeって名前のプログラムをコマンドプロンプトで実行すると4行の文字列を出力します あああああ いいいいい ううううううう えええええ これを3行目のみ背景色を変更する方法はございますでしょうか?
どうぞこちらに ideone.com yonmoji.c を貼り付けて下さい。
>>443 C標準ではそんな機能はありません。Windowsなんかを使っているなら>445でもいいとして、
そうでないなら環境を明記の上、環境依存もOKのスレでどうぞ。
447 :
デフォルトの名無しさん :2011/04/25(月) 12:47:13.57
449 :
デフォルトの名無しさん :2011/04/25(月) 20:06:11.11
visual c++ 2010使ってWin32コンソールアプリケーションで空のプロジェクトで C言語の勉強してるんだけど、 ファイル入出力(fopen,fclose等)がうまくいかない コンパイルとその後の実行はできるんだけどファイルが生成されない どうしてか分かる人いますか ↓ソース
450 :
デフォルトの名無しさん :2011/04/25(月) 20:08:19.15
#include <stdio.h> int main() { FILE *fp_r, *fp_w; int cc; printf("start fcopy.\n"); if((fp_r=fopen("C:\\Documents and Settings\\***\\My Documents\\Visual Studio 2010\\Projects\\file01.txt", "r"))==NULL) return(-1); if((fp_w=fopen("C:\\Documents and Settings\\***\\My Documents\\Visual Studio 2010\\Projects\\file02.txt", "w"))==NULL) return(-1); while((cc=fgetc(fp_r)) != EOF) fputc(cc, fp_w); fclose(fp_r); fclose(fp_w); printf("end of fcopy.\n"); }
カレントディレクトリとexeのあるディレクトリの違いに注意。
file01.txtがないとか、file01.txt.txtだったとか。
デバッガの使い方を覚えるべき
454 :
449 :2011/04/25(月) 20:16:56.37
あら?すまそ 実行自体失敗してました どっかおかしいだけだ・・スルーでおねがいします
455 :
449 :2011/04/25(月) 20:23:14.97
すまそ、パス指定っていうかディレクトリ1階層まちがってた だけだった
エスケープシーケンスは
457 :
デフォルトの名無しさん :2011/04/25(月) 21:48:18.67
VC++2010Expressなんですけどプロジェクト作って下のコード書いてF5押しても実行できません #include <stdio.h> int main(void) { printf("test"); return 0; }
実行できないんじゃなく、あっという間に終了してるの 気づいてないだけじゃないの?
460 :
デフォルトの名無しさん :2011/04/25(月) 22:08:16.15
なんか下のほうのスペースに文章が出てきて実行できないんです Shift+F5押してみましたが反応しないのでF5押してみました こういうふうにでてました cuimenu.cpp cuimenu.cpp(1): warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します cuimenu.cpp(8): fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "StdAfx.h"' をソースに追加しましたか? ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
>>460 cuimenu.cppの頭に
#include "StdAfx.h"
を追加してください
そのまえにスレ違いだろ
空のプロジェクトにせずにwindowsアプリケーションかなんかでプロジェクト作っただろ だから素人はLinux+viでgccしろと言ってるんだ
464 :
デフォルトの名無しさん :2011/04/25(月) 22:29:14.46
テキストエディタでC言語の勉強してきてStdAfx.hは出てこなかったのですがVC++の場合は特別に書くまりなのでしょうか?
465 :
デフォルトの名無しさん :2011/04/25(月) 22:34:12.72
aの値が100だったらループから抜けたいのですが ifに書き換えずに、swtichを使う場合どうやって抜け出せばよいでしょうか? int a = 100; while(1){ switch(a){ case 100: break; } }
プロジェクトの設定で、プリコンパイル済みヘッダーをOFFにすればスッキリするよ。
int a = 100; こうだな while(flag){ switch(a){ case 100: flag=0; break; } }
while (1) { switch (a) { case 100: break; default: continue; } break; }
int main(void){ fuck(); } void fuck(void){ int a = 100; while(1){ switch(a){ case 100: return ; } } } これで案は出尽くしたか
>>465 #include <stdbool.h>
int main() {
bool f = false;
int a = 100;
while(1) {
switch(a) {
case 100:
f = true;
break;
}
if(f) break;
}
}
無駄な変数と関数追加してんじゃねぇよ!
って言うと思った・・・
4 秒遅かったか・・・
flag を使う事に突っ込む人の解答は見た事が無いのであった
その条件ならラベルは変数でも関数でもないからgotoでもいいはず
479 :
デフォルトの名無しさん :2011/04/25(月) 22:57:18.71
ogog ogto gogo ottg toog
caseが1個だけならそれらでも問題ないけどswitchで1個前提のコードはきもいよ
getchで矢印の上キーを取得したとき、判定は72と0x48のどっちがいいでしょうか?
>>482 どっちでもいいよ。
あとマジックナンバー使わないようにな。
マジックナンバーってなんですか?
プログラムの途中にとつぜん出てくる 72 とかの意味わかんない数字のこと
まだこういう狂信者いたんだ
int sln(char *str){ int sln=0; for(;str[++sln];); } これは何をするプログラムでしょうか? コンパイラ: bcc32
>>488 正解。 2byte文字にしか対応してないが
入力されたChar配列(文字列)の文字数をカウントして返す。
では
>>487 がbcc32使用で正しく動作する理由を簡潔に説明してください
returnしてないけど問題ないの?
当然エラー吐くだろうね
494 :
488 :2011/04/25(月) 23:51:58.98
strlen じゃなかった str[0]=='\0' の時の動作が違った うーん bcc だと最適化に関わらず sln には EAX が使われるのは確定なのかも分からん
returnを省略した場合は第一局所変数の値が返るから問題ない
496 :
487 :2011/04/25(月) 23:56:10.67
>>491 大丈夫だ、問題ない。
正解は
int slnはインラインじゃない自動変数であるから特に設定がない限りはEAXレジスタが使われる
よって、値が正常に返される
らしい
warningを無視すんなって
自分の環境では一応に正常にコンパイルされた。 bcc32とC言語を始めよう
わりと、こわい
>>497 もはやShortCoderの世界だから仕方ないさ
馬鹿なコンパイラは兎も角、最適化でループごと消えてなくなる悪寒。
ほう、どう最適化されるか言ってみ
で、bccでこのコードがエラー出ずにコンパイルできるのは コンパイラ(bcc)のバグなのか・・?
まともに読める(読もうとする)奴がほとんどいないね。
自己紹介はいいです
お前ら賢いな。
>>505 トリビアが必要なコードって目にする機会がなくなってくからね
トリビアがはやりなのかな、最近は
>>495 処理系によっては、たまたま期待通り動くだけでしょ
Cリファレンスマニュアルいわく
>プログラムの制御が return 文に出会わずに関数本体の終わりに到達したときの効果は、
>式のない return 文が実行されるのと同じである。
>関数の返却値の型が void でないと、その振る舞いは未定義である。
bcc32って環境の説明になってないだろ。 bcc55って書くならともかく。
>>377 ビット順が逆だからバイト順も逆になるんだが。
>>512 わざわざ古いネタ引っ張り出して馬鹿晒さなくていいから。
そういや Borland C/C++ Compiler 5.5 の日本語版ってもう正規の入手は不可だっけ?
Windowsです コマンドプロンプトに横いっぱいに文字列を並べたいのですが 何バイト分文字列を表示できるか調べる方法ってありませんか?
スレ違い
わかりました
画像ビューアを勉強で作りたいと思います jpg画像を表示させたいのですが難しいでしょうか? また、C#やJavaのほうが簡単でしょうか?
>>519 へぇ、「難しい」って言ったらやめんの?そんな考えならJAVAだろうがC#だろうがはなっから無理じゃね?
↑なんか嫌な事でもあったのか
>>519 JAVAのほうが簡単です。
ということで、もうこのスレには用は無いでしょうから二度と来ないで下さい、以上。
そうですか、理論的にCで作るのは面倒くさいというものを知っててのアドバイスだと思いますがjavaでやってみたいと思います ただこのスレには来るなと指図される覚えはありません
二度と来るな
525 :
519 :2011/04/26(火) 13:40:37.04
わかりましたもう二度とみなさんのお邪魔をしないようにします。 生意気な口を利いて本当にごめんなさいでした。
Cの入門解説スレでJavaだの他の言語がどうたらと聴いてくる奴なんなの?
お前も同類だろカス
530 :
デフォルトの名無しさん :2011/04/26(火) 14:19:38.77
誘導されたんでこっちでききます double pai = 3.14159; int mon = 2; float flt = 1.2f; printf("%5.2hf\n", flt); ↑ これを出力させると1.20になるようなんですがなぜですか? %5.2hfの意味がイマイチ分かりません。 hとfはいいんですが、5.2ってのがなんのこっちゃです
小数点以下を2文字で 全部で5文字になるように出力
>>530 どうでもいいけどそのhには何の意味もない。寧ろ害悪。普通に%5.2fと書くべき。
ついでに言えば、%gにももっと注目をw
>>532 1.20だから4文字ですよね
あと残り1文字はどうなっとりますか?
>>533 なぜですか?
では仕様が書かれたurlを教えてください 自分で読みます
537 :
488 :2011/04/26(火) 15:00:47.40
538 :
デフォルトの名無しさん :2011/04/26(火) 15:32:04.00
5カラム分のスペースを取り、小数点以下2桁。 先頭の余った桁は空白文字を埋める。
正規表現を使いたいのですがC言語で使えますか?
つかえますん。
標準では無いので、 鬼車とかのライブラリを用意する必要がある
正規表現ライブラリはCで書かれてるものもあるから、ある意味使えるといえなくも無い
メモ帳のカーソル前にある文字列を取得する方法はございますか? 例えばauioって書いてあったらプログラムでauioを取得したいのですが
>>546 秀丸ならそういうマクロも簡単にかけるよ。
getch() の後に何かを付け足せば入力待機のループになる というのを何処かのサイトで見たのですが忘れました 知ってる方いたら教えてください
getch();
551 :
デフォルトの名無しさん :2011/04/26(火) 21:33:17.37
マクロって何ですか?良く出てくる言葉なんですが意味が分かりません。 ミクロの逆って事は分かるのですが、C言語においてどういいう意味ですか?
◆QZaw55cn4cを叩いてる人たちは嫉妬してるんだな 完全に論破されてたもんなぁ まぁみんなも◆QZaw55cn4cを援護頼むよ
>マクロ (コンピュータ用語) - コンピュータ用語の一種で、プログラム中の文字列を定義された規則に従って置換すること。
>>552 >>554 コテ外してこんな所で吠えるなよ◆QZaw55cn4c
論破されてたのはお前の方だろ
モリタポ儲けという屁理屈も通用しなくなったし
負け犬◆QZaw55cn4c
>>548 メモ帳を挙げましたが、テキストエディタにとらわれず取得したいと思います
>>552 俺も援護する
金儲けではなくモリタポ儲けであることが運営に認められたからな
558 :
デフォルトの名無しさん :2011/04/26(火) 21:51:09.23
>>553 例を教えてください。
マクロって重要なんですか?
>>557 ==◆QZaw55cn4c
>金儲けではなくモリタポ儲けであることが運営に認められたからな
いつ認められたのですか?
>マクロって重要なんですか? 使わなくても書けるけど 知ってると何かと便利...
>>562 答えられないからって逃げるな◆QZaw55cn4c
どうでもいい
◆QZaw55cn4c の俺俺スレがある限りアンチの負けだろ
>>565 スレ主は叩かれまくってるけどな
マゾかいな
>>566 あれだけ馬鹿にされたり叩かれまくりでも活動するんだから
根性はあるんじゃないか
いまどき珍しいよな
◆QZaw55cn4cはお藻まいらにできないことをやってるんだよ
>>568 あれは完全に頭が逝っとる
精神科に掛かるべきレベルだよ
PGには頭が逝っているに多いからな
>>572 違うよ
論理学をもっと勉強しようね
頭が逝ってるPGは多いが
PGが必ずしも頭が逝っているとは限らない
逆は必ずしも真ならず
◆QZaw55cn4cはPGでないにも関わらず頭が逝ってるけどな
頭が逝ってるPGには、優秀なのがいる(たまにだけど)
でも社内でトラブルを起こして大抵クビになる
キチガイと天才は紙一重って言うしな でも、PGには頭が逝っているだけのが多いよな
>>576 それ逆
対人関係の多い仕事に就けないから、文句を言わないコンピュータ相手に
PGするようになった人種がかなり紛れ込んでいる
PG? コーダーだろ 上から降りてきた仕様書を黙々とコードに落とす作業してるのは
そんなよくできた仕様書見たことない
580 :
デフォルトの名無しさん :2011/04/26(火) 23:56:14.93
対人関係苦手な奴に限って問題解決能力だけはずば抜けてる奴いるよなw まぁ俺なんだけどw人と喋らなくても頭で色々考えてるから人の気持ちが 分からなくても人と共有してるものを介すとコミュニケーションが取れた りする。 でも対人関係も得意で問題解決能力も凄い人もたくさんいる^^
581 :
デフォルトの名無しさん :2011/04/27(水) 00:04:50.13
クライアントと熟練工の分業に変なメンタリティを持ち込んで 現場が見えてないエライ人vs周りが見えてない作業員という 協調すべきが敵対する変なねじれ構造を形成する 我が国の悪しき生産特性がここにもあるってだけだ
>>579 昔はそういう時代があったそうだよ。
その代わり、仕様書が上がるまで相当期間を費やされて、コーダーはほんとに必死でコードに落とすだけ。
50代くらいのコボラーはそういった世代じゃないかな。仕様書にクソうるさい人とかいないかい。
583 :
デフォルトの名無しさん :2011/04/27(水) 00:13:32.67
良く分からん。 コードに落とすってどういうこと? エンジニア プログラマー コーダーといることはわかるが 役割分担を教えてくれ。
>>580 そういうのをアスペルガー症候群って言うんだよ^^
職場では嫌われ者だよ
要件を仕様に落とし 仕様を設計に落とし 設計を実装に落とし そういえば何で落とすっていうんだ?ウォーターフォールとかV字のイメージ?
職種のランクを意識してんでしょ ランクの高い方から低い方に落ちていく
スレタイからどんどん離れていくw
>>583 設計書がプログラムとほぼ1対1のレベルで書かれていたらしいよ。
たとえばこんな感じ。
変数Aに3を入れる。
関数Aを呼ぶ、引数は変数Aと、定義値のHOGE
戻り値が-1なら
エラーログ出力関数を呼ぶ。引数は"〜〜に失敗しました。"
-1を返却する
関数Bを呼ぶ、引数は…
コーディングから実行できるまでにかかる時間や資源が今では考えられないぐらいかかる時代があったようだよ。
昨日からやたら他人を下に見る人がいるよね
>>578 設計とプログラミングは不可分ですよ。
どちらかしかしてない人は結局良いものはつくれないでしょう。
そうでもないよ
過信は禁物です。
>>593 のリンク先の「設計書」は、別のコードに記述されていた「コメント」を
羅列したって感じw
悔しいやつってレスに出るよな 長文きめえ
>>593 うちもこんな設計書もらって実装したり
こんな設計書書いたりしてるけど
まったく意味ないよな
こんなのレビューするくらいならさっさと実装してコードレビューしたほうが
問題点もすぐわかってましなのに
奴隷は黙ってろ
コードから起こすんじゃなくて、先にこのレベルの設計書を作っているとしたら、 設計書を作る方が奴隷であることは明らか。 その奴隷は奴隷の割りに知恵が働き、一回コードを書いて設計書を起こしているかもしれないが、 使われないコードを書いている行為はやはり奴隷である。
605 :
デフォルトの名無しさん :2011/04/27(水) 21:56:41.13
ただ働きの話かと思ってらっしゃる方がおひとりいらっしゃいますね
どちらにいらっしゃいますか
IBMのエンジニアってプログラミングしない(出来ない)人が多い 社内でプログラミング教育しないのはIBMの流儀らしいね
すみません、コンパイラ LSI C-86 Ver 3.30cについて コンパイルがうまくいかないのでお聞きしたいです。 DLしてから、Cドライブに直接 Lsic86 というフォルダ名で置き その中のBINフォルダ内にあるLCCファイルの書き換えも 済みました(XA→XC LA→LC IA→IC と書き換え) さらにシステムから、環境変数→Pathの設定から ;C:\Lsic86\bin; と書き加えて変更適用。DOS画面でpathコマンドにより 書き込まれてる事を確認。 以上を行ったうえで再起動してから メモ帳で簡単なprint文を作成し、拡張子を.cにして保存。 Lsic86フォルダにmySrcフォルダを作成し、そこに切り貼り。 DOS画面でcdコマンドによりmySrcフォルダをカレントにしておく。 いよいよコンパイル(test.cとする)というところですが、lcc test.c としても 実行されません。エラー文も出ず、何も表示されないというかバグるというか。 exeファイルは一応作成されてますが、testで実行しても何も表示されません。 書籍のCDROMに入ってるサンプルプログラムでも無理でした。 手順に特におかしいところは無いと思うのですが、もし何か見落とし あるいは設定などに問題があればご指摘いただけると幸いです。 OSはXPです。
ちなみにtestで作ったコードは #include<stdio.h> void main(){ printf("hello C \n"); } です。
XPでLSI C-86 Ver 3.30cとか、どんな罰ゲーム?
>>609 >610じゃないけど、設定を元に戻してそのままLSI-C86は忘れるのが吉。
どうしてもLSI-C86を動かしたいと言うのなら原因究明に付き合ってもいいけどはっきりいって、虚しいだけ。
その手間掛けるくらいなら、素直に今時の無料コンパイラを入手した方がいい。
PGと言えば、プリングルズの今後が心配だな。
品質落ちないと良いんだが。
>>608 悪いことは言わないから
Turbo C 2.01 にしておきなさい。
統合開発環境付きで初心者にもオススメだよ。
アセンブラのhltの制御不能版はありますか?(無限ループを除く)
test.exeをつくっててwindowsのtest.exeを呼んで何も起きないと言っているオチ?
そうです
ぜんぜん関係ないけどWindowsの場合、mainはintで正常終了時return 0;するって決まりなかったっけ?
あったけど廃れた。
んなこたーない
>>616 windowsに限らずCの基本
これを守らないCプログラムはすべてゴミ
というかvoid型は最初は無かっただけ。 最初からあったならmainはvoid型になっただろうね。 Javaみたいに。
ならねーよ。間抜けは黙ってろ。
終了判定に困るんだ(><;)
>>616 WindowsはGUIでは戻り値が何であろうと無視される
CUIの時には意味がある
main()←こういう風に書く奴も俺的にはちょっと気に入らん。 main(void)って書けよ、と言いたい。4文字程度キー入力ケチったところで意味が無い。
>>628 宣言時は違うが、定義時には事実上同じ。
>>628 int main()とint main(void)の違い:
前者はC言語では関数呼び出しで引数のチェックをしない。
C++言語では引数が無いことを示す。
後者はC/C++言語とも引数が無いことを示す。
◆QZaw55cn4cのコード分かりやすいな 実際こんなコード書けるプログラマは高脳なんだよなぁ
露骨な嫌味は無意味
void main()って書くと脆弱なアプリケーションが一丁上がりってこと?
636 :
デフォルトの名無しさん :2011/04/28(木) 18:05:57.54
>>627 元来は main() だったんだよ
main(void) にしたところで main(0) みたいな呼び出しを禁止できるだけだ
たった4文字といえど手間感=文字数/意味ではやっぱり気に入らない
ただしスタートアップを main(void) 前提で作られてしまうと
main() は想定外になるのでしぶしぶその前提に従うことになる
あくまで本音とは違う
>>634 ほお
じゃあGUIをmain()で書いてみろよ
GUIをmain()でってLinuxやOpenGLじゃあるような気がするが どうなんだろ
Windowsって書いてあるんだけど まあ俺が言いたかったのはOpenGLではなくて普通のWin32のGDI何かで 書いたら戻り値を使う事はないって事を言いたかっただけ お前らなんでそんなにかみつきたいんだ? 人のあら探しをする事にしか楽しみを見つけられないのか?
OSに優しくエレガントで綺麗なコード推奨委員会
>>637 #include <windows.h>
int main(){
MessageBox(NULL,TEXT("Hello"),TEXT(""),MB_OK);
return 0;
}
cl main.cpp /link /SUBSYSTEM:Windows /ENTRY:"main" user32.lib
女々しい奴だ
645 :
デフォルトの名無しさん :2011/04/28(木) 18:29:06.09
>>643 俺が女々しいんじゃなくてお前らがあら探しばかりする性格が悪い奴
ばかりって事だ
>>641 /ENTRYでentryポイントって指定できるんだ
しらなんだ
自己批判か ご苦労
>>641 つか引数のカンマの後にどうしてスペースを入れないかね。。
int main(void)としないのも気に入らない。
MessageBox(NULL, TEXT("Hello"), TEXT(""), MB_OK);
651 :
デフォルトの名無しさん :2011/04/28(木) 18:40:05.35
カンマの後ろのスペースはスレ違い
main.cpp このほうがもっとすれ違いじゃね
#include <windows.h> int main(){ MessageBox(NULL, TEXT("Hello"), TEXT(""), MB_OK); return 0; } cl /Tc"main.cpp" /link /SUBSYSTEM:Windows /ENTRY:"main" user32.lib
強制しー指定でmain()なんて.... ゆるす?
人のあら探しをするのが男らしいと思っている馬鹿ども お前の方が余程女々しい
660 :
デフォルトの名無しさん :2011/04/28(木) 20:29:09.29
624 名前:デフォルトの名無しさん [sage]: 2011/04/28(木) 16:15:38.83
>>616 WindowsはGUIでは戻り値が何であろうと無視される
CUIの時には意味がある
どれだけ引っ張るんだよ ほんとオカマは女々しいな
あらでもなく明らかだけどな
本人も間違っていたことん気づいたからあら捜しなんて言葉使ったんでしょ そっとしといてやれよ
言い返せなくなると「女々しい」の一点張り ◆QZaw55cn4cと同じくらい糞
まだC言語の講義を1回しか受けてない初心者です 宿題を家でやろうとしたのですが説明が全部学校の動作環境で説明されており分かりません とりあえずCygwinと言うコンパイラを導入して説明どおりに「gcc ファイル名.c」と入力しコンパイラしようとしたのですが 「gcc: ファイル名.c: No such file or directory gcc: no input files 」と出てきました これはどういうことなのでしょうか? ファイルやディレクトリ移動してから入力すれば宜しいのでしょうか?
>>666 そのディレクトリにファイルが無い
作れ
668 :
666 :2011/04/28(木) 21:21:31.05
開いた直後はどこのディレクトリのことを指しているのでしょうか? またディレクトリ移動系のコマンドとかはないのでしょうか?
669 :
デフォルトの名無しさん :2011/04/28(木) 21:25:26.72
pwd pushd
>>668 cygwin のプロンプトで pwd と打てば現在いる(cygwin内の)ディレクトリ名が出ます
たぶん home の中のユーザ名のディレクトリです
移動は cd コマンドで出来ますが、cygwin ディレクトリの外に出るのは少々面倒です
671 :
666 :2011/04/28(木) 21:29:48.06
672 :
デフォルトの名無しさん :2011/04/28(木) 21:32:25.70
> 移動は cd コマンドで出来ますが、cygwin ディレクトリの外に出るのは少々面倒です cd /cygdrive/c うーん、面倒だなw
いや、実は何が面倒って、俺が説明するのが面倒なんです・・・ ごめんなさい mount コマンドでマウントポイントの一覧が見れますけど、C: が /cygdrive/c にマウントされてるんですよ・・・と言うだけで理解してもらえればいいんですが
といわずとも、/cygdrive配下に各ドライブごとのディレクトリがあるからそっちを見てね、でいいんじゃないの?
動いた後のexeファイルのdatファイルを作らなければならないのですがどのように作るのでしょうか? 適当なサイトでCygwinのコマンド一覧を見たのですがらしきものがありませんでした これはコマンドプロンプトのほうで作るのでしょうか?
この支離滅裂な感じ ◆QZaw55cn4cの自演だなぁ
>>675 一度ゆっくり深呼吸してから口に出してスレタイ読め。
>>678-679 すいません
コンパイルで検索かけてて見つからなかったのでありがたいです
681 :
デフォルトの名無しさん :2011/04/29(金) 00:57:03.31
たいやきうどん ばよえーん
Cygwin とかありえんわ。 学習なら LCC-Win32 辺りにしときなさい。 商用利用しなければ無償だから。
Cygwinなんて使ってるのは◆QZaw55cn4c位なもんだろう
VCのVCVARS32超便利
%comspec% /k ""F:\Microsoft Visual Studio 8\VC\vcvarsall.bat"" x86
Windowsの流儀ならmainじゃなくて int _tmain(int argc, _TCHAR **argv) だろ。
>>686 ちなみにそういうWindowsの流儀てどこ見りゃ分かるの?
そりゃMicroSoft公式サイトだろ。MSDNとか。
>>688 msdnって言語仕様とかはリファレンスがあるけど
「Windowsアプリケーションたるものこうあるべき」みたいな設計思想を綴った文書って見つからなくない?
static constな定数ってRAMを消費するんですか constな定数はROMを消費するんですよね定数は全部constだけにしといた方がいいんすか
>>690 RAMに置かれるかROMに置かれるかは環境しだいだけど、
constがROMに置かれる環境ならstatic constもROMに置かれるんじゃないか?
どうやるとコンパイラはROMを配置したアドレスが分かるのかな?
RAM上で処理させる方法ってありますか?
>>689 Games for Windowsガイドラインとかあるけど、
こういうのじゃダメ?
>>693 環境依存だろ。
PCなら全部RAMだし、PS以降の最近のゲーム機もみんなRAMだよな。
>>696 名前からしてリストボックス? だとしたら LBN_DBLCLK
使い方はぐぐってください
>>695 お前このスレで環境依存ばっかり書いてる奴だろ
環境依存でもいいけど環境依存なら環境を指定しろよ。 ファミコンやスーファミなら答えられるから。
>>698 環境依存て言いたくて仕方ないお年頃なんだろw
>>699 頭大丈夫?
環境指定したら即レスされて構ってもらえないじゃないか
http://codepad.org/kATKeRlk 上のコードが、不具合ばっかりです。(c言語)
ジャンケンをするプログラムなのですが、
・変数yourとmyにおいて、「移植性のないポインタ変換」とでてエラー
・変数yourとmyの定義を*your,*myにするとコンパイルエラーは免れるが、
scanfで入力すると、exeが落ちる
正しいコードを教えてくれると嬉しいです・・・
一体どこのscanfを参考にしたらこんなコードが生まれるんだろうな
文字列の比較は == でやっちゃ駄目よ。
その前に文字列にもなってないじゃん ポインタも理解してないし 入門書の最初から勉強しなおしたほうがいいと思う。
>>702 文字と文字列の区別をつけてみよう。
char c;
char *p;
scanf(" %c", &c); // OK
scanf(" %s",c); // いろいろヤヴァイ
if (c == "r" ){} // OK
if (c == "r" ){} // warning: comparison between pointer and integer
p = "あばばば"; // OK
c = "あばばば"; // warning: assignment makes integer from pointer without a cast
ちょいミス。↓が正しい。 if (c == 'r'){} // OK
初学者は scanf じゃなくて gets 使おうぜ。 単純で解りやすくて使いやすいから便利。
scanf も gets も使うなよw gets はもう無くなるし
>>703-711 皆様本当にありがとうございました!
c言語の文字の比較、代入など学ぶことが出来ました!
ActionScriptを使ってた身なので、文字と数値を同じように扱っちゃうんですよね;
危険性を教えた上でgetsを教えるならいいが わかりやすいという理由で薦めるのはクソ野郎だ
scanfもgetsも入門書ではメジャーなのに非推奨と言われる現実。 fgetsだと初心者には難しい…か? 出てきてもファイルに使ってるパターンがほとんどだよね。
まともな知能があれば周知の事実だし バカはバカで自分で痛い目みたいと分からないから 気にする必要なし 他人事だしな
情けは人のためならず
関数を定義するところまではわかったのですが ifやforのところに代入?するやり方がいまいちピンとこないのですが・・・
お前の質問にピンとこない
質問かどうかもわからない
>>714 >scanfもgetsも入門書ではメジャーなのに非推奨と言われる現実。
著者が初心者に教えるのが面倒と思っているのでscanfやgetsを使っているだけ。
どうせdefineもincludeもmainも初心者にはワケワカメだから
fgetsもオマジナイにして矯正させても何も問題はないんだよな。
何も教える必要はない。先へ進める人はそのうち理解する。
fgetsを使わない初心者本を書かない単なるサボリだわ。
721 :
デフォルトの名無しさん :2011/04/29(金) 18:50:05.90
あなたのイニシャル、年齢、身長を変数に代入し、これを表示しなさい。身長は 小数点以下1ケタを表示する。 実行例 イニシャル:M 年齢:18歳 身長:169.2cm #include<stdio.h> main() //変数の宣言 char initial; //イニシャル int age; //年齢 double height;//身長 //代入 initial = 'M'; age = 18; height = 169.2; //表示 printf("イニシャル:%5c\n,initial); printf("年齢 :%5d才\n",age); printf("身長 :%7.1fcm\n,height); } ↑ この%5、%5、%7.1の意味を教えて下さい
>>721 5とか7とかは幅
.1は精度
最後のcとかdとかfとかが変換指定子
724 :
デフォルトの名無しさん :2011/04/29(金) 18:54:20.98
>>720 あー、初心者本に自分の理想像がありながら
それを見つける能力がない&自分でも書かないわけね
> fgetsを使わない初心者本
あるよ普通に
おまえが知らないだけ
もしくはおまえの言う初心者とレベルが違いすぎて認識できないだけ
725 :
デフォルトの名無しさん :2011/04/29(金) 18:57:21.43
>>697 ありがとうございました。
無事実装することができました。
>>724 機嫌悪すぎだろw
ここの奴ら殺伐としすぎ
>>724 普通にあるなら、そのうちの一冊で良いからここで上げてみなよ。
>>714 scanf()が簡単って言うけど、ちょっと進んで、エラーチェックしようとか
ループの中で繰り返そうとかって処理を書こうとするととたんに難しく
なるしな。
732 :
デフォルトの名無しさん :2011/04/29(金) 20:13:32.79
fgetsを使わない初心者本がないといってるのは
>>730 だけ
734 :
デフォルトの名無しさん :2011/04/29(金) 20:28:01.88
質問です。 文字と文字の間のマスの数を固定したいのですが その文字の間にランダムに☆が入るときどうすればよいでしょうか? 1:☆☆☆ : 2:☆☆☆☆ : 3:☆ : 上記のようにしたいのですが 後ろの:の位置を固定できません。
等幅フォントで出力される環境なら、%-20sとかで固定幅左詰で出力すればいいと思う。
>>734 例えば printf("%-15s:", s); とする。
但し、上記例であれば strlen(s) <= 15であること。
更に出力は固定幅フォントが使われていること。
タブで
738 :
734 :2011/04/29(金) 21:09:27.82
>>735 >>736 等幅フォントかはわかりませんができませんでした。
>>737 \tのことでしょうか?やってみましたができませんでした。
質問の内容は少しかわっていますが以下のようなプログラムです。
じゃんけんで出した手の頻度を*の数であらわしています。
#include<stdio.h>
int rn(int n);
int main(){
int n=1,i,m,kaisuu[3],max,max_n;
for(i=0;i<3;i++)
kaisuu[i]=0;
printf("じゃんけんする回数を入力してください>");
scanf("%d",&m);
printf("1=ぐー、2=パー、3=ちょき\n");
for(i=0;i<m;i++){
++kaisuu[rn(n)];
n=(48359*n+253611)%3233348;
}
739 :
734 :2011/04/29(金) 21:10:20.14
続きです max=kaisuu[0]; max_n=0; for(i=1;i<3;i++){ if(max<kaisuu[i]){ max=kaisuu[i]; max_n=i; } } for(i=0;i<3;i++){ printf("%5d: ",i+1); int counter=0; while(counter!=10*kaisuu[i]/max){ printf("*"); counter++; } printf("%d\n",kaisuu[i]); } return 0; } int rn(int n){ int d; d=(48349*n+2531341)%3; return d; }
740 :
734 :2011/04/29(金) 21:12:12.66
*の後の数字をそろえたいです。 連投、わかりにくいプログラム失礼しました。
for(counter = 0; counter < 10; counter++) printf("%c", counter < 10 * kaisuu[i] / max ? '*' : ' ');
>>738 一文字づつ printf って最初から言ってくれれば良かったのに (ry
743 :
734 :2011/04/29(金) 21:35:52.17
>>741 printf("%c", counter < 10 * kaisuu[i] / max ? '*' : ' ');
は?の前が正しければ*,誤りなら空欄ってことですか?
744 :
734 :2011/04/29(金) 21:50:32.18
今日も◆QZaw55cn4cは糞
おまえらよく見分けられるな
◆QZaw55cn4cの文体は慇懃無礼だからすぐに分かる
>>733 >fgetsを使わない初心者本がないといってるのは
>>730 だけ
全ての初心者本はfgetsを使うといってるのは
>>730 だけ
二重否定わずらわしい。上の表現でほぼ一致してると思う。
751 :
デフォルトの名無しさん :2011/04/30(土) 01:05:34.37
細けぇことはうんぬん
752 :
デフォルトの名無しさん :2011/04/30(土) 01:12:26.80
質問ですが、プログラミング言語を作る時はどうやって作るんですか? コンピュータの場合最も低級な言語はトランジスターなどの部品の電気信号 を直接支配する規約的言語があるんですよね?新しいプログラミングを作る 時はその規約的言語をリファレンスして作るんですか?
>>752 我々がさわれる最も低級なものは機械語
CPUは機械語コードを解釈して回路を動かす
新しい言語を作るときは、その言語自体は、紙の上で鉛筆でも使いながらどんな言語にするかをじっくり検討すればいい
言語の仕様が決まったらコンパイラなりインタプリタなりを作る
コンパイラはCとかのプログラミング言語で書かれたソースコードを機械語に変換するプログラム
その新しい言語のコンパイラは、Cで作ってもいいし、Javaで作ってもいいし、とにかく動きさえすれば何で作ってもいい
コンパイラが出来れば、その新しい言語を機械語に変換できる
機械語に変換できれば、CPUはそれを実行できる
新しい言語が機械語に近ければ、変換が簡単だからコンパイラを作るのが楽になるかもしれないが、
別にコンパイラ作るのを楽するために言語を作るわけではないのだから、特にそうある必要はない
機械語の構造とかけ離れた言語でもいいんだ
変換が大変、つまりコンパイラ作るのが大変になるかもしれないが、それだけだ
>>752 ・コンピュータの処理は演算装置を使って行われます
・演算装置の操作は機械語と呼ばれる数値列を使って行われます
・機械語の命令は、より人間の言葉に近いアセンブリ言語という言語から翻訳して作成します
・アセンブリ言語の命令は、より人間の言語に近い高級言語と呼ばれる言語から翻訳して作成します
つまり、高級言語>アセンブリ言語>機械語という様に何度も変換して、コンピュータに
理解出来る命令に変換しているという事です。
プログラミング言語を作るというのは、アセンブリ言語に翻訳出来る高級言語を作成する事です。
新しい高級言語からアセンブリ言語への翻訳は、既存の高級言語を使ったプログラムを使って
実行します。
また、実際のコンピュータの代わりに、プログラムで仮想的なコンピュータを作成して、
その上で動く様なプログラムに翻訳する為の言語というのも存在しています。
最近のプログラミング言語は殆どが仮想的なコンピュータをターゲットにしています。
初学者ですが、構造体の定義・宣言の仕方が 参考書によってさまざまで混乱しています。 調べた感じでは、以下の全てが同じ構造体変数aを 宣言する方法らしいのですが、 どれを使うのがセオリーとかありますか?好みでいいんでしょうか。 1. struct tag { メンバ... } a; 2. struct tag { メンバ... }; struct tag a; 2. struct { メンバ... } a; 3. typedef struct { メンバ... } z; z a;
>>743 int k = kaisuu[i] * 10 / max;
for( counter = 0; counter < 10; counter++ ) {
if( counter < k )
putchar('*');
else
putchar(' ');
}
>>756 公開する様なデータ型じゃないけど、何度か使うなら 2 の上
再利用しないなら 2 の下
隠蔽する必要が無くて、再利用したいなら 3
とかかな。
初歩的ですいません。 Borland C++Compilerの使い方ってbcc32 の後にあらかじめ作成したファイル名入れてエンターキー押して使うんでしたっけ?
どうしようもない馬鹿だな
>>760 さんすいません。ほぼ初めて使うんで…
これから勉強する者です。
使い方教えて下さい。
762 :
デフォルトの名無しさん :2011/04/30(土) 08:37:51.12
>>759 デスクトップに bcc32.exe のショートカット作って
そこにソースファイルをドラッグ'nドロップ。
>>759 鼬害です。Windowsの使い方ならWindows板に。
いっそ、教えて○○とかなんとか知恵袋とかで聞いては如何でしょう。
手取り足取りフレンドリー、プログラムの書き方から中身まで全て教えてくれるかもしれません。
>>763 ありがとうございます。もうショートカットは作ってあります。学校のコンピューター室で使うんで。
ファイル名を入れるだけでいいんですか?コンパイルした後に実行するにはtestなんとかって入れるんでしたっけ?
やっぱこうなったか。 そうやってグズグズ聞き続けるつもりなんだろ? ぐぐればすむ事を他人に尋ねるな。
まあ、俺は Turbo C 2.01 を愛用するんだがな。
769 :
デフォルトの名無しさん :2011/04/30(土) 08:59:50.95
細けぇことはうんぬん
770 :
デフォルトの名無しさん :2011/04/30(土) 08:59:56.18
細けぇことはうんぬん
おとなしくVisual C++を使うと良いよ
772 :
デフォルトの名無しさん :2011/04/30(土) 09:01:42.60
>>767 初心者本には用が無いからわざわざ検索する必要性はない。それに検索して出てくる情報とも思えんな。
やっぱりないと結論せざるを得ない。
773 :
734 :2011/04/30(土) 09:08:40.41
つーか、なんで BCC 5.5 って定番みたいになっちゃってんの? リソースバインダーも正常に動かないのに。
古い本だと出版当時無償で使えたのがBCCかgccかの2択だったから
BCC5.5なんて前世紀から更新されてないものいつまで使ってんの? と思ってたけどそういうことか
エラーメッセージが丁寧だったりするから 意外に侮れない。「;がありません」とか そこまで分かってるんなら自動で補えよとか思わなくもないがw
LSI-C86試食版も忘れないでくれ
いや、忘れていいよ。今時ロングファイルネームを扱えなくてintが16bitなんて混乱するだけだ。
LSI-C試食版でもDOSの割り込み使えばロングファイルネームは使えなくも無いけど面倒
lcc-win32が上がらないのはメッセージが全部英語だからか
今だとWindpws 7 x64で動きませんとかいうのも出てくるだろうな>LSI-C
785 :
750 :2011/04/30(土) 09:58:28.67
>>720 gets_s の解説があれば十分。
>fgetsを使わない初心者本を書かない単なるサボリだわ。
fgetsを解説してない初心者本が有るとしたら単なるサボリだわ。
二重否定わずらわしい。上の表現でほぼ一致してると思う。
ここまでopenwatcomなし アレの日本語メッセージ誰が保守してんだろ?
C言語で高校の数学教材を作るって出来ますか? というかそういうのやってる人いますか?
はい
>>790 ありがとうございます。実は大学の授業でC言語で何か作品作らなきゃいけないんだけど教材作りたいと思って。
先生もここは数学科だから数学がらみのほうが嬉しいと言ってたので。
>>791 そう言う事なら、C で SDL や OpenGL を使うと良いかも。
>>791 目を引きそうなものならグラフィカルなもの
フラクタル画像とか
graphics.h が見つからないとか出るのですが、何が原因ですか?
graphics.hが無いのが原因。
ほっほっ
rpmbuild --short-circuit -bi mysql.spec
ふっほっ
数学の教材って例えば関数に値渡せば答えを返してくれるとか グラフィック表示してくれるとかそういうの?
802 :
デフォルトの名無しさん :2011/04/30(土) 17:10:25.32
>>800 作図や統計での絶大な威力は
俺がコンピュータにはまった大きな動機の1つだった
ぶはっ!選ぶはっ!
>>801 Mac だと何の問題も無く動くよ
最後に return 0; を加えてもダメかな?
>>801 もしかして:
p[i][n] = '0' + n;
SUGEEEE!
なにがSUGEEEEなのですか?
そうだね
ペロペロ!
mallocの勉強をしているんですが、メモリの割り当てに失敗するなんてことあるんですか? 仮想メモリがあるから実用上は無限じゃないですか?
>>811 あるよ。
仮想メモリと言っても、空きメモリを使い尽くせばメモリは確保出来ない。
32bit プロセスならアドレス空間は 32bit だから、通常は 4GB までしか
メモリを扱えない上に、アドレス空間の全てを使える訳じゃないから、
3GB 前後でエラーになる。
簡単に実験出来るから、試してみると良いよ。
812 名前:デフォルトの名無しさん [sage]: 2011/04/30(土) 23:22:26.35
>>811 無限ループで確保し続けてみなよ
813 名前:デフォルトの名無しさん [sage]: 2011/04/30(土) 23:25:48.97
>>811 あるよ。
仮想メモリと言っても、空きメモリを使い尽くせばメモリは確保出来ない。
32bit プロセスならアドレス空間は 32bit だから、通常は 4GB までしか
メモリを扱えない上に、アドレス空間の全てを使える訳じゃないから、
3GB 前後でエラーになる。
簡単に実験出来るから、試してみると良いよ。
malloc(0xFFFFFFFF)
Windows32bitだと1プロセスで合計2GBとかで環境依存になります
オブジェクト指向ってなんですか?必要ですか?
32bitのOSなんてまだ使ってる人いるんだ
>>819 32bit プロセスは 64bit OS 上でも動くし、32bit プロセスとして動かした方が
性能がいい場合もあるよ。ポインタ幅が半分で済むので、その分だけ性能を稼げるから。
>>820 >32bit プロセスは 64bit OS 上でも動くし
それ、Windowsだけの話だって事をよく覚えておいた方がいいよ。
823 :
デフォルトの名無しさん :2011/05/01(日) 00:41:51.75
822 名前:デフォルトの名無しさん [sage]: 2011/05/01(日) 00:38:50.10
>>820 >32bit プロセスは 64bit OS 上でも動くし
それ、Windowsだけの話だって事をよく覚えておいた方がいいよ。
いや、Macでも動く
>>822 64bit版Windowsなら32bitアプリが動くみたいに読めるから中途半端な指摘はやめた方が。
たまには16bitのことも思い出してあげてください
>>825 じゃ、厳密に言うとWOW64によって32bitアプリケーションを実行可能にしているWindows、と言えば文句ない?
>>828 それでいいと思う。
他のOSについては他の人が指摘してるとおりかと。
そりゃwindowsだからwowじゃん
開発者ならWOW64無しの環境ぐらい作っておくべき
もはや話題がC言語とはなんら関係が無い件
>>832 >WOW64無しの環境ぐらい作っておくべき
ならOffice2007やVisualStudio2008とかは動かないな。
わからなかったか。テスト環境だよ。
>>819 北米における2011年4月11日時点のシェア、Windows7(32.5%) WindowsXP(32.4%)
そんな事言うとアメリカ人に怒られるぞw
>>836 なんていうか、確認だけど、そのほかにWindows7(x64)とかってのがあるんだよね
>>835 プロセスが64bitで動作してるか32bitで動作してるかなんて
プロセスマネージャで見ればいいだけだから、WOW64無しの環境を作るなんてバカものしかやらんだろ。
つまりお前だけだバカ。
>>839 XP(32) > 7(64) > 7(32) > XP(64)
の順かなぁ
>>838 タスクマネージャとプロセスエクスプローラが混ざってるよ
842 :
デフォルトの名無しさん :2011/05/01(日) 01:36:33.93
コマンドプロンプトで改行の逆ってできないの?
間違えました。 コンソールでです。
>>843 一般的な端末エミュレータのことなら、エスケープシーケンスを利用するなどでできる場合もあります。
お使いの端末エミュレータの資料を当たってみてください。
つーか、C言語には殆ど関係ない話のでスレ違いだがや。
>>844 いや、c言語のソースでどう書けばって話なんだが。そこは割愛しても通じると思ったんだが。
>>844 あとそれだとWindowsでは設定を弄らないとダメだった気がする。それじゃ、ダメだから他の手を探してるところなんだけど。
>>822 いや、Windows なんて使ってないしw
Windows しか知らない人と話すには注意が必要って事か。面倒クセーな・・・
>>843 curses 使えば出来るよ
Windows は知らんけどw
Windowsすら買えないやつがエラそうだな。
何で使わない物をわざわざ金を出して買わないといけないんだよw あー、君は使ってても良いよ。
はいはいw 変な宗教にハマると大変だねw
そうだなw OS 買うのにお金払って、 IDE 買うのにお金払って、 バージョンアップしたらまたお金払って、 大変ですなあw
ほら、やっぱり「物には対価を払う」って概念が無い人だったw
ぐぬぬ……
>>854-855 お前ら面白いなw
貨幣取引だけが全てじゃないんだぜ・・・
俺はどちらかというと供給する側の人間だし。
そろそろ Windows は nfs でブートできるようになるべき
858 :
デフォルトの名無しさん :2011/05/01(日) 04:21:36.81
こんな感じで、n桁未満の数の前に n桁になるように0を追加する方法がわからない 誰か教えて 例:6桁に揃える場合 15→000015 205→000205
"%06d"
>>858 printf("%06d¥n", num);
おまえにも答えられるベルの質問が出てよかったなw
あ、質問取っちゃってごめん。
なんでこのスレっていつもこう殺伐としてんの?
入門者相手には強気に出られると思った人たちが居座り続けるから
解答に対して、揚げ足取りとか余計な突っ込みをする人がいるからじゃないの。 質問と解答だけなら殺伐とはしないと思われ。
>>785 gets_sがほとんどの環境で有効だったらありだけど、
C言語の教育としては外れているだろうな。
特に、企業で未だにC言語を使わなきゃいけない層にとっては。
確かに、Cを必要とする現場でWindowsってのはそうないかも。
Cを必要とする現場(組み込み)ですが たぶんどこもWindowsですよ 組み込み用のツールがWindows用ですから
869 :
750 :2011/05/01(日) 09:28:16.30
>>866 レス有難うございます。
間違って書いていたので訂正します。これで
>>724 が読み違えしてることがわかります。
>>720 >fgetsを使わない初心者本を書かない単なるサボリだわ。
全ての初心者本がfgetsの使い方を解説しているのは単なるサボリだわ。
二重否定わずらわしい。上の表現でほぼ一致してると思う。
870 :
デフォルトの名無しさん :2011/05/01(日) 09:55:26.69
>>863 このスレってか板全体的に空気悪いよね
多分みんな普段の仕事のストレスで性格ひねくれちゃってるんだと思う
そこにIDがでないという板の匿名性が後押ししてストレスをぶつけようと攻撃的になる
空気を悪くする書き込みをしているのは一部の人だけだと思うよ。 みんなじゃなくて、ここに煽る相手を捜しに来ている人だけ。 このスレでも大抵の質問には親切に答えてくれる人がいると思うけど、 そういう人の事も忘れないで欲しい。
いやー、ふつうでしょー。2chですから
空気悪くより、いつもふっほとかほっほとか書いてる人の方が気になる。 あれって一体、何をどうしたいんだろう。
人工無能のデバッグをしてるんだろう
>>873 2chでなにがふつうかも、ひとそれぞれ
あおってもいいやとおもっちゃうひともいれば、そうじゃないひともたくさんいる
すごいねー
ヒント:技術的な話を楽しめない人間は、 スレが荒れたりすることで楽しむ。
スルーできないヤツも同罪。
頭のオカシイ人レベルの質問にまで愚直に答えようとするバカがいるからスレが荒れんだよ。 ようするに回答するお前ら「知らない、わからない」と思われることが嫌なんだろ? だから毎度毎度、アホに釣られてんだよ。 本当にスレが荒れんのが嫌だってんなら、間抜けな質問はスルーしろ。 そして、間抜けな質問に、いかにももっともらしく、アホな回答してるレスもスルーしろ。
お前に指図される筋合いは無い。そこだけでも理解しろ。
883 :
デフォルトの名無しさん :2011/05/01(日) 12:45:35.24
それよりC言語の話しようぜ
北半球では南向きに家を立てた方がいい、って言ったら指図してる事になるのか?
不特定多数への第三者の発言を自分に対する指図に聞こえて不快に思うのは 統合失調症の典型的な初期症状のひとつとも言える。
日本の法律では、医師免許所有者だけが、患者に病名を告知して良い定めになっています。 医師免許の無い者は、「病気診断」「病名告知」出来ません。
特定の個人にたいして病名を告知している人はいません。
スルーできないヤツも同罪
そうだねー
「関係ないことを書くな」系のカキコをするやつって、自分は特別扱いって思ってるの?
1つでも腐ったミカンがあるとすぐに他のミカンも腐ってしまうといういい例だね だから必死に排除にかかる
自治厨は自分だけが正しいと思ってる。 2ちゃんをどう使うかなんて人それぞれでしかないのに。
自治をしてる人は2chから自治を委託されてるので、 関係ないカキコをする特権が与えられてる。
なんたって自治委員会だからな
「俺が何を言おうと、個人に対して言ってるわけじゃないから誰も反応しなくていいんだよ」 というスタンスで場違いなことをみんなに聞こえるように言うのはなんていう病気?
>>897 思考の二極化というあなたの症状から病名が特定出来ないのと同じで
自己顕示欲が強いというだけで病名を特定出来る人はいない
899 :
750 :2011/05/01(日) 13:59:37.59
Console.ReadLine使えよww
>>875 bot みたいなもんかな
色んなスレに同じ単語を書き込んだり、脈絡無くレスをコピペして回ったり
C言語使いのスレらしくてすばらしい キチガイにならないとC言語は使えない
素人はプログラムやらないほうがいいよ。 普通の感覚でやると頭壊れるから
あなたが言うと説得力ありますね
そらそうよ
>>904 つまりプログラムをやっていいのはプロだけってこと?
908 :
デフォルトの名無しさん :2011/05/01(日) 20:34:25.96
金とるくせにそれに値しない技量の者をプロというべきかどうか・・・ 続きはマ板でやってくれ
909 :
デフォルトの名無しさん :2011/05/01(日) 20:59:01.49
return (1) というコードを見かけたんですけど、 ()付きって何か意味あるんでしょうか?
いや、何も
プロなんていない、アマに毛が生えた程度でやってる。 そんなだから、頭が壊れる人がいる。
条件式でさ「値が○○以上」とかじゃなくて「値が〜の間で無い場合」ってどう書くの? 例えばさ、11>x>15の論理否定(!)みたいな 0〜27の座標で組まれた四角形に小さな四角形(11~15)の穴を空けたいんだ・・・ つまり「11>x15 かつ 11>y>15でない場合」という事なんだが
だまれクズ
いいね
>>913 if(!(((11>x)||(x>15))&&((11>y)||(y>15))))
動くかどうかは知らん
>>913 if( x>=0 && x<11 || x>15 && x<=27)
リロードは、した。
919 :
デフォルトの名無しさん :2011/05/01(日) 21:54:48.39
>>912 ありがと。
見栄えの意味しか持たないということなんですね。
920 :
913 :2011/05/01(日) 21:55:21.36
単純にこんなんでいいんじゃない !(x >= 11 && x <= 15 && y >= 11 && y <= 15)
>>913 の「つまり」以降が前半の説明とあってない
ほしいのは四角いドーナツ型でしょ?なら
「(0<x<27かつ0<y<27かつ)11<x<15でない かつ 11<y<15でない」
でしょ
あーわかりにくい
( x>=0 && x<11 || x>15 && x<=27 ) && ( y>=0 && y<11 || y>15 && y<=27 )
何をそんなに議論してるのかと思ったら高校1年レベル・・・
だったらお前が率先して高尚なスレにしてやれ どうせ口ばっか野郎だろうけど
煽っても何も出ませんよw
ここは入門スレだからな
どうでもいい。
普通の質問スレ 質問 → 解答 → お礼 このスレ 質問 → 解答 → 揚げ足取り 何でだろうね・・・
お前とかな
え、オレ? マジで? そっか・・・ じゃ、仕方が無いな
>>928 自分より頭のいい奴がいる現実に気付いて逆ギレしてるニートが
たくさんいるから
ということにしたいのですね
>>931 逆ギレって言ったら相手が先にきれているみたいじゃないか
実際そうじゃん
常駐してるニートは相手を煽って切らすのが天才的だからな
そうだねー
切らす
切らすとき
つながってるほうが珍しい
941 :
デフォルトの名無しさん :2011/05/02(月) 07:39:41.49
>>928 1文字でも間違えたらコンパイラに「揚げ足」とられるだろ
文字はあっていても結果に「揚げ足」とられることも多々ある
いやなら間違えるな、それができない不適格者はどうぞ消えてくださいということだ
次の理由で自力で解けないなら、余り囚われずに先に進むことをお勧めする。 ・英単語を数えるツールは日本人にとって余り身近でない。 ・文字列の取り扱い、可変長データの取り扱いはCは得意ではない。
>>922 (x, y) (13, 0) とかは。
(0 <= x && x <= 27) && (0 < y && y <= 27) && !( (11 <= x && x <= 15) && (11 <= y && y <= 15) );
マスの中 かつ 穴じゃない
に床を書けばいいのか
(0 <= x && x <= 27) && (0 < y && y <= 27) && (11 <= x && x <= 15) && (11 <= y && y <= 15)
マスの中 かつ 穴
に穴をあければいいのか
どっちかわからん
>>944 っていうか何をどうやってやろうとしてるわけ?
普通の描画では矩形を使うだろうからこんなドット打つなんてしないし
穴かそうでない部分かどっちを判定するかはその場合によって好きな方選べばいいし
条件を1行に押し込めようとしている時点でシロート。
>>943 ありがとうございます。
その書籍では何か斬新な方法で解決してるのかなと思い質問しました。
>>946 どうしたいのか知らんから質問したんだ。
この時期だし2次元配列に入れてコンソール出力とかそんな程度じゃないの。
状況によっては前の条件要らないし
>>947 あとはバイナリサーチも例として。
K&Rは持っとくといいよ。
>>950 あ、元の質問者じゃなかったのか、すまん
952 :
デフォルトの名無しさん :2011/05/02(月) 09:23:34.39
>>948 あんなのを1行で書かれたくらいで音を上げる誰かさんはそれ以下だが何か?
int c; int s = sizeof(textfilesize); int text(s); for (i = 0; i < s; i++){ if(text(i) == 'e'){ c++ } }
>>944 この方が圧倒的に条件分から早く抜けてくる。
int r = 0;
do
if (0 <= x && x <= 27) && (0 < y && y <= 27) {
if (11 <= x && x <= 15) && (11 <= y && y <= 15){
r = 1;
}else{
break;
}
}else{
break;
}
while(0)
if (r == 1){
//穴の中
}
え・・・w
罠だ
#define in , #define foreach(a, b) for(int i = 0; i < sizeof(b) / sizeof(b[0]); i++) { a; int arr[10]; foreach (int x in arr) printf("%d\n", x); }
>>954 int r = 0;
if (0 <= x && x <= 27) && (0 < y && y <= 27) {
if (11 <= x && x <= 15) && (11 <= y && y <= 15){
r = 1;
}
}
if (r == 1){
//穴の中
}
でいいだろ?普通。
意図はなんとなくわかるけど if の括弧がおかしいだけ
>>958 なるなるwほいよ。
int r = 0;
int x,y;
if ((0 <= x && x <= 27) && (0 < y && y <= 27)) {
if ((11 <= x && x <= 15) && (11 <= y && y <= 15)){
r = 1;
}
}
if (r == 1){
//穴の中
}
963 :
944 :2011/05/02(月) 09:54:46.38
元質問だと <= じゃなくて < だった。
>>954 どういうこと?短絡評価を知らないってだけでいいのだろうか。
for (y = 0; y <= 27; y++) for (x = 0; x <= 27; x++) if ((11 < x && x < 15) && (11 < y && y < 15)) { /* いしのなかにいる */ }
で?複数穴を開けたいってなった時、
>>944 の書き方だと1行に延々と条件を連ねていく事になるけどどうするね
>>965
仕様変更に強い書き方をするってものプロの仕事
なるほどそれを知らないで指摘してる
>>965 はクズ素人か
>>968 拡張性へのキャパを適度な範囲にとどめておくという見切りは難しい
長いのがイヤならマクロ使おうぜ #define inRect(left, right, bottom, top, x, y) (left <= x && x <= right && bottom <= y && y <= top) if(inRect(0, 27, 0, 27, x, y) && !inRect(11, 15, 11, 15, x, y)) { ...... }
>>971 if(inRect(0, 27, 0, 27, x, y) {
!inRect(11, 15, 11, 15, x, y)) {
......
}
}
こうしないと仕様変更に弱いからアマチュアらしいよ
適当にきりすぎたワロス
おまえら
>>913 の意図を理解できるの?何を言ってるのか全然わからんのだが
分かってないのお前だけ
前2行は具体的な質問だが 後2行は、、色々想定できるのでわからん
初心者は消えろよ
>if(inRect(0, 27, 0, 27, x, y) { >!inRect(11, 15, 11, 15, x, y)) { ┐(´-`)┌ <こんな事やってるようじゃーねぇw
短絡評価知らないって突っ込まれて仕様変更云々は痛すぎるわw
短絡評価を知らない
>>954 がアホすぎる、で終わっていい話題だろw
釣られてるお前らがバカ過ぎんだよ。
釣り宣言キターw
オススメコンピラ教えて。 AMD64で動作するのが条件なー。
金比羅様が貼られたと予測
金比羅すげぇ
15日でスレ消費した。 さいきん覚えた流行語「復興」
>>941 君は何と戦ってるの?
人間はコンパイラじゃないし、もっと自分と相手を許してあげた方が、
楽しく健康的に生きられると思うんだけど。
>>941 人間は正確無比なコンピュータとは違って間違いをおかす生き物だろ
それをいちいち揚げ足を取っていたら意地の悪い小姑と同じだぞ
間違いまんてただの一回もしたこと無いわ。
996 :
デフォルトの名無しさん :2011/05/02(月) 13:55:21.56
>>994 知らなかったのか? コンピュータも確率現象で「間違える」
ここの揚げ足取りって掲示板に貼り付ける数行の適当なコードに、 エラー処理が入ってないとか、変数名がダメだとか細かいどうでも いいこと言うようなのばっかりじゃん。 揚げ足とりたくてしかたないんだろ。
揚げ足取りの揚げ足取り 揚げ足取りの揚げ足取りの揚げ足取り
999ゲット
チキンナゲット
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。