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

C言語ならアタシに聞きなさい<37>

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
C言語の質問スレッド37発目です。
C言語は時代遅れなんかじゃないです。
みんな大好きなんです。このシリーズの速さがそれを物語っています。

・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/

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

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさん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
0003デフォルトの名無しさんNGNG
【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0004デフォルトの名無しさんNGNG
三分の二は関係ない書き込みで残りがくそみたいな質問。
だから回転がはやい。
しかも3すれごとに同じ質問が繰り返されている。
0005デフォルトの名無しさんNGNG
>>4-5
2/5
0006デフォルトの名無しさんNGNG
    ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/<先生!
 _ / /   /   \オススメのコンパイラーを教えてください。
\⊂ノ ̄ ̄ ̄ ̄\  \_____________              
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||       
0007デフォルトの名無しさんNGNG
あなざーいぇっとこんぱいらこんぱいら
0008デフォルトの名無しさんNGNG
「水平回転」とはこうですか?

 a) ┏━┳━┓
   . ┃←╂→┃
   . ┗━┻━┛

それとも、こうですか?

 b)  ┏━┓
    . ┃↑┃
    . ┣┿┫
    . ┃↓┃
    . ┗━┛

「水平軸回転」は b) ですよね。
0009デフォルトの名無しさんNGNG
第2問. 「右回り」とはこうですか?

 a)  /⌒
    (   ↑
    ヽ、__ノ

それとも、こうですか?

 b)   ⌒ヽ
   ↑   )
    ヽ、__ノ
00104NGNG
5-9
はやくも無駄にスレが使われました。ここまでで意味があるのはかろうじて
1-3
ぐらい。といってもリンクだけだけど。
0011デフォルトの名無しさんNGNG
>>10
まぁ所詮はこの程度でしょ。
0012デフォルトの名無しさんNGNG
>>1
あなたは誰ですか?
0013デフォルトの名無しさんNGNG
struct servent server;
memset((char*)&server,0sizeof(server));
ってのを本で見かけたんですが
ansiiの規格では
void*memset(void*,int,int,size_t)
っていうふうになってますよね
なんでわざわざchar*型にキャストする必要が
あるんですか?
おしえてくふぁさい
0014デフォルトの名無しさんNGNG
fgets関数でファイルを一行ずつ読み込んでいきますが、一行読み込んだら次にまたfgetsを実行したとき次の行を読み込むことになっているのは仕様ですか?
同じ行を読み直すとか、そういう場合には困るような気がするんですが(そういうことする必要ないか?)

ってかよくFILE *fp = fopen(hoge)ってので*fpがつかわれますが、この*fpの先の実体はどうなってるんでしょうか?
0015デフォルトの名無しさんNGNG
>>13
作者に聞け。後者のほうが正しい。

>>14
仕様。fseekでも調べろ。
001615NGNG
>>14
ヘッダーでも調べろ。FILEは構造体だ。
0017デフォルトの名無しさんNGNG
>>13
昔は void がなかったので(汎用ポインタには) void * の代わりに char *
を使ったらしいです。その名残ではないでしょうか?
0018193→一休さんNGNG
 線形リストが、まだわからない。
0019デフォルトの名無しさんNGNG
>>16
実体はライブラリによって異なるから、
調べる意味がないようなきもする。

が、ライブラリのソースまで追って行くのであれば
それはそれで勉強になるか。
0020デフォルトの名無しさんNGNG
風俗にいってからちんちんが妙に痒いんだがどうしたらいい。
0021デフォルトの名無しさんNGNG
てーか何でFILEを表に出しているのか。
0022デフォルトの名無しさんNGNG
VirtualAlloc(NULL, Param.Image.BufferLength, MEM_COMMIT, PAGE READWRITE);
では、コミットするページ領域のサイズはいくつになるんでつか?
0023デフォルトの名無しさんNGNG
>>22
なぜCスレできくのでつか?
0024デフォルトの名無しさんNGNG
ほうれん草を炒める関数の名前はどうしたら良いですか?
0025デフォルトの名無しさんNGNG
そうでつね
0026デフォルトの名無しさんNGNG
frySpinach()
0027デフォルトの名無しさんNGNG
>>5
あっ、レスありがとうございます!
倉本安奈ちゃんかあ、今度見てみます!どうもですー
0028デフォルトの名無しさんNGNG
ある文字列から、スペースをデリミタとして、左辺と右辺に分ける関数を教えてください。結果は char 型のポインタで返ってくると嬉しいのですが。
0029デフォルトの名無しさんNGNG
>5 よ。 27 に返事してやれ。
0030デフォルトの名無しさんNGNG
>>27はスカ
0031デフォルトの名無しさんNGNG
>28
 左側はその文字列の先頭アドレスでいいよね。
 右側は、デリミタを検索(連続はチェックしてね)してその次のアドレスでいいよね。
0032デフォルトの名無しさんNGNG
いいよねじゃなくて、、、ソース書いてくれると嬉しいのですが。
0033デフォルトの名無しさんNGNG
ソース
0034デフォルトの名無しさんNGNG
>>32
strchrあたり使ってなんとかすれ。
0035デフォルトの名無しさんNGNG
int a[100], b[10];
int i, j, k, *p ;
p = a[i];
k = p[b[j]];
とやるとき
for (i = 0; i < 10; i++)
  b[i] *= sizeof (int);
としておいて
k = *((int *) ((char *) p + b[j]));
とやったほうが速いように思うんですけど
このコードは移植性がありますか?
003631NGNG
>32 31で言った事だけで、もうソース書いたも同然だからあとは出来るはず。
   ていうか、Cを学びたいのであれば、ぜひやってみて下さい。
0037デフォルトの名無しさんNGNG
>>32
それくらい自分でやってくれると嬉しいのですが。
0038デフォルトの名無しさんNGNG
つまり、あなた方はできないわけだ。
0039デフォルトの名無しさんNGNG
出来ません。
0040デフォルトの名無しさんNGNG
strchr()の中身みたいんですけど、どこに書いてありますか?なんでもおk
0041デフォルトの名無しさんNGNG
CRT
0042デフォルトの名無しさんNGNG
CRTってディスプレイのことじゃないですよね?
いや、そうなんだろうけど、ここでの意味は?
0043デフォルトの名無しさんNGNG
China Raguby Team.
004431NGNG
>38
 そうじゃないです。僭越ですが、私はこのように書きました。
 デリミタが見つからない場合と、文字列の最後に見つかった場合は
NULLを返します。

#define delimit 0x20

char *divide( const char *s )
{
 char *myPtr;

 if( myPtr = strrchr( s, delimit ) )
  if( *(myPtr++) == NULL )
   myPtr == NULL;

  return myPtr;
}
0045デフォルトの名無しさんNGNG
CRTはVC++に入ってるよ。Cランタイムのソースがイパーイと。

char *strchr(const char *str, int c)
{
  c = (char)c;

  while (*str && *str != c)
    ++str;

  if (*str == c)
    return (char *)str;
  return NULL;
}
0046デフォルトの名無しさんNGNG
>>45
それってどこのフォルダにありますか?
0047デフォルトの名無しさんNGNG
>>40
http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/libc/sysdeps/i386/strchr.S?rev=1.12&content-type=text/plain&cvsroot=glibc

これが最高に参考になります(藁
0048デフォルトの名無しさんNGNG
>46
VCインスコしたディレクトリの中にCRTっていうとこ。
CRTのインスコはオプションだよ。
0049デフォルトの名無しさんNGNG
>>48
ありがとうございました
0050デフォルトの名無しさんNGNG
>>22
ほかのスレに書いたんですがレスないでつ。
0051デフォルトの名無しさんNGNG
>>50
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_virtualalloc.htm
0052デフォルトの名無しさんNGNG
>>45
> c = (char)c;

なんだコリャ ?
0053デフォルトの名無しさんNGNG
VC++なんて持っていません。昔手に入れたワレズのエンタープライズエディションくらいならありますが、使うとやばいので使えません。
0054デフォルトの名無しさんNGNG
>>53
47のでいいじゃねえか。
0055デフォルトの名無しさんNGNG
ついでに、>>44も仕様を満たしてないと思われ
0056デフォルトの名無しさんNGNG
>>53
通報しますた
0057デフォルトの名無しさんNGNG
>>53
通報しました
0058デフォルトの名無しさんNGNG
>>53
もう一回通報しますた
0059デフォルトの名無しさんNGNG
>>53
MSKKにも通報しますた
0060デフォルトの名無しさんNGNG
YKKにも通報しますた
0061デフォルトの名無しさんNGNG
>>52
1ビット比較するのと4ビット比較するのはどっちが早いと思う?
006261NGNG
ビット -> バイト
0063デフォルトの名無しさんNGNG
マスクしてるのか?
0064デフォルトの名無しさんNGNG
>>61-62
どういう意味?
0065デフォルトの名無しさんNGNG
charは1バイトでしょ。
4ビットって?
0066デフォルトの名無しさんNGNG
___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
0067デフォルトの名無しさんNGNG
なぜC++と比べてCの質問スレはこんなに盛況なのですか?








厨ばっかだからか?(プ
0068デフォルトの名無しさんNGNG
>>61
レジスタって知ってる?
0069デフォルトの名無しさんNGNG
今、よほどの環境じゃない限り4バイトと1バイトを
切り詰めて比較する必要はないだろう。
0070デフォルトの名無しさんNGNG
>>67
笑うとこか?C++はさっさとdat落ちか糞スレになる運命。
0071デフォルトの名無しさんNGNG
int cだけど、1バイトの比較になるか?
0072デフォルトの名無しさんNGNG
Cしか知らない爺が多いおかげで喰えるんですから感謝しましょう。
STLで今日もfunctionalかつgenerativeにコーディングしましょう。

0073デフォルトの名無しさんNGNG
67は、心が腐った人間の見本
0074デフォルトの名無しさんNGNG
>>52
下位の8ビットだけ使うって事なんでしょ?
0075デフォルトの名無しさんNGNG
char *strchr(const char *str, int c)
何でint変数にcなんて名前つけるの?
0076デフォルトの名無しさんNGNG
>>75
一文字ってことなんじゃないの?
0077デフォルトの名無しさんNGNG
C=C*&FF;
でいいだろ
0078デフォルトの名無しさんNGNG
>>77
それ、コンパイルできるの?
0079デフォルトの名無しさんNGNG
c = c & 0xff って事か?
でもそれじゃダメだな。符号拡張しなきゃ。
0080デフォルトの名無しさんNGNG
どうでもいいけど、Cなら
C &= 0xff;
みたいに書いて欲しい。
008177NGNG
c&=0x80ff;で可能?

さっきはゴメン、頭眠ってるかも・・・オヤスミ...
0082デフォルトの名無しさんNGNG
>>81
それじゃだめじゃん。
つーか普通に c = (char)c; でいいじゃん。
0083デフォルトの名無しさんNGNG
*strとcの比較に影響出る?サイズ変わらないよね
0084デフォルトの名無しさんNGNG
>>83
だから、int cの下位8ビットだけ使うってことでしょ?
0085デフォルトの名無しさんNGNG
>>84
c=(char)c
↑これやるとなにか違いがあるの?
今Cコンパイラないから確認できないけど、意味内と思うよ。
0086デフォルトの名無しさんNGNG
#include <stdio.h>int main(void){ int i = 0x0fffffff; char c = (char)i;printf("%d,%d\n", c,i);/* -1,268435455 */return 0; }c &= 0xff;で良いんじゃ?
0087デフォルトの名無しさんNGNG
>>85
たとえば、cの内容が0x1111だったら明らかに違うじゃん。
0088デフォルトの名無しさんNGNG
>>81
アフォか。
char *str と int c を比較すれば int 型に暗黙変換される。
その時の *str が取りうる値は (int が 32-bit として)
0xFFFFFF80 (-128) 〜 0x0000007F (127) だ。
単にビットを切り取っただけだと、0x00000080 (128) を超える
数値ができて比較になんねーだろ。
char が unsigned char の処理系なら問題ないだろうけど。
0089デフォルトの名無しさんNGNG
char c = (char)i
これならなんとなくわかるけど、
実際吐き出すコードはどうなるんだろう
0090デフォルトの名無しさんNGNG
吐き出すコードがどうとかってより、挙動がちがうじゃん。
0091デフォルトの名無しさんNGNG
>>89
c = (char)c;

で、VC++ 6.0 は...

 movsx eax, BYTE PTR _c$[esp-4]

と言うコードを吐くから、とりあえず下位8ビットを符号拡張してるね。
0092デフォルトの名無しさんNGNG
>>90
つーか、なんで >>45 のコードに c = (char)c; が必要なの ?
0093デフォルトの名無しさんNGNG
gasだとこんな感じ
movsbl -4(%ebp),%eax
movl %eax,-4(%ebp)

下位1バイトを切り取ってる。
0094739NGNG
gasって何だよ(W
GCCだろ.
0095デフォルトの名無しさんNGNG
アセンブラコードありがとうございます。
仮に char c=(char)i だった場合、*strとの比較は1バイトになるんですかね?
なんか4バイト比較しそうな気がする。CPUが命令もってないか、
速度変わらないとかで。
0096デフォルトの名無しさんNGNG
重箱のすみをつつくなら正確に。

>>94
GCCだとGNU Compiler Collectionになりますが。
0097デフォルトの名無しさんNGNG
>>95
普通は1バイトずつ比較する。
CPU が命令持ってない時は、マスクして比較する。
0098デフォルトの名無しさんNGNG
>>89-95 は >>88 を見れ。
アセンブリコードなどこの際関係ない。
下位型と上位型の演算は上位型にキャストされるという大原則を思い出せ。

・・・アセンブラコードって何だよ、アセンブルした時のエラーコードか?
0099デフォルトの名無しさんNGNG
>>94って相当はずかしいな・・・・
0100デフォルトの名無しさんNGNG
>>92
その行があるのと無いのでは挙動がちがうじゃん。
わからんの?
0101デフォルトの名無しさんNGNG
>>100
だから、何のために「その違う挙動」が必要なのか聞いてるんだけど。
日本語理解できてないのか ?
0102デフォルトの名無しさんNGNG
>>95
>仮に char c=(char)i だった場合、*strとの比較は1バイトになるんですかね?

いや、*strとの比較はintで行われるよ。
0103デフォルトの名無しさんNGNG
んーわからない。
int cにcharの範囲を越えてるようなものを渡されたときのためですか?
0104デフォルトの名無しさんNGNG
94ほどの漢だと、96の意味が理解できない可能性も。
0105デフォルトの名無しさんNGNG
>>101
> だから、何のために「その違う挙動」が必要なのか聞いてるんだけど。

strchrの仕様がそうだからだよ。




0106デフォルトの名無しさんNGNG
>>101
> だから、何のために「その違う挙動」が必要なのか聞いてるんだけど。

おまえ、そんなことは聞いてないじゃん。
0107デフォルトの名無しさんNGNG
>>105
> strchrの仕様がそうだからだよ。

c = (char)c; がない時に、strchr() の仕様に合致しない例を挙げよ。
0108デフォルトの名無しさんNGNG
>>47
のコードはそういう処理をしてないよね。
0109デフォルトの名無しさんNGNG
>>75
意外と知られていないが、
'a'などの文字リテラルはCではint型。
0110デフォルトの名無しさんNGNG
>>107
cに0x111が入ってたら?
(つくづくわかってない奴だな…)
0111デフォルトの名無しさんNGNG
これ、最悪の場合意図しない文字の位置を返すんじゃない?
0112デフォルトの名無しさんNGNG
どうして
char c = (char)i;
じゃなくて
i=(char)i;
なんだろ。
int型に入れたらその後の比較でsizeof(int)単位で比較しなきゃいけなくなるでしょ?

char,charの比較ならcmpblで1バイトの比較になる。
0113デフォルトの名無しさんNGNG
>>111
どれのこと言ってるの?
0114デフォルトの名無しさんNGNG
>>110
お前は、アフォか ?
c に 0x111 が入っていた時の挙動が定義されてんのか ?

>>111
そう言う意味では、c = (char)c; があるほうが危険と思うけど。
c = (char)c; がなくて、c に 0x111 があるような状況だと、単にそう言う文字がないだけになるからね。
0115デフォルトの名無しさんNGNG
さっさと誰か規格の原文をコピペ汁

0116デフォルトの名無しさんNGNG
>>112
貴方は、正しい。俺もそう思うし、VC++ 6.0 の strchr() もそうしてる。
(別の変数にはしてないけど、比較の時にキャストしてる。)
0117デフォルトの名無しさんNGNG
>>113
>>45のstrchrです。
そんなもの渡す方が悪いんだろうけど、無い。で帰ってきたほうが親切なような。
0118デフォルトの名無しさんNGNG
>>114
> c に 0x111 が入っていた時の挙動が定義されてんのか ?

え? もしかして挙動がわからのの?
0119デフォルトの名無しさんNGNG
>>114
>c = (char)c; がなくて、c に 0x111 があるような状況だと、単にそう言う文字がないだけになるからね。

やっぱり分かってない。
0120デフォルトの名無しさんNGNG
>>118
わかったから、はよかけよ。その「挙動」とやらを。
0121デフォルトの名無しさんNGNG
みていると>>118のがバカっぽいな。
0122デフォルトの名無しさんNGNG
だから >>101 は >>88 を見れ
0123デフォルトの名無しさんNGNG
>>120がかわいそうだから誰か教えてやったら?
0124デフォルトの名無しさんNGNG
>>88の単にビットを切り取っただけだと
ってなに?
0125デフォルトの名無しさんNGNG
>>114-118

>c = (char)c;
C言語の標準型はintなのは知ってるのかねえ・・。
*strもintに直されるんで、わざわざint->char->intにして
符号拡張させるんですよ。
バカども。
0126デフォルトの名無しさんNGNG
おまえらアフォか。

  ど う し て 0x111 が 例 に 挙 が る ん だ ?

'ア' を指定したときの動作で十分説明つくだろうが。
0127デフォルトの名無しさんNGNG
>>126
CESは?
0128デフォルトの名無しさんNGNG
>>126
このスレの流れだったら、べつにどっちでもいいやん。
0129デフォルトの名無しさんNGNG
>>125
なんか見当はずれなことを言ってる馬鹿がいますよ。
0130デフォルトの名無しさんNGNG
7bit関係?
0131125NGNG
>>129-130
うわ、理解できてないヤシがいるよ(藁
ほんとバカだな・・。

char *r = strchr("abcde\xff",-1);
rには"\xff"が入るっての、理解できる?
0132デフォルトの名無しさんNGNG
'ア' == 0xB1
これを int として渡すと 0xFFFFFFB1
下位 8bit だけを抜き出すと 0x000000B1
一方 *str の取りうる値は 88 の通り 0xFFFFFF80 〜 0x0000007F
なので str に ア が含まれてても発見できない
0133デフォルトの名無しさんNGNG
>>131
今の話題って、>>45のソースで
c=(char)c;
がなんで必要かって事だよね?
で、君はいらないと思ってるんだよね?
0134デフォルトの名無しさんNGNG
>>132
それは違うよ。
0135125NGNG
>>133
逆だよバカ。
c=(char)c;は、* 必 要 * 
0136125NGNG
>>132
全然理解できてない。
0137デフォルトの名無しさんNGNG
>>134
違うというだけでなく何がどう違うのか指摘しないと無視されるぞ
0138デフォルトの名無しさんNGNG
わかんねー
どっち派でもいいから、すっきりとした解説おながいします。
0139125NGNG
>>132
あのね、str側もchar->intに符号拡張されるんだよ。
だからちゃんとstrの'ア'もみつかるの。
0140デフォルトの名無しさんNGNG
シャッキリポンとした解説おながいします
0141125NGNG
だから
char *r = strchr("アイウエオ",'ア');
rは"アイウエオ"
0142デフォルトの名無しさんNGNG
>>137
別に無視でもかまわないけど。
0143125NGNG
ちなみに下位ビットとかそんな話は関係ない。
単にC言語のchar->int符号拡張の話。
0144デフォルトの名無しさんNGNG
>>135
うるせーよ。ばか。
0145デフォルトの名無しさんNGNG
まったりとして、それでいてしつこくないのがいいです。
0146125NGNG
>  while (*str && *str != c)
わかんねーやつは、
このコードで、何が起きているのかよく考えろ。
バカども。
0147デフォルトの名無しさんNGNG
・未定義
・処理系依存
・void main
・符号拡張
0148デフォルトの名無しさんNGNG
そもそも文字列の中から特定の文字を探すための関数にcharで表せない値を渡すことが間違っているんじゃ・・・・
0149デフォルトの名無しさんNGNG
>>131
> char *r = strchr("abcde\xff",-1);
> rには"\xff"が入るっての、理解できる?

r じゃなくて、*r だろっ。って言う突っ込みは置いといて、これって規格で決まってんのか ?
char が符号無しの処理系において、-1 なんか渡してもいいのか ?
'\xff' を渡すのなら理解できるが...。
0150125NGNG
>>148
だから、何が渡されてもそれなりに処理できる様に作ってあるんだろうが。
このバカ。
0151デフォルトの名無しさんNGNG
いいねえ、レガシーな話題で盛り上がれて。
0152125NGNG
>>149
intの値なら何渡そうがいいんだよ。バカ。
符号の有無もc=(char)cで吸収されて関係ない。
0153デフォルトの名無しさんNGNG
>>148
まあ、間違いというか無意味だけど、
今回はstrchr()の挙動の話だから。
0154125NGNG
もうバカばっかり。バカバカバカみんなバカ。
0155デフォルトの名無しさんNGNG
>>149
'\xff' はすなわち -1 だ。
char が符号付である処理系では。
0156デフォルトの名無しさんNGNG
>>150
それなりってなんだよ。
キャストしなくても途中で致命的なエラーが発生したりはしないだろ。
0157デフォルトの名無しさんNGNG
>>125の必死な姿が目に浮かぶ。
0158デフォルトの名無しさんNGNG
>>154
なんで、あんたがヒスを起こすの?
0159デフォルトの名無しさんNGNG
125 の固定番号を引きずってる 125 もかなりの DQN
0160125NGNG
>>155-156
はいはい、揚げ足取りごくろーさん。
0161デフォルトの名無しさんNGNG
>>155
1の補数表現でも-1になるんだっけ?
0162デフォルトの名無しさんNGNG
>>152
お前は、アフォか ? その時の挙動が規定されてんのか ? って聞いてんだよ。
ちなみに言っとくけど、-1 の下位8ビットが 0xff なんてことは、規定されてねーからな。
0163125NGNG
揚げ足取り必死だな
0164デフォルトの名無しさんNGNG
>>125
顔真っ赤ですよ。
0165デフォルトの名無しさんNGNG
>>155
「符号無しの処理系において」と書いてあるの見えない ?
0166125NGNG
おまえら全員読解力ゼロのバカ
0167125NGNG
>>162
はぁ?
挙動って何?
0168デフォルトの名無しさんNGNG
125 は何も試してないだろ。黙れ。

char *strchr_a(const char *str, int c)
{
  c = (char)c;
  while (*str && *str != c) ++str;
  if (*str == c) return (char *)str;
  return NULL;
}
char *strchr_b(const char *str, int c)
{
  while (*str && *str != c) ++str;
  if (*str == c) return (char *)str;
  return NULL;
}
int main()
{
  const char * str = "abcde \xFF abcde";
  printf("str = %p\n", str);
  printf("strchr_a = %p\n", strchr_a(str, '\xFF'));
  printf("strchr_b = %p\n", strchr_b(str, '\xFF'));
  getchar();
  return 0;
}
0169デフォルトの名無しさんNGNG
あ、0xffffffffじゃなくてint直で0xffを渡したときの挙動かな?
0170デフォルトの名無しさんNGNG
>>162
「規定」というか、決まってるでしょ?

> ちなみに言っとくけど、-1 の下位8ビットが 0xff なんてことは、規定されてねーからな。

はげしく勘違いしてる予感
0171デフォルトの名無しさんNGNG
ここが質問者回答者共々厨房なのはあまりにも有名な話。
俺?もちろん厨房さ。
0172デフォルトの名無しさんNGNG
>>167
> 挙動って何?

日本語もわからんのか...。まあ、落ち着けよ。
0173125NGNG
もう、せっかく教えてやってるのに頑なに理解しようとしてないバカがいるね。
0174デフォルトの名無しさんNGNG
最初に晒されたコードはVisual C++のものみたいだけど、他の有名なライブラリのstrchrのソースでもcharにキャストしているの?
0175デフォルトの名無しさんNGNG
>>170
> 「規定」というか、決まってるでしょ?

どう決まってんの ?
0176デフォルトの名無しさんNGNG
>>173
ププッ、捨てぜりふモードに入りましたね。
0177デフォルトの名無しさんNGNG
このスレ読んでわけがわからんので100レス遡る。

他人をややオカマ口調でバカバカいう125たんと
0x111とか言った香具師のせいでこんがらがってるだけだな。
0178デフォルトの名無しさんNGNG
たぶんわかった。>>109か
0179デフォルトの名無しさんNGNG



必死な>>125がいるスレというのはここですか?


0180デフォルトの名無しさんNGNG
char *strchr(const char *str, int c)
{
for(;*str;str++)
if(*s==(char)c)
return (char *)str;

return NULL;
}

じゃだめなの?
0181デフォルトの名無しさんNGNG
>>179
ここです。
0182デフォルトの名無しさんNGNG
ちなみに125の言うことは間違ってない。
0183デフォルトの名無しさんNGNG
なんていうか、自分の考えを上手く伝えられない自分へのもどかしさも彼をイライラさせる原因に。
0184125NGNG
>>180
それじゃ駄目だって。
バカ。
0185デフォルトの名無しさんNGNG
>>174
とりあえず VC++ 6.0 では、

char * __cdecl strchr (
 const char * string,
 int ch
 )
{
 while (*string && *string != (char)ch)
  string++;

 if (*string == (char)ch)
  return((char *)string);
 return(NULL);
}

となってて、char 同士で比較するようになってる。
0186デフォルトの名無しさんNGNG
>>184
なんで?
0187デフォルトの名無しさんNGNG
よし、俺も必要派に転向だ。寝るけど。
0188デフォルトの名無しさんNGNG
確かに 125 は自分で自分の品位を下げるタイプみたいだな.
こういう奴は仮に正しいことを言ってても, 真っ先に白い目でみられんだよね ...
もう少し肩の力を抜けばいいのに...
0189デフォルトの名無しさんNGNG
>>183
それだ
0190デフォルトの名無しさんNGNG
>>182, >>184
だから、ダメな例をちゃんと挙げろよ。
0191デフォルトの名無しさんNGNG
>>175
処理系定義
0192125NGNG
>>180
あ、やっぱそれでも合ってる。
おれもバカどものせいで混乱してきた。
0193デフォルトの名無しさんNGNG
つーか、元はと言えば strchr() の c が int である事が間違ってる。
0194デフォルトの名無しさんNGNG
>>184
いいじゃん。
0195125NGNG
>>191
処理系依存つっても、普通は2の補数表現使うから
ほとんど決め打ちで考えて問題ないよ。
0196デフォルトの名無しさんNGNG
>>191
だったら、この処理系では結果は不定ですって言うのもありか ?

そうなら、c = (char)c; は不要じゃん。
0197デフォルトの名無しさんNGNG
>>185
この素直じゃないコードを書いた人の顔を見てみたい。
0198デフォルトの名無しさんNGNG
そういえばSolarisのstrcasecmpに8bitな文字列を与えるとものすごいことになるね。
0199デフォルトの名無しさんNGNG
なんでここは話題に事欠かないの。誰かネタ帳でも持ってるの。
0200デフォルトの名無しさんNGNG
>>197
どこら辺がおかしいとお思い ?
0201デフォルトの名無しさんNGNG
>>199
ごゆっくりお楽しみ下さい。
0202デフォルトの名無しさんNGNG
>>199
> なんでここは話題に事欠かないの。誰かネタ帳でも持ってるの。

たいした事ないネタに食いつく奴が (今回は >>125) が多いからだろ。
0203デフォルトの名無しさんNGNG
>>200
なんでわざわざ int ch としてるのか。
0204125NGNG
お肌に悪いからもう寝る。
バカどもは徹夜で考えてなさいよ。
つーかまず質問するまえにぐぐれ。
0205デフォルトの名無しさんNGNG
最後はネカマかよw
0206デフォルトの名無しさんNGNG
c = (char)c; となってる理由がぐぐって出てくるのかよ プッ
0207デフォルトの名無しさんNGNG
>>200
素直に一文字ずつ見ていって見つかればそこでreturn。見つからなければ(ループを抜けたら)NULLを返せばいいと思う。
0208デフォルトの名無しさんNGNG
>>199
ネタ帖は>>147に。あとは誰か補完してください。
0209デフォルトの名無しさんNGNG
>>205
>>154 この辺も萌えるよ。
0210デフォルトの名無しさんNGNG
>>147
NULLは0(全ビット0)か?を忘れているぞ。
0211デフォルトの名無しさんNGNG
>>203明日になったら分かるさ。
0212デフォルトの名無しさんNGNG
>>203
>>109
0213デフォルトの名無しさんNGNG
>>210
つか、C FAQでいいじゃん。
0214207NGNG
>>203は>>197じゃないのであしからず。
0215デフォルトの名無しさんNGNG
>>212
109は説明になってないよ。

 
0216デフォルトの名無しさんNGNG
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
0217デフォルトの名無しさんNGNG
>>109
じゃ、ほんとは
int *str = "abcde";
って書くのが正しいの?
0218デフォルトの名無しさんNGNG
>>207
>>180 ってこと ? 大して変わらんと思うけど。
0219デフォルトの名無しさんNGNG
>>217
そうは書けないね。
0220デフォルトの名無しさんNGNG
VC++のライブラリのソースはひどいね。
マクロによってstrspnのソースになったりstrpbrkのソースになったり・・・
0221デフォルトの名無しさんNGNG
関数の引数として渡すと char、short は int に float は double に自動的に変換されるのです
0222デフォルトの名無しさんNGNG
禿しくCPU依存の悪寒
0223デフォルトの名無しさんNGNG
じゃあ結論はcharへのキャストはしたければしろ。したくなければしなくてよい。
ということでOK?
0224デフォルトの名無しさんNGNG
>>223
いや、キャストは必要。
0225デフォルトの名無しさんNGNG
第二部いきまーす
0226デフォルトの名無しさんNGNG
>>222
2の補数を採用してないCPUなんてめったにないだろ
0227デフォルトの名無しさんNGNG
strcpyの第二引数にNULLを渡してもうまく動作するなんてどこに書かれているんですか?
0228デフォルトの名無しさんNGNG
?
0229デフォルトの名無しさんNGNG
>>221
それって、昔の話では…
0230デフォルトの名無しさんNGNG
217 は阿呆か、文字リテラルと文字列リテラルは全然違うのに。
0231デフォルトの名無しさんNGNG
>>229
おまえC++と混同してるだろ。
Cは221で合ってる。
0232デフォルトの名無しさんNGNG
>>226
負数に2の補数を使ってないCPUなんてあるのか?
0233デフォルトの名無しさんNGNG
リッチーもひどい言語をつくってくれたものだな!
0234デフォルトの名無しさんNGNG
>>232
PS2のCPUとか。
0235デフォルトの名無しさんNGNG
>>233
はじめっからCは高級アセンブラって位置付けなんだから
変な期待すんな
0236デフォルトの名無しさんNGNG
>>233
モノは使いよう。
クソソースを作るやつがクソ
つーか age る程の話題ではない
0237デフォルトの名無しさんNGNG
>>231
たとえば
void hoge(char ch);
という関数があったら、intに変換されるってこと?
わけわからん。
0238デフォルトの名無しさんNGNG
>>221の意味がわからない。
解説お願いします。
0239デフォルトの名無しさんNGNG
>>235
未定義・処理系依存が多すぎるじゃん!
0240デフォルトの名無しさんNGNG
>>234
マジで?
gccとかやばいんでない?
0241デフォルトの名無しさんNGNG
0x80〜は符号拡張されるから、よくやる
n = c - '0';
みたいなのは0x80をまたいでは使えないんだね。気付かなかった。やらないけど。
0242デフォルトの名無しさんNGNG
>>224
だから、ないとまずい理由をちゃんと書け。
0243デフォルトの名無しさんNGNG
引数がint型に拡張されないと、DLLとかで困ると思うんだが。
0244デフォルトの名無しさんNGNG
>>241
だれに返事してるの?
0245デフォルトの名無しさんNGNG
1の補数表現って8bitの場合、0x00と0xFFは同じ値になるの?
Cと関係なくてスマソ
0246デフォルトの名無しさんNGNG
>>242
つーか、その話題まだ引きずるの?
0247デフォルトの名無しさんNGNG
>>244
ひとりごとだ、スマソ
0248デフォルトの名無しさんNGNG
以降

 独 り 言 禁 止
0249デフォルトの名無しさんNGNG
>>243
それは、Windowsの実装の話でしょ。
C一般の話じゃないよ。
0250デフォルトの名無しさんNGNG
>>227は放置ですか?
前スレにstrcpy(str,NULL);やstrcpy(str,0);はOKみたいなことが書かれていたんですけど。
0251デフォルトの名無しさんNGNG
>>249
でも、一般的なPC環境はWindowsだよね
0252デフォルトの名無しさんNGNG
以降

   OS依存、処理系依存禁止
0253デフォルトの名無しさんNGNG
>>250
そんなこと気にしてるの、お ま え だ け だ よ
そんなこと気にしてるの、お ま え だ け だ よ
0254デフォルトの名無しさんNGNG
以降

 ふ か わ り ょ う 禁 止
 ふ か わ り ょ う 禁 止
0255デフォルトの名無しさんNGNG
このスレッド立ってから12時間も経っていないんですけど。
0256デフォルトの名無しさんNGNG
>>217
'A':文字定数->int型として解釈される
"hoge":文字列リテラル:一文字一文字はcharとして解釈される
0257デフォルトの名無しさんNGNG
>>242
あれがないと、'ア'を渡したとき、
int c = 0x000000B1のままになってしまうから。
ではどうですか?
0258デフォルトの名無しさんNGNG
>>256
*strで参照するとintに拡張されますが。
0259デフォルトの名無しさんNGNG
>>251
Winで1バイトの引数を4バイトの領域を使って渡してるのを、
↓これと、混同してるわけ?

>221 :デフォルトの名無しさん :02/10/27 03:09
>関数の引数として渡すと char、short は int に float は double に自動的に変換されるのです

0260デフォルトの名無しさんNGNG
>>246
結局俺は、c = (char)c; が必要かどうか、わからんかった。
誰か、まとめてくれないか ?
0261デフォルトの名無しさんNGNG
>>259
混同ではないよ。
Windowsの規約。
0262デフォルトの名無しさんNGNG
printf が %d で char でも short でも int でも受けれたり、%f で float でも double
でも受けれたりするのを考えれば >>221 は自ずと分かると思いますが
ダメでしょうか?
0263デフォルトの名無しさんNGNG
これスレはテレビの馬鹿番組でも見ているようで楽しいな
0264デフォルトの名無しさんNGNG
>>261
だからCの話と関係ないじゃん。
0265デフォルトの名無しさんNGNG
>>262
?
0266デフォルトの名無しさんNGNG
>>262
それこそ中でキャストしているだけじゃ・・・
0267デフォルトの名無しさんNGNG
>>262
この話は、それとは違うじゃん。
0268デフォルトの名無しさんNGNG
>>250
それを書いたものだが、そんなことしてOKなんて一言も書いてないぞ。
ただしやっていかんとも書いてない。なぜなら、その時の議論には
全く関係のないことだったからだ。
0269デフォルトの名無しさんNGNG
>>260
必要。
0270デフォルトの名無しさんNGNG
>>264
キミもしつこいね。
0271デフォルトの名無しさんNGNG
strchr() 内における c = (char)c; は、

  0x111 のような文字とは思えないデータでも文字データとして扱うなら必要
  文字とは思えないデータははじいてしまうなら不要

という事でよろしいか?
0272デフォルトの名無しさんNGNG
>>269
理由書けバカ。
0273デフォルトの名無しさんNGNG
>>266
渡された引数の型が分からないのにどうやってキャストするのさ?
0274デフォルトの名無しさんNGNG
>>262
あんな、プロトタイプが与えられてない場合と、不定数引数の場合だけ
charがintに昇格するなどの暗黙の処理が入るんだ。

不定数引数ってのは、
int printf(const char *, ...);
みたいな関数の...の部分な。
0275デフォルトの名無しさんNGNG
>>270
君、勉強不足だね。
0276デフォルトの名無しさんNGNG
>>268

717 :デフォルトの名無しさん :02/10/25 16:37
char a[100];

/* 配列に空文字列をセットする3つの方法 */
strcpy(a, NULL);
strcpy(a, 0);
strcpy(a, "");

どこが関係のないことだ?NULLを渡すと空文字レスがセットされると書いているが?
0277デフォルトの名無しさんNGNG
>>272
教えてもらいたかったら、土下座しろ。
0278デフォルトの名無しさんNGNG
>>269
だから、>>242 にも書いたけど、ないとまずい理由を書いてよ。
0279デフォルトの名無しさんNGNG
>>273
%fならdoubleに、%dならintにキャストすればいいだろ。
0280デフォルトの名無しさんNGNG
>>277
今モニタの前で土下座してます。
0281276NGNG
× 空文字レス
○ 空文字列
0282デフォルトの名無しさんNGNG
>>279
( ゚д゚).......
0283デフォルトの名無しさんNGNG
>>276
すまんすまん、おれが書いたのは
http://pc3.2ch.net/test/read.cgi/tech/1035211039/742
だ。
0284デフォルトの名無しさんNGNG
>>258
*strがintに拡張されるのはint型の変数と比較するからだろ。
文字列リテラルの型とは関係あるのか?
0285デフォルトの名無しさんNGNG
ああ、ドキュンが沢山いる
0286デフォルトの名無しさんNGNG
あの変なマクロつかうやつでしょ。
あれは何をやってんだろう。
0287279NGNG
>>282
なんかおかしいこといっているか?
0288デフォルトの名無しさんNGNG
>>278
45のソースではc=(char)c;が無いと、仕様どおり動かないから。
0289デフォルトの名無しさんNGNG
>>279
キャストってのはね、「元の型」と「キャストする型」の両方が分かってないとできないのよ
0290デフォルトの名無しさんNGNG
>251
 パソコンユーザ全体だと確かにおっしゃる通りなのですが、
プログラマの仕事の環境となると、ハードウエアはPC/AT互
換機が現在では一般的といえたとしても、OSは、wnidowsが
そこまでの一般性があると言い切るのは少し抵抗があります。

 しかし、実勢としては、windowsしか知らないユーザ/プ
ログラマがそのように感じたり言ったりすることが間違いだ
とことさらに否定するほど、windowsの存在は小さなもので
はないので、微妙ではありますね。

 何ごとも、ひとたび多数派となれば、その他の世界を知ら
ないか無視してしまう人も出てくるのは避けられないわけで、
その意味では今はwindows”専門”ユーザ/プログラマが目
立ってしまっているのは事実です。
0291デフォルトの名無しさんNGNG
>>271
> 0x111 のような文字とは思えないデータでも文字データとして扱うなら必要

それ余計にまずくない ?
0292デフォルトの名無しさんNGNG
>>288
その 「仕様」 の文またはポインタをキボンヌ。
0293デフォルトの名無しさんNGNG
>>288
何で、具体的に書いてくれないの ?
どう言う仕様に違反するのさ。
0294デフォルトの名無しさんNGNG
>>288
0x3131 を指定しても '1' として扱うのが仕様なのか?
0295279NGNG
>>289
そうだったの。
0296デフォルトの名無しさんNGNG
>>290
環境が普及してるかどうかって問題じゃないんだけど…
0297デフォルトの名無しさんNGNG
みんな楽しそうだなあ
0298デフォルトの名無しさんNGNG
>>296
デファクトスタンダードって言葉がある。
0299271NGNG
>>291
漏れはマズイと思う。
でも実際、漏れが 0x111 を指定して strchr() を呼ぶ事はないから問題ない。
0300デフォルトの名無しさんNGNG
>>251, >>290
つーか、「一般的なPC環境はWindowsだよね 」と言うのは、まあ当たってると思う。
しかし、C で作られたプログラムの一般的なプラットフォームが PC と言うのは了見が狭すぎ。
0301デフォルトの名無しさんNGNG
>>293
http://www.mkssoftware.com/docs/man3/strchr.3.asp
自分で探しなよ。
googleで検索したら一番上にあったよ。
0302デフォルトの名無しさんNGNG
>>300
soでもおんなじですが。
0303デフォルトの名無しさんNGNG
>>298
Cの規格にそんな言葉はありませぬ。
0304デフォルトの名無しさんNGNG
>>303
でも、規格はデファクトスタンダードによって作られる。
0305デフォルトの名無しさんNGNG
>>299
> 漏れはマズイと思う。

だったら、c = (char)c; はいらないんじゃないの ?

> でも実際、漏れが 0x111 を指定して strchr() を呼ぶ事はないから問題ない。

と言うなら、特にね。

(何で、これで「必要」と言う結論に至るのか理解できん...。)
0306デフォルトの名無しさんNGNG
>>305
少しは頭使え


  少  し  は  頭  使  え

0307デフォルトの名無しさんNGNG
というか
int hoge(char c);
この関数の引数が、符号拡張されて渡されるなんて言うのは、
議論の余地なく間違ってるよ。
0308デフォルトの名無しさんNGNG
>>301
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strchr.3.html

こっちは書いていないけど。
linux向けとはいえ、標準関数はきちんとANSIに乗っ取って書いてあるはず。
0309デフォルトの名無しさんNGNG
>>305
0x80-0xffを指定したときに、仕様通りに動作しないから
0310299NGNG
>>305
おい (怒)
「必要」 とは一言も言ってねえ。
第一、c = (char)c; が問題になるタイムクリティカルな局面では、
C なぞ使わん。
0311デフォルトの名無しさんNGNG
>>307
ネタですか?
0312デフォルトの名無しさんNGNG
>>309
309 は >>168 を試してないだろ。黙れ。
0313デフォルトの名無しさんNGNG
少しも話が進んでいない様ですが
気のせいですか。
0314デフォルトの名無しさんNGNG
>>308
それは記述が省略してあるんじゃない?
0315デフォルトの名無しさんNGNG
>>301 >>308
そんな 1 プラットフォームの実装なんか見せられたって意味ないよ。
ANSI ではどうなってる?
0316デフォルトの名無しさんNGNG
>>313
気のせゴホッゴホッ。。
0317デフォルトの名無しさんNGNG
char = signed charの環境で

char *str="\xff";

if(strchr(str,0xff)) とやると偽になるってこと?
0318デフォルトの名無しさんNGNG
316 は病に倒れました。
0319デフォルトの名無しさんNGNG
>>315
ネタですか?
0320デフォルトの名無しさんNGNG
>>317
ネタですか?
0321308NGNG
>>315
いやだから、、標準関数に関してはANSIに乗っ取っているってば。。。
もし拡張しているならきちんと明記してある(strstrの第二引数に""を渡した場合とか)
0322デフォルトの名無しさんNGNG
>>315
ANSIではcharでキャストするらしいよ。
0323317NGNG
>>320
わからん。試していないから。
これが真になるなら別にキャストは必要ないような・・・
0324デフォルトの名無しさんNGNG
>>310
> 「必要」 とは一言も言ってねえ。

はあ ?

>>271 「0x111 のような文字とは思えないデータでも文字データとして扱うなら必要」

自分の書いたことぐらい覚えておけ、ヴァカ。

> 第一、c = (char)c; が問題になるタイムクリティカルな局面では、
> C なぞ使わん。

タイムクリティカルだってさ。(藁
0325デフォルトの名無しさんNGNG
おまえらANSIぐらい読めよ。それでもC使いか?
0326デフォルトの名無しさんNGNG
>>312
うん。今度試してみる。
0327デフォルトの名無しさんNGNG
>>317
真になるよ。
charが8ビットなら。
0328デフォルトの名無しさんNGNG
>>325
お言葉ですが、この中に何人C使いがいるとお思いですか?
0329308NGNG
>>321
> 標準関数に関してはANSIに乗っ取っているってば。。。
> もし拡張しているならきちんと明記してある

間違いなくそうなのか?
その根拠が示されてないっての。

>>322
情報へのポインタをキボンヌ。
0330317NGNG
あ、わりぃ。>>317のstrchrはcharへのキャストがないstrchrと考えて。
0331デフォルトの名無しさんNGNG
>>328
すいません。馬鹿な素人ばかりでした。
0332デフォルトの名無しさんNGNG
>>329
> 情報へのポインタをキボンヌ。

「新ANSI C言語辞典」という本
0333310NGNG
>>324
>271 「0x111 のような文字とは思えないデータでも文字データとして扱うなら必要」

おおそうとも、まさにそう書いた。
だが、その後 「文字とは思えないデータははじいてしまうなら不要」 とも書いた。
その状況で、何で漏れが 「必要」 と言いきった事になるんだ?
0334java厨NGNG
ポインタではなくて参照でおながいします。
0335デフォルトの名無しさんNGNG


今 夜 は 出 来 の 悪 い 連 中 一 同 徹 夜 で す か
0336まつもと@RubyNGNG
>>334
参照=ポインタです
0337329NGNG
スマソ漏れは 315 だった・・・
322 サンクス。
0338デフォルトの名無しさんNGNG
>>334
ここは C のスレです。
0339デフォルトの名無しさんNGNG
>>335
オマエモナー
0340デフォルトの名無しさんNGNG
なんか落ちこぼれが集まって教室のすみで、いろいろ議論しているが
間違ったことばかり言っているのを聞いているようだ。
0341まつもと@RubyNGNG
>>338
Ruby>>>>>>>>>>>>>>>>>>>>>>>C=Javaです
0342デフォルトの名無しさんNGNG
おまえらC言語使わないでくれ。
たのむ。
0343デフォルトの名無しさんNGNG
>>340
オマエモナー
>>342
オマエモナー
0344デフォルトの名無しさんNGNG
>>333
お前は、リンクもたどれねーのか ?

>>271
0x111 のような文字とは思えないデータでも文字データとして扱うなら必要

>>291
それ余計にまずくない ?

>>299
漏れはマズイと思う。

と言うのなら、「0x111 のような文字とは思えないデータでも文字データとして扱う」なんて状況を何故書く ?
0345デフォルトの名無しさんNGNG
ここはオマエモナー厨の巣ですか?
0346デフォルトの名無しさんNGNG
以降

  ruby禁止
0347デフォルトの名無しさんNGNG
>>340
だったら、お前が正しいことを書いてくれ。
納得して、眠りたい。
0348デフォルトの名無しさんNGNG
お前ら

         お ど れ   お ど れ
0349317NGNG
そうか・・・
charで表せない値を渡した場合はstrchrを呼んだ奴が悪いとして、
charで表せる(CHAR_BIT == 8として)8ビット目が1となる値を渡した時はcharにキャストしないと環境によってはうまく動かないのか。
0350デフォルトの名無しさんNGNG
>>347
今夜は眠れない。
いや、

    眠    ら   せ   な   い 
0351デフォルトの名無しさんNGNG
以降

  char 禁止
0352デフォルトの名無しさんNGNG
>>349
まだずれとる。
0353333NGNG
>>344
  0x111 のような文字とは思えないデータでも文字データとして扱うなら必要
  文字とは思えないデータははじいてしまうなら不要

これは漏れの意思とは関わりのない厳然たる事実。

 > それ余計にまずくない ?
 漏れはマズイと思う。
 
これは漏れの単なる意見。
あんたはその区別がつかないほどの日本語 DQN なのか?
0354317NGNG
>>352
どこが?
実際に試してみてそういう結論に至ったんですが。
0355デフォルトの名無しさんNGNG
>>350
楽しませてくれ。
0356デフォルトの名無しさんNGNG
>>354
試さなくてもstrchr()の仕様が分かれば自明じゃん。
つーか、試して確認するってのはむしろ危険だよ。
0357デフォルトの名無しさんNGNG
>>351
それツライっす・・・
0358デフォルトの名無しさんNGNG
>>356
お前の脳内が危険だよ
0359デフォルトの名無しさんNGNG
ISO原文
"The strchr function locates the first occurrence of c (converted to a char)in the
string pointed to by s. The terminating null character is considered to be part of the
string."

わざわざ、括弧で書いてあるね。余計なことを考えさせる隙がない。























ぐぐる:「ISO/IEC 9899:1999(E) pdf」
0360デフォルトの名無しさんNGNG
>>358
なんで?
0361デフォルトの名無しさんNGNG
>>359
無駄な改行うざい
0362デフォルトの名無しさんNGNG
>>359
おお、それで検索するのか。
0363デフォルトの名無しさんNGNG
>>350
もう、えっちなんだからぁ。
あと2回はがんばってよ
0364デフォルトの名無しさんNGNG
そう書いてあるんだから納得しろって、なんか日本の教育みたいだな。
その理由まで考えさせない。
0365デフォルトの名無しさんNGNG
>>359の改行の下には
ぐぐる:「ISO/IEC 9899:1999(E) pdf」
と書いてあります。
0366デフォルトの名無しさんNGNG



 夜 は ま だ ま だ こ れ か ら み た い で す 。


 
0367デフォルトの名無しさんNGNG
>>364
なんでここで、

  日  本  の  教  育  が

出てくるんだ。
0368デフォルトの名無しさんNGNG
void hoge( char c ) ...
とか宣言してても
char ch;
...
hoge( ch );
のとき char -> int 変換される
これ C の仕様......?
0369デフォルトの名無しさんNGNG
>>364
いままで、strchr()の挙動(仕様)に関する議論だったんでしょ?
どういう経緯でそういう仕様になったかって話しも興味深いけど、
それは別の話だしね。
0370デフォルトの名無しさんNGNG
>>368
仕様です。
0371デフォルトの名無しさんNGNG
Cの仕様は

      し よ う  が  な い な ぁ
0372デフォルトの名無しさんNGNG
>>368
仕様ですが何か。
0373デフォルトの名無しさんNGNG
新聞配達がキターヨ
0374デフォルトの名無しさんNGNG
>>371は和田便。
0375デフォルトの名無しさんNGNG
>>368
> これ C の仕様......?

違います。
(このスレに約一名そう主張してる方がいますが)
0376デフォルトの名無しさんNGNG
お前らもうそろそろ結論をまとめようぜ。
0377デフォルトの名無しさんNGNG
>>375
1名ではないようです
0378デフォルトの名無しさんNGNG
>>375
主張していないのが約一名です
0379375NGNG
>>377
"約"の意味も知らない馬鹿ハケーン
0380デフォルトの名無しさんNGNG
>>379
こいつニセモノ。
0381デフォルトの名無しさんNGNG
言葉尻を捕らえて揚げ足取るのは

  夜  だ  か  ら  で  す  か  ?
0382デフォルトの名無しさんNGNG
>>375 は
「仲間ハズレ一人!」
とか言った本人が仲間ハズレだったという罠ですか?
0383デフォルトの名無しさんNGNG
>>381
必死だな。
0384デフォルトの名無しさんNGNG
言葉尻を捕らえて揚げ足取るのは

  C  だ  か  ら  で  す
0385デフォルトの名無しさんNGNG
ちなみにCの仕様です。
0386デフォルトの名無しさんNGNG
以降

  独 り 言 解 禁
0387デフォルトの名無しさんNGNG
>>368 の状況で、char -> int の型変換が起きる余地があるのか?
0388デフォルトの名無しさんNGNG
>>382
う。
もしかして仲間はずれかな?
仲間はずれでもいいけど、>>368が仕様だっていってるなら、
根拠を示して欲しいね。
0389デフォルトの名無しさんNGNG
>>387
だからCの仕様だっつってるだろ
0390デフォルトの名無しさんNGNG
以降

  「 以 降 」 禁 止
0391デフォルトの名無しさんNGNG
どうでもいいけど誰か結論書いてよ。
0392デフォルトの名無しさんNGNG
>>391
何に対する結論?
0393デフォルトの名無しさんNGNG
>>387
うちの gcc では起きました
0394デフォルトの名無しさんNGNG
>>388
つーかまず仕様書読め
0395デフォルトの名無しさんNGNG
宣言しなかったらcharがintになっちゃうんだってさ。
0396デフォルトの名無しさんNGNG
処理系異存です。
0397デフォルトの名無しさんNGNG
うぉ!
やべ・・・接続時間が2時間すぎた。電話代が・・・
0398デフォルトの名無しさんNGNG
>>387
変換が起きるといってる人は、winでcharがスタックに積まれるときに
4バイト使われるのを「変換される」「Cの仕様」と言ってました。
アホです。
0399デフォルトの名無しさんNGNG
つーか何の話してんの?
0400デフォルトの名無しさんNGNG
異存はありません
0401デフォルトの名無しさんNGNG
>>399
C言語にきまってんだろ
0402デフォルトの名無しさんNGNG
>>359 に照らし合わせると、>>45 は正しいな。
0403デフォルトの名無しさんNGNG
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
0404デフォルトの名無しさんNGNG
>>398
だから Linux 上の gcc でもなったんだってば
0405デフォルトの名無しさんNGNG
>>398
つーか「4バイト」なんてキミ以外一言も出てきてませんが。
0406デフォルトの名無しさんNGNG
>>402
正しい?
コンパイルエラーになりますが。
0407デフォルトの名無しさんNGNG
結論:キャストは仕様。
0408デフォルトの名無しさんNGNG
>>401
C言語のなんについての話?
0409デフォルトの名無しさんNGNG
>>404
やっぱりアホだ。
0410デフォルトの名無しさんNGNG
結論:

  s t r c h r ( )  は  ク  ソ

という事でよろしいか?
0411デフォルトの名無しさんNGNG
>>408
俺のムスコについて。
0412デフォルトの名無しさんNGNG
結論:キャストは仕様で使用
0413デフォルトの名無しさんNGNG
>>408
strchrの第二引数はcharにキャストする必要があるかないか。
0414デフォルトの名無しさんNGNG
そろそろ

  厨  房  が  暴  れ  そ  う  で  す
0415デフォルトの名無しさんNGNG
void hoge(char);
で、引数がintにキャストなんてされません。
0416デフォルトの名無しさんNGNG
>>409
アホは

  お  ま  え  一  人

0417デフォルトの名無しさんNGNG
>>413
だから、>>359 に従うとすればキャストする必要があるだろう。
0418デフォルトの名無しさんNGNG
結論:キャッスルランドは閉鎖。
0419デフォルトの名無しさんNGNG
>>415
それは

     415  の  希  望
0420デフォルトの名無しさんNGNG
>>416
どう考えても、アホはお前だよ?
0421デフォルトの名無しさんNGNG
>>417
話題は何かと聞かれたからそう答えただけだけど・・・
0422デフォルトの名無しさんNGNG
>>415
だから実際されたんだってば
0423デフォルトの名無しさんNGNG
>>415
>void hoge(char);
型はcharだけど、intの大きさで渡されるよ。
0424デフォルトの名無しさんNGNG
>>419
だから根拠しめしてよ。
規格のどこに書いてあるの?
0425デフォルトの名無しさんNGNG
とにかく仕様でそう決まっているからキャストする必要があるんだよな。
書いていなければしてもしなくてもかまわないと。
0426デフォルトの名無しさんNGNG
>>423
どれは規格じゃないよ。
0427デフォルトの名無しさんNGNG
>>424
仕様書全部読んでから出直して来い
0428デフォルトの名無しさんNGNG
早口言葉:キカクキキカイカイ
0429デフォルトの名無しさんNGNG
どれ?
0430デフォルトの名無しさんNGNG
>>423
規格と実装の区別がついてない…
0431デフォルトの名無しさんNGNG
>>423
なら型変換してないじゃん。単にsize(int)バイト分スタックを消費するというだけで。
0432デフォルトの名無しさんNGNG
>>168やったら、同じになった。
0433デフォルトの名無しさんNGNG
>>431
関数の中の演算はintだよ
0434デフォルトの名無しさんNGNG
>>427
どこにも書いてません。と。
0435デフォルトの名無しさんNGNG
>>413
strchrの第二引数ってintだろ。char渡したらintにキャストされるだろ。それだけの話か?
0436デフォルトの名無しさんNGNG
話がずれてずれてずれまくり
0437デフォルトの名無しさんNGNG
>>435
違う違う。
strchrを実装するさいに、intで渡されたものをcharにキャストする必要があるかないか。
0438デフォルトの名無しさんNGNG
徹マンみたいだな
0439デフォルトの名無しさんNGNG
今日のこのスレは楽しいな。

漏れは寝てたんだが、何かに突き動かされるようにして 2 時頃目を覚まし、
PC の電源を入れて 2 ちゃんを覗いてしまったんだが、思えばこのスレが
呼んでたんだろうな。

・・・オェー
0440デフォルトの名無しさんNGNG
1日で300以上もレスがつくのか。
こえーなあ。
0441デフォルトの名無しさんNGNG
>>437
だからキャスト必要だってば。
0442デフォルトの名無しさんNGNG
void hoge(char);
↑で、引数がintにキャストされるなんて言ってるのはアホです。
0443デフォルトの名無しさんNGNG
>>439
類は友を呼ぶ、ですね(w
0444デフォルトの名無しさんNGNG
>>441
話題について聞かれたからそう答えただけと何回言えば分かるんだよ(;_;)
0445デフォルトの名無しさんNGNG
>>442
実際されるんだからしかたないでしょ
0446デフォルトの名無しさんNGNG
>>437
あんたは >>359 と >>402 と >>425 を読め。
0447デフォルトの名無しさんNGNG
>>446
死ね
0448デフォルトの名無しさんNGNG
>>442
多分見解の違い
微妙に話しがズレてる
0449デフォルトの名無しさんNGNG
>>445
されてないよ。
0450デフォルトの名無しさんNGNG
strchrだけで、400レス以上も消費したのか・・・
0451デフォルトの名無しさんNGNG
>>445
それは「キャスト」とは言わない。
0452デフォルトの名無しさんNGNG
>>437
キャストすると決まっていればして
キャストしないと決まっていればしないで
なんも決まってなければてきとーにすればいいだけじゃないのか?
あとは規格を見るだけだろ?
0453デフォルトの名無しさんNGNG
>>452
嫌がらせですか?それとも単なる煽り?
0454デフォルトの名無しさんNGNG
>>445
スタックに渡されるのはint(レジスタの大きさ)だけど、
値はcharとして扱ってるはず。
アセンブラに直すと、上位ビットを切り捨てる処理がどっかに入ってるよ。
0455デフォルトの名無しさんNGNG
キャストと暗黙の型変換を混同してるヤシがいるな
0456デフォルトの名無しさんNGNG
>>447
オマエガナー
0457453NGNG
>>452
もしかして、話題について聞いた人?
ならごめん。
0458デフォルトの名無しさんNGNG
スタックに char が int の大きさで積まれるのは
キャストとも暗黙の型変換とも言わん
0459デフォルトの名無しさんNGNG
>>454
ずっとその話をしてるんだけど、なかなか納得してくれない。
0460453NGNG
>>456
文脈を判断できないお前が死ね
0461デフォルトの名無しさんNGNG
>>451
int にキャストする時と同じアセンブリコードが生成されるんだけどなぁ......
0462デフォルトの名無しさんNGNG
>>461
それは最適化で省かれたんじゃないの?
どういうコードでテストした?
0463デフォルトの名無しさんNGNG
結局動くけど、仕様でそうなってるからキャストは必要って理解でいい?
0464デフォルトの名無しさんNGNG
>>463
だからキャストは必要だって言ってるだろ
0465デフォルトの名無しさんNGNG
>>457
うん。そうそう。話題について聞いた人。
なんの話してんのよーわからんなぁー。
0466デフォルトの名無しさんNGNG
>>463
そう。

動く動かないはどうでもよいこと。仕様で決まっているからそうせざるをえない。
なぜと問うてはいけないのだ。
0467デフォルトの名無しさんNGNG
>>463
どれの話?
0468デフォルトの名無しさんNGNG
仕様で決まっているから

       し よ う が な い な ぁ 
0469デフォルトの名無しさんNGNG
くどい

       し よ う が な い な ぁ  禁 止

0470デフォルトの名無しさんNGNG
>>462
こういうコードです
char foo(char c) {return c + (char)1;}
int bar(int d) {char c = (char)d; int i; c = foo(c); i = (int)c; return i; }
0471デフォルトの名無しさんNGNG
>>463
> 結局動くけど、
45のコードだと、c=(char)c;がないと挙動が変化する。
(仕様どおりに動かない)
0472デフォルトの名無しさんNGNG
>>470
そのコードじゃ駄目だ。省かれてそう。
所々の(char)のキャストも無意味。
0473デフォルトの名無しさんNGNG
>>471
仕様は動きについてはどう定義しているの?
0474デフォルトの名無しさんNGNG
えー。結論。



        ば か ば っ か   b y ル リ

0475デフォルトの名無しさんNGNG
>>470
でも、fooの戻値の処理で、切り捨てはされてると思う。
0476デフォルトの名無しさんNGNG
>>474
ルリって誰だ?


     ル    リ   っ  て   誰    だ   !


お前か?
0477デフォルトの名無しさんNGNG
>>473
>>359に出てるよ。
0478デフォルトの名無しさんNGNG
>>467
463は>>45のcharキャストの話
0479デフォルトの名無しさんNGNG
アニオタウザイ


   ア   ニ   オ    タ    ウ   ザ   イ
0480デフォルトの名無しさんNGNG
こんな遅くに一体何人参加しているのだろうか?

番号! 1
0481デフォルトの名無しさんNGNG
strchr程度なら仕様書にこう書けとサンプルコードを示してくれればいいのに。
変数名も同じにしないと仕様書違反と。
0482デフォルトの名無しさんNGNG
>>480
もう朝ですが......
0483デフォルトの名無しさんNGNG
>>481
P.J.プラウガーの本でも読め
0484デフォルトの名無しさんNGNG
文字リテラルってCではintですよね。
8ビットコードは-128〜127なんですか?
0485デフォルトの名無しさんNGNG
>>483
プ
なんだそのだせー名前は。
0486デフォルトの名無しさんNGNG
>>484
いったいなんの話をしてるんだ?
0487デフォルトの名無しさんNGNG
>>484
intじゃなくてchar型の文字列。
0488デフォルトの名無しさんNGNG
>>484
文字コードはマイナスにならないよ。
0489デフォルトの名無しさんNGNG
>>484
処理系依存
0490487NGNG
s/文字列/配列/
0491デフォルトの名無しさんNGNG
>>485
http://www.yfcbookshelf.com/c%20language's%20books7.htm
0492487NGNG
文字リテラルか。
文字列リテラルと読み間違えた。スマソ
0493デフォルトの名無しさんNGNG
アニオタッテダレダ?

   ア   ニ   オ    タ    ッ    テ    オ    レ    ダ    !
0494デフォルトの名無しさんNGNG
>>488-489
どっちでしょう?ってか489なのかな。
0495デフォルトの名無しさんNGNG
>>488
printf("%d\n", 'ア'); を実行してから言え。
0496デフォルトの名無しさんNGNG
>>495
そう、それでやったらマイナスだった
0497デフォルトの名無しさんNGNG
こうまで話がこじれる原因は、VB厨か?


    V   B   厨   が   い   る   の   か   ?
0498デフォルトの名無しさんNGNG
>>470 をコンパイルしてできるコード(foo の部分だけ)です(gcc on Linux)
pushl %ebp
movl %esp,%ebp
subl $8,%esp
addl $-12,%esp
movsbl 8(%ebp),%eax
pushl %eax
call foo
movsbl %al,%eax
leave
ret
ここの movsbl ってのか char -> int 変換だと思うんですが、違います?
0499デフォルトの名無しさんNGNG
>>495
それはprintf内でsigned intとして扱っているだけ。%uにすればマイナスにはならないし。
0500デフォルトの名無しさんNGNG
>>494
文字リテラルの範囲は0〜UCHAR_MAX
0501デフォルトの名無しさんNGNG
>>494
charの大きさは8bit以上としか規定されていないので、
処理系に依存する。

さらに、charがsignedかどうかも規定されていないし、
したがって1の補数か2の補数表現をとるかも規定されていない。
0502デフォルトの名無しさんNGNG
>>498 は s/foo/bar/ です
0503デフォルトの名無しさんNGNG
>>498
だから、それをキャストとは言わない。
0504デフォルトの名無しさんNGNG
>>503
なんでよ〜。ぷぅ〜。
0505デフォルトの名無しさんNGNG
500突破!
0506デフォルトの名無しさんNGNG
>>498
ボケ。
それは 8bit → 32bit 変換であって、C の char → int 変換ではない。
第一、C の仕様の話をしているのに何でアセンブリコードが出てくるんだ?
0507デフォルトの名無しさんNGNG
皆なにげに起きてるなあ
0508デフォルトの名無しさんNGNG
>>500
charはunsigned charとは限らないだろ
0509デフォルトの名無しさんNGNG
>>506
なんで?
char c; int i;
で
i = (int) c;
するときと同じコードが引数渡す前にも出てるじゃん
0510デフォルトの名無しさんNGNG
int c = 'ア';
printf("%d",c);
ってやったらマイナスですた
0511デフォルトの名無しさんNGNG
>>510
それは何の確認にもならないってば(^^;;
0512デフォルトの名無しさんNGNG
>>504
たまたま君が調べた処理系がそうなってたってだけで、
Cの仕様とは関係ない。
0513デフォルトの名無しさんNGNG
>>499
じゃあ printf("%08X\n", 'ア'); にしとけ。
あんたの言う事が正しければ 000000B1 になるはずだ。
0514デフォルトの名無しさんNGNG
>(^^;;
2chで見るとなんかむかつく!
0515デフォルトの名無しさんNGNG
%dは影響ないでしょ
0516デフォルトの名無しさんNGNG
>>508
文字リテラルが0〜UCHAR_MAXというのはANSIで決まってるんで。
0517デフォルトの名無しさんNGNG
>>514
ゴメソ(^^;;
0518デフォルトの名無しさんNGNG
>>499はアホ。
0519デフォルトの名無しさんNGNG
>>509
キャストとはどうゆうことか口に出していってみろ
0520デフォルトの名無しさんNGNG
ANSI非準拠だったってことですかね
0521デフォルトの名無しさんNGNG
>>516
うるせーバカ。
0522デフォルトの名無しさんNGNG
>>509
だから、何で実際に吐き出されるコードの話をするんだ?
0523デフォルトの名無しさんNGNG
>>519
口に出していってみますた
0524デフォルトの名無しさんNGNG
"文字コード"はマイナスにはならないでしょ(笑)
0525デフォルトの名無しさんNGNG
>>524
うるせーバカ。
0526デフォルトの名無しさんNGNG
>>522
いや......変換されるなんて言ってるやつはアホとか言ってた人がいたから実例を出したまでなんですが......
0527デフォルトの名無しさんNGNG
>>516は勘違いだった。ごめん。
0528デフォルトの名無しさんNGNG
ガーン
0529デフォルトの名無しさんNGNG
(^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
 (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
   (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
    (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;  (^^;;
0530デフォルトの名無しさんNGNG
if('ア' < 0) puts("minus"); else puts("0 or plus");
0531デフォルトの名無しさんNGNG
>>530
その比較は処理系依存(リテラルcharの符号依存)
0532デフォルトの名無しさんNGNG
>>530
甘い。
puts('ア'<0?"minus":"0 or plus");
0533デフォルトの名無しさんNGNG
>>532
七行スレにカエレ
0534530NGNG
532 は何を争ってる (笑)
0535532NGNG
>>534
コードの見づらさかな、とおもって(w
0536デフォルトの名無しさんNGNG
>>530
minusでした、always trueだそうです。

書いてなかったけど、環境はbcc32.exeです。
0537デフォルトの名無しさんNGNG
文字リテラルがマイナスになることはあっても、(少なくとも現存する)文字コードがマイナスになることはない。
違う?
0538デフォルトの名無しさんNGNG
>>530
うちでも minus (gcc on Linux) でした。
0539デフォルトの名無しさんNGNG
>>537
文字コードの解釈次第。
0540デフォルトの名無しさんNGNG
>>536
デフォルトの char が unsigned char か singed char か、
っつー話じゃなくて?
0541デフォルトの名無しさんNGNG
>>540
それは処理系依存でしょ?
0542デフォルトの名無しさんNGNG
きっと問題はcharのビット数だろう
0543デフォルトの名無しさんNGNG
charは無関係では?
0544デフォルトの名無しさんNGNG
unsignedの実装によるかもしれない
0545デフォルトの名無しさんNGNG
文字リテラルは文字コードをcharに型変換したうえ更にintに型変換したものと考えていい?
0546デフォルトの名無しさんNGNG
謎はすべて解けた!

犯人は
0547デフォルトの名無しさんNGNG
きっと問題はcharの読み方だろう。
0548デフォルトの名無しさんNGNG
キャー
0549デフォルトの名無しさんNGNG
'ア'<0 ってintに格上げされるんだっけ?
0550デフォルトの名無しさんNGNG
>>547
私がチャーと読んでいた犯人です。
おさわがせしてしまって申し訳ありませんでした。
0551デフォルトの名無しさんNGNG
でもアリバイがあるから犯行は不可能なはず・・・
0552デフォルトの名無しさんNGNG
>>549
文字リテラルはint型。
sizeof('ア')ってやってみればわかる。
0553デフォルトの名無しさんNGNG
チャー:天才ギタリスト
キャー:叫び声
シャー:char
0554デフォルトの名無しさんNGNG
まぁcでchar c = 'ア';なんて書く奴は普通いない訳だが。
0555デフォルトの名無しさんNGNG
>>554
その場合はwchar_tだな
0556デフォルトの名無しさんNGNG
ちゃる
0557デフォルトの名無しさんNGNG
それはこのトリックで説明が出来る
0558デフォルトの名無しさんNGNG
じっcharの名にかけて!
0559http:// ppp0329.va-tyo.hdd.co.jp.2ch.net/NGNG
guest guest
0560デフォルトの名無しさんNGNG
>>532
甘い
puts(&"0 or plus\0minus" [('ア'< 0)*10]);
でも長くなった・・・
0561デフォルトの名無しさんNGNG
おまえら、もうネタないんだろ?
0562532NGNG
>>560
読みづらさにおいて負けました。
0563デフォルトの名無しさんNGNG
すごいですね
0564デフォルトの名無しさんNGNG
すごいですね(^^;;
0565デフォルトの名無しさんNGNG
結局、void hoge(char ...
で char -> int 変換されるってのは仕様ではないんですか?
0566デフォルトの名無しさんNGNG
ちょっと縮んだ
puts("0 or plus\0minus"+('ア'< 0)*10);
0567デフォルトの名無しさんNGNG
ここはすごいインターネットですね
0568デフォルトの名無しさんNGNG
寝るね。
お(^о^〃)や(^О^〃)しゅ(^。^〃)みぃ(^-^〃)♪
0569デフォルトの名無しさんNGNG
>>568
カワイイ!
0570デフォルトの名無しさんNGNG
>>565
仕様です。
0571デフォルトの名無しさんNGNG
バイナラ
ラナイバ
0572デフォルトの名無しさんNGNG
>>565
もうそんなことはどうでもいいんだよ!!
0573デフォルトの名無しさんNGNG
おはよう!
0574デフォルトの名無しさんNGNG
謎はすべて迷宮入りになった
0575デフォルトの名無しさんNGNG
おっはー
0576デフォルトの名無しさんNGNG
>>570
仕様なのか。じゃあ仕様じゃないって言ってた人はみんなアホだったのね。分かった。寝る
0577デフォルトの名無しさんNGNG
さて、仕事するか
0578デフォルトの名無しさんNGNG
ちなみに「変換」って、キャストのことではないよ
0579デフォルトの名無しさんNGNG
>>577
いまから仕事かよ!
つーか、

  今 日 は 休 日 じ ゃ な い の か ? 

0580デフォルトの名無しさんNGNG
>>576
おいっちょっと待て逃げるきか。
0581デフォルトの名無しさんNGNG
>>578
???
0582デフォルトの名無しさんNGNG
intというか、intと同じサイズのメモリに。じゃないの。
そのメモリから関数側はcharで受けるだけでしょ。
0583デフォルトの名無しさんNGNG
>>579
ヒッキーが働いているふりをするとそうなります。
0584デフォルトの名無しさんNGNG
>>579
国王に休日はありません
0585デフォルトの名無しさんNGNG
これから寝るという、

  大  仕  事  が  控  え  て  ま  す

が何か。
0586デフォルトの名無しさんNGNG
で、charはintなの?
0587デフォルトの名無しさんNGNG
>>586
(゚Д゚)ハァ?ネロ!
0588デフォルトの名無しさんNGNG
飯食おう
0589デフォルトの名無しさんNGNG
>>586
仕様です。
0590デフォルトの名無しさんNGNG
>>552
gcc だと
#include <stdio.h>
int main( int argc, char** argv ){
 printf( "%d\n", sizeof( 'a' ) );
 printf( "%d\n", sizeof( int ) );
}
で出力は
1
4
だったわけですが… これは?
0591デフォルトの名無しさんNGNG
>>590
それは C++ だゴルァ
0592デフォルトの名無しさんNGNG
>>590
こちらでは
4
4
でしたか何か?
0593デフォルトの名無しさんNGNG
ちっ、静まったか。
0594デフォルトの名無しさんNGNG
>>590
ちょっと待て。mainの型省略してコンパイル通るか?
#include <stdio.h>
main(){
 printf( "%d\n", sizeof( 'a' ) );
 printf( "%d\n", sizeof( int ) );
}
0595594NGNG
>>590
>>591
0596デフォルトの名無しさんNGNG
>>594
通る場合もある。
その場合は void とみなされ、ANSI 非準拠。
0597デフォルトの名無しさんNGNG
>>594
全角スペースのせいでコンパイルが通らない罠
0598594NGNG
あ、通るや。スマソ
>>590
でも、それはC++だから。
0599デフォルトの名無しさんNGNG
>>591
あ、つい… cppでやっちった。
0600デフォルトの名無しさんNGNG
590 が、C なんか使う気は全くないと白状しました。
0601デフォルトの名無しさんNGNG
>>596
Cならint、C++ならvoidだ
0602デフォルトの名無しさんNGNG
int mainなのに戻り値も無しか…。(プ
0603デフォルトの名無しさんNGNG
>>602
C++ならなくてもええからなぁ。
0604デフォルトの名無しさんNGNG
なんでそんなに細かい違いが有るんですか?
0605デフォルトの名無しさんNGNG
#include <stdio.h>
int main( int argc, char** argv ){
 printf( "%d\n", (unsigned char)( 'a' ) );
 printf( "%d\n", (signed char)( 'a' ) );
 return 0;
}
97
97

お前等一晩でいくつレス作ってるんだ!
0606デフォルトの名無しさんNGNG
1日経ってないぞ!
0607デフォルトの名無しさんNGNG
8 頭身スレを超えろ!
0608デフォルトの名無しさんNGNG
CとC++は別物
0609デフォルトの名無しさんNGNG
うお、すげー!!

寝てる間にこんな祭りがあったとは。
しかし確かに話の質がやけに低いな、最近。
しかもなぜかC99の規格まで持ち出してるわ。
0610デフォルトの名無しさんNGNG
ところで >>605のコードは一体何が言いたいんだろう?
0611デフォルトの名無しさんNGNG
('a')
0612デフォルトの名無しさんNGNG
あんまりほいほい答るから低レベル化するのかね。とりあえず609にはレベルの高い話とやらをしてもらいたい。
0613デフォルトの名無しさんNGNG
#include <stdio.h>
int main( int argc, char** argv ){
 printf( "%d\n", (unsigned char)( 'ア' ) );
 printf( "%d\n", (signed char)( 'ア' ) );
 return 0;
}
117
-79

605 も何かとぼけてるな。
0614デフォルトの名無しさんNGNG
ああ
日本の将来が危ぶまれ
0615デフォルトの名無しさんNGNG
>>612
おいおい、少数派の正論者が初心者共に厨呼ばわり
されるような場所で、レベルの高い話とやらをしても
馬の耳に念仏だろが。

つーか、煽る暇があるだったら、誰も指摘しない>>180の
間違いでも教えてやれ。
0616デフォルトの名無しさんNGNG
別にどこもおかしくないが。
0617デフォルトの名無しさんNGNG
>>615
漏れは 612 じゃないが・・・。
・・・。
まさか変数名が間違ってるって事じゃないよな?
そんなコンパイルすれば誰もが気付くような間違いを指摘するような
重箱の隅つつきをしてる訳じゃないよな?
そんな情けない事しないよな?

ついでに訊くと、615 は 609 じゃないよな?
煽られたりしてないよな?
0618デフォルトの名無しさんNGNG
明日できることは今日しないし明日もしない
0619デフォルトの名無しさんNGNG
>>615
> 暇があるだったら

プ
0620デフォルトの名無しさんNGNG
>>615
煽り返す暇があるだったら、誰も指摘しない>>180の
間違いでも教えてやれ。
0621デフォルトの名無しさんNGNG
>>1
> みんな大好きなんです。このシリーズの速さがそれを物語っています。

ワラタ
おう大好きだよ
0622620NGNG
かぶった (;´Д`)
0623615=609NGNG
>>616
ん?それだけ?
それよりコードの肝心な誤りの方を指摘してやればいいのに。

>>617
スペルミスならアホでも気付くというか、
いちいち指摘するようなことじゃないわな。
それとも、ここには入力ミスを指摘して喜ぶ
ようなカスでもいるんかいな?

> ついでに訊くと、615 は 609 じゃないよな?
> 煽られたりしてないよな?
よくわからんが、レスを付ける=煽られる
というのなら、煽られてるわけだが。
0624デフォルトの名無しさんNGNG
>>623
ごちゃごちゃ言わずにコンパイルしてみな。
0625objective_c--NGNG
typedef struct objective_c
{
  long private_state; // 関数のアドレス
  
  char *public;
  long other;
}
0626デフォルトの名無しさんNGNG
さぁ面白くなってまいりました。
0627デフォルトの名無しさんNGNG
>>625
何が言いたい。
0628デフォルトの名無しさんNGNG
>>624
はいはい。してみたよ。で、何か?
0629デフォルトの名無しさんNGNG
>627
C最強(...少しデクリメント)
0630デフォルトの名無しさんNGNG
もともと煽られている色は濃かったが、623 は特濃だな。

>>628
で、どうだった?
strchr() の機能として問題になる動作は出た?
動作テストは当然したんだよね?
まさかコンパイルだけして後は何もしていないなんて間抜けな事はしてないよね?
もちろん変数名の誤りは直した上でコンパイルしたんだよね?
コンパイル通らなかったなんてケチはつけないよね?
0631デフォルトの名無しさんNGNG
gccって英語のサイトばっかで、どうしたらいいかわかんないですけど・・・
とりあえず、cygwinはインストールしたんですが
コマンドプロンプトみたいなわけわからんものがあるだけで、
コンパイルとか出来ないです
どうしてらいいんですか?
0632デフォルトの名無しさんNGNG
>>625
関数ポインタの格納に long って・・・。
型が分からないとしても、せめて void *private_state; だろうに・・・。
0633デフォルトの名無しさんNGNG
>>631
「gcc フロントエンド」 でぐぐってくれ。
0634デフォルトの名無しさんNGNG
>>632
確かに...

> 関数ポインタの格納に long って・・・。

VB 厨かも知れんな。
0635デフォルトの名無しさんNGNG
>>631
ウィソ厨はおとなしく bcc でも使ってたらどうかと
0636デフォルトの名無しさんNGNG
628 必死でコンパイル/テスト中
0637デフォルトの名無しさんNGNG
>>628
脳内バグは取れましたか?
0638デフォルトの名無しさんNGNG
あ、終わりですか?
0639デフォルトの名無しさんNGNG
終わりというか焉わり
628 の
0640デフォルトの名無しさんNGNG
>>628 はにげだした!
0641デフォルトの名無しさんNGNG
脳内バグは解決? よかったよかった (・∀・)
0642デフォルトの名無しさんNGNG
>>628 は昼食を摂っている、とか
0643デフォルトの名無しさんNGNG
>>642
いや、>>616-617 から 1 時間以上経ってるから、それは無いだろう。
0644デフォルトの名無しさんNGNG
>>628 の脳内
-------------
Segmentation error (core dumped)
-------------
0645デフォルトの名無しさんNGNG
しかしまあ、あれだな。
脳内バグか本当にバグがあるかは関係無く、問題があるなら普通それを素直に
指摘するよな。
という事は、つもりがあるかは別として 628 は煽りだったわけだ。
漏れらも煽られたわけだな、くそう。
0646デフォルトの名無しさんNGNG
ファイルの同期を取るプログラムを作りたいんですが
ファイルのサイズや更新日時の情報を得るにはどうすれば良いのでしょう?
すみませんが、教えてもらえないでしょうか?
0647デフォルトの名無しさんNGNG
>>646
OSはなんですか?
0648デフォルトの名無しさんNGNG
fstat
0649464NGNG
とりあえずunix(solalis)でやっています。
それができたらwindowsのdosでやってみようかなと。
0650デフォルトの名無しさんNGNG
うーん、stat 系は環境依存なんだが・・・この際仕方ないか。
模範回答は 647 だな。
0651650NGNG
これだ。
http://www.catnet.ne.jp/kouno/c_faq/c19.html#12
0652464NGNG
>>651
ありがとうございます。
あとはがんばってネットで調べてみます。
0653650NGNG
いや、すまん、651 は 646 を解決する情報ではないのだが・・・。 
0654623NGNG
はあ、なんか煽られてるよ俺。
>>630
回答はすべてYes。
というか、ソースに間違いがあるんだから当たり前だわな。

んで、そういうあんたも動作テストは当然したんだよね?
で、どうだった?
strchr() の機能として問題になる動作は出なかったの?

というか、暇つぶしのネタに乗ってきてくれたのは
うれしいが、低レベルな問題をこれ以上引っ張るのも
アホらしいので答えを教えてあげましょうか?

>>645
> という事は、つもりがあるかは別として 628 は煽りだったわけだ。
煽ってきた612に対してネタを振ったつもりだったんだがな。
こういうのを「たくさん釣れた」っていうのかな?
0655デフォルトの名無しさんNGNG
/* フィボナッチ数列を求める */
int fibonacci(int n)
{

if(n==1||n==2)
return(1);

else
return(fibonacci(n-1)+fibonacci(n-2));
}

これを再帰を使わずに書くとどうなる?
0656デフォルトの名無しさんNGNG
>>655
なんか、さんざん出た気がするなぁ
int fibonacci( int n ) {
int a = 1, b = 0;
while ( n-- > 0 ) {
int t = a;
a += b;
b = t;
}
return b;
}
0657デフォルトの名無しさんNGNG
>>655
n=3からループさせる。
0658デフォルトの名無しさんNGNG
for(i=0;i<n;i++){a=b+c;b=a;c=b}
0659656NGNG
しまったボケなきゃいけなかったのか
int fibonacci( int n ) {
switch ( n ) {
case 1: return 1;
case 2: return 1;
case 3: return 2;
case 4: return 3;
case 5: return 5;
.....
}
return 0
}
0660デフォルトの名無しさんNGNG
>>654
ぜひ答えを教えてくれ。
正直、漏れはあんたが何をいけないと思っているかさっぱりわからん。
お手上げだ。
0661デフォルトの名無しさんNGNG
昨日も >>654 みたいなヤシがいるから祭りになったんだよな

てか、同一人物?
0662デフォルトの名無しさんNGNG
>>654
お帰り。ぜひ回答おねがいします。
0663デフォルトの名無しさんNGNG
654の行動予想。
>>660 >>662などを馬鹿にします。もちろん答えは書きません。
0664デフォルトの名無しさんNGNG
>>660 >>662
そんな言い方ではダメだ!
「おながいします」 と言え!!
0665デフォルトの名無しさんNGNG
おなにーしてきていいですか?
0666660NGNG
おながいします。
0667660NGNG
>>665
済まないが、654 が回答するまで待っててくれ。
0668デフォルトの名無しさんNGNG
もっとお母さんみたいに言ってくれ。
0669デフォルトの名無しさんNGNG
>>654 の脳内でメモリアクセス違反が発生しました
ただいま再起動中です......しばらくお待ち下さい
0670660NGNG
>>668
言いますた。
0671デフォルトの名無しさんNGNG
敗者の弁マダー? >>654
0672デフォルトの名無しさんNGNG
おなにー終わったんですが、ここは進展ないですね
0673デフォルトの名無しさんNGNG
c言語でオブジェクト指向。
0674623NGNG
やー何か盛り上がってるね、チミたち。
俺は昨日の祭りの時はいなかったんだよね。

んで、正解は...
180のコードでは第2引数に '\0' が渡された時に
NULLを返してしまう。
strchrでは '\0' も文字列の一部として
その文字位置(ポインタ)を返しましょう。

>>663
お前の予想は外れちゃったね。この馬鹿。
0675デフォルトの名無しさんNGNG
ん?ピタリとレスが止んだなw
0676デフォルトの名無しさんNGNG
グゥ。。。
0677デフォルトの名無しさんNGNG
>>674
ああなるほど、そういう事か。
ありがとう、全然気付かなかった。


・・・とは素直に言えないな。
気付いたなら 615 の時点でも言えたはずだ。
なぜ煽るような事をした?
0678663NGNG
>>674
漏れのカキコのおかげで未来が変わったんだよ(w
0679デフォルトの名無しさんNGNG
>>674
やっとわかた。ありがとう。

>>678
その可能性もあるね。
0680デフォルトの名無しさんNGNG
>>674
性格ワル。キモ
0681デフォルトの名無しさんNGNG
>>674
俺は今来たから素直にありがとう
0682デフォルトの名無しさんNGNG
>>673
構造体と対応関数を書けばいくらでもできるだろう。
0683623NGNG
>>677
上で書いたように、元々は煽ってきた>>612に対する
ネタ振りのつもりだったんだが、それが
なぜか>>617の書き込みを筆頭に煽られまくっちゃったんだわ。

本当に気分を害した人がいれば謝るよ。ごめんね。

>>663
ワロタ。実はそうだったりしてな。
0684677NGNG
>>683
そうだな、確かに 612 は煽りだ。
だが、客観的に見返してみろ、>>615 も立派な煽りだぞ。
それに、煽るつもりが全く無かったのなら >>645 の時点で反省があったはずだが
「こういうのを「たくさん釣れた」っていうのかな?」 ってちょっと調子に乗ってたな。
そこは気に食わなかった。
でも、ちゃんと詫びも入ったし、ケンカ両成敗と言う事で。

・・・C では負けたがナー。
そう、負け惜しみだが、普通 '\0' を探す場合は strlen() を使うから、
全然気がつかなかった。
0685684NGNG
そうか、ちゃんと初期化されている文字列なら strchr('\0') が NULL を返す事が
無いから、sprintf(strchr(str, '\0'), "%d", hoge); とかできるわけだ。
今までずっと sprintf(&str[strlen(str)], "%d", hoge); ってやってたよ。
0686デフォルトの名無しさんNGNG
テストの重要性を思い知らされるな。
まだバグがあるかもしれんな。
0687デフォルトの名無しさんNGNG
各種ヘッダファイルに対応する関数の説明一覧とかがあるサイトあったら教えて下さい
0688デフォルトの名無しさんNGNG
ぐぐれば見つかるんじゃない?
0689デフォルトの名無しさんNGNG
>>687 www.microsoft.com
0690デフォルトの名無しさんNGNG
time(null)
↑
コレの戻り値って何ですか?
0691デフォルトの名無しさんNGNG
>>690
リファレンスやヘルプや参考書が手元に無いの?
さらに、Web で検索はできない?

戻り値は現在の日時で、万国標準時 (UCT) の 1970 年 1 月 1 日の 00:00:00
からの経過時間を秒単位で表した数値。
型は time_t で、実装は処理系依存。
0692デフォルトの名無しさんNGNG
strchrって\0も検索対象にいれるのか?
0693デフォルトの名無しさんNGNG
>>692
>>359
0694デフォルトの名無しさんNGNG
>>693
わけわからん。
書いていないから\0も含むってのか?
0695デフォルトの名無しさんNGNG
MAX_PATHはヌル文字を含めた長さですか?
0696デフォルトの名無しさんNGNG
夜中の論争は書籍「エキスパートCプログラミング」の52ページに関するものでしょうか・・・
0697デフォルトの名無しさんNGNG
>>695
ヌル文字を含めた長さであって
ヌル文字を含まない長さである。

って話をどっかで読んだ覚えがある。詳しくは規格書読め下さい。
0698デフォルトの名無しさんNGNG
>>696
持ってないから引用してくれると嬉しいです。
お願いします。
0699デフォルトの名無しさんNGNG
>>694
英語が読めないのか ?

"The terminating null character is considered to be part of the string."

ぐらい訳せよ。
0700デフォルトの名無しさんNGNG
K&R第2版では240ページ?
0701デフォルトの名無しさんNGNG
>>699
読めますけど。
0702デフォルトの名無しさんNGNG
ANSIとISOの規格って同じもの?
0703698NGNG
>>696
>>700に教えてもらったK&Rの方見てみます。お二方どうもありがとう。
0704デフォルトの名無しさんNGNG
>>697
じゃあMAX_PATH+1としておけば間違いないということ?
0705デフォルトの名無しさんNGNG
>>704
そこらへんは環境依存
0706デフォルトの名無しさんNGNG
>>359

C99の仕様書の原文なんて持ってこられても困るんですが。
1989年のANSIの企画書の原文を引用してください。
0707デフォルトの名無しさんNGNG
>>701
じぁあ、その訳書いてみ。
0708デフォルトの名無しさんNGNG
情報を小出しにするからCスレはすぐ延びるんだろうな
0709デフォルトの名無しさんNGNG
自信がないから一気に出せないんだよ。
基本的に他人に意見を聞いてからだもん。
0710デフォルトの名無しさんNGNG
>>706
何を今さらって感じだけど、人にものを頼むのにずいぶん偉そうな態度の奴だな。
お前が金出して買えよと言いたくなる。
0711デフォルトの名無しさんNGNG
”終端塗る文字は文字列の一部と考えられる”
0712デフォルトの名無しさんNGNG
charが式中でintに変換されるのは本当だったんだね…
0713デフォルトの名無しさんNGNG
>>711
で、理解できた ? > >>692
0714デフォルトの名無しさんNGNG
Cスレ最速記録達成・・・か・・・
0715デフォルトの名無しさんNGNG
おお、目を離した隙にまた沸いてるよ。
このスレは 24 時間フル稼動か・・・。

ところで、C99 は C じゃないってつっぱねるのはどうよ?
0716デフォルトの名無しさんNGNG
アルファブレンディングとかスプライトを使っているのはゲームプログラマくらいな
ものなんでしょうか?
0717デフォルトの名無しさんNGNG
丸一日で700レスか、、、
0718デフォルトの名無しさんNGNG
>>716
ああ、普通そんな事する必要無いからな。
時々、デスクトップアクセサリを作ってる人がやるくらいだ。
ところでスレ違いだが大丈夫か?
0719デフォルトの名無しさんNGNG
>40 :デフォルトの名無しさん :02/10/26 22:07
>strchr()の中身みたいんですけど、どこに書いてありますか?なんでもおk

すべてはここから始まった・・・
40居るか?でてこーい!
0720デフォルトの名無しさんNGNG
>>717
なんだかんだ言ってCはデファクトスタンダードだね
0721デフォルトの名無しさんNGNG
おれが有意義な日曜の休日をすごしてる間もおまえらは、
strchrについて、不毛な議論をしてたですか。
0722デフォルトの名無しさんNGNG
改行コードで始まる行を出力しない簡単なやつをつくってみたんですが
ちゃんと改行されてしまいます
どこがおかしいのでしょうか

#include<stdio.h>
int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;
if((fp=fopen(argv[1],"r"))!=NULL){
while(fgets(line,BUFSIZ,fp)!=NULL){
if(line[0]=='\n')
continue;
printf("%s",line);
}
}else exit(1);
return 0;
}
0723デフォルトの名無しさんNGNG
>>722
とりあえず '\r' もとってみたら
0724デフォルトの名無しさんNGNG
>>722
ん?動かしてみたけどちゃんと動いたぞ?
0725デフォルトの名無しさんNGNG
>>722
改行コードで始まると思ってる行が、'\t\n' とか ' \n' とかなってないか ?
0726デフォルトの名無しさんNGNG
>>710
別に頼んでいるわけじゃないんだが・・・
C99を標準だなんて言わないでほしいってこと。
0727デフォルトの名無しさんNGNG
>>722
きっと改行だけしたつもりが、スペースやタブがはいってしまったんでしょ。
0728デフォルトの名無しさんNGNG
>>722
漏れのところも動いた。
テストデータのテキストの方に問題ありそう。

>>726
何を言っているんだ?
C99 も 1 つの標準だろう?
0729デフォルトの名無しさんNGNG
>>728
文書のうえだけでの標準・・・
0730デフォルトの名無しさんNGNG
>>722
スペースやタブが入っていても大丈夫にしてみたぞ。

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;

if ((fp = fopen(argv[1],"r")) != NULL) {
while (fgets(line, BUFSIZ, fp) != NULL) {
int i = 0;
while (line[i] == ' ' || line[i] == '\t') i++;
if(line[i] == '\n')
continue;
printf("%s", line);
}
} else exit(1);
return 0;
}
0731デフォルトの名無しさんNGNG
>>730
isspaceじゃだめ?
0732デフォルトの名無しさんNGNG
>>731
isspace()では、'\r'や'\n'も飛ばしてしまうよ。
0733デフォルトの名無しさんNGNG
>>722
windowsでデフォルトがバイナリモードにになってるとか
0734デフォルトの名無しさんNGNG
>>732
それで問題ないでしょ?

・・・・あれ?なんか勘違いしているかも、、
0735デフォルトの名無しさんNGNG
isspace()を使って書き換えてみた。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(int argc, char **argv)
{
char line[BUFSIZ];
FILE *fp;

if ((fp = fopen(argv[1],"r")) != NULL) {
while (fgets(line, BUFSIZ, fp) != NULL) {
int i = 0;
while (isspace(line[i])) i++;
if (line[i] == '\0')
continue;
printf("%s", line);
}
} else exit(1);
return 0;
}
0736デフォルトの名無しさんNGNG
どうでもいいけど
printf("%s", line);
ってヤメてくんねぇかな
0737デフォルトの名無しさんNGNG
>>736
fputsをstdoutに使うよりも素直じゃない。
俺ならそうするね。
0738デフォルトの名無しさんNGNG
たとえば以下の部分が

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
char line[BUFSIZ];
FILE* fp;
っていうふうになります?
なりません
なんでかな
ちなみにcygwin上です
関係ないか
0739746NGNG
>>736
別にいいんじゃない?
fputs(line, stdout) と書けとでも?
大差ないし。
0740デフォルトの名無しさんNGNG
>>734
isspace()を使う場合は、最後に'\n'でなく'\0'と比較するように書き換える
必要がある。
0741デフォルトの名無しさんNGNG
ここはバカばっかですか?
printf(line);
でいいだろーが
0742デフォルトの名無しさんNGNG
>>736
たとえばどんな風に書いたほうがすきですか?
参考のために教えてください
0743739NGNG
未来から来てしまった・・・

>>738
何を訴えたいのか読み取れないような。
0744デフォルトの名無しさんNGNG
>>741
lineに%が含まれていたらどうするんだよ・・・・
フォーマット文字列には定数を与えるのが鉄則。
0745デフォルトの名無しさんNGNG
空行のあるなしのことでは?
0746デフォルトの名無しさんNGNG
>>741
ヴォケ。
テキストデータに % が入ってたらどーするんだ。
0747743NGNG
>>745
ああ、了解。
738 はソースじゃなくてテキストデータなのね。
0748デフォルトの名無しさんNGNG
>>741
>ここはバカばっかですか?
> printf(line);
> でいいだろーが

 当然ネタだろうが、つられておこう。
 line[]に"%s%d"とか入ってたらどうする。
0749デフォルトの名無しさんNGNG
>>729
既にgccもDigital MarsもComeauもSGIのもSunのもhpのも、
全部とは言わないが相当程度サポートしてるけど?>C99
0750デフォルトの名無しさんNGNG
printfは一般的にスタックの消費が激しいって本当ですか?
以前、スタックの消費を100KB以下に押さえた軽いprintfをつくろうというスレッドがあったと思うんですが。
0751デフォルトの名無しさんNGNG
>>750
printf()でスタックが100KBも消費するならLSI-Cとかどうするんだ?
0752デフォルトの名無しさんNGNG
>>749
規格のすべてをサポートしていないのでは、準拠しているとはいえないのでは?
0753デフォルトの名無しさんNGNG
電波ゆんゆん。
0754デフォルトの名無しさんNGNG
>>751
でもそう書いてあったし・・・
100Bじゃなくて100KBだったはず。
0755754NGNG
信じられないからきいているんですよ。
0756デフォルトの名無しさんNGNG
>>752
(゚Д゚)ハァ?
749 の何をどう解釈したらそんな言葉が出るんだ?
749 は全てのコンパイラがサポートしているわけではないと言っているが、
規格のすべてをサポートしていないとはこれっぽっちも言っとらん。
0757デフォルトの名無しさんNGNG
>>750 >>754 >755
printf() のソース見れ。
ソース無くて読めなくても、実際使って問題が出てないなら深く考えるな。
0758デフォルトの名無しさんNGNG
>>756
それならANSIの規格だってすべてのコンパイラがサポートしているとは限らないということになるけど?いい?
0759デフォルトの名無しさんNGNG
>>719
>>40はネタ帳を持っている。
0760デフォルトの名無しさんNGNG
>>757
じゃあ深く考えないことにします。

(100KBなんて相当再帰処理を繰り返したりしなければ消費しないよな・・・)
0761デフォルトの名無しさんNGNG
つーかまあ、printf() の処理内容考えると、やっぱり 100 KB じゃなくて
100 Bytes だろう。
100 KB もあったら相当なコードとデータを詰めこめる。
0762756NGNG
>>758
その上でこのスレは標準規格に則って動いてるんだろ。
何が問題?
0763デフォルトの名無しさんNGNG
>>762
どっちの標準にそって動いているの?
0764デフォルトの名無しさんNGNG
VC6 の printf() のソース、_output() ってソースの無いルーチン呼んでる
だけだから読んでも得るものねーYO・・・
0765デフォルトの名無しさんNGNG
次スレからは>>1にC99の話題は禁止とかいてほしい・・・
0766デフォルトの名無しさんNGNG
つか、DOSのCではprintfが呼び出せなくなるような。
0767デフォルトの名無しさんNGNG
>>763
さあ、人それぞれだろ。
でも、ANSI と ISO がこのスレでぶつかっているところを見たことが無い。
何が問題?
0768デフォルトの名無しさんNGNG
>>764
_output()のソースがどこかにあったと思うよ。
0769デフォルトの名無しさんNGNG
>>766
えっ・・・そりゃ一体どういう状況??
0770デフォルトの名無しさんNGNG
>>767

コンパイル時に大きさの決まらない配列とか・・・・
0771デフォルトの名無しさんNGNG
>764
ハァ?
じゃあoutput.cは何なんだよ?
0772デフォルトの名無しさんNGNG
ネタ帳に
  標準とは何を指すか
を追加
0773デフォルトの名無しさんNGNG
>769
スタック100KByte取るような関数はDOSアプリでは
使えない、というだけの話。
0774デフォルトの名無しさんNGNG
>>735
fgets()のバッファのサイズにBUFSIZを使ってるのって変だよな。
0775デフォルトの名無しさんNGNG
>>773
>>716
一体どう言うロジックを組めばスタック 100 KB も取ると思うわけ?
それと、実際にDOSアプリで呼べなかった事あるの?
0776デフォルトの名無しさんNGNG
>>774
なんで?(^_^;)
0777775NGNG
ああ、773 は、「だから printf() が 100 KB 食うわけない」 と言いたいのか。
0778デフォルトの名無しさんNGNG
>>775
もしも100KBもとるようならって話でしょ?
でも動くから100KBも消費していないと。
0779デフォルトの名無しさんNGNG
>>774
それほど変でもない。
困る事がありそうで、実際にはなかなか困らないよ。
0780デフォルトの名無しさんNGNG
標準関数で100KBも消費するとしたら、再帰使ってかいたqsortくらいか?
多分実用的なライブラリは再帰なんか使っていないと思うけど。
0781デフォルトの名無しさんNGNG
>>780
前半には同意するが、後半には同意できないぞ。
qsort() は実用的ではないとでも言うのか?
0782781NGNG
780 の意味を取り違えた。
逝ってきます・・・
0783デフォルトの名無しさんNGNG
>>781
実用的なqsortの実装は再帰を展開してあると思う。
0784デフォルトの名無しさんNGNG
コードウォーリアーつかっとる者はおらぬか?
VC++より優れてる点を挙げてくれい、劣ってる点でもよいぞ
0785デフォルトの名無しさんNGNG
>>781
違う違う。
勉強のためのqsortのサンプルコードなら再帰を使うだろうけど、glibcだとかVC++だとかの実用的なライブラリのqsortは再帰なんか使わないでかくだろうということ。
0786デフォルトの名無しさんNGNG
>>776
たとえばCLOCKS_PER_SECとかCHAR_MAXなんかを、つかってたら変でしょ。
(別に間違いじゃないけどさ)
0787デフォルトの名無しさんNGNG
>>786
なんだ・・・マクロの命名の話か・・・
0788デフォルトの名無しさんNGNG
>>787
命名の問題じゃないけど…
0789デフォルトの名無しさんNGNG
>>788
ぼやくだけにしないで、きちんと問題をはっきりとさせること。
0790デフォルトの名無しさんNGNG
そうそう、だから無駄にこのスレは長くなる。
0791デフォルトの名無しさんNGNG
>>741みたくはっきり言うと墓穴を掘るからなるべくあいまいにレスをつけるのがこのスレの常識
0792デフォルトの名無しさんNGNG
>>791
「このくらい自分で分かれよ」と思って教えないのですです。
0793デフォルトの名無しさんNGNG
>>741はいいと思うぞ
簡潔に終了したし
0794デフォルトの名無しさんNGNG
>>789
BUFSIZはsetvbufで使うための定数だから。

fgets(s,CLOCKS_PER_SEC,fp);
みたいに、標準ヘッダーに定義されてる定数を適当に使うのと同じ。
という話なんでしょ?
0795741NGNG
人が飯食ってるあいだにバカ供がやけに祭り上げてくれちゃってますね(w











オレが間違ってた。ゴメソ
0796デフォルトの名無しさんNGNG
>>794
それなら命名の話だから>>787でいいんじゃ?
>>788が違うっていうから何の問題かというのが焦点に。
0797デフォルトの名無しさんNGNG
>>796
どあほう。
ぐぐったりリファレンス見たりして分かる情報ならそれでもいいが、
そういう問題じゃないんだろう?
そういうのを指摘してやらないのは嫌がらせか偽善のどちらかだ。

>>793
>>744
0798デフォルトの名無しさんNGNG
>>794
そうだったのか。
setvbufもBUFSIZなんてありきたりな名前を使うなよな。。
0799797NGNG
ごめんよ 796。
漏れは 792 に言いたかった。
逝ってきます・・・。
0800デフォルトの名無しさんNGNG
>>797がなぜ>>796に切れてるのかがわからん。

そして>>793に>>744を示してる意味もわからん。
>>744のようにすぐ間違いを指摘できたから「簡潔に終了」と言ってるのに。
0801デフォルトの名無しさんNGNG
>>791 が真理だな。
0802797NGNG
>>800
漏れ・・・

   も う だ め ぽ
0803デフォルトの名無しさんNGNG
おいおいもう800越えかよ・・・
0804デフォルトの名無しさんNGNG
俺が今までひっかからなかったのはBUFSIZじゃなくてBUFSIZEにしていたからか(笑)
0805デフォルトの名無しさんNGNG
ん〜、やはり相手に「バカ」「アホ」と息巻いてレスをつけると墓穴を掘る方向に・・・
0806デフォルトの名無しさんNGNG
>>802
ワラタ
0807デフォルトの名無しさんNGNG
つーか今朝の c=(char)c; ってうやむやのまま終わったよね。
正直に白状すると、俺はまだよくわかりません。
0808デフォルトの名無しさんNGNG
>>807
蒸し返すな。
C99の規格がそうなっているからキャストが必要なの。
1989年のANSIはしらん。
0809デフォルトの名無しさんNGNG
>>807
結論出てるよ。やらなきゃダメ
0810デフォルトの名無しさんNGNG
蒸し返せ (・∀・)
0811デフォルトの名無しさんNGNG
お、やるか
0812デフォルトの名無しさんNGNG

追いかけるのが大変だから、ゆっくりしゃべれ
0813デフォルトの名無しさんNGNG
ところで、strrchr はどうやって実装するのが普通なのかな〜?
0814デフォルトの名無しさんNGNG
test
0815デフォルトの名無しさんNGNG
void func_a(char a)
{
  ・・・
}

という関数があったとすると、引数aは関数の中でint型になっちゃうんですか?
0816test&rlo;tetsNGNG
tesst
0817デフォルトの名無しさんNGNG
>>815
???
0818デフォルトの名無しさんNGNG
どういう関数を書くときに
c = (char)c;
みたいなことをすればいいのかがわからない。
0819デフォルトの名無しさんNGNG
>>815
ならない。

呼び出し元からスタックへ char が渡されると一旦 int に変換される実装もある
ようだが、関数に突入した時に結局 char として扱われる。

char 変数の値はあくまで char 型として扱われる。
文字リテラルが int と評価される事とは全く関係無い。

引数の受け渡しがどうなっているかは普通は気にする必要は無い。
可変個引数を受け付ける場合は気にする必要がある場合もある。
0820デフォルトの名無しさんNGNG
>>818
だから、「規格通りの」 strchr()。
蒸し返すなって。
それとも >>810 ?
0821デフォルトの名無しさんNGNG
>>818
int に入った文字コードと char を比較するとき
0822デフォルトの名無しさんNGNG
816 ここでテストするな
↓ に逝け
http://pc.2ch.net/test/read.cgi/prog/1035390611/l50
0823デフォルトの名無しさんNGNG
>>807
1990年のISOの規格の翻訳でもこうだね。ANSIの方は氏蘭が。

http://www.jisc.go.jp/ ( JIS X3010 )

> 形式
>  #include <string.h>
>  char *strchr(const char *s, int c);
> 機能
>  strchr関数は、sで指される文字列の中のc(char型に変換する。)の最後の出現を探す。
>  文字列の終端を示すナル文字は、もじれつの一部とみなす。
0824デフォルトの名無しさんNGNG
>>820
てことは規格通りのstrchr以外に書く機会は無いんだ?
ならよかった。
0825デフォルトの名無しさんNGNG
仮に仕様でなくても、
処理系によっては>>818がないとうまく動作しない。
という結論だったよね?
0826デフォルトの名無しさんNGNG
>>824
たいていは char 変数に代入する事で済ますな。
0827デフォルトの名無しさんNGNG
>>825
文字コードが7bit に収まる文字なら処理系関係無くOKじゃないの?
'ア'とかが処理系によっては問題になる
0828デフォルトの名無しさんNGNG
ごめん、>>818だけど、俺が聞きたいのはstrchrについてじゃなくて、
自分で(strchrとは関係ない)関数を書くときに c = (char)c; みたくキャストする場面が
わからないの。
>>821でいいの?
0829デフォルトの名無しさんNGNG
>>812
ログはある程度あんたを待っててくれるから、最新レスについて逝けなくても大丈夫だ。
発言したいなら別だがナー。
0830デフォルトの名無しさんNGNG
>>827
はい。
0831デフォルトの名無しさんNGNG
821 は 826 でいいと思われ
0832デフォルトの名無しさんNGNG
>>831
じゃあ、strchr は
char *strchr( const char *str, int c ) {
char ch = c;
......
みたいでもいいの?
0833デフォルトの名無しさんNGNG
>>813

↓と書いてみたけど、領域が連続していない場合もうまく動作するかわからない。
とりあえずcharにキャストして、第二引数に0を与えても大丈夫。

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

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

return NULL;
}
0834デフォルトの名無しさんNGNG
>>832
つーか、最初から char *strchr( const char *str, char c ); でいいと思う
んだよなー。
クソな仕様だ。
0835デフォルトの名無しさんNGNG
引数を int c ではなく最初から char c と宣言しちゃまずいんでしょうか・・・
0836デフォルトの名無しさんNGNG
>>833
strlen() で余計なコストがかかる罠
0837834NGNG
かぶった (;´Д`)
0838デフォルトの名無しさんNGNG
>>833
なんか2度手間じゃない?
char *strchr( const char *str, int c ) {
char *last = NULL;
c = (char)c;
for ( ;*str; str++ ) if ( *str == c ) *last = *str;
if ( *str == c ) *last = *str;
return last;
}
0839デフォルトの名無しさんNGNG
>>838
おいおい大丈夫か ?
last 自体の値は、NULL のままだぞ。
0840デフォルトの名無しさんNGNG
>>836
後ろから見てゆくのって駄目?
0841838NGNG
>>839
すまない。ミスです
084221世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
それにしてもこのスレ早いね
何よりこの速さが世間でのCの需要を物語っている
役に立つとかそんなんより
知らなきゃ話にならんレベルなのか・・・

オレもやろ
0843840NGNG
VC++でもやっぱり後ろから見ているよ?
それとも関数を呼ばないでwhile(*s++) ;とやれということ?
0844デフォルトの名無しさんNGNG
>>842 のようにして C 厨房が増えていくわけか
0845デフォルトの名無しさんNGNG
>>840
後ろを見つけるのに文字列全体を1回走査しないといけないからちょっと無駄かもしれない。
>>838 がやろうとしているように、走査している間に指定の文字が見つかったらその位置を覚えておくようにすれば、自然と最後の位置が残る。
0846843NGNG
while(*++s);じゃないとだめか。
0847デフォルトの名無しさんNGNG
でも実際どっちがいいかは分からんよね
0848843NGNG
>>845
ああそういうことね。
0849デフォルトの名無しさんNGNG
strrchr()すら実装できないカスがいるスレはここですか?
0850デフォルトの名無しさんNGNG
>>845
strrchr("aabbccabaaabcbcabbbcca", 'a');
こんな感じだと後ろからやったほうが速い
0851デフォルトの名無しさんNGNG
>>849
ハァ?
0852デフォルトの名無しさんNGNG
>>851
>>849 は自分のことを言ってるんだよ
0853C厨房NGNG
C超初心者ですが、質問は許されますか?
0854デフォルトの名無しさんNGNG
>>853
ここは本来そのためのスレだ (笑)
ただし、内容による。
0855マチャアキNGNG
チューボーdeathYO!
0856デフォルトの名無しさんNGNG
そういえばスレタイ、「聞きなさい」 じゃなくて 「訊きなさい」 だよな。
重箱の隅だけど。
0857デフォルトの名無しさんNGNG
>>856
>重箱の隅だけど。

これ付け足せば許されると思ってんのかゴルァ
0858デフォルトの名無しさんNGNG
>>857
あなたに許してもらおうと思ってないから大丈夫です。
0859C厨房NGNG
「1月〜12月」の中で「3月」が一番大きく認識させるにはどうしたらいいですか?
0860デフォルトの名無しさんNGNG
>>859
もっと詳しく質問しないとわからないよー
何に認識させるの?
0861デフォルトの名無しさんNGNG
>>857
ウザいから死ね
0862デフォルトの名無しさんNGNG
回答があいまいじゃなくて質問があいまいという斬新な切り口
0863846NGNG
おっと、空文字列だとだめじゃん。
やっぱりstrlenでいいね。
0864デフォルトの名無しさんNGNG
>>859
C言語の前に日本語(略
0865デフォルトの名無しさんNGNG
おまいら一体何歳なんだよ!くそっ!!
0866デフォルトの名無しさんNGNG
>>859
月の値を 3 〜 14 で持つ。
4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月
3   4  5   6  7   8   9   10   11   12  13  14
実際に月の数字が必要な場合は (m % 12) + 1 を取る。

つーかこれ C の質問じゃないし。
0867866NGNG
ずれた Σ(゚д゚lll)ガーン
0868デフォルトの名無しさんNGNG
>>866
スゲー。あの質問でこの答えが出るか?フツー
0869C厨房NGNG
>>866 どうも有難うございます!!
>>864>>862 すいません僕って馬鹿なんですよ。エヘ
0870866NGNG
この方がいいか。

月の値は普通に 1 〜 12 で持つ。
月の比較の時に (m <= 3? m + 12; m) を取る。
0871C厨房NGNG
>>870
あなたは「救世主(メシア)」です
0872デフォルトの名無しさんNGNG
ああ、これイヤかも。
最初に厨解を出しておいて、質問者が去ったら正解を出す、と。
0873デフォルトの名無しさんNGNG
すごい読解力だなあ。
俺いまだにわからんよ。
0874866NGNG
>>868
何か直感でわかってしまった。
電波ゆんゆんなのかも。
0875デフォルトの名無しさんNGNG
ああ!!
一番大きくって配列に入れたときの添え字が一番大きいという意味か!!
0876デフォルトの名無しさんNGNG
きっと enum month{4月, 5月・・・・・12月, 1月, 2月, 3月};

すいません。英語で月を書く自信がありませんですた。
0877870NGNG
文法エラーだたーよ・・・
(m <= 3? m + 12: m)
0878C厨房NGNG
みなさんは、どれくらいでC言語はマスターなされたのですか?
0879デフォルトの名無しさんNGNG
>>878
マスターしていないんで未定です。
0880デフォルトの名無しさんNGNG
ヘイ、マスター!
0881デフォルトの名無しさんNGNG
>>878
お腹の中にいるとき。ママから教えてもらってたからさ。
0882デフォルトの名無しさんNGNG
前スレ 1000 取っちゃったもんね。
995 から連続だけどナー
0883C厨房NGNG
>>881
いいママですね 僕のママは主婦なんで駄目です
0884デフォルトの名無しさんNGNG
でもここも 1000 取り合戦間近の気配・・・
0885デフォルトの名無しさんNGNG
>>882
お前、あのスレは良いとこだったのに何しやがんだ
088621世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
>>878
一ヶ月でかなり調子にのれるYO!
実際どうかはわからんけど。
あとCと平行してアルゴリズムの勉強したほうが(・∀・)イイ!
0887870NGNG
漏れは独学。
ガッコも会社も教えてくれなかったし。
0888デフォルトの名無しさんNGNG
どうして、ム板のコテは神か糞虫かの2種類しかいませんか?
0889デフォルトの名無しさんNGNG
>>883
あんた何歳?
089021世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
はやくだれかスレ立てて!
寿命約30時間か・・・
日曜だからかな
0891デフォルトの名無しさんNGNG
うぉーCの話をスレー!Cをやってる人間の話なんかどーでもいいっつーのー!
0892デフォルトの名無しさんNGNG
>>891
漏れはC歴2年ちょいだ
0893C厨房NGNG
>>886 今からアルゴリズム勉強します
>>887
僕も今1ヶ月目の独学です。でも詰まった時に聞ける人がいないので皆様のお力を
お借りしました。友達がいないわけじゃないですよ
0894デフォルトの名無しさんNGNG
俺はC未経験なんだよな・・・彼女もできたことないし・・・
0895C厨房NGNG
>>891 すいませんもう去ります。有難うございました
0896デフォルトの名無しさんNGNG
>>893
ガンガレ
0897870NGNG
漏れも周りに訊ける人いなかったが、ついでにネット環境も無かった。
詰まったときは放置。
でもある日突然ひらめいて続行。
そんな感じ。
089821世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
>>894
AとBはしたんでつか?
Bで終わったんでつか?
0899デフォルトの名無しさんNGNG
>>898
クソムシ
0900デフォルトの名無しさんNGNG
>>898
彼女ができたことない=全部未経験です
0901デフォルトの名無しさんNGNG
>>900
雑談は他所でおながいします
0902デフォルトの名無しさんNGNG
>21世紀のあいんしゅたいん ◆rGsyzf.Kp2
新手の荒らしか?
090321世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
>>897
でもその方がいいかもね。
困ったら聞くのも手だけど、
頼りすぎたら自分のものにならんし。
聞いた後に「はいそうですか」じゃなくて
なんでそうなるか死ぬほど考えなきゃ

と、もう既に去った895に語るテスト
0904デフォルトの名無しさんNGNG
もっとこう殺伐と質問、殺伐と解答ってないのかしら
馴れ合ってんじゃないわよ
090521世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
彼女以外の女ともキスまではするべ
そんな事より、だれかオレの問題とけねーがーー

http://pc3.2ch.net/tech/index.html#10
0906デフォルトの名無しさんNGNG
>>905
あの・・・そのリンクは・・・・
090721世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
>>904
この微妙な付き合いが2Chっぽくない?
みんな無言で文字打ち合ってる姿がうける
0908デフォルトの名無しさんNGNG
>>902
Yes.
0909デフォルトの名無しさんNGNG
>>905
クソムシは(・∀・)キエロ!!
0910デフォルトの名無しさんNGNG
>>900
900ゲトとか言ってくれよ!欲しかったのに!
0911デフォルトの名無しさんNGNG
ははぁ〜ん。さてはおまえら900超えたからやる気なくなったな?
新スレへ体力を温存だな?

軟弱者!
0912デフォルトの名無しさんNGNG
>21世紀のあいんしゅたいん ◆rGsyzf.Kp2
雑談掲示板から最近2chに着たばかりだと思うに20M$。
0913デフォルトの名無しさんNGNG
>>911
エスパーハケーン
0914デフォルトの名無しさんNGNG
新ソバきぼんぬ
0915デフォルトの名無しさんNGNG
じゃあ俺は2000K&R。
0916デフォルトの名無しさんNGNG
>>909
ところで、クリムシってなんですか?
0917デフォルトの名無しさんNGNG
Socket プログラミングについて質問があるんですが。
最初、WSAStartup 関数やって、socket 関数でソケットを取得すると思いますが、
既存のソケット(他のプログラムが作ったソケット)を取得したいんですがやりかたがよくわかりません。
開発環境は WinXP Prp. VC++6.0 です。よろしくお願いします。
API でそういうようのがあればいうことないです。(API なら VB で使える)
0918デフォルトの名無しさんNGNG
911は絶対にセイラさん。
0919デフォルトの名無しさんNGNG
>>916
おい・・・
0920デフォルトの名無しさんNGNG
>>917
Soket スレ逝ってくれ。
http://pc3.2ch.net/test/read.cgi/tech/1034236536/l50
0921デフォルトの名無しさんNGNG
>>917
俺と同じ開発環境だな
0922デフォルトの名無しさんNGNG
less()とexch()を使うにはどうしたらいいんですか?
0923デフォルトの名無しさんNGNG
[栗蟲]クリムシ
昆虫類栗蟲科栗蟲目
主に栗を主食とする昆虫。害虫。
0924デフォルトの名無しさんNGNG
>>917
この糞バカ野郎!いくら900越えでやる気を失った俺らだからと言って
Cスレのプライドまで捨てたわけじゃねぇぞ!
VCスレもWin32APIスレもネットワークプログラミングスレもあるだろうが!
0925デフォルトの名無しさんNGNG
うい
0926916NGNG
>>923
これで今夜は熟睡できそうです。ありがとう
0927デフォルトの名無しさんNGNG
>>922
何の less() で何の exch() だよ・・・
0928隊員NO. ◆rhAfp.iLoU NGNG
はーい!
みんな元気かい?
0929隊員NO.1919072 ◆rhAfp.iLoU NGNG
名前変えますタ
0930デフォルトの名無しさんNGNG
>>928-929
キエロ
0931デフォルトの名無しさんNGNG
>>929
>>909
0932デフォルトの名無しさんNGNG
C言語で2つの値を交換するexch()というものだと思うんですが。
ちょっとよくわからないんで、すみません。
0933隊員NO.1919072 ◆rhAfp.iLoU NGNG
いやだ!質問しにきたんだ!
隊長!
コマンドライン引数でどんな時使うんでつか?
0934隊員NO.1919072 ◆rhAfp.iLoU NGNG
>>931
何!?
0935デフォルトの名無しさんNGNG
>>933
>>864
0936デフォルトの名無しさんNGNG
>>933
>21世紀のあいんしゅたいん ◆rGsyzf.Kp2
に答えてもらうといいですよ。彼は神だ。
0937隊員NO.1919072 ◆rhAfp.iLoU NGNG
>>936
だれ?
なんで神なの??
0938デフォルトの名無しさんNGNG
>>932
「C」 にそんな関数は定義されてないです。
普通に 2 値を交換するステートメントを書いてください。
tmp = a; a = b; b = tmp;

a ^= b ^= a ^= b; は例の如く・・・
0939デフォルトの名無しさんNGNG
>>937
本人に聞くヨロシ
0940デフォルトの名無しさんNGNG
>>938
返信、ありがとうございます。
自分で作ってみます。
0941隊員NO.1919072 ◆rhAfp.iLoU NGNG
どこにいるんだあああ
21世紀のアインシュタイン!!!!
0942デフォルトの名無しさんNGNG
いないならいないと返事しろー!!!!
0943デフォルトの名無しさんNGNG
あいーんしたいん。
0944デフォルトの名無しさんNGNG
アインシュタイン = 隊員 = アラシ に 1,000,000 ペソ
0945デフォルトの名無しさんNGNG
>>944
そういわれるとそんな気もしてくるから不思議だ。
まあ、あいんと隊員が何か会話すれば疑惑とかは問題ないでしょ。
さあ!お二方!!
コマンドライン引数(>>933参照)について存分に語りたまへ。
0946デフォルトの名無しさんNGNG
次スレの予感
0947隊員NO.1919072 ◆rhAfp.iLoU NGNG
アインシュタインこねーーー!!!
ていうか誰か教えてクレーーーー
眠れないーーーーー
があああああ
0948デフォルトの名無しさんNGNG
>>833
誰も指摘しないようだが、そのstrrchrの動作は禿しく未定義だぞ。
頑張れ。
0949デフォルトの名無しさんNGNG
>>933
プログラムの起動時にパラメータを与えてやる事によって、再コーディング/再コンパイル
無しに挙動を変えたい時に実装しる。
0950デフォルトの名無しさんNGNG
>>948
ホントだ。未定義キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0951948NGNG
いや、失礼。>>833はそれを承知の上のコードみたいだな。
じゃあ寝る。おやすみ。
095221世紀のあいんしゅたいん ◆rGsyzf.Kp2 NGNG
オレ=隊員キタ━(・∀・)━!
0953デフォルトの名無しさんNGNG
>>952
意味わかんない。
とりあえず、>>933にこたえてあげなよ。
0954デフォルトの名無しさんNGNG
とりあえず

  9 5 0 は 次 ス レ よ ろ し く

ネ
0955隊員NO.1919072 ◆rhAfp.iLoU NGNG
あいんしゅたいんキタ━━━━(゚∀゚)━━━━!
ねね、神なんでつか?
0956950NGNG
>>954
ヤダ
0957隊員NO.1919072 ◆rhAfp.iLoU NGNG
オレが次スレ立てる!!!!
0958950NGNG
>>957
頼んだ
0959デフォルトの名無しさんNGNG
30 時間足らずで次スレ移行か・・・ヽ(´ー`)ノ ヤレヤレ
0960デフォルトの名無しさんNGNG
新スレのスレタイが・・・
0961隊員NO.1919072 ◆rhAfp.iLoU NGNG
http://pc3.2ch.net/test/read.cgi/tech/1035729526/

NEWすれ立てますた

ただしまちがえますたが何か?
ごめんね、ごめんね・・・
0962デフォルトの名無しさんNGNG
やべー 5 の前に 4 取っちった
0963デフォルトの名無しさんNGNG
隊員がスレ立てしてる間アインシュタインがレスをしないのには
強い政治的意図を感じざるを得ない
0964デフォルトの名無しさんNGNG
>>1
ふんじゃ、削除依頼だしとけよ。
0965デフォルトの名無しさんNGNG
>>963
なかなか鋭いところに目をつけるな・・・
0966デフォルトの名無しさんNGNG
>>963
そういわれるとそんな気もしてくるから不思議だ。
まあ、あいんと隊員が何か会話すれば疑惑とかは問題ないでしょ。
さあ!お二方!!
コマンドライン引数(>>933参照)について存分に語りたまへ。
0967隊員NO.1919072 ◆rhAfp.iLoU NGNG
もうみんな移ろうよ!
せっかくオレがスレたてたのに!!
あいんしゅたいん全然答えてくれないし
0968デフォルトの名無しさんNGNG
n[(month-4+12)%12]
0969デフォルトの名無しさんNGNG
enum { april, may, june, july, august, september, october, november, december, january, february, march };
0970デフォルトの名無しさんNGNG
int main()
{
int i,p;
for( i=-130; i<130; i++ ){
p = (char)i;
if( i != p )
printf("%d %d\n", i, p);
}
}
----
-130 126
-129 127
128 -128
129 -127
0971デフォルトの名無しさんNGNG
void exch( void **a, void **b ) { void *tmp = *a; *a = *b; *b = tmp }
0972デフォルトの名無しさんNGNG
&を使わないようにシフトした感じか?
0973デフォルトの名無しさんNGNG
2日で1000レスですか。。
スゲ━━━━(゚∀゚)━━━━!!
0974デフォルトの名無しさんNGNG
まだ残ってますよ、ザーボンさん(以下略
0975デフォルトの名無しさんNGNG
今夜はさすがに落ち着いてるな。月曜だし。
0976デフォルトの名無しさんNGNG
さて、仕事するか(以下略
0977デフォルトの名無しさんNGNG
log(X)の近似値をもとめるためにマクローリン展開したとき
x+(-1/2)x^2+1/3x^3+・・・+(-1/n)(-x)^n
となるのですが、これをホーナー法をつかって計算回数をへらして
プログラムしたいのですがどのようにプログラムをかけばいいのか
全然わかりません。どなたか教えていただけませんか。?
0978デフォルトの名無しさんNGNG
ディスクファイルってなんですか?
高水準出力関数は、OSとの間にバッファを持ち、プログラムではこのバッファとの間で
データの入出力を行うイメージになります。このバッファはOSが管理し、自動的に
“ディスクファイル”とデータの入出力を行います。
という使われ方してんねんけど、ディスクファイルだけ意味わからん。
0979デフォルトの名無しさんNGNG
>>977
それなんかの本で見たことあるぞ。自分で調べれば
0980デフォルトの名無しさんNGNG
奥村先生の本にあったようななかったような。
1000Get!
0981デフォルトの名無しさんNGNG
つーかせめて次スレに書け。
しかも age るな。
0982デフォルトの名無しさんNGNG
>>977
x+(-1/2)x^2+1/3x^3+・・・+(-1/n)(-x)^n
      ↓
x(1+x(-1/2+x(1/3+x(.....))))

0983デフォルトの名無しさんNGNG
しかも>>978はマルチ
0984デフォルトの名無しさんNGNG
>>977
プログラム的には次のものでOKだと思うが。テイラー展開間違って
ないか?値がおかしいぞ。

#include <stdio.h>
#include <math.h>

int main()
{
double x, y = 0.;
int i, n = 20;

printf("x = ");
scanf("%lf", &x);

for (i = n; i > 0; i--)
y = y * x + x / i * ((i % 2) ? 1 : -1);

printf("log(x) = %f, mylog(x) = %f\n", log(x), y);

return 0;
}
0985デフォルトの名無しさんNGNG
log(x)をテイラー展開したら、
x - 1/2!x + 1/3!x ..... + (-1/n!)(-x)^nにならないか?
0986デフォルトの名無しさんNGNG
記念パピコV(^o^)V
0987デフォルトの名無しさんNGNG
できた。log(1+x)のテイラー展開の間違いだったようだね。

x>>1だと精度が悪くて使い物にならないけど。

#include <stdio.h>
#include <math.h>

int main()
{
double x, y = 0.;
int i, n = 10;

printf("x = ");
scanf("%lf", &x);

for (i = n; i > 0; i--) {
y = y * x + x / i * ((i % 2) ? 1 : -1);
}

printf("log(1+x) = %f, mylog(x) = %f\n", log(1+x), y);

return 0;
}
0988デフォルトの名無しさんNGNG
>>977はマルチ。
http://pc3.2ch.net/test/read.cgi/tech/1029422194/l50
で漏れがレスしたのは無視か?

こんな展開式がlogなわけないだろ。氏ね。
0989デフォルトの名無しさんNGNG
おいおい、前回と違って今度は次スレよりこっちの方が雰囲気悪いぞ。
0990デフォルトの名無しさんNGNG
何か争点が昨晩と全く違ってて面白いな。
ここは本当にム板か?
0991977NGNG
すいません まちがえました

log(X)の近似値をもとめるためにlog(x+1)マクローリン展開したとき
x+(-1/2)x^2+1/3x^3+・・・+(-1/n)(-x)^n
となるので
log(x)=log{(x-1)+1} より (x-1)+(-1/2)(x-1)^2+1/3(x-1)^3+・・・+(-1/n){-(x-1)}^n
これをホーナー法をつかって計算回数をへらして
プログラムしたいのですがどのようにプログラムをかけばいいのか
全然わかりません。どなたか教えていただけませんか。?
0992977NGNG
>>988さん そのスレへの書きこみは僕ではありませんよ
0993977NGNG
>>987さん ありがとうございます。
つまり
for (i = n; i > 0; i--) {
y = y * x + x / i * ((i % 2) ? 1 : -1);
}
この部分がホーナー法で計算回数を減らして計算しているプログラムということで
いいんですか?
0994977NGNG
ここから計算回数をカウントすることもできますか?
0995デフォルトの名無しさんNGNG
そんな人に聞いてばっかだと何も身につかないよ。そもそも計算回数って既にここで聞く事では無い気がするが。
0996デフォルトの名無しさんNGNG
よっしゃ! 1000Get
0997デフォルトの名無しさんNGNG
記念パピコV(^o^)V
0998デフォルトの名無しさんNGNG
ふふふ
0999デフォルトの名無しさんNGNG
C
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。