2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :v(^o^i)d v(^o^i)d v(^o^i)d v(^o^i)d:04/10/17 19:06:46
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

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

各種リンク、関連スレは>>2-13あたり

C言語なら俺に聞け! Part 92
http://pc5.2ch.net/test/read.cgi/tech/1096696253/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/

2 :デフォルトの名無しさん:04/10/17 19:07:34
【コンパイラ】
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/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

【ライセンスや機能などに問題あり】
Microsoft 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
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm

3 :デフォルトの名無しさん:04/10/17 19:42:02
━━━━━━━━━━━━━━━━━終了━━━━━━━━━━━━━━━━━

4 :デフォルトの名無しさん:04/10/17 19:52:44
新スレ激しく乙

5 :デフォルトの名無しさん:04/10/18 00:35:31
ifsream in("test.dat");
string line;

while( !in.eof() )
{
getline(in, line);
}

としてtestファイルから行単位で読み込むときに1個以上の空白文字
を含む行を読み込まないようにするにはどうすればいいのでしょうか?

6 :5:04/10/18 00:38:04
>1個以上の空白文字を含む行
というか

1個以上の空白文字のみを含む行
です。
よろしくお願いします。



7 :デフォルトの名無しさん:04/10/18 00:40:54
if (読み込まない条件) {
continue;
}

continue について調べてみたらOKかと。

8 :デフォルトの名無しさん:04/10/18 00:44:36
・・・ってこれだと読み込んで何もしない、ってことになるのかw
読み込んでからでないと条件に満ちているかどうかはわからないから、
ある条件の行を読み込まない、という処理は不可能ですw

9 :デフォルトの名無しさん:04/10/18 00:49:30
スレタイ読め

10 :デフォルトの名無しさん:04/10/18 01:03:19
とりあえず前スレから埋めてくれ。

11 :5:04/10/18 01:13:12
すいませんスレ間違えました。
>>7
その読み込まない条件をどう書けばいいのか・・

12 :デフォルトの名無しさん:04/10/18 01:15:50
多分こっち
【初心者歓迎】C/C++室 Ver.10【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1097416187/

13 :デフォルトの名無しさん:04/10/18 01:27:27
>>10
980越えての埋めは不要

14 :デフォルトの名無しさん:04/10/18 08:29:53
g/^ *$/d
空白が0個の行は残ってもいいんだよね?

15 :デフォルトの名無しさん:04/10/18 12:54:08
>>14
いい。
っていうかスレ違い。

16 :デフォルトの名無しさん:04/10/18 14:39:25
原点(x=0 , y=0)から各座標点までの直線とx=0、y=+∞の水平線の角度を算出して、
角度の小さい順でソートしたいのですが、どのようにすれば良いのでしょうか?
以下のような逆時計回りの順序にしたいのですが・・・
1. x=0,y=+5  (x=0〜第2象限)
2. x=-3,y=+3 (第3象限)
3. x=-2,y=-4 (第4象限)
4. x=+3,y=+4 (第1象限)

わかりにくかったらすいません。
よろしくお願いします。


17 :デフォルトの名無しさん:04/10/18 15:09:13
>>16
座標と角度をセットで構造体 (の配列) に突っ込んで qsort()。

18 :デフォルトの名無しさん:04/10/18 15:45:16
ソートの方法を聞いているのか
角度の大小の判定方法を聞いているのか…

そもそもスレ違いな希ガス

19 :デフォルトの名無しさん:04/10/18 16:01:53
srand()って渡す値か同じだとrand()が返す値も同じになるんですか?

20 :デフォルトの名無しさん:04/10/18 16:23:28
うん

21 :デフォルトの名無しさん:04/10/18 18:27:08
>>16
    /\___/ヽ
   /''''''   '''''':::::::\     
  . |(●),   、(●)、.:| + 全部自分でやりなさい。
  |   ,,ノ(、_, )ヽ、,, .::::|.    
.   |   `-=ニ=- ' .:::::::| +   
   \  `ニニ´  .:::::/  +  
,,.....イ.ヽヽ、ニ__ ーーノ゙-、    
:   |  '; \_____ ノ.| ヽ i   
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||.

22 :デフォルトの名無しさん:04/10/18 21:34:34
unsigned int が sizeof( unsigned int ) * 8 bits なのは規格?それとも処理系依存?

23 :デフォルトの名無しさん:04/10/18 21:39:52
sizeof( unsigned int ) * char なのは規格。
char が  8 bits なのは処理系依存。
だったと思う。

24 :デフォルトの名無しさん:04/10/18 21:40:18
>>22
unsigned intがsizeof(unsigned int) * 8bitsというのは保証されているけれど、
sizeof(unsigned int)の値は保証されていない。
普通は32bitだけれど、処理系によっては違うこともある。

25 :デフォルトの名無しさん:04/10/18 21:41:37
>>23
charは処理系依存しないと思う。

26 :デフォルトの名無しさん:04/10/18 21:44:05
>>25
charが9ビットの環境は?

27 :デフォルトの名無しさん:04/10/18 21:53:23
>>22
8bitsじゃなくてCHAR_BIT bits

28 :デフォルトの名無しさん:04/10/18 21:56:30
>>26
それはCではありません。

29 :デフォルトの名無しさん:04/10/18 21:58:31
>>28
なんで!?

30 :デフォルトの名無しさん:04/10/18 22:03:03
規格ではCHAR_BITは8が例として挙げられていて、本文中には
絶対値がそれ以上で同じ符号を持っていなければならないことが
定められている。よってC言語ではあらゆる環境においてCHAR_BITは
8以上でなければならない。

31 :デフォルトの名無しさん:04/10/18 22:05:28
>>28
規格が1Byte == 8Bitと決め付けていないからこそCHAR_BITがあるんだろ。

32 :デフォルトの名無しさん:04/10/18 22:07:07
>>31
NULL は 0 と決まっていますが、何か?


33 :デフォルトの名無しさん:04/10/18 22:08:09
sizeof( unsigned int) * 8
sizeof( unsigned int) * CHAR_BITS
結局どっちが正しいの?

34 :デフォルトの名無しさん:04/10/18 22:08:40
>>32
ワラタ
なんだこいつ

35 :デフォルトの名無しさん:04/10/18 22:11:34
>>33
s/CHAR_BITS/CHAR_BIT/

36 :デフォルトの名無しさん:04/10/18 22:14:18
char が常に 8-bits とは限らず、(ただし常に CHAR_BIT bits)
sizeof( unsigned int ) * CHAR_BIT が正解ってこと?

37 :デフォルトの名無しさん:04/10/18 22:15:22
YES
あとsignedかunsignedかで大きさが変わることもない。

38 :デフォルトの名無しさん:04/10/18 22:52:24
CHAR_BIT >= 8も決まっているっぽい。

39 :デフォルトの名無しさん:04/10/18 23:28:34
C言語では
if( ... )
{
    何か一行の処理
}

if( ... )
    何か一行の処理
って {} を書かずに書けます?
VC .NET 2003 ではコンパイル通るようなんですが…

40 :デフォルトの名無しさん:04/10/18 23:29:16
>>39
もちろん

41 :デフォルトの名無しさん:04/10/18 23:33:49
色々言葉足らずですな。

書けるかと聞かれれば書ける。

42 :デフォルトの名無しさん:04/10/18 23:36:28
Cの規格上一行で書いても問題ないでしょうか…?

43 :デフォルトの名無しさん:04/10/18 23:38:18
改行を入れる必要はない。

44 :デフォルトの名無しさん:04/10/18 23:39:12
>>42
無いよ
そもそも一行が基
{}は複数行書ける様にブロック化したに過ぎない


45 :for:04/10/18 23:47:53
while

46 ::04/10/18 23:50:54


47 ::04/10/18 23:53:33


48 :デフォルトの名無しさん:04/10/18 23:53:35
>>45-46
氏ねよ蛆虫野郎

49 :デフォルトの名無しさん:04/10/18 23:56:23
uint8_tは8bitと決まっています。

50 :デフォルトの名無しさん:04/10/18 23:57:54
>>49
どの規格で?

51 :デフォルトの名無しさん:04/10/18 23:59:16
オレ流規格

52 :デフォルトの名無しさん:04/10/19 00:18:34
規格票くらい買ってもらえ。
>>50
C99。尤も、必ず定義されているとは限らない。

53 :デフォルトの名無しさん:04/10/19 00:28:12

マタ C99ナンダッテサ
λ・・・・・・


54 :デフォルトの名無しさん:04/10/19 00:37:12
9bitの2の補数を正しくintに変換するにはどう書けばよいでしょうか?



55 :デフォルトの名無しさん:04/10/19 00:37:59
>>54
何度聞けば気がすむんだ?

56 :デフォルトの名無しさん:04/10/19 01:24:20
int main(){ ... }
で、最後に return 0; を書かなくても警告が一つも出ずに普通にコンパイル出来たんですが、
これって VC.NET 2003 に問題アリ?

57 :デフォルトの名無しさん:04/10/19 01:26:48
警告のレベル変えても出ないのか?

58 :デフォルトの名無しさん:04/10/19 01:30:59
レベル 4 でも出ませんが…

59 :デフォルトの名無しさん:04/10/19 01:34:57
なら問題なんだろうね

60 :デフォルトの名無しさん:04/10/19 01:49:50
>>56
それはC++の仕様。ISO/IEC 14882:1998 3.6.1[basic.start.main]-5
省略するとreturn 0;と書いたのと同じことになる。

61 :デフォルトの名無しさん:04/10/19 01:53:45
ここCスレだけど…
って、C++でコンパイルしてたってオチかな。

62 :60:04/10/19 02:02:17
だろうな。VC.NET 2003って書いてるし。

63 :デフォルトの名無しさん:04/10/19 02:09:31
http://www.geocities.jp/i035192/forksample.c
上のプログラムの実行結果をもとに
fork関数の使い方と親プロセスと子プロセスの処理について説明せよ

ネットワークアプリケーションとして複数のクライアントからの要求を受け付けるサーバプログラムの例をあげ説明せよ

すみませんが、この2つについて教えてください

64 :デフォルトの名無しさん:04/10/19 02:10:27
>>63
スレ違い

65 :デフォルトの名無しさん:04/10/19 02:12:41
どこのスレがいいですか?

66 :デフォルトの名無しさん:04/10/19 02:15:46
>>65
宿題スレだが、マルチで書いてやがるな
回答は無いものと思え

67 :デフォルトの名無しさん:04/10/19 02:25:32
向こうに誰もいなかったみたいだったので・・・
すみませんでした

68 :デフォルトの名無しさん:04/10/19 05:11:57
>>16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct {
  int x;
  int y;
} POINT;

POINT points[] = {
  {.x = 0, .y = +5}, // 2
  {.x = -3, .y = +3}, // 3
  {.x = -2, .y = -4}, // 4
  {.x = +3, .y = +4}, // 1
};

int comp(const void *, const void *);
void out(POINT *, int);
double sub(POINT *);

int main()
{
  qsort(points, sizeof(points) / sizeof(POINT), sizeof(POINT), comp);
  out(points, sizeof(points) / sizeof(POINT));
  return EXIT_SUCCESS;
}


69 :デフォルトの名無しさん:04/10/19 05:12:30
void out(POINT *p, int n)
{
  int i;

  for (i = 0; i < n; i++) {
    printf("x = %+4d, y = %+4d\n", p[i].x, p[i].y);
  }
}


int comp(const void *a, const void *b)
{
  double a_tan, b_tan;

  a_tan = sub((POINT *)a);
  b_tan = sub((POINT *)b);
  if (a_tan > b_tan)
    return 1;
  else if (a_tan < b_tan)
    return -1;
  else
    return 0;
}


70 :デフォルトの名無しさん:04/10/19 05:14:41
double sub(POINT *p)
{
  if (p->x == 0)
    return INFINITY;
  else
    return abs((double)p-> y / (double)p->x);
}


71 :デフォルトの名無しさん:04/10/19 05:18:01
>>32
> NULL は 0 と決まっていますが、何か?

これは明らかなまちがい。
NULLが0なんじゃなくて、0がNULLなんです。

#define NULL ....で定義されている値が、bitパターンでall0のものでないような処理系で
あっても、ポインターに代入(もしくは比較)される0は、そのナルポインター値に読み替え
られるだけ。

72 :デフォルトの名無しさん:04/10/19 05:48:34
>>52
> 必ず定義されているとは限らない。

いいえされています。

73 :デフォルトの名無しさん:04/10/19 06:33:57
>>71
で、どうして間違いなんだ?


74 :デフォルトの名無しさん:04/10/19 06:40:24
>>72
uint_least8_t と uint_fast8_t は必須。uint8_t は任意。

75 :デフォルトの名無しさん:04/10/19 06:43:46
いや、「任意」じゃないな。スマソ。
8bit 整数のある環境では「定義しなければならない」だな。

76 :デフォルトの名無しさん:04/10/19 11:50:04
#include<stdio.h>
int main(void)
{
char *p="abcde";
char *q="";
int l=0;
int i;
while(*p++){
*(q+0)=*(p+(l++));
}
while(*(q+1)++=*p++) ;
printf("abcde →");
for(i=0;i<l;i++){
printf("%s",*(q+i));
}
return(0);
}


自分でも何をやっているのかわかりません。
abcde→eabcd

となるはずなんですけど・・・

77 :デフォルトの名無しさん:04/10/19 11:57:33
>>71
手元のANSIC言語辞典には、0かそれをviod*にキャストしたものって書いてあるけど。

78 :デフォルトの名無しさん:04/10/19 12:00:58
相手すんな、freeとかNULLとかのお決まりネタで喜ぶ輩なんだから

79 :デフォルトの名無しさん:04/10/19 12:15:01
>>76

#include<stdio.h>
int main(void)
{
char p[]="abcde";
char q[]=" ";
int l=0;
int i;
for(i = 0; i < sizeof(p) / sizeof(char) - 1; i ++) {
q[(i + 1)%(sizeof(p) / sizeof(char) - 1)] = p[i];
}

printf("abcde → %s\n", q);

return(0);
}

80 :デフォルトの名無しさん:04/10/19 12:39:32
/sizeof(char)は余計だろ。

81 :デフォルトの名無しさん:04/10/19 13:16:48
> 0かそれをviod*にキャストしたものって書いてあるけど。

そんな型はありません。

> 手元のANSIC言語辞典には、

そんな本はありません。

82 :デフォルトの名無しさん:04/10/19 13:24:31
main()
{
  char *p = "abcde";
  char *q = " ";
  int n;
  int i;

  n = strlen(p);
  for (i = 0; i < n; i++)
    q[(i + 1) % n] = p[i];
}


83 :デフォルトの名無しさん:04/10/19 13:26:34
>>81
viodは無いけど、本はあるよ。


84 :デフォルトの名無しさん:04/10/19 13:33:00
#ifdef __cplusplus
#define NULL (void*)0
#else
#define NULL 0
#endif

85 :デフォルトの名無しさん:04/10/19 13:33:09
いいえありません。
そもそもそんな言語もない > ANSIC

86 :デフォルトの名無しさん:04/10/19 13:42:02
ここがCスレな事を考えれば、バカバカしいような揚げ足だな。
内容自体には反論せんのか?

87 :デフォルトの名無しさん:04/10/19 13:54:50
>>86
揚げ足つーかvoidのまねをして遊んでいるのでは?

88 :死にたいです:04/10/19 14:14:04
テキストファイルの任意の行を編集したいのですが
サンプルってありませんでしょうか。

89 :デフォルトの名無しさん:04/10/19 14:17:53
ttp://ftp.gnu.org/pub/gnu/emacs/

こんなのどう?

90 :デフォルトの名無しさん:04/10/19 14:23:01
>>86
もともとそういうスレだし。

91 :デフォルトの名無しさん:04/10/19 14:26:02
最近PHPをはじめたんだが、これってかなりCをぱくってるよな

92 :デフォルトの名無しさん:04/10/19 14:28:56
さいきんCをはじめたんだけど、これってかなりDelphiをぱくってるよな

93 :デフォルトの名無しさん:04/10/19 14:32:00
>>80
最適化で消えてくれると思う。
要素数の計算を明示した。

94 :デフォルトの名無しさん:04/10/19 14:32:50
>>92
スレ違い。
誘導
http://pc5.2ch.net/test/read.cgi/tech/1090324689/

95 :88:04/10/19 15:00:31
>>89
またまたご冗談を・・・。解凍できません。。

96 :デフォルトの名無しさん:04/10/19 15:29:55
>>95
アホは失せろ

97 :デフォルトの名無しさん:04/10/19 19:44:57
巨大なファイル(数ギガ)のヘッダ部分をカットしようとしています

小規模なファイルなら
メモリに読み込んで
先頭をカット
ファイルに書き出す

なんですけど

巨大なファイルの場合どのようにするのがセオリーなんでしょうか


98 :デフォルトの名無しさん:04/10/19 19:46:24
fopen
fseek
fopen
fread
fwrite
fclose
fclose

99 :デフォルトの名無しさん:04/10/19 19:46:55
先頭部分をスキップして
ファイルに書き出す

サイズ固定ならfseekあたりでポインタを移動させとけ。

100 :97:04/10/19 19:54:35
>>98
>>99
やはりそうするしかないですよね

元のファイルをそのままどうにかできないかと思ったんですが・・

ありがとうございました

101 :デフォルトの名無しさん:04/10/19 19:56:16
ftruncate
truncate

102 :デフォルトの名無しさん:04/10/19 19:56:43
matigaeta

103 :デフォルトの名無しさん:04/10/19 21:08:03
NULLについての規格
ISO/IEC 9899:1999
6.3.2.3 Pointers -3
An integer constant expression with the value 0, or such an expression cast
to type void*, is called a null pointer constant. If a null pointer constant is
converted to a pointer type, the resulting pointer, called a null pointer,
is guaranteed to compare unequal to a pointer to any object or function.

7.17 Common definitions <stddef.h> -3
The macros are NULL which expands to an implementation-defined null
pointer constant.


104 :デフォルトの名無しさん:04/10/19 21:32:01
日本語で話せ

105 :デフォルトの名無しさん:04/10/19 21:44:10
英語くらい読め

106 :デフォルトの名無しさん:04/10/19 22:48:04
むしろフランス語キボンヌ

107 :103:04/10/19 23:22:11
>>104
ご希望にお答えする。

ISO/IEC 9899:1999

6.3.2.3 ポインタ -3
値0の整数定数式、またはそのような式を型void*にキャストした式は
ナルポインタ定数と呼ばれる。もしナルポインタ定数がポインタ型に
キャストされると、その結果のポインタはナルポインタと呼ばれ、あらゆる
オブジェクトや関数へのポインタと不等と比較されることが保証されている。

7.17 共通定義 <stddef.h> -3
マクロに次のものがある。NULL これは実装定義のナルポインタ定数に
展開される。

108 :デフォルトの名無しさん:04/10/20 00:18:54
つまり0がNULLなんです。
NULLが0なわけじゃなく。

109 :デフォルトの名無しさん:04/10/20 00:20:53
>>101
それって切るのは後ろなんじゃ

110 :109:04/10/20 00:34:56
あーでもファイルをr+モードで開いてmemmoveみたいなことしたあとににtruncateすればできるか。
ここではスレ違いだけど。

111 :デフォルトの名無しさん:04/10/20 00:43:03
前提も見ような

112 :デフォルトの名無しさん:04/10/20 00:47:45
>>111
は?

113 :デフォルトの名無しさん:04/10/20 00:49:19
memmoveなんかできないサイズだっての

114 :デフォルトの名無しさん:04/10/20 00:51:51
別のファイルにヘッダーより後をコピーするなら対して変わらないでしょ。

115 :デフォルトの名無しさん:04/10/20 00:52:45
memmoveは全部メモリ上に読まなきゃ出来ねーし。
しかもファイルサイズの2倍。

116 :デフォルトの名無しさん:04/10/20 00:54:17
tailコマンド1発で解決じゃん。

117 :デフォルトの名無しさん:04/10/20 00:54:17
truncateとか言ってるのはJava厨か

118 :デフォルトの名無しさん:04/10/20 00:54:31
>>115
ヘッダーサイズくらいの大きさで読み書きを繰り返せばいいじゃない。

119 :デフォルトの名無しさん:04/10/20 00:55:46
その例はとうに出てるだろ。
memmoveだので新たに何を提示してるの?

120 :デフォルトの名無しさん:04/10/20 00:56:40
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< くっちゃらはぴはぴ!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< くっちゃらはぴはぴ!
Py厨〜〜〜〜!    >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /



121 :デフォルトの名無しさん:04/10/20 00:57:20
>>119
>>98-99が言っているのは新規にファイルを作成することじゃないの?
あとmemmoveじゃなくてmemmove「みたいな」こと。

122 :デフォルトの名無しさん:04/10/20 00:59:20
で、サイズの調整はどうするって?

123 :デフォルトの名無しさん:04/10/20 00:59:31
ヘッダーよりあとを前にずらして、後ろの余った部分をtruncateで切るってこと。
もちろんtruncate(か同じようなもの)がなければできないけど。

124 :デフォルトの名無しさん:04/10/20 01:02:31
結局Java厨か

125 :デフォルトの名無しさん:04/10/20 01:03:34
何しに来てるんだろうな

126 :デフォルトの名無しさん:04/10/20 01:03:48
POSIX準拠のシステムであればtruncateで一発

127 :デフォルトの名無しさん:04/10/20 01:07:55
数GBもあるファイルをたかがヘッダをカットするだけのためにコピーする方がよほどJava厨っぽい

128 :デフォルトの名無しさん:04/10/20 01:12:24
はいはい

129 :デフォルトの名無しさん:04/10/20 01:12:33
俺だったらついでにparserを作るな

130 :デフォルトの名無しさん:04/10/20 01:13:48
やるこた一緒だろ

131 :デフォルトの名無しさん:04/10/20 01:16:31
一時ファイルを作成しなくても済む代わりに途中で異常終了するとファイルが壊れるな。

132 :デフォルトの名無しさん:04/10/20 01:23:27
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

133 :デフォルトの名無しさん:04/10/20 01:26:34
>>>Ruby

134 :デフォルトの名無しさん:04/10/20 02:17:56
Ruby == 5.5ポ
Pearl == 5ポ
Diamond == 4.5ポ
印刷業界の常識です。それにしてもxhml1.1のruby機能はいまひとつだなあ。

135 :デフォルトの名無しさん:04/10/20 02:30:47
Java == ぬるぽ

136 :デフォルトの名無しさん:04/10/20 02:42:49
Null Pointer Assignment == なるぽ

137 :デフォルトの名無しさん:04/10/20 04:06:17
>>106
http://www.gmm.insa-tlse.fr/~montagut/C/Cours/Cours-C-Transparents.pdf

138 :デフォルトの名無しさん:04/10/20 09:38:41
   ∧_∧ 
   ( ・∀・)   
 (( ( ヽ ノ )  
   ノ\(○´  ゴッ
  (_ノ(_\   ∧
     = ()二) <  >_∧∩
            V`Д´)/ ←>>135
                 /
     .  __
       |__|
  ∧_∧ //
  ( ・∀・)/ ・・・
 と    つ
   Y  .ノ
    .  ) ∧_∧∩ ・・・
  _/し'  ( ´∀`)/
           / ←>>136


139 :デフォルトの名無しさん:04/10/20 10:15:16
>>127
>>131
言語が何で関係してくるのか不明だが、
ロールバックできないファイル操作はしてはならない。

140 :デフォルトの名無しさん:04/10/20 12:45:50
FileNotFoundException=ふんど
OutOfMemoryError=おおむ
IoConnectionException=いくぽ

141 :デフォルトの名無しさん:04/10/20 13:17:07
どこから「ぽ」が…

142 :デフォルトの名無しさん:04/10/20 17:04:31
ごめん

143 :デフォルトの名無しさん:04/10/20 20:22:21
ある文字列に改行コードを付加したいのですが
改行コードを付加することは不可能でしょうか。

やりかたも教えていただきたいのですが・・・。

144 :デフォルトの名無しさん:04/10/20 20:25:22
>>143
strcat(ある文字列格納されたバッファ, "\n");

145 :デフォルトの名無しさん:04/10/20 21:07:41
>ロールバックできないファイル操作はしてはならない。

プ

146 :デフォルトの名無しさん:04/10/20 21:09:17
やり直しと言わないところがプだな

147 :デフォルトの名無しさん:04/10/20 21:27:06
(゜Д゜) ハ?

148 :デフォルトの名無しさん:04/10/21 00:23:29
C言語初心者です。
最近、学校で習っていて興味を持ち始めめたので
本を買いたいのですが、初心者に向いていてわかりやすい本はどのようなのものでしょうか?
本屋にいても、たくさんありどれを買おうか迷っています。

149 :デフォルトの名無しさん:04/10/21 00:24:25
推薦図書/必読書のためのスレッド PART 20
http://pc5.2ch.net/test/read.cgi/tech/1097627740/l50


150 :デフォルトの名無しさん:04/10/21 00:31:45
C言語初心者です。課題で迷っています。
strlen関数(文字列の比較する関数)と同じ働きをする関数αを作りたいですがどのように作れば良いのか分かりません。教えて下さい。
ちなみに関数の作り方の構文は知っています。

151 :デフォルトの名無しさん:04/10/21 00:32:28
strlenは文字列の文字数を返す関数で、
比較じゃないぞ、どっちだ。

152 :デフォルトの名無しさん:04/10/21 00:32:41
文字列の比較をするstrlenなんて関数はCにはありません

153 :デフォルトの名無しさん:04/10/21 00:34:38
>>150
宿題は宿題スレへ

154 :150:04/10/21 00:36:10
strcmpの間違いです。新しく作る関数名がstrlenです。

155 :デフォルトの名無しさん:04/10/21 00:37:01
>>154
作るなw

156 :デフォルトの名無しさん:04/10/21 00:44:58
>>150
Cでは名前にギリシャ文字は使用できないのでαという関数を作ることは不可能です。


157 :デフォルトの名無しさん:04/10/21 00:51:22
> 本を買いたいのですが、初心者に向いていてわかりやすい本はどのようなのものでしょうか?
『作ってわかるCプログラミング』 技術評論社 2180円+税
http://www.gihyo.co.jp/book/2001/402231/download/

158 :デフォルトの名無しさん:04/10/21 00:54:17
> strlen関数(文字列の比較する関数)と同じ働きをする関数αを作りたいですが

int α(const char *p)
{
return strlen(p);
}

159 :デフォルトの名無しさん:04/10/21 00:54:53
>>150
αは仮名です。

160 :デフォルトの名無しさん:04/10/21 00:54:55

これで文句つける教員がいたら、おれんところを連れてこい!

161 :デフォルトの名無しさん:04/10/21 01:18:19
int i = 0;
while(*src++) i++;
return i;

162 :デフォルトの名無しさん:04/10/21 06:22:54
>>150はマルチなので放置

163 :デフォルトの名無しさん:04/10/21 09:33:22
Windowsのファイル名を変更したり削除したりする関数ってないのでしょうか?

sysytem関数でrenやdelを使う方法は思いついたのですが・・・。

164 :デフォルトの名無しさん:04/10/21 09:35:45
>>163
http://www.google.co.jp/

165 :デフォルトの名無しさん:04/10/21 10:06:52
mv

166 :デフォルトの名無しさん:04/10/21 10:10:04
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/rename.2.html

167 :デフォルトの名無しさん:04/10/21 10:12:59
ここはCのスレだ、OSのコマンドの事はそういうスレなり板でやれ、
163がWindowsと書いてる事すら読めないオバカさん。

168 :デフォルトの名無しさん:04/10/21 10:28:49
↑ rename.2.html の意味も知らない &&
Windows でも rename() を使える事を知らない
お馬鹿さん

169 :デフォルトの名無しさん:04/10/21 10:32:02
mvは?

170 :デフォルトの名無しさん:04/10/21 10:34:07
>>163
renameとremove
どちらも標準関数

171 :デフォルトの名無しさん:04/10/21 14:04:43
時折、

#define HOGE (1)

とかって記述を見るんだけど、この場合の () ってどんな意味があるの?
無くても副作用は起きないように思うんだけど。

172 :デフォルトの名無しさん:04/10/21 14:06:33
>>171
確かに副作用は起きないな。

173 :デフォルトの名無しさん:04/10/21 14:08:36
括弧をつけなければいけないものだと勘違いしているから。

174 :デフォルトの名無しさん:04/10/21 14:09:11
#define HUGA (1+2)
なら副作用が起きるので、習慣上ただの整数も()で囲む事が多い。

175 :171:04/10/21 14:32:58
gcc の標準ヘッダーにも有ったりするから、何か宗教上の理由とか有るのかと
思ってみたりしてるんだけど、やっぱ、勘違いか習慣の問題ですかね。

ついでに質問なんだけど、同じように関数の型宣言で、

extern hoge(void);

とかの extern も似たような理由かなぁ?関数の記憶クラスで extern は
無いですよね?これも明示的に外部の関数だと示すための習慣とか?


176 :デフォルトの名無しさん:04/10/21 14:35:01
>>175
C FAQくらい見たら?

177 :デフォルトの名無しさん:04/10/21 14:36:08
>>175
なにもつけなければexternをつけたものだとみなされる。
ちょうどlong intのintやautoを略せるのと同じ。

178 :175:04/10/21 15:33:53
>>176
C FAQ 日本語 html 版だと、

1.11:
関数宣言についたexternは何を意味するのか。

のとこ?K&R2 にもどっちでも良いって書かれてるけど、わざわざ付ける理由が
何かと思い。

>>177
175 で戻り値の型が抜けてましたね。extern void hoge(void);
暗黙で extern が付けられるのは、関数内で現れた時と認識していました。
メンテナンスで人のソースをさわってて、マクロで関数宣言に extern を付けたり
外したりしているのとか見ると、余程 extern を付ける理由が合ったのかな?
って思った次第で。作成者に直接聞きたいのはヤマヤマなのですが、既に居ない
ので。

179 :デフォルトの名無しさん:04/10/21 18:47:37
>>175
ヘッダファイルの中で
int a;
みたいなグローバル変数にextern がないと
リンクでエラーになる処理系があったりして
個人的な思想とは無関係に書くしかないことがある

あと C++ が絡むとさらに変な書き方を強いられたりする

180 :デフォルトの名無しさん:04/10/21 19:01:14
なんで変数の話がでてくるの?

181 :デフォルトの名無しさん:04/10/21 19:02:11
>>179
思想も何も、ヘッダファイルに定義書くほうが間違い。

182 :デフォルトの名無しさん:04/10/21 19:03:43
>>180
>>171からの流れを嫁

183 :デフォルトの名無しさん:04/10/21 19:04:58
変数に触れてるのは177だけのようだが、一体どんな流れが。

184 :デフォルトの名無しさん:04/10/21 19:05:21
>>181
ほらな、リンカがらみんとこがわからん香具師がうようよ徘徊してるから・・・

185 :デフォルトの名無しさん:04/10/21 19:06:52
>>183
「何にでも」は宗教かって話に対して参考を示したまで
技術的につっこめない板違いを相手にするのはこれが最後

186 :デフォルトの名無しさん:04/10/21 19:08:38
宗教云々はその前のマクロ定義だろ?
板違い以前に話が見えてないのは自分ではないかな。

187 :デフォルトの名無しさん:04/10/21 19:11:17
>>185
意味わかんねえ
ちゃんと説明してくれんか

188 :デフォルトの名無しさん:04/10/21 19:13:26
>185=184=182か?

189 :デフォルトの名無しさん:04/10/21 19:15:05
しょうもない話だが、
http://www.google.co.jp/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&c2coff=1&q=%83t%83%8D%81%5B%83g%82%CC%8D%C5%91%E5%92l&lr=lang_ja
ひでえ・・

190 :デフォルトの名無しさん:04/10/21 19:15:58
付けなくてもいい関数の場合と、そうでない変数の場合を
同列に挙げて話するのは混乱させるだけだと思うが。

191 :デフォルトの名無しさん:04/10/21 19:18:49
>>189
floatをフロートト書く香具師は少ないってこったね。

192 :デフォルトの名無しさん:04/10/21 19:18:55
逃げやがった

193 :171, 175, 178:04/10/21 19:45:41
うちの会社だと extern 付ける派が圧倒的に多くて、手の届く範囲で付ける
理由を聞いて回ったことがあるんだけど、

「そう教わった。」
「はじめて見たソースがそうなっていた。」
「そういうもんだ。」
「必要だからです。」とリンクの話を始めるヤツ一人。

って回答だったかな。「そう教わった。」から遡ると「はじめて見たソースが」
で終わり。最近の子は VC++ から入るのが多いから、その影響かな。

変数に extern 付け外しするのと似た手法で、自分のソース内にある関数
だけ extern を外してるソースに遭遇してから更に理由が知りたくなった
だけなんだけど。


194 :デフォルトの名無しさん:04/10/21 20:02:50
>>191
いや、もしかして○○?とか聞いてくるくせに、それもない。

195 :デフォルトの名無しさん:04/10/21 20:27:19
>>193
VC++でもつけねぇよ。
つーか、そんなキモイ会社はやめたほうがいいかも。

196 :デフォルトの名無しさん:04/10/21 20:43:29
ようするにスコープ、リンケージを理解してないから、
extern 取り合えず書いて 全てを外部にしているんだろうさ。
そうすりゃリンクエラーでねーからなぁ。
C言語だとまかり通ってるが、C++言語でそれやってるならもうなんていうか
その会社辞めれ。


197 :デフォルトの名無しさん:04/10/21 21:17:17
汗かいてねー奴ら・・・

198 :デフォルトの名無しさん:04/10/21 21:29:48
だから俺はロイター通信を見たいんだっての
http://www.google.co.jp/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&c2coff=1&q=%83%8D%83C%83%5E%81%5B&btnG=Google+%8C%9F%8D%F5&lr=lang_ja

やっぱりこれかい
http://www.google.co.jp/search?num=50&hl=ja&oe=Shift_JIS&inlang=ja&c2coff=1&q=%E3%83%AD%E3%83%BC%E3%82%BF%E3%83%BC&spell=1

199 :デフォルトの名無しさん:04/10/21 21:34:46
>>198
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/

200 :デフォルトの名無しさん:04/10/21 21:36:40
>>199
ただの誤爆に何言ってんだこいつ

201 :デフォルトの名無しさん:04/10/21 21:47:43
技術的につっこめないbogusに居場所はない

202 :デフォルトの名無しさん:04/10/21 21:49:09
逃げた奴が何か言ってるぜwwwwwww

203 :デフォルトの名無しさん:04/10/21 21:50:13
空定義w

204 :デフォルトの名無しさん:04/10/21 22:03:26
sizeofの()みたいに、無くてもいいけどあってはいけないものでもないだろ。
とりあえず外に公開してるインタフェースという目印程度に付けてるけど。

205 :デフォルトの名無しさん:04/10/21 22:06:32
納品条件として文法チェックツールをとおさなきゃいけなくて
そのチェックツールがextren付けないと怒るってのはあったな

必死になってるのは学生か?

206 :デフォルトの名無しさん:04/10/21 22:09:29
externつけてないとリンクできないだろ。
分割コンパイルしたことないのか?

207 :デフォルトの名無しさん:04/10/21 22:15:55
>>206
いや、そうじゃなくて関数プロトタイプだから。

208 :デフォルトの名無しさん:04/10/21 22:23:39
関数そのものでもいらないけど。

209 :デフォルトの名無しさん:04/10/21 22:24:32
馬鹿ばっか

210 :デフォルトの名無しさん:04/10/21 22:27:07
素タブとかドライバとか・・・かかないか。

211 :デフォルトの名無しさん:04/10/21 22:31:42
バーカ

212 :デフォルトの名無しさん:04/10/21 22:58:15
どこまでネタなんだかわからんが
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.5.2.html

213 :デフォルトの名無しさん:04/10/21 22:58:35
読んどけ

214 :デフォルトの名無しさん:04/10/21 23:00:41
だから変数のexternじゃねぇって

215 :デフォルトの名無しさん:04/10/21 23:02:25
C始めてから3日もすればわかることだなw

216 :デフォルトの名無しさん:04/10/21 23:03:20
馬鹿ばっか

217 :デフォルトの名無しさん:04/10/21 23:05:19
>>212
当時の記事を鵜呑みにしてマクロ作ってるやついそうだけど、
管理関数作れ、それができないのならせめて構造体使え
と言うところだな。

218 :デフォルトの名無しさん:04/10/21 23:05:25
>>212
論評くらい他人の引用100%じゃなく自分でほざけアフォ低脳

219 :Ruby!!!!!!!!:04/10/21 23:05:43
ぶわぁぁか(プ

220 :デフォルトの名無しさん:04/10/21 23:31:13
プロトタイプもきちんと書けない連中が吼えてもな〜(笑)

221 :デフォルトの名無しさん:04/10/21 23:40:57
なんでおまえら必死なの?

222 :デフォルトの名無しさん:04/10/21 23:47:03
関数の話だって言ってんのにわからねーやつがいるみたいだな

223 :デフォルトの名無しさん:04/10/22 00:01:39
関数にexternつけられるって知らないからじゃないの?

224 :デフォルトの名無しさん:04/10/22 00:05:55
>>223
レベルの低い人は書き込みしないほうがいいよ

225 :デフォルトの名無しさん:04/10/22 00:07:14
こんなもんにレベルの高低が関係あるのか

226 :デフォルトの名無しさん:04/10/22 00:07:16
>>217
theApp ってなんだっけ?

227 :デフォルトの名無しさん:04/10/22 00:09:16
>>223
つけられるけど、つける必要はない。
で、なんでつける必要のないものを付けるの?というのが元々の質問だろ。

228 :デフォルトの名無しさん:04/10/22 00:11:32
>>183
変数に触れてなんかいないぞ。略せるものの例を挙げただけ。

229 :デフォルトの名無しさん:04/10/22 00:13:26
>>228
何故貴方はそこまで馬鹿なんだ!!

230 :デフォルトの名無しさん:04/10/22 00:14:11
>>217の手も使わしてくれなかったうえに、>>212の書き方も許してもらえなかったヨ…(涙)

231 :デフォルトの名無しさん:04/10/22 00:15:56
これが最後とかいいつつ、ムキになって粘着してるのか…

232 :デフォルトの名無しさん:04/10/22 00:16:17
>>229
は?
extern void hoge(void);とvoid hoge(void);は同じなんだが。

233 :デフォルトの名無しさん:04/10/22 00:19:00
>>232
お前さー人の話きかないとかさー挙動不審とかさー覚えが悪いとかさー言われない?

234 :デフォルトの名無しさん:04/10/22 00:21:24
粘着してる奴は何が言いたいんだよ
関数プロトタイプのextern付きと無しで何が違うんだ?


235 :デフォルトの名無しさん:04/10/22 00:22:05
>>233
何を言いたいのかさっぱり分からないんだけど。
あと俺は>>178-207の間は書いていないぞ。

236 :デフォルトの名無しさん:04/10/22 00:25:11
こんなにスレが伸びるほどの話題じゃ無いだろ?バカばっか

237 :Ruby!!!!!!!!!!!!!:04/10/22 00:27:31
ぶぁあああああああああああああああああああああああああああああああああああああああああか

238 :デフォルトの名無しさん:04/10/22 00:28:59
>>237
今日だけは、お前のほうがまともに見えるよ。

239 :デフォルトの名無しさん:04/10/22 00:30:17
間違って覚えているのか、もしくはどうしても関数限定で考えられない>>229=>>223がひとりで粘着しているだけ?

240 :223:04/10/22 00:30:31
>223は>222宛てね。
つまり、関数の話だってのに変数と勘違いしてそうな香具師は、「関数にextern……」と。
#わざわざ書くだけ無駄な気もするが。

241 :239:04/10/22 00:30:48
>>229=>>233の間違い

242 :デフォルトの名無しさん:04/10/22 00:30:51
>>228
例に挙げると触れるはどう区別されるんだ?
つか、しつこすぎ

243 :デフォルトの名無しさん:04/10/22 00:32:20
>>239
ブラウザのログ壊れてレス番ズレてないか?

244 :デフォルトの名無しさん:04/10/22 00:34:38
>>242
だから、Cで文法上書かなくても済む例をあげただけだっての。
変数につけるexternの話なんてしていない。

245 :デフォルトの名無しさん:04/10/22 00:37:13

「変数の話の流れ」を主張した182へのレスとして、
「変数に触れているのは」って言ってるんだろ?extern云々への限定はせず。
文句付ける相手間違ってないか。

246 :デフォルトの名無しさん:04/10/22 00:38:50
もうやめにしないか?

247 :デフォルトの名無しさん:04/10/22 00:39:54
>>245
> extern云々への限定はせず。
ああそういうこと・・・すごく紛らわしいんだけど。

248 :デフォルトの名無しさん:04/10/22 00:41:12
いや知らんよ、でもそうだろってだけ。

249 :デフォルトの名無しさん:04/10/22 00:45:38
K&Rでも

「言語仕様的につける必要がなくても、読み手に「そうであること」を明確に主張するために付ける」


そういう用法が明記されている
自分だけしか読まないのであれば本当に必要がないが

250 :デフォルトの名無しさん:04/10/22 00:47:52
なるほど、暴れてたのは177か

251 :デフォルトの名無しさん:04/10/22 00:49:02
>>250
>>178-207の間は書いていないってば。
日本シリーズを見ていた。

252 :デフォルトの名無しさん:04/10/22 00:53:17
GCCで、
typedef struct {
unsigned long a : 1;
unsigned long b : 1;
] FOO;
typedef struct {
unsigned short a : 1;
unsigned short b : 1;
] BAR;
だと、sizeof(FOO)が4になって、sizeof(BAR)が2になるのはなぜ?

ビットフィールドのところのlongかintかshortかcharかって、どのサイズごとにまとめるかを決めるっけ?
そうではなくて、展開されたときの型じゃなかったっけ?

253 :デフォルトの名無しさん:04/10/22 00:54:41
K&Rにも、「関数のプロトタイプ宣言の前のexternは、足の裏の飯粒みたいなものだ」と
書いてあるだろ。

254 :デフォルトの名無しさん:04/10/22 00:55:24
普通なら176で終わってただろうに。

255 :デフォルトの名無しさん:04/10/22 00:55:38
>>252
自問自答?

256 :デフォルトの名無しさん:04/10/22 00:55:58
↑「取らないままでも死にはしないが、取らないときもちわるい」?

257 :デフォルトの名無しさん:04/10/22 00:56:49
>>252
ダミー入れれ

258 :デフォルトの名無しさん:04/10/22 00:58:11
そうじゃなくって、どのサイズごとにまとめるかってのが、
shortって書くかlongって書くかで変わるのは言語仕様なの? っていうことです。
それともgccが勝手にそうしてるだけ?

259 :デフォルトの名無しさん:04/10/22 01:12:21
何だか盛り上がってますね^^^^^^^

260 :デフォルトの名無しさん:04/10/22 07:38:20
179だが結局、空の定義を知らんアフォが暴れて話もへったくれもなくなってるな
よっぽど悔しかったようだが、ちなみに俺の発言は203までだよ

261 :デフォルトの名無しさん:04/10/22 07:55:05
>>250
>179 が引っ込み付かなくなっただけだろ。
…お、再降臨乙。>190 読み返して精進しろ。

262 :デフォルトの名無しさん:04/10/22 08:04:12
>>258
処理系依存かな。元々ビットフィールドもいい加減な仕様しかないし。

263 :デフォルトの名無しさん:04/10/22 08:14:08
繰り返す。空の定義を知らんアフォ。

264 :デフォルトの名無しさん:04/10/22 08:22:52
「空定義」「空の定義」でぐぐってもほとんどヒットしないんですけど。。

265 :デフォルトの名無しさん:04/10/22 08:24:24
> 処理系依存かな。

こいつぼけ。規格票読めよ!

266 :デフォルトの名無しさん:04/10/22 08:31:26
ヒットしようがしまいが関係ない。それは確実に存在し、みんな使っている。

267 :デフォルトの名無しさん:04/10/22 08:32:57
じゃぁ特に知らなくてもいいということですね。

268 :デフォルトの名無しさん:04/10/22 08:38:16
アフォ道に生きるならそれもよし。

269 :デフォルトの名無しさん:04/10/22 08:39:22
嘘っぽいからどうでもいいや。

270 :デフォルトの名無しさん:04/10/22 09:12:54
>ヘッダファイルの中で
>int a;
>みたいなグローバル変数にextern がないと
>リンクでエラーになる処理系があったりして
>>179は上のようなことを書いているので、宣言と定義の違いをわかっていないと思われる。

271 :デフォルトの名無しさん:04/10/22 09:24:47
いえ、関数と変数の違いがわかってないんでしょ

272 :デフォルトの名無しさん:04/10/22 09:32:54
まだやってるー!?(ガビーン

273 :デフォルトの名無しさん:04/10/22 10:55:19
>>179
ファイル"a.c"
-----------------------
int a;
int b(void);

int main(void)
{
 a = 0;
 return b();
}

ファイル"b.c"
-----------------------
int a;
int b(void)
{
 return a;
}
-----------------------

規格では、この2つのファイルをコンパイルしてリンクできると思うけど、
これがリンクエラーになる処理系もあるの?
あと、空の定義って、仮定義(tentative definition)のこと?

The following statements show normal definitions and tentative definitions.

int i4;       /* tentative definition, external linkage */
int i4;       /* valid tentative definition */

えーと、煽りじゃないです。
昔の処理系だとエラーなんでしょうか…

274 :デフォルトの名無しさん:04/10/22 11:08:51
#include
int main(void)
{
int y; int n;
printf("年を西暦で入力してください\n")
scanf("%d",&y);
n=y%4;
if(n != 0) {printf("no leap");}
else(n = 0) { n=y%100; if(n != 0) {printf("leap");}
else { n=y%400; if(n = 0) {printf("leap");}
else {printf("no leap");
}
}
}
return(0);}
うるう年を求めるつもりなんだがコンパイルエラーが出る。
ステートメントにセミコロンが無いとか。どういうことすか?

275 :デフォルトの名無しさん:04/10/22 11:12:08
>>274
一行目から論外だ
聞くときはエラーメッセージ書けよ

276 :デフォルトの名無しさん:04/10/22 11:12:14
エラーメッセージに行数も出てるだろ?
その行で ; が抜けてるだろうが。
あと、#include だけの行は何の冗談?

277 :デフォルトの名無しさん:04/10/22 11:19:34
>>276
コンパイラへのいやがらせ

278 :デフォルトの名無しさん:04/10/22 11:25:10
「空定義」…それは確実に存在し、みんな使っている。
ググっても出てこないが、それでもみんな使っている。
「空定義」…「空定義」…「空定義」…

279 :デフォルトの名無しさん:04/10/22 11:41:09
>>273
>規格では、この2つのファイルをコンパイルしてリンクできると思うけど、
ん?そうか?
>これがリンクエラーになる処理系もあるの?
Microsoft Visual Studio 6.0 C++

280 :デフォルトの名無しさん:04/10/22 11:46:56
兄弟、落ち着こうぜ
.cppじゃなく.cだ

281 :279:04/10/22 12:05:45
…orz=3

282 :デフォルトの名無しさん:04/10/22 18:53:01
>>278
聞き方憶えような、教えて君
今んとこ答える動機より
答えない動機の方が強いよ
オマエのそのざまが面白い

283 :デフォルトの名無しさん:04/10/22 18:59:53
またキターヽ(´Д`;)ノ

284 :デフォルトの名無しさん:04/10/22 19:17:57

          /\
        /    \/\
        |\   /    \/\
      /\  \ |\    /    \/\
    /    \  |  \  |\    /    \/\
    |\    /  .|       \  |\    /    \ /\
   / \ \/    |             \  |\   /    \/\
 /    \ |    .|                 \ |\    /    \/\
 |\    /|     |                      \|\    /    \
 |  \ //\                             \ /        \
 |   |/    \                      ウワァン!  /\          >
 |   \    /|                 ヽ(`Д´)ノ  /    \      / .|
 |     \ //\               / (  )  \       \   /    |
 |      |/   \        /\ /    < ヽミ3 \     /| /      |
 |      \    /|   /\/    \      \    /|   /          |
 |        \ //\/    \     \     /|  /                 |
 |         |/   \     \    / | /                    |
 |         \     \   / | /                         .|
 |           \    /| /                              .|
 |            \ /                                  |
 |              .|                                   .|
               |
               |
               |

285 :デフォルトの名無しさん:04/10/22 19:31:09
外部リンケージエラー。

286 :デフォルトの名無しさん:04/10/22 19:32:02
>>284
EscherのAAに正直感動した。

287 :デフォルトの名無しさん:04/10/22 20:01:47
スレ違いもいいとこ

288 :デフォルトの名無しさん:04/10/22 23:42:23
UNIX環境で開発したあるプログラムを、UNIX上でコンパイルして実行すると正常に動作するのですが
windows上でコンパイルして動かすとなぜか途中で強制終了されてしまいます。
コンパイラはどちらもgccで、コンパイル自体はwindowsでもエラー無く通過します。

一応デバッグは試みたのですが、なにしろコンパイルは通ってしまうので原因がよくわかりません。
プログラムが停止するのは動的に割り当てたメモリのアドレスを引き渡す操作をするところなので、
そこでなんらかのエラーが発生しているような気もします。
原因、及び改善策としてはどのようなものが考えられるでしょうか。

289 :デフォルトの名無しさん:04/10/22 23:59:09
>>288
一応疑ってみるポイント。
・エンディアンに依存したコード。
・解放したメモリの再利用。
・スタックオーバーフロー。

まぁなんだ、余裕があるなら関数一つずつ入力を変化させながらチェックするのがいいのだけれど。
#そのためのツールに、バウンドチェッカー(だっけ?)なんて言うのもあるが、それはそれで手間が掛かる。

290 :デフォルトの名無しさん:04/10/23 00:04:30
任意の構造体を関数に渡してその型に関わらずメンバに値を格納していく、
といった関数をC言語で作りたいのですが、何かいい方法はないでしょうか?
簡単なものから作ろうと思い、メンバの型とサイズを一定にしたプログラムを
一応つくってみたのですが、
「エラー E2453 t_ka.cpp 19: 'void' 型のサイズは未知あるいはゼロ(関数 t_kansu(int,int,void *) )」
と出てしまいます。(Borland C++ 5.5)
回避方法はないでしょうか?

#include <stdio.h>
#include <string.h>
#define KYOUTU_LEN  10
/* 構造体 */
typedef struct {
  char a[KYOUTU_LEN];
  char b[KYOUTU_LEN];
  char c[KYOUTU_LEN];
}  KOUZOUTAI;
/* 作りたい関数 */
void t_kansu(int kata_len, int memba_num, void * t_kouzou){
  for(int i = 0; i < memba_num; i++)  {
    if(i) {memcpy(t_kouzou + (i * KYOUTU_LEN) + 1,"あいう",KYOUTU_LEN); }
    else { memcpy(t_kouzou + i,"あいう",KYOUTU_LEN); }
  }
}
/* 呼び出し側 */
main(){
  KOUZOUTAI  kouzoutai;
  memset(&kouzoutai,NULL,sizeof(KOUZOUTAI));
  /* 構造体の型(バイト数)、メンバ数、構造体の先頭アドレスを渡す */
  t_kansu(sizeof(KOUZOUTAI),3,&kouzoutai);
  return 0;
}

291 :デフォルトの名無しさん:04/10/23 00:05:08
質問:テキストファイルの最初100文字を読み飛ばすにはどうしたら良いでしょうか?

Perlで書いたプログラムを(処理速度の関係で)勉強しながらC言語へ書き換えています.
fseekとかを色々といじっていますが中々うまくいきません.

どの(標準)関数をどのように使えば良いか,お知恵を拝借できればと思います.
よろしくお願いします.

--
WindowsXP + SP2
VC++ 6

292 :デフォルトの名無しさん:04/10/23 00:07:01
char*にキャストしてから+したまえ、希望のことが出来る。

まぁ、お勧めは出来ないが。

293 :デフォルトの名無しさん:04/10/23 00:13:21
>>291

FILE * fp = fopen("テキストファイル", "r");
fseek(fp, 100, SEEK_SET);

もし仮に、2バイト文字も一文字として読み飛ばしたいならこれではダメ。
その場合、1バイトずつ読みながら2バイト文字か1バイト文字かを判断する必要がある。
また、改行コードの余計なお世話が問題になるようなら"r"ではなく"rb"で開いた方がいいかも知らん。

294 :デフォルトの名無しさん:04/10/23 00:13:25
C言語でこういうプログラムを組みたいのですがどうしたらよいでしょうか?
たとえば4.1 5.1 6.2 7.5・・・・と書かれたテキストファイルを読み込んで二つずつ足して
9.2 13.7・・・・ とテキストファイルに書き込むプログラムを作りたいです
初心者なのでファイルの読み込みとかよくわからないのでお教えください。一週間前から明解C言語で勉強しています
がまだまださっぱりの超初心者ですが宜敷お願いいたします

295 :デフォルトの名無しさん:04/10/23 00:13:34
なんだよ、このスレ、日本語だらけじゃん。全部C言語で記述してあるとか
わくわくしながら開いたのに・・・

まあ、書いてあることは日本語だったとしてもさっぱりわやですわ。

296 :デフォルトの名無しさん:04/10/23 00:17:02
>>294
背伸びをするのはその明解C言語というやつを読み終わってからでも遅くないんじゃないか?

297 :デフォルトの名無しさん:04/10/23 00:18:13
>>294
/* エラー処理は割愛 */
double ta;
double tb;
FILE * fpIn = fopen("inFile", "r");
FILE * fpOut = fopen("outFile", "w");
while (fscanf(fpIn, "%lg%lg", & ta, & tb) == 2) {
fprintf(fpOut, "%g ", ta + tb);
}
fclose(fpIn);
fclose(fpOut);

298 :デフォルトの名無しさん:04/10/23 00:18:14
>>290
void*じゃなくてKOUZOUTAI*を使う。

299 :デフォルトの名無しさん:04/10/23 00:21:42
>>293
レスありがとうございますm(_ _)m
SEEK_SETというのがミソでしたか.

おっしゃるとおり,改行コードが悪さをしているようです.
もう少し色々と試してみたいと思います.
どうしようもなくなったら,またカキコするかと思いますがよろしくお願いします.

300 :デフォルトの名無しさん:04/10/23 00:21:44
#include <stdio.h>

int main( int argc, char *argv[] ){
printf( ">>295以下、C言語で語ってます。>>1000の方閉じてくださいね♪

301 :デフォルトの名無しさん:04/10/23 00:23:31
Cの文字列は複数行にまたがれないよ(はーと)

302 :デフォルトの名無しさん:04/10/23 00:25:13
">>301"
"これならいい?"

303 :デフォルトの名無しさん:04/10/23 00:27:34
>>290
a, b, cの型のサイズやメンバの間のパディング(あるいは各
メンバの先頭からのオフセット)も知らせる必要がある。

そしてそんなもんが全部分かるってことは型がなんだか
わかってるんだから普通にコピーしたほうがいいと思われる。

任意の構造体なんかを相手にするのではなく
自分のコピーの仕方を自分が知ってる構造体を作った方がいいのでは。

304 :291=299:04/10/23 00:27:39
>>293
改行コードを2文字(CR+LF)として,テキストモードで開いたらうまくいきました.
ありがとうございましたm(_ _)m

//Perlしか書けないおかげで変数の宣言を忘れてたりと,色々と苦労していますががんばりたいと思います.
//今まで3度Cに挫折_| ̄|○

>>301
/* これでは?

305 :デフォルトの名無しさん:04/10/23 00:28:35
>>289
回答ありがとうございます。
実行のかなり最初の方でストップしてますのでオーバーフローでは無いような気がします。最初のメモリ割り当て時ですし。
ちなみに割り当てたメモリは解放してないので(おい)再利用でも無さそうですね、
エンディアンに依存したコードかどうかはよくわかりませんが…一般的な線形リストの構造体セルを割り当てる操作のところです。

発狂しそうなぐらい汚いプログラムなのでどこにエラーが潜んでるかわからないんですよね・・・
あぁアホの作ったプログラムのデバッグはいやだ

306 :290:04/10/23 00:36:20
>>292 >>298 >>303
アドバイスありがとうございます。
任意の構造体を関数に渡して・・・・というのも、そんなライブラリがあったら
便利だな、と思ったからなんです。
無理かもしれないけど、もう少し色々考えてやってみます。

307 :デフォルトの名無しさん:04/10/23 00:47:27
>>290
きっとC++を勉強すると幸せになれるよ。

308 :デフォルトの名無しさん:04/10/23 00:51:28
>>305
そうそう、環境の違いによる影響も考慮すること。
・まさかと思うが設定ファイルはあるか
・OSに依存したファイルを当てにしていないか
・漢字コードはどうか
これらは大抵、文字列が絡むので全ての文字列操作をチェックできれば大分見通しがよくなるかと。

309 :デフォルトの名無しさん:04/10/23 00:53:39
ステップ実行とかしてる?
環境依存よりスタックかヒープ破壊してる確率のほうが高そうだけど。

310 :デフォルトの名無しさん:04/10/23 01:12:54
前の環境がたまたまうまく動いていただけの予感

311 :288:04/10/23 01:31:11
>>308
漢字コードは大丈夫です。ヘッダなどの必要ファイルもあります。

OSに依存したファイルはどうでしょうか…
でも恐らくエラー部分では使っていないと思います。
上でも書いたように単なる線形リストの構造体セル追加操作なので。

312 :288:04/10/23 01:34:32
>>309
してみました。その心配は無さそうです

313 :デフォルトの名無しさん:04/10/23 09:45:22
intも必要ないな

黙っていればintとされる


わけだからint書く必要なし

わりに書いてるこの矛盾

314 :デフォルトの名無しさん:04/10/23 11:51:18
次のコードで動的確保した領域にscanf()から値を格納したいんですが
デバッグすると/*6*/行目のscanf()での入力待ちが起こらずそのまま
/*7*/行目に移行していまいます。バッファの指定を&p->category[0]
としても変らずでした。原因はどこでしょうか?
struct UNKO {
int flag;
char time[30];
char category[50];
int price;
struct UNKO *next;
};



/*1*/ printf("%s ", menu[0]);
/*2*/ scanf("%d", &p->flag);

/*3*/ printf("%s ", menu[1]);
/*4*/ scanf("%s", p->time);

/*5*/ printf("%s ", menu[2]);
/*6*/ scanf("%s", p->category);

/*7*/ printf("%s\n", menu[3]);
/*8*/ scanf("%d", &p->price);

315 :デフォルトの名無しさん:04/10/23 11:58:10
scanf()を捨てて、fgets()+sscanf()にしてみよう。

316 :314:04/10/23 11:59:12
6行目の指定子の後ろにスペース入れるとちゃんと働きました。
どなたか説明願います。
/*6*/ scanf("%s ", p->category);


317 :デフォルトの名無しさん:04/10/23 12:43:18
scanf はスペースを読んでくれいなからでっす。

318 :デフォルトの名無しさん:04/10/23 13:23:49
> 黙っていればintとされる

いいえ、規格上それはないです。ちゃんと規格票読め ぼけ。
それがOKだったのは15年前のC89のときまで。

319 :デフォルトの名無しさん:04/10/23 13:25:38
だってC99なんかまともに使われてないし・・・

320 :デフォルトの名無しさん:04/10/23 13:40:23
>>319
部分的には前から結構使われているけれどね。

321 :デフォルトの名無しさん:04/10/23 13:44:36
いや、ふつうC99.

322 :デフォルトの名無しさん:04/10/23 13:46:12
>>321
お薦めのC99コンパイラは?

323 :デフォルトの名無しさん:04/10/23 13:50:07
C89つかおうと思ったらわざわざオプション指定しないといけないよ。
GCCだってデフォルトではGNU形式だし。

324 :デフォルトの名無しさん:04/10/23 13:51:35
>>316
scanf()は、指定子が%sで終了した場合文字列以降に入力した空白(改行文字を含む)を読み飛ばさない。
そして、次のscanf()がその空白文字を処理しようとしてしまう。
%sの後に空白があれば、文字列以降に入力した空白を読み飛ばしてから終了するので次のscanf()に影響しない。

325 :デフォルトの名無しさん:04/10/23 14:49:37
数値を文字列に変えるにはどうしたらよいのでしょうか?atofの逆バージョンを探しているのですが。

326 :デフォルトの名無しさん:04/10/23 14:52:00
sprintf()

327 :デフォルトの名無しさん:04/10/23 14:52:56
ふつうC99

328 :デフォルトの名無しさん:04/10/23 15:39:10
C99使おうと思ってもオプション指定必要だけどね。

329 :デフォルトの名無しさん:04/10/23 15:57:23
gccなんかつかうなよ。ちゃんとC99フル対応のコンパイラー使え。

330 :デフォルトの名無しさん:04/10/23 15:59:51
Ruby使え!Ruby最高!Rubyのおかげでガンが治った!Ruby!!!!!!!!!!

331 :デフォルトの名無しさん:04/10/23 16:00:08
お薦めのC99コンパイラは?

332 :デフォルトの名無しさん:04/10/23 16:00:15
>>329
あのね、GCCだってオプションで-std=c99とすればC99としてコンパイルできる。
ちゃんと対応しているじゃないか。
デフォルトが独自形式なんだ。
VC++だってそうじゃないか。

333 :デフォルトの名無しさん:04/10/23 16:34:02
>>318
規格票って何?規格書の事?

334 :デフォルトの名無しさん:04/10/23 16:37:17
hp も Sun も、C99 対応済んでないんじゃなかったか?

335 :デフォルトの名無しさん:04/10/23 16:39:40
C99対応していないコンパイラなんて、かなり古いバージョンのコンパイラだけだよね。
メジャーなものはほとんど対応済み。

336 :デフォルトの名無しさん:04/10/23 16:52:13
「フル対応」はしていないだけ。ほぼ99%は対応している > メイジャーなの

> あのね、GCCだってオプションで-std=c99とすればC99としてコンパイルできる。

これも同様で、「ほぼ対応」なだけで完全に全部満たしているわけではない。

337 :デフォルトの名無しさん:04/10/23 16:52:46
> 規格書の事?

そんなものはありません。

338 :デフォルトの名無しさん:04/10/23 16:56:09
要はISO/IEC 9899:1999のことだろ?

339 :デフォルトの名無しさん:04/10/23 17:13:20
あるファイルを、
fopen(filename,"rb"); バイナリーモードで開いてます。
そして、readBuffer というところに,
fgetc でとってきた値を、どんどん入れ込みました。

そして、先頭から、75 75 69 64 とかいうコードが出てきたところのポインタを
調べたいのですが、いままで、テキストモードでしかファイルを開いたことが無いので
strstr(文字列の検索)でしか使ったことがないのですが、

バイナリコードの検索方法は、どうすればいいのでしょうか?

340 :デフォルトの名無しさん:04/10/23 17:25:18
>>339
・readBufferの末尾(詰め込んだ直後)に'\0'を入れておいて、strstr(readBuffer, "uuid");
・char * p = memchr(readBuffer, 0x75, 詰め込んだ長さ)してからmemcmp(p + 1, "uid", 3);
・その他

341 :デフォルトの名無しさん:04/10/23 17:27:36
>>339
http://www.amazon.co.jp/exec/obidos/ASIN/4874085008/

342 :デフォルトの名無しさん:04/10/23 18:30:01
>339


if( readBuffer[0] == 0x75 && readBuffer[1] == 0x75 && readBuffer[2] == 0x69 && readBUffer[3] == 0x64 )
retcd = 0;
elseif( readBuffer[1] == 0x75 && readBuffer[2] == 0x75 && readBuffer[3] == 0x69 && readBUffer[4] == 0x64 )
retc = 1;
elseif(readBuffer[2] == 0x75 && readBuffer[3] == 0x75 && readBuffer[4] == 0x69 && readBUffer[5] == 0x64 )
retc = 2;



つかれた


343 :デフォルトの名無しさん:04/10/23 19:05:51
K&Rの本に出てくるんですが、式の中での
(*++argv)[0]
*++argv[0]
の読み方がよく分かりません。よろしくお願いします。

344 :デフォルトの名無しさん:04/10/23 19:09:41
>>343
(*++argv)[0]
  ||
(*(++argv))[0]

*++argv[0]
  ||
*++(argv[0])
  ||
*(++(argv[0]))

345 :デフォルトの名無しさん:04/10/23 19:48:52
>>340
readBufferの中に'\0'があり、その後ろに"uuid"があると
一つ目の方法では発見できない。

346 :339:04/10/23 20:26:12
>345

ありがとうございます。
今いろいろと格闘中です。

あと2,3時間考えてまとめてみます。


347 :デフォルトの名無しさん:04/10/23 20:43:32
あーそうかい。>340は参考にならなかったと。

348 :346:04/10/23 21:20:22
>347
書き方がまずくてすみませんでした。
大変参考になります。

ただ、別のくだらないことでつまづいてるので、そこをまとめてから
結果を出したいと思って書いただけです。


349 :デフォルトの名無しさん:04/10/23 21:23:03
すいません。質問です。
アンパンマンのあんってつぶあんなんですか?
こしあんなんですか?
ご教授頂ければ幸いです。

350 :デフォルトの名無しさん:04/10/23 21:34:04
>>349
関数ポインタを使え。

351 :デフォルトの名無しさん:04/10/23 21:42:00
>>349
板違い

352 :デフォルトの名無しさん:04/10/23 21:45:22
>>350
関数ポインタを使ったら解決しました。
ありがとうございました。

353 :デフォルトの名無しさん:04/10/23 21:48:52
bool isTsubu();
{
bool (*p)() = &isTsubu;
(*p)();
}

354 :デフォルトの名無しさん:04/10/23 22:03:48
C言語でプログラムしたいんですけども、

ドメイン名からIPアドレスを得るのに
gethostbyName()関数を使うとゆうことは
わかってるんでけど、

DNSサーバーをいろいろ変更して
取得をしたんです。
nslookupでゆうところの、
【server ○○○.co.jp】
に該当するプログラムをC言語では
どのようにすればいいのでしょうか?

BINDのライブラリルーチンを利用しようと
思って説明書をよんでも
さっぱりわかりません。

わかる方、助言お願いします。

355 :22:04/10/23 22:09:48
sizeof( unsigned int ) * CHAR_BIT
が正しいという結論になりましたが、
http://www.bohyoh.com/CandCPP/FAQ/FAQ00018.html
ということのようです。

だから何だと言われそうですが…

356 :デフォルトの名無しさん:04/10/23 22:12:50
>>355
だけどそのために関数を書くのもちょっと… と思ってしまったり。

357 :デフォルトの名無しさん:04/10/23 22:13:16
>>354
nslookupのソースコード見れ。

358 :デフォルトの名無しさん:04/10/23 22:13:30
いいえ、それは誤りです。
括弧のうちがわに空白があいています。

359 :デフォルトの名無しさん:04/10/23 22:14:43
>>358
ほんとだ!

教えてくれてありがd

360 :デフォルトの名無しさん:04/10/23 22:44:53
>>354
nslookup使うのが簡単。

361 :デフォルトの名無しさん:04/10/23 23:18:34
getenv()で得た値を弄くったりしても大丈夫ですか?

#include <stdlib.h>
void aaa(char * bbb) {
if (!(bbb = getenv("TEST")) *bbb = 'c'; return;
}

main() {
char * ccc;
aaa(ccc);
*ccc = 'b';
}

362 :デフォルトの名無しさん:04/10/23 23:24:32
>>361
ダメ

363 :デフォルトの名無しさん:04/10/23 23:32:51
>354
DNSクライアントを作ってみよう
ttp://x68000.q-e-d.net/~68user/net/

364 :デフォルトの名無しさん:04/10/23 23:36:10
>>362
ありがとうございます

365 :デフォルトの名無しさん:04/10/24 00:09:47
>>361
void aaa(char ** bbb) {
if (!(*bbb = getenv("TEST")) **bbb = 'c'; return;
}
main() {
char * ccc;
aaa(&ccc);
*ccc = 'b';
}

366 :デフォルトの名無しさん:04/10/24 00:40:53
gcc -I /home hoge.c
と書くべきか、
gcc -I/home hoge.c
と書くべきか、
どっちなんでしょう。

367 :デフォルトの名無しさん:04/10/24 00:44:46
後者

368 :デフォルトの名無しさん:04/10/24 00:47:40
> http://www.bohyoh.com/CandCPP/FAQ/index.html
さすが柴田まぬけだな。

> for文の( )内で宣言された識別子の有効範囲はどうなっていますか。

これについてC++についてしかかかれていないぞ!

369 :暴妖:04/10/24 00:50:30
少しずつC99izeしているところだ。焦るな。

370 :デフォルトの名無しさん:04/10/24 00:58:23
じゃあこれはどうだ? C99は関係ないぞ。

> http://www.bohyoh.com/CandCPP/FAQ/FAQ00083.html

こいつは「存在するけどreadでオープンできない」ファイルの存在とかをしらない
のだろうか? きっと、ファイルの属性は、ReadOnlyとHiddlenとSystemとArchiveの4種類
しかないと思っているWindows厨にちがいない。

371 :デフォルトの名無しさん:04/10/24 00:59:59
こういういいかげんなやつほど粗製濫造で本をだしまくるんだよなあ。
困ったもんだ。それを読むボケがいるからだが。

372 :デフォルトの名無しさん:04/10/24 01:01:12
> http://www.bohyoh.com/CandCPP/FAQ/FAQ00047.html

これはgccでwarningでるぞ!
warningでるようなコードをサンプルに載せるなよ! ぼけ

373 :デフォルトの名無しさん:04/10/24 01:05:03
3.3.5なら出ない(-Wall -ansi(or -std=c99) -pedanticつきで)。

374 :デフォルトの名無しさん:04/10/24 01:09:51
> http://www.bohyoh.com/CandCPP/FAQ/FAQ00005.html
> 256種類にEOFを加えた257種類ということになります。これだとchar型では表現できません。

これも不正確だ。「できません」じゃねーだろ ぼけ
できる保証がないだけだ。charで最小限表現しわけられなればいけないのが256種類だから。
それ以上表せるchar型だっていくらだって存在はする。ちゃんと正しい日本語使え!

375 :デフォルトの名無しさん:04/10/24 01:11:57
> 3.3.5なら出ない

そんな古いヴァージョン使うな ぼけ

376 :デフォルトの名無しさん:04/10/24 01:16:54
>>339
unsigned int readBuffer = 0;
unsigned char code = 0;
int counter;
fp = fopen(filename,"rb");
for (counter = 0; counter < 4; counter++) {
fread(code, 1, 1, fp);
readBuffer |= (code << 24 - (8 * counter));
}
//75 75 69 64 を見つけるまで続ける。
while (readBuffer != 0x4b4b4540) {
fread(code, 1, 1, fp);
readBuffer <<= 8;
readBuffer |= code;
}
fread(code, 1, 1, fp);

これで操作したい1バイトの情報が code に格納されてるはず。バイナリファイル
を扱うなら fread() とビット演算を覚えた方がいいと思う。それで1バイトずつ
の操作ならできるようになるから。1ビット単位で扱う場合は
unsigned int readBuffer[2] = { 0, 0};
int bit_count[2] = { 0, 0};
といったような工夫も必要になってくるけど。あくまで一例だけどね。

* fread(code, 1 , 1, fp); //fpのファイルから1バイト×1要素をcodeに格能

377 :デフォルトの名無しさん:04/10/24 01:17:00
ハァ?

378 :デフォルトの名無しさん:04/10/24 01:19:40
> http://www.bohyoh.com/CandCPP/FAQ/FAQ00051.html
> 二つの宣言をまとめて、以下のように一度に宣言することもできます。

> struct node {
> char name[20]; /* 名前 */
> struct node *next; /* 後続ノードへのポインタ */
> } Node;

こりゃどうみても間違いだろう! ぼけ
typedefが抜けている。これじゃあ最後のNodeは変数名になってしまうぞ。

あたまわるいなー > 柴田

379 :デフォルトの名無しさん:04/10/24 01:24:32
typo

380 :デフォルトの名無しさん:04/10/24 01:26:29
typodef !

381 :デフォルトの名無しさん:04/10/24 01:27:10
そんな私は日下部先生の本を読んで勉強しました。

やはり信頼できる内容で選ばないと > Cの本

382 :デフォルトの名無しさん:04/10/24 01:29:10
>>380
typoを定義しないでください

383 :デフォルトの名無しさん:04/10/24 01:32:13
私は猫でも〜で勉強しました。

なので、自分の知識に所々不安が残ります。

384 :デフォルトの名無しさん:04/10/24 01:36:17
すぐ人のせいにするw

385 :デフォルトの名無しさん:04/10/24 01:39:48
やはり「C言語」なんて書いてある本はだめだな。

386 :デフォルトの名無しさん:04/10/24 01:45:07
>>376
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
        ^^^^^^^^^^^^^

387 :デフォルトの名無しさん:04/10/24 01:50:53
>>386
言いたいことがあるならはっきりと言え。

388 :Ruby!!!!!!!!!!!!!!!!!:04/10/24 01:52:30
言わなきゃ若蘭の香wwwwwwwwwwwwwwwww

389 :376:04/10/24 02:04:21
ごめんw フツーに間違えたw
fread(); の行は全て
fread(&code, 1, 1, fp); に変更ってことでw


390 :デフォルトの名無しさん:04/10/24 04:46:11
>>389
生き恥晒してないで逝っとけ。

391 :デフォルトの名無しさん:04/10/24 06:34:10
サンプル見てて思ったんですが、階乗等、再帰を使わずとも簡単に書ける関数を再帰を使って書く利点ってあるんですか?

392 :デフォルトの名無しさん:04/10/24 06:39:34
ありません。

393 :デフォルトの名無しさん:04/10/24 07:15:07
コードが短くなる利点はあります。

394 :デフォルトの名無しさん:04/10/24 10:34:55
>>391
再帰の説明はとりあえずテールリカージョンから始める
Hello, world! と表示させるのにわざわざ cc がいらないのと同じ

395 :デフォルトの名無しさん:04/10/24 12:07:41
cc?

396 :デフォルトの名無しさん:04/10/24 12:20:20
Carbon Copy


397 :デフォルトの名無しさん:04/10/24 12:55:30
Cubic Centimeter

398 :デフォルトの名無しさん:04/10/24 12:57:01
Carbon Copy ?

399 :デフォルトの名無しさん:04/10/24 13:54:30
Carbon Copy !

400 :デフォルトの名無しさん:04/10/24 14:10:19
柴田だめすぎ

401 :デフォルトの名無しさん:04/10/24 14:47:06
> そんな私は日下部先生の本を読んで勉強しました。

『作ってわかるCプログラミング』 技術評論社 だな?
そんなにいい本か? 近所の書店では見かけないのだが。
(秋葉原の書店で見かけたときは表紙しか見なかったし...)

402 :デフォルトの名無しさん:04/10/24 15:01:49
Card Capture

403 :デフォルトの名無しさん:04/10/24 15:46:10
> http://mixi.jp/show_friend.pl?id=5996
> 関係:先生
> 見捨てず最後まで教えてくれるのです!!
> 美味しい物をご馳走してくれます。笑。

> 関係:せんせー
> 1年の時にプログラムを教えてくれました。
> 何だかんだ言って面倒見のいい方で、質問したら最後まで教えてくれます。

「最後」ってどこだ?


404 :デフォルトの名無しさん:04/10/24 16:27:08
全ての疑問が解けるまで

405 :デフォルトの名無しさん:04/10/24 16:42:37
なんかエッチだな... > 最後まで

406 :デフォルトの名無しさん:04/10/24 16:47:13
いいなあ > 女子学生getしまくり

407 :デフォルトの名無しさん:04/10/24 17:23:14
C言語のリファレンス本で、本屋にやたらぶあついのがあったんだけど
買ったほうがいいのかな?

408 :デフォルトの名無しさん:04/10/24 17:32:13
厚ければいいのか?
国語辞典はともかく、広辞苑を使う必要がそんなにあるか?

409 :デフォルトの名無しさん:04/10/24 17:35:47
>>408 言わんとすることが解りました。買わないでおくことにします。レスdクスです

410 :デフォルトの名無しさん:04/10/24 18:51:58
ヴェガ!!

だなあ


プロフェッショノー気取っても
分からないことも数多く出るんだよ
だからみんな参考書を片手にガタガタ打ってるんだよ

習得の際にも役に立つし、
仕事でふと度忘れしたときにも役に立つ
だから分厚い本である必要はないが
詳細すぎるほど詳細に記した本があるなら
それを迷わず買わ「ねばならない」

全ての関数を詳細に説明した、網羅したものが望ましい

411 :デフォルトの名無しさん:04/10/24 18:52:33
広辞苑は第3版は昼寝にちょうどいいが、
第4版は厚さがだめ、だとvoid先生がおっしゃっていました。

412 :デフォルトの名無しさん:04/10/24 18:54:39
> 分からないことも数多く出るんだよ

おれ、出てこないよ。

413 :デフォルトの名無しさん:04/10/24 18:55:07
> 全ての関数を詳細に説明した、網羅したものが望ましい

man読め > ぼけ

414 :デフォルトの名無しさん:04/10/24 18:55:30
もしくは /usr/src/libc

415 :デフォルトの名無しさん:04/10/24 18:55:58
関数が全部かいてある本がほしい、とかいうのはぼけすぎだ。

416 :デフォルトの名無しさん:04/10/24 18:56:06
.         ,,-" ,,‐"   ヽ、;:-1''´      ヽ /::::::
       ,,-" i ,,"       l    ,      `、ゝ、::::
.     ,,-" . /,,''        l /        ヾ  `
.    ,,-   ヽ''__  ::ヽ    l,/          '、
    ,."     ,,゙ヽ, ミ、、:::}    l     _,,----ミ  '、
   ,.'     ,'  i ヽミ'.、、   /.l  _,,,、-;=;;==‐,z   '、
  ,′    ,'  l  ヽ`='ゞ、ヽー'イ''~ヽー`='--イ    '
.  '      l!   l   //    l! ヽ、         .'    参 ・ 考 ・ 書 !
 ,′     l!   ',    /    ゙i   ヽ、       ' 
. ;      l!    '、  /      ゙i         /:. i それが俺たちピログラモヮーが共有した
. ;      .l!     '、 /       ゙i        /::: l
. i.      l!     'y        ゙i      /:::  i              ただひとつの正義のはず
  ',      ',     く __ _      ゙i     i:::.  i゙
  '、     ',      ヽ        ゙i     i::: /
.        ',      '、 ヽ-‐‐‐‐---一
.        ',       '、`ー---
         '、      >,             .,- ゙
             /;;;;;'、          .,-"
           , ';;;;;;;;;;;;;;'、        ,-´:::


417 :デフォルトの名無しさん:04/10/24 18:56:43
> ひとつの正義のはず

社長だもんね

418 :デフォルトの名無しさん:04/10/24 18:56:47
そりゃ大したことをしないダボはわからんことなぞ出てこん

419 :デフォルトの名無しさん:04/10/24 18:57:57
っていうかCみたいに言語仕様の小さいものぐらいは数日で把握しきれる。
それさえも「ときどきわからないことがでてくる」ようなやつが
ぷろふぇっしょなるを自称するとは、まぬけすぎー

420 :デフォルトの名無しさん:04/10/24 19:02:36




│            _
│         /  ̄   ̄ \
│        /、          ヽ
J         |・ |―-、       |
         q -´ 二 ヽ      |
        ノ_ ー  |      |
         \. ̄`  |      /
         O===== |
        /          |
        /    /      |

421 :デフォルトの名無しさん:04/10/24 19:13:56
ぬゑぽ!!!



422 :デフォルトの名無しさん:04/10/24 19:18:38
全ての関数ですか。

423 :デフォルトの名無しさん:04/10/24 19:42:11
さて、またあぼ〜んいくか
面積浪費のクソレス野郎氏ね

424 :デフォルトの名無しさん:04/10/24 21:54:01
明示的にポインタ変数にnullを代入したいときってどうするのが
一番いいんですか?

425 :デフォルトの名無しさん:04/10/24 21:57:03
galtu = NULL;

426 :デフォルトの名無しさん:04/10/24 22:07:18
> 明示的に

そんな日本語はない。

427 :デフォルトの名無しさん:04/10/24 22:11:05
へぇw

428 :デフォルトの名無しさん:04/10/24 22:11:31
明示〜はっきり分かるように示すこと。

明示的〜はっきり分かるように示すこと、みたいな
                           (的)


429 :デフォルトの名無しさん:04/10/24 22:12:18
stdlib.hをインクルードしないとNULLが使えないみたいですが、
#define NULL 0
とかしてもいいですか?

430 :デフォルトの名無しさん:04/10/24 22:15:11
いいよ。

431 :デフォルトの名無しさん:04/10/24 22:18:42
ありがとうございます。

432 :デフォルトの名無しさん:04/10/24 22:28:21


433 :デフォルトの名無しさん:04/10/24 22:39:43
良いわけねえだろw

434 :デフォルトの名無しさん:04/10/24 22:40:42
C++ ならいいんでは?
C ではだめなんだっけ。

435 :デフォルトの名無しさん:04/10/24 22:41:44
"明示的に" の検索結果のうち 日本語のページ 約 133,000 件中 1 - 50 件目 (0.19 秒)

存在しない日本語にしちゃあ、誤用が多いようで。

436 :デフォルトの名無しさん:04/10/24 22:44:18
数だけかぞえればいいのだったら、どんな誤用も正しいことになるぞ ぼけ

437 :デフォルトの名無しさん:04/10/24 22:44:37
「明示的」はよく使われる。
たぶん、どこぞの誰かが和訳のときに用いたのが広まったんだろ。

438 :デフォルトの名無しさん:04/10/24 22:45:53
>>436
じゃあゴキブリって言うなよ

439 :デフォルトの名無しさん:04/10/24 23:04:49
>>434
いいや、どっちもダメではない。
ただ、わざわざdefineするほどのものでもない。
p=0; とか書いたって全然問題ないだろ?

440 :デフォルトの名無しさん:04/10/24 23:27:57
いえ。NULLってかきなさい。

441 :デフォルトの名無しさん:04/10/24 23:37:31
#ifdef __cplusplus
#define NULL 0
#else
#define NULL (void*)0
#endif

442 :デフォルトの名無しさん:04/10/25 00:14:43
(void*)は余分です

443 :デフォルトの名無しさん:04/10/25 00:17:38
とりあえずVC++のNULLはこうなってるな

/* Define NULL pointer value */

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

444 :デフォルトの名無しさん:04/10/25 00:26:22
>>437
言葉ってのはそもそも誰かが最初に使わなきゃ存在しないものなんだから、
そりゃぁ誰かが使ったんだろうな。
〜〜的にってのは便利だから(俺的にーとか)同地多発的に発生したんだろ。
そういう新しい言葉を受け入れられなくなったらもうおっさんかもな。

445 :デフォルトの名無しさん:04/10/25 00:27:15
gccだと0でも文句言われないな
lintもおっけー

446 :デフォルトの名無しさん:04/10/25 00:29:46
> 言葉ってのはそもそも誰かが最初に使わなきゃ存在しないものなんだから

いいわけにすぎない。

> gccだと0でも文句言われないな

gccにかぎらずCはすべてそう。


447 :デフォルトの名無しさん:04/10/25 00:35:55
必至だな

448 :デフォルトの名無しさん:04/10/25 00:40:16
誤用にも関わらず広がってしまい、いかにも正しい言葉であるかのように
振る舞っている言葉はどうするんですか?

449 :デフォルトの名無しさん:04/10/25 00:42:06
>>448
そのうち消えるか、正しい(藁)日本語として認知されるようになるでしょ。
今正しいと思って使ってる言葉だってもともとはそういう風に進化して来たんだから。

450 :デフォルトの名無しさん:04/10/25 00:56:21
> 日本語として認知されるようになるでしょ

なりません。

451 :デフォルトの名無しさん:04/10/25 00:57:55
正しい日本語と正しくない日本語の区別は誰が決めてるんですか?>おっさん

452 :デフォルトの名無しさん:04/10/25 01:08:36
Linux上でgccを使用しています。

makeした時間を実行ファイルに埋め込みたいのですが、
makefileを上手く使えば可能でしょうか?
ソフトのバージョン代わりにmakeした時間をprintfしたいと思っています。

453 :デフォルトの名無しさん:04/10/25 01:11:08
makeじゃないけどコンパイルなら__DATE__, __TIME__

454 :デフォルトの名無しさん:04/10/25 01:14:08
>>451
少なくともお前には決める資格なし(プゲラ

455 :デフォルトの名無しさん:04/10/25 01:17:03
なんか納豆臭いね

456 :デフォルトの名無しさん:04/10/25 01:30:59
> makefileを上手く使えば可能でしょうか

いいえ。むしろMakefileにしろ

それにMakeした時刻なんかより
static sccsid = "$Id"; はかならずやっとけ

457 :デフォルトの名無しさん:04/10/25 01:41:31
このスレもレベル低下が激しい。そんなに煽り煽られが好きならこの板にいなきゃいいのに。

458 :デフォルトの名無しさん:04/10/25 01:47:18
つまり457は、自分の理解できない内容は読み飛ばしてるから、そうなる ;-)

459 : ◆FIcNi4f8js :04/10/25 01:50:15
          /\
        /    \/\
        |\   /    \/\
      /\  \ |\    /    \/\
    /    \  |  \  |\    /    \/\
    |\    /  .|       \  |\    /    \ /\
   / \ \/    |             \  |\   /    \/\
 /    \ |    .|                 \ |\    /    \/\
 |\    /|     |                      \|\    /    \
 |  \ //\                             \ /        \
 |   |/    \                      ウワァン!  /\          >
 |   \    /|                 ヽ(`Д´)ノ  /    \      / .|
 |     \ //\               / (  )  \       \   /    |
 |      |/   \        /\ /    < ヽミ3 \     /| /      |
 |      \    /|   /\/    \      \    /|   /          |
 |        \ //\/    \     \     /|  /                 |
 |         |/   \     \    / | /                    |
 |         \     \   / | /                         .|
 |           \    /| /                              .|
 |            \ /                                  |
 |              .|                                   .|
               |
               |
               |


460 :デフォルトの名無しさん:04/10/25 02:03:04
まあ少なくとも「確信犯」「役不足」でバカ大学生が正しい用法正しい用法と騒ぎだしたのは

「テレビで紹介されてから」だな。



もともとは自分も知らなかった
で、マスコミに踊らされてさも「昔から知っていたかのように」振舞った
オメー今までそんなこと一言も言ってねえじゃん、程度のもの

461 :デフォルトの名無しさん:04/10/25 02:06:20
確信犯の誤用ってどんなのだっけ

462 :デフォルトの名無しさん:04/10/25 02:12:13
わかっててやること

463 :デフォルトの名無しさん:04/10/25 02:15:30
「芸者」もそうだよな


昔は芸者と言えば「武芸」に優れたものも呼び名であった

それがいつしか踊り子を呼ぶようになった


464 :デフォルトの名無しさん:04/10/25 02:20:18
お前らが馬鹿だということはよく分かった

465 :デフォルトの名無しさん:04/10/25 02:21:32
123456789

466 :デフォルトの名無しさん:04/10/25 02:26:46
ニポンゴ難しいあるよーホエホエ

467 :デフォルトの名無しさん:04/10/25 02:31:26
> まあ少なくとも「確信犯」「役不足」でバカ大学生が正しい用法正しい用法と騒ぎだしたのは

じゃあ「確信犯」のもともとの意味言えるか? ;) (「役不足」は簡単すぎ。反対なだけなので)

468 :デフォルトの名無しさん:04/10/25 02:32:40
>>461
確信犯

×わざとやること、わかっててやること

○(政治的・宗教的な)信念に基づいて自分は正しいことしていると信じて行う犯罪

469 :デフォルトの名無しさん:04/10/25 02:35:01
いちいちバカ相手にしてスレを脱線させてるヤシもバカ

470 :デフォルトの名無しさん:04/10/25 02:40:04


471 :デフォルトの名無しさん:04/10/25 02:47:33


472 :デフォルトの名無しさん:04/10/25 02:54:01
確信犯は

法律に触れるのは理解するが自らの信念に基づいて
正しいと思うことをやるってことかとおもった

誤用でもあり誤用でもないような

473 :デフォルトの名無しさん:04/10/25 02:55:00
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              


474 :デフォルトの名無しさん:04/10/25 03:12:13
ようは「法律のほうがまちがってる」という信念でやってる場合は、
通常の刑では効果ないのよね。

475 :デフォルトの名無しさん:04/10/25 03:23:26
もう、おまいら良いから。
世間に関心がある振りなんてしなくて良いから、
C言語だけ語っておけ。

476 :デフォルトの名無しさん:04/10/25 03:25:09
>>473
なんだそのスペースは。もったいないことすんな

477 :デフォルトの名無しさん:04/10/25 03:32:14
>>468
それじゃ違いが分からないんですけど・・・

478 :デフォルトの名無しさん:04/10/25 03:39:26
はいはい

479 :デフォルトの名無しさん:04/10/25 04:18:32
>>477
おいおい、全然違う。

480 :デフォルトの名無しさん:04/10/25 04:48:33
法に触れるとわかっているが、信念に基づいて正しいと信じてわざと行う犯罪。
は、○で且つ×。

481 :デフォルトの名無しさん:04/10/25 05:16:18
誤用とか確信犯とか正しい日本語とか、どうでもいいからヤメれ。

482 :デフォルトの名無しさん:04/10/25 06:56:17
日本語なら俺に聞け! Part 93

483 :デフォルトの名無しさん:04/10/25 08:13:19
ある関数で再帰をしている時、その関数内で値の帰るreturn(つまりvoidではない)された場合は、
今まで再帰でたまっていたスタックは、すべて自動的に、解放されるのでしょうか?


484 :デフォルトの名無しさん:04/10/25 08:24:49
>>483
再帰の最下層でreturnしたからって最初に再帰を呼び出した箇所に戻るわけじゃないんだから、
順次さかのぼってPOPされていくと思われ。

gotoなんか使ってると別だけど

485 :デフォルトの名無しさん:04/10/25 08:29:17
いや解放されるのは一個だけ

486 :デフォルトの名無しさん:04/10/25 08:30:51
再帰は、全く同内容の、別の関数を呼んでいると思えばいい

func→func→func→func→func→func→
なら

func0→func1→func2→func3→func4→func5→








487 :デフォルトの名無しさん:04/10/25 08:37:50
じゃあ中にはいっているstaticな変数の立場はどうなる?

488 :デフォルトの名無しさん:04/10/25 08:38:34
> 最初に再帰を呼び出した箇所に

「再起を呼び出し」が意味不明

489 :デフォルトの名無しさん:04/10/25 08:39:50
> その関数内で値の帰るreturn(つまりvoidではない)された

値を返さない関数はスタックを消費しないとでも思ってるのか? このぼけは

490 :デフォルトの名無しさん:04/10/25 09:06:22
>>484-489
回答ありがとうございました。二分探索木で探索し終わった後も、わざわざ戻っている訳なんですね。
なんか効率がいいのか悪いのか、よくわからないなあ。


491 :デフォルトの名無しさん:04/10/25 09:08:32
>>487
そういうトリックコードが好きなの?

492 :デフォルトの名無しさん:04/10/25 09:33:54
>>490
処理効率を求めて再帰を使うんじゃない。
アルゴリズムをシンプルに実装するために再帰を使うんだ。

493 :デフォルトの名無しさん:04/10/25 09:36:48
最近のコンパイラなら、末尾再起は最適化されてループと変わらないと思う。

494 :452:04/10/25 10:12:03
>>453

有り難うございます。
やりたい事はできました。

>>456

すいません、もう少し詳しく教えて貰えませんか?
sccsidをprintfすると「$Id」がそのまま出力されてしまいます。


495 :デフォルトの名無しさん:04/10/25 10:21:21
>>494
>456はSCCSなんて古式床しき代物でリビジョン管理しているだけだから無視していいよ。
#他にも、RCS/CVSなら"$Id$"というようにリビジョン管理用のキーワードがある。
#これらを埋め込んでおいてリビジョン管理するとそのキーワードがリビジョン情報になるわけだね。

496 :デフォルトの名無しさん:04/10/25 10:24:12
make makes many problems
http://pc5.2ch.net/test/read.cgi/tech/1029599472/l50


497 :452:04/10/25 10:25:00
>>495

理解できました。
丁寧なアドバイス有り難うございました。


498 :デフォルトの名無しさん:04/10/25 12:20:12
>>456
rcsやsccsの埋め込みキーワードなんか何の役にも立たない。
それどころかコミットするたびにファイルが変更されるから
エディタで読み直しが必要になったり、勝手に再コンパイルしたりと
鬱陶しいだけ。その見返りがあまりになさすぎ。
単一ファイルで完結するアプリならまーいいかもしれんけど。

499 :デフォルトの名無しさん:04/10/25 13:10:08
>>498
CVS使ったことある?
#いや、なんとなく知らないんだろうなぁと思ってね。

500 :デフォルトの名無しさん:04/10/25 13:15:21
>>498
そんな低レベルな使い方での不満でバージョンコントロールシステムを
否定する人も珍しいな。ちゃんとしたツールを使おうね。



501 :デフォルトの名無しさん:04/10/25 13:16:41
お前等いいかげんにmakeのスレにでも逝け

502 :デフォルトの名無しさん:04/10/25 15:54:29
int hoge(int a) {
// ...
if (a == 0) { return 1; }
// ...
if (a == 2) { return 1; }
// ...
return 2;
}

というのと

int hoge(int a) {
int r = 1;
do {
// ...
if (a == 0) { break; }
// ...
if (a == 2) { break; }
// ...
r = 2;
} while (0);
return r;
}

というのとどっちがいいですか?

503 :デフォルトの名無しさん:04/10/25 15:56:05
>>502
int hoge(int a) {
switch (a) {
case 0:
case 1:
case 2:
// ...
return 1;
break;

default:
return 2;
break;
}
}

504 :デフォルトの名無しさん:04/10/25 15:59:25
あ、すみません途中から直接returnで戻るのと
breakで最後に抜けるのとどっちがいいかなと思いまして。
returnのかわりにgotoで最後付近のラベルに行くのはまずいですか?


505 :デフォルトの名無しさん:04/10/25 16:04:58
>>502
ifの羅列は事故の元。
最低でもelse if、ちゃんと書きたかったら>503を見習え。
お前のレベルでgotoは使うな。禁じ手にしておけ。
変にフラグ変数を持とうとするな。ローカル変数でも増えれば管理コストが増える。


506 :デフォルトの名無しさん:04/10/25 16:42:50
>>504
俺は途中でreturnで抜ける。
抜ける箇所が複数あって、それぞれで同じ処理をしなければ
ならないときは、関数の最後にまとめるけど。

507 :デフォルトの名無しさん:04/10/25 16:59:22
俺は引数チェックのときはその場で抜ける。(なんかこの書き方には名前が付いてた気がするが・・・。)
関数の本体では最後まで粘る。
分岐中にreturnしなきゃならないようなときはその部分を別関数に分ける。


508 :デフォルトの名無しさん:04/10/25 17:09:42
>>507
私もだいたいそんな感じ。

509 :デフォルトの名無しさん:04/10/25 17:22:47
K&R C演習8-4の「アンサー・ブック」の解答に疑問を感じています。
書き込みファイルの処理において、
fp->cntとfp->ptrの値の変更は必要ないのでしょうか。
このままではwrite()で書き出した古いバッファの中身を、
新しい位置でバッファがいっぱいになったときに再び書き出してしまうのでは?

510 :デフォルトの名無しさん:04/10/25 17:31:35
レイトレーシング法使ったオーロラって描くの難しい?
これやろうと今必死なんだがよくワカンネ・・・〇| ̄|_

511 :デフォルトの名無しさん:04/10/25 17:39:05
>>510 POV-Ray 使うと簡単。

512 :510:04/10/25 17:51:53
即レスthxです。
できればVisual C++で作りたいんですけど、それじゃ無理かな?
お答えいただいたのに申し訳ないです

513 :デフォルトの名無しさん:04/10/25 17:54:53
色付き透過ポリゴンを適当に並べてレンダリングすればいいだけじゃないの?

514 :デフォルト名無しさん:04/10/25 18:17:27
やっぱりここに限る。
http://p51.aaacafe.ne.jp/~aypg/

515 :デフォルトの名無しさん:04/10/25 18:21:01
>>499 >>500
脊髄反射レス乙
俺は埋め込みキーワードが使えないっていってるだけ
cvsは普段から使ってる
つかさ、cvs使ってんなら尚更埋め込みなんか無意味だろ?

516 :デフォルトの名無しさん:04/10/25 18:27:45
お前等いいかげんにmakeのスレにでも逝け 


517 :デフォルトの名無しさん:04/10/25 20:42:33
>>515
ふーん。

>>510
別にコンパイラは何でもいいでしょ。

>>509
そう書かれてもアンサーブック成るものを知らないからなんとも言えない。

>>502
迷うくらいならgoto使うな。自信があるなら止めはしない。

518 :デフォルトの名無しさん:04/10/25 20:43:48
>>504
発想が goto であるかぎり break や return に偽装しても全く同じこと
ジーオーティーオーというスペルに過敏反応するだけな先輩は見習わない方がいい

 【 な ん で ル ー プ が き れ い に ま と ま ら な い の か 】

自分に厳しく問いただせ
その場しのぎのいい加減な答えに騙されるな
ちゃんと数学的に考えろ

519 :デフォルトの名無しさん:04/10/25 20:50:42
> 【 な ん で ル ー プ が き れ い に ま と ま ら な い の か 】

どこからループが?
頭ん中でループしてますか?

520 :デフォルトの名無しさん:04/10/25 21:02:42
breakから
for(;;){
  for(;;){
    ...
    goto LOOP_END;
  }
}
LOOP_END:

こういう場合を想像したんじゃない

521 :デフォルトの名無しさん:04/10/25 21:05:24
脳内妄想して興奮して空白入れまくりか、オメデテーナ

522 :デフォルトの名無しさん:04/10/25 21:07:02
>>519
逆に聞くが >>504 は読めてるか?
つーか、おまえ本当にC使いか?

523 :デフォルトの名無しさん:04/10/25 21:08:29
>>502-503
は無視か、オチツケヨオメー

524 :デフォルトの名無しさん:04/10/25 21:14:37
もともと goto 回避って言いたかっただけだろ?
while(0) みたいなコードを何の動機もなく書くキチガイは相手にしてないよ

525 :デフォルトの名無しさん:04/10/25 21:16:00
相手にしないのならレスするなw

526 :デフォルトの名無しさん:04/10/25 21:18:55
>>525
キチガイと断定してないだろ
オチツケヨオメー をそのまま返す

527 :デフォルトの名無しさん:04/10/25 21:19:48
>>524
do {...;} while (0);
はbreakの受け皿として割りと見るコードだけどそれをきちがいと?
読めてないなら書かなくていいよ。

528 :デフォルトの名無しさん:04/10/25 21:20:56
>>527
>>524

529 :デフォルトの名無しさん:04/10/25 21:26:57
……何この人。一人下げずに必死になっちゃって。

530 :デフォルトの名無しさん:04/10/25 21:28:24
unsigned char hoge[4]に unsigned int を代入したのですが、
1発で代入する方法はありますか?
ビット演算して1バイト毎に代入する方法しか思い浮かばなくて。

hoge[0] = unsigned intの7-0ビット
hoge[1] = unsigned intの15-8ビット
hoge[2] = unsigned intの23-16ビット
hoge[3] = unsigned intの31-24ビット


531 :デフォルトの名無しさん:04/10/25 21:33:36
強引な方法でよければ
unsigned char hoge[4];
unsigned int p=0x12345678;

memcpy(hoge, &p, sizeof(unsigned char)*4);
エンディアンはシラネ

532 :デフォルトの名無しさん:04/10/25 21:34:07
>>530
リトルエンディアンなら*(unsigned int *)hoge = 0x12345678;

533 :デフォルトの名無しさん:04/10/25 21:34:30
>>529
たまたま虫の居所が悪かったが
最初のレスに無礼があれば謝らない限り方向性は確定

534 :デフォルトの名無しさん:04/10/25 21:40:00
>>527
キチガイでいいよ。

535 :デフォルトの名無しさん:04/10/25 21:41:02
ftpのコマンドラインをcプログラムの中に書くことできるんですか?

536 :デフォルトの名無しさん:04/10/25 21:45:26
>>530
上記の補足だけど、union使う方法もある。

537 :デフォルトの名無しさん:04/10/25 21:47:22
>>535
system("ftp");
ってこと?

538 :デフォルトの名無しさん:04/10/25 21:48:31
だれか>533を説明してくれ。

539 :デフォルトの名無しさん:04/10/25 21:53:30
*( (unsigned int*)&hoge[0] ) = *((char*)&data[3]) | *((char*)&data[2])<<8 | *((char*)&data[1])<<16) | *((char*)&data[0]<<24);
ビッグエンディアンならこうできないかな。やった事無いし、わかんないけど。

540 :530:04/10/25 22:05:59
>>532

出来ました!!
有り難うございます。

ポインタって奥が深いですね。
ハード屋な私にはある意味ヒエログラフです。

541 :デフォルトの名無しさん:04/10/25 22:18:16
>>540
アドレスバスに出力する情報とバウンダリが何か?

542 :デフォルトの名無しさん:04/10/25 22:20:37
>>538
放置しる

543 :デフォルトの名無しさん:04/10/25 22:26:30
2chにはageを毛嫌いする人種がいるからな

544 :デフォルトの名無しさん:04/10/25 22:28:33
>>543
嫌われてるのはお前自身だろう。ageのせいにしてはいけない。

545 :デフォルトの名無しさん:04/10/25 22:30:04
int xが1なら0を0なら1をxに代入するプログラムで
x = 1 - x;
以外に効率のいい方法ってありますか

546 :545:04/10/25 22:30:23
>>545
以外に→以上に

547 :デフォルトの名無しさん:04/10/25 22:30:25
2進数の入れ方について

int a = 123;
とすると、
aに10進数の123を入れたことになります。

では、
2進数の01010101
をaに入れるには、どうすればよいのでしょうか?
(何か、特別な関数があるのでしょうか???)


548 :デフォルトの名無しさん:04/10/25 22:31:52
>>547
#include <stdlib.h>
int a=strtol("01010101",NULL,2);

549 :sage:04/10/25 22:33:58
>>547
普通に
int a = 01010101
でいいんじゃない?
コンパイルエラーにならなかっから、これでいいと思うけど・・・


550 :age:04/10/25 22:35:19
>>549
それじゃ8進数の1010101が入る。
あとセミコロンを忘れるな。

551 :デフォルトの名無しさん:04/10/25 22:37:19
>>550
ええ!なんで?


552 :age:04/10/25 22:37:41
頭に0がつくから。

553 :デフォルトの名無しさん:04/10/25 22:38:33
545の方法初めて知った。。。
x=(x)? 0 : 1;か
boolなら
x=!x;
使ってる。

554 :>>549:04/10/25 22:39:14
>>552
頭に0がつく・・・8進数
頭が0以外・・・10進数

なのか・・・
うーん、ためになる。


555 :デフォルトの名無しさん:04/10/25 22:40:26
>>545
x = x ^ 1;
のほうが速いかも。


556 :デフォルトの名無しさん:04/10/25 22:40:33
>>554
違う

557 :>>547:04/10/25 22:40:47
>>548
ありがとうございます!



558 :デフォルトの名無しさん:04/10/25 22:41:06
>>554
頭に0がつく・・・8進数
頭に0xがつく・・・16進数
それ以外・・・10進数

559 :デフォルトの名無しさん:04/10/25 22:44:01
そういえば八進数なんてパーミッションの指定以外で使ったことないな

560 :>>549:04/10/25 22:44:29
>>558
うほっ!

なるほど・・・




561 :デフォルトの名無しさん:04/10/25 22:48:37
>>559
\033

562 :デフォルトの名無しさん:04/10/25 22:55:02
頭に0で八進数ってのは完全に設計ミスだよな。
桁そろえも満足に出来やしない。

563 :デフォルトの名無しさん:04/10/25 22:56:53
>>562
馬鹿ですね。あなたが。

564 :デフォルトの名無しさん:04/10/25 22:57:05
せめて0oとか・・・

565 :デフォルトの名無しさん:04/10/25 22:58:04
>>564
それは俺もいつも思う。
0o = 8進数
0x =16進数
0b = 2進数
にして欲しかった

566 :デフォルトの名無しさん:04/10/25 22:58:58
>>562
もういらんよな、あんな仕様。
>>563
根拠レスなあなたもなかなか負けてませんよ。

567 :デフォルトの名無しさん:04/10/25 23:02:57
桁あわせ??そんな事する必要あるのかな
0010
じゃだめなのだろうか

568 :デフォルトの名無しさん:04/10/25 23:07:30
だめだろ

569 :デフォルトの名無しさん:04/10/25 23:09:44
>>568
駄目な決まりあったっけ?

570 :デフォルトの名無しさん:04/10/25 23:11:09
>>569
お前脊髄反射でレスしてるだろ
少しはスレ読め

571 :デフォルトの名無しさん:04/10/25 23:11:43
pdpがオクタルマシンだったからな。
普通にメモリダンプするとアドレスとか全部8進ででてくるんだと。

000017 100000 077777 177777

先頭の0/1がそのまま符合ビットになって解りやす。

572 :デフォルトの名無しさん:04/10/25 23:12:41
Cでは10進数で0を表す事ができない。
……8進数になる。

573 :デフォルトの名無しさん:04/10/25 23:13:05
>>570
見てわからないんだがな
教えてくれないか?

574 :デフォルトの名無しさん:04/10/25 23:16:12
10進数で桁あわせするって事か
8進数で桁あわせたいのかと思った
なんで0であわせたいんだろうコボラー?
+でも頭につければいいのにー

575 :デフォルトの名無しさん:04/10/25 23:21:06
>>570
脊髄反射でレスできる香具師いたんかw

576 :デフォルトの名無しさん:04/10/25 23:23:39
>>572
その通り
integer-constant ::= decimal-constant integer-suffixopt
            | octal-constant integer-suffixopt
            | hexadecimal-constant integer-suffixopt
decimal-constant ::= nonzero-digit | decimal-constant digit
octal-constant ::= '0' | octal-constant octal-digit
nonzero-digit ::= '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
octal-digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7'

577 :デフォルトの名無しさん:04/10/25 23:24:24
猿なのでBNFなんて読めません

578 :デフォルトの名無しさん:04/10/25 23:35:25
8進数の1010が入っているint変数abcについて、
これを10進数にかえる方法ってありますか?

int a = 01010;

int b = int変数aを10進数に変換して入れたい。



579 :デフォルトの名無しさん:04/10/25 23:40:29
>>578
ネタはネタスレで

580 :デフォルトの名無しさん:04/10/25 23:40:29
>>578
変換は必要ありません。
a はすでに 10 進数になっています。

581 :デフォルトの名無しさん:04/10/25 23:40:55
>>580
お前もネタスレへ

582 :デフォルトの名無しさん:04/10/25 23:40:58
なってねえよ

583 :デフォルトの名無しさん:04/10/25 23:46:32
int aは8進数でもあり、10進数でもあり、
取り出すときに好きにしろってこった

584 :デフォルトの名無しさん:04/10/25 23:48:25
>>581
いや、まじめに答えたんですけど。
こういう言い方のほうが分かりやすいかなぁと思って。

585 :デフォルトの名無しさん:04/10/25 23:56:16
>>584
自分のレベルに人をあわせるな
お前のような奴がC初心者本出すと、ケツ拭く紙にも使えない本になるんだよな

586 :デフォルトの名無しさん:04/10/25 23:58:34
>>585
いやヒドイ言い方だなぁ。
質問者のレベルに合わせただけじゃないか。

587 :デフォルトの名無しさん:04/10/26 00:00:41
>>578
この場合の「01010」は、ある数値(この場合10進数の520)の表現方法の
1つに過ぎません。よって、int a = 01010;と書いたことでaに代入されるのは
10進法で言う520であり8進数で言う1010であって、aには実際に進数とその
表現をセットで格納しているわけではないのです。

588 :デフォルトの名無しさん:04/10/26 00:03:58
表記が違うだけで数値は等しいので変換の必要はなし。

589 :デフォルトの名無しさん:04/10/26 00:05:33
>>586
最初から正しい事を書けば二度手間じゃないだろ?
わざと正しくない事を教えて何の意味がある?

590 :デフォルトの名無しさん:04/10/26 00:06:16
なるぽ

591 :>>578:04/10/26 00:06:32
>>587
GoodJob!
ありがとうございます!


592 :586:04/10/26 00:07:32
>>588
結局ね、こういう言い方もね、>>580 もね、同じなんだよねぇ。

表記を無視して実体は語れないんだからさ、
1つの表記をもって実体と言ったっていいと思うがね。

数学とかでよくやる手法だよ。
剰余群の元をもとの群の部分集合やそこに属する元で代表させたりさ。

593 :デフォルトの名無しさん:04/10/26 00:07:44
よく言うだろ?
Cの初心者本を書く人は書いてる人自身がC初心者だって。

594 :デフォルトの名無しさん:04/10/26 01:01:38
>>592
いや >>588 はどう好意的に解釈しても 大 嘘 だろ

595 :586:04/10/26 01:14:20
>>594
え?そう?どこらへんが間違ってる?

596 :デフォルトの名無しさん:04/10/26 01:18:21
>>595
間違っていない

597 :デフォルトの名無しさん:04/10/26 01:18:42
>>595
すまん誤爆したw>>580だた

598 :デフォルトの名無しさん:04/10/26 01:30:59
> その見返りがあまりになさすぎ。

それがおまえがぼけなだけ。

strings /usr/bin/* する楽しみがあるじゃないか

599 :デフォルトの名無しさん:04/10/26 01:32:37
わたしはsubversionユーザーだが、
RCSでもcvsでも$Id$を入れるダミー変数はsccsidという名前にする慣習が
昔からあることを知らないやつはかなりのボケだと思う。(Unix屋ならまずまちがいなく知ってる)

600 :デフォルトの名無しさん:04/10/26 01:37:00
> 表記を無視して実体は語れないんだからさ、

語れるにきまってるだろ! ぼけ

表記がなんであろうと a + b はできるし
a > b もできるんだよ


601 :デフォルトの名無しさん:04/10/26 01:38:22
>>600
表記しているやん

602 :デフォルトの名無しさん:04/10/26 01:41:32
いいえ。してません。aが10進数か8進数かに無関係に足し算はできるし
比較もできる。代入も
なので、表記とか何進数かなんてのは気にしないままにその変数の一生が終わることが
ほとんどだ。

603 :デフォルトの名無しさん:04/10/26 01:43:25
>>602
ところで「何を足し算しているの」と聞かれたら?

604 :デフォルトの名無しさん:04/10/26 01:44:38
整数です。

605 :デフォルトの名無しさん:04/10/26 01:46:52
>>604
「整数とはなんですか」と聞かれたら?

606 :デフォルトの名無しさん:04/10/26 01:47:56
納豆臭いな・・・

607 :デフォルトの名無しさん:04/10/26 01:48:01
>>605
それはC言語の話になるのか?

608 :デフォルトの名無しさん:04/10/26 01:49:23
>>607
ごめん、関係ないと思う。
「表記を無視して実体は語れない」ということの真義を教えてあげようと思ってね。

609 :デフォルトの名無しさん:04/10/26 01:49:27
話の流れだ。
スレ違いではあるまい。

610 :デフォルトの名無しさん:04/10/26 01:52:07
そんなものはありません

611 :デフォルトの名無しさん:04/10/26 01:55:10
表記ってのはそもそも、そこにある実体を分かりやすくするためにこう書きましょうって決めただけのものなんだから、
別に表記が無くても実体は存在するし、でもそれを語るのは面倒くさいから何らかの表記を用いて実体を説明するのは大いに結構だけど、

> 1つの表記をもって実体と言ったっていいと思うがね。

これは駄目だろ。

612 :デフォルトの名無しさん:04/10/26 01:55:27
実体のままでは人が理解できないから、
人が理解できるような形にしたものが表記だろう。
PCの場合は電気信号のオンオフが実体か

というかそういうのは数学板方面の話題では・・・

613 :デフォルトの名無しさん:04/10/26 01:57:05
ちなみに、イデアは実体ではないよ

614 :デフォルトの名無しさん:04/10/26 01:58:08
たぶん >>611 は数学的な考え方がまったくできない人。
少なくとも数学という分野では表記なくして実体なんて存在しないという
考え方が主流だよ。形式的公理主義っていってね。

615 :デフォルトの名無しさん:04/10/26 01:58:21
小学生に算数教えるのに2進数は使わないだろうしな

616 :デフォルトの名無しさん:04/10/26 02:06:00
>>614
ちょっと単語を聞きかじったので使ってみたくなった中学生?
意味が全然違うぞ。

617 :デフォルトの名無しさん:04/10/26 02:06:24
いいかげん脱線に付き合うな、放置すれ

618 :デフォルトの名無しさん:04/10/26 02:07:56
もういいよ。
そろそろスレ違いを指摘した方がよさそうだ。


619 :デフォルトの名無しさん:04/10/26 02:14:46
>>616
いや、違わないよ。
じゃぁ、どういう意味なの?

620 :デフォルトの名無しさん:04/10/26 02:15:19
>>618
そうだね。私はもう突っ込むのやめる。

621 :デフォルトの名無しさん:04/10/26 04:42:50
形式主義的公理主義
http://homepage3.nifty.com/Mr-nobody/axiom.html

622 :デフォルトの名無しさん:04/10/26 09:52:17
お前らって、C「以外」の話になると雄弁だよな。

623 :デフォルトの名無しさん:04/10/26 09:53:27
まあ童貞だからね

624 :デフォルトの名無しさん:04/10/26 09:54:10
C言語を覚えたいんですけど、やっぱり本を買わないとダメですか?
サンプルのソースとかを見てわからない事があったらぐぐってみたり
じゃ覚えられないですかね?

ちなみにプログラム初めてです。

625 :デフォルトの名無しさん:04/10/26 09:55:13
>>537
例えば、こういうのをcから、やりたいのです。
    ↓
fool% ftp genta
Connected to genta.
220 genta FTP server (SunOS 5.8) ready.
Name (genta:monta):
331 Password required for monta.
Password:
230 User monta logged in.
ftp> put $HOME/file_1 ./file_001
ftp> quit


626 :デフォルトの名無しさん:04/10/26 10:12:22
>>624
日下部先生の本を買いましょう。バカ相手でも丁寧に教えてくれます。

627 :デフォルトの名無しさん:04/10/26 10:26:05
Visual C++.netを使用して、
VisualC++プロジェクト→.NET→コンソールアプリケーション
で下記を作成し、ウォッチで"tmp"を参照すると、<未定義の値>
となってしまいます。

#include "stdafx.h"
#using <mscorlib.dll>
using namespace System;

typedef struct{
int a;
int b;
int c;
}AAA;
AAA aaa[10];

int _tmain()
{
AAA*tmp;
tmp = &aaa[1];
return 0;
}

VisualC++プロジェクト→Win32→Win32コンソールプロジェクト
で作成すると、参照できるのですが、.NETの方で参照できる
方法はあれば、教えて下さい。

628 :デフォルトの名無しさん:04/10/26 10:27:43
>>626
ありがとうございます。ちょっとぐぐってきます。

629 :デフォルトの名無しさん:04/10/26 10:30:09
>>626
ぐぐって出てきた
作ってわかるCプログラミング っていうやつでいいでしょうか?

630 :デフォルトの名無しさん:04/10/26 11:18:32
>>629
そうです。
専用スレもあるけど、誉めるか貶すかどっちかで有益な情報は少ないから自分の目で確かめましょう。

631 :デフォルトの名無しさん:04/10/26 11:24:26
>>625
戦略は3通り。
・ftpクライアントのマクロを組んで、コマンドラインから指定する(やり方忘れた)。
#マクロ機能の無いftpクライアントならお手上げ。
・標準入力から入力すると思われる文字列を予めテキストファイルに用意して、流し込む。
#詳細後述
・system()ではなく、popen("ftp", "w")してfprintf()で流し込む。
#詳細省略

で、2番目の方法。>625の例なら、
--

password
put $HOME/file_1 ./file_001
quit
--
というテキストファイルを用意(勿論パスワードは適切に)。
#1行目はログイン名。この例では空行とした。
そのファイルがftpIn.txtなら、system("ftp < ftpIn.txt")とすればいい。


632 :デフォルトの名無しさん:04/10/26 11:37:53
>>631
クライアントによっては、パスワード入れるところで止まらないか?
外部プログラムから制御される目的で作られたクライアントであれば問題ないけど。

633 :デフォルトの名無しさん:04/10/26 12:01:53
>>599
最近はrcsidというのにするのが流行です

634 :デフォルトの名無しさん:04/10/26 13:54:19
>>631
第2案:パスワード入れるところで止まった。
ftpインタプリターに制御が移ったところへ、テキスト流しても対話しないと思う。


635 :デフォルトの名無しさん:04/10/26 13:56:59
>>634
だからちゃんと書いてあるだろ?何をつっかかってんだ

636 :デフォルトの名無しさん:04/10/26 14:05:14
ftpクライアントの挙動なんて、このスレで扱う事か

637 :デフォルトの名無しさん:04/10/26 15:36:28
’Д’)Σ むぅ、ダメか。私はどうやったんだろう…
’д’)  これ以上はスレ違いになりそうだし…

≡3  じゃ。そういうことで

638 :デフォルトの名無しさん:04/10/26 16:03:06
>>635
4階席から、catcallは止めましょう。
まともに書いてる人に悪いから。

639 :デフォルトの名無しさん:04/10/26 16:08:59
/* スレ違いなのでコメントアウト

多くの FTP クライアントの実装には、自動ログインさせないための
-n オプションがある。これを指定しておいて、標準入力から user
コマンドで
  user ユーザ名 パスワード
というのを食わせればいいんでないかと。 */

640 :デフォルトの名無しさん:04/10/26 16:13:52
#wget ftp://username:password@host/path

641 :デフォルトの名無しさん:04/10/26 16:18:50
cでftpモジュールをつくるには?
これなら、ほんスレかと。

642 :デフォルトの名無しさん:04/10/26 16:20:44
ネットワークプログラミングスレ向きだな。

643 :デフォルトの名無しさん:04/10/26 19:05:26
>>625 に SunOS って書いてるから Unix でしょ。
/dev/tty?? と /dev/pty?? を使った擬似端末で同様の処理を行った事あるよ。
ソース持ってるけど守秘義務あるので晒せない...
簡単に説明できるもんでもないし...ググッてね。

644 :デフォルトの名無しさん:04/10/26 19:19:53
>>643
>>>625 に SunOS って書いてる
相手がね。

645 :デフォルトの名無しさん:04/10/26 19:42:47
↑そうだな。でも fool% とか書いてるから Win ではないだろ。
Unix の仲間なら /dev/tty くらい有るだろ。良くは知らんが...

646 :デフォルトの名無しさん:04/10/27 00:17:23
> 最近はrcsidというのにするのが流行です

それは「ださい」と昔から言われている(いまも)やつです。

そういう私は、sccsの時代はちょっとしか体験しなかったけど、
ずっと長くRCSだった、VSSも使ったけどちょちょだけ、その後ずっとcvsで、
いまはSubversionだが、その5つともずっと変数名だけはsccsidだ。

647 :デフォルトの名無しさん:04/10/27 00:31:40
>>646
そんな話聞いたことないけど。あなたの回りか、ある一部だけの話では?
ググってもrcsidの方が圧倒的に多いよ。ひょっとして、使う人が少ないから「つう」ってことなのかな?

648 :デフォルトの名無しさん:04/10/27 00:40:32
> rcsidの方が圧倒的に多いよ

いいえ。それはかなりのまぬけ。

649 :デフォルトの名無しさん:04/10/27 00:41:57
使っているのがcvsなのに、キーワードはRCS互換のもの($Id$#とか$Date$とか)で、
さらに、いれる変数がsccsidってところがいいんじゃん。わたしもそうしてるよん。

650 :デフォルトの名無しさん:04/10/27 07:10:26
アフォが一人降臨なさってますな

651 :デフォルトの名無しさん:04/10/27 07:16:59
ははぁ、いまどき/usr/bin/*をstringsして喜んでる「Unix屋さん」でしたかw

652 :デフォルトの名無しさん:04/10/27 09:23:56
> いまどき/usr/bin/*をstringsして

いまどきじゃなくてもしますね。基本ですから。

653 :デフォルトの名無しさん:04/10/27 09:28:14
voidごっこは他所でやれよ

654 :デフォルトの名無しさん:04/10/27 09:47:22
>>653
どれがvoidごっこ?
おしえて! わたしもやりたいー

655 :デフォルトの名無しさん:04/10/27 13:15:44
Cってなんですか、入れるんですか?

656 :デフォルトの名無しさん:04/10/27 13:23:05
>>655
お前の人生、イラクの人質より価値が無い

657 :デフォルトの名無しさん:04/10/27 14:21:49
>>655
そう。挿れないのは B。

658 :デフォルトの名無しさん:04/10/27 14:28:53
16ビットのrawファイル読み込むときは
sizeはfloatで良いの?

659 :デフォルトの名無しさん:04/10/27 14:42:37
rawファイルって?

660 :デフォルトの名無しさん:04/10/27 15:30:15
生ファイルだろ。
画像の生なら16bit unsignedだな。

661 :デフォルトの名無しさん:04/10/27 15:36:19
いや、生ファイルはいいけど、その形式なんて作った奴に聞かんと分からんし。
なにか有名なアプリとかの「rawファイル」なら、知ってる人がいるかもだが。

662 :デフォルトの名無しさん:04/10/27 16:25:27
よく分からない質問に、それってどういうことだって質問しかえしても、
返事が返ってこないことがほとんどなので、不完全燃焼。

663 :デフォルトの名無しさん:04/10/27 16:27:54
>>658
16bitならunsigned short intで読み込むと良いよ
#include <stdint>
uint16_t
の方が良いけれど。

664 :663:04/10/27 16:29:19
#include <stdint.h>か。。

665 :デフォルトの名無しさん:04/10/27 20:26:47
質問です
Visual C++のコンソールアプリケーションでプロジェクトを作ったときに
int _tmain(int argc, _TCHAR* argv[])で始まる型が出来ますがこれはint main(void)と何が違うのでしょうか?
手持ちの参考書にはすべてのCプログラムではint main(void)が基本とありますがこれはいったいなんでしょうか?


666 :デフォルトの名無しさん:04/10/27 20:29:26
int main(int argc, char *argv[])とどこが違うか見ろ。
そして見たらVisual C++の専用のスレに移動しろ。


667 :デフォルトの名無しさん:04/10/27 20:54:04
http://www.ipa.go.jp/security/rfc/RFC1321JA.html
上記のサイトにあるMD5のプログラムを利用したいのですが、ソースを見てもちんぷんかんぷんです。
global.h
md5.h
md5c.c
mddriver.c
上記の4つのファイルからなってるみたいですが、
任意の文字列もしくは数字を入力すると128bitのハッシュ値を呼び出し元の関数へ返したいのですが
何の関数に何の型の引数を渡し、返り値はどういったものであるのでしょうか?(ファイルへ書き出すのでしょうか?)
簡単な使い方をアドバイスお願いします。

668 :デフォルトの名無しさん:04/10/27 21:00:56
>>667
必要なのは上三つ
使い方はmddriver.cを見よ
これくらい読めなければあきらめろ
htmlにする時に<>が消されてるかもしれないからソースは別の所から
取ってくるといいかも

669 :デフォルトの名無しさん:04/10/27 22:13:35
>>665
( ・∀・)つ〃∩ヘェーヘェーヘェー
結構.net使ってるけど
ずっと空のプロジェクトで作ってたから知らなかった

670 :デフォルトの名無しさん:04/10/27 22:22:36
>>665
パラメータを受け取るための文字列の型がTCHAR**になっているmain
TCHARはUNICODEのときはwchar、ANSIのときはcharになる

・・・であってる?

671 :デフォルトの名無しさん:04/10/27 22:24:42
>>665
つーか、WinアプリはGUIだろうがCUIだろうが freestanding-environment だぜ
main がどうたらと言いだした時点からかなり痛い勘違いに陥ってるぞ

672 :デフォルトの名無しさん:04/10/27 22:37:20
>>671
VC++ 6.0 Console Application だと Hosted Environment だけどね。
まあ、これは互換性の為だろうな。

673 :デフォルトの名無しさん:04/10/27 22:49:41
>>672
いーや、freestanding-environment だよ
任意になってる機能が多めに入っているが
main に関しては議論の余地すらない

674 :デフォルトの名無しさん:04/10/27 23:00:22
ここ最近質問者以外でageてる奴ってバカが多いね(一人か?)

675 :デフォルトの名無しさん:04/10/27 23:44:21
やーい、反論できねえ (プププ

676 :デフォルトの名無しさん:04/10/27 23:47:30
>>675
(〃∇〃)見てるこっちが恥ずかしいぞ

677 :デフォルトの名無しさん:04/10/27 23:58:41
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

678 :デフォルトの名無しさん:04/10/28 00:04:15
>>677
阿川弘之の初期の短編小説で「鱸とおこぜ」というのがあった。
昔は国語の教科書に収録されていたので知っている人も多いと思うが、食いつ

679 :デフォルトの名無しさん:04/10/28 01:13:26
K&RのUNIXの章がマジわからぬ。これ分からなくても問題ないですよね??
あと、アルゴリズムの入門書に、動的計算法がのってるけど、これ全然入門者向けじゃないよ〜


680 ::04/10/28 01:15:07
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

681 :デフォルトの名無しさん:04/10/28 01:24:39
質問おねがいします
C言語でDOS画面を出さずに裏で実行するアプリケーションを作るにはどうしたら言いのでしょうか
できるだけ自分で調べますのでヒントだけでもおしえて下さい

682 :デフォルトの名無しさん:04/10/28 01:26:03
rubyyyyyyyyyyyyyyyyyyyyyyyyyy

683 :r/556:04/10/28 01:34:35
>>681
TSRでググれ

684 :デフォルトの名無しさん:04/10/28 01:38:05
>>683
即レスありがとうございます。
常駐プログラムの作成法というのがいくつかヒットしました。
勉強してみます。ありがとうございます。


685 :デフォルトの名無しさん:04/10/28 08:06:21
CでTSRを書くと、無駄な領域まで常駐しちゃうから
メモリ勿体ないよな。
>>681 がんがれ!

686 :デフォルトの名無しさん:04/10/28 09:14:48
>>681
単に表にウィンドウが出なければいいだけなら、ショートカット作ってプロパティで設定するだけだけど?

687 :デフォルトの名無しさん:04/10/28 14:57:43
>>681
#include <windows.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}

ダメかな・・・

688 :デフォルトの名無しさん:04/10/28 15:21:44
exeとdllが一つづつ存在する。

exeには二つの関数a()とb()が定義されている。
dllには二つの関数A()とB()が定義されている。

exeはLoadLibrary、GetProcAddressを使って
A()を実行し引数として関数ポインタaを渡す。

A()は与えられたポインタaからa()を実行し
引数として関数ポインタBを渡す。

a()はポインタBからB()を実行し
引数として関数ポインタbを渡す。

B()は与えられたポインタbからb()を実行する。

typedef void(*FUNC_b)( void );
typedef void(__stdcall *FUNC_B)( void(*FUNC_b)(void) );
typedef void(*FUNC_a)( void(__stdcall *FUNC_B)( void(*FUNC_b)(void) ) );
typedef void(__stdcall *FUNC_A)( void(*FUNC_a)( void(__stdcall *FUNC_B)( void(*FUNC_b)(void) ) ) );

とやったのですが、
exeがLoadLibrary、GetProcAddressを使ってA()を実行するところで
ハンドルされていない例外が発生します。

どこを直せばいいのでしょうか。

689 :デフォルトの名無しさん:04/10/28 15:41:05
>>688
スレ違いかと思ったが、取り敢えず「何のために typedef したのか」と。
typedef void *FUNC_b(void);
typedef void __stdcall *FUNC_B(FUNC_b);
typedef void *FUNC_a(FUNC_B);
typedef void __stdcall *FUNC_A(FUNC_a);

690 :688:04/10/28 16:26:20
B()はGetProcAddressから読み出さないため__stdcallは必要無かったようです。
うまくいきました。ありがとうございます。

691 :デフォルトの名無しさん:04/10/28 19:02:39
質問よろしいでしょうか
文字型配列 T[255]にscanfから文字を格納します。
その T の先頭文字だけをatoi関数を使って数字にしたいのですが、
エラーが出てきてしまいます。解決法は無いでしょうか。


692 :デフォルトの名無しさん:04/10/28 19:05:54
>>691
先頭の1文字だけを数字にしたいなら
int n=(T[0] - '0')じゃダメなん?

693 :デフォルトの名無しさん:04/10/28 21:46:41
>691

書き方が悪い。


694 :デフォルトの名無しさん:04/10/29 03:01:18
scanf使うな ぼけ

695 :デフォルトの名無しさん:04/10/29 03:04:17
>692
なんで括弧で囲っているの?

696 :デフォルトの名無しさん:04/10/29 06:44:35
>>695
なんでそんなこと気にするの?


697 :デフォルトの名無しさん:04/10/29 06:49:34
>696
かっこつけたかっただけだろう

698 :デフォルトの名無しさん:04/10/29 07:21:35
>>697
ワロタ

699 :デフォルトの名無しさん:04/10/29 07:36:20
>>698
('A`) うそっ!? マジで?

700 :デフォルトの名無しさん:04/10/29 07:39:18
徹夜明けって、ハイになるよな。

701 :デフォルトの名無しさん:04/10/29 07:43:04
寒いしな

702 :デフォルトの名無しさん:04/10/29 08:57:58
燃え尽き症候群か?<灰になった

703 :デフォルトの名無しさん:04/10/29 14:02:41
popen()を利用すると標準入出力の入力か出力をパイプにできますが
両方同時にパイプを使いたい時はどうすればいいでしょうか

704 :デフォルトの名無しさん:04/10/29 15:02:20
パイプを2つ使えばどうでしょうか

705 :デフォルトの名無しさん:04/10/29 15:06:59
>>703
標準関数ではできないので該当スレへどうぞ。
#まぁ、>704しかないな。

706 :デフォルトの名無しさん:04/10/29 18:11:23
>>705
Cやん

707 :デフォルトの名無しさん:04/10/29 18:25:54
今日学校でscanfをつかっていたらそんなの使うなと
怒られました。fgetsをつかえっていわれたんですけど
実際scanfをつかうのはやばいんでしょうか?

708 :デフォルトの名無しさん:04/10/29 18:36:23
>>707
入力できる文字数を指定できないから、
例えば大量の文字列を入力した場合、確保した領域外を侵される可能性がある。

709 :デフォルトの名無しさん:04/10/29 19:53:07
領域を侵した場合の動作は未定義。
標準入力から入力される内容を事前に知ることは出来ない。
scanfは読み込むサイズを制限できない。
以上から
scanfを呼び出した場合の動作は未定義と考えられますが、
そのように書かれていないのはなぜなんでしょうか?

710 :デフォルトの名無しさん:04/10/29 19:58:12
>>709
以上から、以外の定義を無視して未定義だって?

711 :デフォルトの名無しさん:04/10/29 19:59:02
>>709
入力文字数が確保した領域内に収まる限り、scanfは正常に動作する。
入力するのは人だが、入力できる文字数をあらかじめ知っていると仮定し、
かつ、人がそれを守ったとしたら間違った動作は起きない。
しかし、もしそれを守らない人がいたら動作は保証できない。
それがバグだ。

712 :デフォルトの名無しさん:04/10/29 19:59:17
>>708
%255s

713 :デフォルトの名無しさん:04/10/29 20:11:33
>>707
マニュアルをろくに読まないで自爆しまくってる自称ベテランです
あんまり毒されないほうがいい
そういう人に何か質問するときは腫れ物に触るように気を使いましょう
あなたの何気ない素朴な質問に突然キレたりします

714 :デフォルトの名無しさん:04/10/29 22:32:35
>>711
それはバグじゃない。仕様だ。

715 :デフォルトの名無しさん:04/10/29 22:46:18
char s = ' ';
strlen(&s);

これもバグですか?

716 :デフォルトの名無しさん:04/10/29 22:50:10
アンカー忘れ
>>711

717 :デフォルトの名無しさん:04/10/29 22:53:56
>>715
仕様を理解していてそんな使い方する人いるのか?
バグや仕様以前に、バカだろ?それは

718 :デフォルトの名無しさん:04/10/29 23:15:25
fopenでテキストモードで開いたとき、freadとかfgetcとかの入出力関数は
いちいち1バイトずつ'\r'かどうかとかチェックしてるんですか?

遅そう。

719 :デフォルトの名無しさん:04/10/29 23:24:48
>>718
では、速い方法を教えてください

720 :デフォルトの名無しさん:04/10/29 23:34:40
>>718
一般的なディスクから読み込む速度に比べたら誤差のようなものです。

721 :デフォルトの名無しさん:04/10/29 23:34:44
テキストで読み書きする必要なければバイナリでやればいい

722 :デフォルトの名無しさん:04/10/30 01:07:42
>>715
なんにも問題ないコードだろ ぼけ。

char *p = NULL;
strlen(p);
と同じぐらい問題ない。


723 :デフォルトの名無しさん:04/10/30 02:09:04
#include <stdio.h>

int main(void)
{
  char s = ' ';
  char *p = NULL;
  printf("%d\n", strlen(&s));
  printf("%d\n", strlen(p));
  return 0;
}

%./nullpo
10
Segmentation fault (core dumped)


724 :デフォルトの名無しさん:04/10/30 02:11:42
>>723
で、それに何の意味が?

725 :デフォルトの名無しさん:04/10/30 02:14:20
>>723
ワロタ

726 :デフォルトの名無しさん:04/10/30 16:32:03
質問です。

aaa.c bbb.c ccc.c ddd.h
があって、

aaa.c は ddd.h を include している
bbb.c は ddd.h を include している
ccc.c は ddd.h を include している
ddd.h では変数 vvv を定義している

という状況で、
gcc -c aaa.c
gcc -c bbb.c
gcc -c ccc.c
gcc aaa.obj bbb.obj ccc.obj -o zzz

とすると、multiple definition のエラーが出てしまうのですが、
これはどうやって回避したらよろしいのでしょうか?

727 :デフォルトの名無しさん:04/10/30 16:33:46
>>726
インクルードガードしろ

728 :デフォルトの名無しさん:04/10/30 16:35:54
>>726

#ifndef _AAA_H_
#define _AAA_H_

・・・・・

#endif

などとしても、解決しませんでした。

729 :デフォルトの名無しさん:04/10/30 16:36:26
すみません、>>727へのレスです。


730 :デフォルトの名無しさん:04/10/30 16:36:34
ddd.hではexternをつけておいて
aaa.cで定義すればいいんじゃないの

731 :デフォルトの名無しさん:04/10/30 16:46:33
>>730
そういう方法があったんですね。
ありがとうございましたm(_ _)m

732 :デフォルトの名無しさん:04/10/30 17:11:18
これはぼけの考え > インクルードガードしろ
730のほうがまだまとも



733 :デフォルトの名無しさん:04/10/30 17:18:29
>>732
どうぼけなんですか?
両方やるのが当然じゃないですか。

734 :デフォルトの名無しさん:04/10/30 17:21:35
すみません。質問なんですが。。

#include<stdio.h>

#defineLOWER0
#defineUPPER300
#difineSTEP20

/*摂氏-華氏の対応表を印字する*/
main(){
int fahr;

for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
return 0;
}

今コンパイルしたら

E2048 define.c 5: 認識できないプリプロセッサ指令: 'difine'
エラー E2451 define.c 11: 未定義のシンボル STEP(関数 main )
*** 2 errors in Compile ***

と出てコンパイルエラーがでたんです。

735 :デフォルトの名無しさん:04/10/30 17:23:42
今日はじめて #difine を使ったんですが。。。

736 :デフォルトの名無しさん:04/10/30 17:23:46
>>734
#difine


ネタ?

737 :デフォルトの名無しさん:04/10/30 17:24:24
>>734
そうか。

738 :デフォルトの名無しさん:04/10/30 17:31:02
>>736
お恥ずかしい。defineでした。。。
お騒がせしました。コンパイル通りました。^^;

739 :デフォルトの名無しさん:04/10/30 17:54:13
K&Rな香りがする

740 :デフォルトの名無しさん:04/10/30 17:57:30
>>739
K&Rを香水代わりにしようと思うのですが、良いですか?

741 :デフォルトの名無しさん:04/10/30 18:00:44
おすすめしません。
もう彼らはかなりのおっさんです。おっさん臭がしてもいいならどうぞ

742 :デフォルトの名無しさん:04/10/30 18:32:44
おやじフェチです。

743 :デフォルトの名無しさん:04/10/30 18:41:25
なにこのスレ

744 :726:04/10/30 19:14:22
何度もすみません。

ddd.hで、
extern int array[10] = {・・・・・};

として、aaa.c の中で

int array[10];

などとしたのですが、うまく行きませんでした。
どうすればよろしいでしょうか?

745 :デフォルトの名無しさん:04/10/30 19:18:23
K&Rってこういうの書いてないんだっけ?

746 :デフォルトの名無しさん:04/10/30 19:20:59
>>744
答え言っちゃうとすぐだけど
同じような別のケースへの対応力はまずつかないだろうな・・・

747 :726:04/10/30 19:25:07
>>746
それなら分かりますが(→メール欄)、何しろ大型の配列なので、出来れば一つのファイルで
まとめて定義しておきたいのです。

748 :デフォルトの名無しさん:04/10/30 19:32:35
一つのaaa.cで定義すればいいじゃん。

749 :デフォルトの名無しさん:04/10/30 19:38:16
そこで global.h と global.c ですよ

750 :726:04/10/30 19:41:05
>>748
結局、それで解決しました。
とぼけた質問でどうもすみませんでしたm(._.)m

751 :726:04/10/30 20:00:31
と思ったら、やはりうまく行きませんでした・・・

ddd.h で定義されているデータ(配列)を aaa.c bbb.c ccc.c で共有したいだけなのですが・・・

752 :デフォルトの名無しさん:04/10/30 20:02:11
>>751
答え言っちゃうとすぐだけど
同じような別のケースへの対応力はまずつかないだろうな・・・


753 :デフォルトの名無しさん:04/10/30 21:01:00
> 両方やるのが当然じゃないですか

いいえ、この場合にはまったく効果がないばかりか、無関係。
それにそもそもやるべきことではない。

754 :デフォルトの名無しさん:04/10/30 21:02:34
っていうか、答える連中の程度が今週は低すぎ。

ちゃんと「externで初期化できるわけねーだろ!」と答えてやれよ。

ヘッダーにはextern宣言だけかいて、
externのない(初期化の書いてある)やつはどれかのcのファイルでやるんだよ。

ちゃんとした入門書には書いてある。

755 :デフォルトの名無しさん:04/10/30 21:07:35
>>754
>ヘッダーにはextern宣言だけかいて、
>externのない(初期化の書いてある)やつはどれかのcのファイルでやるんだよ

C++ の extern const は違った気が。。。

756 :デフォルトの名無しさん:04/10/30 21:08:41
>>753
もっと詳しく!

757 :デフォルトの名無しさん:04/10/30 21:12:21
>>754
ネタにマジレスするのもあれだし、面白いネタも思いつかないし。

758 :デフォルトの名無しさん:04/10/30 21:22:22
そのあたりのことは、日下部先生の入門書に詳しく書いてあるよん

759 :デフォルトの名無しさん:04/10/30 21:28:08
>>758
もっと詳しく!

760 :デフォルトの名無しさん:04/10/30 21:32:59
>ちゃんと「externで初期化できるわけねーだろ!」と答えてやれよ。
はっ?
C99の6.9.2を読め。
H&Sの4.8も読め。

761 :デフォルトの名無しさん:04/10/30 21:56:38
まぁ宣言じゃ初期化はできないわな

762 :デフォルトの名無しさん:04/10/30 21:56:49
switch( a ) {
case 0:
case 1:
default :
}

よりも

if (a==0) ;
else if (a==1);
else if (a==2);

のほうが速かったのですが、もしかしてswitchって使いでがありませんか?

763 :デフォルトの名無しさん:04/10/30 22:01:22
>>762
処理系や、コンパイルスイッチによる。
気になるなら、アセンブラコードを読め。

764 :デフォルトの名無しさん:04/10/30 22:11:48
>>762
一般には switch のほうが速いと思うよ。
なんでかっていうと、2分割2分割で判定するようなコード吐いてくれるから、
判定時間が条件数の log になる。

765 :デフォルトの名無しさん:04/10/30 22:11:59
>>761
あれのどこが宣言だ
アフォは氏ね

766 :デフォルトの名無しさん:04/10/30 22:13:00
>一般には

実測しろつーてるわきでそれを言うか (プ


767 :デフォルトの名無しさん:04/10/30 22:15:19
a==0
a==...
のような条件数が多い時→switch
そうでもないとき→if
多すぎる時→関数テーブル

こんな感じですか?

768 :764:04/10/30 22:16:05
>>766
うん?どういうこと?

769 :デフォルトの名無しさん:04/10/30 22:18:47
>>767
散発的な条件→if
条件の空間を意識すると→switch/関数ポインタ

770 :デフォルトの名無しさん:04/10/30 22:24:26
条件の空間ですか・・・ナルホド

771 :デフォルトの名無しさん:04/10/30 22:47:40
どっちが速いかって…。

実行環境の実行速度が極端に遅い場合,速度が要求される場合,
かなり頻繁に呼び出される場合とかなら分からんでもないが、
大抵の場合は気にしなくてもいいだろう。
その程度の違いを気にするより、アルゴリズムを改善したりする方が
速度も速くなるだろうし。
必要もない所を高速化して見にくくなる方がばからしい。



と、有識者でも無い俺がほざいてみる。

772 :デフォルトの名無しさん:04/10/30 23:00:36
>>771
else if と switch case の違いも
アルゴリズムの違いではあるな

773 :デフォルトの名無しさん:04/10/30 23:03:33
char hex(int n)
{
return "0123456789ABCDEF"[n];
}


774 :デフォルトの名無しさん:04/10/30 23:05:33
>"0123456789ABCDEF"[n];
この書き方って非標準?

775 :デフォルトの名無しさん:04/10/30 23:06:06
超標準

776 :デフォルトの名無しさん:04/10/30 23:07:01
用途によるがnの範囲チェックくらいは欲しい所だけどな

777 :デフォルトの名無しさん:04/10/30 23:07:10
せめて、nを0xFでマスクするなりして欲しい

778 :デフォルトの名無しさん:04/10/30 23:10:50
>>775
超越などしていない

779 :デフォルトの名無しさん:04/10/30 23:11:08
>>777
いや ASSERT(0 <= n && n <= 0x0F); にすべきだと思う。

780 :デフォルトの名無しさん:04/10/30 23:11:39
n["0123456789abcdef"]

781 :デフォルトの名無しさん:04/10/30 23:12:49
>>780
はぃ?

782 :デフォルトの名無しさん:04/10/30 23:19:30
閉区間のつもりだろ、きっと

783 :デフォルトの名無しさん:04/10/30 23:25:46
実際に780のような書き方のソースみたら速攻で書き直させるな。

784 :デフォルトの名無しさん:04/10/30 23:25:55
やっぱりな。その程度か。

785 :ジョン:04/10/30 23:27:08
急ぎなんですけど、誰か助けてください。
学校で課題が出たんですけど、さっぱり分かりません。

ボイヤームーア法を使って文字列の探索するプログラムを作れという課題です。
下にプログラム(未完成)を載せておきます。これを改良して作るのらしいのですが・・・。

どなたかお願いします。

#include <stdio.h> #include <string.h> #define MAXCHR1 1000 #define MAXCHR2 256
int main(void)
{char filename[MAXCHR2], ex[MAXCHR1], strg[MAXCHR2];
FILE *fp;
printf("Input filename.\n");
gets(filename, MAXCHR2, stdin);
printf("Input search string.\n");
fgets(strg, MAXCHR2, stdin);
if((fp = fopen(filename, "r")) == NULL){
printf("read open error!");
return(-1);
}
while(fgets(ex, MAXCHR1, fp) != NULL){
/* ここでボイヤームーア法を使う */}
fclose(fp);
return (0);

786 :デフォルトの名無しさん:04/10/30 23:28:56
>>785
お引き取り下さい

暇な人がエレガントにC/C++の宿題片づけます 33代目
http://pc5.2ch.net/test/read.cgi/tech/1097932699/

787 :デフォルトの名無しさん:04/10/30 23:31:20
WindowsXP,bccでエスケープシーケンスで画面制御(カーソルを右にずらすなど)
を行うにはどうすれば良いですか?16bitのLSI C-86コンパイラでは
printf("\33[nA");等で出来ましたが32bitのbccでやるにはどのような方法があるでしょうか?

788 :デフォルトの名無しさん:04/10/30 23:35:06
>>787
スレ違いだし。
猫でもわかる、でぐぐれ

789 :デフォルトの名無しさん:04/10/30 23:41:49
>>787
無理だと思っとけ、不可能ではないが可搬性がない。

790 :デフォルトの名無しさん:04/10/30 23:47:48
>>787
033ちゃうの?

791 :デフォルトの名無しさん:04/10/31 00:14:25
>787

問題はそこぢゃないな。
コマンドプロンプトだ。

792 :787:04/10/31 00:36:46
GCC3.3.2でやったらセグメンテーション違反となりました。

793 :デフォルトの名無しさん:04/10/31 00:53:42
Re: エスケープシーケンスについて - C言語を始めよう! ( No.5 )
日時: 2004/04/05 09:21
名前: AOK


OSはXPですね。

以下の記述が参考になると思います。
http://www.geocities.co.jp/Bookend-Hemingway/4963/column/dos/dos45.txt
中ほどから少し後ろに「● エスケープシーケンス」に関する記述があります。



794 :デフォルトの名無しさん:04/10/31 01:36:15
>>769
おそレスだが、漏れが仕事で使っているコンパイラでは、
switchは、分岐が4つくらいまでは先頭から比較(else if を並べるのと同じ)、
分岐が増えると、ジャンプテーブルつくってる。

>>764 みたいのは、ホントに一般的なのか?

795 :デフォルトの名無しさん:04/10/31 01:41:16
>>794
VC6 ではそんな感じだったように記憶しているが、
もしかし私の勘違いか?
少なくともそんな最適化があっても悪くないよね。

796 :デフォルトの名無しさん:04/10/31 01:44:53
>>794
少なくとも私の使っているコンパイラは、単なるジャンプテーブルだけでなく
条件判断との組み合わせに展開してくる。
例えば、caseが0,1,2, ... 31, 63のような場合、0-31はジャンプテーブルで、63は条件判断。
また、case値がすべて偶数なら2で割る(右シフトする)処理も入っている。
しかし、>764のような最適化が行なわれるような例は今のところ見ていない。

797 :デフォルトの名無しさん:04/10/31 01:52:02
>>796
そのコンパイラが何か教えてほしい。

798 :デフォルトの名無しさん:04/10/31 09:36:42
「一般的」などとほざく以上は、少なくとも
MS でも HP でも Sun でも IBM でも
同様の最適化をしてくれないと。

799 :デフォルトの名無しさん:04/10/31 10:18:38
この場合OSなの?
コンパイラじゃなく?

800 :デフォルトの名無しさん:04/10/31 10:20:30
>>799
OS?

801 :796:04/10/31 10:33:08
>>797
どれがどうだったか覚えてなーい。
単純なテストプログラム作って試してみようにも単純すぎると最適化で消えかねないし、探すのも面倒。

802 :デフォルトの名無しさん:04/10/31 11:22:25
http://www.cyberconnect2.jp/hack/radio.html

803 :デフォルトの名無しさん:04/10/31 11:31:40
>>801
じゃ>>796はスルーということで

804 :デフォルトの名無しさん:04/10/31 11:33:58
参考までにVisualC++での結果
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1099188559&res=2&fi=no

805 :デフォルトの名無しさん:04/10/31 11:45:58
> 単純なテストプログラム作って試してみようにも単純すぎると最適化で消えかねない

ぜんぜんいいわけになっていない。

806 :デフォルトの名無しさん:04/10/31 12:58:24
配列の要素数には限界があるのですか?
配列を大きくしすぎるとエラーが出るようなのです。
何か解決法はないでしょうか。

807 :デフォルトの名無しさん:04/10/31 13:00:16
動的に配列作れ。

808 :デフォルトの名無しさん:04/10/31 13:03:01
>>806
スタックとかヒープでぐぐれ。

809 :デフォルトの名無しさん:04/10/31 13:07:19
>>806
vector

810 :デフォルトの名無しさん:04/10/31 13:10:07
>>809
vector って何?

811 :デフォルトの名無しさん:04/10/31 13:11:08
>>806

int array1[1000000]; /* 方法1 */

int main()
{
  static int array2[1000000]; /* 方法2 */
  int *array3 = malloc(sizeof(int) * 1000000); /* 方法3 */

  /* 処理 */

  free(array3); /* 方法3のときは有った「方がいい」 */
  return 0;
}

812 :デフォルトの名無しさん:04/10/31 13:11:51
>>810
C++のSTL。スレ違いですよ。

813 :デフォルトの名無しさん:04/10/31 13:18:45
> vector って何?

変数名ですよ。

812は頭悪すぎ。

814 :デフォルトの名無しさん:04/10/31 13:19:45
> 配列を大きくしすぎるとエラーが出るようなのです。
> 何か解決法はないでしょうか。

解決法: 大きくしすぎなければよい。



815 :r:04/10/31 13:21:16
メモリ増やせ

816 :デフォルトの名無しさん:04/10/31 13:22:07
30cmものさしを60cmにしました。

817 :デフォルトの名無しさん:04/10/31 13:23:19
>>811
それさえもCの標準規格では通る保証はない。
Cの標準規格を満たすためには配列の要素数をいくつまで保証すればいいか知ってるのか?

818 :デフォルトの名無しさん:04/10/31 13:24:07
>   free(array3); /* 方法3のときは有った「方がいい」 */
>   return 0;
> }

mainの最後にfreeした「ほうがいい」とかいうやつは確実なぼけ

819 :デフォルトの名無しさん:04/10/31 13:27:19
INT(0x13)を使って任意のセクタ−を読むにはどうすれば良いのですか
教えてください

820 :デフォルトの名無しさん:04/10/31 13:31:07
>>816
1mmごと→1μmごと

821 :デフォルトの名無しさん:04/10/31 13:31:12
いやです

822 :デフォルトの名無しさん:04/10/31 13:31:36
*(*int)0x13

823 :806:04/10/31 13:40:35
malloc関数を使ってできました。
ありがとうございました。

824 :デフォルトの名無しさん:04/10/31 13:42:28
>>815
アホか

825 :デフォルトの名無しさん:04/10/31 13:43:18
>>818
しないほうがいいの?

826 :rubykitch:04/10/31 13:48:21
お前らも好きだね。

827 :デフォルトの名無しさん:04/10/31 14:08:11
>>818
main関数のreturn若しくはexitの直前という意味で無くてもいいということだろ。

>>824
あながち間違ってない。


828 :デフォルトの名無しさん:04/10/31 14:09:59
スタック領域ってメモリ増やせば増えるの?

829 :デフォルトの名無しさん:04/10/31 14:10:50
>>828
コンパイラのマニュアルでも見ればー

830 :デフォルトの名無しさん:04/10/31 14:11:02
>>827
一般的な環境で動かせるようにプログラムしないと環境依存になってしまうから、
メモリを増やせという解答はナンセンス。
もっとも、メモリが一般よりも少ないのなら間違ってはいないけれど。

831 :デフォルトの名無しさん:04/10/31 14:11:24
>>828
コンパイラで指定できる。

832 :デフォルトの名無しさん:04/10/31 14:18:02
>>830
おまえの定義する一般的な環境(メモリ容量)とは何だ?
世の中には最低メモリ容量の指定がないアプリのほうが圧倒的に少ないんだよ。

833 :デフォルトの名無しさん:04/10/31 14:20:16
最低メモリ定義しておいても、そのときのメモリの使用状況にも
左右されるしなぁ。

834 :デフォルトの名無しさん:04/10/31 14:20:42
ほほぉ、アプリの多い少ないとは何を基準に量るのかね。

835 :デフォルトの名無しさん:04/10/31 14:22:09
>>832
それはそういうカテゴリの一般にあわせればいいんだよ。

836 :デフォルトの名無しさん:04/10/31 14:22:14
俺基準

837 :デフォルトの名無しさん:04/10/31 14:24:39
というかPC以外での開発だったら必然的に環境依存になるだろ

838 :デフォルトの名無しさん:04/10/31 14:25:39
メインメモリーは256Kワードね(Mじゃないよ)
それぐらいがふつう。

839 :デフォルトの名無しさん:04/10/31 14:27:45
>>833
詭弁かよ。

>>835
どんなカテゴリだよ。


840 :デフォルトの名無しさん:04/10/31 14:28:40
いいえ ニガゴリです

841 :デフォルトの名無しさん:04/10/31 14:31:33
>>825
しなくてはいけない。

842 :デフォルトの名無しさん:04/10/31 14:35:46
>>841
阿保

843 :デフォルトの名無しさん:04/10/31 14:43:12
>>839
どちてぼうや?
一休さんの番組に閉じこもっておけばいいよ。

844 :デフォルトの名無しさん:04/10/31 14:43:31
>>841
mustではないよ。

845 :デフォルトの名無しさん:04/10/31 14:46:38
>>843
阿保

846 :デフォルトの名無しさん:04/10/31 15:35:12
>>825
環境にも拠るけど、スワップに追い出されてたヒープを free したお陰で
終了処理が遅くなる、という事はあるかも知れない (ないかも知れない)。
何れにしても、malloc と free は「対にして使うべき」というわけじゃない。

847 :デフォルトの名無しさん:04/10/31 15:37:41
>>846
対にして使う「べき」かどうかは環境によって変わる。
環境のことを気にしたくないのなら原則freeしとけ。

848 :デフォルトの名無しさん:04/10/31 15:41:43
>>847
exit前にfreeしないと駄目な理由は何かある??

849 :デフォルトの魚釣りさん:04/10/31 15:43:06
>>848
自己満足

850 :デフォルトの名無しさん:04/10/31 15:44:49
>>848
OSとライブラリの実装によっては、メモリが解放されない可能性がある。

851 :デフォルトの名無しさん:04/10/31 15:45:01
そういう香具師には仕事を任せられない

852 :デフォルトの名無しさん:04/10/31 15:46:52
> 一般的な環境で動かせるようにプログラムしないと環境依存になってしまうから

こいつぼけ。
「〜しないと〜ってしまう」のではなく、
一般的な環境で動かせるようにしてないのを環境依存っていうだけ

853 :デフォルトの名無しさん:04/10/31 15:47:33
>>850
で、その可能性があるOSとライブラリ教えてくれない?

854 :デフォルトの名無しさん:04/10/31 15:47:37
> OSとライブラリの実装によっては、メモリが解放されない可能性がある。

ぜったいにありません。規格でもそう決まっている。

855 :デフォルトの名無しさん:04/10/31 15:47:43
malloc-free論争やってるって聞いたんだけど、ここ?

856 :デフォルトの名無しさん:04/10/31 15:48:36
いいえ > ここ
隣です。

857 :デフォルトの名無しさん:04/10/31 15:48:45
お前らちょっともち付け

858 :デフォルトの名無しさん:04/10/31 15:48:53
>>852
当り前の事を書くのはボケではないと思うが…

859 :デフォルトの名無しさん:04/10/31 15:49:33
プロセス終了時に自動的に解放されないような領域をmalloc/callocでわりあててはいけないことになってる > 標準規格

860 :デフォルトの名無しさん:04/10/31 15:50:05
> 当り前の事を書くのはボケではないと思うが…

いいえ。まさにそれがぼけ。


861 :デフォルトの名無しさん:04/10/31 15:50:20
>854
>> OSとライブラリの実装によっては、メモリが解放されない可能性がある。
>ぜったいにありません。規格でもそう決まっている。

そんなことはない。規格で決まっていても実際には解放されないプラットフォームはある。
組み込み系の OS モドキとか。
BREW とかもそうだな。

862 :デフォルトの名無しさん:04/10/31 15:50:32
さっきから論点のおかしい香具師がいるのは気のせいか?

863 :デフォルトの名無しさん:04/10/31 15:51:02
>>854
Windows95/98のことを言ってるんだと思う。

malloc free議論は終わらないからこのスレではやめておこうぜ。


864 :デフォルトの名無しさん:04/10/31 15:52:05
>>848
C の腕をあげたいなら、常に free() することを念頭においた上で
設計や実装を行ったほうがよい。たとえプラットフォームが free() を不要にしていてもだ。

865 :デフォルトの名無しさん:04/10/31 15:52:34
>>863
終わりがないなんてありえない。最後まで続けよう。

866 :デフォルトの名無しさん:04/10/31 15:53:44
>>865
付き合うよ。ところで現在の論点をまとめてくれる?

867 :デフォルトの名無しさん:04/10/31 15:53:49
そろそろ飽きたからどっか行ってよ

868 :デフォルトの名無しさん:04/10/31 15:55:37
こんなことなら未定義にしときゃよかったのに。

869 :デフォルトの名無しさん:04/10/31 16:05:25
おまえら規格規格っていうけど、世の中には
規格通りに作られていない実装もあるんだよ

870 :デフォルトの名無しさん:04/10/31 16:07:27
>>869
それってバグって言うんじゃないの?

871 :デフォルトの名無しさん:04/10/31 16:08:00
>>869
その環境、freeすれば"確実に"解放してくれる?

872 :デフォルトの名無しさん:04/10/31 16:08:45
>>870
ちがうにきまってるだろ。仕様だよ。
たとえば VC6 が C++ 標準にしたがっていなくたって、それはバグとは言わん。

873 :デフォルトの名無しさん:04/10/31 16:10:28
>>872
独自規格だね。

874 :デフォルトの名無しさん:04/10/31 16:10:34
>>869
オレは組み込み系とかのPGもやるのでそういうコンパイラも使うが
そういうのはANSI Cに標準していると書かれていなかったり、注意書きで
書かれている。
規格外の話をもってくるほうが馬鹿

875 :デフォルトの名無しさん:04/10/31 16:19:11
C標準が使えなかったりな

876 :デフォルトの名無しさん:04/10/31 16:21:44
標準ライブラリが使えたとしても重すぎたりするよね。
printfとかは標準出力がない環境だと当然使えないし…
使えたとしても巨大になりすぎるから俺printf作ったりとかして…

877 :デフォルトの名無しさん:04/10/31 16:31:42
プロセスが終了したときに割り当てられた
メモリを開放するとはC言語では決まっていない。

メモリが開放されるかどうかはOS依存。
つまりメモリの開放をOSに任せるということは
OS依存のプログラムを書いているということだ。

878 :デフォルトの名無しさん:04/10/31 16:35:47
>>876
標準出力が無い環境でprintfを使うと、何がどこに表示されるのですか?

879 :デフォルトの名無しさん:04/10/31 16:39:36
>>878
ヒント。GUI画面への出力は標準出力ですか?

880 :デフォルトの名無しさん:04/10/31 16:43:30
>>878
あくまでも例
・コンソールに出力される
・どこにも出力されない
・デバッグ用メモリ空間に出力される

881 :デフォルトの名無しさん:04/10/31 16:48:39
> メモリが開放されるかどうかはOS依存

こいつぼけ。「開放」などぜったいにしない。
「解放」ならするが。

知ったかぶりするやつは字もまちがえるからすぐわかる。

882 :デフォルトの名無しさん:04/10/31 16:49:20
> そんなことはない。規格で決まっていても実際には

そんなものはCではない。

883 :デフォルトの名無しさん:04/10/31 16:50:02
たかが誤字の指摘ごときで反論している気になっている881w


メモリが解放されるかどうかはOS依存で間違いありません。

884 :デフォルトの名無しさん:04/10/31 16:50:40
printfで「%d」が10進数で出力すると標準規格で決まっているのだが、

以前、そうでない処理系があった(まあ、ようするに標準規格を満たしていないわけだ)。
で、「そういう場合もある!」とか、いっても無意味なわけ。わかる?

「Cじゃないもの」までふくめれば、なんとでも言えるわけなので。

885 :デフォルトの名無しさん:04/10/31 16:51:01
>>883
さっきから変な奴がどうにも見当違いなレスばかりしていると思わないか?

886 :デフォルトの名無しさん:04/10/31 16:51:37
> C の腕をあげたいなら、常に free() することを念頭においた上で

いいえ。してはいけない。

887 :878:04/10/31 16:51:59
>>879
環境によるかと。

>>880
どこに出力されるとすると、
「巨大になりすぎる」んだろう...



888 :デフォルトの名無しさん:04/10/31 16:52:21
>>885
>>881とかな。ほんと誤字の指摘だけなんて見当違いもはなはだしい。

889 :デフォルトの名無しさん:04/10/31 16:52:42
> そんなことはない。規格で決まっていても実際には解放されないプラットフォームはある。
> BREW とかもそうだな。

いいや、BRWもプロセス終了時に全部解放するのでfreeする必要はない。



890 :デフォルトの名無しさん:04/10/31 16:52:49
>>886
なぜ?

891 :デフォルトの名無しさん:04/10/31 16:53:03
>>887
組み込みで気を付けることは何でしょう。

892 :デフォルトの名無しさん:04/10/31 16:53:50
>>889
> いいや、BRWもプロセス終了時に全部解放するのでfreeする必要はない。

そうか?少なくとも BREW 2.0/2.1 では解放しないぞ。


893 :デフォルトの名無しさん:04/10/31 16:54:09
MS-DOSのTurboCでは
標準出力に出力するprintfと
コンソールに出力するcprintfの二つの関数があったなぁ。
違い。わかるよね? >>878

894 :デフォルトの名無しさん:04/10/31 16:55:19
> 少なくとも BREW 2.0/2.1 では解放しないぞ。

そりゃにせものだろう。
必ず解放するので、こっちのコーディングルールなんかでは終了時にはいちいちfreeするな
とまでかいてあるぞ。

895 :デフォルトの名無しさん:04/10/31 16:56:26
>>894
きみんとこさ、実際にアプリ リリースしたことある?
KDDI の検証基準に必ず解放しなさいと書いてあるのしらんの?

896 :デフォルトの名無しさん:04/10/31 16:56:37
> コンソールに出力するcprintfの

Turbo Cというより、Lattice Cが最初につくった -> mscに取り入れられた -> Tubo Cが
真似した。だな。
Lattice Cが何をヒントにその関数名にしたかは、いわなくてもわかるよね?

897 :デフォルトの名無しさん:04/10/31 16:56:40
>>889
プロセス終了時に解放するのはOSの仕事であり、全部解放するかどうかはOS依存。
たまたまその環境で全部解放されたからってそれがCの規格で規定された
動きだと勘違いしないように。

898 :デフォルトの名無しさん:04/10/31 16:58:06
> プロセス終了時に解放するのはOSの仕事であり

おまえぼけ。
たとえば「実際の文字を画面に出すのはOSの仕事」だからきまってないとかいうのと
同じぐらいぼけだな。

899 :デフォルトの名無しさん:04/10/31 16:58:48
> たまたまその環境で全部解放されたからってそれがCの規格で規定された
> 動きだと勘違いしないように。

こいつぼけ。規格票読めよ。


900 :デフォルトの名無しさん:04/10/31 16:59:29
voidの真似すんのが流行かい?

901 :デフォルトの名無しさん:04/10/31 16:59:33
> きみんとこさ、実際にアプリ リリースしたことある?

うちはウィンドウマネージャーとデータ交換だ ぼけ


902 :キリ番ゲッター ◆Q5W244LhJU :04/10/31 16:59:49
900・・・902

903 :デフォルトの名無しさん:04/10/31 16:59:51
>>895
で、KDDI の検証基準が何か?

904 :デフォルトの名無しさん:04/10/31 16:59:57
>>898
おまえがぼけだ。
Cの規格には入ってないんだよ。プロセス終了時にメモリを
全部解放するなんてのは。

905 :デフォルトの名無しさん:04/10/31 17:00:28
>>899
どこに書いてあるのですか?w

906 :デフォルトの名無しさん:04/10/31 17:01:10
>>901
>うちはウィンドウマネージャーとデータ交換だ ぼけ

はい?なんだそれ。
BREW に ウィンドウマネージャ なんてあったっけ?
なんか勘違いしてないか?

907 :デフォルトの名無しさん:04/10/31 17:01:16
あの。。
自プロセスに解放するのと、他プロセスにも解放するのを
どうも混同しているんじゃないの?。。。。

908 : :04/10/31 17:02:08
なんかこのスレ表示が崩れるんだけど。

909 :デフォルトの名無しさん:04/10/31 17:03:32
>>226=318=372=375=378=413=436=489=600=694=722=732=852=860=881=898=899
ぼけって良くでるね。

910 :デフォルトの名無しさん:04/10/31 17:03:42
Linuxのlinux/list.hに

#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)

こういう個所があったのですが、このdo{...}while何を意味しているんでしょうか?

911 :デフォルトの名無しさん:04/10/31 17:03:57
> ぼけって良くでるね。

でてねーよ ぼけ

912 :デフォルトの名無しさん:04/10/31 17:04:45
> BREW に ウィンドウマネージャ なんてあったっけ

こいつ、しったかぶり決定!
あるにきまってるだろ!

913 :デフォルトの名無しさん:04/10/31 17:05:23
>>910
ブロックを作っているだけ。
単純な { } だけだと不都合があるから。

914 :デフォルトの名無しさん:04/10/31 17:05:53
> 、このdo{...}while何を意味しているんでしょうか

「うしろにセミコロンをつけたいが、1回だけ実行したい」ようなマクロを作るときに
使います。それ以外には使い道がありません。 > do { } while (0)

915 :デフォルトの名無しさん:04/10/31 17:06:15
>>912
きみがしったかだろう。そんなもん BREW にないよ。
あるっていうんなら答えてみなよ。それ何するものなの?

916 :デフォルトの名無しさん:04/10/31 17:06:34
> Cの規格には入ってないんだよ

こいつも規格票読んだことないぼけだな。

917 :デフォルトの名無しさん:04/10/31 17:07:01
>>914
さっきからあげているおまえ。もう帰れ

918 :デフォルトの名無しさん:04/10/31 17:07:26
>>916
で、どこに書いてあるのですか?w

919 :デフォルトの名無しさん:04/10/31 17:07:40
> voidの真似すんのが流行かい?

void氏は「ぼけ」なんて言いますか?

本には書いてなかったように思うんですが。

920 :デフォルトの名無しさん:04/10/31 17:08:12
>>909
え、これ全部同一人物なの?
きも

921 :878:04/10/31 17:08:40
>>914
フローをcontinueやbreakで制御し、
他の人に保守できないコードを書くのにも使用できないだろうか。

922 :デフォルトの名無しさん:04/10/31 17:08:47
> 「実際の文字を画面に出すのはOSの仕事」だからきまってない

ふふ

923 :デフォルトの名無しさん:04/10/31 17:09:06
チャット!?

924 :ひやかしの他人:04/10/31 17:09:36
電源切れば全部解放されるぞ。

925 :デフォルトの名無しさん:04/10/31 17:10:50
>>924
それもC言語で規格化されているとか言いそうだなw

926 :デフォルトの名無しさん:04/10/31 17:10:56
> え、これ全部同一人物なの

「自分に都合のわるいことを言う人間はごく少数だと思い込みたい」症候群のひとの
妄想です。
こういうときに匿名だとそう思えて便利なんですよね。

何かの都合で「実は複数(多数)いる」となると、もっと別の暴れ方になります。
数人の場合は「おまえら何つるんでるんだよ!」ぐらいで、
どんどんふえて、99:1ぐらいになるともうたいへんですね。

927 :デフォルトの名無しさん:04/10/31 17:12:19
> 電源切れば全部解放されるぞ。

携帯電話ではそうなりませんね。電源切ってもプロセスうごいてるので。

928 :デフォルトの名無しさん:04/10/31 17:12:31
なんかポコポコあがってたので
面白そうだったんです。。。
すみません。

929 :デフォルトの名無しさん:04/10/31 17:13:26
>>927
電源切るんじゃなくて、電源取り去るなら、解放される。

930 :デフォルトの名無しさん:04/10/31 17:15:46
めんどくさいじゃん > 電池抜く

931 :デフォルトの名無しさん:04/10/31 17:17:24
水の中に沈めてみよう

932 :デフォルトの名無しさん:04/10/31 17:17:31
そろそろ現実を見ようぜ

933 :デフォルトの名無しさん:04/10/31 17:17:50
フラッシュメモリを主記憶にすれば。
次世代MRAMを主記憶にすらば。
そんな時代ももうすぐ。

934 :デフォルトの名無しさん:04/10/31 17:19:41
すべて仮想記憶で処理すればいいじゃん。

935 :結論:04/10/31 17:20:20
malloc() で確保したメモリはで必ず free() で解放しておけば
プラットフォームに依存せず、移植性の高いコードになる。

936 :デフォルトの名無しさん:04/10/31 17:20:48
>>934
まあ、そういういいかたもある。

937 :デフォルトの名無しさん:04/10/31 17:21:05
通はreallocで解放する。

938 :デフォルトの名無しさん:04/10/31 17:22:54
漢は電池抜く。

939 :デフォルトの名無しさん:04/10/31 17:25:57
通はぬるぽで止める。

940 :デフォルトの名無しさん:04/10/31 17:27:19
痛はガッして壊して止める。

941 :デフォルトの名無しさん:04/10/31 17:28:03
電源切るとか、電源抜くとか、電池抜くとか、水に沈めるとか、
おまえら野蛮人か

942 :デフォルトの名無しさん:04/10/31 17:28:37
>>921
こんなん?
do {
  if (なんかの処理エラー)
    break;
  if (なんかの処理エラー)
    break;
  if (なんかの処理エラー)
    break;
  return 正常;
}
エラー時の後処理;

>>935
サーバ機から組み込みまで幅広く使われるコードなら
そーしてください。

943 :デフォルトの名無しさん:04/10/31 17:29:09
>>941
エモーショナル・プログラまー

944 :デフォルトの名無しさん:04/10/31 17:29:10
うわ、アホだ。
× }
○ } while (0);

945 :デフォルトの名無しさん:04/10/31 17:29:44
本物のプログラマーはmallocを使わない。
すべて配列で片付けてしまうのだ。

946 :デフォルトの名無しさん:04/10/31 17:31:09
>>945
できることならそうしたいねぇ

947 :EXCULTer's / Active PC ◆CF/ockjcoQ :04/10/31 17:33:37
配列厨発見w

948 :デフォルトの名無しさん:04/10/31 17:34:31
配列があればmallocいらないと言ってた奴か。

949 :デフォルトの名無しさん:04/10/31 17:35:02
いたな、そんなの。

950 :デフォルトの名無しさん:04/10/31 17:35:34
>>945
なんだか変な発言。
ヒープとスタックを比較するならわかるが、
ヒープと配列を比較してどうすんのかな。

951 :デフォルトの名無しさん:04/10/31 17:36:15
>>935
それはプラットフォームに依存せず移植性の高いコードを書くには?
という課題に対して多くの回答の中のたった1つの回答にしかならん。
そんなFAQみたいなのを結論にするなよ。

952 :デフォルトの名無しさん:04/10/31 17:37:14
>>951
それじゃキミの結論を教えてくれ。

953 :デフォルトの名無しさん:04/10/31 17:37:22
>>950
動的配列と静的配列を比較しているんだろ。
いい加減、本質を見極めて発言してほしいものだ。

954 :デフォルトの名無しさん:04/10/31 17:37:59
結論
freeしたければすればいい。

955 :デフォルトの名無しさん:04/10/31 17:38:28
>>953
そういうことかい?
そこまで変な発言だとは想像もつかなかった。

956 :デフォルトの名無しさん:04/10/31 17:39:10
>>953
端から見ているに
ヒープも配列のひとつにすぎない。

957 :デフォルトの名無しさん:04/10/31 17:40:14
>>956
逆。配列もヒープのひとつに過ぎない。

958 :デフォルトの名無しさん:04/10/31 17:40:24
>>948
いや、ポインタ要らんとか言ってなかったか?

959 :デフォルトの名無しさん:04/10/31 17:40:53
埋まりそうなので次スレを立ててくる。

960 :デフォルトの名無しさん:04/10/31 17:41:13
コストは同じだけど、
成功するかどうかは不確実だが、大抵は成功する方法と、
確実に成功する方法がありました。
どちらを選びますか?

961 :デフォルトの名無しさん:04/10/31 17:41:24
文字列すらまともに扱えないじゃん

962 :デフォルトの名無しさん:04/10/31 17:41:39
freeしようがしまいが自己責任で

963 :デフォルトの名無しさん:04/10/31 17:42:09
>>960
今回はコスト同じなのか?

964 :モモ:04/10/31 17:42:23
>>960
もちろん確実なほうでしょう。

965 :デフォルトの名無しさん:04/10/31 17:42:30
結論
freeすべきところでする。


966 :デフォルトの名無しさん:04/10/31 17:42:56
>>960
今度はfree関数呼び出しにコストがかかるとか言い出すよw

967 :878:04/10/31 17:43:54
>>942
do {
  // なんか処理
  if( 継続不可能なエラー ) {
    break;
  if( 最初からやり直せば何とかなりそう )
    continue; 
} while(0);
// 次の処理

968 :デフォルトの名無しさん:04/10/31 17:45:53
C言語のコーディング論になるとなんでこんなにイデオロギー論争や宗教論争みたいな
まったくする意味がない不毛な論争になるんだろう?

969 :デフォルトの名無しさん:04/10/31 17:46:53
>>968
意味なくない。常に free() を行うのが正統な C だ。
まともなプログラマなら誰だって同意するだろう。

970 :デフォルトの名無しさん:04/10/31 17:47:42
gccコンパイラはexitもしくはmainをreturnするときに
パースツリーをfreeしていますか?
→していません。

971 :デフォルトの名無しさん:04/10/31 17:47:53
freeとかしなくても動けばいいじゃん。

972 :デフォルトの名無しさん:04/10/31 17:49:02
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1099212476/

973 :デフォルトの名無しさん:04/10/31 17:49:33
>>971
動けばいい。だけど正統ではない。

974 :デフォルトの名無しさん:04/10/31 17:50:33
>>971
最悪なのは一番大事な顧客の目の前で突然動かなくなることだ。

975 :デフォルトの名無しさん:04/10/31 17:50:47
正統って何だ

976 :デフォルトの名無しさん:04/10/31 17:51:34
>>975
誰もが認めるような、理由があるかどうかだ。

977 :デフォルトの名無しさん:04/10/31 17:51:51
>>973
正統とかそういう単語を持ち出すのなら、まずその正統を定義してくれ。


978 :デフォルトの名無しさん:04/10/31 17:52:53
>>976
無いじゃん

979 :デフォルトの名無しさん:04/10/31 17:53:50
>>978
一連のスレッド読んだ?
理由は十分示されたよ。

980 :デフォルトの名無しさん:04/10/31 17:54:34
イルカを唐揚げにして食うようなものだな。

981 :デフォルトの名無しさん:04/10/31 17:55:34
なんだ正統なCって?
Windowsで動けばいい。
ちなみに俺の好きなのはvoid main(void)だ

982 :デフォルトの名無しさん:04/10/31 17:56:50
>> 979

一連のスレ読んだが、どこで理由が示されたんだ?
示されているのは、free()しない場合には移植性とのトレードオフを十分吟味しろって程度の話だぞ。


983 :デフォルトの名無しさん:04/10/31 17:57:03
>>979
されてないからスレ伸びてんだろ

984 :デフォルトの名無しさん:04/10/31 17:57:38
みんなわかってないなー。

必ず free() するという制限でコーディングの訓練をしてきた者が
free() しなくていい環境でコーディングするのも楽なことだ。

だけどその逆は楽じゃない。
だから必ず free() するような設計やコーディングに慣れておけば、
いずれの環境でもやっていけるってことだ。

985 :デフォルトの名無しさん:04/10/31 17:58:33
free() しなくていいのは「最適化」の一部だと思えってこった。

986 :デフォルトの名無しさん:04/10/31 17:59:21
なんだ正統なCって?
Windowsで動けばいい。
ちなみに俺は関数名はFUNC0001のように連番でつけている。

987 :デフォルトの名無しさん:04/10/31 17:59:26
>>984
標準Cの話してるのに、なんでそんな話になるんだ?

988 :デフォルトの名無しさん:04/10/31 18:00:07
結論
・したい奴はしろ
・したくない奴はするな

以上。各人の将来など知ったこっちゃない。

989 :デフォルトの名無しさん:04/10/31 18:00:37
freeしなくていいとかって…
日本の情報産業、これでいいんですか?

990 :デフォルトの名無しさん:04/10/31 18:01:28
>>989
freeする理由は?

991 :デフォルトの名無しさん:04/10/31 18:01:47
必ずfreeしろなんて言っているのは日本人だけだろ。

992 :デフォルトの名無しさん:04/10/31 18:02:16
>>990
正統な C だから。

993 :デフォルトの名無しさん:04/10/31 18:02:21
>>990
OS等に依存せずにどんな環境でも正しく動くようにするため。

994 :デフォルトの名無しさん:04/10/31 18:02:45
>>991
外人がどうかなんて関係ない。
正当かどうかは十分な理由があるかどうかだ。

995 :デフォルトの名無しさん:04/10/31 18:02:56
しっかりfreeしたつもりでも
当のfreeが void free(void *ptr) { return; }
と定義されてるのもあるという話、聞いたことアルヨ。

996 :デフォルトの名無しさん:04/10/31 18:03:27
>>995
だから何?何がいいたいわけ?

997 :デフォルトの名無しさん:04/10/31 18:03:42
>>993
標準Cの話してるのに、なんでそんな話になるんだ?

998 :デフォルトの名無しさん:04/10/31 18:03:50
>>995
VC++.NETはそうなっているね。

999 :デフォルトの名無しさん:04/10/31 18:03:57
return 0;

1000 :デフォルトの名無しさん:04/10/31 18:04:22
骨折り損のときもある

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

194 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)