C言語なら、俺に聞け! <14>
レス数が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/qid%3D1005618315/250-3950205-1475419
・前スレ C言語なら、漏れに聞け! <13>
http://pc.2ch.net/test/read.cgi/tech/1013990673/l50
0002デフォルトの名無しさん
NGNGどんどん名前が長くなるな。
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGage
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNGC言語のエキスパート(自称)ってウザイほどいるけど。
C++なら俺に聞けって奴みたことねー
0009初耳
NGNGはつみみです;)
0010デフォルトの名無しさん
NGNG'はつみみです' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0011デフォルトの名無しさん
NGNG↓ここに一人いますが。
1 名前:スーパーハイソサエティーハッカー日下部陽一 投稿日:02/03/05 09:09
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことなら全てわかるから、疑問な点があったら漏れに聞け。
0012デフォルトの名無しさん
NGNGhttp://www.zdnet.co.jp/products/tdk/hddataclear.html
それともアセンブラも必要なのでしょうか?
別にこの機能が欲しいわけじゃなくて、どういう原理でできているのかなぁ?
と思いまして、書き込みました。
よろしくお願いします。
0013デフォルトの名無しさん
NGNGそんなことをいうと、尋常でないテンプレートが
バカバカでてきててにおえなくなるからなのれす。
0014デフォルトの名無しさん
NGNG教えて下さい。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGネタを真に受けている馬鹿
0017デフォルトの名無しさん
NGNG>>11はネタじゃないの?
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGchar (*ap)[];
strcpy(a[0], "abc");
strcpy(a[1], "def");
strcpy(a[2], "ghi");
となっていたときに、ap を使って a[0], a[1], a[2] を表示させるには
どう書けばいいですか?
0020デフォルトの名無しさん
NGNGchar (*ap)[];←これって配列の大きさが不定です。ってコンパイラに言われない?
0021デフォルトの名無しさん
NGNGじゃ君も「ネタを真に受けている馬鹿」なんだね。
002220
NGNG0023デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main()
{
char a[3][4];
char (*ap)[4];
ap=a;
strcpy(a[0], "abc");
strcpy(a[1], "def");
strcpy(a[2], "ghi");
printf("%s\n%s\n%s\n",ap[0],ap[1],ap[2]);
return 0;
}
0024デフォルトの名無しさん
NGNGint i,j;
int a[5][5];
int **ap;
ap = (int **)malloc(sizeof(int *)*5);
for(i=0;i<5;i++) {
ap[i] = a[i];
}
for(i=0;i<5;i++) {
for(j=0;j<5;j++) {
ap[i][j] = i*10+j; /* apのほうに代入 */
}
}
for(i=0;i<5;i++) {
for(j=0;j<5;j++) {
printf("%d ",a[i][j]); /* aのほうを表示 */
}
puts("");
}
で ap = (int **)malloc(sizeof(int *)*5);を省くと
値が割り当てられていないローカルな変数 'ap' に対して参照が行われました。
というエラーが出ました。
どうしてですか?
0025デフォルトの名無しさん
NGNG**apはどこを指しているの?
mallocで得た領域でしょう?
それを省いたら・・・
002625
NGNG0027デフォルトの名無しさん
NGNG(・ω・)
/[リナ]ヽ
人
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG酒場でくだ巻いている自称戦士みたいなもんだ。
0030デフォルトの名無しさん
NGNG配列を用意する。
0031デフォルトの名無しさん
NGNGありがとう。
char (*ap)[4]; て宣言しなきゃいけないのか。
別に意味のあるプログラムではないんだけど、昨日からずっと悩んでた。
0032溺れるプログラマー
NGNGSDKアプリケーションはDLLいる?
0033デフォルトの名無しさん
NGNGここはCスレです。
MFCは必要です。Win98以降はMFC4.2DLLが最初から入っているらしいけど。
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGんなこと決まってない。
スケルトンなら全員でかく。
0036デフォルトの名無しさん
NGNGキミおもしろいなぁ。
003735
NGNGドライバ:○
鬱だ・・・
0038デフォルトの名無しさん
NGNGなんらかのOSの上で稼動するのであれば、アセンブラはいらないでしょう。
独自のブートを行う場合は、ちょびっとだけアセンブラがいる。
で、件のソフトは、「オリジナルの起動プログラムで動作するのでOSに
依存しない」と言ってるので、ちょっとだけアセンブラがいるね。
でも、HDDの中身を消すくらい、ちょーかんたん。
って、どっかのスレで出てたな・・・
これか。
http://pc.2ch.net/test/read.cgi/unix/1013144113/n682-690
0039デフォルトの名無しさん
NGNGシュレッダーソフトって全てのクラスタを上書きするんじゃなかった?
0041デフォルトの名無しさん
NGNG俺ペーペーだから、まだ#defineしか書かしてもらえない。
普通の関数でキャリア5年、mainなら10年以上だな。
0042デフォルトの名無しさん
NGNG俺なんか#include <stdio.h>しか書かせてもらえない。
他の#includeも書きたいんだけど。
0043デフォルトの名無しさん
NGNGstac overflowのエラーが出てしまいます。
何が原因なんでしょうか?
0044デフォルトの名無しさん
NGNG配列が大きすぎるとか、関数を再帰的に呼びすぎるとか。
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0048超初心者
NGNGC言語は一通り使いこなせるようになったと言えるんでしょうか?
厨房質問ですみませんです。
0049デフォルトの名無しさん
NGNGC言語を使いこなすと言うのは、C言語で思考出来る事だと思われ。
0050デフォルトの名無しさん
NGNG>http://www.zdnet.co.jp/products/tdk/hddataclear.html
URLをHDDアタッカーと読んでしまって
てっきり物理的にHDDを破壊するソフトか何かかと。
0051デフォルトの名無しさん
NGNGK&Rにある問題を一通り自力で解いてみたなら基本は一通り、ってかんじだね。
実際にはアプリケーションに対する知識と
OSに依存した様々な知識がないとまともなプログラムは組めない。
がんばれ
0052名無しさん@Emacs
NGNGいてるやついたな...
俺も昔はそういう安易な考えだったが、やればやるほど先が長いことに気づく(w
0053超初心者
NGNGC言語で思考するとはどういうことか
イメージを具現化できないんですが、
実際どう言う事なんでしょう?
>>50
励ましありがとう。
>実際にはアプリケーションに対する知識と
>OSに依存した様々な知識がないとまともなプログラムは組めない。
じゃあこれらはどうやったら身につける事ができますか?
>>52
作れないんだ・・・。
0054デフォルトの名無しさん
NGNGファイルに出力するのに、
FILE *fp;
fp = fopen("hoehoe.dat", "w");
for( i = 0 ; i < 100 ; i++ ){
for( j = 0 ; j < 100 ; j++ ){
fprintf( fp , %08f\n , a[i][j] );
}
}
と書いたのですが、「この部分の高速化を考えてみよう。」
と言われて、躓きました。
高速化のポイントを教えてください。
0055デフォルトの名無しさん
NGNGファイルアクセスは一回ですます
0056デフォルトの名無しさん
NGNG学校の宿題は、自分で考えよう。
出来なくたって給料に響きもしないし、まして命まで取られるわけじゃない。
0057デフォルトの名無しさん
NGNG> 高速化のポイントを教えてください。
1. ちまちま書き出さずに一気に書く(例えばa[i][0]〜a[i][99]をまとめて書き出す)。
2. 汎用的なfprintfではなく、浮動小数点に特化した自作printfを作る。
3. 本当に速くなったのかの裏付けをとる(man prof or gprof)
(特に2.を行う場合、苦労した割には速くならない可能性がある)
0058デフォルトの名無しさん
NGNGfunc(int (*a)[3])とかにすればいいって分かったんですけど
関数を呼び出す方はどうすればいいんでしょうか?
func((&a)[3]);
ってすればいいんでしょうか?
005954
NGNG即レスthx。それは、考えたのだけれども、具体的にどうすればよいか分からなかった。
とりあえず、大きなchar変数を用意してやればいいのかなと思ったのだが、
うまくいかず。全然早くならない。
>>56
学校の宿題ではないけれども、お言葉は確かに。
006054
NGNGありがとうございます。
3は知りませんでした。今は、実験できないけれども、実験環境整い次第調べてみます。
1に関しては、>>59にも書いたけれども、
2に付いては、例えば、fprintfの%dなどの処理を省いた関数を作るって事?
林晴比古の本に書いてあって、試したのだけれども、無駄な苦労に終わった。
0062デフォルトの名無しさん
NGNGfunc(a);
0064デフォルトの名無しさん
NGNGdoubleを文字列にしなければならないんだよね?
0065デフォルトの名無しさん
NGNGdouble *p;
p = (double *)a;
for (i = 0; i < 100*100; ++i)
{
fprintf(fp, _T("%08f\n"), *p++);
}
ってのもあるけど、今時のCPUだとどれだけ速くなるかは疑問だな。
遅いかもしれないポイントは
1. 高水準IOを利用している
-> 低水準IOにするとマイクロ秒単位くらいの違いで速くなったり遅くなったりするかも。
2. 配列への二次元アクセス・二重ループをしている
-> 一次元に展開すれば、ミリ秒単位くらいの違いで速くなるかも。全く変わらないかも(藁
3. fprintfを使用している
-> 書式の解釈を行うfprintfよりはfcvtみたいな書式化関数を使った方がミリ秒単位くらいの違いで速い
だが一番大きなポイントは
100*100で合計10000回程度しかループしてないので最適化のしがいがないこと。
100*100*100*100くらいだったら、違いが目に見えて出てきただろう。
0066デフォルトの名無しさん
NGNG呼び出すときは
func(a);
宣言は
func(int (*a)[3]);
以外にも
func(int a[][3]);
func(int a[10][3]);
なども可
0067デフォルトの名無しさん
NGNGローカル変数の配列をポインタで参照したらいいんでしょうか?
0068デフォルトの名無しさん
NGNG---head.hの内容----
#define HOGE
-------------------
head.hの中でHOGEが定義されてるなら、Makefileの中でDEF=1
コメントアウトされてるならDEF=0
と、するにはどういうMakefileを書けばよいでしょうか?
もう自分の力では無理なので、どなたかお願い致します。
0069デフォルトの名無しさん
NGNGソースを見せてよ。
ちなみに俺の環境だと、int型の変数を1個用意する関数を65000回ほど再帰的に呼んだところで
stack overflowを起こしたよ。
0070デフォルトの名無しさん
NGNGそれは難しい。漏れには良い解決法が判らん。
でも、configureとかconfig.hとか使う奴はそのへんどうなってるんだろうね。
きっと解決法はあるはずだ。
0071デフォルトの名無しさん
NGNG入ったらstack overflowする関数のみのソースです。
なぜだか分かりません。
この関数以外の関数が原因ってことはあるんでしょうか?
#define FFT_MAX 1024
#define RATIO 0.1;
void decoding( )
{
int i, j; /* ループ変数 */
double d; /* 作業変数 */
double data[FFT_MAX][FFT_MAX],data2[FFT_MAX][FFT_MAX]; /* 元データの実数部 */
double jdata[FFT_MAX][FFT_MAX]; /* 元データの虚数部 */
int num_of_data; /* データの要素番号の最大値 */
make_data( &num_of_data);
FFT2( data, jdata, num_of_data, 1 );
for ( i = 0; i < y_size1; i ++ ){
for ( j = 0; j < x_size1; j ++ ){
data[i][j] = data[i][j] + image2[i][j] * RATIO;
}
}
FFT2( data,jdata, num_of_data, -1 );
make_output_image( num_of_data );
}
0072デフォルトの名無しさん
NGNG????出来ない事は無いが、やる意味がよくわからん。
ソースの中で
#ifdef HOGE
・・・・
#endif
ってしておいて、Makefaileで
withhoge:
cc -c ... -D HOGE
withouthoge:
cc -c ...
っとかするんだよ。
make withhoge
ってすると、-D HOGEつきのコンパイルが出来る。
つか、それがわかった上での質問なのか?
007367=71
NGNG0074デフォルトの名無しさん
NGNG007674
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG1024*1024*8で8MB、それが3つで24MBか。
まぁまぁ大きいかな。
FFT2の宣言はどうなってんだ?
007968
NGNG>>72
レスありがとうございます.
でもMakefileのマクロをソースに渡すのではなくて
ヘッダーファイルのマクロをMakefileのマクロに渡したいんです.
>>70
色々調べてるんですが・・・grepとか使うのかな
0080デフォルトの名無しさん
NGNGconfig.hって、普通ユーザがコンパイル前に希望の状態に
カスタマイズするために用意しているオプション群
みたいなもんだろ?
Makefileとは関係ないじゃん
0081Makefileとは関係ありません
NGNG0082デフォルトの名無しさん
NGNG>ヘッダーファイルのマクロをMakefileのマクロに渡したいんです.
これをやって最終的に何をしたいんだ?
それを書かないと回答不能。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGgrep使うで正解じゃない?
shell出力を make内の変数に取り込む事出来るから。
取り込んだら、ifeqで検査。
0085デフォルトの名無しさん
NGNGまあまあ?
スタックならとてつもなく大きいと思うけど・・・・
0086デフォルトの名無しさん
NGNGたぶんもっとまともな解があるよ
0087デフォルトの名無しさん
NGNG008868
NGNGヘッダーファイルのマクロをMakefileのマクロに渡したして
それをもとにオプションを作って>>72さんのように
cc -c ... -D DEF として
別のプログラムに渡したいんです.
それをその別のプログラムを変更しないでやりたいんですが.
>>84
>shell出力を make内の変数に取り込む事出来るから
この部分をどういう風に書いたらいいのでしょうか
grep "^#define HOGE" head.h; then ○○;fi;
008968
NGNGif grep "^#define HOGE" head.h; then ○○;fi;
コマンドでやるとこんな感じだと思うんですが,
Makefileの中でどういうふうにやって変数にどう渡したらいいのか
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGMakefileはincludeできるぞ。それでどうだ?
009284
NGNG$(shell grep なんたら) で参照出来ると思う。
Win32用GNU make使用。
$(shell cd) で、現在のディレクトリ取得した事は有る。
009371
NGNGスタックサイズを増やすのってどうすればいいんでしょうか?
>>78
FFT2の宣言部です。どうでしょう?
void FFT2( double (*data)[FFT_MAX], double (*jdata)[FFT_MAX], int num_of_data, int flag )
{
int i, j; /* ループ変数 */
static double re[FFT_MAX], im[FFT_MAX];
0094デフォルトの名無しさん
NGNG環境に拠るんじゃない。
環境の話は不毛なので、24MBは取れない環境だったということで。
mallocすればよろしい。ってことでどうでしょ。
0095デフォルトの名無しさん
NGNGPentium3はi586でしょうか?
0096デフォルトの名無しさん
NGNG珍妙なMakefile書いて悦に入ってる奴って
例外なくウンコちゃんだったよ。
0097デフォルトの名無しさん
NGNG板違い
http://pc.2ch.net/hard/
こちらへどうぞ
0098デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&q=i386+i486+i586%82%CC%88%E1%82%A2+pentiumIII&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0100デフォルトの名無しさん
NGNGunsigned int b0:1;
};
sizeof(struct BITS)
これって何で1バイトや2バイトにならないの?
int型のサイズになるのか?
bcc32+win
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG1ビットだけ使うように制限しているだけ
メモリはintのサイズとられます。
010468
NGNGなんかそれで上手くいきそうです.
ありがとうございました.
>>96
そんなこと仰らないでくださいよ.
まだ学生なんで,将来よろしくお願いします.
奇妙なMakefile書かないで済むようにします.
>>90>>91
そうなんですが,色々考えてヘッダファイルから読み込むようにしたかったんです.
0105デフォルトの名無しさん
NGNGちなみに
#define FOO
cc -DFOO
cc -DFOO=1
どれも#define FOO 1 と等価であることに気づいているのか?
0106デフォルトの名無しさん
NGNGそ・れ・だ!
0108Else
NGNG(もちろん、C言語)
0109デフォルトの名無しさん
NGNG>それをその別のプログラムを変更しないでやりたいんですが.
に美学を感じてるんだろな。
現実には共通ヘッダかプロジェクトA,Bのmakefileを呼び出す
上位のmakefileを作るかだね。
プロジェクトA->makefile->プロジェクトBという依存の仕方は
あまり見かけることがないので、他の人が見るとびっくりしてしまうよ。
>108
MSDNはチェックした?
0110デフォルトの名無しさん
NGNGつか、msdn見れ
本は知らん。
0111デフォルトの名無しさん
NGNG変数を渡すほうのプログラムが先輩が作ったもので,なんか書き換えたくないんですよね.
署名が入ってるプログラムって勝手に書き換えていいものなんですか?
使わせてもらうってことの了承はとってるのですが.
自分でもなんかおかしなことやってるような気がしてきました.
他の解決方法も考えてみます.
0112デフォルトの名無しさん
NGNG署名って、
$Id: lcore.s,v 1.1 2002/03/05 15:38:27 senpai Exp $
って感じなやつ?
0113デフォルトの名無しさん
NGNGだから、その先輩はdefineを渡したら、ソース改変しなくても
色々流用できるように考えてくれているんだろ。
なんで、Makefileで定義しないんだよ。
Makefileもその先輩作か?
なら、新しいMakefileを作りな。Makefileとはそうゆうものだ。
0114初心者
NGNG文字列s1中のa-zのような省略記法をそれと等価な完全なリストにしてs2に
展開する関数expand(s1,s2)...
このexpandの解答例ってどこにありますか?
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG{
char *s3 = s2,c;
if(*s1 == '-') s1++;
for(;*s1 != '\0';){
if(isalpha(*s1)){
c = *s1;
s1 += 2;
while(c <= *s1)
*s2++ = c++;
}
}
*s2 = '\0';
return s3;
}
書いてみたんですがだめみたいです、、、
解答をおしえてください!
0118初心者
NGNG0119初心者
NGNG0120sage
NGNG{
int st, ed;
char *p;
p = s2;
while (*s1)
{
if (s1[1] == '-' && s1[2])
{
if (st < ed)
st = s1[0], ed = s1[2];
else
st = s1[2], ed = s1[0];
s1 += 3;
while (st < ed)
*s2++ = st++;
}
else
{
*p++ = *s1++;
}
}
*p = '\0';
return s2;
}
はよ寝ろ
0121sage
NGNG↓
*p++ = st++;
0122sage
NGNG↓
if (s1[0] < s1[2])
0123デフォルトの名無しさん
NGNGそれって展開される文字列はひとつ?
"0-9a-z"とかなることはないの?
ないなら・・・
char *expand(const char *s1, char *s2)
{
int i;
if(strlen(s1)!=3) return NULL;
if(s1[1]!='-') return NULL;
if(s1[0]>s1[2]) return NULL;
for(i=0;i<=s1[2]-s1[0];i++)
s2[i]=s1[0]+i;
/* s2[i]='\0'; */
return s2;
}
ループのたびに計算するところが実に無駄だな。変数名を考えるのが面倒なの。
それと文字コードがアルファベット順に並んでいる環境じゃないとだめだね。
0124日下部陽一
NGNG0125s/正規表現/を語ろう/e
NGNGs/騙(ら|り|る|れ|ろ)/語$1/;
別にperlじゃなくてもいいです。。
0126s/正規表現/を語ろう/e
NGNG0127デフォルトの名無しさん
NGNGchar* ppstr[]={
"いってよし",
"おまえもなー",
"ずざー",
}
という変数があるとします。
それを一単語ずつファイルに書き込みたいのです。
2ch.txt
いってよし
おまえもなー
ずざー
こんな感じなのですがどのようにすればいいか
どなたかご教授ください。
お願いします。
0128デフォルトの名無しさん
NGNGFILE *fp;
int i;
fp=fopen("./2ch.txt","w");
for(i=0;i<3;i++)
fprintf(ppstr[i],"%s\n",fp);
fclose(fp);
0129128
NGNG0130128
NGNGだよ(鬱
0131デフォルトの名無しさん
NGNG0132131
NGNG0133127
NGNG試してみます!
0134デフォルトの名無しさん
NGNGchar *expand(const char *s1, char *s2)
{
char *ret = s2;
for (int c=*s1++; c; c=*s1++) {
if (*s1 == '-') { // 次の文字が "-" のとき
if (! *++s1) { // "-" で終わっていたら
*s2++ = c; // "-" の前の文字だけ入れて
break; // 終わり
}
for (int i=c; i<=*s1; i++) // 範囲内の文字
*s2++ = i;
s1++; // "-" の次の文字スキップ
}
else
*s2++ = c; // そうでなければそのまま
}
*s2++ = '\0';
return ret;
}
s1 が "-" で始まる場合、s2 の先頭にそのまま "-" が入る。
s1 が "-" で終わる場合、s2 はその直前の文字で終わる。
0135デフォルトの名無しさん
NGNG俺は今、じゃんけんゲームを作成中(ショボ
0136デフォルトの名無しさん
NGNG誰か教えてください。
0137デフォルトの名無しさん
NGNG並列を配列に読み替えて・・・・
あんたCをなんだと思っているんだ?
reallocで似たようなことができるといえばできるけど。
0138デフォルトの名無しさん
NGNGだから、リストやツリーのロジックを教えてやったらいいんだろ
http://www.google.co.jp/search?hl=ja&ie=utf8&oe=utf8&q=%E5%8D%98%E6%96%B9%E5%90%91%E3%83%AA%E3%82%B9%E3%83%88&lr=
0139デフォルトの名無しさん
NGNGいわゆるVectorの実装はたいてい>>137の言うようにrealloc()だよ。
0141デフォルトの名無しさん
NGNG参考書のサンプルプログラムで
open(lock_file, O_RDWR | O_CREAT | O_EXCL, 0444);
のような文がでてきました。
最後のパーミッションの数値を調べたら"オーナーの読み込み許可:00400"のように
すべて5桁なのですが、このサンプルは4桁で書かれています。
最上位桁の0は省略できるのですか?
0142デフォルトの名無しさん
NGNG0143日下部陽一
NGNG0144デフォルトの名無しさん
NGNG????
>>141
0で始まる数字列は8進数、0xで始まる数字列は16進数
0145デフォルトの名無しさん
NGNGなるへそ。単に 0 と表記すると、8進数の0なのか。
さすがスーパーハイソサエティーハッカーだ。
0146デフォルトの名無しさん
NGNG0147146
NGNG0148デフォルトの名無しさん
NGNGつーことで、最上位の0は省略できないよん。
あと、パーミッションは man chmod すると分かるけど、
4桁まであるのだー。
0149デフォルトの名無しさん
NGNGって優香。プログラムの専門用語を検索できる、辞典サイトって
ありますか?
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG虚空。空虚。存在しないこと。無駄。無駄無駄。
無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄
無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄ぁあ!!!
0152デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGわざわざ辞典サイトなんか探さんでも、そのままgoogleで調べればいいだろ。
http://www.google.com/search?q=void+%82b%8C%BE%8C%EA+%88%D3%96%A1
つーか普通の英単語では? >void
http://jiten.www.infoseek.co.jp/Eigo?pg=result_e.html&col=EW&sm=1&qt=void&svx=100600
0155デフォルトの名無しさん
NGNGスタークルーザーってやったことないのか?
敵対組織の名前がvoidだよん。
名作なんだけどなぁ。
激しくスレ違いスマソ
0157デフォルトの名無しさん
NGNG空の集まりそれは空。
ああ悲しきreturn;
0158デフォルトの名無しさん
NGNG漏れ的には8進数よりよっぽど有用だと思うんだけど。
例えば 0b110011 みたいに。独自拡張してるコンパイラとかないんだろうか?
更に読みやすいように、0b1010_1100 みたいな表記ができるとなお便利だが。
0159デフォルトの名無しさん
NGNG#warn ←こんな感じでメッセージを出力してそのままコンパイルを続けるようなのってないですか?
0160デフォルトの名無しさん
NGNG英語ページは見つけたんですけど…
無ければ無いでそっち使いますけどね。
0161デフォルトの名無しさん
NGNGmenuってなーにー?
0162160
NGNGごめんなさい。
cursesを使ってターミナル画面で
メニューシステムを扱えると言うライブラリです。
(man menuより意訳。大雑把だけど)
0164デフォルトの名無しさん
NGNGそれよりも、printf系関数で数値を2進数字列にする機能がほしかった。
逆ならstrtolでできるんだけどな。
0165デフォルトの名無しさん
NGNGUnixが発祥の地ということで、例のクソファイルシステム関係で
8進数が導入されたんじゃ?
2進がないとは、アセンブラとは違うんじゃヴォケ って意思表示かと。
0166デフォルトの名無しさん
NGNG汎用的な方法はないと思われ。
とりあえずコンパイラのマニュアル見てみたら。
たとえばVCだったら #pragma message ってのでできる。
0167デフォルトの名無しさん
NGNGmalloc関数などで、メモリーを確保しますよね。
メモリーが確保された状態で、ALT+F4を押されて強制終了させられたら、
開放しない事になるのでしょうか(多分なると思いますが)。
もしそうならば、ウィンドウプロシージャの中にWM_DESTROYが送られてくるのでしょうか?
0168デフォルトの名無しさん
NGNG0169名無しさん@Emacs
NGNG0170デフォルトの名無しさん
NGNGしなさいったらしなさい。
0171デフォルトの名無しさん
NGNG普通は解放する。
mallocしたままプロセスが異常終了したとき、
OSにそのメモリを返さないライブラリを作ったり使ったりしても、
標準規格の中から外れているわけじゃないので可。
だが、よく考えてみれば分かることだが、
今時のOSでは、そんな屑ライブラリを使ってる可能性はない。
DOSやCP/Mの時代で、EMSとかDPMIを使ってメモリ確保するライブラリとか
作ってて、たまたまそれをmallocに流用してたとして、
CTRL+Cとかでプログラムが中断されたときにマップしたフレームをきちんと
返さない、という屑ライブラリはあったかもしれんがね。
0172_
NGNGhttp://www.bloodshed.net/ の、DevC++ってやつで事足りますか?
入門用のオススメソフトないですかね・・・
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG> Q. まずはC言語を覚えたいのですが、コンパイラは何を使えば良いでしょうか。
> A. 使っているOSによります。
> UNIX/Linux
> 標準でインストールされているgccを使いましょう。
Linuxでは、今は標準でインストールされねーぞ。
0175デフォルトの名無しさん
NGNGわるいことはいわないから、DigitalmarsかBorlandにしておけ。
0176デフォルトの名無しさん
NGNGWindowsなら cygwinでgccってのもアリかと。
0177デフォルトの名無しさん
NGNGここで突っ込む暇があったら追加・加筆したれよ(藁
0178デフォルトの名無しさん
NGNGおお、これWikiだったか。
0179デフォルトの名無しさん
NGNGウッ!
0180デフォルトの名無しさん
NGNG事足りるっつーか、それって結局コンパイラは gcc だし、何の問題も無し。
Cygwin 入れるのもかったるいだろうし。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGせめて
i=1;
と書くのはやめて、
i = 1;
と書いてください。
あと、プログラマは何故 "," と "." の区別が一瞬でつきますか?
0184デフォルトの名無しさん
NGNG文脈でわかるだろ
pi=3,14
foo(a.b.c,d,e.f)
とかね
0185デフォルトの名無しさん
NGNG俺もそう思ったけど、メンバーを参照するときに.を使うね。
0186デフォルトの名無しさん
NGNG区別が付くほど大きな文字サイズにしているから。
0187デフォルトの名無しさん
NGNGpi=3,14; は警告も出ずに動いてしまうと言う罠。
0188デフォルトの名無しさん
NGNGコンマの後ろには必ず空白を。
ピリオドの前後は空白を入れない。
0189デフォルトの名無しさん
NGNGlint機能搭載してるコンパイラなら警告出るはずだが
0190デフォルトの名無しさん
NGNGファイルサイズが増えるから嫌。
0191デフォルトの名無しさん
NGNGアクセス規制された?
電波が届かない、圏外?
0192デフォルトの名無しさん
NGNGいつの時代の人間だよ。
0193デフォルトの名無しさん
NGNG胃潰瘍で入院中です。
From: Kusakabe Youichi <[email protected]>
Newsgroups: japan.food,fj.sci.lang.japanese
Subject: Re: スローフード
Date: Sat, 02 Mar 2002 04:42:57 +0900
Organization: Macintosh User Group PLEIADES
Lines: 14
Message-ID: <02032002044a7c8669%[email protected]>
References: <[email protected]>
NNTP-Posting-Host: 202-238-200-042.ryukyu.ne.jp
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 8bit
NNTP-Posting-Date: 1 Mar 2002 19:42:56 GMT
User-Agent: YA-NewsWatcher/3.1.8
In article <[email protected]>, O.Ogiwara
<[email protected]> wrote:
> スローフード?
私は手術したので、しばらく食べられません。
ヘ_ヘ ____________________________
ミ・・ ミ [email protected]
( ° )〜 日下部陽一
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0194デフォルトの名無しさん
NGNGそれは入院中でも書けるということを意味してるような
0196デフォルトの名無しさん
NGNGある関数に入ってからのアセンブラレベルでの実行ステップ数を計測
したいんだけど現在ではgdbで関数頭でブレークしておいて
その関数を抜けるまで地道にsiを繰り返しています。
でもイマイチ効率が悪いのでもう少しいい方法を模索中です。
0197デフォルトの名無しさん
NGNGあそう。
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGプロファイルツールを使わないのは何か意味があるのか?
0201デフォルトの名無しさん
NGNGプロファイルツールって何ですか?
0202201
NGNGUnix系(Linuxです)で使える無料のものはないのでしょうか?
0204デフォルトの名無しさん
NGNGふーん、お前のところのLinuxって
man gprof
ってやっても何も出ないのか?
それって本当にLinuxなのか?
0205201
NGNG今はじめてしりました。
なかなか便利そうですね。
LinuxとかUnixとかだと、検索しても 見つからない というか、
単語名(キーワード)をしらないとどうしようもないですからね
機能逆引きページみたいなのも全く無いですし。
困ったものです。
0206デフォルトの名無しさん
NGNG普段からマニュアルに目を通しておけ。
全てを覚えるのではなく,どこにどんなことが
書いてあるかをおおざっぱに把握する程度で良い。
0207デフォルトの名無しさん
NGNG> 機能逆引きページみたいなのも全く無いですし。
man man
と打ち
-k オプションの部分を良く読むこと
0208デフォルトの名無しさん
NGNG0209201
NGNGステップ数を数えるツール をさがしてて、
「プロファイル」 という単語にたどり着かないじゃないですか。
結局>>206氏のとおり普段からマニュアルを読んどくしかないですけど。
man の -k オプションは役立たずです。
0210デフォルトの名無しさん
NGNG「プログラム 実行速度 計測 方法」で検索してみた。
http://www.google.com/search?q=%83v%83%8D%83O%83%89%83%80+%8E%C0%8Ds%91%AC%93x+%8Cv%91%AA+%95%FB%96@&hl=ja&lr=lang_ja
結構簡単にプロファイラにたどり着けそうな気がする。
0211デフォルトの名無しさん
NGNG> ステップ数を数えるツール
確かにそれだと別の物を探してしまうし、
多分それだけのキーワードで質問したら
永遠にgprofは出てこなかっただろう。
検索キーワードの指定方法は結構難しい
私が初心者の頃、一般的なキーワードを指定してしまい、
何千件の一致結果にげんなりしてしまったことがあったり、
自分言葉を検索キーワードにしてしまい全然ヒットしないことがあった
今はの私はキーワードをいろいろ変えながらうまくクズ情報にフィルタをかけたり、
検索エンジンをいろいろ変えたりして何とか
検索エンジンを使いこなしているつもりになっているが、まだまだ先は長い。
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGLOCAL void hankaku(int resu)
{
return;
};
この場合、プロトタイプ宣言も
LOCAL void hankaku(int resu);
とするのでしょうか?
0215デフォルトの名無しさん
NGNGlocalなんてあったか?
staticとexternなら知っているが。
0216デフォルトの名無しさん
NGNGプロトタイプ宣言なんてする奴はいねーよ!
0217デフォルトの名無しさん
NGNGvoid func1(){ … }
void func2(){ … }
ってなソースで func1 から func2呼び出せませんが 何か?
0218デフォルトの名無しさん
NGNGGLOBALの時だけ、宣言するのですか?
0219デフォルトの名無しさん
NGNGうーん?
でも実際にプロトタイプ宣言していないものがほとんどだよね?
0220デフォルトの名無しさん
NGNGLOCALだとかGLOBALだとか一体なんの話をしているんだ?
0221monosiri
NGNGグローバル関数
0222デフォルトの名無しさん
NGNG他のファイルから見えるか見えないかってことか?
それはstaticとexternだろ?
0223デフォルトの名無しさん
NGNG普通はヘッダファイルでプロトタイプ宣言してるからでしょ。
0224デフォルトの名無しさん
NGNGそのなかにもないし。
標準ライブラリくらいでしかみたことない。
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGネタか? マジで入門者レベルなのか?
とりあえず相手にしないほうが良さそうだなぁ…
0227214
NGNGLOCAL Sint16 e1_pl_search_bak = 0;
GLOBAL Sint16 e1_pl_search(Float32 x, Float32 y)
{
・・・・・・・・・・・・・
}
てな感じで、書いてあったんです。
0228デフォルトの名無しさん
NGNGいや、俺はしているんだが・・・・
でもApacheとかゆうめいなソフトのソースを見るとないから迷っている。
俺が見落としているだけ?
0229デフォルトの名無しさん
NGNG> みんなはプロトタイプ宣言をしているの?
1つのファイルのみでプログラムが構成されていて、
main関数を一番最後に書く場合、プロトタイプ宣言はしない。
が、そんなプログラムはあまり書かない。
0230214
NGNG#define GLOBAL // 外部参照
#define LOCAL static // 内部参照
ってなことが書いてありました。
・・・・・・・・
0231デフォルトの名無しさん
NGNGそうか。ありがとう。
じゃあこのままプロトタイプ宣言をし続けていいんですね・・・
正直迷っていたんで助かりました。
0232デフォルトの名無しさん
NGNGプロトタイプ宣言でやってみてエラーになったらやめれば?
0233デフォルトの名無しさん
NGNG#define MAX 5 /* これ以後の MAX を 5 に読み替える命令 */
main()
{
int i;
int point[MAX]; /* MAX 個の要素を持つ配列 point を宣言 */
int total=0, avr; /* ★★★★★*/
for(i=0; i<MAX; i++){ /* MAX 回の繰り返し */
printf("%d人目の点数は? >", i+1);
scanf("%d", &point[i]);
/* 配列の場合でも & を忘れずに付ける */
}
for(i=0; i<MAX; i++){
printf("%d人目 = %d\n", i+1, point[i]);
total += point[i];
}
avr = total / MAX;
printf("平均点 = %d\n", avr);
}
超初心者です。 上の五つ星のところの int total=0 のところの
「 =0 」を消して、実行すると、totalの結果がおかしくなります。
どうしてなんでしょうか? よろしくお願いしますm(__)m
0234近頃物忘れが激しい35歳
NGNG関数その1
void mycopy(char *d,char *s,int n)
{
while((*s !='\0')&&(n > 0)){
*d++ = *s++;
n--;
}
*d = '\0';
}
と書くとsの文字はdにコピーできますね。では
関数その2
void mystradv(char *s,int d)
{
while((*s !='\0')&&(d > 0)){
*s++;
d--;
}
}
のと書くと、何か期待通りに動作しません。
期待っちゆうのは
int main()
{
char x[20+1];
char y[20+1];
memset(x,'\0',sizeof(x));
memset(y,'\0',sizeof(y));
strcpy(x,"0123456789");
mystradv(x,3);//関数その2
mycopy(y,x,10);//関数その1
printf("x=%s y=%s\n",x,y);
return 0;
}
結果 0123456789
期待 3456789
関数の引数に(char *s)を使っているのに何故なんでしょうか?
宜しくお願いします。
0235デフォルトの名無しさん
NGNGコンパイル時に警告がでないか?
0236デフォルトの名無しさん
NGNGローカルで宣言した変数は内容が0に初期化される保証はない
0237近頃物忘れが激しい35歳
NGNGごめんなさい。ちょっと訂正
main()
{
略
× printf("x=%s y=%s\n",x,y);
○ printf("y=%s\n",y);
どうぞ宜しく
0238デフォルトの名無しさん
NGNGstaticなら0に初期化されますがなにか?
0239デフォルトの名無しさん
NGNGvoid mystradv(char**s, intd)
じゃない?
配列を渡すと変なことになるけど
0240デフォルトの名無しさん
NGNGローカルに宣言した自動変数は0に初期化される保証はない。
これでどうだ
0241デフォルトの名無しさん
NGNGOK!
というか普通はコンパイラが警告を出してくれるよな。どんなの使っているんだろうね。
0242近頃物忘れが激しい35歳
NGNG*sをs[2]を指すようにしたいんですがな。
ん−−−
0243デフォルトの名無しさん
NGNGCがいちばん経んかが少ない空な.単に経んかについていけなかっただけでは.LOL!
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGよく考えてみろよ。
char*s だと、s[0]へのポインタがコピー渡しされるわけだから、
そのポインタを書き換えることは不可能。
ポインタを書き換えたいならポインタへのポインタを渡せ
0246233
NGNGレス速いですね。 みなさん、ありがとうございます。
自動変数って
int total = 0 , avr; (>>233の五つ星のとこ)
の「 avr 」もそうだと思うのですが、とりあえず結果がおかしければ
変数をゼロにしてて、いいのかな? 「 avr=0 」にしても、しなくても
結果は同じでした。
て優香。あまりわかってないので、逝ってきます。
ありがとうございました。
0247デフォルトの名無しさん
NGNGavrは初期化する前に参照していないから。
0248プリオンが溜まりつつある35歳
NGNGお返事ありがとう。でもね・・・
関数その1
void mycopy(char *d,char *s,int n)
{
while((*s !='\0')&&(n > 0)){
*d++ = *s++;
n--;
}
*d = '\0';
}
コピー渡しの*d *sのはずなのに、なんで
コピーできるのだろうかね?
宜しくお願いします。
0250デフォルトの名無しさん
NGNGmycopyでコピーが出来ているのは、
s[0]へのポインタがコピーされているので、
ポインタは別物でも、ポインタが差す先は同じもの
実体と参照について調べてみよう
0251プリオンが溜まりつつある35歳
NGNG>>250さん、どうもありがとう。
勉強してみます。
0252デフォルトの名無しさん
NGNG#define "あぼーん" 1
てな感じで日本語使えたよね?
エラーが出るんだがどう書いたらいいか教えてください。
使用しているコンパイラはVisualC++6.0です。
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG日本語はもとより、"←これも使えないぞ。
0256デフォルトの名無しさん
NGNGあのさ、
*s++
ってさ、
*(s++)
ってことだよな。
こういう書き方は混乱するから単に
s++
でいいと思うが。(細かいトコだけど)
0257デフォルトの名無しさん
NGNGイディオムだからいいじゃねーか
0258256
NGNG*d++=*s++;
の方がが一行で済ませられるな。
良く見てなかった。
氏かも256だと言うのに気づかなかった。
頚釣って夷狄益…
0259ビル・ジョブス
NGNGそれじゃ値を代入できないから目的を達成できませんが・・・プ
そして混乱するのは君だけの問題であって、プロにとっては普通というか、
*s++って書いてくれないと読みにくいよ。モットベンキョウシテネ
0260名無しさん@Emacs
NGNG{
while ((*s != '\0') && (d > 0)) {
s++;
d--;
}
return s;
}
じゃだめなの?
はずしてたら剥げしくごめん。
0261プリオンが溜まりつつある35歳
NGNGただ、同じchar *sを引数で取るのに、
「コピーはできるのに配列先頭へのポインタずらしができないのは何故」
と思った次第です。自分の、char * に対する認識がおかしいのかと思ったり
しました。
0262プリオンが溜まりつつある35歳
NGNG間違って覚えていたのですかね。今更、COBOLに戻るつもりはないし、
気になっただけです。
strncpy(dest,mystradv(src,3),4);
とか、使う分には申し分ないから、こういうものだと割り切って
覚えていいんですかね。(爆)
0263デフォルトの名無しさん
NGNGポインタをずらしたい = ポインタを書き換えなければいけない
ポインタを書き換えるのに、ポインタのコピー渡しをしたら
いくら書き換えてもコピーが書き換えられるだけで元のポインタには一切影響がないから
0264デフォルトの名無しさん
NGNGそれじゃstrncpy(dest,src+3,4);でいいじゃねーか
0265デフォルトの名無しさん
NGNGCの関数引数はすべて値渡しだ。
参照渡しはいっさいできない。
値を更新するつもりで関数に渡すときは、値のポインタ(アドレス)を値渡しする。
関数は渡されたポインタを足したりひいたりしても、呼び出し元のポインタは更新されない。
でも、だが、しかし、
渡されたポインタ(アドレス)を使って、ポインタの指し示す先を更新することができる。
OK?
では次に、
Cには文字列を扱う型はない。
文字を扱う型もないが、かわりにcharという整数型に文字コードをつっこむことにしている。
文字列を使いたいときは char の配列を作って、そこの中に一文字ずつ分けて入れる。
長さがわからなくなるので、文字列の末尾には 0 を入れる。
OK?
で、文字列を関数に渡したい場合、配列の先頭アドレス(ポインタ)を渡す。
strcpy(char *dst, const char *src)
は、 dst に格納先のchar配列の先頭アドレスを渡す。
srcにはコピー元のchar配列の先頭アドレスを渡す。
strcpy(p, "aaaa");
とやったとき、strcpyの中では
while(*p) { *p = *src; p++; src++; }
みたいなことをやっているが、 p や src そのものは値渡しされたポインタなので、
呼び出し元の p や "aaaa" は更新されない。
でも、 p で渡した char 配列の中身は書き換えられる。
OK?
0266デフォルトの名無しさん
NGNG0267それじゃプリオンが溜まりつつある35歳@バカ丸出しで質問するぜ
NGNGポインタのコピー説って本当なの?
だからmycopyの例を書いたんですが、
なんで
void mycopy(char *d,char *s,int n)
{
while((*s !='\0')&&(n > 0)){
*d++ = *s++;
n--;
}
*d = '\0';
}
でコピーなはずの*dにコピーができるのか理解不能なのだが。
0268デフォルトの名無しさん
NGNG引数そのものを編集しても、呼び出し元にいっさい影響はない。
0269デフォルトの名無しさん
NGNG0270プリオンが溜まりつつある35歳@src+3はきらいなんだが
NGNG投稿した後に立派な答えをありがとうございます。
しばし熟読してみますね。
0271デフォルトの名無しさん
NGNG関数にポインタを渡して、そのポインタをずらしてもらいたいときは、
戻り値で更新したポインタ値を返すか、
ポインタのアドレス、つまりポインタのポインタを渡して、
ポインタの指しているポインタ変数を更新するのだ。
char *mystradv(char *p, int n)
{
while (n > 0)
{
p++; n--;
}
return p;
/* もしくは return p + n; */
}
呼び出し元
p = mystradv(p, 3)
それか
mystradv(char **pp, int n)
{
while (n > 0)
{
(*pp)++; n--;
}
/* もしくは *pp += n; */
}
呼び出し元
mystradv(&p, 3)
0272デフォルトの名無しさん
NGNGどういうことか想像もつかなかったんだが
こういうふうに引っかかるわけね。
0273デフォルトの名無しさん
NGNG{
for(;*s&&n>0;d++,s++,n--)
*d = *s;
*d = '\0';
}
0274デフォルトの名無しさん
NGNGbasicのように基本的に参照渡しな言語が入門用といわれてるのが原因か?
話かっちまえば、別にたいしたことない。
0275初心者@独学
NGNG{ /* 文字配列sからパターン文字列pを全て除去する関数 */
int i,l = strlen(p);
for(i = l;*s != '\0';i = l)
if(*s==*p && !strncmp(s,p,l))
while(i--)
*s++ = '・';
else
s++;
}
除去した所は'・'で潰される関数です。
何かだめなところあるでしょうか?
あれば思いっきり突っ込んでやってください。
超絶な先生様方、おながいしますm(T▽T)m
0276デフォルトの名無しさん
NGNG0277初心者@独学
NGNG関数名は忘れてください。
0278デフォルトの名無しさん
NGNG出てきますが、なじみがない表現なので違和感があります。
わかりやすく言い換えると、どういう表現がいいのですか?
0279デフォルトの名無しさん
NGNGとりあえず、strstrでまわしたほうがすっきりせん?
あと、iに長さをセットするタイミングが奇妙。
void f(char *s, const char *p)
{
int l = strlen(p);
while ( (s = strstr(s, p)) != NULL ) {
memset( s, '・', l );
s += l;
}
}
0280デフォルトの名無しさん
NGNG{
int i, l = strlen(p);
while (*s) {
if (*s == *p && !strncmp(s,p,l)) {
for (i = 0; i < l; ++i)
*s++ = '・';
}
else {
s++;
}
}
}
でいいだろ
だが、 pの文字列長が0でもたまたま動くし。
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG0283初心者@独学
NGNG>>279様
strstr()とmemset()がわからないのでK&R読み返してみます。
見た感じ凄いスマートで見やすいっすね!
>>280様
ありがとうございます、試してみます!
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNGNULLと0は同義だ。
変なCPUがあったとして、アセンブラ上とかで不正なポインタ(つまりNULL)に0以外のアドレス
0xa0000000 みたいなのを割り当ててたとしても、C言語上ではNULLポインタは常に 0 と等価だ。
0286デフォルトの名無しさん
NGNG一度手繰ってみると面白いよ。
ちなみにうちでは ((void*)0) だった。
0287デフォルトの名無しさん
NGNGうーん、逆に聞きたいのですが、
「アメリカの独立宣言」の「宣言」を、わかりやすく
言い換えると、どういう表現がいいですか?
0288デフォルトの名無しさん
NGNG漏れの感覚だと、NULLはint型じゃなくて、ポインタ型なんだよなぁ。
つまり、>>286がしっくりくる。
0290?
NGNG何か良い方法はないですか?
0291デフォルトの名無しさん
NGNGランダムな文字列で上書きしてから削除してください
0292デフォルトの名無しさん
NGNGどうせ最後に削除するんだから、書かずに消しちゃえばいいだろ。
0293デフォルトの名無しさん
NGNGするにはどうしたらいいんでしょうか?
VC++6.0スタンダードなんですが、そういうのはC++で書かないとできないんでしょうか?
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGdllで作ってRunDll使って起動させるのは?
0296デフォルトの名無しさん
NGNGなるへそ…
てーか、漏れは放置して293に回答解説してやって。
何かだるくて面倒だ。
0297デフォルトの名無しさん
NGNGファイル消したって、中身は消えてないのになぁ。
0298デフォルトの名無しさん
NGNGビルドしたならEXEファイルができてるんじゃないのさ。
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG>>1のリンク先を読んだ事はありますか?
0302NULL
NGNG0303プリオンが溜まりつつある35歳@src+3はきらいなんだが
NGNG皆さんがいなければ、膨大な調査時間を過ごすところでした。
これからも宜しくお願いいたします。
0304デフォルトの名無しさん
NGNG迷惑な奴
0305デフォルトの名無しさん
NGNGこの章は読んでて面白い。
ちょっと誤解してた。
反省。
0306デフォルトの名無しさん
NGNG文字列をファイルから読み込むとかって
どうすればいいのですか?
0307デフォルトの名無しさん
NGNG日本語に対応してるOSだったら、標準入出力で日本語読み書き出来ると思うが?
文字単位で扱いたいなら、マルチバイト扱える関数に置き換える必要は有るけど。
具体的に今何が問題で、最終的に何がしたいのか、差し支えない範囲でも書けや。
0308デフォルトの名無しさん
NGNGファイル上書きしたって、元のクラスタに書かれるとは限らないのに。
0309デフォルトの名無しさん
NGNGFILE *fp = fopen("糞レス.txt","rb");
while((c = fgec(fp))!=EOF)
fputc(c,stdout);
fclose(fp);
0310デフォルトの名無しさん
NGNG自分ライブラリを充実させてる?
ええ、そのくらいの心構えは必要よ。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGバカはお前だ
r+で開いて上書きしてもいいし、メモリマッピングで書いてもいい
0314?
NGNG>>313さんの意見も考えたのですが、
r+で開いて上書きした場合、HDDのクラスタは
全開記録してあった同じ場所に書かれるんでしょうか?
いったん消したファイルを二度と復元できないように
したいと思ってます。皆様、力を貸してください。
宜しくお願いします。
0315?
NGNG× 全開
○ 前回
0316デフォルトの名無しさん
NGNGみんな急げ!
0317デフォルトの名無しさん
NGNGC言語としては何の規定もない。上書きされるかもしれないし別の場所に書き込まれるかもしれない。OSのファイルシステムドライバの動作に依る。
0318名無しさん@Emacs
NGNGの「オプション指定の解析のコード」のところに、
while (*(++s + 1))
;
とあるんですが、意味が分かりません。これは何をしているところですか?
例えば引数で -w12345 と渡した場合、この部分に来たときは s は w の位置
を指しているんですが、このループを抜けた後に s は 5 の後の '\0' を指す
のでしょうか? でも引数が -w120345 のような場合、途中に 0 があるとそこ
で止まってしまう気がするし。
0319デフォルトの名無しさん
NGNG1, ファイルを削除
2. そのドライブが一杯になるまでランダムな内容のファイルを生成
char code;
while (code = (char)rand(), fwrite(&code, 1, 1, fp)) ;
3. 生成したファイルも削除
かなり無茶かも知れないけど,これってどうですか?
つまり >>299 さんの方法と同じような物(っすよね?)なんだけど。
0320デフォルトの名無しさん
NGNGつまり '0' と '\0' の違いが判らない、と?
0321318
NGNG/* オプション指定の解析のコード */
while (--argc > 0 && **++argv == '-') {
for (s = *argv + 1; *s != '\0'; s++) {
switch (*s) {
case 'w':
if (alldigit(s + 1) == NO)
usage(); /* no return */
width = atoi(s + 1);
while (*(++s + 1))
;
break;
default:
usage(); /* no return */
}
}
}
0322318
NGNGその違いは分かっているつもりですが...
>>321 は -w[数字] という引数を処理するところなのですが、
while の部分はなくてもいいような気がするんですよね。というか何をしてい
るのかが分かっていないだけですが...
0323デフォルトの名無しさん
NGNGwhile( (++s)[1] )
と同じだよん。ループを抜けたあと、sは"5"のアドレスを
指してる。あと、"-w120345" は
2d 77 31 32 30 33 34 35 00
なので、'0' == 0x30 だよん。
0324デフォルトの名無しさん
NGNGcase 'w':
if (alldigit(s + 1) == NO)
usage(); /* no return */
width = atoi(s + 1);
while (*(++s + 1))
;//この位置には widthを求める処理が入ってたと思われ。
break;
っつーわけで、widthを求める処理を atoi に置き換えた後
削除するのを忘れた、とか そんな感じだと思う。
0325デフォルトの名無しさん
NGNG勉強できる定番サイトがあれば、教えてください。
0326デフォルトの名無しさん
NGNG0328318
NGNGなるほど、やっぱり '0' と '\0' が分かってなかったかもしれませんね。
>>324
そうですか。ということは while の部分では何もしてないんですか。
まだよく分かってないのでもうちょっと考えてきます。
0330デフォルトの名無しさん
NGNGぬるい。
ぬるい。
ぬるい。
そのプログラム実行中に別プロセスがファイルを新規に作成して、
中身を書かずにファイルサイズのみを拡張した場合、以前書き込んだ内容が
保持される可能性がある。
かつ、その場合、>>319のプログラムではデータを書きつぶすことはできない。
それに、その方法でどんなに必死こいてつぶそうと思っても、スワップファイル
が作成されていればその中に糞データが残っている可能性があるからな。
どうしても消したければ物理的に破壊するか、ドライブの中身を
磁気的にクリアしてくれるツールを使え。
0331デフォルトの名無しさん
NGNG初心者向け(だよね?)のコードにしては読みづらいね。
その本って評判いいの?
0332デフォルトの名無しさん
NGNG日下部 陽一
技術評論社
ISBN:477411328X
だそうです。著者名から推して知るべし、なのかも
0333デフォルトの名無しさん
NGNG0334318
NGNGでも何のためにこういう書き方なのかがちょっと分からない。
-w[数字] 以外のオプションを加えるときに必要になるのかな。
>>327さんのおっしゃっている、フラグを立てるとか strlen() を使う場合ど
うなるかを教えてもらったらすっきり分かる気がするのですが。
どなたか暇な方いらっしゃったらお願いします。
0335318
NGNG>>332さんがおっしゃるように著者の評判は 2ch ではよくないようですね。
コードも難しめですが僕には読みごたえがあっておもしろいです。
>>1で薦められているので本自体の評判はいいのかなと思ったのですが。
0336デフォルトの名無しさん
NGNGまあ買っちゃったものは仕方がないので
読み終えたらK&Rで口直しして
実用コード書くときはそのコード忘れてgetopt使えば問題ないよ。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/getopt.3.html
0337323
NGNGではでは、先のソースで、case 'w': でwidthをatoi()で取得した直後、
switchの外側のforループを抜けなければいけないとき、あなたならどう書きますか?
0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNGprogram -a123b456
program -a123 -b456
の両方が同じように解釈される
コマンドライン引数の解析を作り
たかったみたいだけど、
case以下の部分を見るに
○ program -a123 -b456
× program -a123b456
のような書き方になってるので、
どっちかに統一するのが良いのでは?
/* オプション指定の解析のコード 片方だけ */
while (--argc > 0 && **++argv == '-') {
s = *argv + 1;
switch (*s) {
case 'w':
if (alldigit(s + 1) == NO)
usage(); /* no return */
width = atoi(s + 1);
break;
default:
usage(); /* no return */
}
}
/* オプション指定の解析のコード 両方OK */
while (--argc > 0 && **++argv == '-') {
s = *argv + 1;
end = s + strlen(s);
while(s < end) {
switch (*s) {
case 'w':
s++;
if( isdigit( *s ) )
usage(); /* no return */
else
do{
width = width * 10 + ( *s - '0' );
}while( isdigit( *(++s) ) );
break;
default:
usage(); /* no return */
}
}
}
0341デフォルトの名無しさん
NGNGは
if( !isdigit( *s ) )
だな… 他にも間違ってそうな 鬱だ…
0342デフォルトの名無しさん
NGNGあっさり捨てて書き直せ。
0343デフォルトの名無しさん
NGNG意味がわからないのですが、猿でもわかる説明のできる方
よろしければ、教えてください。
0344デフォルトの名無しさん
NGNGこの板にオブジェクト指向のスレがいっぱいあるので、どこがいいのか
わかんないけど、そちらへどうぞ。
0345318
NGNG確かに strlen() じゃないと for ループ抜けられないですね。ちょっと考え
ていたんですがうまく動きませんでした。まだまだですね。
単純に s += strlen(++s); と入れてみたのですが。でもとにかく意味は分か
りました。ありがとうございます。
>>338 そうですね。for 文なくてもいけそうですね。
でも>>336さんがおっしゃるように getopt() というのを使うのが一番いいよ
うですね。あとで調べてみます。
>>342
糞コードは糞コードでも意味が分からないと気になったもので。反面教師とい
う意味で勉強になりました(w
これ以上続けると荒れそうな雰囲気(?)なのであとは自分で勉強してきます。
みなさんありがとうございました。
0347デフォルトの名無しさん
NGNGunsigned short (うちの環境では16bit) 型の変数を
signed int に変換したいのです。
何も問題なさそうなのですが、ひとつ大問題があったのです。
unsigned short の中身は *本当は符号付き* だったのです。
signed short に入れてから signed int に入れなおすより簡単で
実行時効率もいい解決方法はありますか?
0348デフォルトの名無しさん
NGNGunsigned short us;
signed int si;
si = (signed int)(signed short)us;
signed shortからsigned intへの符号拡張は自動的にやってくれるので
si = (signed short)us;
アセンブラに落として見りゃあわかるけど、何十万回も繰り返すんじゃない限り
実行効率は大してかわらん。
0349デフォルトの名無しさん
NGNGunion _danger {
unsigned short us;
signed short ss;
};
に入れてみるという危険なかけをしてみる気はないかい?
なんとなくうまくいくようなきがする。
0350デフォルトの名無しさん
NGNGsi = *(signed short *)&si;
と比べての話だ。
usがレジスタにマップされているとアドレス演算子が使えなくなるので、
348の方が若干速くなる可能性はあるな。
0351デフォルトの名無しさん
NGNG可読性もがた落ち。
キャストしなさい。
0353347
NGNGできました。ありがとうございました。
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNG呼ばれた側では、関数に渡されたパラメータのコピーを受け取ります。これを引数といいます。
変数は、関数とかそういうの関係無しに、データを格納しておく場所に名前を付けたもののことを言います。
データには様々な種類がありますが、たとえば
int a;
なら、 a はint型のデータを格納する変数。
int *pa;
なら、paはint型を指すポインタを格納する変数。
ということになります。
関数引数は、基本的に、すべて変数で受け取ります。
int func(int a, int b);
の場合、
第一引数を a という int を格納する変数で受け取ります。
第二引数を b という int を格納する変数で受け取ります。
このほかに可変長引数というのがありますが、
貴様にはまだ早いので割愛させていただきます。
0357デフォルトの名無しさん
NGNGネタ質じゃなかったのか?
0358デフォルトの名無しさん
NGNGればこの関数を呼ぶことができるか。
A:一番単純な方法は、関数の名前と関数へのポインターの対応表を用
することである。
int func(), anotherfunc();
struct { char *name; int (*funcptr)(); } symtab[] = {
"func", func,
"anotherfunc", anotherfunc,};
そうして名前を求めてテーブルを探し、名前に対応する関数へのポイン
ターを使って関数を起動すればよい。
C FAQ 日本語訳の20その他にあった質問ですが
このあとどのようにすれば関数を呼べるでしょうか?
0359デフォルトの名無しさん
NGNGCでCGI作るってサイトには% gcc -o hello-world.cgi hello-world.cでコンパイラするって書いてあるけど、自動でコンパイラするのでできません。
Cの質問って言うかBuildeの使い方の質問かもしてないけど・・・
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNG(*symtab[0].funcptrX)();
かねぇ?
0363デフォルトの名無しさん
NGNGパールで作れ
0364デフォルトの名無しさん
NGNG自動でコンパイラする
…
>>359はローカル(win)でコンパイルしたバイナリを
web鯖(unix系)で動かそうとしてるとか。
多分ソースをうpしてからtelnetでログインして
gcc でコンパイルって話なんだろう。ホントは。
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGhttp://tohoho.wakusei.ne.jp/lng/199910/99100377.htm
こういう事か?
0367359
NGNGできました、ありがとうございました。
説明不足の上に勉強不足でした。
吊って来ます。
0368デフォルトの名無しさん
NGNGどうもこうもない。
ソースプログラムを書いてコンパイル。ウェブサーバーを立ち上げてからブラウザでアクセス。
ただし、最低限必要なヘッダーを出力しないとエラーになる。
0369デフォルトの名無しさん
NGNGヴァーカ
0370ビル・ジョブス
NGNGさー知らないやつは勉強勉強!
0371デフォルトの名無しさん
NGNGはいはい、知らなかった事を知って嬉しいのは分かったから。
厨はおとなしく飯食って寝てろ。
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGというか、そういうの昔書いたような。
あれってもしかして金になるコードだったのか?
0375デフォルトの名無しさん
NGNG?????
0376デフォルトの名無しさん
NGNG0377?
NGNG>>376の言うとおり、
セキュリティが騒がれている今は金になりますね。
かくいう私もDOS版でFDDを上書きして消去は作って持ってるんです。
NT環境だとファイルの構成情報をコワしてしまい使い物にならなくて
悩みまくってます。
ホントに、なにかうまい手はないですか?
0378デフォルトの名無しさん
NGNGファイルシュレッダーっていうソフトなかったっけ?
それから、環境がないから分からない。
WinNTだったらメモリマッピングを使うなら物理的に同じ位置に書き込まれる。
使い終わったディスクのデータを消去したいだけ(ディスク全体)なら簡単に作れる。
ってか、そういうアプリケーションも売ってる
0379?
NGNGファイルシュレッダーではなくディスクシュレッダーと記憶してます。
このソフトはディスクのデータすべてを上書き消去するんです、確か。
すべてを消去されると、再セットアップするのが面倒なので、
「なければ作ってしまえ」
という発想だったんです。DOSの頃はセクタ単位でファイルをいじれた(アセンブラでしたけど)
んですけど、Windowsになってからは、、、(泣
0380デフォルトの名無しさん
NGNG0381ビル・ジョブス
NGNG「ばーか」とはなんだ!
代入時に暗黙の型変換を適用しないというとても便利な演算子だぞ!
頭きた!おまえの会社調べて絶対にクビにしてやる。サヨナラ
0383デフォルトの名無しさん
NGNG俺は学生だよばーか
0385デフォルトの名無しさん
NGNG餌付けしてもいいじゃねーかよばーか
0386デフォルトの名無しさん
NGNGint a = +1.1;
int b = 1.1;
どちらも暗黙の型変換が適用されて1が入るんだけど
0387デフォルトの名無しさん
NGNGポインタにってことじゃないか?
char*a=+0;
0389デフォルトの名無しさん
NGNG奴の妄想につき合うこたぁないよ。
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG0392ビル・ジョブス
NGNGchar c = -1;
int i,j;
i = c; //i == -1 符号拡張される
j = +c; //j == 255 符号拡張されない
>>372
あーそーか、おれが悪かったよ。
でも「ばーか」は止めとけよ君自身に言ってるみたいだから。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGおいおい。
それは - を単項で使うのと同じく正数であるということを
明示してるわけでしょ。
それって>>381の言い方じゃ伝わらないよ。
用語はただしく使ってくれない?
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG致命的な誤解を生むことが結構あるので
なるべくそういう表記は避けるのが通例。
大抵の場合、そんな書き方しなくてもかけるし
しないほうがいい場合の方が多いし
0398デフォルトの名無しさん
NGNGどちらかというと、「拡張」もしてないよね。
0399デフォルトの名無しさん
NGNG0400400!
NGNG0401デフォルトの名無しさん
NGNGときに必要は発生するとおもうよ。
主に処理速度が要求されるときとか
もっと変なことしたいときとか
0402デフォルトの名無しさん
NGNGこいつ複数人のプロジェクトやったことなさそうだな...
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGなお、実際に>>392のiとjを表示させたところ、
LSI Cでは両方255、BCCでは両方-1でした。
LSI Cのcharはunsigned、BCCのcharはsignedです。
0405デフォルトの名無しさん
NGNG知識としては抑えておかないとだめな範囲。
「読めるし書けるけど書かない」というコードの典型例かと。
0406デフォルトの名無しさん
NGNG晒しあげ
0407デフォルトの名無しさん
NGNGmain()
{
int i, j;
char c = -1;
i = c; j = +c;
printf("i = %d\nj = %d", i, j);
}
gcc/bcc/msvc 共に出力結果は
i = -1
j = -1
>>405抑えておかないとダメですか?
明らかに誤りですが。
このスレも実は知ったかが多いのか?
0408デフォルトの名無しさん
NGNGたんに自分で追試するココロが失われているだけでわ?
0409デフォルトの名無しさん
NGNG奴がまともなレス付けてるの見たことないよ。
0410ハンチク
NGNG>単項+演算子
すまん。現役PGのくせになんのことか理解できんかった(w
しかし、うちじゃ数値型として char は滅多に使わないぞ。
たまに使っても unsigned が普通・・
胃の中の蛙だったのかな〜(汗
0411デフォルトの名無しさん
NGNGfprintf(stderr, "--more--", stderr);
こんなのがあったんですけど、後ろの stderr はどういうこと?
普通にコンパイルもできて、エラーにはならないんだけど。
間違いかなと思って web で正誤表見たんだけどその部分の訂正はなかった。
0412デフォルトの名無しさん
NGNG後ろの stderr は消し忘れだろうに1票。
gcc で -Wall を付けてコンパイルすると warning を出してくれるぞ。
0414デフォルトの名無しさん
NGNGなんて本よ?
0415デフォルトの名無しさん
NGNGなんですが、上でも書いたアヒル本です。
>>332の本ですね。
ちなみにサンプルコードの page2.c にありました。
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNGコンパイル時にも実行時にもエラーが出なければ文脈上の誤りがあってもかまわないという見本です。
0418411
NGNG簡単なエディタの作り方が載っていたんですが、その仕様がヘボヘボで...
アヒルさんの本は結構いいなぁとか思いながら読んでたんですが...
だめプログラマ街道まっしぐらですか?もしかして(w
0419デフォルトの名無しさん
NGNGなんて本よ?
0420デフォルトの名無しさん
NGNG>>415 読め
0421419
NGNGアヒル本の前に読んだ本はなにかと聞いているんだ。
日本語大丈夫か?
0422411
NGNGアヒルさんの前は
http://www.ai-pub.co.jp/contents/book/prog/linux_c.html
これです。
これも読んでて分からなかったところとか最近 2ch で質問しにきたんですけ
ど。誤植も多いし、たぶんアヒルさんのより変なコードが多いと思います。
0423デフォルトの名無しさん
NGNGそのへん人間はうまく出来ているものだ。
だめ本読んだからって、だめプログラマになることはないだろう。
0424デフォルトの名無しさん
NGNGファイルの終端部分だけを削除したいのですが、
対象ファイルが巨大で効率の良い方法が無いかと悩んでいます。
・メモリ上に展開する事は出来ません。
・テンポラリファイルは作りたくない。
Appendの逆のようなことは可能でしょうか?
0425デフォルトの名無しさん
NGNGC言語の知識は音感と違って生まれつき備わってるようなものではない
0426デフォルトの名無しさん
NGNG移植性のある方法は思い付かないが
たいていの処理系にはchsize()か_chsize()という関数があると思われ
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNGtruncateすれ。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG「ここを説明してほいのに〜!」と、思うことがあります。
プログラムの説明で、うざいほどコメントで解説しているサイトが
あったら教えてください。
0431デフォルトの名無しさん
NGNGない。
この板で教えて君になれ。
0432デフォルトの名無しさん
NGNG鬱だ...
0433デフォルトの名無しさん
NGNG皆様ありがとうございました。
Cの標準的機能では出来ないと言う事ですね。
紹介された関数を使うことにいたします。
0434デフォルトの名無しさん
NGNGどうでもいいけど。
0435デフォルトの名無しさん
NGNGと
main()
はどう違うのでしょうか?
0436デフォルトの名無しさん
NGNGちなみにvoid mainなどとかくのはDQNだけです。
0437デフォルトの名無しさん
NGNGは
int main(void)
と等価だろう。
0438435
NGNGと
void main(void)
は等価ではないのですか?
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG閉鎖的ともDQNとも言われようと甘んじて受け入れよう。
あるったら、あるのだ。
0441デフォルトの名無しさん
NGNG>戻り値がちがいます。
0442デフォルトの名無しさん
NGNGvoidとintの違いが分からないのか?
>>440
普通に考えれば「void mainしか許していない処理系を除いて
void mainとかくのはDQN」という意味だろう。
一般的な処理系でvoid mainと書くのは受け入れられません。
0443デフォルトの名無しさん
NGNG何ていう処理系よ?
0445デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGreturn(1);
や
return 0;
が出てきますが、これらはどこに0や1を返してるのですか?
0449デフォルトの名無しさん
NGNGうむ、プログラミング初心者ってところか、手持ちの本かヘルプ見てみ。
0450デフォルトの名無しさん
NGNGOSだったりShellだったり。
環境によって違う
0451デフォルトの名無しさん
NGNGvoidは「空虚」だ。
void hoge(void)
なら hoge は何も返さないし、引数も無し。
0452デフォルトの名無しさん
NGNGかなりの確率でシェルに返される。
0453デフォルトの名無しさん
NGNGかんだ言ってもCって人気あるねぇ・・・
0454デフォルトの名無しさん
NGNGみたいに ( ) を付けるのは古くからやってる人だろうか?
漏れは面倒だから括弧は一再付けない。
return 1;
0455448
NGNGありがとうございます。
シェルって、Linuxによくでてくる「カーネルとシェル」のシェルですか?
シェルに、return (1); を返すと具体的にどうなるのですか?
環境によって違うとは、M$と、Borlandや、システムによって違うって
ことですか?
>>451
ありがとうございます。
> void hoge(void)
>なら hoge は何も返さないし、引数も無し。
void main(void) は、「メイン関数がとりあえずありますよ」
ということでよろしいのでしょうか?
0456デフォルトの名無しさん
NGNG> void main(void) は、「メイン関数がとりあえずありますよ」
> ということでよろしいのでしょうか?
ダメ、mainはintにすると決まっている。
特に理由が無い限りint main(・・・)にしなさい。
0457デフォルトの名無しさん
NGNGUNIXやDOS(窓)では0が正常終了と決まっている。
バッチファイルやシェルスクリプトでそのぷろぐらむを起動した場合は
その値を使って条件分岐などできる。
0458デフォルトの名無しさん
NGNGまとめて欲しいなぁ、と言ってみるテスト
04591
NGNGお前がまとめろ
0461デフォルトの名無しさん
NGNGwhile(!getc(stdin))
{
処理
printf("push any key to exit\n");
sleep(1);
}
のようにすると(当然)getcから戻ってくるまで次の処理に進みませんし・・・。
0462デフォルトの名無しさん
NGNGあるキーが押されたら云々・・・ という処理は別プロセスにやらせて
メイン処理中ではそいつからのシグナルを受け取って もひゃ!
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG非カノニカルな動作をするように設定すればいいだけじゃないか
と言ってみたいが環境依存だし。どこで動かすものか判らんことには
0465デフォルトの名無しさん
NGNGその割には、思いっきり割り込み制御の仕様があったりするけど。
0466461
NGNGSolarisのコンソールで動けば良いんですが。
言われたことをキーにして調べてみましたが、
<termios.h>あたりの関数を使えばできるんですかね?
0467デフォルトの名無しさん
NGNGはい、そのとおりだす。
0468デフォルトの名無しさん
NGNGで虚無を返す関数か・・・
0個のファイルが見つかりました並に不自然だな
0469デフォルトの名無しさん
NGNG言うなYO・・・
0470ビル・ジョブス
NGNGあのなー・・・
「符号拡張」って書かなかったから「ばーか」か?
「整数型限定」って書かなかったから「ばーか」か?
挙句の果てに「糞コード」だと?
おまえらおれの建てたスレで何様のつもりだよ・・・
とりあえず、おれに文句のあるやつはもう来るな!
0471デフォルトの名無しさん
NGNG(・∀・) バーカ
0473デフォルトの名無しさん
NGNGまぁまぁ、そう熱くなりなさんな。
そもそも自分で良いコード書ける人は、わざわざ糞とか言わず、黙ってコードで
書いてくる。
つまり、他人のコードを糞コードとか言う奴のスキルは知れているってことで。
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476痛くない
NGNG0477デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG漏れも歳かな
0480デフォルトの名無しさん
NGNGもっと藁わせて下さい。
おながいします
0481デフォルトの名無しさん
NGNGですけどね。って C とは全然関係ないけど。
0482デフォルトの名無しさん
NGNGwas foundなんてまわりくどいってば
0483デフォルトの名無しさん
NGNGI have no money.とか平気で言う奴らだし>アメリカ人
0484デフォルトの名無しさん
NGNGやべ、下から読んだから笑えなかった・・・鬱だ・・・・・
0485パッサリ
NGNG[400]文字列からファイル名とパスを別々に取り出すには
ファイルのパスが含まれた文字列からファイル名とパスを別々に取り出すには、ExtractFilePathとExtractFileNameというWindowsAPIを用いると、パスとファイル名を取り出す事ができます。
AnsiString PathName,FileName;
// パス名
PathName = ExtractFilePath("C:\\Windows\\Calc.exe");
// ファイル名
FileName = ExtractFileName("C:\\Windows\\Calc.exe");
っていう情報があったけど
未定義の関数 'ExtractFilePath' を呼び出した
ってコンパイルエラーになったよ。
0486デフォルトの名無しさん
NGNG出るファイ独自関数
0487パッサリ
NGNGhttp://www2a.biglobe.ne.jp/~gonta/tipsc.htm
だめだこりゃ。
0488デフォルトの名無しさん
NGNGPath〜系のAPIが標準であるよ。
IE4以上だった気もするけど
0489デフォルトの名無しさん
NGNGUNIX系(XPG準拠?)OSなら、basename()やdirname()とか。
0490デフォルトの名無しさん
NGNG日本語翻訳ソフトはありませんか?
0491デフォルトの名無しさん
NGNGこんなふうにしたら読みやすいのか?
#読込<標準入出.頭>
整数 主要(無)
{
書式付表示("今日は,皆さん\n")
戻れ 0;
}
0492デフォルトの名無しさん
NGNG↓
(「今日は、皆さん。¥行」)
0493デフォルトの名無しさん
NGNG六行目で不正な書式が発見されました。
行末処理が行われていません。
0494491
NGNG0495デフォルトの名無しさん
NGNG#define しまくって日本語かすれ
0496デフォルトの名無しさん
NGNGどうしたらいいのですか?
0497デフォルトの名無しさん
NGNGprintf("%x", i);
0498デフォルトの名無しさん
NGNGすいません。ありがとうございました。
int nTarget = 1234;
char strResult[30];
_itoa( nTarget, strResult, 16 );
こんな感じでもやってみました。
0499デフォルトの名無しさん
NGNGコーディングスタイルやマクロの利用度にもよるが、
読みなれればなんてことはない。
よく出来たライブラリのソースを読むと良いと思う。
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGlibpng
0502デフォルトの名無しさん
NGNGサンクス
ホカニハ?>ALL
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG自分でパーサーを作るか、既存のライブラリを使う。
とにかくC自体にはそんな機能はない(入出力機能さえないし)。
0505デフォルトの名無しさん
NGNG質問はageでね。
0506デフォルトの名無しさん
NGNGは 「これからstdio.hというヘッダファイルを使いますよ。」
ってことですか?
それと、Visual Studioを使ってますが、プログラムファイルの中に
「inculude」というフォルダがありました。
これを「muneo」にリネームすると
#muneo <hage.h>
になるのでしょうか? ちょと怖くてやってませんが・・
0507デフォルトの名無しさん
NGNGincludeという単語を辞書で引くと良いかと思います。
とりあえず英語です。
muneoにすると問題が発生します。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG0510506
NGNG#include <stdio.h>
が気になってたので、助かりました。m(__)m
0511デフォルトの名無しさん
NGNG論理演算に関する質問です。
unsigned char 一つを 8 つのフラグとして使っています。
そのうち一つだけを変更したいのですが、今は立てる場合とおろす場合で
if で処理しています。
これを論理演算だけでやりたいと思って、さっきから考えているのですが、どうしてもうまくいきません。
imp を使うとよさそうな気がするのですが、もうまったくもってお手上げです。
どうやったらいいでしょうか?
0512デフォルトの名無しさん
NGNGunsigned char a; /* フラグ */
int x; /* ビット番号(0〜7) */
ビット検査
if( (a>>x) & 1 ) ビット勃ってる;
ビットたて
a |= 1<<x;
ビットおろし
a &= ~(1<<x);
0513通りすがりmkII
NGNGおいおい、511じゃないけどif文つかいたくねえから
論理演算でどうにかしろよ、って話じゃないのか?
0514通りすがりmkII
NGNGおれ逝って良し!
0516ぼくフェロー
NGNGどの掲示板で聞いたらよいでしょか?
0517デフォルトの名無しさん
NGNG>>512であってんじゃん?
if()の中身だけ使えばいいわけだ。
((a>>x)&1)
でも俺なら迷わずビットフィールド使う。
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.6.4.html
0518デフォルトの名無しさん
NGNGhttp://pc.2ch.net/php/
昔はperl・CGI板ってあったんだけどね。
0519ぼくメイト
NGNG【Perl】初心者コーナーPart10
http://pc.2ch.net/test/read.cgi/php/1014556702/
へGO!
0520ぼくフェロー
NGNGご案内ありがとうございます.
そちらで聞いてみます.
0521デフォルトの名無しさん
NGNGshortやintのときのビットフィールドについて
あれってビットフィールド定義した構造体と
shortやintそのものと共用体にしたとき
エンディアンはどう扱われるのか とても疑問
バリバリの環境依存なのか、それとも定義があるのか
0522デフォルトの名無しさん
NGNGのargvのポイント先の文字をいじることは合法ですか?
int i = 0;
while(argv[0][i]){
argv[0][i] = toupper(argv[0][i]);
i++;
}
とか
0523デフォルトの名無しさん
NGNGダメとは言ってないがイイとも言ってねーし。
はみ出なきゃ何してもいいよ。
0524デフォルトの名無しさん
NGNG俺的にはアウト。あくまで俺的。
0525デフォルトの名無しさん
NGNG環境依存。
おもいっきりK&Rに書いてある
0526デフォルトの名無しさん
NGNGサンクス!
蟹炒飯は会社に置きっぱなしでさ。助かったよ。
0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG両端のvoidは通常の関数定義とも共通だからいいとして、
mainが最初に実行される、っていうのは、Cの言語規則に含まれるのでは?
0531デフォルトの名無しさん
NGNGmain の返り値は int だろ(゚Д゚)ゴルァっていう話じゃないの?
0532デフォルトの名無しさん
NGNGc = getchar( );
は何を意味するのでしょうか?
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG読むわけにはい家内
0535デフォルトの名無しさん
NGNGひょっとして、ビットが立っていたら落とす、落ちていたら立てるってことがやりたいの?
もしかしたら ^ の出番ですか?
0536デフォルトの名無しさん
NGNG標準入力から一文字読んでcに格納。
0538デフォルトの名無しさん
NGNGすると
flags ^ (flags & (1<<n))
こうか。
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGプログラマの給与は平均より約100万円ほど低いそうだ。
0542デフォルトの名無しさん
NGNG> mallocしてもfreeしない
またですか…
0543デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGどちらの方が、いいのでしょうか?
好みとかですか?
教えてください。
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGその環境による。
どっちでもいい場合もあるだろうし、必ず int でなければならない事も。
0548デフォルトの名無しさん
NGNGプログラムなんてたいてい一瞬で終わってしまうし、
今時メモリなんて500−1000メガ当たり前ですし。
実害なんてありませんよね?
その上コードの工数まで減って言うことなしですね。
0549545
NGNGあと、逆に必ずvoidでなければならない時って
あるんですか?
教えてください
0550デフォルトの名無しさん
NGNGんじゃ、freeは絶対に使わないで下さい。
貴方の書いたプログラムは誰にも使われることがありませんから
0551デフォルトの名無しさん
NGNGふつうは規格上かならずint。
voidなのは組み込みでシングルタスクだったり、
値を返す対象が居ない環境限定。
0552デフォルトの名無しさん
NGNG> 必ずintでなければならない時ってどんな時ですか?
ANSI C hosted environment 準拠の処理系を使うとき。
> あと、逆に必ずvoidでなければならない時ってあるんですか?
組み込み系だと、そもそもエントリポイントが main とは限らないし、名前が main
でも void と指定されてるかもしれない。
0553デフォルトの名無しさん
NGNGとかいってる人々は現場を知らない人です。
0554545
NGNGこれからは、intを使うことにします。
0555デフォルトの名無しさん
NGNGすくなくとも
sizeof(char)==1
ですよね。
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNGはっはっは。それはどうかな。
0559545
NGNG気になっていたので、すっきりしました。
0560555
NGNG0561デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGANSI 準拠という処理系に依存してるんでは?
0565デフォルトの名無しさん
NGNGC言語の枠からもはみ出しそうだ。
C#とか逝ってるアフォもいるし…
0566デフォルトの名無しさん
NGNGはげどう。
0567デフォルトの名無しさん
NGNGsizeof(int)==1の処理系使った事有るし。
charもdoubleも全部1。
0568わけわからん
NGNGshort ふつう16ビット
int 今時なら32ビット
long ふつう32ビット
まああれだ。厳格にはlimits.hを見なきゃだめってことだ
0569555
NGNGsizeof(0)==sizeof(int) はあってますか?
また、sizeof(void*)と等しくなることが保証されてる
sizeofってありますか?
0570デフォルトの名無しさん
NGNGふつう==移植の落とし穴、と心得よ。
0571デフォルトの名無しさん
NGNGなぜ規格書をチェックしない?
0572デフォルトの名無しさん
NGNG規定されてないからな
0573511
NGNGいえ、立っているか立っていないかに関わらず、入力値で、そのビットだけ
制御したいんです。
#define int BOOL
#define 0 FALSE
#define -1 TRUE
// src の第二ビットを new_value にする
int SetFlag2(BOOL new_value, int src){
return ?????;
}
今は if で分けて処理しているんですが…。
0574デフォルトの名無しさん
NGNGあんた様はいったいなにをしたいのか?
処理系に依存しないためにsizeof()使うんじゃないの?
0575デフォルトの名無しさん
NGNGなんでそんなにifを避けたがるの?
0576デフォルトの名無しさん
NGNG自己参照構造体を作った場合の開放はどうすればいい?
わざわざ処理を作るのが面倒だからプログラム終了時に
OSが開放してくれることを期待してたんだけど、マズイ気がしてきた。
0577デフォルトの名無しさん
NGNG| 使え
0578デフォルトの名無しさん
NGNGでええやん。
代入までやるなら
src |= (1<<bit);
値見るなら
ans = !!(src & (1<<bit));
って所か?
関係ないが #define -1 TRUE は、やめれ。
0579517
NGNGあぁもうわけわからんなぁ。なぜ>>512じゃいけないのか??
>>512のビット立て、ビットおろしの「1」を代入したい変数(0 or 1)にして、
たて、おろしを連続ですれば、その変数が示す0か1になるだろうよ。
ちなみに、>>517も見てね。
0580デフォルトの名無しさん
NGNG自己参照構造体って
struct test{
struct test *test1;
};
とかのこと?
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNGmalloc()をdefineするなり自分用のmy_malloc()関数等を作るなどして、
確保したポインタをかたっぱしからどっかに記憶していって、
最後にまとめてfree()しまくるってのはどお?
どっかに既にそういうのあるかも。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNG至上稀に見る天才。
0587デフォルトの名無しさん
NGNGOS が解放してくれるなら、全然問題なし。
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGごてんばあさん、おってー
0591デフォルトの名無しさん
NGNGscanfで入力した変数を配列の大きさにしたいのですが、
どうすればいいのでしょうか?
0592デフォルトの名無しさん
NGNGscanf("%d",&i);
{
int *ip = malloc(sizeof(int)*i);
}
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG黙れ、エロおやじ
0595デフォルトの名無しさん
NGNGまーいーや。
DLLは一応FreeLibraryしてるけどね。
0596デフォルトの名無しさん
NGNGreturn src & ~(1 << n) | (!!new_value << n);
0597名無しさん
NGNGただしばれないようにゆっくりと。。。http://orange.ko-mens.tv/idol/view.cgi?id=key
0598デフォルトの名無しさん
NGNGの「 a 」が、scanf()などで「 &a 」と表示されてる部分って
例外なくメモリのアドレスを示してるのですか?
0601ヴァッシュ
NGNG0602デフォルトの名無しさん
NGNGbcc32で
char a[5];
printf("%p %p",a.&a);
とやると下のように
0012FF84 0012FF840
同じアドレスが表示されます。
同じだから
*&a = 0; //最初の要素に0を代入
ができると思ったのですが左辺値が必要と言われるので・・
0603デフォルトの名無しさん
NGNG扱われるけど、& が付くときとか sizeof のオペランドになる時とかは
配列そのものとして処理されるので、 *a と *&a じゃ意味が違うっていうか
型が違うっていうか。
0604602(状態:デムパ)
NGNGごめんなさいちょっと間違いました(- -;)
忘れてください。
こちらを教えて頂きたいです
pを構造体ポインタだとして
*p++->str;
のような式文は
strが指しているオブジェクトを参照し、pをインクリメントする
とありますが
->は左辺値付きのpと結びつくのか、p++が返したインクリメント前のpの
値と結びつくのか、どちらなのでしょうか?
0605602
NGNG↓
とK&Rにありますが
0606デフォルトの名無しさん
NGNG*p->str; p++;ってこった。
演算子の順位表をみろ。
0607デフォルトの名無しさん
NGNGポイントは、、「変数のアドレスを記憶する変数」と某サイトの説明が
ありました。 意味はよくわかります。
どういうときに便利なんでしょうか? プログラム例を見たりしてますが
難解に見えるだけなんですが・・
0608602
NGNGもうだめだ・・・徹夜してたからかな・・・(-_-_-)
>>602に
0012FF84 0012FF840
とあるので、あれ?アドレス違うのか?と思って
604で忘れてくださいなどと言ってしまいました<(_ _)>スイマセン
プログラムをコンパイルするとき
char a[5];
printf("%p %p",a.&a);
*a = 0;
printf("%d");
とやっちまって変な結果をコピペしてしまいました。
そんな俺にレスしてくれてありがとうございます。603様
色々と違うのですね、了解しました!
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGそういう台詞は代替手段があるときに口にするべき。
ポインタでしかできないことがCでは厳然として存在する
ことを踏まえれば、そんな言葉は出てこない。
0612デフォルトの名無しさん
NGNGまぁたしかにそうなんだけど具体例を挙げないとわかんないだろうから。
たとえばCでは関数の引数として配列そのものを渡すことができないのでポインタを渡して
必要に応じて実体を参照する。文字列もcharの配列でしかないのでこれと同じ。
あとはCでは関数の引数は値渡しでコピーが行われるのででかい構造体の実体を引数にしちゃうと
遅くなっちゃうとか。
まぁ必ず例として出される二つの引数の値を入れ替えるswap関数がわかりやすいでしょ。
Cの入門書には必ずでてるからそのくらいは自分で調べて。
0613607
NGNGありがとうございました。
もひとつ質問です。
char a[4] = "xyz";
char *p;
p = a;
「 p=a; 」の「 a 」は、アドレスになるのでしょうか?
「 p=a; 」 と 「 p=&a[0]; 」 では、全く同じ意味になるのでしょうか?
0614デフォルトの名無しさん
NGNGポインタ=アドレスではない。ポインタとはあくまでもオブジェクトを指すものであって
メモリ上のアドレスと決まっているわけではない。*pと書くとpが指しているものを取り出せることが
保証されているというだけの話。実際Cはアドレスとそのオブジェクトのサイズをコンパイラが覚えることで
ポインタという機能を実装している。一応これが前提。
基本的に式の中で配列名だけを書くとその配列の先頭の要素のポインタに読み替えられる。
ただし例外があって&, sizeofのオペランドになるときは配列全体の意味になる。
もういっこ例外があったと思うのだが思い出せない。
よってp = a; と p = &a[0]; は同じ意味。
それと質問に直接関係ないが
char a[4] = "xyz";
は
char a[] = "xyz";
と書くのがふつう。
0616デフォルトの名無しさん
NGNG2. char *p;
p = "ABC";
1と、2は同じ意味らしいです。
http://www.ht-net21.ne.jp/~sgwr-t/sec10-3.htm (上から7行目くらい)
1は解るのですが、2が「 *p = p 」になると
思うのですが。
ポインタって、1日で理解するのは無理ですか?
0617デフォルトの名無しさん
NGNGchar* pSrcMax = pSrc + iLength;
while( pSrc < pSrcMax )
{
*pDst ++ = *pSrc ++;
}
とかできて便利♪
0618デフォルトの名無しさん
NGNGどっちも、 *pはchar型のポインタだよって定義して
そこに"ABC"の文字列(これはどっかに確保される)
へのポインタ(この際アドレスでもいいや)を代入してる。
0619デフォルトの名無しさん
NGNGchar *p = "ABC";
は、
char *p;
と、
*p = "ABC"
という意味ではない。
0620デフォルトの名無しさん
NGNGありがとうございます。
>>619
どうしてですか?矛盾してるような気がするのですが。^-^;
すみませんが、もう少し詳しくお願いします。m(__)m
0621デフォルトの名無しさん
NGNGchar *p = "ABC";
は
char *p;
p = "ABC";
ですね。確かに最初は変に思えるかもしれないがとにかくそういうことになっ
ている。
0622620
NGNGありがとうございます。
これって理由があるのでしょうか?
気持ち悪いのですが・・。^-^;
0623デフォルトの名無しさん
NGNGchar* p = "ABC";
0624デフォルトの名無しさん
NGNGは
char* p;
p = "ABC";
って考えて納得するんじゃダメ?
0625デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGint *p;
int* p;
のどっち使うかで盛り上がってたな。
とか蒸し返したら怒られるかな?(w
0628デフォルトの名無しさん
NGNGこんなんしちゃったり
0629デフォルトの名無しさん
NGNGC言語では文字列はcharの配列として扱われる。文字列リテラルでも同じこと。
また式の中では配列はその先頭要素のへのポインタに読みかえられる。
よって2は「*p = p」ではない。
char str[] = "ABC";
char *p;
p = str
と本質的には同じ。というかそういう意味では1も同じだけど。
char *p; というのはあくまでもcharを指すポインタ型の「変数p」の宣言
だということを誤解してない?
ただし1と2は同じではない。1はポインタpを"ABC"で初期化しているが
2はゴミの値で初期化して代入している。初期化と代入は区別する必要がある。
リンク先の説明ではpが"ABC"を指すという意味で同じと説明しているような気がするが
誤解を招きそうだ。
0630デフォルトの名無しさん
NGNG>618
>どっちも、 *pはchar型のポインタだよって定義して
これは間違い。変数はあくまでもp
>626
623,624でわかったと言っているようではたぶんわかっていない。"ABC"はcharの
配列で式の中ではその先頭要素のポインタに読みかえられるということが大事。
>620
初期化というのはそのオブジェクトが作られるときに行われるという点が違う。たとえば
void func(void){
static int x = 0;
int y;
y = 0;
printf("x = %d ; y = %d\n", x++, y++);
}
というような場合xはプログラムが実行されるときはじめに確保されて0に「初期化」
されるがyはfuncが呼ばれるたびに確保されその後0が代入される。初期化と代入は
区別しなくてはならない。
0631630
NGNG初期化と代入の区別という感じはしないね。うまいサンプルを思いつかない。
618の補足
char *p;
はcharを指すポインタ型の「変数p」の宣言であって
char型の「変数*p」の宣言ではありません。
0632デフォルトの名無しさん
NGNGconst char *mona = "omaemona";
/*
const char *giko;
giko = "itteyosi";
*/
これはどーよ。今回の件とはあんまり関係ないけど。
0633616
NGNGご丁寧にありがとうございました。m(___)m
何度か繰り替えし読んだのですが、混乱してます。
おもっっ〜きりかみ砕いた、たとえ話で説明
できますでしょうか?
例えば、1001号室にいる、ABCという名前の
猫の話とか・・。
ポインタというモノが雲のような存在なんです。
0634デフォルトの名無しさん
NGNGこの二つは書き方が違うだけ?
0635デフォルトの名無しさん
NGNG多少間違ってることを承知で説明する。
Cでは、文字列は、次のようにあらわされる。
1000番地にAという文字
1001番地にBという文字
1002番地にCという文字
1003番地に終端文字
ここで、 char *p = "ABC";
とやった場合、pは1000番地を指す。つまり、ABCという文字列の
開始点を指すことになる。
char *p; // <- 1
p = "ABC" // <- 2
とやった場合、1の部分では p は何処を指すかは決まっていない。
2の部分で、p に "ABC"という文字列の先頭の番地が代入される。
宣言と代入は、「構文が違う」ということは覚える必要がある。
0637デフォルトの名無しさん
NGNGじゃぁ、俺の理解で教えてあげよう。
まず、宣言時の
int *p;
の「*」と、参照時の
i = *p;
の「*」の意味は別物です。これ重要。
あと、アドレスという言葉とポインタという言葉を明確に区別しましょう。
(これにはいろいろ議論があると思うけど、とりあえずゆるして>みんな)
ポインタは「アドレスを格納するための変数(by K&R)」ですので、
「アドレスを代入できないもの」はポインタではなく、ただのアドレスの参照です。
◎char *a; a=(char *)0x0000;
×char a[30]; a=(char *)0x0000;
前者のaはアドレス(この場合0x0000)が代入できるのでポインタですが、
後者のaはアドレスを代入できない(参照しかできない)ので、ポインタではありません。
コンパイルしてみれば、後者はエラーが出てコンパイルできない
ことが分かります。
0638sage
NGNG初期化は宣言中の変数に対して行われる。
コンパイラが
int *p;
をみつけたとき、
pに参照演算子*を適用するとintになるんですな。
と解釈する。つまりはint型へのポインタへ変数だ。
int *p = a;
は
pに参照演算子*を適用するとintになるんですな。
ついでにpにaを入れて初期化するんですな。
と解釈する。
int *p = "ABC";
は、
pに参照演算子*を適用するとintになるんですな。
さらに静的領域に4バイトのメモリを予約して、そこにAとBとCと\0というコードを入れて置くんですな。
ついでにpにその連続したメモリの先頭アドレスを入れて初期化するんですな。
と解釈する。
宣言は使うときと同じように書く。
初期化は、宣言中の変数に対して行う。
覚えておけ。
0639デフォルトの名無しさん
NGNGまちがった説明なのに、やけにエラそうですな。
0641629
NGNG文字列リテラル("ABC"こうゆうやつね)は文字の配列と本質的に同じであり式の中では
その先頭要素を指すポインタに読み替えられる。
ただし「char配列の初期化」の場合は例外
char str[] = "ABC"; /* char str[] = {'A', 'B', 'C', '\0'}; と同意 */
従って
char str[4] = "ABC";
はよいが
char str[4];
str[4] = "ABC"; /* !!エラー!! */
期せずして代入と宣言というか初期化の処理は別物として処理されている例になってしまった。
このことを説明せずに
char str[] = "ABC"; /* この部分がね・・・・。 */
char *p;
p = str;
の例を出したのは混乱を招くものでしかなかった。
635の説明は大筋では間違っていない。
試しに
int main(void){
printf("%p\n", "ABC");
return 0;
}
ってしてみたら実感できると思う。
ちなみに638はネタなのでそのつもりで(だよね>638)。638読んでつっこめたり笑えるようになれば
理解できたと思っていいでしょう。
0642デフォルトの名無しさん
NGNGこれはどういう意味なんでしょうか?
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGa = 3;
b = a++ * a++;
のときbがいくつになるかは未定義なのは
有名なのですが、そうすると、
b = ++a * ++a;
の場合も同じく未定義と考えていいのでしょうか。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG未定義なんで、実行したとたんOSがハングしてPCから煙がでてきたとしても仕方ない。
0647デフォルトの名無しさん
NGNGどもです。
http://pinktower.com/www.ne.jp/asahi/gravure/com/096/001.jpg
つまらないものですがどうぞ。37まであります。
0648644
NGNGすいません。「*」でつないでるのは上も下も
同じなんです。インクリメント演算子が前置と後置で
変わるものなのか?と思ったんです。
0649デフォルトの名無しさん
NGNG=
+
+
a++
*
++a
+
+
0650デフォルトの名無しさん
NGNG*ではまだ式の評価は完了しないから、
前置だろうが後置だろうが、未定義の動作になるよ。
C FAQ嫁。
0652デフォルトの名無しさん
NGNGint a=4,b=2,*A,*B;
A=&a; B=&b;
printf("%d \n", *A/*B );
}
0653デフォルトの名無しさん
NGNGを具体的にコーディングしてみたのでコンパイルして実行してみそ。
#include <stdio.h>
int main(void){
char *p = "ABC";
for (; *p != '\0'; p++)
printf("[%p] => [%c]\n", p, *p);
return 0;
}
ちなみに私の環境だと
[0040A128] => [A]
[0040A129] => [B]
[0040A12A] => [C]
こんな感じだ。左側に各文字のアドレスが入っている。
0654デフォルトの名無しさん
NGNGBorland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland
hoge.c:
エラー E2186 hoge.c 7: 4 行目で始まったコメントの途中でファイルが終わっている(関数 main )
エラー E2121 hoge.c 4: 関数呼び出しに ) がない(関数 main )
エラー E2134 hoge.c 4: 複合文に } がない(関数 main )
警告 W8070 hoge.c 4: 関数は値を返すべき(関数 main )
警告 W8004 hoge.c 4: 'B' に代入した値は使われていない(関数 main )
警告 W8004 hoge.c 4: 'A' に代入した値は使われていない(関数 main )
*** 3 errors in Compile ***
0655デフォルトの名無しさん
NGNGVC++6.0
test.c(8) : fatal error C1071: コメントをスキャン中に予期せぬ EOF が検出されました。
0656デフォルトの名無しさん
NGNGこれを
printf("%d \n", *A / *B);
にしろ。
っていうかすこしは自分で補完するように。
0657デフォルトの名無しさん
NGNGコメント扱いされるエラーが出るよって教えて
くれてるのかと思ってたよ。
0658デフォルトの名無しさん
NGNG( ゚Д゚)ホカーン
(゚∀゚)ネタニマジレス? クスクス
0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNGvoid main(){
int data1 = 0, data2 = 0, data3 = 0;
++data3 += data1++ + ++data2;
printf("%d\n", data1);
printf("%d\n", data2);
printf("%d\n", data3);
}
↓
1
1
2
0661デフォルトの名無しさん
NGNG0662656
NGNG(゚∀゚)ネタニマジレス? クスクス
だよね。自分が恥ずかしい。
0663デフォルトの名無しさん
NGNGそういう自分もつい先日n重のポインタを理解したばかりですが…
◆おすすめスレッド◆
トリッキーなコード
http://pc.2ch.net/test/read.cgi/tech/983191866/
0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGポインタの表記の仕方と、ポインタの型に慣れるのにちょっとかかったけど。
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG勘違いコードを書いてたもんだなあ。
0668デフォルトの名無しさん
NGNG別の言語を習得する人が増えてきたんだよね。
0669653
NGNGp[i]というのは*(p + i)のシンタックスシュガーということがわかれば同じ動きをする
コードを配列とポインタで書いてみれば理解できると思う。
文字列リテラルも実際は先頭のポインタをもっていてそれを渡すと'\0'までを文字列とする
とわかれば混乱しないだろう。
653の配列版(ちなみに653はコピペすると全角スペースのせいでそのままじゃコンパイルが通らない)
#include <stdio.h>
int main(void){
char *p = "ABC";
int i;
for (i = 0; p[i] != '\0'; i++)
printf("[%p] => [%c]\n", &p[i], p[i]);
return 0;
}
0670デフォルトの名無しさん
NGNGだね。言われてコンパイルしてみたけど、やっぱり通らなかった。
0671633
NGNGわざわざ、ありがとうございます。
よくわかりました。
・「 p 」はポインタであり、アドレス。
・「 *p 」は、char型の文字。
に見えますが、このすれの>>614に
>ポインタ=アドレスではない。
と書いていました。
ネタレスは、>>638だけですよね?
ポインタは、「アドレスを格納するための変数」(>>647より)
ということは、アドレスを格納するための変数とは、>>653の
プログラムでは、どこを指してるのですか?
アドレス[0040A128] にある文字[A]があると、ポインタ
はいくらになるのですか? マヅで混乱してます。
よろしくお願いしますm(__)m
0672デフォルトの名無しさん
NGNGコンパイラの内部動作がわかるやつ、少ないのか?
0673デフォルトの名無しさん
NGNGテンプレート尽くしのC++ソースなんか読めない(略)
0674デフォルトの名無しさん
NGNG汗をかける必要はないから読める程度に勉強するのがいい。
そうすればポインタごとき665が言ってるみたいに表記の仕方
だけ覚えればいいんだけどなー。
0675デフォルトの名無しさん
NGNG実務に追われてるならともかく、これから学ぼうって人なら
アセンブラは修得しておいて損は無いYO!
0676デフォルトの名無しさん
NGNGpの値は0040A128。
*pの値は'A'。
OK?
0677デフォルトの名無しさん
NGNG> に見えますが、このすれの>>614に
>>ポインタ=アドレスではない。
>と書いていました
例えば32bitマシンでintは4バイトだろ、その属性と先頭アドレスを含めてポインタ
だから、イコールじゃないって書いてあるじゃん、ちゃんと読めよ。
>・「 p 」はポインタであり、アドレス。
>・「 *p 」は、char型の文字。
どっちもはずれじゃ、ボケェ
> アドレス[0040A128] にある文字[A]があると、ポインタ
>はいくらになるのですか? マヅで混乱してます。
なんでだよ、そのままじゃん。
「ポインタはいくら」って、日本語になってねーぞ
ポインタの値を聞いてるなら、[0040A128]
0678デフォルトの名無しさん
NGNG671が本気にして混乱するじゃないか。
>pに参照演算子*を適用するとintになるんですな。
*は参照演算子ではなく間接演算子もしくは逆参照演算子
>int *p = "ABC";
はintをさすポインタをcharへのポインタで初期化しているから最近のコンパイラは
警告を出すだろう。
>宣言は使うときと同じように書く。
というのは確かにそうだけど嘘じゃないというにはちょっと、、、。
0679678
NGNGそうでなくても混乱してるけど、、、、、。
それだけに一部が間違っている文章は毒にしかならない。
0680結論
NGNG0681デフォルトの名無しさん
NGNG人に適切に説明できないというのは、
自分でも深く理解できない証拠です。
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG>int *p;
>をみつけたとき、
>pに参照演算子*を適用するとintになるんですな。
>と解釈する。つまりはint型へのポインタへ変数だ。
ここらへんは禿同。
0686633
NGNGありがとうございました。
アセンブラも勉強します。
>>677
>>・「 p 」はポインタであり、アドレス。
>>・「 *p 」は、char型の文字。
>どっちもはずれじゃ、ボケェ
正解は何ですか?
どこかのサイトにポインタは簡単って書いてましたけど
頭悪い人には難しいんですね・・(汗
0687デフォルトの名無しさん
NGNG> 配列とポインタの交換性が理解できればそんなに難しく無い。
互換性? 配列変数を右辺値として評価するとポインタに縮退するという
特例があるだけで、あとは全然別物だと思うが。
int n, *p, a[10];
こう定義されていたときに n = *p, n = a[0]; を仮想的なアセンブラコードで
書き出すと、次のような感じでしょ? (C 言語なんで実装の詳細は規格で
は規定されていないけど、一般的な実装の話ね)
n = *p;
// mov r1, addr(p) ; 変数 p のアドレスを読み出す
// lod r2, [r1] ; 変数 p の値を読み出す
// lod r3, [r2] ; 変数 p が指している先に書いてある値を読み出す
// mov r4, addr(n)
// store [r5], r3
n = a[0];
// mov r1, addr(a) ; 変数 a のアドレスを読み出す
// add r1, 0 ; 変数 a[0] のアドレスに変換する
// lod r2, [r1] ; 変数 a[0] の値を読み出す
// mov r3, addr(n)
// sto [r3], r2
間接参照の回数が 1 回違う。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNGメモリダンプや変数の値チェックしてけばする理解できるよ。
アセンブラ覚えるんならIDEの使い方覚えたほうがまだまし。
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG最適化を行わないコンパイラなら多分そんな感じだろうけど、
最適化を考慮すると、その考え方は危険。
どんな値が入るか解らないポインタに比べ、添え字の範囲にしか
アドレスの変化しない配列の方が、高度に最適化される処理系が有る。
つーか折れの使ってるDSP用のコンパイラは、配列の方が速い。
0693デフォルトの名無しさん
NGNGああ、もちろん「配列よりポインタが効率的だ」とか言うつもりは全く無いよ。
ただ別モノだ、と言いたかっただけ。
(配列は左辺値にならんし)
0694デフォルトの名無しさん
NGNGsto と store が混在してたり? (違
0695デフォルトの名無しさん
NGNG今のIA32でアセンブラ入門しろたって、ちと酷か。
なんかいいアセンブラ入門させられる処理系無いかねぇ?
C#のバイトコードの、なんだったか名前忘れたけど(w
それのアセンブラ、今度見てみっかな
0696デフォルトの名無しさん
NGNGそれ俺ですが何か?
だって資料が無いんだよヽ(`Д´)ノ
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG> なんかいいアセンブラ入門させられる処理系無いかねぇ?
シンプルなところで MIPS でしょ。Windows や UNIX で動く、わりと出来の良い
エミュレータ SPIM もあるし、PS2 Linux 買えば gcc + gas で実際の CPU を
使って遊べるし。
0699デフォルトの名無しさん
NGNG蒲地さんの本読めばかなり分かると思うけど。
0700695
NGNGMIPSか。折れ勉強した事無いんだよね(藁
でもRISC系やDSPはは命令は簡単だけど、各命令に制限多くない?
MIPSは知らないけど、遅延分岐なんて入門者にゃ敷居高すぎ。
まぁ折れが覚えるんじゃ無いから別にいいんだけど(w
0701デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG「初めて読む486」とかいい本だと思うけどっていいたかった。
0704デフォルトの名無しさん
NGNG> でもRISC系やDSPはは命令は簡単だけど、各命令に制限多くない?
むしろ CISC 系の方が、レジスタの用途に制限が多くて面倒だと思うが。
RISC 系だと、汎用レジスタは本当に汎用で、Z80 みたいに
この命令では、オペランドに IX, IY は使ええない
みたいな制限は無いし。
RISC の場合には、アセンブラでも「機械語コードに一対一対応」じゃなくて、
アセンブラが使うためのレジスタを別途確保してあったりするあたりが、学習
用としてはアレかもしれん。
ま、優秀なやつには、SPIM とヘネシー&パターソンの「コンピュータの構成
と設計」をセットで渡しておけ。あれで、背景を含めて必要な知識が押さえら
れる。
0705デフォルトの名無しさん
NGNG0706695
NGNGCASLはアクビが出る位簡単。あくまで試験用のアセンブラだしね。
情報処理試験で、事前勉強ゼロで、巻末のアセンブラ仕様読みながら回答したけど、それで通った位だし。
とは言え、Z80と8086のアセンブラの経験は有ったけど。
それも15年前の事だが・・・
でも確かにアレは簡単だけど、学習へのモチベーションは維持できないと思われ。
自分で持ってるPCとか、PS2とかなら学習意欲も涌くだろうけど。
まぁアセンブラは、学生のウチに勉強しときなさいってこった。
0707637
NGNGでは私めが。
>・「 p 」はポインタであり、アドレス。
>・「 *p 」は、char型の文字。
・pはポインタであり、アドレスを「格納する変数」です。
・*pは、(ポインタpが指すアドレスに格納されている)char型の
「数値」です。(これは用語の問題。「文字」じゃなくて「文字コード」ならOKです。)
で、ポインタは「アドレス変数」と読み替えると、意味が分かりやすくなります。
つまり、変数というからには、左辺値になりえる(何かを代入できる)必要があります。
判断基準は、ずばりこの「左辺値になりえる=代入できる」という点のみです。
int a,*b,c[10];
と宣言した場合、
「&a」はポインタとは言いません。(&aにはアドレスを代入できません。&a=(int *)0はエラーです)
「b」はポインタです。(bにはアドレスを「代入できます」。b=(int *)0はOKです。)
「c」はポインタとは言いません。(cにはアドレスを代入できません。c=(int *)0はエラーです。)
ちなみに、上記の&a,b,cともに、右辺値として使用した場合(参照した場合)は、
どれも「アドレス」を返します。
ついでに、俺的解釈では、右辺値として現れた場合のみ、上記a,&b,cともに
「〜〜〜”の”アドレス」という代わりに、「〜〜〜”への”ポインタ」と言ってもOKです。
0708デフォルトの名無しさん
NGNGとりあえずメモ帳で書いてみたのですが、 保存するとき、 .c
と拡張子を付け、すべてのファイルで ってやったのに、
txt形式で保存されてしまいます。 これはいったい全体どうしたら?
0709おじさん
NGNGだっつってんだろゴルァ
もしかしてみんなWin世代か・・・
0710デフォルトの名無しさん
NGNGhello.c じゃ駄目なんですか?
ホームラン級の馬鹿ですまそ。
0711デフォルトの名無しさん
NGNGコンパイルして早く寝たい。 とにかく実行させて 寝たい。
っくっつ 目が 目が かすんできやがった.. 限界か..?
0712デフォルトの名無しさん
NGNGその保存したテキストファイルを選択して
「F2」を押してごらん。
0713デフォルトの名無しさん
NGNGまた、どの程度の内容なんでしょうか?
使ったことのある人、教えてください。
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGしかし、ファイルが windows のマークになって、アプリケーション
から開かないと駄目な形式に変ったのですが。。
プロパティをみると、種類が Cファイルとなっているから
このままMS-DOSでコンパイルしてよいのかな?
0717デフォルトの名無しさん
NGNGいいよ
0718デフォルトの名無しさん
NGNGそういう質問は、まずやってみてから。
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGコマンド打ちこんで、やったら
”パラメーターが多すぎます”
ってでた。 こいつはいったい。。?
0721デフォルトの名無しさん
NGNGアビバ逝け
0722デフォルトの名無しさん
NGNGしねよ〜
0723デフォルトの名無しさん
NGNGアビバ逝け
0724デフォルトの名無しさん
NGNG電源は落とせますが私にはわからない問題点がやまずみらしいのです
どこがおかしいのでしょうか?
一応コンパイルは通りまして警告も出ません
WindowsXPにVC++6.0でC言語プログラムです
XPの権利関係のところのプログラムは長くなってしまうので今ははずしております
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
if(argc == 2)
{
switch(argv[1][0]){
case 'r': ExitWindowsEx(EWX_REBOOT, 0);
break;
case 's': ExitWindowsEx(EWX_SHUTDOWN, 0);
break;
case 'l': ExitWindowsEx(EWX_LOGOFF, 0);
break;
default: printf("引数は\"l\"はログオフ\"r\"はリブート\"s\"はシャットダウン");
}
}
else
printf("test1 arg とコマンド引数を当てる");
return 0;
}
0725デフォルトの名無しさん
NGNGwindows.hとかstdio.hが<>でなく""だとか、
それをいえば、stdafx.hなんかいらんやろ、とか
"shutdown r"みたいな使用方法はセンスがないとか
0726デフォルトの名無しさん
NGNG0727630
NGNG>> 配列とポインタの交換性が理解できればそんなに難しく無い。
>互換性? 配列変数を右辺値として評価するとポインタに縮退するという
>特例があるだけで、あとは全然別物だと思うが。
もちろん同じと言っているわけではありません。
ちなみに「交換性」を「互換性」に読みかえていらっしゃいますがこの2つの言葉には「交換性」はないと思います。
//「互換性」もないと思うけど。
式の中ではa[i]は*(a+i)のシンタックスシュガーだと言っているだけです。
int a[20]に対してaが配列aの先頭要素へのポインタに読みかえられるというのはまた別の話。
aはポインタじゃないですからね。
>汗知らずにCやってる人って、、、
まぁでもわざわざアセンブラを覚える必要はないでしょ。わしアセンブラ知らんし。
車を組み立てられなくても車の運転をするのには困らないし。知ってて損はしないだろうけど。
「そろばんを知らなくても電卓は使える」と表現しちゃうとそろばんくらいは知っていた方が
いいよなと思っちゃうけどね。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGユーザーモードのアプリに最低限必要な命令だけだったらたいして難しくない。
セグメントを考える必要がないぶん8086より楽なくらいだと思われ
入門なんだからSSEやら何やらは単に無視すればいいだろ。
0730デフォルトの名無しさん
NGNGたまにすさまじい無駄に気づくぞ。
0731デフォルトの名無しさん
NGNGああ、禿しく同意だ
0732デフォルトの名無しさん
NGNGすさまじい無駄を含んだコードと
大して変わらない実行速度だったりする罠。
ファイルサイズ削りたいんなら有効かも。
0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG将棋盤や碁盤のようなマス目がある板を考えます。各マスには番号を振っておきます。
たとえば1001, 1002, 1003, ... , 1100とあったとします。
各マス目にはいろんなものが置いてあります。一つのマス目には収まらなくていくつかの
マス目にまたがっているものもあります。
ポインタは単なるアドレスではなくどれだけの大きさのものを取り出せばよいか知っています。
char *cp; int *ip; double *rp; とあってcp, ip, rp の値がどれも1001になる場合があり得ます。
そういうときでも *cpとすれば1001からものを取り出してくるし *ipとすると1001から1004にあるものを
とってきます。*rpとすれば1001から1008までを取り出します。
いまたまたま*cpの大きさは1、*ipは4、*rpは8というのは状況によって変わるのですが
宣言時にコンパイラの方が調べて覚えておいてくれるのでプログラマは覚える必要はない。
(むしろ意識してはいけない)
ポインタが単なるアドレスではないというのはこういう意味。
0735デフォルトの名無しさん
NGNGip = cp = 1001;
で cp++; とすると cp は 1002 になるし
ip++; とすると ip は 1005 になったりとかね。
0736742
NGNGprintfの\nやincludeの<>などはいわれてみればそのとおり、と思って修正できたのですが
コマンド引数で"-"をつけるにはどうやってプログラムすればよいのでしょうか?
確かにコマンドでは"-"ははいっておりますが自分でやろうとすると反応しません
lとかsとか一文字だけですと問題ないのですが…
0737デフォルトの名無しさん
NGNG論理式とかも見た目勝負
0738デフォルトの名無しさん
NGNG交換性って日本語は、初めて聞いた…
> まぁでもわざわざアセンブラを覚える必要はないでしょ。
俺個人の意見としては、
アルゴリズムや計算機論理設計、コンパイラ理論、OS などは知らなくても
最低限の仕事は出来るが、上を目指すなら知っておいた方が良い
かな。周囲を見回しても、そのあたりの基礎知識があるヤツとないヤツを比較
すると、成長の早さがずいぶん違うから。
0739デフォルトの名無しさん
NGNG変数などが入ってる箱みたいなものですか?
0740デフォルトの名無しさん
NGNGなにがわからんのだ?
コマンドライン
hoge -a
↓
arg[1][0] = '-'
arg[1][1] = 'a'
arg[1][2] = '\0'
0741デフォルトの名無しさん
NGNGある意味すごい才能だな 藁
0742デフォルトの名無しさん
NGNGそれらを活用するというのも手だね。
0743デフォルトの名無しさん
NGNG演算子のオーバーロードはこの際無視するとして
0744デフォルトの名無しさん
NGNG国語辞典調べたら乗ってなかった。ということで互換性に訂正します。
#どこで覚えた言葉なんだろう。
>アルゴリズムや計算機論理設計、コンパイラ理論、OS などは知らなくても
>最低限の仕事は出来るが、上を目指すなら知っておいた方が良い
これに関しては全く同感。でもね、734のようにかみ砕いた説明で
(図にかければもっとわかりやすくはなるけど)
わかんない人がアセンブラなら理解できるのか疑問。
結局Cではint *pの値をみると確かにアドレス値が表示されるのでポインタ=アドレスって
勘違いしてわかった気になっちゃうんじゃないかなと。
0745デフォルトの名無しさん
NGNGstring_replace( str, new_string("t"), new_string("pch"));
...
やってられるか、っちゅうねん。
>>演算子のオーバーロードはこの際無視するとして
Cでオーバーロードなんか無視する以前にできねーだろが。
0746デフォルトの名無しさん
NGNG>オブジェクトって、簡単に言うとなんですか?
>変数などが入ってる箱みたいなものですか?
初めのうちはそのくらいの認識でいいと思う。
ただしプリミティブな変数だけじゃなくて配列や、構造体、
関数もオブジェクトだったりするので箱よりももっと抽象的なものだ
ということは頭のどこかにおいておこう。
0747デフォルトの名無しさん
NGNGK&R風
0748デフォルトの名無しさん
NGNGやれやれ。
#include <stdio.h>
int main(int argc, char *argv[]){
switch(argc){
case 2:
switch(argv[1][0]){
case '-':
switch(argv[1][1]){
case 'r':
printf("reboot\n");
break;
case 's':
printf("shutdown\n");
break;
default:
goto INVALID;
}
break;
default:
goto INVALID;
}
case 1:
printf("...\n");
break;
default:
goto INVALID;
}
return 0;
INVALID:
printf("usage\n-r: reboot\n-s:shutdown\n");
return 1;
}
0749デフォルトの名無しさん
NGNGって出てきます。
どうしたらいいでしょう。
0750デフォルトの名無しさん
NGNGポインタ周りのバグだな。頑張ってデバッグしろ。
金があるなら BoundsChecker とか Purify 使う。VC6 なら _CrtSetDbgFlag() で
ヒープのチェックを厳密にすると良いかも。
0751デフォルトの名無しさん
NGNGなんですか?
0752デフォルトの名無しさん
NGNGアプリケーションデータのこと。
クラスっていうのはC++のキーワード。
構造体をもっと便利かつ複雑にしたもの。
0755NEWTON
NGNGf(x)=0をもとめられる
プログラムください。
0756デフォルトの名無しさん
NGNG{
return 0;
}
0757NEWTON
NGNG(x0,f(x0))の接線の方程式
y=f'(xo)(x-x0)+f(x0)
この接線がx軸と交わるx1は、
x1=x f(x0)/f'(n)
xn+1=x-f(xn)/f'(xn)
|xn+1 - xn|<0.00001
f'(x)はf(x)の微分
f(x)=3x3−5x2+2x−3としたとき
f(x)=0の解をnewtom法
微分f'(x)=9x2-10x+2
プログラムを作ってください。 m(-_-)m
0758デフォルトの名無しさん
NGNG>プログラムを作ってください。 m(-_-)m
そういう姿勢はここでは許されていません。
逝ってよし扱いとなりますので、
誰も答えない事になっています。
叩かれる覚悟はよかですか?
0759デフォルトの名無しさん
NGNGニュートン先生、日本語に慣れていないのは仕方ないのかもしれませんが、
自身の名前を冠した手法のつづりを間違えているのはどうかと思います。
あと、怜タンが暇そうにしていたので、宿題スレをたずねてあげたら喜ばれますよ。
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGBASICで作ってみた
↓
0762デフォルトの名無しさん
NGNG悔しいかったら作ってみな
0763デフォルトの名無しさん
NGNGOccamで作ってみた。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG悔しいかったら作ってみな
ちゃんとUPしろよ
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG悔しかったら作ってみな
ちゃんとUPしろよ
0770デフォルトの名無しさん
NGNG作ってあげたら
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGこんな簡単な問題だれにでも書けますけどね、
もうだれも書いてくれないでしょう。
ま、自分で苦しみなさい。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGななこSOS!
0778デフォルトの名無しさん
NGNGやっぱりすごくエレガントなコードになるんだろうけど。
0779デフォルトの名無しさん
NGNGこのスレどころか、この板にも来る資格ネェよと言ってみるテスト。
0780愚民
NGNGマズ−
私もNEWTON法が解けないんですけど教えてください。
0782デフォルトの名無しさん
NGNGつーか、NEWTON法も何もしらなくても
することは全部問題文に書いてあるわけね。
それなのに出来ないのはただのアフォです。
しかしてアフォな上に失礼なクレクレ君。
0783デフォルトの名無しさん
NGNGできーるシリーズの他にあったら教えてください。
0784愚民
NGNGnewtom法
(x0,f(x0))の接線の方程式
y=f'(xo)(x-x0)+f(x0)
この接線がx軸と交わるx1は、
x1=x f(x0)/f'(n)
xn+1=x-f(xn)/f'(xn)
|xn+1 - xn|<0.00001
f'(x)はf(x)の微分
f(x)=3x3−5x2+2x−3としたとき
f(x)=0の解をnewtom法
微分f'(x)=9x2-10x+2
ニュートン先生が757 で書いてました。
0785デフォルトの名無しさん
NGNGそんなあなたにここがおすすめ
http://www.aviva.co.jp/
逝け
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGCコンパイラとデバッガとエディタ。
そしてライブラリのソース。以上。
0788デフォルトの名無しさん
NGNG>できーるシリーズ
・・・・・
ネタですか?
0789デフォルトの名無しさん
NGNGプログラミングができる友人
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNGいまならアヒル本が付いて250円。デアゴスティーニから。
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNGApplication Binary Interface
関数の呼び出し規約(引数の渡し方、呼び出し側で保存すべきレジスタ等)や
実行ファイルのヘッダ構造などを規定する。
0796デフォルトの名無しさん
NGNG{
p = "hoge";
}
void main(void)
{
char *p;
get_str(p);
printf("%s\n", p);
}
このコードをコンパイルすると
「値が割り当てられていないローカルな変数 'p' に対して参照が行われました。」
と警告を出され、構わず実行すると強制終了するんですが、何が悪いんでしょうか・・・。
0797デフォルトの名無しさん
NGNGvoid get_value(int i)
{ i=500;}
int main()
{
int i=0;
get_value( i );
return 0;
}
とかやって、mainの i が0のままだ、とか仰るのでせう。
0798796
NGNGそれについてはわかっていたつもりだったんですが・・・。
767のmainは
void main(void)
{
char p;
get_str(&p);
printf("%s\n", p);
}
と等価ではないんでしょうか?
0799796
NGNG上のは大間違いですね・・・。
0800デフォルトの名無しさん
NGNG文字列っつーか…。ポインタ変数でもなんでも普通の変数と
変わらんので、他の関数の中で書き換えたいなら
char *p;
get_str(&p);
って形になるように get_str を作らんと。
0801デフォルトの名無しさん
NGNGこれを見ただけで頭が拒絶反応を起こす罠
0802796
NGNGget_strにはpのアドレスが渡るのかと思ってました・・・。
おかげで一つ賢くなりました。
void get_str(char **p)
{
*p = "hoge";
}
としてみたら期待通りに動きました。
ありがとうございました。
>>801
スペース節約の為、 return 0; を省く為にvoidにしました。
普段は一応intを返してます。
0803デフォルトの名無しさん
NGNG渡して関数の中で実体を参照する。
逆に言えばポインタ渡しをしなければ勝手に書き換えられたりしない。
たぶんコードをみたら納得すると思う。
#include <stdio.h>
void get_str(char **p){
*p = "hoge"; /* ポインタをもらって実体を参照する */
}
int main(void){
char *p;
get_str(&p); /* ポインタを渡たす */
printf("%s\n", p);
return 0;
}
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG実はC99という罠
0806デフォルトの名無しさん
NGNGとりあえずこんなの見つけたが、ごっつい量や...
http://www.cl.cam.ac.uk/~mgk25/volatile/ISO-C-FDIS.1999-04.pdf
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGプログラミング言語Cにコンストラクタはありません。
気にしなくても良いですよ。
0809デフォルトの名無しさん
NGNGCにはコンストラクタはない
C++にはある
http://www.bohyoh.com/CandCPP/FAQ/FAQ00084.html
0810デフォルトの名無しさん
NGNG建造者,建設者
0811807
NGNG0812デフォルトの名無しさん
NGNG文字型もたぶんありません。
0813デフォルトの名無しさん
NGNGtypdef char* string;
string str = "sage";
0814デフォルトの名無しさん
NGNGごめんなさい。逝って来ます。
0815デフォルトの名無しさん
NGNGここはどう? 日本語のページだよ。
ttp://seclan.dll.jp/c99d/c99d00.htm
正確な仕様書ではないけど、従来のCとなにが変わったのか概要を知るにはいいと思う。
0817806
NGNG0818デフォルトの名無しさん
NGNGgcc-3.x じゃないとだめなのかな?
0819806
NGNGとか言われます。
cygwin gcc は 2.95.3-5 ですな。
現在 GCC 3.X 導入画策中っす。
0820デフォルトの名無しさん
NGNG0821デフォルト名無しさん
NGNG0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNGC++ → つ
おったち度で言うとこう。
まあ例外として、神が降臨すると
C++ → |
という具合。
0824熱血初心者
NGNG#include <stdio.h>
#include <string.h>
int main(void)
{
char s[256];
while(gets(s) != NULL)
if(strlen(s) >= 80)
puts(s);
return 0;
}
でよいですか?
0825デフォルトの名無しさん
NGNG80字より という以上、80字の行は含まれない。 よって、間違い。
0826デフォルトの名無しさん
NGNGアビバ逝け!
0827熱血初心者
NGNG0828デフォルトの名無しさん
NGNG10000字の行があったらそれで正しく表示できるのかと56時間(略)
0830デフォルトの名無しさん
NGNGmacのテキストファイル食わせると死ぬ罠。
0831デフォルトの名無しさん
NGNGもう要らないのかもしれないけど、とりあえず見つけたので。ほい。
http://www.arai.pe.u-tokyo.ac.jp/~arai/lectu/optim-j.html
でも、連立ニュートン法って書いてあるので、別物かな?
こっちのうほうがいいかも。
http://www.cs.reitaku-u.ac.jp/~ykago/semi/semi1-3.html
0832デフォルトの名無しさん
NGNGバカを甘やかさないように
スレに定住されたら困るので。
0833デフォルトの名無しさん
NGNGconst string str = "sage";
としてハマるの罠。
次のうち、コンパイルできないのはどっち?
str = "age";
*str = ' ';
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNGこの宣言の読みかたが分かりません。
”signalは第一引数にint sigをとって、...
ここから先を教えてください。お願いします。
0837デフォルトの名無しさん
NGNGばらしとけ
typedef void (*functype)(int sig);
functype signal(int sig,functype func);
0838sage
NGNGとり、 int sigを引数に取る void型関数へのポインタを戻り値として返す。
0839デフォルトの名無しさん
NGNGよくわかりますた。
0840デフォルトの名無しさん
NGNGと宣言したのを
realloc(hoge,strlen(hoge) + i + 1);
/* iはunsigned intの適当な値 */
って使い方はよくないですか?えっと、つまりhogeのメモリ領域を
再確保する際に、strlen(hoge)って使うのがよくないのかな
と思いまして。それとも
n = strlen(hoge) + i;
realloc(hoge, i + 1);
とかのが良いですか?
0841デフォルトの名無しさん
NGNG関数へ渡される引数は、関数呼び出しに先立ってすべて評価されてから
渡されます。なので、>>840の場合どっちも同じです。
0842デフォルトの名無しさん
NGNGわかりました。ありがとうございます。
0843デフォルトの名無しさん
NGNGrealloc(hoge,strlen(hoge) + i + 1);
2)
new_strlen = strlen(hoge) + i;
realloc(hoge, new_strlen);
確かにどっちも同じだしこの程度ならあまり変わらないけど、
どっちが見やすいかと言えば後者だと思う。
>hogeのメモリ領域を
>再確保する際に、strlen(hoge)って使うのがよくないのかな
と迷う時点であまり好ましくないなと思う。
そういうことが積み重なっていくとコード全体が読みづらくなる。
しかしもちろん一時変数が増えることによってコードが読みづらくなったりもするので
これはケースバイケースであることは言うまでもない。ただし一時変数だらけになるのは
その時点で関数の機能の切り分けに問題があると思われる。
基本的には2をおすすめする。
0844デフォルトの名無しさん
NGNG単発すれとかネタスレが多いので上げとく
0845デフォルトの名無しさん
NGNGnew_strlen = strlen(hoge) + i;
は
new_strlen = strlen(hoge) + i + 1;
だね。
0846840
NGNGkey_stringに含まれるlookforをreplaceに置換するというプログラム
です。実はまだよくポインタとかわかってない厨房なんですが、参考書や
WEBにあるサンプルを参考にしながら作ってみました。
void ReplaceTag(char *key_string, const char *lookfor, const char *replace)
{
char *reference_string, *sub_string;
int key_len, replace_len, hit_to_top, temp_len = 0;
sub_string[0] = '\0';
key_len = strlen(key_string);
replace_len = strlen(replace);
while(1) {
//lookforがある位置を検索
reference_string = strstr(key_string, lookfor);
if (reference_string == NULL ) {
realloc(sub_string, strlen(sub_string) + strlen(key_string) + 1);
strcat(sub_string, key_string);
break;
}
//lookforの1つ前までの長さを取得
hit_to_top = key_len - strlen(reference_string) - temp_len;
//メモリの再割り当て
realloc(sub_string, hit_to_top + strlen(sub_string) + 1);
//lookforが見つかった場所の1つ前までをコピー
strncat(sub_string, key_string, hit_to_top);
strcat(sub_string, replace);
reference_string ++;
key_string += hit_to_top;
temp_len = (hit_to_top + 1);
}
key_string = malloc(strlen(sub_string) + 1);
strcpy(key_string, sub_string);
free(sub_string);
}
コンパイルは通るのですが、実行時にエラーになります。ドコで
コケてるのかすらわかりません。もう3日ほど費やしたのですが。
どうかご教授ください。
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGreallocの結果のアドレス受け取ってないじゃん
reallocは、その結果アドレスが変化することを考慮して使うものだよ。
0849デフォルトの名無しさん
NGNGよろしくお願いします。
0850デフォルトの名無しさん
NGNGreplace ってシンボルが関数じゃなくて変数なあたり、激しく読みにくい…。
(ふつー動詞は関数、名詞は変数っつー気が)
問題点多数たが、とりあえず
> sub_string[0] = '\0';
これでダメだろ。最初の時点では sub_string は有効なメモリ領域を指して
いない。
0851840
NGNGsub_string = realloc(sub_string, hit_to_top + strlen(sub_string) + 1);
なんですね。お手数おかけしました。
0852デフォルトの名無しさん
NGNGinfo gdb では不満か? 使い方で悩むなら xxgdb とか ddd, Emacs の
gdb-mode のような
対話的に使用できるインターフェース
をかぶせて使うのも手だと思うが。
0853デフォルトの名無しさん
NGNGhttp://flex.ee.uec.ac.jp/texi/gdb-j/gdb-j_toc.html
0854デフォルトの名無しさん
NGNGhttp://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-4.18/gdb_toc.html
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNG形がほぼ同じで「return 0;」だけが違うのですよネ?
これって特に覚えておく必要あります?
・・・って頭には既に刻み込まれていますが(^^;
0857デフォルトの名無しさん
NGNG「;」をセミコロンと読むように。 一応ネタではないです。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG~は、URLに有る時はチルダだな。
HTMLのキャラクタセットの説明書いておくと、
| Vertical bar
^ Caret
~ Tilde
0862デフォルトの名無しさん
NGNGとりあえず仕様としてはたとえば文字列 key_str = "hogehogeabcdef", lookfor = "abc",
replace = "xyzzy"があってReplaceTag(key_str, lookfor, replace)ってやると
key_str = "hogehogexyzzxdef"っていう感じでいい?
問題点はたくさんあって第一にはvoidで関数の中でkey_stringを書き換えてもとの文字列を
変更したいんだよね。それなら
void ReplaceTag(char **key_string, const char *lookfor, const char *replace)
という風に宣言して呼び出し側ではReplaceTag(&key_str, lookfor, replace)という感じで呼び出さないと
いけない。
それから悪いけど関数の中身が何やってるのかよくわからない。
「key_stringに含まれるlookforをreplaceに置換するというプログラム」
というのならまず
char *destというポインタを用意
置換した後の文字列の長さを求める。
その文字列分mallocでdestの領域を確保。
lookforの先頭までkey_stringをdestにコピー
replaceをdestにコピー
lookforのあとから最後までkey_stringをdestにコピー
destをkey_stringに渡す。
という感じがいいんじゃないかと思う。
0863デフォルトの名無しさん
NGNGシンボルってアドレスですか?
それともアドレス以外にシンボルとしてテキストに占有しているのでしょうか?
またstripコマンドでシンボルが取り除けるとはどういうことでしょうか?
お願いします。
0864デフォルトの名無しさん
NGNG0865857
NGNGありがとうございました。
0866デフォルトの名無しさん
NGNGの「処理系」は、具体的にどのようなことを指してるのですか?
0867デフォルトの名無しさん
NGNGコンパイラ。OS。ハードウェア構成、等々言い出せば際限無い。
多くの場合「違うぞゴルァ」という指摘をあらかじめ防ぐためのもの。
0868デフォルトの名無しさん
NGNG処理系 = コンパイラと思っておいていい。
0869デフォルトの名無しさん
NGNGこのスレの中で処理系と出た場合は>>868。
0871デフォルトの名無しさん
NGNGふつー、コンパイルすると機械語コードに変換されるんだけど、
デバッグのため、関数名とか変数名とかの名前を一緒に記録
しておくと、デバッグ中にわけわからんアドレスを「これ、どの
変数に対応しとるんじゃ!?」と悩まなくてすむ。
で、この関数名とか変数名とかその他文字列がシンボルだね。
で、シンボルを実行ファイルに埋めこむと、上記の利点の反面、
サイズがでかくなるので、もうデバッグしなーいってときは、
シンボルテーブルを削っちゃってもいいわけだ。これをやって
くれるのがstrip。
0872デフォルトの名無しさん
NGNGデバッグ以外にも、リンク時には必要になるよね。
オブジェクトファイルやライブラリを strip すると不幸になるので、気をつけ
ましょう。あと kernel も strip できるけど、やるといくつかコマンドが正常に
動かなくなる。(でもルータとして使う程度なら、動作に支障はない)
0873初心者
NGNGしかもほとんど時間差なしというのがよいです
余計に自分で調べられるところは調べて本当にわからないところだけきけばよいので自分で調べる癖もついてよいです
なんて、最近こういうところを見ていて思った大きな独り言でした
0874デフォルトの名無しさん
NGNGとても解かり易い解説をありがとうございました。
本当に勉強になります。
0875デフォルトの名無しさん
NGNGHANDLE型が出てきますがHANDLE方とはいったい何なのでしょうか?
VC++6をつかってます
また
ピアソンエデュケーション社から出ているwin32システムサービスプログラミングという書籍について皆さんどう思われますでしょうか?
ああ言う書籍は結構MSDNヘルプに載っていることを書籍課したような気がするのですがプロの方々はどう思いますか?
よろしくお願いいたします
0876デフォルトの名無しさん
NGNG実体はvoid*だけど。不完全型のポインタとおんなじで
「Windowsである俺様には重要やけど、おまいら一般
プログラマは、内容を参照しようとすんなよ、バカチンが」
っていうような感じ。そういうオブジェクトを格納・参照する型が
HANDLEなわけよ。UNIXソケトハンドルがintなのとそう変わらない。
ああ、そうそう。「スレ違い」だよ。
0877デフォルトの名無しさん
NGNGtypedef (void *) HANDLE;
0878デフォルトの名無しさん
NGNGそう思っていると自分の質問は無視されるという罠。
そうじゃなければネタレスばかりつくという罠。
せっかく教えてもらっても実は間違いという罠。
鵜呑みにしてはいけません。自分で調べようという人ならば2chより先に
自分のもってる本の索引を引く、サーチエンジンにキーワードを放り込む、
その先で解決に結びつきそうな糸口をさがす。そういうことをするひとなら
要領をえた質問ができるだろうからちゃんとした答えが期待できるでしょう。
0879デフォルトの名無しさん
NGNG結局typedefしているだけなんだ
0880デフォルトの名無しさん
NGNGyes ヘッダ見れ。winnt.hにいた。正確には
>typedef void *HANDLE;
だったが。
0881デフォルトの名無しさん
NGNGえっくすおあ で済ましてるのは軟弱ですか?
0882デフォルトの名無しさん
NGNGえっくすおあです。えくすくれっしヴおあなんて長ったらしい。
0883デフォルトの名無しさん
NGNG>>880
本とだ
winnt.hにいた
初めて知った
でもvoid* は何なのですか?
型のないポインタとは?
(戻り値のないポインタ?)
ポインタにしまっておくだけということなのでしょうか?
それともHANDLEはWINの中でしか関係ないというようなのでWINが隠してしまうからHANDLE型とか?
ちょい日本語変ですが。。。
0884デフォルトの名無しさん
NGNG本の話はこっちかな。
推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50
「スレッド一覧はこちら」ってとこみるとあがってないスレッドも見れるから。
今度から質問する前に先ず自分で探しとけ。
0885デフォルトの名無しさん
NGNG汎用のポインタ。
どんな型のポインタもに代入できる便利だけど節操が無いポインタ。
0886sage
NGNG本当はね、意味のある構造体へのポインタだったり、
意味のある構造体を指すポインタへのポインタだったりするんだけど、
ユーザプログラムに中を見られたり、中を書き換えられたりされたら困るから
(CPUの保護機能を使って元々見たり書いたりできないようになってるけどね)
意味のない汎用ポインタ void * にキャストしてるんだよ。
0887デフォルトの名無しさん
NGNGELF形式の実行ファイルhogeがあるとします。
この時
./hoge
とするとプログラムhogeが実行されますが
この時のローダーの仕事は
☆ハードディスク上のオブジェクトhogeを各セグメント(.text, .data, .bss等)に分割しメモリ上に配置する。
#当然ながらオブジェクトhogeがメモリ上にそのまま読み込まれるわけではない。
というので当たっていますか?
これ以外にローダーの重要な仕事というのはあるのでしょうか?
よろしくお願いします。
0888デフォルトの名無しさん
NGNGもう十分説明は出てるが追記。使うとしたら
| int n = 100;
| void *p = &a;
| printf("%d", *(int *)p);
って感じ。型キャストを外すと許されない型といわれた(BCC)。
0889デフォルトの名無しさん
NGNG| 参考になりますね
.\
. ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
_ _ _ __,、--――- 、
,、'´/ `´´ `''´ ̄,、―'´ ̄ '´ ̄..`ヽ、_
// '´ / ,、 ,、 / '´ ̄`ヽ、 /`l
/ ´ // // // //  ̄= ,、'´| )
| | | / / / / // ,、'´ | /\
,| | || / / / _,、'´ | /― `l
| | / ,、--イ |_,、'´ ̄`ヽ\`l
| `l |`l | | ,、'´ / _,、'「== _ `l
\ /'l _,、'´ ̄ / ,、-'´ ̄ ‘l__ /,\ |
`l ├―'´ / _,、'´ ̄ / ̄ \__ | /|´ | |
,、'´ ̄_/__/--┴'´ ̄ / _ \|| └`l |
└`┬'| __ / /_`__ \ | |―-
l `ヽ-、_ ´ / < `-´/ l l'ノ/,、|/ `l
`l '´__ ヽ ̄ ̄ / | // `l
`l / `´/l `''´ ノ |/ `l
|  ̄ ̄/| / / ̄ `l
\ / -、 `l/´ |
`lヽi/ _,l / /、
/`l |`―´_,-、 ,、-'´ /  ̄`ヽ、
/ \ \二二=< / `ヽ、
/ \|---―'´`l /´ `ヽ、
| `l _ `l /´/ / ,、-'´ ̄\
`l | `l / / / / \
`l | ,、'´\ /)/ /´
,、'´´`l / `―フ ̄ ) ,、'´ /
// \ / | / ̄`ヽ、,、'´フ /
0891デフォルトの名無しさん
NGNG基本的にはそんなとこじゃない?
シェアードライブラリとかの処理はどうなってるのか知らないけど。
0892デフォルトの名無しさん
NGNGmain()
{
/* char型の配列を宣言し、初期化をする */
char charray[]="はじめての"
/* printf()関数を使って文字列を表示する */
printf("%s", charray);
/* printf()関数を使って文字列を表示する */
printf("Cプログラム\n");
return0;
}
て本に書いていたのを初めてコンパイラしようとしたのですが
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
BCC32 -WC -3 -Od -w- -AT -pc -H- -k -b -v -y -nDebug -c E:\program.c\2.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
E:\program.c\2.c:
エラー E2209 E:\program.c\2.c 1: インクルードファイル 'studei.h' をオープンできない
*** 1 errors in Compile ***
** error 1 ** deleting Debug\2.obj
Compile End !! (Elapsed time 0:00.030)
とでてしまいます。なぜでしょうか、
http://www.borland.co.jp/cppbuilder/freecompiler/index.html
を使ってます。
0893デフォルトの名無しさん
NGNGE:\program.c\2.c
の1行めになんて書いてあるの?
0894デフォルトの名無しさん
NGNGローダーといっても、
- kernel が立ち上がる前の boot loader
- kernel 立ち上がった後 exec システムコール内部で行われる処理
どのあたりを指していってるのか明示しないと、話が混乱しそう。あと
書籍で Linkers & Loaders 読むのが良いんじゃないのか? (俺は
まだ読んでないんだが)
0895892
NGNG#include <studei.h>
と書いてありますが、それのことでしょうか?
0896デフォルトの名無しさん
NGNG正解はstdio.hだ
0897892
NGNGCompile End !! (Elapsed time 0:00.020)
と出たんですが、出力結果というのでしょうか、それは出てこないんでしょうか?
0898デフォルトの名無しさん
NGNG同じディレクトリに何かできたと思われるのでそれを実行汁。
人に聞いてばかりでなく、少しくらいは自分で調べろ。
0899デフォルトの名無しさん
NGNGには #include<stdio.h> って書いてるのに、
>>895
って、
ネタですか?
そうでなかったら、
charray の行末のセミコロン抜けてたりしてるから、
まず正確にコードを写すことを心がけた方がいいと思うよ。
0900デフォルトの名無しさん
NGNGコードを手で写している以上、まともなプログラマにはなれない。
0901デフォルトの名無しさん
NGNGコピペだけ覚えてもまともなプログラマにはなれない。
0902デフォルトの名無しさん
NGNGとりあえずくだらないタイプミスが何カ所かあります。指摘するのは簡単なんだけど
1行目が #include<stdio.h> なのにコンパイラに
>エラー E2209 E:\program.c\2.c 1: インクルードファイル 'studei.h' をオープンできない
っていわれているのだから掲示板に書き写すときにまたタイプミスしています。
自分が実際に書いたコードをコピペした方が問題点がはっきりするからコピペ奨励。
0903892
NGNGコンパイラして違う文章のエラーを貼り付けてしまっていたみたいです。
#include <stdio.h>
main()
{
/* char型の配列を宣言し,初期化する */
char charray[]="は\nじ\nめ\nて\nの\nC\n";
/* printf()関数を使って文字列を表示する */
printf("%s",charray);
return 0;
}
で、
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
Compile End !! (Elapsed time 0:00.020)
こうなりました。
0904デフォルトの名無しさん
NGNGうん問題なくコンパイルできて実行できるよ。
で、何が聞きたいの?
もしかして
>と出たんですが、出力結果というのでしょうか、それは出てこないんでしょうか?
のことかい?自分の環境はちゃんと書こうね。
出力結果を見るにもしかしてBCC Devを使ってると思うんだけどそれならツールバーの
実行を実行しよう。
それとこれはCの質問じゃなくてBCC Devの質問と言うことになる。BCC Devのことをこのすれで聞いて悪いことは無いと思うけど
C言語一般の話じゃないのでちゃんと環境を書いてから質問すること。
ちなみに一般的にはhoge.cというソースを書いたらそのディレクトリで
>bcc32 hoge.c [return]
とやって同じフォルダにhoge.exeができるので
>hoge [return]
とする。ちなみにこれもwindowsでbcc32だからこうなるのであってlinuxとかだとふつうは
$gcc hoge.c [return]
$./a [return]
となる。環境を書かないとみんな一般的な話をするしかなくなるので自分がどういう状況で
困っているのか必要十分な情報を伝えるように。
今回はコンパイラのメッセージがあったから予想がつきました。そのうちエラーメッセージの読み方も
わかるようになります。
0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNGわかった。
BCC Devでコンパイルするとコンパイルだけして実行ファイルは生成されません。
実行ファイルを作成するにはmakeしてください。そうじゃないと実行ボタンがグレイアウトして
有効になりません。
これも903がBCC Devを使っていると言ってくれればすぐわかったかもしれないのに。
甘やかしすぎちゃったかな。
0907デフォルトの名無しさん
NGNG>実行できないのですが
やれやれ、、、、、、、、、、、、、。
「実行ボタンがグレイアウトして押すことができない。」
という一文がなぜ書けないんだ。
君は教えてくん認定。
もう俺は知らん。
0908デフォルトの名無しさん
NGNGmakeは、コンパイルするコマンドであって、実行するコマンドじゃないよ。
Cではコンパイルして実行ファイルを一度生成して(これをmakeがやる)、
次にその実行ファイルをdos窓から実行すると、実行されるんだよ。
C:\>e:
E:\>cd \program.c
E:\program.c> 2.exe.
て感じかね?
(コンパイルして生成された実行ファイルがE:\program.c\2.exeならね)
漏れはWindowsではVCしか使ったことないので、BCCの
詳しいとこは分かんないけど。
0909デフォルトの名無しさん
NGNG結局ここに教えて君が多数住み着くようになり周りの奴にとって
害になるからな。
質問するやつは「十分に自分で調べた後」、「環境」、「状況」を
できる限り細かく書け。何がわからないかがわからなければ
こちらとしても答えようが無い。
0910ビル・ジョブス
NGNG「色々なオブジェクトを管理するための構造体へのポインタ」
って事になるな。
0911デフォルトの名無しさん
NGNG間違っちゃいないが、素人っぷり全開なレスにしか見えないのは俺だけか?
0912デフォルトの名無しさん
NGNGまぁ奴の言うことは、いつもそうだよ。
0913ビル・ジョブス
NGNGならチミの技術力は「素人の10分の1」くらいだよ。
0914デフォルトの名無しさん
NGNG用語の使い方なんか、こいつどこまで理解してるのかって不安になるよな。
0915ビル・ジョブス
NGNG0916ビル・ジョブス
NGNGそうだな・・・
DC(デバイスコンテキスト)って何ですか?とか、お気楽に聞かれても
いっぱいあるから「え!何に使うDC?」って聞き返してるよ・・・フー
0917デフォルトの名無しさん
NGNG0918ビル・ジョブス
NGNGあっ!そーだ!
じゃー貴様が説明してみろよ!(50文字以内で)
0919ビル・ジョブス
NGNGそんな事は百も承知ですが・・・フー
0920デフォルトの名無しさん
NGNGおいおい >>910 と言ってることが違うだろ(w
0921ビル・ジョブス
NGNG「簡単に」って書いてあるだろ?
それとも「HANDLEの指し示す型を全部言え」ってか?
おまえアフォ?
0922デフォルトの名無しさん
NGNG日下部さん帰ってきてよ〜
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNGペンとかブラシ(GDIオブジェクト?)って意味でよろしいか?
とすると、>>911>>914が気になってる点はどこ?
0928デフォルトの名無しさん
NGNGこのスレは sage なきゃならんの?
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG一番気になってるのは、たぶん、それがビル・ジョブスだって事。
0931デフォルトの名無しさん
NGNGハンドルが指し示すリソースって、プロセスとかファイルとかデバイスとか、
そういうレベルで捉えるもんでしょ。
まあ、実装は特定のメモリとそれを指すポインタかもしれないけど、
「構造体」って言葉で説明してしまうとなんかちがうよな。
0933デフォルトの名無しさん
NGNG今頃とんちんかんな回答するやつは誰だ?
0934934!
NGNGほうがトンチンカンだろ。
0935デフォルトの名無しさん
NGNGかわいそうに
0936デフォルトの名無しさん
NGNG#define ITTEYOSHI (CHUBO*8)
のような多重defineは合法ですか?
0937デフォルトの名無しさん
NGNG合法だ。
0939デフォルトの名無しさん
NGNGハンドルはハンドルだろ
実装ならポインタよりテーブルのインデックスのほうが近い(事が多い)
0940デフォルトの名無しさん
NGNGアラインしないほうがメモリが節約されていいような気がするのですが。
0941デフォルトの名無しさん
NGNGバイト境界にアライン、というと1バイト境界, つまり逆にパックすることを意味するように取れるが。
まあ4とか8とかという意味なら、
1. プロセッサによってはそもそも4バイトワードを4で割り切れないアドレスでアクセスできない。
バスエラーというプロセッサ例外が発生し、停止する。
2. そのアクセス機能があるプロセッサであっても、複数のワードをまとめてアクセスしたあと、
ずらして合成するため、アクセス時間が余計にかかる。
ということで、アラインサイズより大きなデータへのアクセスは、普通避ける。
0942デフォルトの名無しさん
NGNG0943U-名無しさん
NGNG今だ!800番ゲットォォォォ!!
 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
∧赤∧
(・∀・ ) (´´
( つG つ (´⌒(´
/ /〉 〉≡≡≡(´⌒;;;≡≡≡
(__)(__) (´⌒(´⌒;;
ズザーーーーーッ
0944デフォルトの名無しさん
NGNGFILE構造体をMSDNのヘルプで見ると
stdio.hをインクルードしろ、と書いてありますのでstdio.hのなかに書いてあるのかも、と思ってstdil.hの中身を見てもFILE構造体の定義がありません
stdio.hのなかにcruntime.hがインクルードしてありますのでそこを見ても入ってません
FILE構造体はどこにあるのでしょうか?
VC++をインストールするときにVC++のインストールはオプションまですべてインストールしたのですが…
0945デフォルトの名無しさん
NGNGgrepした?
0946デフォルトの名無しさん
NGNGBCC5.5にて、stdio.hに発見。
VC6.0にて、stdio.hに発見。
0947デフォルトの名無しさん
NGNGです
見つけました
失礼いたしました
struct _iobuf{} をtypedef しているのですね
失礼いたしました
0948初心者1
NGNG0949デフォルトの名無しさん
NGNGforeach(<>)
{
$data = $_;
$data =~ /\/\/.*$//g;
$data =~ /\/\*.*\*\///g;
}
0950デフォルトの名無しさん
NGNGCつかってて思うのは、Perlの簡潔さと暗号っぽさだなぁ。
しかし文字列解析がめっちゃ強いのはやっぱり美味しい…。
0951デフォルトの名無しさん
NGNG何を言っているのかよくわからん。プリプロセッサのことか?
0952初心者1
NGNGCのコメントを除去するプログラムを
Cの文法で教えてください。
0953初心者1
NGNGwhile(まだ行がある)
if(コメント開始文字列がある)
除去除去
....?なんか違うかな・・・(-_-)
0954デフォルトの名無しさん
NGNGだけど、単一文字デリミッタならいけるんだけど、複数文字列だと配列に順番に
シフトしながら入れていって比較を繰り返すという感じにするしかないんでしょうか?
もうちょっとエレガントで少ないコード行でできませんかね?
0955デフォルトの名無しさん
NGNGstrstr()じゃだめ?
0956デフォルトの名無しさん
NGNGコメント除去はスチャラカでいいなら
1行をバッファに読み込む
そのバッファを一文字づつ読んでいってホワイトスペース、/*の並びをコメント開始
としてコメント終了の*/まで読み飛ばす。
でいいでしょう。でも複数行にわたったコメントとか文字列中の/*を見つけたときに
きちんと対応させようとすると結構やっかいです。とりあえず裸と言うことだから
上の仕様で書いてみたら。
>954
strstr使ったらうまくいきそうに思えるけど。デリミタのポインタが返ってくるんじゃないの?
0957デフォルトの名無しさん
NGNG>>956
ライブラリでそういう関数が既にあるんですね。
自分で作ろうとしてました。どうもです。
0958ビル・ジョブス
NGNGANSI/UNICODEに気を付けて。
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG「除去」って言葉が曖昧なんだけど、
コメントだけを表示するプログラム作ってみた。
参考にシル。
#include <stdio.h>
#define OUT 0
#define IN 1
#define BUFSIZE 8
int buffer[BUFSIZE];
int buffer_ptr = 0;
int getch(void);
void ungetch(int);
- つづく -
0962デフォルトの名無しさん
NGNG- つづき -
int main(void){
int c, d;
int state = OUT;
while((c = getch()) != EOF){
if(state == IN && c == '*'){
if((d = getch()) == '/'){
putchar(c);
putchar(d);
putchar('\n');
state = OUT;
continue;
}else{
ungetch(d);
}
}
if(state == OUT && c == '/'){
if((d = getch()) == '*'){
putchar(c);
putchar(d);
state = IN;
continue;
}else{
ungetch(d);
}
}
if(state == IN){
putchar(c);
}else{
continue;
}
}
return 0;
}
- つづく -
0963デフォルトの名無しさん
NGNGint getch(void){
int c;
if(buffer_ptr <= 0){
c = getchar();
}else{
c = buffer[buffer_ptr];
--buffer_ptr;
}
return c;
}
void ungetch(int c){
if(buffer_ptr <= BUFSIZE - 1){
buffer[buffer_ptr] = c;
++buffer_ptr;
}else{
fprintf(stderr, "Error: buffer full\n");
exit(1);
}
}
課題は自分でとくことに意味があると思うぞ。
0964デフォルトの名無しさん
NGNG0965961 - 963
NGNG間違ってたら誰かなおしといてクリ。
ところで次スレはどこ?
0966デフォルトの名無しさん
NGNG名前: デフォルトの名無しさん
E-mail: sage
内容:
先人のお言葉。
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのは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/qid%3D1005618315/250-3950205-1475419
・前スレ C言語なら、俺に聞け! <14>
http://pc.2ch.net/test/read.cgi/tech/1015286974/l50
0967デフォルトの名無しさん
NGNG> これでわからない、救いがたいヤツはあきらめろ。
> ・作ってわかるCプログラミング(アヒル本と呼べば通だ)
> http://dennou.gihyo.co.jp/books/void_c/
> http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419
いいかげん、これはいらないだろ。
かわりに、こっち載せといたら。
推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50
毒が足りないか。(W
0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG腰が低いのはイヤだな。なんとなく。
0971デフォルトの名無しさん
NGNG媚びてみるというのは?
0972デフォルトの名無しさん
NGNGネカマっぽい 藁
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG(あかんやん・・・。> Σ(`ヾ)<
0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNGcatchされてない例外。
0977デフォルトの名無しさん
NGNGcatchってなんですか?
0978デフォルトの名無しさん
NGNGたとえばHTMLなら<a href="URL">飛んでけ</a>や<br>
などというものなどの場合?
0979デフォルトの名無しさん
NGNGスレ違いだ。
http://pc.2ch.net/test/read.cgi/tech/1008311607/
でも嫁。
0980デフォルトの名無しさん
NGNGXMLやHTMLのタグを解釈するライブラリを探して使え。
それがなければ構文解析をするプログラムをCで書け。
0981デフォルトの名無しさん
NGNGparser を作る。
0982デフォルトの名無しさん
NGNG「IEコンポーネントを使い倒すスレ」ってのがあったな。
0983デフォルトの名無しさん
NGNGIEコンポーネントを使い倒すスレ
http://pc.2ch.net/test/read.cgi/tech/982930049/
0984デフォルトの名無しさん
NGNG取得した後に何をやるのかがわからなければなんともいえない。
0985978
NGNGわざわざありがとうございます
0986973
NGNGC言語っぽく俺に聞け! <15>
C言語なら、俺が聞く! <15>
C言語なら、俺を見ろ! <15>
C言語から俺が逝く! <15>
そろそろ番号がきびしくないか。
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNGこのスレのいい加減さを表してていい(藁
0991俺に聞いてくれませんか?
NGNG失敗しましたがなにか?
0992デフォルトの名無しさん
NGNG( ;´Д`)
0993デフォルトの名無しさん
NGNGC言語なら、俺に聞け! <15>
http://pc.2ch.net/test/read.cgi/tech/1016519243/l50
0994デフォルトの名無しさん
NGNGおつかれー
0995デフォルトの名無しさん
NGNG0996女性雑誌にも載ってるよ♪
NGNG0997デフォルトの名無しさん
NGNG女性雑誌 (;´Д`) ハアハア
0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。