トップページ⇒tech
1001コメント277KB

C言語のことは漏れらに聞け!!<サンキュー>

レス数が1000を超えています。これ以上書き込みはできません。
0001前スレ949NGNG
前スレのコピペだモルァ

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/

・前スレ <38>
http://pc3.2ch.net/test/read.cgi/tech/1035729526/

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさんNGNG
そし
0003前スレ949NGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

さらにコピペ
0004デフォルトの名無しさんNGNG
偽>>950の策略にはまりスレを立てる羽目になった>>949が立てたスレはここですか?
0005前スレ949NGNG
そです
0006前スレ955NGNG
1000行くぞゴルァ。
0007デフォルトの名無しさんNGNG
ああ、タイトルとともにまたレベルが下がるのか。
ああ・・
0008デフォルトの名無しさんNGNG
ここはObjective-Cの話題を持ってきてもいいんですか?
0009デフォルトの名無しさんNGNG
>>8
いや、ダメすぎ。
0010955NGNG
マ板の語尾にゴラァ!を付けるスレッドもよろしく
宣伝スマソ
0011デフォルトの名無しさんNGNG
level=level--; /* levelが1下がる */
0012デフォルトの名無しさんNGNG
>>11
無駄の多い処理ですな。
0013デフォルトの名無しさんNGNG
CとC# の違いを教えてください。
0014デフォルトの名無しさんNGNG
>>13
適当なソースコード探してきて比較して見な。全然違う。
001513NGNG
>>14
VC++.NETとVC#.NETのパッケージのソースコードの写真でわかりますた。
ご迷惑かけますた。
0016デフォルトの名無しさんNGNG
最初<サンキュー> って見たとき何を感謝しているんだ?とマジで思った・・・
鬱だ・・・
0017デフォルトの名無しさんNGNG
>>15
今どこにいるんだと小一時間・・・
0018デフォルトの名無しさんNGNG
math.hでa^bという計算をしたいのですがどうすればいいでしょうか?
0019デフォルトの名無しさんNGNG
>>18
a^bはビットごとのXORですが。

べき乗(だっけ?)ならpow()で。
0020デフォルトの名無しさんNGNG
>>18
pow(a,b);
でいいんじゃなかったっけ?
違かったらスマソ。
0021デフォルトの名無しさんNGNG
char s[512];
char *sp;
sp = s;
printf("s = %d\n", sizeof(s));
printf("sp = %d\n", sizeof(sp));
これが同じにならないのは何故ですか?
0022デフォルトの名無しさんNGNG
>>21
何故って…型が違うだろ?
0023デフォルトの名無しさんNGNG
ポインタと配列は違うからデス。
0024デフォルトの名無しさんNGNG
>>21
下はポインタのサイズ(きっと4バイトだろ?)
上は配列のサイズ(512バイト)
0025デフォルトの名無しさんNGNG
var_end(ap);で何かやってる処理系ってありますか?
何もしないのも多いと思いますし、必要ないともおもえるんですが...
0026デフォルトの名無しさんNGNG
CとC++ の違いを教えてください。
002721NGNG
ありがとうございます。>>21の状況で
spからsのサイズを出すことはできないのでしょうか?
0028デフォルトの名無しさんNGNG
>>27
できない。
だから一部の標準関数はサイズを引数として渡す。
002921NGNG
>>28
ありがとうございました。
0030デフォルトの名無しさんNGNG
関数をポインタで使う方法について教えてください。出来れば例をのせていただけると助かるのですが。
お願いいたします。
0031デフォルトの名無しさんNGNG
>>30
夕方あたりにちゃんと書いたのに無視なんですか?
悲しいです。
0032デフォルトの名無しさんNGNG
>>30
本に載っていないのかな・・・

#include <stdio.h>

int main()
{
int (*myputs)(const char *);

myputs=puts;
myputs("putsと同じように使える。");

return 0;
}
003332NGNG
もちろんこのコードにはなんの意味もないから。
実際はqsortライブラリ関数なんかでうまく使われているよ
0034デフォルトの名無しさんNGNG
そもそも関数へのポインタを使わなければならないのはどんな状況かお分かり?
それが分かってれば、前スレの終わりには関数へのポインタを使ったのがいくつかあったと思うが。
0035デフォルトの名無しさんNGNG
>>24
疑問なんだが、なぜ4バイトだと思う??
2バイトじゃないのか?

#include<stdio.h>

main()
{
int* a;
long* b;
char* c;
double* d;

puts("int* a");
puts("long* b");
puts("char* c");
puts("double* d");

printf("\n");

printf("sizeof a...%d\n",sizeof a);
printf("sizeof b...%d\n",sizeof b);
printf("sizeof c...%d\n",sizeof c);
printf("sizeof d...%d",sizeof d);
}ちなみに漏れのポインタ変数の確保するサイズは2バイト。
0036デフォルトの名無しさんNGNG
>>35
MS-DOSとか使ってる?
0037デフォルトの名無しさんNGNG
きっとCPUが286なのれす。
0038デフォルトの名無しさんNGNG
ドス窓のことか?
OSはWindowzeだけど。
0039デフォルトの名無しさんNGNG
>>37
どういうことですか?
詳しく聞きたいです。
0040デフォルトの名無しさんNGNG
>>35
「きっと」4バイト、と書いてある。
無論ポインタのサイズなどは処理系によって違う。
今ポピュラーな環境だとポインタサイズは大抵4バイトといっても
強ち間違いじゃないと思う。

ポインタサイズが2バイトの処理系というと、MS-DOSのsmall modelやら、
com (tiny) modelなんだろう。処理系で言うとLSI-C 86あたりか。
LSI-C 86の試食版でもfarポインタは扱えたと思うんで、
ポインタをfar修飾すればサイズは4バイトになる。
重ねて言うが、処理系によってこの辺は違う。
0041デフォルトの名無しさんNGNG
>>39
CPUがどんな感じにメモリを管理しているかの問題。
0042デフォルトの名無しさんNGNG
>>40
>>41
ありがとうございました。
>>40
かなりの知識の持ち主ですね。
前橋のポインタ完全制覇とか余裕そうです。

ちなみに、LSI-C(試食版)を使っております。
0043デフォルトの名無しさんNGNG
>>42
ここにいる奴の半分以上は余裕だと思われ。
複雑なようでわかれば簡単と。
0044デフォルトの名無しさんNGNG
>42

仕事にするなら完全制覇した上で就くのが当然。
それもやらんとゴミプログラマ雇ってる奴らが(以下略)
勉強がんばり〜。
0045デフォルトの名無しさんNGNG
>>43
もっと勉強します。

あと多少マルチスレッドになるんですが、
#include<stdio.h>

main()
{
char* color_name[]=
{
"hoge",
"piyo",
"hoge_p"
};

printf("%d\n",color_name); /*?*/
printf("%d\n",color_name+1); /*?+2*/
printf("%d\n",color_name+2); /*?+4*/
/*これは何故2バイトずつ進むのでしょうか?
char配列を指しているので、1バイトずつ進むと思うんですが*/

puts("");

printf("%s","aiueo");
}/*お願いします。*/
0046デフォルトの名無しさんNGNG
>>33
他にもatexitとかな。標準関数じゃないけどsignalとか。
signalのプロトタイプを初めて見たときは頭が真っ白になったよ(w
0047デフォルトの名無しさんNGNG
C FAQによるとsprintfって安全じゃないとのことですが
snprintfが使えない人たちってどうやって回避してるのですか?
やっぱC FAQの例みたいにファイルに書いたりしてるのでしょうか?
0048デフォルトの名無しさんNGNG
>>45
color_nameはcharの配列ではない。charのポインタの配列だ。
配列に入っているのは(char *)だ。
0049デフォルトの名無しさんNGNG
>>44
Arigatou
がんばります。
0050デフォルトの名無しさんNGNG
すみませんが教えてください。
C言語をはじめた3ヶ月、ほぼマスターしました。
ただまだGUIを使ったPGが作れません。何からはじめたらいいでしょうか?
0051デフォルトの名無しさんNGNG
>>50
環境は?
0052デフォルトの名無しさんNGNG
>>46
signalは標準
0053デフォルトの名無しさんNGNG
>>47
堅牢性が最重要のプログラムで、
printfに渡すパラメータが信用できないときは
ファイルに一度書くだろうな。

そうでないときは、えいやってやっちゃうこともある(w
ま、大抵snprintfが使えるのでそっちを使っちゃうけど。
0054デフォルトの名無しさんNGNG
>>48
メモリの中では
color[0]つまり*(color_name) には hogeの先頭アドレスが、
colo [1]つまり*(color_name+2)には piyoの先頭のアドレスが、
color[2]つまり*(color_name+3)には hoge_pの先頭のアドレスが、
入っているんじゃないんでしょうか?

具体的に教えていただけると助かります。
0055デフォルトの名無しさんNGNG
訂正
>>48
メモリの中では
color_name[0]つまりcolor_nameにはhogeの先頭アドレスが、
colo_name[1]つまりcolor_name+2にはpiyoの先頭のアドレスが、
color_name[2]つまりcolor_name+3にはhoge_pの先頭のアドレスが、
入っているんじゃないんでしょうか?

具体的に教えていただけると助かります。
0056デフォルトの名無しさんNGNG
>>55
その通り。で、その先頭アドレスが君のLSI-C試食版だと2バイトなのよ。
0057デフォルトの名無しさんNGNG
マルチスレッドじゃなくてマルチポストだった
0058デフォルトの名無しさんNGNG
>>53
レスありがとうございます。
幸いsnprintfが使えるようですので、これを使います。
0059デフォルトの名無しさんNGNG
>colo_name[1]つまりcolor_name+2
ここ、激しく間違いネ。まだ54の方が間違いが少ないネ
0060デフォルトの名無しさんNGNG
>>57
マルチポストってなんでしょうか?
マルチスレッドとは違うスレッドでも同じことを書き込むことですよね?
006150NGNG
環境はWindows2000です。使用しているコンパイラはBorlandC++です。
何からはじめたらいいでせうか?
0062デフォルトの名無しさんNGNG
>>61
PC窓から投げ捨てる。
0063デフォルトの名無しさんNGNG
>>60
キミセンスアルヨ
0064デフォルトの名無しさんNGNG
>>54
その通り。君の処理系だとポインタサイズは2バイトだったな。
だとすると、こんな感じ。

前橋のポインタ本を持ってるようだから、
(実はおれも持ってる。知り合いなので、ご祝儀に買った(w)
205ページのFig.3-19ポインタの配列を見てくれ。
このようなイメージで格納されている。
配列color_nameの要素はあくまでポインタだ。
配列にはポインタがずらずらと格納されてる。

だから、ポインタのサイズが2のとき、
要素が一つ増えると、アドレスは2増えることになる。

0065デフォルトの名無しさんNGNG
>>61
他の開発環境使った方が楽では?
0066デフォルトの名無しさんNGNG
>>61
こんなところからはじめてみては?

猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/ 
C言語で始めるWindowsプログラミング
http://web.kyoto-inet.or.jp/people/ysskondo/
0067デフォルトの名無しさんNGNG
>>64
知り合いなんですか???
やっぱり前橋さんは凄腕PGなのでしょうか?

0068デフォルトの名無しさんNGNG
いや、知ってるけどたいしたこと無いよ。
006964NGNG
>>67
んなこたあスレ違いだ(w
残念ながら一緒に仕事したことはないが、
おれよりははるかに優秀なプログラマだと思うよ。
007035,39,42,45,49,54,55,60,67==ZettonNGNG
>>68
むしろ自分の方が凄腕だと。(w
007150NGNG
>>66
ありがとうございます。試してみます。
極めたらまたきます。
0072HP電卓、■に何が入るのかが分かんないNGNG
#include<stdio.h>
#include<stdlib.h>
struct list{ int data;
struct list *next;};

void push(int y);
int pop();
void print_stack()
struct list *head=NULL;

void push(int y){ struct list *p; p=head; head=new list; if(head==NULL){ printf("Stack overflow.\n"); exit(1);} head->data=■; head->data=■;}

int pop(){ int y; if(head==NULL){printf("Stack underflow.\n");exit(1);} y=■;head=head->next;return y;}

void print_stack(){ struct list *p; p=head; while(p !=NULL){ printf("%d",■); p=p->■;} printf("\n");}

int main(){ int x,y,z; char s[10],c; while(1){ scanf("%s",s); c=s[0]; switch(c){
case'+':x=pop()+pop(); printf("%d\n",x); push(x); print_stack(); break;
case'-':x=pop(); y=pop(); z=y-x; printf("%d\n",z); push(z); print_stack(); break;
case'*':x=pop()*pop(); printf("%d\n",x); push(x); print_stack(); break;
case'/':x=pop(); y=pop(); z=y/x; printf("%d\n",z); push(z); print_stack(); break;
case'q':case'Q':exit(1);
default:push(atoi(s));
print_stack();}} return 0;}

0073デフォルトの名無しさんNGNG
うう、出掛けててネット触れなかった間に次スレ立ってた・・・。

しかし、1 は何故 「課題丸投げ禁止」 を書いてくれなかったの?
関連リンクは 2 以降にして、1 は諸注意でかためて欲しかった。
0074デフォルトの名無しさんNGNG
前橋の本にあるさ、P104のソースで
va_end();
ってなってて引数ないじゃん?
これいいの?
0075ZettonNGNG
>>74
間違ってると思います。
正誤表はこちら
http://member.nifty.ne.jp/maebashi/seiha/seigo.html
0076デフォルトの名無しさんNGNG
>>74
いいよ
0077デフォルトの名無しさんNGNG
>>74君氏んで良いよ…。
0078デフォルトの名無しさんNGNG
>>72
つかCじゃ無いじゃん…。
0079デフォルトの名無しさんNGNG
>>46

初めて見たとき、シグナルを送るだけなのになんで関数ポインタが必要なんだ?と思ったよ。
シグナルを送るのはraiseだよな(w
0080デフォルトの名無しさんNGNG
>>78
パッと見Cに見えるけど何なの?
0081デフォルトの名無しさんNGNG
>>78
うーん?
Cの範囲で書いていると思うけど?
なんか見落としているかな・・・
0082デフォルトの名無しさんNGNG
C99とかJISでしょうか?
0083もまずにパピコNGNG
>>81
head=new list
008481NGNG
>>83
おお!まじだ!
0085デフォルトの名無しさんNGNG
>>75
サンクス!
それにしてもとんでもなく多かった・・・。
果たしてこの本使えるのか?
っていうかなんか前橋ってむかつくな
0086デフォルトの名無しさんNGNG
>>73
前スレでも似たような事があったな。
0087デフォルトの名無しさんNGNG
>>77
なんで?
0088デフォルトの名無しさんNGNG
>>87
前スレの>>905
0089デフォルトの名無しさんNGNG
ポインターのサイズオフ
ターボシーは2だったよ
0090デフォルトの名無しさんNGNG
>>89
サイズオブ・・・・・どうでもいいけど
0091デフォルトの名無しさんNGNG
>>89
へぇ、俺にTurboC++5.0Jは4バイトだが。
0092デフォルトの名無しさんNGNG
near,far
0093デフォルトの名無しさんNGNG
>>73
遅レスだが、ここは宿題すれじゃないから、
そもそも課題をここに投げちゃいかんと思う。
0094デフォルトの名無しさんNGNG
以降


   あまりに環境依存・コンパイラ依存の話題禁止

 
0095コンパイラNGNG
今度の中間テストはポインタと構造体なんです。
全然わかりません(泣)
0096デフォルトの名無しさんNGNG
>>74
俺その本の第五刷持ってるよ!
23:va_end(ap);に直ってるよ。

>>91
ふ〜ん・・・買って来よ(以下略
0097デフォルトの名無しさんNGNG
つーかプログラミングって学校で学ぶようなものなのか?
0098デフォルトの名無しさんNGNG
>>97
俺は中学生なのですべて独学だ
0099デフォルトの名無しさんNGNG
俺は医学を専攻していたがなぜかプログラマだ。
スーパープログラマーKを目指している。
いつかあの鍛え上げられた肉体を手に入れ、
「なぜプログラマがそんな筋肉を……」の問いに
「必要だからだ!!」と答えるのが夢だ。
……問題は、なぜ必要なのかが分からないことだ……
0100デフォルトの名無しさんNGNG
エネルギーを必要な時に必要なだけ供給できるように
体を鍛えておく必要がある。
とでも言っておけば?
0101デフォルトの名無しさんNGNG
四則演算もわざわざ学校で習うようなことじゃないよな。
0102デフォルトの名無しさんNGNG
学校で学ぶべきものなんて何一つないだろ。
0103デフォルトの名無しさんNGNG
>>97-102
ここはC言語のすれなのだが・・・
0104デフォルトの名無しさんNGNG
以降


    レ  ス  禁  止
0105デフォルトの名無しさんNGNG
>>102そんな奴らがロクに人間関係も作れないようなプログ(略
0106デフォルトの名無しさんNGNG
人とのつきあい方くらい独学で身につけられるだろ
0107デフォルトの名無しさんNGNG
Cスレだっつの
0108デフォルトの名無しさんNGNG
C で例外を実装する方法ってありますか?
特に 0 除算とかセグメンテーションフォールトとか・・・。
0109デフォルトの名無しさんNGNG
>>108
処理系によってはシグナルが飛んでくるかもしれない。
0110108NGNG
やっぱり処理系依存なんですね。
ありがとうございました。

# C++ の例外の実装ってどうなってるんだろう・・・。
0111デフォルトの名無しさんNGNG
>>108
signal()
0112デフォルトの名無しさんNGNG
>>110
C++の例外はハードエラーは補足できないよ。
setjmpとlongjmpに近いと思われ。
0113デフォルトの名無しさんNGNG
>>108
0除算はSIGFPE、セグメンテーションフォールトはSIGSEGV
を処理すればできそう
0114デフォルトの名無しさんNGNG
__try{}__except{}__finally{}__leave
0115デフォルトの名無しさんNGNG
スタックの基本的な問題で入力した文字を覚えていく問題に
PushDown関数に戻り値(スタックオーバーフローに検出を行い、
エラーの場合エラーコードを戻り値にして返すようになっているか)
という条件がついているのですが意味がよくわかりません。
解説してもらえませんか?
0116デフォルトの名無しさんNGNG
>>115
質問の意味がわかりません
0117デフォルトの名無しさんNGNG
>>115
用意されたスタック(まあこの場合は配列か何かだろ)以上にデータを積もうとしたらエラーコードを返すってことでしょ。
0118117NGNG
s/スタック/スタックのサイズ/

まあ分かると思うが
0119デフォルトの名無しさんNGNG
最近は助詞もまともに使えない奴がいるのか…。
プログラム言語の前に日本語勉強してくれよと言いたくなる。
0120デフォルトの名無しさんNGNG
>>119
2ちゃんねるでわざわざ誤植を指摘すんなよ。
0121ねみーNGNG
コマンドライン引数ってよくわかりませーん。
何がわからないのかって?
独習Cで「main()関数の引数を指定する」という項目で、コマンド(略)の事が書いてるんですけど
まったく同じコーティングしてビルドしても何もなりません。
VC++を使っております。atoi関数などももう少し詳しく教えて欲しいです
0122デフォルトの名無しさんNGNG
コーディングガオカシインダロ
0123デフォルトの名無しさんNGNG
>>121
おう、基礎だから勝手に学べ。
0124俺、超初心者NGNG
分割コンパイルについて質問です。
AというファイルとBというファイルがあります。
Aというファイルで作成した構造体やクラスのオブジェクトと
ファイルBで扱いたいのですが、ヨクワカリマセン!!
HELP!
0125訂正NGNG
分割コンパイルについて質問です。
AとBの2つのファイルをコンパイスしようと思います。
そこでAというファイルで作成した構造体やクラスのオブジェクトを
ファイルBで扱いたいのですが、ヨクワカリマセン!!
HELP!
0126デフォルトの名無しさんNGNG
>>124
「Aというファイルで作成した構造体」をヘッダファイルで定義しろ
AとBの2つのファイルにそのヘッダファイルをincludeしろ
「コンパイス」のやり方は俺は知らん。googleに聞いても分からなかった。
0127デフォルトの名無しさんNGNG
>>125
とりあえずincludeしなさい。
0128デフォルトの名無しさんNGNG
staticを付けたら、ソース内で同一アドレスにあるってことはさ
例えばforで繰り返し処理してインクリメントしまくったあと
その複文を抜けても、値を維持してるって事?
あとstaticを付けたら、0で初期化されるってマジ?
0129デフォルトの名無しさんNGNG
>>128
> 例えばforで繰り返し処理してインクリメントしまくったあと
> その複文を抜けても、値を維持してるって事?
試 し て み ろ 。 す ぐ 分 か る

> staticを付けたら、0で初期化されるってマジ?
マジです。浮動小数点なら0.0、ポインタならNULLで初期化される
ことがANSI-Cでは保証されてます
0130デフォルトの名無しさんNGNG
>>129
試しますた。分かりますた。
でもメモリ管理とかまだよく分かってないんで、
いろいろ勉強するYO!
待ってろビルゲイツ。
0131デフォルトの名無しさんNGNG
130 は何を企んでいるのか (((( ;゚Д゚))) ガクガクブルブル
0132デフォルトの名無しさんNGNG
Cファイルが拡張し付いてない状態の時のアイコンなんですけど、
どうしたらCファイル専用のアイコン(Cとだけ書かれたシンプルなアイコン)
になるんでしょうか?
0133デフォルトの名無しさんNGNG
>>132
初心者板にでも行ってファイルの関連付けについてでも教えてもらってください。
スレ違い。
0134デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
int n, i, j;
char gazo[1000][1000];
n = 5;
for (i = 0; i <= (n-1); i++) {
for (j = 0; j <= (n-1); j++){
if (i == 0 || i == (n-1) || j == 0 || j == (n-1))
gazo[i][j] = '*';
else
gazo[i][j] = ' ';
}
}
for (i = 0; i <= (n-1); i++) {
for (j = 0; j <= (n-1); j++){
printf("%s", gazo[i][j]);
}
printf("\n");
}
return 0;
}


なんで動かないんだーーー
0135デフォルトの名無しさんNGNG
>>134
デバッガでトレースしてください。
わからなければ printf() デバッグしてください。

その苦労をサボりたいならすれ違いなので添削スレに逝ってください。
0136デフォルトの名無しさんNGNG
>>134
gccだったら-Wallを付けると見つかるけど何か?
0137134NGNG
if (i == 0 || i == (n-1) || j == 0 || j == (n-1))

このへんがおかしいッポイです。
でもこれの何処がおかしいのかわかりません。

0138デフォルトの名無しさんNGNG
>>134
%sを%cにするといいかも
0139134NGNG
>>136
すみません、gccじゃないのでよく分からないです。
ごめんなさい。
0140デフォルトの名無しさんNGNG
>>137
そこはおそらく君の思ったとおりの動作です。
core dumpする原因はgcc -Wallだと
  warning: format argument is not a pointer (arg 2)
とかいうメッセージが出てきます。
0141ななしさんNGNG
>char gazo[1000][1000];
>n = 5;
↑
なぜ#defineしないですか。

for (i = 0; i <= (n-1); i++) {
for (j = 0; j <= (n-1); j++){
↑
なぜ素直に i < n で判断しないですか。

>if (i == 0 || i == (n-1) || j == 0 || j == (n-1))
>gazo[i][j] = '*';
>else
>gazo[i][j] = ' ';
↑
なぜわざわざ複雑な条件で'*'や' 'を代入するですか。
もっと簡単に方法があると思うです。

>printf("%s", gazo[i][j]);
↑
>>135さんの言うとおり、printf()を調べるです。
"文字"と(C言語で言うところの)”文字列”の違いって分かるですか?

0142ZettonNGNG
>>141
スタック取りすぎじゃないか?
0143134NGNG

>>138
ちゃんと動作しました。

>>140
そうでした。

>>char gazo[1000][1000];
>>n = 5;
>↑
>なぜ#defineしないですか。
デバッグまがいのことしてるうちにこうなってしまいました。
原因がわかったので直します。
0144134NGNG
>for (i = 0; i <= (n-1); i++) {
>for (j = 0; j <= (n-1); j++){
>↑
>なぜ素直に i < n で判断しないですか。
まったくもって自分はバカでした。

>>if (i == 0 || i == (n-1) || j == 0 || j == (n-1))
>>gazo[i][j] = '*';
>>else
>>gazo[i][j] = ' ';
>↑
>なぜわざわざ複雑な条件で'*'や' 'を代入するですか。
>もっと簡単に方法があると思うです。
ちょっと思いつきませんでした。

>>printf("%s", gazo[i][j]);
>↑
>>>135さんの言うとおり、printf()を調べるです。
>"文字"と(C言語で言うところの)”文字列”の違いって分かるですか?
理解はしてましたが実際使ってみたら忘れてました。
0145デフォルトの名無しさんNGNG
%sは\0で終わる文字列を指すポインタを期待しているんだぜ。
char型、つまり整数なんて与えたら変なところにアクセスしてしまって・・・
0146134NGNG
>>145
不正な処理になってしまったわけですね。
プログラミングは実際に打たないと成長しませんね。
0147デフォルトの名無しさんNGNG
>>146
一文字表示させるだけならputchar(gazo[i][j]);でいいんじゃない?
0148未亡人 ◆gLo7a3IgfY NGNG
自称、脱初心者のオレに
適当な問題きぼんぬ
0149デフォルトの名無しさんNGNG
>>148
ここはそういうスレではありません。
Web で検索してください。

1 よ、何故諸注意を書かなかった・・・?
0150デフォルトの名無しさんNGNG
テトリス作れ。
ルールを拡張しろ。
ハイスコア機能をつけろ。
ネットランキング機能をつけろ。
ネット対戦機能をつけろ。
0151デフォルトの名無しさんNGNG
>>148
問題

   自由研究
0152未亡人 ◆gLo7a3IgfY NGNG
>>149
じゃあどういうスレなんでつか?

■▲▼
【1:151】C言語のことは漏れらに聞け!!
C言語の事ですが何か?
0153デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int *variable_array=NULL;
int size=0;
char buf[256];
int i;

while(fgets(buf,256,stdin)!=NULL)
{
size++;
variable_array=realloc(variable_array,sizeof(int)*size);
sscanf(buf,"%d",&variable_array[size-1]);
}

for(i=0;i<size;i++)
printf("V_A[%d]...%d\n",i,variable_array[i]);

return(0);
}
このプログラムはどうやったら終わるの?
0154デフォルトの名無しさんNGNG
>>153
Ctrl+DかCtrl+Zを押せば終わるかも。
0155154NGNG
>>153
そのプログラムまずいんじゃないか?
reallocで得た新しい領域の先頭が以前と同じだとは限らないはず。
0156154NGNG
あ・・・ちゃんと戻り値を受けていた。ごめん。見間違った
戻り値チェックはしようね。
0157153NGNG
>>154
なぜか終わらない・・・。DOS窓からやらんとあかんのかな。
NULLって定数の0にみたいなもんでしょ?それとも^cなん?
>>155
マジ!?これ本に載ってるソースなんだけど。
てかmallocとreallocの違いが良くわからん。
mallocは領域を与えたいとこに対して一回だけ使うんだよね?
reallocはその後ろに伸ばしていくんでないの?
0158153NGNG
>>156
すまそ。戻り値チェックってwhileの条件式内のやつでないの?
0159ZettonNGNG
>>ALL
確認:返り値と戻り値って同じ意だよね?
0160154NGNG
>>157
見間違ったんだってば。本ということは戻り値チェックは省略か。

fgetsはEOFを検出するとNULLを返すから、DOS窓・・・windowsならCtrl+Zで終わると思うよ。
本当に終わらない?
0161153NGNG
やべ。>>157
終わらないんでなくて、printf文が実行されん。
0162154NGNG
>>158
reallocの戻り値チェックのこと。
malloc同様、必ずしも成功するとは限らないから。
本のサンプルなら問題に焦点を当てるために省略していると思うけど。
0163154NGNG
>>161
なんだあれか。
Windows9XのDOSプロンプトだとなぜかそうなる。
stdinからじゃなくてファイルから読みとってみれば?
0164153NGNG
>>160
わり。レス書いてるうちに更新されたみたい。

で、^Cやってみたけど、終了はするんだけどさ
その後printf文で、格納した要素を出力してんじゃん?
そこが何も起きないんだ。
あと>>158マジでわからん。
0165デフォルトの名無しさんNGNG
^Cは強制終了。
^ZはEOF入力。
だったはず。
0166デフォルトの名無しさんNGNG
>>164
^Cは強制終了。もっともWin9Xなら^Zでも思い通りに動かないけど
0167153NGNG
>>163
XPでも一緒か。NTカーネル?だっけ?あれ系?
OSの問題なら、コンパイラがどうこうとかでないのね。
結局malloc使えとな。でもrealloc使った方が見栄えいいよね。
mallocだったらサイズいるもん。

>>162
ごめんだけど、例えばどんな感じ?
0168153NGNG
>>165>>166
あり。でけました。
でもオレは確か^C=EOFって習った気が・・・
あぁ復習しないと。
0169153NGNG
>>168
はい、オレの勘違いだったぁぁ!!!
鬱だ・・・。母さん、死んでいいですか?
0170デフォルトの名無しさんNGNG
全角とハンカクを区別する関数ってある?
0171デフォルトの名無しさんNGNG

 |  さいたまさいたまさいたま!をやっていいですか?
 \____  ________________/
    /||ミ  V
   / ::::||
 /:::::::::::||____
 |:::::::::::::::||       ||
 |:::::::::::::::||│ /  ||
 |:::::::::::::::|| ̄\   ガチャッ
 |:::::::::::::::||゚ ∀゚)   ||
 |:::::::::::::::||_/    ||
 |:::::::::::::::||│ \   ||
 |:::::::::::::::||∧ ∧∩ ..||
 |:::::::::::::::|| ゚∀゚)/  .||
 |:::::::::::::::||∧ ∧∩ ..||
 |:::::::::::::::|| ゚∀゚)/ ..||
0172デフォルトの名無しさんNGNG
(・∀・)カエレ!!
0173デフォルトの名無しさんNGNG
ファイルの入出力で高水準と低水準って
どんな時に使い分けるんですか?
0174デフォルトの名無しさんNGNG
>>173
楽したい時と格好つけたいとき。
0175( ○ ´ ー ` ○ )NGNG
 線形リストの先頭ノードと末尾ノードにわける理由を教えてください。
   本の内容を、目で追っていたのですが・・・。
  難しく考えるばかりで、進展がない。
0176デフォルトの名無しさんNGNG
>>175
日本語がおかしい。
推測で答えると、末尾に追加したいときには
最後のノードへのポインタを保持しておくと便利だ。
0177ZettonNGNG
モジュールとサブルーチンの違いを教えて下さい。
0178デフォルトの名無しさんNGNG

             ∩
                 | |
                 | |
        ∧_∧   | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ;´Д`)//  < 先生!素人以下の知識しかないプロが居まつ!
      /       /     \___________________
     / /|    /
  __| | .|    |
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
0179デフォルトの名無しさんNGNG
モジュールはフランス語。
サブルーチンは英語。
0180デフォルトの名無しさんNGNG
以下


    禁  止

0181デフォルトの名無しさんNGNG
>>179
そうかい?英語にもモジュールという単語あるぞ。
0182デフォルトの名無しさんNGNG
>>181
ネタにマジレス…
0183デフォルトの名無しさんNGNG
ボンジュールと掛けたんじゃないの?
0184デフォルトの名無しさんNGNG
誰か前橋の「C言語ポインタ完全制覇」持ってる人いない?
いたらさ、P218のソースにmain関数ないんだけども、どういうこと?
0185前橋 ◆81oseo2HKE NGNG
前橋ですが、何か?
0186デフォルトの名無しさんNGNG
質問があります。
今、C言語で画像処理プログラムを組んでいるのですが、
既製のUSBカメラから画像データを引っ張るにはどのようにすれば
よいのでしょうか?
0187デフォルトの名無しさんNGNG
( ;´Д`)そんなこと言われても・・
0188デフォルトの名無しさんNGNG
>>186
C は USB をはじめとするデバイスを定義していません。
従って環境依存です。
このスレは純粋に C を扱っているスレなのでスレ違いです。

実際の方法は、カメラのメーカーに問い合わせてください。
0189184NGNG
>>185
あ、前橋だ。
何か?じゃなくてよ、>>184見ろよw
0190デフォルトの名無しさんNGNG
>>188
いや、普通にありですが。
>>188からスレ違いになったのですか?
なかなか、タイムリーですね。
0191デフォルトの名無しさんNGNG
>>188
じゃあCで出来ることはコンソールに文字出して遊ぶくらいですね。
0192前橋 ◆81oseo2HKE NGNG
実はあの本友達に書いてもらったんだ・・・。
0193デフォルトの名無しさんNGNG
>>192
騙りは犯罪です。通報しました。
0194デフォルトの名無しさんNGNG
#include<stdio.h>

int main(void)
{
int hoge[]={1,2,3};

printf("%d ",&hoge[0]); /**/
printf("%d ",&hoge[0]+1); /**/
printf("%d",*(&hoge[0]+2)); /**/

この時、&hoge[0]はメモリ上に確保されるの?
return 0;
}
0195デフォルトの名無しさんNGNG
>>186
1. 使用しているチップを特定する。
2. チップのマニュアルを調べる。
3. ドライバを書く。
0196デフォルトの名無しさんNGNG
>>193
さすがにトリップ付けたのはやりすぎた。
ゴメソ本物の前橋
0197デフォルトの名無しさんNGNG
>>194
コンパイルできない!!なんでだああ!!!
0198デフォルトの名無しさんNGNG
printf("%d ",&hoge[0]+1); /**/
この実引数あり?
0199デフォルトの名無しさんNGNG
>194
printfは可変引数で、これをレジスタに割り付けるような
処理系はちょっと考えられないから、まあ、メモリ上にも
存在するといってもいいかもしれない。
実体としては即値で終わり。

 し か し 腐 っ た コ ー ド だ な
0200デフォルトの名無しさんNGNG
>>198
あり
0201デフォルトの名無しさんNGNG
今日
#define SWAP(X,Y) do{int W; W=X; X=Y; Y=W;}while(0)
とやったらループは無駄だといわれたんだけど、そう?
0202デフォルトの名無しさんNGNG
SWAP(X, Y);
0203デフォルトの名無しさんNGNG
間接参照演算子は変数を指していなくても、使えますよね?
0204ななしさんNGNG
>>186
OSはWindows? Linux? MS-DOS?
それで扱いは変わってくるんだが。

まあ、Windowsだとすると、TWAINドライバを経由して
データを取り込むはずだから、その辺調べてみたらどうよ。
0205デフォルトの名無しさんNGNG
>>199
> 実体としては即値で終わり。
この意味がわからん。なんで即値?
0206デフォルトの名無しさんNGNG
>>201
普通に{}でかこっただけじゃ駄目なの?
0207デフォルトの名無しさんNGNG
>>201
その人に、「最適化って知ってますか?」 と突っ込んでください。
第一 while(0) の何がループなのかと。

do 〜 while(0) は、マクロを関数っぽく記述するのに絶対必要。
if(cond1)
  SWAP(a, b);
else if(cond2)
  SWAP(b, c);
else
  SWAP(c, a);
とか書かれたら、do 〜 while(0) 以外で書いたマクロは対応できない。
で、マクロを関数っぽく扱えるようにするのは、その実装がマクロなのか関数
なのかを使用者に意識させないために必要。
0208デフォルトの名無しさんNGNG
>>204
Video for Windowsご存じない?
0209デフォルトの名無しさんNGNG
>>207
>do 〜 while(0) は、マクロを関数っぽく記述するのに絶対必要。
そんなトリッキーなコード書く人間はイランがね。
0210デフォルトの名無しさんNGNG
>>205
コンパイルの段階で数値が特定できる場合は、最適化によって即値に変換される。
最適化 OFF だったらどうだか知らない。
0211デフォルトの名無しさんNGNG
>>201
どうしてdoを使ってるか説明もできないのに使ってるのかよ…
0212デフォルトの名無しさんNGNG
>>209
getchar() マクロは不要だとでも?
0213デフォルトの名無しさんNGNG
             ,ィミ,        ,ィミ,               フ
              彡 ミ        彡 ミ,            ヤ |
           ,,彡   ミ、、、、、、、、彡  ミ,     (⌒)    レ  |    それでも人は生きるんだよ
          彡;:;:             ミ,    (  ヽ   ヤ
       〜三;:;:::::              彡〜  ノ  ノ   レ
       ~~三:;:;:;:::::  -=・=-   -=・=- 三~~ ヽ (    :     ;;
       ~~彡::;:;:;:;:::..     ___     ,三~~ ( ノ ,,,,,  :      ;;
        ~~彡;:;:;:;:;:;:;:.    |┴┴|    ,ミ~~ ノノ ;'" ,,ノ―、     ,;'
        ~~彡:;:;:;:;:;:;:;:;.  ノ――| ---==ニノ ,;'′ >=ニ(二二二()
   ,...-''''""~~,::;:;::;::;::;::;'            ミ,,  ,;'′  ゝ--〈
__,;";;:;;;;;;;;;;;;;;;;;;;;;:;:;:;:;:;:;:;            i! ミ,,,,;'′   `ー‐'
         ::::ミミミ:;:;:;:           ミ::      ,;' ̄ ̄ ̄ ̄|  \___/
          :::::ミミミ:;:;:           ミ:::,   ,;::''′        |.    \/
          ::::ミミミ:;:;::       ,;+''"~~゙+、~'''''~          |     |
           ::::ミミミ:;:;:;:     ,+'"     ミ:::::           |   ━┷━━━┳━━━━━
             :::::ミミミ:;:;:;:;:  >':;:       ミ::              |             ┃
           ::::::ミミミ:;:;:;:;:;../;:;:;:       ;:"             |             ┃
            ::::::::ミミミミ:;:/;:;:;:;:    ,.+'"''-、________|__         ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄;':;:;:;:   ,.+'"    ミ、             l          ┃
0214ななしさんNGNG
>>199は、おそらく「最適化の結果」即値になると言っていると思われ。

ついでに、
printf("%d ",&hoge[0]);
printf("%d ",&hoge[0]+1);
printf("%d",*(&hoge[0]+2));

と書くよりは、

printf("%d ",hoge);
printf("%d ",hoge + 1);
printf("%d",*(hoge + 2));

と書いたほうが判り易いから糞コードと言っていると思われ。
(慣れだけかもしれんが)  
0215デフォルトの名無しさんNGNG
>>213
愛が足りないのですか?
0216209NGNG
>>207
そうする理由はちゃんと書いたんだが、その上で不要と言ってるのか?

> で、マクロを関数っぽく扱えるようにするのは、その実装がマクロなのか関数
> なのかを使用者に意識させないために必要。
0217216NGNG
レス番号が逆ダターヨ・・・
0218デフォルトの名無しさんNGNG
>>214
&hoge[0]がhogeのシンタックスシュガーだと分からない人がいると
思って展開して書いたんだけど、絶対いないですよねそんな人。
0219デフォルトの名無しさんNGNG
>>216
そういきりたつなよ。のんびりいこうぜ。
0220デフォルトの名無しさんNGNG
swapをマクロにするとforの初期化や条件式、後処理で使えないよ。
0221デフォルトの名無しさんNGNG
2chのCGIってCで組んであるって本当ですか?
0222デフォルトの名無しさんNGNG
>>221
嘘です。
0223デフォルトの名無しさんNGNG
>>221
Rubyだよ
0224デフォルトの名無しさんNGNG
>>221
BrainFuck!!!!!!!
0225デフォルトの名無しさんNGNG
>> おそらく「最適化の結果」即値になると言っていると思われ。

ごめん。まだ意味がわからん。
hogeがスタック上にあれば即値は無理だと思うのだが。
それともhoge[]のインデックス部分のことを言ってるのかな。
0226デフォルトの名無しさんNGNG
マクロは痴漢のみでいいよ
0227デフォルトの名無しさんNGNG
read.cgi は C だろ。
どっかにスレなかったか?
0228デフォルトの名無しさんNGNG
犯人はパールのようなものでこじつけたと見られています。
0229デフォルトの名無しさんNGNG
>>212
> getchar() マクロは不要だとでも?

俺のコンパイラは getcharで do{}while なんか使ってないな。
0230デフォルトの名無しさんNGNG
>>229
コンパイラじゃなくてライブラリって言えよ。
0231デフォルトの名無しさんNGNG
>>229
どっちにしてもdo{}while;は定石
役に立つ
立たないのはお前のアルゴリズムが最適でないから
勉強しろよ
0232デフォルトの名無しさんNGNG
>>218なぜ&hoge[0]がhogeのシンタックスシュガーになるんだ?
0233デフォルトの名無しさんNGNG
マクロを関数のように使うなら、せめて関数が使えるところではどこでもそのマクロを使えないとねぇ・・・
0234デフォルトの名無しさんNGNG
>224
問題にしているのは、「&hoge[0]」(ポインタ)に付いてではないのか?
いつから、hoge(配列)の話になったんだ?
0235デフォルトの名無しさんNGNG
Cで構文糖といったら、char s[]="abc"とかアロー演算子くらいな気がする。。。
他にもあるかな?
0236デフォルトの名無しさんNGNG
プリプロセッサは排除の方向で世の中進んでるのに・・・もう定年する覚悟ですか?
0237デフォルトの名無しさんNGNG
>>229
単文だからでは?
このスレの半分以上は前スレの話題を引き継ぐな。
c faq読めよ…。
0238デフォルトの名無しさんNGNG
forだけでなく、コンマ演算子もつかえねーじゃん。
話にならねー。
0239デフォルトの名無しさんNGNG
>>231
たかがelseの前で構文エラーになるかならんかの違いだろ。
個々のコーディングスタイルに依存する話を、
誰でも役に立つと決め付けんな。
むしろ邪魔になることもある。

そういう俺は個人的には使ってるけどな。
0240デフォルトの名無しさんNGNG
>>235
int main(int argc, char **argv);
int main(int argc, char *argv[]);
0241デフォルトの名無しさんNGNG
>>240
ああそうか。仮引数のポインタを[]と書くのも構文糖だね。
ポインタを受ける時は配列を受ける時が多いから。
0242デフォルトの名無しさんNGNG
>>241
K&R厨が出てくるぞ。
0243225NGNG
>>234
> 問題にしているのは、「&hoge[0]」(ポインタ)に付いてではないのか?
> いつから、hoge(配列)の話になったんだ?

多分お前は話を理解できてないな。
その &hoge[0] が即値とどう関係してくるのかという疑問なんだが。
0244デフォルトの名無しさんNGNG
>>231
結局好みでしょ?
オレもこの手の問題は通りぬけたけど
マクロなんか全然使わない。
関数書くのが楽しいからw
0245デフォルトの名無しさんNGNG
考えてみたら、&hoge[0] は即値になりようが無いな。
実行するまで、hoge が決まらない。
実際、コンパイラは lea を吐くと思う。
0246デフォルトの名無しさんNGNG
つーか漏れはマクロで複文なら do { ... } while(0) だが、実際マクロ関数を
最近全然書いてない。
SWAP() 程度の処理なら直書きしてる。型もまちまちだし。
0247231NGNG
>>246
>型もまちまちだし
マクロは型に依存しないんだよ?
0248デフォルトの名無しさんNGNG
俺も滅多に書かないけど、↓最近書いた奴

#define isnullstr(str) (!*(str))
/* 空文字列かどうかを判断 */

strlen(str)==0の代わりに*str==0と書いていたけど、分かりにくいんでマクロにした。
0249デフォルトの名無しさんNGNG
>>247
おかげでしょうもないバグが起こる可能性がある。
0250デフォルトの名無しさんNGNG
>>247
あのマクロの中で定義している変数はなんだ?(^_^;)
#define SWAP(x,y,type) do{type W;・・・と書けば型によらないで使えるけど
0251247NGNG
型もまちまちってことはさ、なんらかの統一処理って事ジャン?
いちいち関数つくるよりは、直書きの法がいいけどん、
そんな時くらいしかマクロは使えましぇん!
0252最後に質問NGNG
#include<stdio.h>

int main(void)
{
int a[]={0,1,2,3,4};

printf("%d",*a); /*出力結果 0*/

return 0;
}/*なぜアドレスをポインタ変数に代入してないのに、
間接参照演算子、以下(*)が使えるのでしょうか?

*が使えるのはポインタ変数(ポインタ配列)にアドレスが
代入されていて、その変数を指している時にしか
使えないと思うんですが・・・*/
0253デフォルトの名無しさんNGNG
>>252
そもそも、a[n]って*(a+n)だぜ。
0254デフォルトの名無しさんNGNG
>>252

>>1のリンク先にあるC FAQを読んだ方がいい。
0255デフォルトの名無しさんNGNG
int a[]={1,2,3,4,5};
にして置いたら?
紛れが少なくなる。
0256デフォルトの名無しさんNGNG
ソース中では配列はポインタに読み替えられる。
宣言の時以外に使われる[]、つまり添字演算子は*と書いてもほとんど同じだ。
この辺の話は、もうちょい後でじっくり学べ!
今はとりあえず、配列の名前(この場合だとa)を単独で使うと
それは配列の先頭要素へのポインタ(つまりaは*a[0]ってこと)になる。
ただし、これは嘘だ。でも今はこう覚えといて問題なし。
実際オレもそうだったから。安心しろ
0257デフォルトの名無しさんNGNG
>>256
aは*a[0]じゃなくて&a[0]
0258256NGNG
オレ、死んでいいですか?
0259デフォルトの名無しさんNGNG
>>258
もちろん
0260デフォルトの名無しさんNGNG
>>258
死ぬべき立場なら潔く割腹。
0261デフォルトの名無しさんNGNG
sizeof(a),sizeof(&a[0])を見てみると分かり易いね。
0262デフォルトの名無しさんNGNG
>>248
それだけを見るとナイスアイディアに見えるが、その調子で作ったマクロが
ずら〜っと並んでいると読む気がしなくなる罠。
漏れは素直に !*str の方が好き。
この程度、読むのに詰まる事も無いだろうし。
0263デフォルトの名無しさんNGNG
256 よりも、255 の方が何を言っているのかわからないぞ。
0264256NGNG
遺書

僕は調子に乗りました。初心者の僕でもわかりそうな質問だったので
がんばってレスを打ちました。そしたら257にやられました。
向こうは3人がかりで僕を攻めました。お父さん、お母さん、
今までありがとう・・・・



これは自殺じゃない!他殺だ!(某あほな自殺者の迷言)
0265デフォルトの名無しさんNGNG
>>262
同感。逆のケースだと特にね。
if(*str) {}
if(!isnullstr(str)) {}
前者の方が断然読みやすく書きやすいと思う。
0266256NGNG
ほとんとだ。新たないじめられっこハケーン

でもマギレって?
マグレか?
だとしたらなんの?
0267デフォルトの名無しさんNGNG
                ,.-ー''"~"'i,
              /~   ..:::::::!.,___        ,,..、-、,
            /    .::::::::::::::`::::::~~""''''ー-,/~:::::::::.`i,
           /     .:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::: i
           /      .:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::.. |
         ,/      :::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::. i
         ,l'       ::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::. |
         l       ::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::: i   生きるって辛いよな・・・
         i,       ..:::::●:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::: !
        _,,.i      ..::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::●::  i'
      /~  'l,    ..:::::::::::::::::::::::::::|、;;;;;;;;;;;;;;;;;/::::::::::::::::: ,i'            /~\
    /,.、-ー 、;i,   .::::::::::::::::::::::::::::::|  ~"''''"/::::::::::::::::::: /~\         /    i.,_
   /'/ ..::::::::|::' .,  :::::::::::::::::::::::::::::::|'⌒`ヽ,/;:::::::::::::::::: /:::::::.. \       ,i    .::.. \
   / i'  .::::::::::/:::::::`・、., :::::::::::::::::::::::,人,__,/;;;;;::::::::::::::::/;;;;;;:;:::::.. ヘ     /  .::::....::::::::. `.,
  ,i/( .::::::::::::i,::::::::::::;;;;;;~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::-''";;;;;;;;;;;;;;;:::::..  \  /  .:::::::::::):::::::::.. ヘ
0268デフォルトの名無しさんNGNG
。・°°・(>_<)・°°・。 ウエーン

何やっているのかわかりやすくするためにマクロにしたんだが、駄目か・・・

>>265
空文字列でない(文字列の終わりでない)という条件式は俺も上の方法でやっています。for(;*str;str++);って感じで。
0269デフォルトの名無しさんNGNG
>>253〜>>260
全て知ってます。
聞きたいことが伝わらないですかね?

たとえば、
int a=10;
int *p;

p=&a; /*アドレスを代入し、pがaを指す*/
ココ!
>>256のソースは変数を指していない。

printf("%d",*p);
ココ!指しているから*が使える。

>>256のソースではどこも指していないのに
*が使えるのはなぜですか?と聞いています。
0270デフォルトの名無しさんNGNG
>>264
い�`・・・
 ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧ ∧
  (  ,,)
  ./  |
 (___/
/
0271デフォルトの名無しさんNGNG
>>269
配列を確保した時点でアドレスは決まると思うが・・・
0272デフォルトの名無しさんNGNG
>>269
> 全て知ってます。
> 聞きたいことが伝わらないですかね?

はあ?
配列がポインタに成り下がることを知っていたら
そんなアホな疑問は出てこないはずだが?
0273デフォルトの名無しさんNGNG
>>268
それでいいじゃん。
マクロは、定数以外には基本的に使わないのが鉄則。
デバッガで追うのも面倒になるし。
0274デフォルトの名無しさんNGNG
どこを指しているのか分からないってのは、初期化していない(自動変数の)ポインタだろ?
0275256NGNG
>>269
だから、配列はポインタに変わっちゃうんだってば。
知ってるのにわからないんだったら才能ないんでない?
やめた方がいいと思うよ。
オレは0.2秒で理解した
0276デフォルトの名無しさんNGNG
>>273
わかりました・・・
今まで書いたソースを修正するのは面倒だからそれはそのままにして、今後は禁じ手にするか。。
0277265NGNG
>>268
あくまで俺個人の見解だからあまり気にしないで。

ただ、Cを使ってる人間であれば !*str という式が
どういう意味かはパッと見てわかるんじゃないかな?
0278デフォルトの名無しさんNGNG
>>276
マジレスシル!!正しこれが最後。

まずADSLでネット始めた方が安全だよ。それで電気店に行って対策ソフト
購入シル!店員に説明聞くか説明書読めば大概分かる。次ぎにセキュリティを
「高」にする。さらに心配なら「串」を刺すって方法もある。
サイトはトレンドマイクロを参考にした方がいいな。
メールはフリーで行い自分の活動的な事はネットカフェから作業するベシ!
他の奴の言う事は聞かなくてヨロシイ。

この書き込みに「自演」とか「お前は回線切って死ね」とか色々あると
思うけど素人はその程度なんで。
あっ、お前も分からなければ市ね!さっきは 書き込む所間違えてスマソ(W
0279デフォルトの名無しさんNGNG
>>277

> Cを使ってる人間であれば !*str という式が

そうだね。それくらい分かるよね(^_^;)

>>278
Σ( ̄□ ̄;)!!
0280デフォルトの名無しさんNGNG
>>278
明後日の方向にレスなさってますか?
0281デフォルトの名無しさんNGNG
>>278
ワラタ
0282デフォルトの名無しさんNGNG
>>278
> 書き込む所間違えてスマソ
今も間違えてるし。
0283256NGNG
>>278
村上ショージ氏でつか?
このシュールさは彼としか思えない・・・
0284デフォルトの名無しさんNGNG
>>278
ちょっとワロタ。けど
お前は回線切って氏ね!
0285デフォルトの名無しさんNGNG
つーかc言語なんかヤッテルヤシは

パソオタ(デブ・メガネ)ということで

ファイナル・アンサー
0286デフォルトの名無しさんNGNG
ハンカクチュウ ハ ホウチ。
0287256NGNG
>>285
オレは武田真治似で、彼女はhiro似で
大学で仕方なく学んで、楽しいなとか思ってる香具師ですが何か?
0288デフォルトの名無しさんNGNG
>>285
まあ、キミはデブでもなければヲタでもないけど、
プログラムもできない椰子だけどね。
0289デフォルトの名無しさんNGNG
C が主に PC で使われていると思い込んでいるらしい DQN な 285 がいるスレは
ここですか?
0290デフォルトの名無しさんNGNG
c言語は神の為の言語。
選ばれし者しか使えない。
容姿等を問題にする愚者には一笑分からない。
0291デフォルトの名無しさんNGNG
>>285
パソヲタ&デブ&メガネですが何か?
0292256NGNG
PS
0293デフォルトの名無しさんNGNG
>>290
> 愚者には一笑
ワラタ
0294デフォルトの名無しさんNGNG
C言語出来ないキムタク>>>>>>>>>>>>>>>>>>>>>>>プログラム完璧なココの住人

↓死ね
0295デフォルトの名無しさんNGNG
>>286-291
それはさておき。
0296デフォルトの名無しさんNGNG
しかしファイナルアンサーってのも古いな
0297デフォルトの名無しさんNGNG
デブだがパソヲタと呼べるほど知識はない。
0298デフォルトの名無しさんNGNG

日 本 人 同 士 醜 い 争 い を し て い る の は コ コ で す か
0299デフォルトの名無しさんNGNG
            ☆ クールダウン中・・・ ☆
┌──────────────────────―─┐
│                                    |
│                                    |
│                /■\                    |
│               (´∀`∩)                   |
│               (つ  丿                |
│                ( ヽノ                    |
│                し(_)                |
│                                    |
│             Now Onigiring. ...               |
│                                    |
│                                    |
│         しばらくおにぎりでお待ちください。        |
│                                    |
└───────────────────────―┘
     クールダウンの途中でエラーが発生した場合は、
      「無視(I)」 を選択して続行してください。
0300デフォルトの名無しさんNGNG
放置しとけよお前ら。レベル低いぞ。
0301デフォルトの名無しさんNGNG
プログラム完璧なココの住人はキモイです


0302デフォルトの名無しさんNGNG
>>300
299 コピペで使ってね。
0303デフォルトの名無しさんNGNG
            >>285
             ↓                _人
      ∩    ∧_∧            ノ⌒ 丿
       \ヽ_(    )         _/   ::(
         \_   ノ        /     :::::::\
 ∩_   _/    /         (     :::::::;;;;;;;)
 L_ `ー / /   /           \_―― ̄ ̄::::::::::\
     ヽ  | |__/ |           ノ ̄     ::::::::::::::::::::::)
  | ̄ ̄ ̄\     ノ お前は     (     ::::::::::::::;;;;;;;;;;;;ノ
  | | ̄「~| ̄( 、 A , )クソでも   / ̄――――― ̄ ̄::::::::\
  | |  | |  ∨ ̄∨        (        :::::::::::::::::::::::::::::::::)
  し'  し'                \__::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;ノ



                               __
                       >>285  l ̄/.  ___        
                         ↓ / /.  / ___ノ  
                        __/ /_/ /   
      喰っとけウラー!       Y人, ' ',人⌒ヽ、, '
                      Y⌒ヽ)⌒ヽ、 人,ヽ)人'、, '
        へ, --- 、         ノ ̄     ::::::::::::::::::::::)
     / ̄ ̄ ̄  、____\       (     ::::::::::::::;;;;;;;;;;;;ノ
    / _/ ̄「~|\ __ \     / ̄――――― ̄ ̄::::::::\
   | |  | | ( 、 A , \ミソ   (        :::::::::::::::::::::::::::::::::)
   し'   し' と∨ ̄∨       \__::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;ノ
0304デフォルトの名無しさんNGNG
というより・・・・

2chラーが キ モ イ

↓お前、女いねーだろ・・・そして死ね

0305デフォルトの名無しさんNGNG
それはさておき。
0306デフォルトの名無しさんNGNG



はっきりいって一般的にいうパソヲタ(デブメガネアニオタ)にはC言語できないと思われ。
(漏れの周りは死にそうにやせたヤシばっかりだ。。)


 
0307デフォルトの名無しさんNGNG


イッパイ ツレタ プッ

0308デフォルトの名無しさんNGNG
充分楽しんだので放置すっか。
0309デフォルトの名無しさんNGNG
こういうのは950超えてからやれよ
0310デフォルトの名無しさんNGNG
スマ
0311デフォルトの名無しさんNGNG
しかし俺の周りではデブでCができる奴は本当にいない。
人のコードにゴチャゴチャ言ってくる奴は腐るほどいるが。
意外と真理かもしれん。
0312256NGNG
おいお前ら、Cを始めたきっかけ何ですか?
0313デフォルトの名無しさんNGNG
c言語極めてるここの住人ってオレから見れば
プロジェクトxに出てる技術者の爺さん達並みに
かっこいいと思うけど。
0314デフォルトの名無しさんNGNG
会社で使ってるからだ。
0315デフォルトの名無しさんNGNG
きっかけは学校の授業
0316デフォルトの名無しさんNGNG
上司は言った。
「キミ、JavaできるならCもできるよね?」
……それはない。

「キミ、CできるならJavaもできるよね?」
……それもない。
0317デフォルトの名無しさんNGNG
>>313
中学生が英語の勉強をしてるのを見た小学生が「英語できるんだ、すごい!」
と言ってるようなもの。


0318デフォルトの名無しさんNGNG
>>317

間違いなく理解してくれる対象(マシン&コンパイラ、クソなのは除く)があって、
業務ロジックを規格に沿って記述(コーディング)するだけだからねぇ。
キーボード打つのと同じで、慣れでしょ。
0319デフォルトの名無しさんNGNG
まるでそうするのが当然のように C を覚えました。
0320デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <process.h>
#include <conio.h>

void saikoro(int*,int*);
void hangei(void);

int kakekin, motikin=1000,me1,me2;

void main(void)
{
int tyouhan,yosou;

printf("持ち金%d円です。\n",motikin);
while(1)
{
printf("丁か半か予想して、丁なら0、半なら1を入力してください.やめるときは2を入力してください.\n");
scanf("%d ",&yosou);

if(yosou==2)
{
exit(0);
}
printf("掛け金を決めてください.\n");
scanf("%d",&kakekin);
printf("掛け金は、%dです。",kakekin);

getch();
0321デフォルトの名無しさんNGNG

saikoro(&me1,&me2);
int kekka=(me1+me2) %2;

if(kekka =0)
{
printf("丁です.");
tyouhan=0;
}
else
{
printf("半です.");
tyouhan=1;
}

if(yosou==tyouhan)
{
printf("予想的中です.掛け金分お金が増えます!");
motikin=kakekin+motikin;
}
else
{
printf("はずれです.掛け金没収!");
motikin=motikin-kakekin;
}
0322デフォルトの名無しさんNGNG


break;
}

return;


}

void saikoro(int *c,int *d)
{
srand((unsigned)time(NULL));//rand()だけではいつも同じになる

*c=rand()%6+1;
*d=rand()%6+1;
printf("%dと%dです。",*c,*d);
return;
}


で、掛け金を決めてくださいと言う前に、scanf("%d",&kakekin);が動作してしまうのですが、なぜですか?
0323デフォルトの名無しさんNGNG
>>322
勘違いじゃないのか?
0324もまずにパピコNGNG
>>322
バッファにたまってるのかな。知らんけど。fflush(stdout)するか。
0325デフォルトの名無しさんNGNG
いきなり複数レスに渡ってソースを書くのは荒らしに近い
0326323NGNG
>>324
もしたまっていたとしても、printfは実行されない?
0327326NGNG
バッファってstdoutのバッファか・・・スマソ
0328デフォルトの名無しさんNGNG
>>325
ごめんなさい。でも、長かったんで。こういうときは、前もって複数レスしますっていったほうがいいんですか?
>>326
printf実行されます。
0329デフォルトの名無しさんNGNG
すみません、当方、今までプログラムを組んだことが一度もなく、
これからプログラムを学ぼうかと思っているのですが、
初めて学ぶ言語としてC言語はどうでしょうか?
一応、WindowsマシンとボーランドCの無料版はすでに入手してあります。
0330デフォルトの名無しさんNGNG
>>320
scanf() はもっと丁寧に扱え。

×: scanf("%d ",&yosou);
○: scanf("%d",&yosou);
0331326NGNG
>>330
よくみつけたなー。なるほど。全然わからんかった。

あと、kekkaってブロックの先頭でないところで宣言しているね。
0332デフォルトの名無しさんNGNG
>>329
C はそれなりに汎用性があり、大抵の処理が書けるので悪くは無い。
ただ、プログラムミスをした時に助けてれる機構がほとんど無いから
つまづく事があるかも知れない。
時間をかける覚悟があるなら習得は可能。
0333デフォルトの名無しさんNGNG
>>329
javaの方が良いよ。
0334デフォルトの名無しさんNGNG
>>330
おお。直りました。ありがとうございます。一時間ぐらいここでずーッと悩んでました。

デモ、どうして、スペースがあっただけで、始めに実行されちゃうんですか?
0335デフォルトの名無しさんNGNG
>>334
数字列とスペース一個にひっかかるからだろ。
0336330NGNG
>>325
この場合は素直に全部書いてくれてて良かったが。
これがコマ切れ情報だったら、解決に 50 レスはかかっていたと思うぞ。
0337デフォルトの名無しさんNGNG
C→C++→Java
で。
0338330NGNG
>>334
"%d " というようにスペースを書くと、入力のホワイトスペースを要求する
ようになる。
つまり、最初の scanf() が終わってないだけで、次の scanf() が実行され
てる訳ではない。
0339デフォルトの名無しさんNGNG
>>331
>あと、kekkaってブロックの先頭でないところで宣言しているね。

なんかまずいですか?
0340デフォルトの名無しさんNGNG
>>339

Cならまずい。最新の規格ではどうだかしらんが。
0341デフォルトの名無しさんNGNG
もうちょっとだけ続くんじゃ。
0342デフォルトの名無しさんNGNG
>>332 >>333 >>337

レスありがとうございます。
初めてというのもあり、とりあえず無料で始められる奴……となると、
JavaかCかC++(これはCの後かな?)ですよねぇ。
友達はC#だ〜とか言ってるのですが、これは無料じゃない……ですよね?
JDKというのもダウンロードしておいたのですが、
とりあえずCで行ってみようと思います。
0343デフォルトの名無しさんNGNG
>>340
ま、とりあえずC++なんで、大丈夫だった見たいですね。

ところで、将棋プログラム作ろうと思ってるんですが、一番強いのが作れるプログラミング言語は何ですか?
0344デフォルトの名無しさんNGNG
>>343
> とりあえずC++なんで、
> 一番強いのが作れるプログラミング言語は何ですか?

ここで聞くな。
0345デフォルトの名無しさんNGNG
>343

一番強いのが作れる言語は何かと問う時点でカス。
プログラミングの本質が分かっておらん。貴様は一生COBOLやってろ。
0346デフォルトの名無しさんNGNG
>>342
C#も無料よ。.NetFrameworkSDKをダウンすればいい。でかいけど。
0347デフォルトの名無しさんNGNG
>>339
ファイルの拡張子が c じゃなくて cpp になってるだろ。
0348329NGNG
>>346

おお、そうなのですか。さっそく明日学校でダウンロードしてきます。
しかしボーランドC、入れたはいいけど全然動かし方分からないですね。
JDKはSDKという奴を落とすべきがEEという奴を落としたらしい?のでこれもダメっぽいし。
知り合いに詳しい友人がいるのですが、早くそいつみたいになりたいものです。
0349デフォルトの名無しさんNGNG
>>345
多分、一番低級なレベルで作れるのが一番早いから、アセンブラなんだろうけど、それだとむずかしいからといって、もう少し高級言語に
すると、遅くなって、弱くなる。だから、早いのを作るのと、簡単に作るのは、矛盾することなのだと理解しているのですが。
0350デフォルトの名無しさんNGNG
>>348
.NETのSDKってコマンドラインツールなんじゃないかなぁ?
Borlandのフリーコンパイラが使えないならそれも使えないかと・・・
0351デフォルトの名無しさんNGNG
とりあえず、>>348にWelcome, Hell World!と表示させてやれ。
お前ら。
0352デフォルトの名無しさんNGNG
>>349
将棋 AI の強さに、速さは関係無いだろ。
・・・と一瞬思ったが、指し時間まで考慮するなら確かに速い方がいいな。
0353デフォルトの名無しさんNGNG
>>352
早ければ、深く読めるのです。すなわち、強くなるのです。
0354デフォルトの名無しさんNGNG
将棋のひとはとりあえずこっちイってね。そして読んでね。
http://pc3.2ch.net/test/read.cgi/tech/1004395614/l50
0355デフォルトの名無しさんNGNG
必死にアセンブラで組んだってどうせ2〜3ヶ月とか半年とかでPC性能あ〜っぷ。
バグ取とかでひ〜ひ〜行って強いプログラムが作れないなら高級言語でもい〜のでは?
0356デフォルトの名無しさんNGNG
>>349
いくらアセンブラで枝葉部分をチューニングしてもアルゴリズムがダメダメ
だったら全く意味なし。それに、コンパイラの方がヘタなアセンブラより速い
コード吐くしな。
0357デフォルトの名無しさんNGNG
>>353
高級言語+ライブラリのサポートのもと、複数のCPUで分散処理させた
ほうがいいと思われ。
0358デフォルトの名無しさんNGNG
bccはちゃんとヘルプファイルも付いてるのに使い方がわからないってのは何故なんだ?
以前はヘルプが付いてないかったらしいけど
0359デフォルトの名無しさんNGNG
>>354
ありがとう。こんなスレがまさかあるとは思っていませんでした。
将棋板で探したんですが、なかったんで、あきらめてしまいました。
>>355
>>356
ですね。PC性能UPで、アセンブリングも変わるんですか。じゃ、厳しそうですね。
0360329NGNG
>>358

お恥ずかしい限りです。
コマンドラインやエディタは大学でUnix使ってるので大丈夫なのですが、
どうもライブラリの場所?やインクルードの場所?をうまく指定できてないみたいです(?)。
明日知り合いに教えてもらって、がんばります。
0361デフォルトの名無しさんNGNG
>>360
それは設定ファイルを作成していないからでしょう。
readmeをみた?
0362デフォルトの名無しさんNGNG
>>360
これ使っとけ。
http://www.cmagazine.jp/setbcc.html
0363デフォルトの名無しさんNGNG
今思いっきり酔っていますが、答えられる範囲で答えます。

(*^o^*)
0364329NGNG
>>361 >>362 >>363

皆さんレスありがとうございます。
とりあえず原因は使っているエディタがEUCで保存していたため、
文字の出力がぐちゃぐちゃになっていたと判明しました。
(「これはテストです」などと表示しようとしていました)
"Hello World”なら正しく表示されました。しばし感動……。
これからも精進します。
0365デフォルトの名無しさんNGNG
EUC でも ASCII コードセット部分は SJIS と互換だからインクルードや
リンクが失敗する原因とは考えられないのだが・・・いいのか?
0366デフォルトの名無しさんNGNG
>>365
多分インクルードやリンクが失敗したと思いこんだんだと思う。

(*^o^*)
0367329NGNG
>>365

えっと、まずEUCのまま動かしたところ、ぐちゃぐちゃなものが出力されました。
それをメールで知り合いに内容ごと送りましたら、この内容なら動くはず、
(学校からフロッピー7枚で必死に持ってきたので)ライブラリが壊れている(?)か
違うのを指してる(?)かも、みたいなことを言われまして、
必死にあがいていたのです……
0368デフォルトの名無しさんNGNG
>>367
動いた時点でライブラリやヘッダーのパスは間違っていない。

(*^o^*)
0369デフォルトの名無しさんNGNG
古いのを混ぜ込んでしまって、動くけど
なんかおかしい、てな場合もあるはず
0370さNGNG
#include <stdlib.h>
#include <stdio.h>
#include "RPN.h"
binode tree_reduction(binode tree);
int main()
{
int b;
binode node;
binode tree = tree_example3();
b = tree_reduction(tree);
printf("Built a tree\n");
tree_reduction(tree);
printf("%d\n",b);
return 0;
}
binode tree_reduction(binode tree)
{
int a;
if(binode_is_operator(binode_lchild(tree)) == 0 && binode_is_operator(binode_rchild(tree)) == 0)
{
switch(binode_value(pos_pop()))
{
case OP_PLUS:
a=binode_get_int(binode_lchild(tree)) + binode_get_int(binode_rchild(tree));
case OP_MINUS:
a=binode_get_int(binode_lchild(tree)) - binode_get_int(binode_rchild(tree));
case OP_MULTI:
a=binode_get_int(binode_lchild(tree)) * binode_get_int(binode_rchild(tree));
}
value_push(a);
return 0;
}
0371さNGNG
else if(binode_is_operator(binode_lchild(tree)) == 1 && binode_is_operator(binode_rchild(tree)) == 0)
{
value_push(binode_rchild(tree));
tree_reduction(a,binode_lchild(tree));
}
else if(binode_is_operator(binode_lchild(tree)) == 0 && binode_is_operator(binode_rchild(tree)) == 1)
{
value_push(binode_rchild(tree));
tree_reduction(a,binode_rchild(tree));
}
else
{
tree_reduction(a,binode_lchild(tree));
tree_reduction(a,binode_rchild(tree));
}
}
このプログラムの文法的におかしいところおしえてください
0372デフォルトの名無しさんNGNG
>>371
rpn.hがないと指摘しようがないよ。
0373さNGNG
すんません

0374デフォルトの名無しさんNGNG
MFC関係でもいいですか?

MFCのCHttpを使用してサーバにファイルをアップロードしたいんですけど
データ自体は転送されるのですが
サーバ側のcgiでformをうまく解析できず
ファイルの転送が完了しません
ちなみにindex.htmlでformを書いてcgiを動かせば正常に作動します

以下のデータは全て直接(CString strData, CHttpFile *pFile)
pFile->WriteString( strData )で書き込んでいます

msize= 230653
-----------------------------
Content-Disposition: form-data; name="author"

who
-----------------------------
Content-Disposition: form-data; name="fname"; filename="C:\0.ppm"
Content-Type: text/plain

P6 320 240 255
:JF:JF8LG9MH<LH<LH@LE?KDBJGBJGFKEHMGKKJKKJHMGIN
HSFDQGCPFGPIGPIEQJFRKCUJEWLGSLGSLJSLLUNOULMSJL
...続く
0375デフォルトの名無しさんNGNG
int a[]={0,1,2,3,4};
ポインターじゃなくて配列って言った方が良いじゃん!
0376デフォルトの名無しさんNGNG
英数字10文字からなる文字列を、バイナリをダンプされても容易には
見えないような形でCのソースコードに埋め込みたいのですが、どのよう
にするのが一般的な手法でしょうか?
0377デフォルトの名無しさんNGNG
>>376
char *s = {'A'^0xAA, 'B'^0xAA, ...};
みたいにするとか。
0378376NGNG
>>377
なんで0xAAなのれすか?

0379名無しさん@XEmacsNGNG
意味がないから意味があるんだろーが
0380デフォルトの名無しさんNGNG
ほぅ
0381デフォルトの名無しさんNGNG
前レスも全部読めばC言語の何割、極めたことになるんだ。
0382名無しさん@XEmacsNGNG
自分でプログラム書かなきゃ1割も極めたことにはならない
0383デフォルトの名無しさんNGNG
>>381
> 前レスも全部読めばC言語の何割、極めたことになるんだ。
日本語の本を何冊読めば日本語の何割、極めたことになるんだ?

プログラムを「極めた」と思い込んだ瞬間にお前の成長は終わる。
プログラミングには頂点など存在しない、だがそれがいい。
0384デフォルトの名無しさんNGNG
>>383
Cで満足しないことだな(稿
0385デフォルトの名無しさんNGNG
>>376
> 英数字10文字からなる文字列を、バイナリをダンプされても容易には
> 見えないような形でCのソースコードに埋め込みたいのですが、どのよう
> にするのが一般的な手法でしょうか?
cryptでgoogleしろ。2chのトリップはその方法で暗号化してる
0386lNGNG
今、ポインタについて学習しています。そこで質問。
LPDIRECT3D8ってのはIDirect3D8インターフェースへのポインタを指す
構造体なんだけど、たとえば

LPDIRECT3D8 a,b;
a=Direct3DCreate8(D3D_SDK_VERSION);

とした後、

b=a;

とするとbにはaの内容がコピーされるんじゃなく、aのアドレスが渡される
んですよね?
0387376NGNG
>>385
阿呆? cryptは可逆じゃねーよ。
0388デフォルトの名無しさんNGNG
>>386
LPDIRECT3D8が構造体ならば、aの内容「だけ」がコピーされます。
LPDIRECT3D8のメンバにポインタが存在した場合には注意が必要です。

LPDIRECT3D8がポインタならばaのアドレスが代入されます。
0389386NGNG
説明不足でした。
LPDIRECT3D8はこのような構造体です。
typedef struct IDirect3D8 *LPDIRECT3D8, *PDIRECT3D8;

>LPDIRECT3D8がポインタならばaのアドレスが代入されます。
ということは386の内容であっているというわけですね。
ありがとうございました。

0390385NGNG
>>387
おそらくレジストキーか何かを暗号化して容易に推測させないことを
目的としてると思ったんだが。

プログラム中にcryptした結果を埋め込んでおき
レジストキーの入力結果をcryptして一致すればレジスト解除すれば
いいんじゃないかと思ったんだが、どういう目的で暗号化したいんだい?
0391デフォルトの名無しさんNGNG
ちなみに crypt() は不可逆だけど crypt() が使っている
des アルゴリズム自体は可逆です。
0392376NGNG
>>390
可逆でないと困る、としか言えない。
>>391
DESなり3DESなりで暗号化したものを埋めると、>>377 ほどメンテナンス性が
よくない他、復号するための鍵をどう埋めるかという問題で循環して
しまうような。

厨房対策ってだけなので、>>377でいいですわ。ありがとう。
377がもっと可読性の高いマクロかなんかにできるなら嬉しい
んだけどむりっぽ。

0393デフォルトの名無しさんNGNG
お前らいい加減にしろよ・・・。
純粋な C に関するもので無い限り、質問は受け付けるな。
MFC も DirectX も別スレがある。
それとも、問題の切り分けができない輩をはびこらせて、教えたがりクン気取って
楽しいのか?
それとも、「ここは 2 ちゃんねるだから」 スレの内容が整然としていなくても
どうでもいいか?
0394デフォルトの名無しさんNGNG
>>393 はい、さっさと氏んでね。
0395デフォルトの名無しさんNGNG
>>393
はて、>>374はさくっと無視されてるし、>>386はポインタの質問であって
そのポインタがたまたまDirectXで使われてるだけで、
回答も一般的なポインタの回答しかしていない。

君もそういうスレ違いの内容を誘導もせずに風紀委員を気取って楽しいのか?
0396デフォルトの名無しさんNGNG
>>393
じゃあ、話降ってくれよ。
0397デフォルトの名無しさんNGNG
>>393
Cに関係ない。別スレへどうぞ。
0398デフォルトの名無しさんNGNG
前スレがマジレスで終わってる・・・
0399デフォルトの名無しさんNGNG
>>398
俺は綺麗にこのスレへのリンクを貼って終わらせたかったのだが...
 今 一 歩 及 ば な か っ た
0400デフォルトの名無しさんNGNG
>>399
          ,. -───-: 、
          /::::::::::::::::::::::::::::::::\
          / '':::::::::::::::::::::::::::::::''''' ヽ
         !::::::::::ィ::ハ:::;::::::::::::::::::::::::::!
       i::|:::i::/l/  i;::ト、:、:::i:::::::::::::::i
       |::i/レ'-i''  'ヽi-ヾ,ヽ!:::::::::::::l
       |::ハ -‐-   -─- i::::::::::::::l
       |::::::l|  |     |  | |::::::::::::::!
       |::::::ヽ | r---、! l,.!::::::::::::::l
       l::::::::::::`;'-'=,‐,='r''i~!:::::::::::::::|
         !:::::::l、::r'"´'. ' l ' i::::::::iヽ:::l
       i:l、:::|./、_____,l::::;l:/‐'ヽ!
        '!ヽ;i'>l____,.//-‐'''"ヽ
            !/ |.VVVVVVVV.lV\!. i
         |  |        |    l
0401デフォルトの名無しさんNGNG
前スレの質問者は、
wkが上書きされて0バイトになって、死んでいるんだろうな。
0402デフォルトの名無しさんNGNG
>>401 (・∀・)イイ!!
0403デフォルトの名無しさんNGNG
nkfが改行コードの変換もやってくれるじゃん
0404デフォルトの名無しさんNGNG
struct 童貞 {
25歳無職;
アニオタ;
デブ;
体臭;
};

童貞 >>393;
0405デフォルトの名無しさんNGNG
>>404 Not Found
0406デフォルトの名無しさんNGNG
>>404
393 が痛いのは分かったからスレ汚すのはやめてくれ。
0407374NGNG
Visual C+(MFC限定)スレで質問しなおしました
ご迷惑をおかけしました
0408コンパイラNGNG
C言語では本当の意味で参照渡しはできないって
どういう意味ですか?C++ではできるらしいのですが・・
0409デフォルトの名無しさんNGNG
>>408
例えば

void hoge(int *a)

aを変更すると引数で与えた変数にその変更が反映される点では参照渡しに非常に似ているが、
それはアドレスという参照用の情報を値渡ししているにすぎない。
0410デフォルトの名無しさんNGNG
func(&value); // Cにおける偽参照渡し==ポインタ渡し。

C++だと、参照渡し(値で関数を呼ぶと、値のポインタが渡される)
を明示して関数プロトタイプを関数を宣言できる。↓

void func(int &value);
0411コンパイラNGNG
ではなぜこれを参照渡しと言ってしまうのですか?
0412デフォルトの名無しさんNGNG
>>411
機能的にはほぼ同一だからです。
まぁ、間違って覚えてるアフォも少なからずいるようですが。
0413コンパイラNGNG
そうですか。ありがとうございました。
0414デフォルトの名無しさんNGNG
バイトオーダを変える htonl() を調べると、
ホストバイトオーダをネットワークバイトオーダに変えると
よく書いてあるのを見かけますが、
実際動かしてみると、
リトルエンディアンをビッグエンディアンに、
ビッグエンディアンをリトルエンディアンに変えてるような気がするのですが、
この認識は間違いですか??
0415デフォルトの名無しさんNGNG
>>414
ネットワークバイトオーダとホストバイトオーダが同じならば
変えない。はず。
0416デフォルトの名無しさんNGNG
>>414
レスありがとうございます。

ネットワーク側とホスト側のバイトオーダが同じかどうかというのは
誰がいつどうやって調べてるのでしょうか?
0417414NGNG
↑
× >>414
○ >>415
0418デフォルトの名無しさんNGNG
>>416
まぁ、OS依存でしょう。
0419デフォルトの名無しさんNGNG
>>416
ライブラリをビルドするときにでも調べるのでは。htonl呼び出し時に
チェックコード実行して判断してるのかも知れないけど。
いずれにせよ知る必要は無いし、それに依存したコードを書くべきで
もない。
0420デフォルトの名無しさんNGNG
>>416
> 誰が
コンパイラないしライブラリの製作者
> いつ
コンパイラないしライブラリを制作する時
> どうやって
2 バイト以上のデータがメモリにどう格納されるかを調べて
0421デフォルトの名無しさんNGNG
>414
間違ってはいないが、よく考えろ。
ネットワークバイトオーダ<->ホストバイトオーダは
どちら向きにも同じ処理だろ?

ということではないのか?
0422デフォルトの名無しさんNGNG
>>416
例えばC FAQに載ってるのはこう
int x = 1;
if(*(char *)&x == 1)
    printf("little-endian\n");
else  printf("big-endian\n");

大抵はプログラムをコンパイルする前に調べておいて条件コンパイルする。
0423デフォルトの名無しさんNGNG
>>416
調べる必要などありません
ネットワークバイトオーダはリトルエンディアンであることがRFCで決まっています。
# どのRFCに書かれてるか忘れた

自分のアーキテクチャがリトルエンディアンの場合→何もしない
自分のアーキテクチャがビッグエンディアンの場合→変換
これだけです。
0424デフォルトの名無しさんNGNG
typedef をわかりやすく言うとどういう事なんですか?
0425デフォルトの名無しさんNGNG
うまうま
0426デフォルトの名無しさんNGNG
>>424
型def
0427デフォルトの名無しさんNGNG
>>426
defも訳してやれやw

型てい
0428426NGNG
>>427
スマソ&&フォローサンクスコ
0429416NGNG
>>423
>ネットワークバイトオーダはリトルエンディアンであることがRFCで決まっています。

どこかのサイトでも見たよう気がします。
でもよく意味がよくわかりませんでした・・・。

バイトオーダってのはCPUで決まるんですよね?
通信先は無条件でリトルエンディアンだ!! って決められても、
その通信先のマシンのCPUがビッグエンディアンを採用してたら
ホストがリトルエンディアンだからといって
何も変換しないで通信しようとするとおかしくなりませんか??
0430デフォルトの名無しさんNGNG
>>429
ネットワーク上では、必ずリトルエンディアンで送受信するって決まってるの。
通信先がビッグエンディアンだとしても、そっちの方でちゃんと受理してるから
おかしくならないの。
わかれ。
0431デフォルトの名無しさんNGNG
>>429
なぜに?向こうが変換すればいい話。
飛んでくるデータのエンディアンはあらかじめわかっているわけで。
0432デフォルトの名無しさんNGNG
>>429
その場合は通信先のマシンがntohl等を利用してビッグエンディアンに
変換する。
0433416NGNG
あ、ようやく分かりました。
受け取り側も変換すれば解決するんですね。

なぜに気づかなかったのか・・・。

お騒がせ致しました。
0434デフォルトの名無しさんNGNG
>>429
ネットワークに流す時はビッグエンディアンってことに決めとけば、
読む時はビッグエンディアンから自分のバイトオーダに変換すればいいだろ。
ちなみにネットワークバイトオーダーがリトルエンディアンっていうのはネタかDQN。
0435デフォルトの名無しさんNGNG
>>434
回答も煽りもスピードが命。
0436デフォルトの名無しさんNGNG
>>429
> ホストがリトルエンディアンだからといって
> 何も変換しないで通信しようとするとおかしくなりませんか??
おかしくなります。だからRFCで規定しています。
よって、ネットワーク上にビッグエンディアンの
データを流さないようにしなければなりません。
0437デフォルトの名無しさんNGNG
>>439
ネットワークバイトオーダーに変換する関数が用意されているんだっけ?
0438437NGNG
ああ、上の方にかいてあったか・・・
しかもレス先間違えているし。。
0439デフォルトの名無しさんNGNG
#define UCHAR unsigned char

も

typedef unsigned char UCHAR;

も同じ意味だよね? 使い分ける必要ってあるのかいな。
コンパイル時に意味がかわるのはわかるけど、、、使い分けなんて必要ないよね?
趣味のレベルだよね? これって。
0440デフォルトの名無しさんNGNG
>>439
> 使い分けなんて必要ないよね?
ある
UCHAR a, b, c;
と書いたときのことを考えろ。
0441デフォルトの名無しさんNGNG
>>440?
0442デフォルトの名無しさんNGNG
>>440
何ら違いは見いだせないが。
言いたい事はわかるけど。

>>439
#define LPSTR char *
と
typedef char * LPSTR
で、
LPSTR a, b;
がどう解釈されるか考えてみよう。
0443439NGNG
ほえ?

どっちも同じじゃないの?

#defineの場合
 char *a, b;
と置換されて

typedefの場合
 char *a, b;
と判断される。

うー Webで調べても具体例みつからねぇ〜
0444デフォルトの名無しさんNGNG
>>443
おいおい
typedefの場合、
char *a,*b;
だろ・・・。
0445デフォルトの名無しさんNGNG
というか、実際にコンパイルして、sizeofででも表示してみろよ、、、
0446デフォルトの名無しさんNGNG
ほえ〜?
0447デフォルトの名無しさんNGNG
これはエキスパートCプログラミングの100ページの話ですか。
0448デフォルトの名無しさんNGNG
とういかよ、#defineとtypedefの違いなんて延々と説明して、
スレを消費すんなよ。
質問してる奴って、本買う金がもったいないからHP教えてくださいとか
質問してるような奴なんじゃねーの?
0449デフォルトの名無しさんNGNG
ほえぇぇぇ〜。
0450デフォルトの名無しさんNGNG
>>448
初心者には、ちょい、分かりにくいんでないの?
#defineとtypdefの違い。
0451デフォルトの名無しさんNGNG
>>447
俺も今まさに確認したところだ。
この本からと思われる話題多いね。
0452デフォルトの名無しさんNGNG
関数へのポインタ使ったら怒られた。
関数へのポインタの配列作ったら誰も理解できなかった。
・・・・・・こんな会社、もう辞めたい・・・・・・
0453デフォルトの名無しさんNGNG
>>452
どこもそんなレベルです。
0454デフォルトの名無しさんNGNG
>>452
スレ違い。つーか板違い。マ板逝って。
0455デフォルトの名無しさんNGNG
C++なら極めて分かりやすいんだがな

namespace foo{
#define T1 char
typedef char T2;
}

namespace bar{
class T1; // NG
class T2; // OK
}
0456デフォルトの名無しさんNGNG
おまえら、defineの代わりにenum,typedef使えと。
0457デフォルトの名無しさんNGNG
>>459
enumの使い方を知ってる人はごく少数です。
045822歳女NGNG
できる限りtypdefは使わないでほすぃ
0459458NGNG
s/typedef/typedef/
0460458NGNG
・・・・・。
0461デフォルトの名無しさんNGNG
あのー文字列定数ってどうしてますか。

#define TEXT_SAGE "sage"
const char *TEXT_SAGE = "sage";
const char TEXT_SAGE[] = "sage";
0462デフォルトの名無しさんNGNG
>>455
わかりやすいか??
0463458NGNG
>>461

"文字列定数"
0464デフォルトの名無しさんNGNG
>>460
おっちょこちょいなところに惹かれました。あなたのことが好きです。
0465デフォルトの名無しさんNGNG
>>463
でも、そんなふうにプログラム中にいきなり定数を書くところは嫌いです。
0466デフォルトの名無しさんNGNG
>>465
この人はなんでもかんでも文字列定数をマクロにするのかな・・・
0467デフォルトの名無しさんNGNG
関数へのポインタはtypedefするのが定番だと思うのですがどうですか。
0468デフォルトの名無しさんNGNG
>>463
それは定数じゃなくてリテラル。
定数と呼ぶなら const を付けるのが正しい。
461 の 2 つめと 3 つめのどちらでもいいんじゃないか?
0469デフォルトの名無しさんNGNG
>>467
賛同。
0470デフォルトの名無しさんNGNG
>>468をさらしあげ
0471デフォルトの名無しさんNGNG
例えばWindowsアプリでGet/WritePrivateProfile系APIを対で使うとき、
セクション名やキー名をグローバルに#defineしてるんだけど・・・変? 俺、変態?
0472デフォルトの名無しさんNGNG
1; /* constついていないけど定数だよね?(ワラ */
0473デフォルトの名無しさんNGNG
C言語のソースを見てみたらマクロばっかで超読みにくいんです
簡単だからって何でもかんでもdefineしてんじゃねーよ、ボケが。
よーし、パパuchar定義しちゃうぞとか言ってるの。もう見てらんない。
お前らな、glibcやるからdefine除けと。

でやっと除けたかと思ったら他のプログラマーがswapマクロとか書いてるんです。
そこでまたぶち切れですよ。
略)おまえdo{}while(0)しただけちゃうんかと。
エキスパートcプログラマの俺から言わせてもらえば今、プログラマの間での最新
流行はやっぱりinline修飾、これだね。
更にインラインアセンブラ。これ最強。
処理系依存と言う危険も伴う、両刃の剣。
まぁお前らド素人は、javaでも使ってなさいってこった。
0474デフォルトの名無しさんNGNG


       ま  た  C  99  か 

0475デフォルトの名無しさんNGNG
>>468のような人の事を「杓子定規な人」と言います。
0476デフォルトの名無しさんNGNG
>>472
即値と定数の区別もつかないのか?
0477デフォルトの名無しさんNGNG
>>473
素人の匂いがぷんぷんするぞ
0478デフォルトの名無しさんNGNG
>>471
最適化オプションによっては、同じ内容のリテラルでも別々の文字列として格納
されてしまう場合があるから気をつけろ!
0479デフォルトの名無しさんNGNG
C言語の範囲で即値なんて言葉はあったか?
0480デフォルトの名無しさんNGNG
>>479
定数=コンスタント
即値=リテラル
0481デフォルトの名無しさんNGNG
K&R第二版 p236 A2.6 文字列リテラル より
> 文字列定数とも呼ばれる文字列リテラルは、"..."のように2重引用符で囲まれた文字列である。
0482デフォルトの名無しさんNGNG
>>478
がーん、どう気をつければ・・・
0483デフォルトの名無しさんNGNG
googleで「C言語 文字列定数」をキーワードに検索したところ、どこも"〜〜"を文字列定数と呼んでいるんだが・・・
0484483NGNG
ちょっと語弊があるな。
文字列定数はどこも"〜〜"のことを指している
0485デフォルトの名無しさんNGNG
リテラル=定数
0486デフォルトの名無しさんNGNG
>>468
プ
0487デフォルトの名無しさんNGNG
訳語の話をしてるんであってCの話とは関係ないってオチじゃ
0488デフォルトの名無しさんNGNG
literalよりimmediateじゃない?<即値
0489デフォルトの名無しさんNGNG
でもconstつけても定数にはならないんだよね?ReadOnlyなだけであって。
0490デフォルトの名無しさんNGNG
>>489
ReadOnlyだから定数と見ていいんじゃない?
constは定数のことだし
0491デフォルトの名無しさんNGNG
>>482
普通はそれでも困るほど膨れることはないから無視していい。
気になるなら、素直に const char * 使えばいい。
0492デフォルトの名無しさんNGNG
それよりみんなどうしてるの。#define TEXT "sage" はやらないものなんか。
使う場所でいきなり書いちゃう?
0493デフォルトの名無しさんNGNG
>>492
一度しか使わないものをいちいちマクロにしたりはしない。
何度も使うならマクロにする。
0494デフォルトの名無しさんNGNG
プログラム名とかバージョン名に使ったりする<define VERSION "1.2.3"
0495デフォルトの名無しさんNGNG
>>490
それだと定番の
 const int MAX =10;
 char ss[MAX];
トークに。
0496デフォルトの名無しさんNGNG
>>494
そうそう。
あとログファイルとか設定ファイルの場所とかも。
0497デフォルトの名無しさんNGNG
>>495
あー・・・
じゃあ準定数(←勝手に作った言葉)
0498デフォルトの名無しさんNGNG
即値の人、どっか行っちゃったね
0499デフォルトの名無しさんNGNG
お前らはあるある話で盛り上がる中学生ですか?
0500即値の人NGNG
なんだ、思ったより釣れなかった。つまらん。
0501デフォルトの名無しさんNGNG
間違ったらネタにしたがるモノホンの中学生発見
0502デフォルトの名無しさんNGNG
私はついこの前Cを始めたばかりでここの方達に質問するのも
悪い気がするのですが、聞いてください。
えっと、if〜elseの使い方を覚えたので、少年マガジンにあった
GetBackersの「君が戦う相手は誰だ!」
というYES、NOでどんどん選んでいって
最終的になんらかの結果が出るというものを作ろうとしてるのですが
どうもうまくいきません。
ソースコードを出すんで、どこがおかしいかみていただけないでしょうか?
0503デフォルトの名無しさんNGNG
>>500
こういうやつってアホとしか思えん。
どうせ匿名なんだから、へたなごまかしなんかしないで、
そのまま逃げればいいのに。
0504デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
char num,num2;
printf("START!\n");
printf("「YES」か「NO」で答えてください。\n「YES」の場合はY、NOの場合はNを押してください。\n");
printf("「GetBackers」は毎週欠かさず読んでる?\n");
num=getchar();
if(num=='N'||num=='n')
{
printf("GAMEOVER");
}
else if(num=='Y'||num=='y')
{
printf("今、付き合ってる人がいる?\n");

num2=getchar();

0505デフォルトの名無しさんNGNG
num2=getchar();
if(num2=='Y'||num2=='y')
{
printf("実験なので終了\n");
}

else if(num2=='N'||num2=='n')
{
printf("実験なので終了\n");
}
}
return 0;
}

のprintf("今、付き合ってる人がいる?\n");で処理が終わってしまい、
num2=getchar();が処理されないのですがどうしてでしょうか?
分かる方いたら教えてください。お願いします。
0506デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
char num,num2;
printf("START!\n");
printf("「YES」か「NO」で答えてください。\n「YES」の場合はY、NOの場合はNを押してください。\n");
printf("「GetBackers」は毎週欠かさず読んでる?\n");
num=getchar();
if(num=='N'||num=='n')
{
printf("GAMEOVER");
}
else if(num=='Y'||num=='y')
{
printf("今、付き合ってる人がいる?\n");

num2=getchar();
}
return 0;
}
0507デフォルトの名無しさんNGNG
>>504
二回目のgetcharで改行を読んでいるとか?
0508デフォルトの名無しさんNGNG
新手の荒らしですか?
0509506NGNG
>>508
俺もそう思たが・・・
0510デフォルトの名無しさんNGNG
すみません。ただのハローワールドなのですがコンパイルエラーとなります。どこが悪いのでしょうか?

#include <stdio.h>

int main(int argv , char **argc)
{
char *hello_world = "hello world!";

printf(%s\n , hello_world);

return 0;
}
0511デフォルトの名無しさんNGNG
>>510
とりあえず、なんか本買え。
0512デフォルトの名無しさんNGNG
すいません、>>506はミス入力です。
>>507二回目?>>504と>>505のnum2=getchar();
は同じものです。

>>508荒らしではないですが、
板を見にくくしてしまって申し訳ありません。
もしかして私のことを他人からみたら厨ですか?
厨は大っ嫌いなのに・・・
0513デフォルトの名無しさんNGNG
>>506
なぜコピペするのかわからん。

>>510
"%s\n"
0514デフォルトの名無しさんNGNG
>>512

たとえばnを入力し、つづいてEnterキーを押す。
そうするとnはgetchar()で読まれるが、Enterキーを押すことで入力された改行文字はバッファに残る。
次にgetchar()が呼ばれるとその改行文字を読むから入力待ちにならない。
0515506NGNG
>>510
限りなく危険だが、これで動くことは動く。
>>511に同意でなんか本を買え

#include <stdio.h>

int main(int argv , char **argc)
{
char *hello_world = "hello world!";

printf("%s\n" , hello_world);

return 0;
}
0516デフォルトの名無しさんNGNG
おとなしくscanfでもつかっとけ。
0517デフォルトの名無しさんNGNG
>>515
なぜ危険なんだ?
0518デフォルトの名無しさんNGNG
>>515
何が危険なの?
0519518NGNG
かぶった (;´Д`)
0520512NGNG
>>514氏、じゃあどうすればよいのですか?
scanfで数字入力にするようですか?
0521デフォルトの名無しさんNGNG
>>515
まさか仮引数名が一般とは逆になっているとかそういうことじゃないよね?
0522506NGNG
>>517
俺は確保されていないメモリに文字列を突っ込むのは怖いので。
0523デフォルトの名無しさんNGNG
>>522

文字列定数は自動的にどこかに領域が取られるんじゃなかったのか?(^_^;)
0524デフォルトの名無しさんNGNG
>>522
良かったなここで恥かいといて。
0525デフォルトの名無しさんNGNG
>>506
君の知識のほうが危険な気がする
0526506NGNG
>>522
それもコンパイラの設定次第だったりする・・・だったと思う(汗)

0527デフォルトの名無しさんNGNG
>>522
          ,. -───-: 、
          /::::::::::::::::::::::::::::::::\
          / '':::::::::::::::::::::::::::::::''''' ヽ
         !::::::::::ィ::ハ:::;::::::::::::::::::::::::::!
       i::|:::i::/l/  i;::ト、:、:::i:::::::::::::::i
       |::i/レ'-i''  'ヽi-ヾ,ヽ!:::::::::::::l
       |::ハ -‐-   -─- i::::::::::::::l
       |::::::l|  |     |  | |::::::::::::::!
       |::::::ヽ | r---、! l,.!::::::::::::::l
       l::::::::::::`;'-'=,‐,='r''i~!:::::::::::::::|
         !:::::::l、::r'"´'. ' l ' i::::::::iヽ:::l
       i:l、:::|./、_____,l::::;l:/‐'ヽ!
        '!ヽ;i'>l____,.//-‐'''"ヽ
            !/ |.VVVVVVVV.lV\!. i
         |  |        |    l
0528506NGNG
誤 >>522
正 >>523
0529523NGNG
>>526
じゃあなんだ、printf("Hello,world!\n");これも危険だってか?
0530510NGNG
>>506
勉強しなおしてください。引っかかる人がいるとは思いませんでした。
0531デフォルトの名無しさんNGNG
>>522
もしかして、
char *hello_world = "hello world!";
でメモリを明示的に確保する必要があると思ってる?
0532デフォルトの名無しさんNGNG
                ,.-ー''"~"'i,
              /~   ..:::::::!.,___        ,,..、-、,
            /    .::::::::::::::`::::::~~""''''ー-,/~:::::::::.`i,
           /     .:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::: i
           /      .:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::.. |
         ,/      :::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::. i
         ,l'       ::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::. |
         l       ::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::: i  おいおい、お前ら落ち着けよ・・・
         i,       ..:::::●:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::: !
        _,,.i      ..::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::●::  i'
      /~  'l,    ..:::::::::::::::::::::::::::|、;;;;;;;;;;;;;;;;;/::::::::::::::::: ,i'            /~\
    /,.、-ー 、;i,   .::::::::::::::::::::::::::::::|  ~"''''"/::::::::::::::::::: /~\         /    i.,_
   /'/ ..::::::::|::' .,  :::::::::::::::::::::::::::::::|'⌒`ヽ,/;:::::::::::::::::: /:::::::.. \       ,i    .::.. \
   / i'  .::::::::::/:::::::`・、., :::::::::::::::::::::::,人,__,/;;;;;::::::::::::::::/;;;;;;:;:::::.. ヘ     /  .::::....::::::::. `.,
  ,i/( .::::::::::::i,::::::::::::;;;;;;~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::-''";;;;;;;;;;;;;;;:::::..  \  /  .:::::::::::):::::::::.. ヘ

0533デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c1.html#32
0534デフォルトの名無しさんNGNG
>>526
もう一度C-FAQを読み直してきなさい。
0535デフォルトの名無しさんNGNG
>>506はc faqの文字列の所を読んだ方が良いな。
文字列リテラルは名無しのstaticに確保されるが変更可能かどうかは不明。
0536506NGNG
>>529
printfは知らんが、sprintfは危険なのは知っている。

>>531
バグが潜む可能性があると提示したまでです。
0537506 NGNG
>>535うう、よく分かりません・・・。
やっぱりif else文を覚えたてでは無理ですか?
今はやさしいCっていう麻奈本で学んでるんですけど・・・。
0538523NGNG
>>536
char *str="abcdef";

この文は、char型へのポインタstrを宣言して、それを文字列定数"abcdef"の先頭アドレスで初期化しているということは理解しているよね?
0539デフォルトの名無しさんNGNG
             ,ィミ,        ,ィミ,               フ
              彡 ミ        彡 ミ,            ヤ |
           ,,彡   ミ、、、、、、、、彡  ミ,     (⌒)    レ  |  まあ落ち着けや
          彡;:;:             ミ,    (  ヽ   ヤ
       〜三;:;:::::              彡〜  ノ  ノ   レ
       ~~三:;:;:;:::::  -=・=-   -=・=- 三~~ ヽ (    :     ;;
       ~~彡::;:;:;:;:::..     ___     ,三~~ ( ノ ,,,,,  :      ;;
        ~~彡;:;:;:;:;:;:;:.    |┴┴|    ,ミ~~ ノノ ;'" ,,ノ―、     ,;'
        ~~彡:;:;:;:;:;:;:;:;.  ノ――| ---==ニノ ,;'′ >=ニ(二二二()
   ,...-''''""~~,::;:;::;::;::;::;'            ミ,,  ,;'′  ゝ--〈
__,;";;:;;;;;;;;;;;;;;;;;;;;;:;:;:;:;:;:;:;            i! ミ,,,,;'′   `ー‐'
         ::::ミミミ:;:;:;:           ミ::      ,;' ̄ ̄ ̄ ̄|  \___/
          :::::ミミミ:;:;:           ミ:::,   ,;::''′        |.    \/
          ::::ミミミ:;:;::       ,;+''"~~゙+、~'''''~          |     |
           ::::ミミミ:;:;:;:     ,+'"     ミ:::::           |   ━┷━━━┳━━━━━
             :::::ミミミ:;:;:;:;:  >':;:       ミ::              |             ┃
           ::::::ミミミ:;:;:;:;:;../;:;:;:       ;:"             |             ┃
            ::::::::ミミミミ:;:/;:;:;:;:    ,.+'"''-、________|__         ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄;':;:;:;:   ,.+'"    ミ、             l          ┃
0540デフォルトの名無しさんNGNG
>>536
発生しうるバグは
> 俺は確保されていないメモリに文字列を突っ込むのは怖いので。
で言い表されるのとは違うと思うのだが。
0541デフォルトの名無しさんNGNG
>>537
scanfでいいんじゃないの?
0542デフォルトの名無しさんNGNG
>>536
じゃあどう危険なのか教えて欲しい。
0543506 NGNG
>>541じゃあ
scanfでYESは1、NOは2ということでやってみます。
0544そくちのひとNGNG
最初ここに来たときは傲慢な口調の奴ばかりで
「こいつら相当プログラムできるんだろうな」と思っていたが、
見てる内に大半はハターリで無能な奴ほど増長すると言う事が分かりました。
0545536NGNG
>>538
一応本職なので。
>>540
その回答には誤りがあった。認める。

俺が言いたかったのは明示的に変更を加えるような
ソースでない限り、変更が加えられるような恐れの
あるコーディングは危険だ、と言うことだ。
0546デフォルトの名無しさんNGNG
>>545
> 一応本職なので。
          ,. -───-: 、
          /::::::::::::::::::::::::::::::::\
          / '':::::::::::::::::::::::::::::::''''' ヽ
         !::::::::::ィ::ハ:::;::::::::::::::::::::::::::!
       i::|:::i::/l/  i;::ト、:、:::i:::::::::::::::i
       |::i/レ'-i''  'ヽi-ヾ,ヽ!:::::::::::::l
       |::ハ -‐-   -─- i::::::::::::::l
       |::::::l|  |     |  | |::::::::::::::!
       |::::::ヽ | r---、! l,.!::::::::::::::l
       l::::::::::::`;'-'=,‐,='r''i~!:::::::::::::::|
         !:::::::l、::r'"´'. ' l ' i::::::::iヽ:::l
       i:l、:::|./、_____,l::::;l:/‐'ヽ!
        '!ヽ;i'>l____,.//-‐'''"ヽ
            !/ |.VVVVVVVV.lV\!. i
         |  |        |    l
0547デフォルトの名無しさんNGNG
>>536
本職とは思えないほどの知識の無さ。お願いだからC言語入門からやり直してください。
0548デフォルトの名無しさんNGNG
>>546
何言いたいか分からないよ。

> 明示的に変更を加えるような
何が何にどう変更を加えるの?
0549デフォルトの名無しさんNGNG
>>548
要するに
const char *hello_world = "hello world!!!!";
にしとけってことでは?
0550デフォルトの名無しさんNGNG
const char const * p = "hello japan";
0551デフォルトの名無しさんNGNG
>>550
ネタですか?
0552デフォルトの名無しさんNGNG
わかったから
"Welcome Hell World"
にしときなさい。おまへら。
0553デフォルトの名無しさんNGNG
552=550?
551 は文字列の内容を指摘してるんじゃないと思うけど。
0554デフォルトの名無しさんNGNG
helloworldも書けない奴がしたり顔でc言語を教えているスレはここですか?
0555デフォルトの名無しさんNGNG
506が二人いるように見えるんだが、、、
0556デフォルトの名無しさんNGNG
"Naruhodo the World"希望
0557536NGNG
>>548
これはC++になるが、文字操作クラスのメソッドを作るときに
最終的には文字をポインタで操作するような事だ。

話がそれるが、俺はバグをなるだけ抑えるようなコードを書くために
慎重さを優先させてきたつもりだ。
>>547の言うようにそんなに知識は無いがなるだけエラーを起こさない様に
努力しているつもりだが何が悪い?
0558デフォルトの名無しさんNGNG
>>549
なら、始めっからそう書くと思うんだよなぁ。
const付けるだけで「限りなく危険」なことが回避できるのなら。
0559デフォルトの名無しさんNGNG
"Hello World"が嫌な椰子は
http://pc.2ch.net/test/read.cgi/prog/1035134087/l50
へ逝ってください。
0560デフォルトの名無しさんNGNG
プログラムを作る上で知識が無いのは致命的な欠点だと思うよ。
知らなかった、じゃあ済まされないからね。
0561デフォルトの名無しさんNGNG
>>543 は 536 とは別の人?
0562デフォルトの名無しさんNGNG
>>557
なぜここで(必要も無い)C++を持ち出す?
0563デフォルトの名無しさんNGNG
>>522
こう言っておいて>>545はねーだろ
0564548NGNG
>>557
あなたは超能力者ですか?
悪いとは一言も言っていない、何を言っているのかわからないって言ったんだ
けど・・・。
しかも、相変わらず理解できないよ。

> これはC++になるが、文字操作クラスのメソッドを作るときに
> 最終的には文字をポインタで操作するような事だ。
いきなり C++ かい、というツッコミは置いといて、主語が無いよ。
何を述べているのか全然わからない。
こんなに日本語ダメダメで、本当に本職さんなの?
0565デフォルトの名無しさんNGNG
>>536=506
ちょっと痛すぎだよ。
素直に謝りを認めればいいものを...
0566デフォルトの名無しさんNGNG
>>506はif-elseの人なの?文字列の人なの?
どっちなんだYO!
0567565NGNG
誤字訂正。 ×謝り→ ○誤り
素直に誤りを認めとこう。
0568デフォルトの名無しさんNGNG
>>567
ワラタ
0569デフォルトの名無しさんNGNG
>>566
唐突に関係の無い話を持ち出さない事。
0570536NGNG
>>564
どうしてそんなに頭がわるい?
文字列操作のクラスを自作してポインタを直接扱わなくてもいいようにしたんだ。
画期的だろ?
0571デフォルトの名無しさんNGNG
>>570
ネタはもうちょっとひねって書き込みましょう。
0572デフォルトの名無しさんNGNG
>>570
画期的だが、さっきからの話題とどう関係あるんだ?
0573564NGNG
Nooooooooo!!!

>>570
> どうしてそんなに頭がわるい?
と
> 文字列操作のクラスを自作してポインタを直接扱わなくてもいいようにしたんだ。
> 画期的だろ?
が全然繋がってないYO!!!
0574デフォルトの名無しさんNGNG
getch()でも、どうぞ
0575デフォルトの名無しさんNGNG
>>564
お前が理解しろ。
0576デフォルトの名無しさんNGNG
570 は騙りじゃないのか?
0577デフォルトの名無しさんNGNG
プログラマーって536みたいな人多いの?なんか開き直ってるし…。
しかしネタが無いからちょっと変な事言う奴を見つけると総出で叩かれるな。
0578デフォルトの名無しさんNGNG
つまり、
「文字列をポインタで持つのは、バグの元だからステ。
 やっぱりC++でstringクラスでしょう」と570は、
このCスレで主張した、と、こいうことか?
0579564NGNG
>>575
あんたにわかると言うなら、もったいぶらずに解釈を書きなさい。
0580デフォルトの名無しさんNGNG
>>578
なるほど。
でもさっきからの話題とのつながりがよくわからないYO・・・
0581580NGNG
話題をそらそうとしただけかしら。。。
0582557NGNG
C++は例えばの話なのだが。
>>563
そうだったな、悪い。あれは俺の間違いだ。
>>564
例えは悪いが、良くあるサンプルで
int型nとiがメモリ上で並んでいたとしてiが何かの拍子でオーバーフローした結果、
nにも(不本意にも)影響が出てしまう。
つまり、いちいちポインタ云々で文字列操作をするとバグが出る可能性がある
と言いたかった。(扱う場合にはエラーが出ないよう慎重にコーディングする)
0583386NGNG
どいつもこいつも頭の悪いヤツばかりだな。
0584550NGNG
>>553
何言ってんだか…、やれやれアホにはついていけませんな。
0585386NGNG
int型のnをオーバーフローすると別のメモリに書き込みが行われるのか。
勉強になるな、うん。
0586デフォルトの名無しさんNGNG
>>580
>>548が本物だとしたら、「C++出せば納得してもらえるだろう。どうせC++
わかんねーだろうし」ってとこじゃないか?
0587デフォルトの名無しさんNGNG
>>582
オーバーフロウってバッファオーバーフロウを指しているの?
じゃないとnに影響を与えることなんてないんじゃないか?
0588デフォルトの名無しさんNGNG
>>584
アフォですか?
const char const * p = "hello japan";
これ
const char * p = "hello japan";
とどう違うの?
0589582NGNG
ちなみに>>570は俺じゃない。
画期的かかは別問題として、ポインタを直接操作するのは
極力しないように勤めるのが、バグ減らしに有効だと思う。
0590デフォルトの名無しさんNGNG
桁あふれってCPU上で起こるんだからメモリーには影響を与えないような気が・・・
0591デフォルトの名無しさんNGNG
>>589
とりあえず、名前は固定しといてくれ。
バグの元だ。
0592デフォルトの名無しさんNGNG
番号だらけだな
0593デフォルトの名無しさんNGNG
亀レスですが私>>543は>>536とは別人です。
0594デフォルトの名無しさんNGNG
>>590
386 は全部ネタだから無視して (・∀・)イイ!! よ。
0595デフォルトの名無しさんNGNG
>>593
だよな(笑)
>>504が>>506ならただのミスだけど、そうでないのなら、>>504をコピペする意図がさっぱりわからん。
0596デフォルトの名無しさんNGNG
>>594
言ったのは386じゃねーだろ(ワラ
0597デフォルトの名無しさんNGNG
もうグダグダだな。
0598386NGNG
>>589
unsinged int n = 0xffffffff;
n++;

うあっ、強制終了させられた!!(window2000)
0599594NGNG
>>596
う、今読み直して気付いた。逝ってくる・・・。
0600デフォルトの名無しさんNGNG
>>589
つまり、Hello, WorldでもC++のstringのようなものを実装してそれ使えと。
余計バグ増やしそうな気がするのは俺だけか?
0601582NGNG
>>590
そんな事初めて聞きましたが。俺の知識不足か!?
>>591
ああ、バグの元だ。済まない。
0602デフォルトの名無しさんNGNG
結局のところ、>>506の
> 限りなく危険だが、
は、Cの仕様を理解していなかったので 危険だという妄想を抱いた

ということでよろしいいか。
0603デフォルトの名無しさんNGNG
>>598
せめて(藁くらいつけろ。でないとお前がマジで言っているみたいだぞ。
0604デフォルトの名無しさんNGNG
unsinged ??
0605デフォルトの名無しさんNGNG
506 は C も会話もボロボロという事でよろしいか?
0606デフォルトの名無しさんNGNG
>>601
え?だって演算はCPU上で行うものだとばかり・・・
違うの?(ToT)
0607デフォルトの名無しさんNGNG
test.c:6: unsinged undeclaredまぁ確かに強制終了と言えなくも無いがww
0608デフォルトの名無しさんNGNG
>>606
自信持て。508 が電波キタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !! なだけだ。
0609デフォルトの名無しさんNGNG
508って誰だよ(藁
0610デフォルトの名無しさんNGNG

                \ │ /            \ │ /
                 / ̄\              / ̄\ 
               ─( ゚ ∀ ゚ )─          ─( ゚ ∀ ゚ )─
                 \_/              \_/ 
                / │ \            / │ \
                    ∩ ∧ ∧∩             .∩ ∧ ∧∩  
             ∩ ∧ ∧ \( ゚∀゚) /      ∩ ∧ ∧  \( ゚∀゚) /
              ( ゚∀゚ )/  |    /  .      ( ゚∀゚ )/   |    / 
              |    〈 |   |       |    〈  |   |
              / /\_」 / /\」         / /\_」  / /\」
               ̄     / /            ̄      / /

0611デフォルトの名無しさんNGNG
オーバーフローが他のメモリを汚すなら、シフト演算なんて怖くてできないぜ。
0612デフォルトの名無しさんNGNG
>>606
メモリは計算器を持っていない。
だから一見メモリに対する演算でも、一旦 CPU にデータをフェッチして、演算後、
値を書き戻している。
この際、データ転送は変数の大きさ単位に行われる。
例えば符号無し 32bit 整数なら 32bit で。
計算結果が 33bit 目以降に起こっても 32bit で転送されるので、元のメモリの
別の変数領域が破壊される事は無い。
0613582NGNG
>>611
それを応用するとウイルスが出来る。
実際扱うのは関数ポインタなんだが。
0614デフォルトの名無しさんNGNG
>>608>>612
ですよね。。。
常識のつもりでいたことが間違っているのかとおもって焦りました。。
0615デフォルトの名無しさんNGNG
>>609
名前の番号をころころ変えて周りを惑わしてる香具師。
0616デフォルトの名無しさんNGNG
>>613
あのさー、桁あふれとバッファオーバーフローを取り違えていない?
0617デフォルトの名無しさんNGNG
整数のオーバーフロー時に、隣のメモリを汚すのは
ANSIの規定の許容範囲なのだろうか。
0618デフォルトの名無しさんNGNG
>>613
> それを応用するとウイルスが出来る。
本気で大丈夫ですか?
0619デフォルトの名無しさんNGNG
今度はオーバーフローですか?
0620デフォルトの名無しさんNGNG
  |         |  |      ________________________________________________
  |         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         ∧_∧
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 祭 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   ∧_∧     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    ∧_∧
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 祭 〕
  |  /         /_ノ(_)          ┌|___|
  |/          (__)             (_ノ ヽ ヽ
/                                (_)

0621デフォルトの名無しさんNGNG
>>612
データ転送の単位は変数ではなくてアーキテクチャに依存すると思うんだが。
0622デフォルトの名無しさんNGNG

適当に法螺吹いて悦に浸っている DQN 本職がいるスレはここですか?
0623デフォルトの名無しさんNGNG
>>621
そんな気がしないでもない。
>>617
「未定義」 だったような気がしないでもない。
0624デフォルトの名無しさんNGNG
>>623
というか、定義するまでもない。
0625デフォルトの名無しさんNGNG
             ∧         ∧              ###
            / ヽ        ./ .∧           /#####ヽ
           /   `、     /   .∧         /  ##### \
          /       ̄ ̄ ̄    ヽ        /   #####  ヽ
          l:::::::::              .l      /    #####   ヽ
         |::::::::::  -==・-    -==・-  |      |          ::::::::: :::::::|
         .|:::::::::::::::::   \___/    |      |  -・==-   -・==- :::::::::|
          ヽ:::::::::::::::::::  \/     丿      |    \___/  :: :::::::|
          ヽ:::::::::::::::::        /       ヽ      \/    ::::::::::|
     ____>:::::::::::::::::       <_        ヽ        ::::;;;::::::::丿
    /:::::::::::::::::::::::: :::::::::          /⌒ヽ⌒、⌒、⌒、      ::::::::: :<___
    |::::::::::::;;;;;;;;;;;;;:::::::::::::::        / /ヽノヽノヽノヽノ       :::::::::::::  :::::::: :::ヽ
   |::::::::::::::::::::::::            /  /:::::::: :::::::::::::::::::::           ::::::::
          「未定義」論争いこうか?             いいねぇ〜
0626デフォルトの名無しさんNGNG
なんで>>510のしょうもない質問からこんなに発展するんだ?
>>510もネタくさいし・・・・
0627デフォルトの名無しさんNGNG
> 510もネタくさいし・・・・
同意・・・
0628デフォルトの名無しさんNGNG
>>510はネタでは無いと思うが。
多少なりともcをかじってる奴はprintfのformat部をあんな風にすると言う発想が
そもそも無いと思う。作為的なものは感じられない。
0629デフォルトの名無しさんNGNG
  |         |  |
  |         |  |_____
  |         |  | ̄ ̄ ̄ /|
  |         |  |   / /|
  |        /\ |  /|/|/|
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /     ∧∧
  |/  /.  _.| ̄|/|/|/      /⌒ヽ)
/|\/  / /  |/ /       [ 祭 _]    ∧∧
/|    / /  /ヽ         三____|∪   /⌒ヽ)
  |   | ̄|  | |ヽ/l         (/~ ∪    [ 祭 _]
  |   |  |/| |__|/       三三      三___|∪
  |   |/|  |/         三三       (/~∪
  |   |  |/         三三      三三
  |   |/                    三三
  |  /                    三三
  |/                    三三

0630デフォルトの名無しさんNGNG
>>628
フォーマット文字列をあんなにする奴がmainの引数を書くとはおもえん・・・しかも通常とは逆だし。
あと>>530
0631デフォルトの名無しさんNGNG
兎も角だおまいら
未定義で不定なんだよ
0632デフォルトの名無しさんNGNG
>>613
> 実際扱うのは関数ポインタなんだが。

新たなネタですか?
0633ageNGNG
age
0634デフォルトの名無しさんNGNG
ここはグダグダなインターネトですne
0635デフォルトの名無しさんNGNG
635 には脱帽。
0636デフォルトの名無しさんNGNG
>>635
0637デフォルトの名無しさんNGNG
ポインタがおかしくなゆので危険というのはこのスレのことだったのか。
0638デフォルトの名無しさんNGNG
Cスレにしては信じられない静けさ
0639デフォルトの名無しさんNGNG
この問題教えてください。
明日までの課題なんです。

「文字列配列を2つ渡すと、その2つの文字列を連結する関数を作成せよ。
ただし、関数は次の機能を持つ。

・2つの文字列配列はポインタで受け取る
・文字列配列の操作はポインタの増加で行う。str[i]という操作は使わない。
・結果は関数内で動的メモリ確保を行いそのポインタを返す。 」

神降臨キボンヌ。
0640デフォルトの名無しさんNGNG
>>639
宿題はスレ違いだバカ野郎。
0641デフォルトの名無しさんNGNG
そうっすね、スマソ
0642デフォルトの名無しさんNGNG
>>639
プログラムに疲れたのでその問題を激しく解いてマターリしたいんだが、
宿題スレでは聞いてくれないのか?
0643デフォルトの名無しさんNGNG
お(^о^〃)や(^О^〃)しゅ(^。^〃)みぃ(^-^〃)♪
0644デフォルトの名無しさんNGNG
char *futatsunomojiretsuworenketsusuru(char *mojiretsu1,char *mojiretsu2)
{
char *renketsushitamojiretsu,*p;

renketsushitamojiretsu=p=(char *)malloc(strlen(mojiretsu1)+strlen(mojiretsu2)+1);
if(renketsushitamojiretsu){
for(;*mojiretsu1;mojiretsu1++,renketsushitamojiretsu++)
*renketsushitamojiretsu=*mojiretsu1;
for(;*mojiretsu2;mojiretsu2++,renketsushitamojiretsu++)
*renketsushitamojiretsu=*mojiretsu2;
*renketsushitamojiretsu='\0';
}

return p;
}
0645644NGNG
仮引数はconst char *にすべきか・・・
0646デフォルトの名無しさんNGNG
char *strcat(char *s, char *t) {
char *p, *q;
q = malloc(strlen(s)+strlen(t)+1);
for (p=q;*p++ = *s++;);
for (p--; *p++ = *t++;);
return q;
}
0647639NGNG
>644 ありがたいです。
なんとかできそうですけど、pの意味って何ですか?
0648デフォルトの名無しさんNGNG
初心者です。C言語をVine Linuxのemacsでやっていきたいと思っています。
お勧めの本を教えてください。入門者から脱初心者へ行ける本がいいです。
住所が田舎でコンピューター関連の本が売っていません。ネットショッピングで買おうと思っていますが、内容がわかりません。
僕にぴったりの本を教えてください。
0649デフォルトの名無しさんNGNG
ライブラリ関数使っとけ。
char *func(const char *str1, const char *str2)
{
  size_t size1 = strlen(str1);
  size_t size2 = strlen(str2) + 1;
  char *p = malloc(size1 + size2);
  if(p) {
    if(size1) memcpy(p, str1, size1);
    memcpy(p + size1, str2, size2);
  }
  return p;
}
0650デフォルトの名無しさんNGNG
>>647
適当な言葉がみつからなかったから単にpとした

>>648
高橋麻奈タンのやさしいC
0651デフォルトの名無しさんNGNG
K&R 読むのは大変だがこれ一冊で十分。
0652649NGNG
こっちがマジレス。
#include <stdlib.h>
char *func(const char *str1, const char *str2)
{
  const char *pp;
  char *p;
  size_t len;
  for(pp = str1; *pp; ) pp++;
  len = pp - str1;
  for(pp = str2; *pp; ) pp++;
  len += pp - str2;

  pp = p = malloc(len + 1);
  if(pp) {
    while(*str1) *p++ = *str1++;
    while(*str2) *p++ = *str2++;
    *p = '\0';
  }
  return (char *)pp;
}
0653デフォルトの名無しさんNGNG
chr *func(const char *str1, const char *str2)
{
char *p = malloc(strlen(str1)+strlen(str2)+1);
*p = '\0';
strcat(p, str1);
strcat(p, str2);
return p;
}
0654デフォルトの名無しさんNGNG
>>653
mallocがNULLを返したらどうする?
0655デフォルトの名無しさんNGNG
chr *func(const char *str1, const char *str2)
{
char *p = malloc(strlen(str1)+strlen(str2)+1);
if (p){
*p = '\0';
strcat(p, str1);
strcat(p, str2);
}
return p;
}
0656649NGNG
>>653
速度を考慮してあえてmemcpyを使ったんだが。
0657639NGNG
やったー、みなさんのおかげでできました。

ぼくにとっては一大事だったのでたすかりました。

MY HEROたちに感謝します。
0658デフォルトの名無しさんNGNG
char *func(const char *str1, const char *str2)
{
int i = strlen(str1);
char *p = malloc(i+strlen(str2)+1);
if (p){
strcpy(p, str1);
strcpy(p+i, str2);
}
return p;
}
0659649NGNG
char *func(const char *str1, const char *str2)
{
char *p=malloc(strlen(str1)+strlen(str2)+1);
if(p)strcat(strcpy(p,str1),str2);
return p;
}
0660デフォルトの名無しさんNGNG
char *func(const char *str1, const char *str2)
{
char *p=malloc(strlen(str1)+strlen(str2)+1);
if(p) sprintf(p, "%s%s", str1,str2);
return p;
}
0661デフォルトの名無しさんNGNG
char *func(const char *str1, const char *str2)
{
char *p=malloc(strlen(str1)+strlen(str2)+1);
if(p) strcpy(p+sprintf(p,"%s",str1),str2);
return p;
}
0662デフォルトの名無しさんNGNG
で、どの方法が一番すまぁとなの?
0663デフォルトの名無しさんNGNG
660
0664649NGNG
すまぁとの基準による。
俺的には俺の649。
0665デフォルトの名無しさんNGNG
一番だめだめ〜なのは?
0666649NGNG
660もいいね。
0667デフォルトの名無しさんNGNG
649よりは658
0668649NGNG
だめだめ〜の基準による。
俺的には俺の652と661。
0669649NGNG
>>658
速度を考えないならそれでいい。
0670デフォルトの名無しさんNGNG
memcpy と strcpy ってそんなに差がある?
0671649NGNG
処理系(ライブラリ)依存の話になるけど、一般的には
あらかじめ長さがわかっている文字列をコピーするなら
strcpyよりmemcpyの方が有利。実装を考えてみるといい。
ただ、可読性ではstrcpyの方がすっきりするね。
0672デフォルトの名無しさんNGNG
strcpyは0の検出処理をし、memcpyは指定されたバイト数に達したかどうかを検出する。
大差ないだろ。
0673デフォルトの名無しさんNGNG
長さがわかってるんならcharごとじゃなくて
ある程度の大きさづつコピーできるな。
0674デフォルトの名無しさんNGNG
>>673
それがmemcpyじゃないか?
0675649NGNG
>>672
ライブラリ関数のソースでも読んでみればいい。
まあコンパイラによってはインライン展開するものもあるから
アセンブルリストを出力させる必要があるかもしれんが。
0676デフォルトの名無しさんNGNG
RtlMoveMemory( dst, src, count );

VC++6.0

なんだこの関数は?
0677649NGNG
>>676
memmoveで#defineされてない?
0678デフォルトの名無しさんNGNG
>>672
大違い
0679677NGNG
あ、MoveMemoryの話と間違えた。
0680デフォルトの名無しさんNGNG
void *memcpy(void *dest,const void *src,size_t n)
{
unsigned char *destp=(unsigned char *)dest;
const unsigned char *srcp=(const unsigned char *)src;

for(;n--;destp++,srcp++)
*destp=*srcp;

return dest;
}

昔書いた奴。
環境に依存する形でかけばもっと効率がよくなるのかな・・・
0681デフォルトの名無しさんNGNG
長さ100の配列で試してみたら memcpy の方が圧倒的に速かった
0682デフォルトの名無しさんNGNG
たった100でよくわかったな・・・
0683デフォルトの名無しさんNGNG
短かい方が strcpy に有利だと思ったけど?
長さ10000でもやったよ。結果は変わらないけど
0684デフォルトの名無しさんNGNG
>>683
どうやって速度をはかった?
0685684NGNG
VC++6.0のclock程度じゃそこまで精密にはかれない。
0686デフォルトの名無しさんNGNG
>>684
(゚Д゚)ファア?
ループで繰り返したに決まってんじゃん
くだんねぇこと聞くなや。ハグェが
0687デフォルトの名無しさんNGNG
>>686
ならなぜ素直にもっと巨大な配列を使わないんだ?
0688デフォルトの名無しさんNGNG
http://shopping.yahoo.co.jp/shop?d=jb&id=30884785
確認ですが、これはVineLinuxでemacsでC言語を勉強する人向けのもので入門から脱初心者までの本ですか?
Windows向けのものではありませんよね。
0689687NGNG
で、巨大な配列をつくってやってた。
一桁ずつ増やし、1千万文字にしてやっと差が出たよ・・・・
確かにmemcpyの方が速かった。でも問題になるようなものじゃないと思う。
0690689NGNG
「つくってやってた」じゃなくて「つくってやってみた」
0691デフォルトの名無しさんNGNG
>>687
大きい配列だと確実に strcpy 不利だと思ったんだけど違うかな?
ちなみに 1,000,000でもやってみたけど strcpy の方が2倍近くかかる
0692デフォルトの名無しさんNGNG
>>691
(CPUの計算速度によるが)そこまで大きな配列を使うか、よほどループさせなければ問題になるほどじゃないだろ?
0693692NGNG
元々時間のかかる処理じゃないから例え二倍でも大差ないと言いたいだけ。
0694649NGNG
俺もVC++5.0でループを使って計測してみた。平均して
100文字で約5倍、1000文字で約11倍程度の速度差だった。

まあそれでもstrcpyを使うのは勝手だが、俺ならmemcpyだな。
0695デフォルトの名無しさんNGNG
>>692
strcpy や memcpy みたいな関数はプログラム内で何万回も呼ばれたり
することだってあるわけだから十分問題だと思うんだけどなぁ...
0696デフォルトの名無しさんNGNG
memcpyを自分で書けと言われたらどう書く?
0697649NGNG
用途次第だな。
毎回書くようなソースならともかく、
一度作っておけばOKな使い回しのきく関数であれば
memcpyで書いておいて損はないと思うが。

というか、strcpyにこだわってる奴は1人だけか?
0698デフォルトの名無しさんNGNG
長さの分かっている文字列のコピーといえばstrdupがあるけど、これもmemcpyで書くのが一般的?
0699デフォルトの名無しさんNGNG
>>696
こんなことしたら速くなったり......しないよね
そのまえにまともに動作しないかも
できるだけ long 型でコピーできる分は long でやるようにしてみたつもりなんだけど

void *memcpy( void *dest, const void *src, size_t n ) {
size_t x = n / sizeof(long), y = n % sizeof(long);
size_t i;
long *dl = dest; const long *sl = src;
char *dc; const char *sc;

for ( i = 0; i < x; i++ ) *dl++ = *sl++;
dc = (char *)dl; sc = (const char *)sl;
for ( i = 0; i < y; i++ ) *dc++ = *dl++;
return dc;
}
0700デフォルトの名無しさんNGNG
上、意味不明ナリ
strdupはstrcpyとおなじくらい長さは分かってないけど。
0701デフォルトの名無しさんNGNG
>>698
マテ。
strdup()の仕様をもいっぺん読み直した方がいい。
0702デフォルトの名無しさんNGNG
>699
bus error.
0703デフォルトの名無しさんNGNG
>>700-701

mallocでコピーする領域を得る時に長さをはかるでしょ・・・・
0704699NGNG
(;´Д`)いきなり間違ってたスマソ
for ( i = 0; i < y; i++ ) *dc++ = *dl++; → for ( i = 0; i < y; i++ ) *dc++ = *sc++;
やっぱダメだ忘れてください......
0705703NGNG
第一、さっきの文字列連結関数もそういう理由でmemcpyをつかったんでしょ!?
0706699NGNG
>>702
え......なんスか?バスエラーって?
なんかマズいことしてます?(;´Д`)
0707デフォルトの名無しさんNGNG
strcpyとmemcpyの速度の差ってstrcpyが関数内でコピーサイズを調べるからでしょ。
memcpyは関数外でコピーサイズを調べなきゃいけないから、結局変わらない。
0708デフォルトの名無しさんNGNG
>>699
そのままでは、ワードデータのアライメントを要求するCPU(680x0とか)では
ちょっとまずい。与えるアドレスが奇数だとaddress errorになる。
x86でも、エラーにはならないが遅くなったりする。

でも、基本的な考え方(できるだけ大きな単位でデータを移動)はいいのでは?
ライブラリのmemcpy()のソースも、アセンブラで書いてあったり、キャッシュ
を考慮して命令の配列に気を配ったりしているけど、基本的にはそんな感じ。
0709デフォルトの名無しさんNGNG
>>707
strcpy()は'\0'が来るまでコピーという仕様だから、1バイトずつコピーする
以外に実装のしようがない。
memcpy()はあらかじめデータサイズが分かっているので、>>699のように
サイズが4の倍数だったらlong単位でコピーする、などの高速化が図れる。
0710699NGNG
>>708
なるほど.....正直CPUの動作のこと全然知らなかったです。サンクス
0711独り言モードNGNG
昔、アセンブラで組んだときに、少しでも速くコピーするために
push、popを使ってメモリの転送したなー。
0712デフォルトの名無しさんNGNG
そこまで速度を気にするなら、もちろんprintf("Hello,world");なんてやっていないよな?
0713デフォルトの名無しさんNGNG
>>709
strcpyでも'\0'が来るまでのサイズを調べてから4の倍数だったら
long単位でコピーすれば良い。
0714デフォルトの名無しさんNGNG
今は MMX の 64bit 転送しか使ってないな
0715デフォルトの名無しさんNGNG
>>713
わざわざstrcpy内部であらかじめstrlenを取得するのか?
0716デフォルトの名無しさんNGNG
>>713もあほらしいが、速度に過敏なmemcpy厨もあほらしいな。
0717デフォルトの名無しさんNGNG
>>713
そこまでするなら素直にstrcpy内からmemcpy呼べ、と
0718デフォルトの名無しさんNGNG
>>715
そっちの方が速いならそう書けば良い。
strcpyってstrlen+memcpyという実装でもいいわけだろ。
0719デフォルトの名無しさんNGNG
>>718
strlen による速度低下のほうが烈しくないか?
0720デフォルトの名無しさんNGNG
てかstrcpy厨に質問ですが、なんでmemcpyで済むところに
わざわざstrcpyを使おうとするの?
0721デフォルトの名無しさんNGNG
>>719
memcpyでやる場合も関数外でやるだけであってstrlenが必要。
0722デフォルトの名無しさんNGNG
>>718
アフォですか?
0723715NGNG
>>718
> そっちの方が速いならそう書けば良い。
あほですか?
4の倍数じゃなかったら数倍遅くなるわけだが。
0724デフォルトの名無しさんNGNG
memsetも複数バイトごとに書き込んでいたりする?
0725デフォルトの名無しさんNGNG
>>720
strcpyの方がわかりやすいから。
0726デフォルトの名無しさんNGNG
>>720
文字列のコピーはサイズがあらかじめわからないのでmemcpyだけじゃできませんよ。
0727デフォルトの名無しさんNGNG
>>721
必要だけど、それはmallocで使ったりするんじゃない?
0728デフォルトの名無しさんNGNG
>>725
どこらへんが?
>>726
日本語読めませんか?
0729デフォルトの名無しさんNGNG
>>728
strcpyなら文字列を丸ごとコピーしているとすぐに分かるだろ。
0730デフォルトの名無しさんNGNG
>>723
そうだね。memcpyも4の倍数じゃなかったら数倍遅くなるね。
0731729NGNG
memcpyだとコメントでもないかぎり、なぜmemcpyなんだ!?と思う。
0732デフォルトの名無しさんNGNG
>>729
コメントつけるなりしてください。そんなところで可読性気にするより
0733649NGNG
なんか勘違いしてる奴がいるようだが、俺がstrcpyよりmemcpy
の方が有利と書いたのは、長さがわかってる場合という前提だからな。
671で書いてるが。
0734デフォルトの名無しさんNGNG
>>733
VC++6.0のstrdupのソース見てみた。文字列の長さがコピー時には分かっているのにstrcpyを使っているね。
このソース糞だね。
0735デフォルトの名無しさんNGNG
>>734
糞です。いますぐ窓から投げ捨ててください(w
0736デフォルトの名無しさんNGNG
>>730
お前ほんとに短絡思考だな。ここまで来るとネタとしか思えん。
0737デフォルトの名無しさんNGNG
memcpyって文字列以外の配列のコピーのためにあるんだと思っていた・・・
確かに文字列のコピーに使えないことはないけど。
0738649NGNG
>>734
そりゃ確かに糞だな。
CStringなんかは全部memcpyなのにな。
0739デフォルトの名無しさんNGNG
↓これ。

char * __cdecl _strdup (
const char * string
)
{
char *memory;

if (!string)
return(NULL);

if (memory = malloc(strlen(string) + 1))
return(strcpy(memory,string));

return(NULL);
}
0740デフォルトの名無しさんNGNG
>>739
本当に糞だな。
0741デフォルトの名無しさんNGNG
>>739
それ書いたやつはきっと過労で疲れてたんだよ、きっと
0742649NGNG
んで、結局彼は何が言いたいんだろう。
strdupがstrcpyを使ってるからstrcpyを使いましょうってか?
まさかこのケースでもstrcpyの方が速いとか思ってないよな。
0743デフォルトの名無しさんNGNG
std::stringが最強です。
0744デフォルトの名無しさんNGNG
char *
glibcはmemcpyか。結構メジャーな方法なのか?
ところで、C++のソースとしてコンパイルするとエラーになるな(ワラ

char *
__strdup (const char *s)
{
size_t len = strlen (s) + 1;
void *new = malloc (len);

if (new == NULL)
return NULL;

return (char *) memcpy (new, s, len);
}
0745744NGNG
おっと、一行目は無視してくれ
0746デフォルトの名無しさんNGNG
>>709
俺の記憶が正しければ、VC++のstrcpy()はワード境界からずれた
先頭と末尾以外はワード単位で転送してたように思う。
NUL文字の検出はなかなか思いつかなそうな方法使ってたよ。
0747デフォルトの名無しさんNGNG
半角って1バイト?漢字が2バイト?
0748デフォルトの名無しさんNGNG
>>747
昔はな。とか言ってみる。
0749デフォルトの名無しさんNGNG
2バイト半角文字を知らんのか?
0750デフォルトの名無しさんNGNG
マンコプログラム
0751デフォルトの名無しさんNGNG
>>750
関係ないけど、あなたの言葉はあまり良くないよ。
もう少し何とかならないのかね。
いくら匿名掲示板だからといって軽率すぎますよ。
0752デフォルトの名無しさんNGNG
2バイトのかなや数字も知らないようです。
0753デフォルトの名無しさんNGNG
ircのようなチャットサーバを作りたいのですが、
なにか参考になるソフトウェアとかはないでしょうか?
0754デフォルトの名無しさんNGNG
>>753
IRCチャットサーバー参考にすればいい。
0755デフォルトの名無しさんNGNG
>>753
socketについて調べて見な。
IRCはチャットの一言では片づけられないシステムだよ。
0756デフォルトの名無しさんNGNG
>>688

答えてください。
0757デフォルトの名無しさんNGNG
>>756
>確認ですが、これはVineLinuxでemacsでC言語を勉強する人向けのもので入門から脱初心者までの本ですか?
>Windows向けのものではありませんよね。

プラットホームは特定してません。
内容は基礎を一通り。



0758デフォルトの名無しさんNGNG
>>688
それがわからないようなレベルであれば買っといて損は無い。
0759709NGNG
>>746
glibcのソースを見てみたら、同様に可能な限りワード単位で転送していた。
というわけで、>>709は撤回。
NUL文字の検出はすごいねえ。元のソースはアセンブラで書いてあったが、
Cに直してみるとこんな感じ。

/* unsigned longの4バイトのうち1バイトでも0x00があったらTRUE */
int isnul(unsigned long a)
{
unsigned long b = a + 0xfefefeff;
return (a <= b) || (((~a ^ b) & 0x01010100) != 0);
}

ぱっと見では何やってるのかさっぱり分からん。
0760デフォルトの名無しさんNGNG
>>757 >>758

いや、C言語の入門書は一冊もっているのです。しかし、Windows用なのでLinux emacs用のがほしいのです。
0761デフォルトの名無しさんNGNG
キャンセルは今日中なので教えてください。もう注文してしまったのです。emacsでやってる本がほしいです。
0762デフォルトの名無しさんNGNG
>>760
その本はWinとかUnixとか、環境に関係なくCを解説してるよ。
エディタとかデバッガとかLinuxでの開発環境の勉強をしたかったら
別に本を買う必要があるよ。
0763デフォルトの名無しさんNGNG
>>756
Vine-usersに帰れよひかる
0764デフォルトの名無しさんNGNG
つまりそれはC言語に特定しないLinuxの勉強本が他にいるということですか。
Windows用のを買ってしまって大変後悔しているのです。emacsでC言語をやりたいと言えば、やはりお勧めは前述の本が妥当なのですね?
0765デフォルトの名無しさんNGNG
>>761
emacsのマニュアルならそこらに転がってるぞ
英語 :http://www.delorie.com/gnu/docs/emacs/emacs_toc.html
日本語:http://flex.ee.uec.ac.jp/texi/emacs-jp/emacs-jp_toc.html
0766デフォルトの名無しさんNGNG
V-U MLから遂に駆逐されたの?>>763
0767デフォルトの名無しさんNGNG
>>764
太い回線と検索能力と何時間でもモニタを見ていられる視力があれば
大概の情報はweb上に存在するので本など買わなくてもいい。
# 嘘情報、古い情報も大量にあるけど
0768デフォルトの名無しさんNGNG
>>767
どうやって嘘情報を見破ればいいですか?
0769デフォルトの名無しさんNGNG
>>768
ん?学校で習わなかったか?
三つ以上の情報を見て、正しそうなのを信じるのさ。
0770デフォルトの名無しさんNGNG
>>768
プログラムの経験がある程度あるなら、もっと
Linuxよりの解説書を薦めるけど、経験無しなら
その本とEmacsの解説書を買えばいいよ。

0771デフォルトの名無しさんNGNG
void *v;
int a=5;(別になんでもいいけど)
*(int*)v=a;

っていうのは可能ですか?
wgetのソース見てたらこういうのがあったんですが
手元でやってみたら
segmentaionfaultです。
なんでかな
0772デフォルトの名無しさんNGNG
vに何も入っていない。
0773デフォルトの名無しさんNGNG
あ すまんです
0774デフォルトの名無しさんNGNG
int main(void)
{
void a;
}
というのを書いてみたら
コンパイラに「voidで宣言されてます」
といわれてエラーになるんですが
コンパイラが壊れてるんですか?
0775デフォルトの名無しさんNGNG
>>774
ネタはケッコウです。
sage
0776デフォルトの名無しさんNGNG
>>775
あの真剣に分からないのですが
軽めに説明してくれませんか?
0777デフォルトの名無しさんNGNG
777
0778デフォルトの名無しさんNGNG
>>776
void の意味をわかれ。調べれ。以上。
0779デフォルトの名無しさんNGNG
>>774
>void a;

この行にコメントを付けるとすればアナタはどんなことを書きますか?
0780デフォルトの名無しさんNGNG
/* 型がきまってません */
とか?
ですか?
0781デフォルトの名無しさんNGNG
void a; /*voidにする*/


だろ
0782デフォルトの名無しさんNGNG
こういう明らかに入門書の一冊でも読んでないようなヤツは、無視して欲しいというのが正直なところ。
0783デフォルトの名無しさんNGNG
>>779
780 と 781 はものすごく正しいから、もうちょっと考えてから書いてくれ。
0784783NGNG
いや、違う。
780 は間違ってるぞ。
0785デフォルトの名無しさんNGNG
>>774
何をするつもりで void a; と書いたわけ?
0786774NGNG
voidの大きさなどが仮にでも決められてるとしたら
どんなもんだろうと思いまして
>>782ここまで怒られるとは思いませんでした
ショボン。。
0787デフォルトの名無しさんNGNG
>>786
気持ちもわからんでもないが、妄想から書いたコードをコンパイルできなくて
「コンパイラが壊れてるんですか?」 とかほざいてたら放置したくもなるだろう。
0788デフォルトの名無しさんNGNG
>>786
だったら「コンパイラが壊れてる」なんてふざけたことを書かないで、
こういう動機でこのコードを書いて、こういう結果がでたので、こう考
察しましたとか、まじめに書けや、
0789デフォルトの名無しさんNGNG
>>774
void の意味を英和時点で牽いておけ。
0790789NGNG
> 時点

          アヒャーー
      ∧∧
     (゚∀゚ )⌒ヽ ≡≡ = = -
    ,.、,,U‐U^(,,⊃_       /i ≡≡≡ = = -
   ;'゚∀゚ 、、:、.:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i = ≡≡≡ = = -
    '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
     `" ◎ ''`゙ ◎ ´´   - = ≡ = = -
0791デフォルトの名無しさんNGNG
void *aの間違いでしょ。

>>759
じゃあstrcpyで問題ないじゃん。
0792デフォルトの名無しさんNGNG
>>791
786 で言っている事の何が void* なんだ?
0793デフォルトの名無しさんNGNG
http://shopping.yahoo.co.jp/shop?d=jb&id=30552298

emacsについてはこの本でいいでしょうか?やすいので。。。。。。。
0794デフォルトの名無しさんNGNG
デクリメントですむmemcpyと違って
strcpyの\0判定はもっと手間がかかっているでしょ。
0795デフォルトの名無しさんNGNG
関数が載っているだけの薄い本じゃない?
0796デフォルトの名無しさんNGNG
>>792
きちんと見ないでレスしてしまった(^_^;)
スマソ
0797デフォルトの名無しさんNGNG
>>791
問題をきちんと理解しとかなきゃ。

・前もって文字列の長さがわかってるとき
・そうじゃないとき

の二通りがあって、memcpy使ったほうがいいといってるのは
前者の場合だ。発端となった>>639の問題の場合、
mallocするために文字列の長さを得る必要があった。
その後コピーするわけだが、その場合文字列の長さがわかってる以上、
strcpyよりもmemcpyするほうが速いという議論だったのだ。

んで、おれの意見を書くと、速度についてはそうなることが期待できるから同意はする。
ただ速度が重要な部分以外ではそんなことやらない。strcpyを使う。
0798デフォルトの名無しさんNGNG
>>793
スレ違い。とりあえずC-h Tやっとけや。入門はこれで十分。
0799デフォルトの名無しさんNGNG
>>797
strcpyは一文字ずつ、memcpyは通常ワード単位でコピーするから速いってことじゃなかったのか?
strcpyもワード単位ならstrcpyでいいじゃん。
0800デフォルトの名無しさんNGNG
ところで、VC++6.0にSTRCPY.Cがないんだが、strcpyのソースはどこにあるんだろう・・・
まさか削除してしまったのか。。
0801デフォルトの名無しさんNGNG
int n=100;
int *p;

p=&n;

この場合,*ptは100(n)を指しますよね(100というかnのアドレスの中身ですよね?)。
&*ptの場合は,nのアドレスを指している事になるのでしょうか?
0802デフォルトの名無しさんNGNG
>>799
本当にそうか?

memcpyの整数をデクリメントしていって、0かどうかを比べるのと、
strcpyの>>759のような複雑な判定するのとどっちが速い?

もっとも、>>759についてはおれ、よーわからんわ。
本当にこれで判定できるのか。あとでじっくり考えてみよう。
0803799NGNG
>>802
まあ遅い・・・だろうな。
判定のために関数を呼ぶみたいだし。

でもそれほど遅くなるのかなあ?
0804799NGNG
ふと思ったんだけど、ワード単位でコピーしていってその中に0があるかどうか判断する方法って
場合によってはアクセスしてはならないところにアクセスすることにならない?

memcpyならコピーする大きさが決まっているからできるかぎりワード単位でコピーして、
残りは1バイトずつコピーするので問題ないけど。
0805デフォルトの名無しさんNGNG
VC6で計ったら、strcpy()のほうがだいぶ早かった。
0806802=797NGNG
>>803
うん。速度の差があったとしても問題になることはまずないだろう。
だから何やってるか一目わかるしパラメータが一つ少なくて済む
strcpyを普通は使うと思う。少なくともおれはそう。
0807804NGNG
あ、そんなことないか。
調べる時は1バイトずつやるんだもんな(^_^;)
0808デフォルトの名無しさんNGNG
>>802
printf("%p\n", &n);
printf("%p\n", &*pt);
とでもしてみたら。
0809808NGNG
× >>802
○ >>801
0810デフォルトの名無しさんNGNG
; strcpy(d, s);
  push  esi
  push  edi
  mov   edi, DWORD PTR _s$[esp+4]
  or   ecx, -1
  xor   eax, eax
  repne scasb
  not   ecx
  sub   edi, ecx
  mov   eax, ecx
  mov   esi, edi
  mov   edi, DWORD PTR _d$[esp+4]
  shr   ecx, 2
  rep movsd
  mov   ecx, eax
  and   ecx, 3
  rep movsb
  pop   edi
  pop   esi
0811デフォルトの名無しさんNGNG
; memcpy(d, s, n);
  mov   ecx, DWORD PTR _n$[esp-4]
  push  esi
  mov   esi, DWORD PTR _s$[esp]
  mov   eax, ecx
  push  edi
  mov   edi, DWORD PTR _d$[esp+4]
  shr   ecx, 2
  rep movsd
  mov   ecx, eax
  and   ecx, 3
  rep movsb
  pop   edi
  pop   esi
0812デフォルトの名無しさんNGNG
strcpyを使うときには文字列の大きさがわかってないと
ちゃんと使えんでしょう。
で、大きさが分かってるとmemcpy使えるんですよ。
0813デフォルトの名無しさんNGNG
VC6SP5。
ストリング命令が 3 つの strcpy() より 2 つの memcpy() の方が絶対速い。
805 は一体どんなテストをしたんだ?
0814デフォルトの名無しさんNGNG
810 のコードは、どうも strlen() + memcpy() に見えるな。
だったら、長さがあらかじめ分かっている場合に限って、memcpy() 単体
の方がいいような。
0815デフォルトの名無しさんNGNG
>>808
してアドレスが同じだったので,自分の考え方が正しかったか聞きたいのです
0816デフォルトの名無しさんNGNG
strcpyとたいして変わらんかった。
void mystrcpy(char *s, const char *t) {
memcpy(s, t, strlen(t)+1);
}
0817805NGNG
>>805はミスだった。
やっぱりmemcpyのほうが速い。
0818デフォルトの名無しさんNGNG
そういえば 810 のコード、759 がかけらも見当たらないね。
1 ワードずつ判定していくより、先に長さを測ってストリング命令
かました方が速いのか。
0819デフォルトの名無しさんNGNG
void *やconst voidがヘルプ見るとやたら出てくるんだが
わかりやすく説明してもらえないでしょうか
0820デフォルトの名無しさんNGNG
>>819
何がわからないのか分からないんだが
0821デフォルトの名無しさんNGNG
>>820

スマソ
関数の説明で
void func(void *a)
とあった場合何を引数で渡していいかわからんのです。
0822デフォルトの名無しさんNGNG
>>821
ポインタなら何でもいい。
全てのポインタはキャスト無しに void* へ暗黙変換できる。以上。
0823デフォルトの名無しさんNGNG
hoge i, p[], *q;
func(&i);
func(p);
func(q);
0824746NGNG
>>799
判定の条件が増えるわけだから当然多少は遅くなる。

実際のソースじゃ判定を関数なんかに分けてないよ。
そんなことしたら1バイトずつ調べた方が速くなる。

strdup()でstrcpy()を使うメリットはない。malloc()する前に文字列長を
調べてあるわけだから、終了判定が単純なmemcpy()の方が速いはず。

とはいっても、短めの文字列だったら数クロックの差くらいしかない。
malloc()にかかる時間の方がけた違いに大きいから、差はないも同然。

>>804
文字列の終端を調べる時にワード単位で読み込んでも問題ない。

数バイト多めに読み込んでも、その内容を書き換えるわけじゃない。
ワード境界に沿ったワード読み込みの場合はページ境界をまたがないから、
ワードの先頭バイトを読み込める状況ではAccess Violationも起こりえない。
0825デフォルトの名無しさんNGNG
>>822
産休。わかりやした
0826746NGNG
>>818
あれは関数としてリンクする場合のstrcpy()のコードだよ。
>>810のは最適化で組み込み関数を展開した場合のコード。

毎回展開するからサイズを大きくするわけにいかないのと、
関数呼び出しのコストがかからないから、それでも十分に速い。
0827デフォルトの名無しさんNGNG
>>826
そうなのか。
ところで VC6 の CRT の strcpr() のソースが見当たらないのだが
0828827NGNG
> strcpr()
   ∧∧
   /⌒ヽ)
  i三 ∪
 ○三 |
  (/~∪
  三三
 三三
三三
0829デフォルトの名無しさんNGNG
strcpyはmemcpyに勝てないのか!?
0830デフォルトの名無しさんNGNG
strcpy = strlen + memcpy と思って間違いないと。
0831デフォルトの名無しさんNGNG
どうでもいいことで熱くなれるC老子

0832800NGNG
>>827
あ、あなたもないの?
じゃあやっぱり誤って削除したんじゃなくて元々なかったのか・・・
0833デフォルトの名無しさんNGNG
/*
可変長配列
*/

#include <stdio.h>

int main(void)
{
char buf[256];
int size;
int *vc;
int i;

puts("■可変長配列■");
printf("作成する配列のサイズを入力してください:");
fgets(buf,256,stdin);
sscanf(buf,"%d",&size);

vc=malloc(sizeof(int)*size);

for(i=0;i<size;i++)
{
vc[i]=i;
printf("vc[%d] = %d\n",i,vc[i]);
}

return(0);
}
0834833NGNG
このソースのmalloc部分で警告が出るんですが、何でですか?
警告文は以下のようです。

test1.c: In function `main':
test1.c:19: warning: assignment makes pointer from integer without a cast

こんぱいらはGCCです。
0835デフォルトの名無しさんNGNG
#include <stdlib.h>
0836デフォルトの名無しさんNGNG
>>833
stdlib.hをインクルードしろ
0837デフォルトの名無しさんNGNG
宣言してないと
int malloc();
と解釈される。
0838デフォルトの名無しさんNGNG
>800,827
crt\src\intel\strcat.asm
をよくみろ。
0839( ○ ´ ー ` ○ )NGNG
 だれか、このグチャグチャな自作関数を修正してやってください。
  内容は、char *s1,char *s2後方検索して
  後方検索したものを、語尾にくっつけあうというものです。
   どんな修正方法でもかまいません。
    char *str_cat_chr(char *s1,char *s2,int c)
{
char *p1=NULL;
char *p2=NULL;
char *r1=s1;
char *r2=s2;
char *temp1=s1;
c=(char)c;
while(1){
if(*r1=='\0')
break;
if(*r1==c)
p1=r1;
r1++;
}
while(1){
if(*r2=='\0')
break;
if(*r2==toupper(c))
p2=r2;
r2++;
}
*p1='\0';
*p2='\0';
0840( ○ ´ ー ` ○ )NGNG
while(*s1)
s1++;
while(p1&&p2){
if(!(*s1++=*s2++))
break;
}
*s1='\0';
return temp1;
}
0841デフォルトの名無しさんNGNG
>>838
サンクス。
しかし、strcat() とコピールーチンが共通だとは思わなかった。
strcpy() を使うと、strcat() も問答無用でリンクされるのか。
0842デフォルトの名無しさんNGNG
肝の部分。glibcのとほぼおなじだな。

main_loop: ; edx contains first dword of sorc string
 mov [edi],edx ; store one more dword
 add edi,4 ; kick dest pointer
main_loop_entrance:
 mov edx,7efefeffh
 mov eax,dword ptr [ecx] ; read 4 bytes

 add edx,eax
 xor eax,-1

 xor eax,edx
 mov edx,[ecx] ; it's in cache now

 add ecx,4 ; kick dest pointer
 test eax,81010100h

 je short main_loop
0843デフォルトの名無しさんNGNG
>>839
丸投げは添削スレに逝ってくれ。
http://pc3.2ch.net/test/read.cgi/tech/1021881540/l50
0844デフォルトの名無しさんNGNG
>語尾にくっつけあうというものです。
語尾にくっつけあるというのはいったいどういうことを指すの?
0845( ○ ´ ー ` ○ )NGNG
 これは、string.hの後方検索とstrcat()のようです。
  宿題○投げとはいいません。
0846デフォルトの名無しさんNGNG
>>845
宿題であろうがなかろうが添削は添削だ。とっとと逝け。
0847デフォルトの名無しさんNGNG
>>845
843 は 「宿題」 とは一言も言っていない。丸投げは丸投げ。
0848( ○ ´ ー ` ○ )NGNG
ちょっと、日本語がおかしかったね。 ある文字nを、大文字小文字
の区別なしにs1、s2を後方検索により二つの文字のNULLの位置をわりだす。
 お互いのNULLの位置を、認知してs1の語尾にくっつける。
  なんでも、結構です。 これに、対する指摘をお願いします。
0849デフォルトの名無しさんNGNG
>二つの文字のNULLの位置をわりだす。
なんのこっちゃ。
0850( ○ ´ ー ` ○ )NGNG
NULL文字のことです。(¥0)
0851デフォルトの名無しさんNGNG
strcat使え。あと添削スレへ行け。
0852( ○ ´ ー ` ○ )NGNG
 俺は、荒らしか・・・・age
0853デフォルトの名無しさんNGNG
>>848
s1、s2 が長さ 0だった場合に、*p1='\0'; *p2='\0'; がコケる。

つーか、スピードが問題で無いなら素直にライブラリ関数使い倒せ。

char *str_cat_chr(char *s1,char *s2,int c)
{
char *p1 = strchr(s1, c);
char *p2 = strchr(s2, c);
if(p1) *p1 = '\0';
if(p2) *p2 = '\0';
return strcat(s1, s2);
}
0854デフォルトの名無しさんNGNG
>>852
もしかして自覚無いの?
スレ違いの事書いたら普通は、つもりがあろうが無かろうが荒らしなんだけど。
0855デフォルトの名無しさんNGNG
文字のNULLをわりだすってんだからさ、
N,U,L,L の連続4文字を探すんじゃないの?
0856デフォルトの名無しさんNGNG
後方検索で大文字小文字区別しないんだからstrchrは・・・。
0857853NGNG
>>856

   い い ん だ よ
0858デフォルトの名無しさんNGNG
>>853
そのソースを見た方が( ○ ´ ー ` ○ )の説明を見るよりもよくわかる・・・・(w
要はcの部分まで切りつめてくっつけるってことか。
0859858NGNG
あ、後方でしかも大文字小文字区別なしか。
じゃあ>>853はだめじゃん。
0860デフォルトの名無しさんNGNG
>>857
w
0861858NGNG
↓大文字小文字区別なしに後方探索する関数をかいてみた。テストしていないけど(^_^;)

char *strcaserchr(const char *s,int c)
{
const char *endp=s;

for(s+=strlen(s);s>=endp;s--)
if(toupper(*s)==toupper((char)c))
return (char *)s;

return NULL;
}
0862デフォルトの名無しさんNGNG
    char *str_cat_chr(char *s1,char *s2,int c)
{
char *p1=NULL;
char *p2=NULL;
char *r1=s1;
char *r2=s2;
c=(char)c;
for (;*r1; r1++)
if(*r1==tolower(c) || *r1==toupper(c))
p1=r1;
for (;*r2; r2++)
if(*r2==tolower(c) || *r2==toupper(c))
p2=r2;
if (p1) *p1='\0';
if (p2) *p2='\0';
return strcat(s1, s2);
}
0863デフォルトの名無しさんNGNG
c=toupper((char)c);
if(toupper(*r1)==c)
0864デフォルトの名無しさんNGNG
char *strcaserchr(char *s, int c)
{
char *p = NULL;
for(c = toupper(c); *s; s++)
if(toupper(*s) == c)
p = s;
retrun p;
}

strlen() が余計。
toupper() への引数を (char) にキャストする必要は無い。
0865デフォルトの名無しさんNGNG
予期せぬ燃料だった
0866デフォルトの名無しさんNGNG
/* 何でこの程度の問題があんなに長くなるんだろう? */
char *str_cat_chr(char *s1,const char *s2)
{
  char *p1;
  for (p1 = s1 + strlen(s1) - 1; *s2 != '\0'; p1++, s2++)
    *p1 = toupper(*s2);
  return s1;
}
0867デフォルトの名無しさんNGNG
    char *str_cat_chr(char *s1,char *s2,int c)
{
char *p;
if (p=strcaserchr(s1,c)) *p='\0';
if (p=strcaserchr(s2,c)) *p='\0';
return strcat(s1, s2);
}
0868デフォルトの名無しさんNGNG
864 + 867 が最適解かな。
866 は仕様が読めないアフォ
0869デフォルトの名無しさんNGNG
>>864
あれ?strchr系ってcharにキャストしなければならないんじゃなかった?
0870デフォルトの名無しさんNGNG
>>869
toupper() を通過しているから問題無い。
と思ったが、違かったようだ。すまん。
0871デフォルトの名無しさんNGNG
861 + 863 のが速いかもな
0872861NGNG
>>871
何人かが書いてきづいたいけど、
for(s+=strlen(s),c=toupper((char)c);s>=endp;s--)
if(toupper(*s)==c)
とやらないと無駄な処理をするね。

以前かいたstrrchrをほとんどそのまま流用したのが悪かった(^_^;)
0873デフォルトの名無しさんNGNG
グローバル変数とローカルな静的変数はスコープが違うだけで領域はおなじところを使うことが多いですか?
0874デフォルトの名無しさんNGNG
こんなんどうだろ。
char *strcaserchr(char *s, int c)
{
char *p=strrchr(s, toupper(c));
char *q=strrchr(s, tolower(c));
retrun (p-q > 0) ? p : q;
}
0875デフォルトの名無しさんNGNG
>>873
何を言っているか分からない。
格納されている領域が同じなら、どうしようと言うわけ?
格納されている領域が違ければ、どうしようと言うわけ?
0876デフォルトの名無しさんNGNG
これもありだな。
char *strcaserchr(char *s, int c)
{
char *p = NULL, low=tolower(c);
for(c = toupper(c); *s; s++)
if(*s == c || *s == low)
p = s;
retrun p;
}
0877デフォルトの名無しさんNGNG
どうしようと言うわけ?
0878デフォルトの名無しさんNGNG
>>874
2 回も走査するのは遅くないか?
あと今気付いたが、名前、struncaserchr() のが良くないか?
0879デフォルトの名無しさんNGNG
strrchr_uncase
0880デフォルトの名無しさんNGNG
>>875
(感覚的だが)近くに配置される、って事じゃあないかな。
0881デフォルトの名無しさんNGNG
>>880
いや、そんな事はわかってる。
事実、VC6 では同一 DATA セグメントに詰め込まれるし。

漏れの言いたいのは、スコープが違うというだけで充分区別つけられるのに、
どうして処理系依存の、格納される領域の事なんか訊ねるんだという事。
0882デフォルトの名無しさんNGNG
>>873
コンパイラに聞け
#include <stdio.h>
int gi;
static int mi;
static void hoge(int pi);
int main(void)
{
  int li;
  static int lmi;
  hoge(li);
  printf("%p %p %p %p\n", &gi, &mi, &li, &lmi);
  return 0;
}
static void hoge(int pi)
{
  static int lmi;
  int li;
  printf("%p %p %p\n", &pi, &li, &lmi);
}
0883882NGNG
あり?Mozilla 1.0では&piがπに見える...
Mozillaのバグか?
0884デフォルトの名無しさんNGNG
あーあ、せっかくレジスタに割り当てようと思ったのに。
0885初心者&rlo;者心始NGNG
確認しておきたんですが、
コンパイルを実行した時の流れを大まかに書くと

プリプロセッサ #を展開
↓
コンパイラ objファイルを作る
↓
リンカ objファイル、標準ライブラリを利用してexeファイルを作る。
ですよね?

ということは、
モジュール化してないCファイルがobjファイルを
作らないのはかなり矛盾していませんか?

どういうことなんでしょうか?教えて下さい。

objファイルがないとリンカがexeファイルを作れないと思うんですが。
0886デフォルトの名無しさんNGNG
>モジュール化してないCファイルがobjファイルを作らない
どういう意味?
0887デフォルトの名無しさんNGNG
>>885
なんか勘違いしてない?
0888デフォルトの名無しさんNGNG
javaみたいなもんを想像してるんでは?

クラス -> .obj -> .exe

みたいな。

Cはクラスノ概念がないからモジュール化なんて出来ないじゃないか!みたいな。
(まぁ、この時点で間違ってるんだが)
0889デフォルトの名無しさんNGNG
注意:objファイルは、オブジェクト指向とは何ら関係ありません
0890885&rlo;588NGNG
↑
>モジュール化してないCファイルがobjファイルを作らない
つまり、リンクしていない単独のCファイルのことを言っていたのです。
0891デフォルトの名無しさんNGNG
コンパイラがリンカも呼び出してる。
0892デフォルトの名無しさんNGNG
objをオブジェクト指向と関連付けて考えてるのかー。
すげー。
0893デフォルトの名無しさんNGNG
まあ、無名のobjファイルを作ってリンクしたあとに消してると思えば。
0894デフォルトの名無しさんNGNG
お前ら、C言語でGUIやるにはどうしたらいいんですか?
0895デフォルトの名無しさんNGNG
885 は何か勘違いしてないか?
.c をコンパイルすれば必ず .o なり .obj なりができる。

単に、.obj ファイルを残さないオプションでコンパイルしてるんじゃないか?
(「.obj ファイルを残さない」 → 891 + 893)
0896デフォルトの名無しさんNGNG
>>894
C で GUI はできません。
プラットフォームに頼る事になるので、それにふさわしいスレで訊いてください。
0897デフォルトの名無しさんNGNG
gccは-oしないと作んないよね。
0898デフォルトの名無しさんNGNG
VBとJavaをやっていたものです。
これからCに移ろうと考えております。
一応CやC++の文法や概念は一通り理解しているつもりですが、
Cのコンパイラがどこにあるのかわかりません。
DOSとコンパイラのみで練習したいのですが、フリーのものどこかにないでしょうか?
あとできれば教養程度にどんな企業が出しているかとか種類とかいろいろ詳しく教えてくれるとありがたいです。
0899デフォルトの名無しさんNGNG
今サンプルソースを見てたんだけど、
mallocを使うときは
int *vc;
って宣言してるのに
reallocを使うソースだと
int *vc=NULLって宣言してるんだよね。
なんでヌルポインタで初期化する必要があるん?
0900デフォルトの名無しさんNGNG
>>897
-oは実行ファイルにつける名前を指定するだけだよね?
0901デフォルトの名無しさんNGNG
>>896
サンクス
0902デフォルトの名無しさんNGNG
ボーランドがフリーのだしてる。
0903デフォルトの名無しさんNGNG
>>895

やはり、LSI(試食版)ってデフォではリンクしていないCファイルは
objファイルを残さないんでしょうか?

↑例外として、リンクするとobjファイルができます。
0904デフォルトの名無しさんNGNG
>>899
reallocの仕様を調べてくださいです。
0905デフォルトの名無しさんNGNG
>>899
reallocの第一引数にNULLを与えるとmallocと同じ動作をするから。
ちなみに第二引数に0を与えるとfreeと同じ働きをする。
0906デフォルトの名無しさんNGNG
それにしてもこのスレは早いね。
そろそろ次スレの準備をだれかああ
0907デフォルトの名無しさんNGNG
gcc -c hoge.c -o hoge.o
ってやるんじゃなかった?
0908デフォルトの名無しさんNGNG
>>903
gccも残さないよ。
gcc test.cってやるとtest.cをコンパイル&リンクしてa.outが出来るだけ。
0909デフォルトの名無しさんNGNG
gcc -c hoge.c
で十分です
0910デフォルトの名無しさんNGNG
>>908
サンクス。
あと拡張子のoutって何ですか?あとext
0911デフォルトの名無しさんNGNG
>>905
なるほど!最初だけmallocと同じで、
その後いったん領域あげたらreallocのはたらきするってか
0912908NGNG
多分、/tmpにつくっているんじゃないかなぁ?
最後に消すと思うけど
0913デフォルトの名無しさんNGNG
-cで作るのか。
0914デフォルトの名無しさんNGNG
>>898 はスレの 1 をちっとも確認しない人間である事がわかりました。
0915デフォルトの名無しさんNGNG
>>910
UNIXは拡張子なんて概念はないからね。a.outはgccがデフォルトでつける実行ファイルの名前。
-oで名前を指定しないとtestとか名前をつけてくれない。。。
0916デフォルトの名無しさんNGNG
fgetsとかでさ、入力した文字列から\n削除するしょ?
で、printfするときに\nつけてたら意味なくない?
0917デフォルトの名無しさんNGNG
>>916
\nがついていても問題がないなら消さなければいい。
0918デフォルトの名無しさんNGNG
puts使え。
0919デフォルトの名無しさんNGNG
ヘッダファイルを作るときってさ、
a.cとかとa.hがいるしょ?
どこに保存しといたらいいの?
0920デフォルトの名無しさんNGNG
fgetsは消さない。getsは消す。
0921デフォルトの名無しさんNGNG
>>920
多分、入力したあとに自分で消すという意味だと思う。
Perlのchompみたいな関数を使って。
0922デフォルトの名無しさんNGNG
おなじディレクトリまたはおまえのincludeディレクトリ。
0923デフォルトの名無しさんNGNG
>>919
さっきからネタばっか。やめれ
0924デフォルトの名無しさんNGNG
gcc 使ってる人は、

int dummy();
int main() { return dummy(); }

を通してみなさい。
0925デフォルトの名無しさんNGNG
リンクしてくれるのか?
0926デフォルトの名無しさんNGNG
dummyという関数がライブラリにあるとか?
0927デフォルトの名無しさんNGNG
#define ; {return 0;}
0928デフォルトの名無しさんNGNG
/tmp/ccqpnZ6n.o: In function `main':
/tmp/ccqpnZ6n.o(.text+0x7): undefined reference to `dummy'
collect2: ld returned 1 exit status
0929デフォルトの名無しさんNGNG
>>923
ネタじゃないよ!マジだよ!
マジで何処に入れればいいかわかんないんだよ!
ほんとに教えて!
0930デフォルトの名無しさんNGNG
同じディレクトリに置いて
#include "a.h"
0931デフォルトの名無しさんNGNG
>>927
invalid macro name
0932デフォルトの名無しさんNGNG
>>929 は途中の有用なレス (例えば 922) を全く見ず、煽りだけに反応して
しまう可哀想な人間である事がわかりました。
0933デフォルトの名無しさんNGNG
ネタニマジレス(・∀・)カコイイ!!
0934デフォルトの名無しさんNGNG
>>924
#define dummy() dummy=0
0935デフォルトの名無しさんNGNG
わかった。
#define main() dummy(){return 0;}int main()
0936デフォルトの名無しさんNGNG
>>932
ああ、見落とした・・・
お前の言うとおりだよ!
でも言い訳させて!
最初に見たとこだったらさ、レスが10個くらいしか表示されないじゃん?
たぶんそこみて見逃したと思うよ
>>922
>>930
マジサンクス!!
0937デフォルトの名無しさんNGNG
どうでもいいけどさ、
mallocとかreallocとかの
allocってどういう意味?
辞書にものってない・・・
0938デフォルトの名無しさんNGNG
>>937
allocate
0939デフォルトの名無しさんNGNG
allocate
0940デフォルトの名無しさんNGNG
all oK(OKのKはCorrectの綴り間違いから来た)
0941936NGNG
ごめん!
a.hはインクルードファイルにいれたけど
a.cもインクルードに入れるの?
0942デフォルトの名無しさんNGNG
かまって君と教え魔、ウザイよ。
0943デフォルトの名無しさんNGNG
>>941
ネタマジウザイ
おもんない
氏ね
0944デフォルトの名無しさんNGNG
漏れにはスレ立てられなかった。誰かよろしく。
次スレテンプレート
====================================
C 言語ならオレに訊け。

C 言語じゃないなら訊くな。
問題をちゃんと切り分けて、C の話かそうでないか洗ってから質問してくれ。

つーか訊く前に Web で検索しろ。

コンパイラ探してるなら >>2 を見れ。

GUI とか、C 標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
ソース丸投は別スレがあるから他に逝ってくれ。
宿題は別スレがあるから他に逝ってくれ。
書籍については別スレがあるから他に逝ってくれ。

・前スレ <39>
http://pc3.2ch.net/test/read.cgi/tech/1036409391/

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
0945デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0946デフォルトの名無しさんNGNG
>>941
君の肛門からインクルードできるよ。
0947デフォルトの名無しさんNGNG
>>944
やってみる
0948936NGNG
マジで教えてくれー
わかんねーんだよー
たのむよー
0949デフォルトの名無しさんNGNG
hoge/a.h
hoge/a.c
a.cに
#include "a.h"
0950デフォルトの名無しさんNGNG
>>948
コンパイラが使える場所なら、.c ファイルはどこでもいい。以上。
0951デフォルトの名無しさんNGNG
>>932
ああ、見落とした・・・
お前の言うとおりだよ!
でも言い訳させて!
最初に見たとこだったらさ、レスが10個くらいしか表示されないじゃん?
たぶんそこみて見逃したと思うよ
>>922
>>930
マジサンクス!!



に対して何を答えろと?

>最初に見たとこだったらさ、レスが10個くらいしか表示されないじゃん?

2chビューア使え。

が精一杯だが。
0952936NGNG
>>950
コンパイラが使える場所ってよくわからんけど
一応includeに入れておくよ!
っていうかヘッダの数半端じゃないね!!
いったいいつ使うんだろう・・・
0953デフォルトの名無しさんNGNG
そのincludeにいれるんだったら
#include <a.h>
いれんほうがいいと思うが。
0954947NGNG
無理だった。他の人頼むぅ
0955936NGNG
>>953
なんで?呼び出すときは#include <a.h>でしょ?
ヘッダファイルはIncludeに入れるよね?
で、ソースファイルはどこに・・・?
0956デフォルトの名無しさんNGNG
>>952
自分でつくったものをincludeディレクトリに入れるのはまずいんじゃないか?
特につくったものをソースごと配布するときなんかは。
0957デフォルトの名無しさんNGNG
C言語のことは漏れらに聞け!!<40>
http://pc3.2ch.net/test/read.cgi/tech/1036673739/l50
0958デフォルトの名無しさんNGNG
つーかよう、ネタに決まってんだから他のやつらも反応すんなや
0959デフォルトの名無しさんNGNG
                              γ      γ
       ∧_∧                           γ
       (::::::::::: )  次スレが立てられないなんて・・・  ......................................
      .(○::::::: )                      .::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::........
     ~"''"""゛"゛""''・、                   ...:::::;;;''        ';;;:::::.......
 "”゛""''""“”゛゛""''' "j'                 ...::::;;;''            '';;;::::::.........
 :::::ヘ :::::....ヽ :::;;;ノ  ::(                ....::::::;;              '';;;::::::::::.......
 ::  ゝ  :::::......ノ:;;../  ~~^^ ~~~~~^^^~ ~~^^ ~~^^ ~~~~~^^^~  ~~^^~~~^
0960936NGNG
>>956
じゃあどこに入れればいいんですか?
例えばa.hを読み出すソースを保存してるふぉるだと
同じとこ?
0961デフォルトの名無しさんNGNG
>>960
だから、呼び出すソースファイルと同じところだってば(笑)
a.cから呼び出すならa.cと同じディレクトリ(フォルダ)
0962デフォルトの名無しさんNGNG
936 は、同じ話題なら次スレに移すな。
0963936NGNG
>>961
わかりました!ありです!
ソースファイルもヘッダファイルも一緒でつよね?
0964デフォルトの名無しさんNGNG
>>960
今までの煽りをリセットして聞いてくれ。

自分の、作業用のディレクトリを作って、そこに a.c と a.h を置け。
a.c からの a.h の呼び出しは、#include <a.h> ではなく
#include "a.h" にしろ。
あとは a.c をコンパイラにかければ OK だ。
0965936NGNG
>>964
#include <>だと、Icludeフォルダからって事で
#include " "だと、同じフォルダって事すか?
0966デフォルトの名無しさんNGNG
>>965
やっと理解したか。
そういうこと。
stdio.hなんかはincludeディレクトリに入っているから<>でやるの。
0967デフォルトの名無しさんNGNG
そうだ。わかったらこのスレあげずに寝ろ。
0968デフォルトの名無しさんNGNG
これだ。
ヘッダー(#include)ファイルを探すのに、どこを探しにいくのか。
http://www.catnet.ne.jp/kouno/c_faq/c10.html#8
0969936NGNG
ほんとありがとう!!
この知識を明日ひけらかすYO!
「なあなあ、お前ら知ってる?
#includeの<>はさあ、(以下略
0970デフォルトの名無しさんNGNG
はい、ネタ終了〜。乙!! >>969
0971デフォルトの名無しさんNGNG
936、森へおかえり。
ここはおまえの住むところじゃないの。
0972デフォルトの名無しさんNGNG
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

http://big.freett.com/scheme_a/num1000.swf
0973デフォルトの名無しさんNGNG
ナウシカキタ━━━━(゚∀゚)━━━━ !!!
0974デフォルトの名無しさんNGNG
まだ1000には気が早いかな
0975デフォルトの名無しさんNGNG
strcat の cat てなに?
strdup の dup てなに?
strchr の chr てなに?
strpbrk の pbrk てなに?
0976デフォルトの名無しさんNGNG
マニュアル読め。
0977デフォルトの名無しさんNGNG
ユパ様!1000をいただいてもよろしいですか!?
0978デフォルトの名無しさんNGNG
>>976
書いてねーよ。バーカバーカ。
分かんねぇんならすっこんでろ!
0979デフォルトの名無しさんNGNG
concatenation
duplication(スペリングが違うかも)
character
???
0980936NGNG
>>975
catはUnixのコードと思われ(勘
0981デフォルトの名無しさんNGNG
>>978
自作自演カコワルイ
0982小人NGNG
ダレモイナイ1000getスルナラ…
0983小人NGNG
イマノウチ…
0984小人NGNG
ランタンタン♪
0985デフォルトの名無しさんNGNG
>>982 ミタヨー (゚∀┃
0986デフォルトの名無しさんNGNG
今日からお前の名前は1000だ!
0987小人NGNG
ランタンタンタン♪
0988936NGNG
キタ━(・∀・)━!
0989小人NGNG
>>985
Σ(゚Д゚)ガーン…

でも(゚ε゚)キニシナイ!!
0990デフォルトの名無しさんNGNG
ではここらでジョークを一つ。

先日、友人二人と僕の三人でドライブへ行ったのさ。
その日はとてもいい天気でね。
それで
0991デフォルトの名無しさんNGNG
みんな何故Cを始めた?
漏れはなんとなくプログラムという言葉に憧れて
何も知らずにこの世界に入った。
0992小人NGNG
今だ!901番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0993デフォルトの名無しさんNGNG
1000間近
0994デフォルトの名無しさんNGNG
今だ!993番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0995デフォルトの名無しさんNGNG
 ∧||∧
(  ⌒ ヽ トゥトゥトゥマシェーリー
 ∪ 。ノ    トゥトゥトゥマシェーリー
  ∪∪
0996デフォルトの名無しさんNGNG
それで
海にでも行こうかってことになって友人の一人が運転して僕は助手席、もう一人の友人は
後ろの席に乗っていくことになったんだ。
すると途中で
0997デフォルトの名無しさんNGNG
もうちょい
0998デフォルトの名無しさんNGNG
   ∧∧
   /⌒ヽ)
  i三 ∪
 ○三 |
  (/~∪
  三三
 三三
三三
0999デフォルトの名無しさんNGNG
1000
1000デフォルトの名無しさんNGNG
1000ゲット
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。