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

このエントリーをはてなブックマークに追加
1v(^o^i)d v(^o^i)d v(^o^i)d v(^o^i)d
まず問題を冷静に吟味して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個以上の空白文字
を含む行を読み込まないようにするにはどうすればいいのでしょうか?
65: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
とりあえず前スレから埋めてくれ。
115: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
無いよ
そもそも一行が基
{}は複数行書ける様にブロック化したに過ぎない
45for: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++でコンパイルしてたってオチかな。
6260: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
9588: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あたりでポインタを移動させとけ。
10097: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
むしろフランス語キボンヌ
107103: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
それって切るのは後ろなんじゃ
110109: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
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
宿題は宿題スレへ
154150: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
165デフォルトの名無しさん:04/10/21 10:06:52
mv
166デフォルトの名無しさん:04/10/21 10:10:04
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)
なら副作用が起きるので、習慣上ただの整数も()で囲む事が多い。
175171: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を略せるのと同じ。
178175: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
190デフォルトの名無しさん:04/10/21 19:15:58
付けなくてもいい関数の場合と、そうでない変数の場合を
同列に挙げて話するのは混乱させるだけだと思うが。
191デフォルトの名無しさん:04/10/21 19:18:49
>>189
floatをフロートト書く香具師は少ないってこったね。
192デフォルトの名無しさん:04/10/21 19:18:55
逃げやがった
193171, 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
199デフォルトの名無しさん:04/10/21 21:34:46
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%じゃなく自分でほざけアフォ低脳
ぶわぁぁか(プ
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
こんなにスレが伸びるほどの話題じゃ無いだろ?バカばっか
237Ruby!!!!!!!!!!!!!:04/10/22 00:27:31
ぶぁあああああああああああああああああああああああああああああああああああああああああか
238デフォルトの名無しさん:04/10/22 00:28:59
>>237
今日だけは、お前のほうがまともに見えるよ。
239デフォルトの名無しさん:04/10/22 00:30:17
間違って覚えているのか、もしくはどうしても関数限定で考えられない>>229=>>223がひとりで粘着しているだけ?
240223:04/10/22 00:30:31
>223は>222宛てね。
つまり、関数の話だってのに変数と勘違いしてそうな香具師は、「関数にextern……」と。
#わざわざ書くだけ無駄な気もするが。
241239: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だ
281279: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の型のサイズやメンバの間のパディング(あるいは各
メンバの先頭からのオフセット)も知らせる必要がある。

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

任意の構造体なんかを相手にするのではなく
自分のコピーの仕方を自分が知ってる構造体を作った方がいいのでは。
304291=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
回答ありがとうございます。
実行のかなり最初の方でストップしてますのでオーバーフローでは無いような気がします。最初のメモリ割り当て時ですし。
ちなみに割り当てたメモリは解放してないので(おい)再利用でも無さそうですね、
エンディアンに依存したコードかどうかはよくわかりませんが…一般的な線形リストの構造体セルを割り当てる操作のところです。

発狂しそうなぐらい汚いプログラムなのでどこにエラーが潜んでるかわからないんですよね・・・
あぁアホの作ったプログラムのデバッグはいやだ
306290: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
前の環境がたまたまうまく動いていただけの予感
311288:04/10/23 01:31:11
>>308
漢字コードは大丈夫です。ヘッダなどの必要ファイルもあります。

OSに依存したファイルはどうでしょうか…
でも恐らくエラー部分では使っていないと思います。
上でも書いたように単なる線形リストの構造体セル追加操作なので。
312288: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()にしてみよう。
316314: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
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"があると
一つ目の方法では発見できない。
346339:04/10/23 20:26:12
>345

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

あと2,3時間考えてまとめてみます。
347デフォルトの名無しさん:04/10/23 20:43:32
あーそうかい。>340は参考にならなかったと。
348346: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のライブラリルーチンを利用しようと
思って説明書をよんでも
さっぱりわかりません。

わかる方、助言お願いします。
35522: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
言いたいことがあるならはっきりと言え。
言わなきゃ若蘭の香wwwwwwwwwwwwwwwww
389376: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
最近のコンパイラなら、末尾再起は最適化されてループと変わらないと思う。
494452: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
497452: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 使うと簡単。
512510: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
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);
ビッグエンディアンならこうできないかな。やった事無いし、わかんないけど。
540530: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;
以外に効率のいい方法ってありますか
546545: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);
549sage:04/10/25 22:33:58
>>547
普通に
int a = 01010101
でいいんじゃない?
コンパイルエラーにならなかっから、これでいいと思うけど・・・
550age:04/10/25 22:35:19
>>549
それじゃ8進数の1010101が入る。
あとセミコロンを忘れるな。
551デフォルトの名無しさん:04/10/25 22:37:19
>>550
ええ!なんで?
552age: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!
ありがとうございます!
592586: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 はどう好意的に解釈しても 大 嘘 だろ
595586: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
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
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
の方が良いけれど。
664663: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
683r/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);
690688: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デフォルトの名無しさん
>>723
ワロタ