C言語なら、俺に聞け! <16>
レス数が1000を超えています。これ以上書き込みはできません。
0001マカー代表 日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通だ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するような救いがたいやつはこれでも読め
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711
推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50
・前スレ C言語なら、俺に聞け! <15>
http://pc.2ch.net/test/read.cgi/tech/1016519243/l50
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006緑茶。 p0086-ip01kagawa.kagawa.ocn.ne.jp
NGNG0007デフォルトの名無しさん
NGNG0008緑茶。 p0086-ip01kagawa.kagawa.ocn.ne.jp
NGNGいちいちぴりぴりしてちゃ
この先生きていけんぞ
0009デフォルトの名無しさん
NGNG0010緑茶。 p0086-ip01kagawa.kagawa.ocn.ne.jp
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGpid=fork();
if(pid==0)
execl("age","age",NULL);
else
wait(pid);
...?
0014デフォルトの名無しさん
NGNGいや、子プロセス作るのは勝手だけどさ・・・。
0015デフォルトの名無しさん
NGNGファイル file.in をプログラム prog に読みこませ、
ファイル file.out に出力したいんですが。
つまり次のような感じです。
$./prog < file.in > file.out
で、次のようなプログラムを書きました。
#include <stdio.h>
int main(void){
FILE *fpin, *fpout, *fpprog;
int c;
fpin = fopen("file.in", "r");
fpout = freopen("file.out", "w", stdout);
fpprog = popen("./prog", "w");
while((c = fgetc(fpin)) != EOF){
fputc(c, fpprog);
}
fclose(fpin);
fclose(fpout);
pclose(fpprog);
return 0;
}
プログラム prog は標準入出力を使う前堤で作ってます。
一応目的は達成できてるんですが、何か ダサダサ な気がするので、
もうちょっとスマートなやり方はないでしょうか ?
0016デフォルトの名無しさん
NGNGついでに、そのfpprogは一体なんだと、小一時間(略)
0017デフォルトの名無しさん
NGNGく、先を越された。激しく同意!
0019デフォルトの名無しさん
NGNGまず、
$rm file.out
$./prog
$ls file.out
実行。
・・・っていうかそれ正常に動くのか????
思いっきり自分自身を書き変えようとしてるが・・・。
0020デフォルトの名無しさん
NGNGwhile(scanf("%c",&a) != EOF)
printf("%c",a);
0021デフォルトの名無しさん
NGNGgetchの方がいいね。
0022デフォルトの名無しさん
NGNG標準入出力のFILE構造体へのポインタはstdin、stdoutだろ。
わざわざfopenする必要はない。
002315
NGNG一回出力ファイル(file.out)消してやってみましたが、
やっぱりちゃんと作られます。
実際のコードと書き込んだコードが違わないか
今から確認してみます。
>>21
linux 使ってますが、getch は無いような・・・。
0024デフォルトの名無しさん
NGNG「標準入出力を使って動作するプログラムがすでにあったとして、こいつに特定の
ファイルを食わせて特定のファイルに吐き出させるプログラムを作りたい」ってこと
だよね?
system("./prog < file.in > file.out") が一番スマートな気がするけど…
002515
NGNG>>22
> 標準入出力のFILE構造体へのポインタはstdin、stdoutだろ。
わかります。
> わざわざfopenする必要はない。
これもわかります。
ですが、
> 15に対して、
> 標準入出力のFILE構造体へのポインタはstdin、stdoutだろ。
> わざわざfopenする必要はない。
こうなるとわからない。
>>15 のどこかで stdin, stdout を開いているということですか?
それとも内部的にそうなるとか、そういうことでしょうか?
0026デフォルトの名無しさん
NGNG(内部的にfopenを同等の動作)
で、通常はstdin, stdout, stderrはわざわざ閉じる必要はない。
とりあえずそういうもんだと思え。
002715
NGNG>>24
> 「標準入出力を使って動作するプログラムがすでにあったとして、こいつに特定の
> ファイルを食わせて特定のファイルに吐き出させるプログラムを作りたい」ってこと
> だよね?
そのとおりです。
そしてそう書いたつもりだったんですが、15 の説明がわかりにくかったようです。
考えすぎました。
> system("./prog < file.in > file.out") が一番スマートな気がするけど…
確かにそうです。納得。system() を調べてみます。
実際には入力ファイルも出力ファイルも複数あるので、
ファイル名が固定だと後で困りそうです。
>>19
コードは間違っていないようです。
002815
NGNG>>26
> 標準ライブラリが main()を呼ぶ前に stdin, stdout, stderrを開いている
> (内部的にfopenを同等の動作)
わかります。
> 通常はstdin, stdout, stderrはわざわざ閉じる必要はない。
この文自体もわかります。
ですが、「15 のコードに対して言う」ところがわからない。
15 のコードのどこかで stdin, stdout, stderr のどれかを閉じているということでしょうか?
または結果的にそういうことになっている、と言うことでしょうか?
なにか話が噛み合っていない気が・・・むぅ。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGsprintf(cmd, "%s < %s > %s", prog, file_in, file_out);
system(cmd);
0031デフォルトの名無しさん
NGNGお前のアフォさ加減にかなりゲンナリだが… それとも新手の荒らしか?(藁
入力するファイルと出力するファイルをリダイレクトしてる
わけだからソース中ではファイルのオープンをせずに
標準入出力のライブラリ関数を使えばいいだけだろう。
printfでもgetcでも好きなの使え。
003224
NGNG> 15 のコードのどこかで stdin, stdout, stderr のどれかを閉じているということでしょうか?
> または結果的にそういうことになっている、と言うことでしょうか?
freopenしたときに元のストリームは閉じられる…けど、そういうことじゃないな。
progの話とprogを呼び出すプログラムの話が混ざっているから混乱すると思われ。
>>15で書いたコードは「progを呼び出すプログラム」のものだけど、説明が悪いので
progのコードだと誤解しちゃっている人がいるんだと思う。
0033デフォルトの名無しさん
NGNGなんだそういうことか… 笑うしかないな(藁
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG&じゃなくて|を使うところがプログラマらしくてよろしい。
0036デフォルトの名無しさん
NGNG&&じゃだめ?
0037デフォルトの名無しさん
NGNG値を求めるコードを書きたいのですが、どうしたらいいでしょうか?
例>
char tmp[]="12>=24 && 23*5>4*29";
tmpをある関数に渡すと、FALSEが返る。
0038デフォルトの名無しさん
NGNG論理的な思考ができれば、正確な日本語は必要ないってことか・・・
0039デフォルトの名無しさん
NGNGそいつあ、難しい。
なんかのインタプリタから、式評価関数をパクってきたほが
早いかも。
0040デフォルトの名無しさん
NGNGwhile(c=getchar(),c != EOF)
putchar(c);
0041デフォルトの名無しさん
NGNG|| じゃなくて | です。1からやり直しましょう。
0042デフォルトの名無しさん
NGNGまず数字と演算子に分解。
#if 式を後で使うかも(インタプリタ作るとか)
演算子の優先順位を基準にツリー化(低い=ルートより、高い先っぽ)
ツリーの先っぽから計算
#else
優先順位の高い演算子から逐次計算・置き換えしていく
#endif
後者ならちょちょっとできるよ。
ただC言語の式=関数呼び出しも含める、だとちょと無理。
0043デフォルトの名無しさん
NGNG/usr/include/sys/ucontext.hにおいて宣言されています。
そのメンバとしてレジスタ退避用のint[19]を確保しています。
配列の要素にレジスタを割り当てるために、
無名列挙体のオートナンバリング機能を使って
enum {
REG_GS = 0,
#define REG_GS REG_GS
REG_FS,
#define REG_FS REG_FS
REG_ES,
#define REG_ES REG_ES
・・・
};
としているのですが、ここで疑問があります。(前置き長くてスマソ)
宣言したすぐそばから#undefしてしまっているように見えるのですが
これはどうしてなんでしょうか?
0044ネタ
NGNG対象システムでgccが使えるなら。
#define TEMPSOURCE "/tmp/eval_tmp.c"
#define TEMPOBJECT "/tmp/eval_tmp"
int evaluate(const char *exp) {
FILE *fp;
fp = fopen(TEMPSOURCE, "w");
fprintf(fp, "int main() {return (int)(%s);}", exp);
fclose(fp);
system("gcc -o " TEMPOBJECT " " TEMPSOURCE);
return system(TEMPOBJECT);
}
004515
NGNG>>30
> sprintf(cmd, "%s < %s > %s", prog, file_in, file_out);
> system(cmd);
むぅ、これはいいですね。早速使ってみます。
>>31
あなたがどれ程できるのか私には サパーリ わかりませんが、
私にもあなたが何が言いたいのかさっぱりわかりません。
アフォ からの忠告ですが、理解できない相手を非難するより、
どうすれば相手に理解してもらえるのかを考えた方が
ご自身の能力は高まると思いますよ。
>>32
freopen で stdout を閉じてるのはわかっていますが、
閉じる必要はないなどと書いてあったので私としては ハァ? な状態になってしまいました。
閉じて繋ぎ直さなきゃ、どうすればいいのかと。
> progの話とprogを呼び出すプログラムの話が混ざっているから混乱すると思われ。
> >>15で書いたコードは「progを呼び出すプログラム」のものだけど、説明が悪いので
> progのコードだと誤解しちゃっている人がいるんだと思う。
なるほど、>>31 は >>15 で何が書いてあるかわかっていなかったと。
噛み合わないはずですね。
説明は確かに自分で読んでも分かりにくいです。
日本語勉強し直します。
勉強になりました。 >> ALL
0046デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGab
abc
abcd
↑のようにzまでにコンソールに出力したいんですができません
誰か助けて〜
0050デフォルトの名無しさん
NGNGん?
005148
NGNGできないと明日先生に怒られるんですよ〜
配列を使えと言われたんですが私にはわかんなかったです
0052デフォルトの名無しさん
NGNGこっちで訊いてね。
http://pc.2ch.net/test/read.cgi/tech/1011722640/l50
0053デフォルトの名無しさん
NGNG宿題は自分でやろぉね。
005448
NGNG無知な人に聞いても無駄だよね。ごめんね
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGchar *p = str;
for( ch = 'a'; ch <= 'z'; ch++){
p[0] = ch, p[1]='\0';p++;
printf("%s\n", str );
}
0058デフォルトの名無しさん
NGNGもっとも、このソースを見ても理解不能という >>48 に誂え向きの罠。
005957
NGNGしまった。その観点から言えば、wide系の関数を使えばよかった(笑)
0060デフォルトの名無しさん
NGNGvoid main(int n)
{
int c = 'a';
static int e = 'z';
if (n == 1){
main(e);
}else if(n >= c){
main(--e);
while(c <= n){
putchar(c++);
}
putchar('\n');
}
}
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGwchar_t *p = str;
for( ch = L'a'; ch <= L'z'; ch++){
p[0] = ch, p[1] = L'\0'; p++;
wprintf(L"%s\n", str );
}
って事。
0063デフォルトの名無しさん
NGNG#include <stdio.h>
void main(int ch)
{
while( putchar( '`'+ch++ )!='z' );
}
0064デフォルトの名無しさん
NGNGとしますよね。
このAがマイナスだということを判定(判別)するにはどうしたらいいんでしょうか?
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG006864
NGNGif(a > 0)
だね
なんか特別な関数いるのかと思った
0069デフォルトの名無しさん
NGNGアフォですか?
007068
NGNG( ,,) ・・・
./ |
(___ノ
/
∧ ∧
(´ー`) ・・・・
./ |
(___ノ
/
0071デフォルトの名無しさん
NGNG007266
NGNG007368
NGNG俺と一緒にうだうだしようZE!(o^-')b
0074デフォルトの名無しさん
NGNGガラッ!!|| 三 || ̄ ̄ ̄ || |(;゚Д゚)
|| エーッ!三|| / || |'と |⌒)
ΛΛナニッ!? || ΛΛΞ|| // || || | ノ
(;゚Д゚)ミ || (;゚Д゚) ||// || |ι ' ~
⊆ ̄ιノυ ||ι ⊃||/ || |
 ̄ ̄| ̄ ̄| ̄| || | | ||___ || |
 ̄| ̄ ̄| ̄ ̄|ΛΛホントカヨ… | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ____
 ̄ ̄| ̄ ̄| ̄|;゚Д゚)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /\____
 ̄| ̄ ̄| ̄ ̄| /U ズボッ!ΛΛウッソーン!? /ΛΛ\___
 ̄ ̄| ̄ ̄| ̄| | || (;゚Д゚) || |(;゚Д゚) |  ̄ ̄
 ̄| ̄ ̄| ̄ ̄|∪ ||ヾ||,,'|| п。。。|゚ι、| |オイオイ…!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG007748
NGNGchar s[30];
int i;
for(i = 0;i < 26;i++){
s[i] = 'a'+i;
s[i+1] = '\0';
puts(s);
}
0079デフォルトの名無しさん
NGNGそお?
0080デフォルトの名無しさん
NGNG008163
NGNG0083デフォルトの名無しさん
NGNG邪魔。帰れ。
0084デフォルトの名無しさん
NGNGみたいなことってできないですか?
今は
#if defined(__XXX__)
・・・
#endif
#if defined(__YYY__)
・・・
#endif
みたいな感じにやっているんですが、なんかかっこ悪いです。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGありがとうござます。
お礼にフェラさせて下さい!
0087デフォルトの名無しさん
NGNG>>86 きもい
0088デフォルトの名無しさん
NGNG良いサイトor本ある? サイトを検索してみてyaccの構文規則
なら見つけたんだが、解説がないと意味わからんわ。
なるべく新しいのでおながいします。
0089デフォルトの名無しさん
NGNGK&Rじゃだめなん?
0090デフォルトの名無しさん
NGNGgccのドキュメント
0091デフォルトの名無しさん
NGNGありがと>>89-90
0092デフォルトの名無しさん
NGNGyacc の構文規則、なのか?
BNF 見れ。
0093デフォルトの名無しさん
NGNGメモリとってグラフィックデータを回転後の位置で並べ替えてコピーし表示、
こういう流れでやりたいのですが、どこをどうすればいいやら・・・
何か助言お願いします
0094デフォルトの名無しさん
NGNGがんばれ!
助言終わり。
0095デフォルトの名無しさん
NGNGあふん
でもありがとう
0096デフォルトの名無しさん
NGNGいじょ。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGdestとsrcの型って何なんでしょうか?
0099デフォルトの名無しさん
NGNGたぶん君はここでヒントもらって何とかなるってレベルじゃないと思うよ。
まるまるコードを書いてくれる親切な人をがんばってさがすしかないと思う。
0100デフォルトの名無しさん
NGNGhttp://www.sm.rim.or.jp/~shishido/dib1.html
まぁ、このへんからコツコツと。
0101デフォルトの名無しさん
NGNGまぁ、一応教えてあげると、
色深度が24〜31ビットなら、unsigned longだね。
同じく16bitならunsigned short、256色ならunsigned charでまにあう。
もちょっとスマートにするなら、構造体を定義するか、定義されてる
もの(Colorとかなかったけ?)を使おう。
0102デフォルトの名無しさん
NGNGとか聞いてるのがすごく心配だ・・・
その式は座標の変換を表してるだけでそのままじゃ使えないぞ?
0103age
NGNG0104ポインタで…
NGNGint main(void){
char temp[32][32];
scanf("%s", temp[0]);
printf("%s",*temp[0]);
return 0;
}
いろいろ考えてみたけど、scanf,printfの引数がどれが合っているかさっぱりわからん。
temp[0]="abc",temp[1]="bcd" という配列を出力したいんですが…どうすればよいですか?
二重配列について詳しく教えてください(涙)
0105デフォルトの名無しさん
NGNGDOSで位置を指定して文字を出力させたい場合どうすればいいですか?
過去のスレ探したけど同じ内容が見当たらなかったのでお願いします
0106デフォルトの名無しさん
NGNG*temp[0]はtemp[0][0]と同じ意味になるので注意。(char型を指す)
scanfの引数としてtemp[0]、&temp[0]どちらでもいい。普通は&を省略。
temp[1]にbcdを読み込ませる事。
0107デフォルトの名無しさん
NGNG↓ ↓
|1|2|3|4| .. |29|30|31|32|
0108デフォルトの名無しさん
NGNGなぜwin2000でDOS(コマンドプロンプトってことだよね?)使うの?
そんな非効率なことさっさと辞めて、rubyでも覚えたほうがいいよ。
0109ポインタで…
NGNGよく考えたら*temp[0]はtemp[0][0]と同じ意味ですね。
temp[0]にしたらうまく動きました。
でもscanfでtemp[0]と&temp[0]が同じ意味になるのはなぜですか?
&がつくとアドレスを得られるから、アドレスのアドレスという不可解な意味に
なってしまう気がするのですが…。
0110デフォルトの名無しさん
NGNG日本語喋ってくれ
0111105
NGNGいや、超初心者にCを教える環境がWindows2000なんだよ。
だから、非効率でも良いから教えてください。お願いします。
0112デフォルトの名無しさん
NGNG&temp;
(char**)temp;
互換性
0113ポインタで…
NGNG日本語頑張ります。
char temp[32][32];
という二重配列を宣言して、temp[0]="abc", temp[1]="bcd", … みたいに文字列を代入しました。
strcpyみたいなchar *型を引数として要求される関数を使用するとき、引数の指定の方法が
分からなかったのです。(*temp[0]とか、**tempとか)
…意味わかりますか?説明不足でごめんなさい。
0114デフォルトの名無しさん
NGNGできたのかよ!(三村流
0115デフォルトの名無しさん
NGNG> 具体的に申しますと、VC++6.0で
> printf("\x1b[31m文字の色は赤\n")
> という内容のCソース作成し実行すると、
> Window98では文字の色が赤くのなるのですが、
> Windows2000では文字の色は変化しませんでした。
> そこでWindowsNTの過去ログを参照したところ、
> "device=%SystemRoot%\system32\ANSI.SYS"
> をCONFIG.NTに追加すると、エスケープシーケンスが使える
> とあったので、試しましたがやはり何の変化もありませんでした。
私のWWWの検索エンジンで調べた限り
・そもそも Windows2000 では対応していないという記述が散見される。
ANSI.SYS も有効でないという記述も見られました。
# ゴトウさんも確認しているので確度は高いですね。
・Windows2000 では コンソール用の API を使う。
適当に以下のキーワード(適当に抽出)で MSDNなりWWWなり
検索してくれ。サンプルくらいは見つかるはずさ。
GetStdHandle
GetConsoleScreenBufferInfo
SetConsoleTextAttribute
--------------------------------------------------
らしいよ。
win2000でDOSなんか使うなってことだ。
0116デフォルトの名無しさん
NGNGこれは1回tempに対して配列要素参照演算子を使うと
それがchar型配列と同じだということ。
strcpyに
char arrya[256];
strcpy(array,"いやんもう♪");
と使えるように
cgar temp[32][32];
strcpy(temp[0],">>1さん大好き★"); //temp[0]に文字列をコピー
というように使えるわけわかるでしょ?
2回適用するとそれがそれがchar型だということ。
0117デフォルトの名無しさん
NGNG残念だったが、よく有る事だ。強くイキロよ>初心者
0118111
NGNG私も検索をかけたところ同じように対応してないか、
エスケープシーケンスが無い様な内容だったので・・・
ありがとう、でも使えないのはイタイ
0119デフォルトの名無しさん
NGNG>>105が初心者に教えるのはCなんだから、
Win2Kのコマンドプロンプトのこと知らなくてもいいんじゃねぇーの?
0120デフォルトの名無しさん
NGNGエスケープシーケンス互換のGDI用ライブラリ作って、それをWindowsで使用したら?
0121デフォルトの名無しさん
NGNG# いまだかつて一度も使ったこと無いし漏れ。
0123デフォルトの名無しさん
NGNG0124111
NGNGありがとう、そうするよ。
0125ポインタで…
NGNG#include <stdio.h>
#include <string.h>
typedef struct aa{
char name[32];
}SMP;
void main(void){
char temp[32][32];
SMP *foo;
strcpy(temp[0], "Ichiro Suzuki");
strcpy(foo->name,temp[1]);
puts(foo->name);
}
でもfoo->nameがchar型だからうまくstrcpyできないようです。
かといって*(foo->name)にしてもできませんでした。
どうすればfoo->nameがchar *型になりますか?
0126ポインタで…
NGNGtemp[1]はtemp[0]のつもりでした。
0127デフォルトの名無しさん
NGNGアフォ
fooは何やねん。
配列に手つける前にポインタもっかい勉強しなおせ。
0128デフォルトの名無しさん
NGNGtemp[1]
そりゃそうだろね。
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNGSMT *foo = &smp;
0131デフォルトの名無しさん
NGNGこの発想がどこから来たのかぜひ教えてほしい。
エラーメッセージ読んでる?
0132デフォルトの名無しさん
NGNG0133ポインタで…
NGNGこのプログラムがポインタの練習のつもりでした。
もう一度はじめからポインタを勉強しなおします。
>>131
エラー食らわないんです。bccとCpadでやっているんですが。
0135デフォルトの名無しさん
NGNG警告レベル変えられる?
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG・・・
free(foo);
0138ポインタで…
NGNG0139デフォルトの名無しさん
NGNGprintf( "hoge" );
とかやった場合の内部の処理が知りたくてたまりません。
ブロッキングとかノンブロッキング(名前しか知らない)とか
メモリ関係の知識を深めたいんですけど、良本orURL教えてください
0140デフォルトの名無しさん
NGNG練習ならもっと単純なものからやりなさいな。
int i,*p; //pの指しているものはぁゃιぃオブジェクトを指している
p = &i; //pはこれでiを指すようになる
*p = 10; //わーいo(^-^)oi = 10;と同じだよ
0141デフォルトの名無しさん
NGNG-=≡ ( )へ
>
0142デフォルトの名無しさん
NGNGstruct { int i; } s, *p;//pの指しているものはぁゃιぃオブジェクトを指している
p = &s; //pはこれでsを指すようになる
p->i = 10; //わーいo(^-^)o s.i = 10;と同じだよ
0143140
NGNG○ pの指しているものはぁゃιぃオブジェクト
0144デフォルトの名無しさん
NGNG×pの指しているものはぁゃιぃオブジェクトを指している
○pはぁゃιぃオブジェクトを指している
0145デフォルトの名無しさん
NGNGへ( ) ≡=-
く
0146144
NGNGダブった上に直し方がちょと違う(w
0147デフォルトの名無しさん
NGNGCRTのソース嫁。
それ以上は、OSのソース嫁。
それ以上は、半導体デバイスの勉強しる。
それ以上は、量子論を勉強しる。
0148デフォルトの名無しさん
NGNGvoid main(void)
は、やめれ・・・せめて
int main(void)
main(void)
にしたほうがいいよ。Cの仕様上ね
>>132
Cな人が割当ててないバッファのアクセスと
strとmemの使い方間違いとメモリ解放忘れと二重解放に
厳しいのは当然と思います。
忘れてるかもしれないけどみんな通ってきた
0150ポインタで…
NGNG>>125のfooはポインタのまだ何も指していない状態
(ごみが入っている)ということですか?
ということは
*fooがポインタだから何か指さなくちゃいけない?
でもfoo->nameだから構造体の中のchar name[32]を指していると思うんですけど。違うのかな…。
0151デフォルトの名無しさん
NGNGメモリそのものの動きまでやるか・・・
それなら「やさしいコンピュータ科学」一冊で概要はわかる。
これで扱ってる言語はPascalだけど。
スレ違いだなこりゃ。
0152デフォルトの名無しさん
NGNG->は矢印だけど、指すんじゃなくて抽出すんの。
foo->nameはfooがnameを指すんじゃなくて、
fooが指してる構造体変数内のnameを取得するってこと。
(*foo).name のほうがわかりやすい?
0153デフォルトの名無しさん
NGNGそのfooの実体が存在せんのだ。よって中身も無い。
幽霊に内臓が無いのと同じだYO!(ワラ
0155デフォルトの名無しさん
NGNGレス読むときはゆっくり読みなよ。
人間話すより読むほうが速いから、
読む速度で行くと理解できなくなることもある。
ゆっくりじっくり、しゃべるのより遅いくらいの速さで読んでみそ。
0156デフォルトの名無しさん
NGNGブロック内の未代入の変数、ポインタ変数の値は未定義です。
fooはメモリ上の正しいインスタンスのアドレスを保持しなければ
foo->nameをしても、もうヴァカかとアフォかとという状態になります。
あとねfoo->nameの演算子は(*foo).nameと同じです。
0157デフォルトの名無しさん
NGNGポインタなのは*fooじゃなくてfooだけど・・・
それ以外はそんな感じでいいYO!
0158156
NGNGchar name[32];
}SMP;
は型の宣言で定義ではないからメモリの割当ては行われない。
SMP *foo
の宣言(これは定義でもある)はポインタ分のメモリ割り当てしかしない
バイトアドレスが4バイトの処理系なら4バイト割当てられる。
自動変数だから初期値はゴミ
fooの参照先は >>137のように明示的にメモリ割当てを行わなければならない。
0161159
NGNG0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGある日某専門学生のゲーム作品を見ていて、一つふに落ち着かないことがあった。
それは、彼らが作品を起動し終了をさせるたびに再起動し、また作品を起動させるのであった。
あまりに気になったので彼らに何故そんなことしているのかと問い掛けた。
そしたら、重くなって起動できなくなるらしい。
ソースを見せてくれないか?と問い掛けたら、彼らは気兼ねなくそのソースを見せてくれた。
私は絶句した・・・DirctXを使ったゲームのプログラムだったのだが、
全ての終了コードにはこう打たれていた・・・
exit(1);
と、彼らに未来はあるのだろうか?
全てノンフィクションでおおくりしました・・・
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGオブジェクトリリースがされて無かったってこと?
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGpint a = pint();
if ( a==NULL ) print( "あひゃ(・∀・)";
これ、typedef使わずにやるにはどうすればよかと?
0169168
NGNG0170デフォルトの名無しさん
NGNGEOFはファイルじゃないと使えなかった?
0171デフォルトの名無しさん
NGNG文字列なら、\0とかでいいんじゃないの?
0172>>139
NGNGC といっしょに、*UNIX の勉強した方が早い* と進言致します。
低水準とか高水準って説明を真に受けないで、
標準関数とシステムコールの違いをしっかり意識してからの方が
理解が早いでしょう。
こんな感じの本かな
http://www.amazon.co.jp/exec/obidos/ASIN/4894713195/250-9016572-4192253
0174159
NGNG文字列じゃなくて標準入力からEOFは打てないのかという質問ではないですか?
0175デフォルトの名無しさん
NGNG南無・・・
0176デフォルトの名無しさん
NGNGダメ。 入力されて判断してるから、無限になっちまうす
0177デフォルトの名無しさん
NGNGサーフェイスいじくってると面白いように落ちる(←アフォ)けど、
やっぱあれはDirectDraw残ってるのかなぁ。
ウィンドウが消滅した時点で自滅してくれるとうれしいんだけどなぁ。
0178デフォルトの名無しさん
NGNGつか、どういうコード?
0180デフォルトの名無しさん
NGNGイキロ!
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGん、、、どうでもいいってことかな?
0184デフォルトの名無しさん
NGNG入力をchar型で受けてない?
K&R開いてgetchar()とかの帰値の型を空の穴くまでみれ。
0185173
NGNG勝手に開放されるのもうれしいけど、それだと逆に怖いよ
0186デフォルトの名無しさん
NGNGwhile(*(str++) != '\0'){
・・・
}
というでわないのか?
0188デフォルトの名無しさん
NGNG違うみたい。でも、入力をCHARで受けてる。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGchar c;
while((c = getchar()) == EOF) {
my_count(c);
}
my_print();
これなら少なくとも cがintでないと無限ループになるよ
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGすげー混乱した。
0194デフォルトの名無しさん
NGNGそうなら、
((c = getchar()) != '\n'
とかで改行終了とか
((c = getchar()) != 0x1b
ESC終了とかでいいでしょ。
0195デフォルトの名無しさん
NGNGchar がsignedなら、終わる。
0196デフォルトの名無しさん
NGNGint getchar(void)
です。
0198デフォルトの名無しさん
NGNG【解説】
getc(), fgetc()はファイルポインタfpで示されるファイルから1文字を入力
します。
getchar(), fgetchar()は標準入力(stdin)から1文字入力します。
getc(), getchar()はマクロとして定義されています。
これらはcharではなくint型の値を返すことに注意してください。
【リターン値】
入力した1文字を返します。ファイルの終りに到達した時には、値EOFを返し
ます。エラーを検出した場合にもEOFを返しますので、EOFかエラーかの判定
はfeof(3), ferror(3)を使ってください。
0199デフォルトの名無しさん
NGNG質問者は寝たか。
0200デフォルトの名無しさん
NGNGどんな感じにコードかけば良いでしょうか?どこかにサンプルコードとか
おちてないでしょうか?
0201デフォルトの名無しさん
NGNGなら、最初からそう質問してくれ・・・
http://pc.2ch.net/test/read.cgi/tech/992057422/
に、いらんレスつけちゃったじゃないか。
0202デフォルトの名無しさん
NGNGスピードの問題ならアセンブラもゲームでは有効だということなんですか?
0203デフォルトの名無しさん
NGNG上のはホントです。
下のは一部のライブラリにおいてホントです。
0204デフォルトの名無しさん
NGNG>>125からのやりとりを見て心底思った。
0205デフォルトの名無しさん
NGNGということは、cを中途半端な状態でjavaに行くよりしっかりとcを極めたほうが
言いということでしょうか?それとアセンブラもわかってないと困ることに
なるんでしょうか?
よろしくお願いします。
0206デフォルトの名無しさん
NGNGできればいきなりjavaに行くのがいいと思うが・・・
cにどっぷりつかっちゃうと、javaのスタイルになれるのに時間がかかる
0207デフォルトの名無しさん
NGNG自分が何をやりたいのかはっきりさせること。
これが一番大事。動機付けて勉強できるという意味じゃ
他の分野の勉強するよりもプログラミングってのはいい位置にある。
目的がはっきりすれば自ずとどんな知識が必要になるのか分かるってもんだ。
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG基本的に>>206に同意する。
つまり、Javaのスタイルに慣れておけば、Cでも、見通しや保守性の良い
スタイルでプログラミングできるようになると思う。
あと、アセンブラを勉強しておくと、実行効率の良いプログラムが
書けるようになるはず。
ちなみに、アセンブラはCやJavaに比べると単純な言語なので、
覚えるのは簡単。ただ単に、書く量と手間がかかるだけだよん。
0210デフォルトの名無しさん
NGNG俺はアセンブラをRISCの様な言語だど言ったらモルァ!すれでゴルァ!された。
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNGマジでそう思うの?
0214デフォルトの名無しさん
NGNG205じゃないですが、なるほど。
一通りCを勉強したらJavaもやってみますわ。
0215デフォルトの名無しさん
NGNG> ただ単に、書く量と手間がかかるだけだよん。
これがやっかいなんだが・・・
0216デフォルトの名無しさん
NGNG禿ドウ
言語やライブラリの知識があっても何も作らない人もいる。
それはそれで別にいいんだけど、そういうやつに限って
人に知識を自慢してきてウザかったりすることが多い
やっぱプログラマたるものなんか作ってナンボだよな
言語オタは逝ってよし
0217デフォルトの名無しさん
NGNGどうすればいいですか?
0218デフォルトの名無しさん
NGNGで切り上げてjavaに行くかで悩んでるのですが、そのあたりはどうなんでしょうか?
0219デフォルトの名無しさん
NGNG市販のゲームはほとんど全部C/C++製だろ?
0220デフォルトの名無しさん
NGNG単純にプログラム起動時に一度だけテーブルを作成すればいいんじゃない?
0221デフォルトの名無しさん
NGNGポインタ知らないとバカにされます。
一生JavaやC#の様な過保護箱庭言語だけ使うつもりなら止めませんが。
0222デフォルトの名無しさん
NGNGそういうのだけはなりたくないな。
0223デフォルトの名無しさん
NGNGポインタの理解は必須です。つまり、こんぷーたを本当に理解したいか否かです。
アセンブラもやった方がいいに越したことはないですが、
C のポインタを構造体、共用体を絡めてきちんと理解できていれば十分でしょう。
まぁ、これを理解するのもアセンブラをやったほうがハヤーイかも知れません。
アプリケーションだけを作っているつもりなら、
C をやらずにいきなり Java などの方が良いかもしれません。
その方がおぶじぇくとシコウをすんなり受け入れられるでしょう。
(この辺は >>206 にはげどうです。)
0224デフォルトの名無しさん
NGNGそれは絶対にいやなんですけど。
やっぱポインタを極めてからjavaに移行するほうが身のためでしょうか?
でもあんまりCにはまるとjava理解するのに時間がかかるという方が多いので、
jabvaがわからなくて大規模プロジェクトに参加できないのではと不安になって
しまいます。ちなみにポインタを極めるのには思いっきりやっても自分の場合、
半年から1年はかかりそうなんですが。
0225217
NGNGそれはそうなんですけど
atan2ってy/xから角度出すじゃないですか
どうやってテーブルを作成すればいいのかな、と思いまして・・・
うう、能力不足
0226デフォルトの名無しさん
NGNGポインタは、確かにひっかかりやすいところもあるけど、
まず本読んで、自分で書いてみないことにははじまらない。
わかんなくなったらまた聞きに来なさい。
0227デフォルトの名無しさん
NGNGatan_array[y][x]
みたいなのに入れとけばいんじゃない?
atan_array[y/x]ってやるのは得策じゃないと思う。
0228デフォルトの名無しさん
NGNGどこでどの仕事しようがタダの*兵隊*にしかなれん。
Cをある程度やれば、OSと、その背景にあるコンピュータそのものの理解が
必須になってくるが、Javaから入ると、VMの理解だけにとどまってしまう
可能性がある。ガベコレがどーのとかあおってる連中とかが陥ってる罠だな。
視野狭窄だ。
ポインタを覚えるのが重要なのではなくて、もっと、アプリケーションを支える
環境(OS, ハードウェア)がどうなっているのか、ということに留意すること。
0229デフォルトの名無しさん
NGNG何でもCでできるんだ!っていうC厨にならなければいい(すべての言語に言えるけどね)。
ポインタを知っておけば参照とかオブジェクトとインスタンスの関係などがイメージしやすいかなと思います。
なんでも知っている分には損はない。
0230デフォルトの名無しさん
NGNG一度便利な環境に触れてしまうと不便な環境には戻れない。
0231デフォルトの名無しさん
NGNGあこがれるけどなりたくはないな。
0232初心者
NGNG0233デフォルトの名無しさん
NGNGなんとかなります。
>>228の意見にはよく耳を傾けておくこと。
そしてPC-UNIX、(以下略
0234217
NGNGどうもありがとう
なるほど、分けて考えればよかったか
ただ配列がでかくなりそうだ・・・
大丈夫かな
0235デフォルトの名無しさん
NGNGC++は分からないけど、Cなら大丈夫でしょう。
ポインタだって通常の変数と同じようなものだと考えれば引っかかることはないし。
0236227
NGNGゲーム等に使うなら、256x256くらいの分解能があればだいじょぶかも。
atan_array の型をsigned shortにして、整数部 9bit(符号付) + 小数部 7bitの
固定小数として扱えば、±180度カバーできて、1要素2バイトなので、
デーブルサイズは128KBでいけるかな。
0237デフォルトの名無しさん
NGNG参照時の動作が異様に普通の変数と違いますが・・・。
0238227
NGNGごめん。よく考えたら、2次元配列にするひつようなかった。
xとyの絶対値が大きいほうが256とか1024になるように正規化
(xがデカい場合は、y = 1024*y/x; x = 1024; みたいな)すれば、
degree = atan_array[xかyの絶対値が小さいほう];
ってな感じで、1次元配列でOKでした。
0239224
NGNGそれと、アセンブラなどの知識はどの程度もっていたらいいでしょうか?
やっぱりゲームとかやりたいなら、結構やっておいたほうがいいでしょうか?
それと、ゲームではどの程度アセンブラが使われているのでしょうか?
0240デフォルトの名無しさん
NGNG世に出てるゲームで、VB製がどれだけあるか考えてみろ
VBでインラインアセンブラが使えるか考えてみろ
VBは確かに糞ゲーが多いが、そんなことを質問している時点では
その糞ゲーすら作れないから安心してできる事からやれ。
そもそも3Dのゲームでも現在はアセンブラを使うのはごく一部。
最適化ヲタでもない限り、わざわざアセンブラを使う野郎は少数派
0241デフォルトの名無しさん
NGNGこれからはPERLだよ、PERL。わかったか、ヴォケ
0242デフォルトの名無しさん
NGNGVer 6まで行こうとしてる言語が新言語か?
0243デフォルトの名無しさん
NGNGおそらくまだかなり若いのでしょうけど、はっきりいって、プログラミングに向いてないと思います。
プログラミングは自分で体を動かさないと身につきませんよ。
0244217
NGNGそっちのほうがよさそうですね
使わさせてもらいます
0245デフォルトの名無しさん
NGNGそれは言わない約束だろ
0246デフォルトの名無しさん
NGNGWeb上では捜し物をするとあまりにいろいろなモノがヒットしてしまい
探しにくいのですが
「ここが総本山」的な日本語C言語解説サイトとかリンク集ってありますか?
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGつぅかネットなんかで基礎勉強しようとするな。
0250デフォルトの名無しさん
NGNGダメ本も数多いが、webの解説のほうがクズ率高い。
0251デフォルトの名無しさん
NGNG使い方はかわらないだろ。
0252デフォルトの名無しさん
NGNGとりあえず本は2冊以上買え。Cの入門書は比較的ハズレが多いから
1冊だけ買った本が糞だと自分も糞プルグラマーになるぞ。
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGK&Rより安い入門書は全部糞。
入門と書いてある本も糞。
K&Rおいてない本屋は行く価値無し。
0255デフォルトの名無しさん
NGNGもちろん、それ以外に辞書(?)としてK&Rを買うのは忘れずに。
0256デフォルトの名無しさん
NGNGと前から言ってるでしょーが!
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG気がするけど、既にその本無くしちゃったので詳細不明。
なんとかしてもう一度手に入れたい。
0260デフォルトの名無しさん
NGNG0261253
NGNGアセンブラー&マシン語でのプログラミングにくらべると
わかりやすいですね、C言語って。
MSXでアセンブラ使ってたころが懐かしいです。
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGそのようですね
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNGいきなりC言語に入った人と、一度でもアセンブラを経験した人とでは、C言語に
対する基本的な知識の習得の度合いが違うようです。
それはポインタの学習時に顕著に現れるように思います。アドレッシングモード
の言葉の意味がわからない人は、特にポインタを気持ち悪がって使わない傾向
があります。すぐ暴走したり、原因不明の動作をしたりするからです。
C言語をどのように使うかは全く自由ですが、せっかくですからポインタを自由
自在に扱いたいですね。
0267デフォルトの名無しさん
NGNGありがとよ。
0268デフォルトの名無しさん
NGNGには、十分ですか?
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGCのインタプリタ? 入門にはいいんじゃないかな。使った事無いけど。
これから買う事はお薦めしないけど、持ってるなら有効に活用すべし。
但し、勉強に十分とは言えないかと。
せめてCの基本的な文法とか覚えたら、さっさとbc++やgccに移行して
コンパイラに慣れておく事をお薦めする。
0271デフォルトの名無しさん
NGNGサンクス。とりあえず、これで勉強します。
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGカコヽ(`Д´)ノイイ
0274デフォルトの名無しさん
NGNGカコイイかもしれないけど、Cだとコンパイラのエラーメッセージで学習は無理だろ・・・
gccの-Wallで警告無しでも、気休めにしかならないのがC言語なんだから。
0275デフォルトの名無しさん
NGNGこれで必ずoには-1が入るとかアフォなこと言ってた人がいたよぉ
ママーン
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGunsigned short x;
で、1byte目と2バイト目を入れ替える時、
x = ((char*)x)[0] * 0x100 + ((char*)x)[1] & 0x00ff;
と
x = x >> 8 + x << 8;
と書く場合とでは、とちらが処理速度が速くまた美しいのでしょうか?
0278デフォルトの名無しさん
NGNGどちらが美しいか:そりゃ下の方だろう。上の方が美しいとか思うか?
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNGアドレスを持った関数、(ポインタ変数の関数版?)ということだと思うのですがいまいち使い方が思いつきません。
用のないときは使わない、ということでよいのかもしれませんが、気になってます。
どういう場合なら使えるのでしょうか?
使用上、効果的な具体的な事例はあるのでしょうか?
環境はWINDOWSXPにVC++6(.NETも一応あります)です。
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGK&R の quick sort のとこに確かありました。
0284デフォルトの名無しさん
NGNGエソディアソの違いは?
0285デフォルトの名無しさん
NGNG123を表示するとき
printf("%d\n",123);
と、書いてあるのですがどうして
printf("123");
と、直接書いてはいけないんですか?
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGありがと。これから123と普通に書く事にします。
0288デフォルトの名無しさん
NGNG入れ替えるだけならエンディアソは関係ないと思ふ。
0289277
NGNG>>279
正しく変換できないとは?
当方素人です。ご教授願います。
0290277
NGNGエソディアソとは何でしょうか?
0291デフォルトの名無しさん
NGNG画像をある程度使ったものなども作れるのでしょうか?
0292デフォルトの名無しさん
NGNG上: エラー「メモリがreadになりませんでした」
下: 正常に変換されなかった
正確にコード書け。素人は免罪符にはならん。
エンディアン: http://yougo.ascii24.com/gh/00/000012.html
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNGなるほど。
ではVC++までいかないと無理ですか?
0295カツオ
NGNGLinux、FreeBSD、NetBSDのどれにしたらいいと思いますか?
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG標準として規定されてない(つまり、全てのOSで共通に使える画像ライブラリは
無い)けど、特定のOS用の画像ライブラリはくさるほどあるから、
心配すんな。
どの程度のゲームが作れるかについては、君が見たことのある
全てのゲームは、どうにかして作れるから安心したまい。
0298デフォルトの名無しさん
NGNGどれでもいんだけど、あえてオレらに決めてほしいのなら、
NetBSDにしとけ。
0299デフォルトの名無しさん
NGNGミーハーで派手好きならLinuxでもいいかもしれんが。
0300デフォルトの名無しさん
NGNGつーことで、サイコロ持ってる?無かったら鉛筆でもいんだけど・・・
0301277
NGNGうろ覚えでコードを書いていました。
上:x = (((char*)&x)[0] * 0x100) + (((char*)&x)[1] & 0x00ff);
下:x = (x >> 8) + (x << 8);
下のほうが処理速度及び美しさで勝る、と言うことで宜しいでしょうか?
>エンディアン
ご教授ありがとうございます。
エンディアンの変換でこの処理が必要になりました。
0302デフォルトの名無しさん
NGNGありがとうございます。
ソフトによってOSが決まってたりするのはそういうことなんですね
0303デフォルトの名無しさん
NGNGむ?
0304デフォルトの名無しさん
NGNG面倒だから、htons/ntohsで変換しちまえ
0305デフォルトの名無しさん
NGNG本質的には、コールバック関数の登録のためどうしても必要だぁね。
デバイスドライバのソースの、エントリポイントのテーブルあたりを見ると、
「ほへぇ、なるへそ」と思えるかも。
static struct cdevsw tst_cdevsw = {
tstopen, tstclose, tstread, nowrite,
noioctl, nostop, noreset, nodevtotty,
seltrue, nommap, nostrategy, "tst", NULL, -1
};
こんなん。上のtstopenとかが関数のアドレス。tsopen()の定義は
static int
tstopen(dev_t dev, int oflags, int devtype, struct proc *p) {
return 0;
}
こんな感じ。
0306デフォルトの名無しさん
NGNGなんで美しい、にこだわるの?
0307デフォルトの名無しさん
NGNGオブジェクト指向ごっこもできるよね。
0308デフォルトの名無しさん
NGNG高級言語は
0309デフォルトの名無しさん
NGNG美しいものを嫌いな人がいて?
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG文字列から指定文字列を見つけるアレです。
もしアレをオリジナルの関数で作るとしたら
どうなるでしょうか?
string.hの中身見てもさっぱりで…
どなたか作れる人いたら教えて
0312デフォルトの名無しさん
NGNGポインタを使いましょう
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNGchar* mystrstr(char* a, char* b)
{
while(*a){
if(strcmp(a, b) == 0){
return a;
}
++a;
}
return NULL;
}
0315デフォルトの名無しさん
NGNG0316311
NGNGポインタ使ってます。
char strstr(char *str,char *search)
{
int i=0,k,i2=0,work;
while(*(search+i) != '\0'){
i++;
}
while(*(str+i2) != '\0'){
if(*(str+i2) == *search){
for(k=1;k<i;k++){
if(*(str+i2+k) != *(search+k)){
return NULL;
}
}
return *(str+i2);
}
i2++;
}
return NULL;
}
これで上手く行かないんです。
どうしてもstring.hはincludeしないで
作業進めたいんですけど、どうにもならなくて、
訂正箇所あったら教えてください。
0317仮引数
NGNG現在仮引数が11個でVC6.0を使ってるんですけど仮引数が多すぎるって警告でるんですけど問題ないですかね?
0318デフォルトの名無しさん
NGNGいや、関数によって決まってるんだろうが…
あんまり引き渡しても
引渡し側が使えないぞ?
0319デフォルトの名無しさん
NGNG仮引数→引数、なら理解できるが・・。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG引数が多くて警告なんかされたことないから
わからんな…
なんか関数I/Fの設計がまずい気もするけども。
構造体を利用するのも一つの手だな。
0322デフォルトの名無しさん
NGNGお父さんかお母さんに教わらなかったのか?
0323デフォルトの名無しさん
NGNGまず返却値の型が違うな。char *で返してやらないとどこでマッチ
したのかわからないじゃない。それから12行目のreturn NULLが
おかしいな。ここはbreakでforループを抜けるんじゃないか?
他にも問い詰めたい部分はあるが、こんだけ直せば動くんじゃない?
0324デフォルトの名無しさん
NGNG変数名をもうちこっと何とかしてホスィ・・・。
0325デフォルトの名無しさん
NGNG実引数の間違いじゃないのか? そうじゃないなら警告コードをさらせ。
0326デフォルトの名無しさん
NGNG{
int i,n,l = strlen(p);
for(i = 0;s[i];i++){
for(n = 0;s[i+n] && s[i+n] == p[n];n++);
if(l == n && s[i+n-1] == p[n-1])
return s + i;
}
return NULL;
}
なんか違ったらスマソ
0327デフォルトの名無しさん
NGNGstring.h をインクルードしたくないって言ってるんだから、
strlen()も使えないんじゃない?
0328デフォルトの名無しさん
NGNG{
int i;
unsigned long h1 = 0, h2 = 0;
size_t len1 = strlen(base), len2 = strlen(part);
char *p1 = base, *p2 = part, *l = base + len2, *end = base + len1;
if (len1 < len2)
return NULL;
for (i = 0; i < len2; i++) {
h1 += base[i];
h2 += part[i];
}
for (; h1 != h2 || strcmp(p1, p2); ++p1, ++l) {
if (l == end)
return NULL;
h1 -= *p1;
h1 += *p1;
}
return p1;
}
0329デフォルトの名無しさん
NGNGchar* str_str(const char* base, const char* part)
{
int i;
unsigned long h1 = 0, h2 = 0;
size_t len1 = strlen(base), len2 = strlen(part);
char *p1 = base, *p2 = part, *l = base + len2, *end = base + len1;
if (len1 < len2)
return NULL;
for (i = 0; i < len2; i++) {
h1 += base[i];
h2 += part[i];
}
for (; h1 != h2 || strcmp(p1, p2); ++p1, ++l) {
if (l == end)
return NULL;
h1 -= *p1;
h1 += *l;
}
return p1;
}
0330デフォルトの名無しさん
NGNGグサッ
マアイイヤソノクライ
0331デフォルトの名無しさん
NGNGどうした?
0332デフォルトの名無しさん
NGNGchar *mystrstr(const char *str, const char *search)
{
const char *p1, *p2;
while (1)
{
p1 = str;
p2 = search;
while (*p2 && (*p1 == *p2))
{
++p1;
++p2;
}
if (! *p2)
return (char *)str;
if (! *p1)
return NULL;
++str;
}
return NULL; /* tricking compiler */
}
私ならこう書くっす。
(char *) ってキャストしてるけど,C++ なら const_cast 使うべきっすね。
0333デフォルトの名無しさん
NGNGなるほろ!
毎回比較する必要はないのか!
0334デフォルトの名無しさん
NGNGどっかのMLで見たソースだな、そりゃ(藁
>>332
それは文字列が長くなると遅いな
0335326 == 330
NGNGint strlen(char *p){int l;for(l = 0;p[l];l++) return l;}
0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNGうわ,なるほど,一種のハッシュみたいな感じかー。
実はたった今,マッチング処理の速度向上に苦しんでたんスよー。
0338デフォルトの名無しさん
NGNG最初のstrlenの長さで処理を振り分ければいいかな。
0339デフォルトの名無しさん
NGNGハッシュじゃBM法の方が早いだろ。
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNG>REPE CMPSB
0342デフォルトの名無しさん
NGNGstrncmp(a,b,strlen(b)) == 0
0343超感謝感激!!
NGNG有難うございます!!
自分ではナニブン思いつかないものでして
かなり困っておりました。
おかげで先に進む事が出来ました。
本当にに有難うございました!!
0344デフォルトの名無しさん
NGNG双方向リスト構造について勉強しているのですが、
下のサンプルプログラム(番号を入力する毎に構造体を生成して
昇順に挿入していく)なんですが、2番目に入力した番号が
絶対に先頭に挿入してしまうのです。
先頭に挿入する場合の条件式がおかしいのだと思っていろいろ
いじってみたのですが、うまくいかず・・・。
すみませんがよろしくお願いします。
0345デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
/* list構造体とLISTを定義する */
typedef struct list {
int data;
struct list *prev;
struct list *next;
} LIST;
/* リストに新しい要素を挿入する */
LIST *InsertItem(LIST *lp, int x)
{
LIST *lpnew, *lptemp;
/* 新しいリスト要素を生成する */
lpnew = (LIST *)malloc(sizeof *lpnew);
if (lpnew == NULL) {
/* stderrにエラー文字列を出力する */
fprintf(stderr, "メモリーエラー\n");
/* exit()関数を使って実行を終了する */
exit(1);
}
/* 新しい要素に値を代入する */
lpnew->data = x;
/* 初回のケース */
if (lp == NULL)
{
/* 初回は自分自身を指しておく */
lpnew->prev = lpnew->next = lpnew;
/* 新しい先頭を返す */
return lpnew;
}
lptemp = lp;
/* 挿入位置を求めてリストを前進する */
while (lptemp->data < x && lptemp->next != lptemp)
lptemp = lptemp->next;
0346デフォルトの名無しさん
NGNGif (lptemp->prev == lptemp)
{
lpnew->prev = lpnew;
lptemp->prev = lpnew;
lpnew->next = lptemp;
/* 新しい先頭を返す */
return lpnew;
}
/* 末尾挿入のケース */
if (lptemp->data < x && lptemp->next == lptemp)
{
lpnew->next = lpnew;
lpnew->prev = lptemp;
lptemp->next = lpnew;
/* もとの先頭を返す */
return lp;
}
/* その他のケース */
else
{
/* 1つ前の要素に戻す */
lptemp = lptemp->prev;
lpnew->next = lptemp->next;
lpnew->prev = lptemp;
lptemp->next->prev = lpnew;
lptemp->next = lpnew;
/* もとの先頭を返す */
return lp;
}
}
0347デフォルトの名無しさん
NGNGプログラマになるのはやめておいたほうがいいと思われ。
0348デフォルトの名無しさん
NGNG{
/* 空のlpheadを宣言する */
LIST *lphead = NULL;
/* リストに要素を挿入する */
lphead = InsertItem(lphead, 20);
return 0;
}
0349デフォルトの名無しさん
NGNG理解しようと努力してるだけ、ましだと思う。
とりあえずどういうデータを入力したのかも書け。
0350デフォルトの名無しさん
NGNG2番目を1番目より低い値を入れてるところが
なんかバグを隠そうという意思がみられるのですが・・・。
技術評論社いってプログラム修正してないか見にいったけど
直ってなかったよ。
lphead = InsertItem(lphead, 20);
lphead = InsertItem(lphead, 10);
lphead = InsertItem(lphead, 15);
lphead = InsertItem(lphead, 20);
lphead = InsertItem(lphead, 14);
lphead = InsertItem(lphead, 9);
lphead = InsertItem(lphead, 22);
lphead = InsertItem(lphead, 9);
lphead = InsertItem(lphead, 14);
0351デフォルトの名無しさん
NGNGうちではちゃんと動いてるよーん。
0352デフォルトの名無しさん
NGNG1,2,3,4,5,6,7,8
と入力すると
2,1,3,4,5,6,7,8
ってなる。
0353デフォルトの名無しさん
NGNGなんかかなり間違ってる気がするんだけどもよ。
0354デフォルトの名無しさん
NGNGマジ?
コピペして実行したんだが・・・。
0356351
NGNG/* 先頭挿入のケース */
if (lptemp->prev == lptemp && lptemp->data >= x)
0357デフォルトの名無しさん
NGNG>>344にデバッグもさせちゃ逝けない。
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGサンクス!
今、リスト構造使って住所録作ってるんだけど
別に双方向であるひつようないな・・・。
もうちと勉強しなおしてキマス・・・。
0360デフォルトの名無しさん
NGNG場合分けしてるあたりで三流コーディングの気配。
0361デフォルトの名無しさん
NGNG柏原正三って三流なのか?
0363デフォルトの名無しさん
NGNG俺的には独習Cの評価はかなり下。
素人に分からせるためにわざとダメコードを書いてる節が見える。
0364デフォルトの名無しさん
NGNGまともな言葉を覚えるのが遅れるってやつか
0365デフォルトの名無しさん
NGNG三流
0366デフォルトの名無しさん
NGNG例外かもしらんが、K&R以外の入門書はどれみても
あらばかり見えてまともに読んだことない。
ASCIIのC言語入門三部作よりはましだったように思えるが...
0367デフォルトの名無しさん
NGNG/* リストに新しい要素を挿入する */
LIST *InsertItem(LIST *lp, int x)
{
LIST *lpnew, *lptemp, *lptemp2;
/* 新しいリスト要素を生成する */
lpnew = (LIST *)malloc(sizeof *lpnew);
if (lpnew == NULL) {
/* stderrにエラー文字列を出力する */
fprintf(stderr, "メモリーエラー\n");
/* exit()関数を使って実行を終了する */
exit(1);
}
/* 新しい要素に値を代入する */
lpnew->data = x;
/* 初回のケース */
if (lp == NULL) {
lpnew->prev = lpnew->next = NULL;
/* 新しい先頭を返す */
return lpnew;
}
lptemp = lp;
/* 挿入位置を求めてリストを前進する */
while (lptemp && lptemp->data < x) {
lptemp2 = lptemp;
lptemp = lptemp->next;
}
0368デフォルトの名無しさん
NGNG/* 後尾挿入の場合 */
lptemp = lptemp2;
lptemp->next = lpnew;
lpnew->prev = lptemp;
lpnew->next = NULL;
return lp;
} else if (lptemp->prev == NULL) {
/* 先頭挿入の場合 */
lptemp->prev = lpnew;
lpnew->prev = NULL;
lpnew->next = lptemp;
return lpnew;
} else {
lptemp2 = lptemp;
lptemp = lptemp->prev;
lptemp->next = lpnew;
lpnew->prev = lptemp;
lpnew->next = lptemp2;
lptemp2->prev = lpnew;
return lp;
}
}
0369デフォルトの名無しさん
NGNG漏れもNULL大好き。ぬるぬる。はふぅ。
0370デフォルトの名無しさん
NGNGうん。さっきの環状のリストの修正だけど、まだおかしい所があるよ。
同じ値を2回以上入れるとリスト構造が壊れてしまう。
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNGという文でaに3が代入されるのですが、なぜそうなるのか、なぜコンパイルエラーにならないのか教えてください。
0374デフォルトの名無しさん
NGNGそういう文法だからだYO!
,演算子調べる!
0375デフォルトの名無しさん
NGNG','で区切られた式の評価は左から右へ。
よって、(1,2,3)は3に等しい。
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG多分最適化によって1と2は無視されるケースが多いと思われ。
0378デフォルトの名無しさん
NGNGお箸持つほうが値になるの,わかったわね
0379デフォルトの名無しさん
NGNGは〜い。わかりまちた。ちぇんちぇい〜
0380デフォルトの名無しさん
NGNGprintf("%s\n",str_str("mystrstr","str"));とやったら、strstrと表示されるはずだよね?
(null)って表示されるんだけど(Linux+gcc)。
何やってもNULLが返るんじゃないの?
コンパイルできないから全角スペースは半角スペースに置き換えたけど、それ以外はいじっていない。
0381デフォルトの名無しさん
NGNG作ってもらって感じ悪いね。
うごかなけりゃ修正すればいい。
骨組みも方針もある。
0382デフォルトの名無しさん
NGNGつくってもらって?
俺は質問者じゃないけど。
0383デフォルトの名無しさん
NGNG0384名無しかも
NGNG要素型名 変数名[要素数]
で使うわけですが、
その格納するための要素数が大きすぎてわからなかったりする場合、
要素数をどう決めたらいいのでしょう?
0385デフォルトの名無しさん
NGNGにして、
変数名 = (要素型名 *)malloc(sizeof(要素型名) * 個数);
使い終わったら
free(変数名);
しなさい。
0386デフォルトの名無しさん
NGNGどうぞ。
コンパイルしてなかったんで、動作確認してなかったよ。
char* str_str(const char* base, const char* part)
{
int i;
unsigned long h1 = 0, h2 = 0;
size_t len1 = strlen(base), len2 = strlen(part);
const char *p1 = base, *p2 = part, *l = base + len2, *end = base + len1;
if (len1 < len2)
return NULL;
for (i = 0; i < len2; i++) {
h1 += base[i];
h2 += part[i];
}
for (; h1 != h2 || strncmp(p1, p2, len2); ++p1, ++l) {
if (l == end)
return NULL;
h1 -= *p1;
h1 += *l;
}
return (char*)p1;
}
0387384
NGNG0388デフォルトの名無しさん
NGNGていうか、あからさまにキーワード「typedef」が使われる由。
Type を define してるんだヨって、思いっきり言ってやりたいよね。
やっぱ、エラー等のメッセージも >>133 は無視してるんだろね。
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG見て思ったんだけど
#include <stdlib.h>
すれば
malloc()
はキャストしなくてもいいんでしょ?だめ?
0391名無しさん@お腹いっぱい。
NGNGfprintfとかfwrite,freadでやっているのですが、
ファイルの消去はどうすれば良いのでしょう?
今は
system("/bin/rm -f hoge");
ってやっているのですが、これだとrmコマンドが/bin の下に無い場合エラーが出てしまいますし・・・
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGint remove( const char* filename )
ってないか?
ANSIのはずだけど。
0395デフォルトの名無しさん
NGNGunlinkが一般的でなかったかい?
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNGstdlibのプロトタイプでもmallocの返値はvoid*だから。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/malloc.3.html
0398390
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c7.html#0
C FAQ 7.7に、ANSI/ISO規格のCでは警告を黙らせるためのキャストは必要ないっ
て書いてあるけど。
警告は出なくても問題はある、ってことですよね。例えばどんな時?
0399デフォルトの名無しさん
NGNGいろんな環境でコンパイルできるようにするには、キャストしといたほうが
いいかも。なんとなく。
0400デフォルトの名無しさん
NGNGそれ言い出したらきりがないべ。
0401391
NGNGありがとうございます。
remove はstdio.h 、unlink はunistd.hでした。
Linux上でmanを見ると
>removeはファイルシステムからファイル名を削除する。ファイルに対しては unlink を、ディレクトリに対しては rmdir を呼び出す。
と書いてありましたので、remove を使えば問題ないですね。
0402デフォルトの名無しさん
NGNGまぁ、一般論としては、そうだけどさ。
「〜知らないと〜」の件は、想像力の問題。
「〜触れてしまうと」の辺りは、真剣さの問題。
ともに、本人の能力と環境に依存。
0403デフォルトの名無しさん
NGNGint main()
{
int num;
char c;
scanf("%d", &num);
scanf("%c", &c);
printf("整数データ = %d\n", num);
printf("文字データ = %c\n", c);
return 0;
}
このサンプルをコンパイルして実行して
Z 12345
と入力しました。
本の見本では
整数データ = -1073744244
文字データ = Z
と出ています。
しかし自分の環境(FreeBSD x86 gcc2.95.3)では
整数データ = 671396813
文字データ = Z
と表示されます。
これは何故でしょうか?
0404デフォルトの名無しさん
NGNGnumにはゴミが入っているからだ。
例えば
int num;
を
int num = 0;
としてやってみろ。
0405デフォルトの名無しさん
NGNG失敗した結果numに何も書き込まれないので、それ以前にnumに入っていた値
(初期値を指定していないため、不定値)のままということでんな。
0406デフォルトの名無しさん
NGNG何の説明もなくそんなサンプルと実行結果を挙げているなら、その本がタコ。
「このような結果になるのでscanf()の戻り値チェックを忘れるな」という
説明が付いていてそれを見落としていたなら、>>403がタコ。
0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG「こんなぐちゃぐちゃなことになるぞ」って例じゃないかと推測。
それなのに「ぐちゃぐちゃ」部分が一致しないって騒いでるんじゃないのか?
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG0411403
NGNGお騒がせしまし
0412デフォルトの名無しさん
NGNG*.h の中身見て
処理のアルゴリズムが分かると思ってるのかyp!
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNGそのダイアログにリソース上のBitmapを描画するにはどうすればいいですか?
0415デフォルトの名無しさん
NGNGC言語はポインタの理解でつまずきやすいと聞いていたのですが、
その前に挫折しそうです。
0416デフォルトの名無しさん
NGNG簡単簡単。
http://kumei.ne.jp/c_lang/sdk/sdk_26.htm
http://kumei.ne.jp/c_lang/sdk/sdk_13.htm
を見よ。
つーか、リソースエディタでぺけっと張りつけとくってのもイイ。
0417デフォルトの名無しさん
NGNGオリジナルで作る必要はない。というか、既にあるものを作ってはいけません。
バグが出るだけです。
(勉強のため、ってんなら、もちろん構わないけど)
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/?lang=ja
ここらへんからパクりなさいな。
0418デフォルトの名無しさん
NGNGなかなかわかりやすくて良かったですよ。
ただこの本のほかに辞書的な本は絶対に必要ですけど。
0419デフォルトの名無しさん
NGNGあっと、リソース上というのはリソースエディタで書いたもののことです。
ぺけっと…といわれてもいまいち解らないのですが教えていただけますか?
0420416
NGNGこんなかんじだ〜
1.リソースエディタで、ダイアログを表示しときます
2.ピクチャーコントロールを適当に張りつけます
3.そのピクチャーコントロールのプロパティを開きます
4.「タイプ」のとこが「フレーム」になってるとおもうので、コレをビットマップにします
5.そしたら、その下の「イメージ」のとこで、ビットマップのIDを選びます
どうかな。
あんま図解は無いけど、一応リソースエディタの説明
http://www.page.sannet.ne.jp/mtoga/lang/cv/bih-m_51.htm
0421デフォルトの名無しさん
NGNG標準のstrstrはものすごく非効率だったりするから、
場合によっては作った方がいい
0423デフォルトの名無しさん
NGNG非効率でもいいじゃん。
0424デフォルトの名無しさん
NGNG効率いいほうがいいじゃん。
0425あたりまえだけど、
NGNG0426デフォルトの名無しさん
NGNG#ifndef DEBUG
#define debug_print if(0) debug_print
#endif
この書き方ってありですか?
リリース時にdebug_print()が無駄にリンクされてしまうのと
debug_print(...), foo()とやるとおかしくなるという以外に
何か問題ありますか?
0427デフォルトの名無しさん
NGNG#ifdef DEBUG
#define dprint(x) debug_print x
#else
#define dprint(x)
#endif
とやって、debug_printは直接呼ばずにdprintを必ず dprint(("msg")); の
ように括弧を二重に付けて呼ぶようにするとか。
あと、gcc拡張だと思うけどプリプロセッサの可変引数を使って、
#ifndef DEBUG
#define debug_print(fmt, args...)
#endif
こういう手も。gcc限定で良ければこっちの方が綺麗か。
0428名無しかも
NGNG0429デフォルトの名無しさん
NGNGそんなのあるの?別にないんでわ?
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG場合によるじゃん。
0432デフォルトの名無しさん
NGNGメリット・デメリットと言われると違和感があるが、
while: どんな繰り返し処理も記述できる汎用的な方法。
for: ある種の繰り返し処理を分かり易く記述できる。
という違いはあるわな。for文でうまく記述できる処理は
for文で書いた方がすっきりするんでない?
0433428
NGNGなるほど、わかりました。サンクス
0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG無条件ループならfor(;;)のほうが条件がない感じがはっきりしてていいなあ。
while(1)って、定数条件によってループするってのが気持ち悪いの(if(1)も同じ)と
なぜ「1」なのか(2でも3でも良いし、結局捨てられる)という点も気持ち悪い。
C99 or C++なら、while(true)にすることで印象は改善するが…。
0436デフォルトの名無しさん
NGNGforは明らかに、一つの単純な初期化
およびインクレメントのあるときに最も有利である。
↑これが全て。
0437デフォルトの名無しさん
NGNG一応、真偽を返す標準関数は真の場合1を返すことに決められてるけど。
だめ?
0438デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNGwhile (1e-99) のように、浮動小数点でも無視されるようですね。結局
非0でなければ何でもよいのか。
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNGそうであります。「非0でなければ」ではなく、「非0であれば」ですよね。
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG必要条件を満たしているが十分条件ではない。
0446デフォルトの名無しさん
NGNG実際C#では(以下略)
0447デフォルトの名無しさん
NGNGもちろん、判定の時は非0が真、真は非0なんだけど、
式の評価値や関数の戻り値としては、「真なら1を返す」ってのが決まってるものも
あるんだよ。
0448437
NGNG標準関数が1を返すってのは根も葉もない妄想でした。ごめんちゃい。
http://www.bpel.tutics.tut.ac.jp/~take/basement/faq-c/faq-c8.html
のA8.2に「組み込みの演算子」って書いてあった。
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNG手本になるものを見ながら覚える方がよいと考えているのですが
良いサンプルになる素材というのはあるのでしょうか?
それとも、皆さんは一から書き始めたのでしょうか?
アフォな質問で申し訳ありません。
0451デフォルトの名無しさん
NGNG文法知らずに文章書くのって無理です。読むのもママなりません。
0452デフォルトの名無しさん
NGNG#define debug_print printf
#else
#define debug_print 1 ? 0 : printf
#endif
0454デフォルトの名無しさん
NGNGとかくといまくいきますよね。
キーボードのボタンの場合、
case A
としてもうまくいきません。
どうすればいいのでしょうか?
0455デフォルトの名無しさん
NGNG414
う〜ん。いやコントロールは…というのは場合によって
描画座標や横幅を変えたいのですが…。
それで詰まっているのです。たびたび申し訳ないです。
0456デフォルトの名無しさん
NGNGcase 'A' ってことかい?
0457414
NGNGなら、
http://kumei.ne.jp/c_lang/sdk/sdk_15.htm
を参考に、コントロールのハンドルをGetDlgItem();で取得して、
http://kumei.ne.jp/c_lang/sdk/sdk_16.htm
を参考に、そのコントロールの位置やサイズを変えるってのはどお。
漏れ的には、やっぱ最初に教えてあげた
http://kumei.ne.jp/c_lang/sdk/sdk_26.htm
を使うのがいいと思うけどね。
0458デフォルトの名無しさん
NGNGありがとうございました
みごとに解決しました
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG幸せじゃないか.
0461デフォルトの名無しさん
NGNGミニゲーム作るとしたら
0462デフォルトの名無しさん
NGNGusing namespace std;
int main()
{
cout << "Hello,C!" << endl;
}
でコンパイルすると
エラー E2209 hello.cpp 1: インクルードファイル 'iostream' をオープンできない
エラー E2282 hello.cpp 2: 名前空間名が必要
エラー E2451 hello.cpp 6: 未定義のシンボル cout(関数 main() )
エラー E2451 hello.cpp 6: 未定義のシンボル endl(関数 main() )
と表示されます。なにが悪いんでしょうか?
0463デフォルトの名無しさん
NGNGコンパイラは何ですか?古いC++だと、<iostream>のようなstd名前空間の
インクルードが使えないことがある。その場合は<iostream.h>とすればよい。
もしくは、コンパイラの設定で、インクルードファイルへのパスが通ってない
とか。これはよくある間違いなのでもう一度よく設定を見直すこと。
0464デフォルトの名無しさん
NGNGここはCスレだっていうの(略)
0465デフォルトの名無しさん
NGNGコンパイラは?
0466デフォルトの名無しさん
NGNGここはCスレなので、もちろんSDK。
でもあくまでCスレなので、SDK特有の質問されても困っちゃう。
0467462
NGNGちなみにコンパイラはBorlandC++Compilerでした。
スレ違いの質問してしまったようですね。すみませんでした。
0468デフォルトの名無しさん
NGNGint main(int argc, char *argv[])
どっちが正しいの?
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNGchar *p
char p[]
は全く同じ。
したがって>>468のは両方同じ
俺はchar**派
0471デフォルトの名無しさん
NGNG初歩的すぎてもしかしたら怒られるかも知れないのですが、質問させてください
スレ違いでしたら申し訳ありません
Windows、VCでエディットボックスを扱っているのですが、
大量に書きこむと表示がバグってしまいます
でもエディットボックスの中身をファイルに出力すると正常です
hEdit = CreateWindowEx(
0,
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE |
ES_WANTRETURN | ES_MULTILINE |
ES_AUTOVSCROLL | WS_VSCROLL |
ES_AUTOHSCROLL | WS_HSCROLL,
0, 0,
rc.right, rc.bottom,
hWnd,
(HMENU)ID_EDITBOX,
Inst,
NULL
);
SendMessage(hEdit, EM_SETLIMITTEXT, (WPARAM)(1024*64), 0);
見た目の症状としては、エディットボックスのスクロールバーが一番下までいきません
それ以上に文章があるはずなのに、スクロールバーはすでに一番下でこれ以上下にいかない。となります
もしよろしければ回避法など教えていただけると幸いです
0472デフォルトの名無しさん
NGNGスレ違いだが。
0473デフォルトの名無しさん
NGNGWinのエディットボックスは64kbまでだと思うたが。(違ってたらスマシ)
それ以上書き込んでるってこと?
0474デフォルトの名無しさん
NGNGスクロールについては、推測だが
スクロールバーの解像度以上の行数を流し込むと当然1pxごとに
2行以上スクロールすることになり、位置とスクロールバーの(見た目)位置が同じでも
実際には幅があるってことじゃないか?
0476デフォルトの名無しさん
NGNGif( i < 0 )
とやるのはOKなんでしょうか?環境依存なく
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG規定外だと思うので、厳密には環境依存するんではないかと。
俺は見た事無いけど。
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG( )
| つ |
( _)_)
0481デフォルトの名無しさん
NGNGunsigned intでなければOKなんじゃない?明示的にキャストしておくとか。
それとも、素直に((i<<1)>>1 == i)で調べるか。
0482デフォルトの名無しさん
NGNGスレ違いでしたか。もうしわけございません
>>473
57KBくらいで変になってしまうのです
64ならなっとくなのですが、どうも中途半端で??です
>>474
なるほど
しかしちょっといじってみたところ
・一番下までスクロール(バーは一番下だが文章はもっと続いてるはずなのに)
・改行する
とやると、一番下までちゃんと表示(バーも正常になる)のです
Windowsの制限でしょうか…
アドバイスありがとうございます
0483デフォルトの名無しさん
NGNG最上位ビットを調べるのに0より小さいかみるのは正直お勧めしない。
ビット演算子使うべき。
0484デフォルトの名無しさん
NGNGという状況で、ビット演算子をどう使う?
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGという状況で、最上位ビットを何に使う?
0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGintからほかの型に仕様変更されたら(以下略
どちらにせよ最上位ビットってのは汎用性が無いよな。
何番目のビットか明示的に示すべきなのに。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG?:は右辺値になれます。
if();else;は値を持ちません。
0493デフォルトの名無しさん
NGNGwhile("無限ループだよ")
これが一番わかりやすい。メモリの無駄遣い?
0494デフォルトの名無しさん
NGNGそうなのか、ありがとう。
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNGintの幅なら CHAR_BIT * sizeof(int) で出んか?
0497麗恵香
NGNG誰か不正アクセスの仕方とか教えてください。お願いします。
0498デフォルトの名無しさん
NGNGそれいいな
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGintのビット数はCHAR_BITの整数倍とはかぎらないというワナ
0502デフォルトの名無しさん
NGNG整数倍だが?
いや、正確にはsize_t倍か。
size_tって実数でもいいんだっけ?
0504デフォルトの名無しさん
NGNGプログラミング言語C(K&R)なんてどこにも売ってないじゃないか!
古臭い本紹介しやがって、だましたな!1は謝罪しる!
# 漏れは某アンチK&Rスレの1ではありませんが、
# 今までいくつかの本屋を回ったがマジでK&Rはどこにも売ってねぇ。
# ネットで買うのもいいかもしれんが、そんなマイナーな本には期待できねーな。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGSunKAMATAの本屋にはあった。
0507デフォルトの名無しさん
NGNGどこを突っ込んでいいのかわからん。
0508デフォルトの名無しさん
NGNG0509日下部陽一
NGNGごめんなさい。
作ってわかるCプログラミングのほうをどうぞ。
0510デフォルトの名無しさん
NGNGこれじゃだめ?
#include <stdio.h>
int wordlength(void);
int main(){
int int_len;
int i;
int_len = wordlength();
if(0 < (i >> (int_len - 1))){
printf("(゚∀゚)!!\n");
}else{
printf("(´・ω・`)\n");
}
return 0;
}
int wordlength(void){
int i;
unsigned int v;
v = (unsigned int)~0;
for(i = 1; 0 < (v = v >> 1); ++i){
;
}
return i;
}
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGここですか?
0514デフォルトの名無しさん
NGNG訳に関してなら言いたいことは沢山あるが、
内容に関しては年代など関係なくスバラシイ。
0515デフォルトの名無しさん
NGNGカーニハンとリッチーには足を向けて寝れませんが何か?
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG> プログラミング言語C(K&R)なんてどこにも売ってないじゃないか!
確かに1版はどこにも売ってないね。(緑色の表紙の奴)
古臭い本だからね。
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521ぼうようマンセー?
NGNG例えだからいいにしても、int型が12ビット?ありえねぇ。
http://www.bohyoh.com/CandCPP/FAQ/FAQ00046.html
それはともかく、int型で sizeof(int)*CHAR_BIT を使い切らない
処理系があってよいということか?ほう。
0522デフォルトの名無しさん
NGNG言われてみれば12ビットってのはおかしいな。
31ビットとか半端なintもありえるってことだな。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNG最近はWintelマシンばっかいぢってる。
0525デフォルトの名無しさん
NGNGfor(i=0; i<5; i++){
for(j=0; j<3; j++){
printf("iは%d:jは%d\n",i,j);}
}
return 0;
↑の説明で外側のループを1回処理する事に、内側のループは3回
処理されています。、と、書かれていたんですがなぜ外が1回しか
処理されてないのに、内側は3回も処理されるんでしょうか?
0526デフォルトの名無しさん
NGNG3回ループしてるって事だろ?
0527デフォルトの名無しさん
NGNG第1版の表紙は緑じゃなくて白だよ。
ANSI C規格が出来る前なので、内容的には相当古いですな。
コンピュータ関連書籍の中でも異例なほどのロングセラーで、確か
第100刷以上行ってたはず。これの初版第1刷とか持ってたら自慢できるかも。
0528デフォ七
NGNGレジスタのアドレスは取得できません
だってさ。
一応実行ファイルはできてるようだが怖い。
これって大丈夫なのか?
ちなみにSolaris7&Sunのccコンパイラです。
0529デフォルトの名無しさん
NGNG内側は最終的に5×3=15回処理されます。
0530デフォルトの名無しさん
NGNGいや、そりゃそうだろ・・・・C++じゃないんだから。
0531デフォルトの名無しさん
NGNGC言語ではregister変数のアドレスは取れないよ。C++ならOKだが。
0532デフォルトの名無しさん
NGNG指定通りにレジスターにおかれたらまずいんじゃない?
よくわからないけど。
しかし配列をレジスターにおくのはいかがなものかと・・・
0533デフォルトの名無しさん
NGNGC++ではregisterをつけてもアドレスを取ろうした場合は必ずメモリー上にデータが配置されるの?
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG1byte=32bitなの?
charが大文字なのが気になるけど・・・
0536デフォルトの名無しさん
NGNG必ずというか、register指定が無視される。
0537デフォルトの名無しさん
NGNG外のforの処理をしたら、内のforの処理が起きますよね。
そうした場合jの値が増えてjが2の時、処理が終わると思うんですが
外のforの2回目の処理の時もまた、内側のforも処理され始めたんで
す。1回目でjの値は2になったのに、何でまたj=0の状態から始まるの
かがわかんなかったんです。
説明下手ですいません。
0538デフォルトの名無しさん
NGNGアドレスを取る所ではメモリ上から取るが、最適化によってレジスタ変数
が使われる場合もある。
0539535
NGNG0540デフォルトの名無しさん
NGNGjが3の時、処理が終わる。なぜまたj=0から始まるかというと、
for(j=0; j<3; j++){
~~~~
ここでjに0を代入しているから。
0541デフォルトの名無しさん
NGNGjが3の時に処理が終わる。内側のループを抜けるからプリントはされないが。
0542デフォルトの名無しさん
NGNGsizeof int == 1
0543デフォルトの名無しさん
NGNGデバッガの使い方おぼえて、変数の内容を確認しながらステップ実行してみ
なされ。
0545デフォルトの名無しさん
NGNG> 何でまたj=0の状態から始まるのかがわかんなかったんです。
そういう処理を書いているから
多分、for(j=0; j<3; j++){
をfor(; j<3; j++){
に変えたら君の期待した動作になるはず。
0546デフォルトの名無しさん
NGNGint i,j=0;
for(i=0; i<5; i++){
for(; j<3; j++){
printf("iは%d:jは%d\n",i,j);}
}
return 0;
これでやればきっと思い通りになる。
0548デフォルトの名無しさん
NGNGfloat と double は?
0549デフォルトの名無しさん
NGNG試してみます。
0550デフォ七=528
NGNGthx
memsetをやっちゃった場合には処理系依存になるのかしらん。
普通の自動変数に変更されてるのかなぁ?
このへんの動作をprintfで吐かせるにはどんなコード書けばいいのか?
0551デフォルトの名無しさん
NGNGきっとコンパイラに「警告:初期化されていない変数jを参照しようとしました。」と言われるな。
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGregister変数というか、レジスタにアドレスがないから取得できないんじゃないの?registerをつけたからといって必ずしもレジスタに置かれるというわけではないけど。
0555デフォ七=528
NGNG>>552
それは理解できてますよ。
ただ、古いコードをお守りしてる都合上、どうしてもregister変数に
memsetをしてる場合の動作を知りたいんですよ。
0556デフォルトの名無しさん
NGNGエラーにならずに警告にとどまっているなら、register指定は無視され、
メモリに割り当てられているんでしょう。
0557デフォルトの名無しさん
NGNG> きっとコンパイラに「警告:初期化されていない変数jを参照しようとしました。」と言われるな。
なぜ?jは定義したときに初期化されているように見えるが?
0558デフォルトの名無しさん
NGNG警告が気になるなら
#define register
とでもしる。
0560デフォルトの名無しさん
NGNG「気が向いたらレジスタに割り当ててほしいなあ」
とこちらの意向をお伝えしているにすぎないのでぷ。
何かを保証するようなキーワードではありませんでぷ。
コンパイラはそんなことはまったく無視するかもしれないし、
(可能なら)親切にもそうしてくれるかもしれないし。
0561デフォルトの名無しさん
NGNGそうなのだが、register変数のアドレスを取ろうとすると、
「さっきレジスタに割り当てて欲しいと言ったのに、なぜアドレスを今更
取ろうとするの?(゚Д゚)ハァ?」というようにコンパイラがだだを捏ねます。
C++なら、「さっきはregisterと言ったけど、アドレスを取りましたね。
ではregister指定は無視しましょう。」となります。
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGCPUは65xxxですか?
というか、0ページも所詮はアドレッシングモードの一つに過ぎないしなあ。
レジスタの極端に少ないCPUでregister指定をしても意味がないかも。
x86もレジスタは少ない方だが、レジスタリネーミングのお陰で結構効果
があがる。
0564デフォルトの名無しさん
NGNGそれは、あなたのコンパイラがそういう仕様なのであって、
全部のコンパイラがそうなのとは違いまぷね。
警告レベルのようなオプションの設定によっても
やかましさは違うでしょうし。
>>562
つまらないでぷ。
0565デフォルトの名無しさん
NGNGANSI-Cでregisterと宣言された変数のアドレスは明示的にも暗黙的にも
取れないと、K&R第2版A8.1に書いてありまぷね。
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGコンパイラによって、registerのアドレスを取ろうとした時、
エラーにならない処理系は標準ではないのかと小一時間。
0569デフォルトの名無しさん
NGNGANSI Cも所詮は規格のひとつにすぎない。
すべてのコンパイラがANSI C準拠だと思うな。
0570デフォルトの名無しさん
NGNG古っ
0571デフォルトの名無しさん
NGNG規格外のコンパイラもあるって言い出すやつが必ずいるな。
そんなこと言ってたら規格の話題は全部無意味になるよ。
0572デフォルトの名無しさん
NGNG> 規格の話題は全部無意味になるよ。
そんなことないだろ。
>>565はANSI-Cが全てだというような書き方をしているのが悪いんだ。
0573デフォルトの名無しさん
NGNGそこでどうでもいい疑問があるので質問させて頂きます。
いままで"return 0;"としてmain関数を締めてたのですが
この本では"return (0);"となっています。
結論としてはどちらでも良いのでしょうが
微妙な違いみたいなものってあるのでしょうか?
0574デフォルトの名無しさん
NGNGかな〜りしぬるので、おすすめできない。
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG某書籍には括弧はつけてもつけなくてもよいと書かれています。
0577デフォルトの名無しさん
NGNGそんな書き方はしてないだろ。
規格外のコンパイラの話をするんなら、そういう前提でやってくれよ。
0578教えて君
NGNG例)ABCD→DCBA
char *strrev(*char *str)
char *str 対象となる文字列。
リターン値 文字列の先頭ポインタ。
こんな感じでどなたか教えてください。
0579デフォルトの名無しさん
NGNGつまり多くのコンパイラはC99はサポートしていないので
「規定外のコンパイラ」と一々付けなければいけないのですね?
0580デフォルトの名無しさん
NGNGchar *strrev(char *str)
{
int i=0,j;
char t;
j=strlen(str)-1;
for(;i<j;i++,j--){
t=str[i];
str[i]=str[j];
str[j]=t;
}
return str;
}
0581580
NGNG0582教えて君
NGNGあんがとです!!
助かりました♪
0583デフォルトの名無しさん
NGNGint main(void)
{
printf("%s\n", strrev("ABCD"));
return 0;
}
あり、core dumpするぞ?
# こんな使い方する方が悪い?
0584デフォルトの名無しさん
NGNGレスありがとう。
結論としてはどちらでも良いが、括弧で括らない方が
一般的なのですね。
これからは今まで通り括弧付けずに逝きます。
0585デフォルトの名無しさん
NGNGstrcat("abc", "def");と同程度には。
0586デフォルトの名無しさん
NGNGあれ?なんか間違った?(汗
# 文字列リテラルを書き換えようとしているからじゃないよね?
0587デフォルトの名無しさん
NGNGつぅか彼は何がしたいのでしょうか?
0588デフォルトの名無しさん
NGNG文字列リテラルを書き換えようとしてるじゃん
0589デフォルトの名無しさん
NGNGあなた、
int *a = 32;
とかして平気な人?
0590デフォルトの名無しさん
NGNGVC6だが"ABCD"はwrittenになれんそうです。
"0x00401086"の命令が"0x00420020"のメモリを参照しました。
メモリが"written"になることができませんでした。
0592デフォルトの名無しさん
NGNGでも%xは使用禁止なんですよ(涙
アドバイスください。
おながい
0593デフォルトの名無しさん
NGNGchar *strrev(char *str);
ではなく
char *strrev(const char *rev, char *str);
とすべきと言ってみるテスト
0594デフォルトの名無しさん
NGNG嘘
×:char *strrev(const char *rev, char *str);
○:char *strrev(char *rev, const char *str);
0595デフォルトの名無しさん
NGNG65536でわる256で割る16で割る。
0596デフォルトの名無しさん
NGNGitoaと言ってみるテスト
0597デフォルトの名無しさん
NGNG%xがだめなら%Xを使え。
0598デフォルトの名無しさん
NGNG宿題は自分でやれ。
0599デフォルトの名無しさん
NGNG//テーブル。頑張って作ってね。
char s[][]=("1","2","3",......,"FE","FF".....);
int main(int argc,char **argv)
{
int input;
scand("%d",&input);
printf("%s",s[12]);
}
0600デフォルトの名無しさん
NGNG> 数値を入力して16進文字列を作成したいんっす。
テーブル作れ
char *hextbl[9] = { "0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "A", "B", "C", "D", "E", "F", "10", "11", "12", ...
:
:
"FFFFFFFC", "FFFFFFFD", "FFFFFFFE", "FFFFFFFF" };
使い方:
int dec = 1234;
printf("dec:%d hex:%s\n", i, hextbl[i]);
ただし、プログラムサイズがやたらでかくなる諸刃の剣
0601デフォルトの名無しさん
NGNG珍妙なる初期化を行うのはなぜだろうか、と疑問に思う。
0602デフォルトの名無しさん
NGNG>char *hextbl[9]
をもう一度よく考え直していただきたい。
0603デフォルトの名無しさん
NGNG宿題まるなげ禁止。
どこまでできて、どこでつまずいてるのかを明記し、
宿題、手伝おっか?
http://pc.2ch.net/test/read.cgi/tech/1011722640/
こちらへ。
0604デフォルトの名無しさん
NGNGint main()
{
int i;
printf("char *hextbl[] = {\n");
for (i = 0; i <= 0xffffffff; i++)
printf("\t\"%X\", \n", i);
printf("};\n");
return 0;
}
これをコンパイル、実行した結果をファイルにリダイレクトしてプログラムに
組み込めばばっちり。
> ただし、プログラムサイズがやたらでかくなる諸刃の剣
それどころか、間違いなくメモリに入りきれませんが…。
0605デフォルトの名無しさん
NGNG>>569
> ANSI Cも所詮は規格のひとつにすぎない。
> すべてのコンパイラがANSI C準拠だと思うな。
ANSI-Cが規格化された経緯は、結局文法がバラバラになってしまい、
一つの辞書のような規格を作ろうとしたからだと思います。
だからANSI-Cが絶対正しいというわけではないですが、文法の相違
の話になると、今の所ANSI-Cにはこう書いてあったよ、という話にな
ると思います。
なぜコンパイルが通らないのか、なぜ警告がでるのか?と一人で悩む
ぐらいなら、ああ、これは標準とは違うんだ、で納得できれば、時間も
気苦労も少なくて済みますよね。
0606デフォルトの名無しさん
NGNGホントに実行してみた?
そのループ、回らなはずだけど‥‥
0607デフォルトの名無しさん
NGNG回らなはずだけど‥‥
0608604
NGNG0609デフォルトの名無しさん
NGNGそれから%Xは使用禁止なんよ。
0610デフォルトの名無しさん
NGNGホントに実行してみた?
そのループ、回るけど止まらないんだけど・・・
0611デフォルトの名無しさん
NGNG0612604
NGNG0613デフォルトの名無しさん
NGNGformat[1]='X';
printf(format,i);
激しくつまらないな‥‥
>604
"FFFFFFFE",
"FFFFFFFF", //←コンパイルエラー
};
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG最後のカンマはエラーにならないよ。
0617デフォルトの名無しさん
NGNG0618613
NGNG「エラーになる俺様コンパイラがある」ってあたりで(自爆)。
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG馬鹿なことじゃないぞ。
16進数化程度では確かにくだらないが、汎用性を考えると(以下略
0621デフォルトの名無しさん
NGNGDBなり、固定長のファイルレコードなりに納めるのが
実用的だと(以下略)
0622デフォルトの名無しさん
NGNGこうしよう。
int dec2hex(int x)
{
FILE *fp = popen("bc", "w");
fprintf(fp, "obase=16\n%d\n", x);
pclose(fp);
}
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNGこれがCじゃなくてシェルスクリプトだったらUNIX的なすばらしい解決法だね。
0625デフォルトの名無しさん
NGNG前後を組み立ててloop!!
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGコードがEBCDICでも大丈夫かな?あれはA-KとL-Zが分かれていただけ
でしたっけ。
0628デフォルトの名無しさん
NGNGほい。
http://www.google.com/search?hl=ja&q=ascii%83R%81%5B%83h&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGフリーウェアでおすすめのCコンパイラを教えてください
ちなみにwindowsMEでも動くやつをお願いします
0631デフォルトの名無しさん
NGNGborland。C++だけど。それかgcc。C++だけど。
0632デフォルトの名無しさん
NGNGとりあえずURLおば。
GCC:
http://www.gnu.org/software/gcc/gcc.html
BCC:
http://www.borland.co.jp/cppbuilder/freecompiler/
LSI-C試食版:
http://www.lsi-j.ab.psiweb.com/freesoft/
0633デフォルトの名無しさん
NGNGhttp://www.openwatcom.org/
0634デフォルトの名無しさん
NGNGレスありがとうございます。
グーグルで検索したときに出てきたLSI-cとかいうのはMEでも動くのでしょうか?
95と98としか書いていなかったので。
0635デフォルトの名無しさん
NGNGうごくよ。でもLSI-C試食版はおすすめせん。制限が大きすぎるし、ANSIから
外れている点が多過ぎる。(wchar_tに対応してないなど)
0636デフォルトの名無しさん
NGNG丁寧に教えていただきありがとうございます。
LSI-cはおすすめではないのですか。う〜ん
ちなみに私は今C言語の猛特訓中でありまして、
コンパイラ使うのもポインタとか構造体とかのそこら辺の部分を実際に
動くところを確認したかっただけなんです。
もうちょっと色々調べてみます。
何かスレ汚してすみませんでした。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGだったらなおさらLSI-C試食版はやめた方がいいぞ。
構造体を正しく返せないなどのバグがあるから。
0639デフォルトの名無しさん
NGNGGCCかBORLANDにしとけ。楽だし。
0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG使ってるひといるのかな。
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG奥村晴彦氏のアルゴリズム本より。
http://www.matsusaka-u.ac.jp/~okumura/algo/
void gr_circle(int xc, int yc, int r, int color)
{
int x, y;
x = r; y = 0;
while (x >= y) {
gr_dot(xc + x, yc + y, color);
gr_dot(xc + x, yc - y, color);
gr_dot(xc - x, yc + y, color);
gr_dot(xc - x, yc - y, color);
gr_dot(xc + y, yc + x, color);
gr_dot(xc + y, yc - x, color);
gr_dot(xc - y, yc + x, color);
gr_dot(xc - y, yc - x, color);
if ((r -= (y++ << 1) - 1) < 0)
r += (x-- - 1) << 1;
}
}
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGLALR(1)にならないんでしょうか?
0651デフォルトの名無しさん
NGNG>マイクソソフト
質問してるやつが2ちゃん言葉使ってるとむかつくから教えない。
0652デフォルトの名無しさん
NGNGファイルの拡張子を".C"にするとか言ってみるテスト。
0653デフォルトの名無しさん
NGNGcl hoge.c
これ最強。
0654デフォルトの名無しさん
NGNGchar a[] = "hogehoge";
char *b = "hogehoge";
a[0] = 'z';
b[0] = 'z';//これを書くと例外で落ちます。
この差がわかりません。
ポインタの初期化ではメモリを確保したことにならないんでしょうか?
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGb[0]='z'は文字列リテラルそのものを書き換えようとしているからエラーになる。
a[0]='z'は文字列リテラルを使って初期化した配列の要素を変更しようとしているだけだから問題ない。
0657デフォルトの名無しさん
NGNG文字列リテラルは文字が配列として並んでいる定数でそういう意味では5, 'a'
などと同じ。
int x = 5; char ch = 'a';に対して
x = 10; ch = 'b';なんてやるのは全然問題ないけど
5 = 10 ; 'a' = 'b'なんてやるのはエラーになって当然。
しかし世の中には定数を読み書き可能領域に割り当てたりするコンパイラもあるので
654のコードがエラーにならない場合もあるらしい。
0658デフォルトの名無しさん
NGNGconstで宣言した変数と似た様な扱いなのね。
0659デフォルトの名無しさん
NGNG例外で落ちるとは、すばらしいね。
OSとコンパイラによっては、無視してそのまま実行され、
両者の違いに気付かないまま先に進んじゃってたかも。
char *b = "hogehoge";
の場合、「hogehoge」という文字は、自動変数を確保するスタックとも、
malloc()したときに使われるヒープとも違う、読み出し専用メモリ領域に
埋めこまれています。なので、書き換えるとメモリアクセス違反になります。
これに対し、
char a[] = "hogehoge";
は、疑似的に書き直すなら
char *hogehoge_ptr = "hogehoge"; /* これは上の b の例と同じ場所を差している */
char a[strlen(hogehoge_ptr)+1]; /* スタック上にhogehoge(8文字) + '\0'(1文字) の配列確保 */
strcpy(a,hogehoge_ptr); /* 配列にコピー */
となり、a はスタック領域を指しているので、書き換えOKです。
「セグメント 文字列リテラル」で検索したよさげなページを貼っときます。
http://www.mars.dti.ne.jp/~torao/program/general/memory.html
0660デフォルトの名無しさん
NGNGchar b[]="hogehoge";
は
char b[]={'h','o','g','e','h','o','g','e','\0'};
と完全に同値な不規則な構文。このとき"hogehoge"は
文字列リテラルでは全くない。
0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNGお前、↑で書いてくれた奴に土下座して謝れ。
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG8086の時代にはちょっとだけ効率がよくなった。
最近のヤツはしらん。
0665MS-Cユーザ
NGNG引数を左から順にスタックつんだはず。
可変長引数のprintfとかの動作は知らん。
>664
win16の時代には… では?
0666デフォルトの名無しさん
NGNG> win16の時代には… では?
win16も俺にとっては最近。
0667MS-Cユーザ
NGNG#include <stdio.h>
void write( char * str )
{
printf(str);
}
pascal program main();
begin
write('Hello Pascal!');
end.
を期待してた?
>666
...
0668デフォルトの名無しさん
NGNG加えて、pascal呼び出しは、パラメータをスタックに積んだ場合、呼び出し先
で元に戻す。C呼び出しは、呼び出し元で元に戻す。
RISCなどのレジスタにパラメータを持って呼び出す場合はそんなに変わらない。
0669デフォルトの名無しさん
NGNGコードサイズが小さくなるってこった。
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGするのですが、表示座標を決めたいです。(左上に表示されてしまう)
どうにか方法はありませんか?
0672名無しさん@edlin
NGNG>>457の2つめのリンク
0673デフォルトの名無しさん
NGNGUSHORT code = (str[0] << 8) + str[1]; //値は33184 = 0x81a0
なんで値が違っちゃうんですか??
0674デフォルトの名無しさん
NGNGchar が符号付きの環境の場合、str[1] == 0xa0 はマイナスの数として
扱われて、結果 USHORT( 0xffff8200 + (-0x60) ) == 0x81a0 に。
+0xa0 として使いたいなら unsigned char にするなり &0xff するなり。
0675デフォルトの名無しさん
NGNGunsigned charにしる!
0676673
NGNG(UCHAR)tnx;
0677デフォルトの名無しさん
NGNGWindowsだったらMAKEWORD()ってマクロがあるから
それ使ったほうがスマート。
0678676
NGNG0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNGWindowsならIDで識別。
0681デフォルトの名無しさん
NGNGつーか全然Cと関係ないしAPIすれ逝けと小一時間(以下略)
0682デフォルトの名無しさん
NGNG確かに、最近純API系の質問多いね。
今後は放置の方向で。どうしてもかわいそうなら誘導でよろ。
0683デフォルトの名無しさん
NGNGCはただのマクロに過ぎないという考えであってるでしょうか。
C++などに比べるとあまりにしょぼいですが、
こう割り切ってしまうとだいぶ開発が楽になります。
0684デフォルトの名無しさん
NGNGdouble a = 0;
double b = 0.0;
これって違いがあるんですか?
0685デフォルトの名無しさん
NGNGどこが?
0686デフォルトの名無しさん
NGNGマクロを拡大解釈していけばあらゆる言語がマクロに見えるだろうね
0688デフォルトの名無しさん
NGNGちょっとしたプログラムを書くのには悪くないって感じです。
少し大きめの物を作るのには使いたくありませんけど。
0689デフォルトの名無しさん
NGNG非OOPLはすでにみんなマクロに見えてます。
>>687
JAVAはやりません。遅いから。
0690デフォルトの名無しさん
NGNG>>687
どうもです。PascalやってたんでどうもCの実数と整数の扱いにしっくりきません。
int i = 5/3;
とかできるあたりとか…。
0691デフォルトの名無しさん
NGNG>使いたくありませんけど
Cを使いこなせないってことね(プ
0692デフォルトの名無しさん
NGNGさっさと病院に逝きましょう
0693デフォルトの名無しさん
NGNGVCのウイザードが生成したプログラム見て、OOPすげぇー、とか逝ってるだけ。
0694デフォルトの名無しさん
NGNG1 ゲームや数値計算など、処理速度が重要なソフトを開発している
2 Javaが遅いと思いこんでいる
3 頭がどうかしていて、糞遅いコードしか書けない
上記のうちどれでしょう?
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGCを理解し、C++を理解していれば、Cの生産性がC++に比べてはるかに低いことは認識できると思いますけど?
もちろん、C++を使いこなせないプログラマの場合この限りではありませんが。
0697デフォルトの名無しさん
NGNGというか、書いていて生成されるアセンブリコードが想像できない言語は全部。
つか、>>689が言うマクロって何だろう。
0698デフォルトの名無しさん
NGNG生産性の定義を述べてみ。
またCとC++の生産性をどうやって測定したのかも述べてみ。
それぞれ幅広い分野での実装例について比較可能な形で調べにゃならんわな。
まさか、定義も測定もなしに生産性がどうたら言うてるんじゃあるまいね?
まして、自分ひとりの経験でどうたら言うてるんじゃあるまいね?
0699デフォルトの名無しさん
NGNG1です。
0700デフォルトの名無しさん
NGNGだからと言ってC = マクロということにはなりません
ちゃんとC/C++理解してんの?あんた
0701デフォルトの名無しさん
NGNG非OOPLがマクロに見える(ほめ言葉じゃないわな)って言うぐらいだから、
よっぽどOOPにこだわりがあるようだが、C++みたいなOOPLとしては
おもちゃ以下のものしか使ってないって事はないよな。
EiffelとかSmalltalkでもつかってんのか?
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG( ´Д` ) Σ スマソ >>702は誤爆・・・
/, /
(ぃ9 |
0705デフォルトの名無しさん
NGNG一連の作業をあらかじめ一つにまとめて自動で実行するためのもの、
という意味で使用しています。
拡大解釈すれば、当然すべてのプログラムはマクロと取れます。
>>698
この話はすでに他のスレで何度もされているようですが。
この場合は同様のものを実装するのにかかる時間、
といったところでしょうか。
判断基準はいろいろあるでしょうが、
重要なことは、C++はCのほぼスーパーセットとなっているので
適切に判断すればどのような基準においてもCに劣ることはありません。
>>701
メインはC++です。
C++はOOPLとしては問題も多く含みますが、
そのC++ですら、非OOPLに比べたらだいぶましです。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG>重要なことは、C++はCのほぼスーパーセットとなっているので
>適切に判断すればどのような基準においてもCに劣ることはありません。
別の観点から言えばC/C++の何れかで書かれたコードは
どちらもC++のコードだと言ってるように見えるが気のせいか。
0708デフォルトの名無しさん
NGNG( ゚Д゚ ) <>>705いい加減にしろよ貴様
/, /
(ぃ9 |
0709デフォルトの名無しさん
NGNG拡張子で(以下略
もちろんそうなるでしょう。
その場合はC++で書かれた一部のスタイルのプログラムはマクロのようだ、
ともいえるでしょう。
マクロのように見えるかどうかは言語そのもので決まるのではなくてプログラミングスタイルですから。
Cで書かれたプログラムでもマクロに見えないようなのはごまんとありますし、でもそういうプログラムをCで書きたいとは思いません。
0710デフォルトの名無しさん
NGNGいや、そうじゃなくて。
C++で書かれたコードしか存在しないって主張の中で
CよりC++だって言うのはトートロジーチックじゃあるまいか。
そりゃ詭弁じゃないか。
とこのように言っているのだよ。
大体C++で追加されたフィーチャーの生産性への寄与については
何も具体的な言及をしとらんじゃないか。
あ、クラスの効用とかなら言わんでいいよ。
理論的に優れている、というのはどんな言語にだって言えることなんだから。
あくまでも現実のソフト屋業界における生産性を聞いておるのだ。
実証もなしに見てきたようなことばっかり言ってたら脳味噌腐るぞ?
0711マジレス
NGNG0712Lisper
NGNG0713デフォルトの名無しさん
NGNG0714C厨
NGNG0715Ruby!Ruby!
NGNG0716C/C++房
NGNG0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGRubyist => チンコ
「Rubyistはチンコに評価される」
0719駄スレも育てるサーバは偉い
NGNG0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG実際に完成されたプロジェクトとしてその効果を客観的に判断するのはほぼ不可能でしょうね。
でもごく小さな範囲でなら可能です。
C++でSTLを使用すれば容易に線形リストを実装し検索・分類などの操作も可能です。
Cではその場合に応じて書かなければいけません。
たったこれだけのことですが、少なくとも他のすべてでC<=C++なので、C<C++は証明できます。
0725デフォルトの名無しさん
NGNGじゃぁ、証明してくれ。
少なくとも俺にはC<C++の`証明'をすることは不可能だ
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG724で証明されていますが、ご不満でも?
0728デフォルトの名無しさん
NGNG文系君にとって`証明'とはいくつかの事例を集めることなんでしょ。
0729デフォルトの名無しさん
NGNG>C++でSTLを使用すれば容易に線形リストを実装し検索・分類などの操作も可能です。
>Cではその場合に応じて書かなければいけません。
こういうのを、
>理論的に優れている、というのはどんな言語にだって言えることなんだから。
と言って釘をさして、
>あくまでも現実のソフト屋業界における生産性を聞いておるのだ。
こう聞いたんだが、言葉の順序を変えれば詭弁も通ると思っておるんかいな?
言語の話をしているのにSTLを持ち出すのもおかしな話だと思うがね。
標準ライブラリも含めてC++だと言い張るんなら結構なことだが。
0730デフォルトの名無しさん
NGNG>実際に完成されたプロジェクトとしてその効果を客観的に判断するのはほぼ不可能でしょうね。
>でもごく小さな範囲でなら可能です。
これも凄いこと言っとるよなぁ。
個人的な経験で語るなとも言ったのに読めておらんのかいな。
これじゃ、「世間じゃ知りませんがボクの知ってる範囲内じゃC++は凄いんです!」と言っとるようなもんだ。
0731デフォルトの名無しさん
NGNGところが、人数の多いプロジェクトで、人海戦術に近くなると、Cの方が生産性高くなるんだ。
Cの方が理解してなくちゃいけないことが少ないからだろうな。
0732デフォルトの名無しさん
NGNG仕様、納期、人員、環境、どれが変わっても左右される。
生産性ってキーワードで物事を一括りにするのは駄目コンサルだけにして欲しいよ。
0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG帰納法をご存じない?
>>729
>あくまでも現実のソフト屋業界における生産性を聞いておるのだ。
その主張はよく非OO信者が持ち出しますが、1行目で書いているように完成されたプロジェクトで判断することはほぼ不可能です。
そもそも同一仕様のある程度のプロジェクトを非OOとOOのそれぞれで実装したという話しは聞きませんし、したとしてそれが必ずしも客観的な判断基準とはいえないでしょう。
ついでに言えば、非OO信者は決して、これを根拠に非OOがOOよりも優れていることを証明したがりませんね、できないことがわかっているからですが。
> 言語の話をしているのにSTLを持ち出すのもおかしな話だと思うがね。
> 標準ライブラリも含めてC++だと言い張るんなら結構なことだが。
当然です。STLはCでは実装できません。
STLはすべての状況に対応できるわけではありませんが、CよりもC++のほうが再利用性の高いことを示す1つの例とはなりうるでしょう。
Cで同様に優れたライブラリを作成したところで、それはC++でも同じように使用できるのでC固有の優れた機能とはいえません。
0737デフォルトの名無しさん
NGNG現実は選びたくても選べない。
0738デフォルトの名無しさん
NGNGだが、Cはマクロ、といってる根拠がわからん。
単にCを貶めたいだけか?
0739デフォルトの名無しさん
NGNG人の発言はよく読んだ方がいいと思うなぁ。
もし私が「C > C++」と言いたがっていると思うんなら根拠を出して欲しいね。
で、結局、実世界に即した客観的評価は自分には持ち出せないので
理論的なトピックを通じてC++はCより優れていると評価するってことでいいんかね?
>Cで同様に優れたライブラリを作成したところで、
>それはC++でも同じように使用できるのでC固有の優れた機能とはいえません。
これはC++とCを入れ替えても同じ言い方ができるね。
こういうのを詭弁と言うんじゃないかねぇ?
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNG違う違う(藁
漏れアンタに同意してるの(藁
0742728
NGNG> 帰納法をご存じない?
知ってますよ。というか
> いくつかの事例を集めること
は正当な`証明'であると言いたいわけですか?
もしかして文系君のいう帰納法と数学的帰納法の違いをご存じない?
0743デフォルトの名無しさん
NGNG> >Cで同様に優れたライブラリを作成したところで、
> >それはC++でも同じように使用できるのでC固有の優れた機能とはいえません。
> これはC++とCを入れ替えても同じ言い方ができるね。
> こういうのを詭弁と言うんじゃないかねぇ?
どこがでしょう?
入れ替えてみましょうか?
C++で同様に優れたライブラリを作成したところで、
それはCでも同じように使用できるのでC++固有の優れた機能とはいえません。
STLはどうなりましたか?
0744デフォルトの名無しさん
NGNG十分に数学的帰納法になっていますが?
0745デフォルトの名無しさん
NGNG>>724がか?
本気で言ってるのか?
だとしたらアフォ丸出しですよ?
0746デフォルトの名無しさん
NGNG「同じように使用できる」を記法として同等にの意と言いたい訳かい?
だったら、C++の記法が優れていることを示してもらいたいねぇ。
それとも、C++はCのスーパーセットだからと言うのなら
そういう言い方自体が詭弁ではないのかというところに答えて欲しいねぇ。
それより、↓の方に答えてもらいたいんだがね(藁
もし私が「C > C++」と言いたがっていると思うんなら根拠を出して欲しいね。
で、結局、実世界に即した客観的評価は自分には持ち出せないので
理論的なトピックを通じてC++はCより優れていると評価するってことでいいんかね?
枝葉末節を斬り返していけばどうにかなると思っとらんか?
0747デフォルトの名無しさん
NGNG> 理論的なトピックを通じてC++はCより優れていると評価するってことでいいんかね?
いいですよ。
私には、おそらく私以外のすべての人にも、あなたの言う「実世界に即した客観的な評価」は出せませんから。
0748デフォルトの名無しさん
NGNG>私には、おそらく私以外のすべての人にも、あなたの言う「実世界に即した客観的な評価」は出せませんから。
おお。やっとまともな台詞が聞けたよ。
私もそう思ってるよ。だから、
>ここはCしかわからない老人のスレですか?違いますよね。
>Cを理解し、C++を理解していれば、Cの生産性がC++に比べてはるかに低いことは認識できると思いますけど?
>もちろん、C++を使いこなせないプログラマの場合この限りではありませんが。
これは侮辱と言うんじゃないかね、と、これが私の一番言いたいところだ。
これが自分の主観であることに異はないと思うが、
なぜそんなものを根拠にして見ず知らずの住人を老人呼ばわりするのか、
説明して欲しいねぇ。
0749デフォルトの名無しさん
NGNG言語知らない新入社員に「Cで組め」「C++で組め」って言った時は
Cの方が覚えるの簡単なんで生産性たかいとおもうが。。。
0751デフォルトの名無しさん
NGNG私の持つ根拠とあなたの欲している根拠が異なる点に基づいているだけですが?
私にとっての(あなた風に言えば理論的な?)根拠はあなたにとって根拠とは呼べないのでしょうし、
あなたにとっての(実践的な?)根拠は私にとっては根拠とは呼べない。
それだけのことです。
> これは侮辱と言うんじゃないかね、と、これが私の一番言いたいところだ。
もちろんです。
ちなみに老人呼ばわりしたのは、
C++を知らずにCとC++の比較を非難する人たちであり、
もしいるとすれば私にとっては十分に侮辱の対象になりえます。
あえて言うなら>>691-693あたりを想定していますが、
その人たちがC++を使えているなら問題ありませんし、
そもそも先に侮辱しているのはあちらです。
C++を理解したうえで、CがC++よりも生産性が低くないと主張するならば、そう根拠を持って主張すれば言いだけのことです。
私はそれらの人に対してなんら侮辱するつもりはありません。
0752デフォルトの名無しさん
NGNG始めにおまえがCをマクロなどと言わなければこんなレスはつかない。
0753デフォルトの名無しさん
NGNGいいんですよね?
0754デフォルトの名無しさん
NGNG>私の持つ根拠とあなたの欲している根拠が異なる点に基づいているだけですが?
>私にとっての(あなた風に言えば理論的な?)根拠はあなたにとって根拠とは呼べないのでしょうし、
>あなたにとっての(実践的な?)根拠は私にとっては根拠とは呼べない。
つまり君は君以外の人間に話が通じるとは端から期待してないわけだ。
だとしたらなんでわざわざ喧嘩しにくるのか、愉快犯かと疑ってしまう。
>あえて言うなら>>691-693あたりを想定していますが、
の割にはまるでスレの住人を一括りにしたような言い方だよ、あれじゃ。
もうちょっと言葉づかいぐらい考えてもらいたいねぇ(ニガワラ
>その人たちがC++を使えているなら問題ありませんし、
これも人を侮りすぎだと思うねぇ。
君の言う「C++が使えない」人間は多いだろうが
君がここで言葉を交わすプログラマもそうであるという保証はどこにあるね?
>C++を理解したうえで、CがC++よりも生産性が低くないと主張するならば、そう根拠を持って主張すれば言いだけのことです。
CはC++に常に劣るわけではない、という証明がここでは重要だと言うのかね?
だとしたらそれは、君の思い上がりだ。
誰もそんな話をここでしたいとは思っておらんよ。
ここはCの話をするスレだ。違うかね?
0755デフォルトの名無しさん
NGNG知らないことを自覚してないやつは、おおいに侮辱するべき。
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNGヘッダーはインターフェースと実装の分離のために使うのが基本だからね。
ヘッダーに実装を書いてしまうと実装の変更の度に不要であるはずのコンパイルが発生してしまう。
0758デフォルトの名無しさん
NGNG>>691-693なんて相手にすんな。
お前もアホだが>>691-693はお前とは比べ物にならないくらいアホだ。
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNG0761753
NGNGちょっとCプログラミングの(自分の考えていた)常識を覆されました。
もっと勉強します。
0762デフォルトの名無しさん
NGNG書いてありません。
0763753
NGNG2.5系のには入ってるんですよ。
いづれ取り除かれるのかもしれないですが。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGソースの記述に拘るなら*BSDをどうぞ。
Linuxはそういうもんだと思って付き合うのがよろし。
0766デフォルトの名無しさん
NGNGどこで落とせるんですか?
ファイルに直リンクでお願いします。
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGbz2とかになってると勘違いしてる人っぽいですな。
0770デフォルトの名無しさん
NGNGbz2とかになっていないと勘違いしてる人っぽいですな。
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGいつの時代の話をしているの?
0773デフォルトの名無しさん
NGNGしつこい
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGみんな元気だねえ
0776デフォルトの名無しさん
NGNG元気があればなんでもできる、、
0777デフォルトの名無しさん
NGNGJIS X 0015 でも読んでおけ厨!
0778デフォルトの名無しさん
NGNG一応こういうページをリンクしてみよう。
もちろんこの文章はジョークだけどC++にはこういう一面があると言うことはC、C++
両方をかじってみて自分でも実感したことでもある。
ただしCとC++とどちらが優れているかなんて言う議論はナンセンスだと思うよ。
CにはCの良さがあるしC++はそれで優れた点もある。しかし両者とも欠点はある。
いつも言われることだが銀の矢は存在しない。優れたプログラマはどちらでもそつなく
仕事をこなすがヘボはどっちでもヘボ。
0779デフォルトの名無しさん
NGNGXはYより優れているということをYしかしらない君たち原始人に教えてやろうって態度の奴。
インドに「近代的教育」を施したイギリス人の再来かと見紛える(ワラ
しかもまた習いたての若いのに多いのが頭の痛い話で・・・。
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNGprintf じゃ駄目?
0782デフォルトの名無しさん
NGNGちょい訂正。
sprintf じゃ駄目?
0783デフォルトの名無しさん
NGNGファイルに出力したいの
0785デフォルトの名無しさん
NGNGそれだと変なコードになるのでは???
0787デフォルトの名無しさん
NGNG逝けるんですね、782すまん
0788デフォルトの名無しさん
NGNGvoid main(void){
FILE *fp;
int num=1;
int input;
int i;
char h[4];
scanf("%d",&input);
fp=fopen("t.txt","w");
for(i=0;i<=input;i++){
if(i%25==0){
fputs("\n",fp);
}
fputs(">>",fp);
sprintf(h,"%d",i);
fputs(h,fp);
}
fclose(fp);
}
直してくれちょ
0789デフォルトの名無しさん
NGNG/*char h[4];*/と >>786 以上
0790デフォルトの名無しさん
NGNG何をどう直せと。
void main(void) => int main(void)
で最後にreturn 0;というわけでもあるまい。
0791デフォルトの名無しさん
NGNG>sprintf(h,"%d",i);
>fputs(h,fp);
fprintf(fp, ">>%d", i)
0792デフォルトの名無しさん
NGNGそれは、あとできずいて直しますた
0793デフォルトの名無しさん
NGNG余裕があったらエラーチェックも入れてください。
0794デフォルトの名無しさん
NGNG> for(i=0;i<=input;i++){
仕様が良くわからないのだが
input = 10の場合、11回繰り返したいのか?
0795デフォルトの名無しさん
NGNG実は、もう終了しました。
スマソ
0796デフォルトの名無しさん
NGNG自分で十分考えてから質問すれ。
0797デフォルトの名無しさん
NGNGprintf の桁指定のところを可変にできませんか?
例えば、
int keta = 5;
float num = 1.0;
printf("%.7f", num);
とあった時に 7 の所を 変数 ketaで指定し、
結果の表示が 5 桁になるように、とか。
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNGchar* s = "%.7F";
printf(s, num);
0800デフォルトの名無しさん
NGNGprintf("%.*f", keta, num);
0801デフォルトの名無しさん
NGNGいや、勉強になった。さんくすこ。
0802デフォルトの名無しさん
NGNGfは小文字じゃなくてもいいの?
0803797
NGNG出来ました。(^-^
K&R の精度指定のところ(p305)ばっかり見てたんですが、
ちょこっと後 (p306) に書いてありましたね。
全然気がつかなかった。
サンクス。
0804デフォルトの名無しさん
NGNG0805クレジャパン
NGNG0806デフォルトの名無しさん
NGNGグーグルの予感・・・。
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGUNIX開発専用言語。
0809デフォルトの名無しさん
NGNG高級マクロアセンブラ。
0810デフォルトの名無しさん
NGNG>>805と>>808には使うことのできない言語。
7行スレ荒らしたのはおまえか?
0811デフォルトの名無しさん
NGNG0812名無しかも
NGNG0813デフォルトの名無しさん
NGNG混乱するから。
0814デフォルトの名無しさん
NGNG俺が書いたやつなら/cygdrive/d/prog/library/standard_library/
にstring.hとctype.hがあるから持ってげ
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG貧乏になるから
0818デフォルトの名無しさん
NGNGDOS時代は、最速コードを吐くと言われたコンパイラ。ちょっと前からFreeに。
Win版の性能はわからない。多分悪くないんじゃない?
0819ほえほえ
NGNG0820デフォルトの名無しさん
NGNG例えば、トップ10を抽出したいとき、全要素をソートして上位を
取り出すのは効率が悪いですよね。
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
に習い、
void topsort(void *base, size_t nmemb, size_t top, size_t size,
int (*compar)(const void *, const void *));
※ただし、top は抽出したい要素の個数とする
という関数を(考えうる最高の実行速度になるように)書いてください。
0821デフォルトの名無しさん
NGNG( ・∀・)<「書いてください」
(u u)
0822やっぱり既出?
NGNGUNIXのCと普通の(林晴比古とかが解説してる)Cって
どう違うのでしょう。
何か「機械系のCとUNIXのCは全然違う」とか言われたんですけど、
どこが違うのか全然わからないのです。
どなたか教えていただけないでしょうか・・・。
0823デフォルトの名無しさん
NGNG( ´Д` ) 書いてください。(しかも考えうる最高の実行速度で)
/, /
(ぃ9 |
0824デフォルトの名無しさん
NGNG上位n個を取り出すなら「ヒープソートを途中まで」というのが
とりあえず基本かと。もっと高速な方法もたぶんあるだろうけど。
つーわけで頑張って(考えうる最高の実行速度になるように)書け。
>>822
Cという言語自体は基本的に全然変わらん。
OSとかシステムに依存するライブラリの部分は色々と違うだろう。
0825デフォルトの名無しさん
NGNG(;;´-`).。oO(どう答えてやるか・・・・・)
(;;;´-`;;).。oO(クイックソートかよ・・・不慣れなやつじゃん・・・)
(;゚-゚).。oO(.......)
(;つДT) < >>820は逝ってよし!
0826デフォルトの名無しさん
NGNG結果は base[0] から base[size*top-1] までに上書きしていいのか?
0827デフォルトの名無しさん
NGNGCやめてC++のpartial_sortでも使え!プログラムせんでええぞ。
0828デフォルトの名無しさん
NGNGそれはいけましぇん。意味が違う。
0829デフォルトの名無しさん
NGNGそれ、宿題の問題文を敬語で書き直しただけちゃうんか
0830デフォルトの名無しさん
NGNG機械系(組み込み系)とUNIXのCの違いは、824が書いた通り、言語としては同じ。
組み込みだと、標準ライブラリが有っても使えない事も多い。
メモリ消費量や、実行速度、あるいは割り込みの関係上ね。
組み込みは、コンパイルされたコードが正しく実行されるとも限らない。
データバス、もしくはアドレスバスが切れている、又はブリッジしている状況も
想定出来ないと、初めて出来上がったハードの最初のプログラマにはなれない。
OS込みなら普通テスト済みのハードだから、おかしければエラーで済む所だけど。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGその課題、結構面白いね。
>>824
確かに、それがよさそうだね。
1.トップ要素が最低値になるようなヒープを保持しておく
2.ヒープにつっこむ最大要素数を抽出したい要素数とする
3.ソートしたい配列を走査していって、ヒープのトップ
より大きな値が来たら、ヒープのトップ要素と交換して、木を再構成。
最後に取り出す時は、ヒープに使ってた配列をクイックソートってのが
効率いいのかな?
0833デフォルトの名無しさん
NGNGquicksortはO(logN*N)に比例するけど
Top10なら10個の要素のみ記憶して,バイナリサーチで探して挿入するのが
いいんじゃないかのん。計算量がlog2_10*Nに収まるからこっちのほうが
速いのではないかと思われ。
0834デフォルトの名無しさん
NGNG>>811
検索ぐらいは、かけような。
ftp://ftp.gnu.org/gnu/glibc
0835名無しかも
NGNGfp == NULL の場合も fclose しないといけないんですか?
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG0838835
NGNG何でですか??
0839837じゃないけど
NGNG例えば、FreeBSDの man fclose によると、
fclose() does not handle NULL arguments; they will result in a segmentation violation.
だそうです。
0840835じゃないけど
NGNG確認を基本的にはやってくれないんですよね?
0841デフォルトの名無しさん
NGNGすべてプログラマの責任です。
0842841
NGNG0843837じゃないけど
NGNGごめん、>>839だけでは情報不足でした。
fclose() does not handle NULL arguments; they will result in a segmenta-
tion violation. This is intentional - it makes it easier to make sure
programs written under FreeBSD are bug free. This behaviour is an imple-
mentation detail, and programs should not rely upon it.
fclose()は、NULLが渡されても無視します。だって、NULLにアクセスしようとすると
セグメンテーション違反になるんだもん。ちなみに、これはワザとやってることで、
FreeBSDで動くプログラムでセグメンテーション違反を発生させにくくするためなのよ。
このfclose()の動作はおまけ機能みたいなもんなので、これに頼らないこと。
なので、FreeBSDは一応fclose()がNULLチェックしてくれるみたい。
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG関数宣言をぶち込めば良いんですか?
0846デフォルトの名無しさん
NGNG本読んだり、人のソース読んだりしてみてください。
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGおれは、他のファイル(*.c,*.h)から参照される可能性がある
・プロトタイプ宣言
・定数定義
・構造体定義
などをぶちこむようにしてる。
0849デフォルトの名無しさん
NGNG関数と変数宣言以外は皆書けってことだな。
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGここに出てるコード↓、
while(a++ == b++);
クールだと書いてありますが、どういうときに使えるんでしょうか。
ループ前に a == b なら止まらず、そうでなければa,bのインクリメント
一回以外に何も起きないようにおもうのですが。。。。。
0852デフォルトの名無しさん
NGNG文字列をコピーするのに使える。
もしくは終端がNULLで終わっているものなら何でも。
0853デフォルトの名無しさん
NGNGwhile (a++ = b++); の間違いじゃないか?
0854デフォルトの名無しさん
NGNGでも while の中身空っぽだよ?
0855デフォルトの名無しさん
NGNGa と bが同じ型だったら、無限ループになるような。。。
0856デフォルトの名無しさん
NGNG文字列だったら '\0' を通りすぎた後とか。
0857デフォルトの名無しさん
NGNGコンパイルできねっす(gcc)。
0858デフォルトの名無しさん
NGNGの間違いでは?
0860デフォルトの名無しさん
NGNGそれの間違い以外にちょっと考えられないけど、
アスタリスクの抜けに、代入と比較の取り違えの
2個所も間違ってると、なにかあるんじゃないかとかんぐってしまう…
0861デフォルトの名無しさん
NGNG「非0→真」「0→偽」
というのを暗黙的に使うなと言う説明のために
適当に書いた、特に意味の無いコードなのかもしれん。
0862デフォルトの名無しさん
NGNG>>858 こういうのは?
int strcmp(char *s, char *t){
while(*s++ == *t++);
return *s - *t;
}
0863デフォルトの名無しさん
NGNG省略なしで書くと↓ってなってる。
while(true == (a++ == b++)){ /* do nothing */ }
0864デフォルトの名無しさん
NGNGsとtの中身が同じだとまずいような…
0865820
NGNGvoid eztopsort(void *base, size_t nmemb, size_t tnum, size_t size,
int(*compar)(const void *, const void *)){
int i, j, mi;
char *bp, *tmp;
bp = base;
tmp = ezmalloc(size);
for(i = 0; i < nmemb * size && i < tnum * size; i += size){
for(mi = j = i; j < nmemb * size; j += size){
if(compar(bp + mi, bp + j) > 0) mi = j;
}
memcpy(tmp, bp + i, size);
memcpy(bp + i, bp + mi, size);
memcpy(bp + mi, tmp, size);
}
free(tmp);
}
0866デフォルトの名無しさん
NGNGでもcoooolってかいてあるしなぁ。。
0867820
NGNG0868デフォルトの名無しさん
NGNG言われてみればそういう気もするが、
なぜかうちの gcc(2.91) では s と t が同じでも動く。
何故だ。
0869デフォルトの名無しさん
NGNG同じ時の戻り値は?
変数の外側のメモリにまでどんどんアクセスしてってそのうち一致しただけじゃないの?
0870デフォルトの名無しさん
NGNGsegvらないでどうにか動くのは まぁ ともかく、それで結果(戻りのint)も正しいのかい?
0871デフォルトの名無しさん
NGNG書き込みしてないから一応動くんじゃない?
↓ここを変更すると正しく動くと思うけど。
return *(s-1) - *(t-1);
0872デフォルトの名無しさん
NGNG関連記事はなかなか素晴らしいし、きっとデキる人なんだろうと思う。
0873868
NGNG0874デフォルトの名無しさん
NGNG> 書き込みしてないから一応動くんじゃない?
んなーこたないだろ
0876デフォルトの名無しさん
NGNG中身が同じでも0が返らないから使い物にならない。
0878デフォルトの名無しさん
NGNG中身が違う場合だけ使って下さい
中身が同じ場合の結果は不定です。
*/
int strcmp(char *s, char *t){
while(*s++ == *t++);
return *(s-1) - *(t-1);
}
これでよし。
0879デフォルトの名無しさん
NGNG関数名はstrcmp_にすべきだ。
で、
#define STRCMP(s1,s2) ((!strcmp(s1,s2)) ? (strcmp(s1,s2)) : (strcmp_(s1,s2)))
これでよし。安全。
0880デフォルトの名無しさん
NGNG868 は標準関数と名前がかぶってるので実際は変えてあります。
一応直しとく。
int strcmp(char *s, char *t){
while(*s != '\0' && *t != '\0' && *s++ == *t++);
return *s -*t;
}
直ってなかったら誰か直して(他力本願モード)。
0881デフォルトの名無しさん
NGNG>>880
0882デフォルトの名無しさん
NGNGちなみにそれは間違ってるよ(w
0883868 = 880
NGNG何か本題とエラくはずれてしまった。
0885デフォルトの名無しさん
NGNGあら、直しといて。(W
0886デフォルトの名無しさん
NGNG*s++ == *t++がfalseでwhile抜けた時は、return *(s-1) - *(t-1);
0887デフォルトの名無しさん
NGNG(atoiの逆)
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNGsnprintf
0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893887
NGNG早速試してみようと思います。
0894デフォルトの名無しさん
NGNGhttp://www.ijs.si/software/snprintf/
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNGstd::stringstream::str()
0898デフォルトの名無しさん
NGNG%d とかの書式で出力すること自体時代遅れだしな。
0899デフォルトの名無しさん
NGNGここCスレなんですが。
0900デフォルトの名無しさん
NGNG( ´Д`) <はぁー・・・
/ \
_ | | | |_..∬
|\ ̄ ̄ ̄ ̄ ̄ ̄ 旦.\
./..\\ \
/ \|=================|
\ ノ 900 \
0901デフォルトの名無しさん
NGNGchar a;
int n;
a = (char)n;
0902デフォルトの名無しさん
NGNGintの値を引数として渡すと、文字列に変換して返す関数ってC(もしくはC++)にはないのかな?
結構調べてもみつからなかったんで。
ないとしても、どうしてないのかな?
0903デフォルトの名無しさん
NGNG_itoa()
だがこいつはANSIじゃないからな。
つーわけでない。自分で作るよろし。
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG1. sprintfが有るから。
2. 標準になくても、多くの処理系に入ってるから。
3. このくらい誰でも作れるから。
0906902
NGNGレスありがとう。
マニュアル見ました。
javaでいう String.valueOf(int) みたいな簡単なのってないのね。
でもなんで標準でないんだろう??
そっちのほうが気になる。
0907902
NGNGあわわ、ありがとう。
0908デフォルトの名無しさん
NGNGこれCの常識
0910902
NGNGたとえば char* IntToStr(int i)という関数をつくったとして、
その中でとったchar*の領域は誰が開放するの?
って理由からなのかな?ぜんぜん違う?
0911905
NGNGそういう関数の主な実装で例を挙げると、
printf("%s,%s\n",intToStr(1),intToStr(2));
の結果が保証されない。
vc++のitoaで同じ事やると、1,1が表示されます。
これを回避する為に毎回mallocすると、楽しい事になります。
0912デフォルトの名無しさん
NGNGvoid IntToStr(int i,char *p, int max_len)
みたいな形で作るのがよいかと。
0913デフォルトの名無しさん
NGNGそれじゃあsprintf使えばいいじゃん。
0914902
NGNGうーん、よくわからないです。
なぜ保証されないのでしょう?
>これを回避する為に毎回mallocすると、楽しい事になります。
メモリリークするってことですよね?
char *str;
str = intToStr(1);
free((void *)str); //書き方まったく自信なし
こういうようにしなければいけないから標準ライブラリ(っていうのかな?)
にはないのかなと思って。
>>913
うん(w
0915デフォルトの名無しさん
NGNGstringstreamを使っても良い。スレ違いになるけどな。
0916デフォルトの名無しさん
NGNG保証されないのは
sprintf(str,"%s %s\n",_itoa( a, buf, 10),_itoa( b, buf, 10) );
とかした場合かな?
関数の呼ばれる順序が規定されていない?のと、
両方とも同じポインタを返すために後者の結果のみが反映されるせいでしょ。
sprintf(str,"%s %s\n",_itoa( a, buf1, 10),_itoa( b, buf2, 10) );
なら問題ないかも。
なんでitoaが標準ライブラリにないかは分からんなぁ。K&Rにでも聞いてくれ。
0917デフォルトの名無しさん
NGNGsprintfならそれら全てをこなしてくれるのに。
0918デフォルトの名無しさん
NGNGテンプレートの偉大さを痛感するとき・・・ってテンプレートじゃ対応しきれないなw。
0919デフォルトの名無しさん
NGNGできますよ。一例をだすなら boost::lexical_cast<T>(num);
0920デフォルトの名無しさん
NGNGUIでデータを出力する部分にしか使わないでしょ。
(ほとんどの場合ね)
プログラムのうち、最後の方でチョビット呼び出せばいいだけなんだから
sprintf系の関数で十分。
加工もしやすいし、それほど動作も遅くない。
それ以外で、どうしても全体の速度に影響するような場面でitoaみたいの
を使いたいときは、高速なitoaを自分で実装しよう。
桁数に応じて動的にメモリを拡張するお気楽 itoa(でも遅い。解放が面倒)
桁数は固定だけど激速のitoa(桁あふれのチェックをはずすとメモリ破壊の気可能性)
桁数を指定して固定長バッファに書き込むitoa(桁数をスタックに積んだり桁数チェック
する分若干の速度低下)
要求される速度、安全性に応じて、いろんなバージョンが考えられるから
やっぱすきなの作れ。
0921デフォルトの名無しさん
NGNGsprintf使うならはじめっからそこで書式指定しろよ...
0922デフォルトの名無しさん
NGNGおまえはツッコミの天才だな
0923デフォルトの名無しさん
NGNG1文字とか2文字に限定される場合は、'0'を
足したりするかも。
x &= 0xf;
( x > 9 ) ? x + 'a' - 10 : x + '0'
0924デフォルトの名無しさん
NGNG俺が立ててもよいが、名前が思い浮かばん。
ただ"日下部陽一"とかくだけではだめなんだよな?
0925デフォルトの名無しさん
NGNGうーん、ちと長い?
0926デフォルトの名無しさん
NGNGそれで立ててくる。
0927デフォルトの名無しさん
NGNG新スレ立てました。
0928デフォルトの名無しさん
NGNGそういうのってない?
9654403
を
9,654,403
に変換するやつ。sprintf()では無理だし。
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNGsprintfで文字列に直してからカンマを挿入すればすごく簡単じゃない?
0931851 のリンク先を書いた本人
NGNG858 の指摘が正しいです。ごめんなさい
0932デフォルトの名無しさん
NGNG同じソースをUNIXのgccでコンパイル→UNIXで実行すると動くのに、
Borland C++でコンパイル→WIN98で実行すると
その後の入力が全部壊れてしまいます。
これってプログラムが間違ってるってことでしょうか?
0933デフォルトの名無しさん
NGNG具体的なコード見せれ
0934デフォルトの名無しさん
NGNG>これってプログラムが間違ってるってことでしょうか?
そうです(断言)。
0935デフォルトの名無しさん
NGNGマルチは氏(略
0936デフォルトの名無しさん
NGNGソースファイルの検索
CRT0.Cのパスを入力してください
とでます。
保存したファイル名は,name.datなんですが。
0937デフォルトの名無しさん
NGNGすごいことになってるなぁ。
とりあえず解決できそうにないけど、OSとコンパイラ何?
0938デフォルトの名無しさん
NGNGコンパイラは,VC++6.0です。
ファイル軽いから,UPしたほうが早いですかね?
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNGttp://sylphys.ddo.jp/imgboard/img-box/img20020423232833.jpg
あと、1が書きこみ関数用で,2が読みこみ関数用です。
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG次スレの1でD.リッチーとかやるなよ。スレがダレルからな。
0944937
NGNGほんとだ。こんなの出るのか。
とりあえず、
printf("sizeof(Kou)=%d\n",sizeof(Kou));
printf("sizeof(struct tag)=%d\n",sizeof(struct tag));
printf("sizeof(Kou[0])=%d\n",sizeof(Kou[0]));
これ入れて、結果を吟味するべし。>>938
0945938
NGNGどこか問題ありますかね?
上の3行を入力してみましたが、どう吟味すればいいんでしょうか?
とりあえず、疲れたんで今日は寝ます
0946デフォルトの名無しさん
NGNGfread(&Kou,sizeof(Kou),3,fp);
&Kou → Kouでなくて?
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGコピーペーストをすることで、ある機能を簡単に別の処理で
再利用できる。
…でも、そんなことしちゃだめ。
0951デフォルトの名無しさん
NGNGCなら機能(関数)をライブラリとして再利用できる。ってとこか。
今じゃ普通の機能だが、当時は画期的だった。
0953デフォルトの名無しさん
NGNG0954938
NGNGファイルに直接書きこむ事はできるのでしょうか?
0955デフォルトの名無しさん
NGNGはぁ?
ファイルの概念に対する理解が根本的に違うっぽいぞ
0956デフォルトの名無しさん
NGNGそこは自分で配慮する必要がある。
なお、「ファイルに直接書きこむ」はやや意味不明瞭なので、
この「直接」の意味がはっきりするまでは何ともいえない
0957デフォルトの名無しさん
NGNGテキストファイルとして,書きこめるのでしょうか?
0958デフォルトの名無しさん
NGNGまるで COBOLer さんのようだよね
0959デフォルトの名無しさん
NGNGこんな感じでmallocしたのですが、n番目の構造体にアクセス
するにはどうすればよいでしょうか。
0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG色つきの文字を出力したいんです。ただし
OSはWindowsXP,コンパイラはLSI-C86(試食)。
(Win98の方は確認済)
実際にやってみると
printf("\x1b[34m hoge"); /* blue */
printf("\x1b[2J"); /* clear */
ESCの部分が改行記号(半角)になって
しまいますが、やはり不可でしょうか?
(どれかのWin Ver. 以降, DOSが変わったと
聞いたことがあるんですが。)
よろしくお願いします。
0965デフォルトの名無しさん
NGNGWin2kのpromptコマンドで実験。やはりESCは改行に。
DOSとコンソールは違うと言う意味を理解した瞬間でした。
0966仕様書無しさん
NGNG(´ヘ`;)ハァ?
ANSI エスケープシーケンスを使いたいなら、
COMMAND.COM の上でも、ANSI.SYS を事前にロードしておくことが
必須だよ。
(;´д`).。oO( ていうか、イタチ飼い )
0967デフォルトの名無しさん
NGNG0968「あ、gcc落ちた。」
NGNG19まであるのに保全はねぇだろう。
0969デフォルトの名無しさん
NGNG文字以外のキー無効にするのはどうすればいいの?
例えばDelとか。
0970デフォルトの名無しさん
NGNG単に無視すれば?
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG早く埋め立てよう。
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGピュ.ー ( ・∀・)< お待たせ〜♪
=〔~∪ ̄ ̄〕 \______
= ◎――◎
0979デフォルトの名無しさん
NGNGミ ヽ
二 ノ ( i
三 ⌒ へ /` |
二 _ _ |
三 ┰ ┰ |
l^ (
} ! ヽ / {\ ノ
l i ( 、 , ) {
∪、 j | / ̄ ̄ ̄ ̄ ̄
| ‐――――┴、 < sageだこりゃ
|  ̄`ー―ァ'′ \_____
\______)
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG0985密かな戦い
NGNG0986我々は耐え忍ぶ戦いを選んだ
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNGそれいいなぁ・・・・・
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000やった
NGNG/ ・ / ';,
/ '; / '; 1000 ワショーイ…
/ ;______/ ;
/ \
/ / \ \
/´ ( ) |____| ( ) |
| ///// ( | :| ) ///// |
| ( ) :| | ( ( |
| ) ( | | ) ) |
| ( ) '; / ( ( /
\ ) ( \/ ) ) ../
ヽ ........:::
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。