C言語なら俺に聞け! Part 59

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

コンパイラを探しているなら >>2-13 を。
C machineはCに非ず

上記を逸した場合の結果は激しく未定義だYO!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

前スレ C言語なら俺に聞け! Part 〈58〉
http://pc2.2ch.net/test/read.cgi/tech/1054906871/
2デフォルトの名無しさん:03/06/20 20:51
【コンパイラ】
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
>>2
【ライセンスや機能などに問題あり】
って、それぞれ、何処に、どんな問題があるの?
スレ立てお疲れぇぃ
5デフォルトの名無しさん:03/06/20 23:26
>>1
>>1
乙99
gcc -O2 >>1.c
>>7
今考えたの?
それとも前からあるネタ?
>>3
それぞれ調べてくれ
そしたら、次のスレからテンプレに書き込める
>>7
入力ファイルがないね。
これでどや?

gcc -O2 kare.c >>1.log
上げたはずなのに>>9のsageに負けてしまった…(T_T)
上がってた…(?o?)
sage と書いても上がらないだけで、
下がるわけではない。
>>13
漏れが>>8を書いた直後にスレが上がって無かったし
(すでに>>9までは書き込まれていたのも確認済み)
後から書いたスレの方がタイムスタンプが若かった事もあったので
タイミングによっては、上がらない事もあるのかと思って>>11を書いたの
でも、上がって無かったのは、その時だけだったようで>>12…(略
15おしえてください:03/06/21 01:16
前スレ、最後の方、えらい事になっていますが、

実際の話、Cってそんなに難しいんですか?実を言うと、別会社でJavaをやっていました。
でも、どしょっぱつから、3人のプログラマーの一番偉いところをまかされて、いやになり、やめました。

他のスレには、市販で売っている(私が呼んだような入門書)を理解できていれば、Cで組めるものは、何でも組めると書いてありました。
それは、極端な例だと思いますが、実際のところ、C言語って、そんなに難しいのですか?
>>15
難しくはない、と思う。確かにクセはあるけど。
絶えず今扱ってるこのブツはメモリ上でどう表現されるかを
意識しながらプログラムすればそんなに難しくない。

ただし、Javaと違って危険な操作からプログラマを守ってくれないので(OSが守ってくれる場合もある)、
間違ってそういう操作をしてしまったらとたんにデバッグが泥沼になることがある。
この辺が厄介といえば厄介かな。
1716:03/06/21 01:29
追加。

あと細かいことができる代わりにプログラマがかなりの部分の
面倒を見てやらなきゃいけない。たとえばヒープに取ったメモリ(malloc等)は
プログラマがケアしてやらなきゃいけない。
Javaみたいにガベージコレクションをしてくれないので、すぐにメモリがリークする。
ま、標準ではないもののGCのライブラリはあるんでそっちを使えば楽できるけど。
Java からなら C++ やった方が楽かも。
コンピュータの動作原理を知らないと
どんな言語使ってもバグった時に困る
20おしえてください:03/06/21 01:39
>>16 >>17さん、どうもありがとうございます。
前スレで、scanfについて質問したのですが、scanfだけで、
もっとCは深いみたいな、レスがたくさんついていたので、
不安になってしまいました。

中には、標準入力からの関数は自作するなんてレスまでありましたが、
標準入力関数を自作するなんてことはできるんですか?それとも、既存の関数を拡張して
作ると言う事なんでしょうか?
コンピュータの動作原理を知ってても
使用言語がブラックボックスの塊だったらバグった時に困る
22_:03/06/21 01:40
23デフォルトの名無しさん:03/06/21 01:42
scanfは自分しか使わないプログラムを書くときに使っている。
>>21
そうなんだよ。VBとかさ。
煽るわけじゃないけどたまにどうしようもない時がある
さんざん調べたらIEのバグだったりしてションボリ
>>20
scanf()系は基本的にフォーマットされたデータを処理する為にあるので
文字列の解釈や代入に使うべきではないです
と言うか、それを無闇に使ってバグを起こすから
使ってはいけないと言われている訳であって…
後は、周囲の人と適当に合わせて使うか使わないか判断すればOKです
まぁ、他人と合わせると殆どの場合は使わない方にいくと思いますが…
26おしえてください:03/06/21 01:51
>>23さん、

では、仕事で標準入力関数を使うときは、どうしているのですか?
まさか、アセンブラみたいな感じで、自分で作るんですか?そんなに難しいなら、
とても無理だと思います。既存の関数を拡張して、標準入力関数を作るんですか?
>>24
結局IEのバグじゃん。
28デフォルトの名無しさん:03/06/21 01:53
>たとえばヒープに取ったメモリ(malloc等)は
>プログラマがケアしてやらなきゃいけない。
>Javaみたいにガベージコレクションをしてくれないので、すぐにメモリがリークする。

突っ込みどころ満載だな。
本当にCで仕事してるのかね。
>>26
入力関数はscanfだけじゃないよ。
30デフォルトの名無しさん:03/06/21 01:53
>>26
例えばscanf("%d",&n)はおきまりのfgets+sscanfで
31デフォルトの名無しさん:03/06/21 01:56
>>28
突っ込みどころがあるなら突っ込めよ。
32おしえてください:03/06/21 01:56
>>26さん、どうもありがとうございます!
やはり、元からある関数を使うんですね。それを聞いて、とても安心しました。

自分で、ゼロからつくるのか!?と思ってしまい、こりゃとてもじゃないぞ、と思っていたのです。

それと、回答をくれた皆さん、どうもありがとうございました。おかげさまで、何とかやっていけそうです。
33デフォルトの名無しさん:03/06/21 01:56
最近C言語を勉強した者なんですが何か問題だしてもらえませんか?
あんまり難しいのは分かりませんが・・
3428:03/06/21 01:57
>>31
そんなに親切じゃない
35デフォルトの名無しさん:03/06/21 01:58
C/C++の宿題やらせてください。9代目
http://pc2.2ch.net/test/read.cgi/tech/1055944101/l50
>>33
宿題スレにあるのを片っ端からやってみれば?
>>34
素直に謝るのが一番です。
>>28
よう分からんけど
void *p1,*p2,*p3;
p1=malloc(…);
p2=malloc(…);
p3=malloc(…);

free(p2); //解放しても使えない
って意味だと思う
つーか、俺も別におかしくないと思うけど?
>>27
その結論に行くまでがとてもとても苦労するのよ
40デフォルトの名無しさん:03/06/21 02:00
>>28
は何につっこみたいんだ?
普通のこと言ってるだけだろ
41デフォルトの名無しさん:03/06/21 02:01
>>38
void *p;

p=malloc(...);
.....
p=malloc(...);

free(p);

これの方がいいと思う。先に確保した領域を見失ってメモリリーク
42デフォルトの名無しさん:03/06/21 02:02
☆頑張ってまーす!!☆美人だけ集めました☆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
-----------------------------------------------
4316:03/06/21 02:02
>>20
scanfは変な動作をすることで有名な関数でプロは使わないというのは前スレの通り。
存在理由は昔書かれたプログラムとの互換性を取るためでしかない。
確かに便利な関数なので入門書ではよく使われるけどね。

他にもプロが使わないとされてる標準関数はgets(これは異論があるかも)、strtokがある。
前者はバッファオーバーフローの危険があるし、後者はバッファを破壊するから。
ま、どちらも使い捨てのプログラムでは使うこともあるけど、製品レベルでは使わない。
ちなみにこれらも存在理由は互換性のため。

標準入力関数を一から自作することは、いわゆる標準Cの範疇ではまず無理。
OSとのインタフェイスはCの規格の範囲外だから。
ただし、getcharやfgetsをベースにしてよいのであれば作れるよ。
だから既存の関数を拡張して作るという意味では作れる。

Cは深いといえば深いのかもしれないけど、言語仕様そのものは小さいので、
文法自体はさほど難しくはない。Javaを使ってたのならその辺はまず問題ない。

# つーてもポインタ・配列・関数ポインタの宣言周囲りの変な構文はあるなあ。あれは癌だ。
# パズルとしては面白かったけど。
4416:03/06/21 02:04
>>28
ぜひ突っ込んでくれ。いや煽ってるのではなくどこが間違ってるのか知りたい。
どうせくだらない揚げ足とりだろ、>>28よ。

>たとえばヒープに取ったメモリ(malloc等)は
>プログラマが開放してやらなきゃいけない。
>Javaみたいにガベージコレクションが不要メモリの開放をしてくれないので、
>すぐにメモリリークが起こる。

とか言いたいんだろうけど、そんなもんわざわざ突っ込んでたら
円滑なコミュニケーションがとれんぞ。
言いたい事は伝わってるだろう。

>>43
できないできないと言っているが、
じゃあ何を使って作るのだ?
たとえばintを入力する場合どのように書くのだ?
手抜き無しの安全なコードで頼む。
>>28
ほんとだよ。バカ!
4828:03/06/21 02:10
揚げ足とりじゃない。
大幅に間違ったことはいってないが、正しいことも言ってない。
初心者が聞いたら誤解をまねくし、問題の本質をついてない。
>>44
28ではないが、17の文章は
メモリがプログラマは悪くないのに勝手にリークするような感じを受ける。
5016:03/06/21 02:12
>>45
そういう意味なのかな…。わざと解放しない場合もあるよ。
だから解放するとかfreeするとか書かないで「ケアする」と書いたんだけど。

# つか、これに触れると変な箱の議論になりそうなんであとは静観しよう
scanfでここまで話が盛り上がるとは・・・
>>47&&28
何か懐かしいな…
その議論(標準入出力ネタ)、漏れ、何年か前に、この板でやった事あるよ
つーわけで、生暖かく見守ってあげるので、心おきなく争って下さい
>>52
その時は、どう解決したの?
>>48
>大幅に間違ったことはいってないが、正しいことも言ってない。
そういうのは「突っ込みどころ満載」とは言わんよ。

だったら正しい問題の認識を提示してやればいいのに
5528:03/06/21 02:15
>45みたいな意味じゃないよ。てか
>変な箱の議論になりそうなんで
それを知ってるのくらいなのに>17みたいな表現を初心者にしなさんな。

>>52
いや、漏れももう勘弁。
56デフォルトの名無しさん:03/06/21 02:16
挑発しないで最初から指摘してやればよかったのに。
5728:03/06/21 02:16
自分が突っ込まれるのが怖いのでしません。
5845:03/06/21 02:16
なんかスマソ
59おしえてください:03/06/21 02:16
>>43さん

どうも、大変分かりやすくて助かりました。Javaとそのへんは、あまり変わりないと聞いて、
あんしんしました。
GCがあるからメモリ管理が「無用」というミスリードをする
馬鹿教本は纏めていってよし。「無用」じゃなくて「負担が
少ない」だけなのにね。
6116:03/06/21 02:19
>>55
なるほど了解。確かに誤解を与えかねない表現でした。
ただ言い訳をさせてもらうならば、あの文脈はJavaの
ガベージコレクタとの対比として出したので云々。

ヒッコミマス
まあスーパーハカーの俺ならscanfを使っても安全なプログラムに仕上げられるけどな。
>>46に答えろや
>>53
相手方が標準入出力を特定のメモリの位置にすれば出来ると抜かして
(つまり、stdout or stdin を特定の位置に決めてしまう)
漏れは馬鹿馬鹿しくなったので、その時点で降りました
言うまでも、ありませんが、相手方が言ってる事は
Cコンパイラを作る事であって標準入出力を作る事では無い
>>62
ハに゙をお忘れのようで。
>>63
アセンブラ
>>63
質問の意味がわかりません
>>63
int i;
fread(&i,sizeof(int),1,stdin);
標準入出力なんて所詮はputchar(), getchar()に皮を被せただけの物さ。
>>69
はいはい、分かったから、がんがって作ってみ
みんなプログラムを載せて、論より証拠みたいなことを
する香具師はいないのか?
>>71
世の中出来る事と出来ない事がある
で、出来ない事を出来ると言う香具師に限って証拠は見せない
ちなみに、何作らせたいの?
73デフォルトの名無しさん:03/06/21 02:42
>>72
文字列を連結する関数をお願いします・・・
月曜日までの課題なんです(>_<)
>>73
そりゃスレ違いだ。
>>73
#include <string.h>
#define renketsu(dst,src) strcat(dst,src)
>>73
renketu( char *str_a, char *str_b ){
  strcat(str_a,str_b);
}
7873:03/06/21 02:50
みなさんスレ違いにも関わらずありがとうございました(>_<)
ヷ〳〵〳〵〳〵〳〵〳〵〳〵
>>76
文字列の連結くらい、幾らでもあると思うけど
何で、そんなに早く見つけられるんだろう…
さては、おまいさん、タイ○(以下スレ違いの為、割愛)
さて73の宿題はどう評価されるのかな。
あえて冗長にかくのが自然に見せるテク
まちがっても
*p++とか書いてはいけない
char *strneko(char *dest,const char *src)
{
strcpy(strchr(dest,'\0'),src);
return dest;
}
まぁ課題だからstrcatは使っちゃいけないんだろうな

renketu( char *str_a, char *str_b ){
  strcpy( str_a+strlen(str_a), str_b);
}
>>83
俺ならstrchr()の変わりにstrlen()を使う
まぁ、特に、と言うか、全く意味無いけど
かぶった…(T_T)
もしも標準ライブラリを書くことになったら、一部だけきちんと書いて、あとは>>83-84としちゃうけどまずいかなぁ?
出欠大サービス

size_t strlen( char *src )
{
  size_t ret=0;
  while(src[ret]!='\0')ret++;
  return ret;
}

char *strcpy( char *dst, const char *src )
{
  size_t cnt=0;
  while((dst[cnt]=src[cnt])!='\0')cnt++;
  return dst;
}
みんな優しいな。
スレ違いの質問なのに。
ワロタ
9188:03/06/21 03:08
出血が…
strlen( const char *src )が…
パッと見た目だけで、こんなにもミスが…
92デフォルトの名無しさん:03/06/21 03:14
質問があります。
変数の寿命はわかるんですが(例えばローカル関数なら
returnされるまで)、定数の寿命も同じなんですか?

void func(*char)
{
 char = "2ch";
}
これはNG?
constつければ書き換えられる心配がないことが分かるけど、
それよりもつけないとconstを指すポインタを(そのままでは)渡せなくなるんだよね。

これを指摘された時は目から鱗が落ちた。
>>92
NG
変数名は?charにポインタは入れられないよ
何から説明するべきなのだろうか…
>>92
寿命以前の問題なんだが
9792:03/06/21 03:18
>>94すみません思いっきりまちがえてますた
こうですた。
void func(*char str)
{
 str = "2ch";
}
9892:03/06/21 03:19
また間違えた・・・
void func(char* str)
{
 str = "2ch";
}
「定数の寿命」というのもよくわからん
>>97
*の場所がおかしい

strには"2ch"の先頭アドレスが入るけど、それではなんの意味もない。

void func(char **str)
{
*str="2ch";
}
10192:03/06/21 03:21
>>99
"2ch"がメモリのどこかに確保されて、
strにそのポインタが渡されるんですよね?
そのポインタはいつまで使えるんだろう?ということです。
>>101
プログラム開始から終了まで
文字列リテラルは永久に不滅です
リテラル文字列の寿命はプログラムが始まってから終わるまで。
というか、ずっと。

あと、リテラル文字列を変更されて欲しくないので

void func(const char **str)
{
*str="2ch";
}

として欲すぃ。
なにを作りたいのか知らないけど、戻り値にすればいいのに。標準ライブラリのstrerrorみたいに。
>>101
どっかに"2ch"と書かれた領域があって、
funcに突入したときにstrがその領域を指すように初期化される。

で、funcを抜けたとき
・"2ch"と書かれた領域はそのまま存在する。
・strそのものは寿命がなくなる

君の言ってる「ポインタ」が"2ch"が書かれた領域のアドレスのことなのか
strそのもののことなのか判然としない。前者ならプログラム開始から終了まで、
後者ならfuncに突入した直後からreturnするまで。
最近は文字列定数とは言わないのか
10892:03/06/21 03:29
>>100
むーそうなるんですか。
*が2つ出てくるとちょっと難しいっす。じゃfuncを呼び出す側は
char *str[100];
func(str);
printf(str);
なんでしょうか。

>>102
そうなんですか。定数はどこに登場させても
プログラム開始時には領域を持っているのですか?
それとも領域が確保されるのはその関数が呼ばれた時だけど、
スタック領域に積まれるわけではないということですか?
func(&str);
でも
str=func();
でも良いけど
str=DEFINED_2CH;
が良いと思う
>>108
それじゃポインタの配列でしょ。

char *str;
func(&str);

ポインタのアドレスを渡すの。
>>108
> スタック領域に積ま
自動変数じゃないもん

#自動変数がスタックに積まれると決まっているわけじゃないというつっこみは勘弁
>>108
char str[100];
func(&str);
printf("%s\n",str);
>>112
配列?
まず、
「そのポインタは今どこを指してるのか」を意識しながら考えたほうがいいぞ
>>109
その例ではそうだけどね...。
116112:03/06/21 03:34
何をやってるのだろうか…つー訳で首吊ってきます
11792:03/06/21 03:36
うあー皆さんありがとう。
もう少し考えて出直してきます。
>>117
一体何をつくっているの?
多分もっとよい方法があると思うんだけど・・・・
まぁ、おそらく、こうしたいのだろう…

void(char *str)
{
  strcpy(str,"2CH");//文字列は直接代入出来ない
}

char str[100];
func(str);
printf("%s",str);
>>118
作ってるものが分からないのに、
よい方法があるとか言うな!
12192:03/06/21 03:41
>>118 いや、何をというわけではなくて単に、
どこかで使われた文字列定数が、いつどこに確保されて
いつまで保ってるんだろうと思いまして。
>>120
少なくとも戻り値 void な状況で
こういうことをする必然性はないのぅ。
戻り値が別にあるのであれば、
こういうことをすることもあるかもしれんが。
>>120

本当だ(T_T)
>>121
各社コンパイラのC99への準拠っぷりが気になる
12592:03/06/21 03:46
そういや >>108に書いた、
>そうなんですか。定数はどこに登場させても
>プログラム開始時には領域を持っているのですか?
これに関してはどうなんでしょうか?
ものすごい見当はずれな疑問だったらすみません。
>>124
あるの? C99準拠コンパイラ
一般的にデータ領域とかいうところに置かれるんじゃなかったか?
で、読みとり専用だったりすると書き換えようとしてあぼーん


しったかで書いているんだけど・・・
メモリマップをみれば
12992:03/06/21 03:56
それもそうですね。
ということで、見ました。
funcが呼ばれる前に "2ch"が既にあるようです。
>>125
コンパイラ依存だったと思う
例えば"2CH"なら'\0'まで含めて4バイトなので
ものによっては、そのまま即値データと置かれてる可能性もあるし
>>127さんの言われるとおり、
読取り専用(なければ読み書き)のデータ領域の可能性もあるし
奇想天外な方法で確保している可能性も否定できない
(間違ってたらスマソ)
文字列リテラルならアドレスを得ないことはないと思うので、必ずメモリー上に置かれるんじゃないかなぁ。
>>131
そう言われれば、そんな気がしなくもない…
文字列リテラルはデータセグメント(メモリ)内に置かれる。
ていうか実装依存です。だからって書き換えちゃダメだけどね
いや、データセグメントって言うのは、処理系依存の話しだし…
13692:03/06/21 04:19
ああ、やっと>>104 >>110 の意味がわかりました。
char* str;
ってのは、charへのポインタを格納する変数だから
そのアドレスを渡すのだね。
だから当然、funcでは引数は **strだし、代入するには
その引数の中身(アドレス値)である *strなんだ!
ひとりレベルの低いレスですまんこ。
>>135
実装依存と処理系依存は意味違くない?自信ないけど
>>137
データセグメントはCPUが扱っているものだから処理系依存
(x86系だとCS,DS,ES,SS等々ありますが、DSが存在するかは処理系依存)
で、実際に<どうやってリテラルを保存するのか決めるのは
コンパイラだから実装依存
ISO 9899-1999
6.2.4.3 ... 静的オブジェクトはプログラム実行中つねに存在し
スタートアップに先立って初期化される。

6.4.5.5 ... (文字列定数は)静的な配列として
文字列を格納するのに適切なサイズで初期化される。 ...
何か、書き方が悪かったので訂正
データセグメントはCPUが扱っているものだから処理系依存
(x86系だとCS,DS,ES,SS等々ありますが、
 DSが存在するかは、そのCPUに依るので処理系依存)
で、実際に、リテラルを保存するのはコンパイラだから実装依存
>>136
ちょうどstrtolの第二引数がそんな感じ。
142デフォルトの名無しさん:03/06/21 07:02
C++の話になるけど、継承をしたときに
クラスの種類を文字列定数のアドレスで判断してたら
STLのVECTORでクラス作ったら文字列定数のアドレス変わってたんだけどそういうもんですか?
ちなみに判断するときは
return "C2ch";
ってやって返ってきたアドレスで
if(GetName() == "C2ch")
とかやってます。
143デフォルトの名無しさん:03/06/21 07:08
>>142
同じ文字列リテラルが区別されるかどうかは処理系依存だから、
vector云々関係なくそのコードはまずい。
145デフォルトの名無しさん:03/06/21 09:01
なんでCスレはC++スレと比べてこんなに伸びが良いのだろう
未だC++に移行できないウニクス野郎ばかりだからだろうか・・・
0からC++を勉強するヤツは少なくて、
0 → C → C++
  ↓  ↓
  脱落 脱落
的なことになるからじゃねーの?
人生の敗北者でも使えるC
人生の敗北者では使えないC++
>>142
"C2ch" ってリテラルは 1 つだけとは限らない。
んな事いう香具師もいるのか。
頼むから業務系で頑張ってくれ。
平気でアドレス比較していることも信じがたいが
C++の話になるけどとか言いながら話し始める142の神経が信じられない。
>>149
アドレス比較はscanfと同類か?
>>150
アンタの頭の中では同類なのか?
痛い目にあったのを道具のせいにして自分の散漫さを反省しないやつが
嫌いになりそうなものってとこに共通点があるような気がしたんだ
まぁ、>>142は単なるアフォとしても

>>140がとにかくイタい。
知ったかはいかんのだよ、知ったかは…
154デフォルトの名無しさん:03/06/21 11:56
一日たった110円であなたのお店やホームページの宣伝をします!

貴方のお店&サイトを効果的に宣伝できます!
お店の足取りが悪い・・・。私のサイトにはあまり人が来ない・・・。などお悩みの方は、
ぜひおすすめです。手軽&簡単しかも日本中に宣伝できますので、
大幅なアクセスアップが期待できます。

[料金について]
1日110円で宣伝&クーポン券の発行が出来ます。
年間契約で申込された場合、40,000円になります。
6ヶ月契約で申込された場合、25,200円になります。
3ヶ月契約で申込された場合、12,600円になります。

http://www.c-gmf.com/h17103.htm(ビジネスパートナーも募集中。稼げます!)

ぜひ一度お試しになってみてはいかがでしょうか?
155ひよこ名無しさん:03/06/21 11:57
 
キタ━━━━━━━━━━━━━━(゚∀゚)━━━━━━━━━━━━━━━!!!!
 
http://diary4.cgiboy.com/0/izuminoa/
 
cgiboy.com ウザ
157デフォルトの名無しさん:03/06/21 12:48
ASCII文字列があって、その文字列が数字のみで構成されていたら数値に変換、
1文字でもアルファベットや記号などを含んでいたらとりあえず0を返すような
関数を作りたいのですが、どのやり方が一番効率がいいのでしょうか?
atoiだと"12a"と入れても12と返って来てしまうので困っています。
やはり1文字1文字解析しながら条件分岐などさせて変換するしかないでしょうか?
>>131
void foo()
{
 char str[] = "2ch";
}
とした場合、str は foo に入る度に初期化される。
このとき、文字列リテラルを4バイトの即値として扱って
str を初期化するように最適化される場合がある。
確か VC++ 6.0 でそうなってるのを見た気がする。

もちろん、アドレスをとらないといけないような場合は
そういうことはしないと思うけど。
159デフォルトの名無しさん:03/06/21 12:55
for (s = t; *s; s++)
if (!isdigit(*s)) return 0;
return atoi(t);
>>157
isdigit で確認しつつ一文字ずつ解析しながら
自分で変換するのが一番いいかと。
面倒なら、isdigit で全体が数値のみで構成されてる事を確認して、
あとは atoi 使って変換したのでもいい。
実行速度効率的には二度手間だけど、
コーディングの手間としてはこっちの方が楽かも。
int f(char*s){return strspn(s,"0123456789")==strlen(s)?atoi(s):0;}
s + strspn(s,"0123456789") == '\0' ? atoi(s) : 0;
こんなかんじでできないかな?
s[strspn(s,"0123456789")]?atoi(s):0;
こうか?
少しずつトリッキーになりつつあるな・・・
s[strspn(s,"0123456789")?0:atoi(s);
166165:03/06/21 13:25
しまった、]で閉じてない(w
空の文字列わたすとどうなるんだ?
168デフォルトの名無しさん:03/06/21 13:28
>>157
先頭の符号や空白はOKならばstrtolを使え。

long func(char *s)
{
long n;
char *endp;

n=strtol(s,&endp,10);

return *endp?0L:n;
}
169168:03/06/21 13:31
引数はconst char *sの方がいいか
皆さんありがとうございます。そのまま使ってしまいましたが
こんな感じになりましたがどうでしょうか?一応動きます。
標準関数知らなすぎました(汗)。
int main()
{
char buf[15];
int ch = '\n';
fgets(buf, sizeof(buf), stdin);
if(strchr(buf, ch) == NULL){
fprintf(stderr, "バッファを越えました\n");
exit(1);
}
buf[strlen(buf)-1] = '\0';
printf("%d\n", convertInt(buf));
return 0;
}

int convertInt(char *string)
{
char *s;
for (s = string; *s; s++){
if (!isdigit(*s))
return 0;
}
return atoi(string);
}
171デフォルトの名無しさん:03/06/21 13:37
>>170
負の数は扱えないでつね
172デフォルトの名無しさん:03/06/21 13:39
☆可愛い彼女が貴方のために・・・☆
http://endou.kir.jp/yuminet/link.html
173デフォルトの名無しさん:03/06/21 13:40
☆可愛いCヲタが貴方のために・・・☆
http://pc2.2ch.net/test/read.cgi/tech/1056109884/
>171
ラインエディタで行数指定して行の追加、削除などを考えているので
負の数は一応使わないということで0を返すように統一してあります。
どうすれば、ULONGLONG 型や、__int64 の数字を文字で表示できますか?

ULONGLONG ull;
char s1[50];
ull = ( ULONGLONG ) ~0;
wsprint( s1, "%u", ull );

で変換すると、s1 は「4294967295」で、UINT 型の最大値が表示されてしまいます。
デバッグで見ると、ull はちゃんと ULONGLONG 値の最大値が入っている…
どなたか知っている方、お願いいたします。

もちろん sizeof( ULONGLONG ) の値は 8 です。
OS:Windows98 SE
>>174
ならエラー値は負数にすればいいのに・・・
177デフォルトの名無しさん:03/06/21 13:44
>>175
スレ違い・・・・
long longならスレ違いでもないんだけど。
>>175
最後の1行がワラタ
179175:03/06/21 13:48
>>177
もしかして、C++相談室の方ですか?
180デフォルトの名無しさん:03/06/21 13:50
>>179
違いますが
ULONGLONGや__int64なんて型は標準にはないんだからここで聞くのはスレ違い。

そんなものコンパイラのマニュアルのprintfのページに載っていると思うけど。
一番肝心なコンパイラの名前を書かないでOSの名前だけ書くとは
buf[strlen(buf)-1] = '\0';
なにこれ?
>>182
意味ないけど文字列の終わりの'\0'の'\0'を載っけたいんだろ?

それにこうじゃねーの?
buf[strlen(&buf)-1] = '\0';
>>182
多分fgetsで書き込まれた改行文字を取り除きたいんだと思う。

>>183
(-_-;)
185デフォルトの名無しさん:03/06/21 14:01
改行消しだと思うよ。
>>183
意味あるだろ。
strlenが何を返すか考えろ。
たとえばbufが空の文字列だったときとか。
>186
bufが空文字列ということはありえない。ちょっと上のifを見れば分かる。
188186:03/06/21 14:04
>>187
悪い。
別にbufが空の文字列のとき誤作動とか言いたいわけじゃなくて、
183が理解出来てないようだから一番簡単な例を示しただけ。
>>170
strchr(buf, '\n')と直接\nを書いた方がいいと思う。
p = strchr(buf, '\n');
if (!p) ...
*p = '\0';
>176
確かに。プログラム全体に関わるかもしれないので考え直します。
>189
一回しか使ってないのでそのほうがよさそうですね。

やっぱり何も入力しないでEnter押したときはconvertIntに渡さないで
事前にチェックしてexitとかしたほうがいいでしょうか?
192175:03/06/21 14:21
違うところで聞いてみます。
レスサンクス
"%u"ってint型を表示するんじゃないの?
>>193
%u = unsigned int
%lu = unsigned long int
%llu = unsigned long long int (C99)
static const unsigned long long int a = 0;
extern const unsigned long long int a;
>>192
VC++なら__int64は%I64d
Boomerangをインストールしたんですが、解析のしかたが分かりません。
特にexeファイルを解析したいです、どうすればよいでしょうか?
通報しますた
受理しますた
201デフォルトの名無しさん:03/06/21 17:00
Cpad for LSI C-86を使ってるんですが、
以下のようなエラーメッセージが出てコンパイルできません。
原因も全然分かりません。誰か教えてください。助けてー!!!
"lcc: can't exec: cpp: No such file or directory"
>>201
まずgccをダウンロードしてきてください。
203デフォルトの名無しさん:03/06/21 17:06
>>202
どこでダウンロードできるんですか?
204デフォルトの名無しさん:03/06/21 17:07
☆可愛い娘たちが貴方のために・・・☆
http://endou.kir.jp/yuminet/link.html
>>203
>>204のところです
206デフォルトの名無しさん:03/06/21 17:13
>>205
・・・・エロリンクしかないんですけど・・・・・
>>206
冗談はさておき
http://pc2.2ch.net/test/read.cgi/tech/1042611308/
ここの最初のリンク
208デフォルトの名無しさん:03/06/21 17:22
>>207
できましたー!!!次はどうしたらいいんですか???
次にCpadとLSI C-86を捨てます。
210デフォルトの名無しさん:03/06/21 17:26
それで・・・、なんか.exeを実行するんですか???
最後にgccでコンパイルして出来上がりです。
212デフォルトの名無しさん:03/06/21 17:32
んんんん・・・できない・・・もう一度cpadを解凍して、コンパイラをgccに
するってこどですか???
213デフォルトの名無しさん:03/06/21 17:47
だれかー・・・・おしえてくださーい!!!!!
>>212
207のリンク先のDownloadからMinGWを落として解凍すれば使い方も一緒に全部入ってるはず。
215デフォルトの名無しさん:03/06/21 17:55
全部英語でほとんど意味不明なんですけど、
その辺は自助努力ってことですか???
ギャビーン・・・・
216デフォルトの名無しさん:03/06/21 17:59
>ギャビーン・・・・

ってなんですか?なんとなくガーンって感じはするんですけど。。。
217デフォルトの名無しさん:03/06/21 18:04
英語は読めない・・・・助けてくれます!?・・・
ガーン
>217
パス通して
gcc hogehoge.c
>>218
パスてなんですか?
だれにパスするの?
はぁ〜
>>219
どこまで知れば、目的に達成できるのか、もうちょっと調べてから
質問してくれないのカナー。
釣りにしては長いな
釣りじゃなくて漁です。大漁の予感がします。
今網を巻き戻してるところなのでもう少し待ってください。
223デフォルトの名無しさん:03/06/21 18:33
hogehoge.cなんて解凍してもできないっす・・・
224おしえてください:03/06/21 18:38
borlandC++コンパイラをおとして、BCPadをおとして、設定すれば良いだけの話しです。
225おしえてください:03/06/21 18:39
なんで、みなさんは、難しいコンパイラを、教えるのですか?
勉強のため。
効率を重視するときはIDEを使います。
俺は勉強がすんでいるからわざわざ難しいコンパイラなんて使わないけどね。
228デフォルトの名無しさん:03/06/21 19:40
C実践プログラミングという本に符号付き整数を右シフトした場合、シフトしてあいた部分には符号ビットと同じものが入ると書かれていたんですが、
符号付きでかつ負数を右シフトした結果は処理系依存ですよね?あいた部分が1で埋められると決まっているわけではないですよね?
処理系依存です
230デフォルトの名無しさん:03/06/21 19:59
sdkってなんの略?
>>230
そこ。
どこ?
ここ。
232デフォルトの名無しさん:03/06/21 20:02
>>229
ですよね。ありがとうございました。

ごく一般的な例を示しただけなのかな。表形式で決めつけた書き方をしていたんだけど・・・
コンパイラに難しいとか簡単だとかあるのか?
VisualStudioが使いにくいとかgdbがとっつき難いってのは判るが。
漏れの本にも、
doubleの精度は約13桁です
って書いてある。
235デフォルトの名無しさん:03/06/21 20:55
#include<stdio.h>
char search(char*,char*);
main()
{
char moji1[81];
char moji2[81];
printf("店の姫の名前をカキコんでみてネ。(ただし、80字以内にしないとお仕置きよん♪)");
scanf("%s",moji1);
printf("やりたい姫の名前をここに挿れてっ。お・ね・が・い♪");
scanf("%s",moji2);
if(search(moji1,moji2)==0)
{
printf("殿!お探しになってた姫は在籍しております。\nお急ぎくださいませ!");
}
else
{
printf("殿!今日お探しになってた姫は休みをとっております。\nまた別の機会にご来店ください。よろしくおながいします。")
}
}
236235の続き:03/06/21 20:58
char search(char*x,char*y)
{
char* a,b;
int s;
b=y;
while(*x!='\0')
{
while(*y!='\0' && *x!='\0')
{
if(*x==*y)
{
s=0,x++,y++;
}
else
{
s=1,x++;
}
if(s==0 && *y=='\0')
{
retrun 0,break;
}
if(s==0 && *x!=*y)
{
y=b;
}
}
}
return 1;
}
237ひよこ名無しさん:03/06/21 20:59
 
キタ━━━(,    )(,,    )(,    )(`×´ ;)━━━ッ!!
 
http://diary4.cgiboy.com/0/izuminoa/
 
238236:03/06/21 21:01
>char* a,b;

char* a;
char* b;
という解釈でおながいします。
239デフォルトの名無しさん:03/06/21 21:06
>>238
それよりもなんの目的でソースを貼ったんですか?
char*a, b論外
strcmp
なんかウゼえコーディングだな
C言語覚えたてでウキウキなんだろう。そっとしておけ。
243_:03/06/21 22:24
244236:03/06/21 22:29
おまえら滅ぶよ
>>236 は釣りかなんかですか?
struct a{
 struct b{
  int com;
 }mac;
}homepage;

int hiroyuki44;

homepage.mac.com/hiroyuki44

いや、べつに意味は無いんだけど…。
>246
あぼ〜んだよ(w
248デフォルトの名無しさん:03/06/21 23:24
C言語覚えたてといえば、覚えてから一度も共用体なるものを使ったことないけど
誰かいる。
unionって今はじめて打ったよ。
あと。#if #elseとかも一度もない・・・
>>246&&247
良く見るけど、そのアドって何なの?
>>249
名前欄にfusianasanと入力するんだよ。
251fushianasan:03/06/21 23:34
こう?
ヷ〳〵〳〵〳〵〳〵〳〵〳〵
>>248
union は使わんなぁ。
でも、#if #else は結構使うぞ。
>>252
なんか字がスゴいことに…
255デフォルトの名無しさん:03/06/21 23:52
>>253
VC++に#if #elseと似たような機能があるよ。
指定した行や関数を無効にするようなものが。
256デフォルトの名無しさん:03/06/21 23:54
でも、式で操作できないよ。
>>255
標準より処理系の拡張がいいと申すか?
union便利だよ。
前の現場で変なunionの使い方してて、
たった1個のDBの項目長が変わっただけで大量の修正orリコンパイルを
余儀なくされたよ。

相当メモリを節約したいか、同じ領域を無理やり違う型ですぐに見たいときでもなきゃ
使うもんじゃないな。
制御系やるとたまに使うな>union
>>260
初めて使った union は union REGS regs; ダターヨ。
>>261
俺もだ。
VRAM 操作するときに使っターヨ。
>>248
エンディアン変換する時には激しく便利だな。
>union
>>263
どういう風に便利?
別に union いらん気もするが。

void change_int_endian(int *value) {
 char tmp;
 char *c = (char*)value;
 tmp = c[0];
 c[0] = c[3];
 c[3] = tmp;
 tmp = c[1];
 c[1] = c[2];
 c[2] = tmp;
}
>>265
それだとintのデータしか扱えなくて汎用性がない。

既存のソースの改修や、同じ関数内で変換したい場合は以下のようにする。

union {
unsigned long Dword;
unsigned short Word[2];
unsigned char Byte[4];
} data;

data.Dword = hoge;

/* Big Endian */
BigEndiadn = (unsigned short)((data.Byte[0] << 24) | (data.Byte[1] << 16) | (data.Byte[2] << 8 | data.Byte[3]) );
ふと思ったんだが

union hoge{
 short s[2];
 int i;
} uni;

uni.s[0] = 1;
uni.s[1] = 0;

printf("%d", uni.i );

ってやったらさ、65536って出るよね。
>>266
CHAR_BITSが8じゃなかったら?
そこまでやるんだったらフツーに char* つかえばいいような気がするが。
>>266
それってBig EndianでもLittle Endianでも同じ値になる?
BigEndiadn = (unsigned short)((data.Byte[0] << 24) | (data.Byte[1] << 16) | (data.Byte[2] << 8 | data.Byte[3]) );


…アフォだ、真性の。
>>271
short と long のキャスト間違えただけだろ。
>>272
shortが32ビットなんだろ?
あのシフト演算してる内容はムチャクチャに見えるんだが。

アフォだ、真性の。
>>271&&274
アフォで短小で包茎で早漏って言いまちたね
アフォで(略)って言った方がア(略)なんでちよ
そう、ママに教わりまちぇんでちたか?
ビッグエンディアンとリトルエンディアンの定義を
逆に覚えてしまっているのか。
>>275
それはママンには習わなかったが、>>265みたいになるんじゃないのか?
278265:03/06/22 01:43
>>277
俺かよっ!!
>>278
ああ、最後の1行だけに対する煽りだったんだね。スマソ。
ところで今 pc.2ch.net 見えますか?
281デフォルトの名無しさん:03/06/22 02:07
>>268
CHAR_BITだろ
>>281
細かいツッコミありがとう。
283268:03/06/22 02:12
>>281
スマソ
284デフォルトの名無しさん:03/06/22 02:21
char c[3];
とかにscanfなどで絶対2文字以上入れさせない為にはどうしたらいいですか?
>284
別な入れ物用意する。
>>284
ループを使って1文字ずつ入れていけばいいんじゃない?
scanf("%1s", c);
scanfを、もとい、C言語を使わなければ良い
>>284
scanf に%cを1つ書いて入力汁
printf("絶対2文字以上いれないでください\n");

これを加えるだけでオッケー
fgetsとsscanfを使う
>>290
「そうは言っても体は正直なもので3文字以上
 入れられたがってるようじゃがのぅ。フォッフォッフォッ。
 どれどれ、ひとーつ、ふたーつ、みぃ〜〜〜っつ」
293284:03/06/22 02:33
scanf("%1s", c); などを使った時、

scanf("%1s", c); //一回目の入力
scanf("%1s", c); //2回目の入力

とした時1回目に余った文字が2回目のほうで入ってしまうのですがこれは回避できないんでしょうか?
>>284
まずは法律の整備から。
まあ法律を破る人はいるから絶対に防ぐのは無理だけど。
295デフォルトの名無しさん:03/06/22 02:36
>>293
rewind(stdin) と汁
>>295
それって大丈夫なの?
fseek(stdin,0,SEEK_END);
>>296
ハァ? それくらい自分で試せば?
>>298
俺の持っている環境だけで動いても意味ないし・・・
>>298
ハァ? それくらい自分で調べれば?
釣りでしたか。
>>295
だめだったけど・・・・
環境はLinux+gcc
>>302
man rewind してみたら?

多分使うタイミングを間違えているよ。
>>303
デバイスに対してfseekやrewindを使った場合についての記述はない。
呼ぶタイミングは二度のscanfの間
漏れ BSD だが。特に問題なし

#include <stdio.h>

int main(int argc, char**argv)
{
char c;

scanf("%c", &c);
rewind(stdin);
scanf("%c", &c);

printf("%c\n", c);

return 0;
}
fflash(stdin)
307304:03/06/22 03:05
いくら長い文字列を入力しても、二度目のscanfの時に入力待ちになれば成功なんでしょ?
>>304
そうだが。何がいいたいの?
309284:03/06/22 03:09
私も試してみたのですがWINXPとVC++でrewind(stdin);は使えました
今は使えないのですが本当はUNIXで実行させたいのですが・・・
やっぱり関数使わないと無理なんでしょうか・・・?
>>309
rewind は UNIX な環境であればおそらく存在するんではないか?

なんかマズいの?
fgetsとsscanfを使えとあれほど





すごい釣りだなぁ
scanf()はネタが尽きないね。
>>310
存在するか否かの問題ではないだろ・・・
rewind(stdin)で入力バッファをクリアできるかどうかが問題なんだろ。
fscanf, scanf() の "%c" つかえば医院じゃないかな?この場合は。
こんなんどうですか?

scanf("%c",&a);
b = a;
while(a != '\n'){
scanf("%c",&a);
}
scanf("%c",&c);
316デフォルトの名無しさん:03/06/22 03:17
getchar()仕え
317デフォルトの名無しさん:03/06/22 03:18
EOFの判定めんどい
>>313
んーと a.out < /dev/random
ってことですか?
>>317
そんな訳ない
>>310>>309の「使えました...本当はUNIXで...」に対する皮肉か。
>>320
コワー。ちょっと荒んでますね。
>>320
アレが皮肉に見えるのか?
むしろ>>309が皮肉のような
>>322
>>309は期待通りに動いたという意味で「使えました」と言ったんだろ。
それを存在するかしないかという意味で解釈して>>310と言ったんだろ。
つか >>320はヤヴァイ感じがする。もう寝たほうがいいぞ。
みんな名無しでよく流れが分からないのだが。
328326:03/06/22 03:38
> キーボード バッファをクリアするには、既定でキーボードに関連付けられている標準入力ストリーム (stdin) を引数に指定して rewind 関数を使用します。

これ
次の質問は、標準入力がキーボードであるか、
違うものであるかを見極める関数の使用方法だな
>>324は暴れないのか?
待ってるんだが。
釣りは魚の役をやる香具師がいないと成り立たないからなw
あー、乗り遅れた!
調べもしないで凄む>>320はどこに行ったんでしょうか?
334名無しさん@Emacs:03/06/22 12:26
我流でやってる初心者ですが
下のプログラムを実行すると処理が全部終ったあとにSegmentation Faultになります。
どこがまずいんでしょうか

#include <stdio.h>

void get_output_fd( char *argv ,FILE *out_file ){
out_file = fopen("outputfile","w");
}

int main ( int argc, char **argv ){
FILE *out_file;
(void) get_output_fd( argv[1], out_file );
fclose( out_file );
return (0);
}
>>334
fopenの戻り値がget_output_fdを抜けたところで行方不明になるから。

書くならFILE *get_output_fd(void); outfile=getoutput_fd();とする。
336デフォルトの名無しさん:03/06/22 12:49
>>334
自作関数get_output_fdの引数の意味がわからん!
自作関数get_output_fdの戻り値でout_fileをメインに返すかout_fileを
グローバル変数で宣言しないとfclose( out_file );が機能しない!
さらに戻り値型の括弧は(void)特に必要がないかと思うけど・・・
STLのstringを使ってみました。
int i=123;
string ss=i;
としたとき、ssに数字の123の文字が入ってくれません。
単に数字を文字列にしたいだけなんですが、どうすればいいのでしょうか。

>>334
void get_output_fd(char *argv, FILE **out_file)
{
*out_file = fopen("console.txt", "w+");
}

int main(int argc, char **argv)
{
FILE *out_file;
get_output_fd(argv[1], &out_file);
fclose(out_file);
return(0);
}
339jj:03/06/22 13:06
初心者ですが 、これでエラーがでます。
なぜでしょうか。
#include <stdio.h>
main()
{
printf("t");
}
340デフォルトの名無しさん:03/06/22 13:09
メイン関数の戻り値方がない。
さらにはコンパイラによったらメイン関数でもプロトタイプを
宣言しろといってくる「ポンコツ」が存在する。
というわけで340じゃないが

#include <stdio.h>
void main()
{
printf("t");
}

#include <stdio.h>
int main()
{
printf("t");
return 0;
}

どっちかにすんだな
342デフォルトの名無しさん:03/06/22 13:34
>>337 もどうぞよろしくお願いします。
大漁〜♪大漁〜♪
>>342
いとあ
345337:03/06/22 13:51
int

char
にするだけでもいいのでおながいします。
(char)
347337:03/06/22 13:55
それだとわけわかんない文字になってしまうのですが・・・。
このスレで聞いていることの方が分からない。
>>337
#include <sstream>

std::ostringstream ost;
int i=123;
ost << i;
std::string s=ost.str();

C++相談室 part20
http://pc2.2ch.net/test/read.cgi/tech/1055162298/l50
350337:03/06/22 13:58
C系の質問スレってここじゃないの?
351337:03/06/22 13:59
>>349
あーごめんなさい。
あとまじでありがとうございます。困ってたので助かりました。
>>337
C板的に回答するなら

int i = 123;
char buf[256];

sprintf( buf, "%d", i);

と言った所か?
板じゃなくてスレ
354kk:03/06/22 14:30
>>339

#include <stdio.h>;

の「;」がぬけてますよ。
鼻毛登場
びっくりするほどユートピアだな
ふーん。
エラーと警告の区別がつかない初心者
359jj:03/06/22 14:33
>>354
ありがとうございました!!!
それで逝けました
>>359
空しいな。友達作れよw
361jj:03/06/22 14:42
役立たずの負け惜しみですか?w
354さんありがとうございました!!
残りは氏ね
#include <stdio.h>;
何度も見たなぁ。これが通るコンパイラって多いのかな。
C FAQすら読まずに知ったか回答する人は氏んでもいいと思う。
>>361
340, 341も答えているのに、酷い香具師だな。
>>361
さっきから一人で何やってるんですか?
>>363 違うだろw
C FAQすら読まずに質問する人
の間違いだな。
367その1:03/06/22 14:59
>>3 誰彼のアレも強制オナニーのようなものなのだろうか?
>>5 真・脳力者の芽美たんのオナニーがよかった
>>6 佐伯由美子(虜)の自慰調教のシーンが良かった。
>>9 とらハ2でみなみがオナるところ萌え〜。
>>10 とらハ2でみなみがオナるところ萌え〜。
>>15 >>16
自慰・自慰〜覗きの報酬〜・自慰2・自慰☆すぽっと(キャンディソフト)
みせたがり(ZERO)
「fu・shi・da・ra」「mi・da・ra」(ミンク)
P.S.@1・2・3(ウラン)
自慰倒錯(ティンカーベル期待の新作) >>417-418
>>20 >>22 「女のこの仕組み」(りびどー)のおまけCD
>>29 夜勤病棟の恋
>>43 同人でもいいですか?虎の穴に「奴隷志願」
>>52 夜想文化祭で香澄、真由美、園子、智代の4人にオナニーシーン有るょ。
>>54 >>55 放課後マニアクラブは全員やってて良かったなぁ。
>>60 『風色のロマンス』で主人公の部屋でエロ本を見つけオナってる処を見つかちゃった
>>63 「緋色の姉妹」で二人いる。
>>74 ブライディアでダリアにオナニーさせるシーンは凄く良かった
有り得ない誤爆スマソ
吊ってくる
オナニー見てるだけなんてもの足りないだろ
370367:03/06/22 15:14
パターン1
客「こういうの作ってください」
技術者「はいできました」

パターン2
技術者「俺こういうの作りたい」
技術者「できたー」

どっちの技術者が本気で開発「やりたい」と思ってると思う?
どっちが本気で開発の楽しさを「感じてる」と思う?

だから漏れはオナーニ好きなんだYO!
本人が自ら求めてる様がいいんだYO!

>>367
作ったエロゲ教えて。
372367:03/06/22 15:30
肝心なとこを忘れてた。
パターン1がセクースで
パターン2がオナーニな。

で、別に俺はエロゲメーカーでもないし個人的に作る力量もなし。
さて、印刷もしたし、中古屋にいってくるか…。
>>372オナニーが好きなんじゃなくオナニーしか出来ない香具師
while(1){

scanf("%d", &n);

switch(n){

       ・
       ・
       ・
}
}

というやつだと、入力を間違ったりすると(↑とかBS)無限ループにはいってしまいます。
その対処法などがありましたら、ぜひお教えください。
scanfの返り値をチェックしとけ
>>374
>>293 以降
377デフォルトの名無しさん:03/06/22 17:15
fgets()を使う
i378
難波「486よ486が安くなるのよ!」







時代だねぇ。
380デフォルトの名無しさん:03/06/22 18:56
#include <iostream.h>

void main()
{
double a,b,c;

cout << "わり算の余りを求めます。" << endl;

cout << "わられる数を指定してください。" << endl;
cin >> a;

cout << "わる数を指定してください。" << endl;
cin >> b;

c=a%b;

cout << a << "÷" << b << "の答えは" << c << "です" << endl;

}

このプログラムがどうしてもエラーになります。
どこが悪いのでしょうか?
>>380
C++スレは他にあるよ。
1. % は実数に使えない
2. a % b は a ÷ b じゃない
3. スレ違い
383デフォルトの名無しさん:03/06/22 19:00
>>380
C++のプログラムはここではありません。
しかも、#include <iostream.h>ってヘッダーファイルではないので
#include <iostream>です。CとC++を混同してませんか?
C++スレで聞かれても困るけどな。
>>380
答が出てるしスレ違いなんだが、一般的に「エラーが出る」というのは、
どういうことなのか詳しく述べないとダメよ。

・何をしたときに
・どんなエラーが出たか(メッセージをコピペする)

これくらいは最低限必要ね。
386デフォルトの名無しさん:03/06/22 19:27
Cを最近勉強し始めた者です。
scanfで半径を入力し、半径*半径*円周率(n)で面積を求めたいんですが、
入力された数値が2だったら4nみたいに表示できませんか?
文字と数字の掛け算ってできますか?
>>386
数字も文字の内。
文字は整数だからかけ算できる。
>>386
printf("%dn",hankei1*hankei2);じゃだめなの?
389デフォルトの名無しさん:03/06/22 19:33
あっ、それもそうですね。
でも、もし半径がrを入力されたら・・。ということを
考えたら掛け算したほうがいいかなと思ったんです。
↑>>入力された数値
  すみません。文が変でした。数値だけではなく、文字も考えます
>>389
2 2なら4nで、r 5なら5rnとか表示させたいの?
391デフォルトの名無しさん:03/06/22 19:37
#defin n 3.14
392デフォルトの名無しさん:03/06/22 19:38
やっぱり円周率を#とします。
2と入力されたら4#、
rと入力されたら#r^2こんな感じです。
>>392
それならscanfを使ってはいけないと思うよ・・・・
394388:03/06/22 19:40
あ、半径なんだからどちらも同じだ(恥
395デフォルトの名無しさん:03/06/22 19:41
確かにそうでした・・・。
どうもありがとうございます。
396初心者:03/06/22 19:51
はじめまして。
C言語を勉強しようと思うのですが、
どういう勉強方法がよろしいですか??
アセンブラも覚えた方がいいのですか?
まいっちんげまちこ
既にプログラミングが出来るのなら何からはじめても大丈夫だろうが、
そうでないなら内容が少なすぎるのではないかと思うくらい
簡単な本を買うのがいいと思う。
何でも覚えた方がいいが手広くすると挫折する可能性も高くなる
399初心者:03/06/22 20:05
>>398
ありがとうございます。
400ゲットしていいでつか?
ダメ
あーあ。ダメって言ったのに…
403悩める獅子座:03/06/22 21:20
ポインタを使う意義ってなに?
今はPCの性能がインフレ気味だから全部グローバル関数にしちゃっても
なんら問題ないと思うんだけど。。。
俺ってアフォ?ポインタの存在意義教えて
支離滅裂
>>403
BASICの様なコードを書きたいならそれでもいいよ
>>403
むしろ性能が低いほうがグローバル変数を使う意義があるのだが…
余計なパラメータの受け渡しのコードがなくなるんでその分速くなるのだが。

事実昔は、リエントラントに気を使わないでよい再帰関数は高速化のために
グローバル変数を積極的に使ったものだ。

グローバル変数を使う弊害ってのは、関数の独立性が損なわれることにある。
無論、リエントラントな関数だとグローバル変数を使ってパラメータの受け渡しをすると、
破綻するしな。

パラメータをいちいち書かずに済むので楽だと考えがちだが
(おれも新人の頃はそうだった)いざ、そのパラメータの値がおかしくてバグが露見した場合、
どこでおかしな値を設定しているのかわからなくなる。
それでなくても関数の独立性が低いので少しでもその関数を直すとその影響が
コード全体に波及して保守しづらいことこの上ないコードになるぞ。

だからPC、というか計算機の性能が上がった今では多少の性能は無駄にしても、
保守性を重視してグローバル変数は原則として使うな、ということになっているのだ。

以上のことはポインタを使うとか何とかということと関連のない話だ。
ポインタの本質は物を指せるということだ。物というのはメモリ上の実体な。
これを使わないとかけないコードは多々ある。一番いい例がリンクトリストだ。
もうひとつ、でかい物をパラメータとして渡すと性能が落ちるので、
その代わりにでかい物のありか(ポインタ)をパラメータとして渡すという使い方もある。

さらに物のありかを指しているので、関数はその物にいろいろいたずらをするという
使い方もある。君が言うグローバル変数で云々というのはこの最後の使い方しか見てない。
>>403
PCの性能が良くなったからポインタの存在意義がなくなった
と言ってるのか?
つまり昔は意義があったってことか?
どんな意義があったのかは知らないが、それがポインタの存在意義じゃないのか。
>>406
長文を書く前によく読みなさい。
>>403 の言っているのは「グローバル関数」です。
409406:03/06/22 21:54
>>408
うわ。恥ずかしい。ごめんなさいです。
文意がつながらないから勝手に脳内で読み替えてしまったらしい。
Cにグローバルでない関数はあったか?
>>410
あえて言うならstaticな関数、かなあ。
グローバルの定義にもよるけどな。
412410:03/06/22 22:13
内部関数か・・・

>>403
それとポインタ・・・いやコンピュータの性能とどう関係あるんだYO!
413412:03/06/22 22:15
内部関数なんて言い方はしないかも・・・なんとなく使ってきたけど。
414デフォルトの名無しさん:03/06/22 22:27
確かにポインターは使われなくなったけど、たまに、Cをマスター=ポインターが使える
と勘違いしてるやつは何でも間でもポインター使ってみんなに、嫌がられるんだよ。
アスタリスク2つまでなら許せるけどそれ以上はいや!

>確かにポインターは使われなくなった

なったのか?
416デフォルトの名無しさん:03/06/22 22:35
>>415
使われにくくなった
>>416
どこで?
418デフォルトの名無しさん:03/06/22 22:41
#include <stdlib.h>

↑これはstrcmpを使うときに必要なんか?それともatoiか??
違うサイトの解説見てたら乱数を発生させるときに必要とか・・・
でも乱数なんて入ってないし
どれなんだYO!
419デフォルトの名無しさん:03/06/22 22:43
>>417
言語自体が使わない流れ!
javaとか会社では新規にCでプログラムはしばらくしてないがcの仕事が新規で
くればハードの性能が上がってるので理解しやすくポインターを使わずに書く。
>>418
atoiもrandもsrandもstdlib.hだが、strcmpはstring.h
>>419
C++はどうするんだ?
>>421
し・め・つ♪
>>419
うちは未だに思い切り使ってますが…
424デフォルトの名無しさん:03/06/22 22:48
>>421
C++はクラス型もポインターは便利なので使う。それ以外はなるべく控える。
425デフォルトの名無しさん:03/06/22 22:49
>>424
もではなくのです。
426デフォルトの名無しさん:03/06/22 22:50
>>420
サンクス
めもっとく
>>419
JavaでOSがかけるか。ドライバがかけるかボケ。
と思ったのだった。その昔にたようなことが言われてて、
PrologでOSを書いちゃったことがあってみんな仰天したがなw

アプリだけならCはいらんかもしらんな。
要は使うべきところを間違っちゃいかんという事だ。
Cを使うならポインタ使わないと書けない・書きづらいことがあるんで使うでしょ。
つかCに限らず、いまどきの言語はみんなポインタあるだろ。
JavaだってVBだってあるだろ。
アプリってなんだか楽しそうでうらやましい。
>>428
Cと同等のポインタが使える言語ってそんなにないと思うけど。
Javaは基本的にオブジェクトの参照のみだし。VBはよくしらん。

Cには参照がないんだよな。他の処理系では処理系が縁の下でやってることを、
Cではプログラマがポインタを使って明示的にやるようになってる。
ポインタが使えないと、標準関数使えないよ。
参照もポインタも本質は同じようなもの。
文法がちょっと違うだけだよ。
その本質を見失うと厄介なバグに悩まされるよ。
>>403以降のスレをみる限り
ポインタを理解してない香具師って、意外と多そうだね…
「参照」という言葉が C++ で使われてるものと
その他の言語で使われてるものとで違う、
ということに関して触れる人が少ないのが残念だ。

Java などで使う「参照」というものは
実のところ C++ の「参照」と「ポインタ」を足して 2 で割ったようなものだ。

1. 初期化だけでなく、代入できる(C++ のポインタの特徴)
2. あるオブジェクトの実体そのものではなく、
  実体を参照するものである(C++ のポインタと参照の特徴)
3. アドレスのようなものを操作することができない(C++ の参照の特徴)

特徴 2 は重要で、うっかりすると
違うものだと思ってたものが実は同じ実体を参照していた、
なんてことにもなる。
C++ では値とポインタ、参照で型名が変わるのでその可能性を常に意識するけど、
Java だと参照しか使うことができないのでつい忘れてしまうことがある。
435 :03/06/23 00:05
main()
char *p

func(&p);


void func(char **p){

*p = .....

}

これで大丈夫ですか?解説お願いします。
>>434
何が違うのかわからん。
JavaとC++の言語仕様の些細な差をいってる?

どれも、参照という、別のところにある実体を指すものという
概念の範疇から越えていない。
同じ実体を指してることがあるのも、当たり前だと思うが。

>>435
グッドグッド
>>435
何をやりたいのか知らないが、おそらくもっといい方法がほかにある。
>>436
だから、参照という言葉をみんな使ってるけど、
それぞれでその言葉の指している意味が違ってては
議論になんないよ、ってこと。
>>438
通じてるって
>>439
分かってる人には通じる。
しかし、議論してる中にはよく分かってない人もいる。
こういう人たちには通じない。
具体的にどの書き込みが分かってないの?
442デフォルトの名無しさん:03/06/23 00:21
>>435
明らかにコンパイルすら通らないね。
明らかに 〜 すら 〜 ない。

ってなんかおかしくね?
おかしくない。
>444
いや、おかしい(反語)
例えば >>430 は「Cには『参照』がない」と言ってるけど、
この「参照」ってのは何を指してんでしょね。
「他の言語での『参照』と同一の定義を持つ仕様が存在しない」
って、そんなもんは別に珍しくもない話だし、
「他の処理系では処理系が縁の下でやってる」とかも大げさで、
ポインタと「参照」にそんな大袈裟な差はない
(今は「実体の参照」に焦点を置いているので、
 ガベージコレクションの話は置いておく)。

ポインタで十分「参照」の機能を果たせるし、
それを実現するのも非常にたやすい。
これは「『参照』がない」と言えるのだろうか?
その答えは「『参照』の定義による」としか言いようがない。
447430:03/06/23 00:55
>>446
あーまあ、そうね。確かに書いてて「言葉の定義ちゃんとしないで議論にならねえな」と思ってた。
頭にあったのは字面としての参照でしかなかった。

>ポインタで十分「参照」の機能を果たせるし、
>それを実現するのも非常にたやすい。

もちろんその通り。でもあくまでポインタを値渡ししてるに過ぎない、
ともいえるわけで、言葉遊びにしかならんなこれじゃw

というか、それぞれの言語で「ポインタ」だとか「参照」だとかその他様々な概念が、
重なるところも大きいけど微妙にずれてるから、きちんと定義しないと議論にならないね。

Pascalにもポインタはあるけど、Cの意味でのポインタじゃないし、
さらにPascalには参照もあるけどC++の参照とは違うし、
Rubyには参照しかない、とかいってもC++のとは違うし。

この種の定義を厳密にしないと話が全然進まないのは、このスレではできないよなあw
スレ違いになってきたし、この辺で。
ポインタなんて理解しちまえば所詮ただの変数(ポインタ変数)だからな。
ポインタを使わずに書かれた冗長なコードと、
ポインタを使ってすっきりしたコードと、
理解しやすいのがどっちかは明白だと思うが。

…といっても、こないだダブルポインタを使いたい場面があったが、
さすがに気が引けたのでほかの手段を使った。
どうしてもダブルポインタをつかうような場面でもなかったし。
>>448
ポインタは変数とは限らないが?
文字列をコピーするにはどうしたらいいですか?
strcpy
ポインタ=アドレス+型
>>451
危うくケコーンする所ダターヨ
>>449
うーん、じゃあ1行目を読み替えてくれ。
「アドレスなんて理解しちまえばただの値に過ぎないからな。」

…まぁ、言いたい事はわかってくれ。
わからなかったらそれでいい。自分の文才のなさを嘆くだけだから。
ダブルポインタって一般的な用語?
double*のことじゃないよね?
456449:03/06/23 01:25
>>454
まあ、言いたい事は何となくわかってる。
** のことだろうけど、一般的な用語じゃないと思われ。
>>455
一般的な用語かどうかは知らないが、個人的に好きな表現ではないな。
ポインタの中のポインタ
箱の中のちっちゃい箱
マトリョーシカ
ポインタ型変数へのポインタ

  値:ポインタ
変数:ポインタ型変数

とを区別するとこんな感じか。
略してポインポイン
>>463
採用!!
上司「おい!お前なんでここでポインポイン使うんだよ!」
部下「いやですね、それはここで受け取ったポインタの値を変えるので、
   ポインポインじゃないといけないんですよ」
ポインタへのポインタは使いたく無いって香具師に限って
a[b[c[d]]]
のような使い方するんだよな…
>>466
VBでよくやる。そこまで深くないが。
>>466
へーそんなんはじめてみた。
会社で漏れ以外にCやる奴がいないせいか。
469  :03/06/23 04:36
#include<stdio.h>
int main(void){
char input[81];
FILE *FP1,*FP2;
if((FP1=fopen("kazu.txt","r")==NULL)
{
printf("読み込みファイルが開けません。");
return 1;
}
if((FP2=fopen("kazu2.txt","w")==NULL)
{
printf("書き出しファイルが開けません。");
return 1;
}
while(fgets(input,81,FP1)!=NULL)
{
fprintf(FP2,"%s",input);
}
return 0;
}

実行できないんですがどこか変ですかね・・
>>469
「実行できない」とはコンパイルできないって意味か?
二番目のifの括弧がちゃんと閉じてないぞ。
471470:03/06/23 04:40
最初のifもだ。
472 :03/06/23 04:50
>>470できましたーありがとうございます(´∀`)
エラーメッセージを欲嫁。
474470:03/06/23 06:22
たまたま今回は出してきたソースをエディタに貼り付けて整形してみておかしいと思ったのでわかったけど。

「実行できない」だと漠然としてて何ができなかったかわからない。
おれの感覚だと「実行できない」は「実行させてみたけど例外が起きた/core dumpした」って感じだな。
少なくともコンパイルエラーが起きた、という感じがしない。

これは「感じ」の問題なんで議論しても始まらないんだが、質問を書くときは

・何をした(どこで詰まったか)
・期待していたことは何か、どう期待と違っていたか
・エラーメッセージが出ているのならばそれをコピペ(大量に出てるときは無理か…)

くらいは書いて欲しい。なんかついさっきも同じようなことを言った覚えがあるがw

これも以前書いた覚えがあるが、一般的にコンパイル時に文法エラーが出てきたときは、
コンパイラが指摘してきた行の一つ前にエラーがあることが多い(経験則)。
>>474
次スレの >>1 にでも
ある程度書いておくといいかねぇ。
476デフォルトの名無しさん:03/06/23 15:07
初心者で入門書見ながらやってるんですが
携帯のプラン別料金対応表プログラムはどう作れば良いんでしょうか・・?

scanfでやってますが
scanf(%d", &timeA,&timeB);
これじゃだめ?
プラン一個だけはできても他がバグちゃうんだけど
>>476
ここはお前のような低脳がくるとこじゃねえよ。
お前みたいな無能もいらない。
479デフォルトの名無しさん:03/06/23 15:54
scanf("%d %d", &timeA,&timeB);
480デフォルトの名無しさん:03/06/23 16:02
>>457.458.459.460
業界標準はボインボインです。
481mathmania ◆uvIGneQQBs :03/06/23 16:32
#include<stdio.h>
int main(void){
char s[8];
scanf("%s",s);
return 0;}
のコードからできる実行ファイルの入力待ちで
123456789
とかを入力してはいけないといいますが、
scanfで、余分なデータを捨てる、ということはできるんですか?
>>481
単に文字列として受けるのならstdinに対してfgetsを使えばいいんじゃないでしょうか。
>>481
scanf("%7s",s);
484mathmania ◆uvIGneQQBs :03/06/23 16:41
やはり、安定した実行をするにはchar s[256];
ぐらいしかないですか?
485mathmania ◆uvIGneQQBs :03/06/23 16:42
うを、
新着レス取得しそこなった。
Thanks to [483]
>>484
scanfを使わなければいいだろう?
安定した実行を求めるのにscanf使用か・・・
488mathmania ◆uvIGneQQBs :03/06/23 16:44
Re:>486
それもそーだ。
最近 scanf ネタ大杉。
>>488
ところで、"%7s"だと"abc def"と入力した場合、abcしか読み込まれないけどいいの?
491mathmania ◆uvIGneQQBs :03/06/23 16:48
Re:>490
良くないかもしれない。
この場合はgetsかな?
もともとscanf("%s",s)なんだからいいんだろ
C FAQ を書いた人も可哀想だな
scanf と gets は(ry
495490:03/06/23 16:51
>>492
scanfの%sを使うとそうなるけど。という意味でかいたの。
496490:03/06/23 16:51
482で書いたことが無視されているんだけど・・・
scanf("%7[^\n]",s);
498mathmania ◆uvIGneQQBs :03/06/23 16:54
文字リテラル(文字定数に関する質問。
#include<stdio.h>
#include<string.h>
int main(void){
char *s={'a','b','c',0};
*s+=1;
puts(s);
return 0;}
のコードからできる実行ファイルは、正常に実行できますか?
char *s={'a','b','c',0};

これってコンパイル通るの?sが配列でないんだけど・・・・
>>498
その質問の意図はなんだ?
>>498
char *s={'a','b','c',0};

char s[]={'a','b','c',0};
>>501
そうすると今度は配列名に代入しようとしてエラーになるな(笑)
503502:03/06/23 16:59
おっと、間接参照していたか。
504mathmania ◆uvIGneQQBs :03/06/23 17:07
もうひとつ、
#include<stdio.h>
#include<string.h>
int main(void){
char *s="abc";
*s+=1;
puts(s);
return 0;}
からできるプログラムはbbcを出力できますか?
文字列定数を(ry
>>504
処理系によっては出来るかもしれないが、
文字列定数の変更はC言語の仕様で許されていない。
次のネタ質は何かな? o(^-^)o
508mathmania ◆uvIGneQQBs :03/06/23 17:22
#include<stdio.h>
main(void){
char a[]={27,91,33,31,109,61,62,63,27,91,30,109,0};
puts(a);
return 0;}
を、DOS,UNIXで、それぞれコンパイルして、それぞれ実行すると、それぞれどうなりますか?
「常にmemcpyではなくmemmoveを使え。」

基地外かと思った
>>508
コントロールコードが入っているぞ
511mathmania ◆uvIGneQQBs :03/06/23 17:32
[508]の訂正
#include<stdio.h>
main(void){
char a[]={27,91,51,49,109,61,62,63,27,91,48,109,0};
puts(a);
return 0;}
//hexとdecがごっっちゃになってるもので。。。
エスケープシーケンスか。MSDOSではよくやったが
コンソールしだいだろ
ていうか、聞く前に自分でやるとかしないのかね
514mathmania ◆uvIGneQQBs :03/06/23 18:36
大きな整数(符合無し)を使ってプログラムを書いてみたいのですが、
C言語で、
フラグレジスタのキャリーフラグに相当するものってありますか?
515kk:03/06/23 18:41
ほにゃらら。
あるわけがない
517mathmania ◆uvIGneQQBs :03/06/23 18:52
皆さん、どうもありがとう。
それでは、どっかの板で会いましょう。
栗上がりの処理は自分でしろと。
符号なし整数を足し算したときにキャリーがたつかどうかの判定は
こんな感じでできたと思う。
carry = UINT_MAX - a > b;
519518:03/06/23 19:30
逆だ…
× carry = UINT_MAX - a > b;
○ carry = UINT_MAX - a < b;
厨質問でスミマセソ

7bitコードをSJISコードに変換したいのですが
どうすればいいのかがまったくもってチソプソカソプソで
ございます。

ご教授のほど承りたく候。。。
表をつかうなり好きにすれば。
そもそも「7bitコード」ってなによ。
>>522
JISかな。
>>520
そこら辺にあるソフトで一発変換。

というか、そんくらい検索したら分かるのでは?
>>520
テーブル作ってもたかだか256bytesだなw
>>525
間違い
>>526
ダウト! コード示せないくせにシッタカかよ
バイナリが256バイトで済むわけがない
529デフォルトの名無しさん:03/06/24 00:11
そんなに大した質問じゃないんですけど、
皆さんは、hello,worldをコーディングするのに何秒かかりますか?
なんとなく測ってみたら15秒・・・。自身あったのに・・・
188 バイトあれば十分なんじゃないの?
531デフォルトの名無しさん:03/06/24 00:27
cで
                         
g(x,y)=(√f(x,y)-√f(x+1,y+1))二乗 + (√f(x,y+1)-√f(x+1,y+1))二乗

の計算をするにはどうすればいいでしょうか?
さっぱりわかりません
#include <math.h>
double g(double x, double y, double (*f)(double, double))
{
return pow(sqrt(f(x, y)) - sqrt(f(x + 1, y + 1)), 2) + pow(sqrt(f(x, y + 1)) - sqrt(f(x + 1, y + 1)), 2);
}
533デフォルトの名無しさん:03/06/24 00:49
mallocを使うべき場面がいまいち分かりません。
サイズが不確定な文字列を格納するときなんかに使うんですか?
malloc を使わないで、領域を確保する場面の方が稀れ。
数バイトとか数個の配列ぐらいか
文字列とか
線形リストとか
木とか
ハッシュとか、
>>529
口で数えながらやってみたところ22秒
537533:03/06/24 01:09
>>534
ありがとうございます。
mallocを使って領域を確保するのが普通なんですか。
やはりメモリリークを避けるためなんでしょうか?
何にしろ習慣づけて損はない様なので、意識して使う様にします。
538531:03/06/24 01:10
>>532
error:「外部シンボル'_main'が未解決」
ってなっちゃうんですが・・・
>>538
>>532はmainを省略して書いたのかと・・・
>>538
オプション -c を付けてコンパイルする。
-Gとか
>>538
hello world とプロンプトに出力プログラムを書いてから、出直してきて下さい。
543531:03/06/24 01:19
mainをいれると
宣言の構文エラーってなっちゃうんですよ
おまいらは入門以前の奴に冷たいのね。
俺もだが。
>>543
どんな状況なのかさっぱりわからん。
入門以前の人はとりあえず本か HP でも読めや。
ここはそういうの読んでも分からんものを聞くとこや。
547531:03/06/24 01:28

#include <math.h>
main()
double g(double x, double y, double (*f)(double,

double))
{
return pow(sqrt(f(x, y)) - sqrt(f(x + 1, y + 1)), 2) +

pow(sqrt(f(x, y + 1)) - sqrt(f(x + 1, y + 1)), 2);
}

こんなんです
そんな初歩的なことも勉強する気がなく、
しかも丸投げスレがあるというのに探しもせずに、
ただただ自分の為だけにスレを汚す香具師に
親切にする必要はない。
>>547
No!!!!!!!!!!!!


ネタなの?
もしかしてg(x,y)の意味も分かってないんじゃね−の?
551531:03/06/24 01:32
はい なんのこっちゃわからんです
>>531
君にはまだ早すぎるプログラムです。
ネタでないとしたら、一度もCで動く(というかコンパイルできる)プログラムを書いたことないんだろうな。
提示されている式だけじゃプログラム実行できないんだけど
それすら分かってないんだろうな。
名無しさん5!5!!5!!!
556531:03/06/24 01:40
どうすりゃ実行できるんですかね…
>>556
>>532の他にmain()とf(x,y)を用意してmainからg()を呼ぶ。
祭だ祭りだ〜〜〜
>>555
GO!GO!!GO!!!をモジッて5!5!!5!!!って言っているのかと思ったら、
レスの番号の事だったのね。
応援されてるのかと思った。
>>559
両方。
俺自身寒いんだが。。。
561デフォルトの名無しさん:03/06/24 01:50
>>531
g()も、もちろん用意して。
>>531
今すぐ24時間営業の本屋さんへ行って、
買えるだけのCの入門書を買って、
そこに書いてあることを完全に理解して、
それから大きな崖に突き当たること。
Cの勉強以前の問題。
まずは解析学の初歩からじゃねーの?
564531:03/06/24 02:02
やっぱりよくわからないっす
画像処理のフィルタの式だったんですけど・・
ゲーム系専門学校の方でつか?
566531:03/06/24 02:17
いえ ただの情報科の学生っす
>>564
>画像処理のフィルタの式
それならビットマップを用意しないと
俺は>>537が変なことを言っているのをながさない。
569531:03/06/24 02:22
なんか いつも教科書の出版社のホームページからおとしたプログラムを
先生が配った.pgm画像で実習してるんですけど
フィルタだけ変えろとレポートをだされて…さっぱりっていう状況で
こんなとこで聞くより、友達か先生にでもキケ
もう君にはアドバイスできないからageなくていいよ
>>569
> ・・・・・・・・・教科書の出版社のホームページからおとしたプログラムを
> ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
> フィルタだけ変えろ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
573デフォルトの名無しさん:03/06/24 05:33
>>568
たしかに。
574デフォルトの名無しさん:03/06/24 06:01
main関数から呼び出したvoid hoge()の関数内で途中でmainに戻るにはどうしたらいいでしょうか?
returnとか使ってもいいんでしょうか?
>>574
良い。
576574:03/06/24 06:05
朝っぱらからありがとうございました
>>574
一般的にはlongjmp
>>577
妙なこと教えるなw
まあlongjumpは覚えておいて損はないけど。
>>577
longjmpって一般的かい?
setjmp/longjmp はヘルプで見た事あるけど使った事無いな。
どういう時に使うんだ?
例外処理もどき
>>580
Cプログラマは、例外処理を行儀の良いsetjmp/longjmpのようなものだと考えることができるだろう。
プログラミング言語C++第三版より


・・・・だそうだ。行儀の悪い例外処理を記述するのに使えるらしい。
ヌルほど。
>>583
ガッ
そんなつもりはなかったのに ガッ されてもた。
>>580
関数内でBASICのGOSUB・RETURN相当の事をするときに、
配列を使ったスタック+setjump/longjump+マクロでやった事がある。
Cでやる意味はあんまりないな
>>584
それでガッはかわいそうだろw
589デフォルトの名無しさん:03/06/24 13:06
func(){...}

void func(void){...}
であると解釈しても良いのですか?
590デフォルトの名無しさん:03/06/24 13:08
オマエニハAAツキヲクレテヤル
  ( ・∀・)
 と    ) | | ガッ
   Y /ノ  | |
    / ) .人
  _/し' <  >_Λ∩
 (_フ彡 V`Д´)/
            / ←>>588

>>589
だめ
int func(void){...}
591589:03/06/24 13:13
>>590
あ、値を返すんですね、ありがとうございました。
>>590
違う。
int func(...) {...}
だ。
593590:03/06/24 16:12
>>592
確かに呼び出すところより上で定義したらそうなるか・・・
いつもプロトタイプではvoidとし、定義では空にしているから・・・

>>591
というわけで>>592が正解だ。
例えばコマンドライン引数からもらってきた文字列を
グローバル変数としてとっておくとき、その配列は
mallocにしますか?それとも適当に十分大きな
配列を用意しますか?
>>594
グローバル変数を使わない。
使っても、アドレスをポインタ変数に代入するだけで
データのコピーは行わない。
>595 そっかー。ありがとうございます。

それじゃ、ファイルから(.iniとか)文字列を読み込んで
それをいくつかのモジュールで使いたいときは?
グローバル変数にする?main関数のローカル変数にする?

そしてそれは適当に十分な大きさの配列にする?
mallocで確保する?

597デフォルトの名無しさん:03/06/24 21:22
メインルーティンからサブルーティンに引数として(ポインタを)渡す。
>>594
argvを渡すだけで充分。argvの差すものをコピーする必要はない。
599597:03/06/24 21:23
領域確保は場合によってmalloc使ったり使わなかったり
>>596
サイズが判っている場合はmain()のローカルな配列。
そうでなければmain()のローカルなポインタ。
サブルーチンにはそれを渡す。
601594,596:03/06/24 21:37
>598
ありがとう。言われてみればたしかにそうすね。

>600
サイズは不定です。
main()のローカルなポインタを宣言しておいて、
ファイルから読み出すサブルーチンにそのポインタを渡して、
サブルーチン側で mallocする、ということですか?
アホか・・・
603594,596:03/06/24 22:50
アホですみません…
きっとargvもmallocする必要が出てくるぞwwwwwwwwwww
605594,596:03/06/24 23:22
>604
は?氏ねよヴォケ
>>605
まぁまぁ無能なんだからヘコヘコしとけ。
偽者だろうけど
608デフォルトの名無しさん:03/06/24 23:37
scanfで
ユーザーが思わぬ数値、文字列を入れた場合エラーになるよね。
それってどうやったら解消できるんですか?
エラーにはならん
610デフォルトの名無しさん:03/06/24 23:39
え、じゃぁあれはなんなんですか?
611ちよ:03/06/24 23:39
>>610
>ユーザーが思わぬ数値、文字列を入れた場合
scanf()は定型以外の場合は使うな
>>610
前スレとこのスレを全部読め。
scanfはもううんざり。
614デフォルトの名無しさん:03/06/24 23:47
scanfの代わりにfgets
printfの代わりにfprint
>>614
中途半端なネタはヤメレって
616デフォルトの名無しさん:03/06/24 23:51
ねたじゃないもん。
まじれすだよ
ネタじゃないだろ。
stdoutとstderrを使い分けないのか?
>>616&&617
fprint(fは?)
619デフォルトの名無しさん:03/06/25 00:01
#include <stdio.h>
int main(void){
int a,b,c;
printf("y=a*xの値を求めます。aの値を入力してください。\n");
scanf("%d",&a);
for(b=0;b<11;b++){
c=b*a;
printf("yが%2dの時xは%2dです。\n",b,c);
}
}
>>619
printf("yが%2dの時xは%2dです。\n",b,c); //文意からcとbが逆
621デフォルトの名無しさん:03/06/25 00:59
double 型の2次元配列 u0[N0][M0], u1[N1][M1] (N0≠N1, M0≠M1) を宣言した上で、
u[0][n0][m0] = u0[n0][m0], u[1][n1][m1] = u1[n1][m1] となるような
3次元配列 u[][][] を作ることは可能でしょうか?
622デフォルトの名無しさん:03/06/25 01:21
無理じゃない?
623デフォルトの名無しさん:03/06/25 01:38
Visual studio.netのC、C++ で、画像を表示させるプログラムをオリジナルで作らなきゃいけないんですが。
作っていただけますか?

あと、参考プログラムの説明をするために、一行一行説明文を入れなきゃいけないんですよ。
で、それって、どこでお願いすればやっていただけるでしょうか?
昼までなんですけど。。。

どこでお願いしていいのかわからないのでここに書かせていただいたのですが。
>>623
てめぇで作れ。

とりあえずくだ質スレにでもいけ。

***すれ立てるまでもない質問はここで 第39刷***
http://pc2.2ch.net/test/read.cgi/tech/1055864305/

625デフォルトの名無しさん:03/06/25 01:41
>>624
逝ってきます。
>>621
どの様に使いたいかにもよるが、
こんな形で良いのなら、p[][][]として扱える
double p00[5], p01[5] ;
double p10[4], p11[4], p12[4] ;
double p20[4] ;
double *p0[] = { p00, p01 } ;
double *p1[] = { p10, p11, p12 } ;
double *p2[] = { p20 } ;
double **p[] = { p0, p1, p2 } ;
627そんな低レベルな話よりも:03/06/25 01:43
しかしすごいねここ
http://210.136.172.68/cgi-bin/bbs.cgi
Name: strangeworld-honten.com
Address: 210.136.172.68
最近、とある掲示板で、
「初心者はコンピュータの基本的な事項を勉強してから言語を学んで貰いたい」
と言う趣旨の書き込みに、
「そんな事を学んで、どうなるの?」
みたいなレスされてるのを見たんだげど、
最近のヤシって、CPUがプログラムをどう読み込んで実行するか、
と言う事すら調べないの?
それに気を使わなくてもいいように高級言語があるんだけど

「気を使わなくてもいい」のと「知らなくてもいい」のはちがうんだけどね

ドライバーは車の仕組みがブラックボックスでも構わないけど
エンジニアが知らないのは致命的なのは車もコンピュータも同じ
そんなものは金属線をどうエネルギーが伝播するか学ばないと
データストリームは理解できないというようなアホな話だ
計算機利用者は必要がなければそれが歯車式計算機で実行されるか
未来の化学式コンピュータで実行されるかなど知らなくてよい
でもCやるなら、
実行モジュールがメモリにロードされて実行されるあたりのことをちょっとしらないと
動的リンクとかしてコアはいたりしたときわかんなくなるんじゃないかな
知るべきことはあるだろ。

まぁCPUの本当の動きを思い描いている香具師なんてそうはいないだろ。
十年以上も前のCPUをモデル化して、なんとなく理解の助けにしているだけ。

仮想メモリがどう動いているかなんていうのは、多くのプログラマにとっては無用な知識。
でも変数やデータが、メモリ空間上にどういう規則でおかれるかというのは知るべきこと。
>実行モジュールがメモリにロードされて実行されるあたり
それはOSの仕事の話

>変数やデータが、メモリ空間上にどういう規則でおかれる
それはプログラミング言語で規定されている話


>>632-633でも分かる様にハードウェアの知識など必要ないということだ
そんなこといったら>>629だってハードなんて一言も言ってないよ。
636629:03/06/25 02:35
オレは概略位は知っておくべきかと思う。
やたら細かい所までは知らなくても、おおよそのイメージが出来るか、出来ないかは、
多少なりともプログラム言語の理解に差があると思う。
メモリ空間の表現は言語だけで決まるものじゃないだろ。
>>635
「CPUが」と言っているだろう「CPUが」と。
CPUがデータ要求して命令をフェッチして…、
はまさにCPU設計の話だ

>>637
仕様書を見てみな。その起源が既存のハードウェアに
依存しているかに関らず、細かく言語で規定しているから
誰がハードの話なんかしてるんだよ。そんな事いったら原子の話になっちゃうだろ
アホか?
メモリとディスクではアクセス速度に大きな違いがあるなんていうのはハードに起因する基礎知識で
プログラマが知っておくべきことじゃないか?
非常に重い処理を作る時は結構そういう知識が役に立つ。
>>640
ディスクもメモリだがな。
なぜ違いがあるかなど知る必要はないだろ、問題はデバイスによって
違うということだけだ。そしてその違いは必ずしも
ハードウェアだけの問題ではない。
バグった時、パフォーマンスが気になる時、組み込みの仕事が来た時
などなど役に立つ
というか必須
ま、この場合ポインタや配列のことを言いたいんだろうな。
メモリ空間というものを意識して理解いていけと。
>>643
それはハードウェアにも関る場合が多いだろうが
今回の話とは関係ない。
そんなことよりscanfの話しようぜ
>>646
便利だよな。このスレには毛嫌いしている粘着がいるが
どんどん使おうぜ。どうせ今やちょっとした物はGUIなんだ。
心得てない奴らの想定外の使用など気にすることはないぜ
そんなことよりバッファオーバーフローの話しようぜ
それよりはスタックオーバーフローの方が
そんなことよりfree()の話しようぜ
free(NULLPO);
くだらない保護機能があるCPUには困ったもんだぜ
周りを侵略するのは男の本懐だからな。
どんどんオーバーフローしようぜ
そんなことよりぬるぽの話を
654ガッ>>651:03/06/25 03:06
 
>>653
その話はマ板で思う存分して下さい
656デフォルトの名無しさん:03/06/25 05:27
GoogleでC言語関係を検索すると出てくる広告(サイト)どう思う?
http://rec.ncos.co.jp/
657_:03/06/25 05:51
>>656の解説のページ

このデカ文字とブリンク、どこかでみたことがあるぞ。おいおいとつっこみたくなるような内容が多かったような・・・・
659デフォルトの名無しさん:03/06/25 07:55
Linux(レッドハット)のファイル構造体のメンバおしえてくれませんか?
stdio.hに書いてないもんで・・・
>>659
FILE使ったソースコードをcppすればわかる
>>659
FILEのメンバーを知りたい時ってどんな時だ!?
ファイルディスクリプタを得たいならfilenoを使え(もちろん標準関数ではない)。
>>658
fjの嫌われ者の田部のページだね。
663621:03/06/25 10:25
>>626
ありがとうございます。
今回は行列のサイズがp0[30][75], p1[20][50] のサイズなので、
forループとnewかvectorクラス使います (C++コンパイラ使用)
664デフォルトの名無しさん:03/06/25 11:49
#include <stdio.h>
#include "CScreen.h"
CScreen scr;
void main(void)
{
int ten[7][7];
char name[6][7];
printf("1人目の氏名入れて(7文字以内)");
LOCATE(2,6);
rewind(stdin);
scanf("%s",name[0]);
LOCATE(20,20);
printf("%sさんの国語の点入れて     ",name[0]);
LOCATE(17,6);
scanf("%d",&ten[0][0]);
/*省略させてもらいます*/
LOCATE(20,20);
printf("2人目の氏名入れて(7文字以内)");
LOCATE(2,8);
rewind(stdin);
scanf("%s",name[1]);
/*省略させてもらいます*/
プログラム自体はできてるんですが質問があります。
char name[6][7];
の宣言はnameという変数名の箱を6個で、1箱7文字まで入るという意味で合ってるんでしょうか?
scanf("%s",name[0]);
で7文字以上打ってもname[0]には7文字しかはいらないから
printf("%sさんの国語の点入れて     ",name[0]);
では7文字までしか出力されないはずだと思うのですが
8文字以上出力されてしまいます。
なぜでしょうか?
> の宣言はnameという変数名の箱を6個で、1箱7文字まで入るという意味で合ってるんでしょうか?
違います、7文字(6文字+NULL終端)までしか入れちゃダメ、という意味
666664:03/06/25 12:08
??とりあえずおちつけ、オレ。
ではchar name[6][7]; の[7]は本当はそれ以上も入ってしまうって
ことですか?
     /\⌒ヽペタン
   /  /⌒)ノ ペタン 慌てるな
  ∧_∧ \ ((    
 <; `щ´>∧_∧
 /  ⌒ノ(・ω・ ;)⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;)(_(
入りません、入れちゃダメ
でもその管理はコンパイラはしてくれません、
プルグラマが責任持て
668664:03/06/25 12:18
わかりました

∧_∧
( ´・ω・) みなさん、お茶が入りましたよ・・・・。
( つ旦O
と_)_) 旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦
scanf()の使用をやめ、
入力をfgets()で行い文字数制限はsscanf()(或いはsprintf())で行えばよい。
#勿論、fgets()でも文字数制限はできるが。
670デフォルトの名無しさん:03/06/25 14:57
4バイト以上の入力を制限するなら
fget(hoge, 3, stdin);
って感じですか?
671デフォルトの名無しさん:03/06/25 14:58
>fget(hoge, 3, stdin);
じゃなくて

fgets(hoge, 3, stdin);
でした・・・
672デフォルトの名無しさん:03/06/25 14:58
fgetってなに
673デフォルトの名無しさん:03/06/25 14:59
遅かった。ち。
>>670
馬鹿か?
675670:03/06/25 15:18
>>674
どこかおかしいですか?
>>670の場合、制限というよりは無視といったほうがいいですね。
おかしくないと思うが?
改行とヌル文字の2バイトを余分に加えるべし。
>>677
改行?
fgets(hoge, n, stdin);

でn-1の長さの(\0を除く)文字列を取り入れるんじゃなかった?
だとしたら…
合ってるのでは
fgets()で制限すると、残りを読み捨てる為にもう一度fgets()を呼ぶ羽目になる。
それくらいなら、1行を安全に確保するようにして、残りを文字列処理すればいい。

つーところかな。

まぁ、>677は恥を晒したわけだが。
fgets は改行も格納するわけだが。
まぁ、それよりも余分に読み込んだ方がいいわけだが。
「わけだが」うざい
改行格納したとしてもn-1の長さに収まるからね…
>>682
ウソツキ
fgetsの第二引数は最低でも1024U。これ常識。
char *
fgets(char *str, int size, FILE *stream);

The fgets() function reads at most one less than the number of characters
specified by size from the given stream and stores them in the string
str. Reading stops when a newline character is found, at end-of-file or
error. The newline, if any, is retained. If any characters are read and
there is no error, a `0' character is appended to end the string.
688686:03/06/25 18:54
intだったか・・・・size_tだとばかり・・・・
そうか。0渡すと面倒なことになるんだ。
じゃあ1024
>>682
改行を格納するのは、ファイルから読み込んだ時だよ。
標準入力の時は、改行は格納しない。
>>689
そんなことないYO (^_^;)
改行を格納しないのはgets
>>689
#include <stdio.h>
int main()
{
 char buf[1024];
 fgets(buf, sizeof buf, stdin);
 printf("[%s]\n", buf);
 return 0;
}



123
[123
]

となるのだが。
>>689
標準入力もファイルも同じファイルストリーム
fseekでファイルポジションを戻した後、
fwriteで書き込むと、そこにあったものが上書きされます。
これを上書きではなくて、挿入にするにはどうすればいいでしょうか。
>>693
挿入したい部分より後ろをメモリに読み込む。
挿入したいデータを書き込む。
その後ろに先ほどメモリに読み込んだものを書き込む。
ポインタ変数に、指定したアドレス値を入れることってできますか?
もしできるなら、どうかその方法をお教えください
>>695
何を言っているんだろう・・・・
定数を入れたいのか?
int *p=(int *)0x015689EF;
0以外はこんな風にすればできると思うけど。
697693:03/06/25 20:56
>>694
ありがとうございます。
giko();

int giko(void);
とか言ってるヴァカがいるスレはここですか?
どのレスに対していってんのかわかんね
宣言と定義の区別も付かないヴァカがいるスレはここですか?
>>698
ちがうの?
しかも関数プロトタイプだと
extern giko();
じゃないと警告されるような。
C言語のみOS依存なしで、擬似スレッドを実現することって可能でしょうか?
たとえば、

void a()
{
while(1) { printf("a"); SwitchThread(); }
}
void b()
{
while(1) { printf("b"); SwitchThread(); }
}
void main()
{
MakeThread(&a);
MakeThread(&b);
while(1) SwitchThread();
}

があったとして、それぞれSwitchThread()で
実行が切り替わるようなことをしたいのですが、
SwitchThread()をどう作ればいいのやら…
そういうのは、setjmp,longjmpで実装するのが相場。
たしかRubyはそうだったような
>>704-705
ありがとうございます。
setjmpの勉強してきます。
FILE
マクロでもないのに全て大文字にした理由が分からない
構造体が
struct list { char data ; struct list *nextptr ; } ;
と宣言されていて
struct list *p = NULL ;
とした状態だと
p->nextptr
これもNULLポインタになるんでしょうか?
709デフォルトの名無しさん:03/06/26 11:38
>>708
pはNULL
それを->を使って参照してはいけないYO!
710デフォルトの名無しさん:03/06/26 14:36
>>708
やってみてよ。
p->nextptr ←オブジェクトもないのにどこをさしてんの?ってこと。
実行すると見つけることが出来ずエラーを起こす。
  ∧_∧
 ( ´∀`)<ぬるぽ
  ∧_∧
 ( ´∀`)< ガッ
713デフォルトの名無しさん:03/06/26 16:45
インラインアセンブラの話なんですが.
Cのある関数からインラインアセンブラのラベルにジャンプするにはどうすればいいのでしょうか?
以下のような場合です.
asm("
MYLABEL:
movl ...(ここでの処理)
");

int main(){
...
//ここからジャンプしたい
}

アセンブラはgasです.
ちなみにmain内に以下のように記述してもダメでした.
asm(
"movl %0 %%eax\n"
"jmp %%eax\n"
:: "g"((void *)MYLABEL)
: "ax"
);
MYLABELが未定義である,というエラーが出ます.
どうやら同じasm("");内のラベルしか参照できないようです.
どなたかご教授お願いします.
>>713
>>1 GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!
715_:03/06/26 16:51
>>713
ソースの構造がよく分からないがBcc32では下は通る

#pragma inline
int main(){
asm{
xor ax,ax;
label1:xor bx,bx;
}
goto label1;
return 0;
}
717デフォルトの名無しさん:03/06/26 17:10
>>716
ありがとうございます.
通るのはラベルが同じmain()内にあるからではないでしょうか.
とりあえずやりたいことは,
ある関数から外部にある(関数内ではない)インラインアセンブラのコードにジャンプする
ことです.
どうにも必要な構造なのか、関数化する事はできんのか
>>717
外部にあるインラインアセンブラという意味が分からない
インラインアセンブラなのだから何かの関数に
埋め込まれているのではないのか?
720sage:03/06/26 17:19
>>718
スタックフレームを変化させずに呼び出したいのです.
sage間違えました・・

>>719
inlineというのはCの関数内に記述するからそう呼ばれるのではないのですか?
それともインラインアセンブラは必ずどこかの関数内に記述しなければならないのでしょうか?
>>719
それはアセンブラに展開してから埋め込みでもしないと無理じゃないか?
別の位置に記述したいというだけならばdefineマクロが使えるか知らん

>>721
「Cの関数内に記述」と「どこかの関数内に記述」は同じかと。
ファイル内ということならそもそもコード以外のところは無理だろう
スレ違いな質問に対しても親切ですね。
ビット処理って、具体的にどんな用途があるんですか?
>>713
素直に
__asm__("jmpl MYLABEL");
で通らないかい?
726デフォルトの名無しさん:03/06/26 18:09
画面中央に■を表示して、
Yを押したら上に、Gを押したら左に、Hを押したら右に、
Bを押したら下に1マス分移動するプログラムを作りたいんですが、
アルゴリズムはどうしたらいいでしょうか?
思いつかないのでヒントお願します。
727デフォルトの名無しさん:03/06/26 18:10
>>726
アルゴリズムなら726が答えだと思うけど。
728デフォルトの名無しさん:03/06/26 18:13
いや、もっと詳しく考えてみたいんです。
一度消してから空白を入れたりバックスペース、改行などを
駆使したらできますか?
729デフォルトの名無しさん:03/06/26 18:16
>>724
集合として使える。
>>728
プラットフォームによるだろう
>>729
ぐ、具体例をなにか挙げてくれたら嬉しいです。
>>731
そのまえによ、適したスレにいけや。
>>731
たとえばコンフィグ画面などで、項目のON/OFFをチェックする際に
項目の数だけフラグ変数を用意するよりも、変数を1つだけ用意して
各ビットのON/OFFで判定できたら、嬉しくないですか?俺は嬉しい。
全てONなら ~0、全てOFFなら 0 を代入するだけで済んでしまう所も
嬉しい。
>>733
つまんねんぇことで嬉しがれるんだな。
735724:03/06/26 19:27
>>733
すいません。ありがとうございます。
大人には嬉しいという感情がないんだよね。
737デフォルトの名無しさん:03/06/26 20:23
#include <stdio.h>

void main(){

int a,i;

a = 500000;

for( i=1 ; i=24 ; i++ ){
a = a*1.1;
}

}


コンパイルすると
おそらく不正な代入、'i'に代入した値は使われていない とエラーが出ます
どこに問題があるのでしょうか?
時間経つとやる気が萎えるので早めにレスくれたらありがたいっす
i=24
>>737
for( i=1 ; i=24 ←ここ ; i++ ){
740737:03/06/26 20:30
あぁ・・そっか・・・おれってほんとばかだな・・・
そこ実行する条件でしたね・・・よく終了する条件と勘違いしてしまいます
鬱堕詩嚢

レスサンクスでした
>>740
なんにも分かっていない
=は代入
742740:03/06/26 20:39
>>741 それは知ってますよ
分かっていたらなんで>>740のような発言ができるんだ・・・
i=24なんてやったら無限ループだ
== が比較だ
745740:03/06/26 20:50
いまいちわからんけどおれがアフォなんか・・・
出直してきます
746デフォルトの名無しさん:03/06/26 21:01
C言語でビット処理は具体的にどのような用途があるのですか?
748デフォルトの名無しさん:03/06/26 21:17
>>737
Cのint型は2バイトじゃなかったけ?確か6万5千・・・しか入らないよ!
C++のint型はCPUのビット数になる
javaのint型は4バイトです。
749デフォルトの名無しさん:03/06/26 21:18
>>726
簡単だよ
>>748
初耳です
>>748
釣りか?
それとも、釣りか?
752デフォルトの名無しさん:03/06/26 21:24
>>746
画像データのRGB 2の8乗255階乗の下位8ビットに文字情報を埋め込んだり、
通信データの各OSI参照層のビット操作など色々・・・
>>748
754デフォルトの名無しさん:03/06/26 21:50
>>747&748&752
激しくdクス
755748:03/06/26 21:58
>>754
Cのint型は2または4バイトであると定義されてる。お前の環境では4バイト
かも知れないが、顧客では古いマシンを使ってるところがあるので、2バイト
で使うんだよ!
常識だろ!!!
なるほど
757デフォルトの名無しさん:03/06/26 22:00
>>754
747,752と748はレスした相手が違うんだが
758デフォルトの名無しさん:03/06/26 22:01
>>755
どこで定義されているんだよ(;´Д`)
>>758
釣られんなよ、だっせー
760デフォルトの名無しさん:03/06/26 22:05
>>755
お前は世界観がとてつもなく狭い
761667:03/06/26 22:06
>>753
エネル!
762デフォルトの名無しさん:03/06/26 22:08
ANSI Cに決まってんだろ!
関数辞典の一番初めでも見てみろ!
>>760
貴様、神に向かって世界観が狭いとは無礼にもほどがあるぞ
764デフォルトの名無しさん:03/06/26 22:15
intは4バイトと決めうちしてよい。
765デフォルトの名無しさん:03/06/26 22:18
intは割り込みだと思っておいたほうがよい
米国の標準化団体の規格票が手元にないくせにANSI, ANSIとしきりに喚くドアフォは痛杉
つーか、原文読めない奴に限って(以下略)。
正直にJISと言えないクソばかり
769デフォルトの名無しさん:03/06/26 23:08
画面中央に■を表示して、
Yを押したら上に、Gを押したら左に、Hを押したら右に、
Bを押したら下に1マス分移動するプログラムを作ってください。
できたら漏れの次に天才。
明日の夜に回答を出します。
int のサイズは実行環境の構造に適した自然な大きさである、と定義されている。
具体的なサイズまでは規定されていない。
771769:03/06/26 23:09
この課題はどこかにあったけど、漏れには分かった。
ふん、俺しか分からないだろう
main()
{
int a[2];
int *p, *tmp;

p = &a[0];
tmp = p;

*p = 10;
p++;
*p = 20;

p = tmp;

printf("%d, %d\n", *p, *(p++));

}

これを実行すると、10, 20 とでると思ったのに、20,10とでちまいまつ。
なんででしょうか?
関数の引数がどの順番で(ryってやつか?
仮引数の評価順は不定だからね。
それに後置インクリメントじゃますます意味がない。
printf("%d, %d\n", *p, *(p+1));
>>774
仮じゃなくて実(;´Д`)
776デフォルトの名無しさん:03/06/26 23:32
漏れの環境では10,10になった
printf("%d, %d\n", p[0], p[1]);
>>775
すまそ逆に言ってしもた。
Cのint型は2バイトじゃなかったけ?確か6万5千・・・しか入らないよ!
C++のint型はCPUのビット数になる
javaのint型は4バイトです。
780デフォルトの名無しさん:03/06/27 00:09
Cは何系ですか?
>779
2カイメダヨ( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
intは最低でも64ビット
int のサイズは実行環境の構造に適した自然な大きさである、と定義されている。
具体的なサイズまでは規定されていない。
Tintin のサイズは実行環境の構造に適した自然な大きさである、と定義されている。
具体的なサイズまでは規定されていない。
渋谷系
すくなくともshortとintは16ビット

From K&R
いつの時代の話やら。
おっと、K&Rの時代か。
時代は関係ないだろ
あほ?
もまえら何回ループしてるんだよ
>>789

while( 1 )
{
  /* 処理 */
}

とかなってたりして(w
791デフォルトの名無しさん:03/06/27 03:11
char *a;
int b;
a = malloc(1);
b = strlen(a);
とした時にbが5となるのはなぜでしょうか?
絶対にaの長さ+4になるのですが意味が分かりません
どなたか分かる方いらっしゃいませんでしょうか?
>>791
aに無いも代入してないからたまたま6バイト目に'\0'があったんだろ
>>791
絶対になるとは限りませんよ。
まずstrlenが何をする関数か知ってますか?
与えられたポインタから'\0'が出てくるまでのバイト数を返す関数です。
そして、mallocで確保した領域には何が書かれているかわかりません。
あなたが5というのが出てきたというのはaが指す先から6文字目に'\0'があったのでしょう。
無論mallocで確保した領域を越えた不正アクセスになってます。
794デフォルトの名無しさん:03/06/27 03:21
単純にバグ
プログラマじゃないが、訳わからん納期持って来たやつ。
(((( ;゚Д゚))) ガクガクブルブル
796デフォルトの名無しさん:03/06/27 03:56
誤爆スマ・・ソ
>>791
callocを使えば長さは0になるよ
798デフォルトの名無しさん:03/06/27 12:28
 _, ._
(・∀・) ファイルが開けないんです
>>798
で?
 _, ._
(・∀・)チャックが開かないんです
801デフォルトの名無しさん:03/06/27 15:16
一通りK&Rを読み終えたら、なにを作ったら勉強になりますか?
どっかで、自分でコンパイラを組めば勉強になると聞きました。
>>801=神?
一通りK&Rを読み終わった程度の人に
コンパイラを組めば勉強になると言った人もアレだが、
それを信用する人もアレだぞ。

何か自分の作りたいものを作れば良い。
何かのツールでもいいし、ゲームでもいいし。
そうやっていろいろやってれば、自然と勉強になる。
>>801
ソフトウェア作法
805デフォルトの名無しさん:03/06/27 15:52
int x[3][2] = {{1,2},{3,4},{5,6},};
const int (*xp)[2] = x; // 警告
const int (*x_p)[3][2] = &x; // 警告
// typedef int int_pair_by_int_array[2];
int_pair_by_int_array a[3] = {{1,2},{3,4},{5,6},};
const int_pair_by_int_array *ap = a; // 警告
const int_pair_by_int_array (*a_p)[3] = &a; // 警告
// typedef struct { int a, b; } int_pair_by_struct;
int_pair_by_struct b[3] = {{1,2},{3,4},{5,6},};
const int_pair_by_struct *bp = b; // OK ←どうしてこいつだけOK?(MinGW環境でつ)
const int_pair_by_struct (*b_p)[3] = &b; // 警告
806デフォルトの名無しさん:03/06/27 15:57
_bool, BOOL, Bool どれが正しいの?
>>803
そか?
コンパイラやインタプリタはすごい勉強になるよ。
>>807
物事には段階というものが...。
>>805
> int x[3][2] = {{1,2},{3,4},{5,6},};
> const int (*xp)[2] = x; // 警告
C ではこういう時にはキャストが必要になる。
C++ だといらないんだけどね。
>>808
べつに市販品なみの物を作るってわけじゃないし、
小さいものなら数百行程度でできるから、ちょうどいい教材だと
おもうけど。
Basicインタプリタなんて、32kbもあれば動いてたわけだしな
812805:03/06/27 17:59
>>809
Cの仕様でつか。。ありがd
813デフォルトの名無しさん:03/06/27 18:19
>>809
そんな書き方する人いるの?
見にくいよ!
814デフォルトの名無しさん:03/06/27 18:20
>>805
int x[3][2] = {{1,2},{3,4},{5,6},};
const int (*xp)[2] = x;

なんでこれで警告がでるんだろう・・・・
VC++6.0ではxpを使いさえすれば警告はでないよ(/W4つきで)
815814:03/06/27 18:22
xを操作すればxpが指す先のものが変わる場合があるからか?
816ひよこ名無しさん ◆YFbiU3aPps :03/06/27 18:35
質問:

注釈文にすることを「コメントアウト(comment out)」って言いますよね。
じゃあ、逆にコメントから外すことは何て言うんですか?
817デフォルトの名無しさん:03/06/27 18:37
>>816
復活
818デフォルトの名無しさん:03/06/27 18:52
ベホイミ
警告の内容は?
820r:03/06/27 19:20
"コメントアウトしてたの元に戻す"
821デフォルトの名無しさん:03/06/27 19:26
コメントイン
822デフォルトの名無しさん:03/06/27 19:29
http://www.edu.tuis.ac.jp/~susaki/c/
演習問題あるよん
823ヽ(´ー`)ノ:03/06/27 19:41
コメントを外す。

てか C に関k(略
>>822
> printf("差 = %lf\n", a-b);

なんだよこれ(´Д`;)
printfに%lfなんてねーよ(´Д`;)
825824:03/06/27 19:58
%lfはないというのは間違いかも。
doubleに%lfは不適切
826824:03/06/27 20:00
やっぱり%lfはないな。long doubleは%Lf
>>825
規格には%lfというのはないだろう。

printfのプロトタイプはint printf(const char *, ...);だから、
floatは格上げされてprintfにdoubleが渡る。

もしもlong doubleなんてものがある処理系だったら、
%lfとかいうものがあるかもしらんね。
>>827
long doubleはANSI CにあるYO!
で、それは%Lf
>>816 (コメントアウトの逆)
uncommentかもしんない
ちなみに、"opposite of comment out"で探してみた
830デフォルトの名無しさん:03/06/27 20:48
return 0;
をちゃんと書いたほうがいいといわれ、
書いてるんですが、いつも未定義のシノルと出ます。
Why?
831830@バカ:03/06/27 20:48
シノル→シンボル
>>830
未定義のシンボルって多分リンク時のエラー。
return 0;は関係ないと思う。
833デフォルトの名無しさん:03/06/27 21:12
>>806
C99 のことなら、
× _bool
× BOOL
× Bool
◯ _Bool

typedef なら全部可。
834名無し@沢村:03/06/27 21:27
>>1
「C言語ならおれに聞け」って、C言語についてわからないことがあって質問するとう行為がおれには理解できんね。
例えば量子の動きがわからないとかDNAの構造がわからないとか言うんだったらわかるよ。
それらは自然がつくったもので、これから人間が解明していくものだからね。
しかしC言語は人間がつくったもので、それは公知のものだから、それが100%理解できんということは、おかしいだろうが!?えっ!?おまいらよ!?
> 量子の動き
ワロタ
>>834
あたまわるいなー
>>837
「C言語」を「数学」に置き換えて読んでみたらどれだけナンセンスかわかるわなw
数学は純粋に人間の頭だけの人工的な世界なのに、未解決の難問がいくらでもある。
別に連続体仮説とかそういうの持ち出さなくても数学が理解できないとか苦手という人は山ほどいる。

あ、別におきかえんでもナンセンスさはわかるか。
おれは冗談だと思って読んだけどw
>>830
retrun 0; とか書いてるに1票。
>>839
それだとsyntax errorだろう。未定義のシンボルになるには、
retrun(0);
などと書いてるんじゃないかな。
>>840
それだな。
C++ならエラーになるんだろう(宣言無しの呼び出しで)が、Cだと宣言は必須じゃないしな・・・
出戻で格好つけるのはオジン臭い
今どきオジンなんていわんよ
>>838
数学は自然科学ですよ
あんな不自然なものはないと思うけどな・・・
>>844
科学じゃなくて、それを記述するための道具だろ?
847デフォルトの名無しさん:03/06/27 23:27
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=3

このソースからいらないところを切り取って、
「縦横にキー入力で移動するプログラムを作れ」といわれたのですが、
よく分かりません。簡単に説明してもらえないでしょうか。
このソースの動きについてもお願します。
>>847
char panel[Y][X*MOJI]={のYとX*MOJI
849デフォルトの名無しさん:03/06/27 23:31
私は数学は発端となった代数学や幾何学以来
つねに自然科学の最も抽象化された分野であると思う
その成果が余りにも生活感覚から離れているために
それを忘れがちなだけなのではないか?
いい加減、スレ違い板違いな半端知識披露ヤメイ
>>847
Tabなら移動って書いてあるから、その代わりに複数のキーを割り当てて縦横に動けるようにすればいいんじゃないの。
852デフォルトの名無しさん:03/06/27 23:34
実行すると表示される
A[ ] B[ ] C[ ]
D[ ] E[ ] F[ ]
も削除するにはどのようにしたら良いでしょうか
853852:03/06/27 23:36
全体的なプログラムがあまりよく分からないので、
カーソルが縦横に動く原理だけでも今理解したいのです。
854848@あほ:03/06/27 23:38
X*MOJIは必要だろ・・・
初歩の初歩だ。
>>853
本当はスレ違いだけど・・・まあいいか。
http://www.gaia.h.kyoto-u.ac.jp/users/izui/technotes/escape.html
856852:03/06/27 23:48
>>855
すみませんでした。
どうもありがとうございます。
move()の中でx,yの値をいじっている。
これをベースにup()、down()、right()、left()
という関数をつくればいい。
>>834
量子もDNAも数学も人間が勝手に作った概念だよ
おまえさん、自然と人工の境がまるで解ってないな
つーか、沢村なんかの相手すんなよ
860858:03/06/28 00:08
>>859
だな
861デフォルトの名無しさん:03/06/28 00:27
上のリンク逝ってみたが、
何がなんだか俺には分からん。
ESC[pl;pcHってどうやって記述すんだYO!
少なくとも>>852には理解できないだろう。
どうすんだこのやろ
>>861
printf("\033[1;1H");
863デフォルトの名無しさん:03/06/28 00:34
\033の意味は?
覚えないといかんのか?
>>863
ASCIIでESCは27 それを8進数にすると33
だから\033
865デフォルトの名無しさん:03/06/28 00:36
Cの標準ライブラリに付属の
sin(),cos(),tan()
と同じ関数を1から作りたいのですが
何処かに、詳しいコメント付きソースは無いですか?
知ってる方は教えて下さい
テーブル作って終了
867853:03/06/28 00:47
#include <stdio.h>
int main(void){
char a;
int b,c;
b=1,c=1;
a=getchar();
if('a'=='y'){
c++;
printf("\033[b;cH");
}
}
わけわかんなくなってしまいました。
多分、180度逆の方向に・・・。
思いっきり叩いてください。
868865:03/06/28 00:48
>>866
マジレスを希望してます
>>865
glibcなり、FreeBSDのソース見れ
>>867
もしかしてbやcが展開されると思った?
そういうときはprintf("\033[%d;%dH",b,c);とする。
エスケープシーケンスに触れた事ないヤシも居るのか…。
時代の差かなぁ〜…。
>>869
コメントって付いてます?
873853:03/06/28 00:56
>>870
そうだったんですか。
気を付けます。
でも、まだ間違いがてんこもりの予感
>>872
EnglishなCommentがたーくさん
>>874
実際のソースが見つからないんですけど、
どのソースのアーカイブに含まれてるんでしょうか?
876保守:03/06/28 01:07
 
>>875
sin.cをfindして出てこない?
VC++にもその名前ではないんだよね・・・
878867:03/06/28 01:13
どなたか、>>867の間違いを教えていただけないでしょうか?
それを参考にしたいのですが。
自分が至らないばかりに・・・。
すみません。叩きまくってください。
879877:03/06/28 01:16
ないね・・・
ファイル名がわからん。ないはずないと思うんだけど。

>>878
> if('a'=='y'){
>>870
880865:03/06/28 01:16
>>877
cygwinのソースから探してるんですけど
それぞれの関数の本体らしきソースは出て来ません
と言う訳で、どのソースにsin()等の本体があるか知ってる方は教えて下さい
881877:03/06/28 01:17
int a
中略
if(a=='y'){
エスケープシーケンス懐かすぅぃ。

>>865
ftp://ftp.matsusaka-u.ac.jp/pub/algorithms/src/trig.c
883877:03/06/28 01:17
セミコロン忘れた

>>880
ちなみに俺は869じゃないから。
>>878
とりあえず、エスケープシーケンスでググッてみ。
885865:03/06/28 01:24
cygwinの違うアーカイブで見つかりました
じっくり、ソースを読んでみます
886867:03/06/28 01:25
#include <stdio.h>
int main(void){
char a;
int b,c;
b=1,c=1;
a=getchar();
if(a=='y'){
c++;
printf("\033[%d;%dH",b,c);
}
}
どうもです。あれからちょっと変えてみたんですが、全く
実行されません。ヽ(`Д´)ノ
887867:03/06/28 01:28
自分はセンスないなぁ。
こんなにアドバイスもらってるのに・・・鬱。
がんがろ
>>886
ちゃんとエスケープシーケンスをサポートするコンソールで実行しているか?
>886
実行すると即終了してるということ?
ループ回さないと。

でないならどこでどう動かないか明記して。
ttp://bbs.gamdev.org/test/read.cgi/gamedev/1055402150/18
890デフォルトの名無しさん:03/06/28 01:41
ファイル入出力で
ioctl関数を使用してカーネルバッファリングの
バッファサイズを強制的に0にして
ファイル入出力の時間を計測せよ.

カーネルバッファリングのバッファサイズを0にするために,
ioctl関数をどのように使用すればいいですか?
>>890
とりあえず所定の環境のスレで聞くことじゃな。
>>886
>>888か、結果が目に見えていないだけのような・・・
893デフォルトの名無しさん:03/06/28 02:07
>>891
ここがいいとおもったんですが,
どの板ですか?
>>893
板はここでいいが、スレは適切でない。
もしUNIXならUNIXプログラミングスレへ。かなり雰囲気悪いけど。
>>893
ラ板
>>886
b と c をもうちっと大きな値にして、
その後に何か表示してみるといいかと。
int a = 0, b = 0;
は良くても
int a = b = 0;
は良くないと聞いたのですが、
どこが問題なのでしょうか?
>>897
bが未定義

初期化の=と代入の=は違うよ。
int b;
int a=b=0;

これならOK
900897:03/06/28 02:52
なるほど。
サンクスです。
int a, b;
a = b = 0;

普通こうする
>>901
そういえば最近、そういう書き方してないな。
a = 0;
b = 0;
こうやって、必ず分けて代入してる。
int a;
memset(&a,0,sizeof(int));
int a;
a-=a;
int a;
a ^= a;
int a;
a %= a;
int a;
a&=0;
int a;
a=strlen("");
int a;
a = atoi("0");
int a;
a="910get"[6];
int a;
a = !1;
>>902
とか言いながらfor(a = 0, b = 0;なんちゃってな
int a;
a = &a - &a;
int a;
a='-'-'-';
int a;
a = 3["915"];
int a;
a=a>a;
int a;
a=stderr-stdin>>stdout-stdin>>stderr-stdout;
int a;
a=(int)fopen("*.*","w");
int a 0;
int a;
a=~((unsigned)-1>>1)-INT_MIN;
int a;
a=printf("");
>>865
マクローリンの定理でも使っとけ
>>918
おいおい、それでファイルが作れちゃうOSもあるぞ。
>>919
それ、コンパイル通る?
エスケープシーケンスに対応したコンパイラってどんなのが
ありますか?教えて下さい。
↑のコードを実行してみたいので
926925:03/06/28 14:57
しまった。さげてしまいました
>>925
エスケープシーケンスは実行環境依存。
コンパイラの問題じゃないのでスレ違い。
928925:03/06/28 15:29
環境依存っすか?
WinXPでBCC55使ってるんですが、
無理ですた。
>>925
windows2000/xpのコンソールでは、
エスケープシーケンスは使えないみたい。
APIを使うしかないね。
930925:03/06/28 15:36
APIですか。
#include <stdio.h>
int main(void){

int a,b,c;
b=1,c=1;
a=getchar();
if(a=='y'){
b++;
printf("\033[%d;%dH",b,c);
}
else if(a=='b'){
b--;
printf("\033[%d;%dH",b,c);
}
else if(a=='g'){
c--;
printf("\033[%d;%dH",b,c);
}
else if("a=='h'){
c++;
printf("\033[%d;%dH",b,c);
}
printf("\n\n↑ yボタン\n↓ bボタン\n");
printf("← gボタン\n→ hボタン\n");
}

このソースのどこを変えたら・・・鬱
931デフォルトの名無しさん:03/06/28 15:53
保守
>>930
定期的に登る話題だな
"猫でもわかる"でぐぐれ。
>>925
即席 & 処理系依存
#include <stdio.h>
#include <windows.h>
#include <conio.h>

int main(void)
{
HANDLE hOut;
COORD new_coset = {0, 0}, old_coset = {0, 0};
DWORD dwResult;
int c;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
do{
if(SetConsoleCursorPosition(hOut, new_coset) == 0) return(-1);
if(WriteConsole(hOut, "○", 2, &dwResult, NULL) == 0) return(-1);
c = getch();
if(c == 'y') new_coset.Y--;
if(c == 'b') new_coset.Y++;
if(c == 'g') new_coset.X--;
if(c == 'h') new_coset.X++;
if(SetConsoleCursorPosition(hOut, old_coset) == 0) return(-1);
if(WriteConsole(hOut, " ", 2, &dwResult, NULL) == 0) return(-1);
old_coset.X = new_coset.X;
old_coset.Y = new_coset.Y;
}while(1);
return(0);
}
934933:03/06/28 16:24
適当でスマソ
935ビル・ジョブス:03/06/28 17:05
久しぶりに日本に帰ってきました。
皆さんお元気そうで何よりです。(^^)
936デフォルトの名無しさん:03/06/28 17:27
ひさしぶり
>>935
誰?
938デフォルトの名無しさん:03/06/28 17:32
>>937
このスレのPart1をたてやがった大馬鹿者。
939デフォルトの名無しさん:03/06/28 18:09
>>933
完璧です!どうもありがとうございます。
ちなみにC歴はどのくらいなんでしょうか?
940デフォルトの名無しさん:03/06/28 18:09
>>939
知りたがりは早死にする
>>939
教えてあげないよ♪ジャン byポリンキー
942デフォルトの名無しさん:03/06/28 18:28
C言語でリアルタイムキー入力をするために関数は何をつかえばよろしいでしょうか。OSはlinuxです。アドバイス御願い致します。
>>942
スレ違いだが教えてやろう。system("stty raw"); すればいい。
あとは犬板なりunix板なりunixスレなり行ってくれ。
944デフォルトの名無しさん:03/06/28 18:32
犬板???
945デフォルトの名無しさん:03/06/28 18:35
大阪
946デフォルトの名無しさん:03/06/28 18:47
http://www.darkcat.on.arena.ne.jp/cgi-bin/dknbbs2/bbs.cgi?sub=list&usr=hello_world82563
Cの掲示板はこちらへ移動しました。
雑談・質問なんでもこちらへどうぞ。
int a;
a+=~a+1;
int a;
while(a=rand());
int a;
_asm { mov a,0 }
int a;
#define a 0
>>923
それは知らんかった。どこのやつ?

>>924
ちょっと古いコンパイラで試してみそ
int a;
a<<=(sizeof(int)*CHAR_BIT-1);
953デフォルトの名無しさん:03/06/28 22:18
次スレ立てていい?
954952:03/06/28 22:19
あ、だめだ。
>>954
だめ
956955:03/06/28 22:19
まちがった。
>>953
957953:03/06/28 22:23
立てたい
958955:03/06/28 22:24
>>957
頼んだ
959デフォルトの名無しさん:03/06/28 23:57
intとかdoubleなどの最大値、最小値は、どうやって知ることが出来るの?
960デフォルトの名無しさん:03/06/28 23:58
>>959
limits.hやfloat.hで定義されているマクロで
>>960
とってもサンクス
963デフォルトの名無しさん:03/06/29 02:23
つるべのちんこ見ちまったよ(;´Д`)
>>964
ありがトン(´Д`)ノ⌒■
tちんこのためにまじめな顔して、お見苦しい映像があり申し訳ありませんでしたとか誤ってるアナウンサー萌え
(∩д∩)
うめたて
1000取ったこと無いんでとってもいいですか?
>>969
だめ。
各スレ1000ゲットはアクセス規制の対象となる場合があります
main(int argc, char *argv[])

という引数で、
**argv, *argv, argv[], argv は、それぞれ何を表しているんですか?
974972:03/07/01 18:49
>>973
こんなサイトあったんですか・・・ありがとうございましった!!
今日から1日1回

  ∧_∧
 ( ´∀`)< ぬるぽ
イチニチイッカイ
 ( ・∀・)   | |  ガッ
 と    )   | |
  Y /ノ   人
    / )   <  >__Λ∩
 _/し' //. V`Д´)/
 (_フ彡       /  ←>>975
  ∧_∧
 ( ´∀`)<
ぬゑぽ
漏れもガッしていいですか?
カウン
トダ

ぬるぽ
part60に追い越される前になんとしてでもこっちを埋めるんだ!
埋め立てですかぁ〜
986名無し@沢森:03/07/08 23:56
ヌヒよ。
  ∧_∧
 ( ´∀`)< ぬるぽ
誰かマジでスレ立てろよ…
C言語なら俺に聞け! Part 61

http://pc2.2ch.net/test/read.cgi/tech/1057677056/
このスレがまた 61 の避難所になったりするんだろうか。
それはそれで素晴らしい事です。
  ∧_∧
 ( ´∀`)<
  /__β ヽ_
  [ `↓´]   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>992
 (_フ彡        /
    ∧_∧
   ( ´∀`)<埋め立てぬるぽ
995デフォルトの名無しさん:03/07/09 08:44
9 9 5
996
9 9 7
998_:03/07/09 09:03
999銀河鉄道:03/07/09 09:04
1000999:03/07/09 09:04
999
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。