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

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

C言語なら、オレに聞け! 47

1 :デフォルトの名無しさん:02/12/16 23:16
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しろ。
むしろ質問する前にWEBで検索するのが常識だ。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへ行け。

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

上記を逸した場合の結果は激しく未定義とする。ウヒ

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

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1039328710/


2 :デフォルトの名無しさん:02/12/16 23:17
【コンパイラ】
gcc
http://gcc.gnu.org/

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

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

3 :デフォルトの名無しさん:02/12/16 23:17
このスレは冗談で作られたニセスレです。ageないようにお願いします。

本物は↓こちら
C言語のことは俺に聞け<46>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50

4 :過去スレ:02/12/16 23:18
46 http://pc3.2ch.net/test/read.cgi/tech/1039328710/
45 http://pc3.2ch.net/test/read.cgi/tech/1038405432/ (待機中)
44 http://pc3.2ch.net/test/read.cgi/tech/1037796472/ (待機中)
43 http://pc3.2ch.net/test/read.cgi/tech/1037281411/ (待機中)
43 http://pc3.2ch.net/test/read.cgi/tech/1037134356/ (待機中)
42 http://pc3.2ch.net/test/read.cgi/tech/1037101156/ (待機中)
41 http://pc3.2ch.net/test/read.cgi/tech/1036876790/ (待機中)
40 http://pc3.2ch.net/test/read.cgi/tech/1036673739/ (待機中)
39 http://pc3.2ch.net/test/read.cgi/tech/1036409391/ (待機中)
38 http://pc3.2ch.net/test/read.cgi/tech/1035729526/ (待機中)
37 http://pc3.2ch.net/test/read.cgi/tech/1035623265/ (待機中)
36 http://pc3.2ch.net/test/read.cgi/tech/1035211039/ (待機中)
35 http://pc3.2ch.net/test/read.cgi/tech/1034337064/ (待機中)
34 http://pc3.2ch.net/test/read.cgi/tech/1033240509/ (待機中)
33 http://pc3.2ch.net/test/read.cgi/tech/1032606064/ (待機中)
32 http://pc3.2ch.net/test/read.cgi/tech/1031905402/ (待機中)
31 http://pc3.2ch.net/test/read.cgi/tech/1031340950/ (待機中)
30 http://pc3.2ch.net/test/read.cgi/tech/1030786546/ (待機中)
29 http://pc3.2ch.net/test/read.cgi/tech/1029605182/ (待機中)
28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/ (待機中)
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/ (待機中)
26 http://pc.2ch.net/tech/kako/1026/10260/1026048820.html
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html

5 :過去スレ:02/12/16 23:18
23 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html


6 :デフォルトの名無しさん:02/12/16 23:24


7 :デフォルトの名無しさん:02/12/16 23:25
からageすんな

8 :1:02/12/16 23:26
重複スレすまそ。

削除依頼すんのでこちらには書かないように。

9 :デフォルトの名無しさん:02/12/16 23:26
から

10 :デフォルトの名無しさん:02/12/16 23:30
#include <stdio.h>
main()
{
float a,b,c;
printf("a=");scanf("%2.1f",&a);
printf("b=");scanf("%2.1f",&b);
c=a+b;
printf("a+b=%3.1f",c);
return 0;
}

このようなプログラムを書いてみたんですが
実行すると
"a=b=a+b=0.00"
と表示されてしまいます。
どこが間違ってるんでしょうか?

11 :デフォルトの名無しさん:02/12/16 23:31
>>10
こちらは削除依頼済みなので
C言語なら私に聞けでお願いします。

12 :デフォルトの名無しさん:02/12/16 23:35
>>11
嘘つくな。出てねーぞ。
こっちの方が早いんだからこっちが本スレだろ。

13 :デフォルトの名無しさん:02/12/16 23:43
>>12
早ければ本スレというわけでもない。歴史が証明している。

14 :デフォルトの名無しさん:02/12/16 23:43
>>12 = 1
本当だ。このスレはもうすぐ消える。あきらめろ。

15 :デフォルトの名無しさん:02/12/16 23:52
このスレは終わっているな。
しねしね団がくる日も近い。

16 :デフォルトの名無しさん:02/12/16 23:55


17 :デフォルトの名無しさん:02/12/16 23:56
>>11
>>14

tech:プログラム技術[スレッド削除]
http://qb.2ch.net/test/read.cgi/saku/1027372992/

これ見ろバカども

18 :デフォルトの名無しさん:02/12/17 00:03
>>17 = 1
なんか必死だね

19 :デフォルトの名無しさん:02/12/17 00:06
.jpgのファイルを読み込んで画像サイズと大きさを表示するには
どんな感じでやればいいですか?

20 :デフォルトの名無しさん:02/12/17 00:07
あぽーなかんじーでおねがーい。

21 :デフォルトの名無しさん:02/12/17 00:10
ウェブ上で得ろ写真とそれ以外を判定する方法はないでしょうか?
得ろ写真収集ソフトを作りたいのですが。

22 :デフォルトの名無しさん:02/12/17 00:15
>>21
〜KB以下の小さい画像は無視するとか。
あと、スレ違い。他逝け。

23 :デフォルトの名無しさん:02/12/17 00:18
#include <stdio.h>

int main(void)
{
char c[] = "*";

switch(*c){
case '*':
printf("*だな\n");
case '"':
printf("*でないわ\n");
case '\\':
printf("\\だわ\n");
}
return 0;
}

をbccまたはlsiでコンパイルして実行すると

*だな
*でないわ
\だわ

と出ます。
漏れの予想では

*だな

と表示されるはずなのですが、何がおかしいのでしょうか?

24 :デフォルトの名無しさん:02/12/17 00:19
>>21
肌色が多い奴だけ DL するとか ?

25 :23:02/12/17 00:22
あ、ごめんなさい。何かがおかしいのは漏れですた。
スレ汚してごめんよ。

26 :デフォルトの名無しさん:02/12/17 01:07
>>23
一応書いて置く罠。breakが・・・・

27 :905:02/12/17 19:18
全くわからないんで教えて下さい。お願いします。
問題は
正の整数の掛け算を行う関数kakezan1とkakezan2がある。(ただし、結果が16ビット以下の数値を取り扱う)また
kakeza1とkakeza2の違いは赤字で書いた一行のみである。

1.片方の関数の結果は間違っている。両者を比較して、その理由を説明しなさい。
2.1の説明を踏まえて間違っている結果を示した関数を修正しなさい。修正できるのはそれぞれの関数で一行のみとし、

字のところは変えてはならない。また、1での解答に沿ったものでなければならない。
です。kakezan1が間違っているようですが何故が違うのか解りません。お願いします。

28 :27:02/12/17 19:18
include <stdio.h>

long kakezan1(long x, long y, int n)
{
long a,b,c,d,e,e1,e2;
int n2;

if( (x>>n)!=0 || (y>>n)!=0) {
n<<=1;
}

if(n==2) {
e=x & y;
} else {
n2=n>>1;
a=x >> n2;
b=x- (a<<n2);
c=y >> n2;
d=y- (c<<n2);
e1=kakezan1(a,c,n2);
e2=kakezan1(b,d,n2);
e=(e1<< n)+( ( kakezan1(a+b , c+d,n2) - e1-e2 ) << n2)+ e2;
}
return e;
}

29 :27:02/12/17 19:18
ong kakezan2(long x, long y, int n)
{
long a,b,c,d,e,e1,e2;
int n2;

if(n==2) {
e=x * y;
} else {
n2=n>>1;
a=x >> n2;
b=x- (a<<n2);
c=y >> n2;
d=y- (c<<n2);
e1=kakezan2(a,c,n2);
e2=kakezan2(b,d,n2);
e=(e1<< n)+( ( kakezan2(a+b , c+d,n2) - e1-e2 ) << n2)+ e2;
}
return e;
}

30 :27:02/12/17 19:19
main() {
int i;
long a,b,c;


scanf("%d %d",&a,&b);
c=kakezan1(a,b,16);
printf("==1== %ld %ld %ld \n",a,b,c);
c=kakezan2(a,b,16);
printf("==2== %ld %ld %ld \n",a,b,c);


}

31 :デフォルトの名無しさん:02/12/17 19:19
新手の荒らしだね。

32 :27:02/12/17 19:20
荒らしじゃないんです。ほんとお願いします。

33 :27:02/12/17 19:47
宿題、書籍 は専門の別スレがあるのでそこへ行け。 とありまりた。
ほんとすいませんでした。

34 :デフォルトの名無しさん:02/12/17 20:36
mktimeはlocaltimeの逆みたいですが
gmtimeの逆ってないんでしょうか?

35 :デフォルトの名無しさん:02/12/17 20:42
>>34
時刻に関する関数はその3つしかないと思うけど。

36 :デフォルトの名無しさん:02/12/18 00:44
>>34
time_t t;
struct tm *tp;
t=time(NULL);
tp=gmtime(&t);
t-=mktime(tp);
これで残ったtの値を適当に使うがよろしい

37 :デフォルトの名無しさん:02/12/18 02:08
以下3つのプログラムはWinのものですが、適当な例が思い付かなかっただけ
なのでスレ違いとか言わないで下さい。
で、どのプログラムが行儀が良いですか?
どれが一般的ですか?

パターンA
void getpath_a(char * path){
char p[MAX_PATH];
GetPrivateProfileString("section","key","",p,sizeof(p),INIPATH);
lstrcpy(path,p);
}

パターンB
void getpath_b(char * path,size_t size){
GetPrivateProfileString("section","key","",path,size,INIPATH);
}

パターンC
void getpath_c(char * path){
GetPrivateProfileString("section","key","",path,MAX_PATH,INIPATH);
}

私的にはAパターンを今まで採用してきましたが。


38 :デフォルトの名無しさん:02/12/18 02:42
>>37
Aだとpathのサイズがpのサイズに満たない時危なくない?
Cも同様。MAX_PATH分用意してるとは限らない。
やっぱBじゃないかな。

39 :デフォルトの名無しさん:02/12/18 02:42
プログラムの行儀の良さを語らせたら世界一だよ、このスレは。(字余り)

40 :デフォルトの名無しさん:02/12/18 02:59
つーか、Aは最後にlstrcpyするのに一時バッファを用意するのは
無意味というか、無駄なだけだと思うのだが。

41 :37:02/12/18 04:10
>>38-40
やっぱりそうですよね。
元々の発想としては、呼び出し時にいちいち変数のサイズ指定するのをやめて
短く済ませようというのがありました。
もちろん、渡されるpathのサイズはMAX_PATHあるという前提での話です。

この前提条件を守ってやるならば、パターンC’で許されますか?
それとも他の方法? ハナっから許されない?

パターンC’
void getpath_c(char * path){
GetPrivateProfileString("section","key","",path,sizeof(path)*MAX_PATH,INIPATH);
}


42 :37:02/12/18 04:13
>41 なぜC’としたかというと、単にsizeof(path)*MAX_PATHの方が
多少行儀が良いかと思いまして。


43 :デフォルトの名無しさん:02/12/18 04:34
>>42
sizseof(path)の値ってどういう値になるか分かってる?

44 :デフォルトの名無しさん:02/12/18 05:03
>>42
pathはポインタなので、sizeof(path)はポインタのサイズ
そのコードでやりたい事は、おそらくsizeof(*path)
更に言うと、Cではchar型のサイズは必ず1
と言っても、こっちの方は書き方のスタイルによる問題なので
あまり気にする必要はありませんが…

45 :デフォルトの名無しさん:02/12/18 05:17
それならいっそのことマクロにするとか

46 :37:02/12/18 05:33
>>43-44
あ、間違いですね。
sizeof(*path)とすべきでしたね。前のままではアドレスサイズでした。

C’で許されるなら、これで行こうと思います。
レスありがとうございました。

47 :デフォルトの名無しさん:02/12/18 08:40
つーか、漏れは C で GetPrivateProfileString() をわざわざラップした事は無い。
C++ なら、std::string を返させる為にそうする事はある。

48 :デフォルトの名無しさん:02/12/18 08:41
つーか、ちょっと待った。

> sizeof(*path)

おいおいおいおい。
それって sizeof(char) と同義だぞ。

49 :名無しさん@XEmacs:02/12/18 08:45
そりゃそーだが.....

50 :デフォルトの名無しさん:02/12/18 08:52
おいおいおいおいおい。
引数の型がたとえunicodeであろうとsizeof(*path)という記述で済むだろって話だろ?
違うのか?ちょっと出てこい粉等>>48,37


51 :デフォルトの名無しさん:02/12/18 09:16
> sizeof(*path)という記述

for(; ; ); に陥りますた

52 :デフォルトの名無しさん:02/12/18 09:27
> 引数の型がたとえunicode

(´-`) ??

53 :名無しさん@XEmacs:02/12/18 09:28
むしろ
void f(void){ f();} に陥りますた、と言うべきだな

54 :デフォルトの名無しさん:02/12/18 09:36
それはコンパイラに最適化されて結局 51 と一緒かも知れない

55 :名無しさん@XEmacs:02/12/18 09:54
じゃこうか
int f(int n) { n + f(n-1); }
つかどうでもいいわな。スレ汚しスマソ

56 :50:02/12/18 09:59
>51,53-54の意味は分からんが、

LPSTR path;
sizeof(*path) == 1

LPWSTR path;
sizeof(*path) == 2

つーことで、引数の型が変わってもsizeofの中身は変えずに済むだろって話。
と、>37の言いたいことはそうなんじゃないのか?

57 :デフォルトの名無しさん:02/12/18 10:29
> LPSTR
> LPWSTR

どうせならさあ、ほら、もっとこう・・・

58 :ビル・ジョブス:02/12/18 10:30
>>1
元祖のスレタイがいいね!エライ!

59 :デフォルトの名無しさん:02/12/18 10:37
>>55
最後に自分を呼び出すタイプの再帰は、大体コンパイラにループに最適化されるよ。

60 :303:02/12/18 12:54
>>59
たぶん 55 の気持ちは、
int f(int n) { return n + f(n-1); }
だと思うが、これを幻視再帰とみなし、ループにするのは
よっぽど上等なオプティマイザです。

最後の演算は加算だから、ループにするのはちょっと厄介。

61 :デフォルトの名無しさん:02/12/18 14:17
>>56
おいおい、W版ではバッファのバイト数でなく文字数を指定するのだが。
だからUnicodeであってもこの場合の sizeofは余計なんだよ。

62 :名無し@沢村:02/12/18 14:21
4バイトの整数値_int32から1バイトの配列BYTE[4]に値をコピーしたいんだが、
int32から1バイト目、2バイト目、3バイト目…と値を分けてきり出すにはどうしたらいいですか?


63 :名無しさん@XEmacs:02/12/18 14:23
マルチですか?( ̄ー ̄)ニヤリッ

64 :名無し@沢村:02/12/18 14:25
>>63
いや、あちらに書いたらこちらに書けって書かれたもんだから…。

65 :デフォルトの名無しさん:02/12/18 14:25
>>62
& と >>

66 :名無しさん@XEmacs:02/12/18 14:29
コピーするだけなら
memcpy(BYTE, &int32, 4);
でいけるはずだけどねー

67 :デフォルトの名無しさん:02/12/18 14:29
激しく処理系依存で
i = *(int *)b;

68 :xxx:02/12/18 14:31
-------変態・MTTどこでも-------

---●●●変態痴女を紹介致します。●●●---

例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・

フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・

アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・

SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。

●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●

 090-8002-8356番   
下のカタカナを小文字に変換してください。
  http://www.エムティーティー.jp/i

-





69 :67:02/12/18 14:31
あ、逆だった。

70 :67:02/12/18 14:32
激しく処理系依存で
*(int *)b = i;

71 :名無し@沢村:02/12/18 14:38
>>65
_int32 Buffer1;
BYTE Buffer2[4];
Buffer2[0]=(Buffer1 & 0xFF000000) >> 24 ;
Buffer2[1]=(Buffer1 & 0x00FF0000) >> 16 ;
Buffer2[2]=(Buffer1 & 0x0000FF00) >> 8 ;
Buffer2[3]=(Buffer1 & 0x000000FF) ;
でいいのですか?

72 :名無し@沢村:02/12/18 14:40
>>66
memcpyというのは初耳です。
第一引数がコピー先、第二引数がコピー元、第三引数がコピーするバイト数なのですか?
第一引数が配列であってもいいのですか?早速調べてみます♪



73 :名無しさん@XEmacs:02/12/18 14:43
Buffer2[0] = (BYTE) (Buffer >> 24) & 0xff;
Buffer2[1] = (BYTE) (Buffer >> 16) & 0xff;
Buffer2[2] = (BYTE) (Buffer >> 8) & 0xff;
Buffer2[3] = (BYTE) (Buffer >> 0) & 0xff;
こうじゃないのかなぁ

74 :名無し@沢村:02/12/18 14:47
Buffer2[4]は1バイトだから、定数値が切り捨てられると思うが、右が切り捨てられるのかな?左が切り捨てられるのかな?
どっちだろう?
右が切り捨てられるなら、
Buffer2[0]=(Buffer1 & 0xFF000000) ;
Buffer2[1]=(Buffer1 & 0x00FF0000) << 8 ;
Buffer2[2]=(Buffer1 & 0x0000FF00) << 16 ;
Buffer2[3]=(Buffer1 & 0x000000FF) << 24;
と逆になるが…。
どっちですか?

75 :デフォルトの名無しさん:02/12/18 14:47
>>71
> Buffer2[0]=(Buffer1 & 0xFF000000) >> 24 ;
はシフトの前にunsignedにキャストした方がいい。

>>72
インテル系のCPUではバイト並びが逆になる。

>>73
それもunsignedにキャストした方がいい。

76 :スティーブ:02/12/18 14:48
プログラムに興味を持ってる人はwww.ITmonitorClub.comに登録して下さい!
アンケトーにお答え頂いた方には2−5千円の謝礼進呈。


77 :75:02/12/18 14:49
ごめん。やっぱり 73はキャストしなくてもいい。

78 :名無し@沢村:02/12/18 14:53
>>73
わかりました。先にシフト演算してからビット演算するればいいのですね。
なにぶんプログラムはド素人なもので、細かいところまでは…てへへっ♪
それから右にシフトしたということは、1バイトに代入すると、やはり右が切り捨てられると考えていいのですね?


79 :名無し@沢村:02/12/18 14:54
あ…違った左が切り捨てられると考えていいのですね?

80 :名無し@沢村:02/12/18 14:59
>>75
unsigned intはバイト数が処理系依存と読んだことがあるので、わざわざ4バイト固定の_int32を使ったのですが…。
unsigned intを使っても問題ありませんか?

81 :デフォルトの名無しさん:02/12/18 14:59
言ってる意味がよくわからんが、
 0x12345678
を 8ビットの unsigned charに代入すれば
 0x78
になる

82 :デフォルトの名無しさん:02/12/18 15:00
>>79
レジスタの仕組みも勉強したほうが良いかもしれません。

83 :名無し@沢村:02/12/18 15:01
>>77
なあんだ、キャストしなくてもいいんですか…。

84 :デフォルトの名無しさん:02/12/18 15:01
union 使ったら?

85 :名無し@沢村:02/12/18 15:02
>>81
>0x12345678
>を 8ビットの unsigned charに代入すれば
> 0x78
>になる

あ、やっぱり左が切り捨てられるでいいんだ♪ありがとうございました♪


86 :デフォルトの名無しさん:02/12/18 15:03
>>83
ん?73はキャストをしてるような・・・

87 :デフォルトの名無しさん:02/12/18 15:12
>>80
> unsigned intはバイト数が処理系依存と読んだことがあるので、
> わざわざ4バイト固定の_int32を使ったのですが…。

unsigned int と signed int のサイズは同じ。
singed int でもサイズは処理系依存。

負数の右シフトで、空きビットにゼロが入るかどうかが
処理系依存なのでキャストした方がいいと書いたのだが、
>>71でも(BYTEが8ビットなら)キャストしなくても
結局切り捨てられて同じになるね。ごめん、逝くわ。

88 :デフォルトの名無しさん:02/12/18 15:57
>>86
ああ,確かにしてる
BYTE→int→BYTEのな


アフォキャストって言っていい?

89 :名無しさん@XEmacs:02/12/18 16:07
ダレがアフォじゃコラ!
。。。でこの場合ってマスクいらないのかな?
Buffer2[0] = Buffer1 >> 24;
みたいな。
うちの環境だとどうやらいけてるみたいだけど、なんというか
規格上OKなのかどうか聞きたいんだけど。

90 :デフォルトの名無しさん:02/12/18 16:14
Buffer2[0] = BYTE(Buffer1 >> 24 & 0x000000ff);


91 :デフォルトの名無しさん:02/12/18 16:20
>>89
マスクはいらないかも・・・
Buffer2[0] = (BYTE)(Buffer1 >> 24);


92 :デフォルトの名無しさん:02/12/18 16:30
暇なやしの質問場所だな。

93 :デフォルトの名無しさん:02/12/18 16:56
Buffer2[i] = ((BYTE*)&Buffer1)[i];


94 :デフォルトの名無しさん:02/12/18 17:23
>>90
そのBYTEはマクロか?

95 :名無しさん@XEmacs:02/12/18 17:24
C++ でしょ

96 :デフォルトの名無しさん:02/12/18 17:30
ここはCスレだ

97 :90:02/12/18 17:46
悪かったよ・・・
イジメないでくれよ・・・

98 :デフォルトの名無しさん:02/12/18 18:02
>>89
_int32とは何かが明らかにされていないので本当は何とも言えないが
おそらく__int32のミスプリであろうと仮定すると
BYTEはunsigned charのtypedefと推定できる
以後、この前提で議論する

BYTEにキャストした後で&0xffしてるんだから代入の右辺はint型で
代入式はBYTE←intの形になっている
ここで右辺がBYTE型に暗黙の型変換をされるわけだが
型変換した結果の値は型変換前のint値を
BYTE型で表現できる最大数+1で割った剰りとなる
つまり&0xffはしなくてもよいことになる

99 :名無し@沢村:02/12/18 18:06
>>94
マクロかどうかは知らんよ。
ただちらっと見たら、BYTE型というのがあってサイズは1バイトと書いてあっただけだよ。


100 :デフォルトの名無しさん:02/12/18 18:08
>>98
charが9ビットなら &0xffの有無で結果が違ってくるな

101 :名無し@沢村:02/12/18 18:10
>>98
あらっ、ホントだ。
_int32ではなく、__int32だったよ。
エラーが出なかったので、ミスプリのまま使っていたよ。

102 :98:02/12/18 18:18
>>100
おいおい前提を見落とさないでくれよ

103 :デフォルトの名無しさん:02/12/18 18:58
構造体にデータを格納したいのですが、そのデータがいくつ必要になるか不明なのです。
10個の時もあれば、10000個の時もあるので

struct data {
 int xxx;
 char yyy[256];
};
struct data info[10000];

みたいなのは容量の無駄なのでやりたくありません。
そもそも10000個で収まるかどうかも不確定なので。
データによって、その必要な数だけ構造体を確保する方法ありませんか?

104 :デフォルトの名無しさん:02/12/18 19:01
>>103
malloc関数・・・

105 :デフォルトの名無しさん:02/12/18 19:10
>>103
リストって知ってるかい。

106 :デフォルトの名無しさん:02/12/18 19:12
>>103
C99限定ならば
int foo(int size)
{
  struct data info[size];
  // なんか処理をする
}
と言う方法はある。
普通は
int foo(int size)
{
  struct data *info;
  info = malloc(sizeof(*info) * size);
  // なんか処理をする
  free(info);
}
かな?

107 :100:02/12/18 19:13
>>102
前提にはcharが8ビットとは書かれてないが...それとも
__int32が32ビットであることが規格で決まってるのか?

でもまあ単なる揚げ足取りだから、どっちにしても気にしないでくれ。

108 :98:02/12/18 19:21
>>107
すまそ,漏れのミスだ
あの前提では__int32がある処理系がVCだけになっていた(鬱出汁脳

109 :デフォルトの名無しさん:02/12/18 19:22
>>107
__int32なんてものは規格にはない罠。


110 :名無し@沢村:02/12/18 19:25
>>107
charは1バイトだから8ビットだよ。intやunsigned intはシステムに依存するよ。
__int32は4バイトだから32ビットだよ。これは規格で決まっているよ。ホントだよ。

111 :デフォルトの名無しさん:02/12/18 19:27
>>110
何も知らん初心者はすっこんでろ

112 :デフォルトの名無しさん:02/12/18 19:29
>>110
その規格ってのは MS-VC99 か?

113 :103:02/12/18 19:30
>>104
mallocで確保すると、それぞれの構造体に直接アクセスできますか?
その方法がわからないんですけど。

>>105
知ってます。
リスト構造でmallocで確保すると、最初からたどらないと目的の構造体に
アクセスできないのでちょっと。
info[no].xxxみたいにインデックスの数値で目的の構造体に直接アクセスしたいんです。

>>106
その普通の方法というのを最初に試したのですが、各構造体に直接アクセスする方法が
よく分からないんですけど、できますか?

114 :デフォルトの名無しさん:02/12/18 19:31
  struct data *info;
  info = malloc(sizeof(*info) * size);
  info[0].xxx = 0;
  strcpy(info[0].yyy, "hoge");


115 :デフォルトの名無しさん:02/12/18 19:32
>>110
ソースは?
「本に書いてあった」とか言うなよ。

116 :デフォルトの名無しさん:02/12/18 19:33
>>110
1byte=9bitsのマシンが実在するのを知らないのは許してやろう
だが,規格で決まっているかどうか調べもせずに言うのはいかん

117 :名無し@沢村:02/12/18 19:35
>>103>>106
struct data {
 int xxx;
 char yyy[256];
};
struct data *info;
info=(struct data *)malloc(sizeof(struct data ));



free(info);

のほうが馬鹿でもわかりやすいよ。



118 :名無し@沢村:02/12/18 19:37
>>115
VC++のヘルプで検索してら書いてあったんだよ。4.0だけどね…。ビンボー素人なもんで…。

119 :デフォルトの名無しさん:02/12/18 19:38
>>117
だから,調べもせずに言うなってば!

120 :デフォルトの名無しさん:02/12/18 19:38
int 型と unsigned int 型のサイズは、システム ワードのサイズになります。
つまり、MS-DOS と 16 ビット バージョンの Windows では 2 バイト (short
型および unsigned short 型と同サイズ) になり、32 ビットのオペレーティ
ング システムでは 4 ビットになります。

MSDNって素敵…。

121 :デフォルトの名無しさん:02/12/18 19:42
>>120
マジかよ
最新バージョンでか?

122 :名無し@沢村:02/12/18 19:45
>>113
>mallocで確保すると、それぞれの構造体に直接アクセスできますか?
>その方法がわからないんですけど。

普通にinfo->char[5]とか、info->xxx[73]とかすればいいが、何か…??

123 :デフォルトの名無しさん:02/12/18 19:45
>>118
お前にとっての規格は「VC++のヘルプ」なのかと小

124 :デフォルトの名無しさん:02/12/18 19:46
>>122
info->char[5]がコンパイルできるかどうか調べたかと3.6キロ秒ほど問いつめ...たくない
もういやだ,こいつ

125 :デフォルトの名無しさん:02/12/18 19:49
>>124
ネタに付き合うお前すげぇよ

126 :名無し@沢村:02/12/18 19:50
>>124
すまん、プリミスだ。info->char[5]ではなく、info->yyy[5]だったな。

127 :デフォルトの名無しさん:02/12/18 19:50
>>124
冬休みだからな...学生はいいよな

128 :名無し@沢村:02/12/18 19:52
>>113
>mallocで確保すると、それぞれの構造体に直接アクセスできますか?
>その方法がわからないんですけど。

ってお前まさかそれでプログラマーじゃないだろうな?
俺はド素人だぜ。プログラマーはド素人には教えてもらわないよな。普通…。

129 :デフォルトの名無しさん:02/12/18 19:52
ド素人が偉そうにネタ回答すんな。

130 :103:02/12/18 20:01
>>114
その方法だと、結局その変数sizeでサイズが分かってないと駄目ですよね?
サイズが分からない段階で確保していく方法はないでしょうか?


131 :名無し@沢村:02/12/18 20:07
>>130
お前、俺のレスちゃんと読んだか?

struct data {
 int xxx;
 char yyy[256];
};
struct data *info;
info=(struct data *)malloc(sizeof(struct data ));



free(info);

で確保しろ。
でアクセスは普通にinfo->yyy[5]とか、info->xxx[73]な。

132 :デフォルトの名無しさん:02/12/18 20:09
>>131
お前って・・・

133 :デフォルトの名無しさん:02/12/18 20:09
>>131
お前、・・・

134 :デフォルトの名無しさん:02/12/18 20:10
なんで名無し@沢村がこのスレに馴染んでんの?別にイイケドサ…

135 :デフォルトの名無しさん:02/12/18 20:10
>>131
ネタもいい加減にしろよ。
氏ね。

136 :デフォルトの名無しさん:02/12/18 20:10
>>131
いいかげんにネタ回答はやめろ。天然か?
それにしても聞く時と答える時ですごい豹変ぶりだな。

137 :デフォルトの名無しさん:02/12/18 20:10
Buffer1 は符号付き整数ですから、Buffer1 が負の値だったときに
Buffer1>>24 は処理系依存になります。だから、
(unsigned int)Buffer1>>24
とすべきです。

[#5] The result of E1 >> E2 is E1 right-shifted E2 bit
positions. If E1 has an unsigned type or if E1 has a signed
type and a nonnegative value, the value of the result is the
integral part of the quotient of E1 divided by the quantity,
2 raised to the power E2. If E1 has a signed type and a
negative value, the resulting value is implementation-
defined.

138 :デフォルトの名無しさん:02/12/18 20:11
ややこしくなるからお前は黙ってろ > 名無し@沢村

139 :デフォルトの名無しさん:02/12/18 20:11
沢村くん・・・
103からレスを読み返してみたまえ。

140 :デフォルトの名無しさん:02/12/18 20:12
>>130
リスト構造というものを勉強することを勧める。

沢村のネタ回答はほっとこう。無視無視。

141 :デフォルトの名無しさん:02/12/18 20:13
↓沢村の「釣れた」の予感

142 :デフォルトの名無しさん:02/12/18 20:14
>>130
いくつか分からんものを確保しようがないと思うが?
途中で追加されてサイズが変わるとかならrealloc()汁。

143 :142:02/12/18 20:16
>>141
正直、すまんかった

144 :デフォルトの名無しさん:02/12/18 20:16
>>137
誤爆か?
>>87を読め

145 :103:02/12/18 20:21
>>140
リスト構造は一応知ってるつもりなんですけど、目的のデータに
到達するまでに最初から追っていかなくては駄目ですよね?
目的のデータに直接アクセスしたいんですよ。

>>142
やはり無理ですか。
10000個データがあったとしても、1個ずつ読み込んで処理できるんなら
その時にカウントしていけばいいんですけど、10000個分が全部まとまった
状態でしかそのデータを読み込めないんです。
だから、最初からその分の領域を確保しなければならないので困ってます。

うーん、もう少し頑張ってみます。

146 :デフォルトの名無しさん:02/12/18 20:24
>>144
いや、ちがう。符号付き整数で値が負の時に、
右シフトすると、空きビットうんぬんではなく、
全部のビットが変になる可能性がある。
符号付き数の内部表現が1の補数である処理系を考えてみると
よい。

147 :デフォルトの名無しさん:02/12/18 20:30
>>145
>目的のデータに直接アクセスしたいんですよ。
n番目のアイテムを返す関数一個作って直接アクセスっぽく…
ダメ?w

148 :名無し@沢村:02/12/18 20:32
(unsigned int)Buffer1 >> 24とするより、最初からBuffer1をunsigned intにしておいたほうが手っといばやいんでそうしました。
どうやらunsigned intはMS_DOSとwindous3.1以外は4バイトのようですね。安心しました♪


149 :142:02/12/18 20:33
>>145
「直接アクセス」っていうか「ランダムアクセス」したいってことだな。

後半はよく意味が分からんのだが、もうちっと説明してみ?

150 :デフォルトの名無しさん:02/12/18 20:33
>>145
142も言っているが、reallocじゃダメなの?

151 :名無し@沢村:02/12/18 20:35
>>145
>10000個分が全部まとまった
状態でしかそのデータを読み込めないんです

読み込んだ後、カウントできないの?

152 :デフォルトの名無しさん:02/12/18 20:38
>>151
貴様に発言権はない

153 :デフォルトの名無しさん:02/12/18 20:38
>>145
ポインターのポインターを使用するしか・・・

154 :デフォルトの名無しさん:02/12/18 20:39
>>146
なるほど。言ってる意味はわかったが、
果たしてその解釈で合ってるかな。

E1>>E2 は、E1 を E2 ビット分右にシフトし、それを結果とする。
E1 が符号無し整数型をもつ場合、又は E1 が符号付き整数で非負の値をもつ場合、
結果の値は、E1 を 2 の E2 乗で割った商の整数部分とする。
E1 が符号付き整数型で負の値をもつ場合、結果の値は、処理系定義とする。

ビット並びで見た場合、空きビット以外の部分は保証されていると思うが。

155 :154:02/12/18 20:45
>>154
JIS X3010 (ISO/IEC9899:1990) からの引用ね。

156 :デフォルトの名無しさん:02/12/18 20:51
>>152
みんな仲良くしようよ

157 :デフォルトの名無しさん:02/12/18 20:52
>>145
>>10000個分が全部まとまった
>>状態でしかそのデータを読み込めないんです。

この辺が何を言いたいのか理解できないんだが。
malloc()、realloc()で確保した領域は構造体の配列と同じようにアクセスできるけど、それじゃだめか?


>>153
なぜ?


158 :デフォルトの名無しさん:02/12/18 20:59
何にしろ、個数が分からん限りmallocで確保するのは絶対に不可能。
ループで回してる中で1個づつ追加していきたいならreallocでできるでそ?
100個でも10000000個でもreallocしていけば。

しかしreallocの時間的コストってどんなもんだろうな。
10000000回もreallocするのなんか抵抗あるが。

159 :名無し@沢村:02/12/18 21:00
>>152
刀あげるから…!!

160 :デフォルトの名無しさん:02/12/18 21:05
>>159
>>152


161 :デフォルトの名無しさん:02/12/18 21:31
>>154 たしかにそうだ。私が間違えていた。すまん。
bit ならびは新しく入る部分以外は保存される。

わたしが漠然と思っていたことがやっと分かった。
マスク (&0xff) せずに、
buffer2[0] = buffer >> 24;
とした場合ははダメで、
buffer2[0] = (buffer >> 24) & 0xff; /* CHAR_BITS==8 の場合 */
ならOK ってことだ。
つまり、&0xff なら、左のビットが捨てられるだけだが、
前者のようにマスクせず int を BYTE に代入したら、
(BYTE が 8 bit の符号無し整数だとして)
256を法としてbufferと合同な最小の整数が buffer2[0]に入るから、
負数の内部表現によって結果が異ってしまう。

このスレではみんな &0xff としてるので、問題ないわけだ。
私がわるかった。重ねがさね済まん。

162 :124:02/12/18 22:29
>>127
うるせーここんとこ仕事ヒマなんだよ
放っとけ

163 :デフォルトの名無しさん:02/12/18 23:32
#include <limits.h>
&(unsiged(1<<CHAR_BIT)-1)
多分これで処理系に関係なく1バイトのみの値を取る事が出来る
と言っても、こんなガイキチみちたコードなんて書かずに
素直に、処理系依存のコードにした方が、かなりまし

164 :デフォルトの名無しさん:02/12/18 23:40
>>163
そんなガイキチみちたコードなんて書かずに
素直に、UCHAR_MAXと書いたほうがまし

165 :さっぱり:02/12/18 23:41
すいません。C言語の初心者です。
課題で出されたCがわからなくてこまってます。
課題は2つの行列AとBを加算するプログラム(matadd.c 未完成)をディスクに保存する。

入力用データファイル matadd.dat をディスクに保存する。

ソースプログラムをコンパイルし,実行する。
実行時に次のように入力のリダイレクトを行い,データファイルからデータを読み込ませる。

matadd < matadd.dat


表示された結果とソースプログラム内容を観察し,どのような手順で2次元配列を入力・出力しているか,理解する。

次に,C=A+B を計算し,Cの各要素を行列らしく出力する部分を追加して完成させる。
上と同様に実行して動作確認ができたら,ソースプログラムを提出する。


166 :163:02/12/18 23:42
書くの忘れてた…
これ、>>89-100辺りに出てたマスクの話
(マスクが必要か必要無いかの話は別問題として)

167 :デフォルトの名無しさん:02/12/18 23:46
>>165
>>1よめ厨房。

>ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへ行け。


168 :デフォルトの名無しさん:02/12/18 23:49
>>164
UCHAR_MAXって(unsigned)0-1になる事が規格で保証されてたっけ?

169 :デフォルトの名無しさん:02/12/18 23:52
>>103
struct data {
 int xxx;
 char yyy[256];
};
char dummy=0;
struct data *info;
info=(struct data *)malloc(sizeof(struct data )*kazu);

dummy = (info+index)->yyy[xxx];//info[index]->yyy[xxx]; と同じアクセス方法。indexはkazuを超えない事。

free(info);

ダイレクトにアクセスできますぜ。
ただ、確保された領域の外には手を出さない事。(事故でも)
ソースは、131から流用を改変。thx.

170 :デフォルトの名無しさん:02/12/18 23:57
>>169 ここCのスレなんだから、せめてこれ位に…
typedef struct {
 int xxx;
 char yyy[256];
} data;

171 :デフォルトの名無しさん:02/12/19 00:14
>>103
構造体のメンバを表す時の.や->の意味とポインタの概念を理解出来れば
>>169の(info+index)->yyy[xxx]をinfo[index].yyy[xxx]と
置き換えられるようになる事が理解出来るので、頑張っ勉強して下さい

172 :171:02/12/19 00:16
「頑張って」のが「て」が抜けた…

173 :デフォルトの名無しさん:02/12/19 03:02
>>168
不安なら(unsigned)0-1って書けば?
>>163よりはマシだと思われ

174 :デフォルトの名無しさん:02/12/19 03:10
>>168
保証もなにも、普通違う値だろ。

~(~0u<<CHAR_BITS)

175 :デフォルトの名無しさん:02/12/19 03:19
>>173
(unsigned char)0-1の書き間違えだと思うが
それが8ビットの場合255になってくれる処理系を俺は見た事がない

176 :175:02/12/19 03:34
誰も書かないようなので自分で突っ込みを入れると
(unsigned char)(-1)
なら動くが、たまに動かない物もあるので注意

177 :175:02/12/19 03:37
さらに書くと、>>176で動く場合
ただ単にキャストすればマスクの必要はない

178 :デフォルトの名無しさん:02/12/19 03:45
このスレ的に処理系の規格準拠は前提にしていいの?

179 :デフォルトの名無しさん:02/12/19 04:07
処理系の規格準拠って何ぞや?

180 :デフォルトの名無しさん:02/12/19 10:27
コンパイラが ANSI なり ISO なりの規格に準拠してるかって事だろ。
C 言語の前に日本語は大丈夫か?

181 :デフォルトの名無しさん:02/12/19 10:39
> (info+index)->yyy[xxx];

イヤな書き方するな。

182 :デフォルトの名無しさん:02/12/19 11:01
>>145
> 10000個データがあったとしても、1個ずつ読み込んで処理できるんなら
> その時にカウントしていけばいいんですけど、10000個分が全部まとまった
> 状態でしかそのデータを読み込めないんです。
> だから、最初からその分の領域を確保しなければならないので困ってます。
C++のVectorの実装を参考にしてみろ。
まず、適当な大きさでmallocし、追加するたびに上限値を超えていないかのチェックを行う。
上限値を超えていた場合、上限値を増やしてreallocする。
こんな感じの実装の仕方だったはず。

183 :デフォルトの名無しさん:02/12/19 11:03
> C++のVectorの実装を参考にしてみろ。

この一行がものすごく余計な気がする

184 :デフォルトの名無しさん:02/12/19 11:14
>>175
整数演算がオーバーフローした場合の結果は未定義だが
符号なし整数はオーバーフローしない
よって(unsigned char)0から1を減じた結果が
UCHAR_MAXとなることを処理系は保証すべき

符号付き整数-1を,より少ないビット数の符号なし整数unsigned charに変換する場合
変換後の値は,UCHAR_MAX+1で割った非負の剰りであると規定されているから
UCHAR_MAX==255の処理系では(unsigned char)-1==255となるべき

>>181
イヤじゃない書き方って
info[index].yyy[xxx]
のことか?
漏れ的にはポインタに[]はあんまり使いたくない
仮引数*hogeをhoge[]と書くのも気持ち悪い

185 :デフォルトの名無しさん:02/12/19 11:21
> 符号なし整数はオーバーフローしない

そんな事が決まっていたっけ?

> UCHAR_MAX==255の処理系では(unsigned char)-1==255となるべき

unsigned char に変換する前の -1 の全ビットが立っている保証はあったっけ?

> info[index].yyy[xxx]
> のことか?

そう。

> 漏れ的にはポインタに[]はあんまり使いたくない

ならこう書け。
(info + index)->yyy + xxx

> 仮引数*hogeをhoge[]と書くのも気持ち悪い

int main(int argc, char **argv)
と書く人ですか?
まあいいけど。

186 :デフォルトの名無しさん:02/12/19 11:22
> (info + index)->yyy + xxx

こうね。
*((info + index)->yyy + xxx)

187 :デフォルトの名無しさん:02/12/19 11:33
>>185
> そんな事が決まっていたっけ?
少なくともJIS X 3010-1993では決まっていますが何か?
JIS X 3010-1993(ISO/IEC 9899:1990)
6.1.2.5 型 4段落目の中程から引用
  符号無しオペランドを含む計算は、決してオーバフローしない。
  すなわち、格納する符号無し整数型で表現できない結果が、その符号無し整数で
  表現しうる最大値より1だけ大きい数を法とする剰余とする。

188 :デフォルトの名無しさん:02/12/19 11:35
>>185
> > 符号なし整数はオーバーフローしない
> そんな事が決まっていたっけ?
オーバーフローしたときの動作が決まってたはず。

> > UCHAR_MAX==255の処理系では(unsigned char)-1==255となるべき
> unsigned char に変換する前の -1 の全ビットが立っている保証はあったっけ?
ない。


189 :デフォルトの名無しさん:02/12/19 11:40
>>187
ありがとう。
C99 では 6.2.5 Types の項 9 だね。
でも、訊いただけだから、何かと訊き返されても困るけど。

190 :デフォルトの名無しさん:02/12/19 11:44
> > UCHAR_MAX==255の処理系では(unsigned char)-1==255となるべき
> unsigned char に変換する前の -1 の全ビットが立っている保証はあったっけ?

訊き方がまずかったかも。
符号付整数の負数を符号無し整数にキャストした時、どの負数がどの正数値に対応
すべきという規定はあったっけ?

191 :デフォルトの名無しさん:02/12/19 11:59
>>185

-1のビットパターンには関係がない
-1を256で割った非負の剰りが255なだけ

192 :184:02/12/19 12:06
ん,(unsigned char)0から1を減ずることはできないな
(unsigned char)0-1と書いても格上げが入るから
((int)(unsigned char)0)-((int)1)になるだけだ

193 :デフォルトの名無しさん:02/12/19 12:07
なるほど

194 :デフォルトの名無しさん:02/12/19 12:08
>>192
inf i = 0;
i--;
と言いたいわけか?

195 :194:02/12/19 12:08
寝言言ってる。
unsigned char c = 0;
c--;

196 :デフォルトの名無しさん:02/12/19 12:33
んー、あれ、ちょっと待てよ。
(unsigned char)0-(unsigned char)1
は、ずっと unsigned char のままで演算されないか?

197 :デフォルトの名無しさん:02/12/19 14:06
C の事はここでは訊いてはいけないって本当ですか?

198 :デフォルトの名無しさん:02/12/19 14:57
>>196
(unsigned char)((unsigned char)0-(unsigned char)1)
なら、そう実装しても構わない。

199 :デフォルトの名無しさん:02/12/19 15:24
>>196
unsigned char c;
printf("%u\n", sizeof(c));
printf("%u\n", sizeof(c - c));

200 :デフォルトの名無しさん:02/12/19 15:25
>>169
そもそも103はそのkazuってのがその時点で不明だから悩んでるんじゃないか?
話がループしてるぞ。

201 :デフォルトの名無しさん:02/12/19 15:45
ディレクトリに対して読み込みモードでfopenすると成功するんですけど、
それから読み込みを行うのは安全ですか?

202 :デフォルトの名無しさん:02/12/19 15:46
>>200
それについてはrealloc()が5回くらい出てるんだが、読んでないのか?

203 :デフォルトの名無しさん:02/12/19 15:47
>>201
読めることは読めるだろうけど、得られたデータには何の保証もない。

204 :デフォルトの名無しさん:02/12/19 15:48
>>203
安全ならそれでいいんです。
じゃあ大丈夫だってことですか?

205 :デフォルトの名無しさん:02/12/19 15:49
>>204
何を安全とするか、何を大丈夫とするか、によって答えは変わる。


206 :デフォルトの名無しさん:02/12/19 15:50
>>205
プログラムが異常終了したりしないかとか。

207 :デフォルトの名無しさん:02/12/19 15:56
>>201
普通opendirじゃないの。ディレクトリもファイルの一種。

208 :デフォルトの名無しさん:02/12/19 16:04
>>206
システムや処理系次第だろうな。
真っ当なシステムなら、openできた以上以上終了ってことは多分ないと思うが、
もちろん保証の限りではない。

POSIXなシステムでは、ディレクトリに対するfopen()は書き込みじゃなけりゃ
成功するように見える。
ttp://www.opengroup.org/onlinepubs/007908799/xsh/fopen.html
[EISDIR]
  The named file is a directory and mode requires write access.

ちなみにLinuxでは即EOFになった。

209 :デフォルトの名無しさん:02/12/19 16:19
MAC だとフォルダ開けてしまい、読もうとした瞬間あぼーんされたりすると聞いた事あるが。

210 :184:02/12/19 17:12
>>186
ワラタ
*((*(info + index)).yyy + xxx)

[]や->も使えば可読性が上がる場面では漏れも使ってるけどよ
たとえば冒頭の例のように*をちゃんと追うのは大事な基本だと思うから
ポインタで間接参照しているところはありのまま書いておきたいって
気持ちがあるわけよ

char s[2];
s[1] = '\0'; なんかだと
*(&s[0] + 1) = '\0'; がありのままだが
配列の実体に直接アクセスしているところはそう見せたい
extern char s[];
s[1] = '\0';
のような場面が脳裏をよぎるんだ

*argv[]も漏れの周りがそうしてるから合わせてるさ
あんまり使いたくないってのは
必ずしも本音と建て前が一致しないことがあるってことで
絶対使わないって意味じゃない

211 :デフォルトの名無しさん:02/12/19 17:20
210 の言いたい事もわからないでもないけど、結局シンタックスシュガーを許容
できない頑固者としか思えないよ。
シンタックスシュガーが何の為にあるのか考えた方がいい。
もちろん、自分しか読まないようなソースであれば、その限りじゃないけど。

212 :184:02/12/19 17:27
シンタックスシュガーは逆効果に気をつけて使うべきだろ
マクロをあんまり使いたくないのと同じだよ

213 :デフォルトの名無しさん:02/12/19 17:47
(゚Д゚)ハァ?

214 :184:02/12/19 17:50
[]や->は1重間接の*を隠すだけだろ
2重間接になってる所では却って邪魔になることがあると言いたい

215 :デフォルトの名無しさん:02/12/19 18:06
何が邪魔になるのかよくわからないから例を挙げてはくれないか?

216 :デフォルトの名無しさん:02/12/19 18:13
(*p)[n] = &(*q)->r;
*(*p + n) = &(**q).r;
まあ気分の問題ちゃそれまでなんだけどよ

>もちろん、自分しか読まないようなソースであれば、その限りじゃないけど。
こんなこと言われるのは心外だったりする

217 :216=184:02/12/19 18:18
失礼,名乗るのを忘れた

218 :デフォルトの名無しさん:02/12/19 18:28
主観満載な事を“使うべき”なんて言われてもねぇ

219 :デフォルトの名無しさん:02/12/19 18:46
>>216
後者の方がよっぽどワケワカランに見えるけど?

220 :デフォルトの名無しさん:02/12/19 18:48
>>202
ハァ? 頭悪すぎ。
169の内容と何も関係ないだろ。

221 :デフォルトの名無しさん:02/12/19 18:49
>>218
可読性を主観以外の何だと言う気だ?
よもや自分だけ違うなんて言い出すまいな
それから漏れは「べき」と言ったか?

222 :デフォルトの名無しさん:02/12/19 18:52
>>221
あんたが 「べき」 と言ったかどうかは知らないが、212 にはそう書いてある。

223 :デフォルトの名無しさん:02/12/19 18:58
>>222
ああ,そいつは悪かった
確かに漏れが言った
逆効果なんかありえないと言う訳にもいかんが

>>219
漏れが組んでいる相手がそう言ったら当然考えるさ
人に読ませることを考えてないような言われ方が心外だと言っている

224 :223=184:02/12/19 18:58
いかん,また名乗るのを忘れた

225 :デフォルトの名無しさん:02/12/19 18:59
ポインタ(dat = *pointer)と配列(dat = dim[0])ってどっちがアクセス高速ですか?

226 :デフォルトの名無しさん:02/12/19 19:02
>>225
実測しる
それしかない

227 :デフォルトの名無しさん:02/12/19 19:08
まあ、お前ら落ち着けよ。
とりあえず、他人が読んで分かりやすいのが良いに決まってるんだが
その他人が読みやすいってのが、個人個人で違うから主観だって話でそ?
チームで開発してれば、その大多数が読みやすい形で書くのがベストであって
つまり、一番使ってるやつが多い形に合わせるのが自然だな。
自分のスタイルと変えて書くほうは大変だが。

228 :デフォルトの名無しさん:02/12/19 19:09
>>225
ちなみに、VC6 は最適化レベルに関わらず、どちらも同じコードを吐く。

229 :184:02/12/19 19:13
>>227
そうだな
人に例を要求しておいて自分は何も出さないまま煽るだけの
抽象論を相手に漏れも大人げなさすぎたよ

230 :デフォルトの名無しさん:02/12/19 19:17
(*p)[n] = &(*q)->r;
*(*p + n) = &(**q).r;

この例を取って主観で言うけど、漏れは 1 つの塊に * が 2 つ以上あるのは
読みにくいと思う。
184 の主論は 「隠れた処理があるのはわかりづらい」 という事だと思うんだけど、
漏れは 「わかりきった処理は隠蔽された方が読みやすい」 と思う。
i < 0? -i: i と書くより abs(i) と書いた方が読みやすいのと同じ話じゃないかな。

231 :184:02/12/19 19:20
**くらいでピーピー泣くなって

232 :230:02/12/19 19:25
229 が、否定側も例を出してくれという話に読めたから書いたんだけど、
その反応がそれかい。
別に、読めないとは言ってないよ。

233 :デフォルトの名無しさん:02/12/19 19:27
(*p)[n] で書けば済む話なのにわざわざ *(*p + n) とする理由が 231 なのかと

234 :184:02/12/19 19:29
>>230で使っているのは漏れが出した例だ
わかりきった処理というが**を使っている場面では
*と**を使い分けるから下手な隠し方はない方がマシだと思う

235 :184:02/12/19 19:31
>>233
逆だよ**に抵抗があるような足手まといに迎合して
わざわざ(*p)[n]と書きたくないと言っている

236 :デフォルトの名無しさん:02/12/19 19:35
俺的には *(*p + n) つー表記の方が“態々”な感じだなぁ。
まぁ好きにしろや。

237 :デフォルトの名無しさん:02/12/19 19:36
>>235
230 の最後の行もあんたが出した例か?

というか、184 が何故 [] や -> を 「わかりにくい」 としているの理由が分から
ないけど。
特に [] は、ポインタに対して配列的なアクセスをするという事を明示する。
*(p + n) も慣用句として覚えればそれほど見にくいわけではないけど、慣用句より
言語レベルの演算子である p[n] の方がずっと見やすいはずだという考えは間違いか?

238 :デフォルトの名無しさん:02/12/19 19:37
> *と**を使い分けるから下手な隠し方はない方がマシだと思う

そんな事が必要な設計は間違っていると思う。

239 :184:02/12/19 19:38
>>236
結局,主観って所でしか反論できなかったな

「C使いは**くらい使えろ」
これも主観で逃げとけや

240 :236:02/12/19 19:41
>>239
反論してるように読めたか?
まぁ好きにしろや。

241 :デフォルトの名無しさん:02/12/19 19:42
おまえらC#でもやっとけ

242 :184:02/12/19 19:44
>>237よ,それは>>214で既出だ
だからabsが浮いたまでのこと

>>238よ,それは>231で既出だ(藁


243 :184:02/12/19 19:46
>>236
すまん>>230と間違えたらしい,悪かった

244 :デフォルトの名無しさん:02/12/19 19:47
>>242
> >>237よ,それは>>214で既出だ
[] や -> を使うとき、1重間接の * が隠れている事を意識する必要は無い。

> >>238よ,それは>231で既出だ(藁
238 が言いたい事が分かってないだろ。
と**を使い分ける、なんて事はすべきではない。

245 :244:02/12/19 19:50
訂正。

> と**を使い分ける、なんて事はすべきではない。
*と**を使い分ける、なんて事はすべきではない。

246 :デフォルトの名無しさん:02/12/19 19:54
もちつけ
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(

247 :デフォルトの名無しさん:02/12/19 19:55
  ___   ガスッ
 |___ミ      ギビシッ
   .||  ヾ ミ 、      グシャッ
   ∩_∧/ヾヽ
   | ,| ゚∀゚). .|  |;,      ゲシッ
  / ⌒二⊃=|  |∵.
 .O   ノ %`ー‐'⊂⌒ヽ  ゴショッ
   ) ) ) )~ ̄ ̄()__   )
  ヽ,lヽ) (;;;;;;;;;;;;;;;;;)(_(

248 :184:02/12/19 19:56
>>244
だからよ,配列とポインタは違うんだちゅーのに
なんでそんなに同じと思いたがるかよ
char(*p)[Q];とchar **p;が同じだと思いこむアフォを量産し
char s[1];にextern char *s;で参照に逝くアフォを量産する
ある意味必要悪を何でそんなに必死に擁護せにゃならんのだ
初心者時代から*をなるべく[]と書こうとしていたツケが
*は読みにくいって後遺症になって回ってきてるだけだろ

249 :デフォルトの名無しさん:02/12/19 19:59
>>248
そんな事言われても、配列に対して *(p + n) というアクセスもできるんですが・・・。

250 :184:02/12/19 19:59
疲れた
そろそろ落ちたいので
反論したい者は手短に頼む

251 :デフォルトの名無しさん:02/12/19 20:00
>>184 の可読性の基準は自分が読みやすいかどうかなんですか?

252 :デフォルトの名無しさん:02/12/19 20:01
> char(*p)[Q];とchar **p;が同じだと思いこむアフォを量産し
> char s[1];にextern char *s;で参照に逝くアフォを量産する

関係無い話を持ってくるなよ。
メモリ領域がどう確保されているかと、*(p + n) と p[n] のどちらが見やすいかは
全く別の話。

253 :デフォルトの名無しさん:02/12/19 20:07
[] は配列演算子ではなく添字演算子であり、立派なポインタ演算なんだが、
どうしてこれを使うだけで配列とポインタの混同という話になるんだ?

254 :184:02/12/19 20:08
>>252
いいや,関係ある
初心者時代から*をなるべく[]と書こうとしていたツケが
*は読みにくいって後遺症になって回ってきてるだけだろ

ループのようだな

255 :デフォルトの名無しさん:02/12/19 20:10
で、なぜ * を [] と書いてはダメなの?

256 :184:02/12/19 20:13
>>255
goto 248;

257 :デフォルトの名無しさん:02/12/19 20:13
単に、タイプ数が少ない方が嬉しい。

258 :デフォルトの名無しさん:02/12/19 20:14
まあ、184 の世界では [] 禁止と言う事で終了しとこう。

259 :デフォルトの名無しさん:02/12/19 20:15
「ポインタと配列は違う」という議論があるのは当然だけど、
184 は頭が硬すぎというか、一緒に仕事をしたくないと思う。

260 :184:02/12/19 20:15
>>258
あんたには言いたいことが伝わらなかったようだが
漏れももう繰り返すのはやめる

261 :デフォルトの名無しさん:02/12/19 20:17
頭が硬いというかアフォだね

262 :236:02/12/19 20:18
うーん、俺今まで文字列へのポインタを char * と書いてた…
これ全部 char (*)[] に変更するのはホネだなぁ。

263 :デフォルトの名無しさん:02/12/19 20:20
>>260
あんたがどうフォローしようが、248 を撤回しない限り 258 の結論は変わらないよ。
248 を、「[] を使ってはいけない」 以外にどう受け取れというんだ?

264 :デフォルトの名無しさん:02/12/19 20:22
>>262
待て待て待て待て。
char ** ならともかく、あるいは文字列の先頭へのポインタならともかく、
文字列へのポインタが char * とはどういう事だ?

265 :デフォルトの名無しさん:02/12/19 20:25
ああ、分かったぞ
>>184 は * と [] を使い分けることで
漏れは配列とポインタの違いがちゃんと分かってるぜ!がっはっは!
ということを誇示したい訳か

  真 性 D Q N で す な (ワラ

266 :デフォルトの名無しさん:02/12/19 20:29
そこまでは言わないが、とりあえず 259 に一票入れとく。

267 :デフォルトの名無しさん:02/12/19 20:41
intの変数をcharって言うか文字列に変換したいんですけど
どうすれば良いですか?

int a=123;
として、これを”123”という文字列に変換したいのですが。

268 :名無し@沢村:02/12/19 20:44
>>267
↑ま、まさかプログラマーだったりして…


269 : ◆F52DmOxJlc :02/12/19 20:48
>>267
itoa();




と、マジレスする前にボケてみる。

270 :名無し@沢村:02/12/19 20:55
>>265
ヌヒよ、おれは**となる理解できんが、*と[]くらいはわかるぞ。
つまりだな、
int Count[64];も、
int *Count;
もまったく同じく、Count=(int*)malloc(size);というふうに扱えるということだ。
だから配列とポインタは同じといわれていると思うのよ。
どうかな?俺は中級者といえるかい?

271 :デフォルトの名無しさん:02/12/19 20:59
>>270
全然言えない。

272 :名無し@沢村 :02/12/19 20:59

釣れた(藁

273 :デフォルトの名無しさん :02/12/19 21:02

ぎゃー、釣られたー。

272 :デフォルトの名無しさん:02/12/19 21:00
うむ

273 :能無し@沢村:02/12/19 21:04
攣れた(藁

274 :名無し@沢村:02/12/19 21:05
>>271
ヌヒよ、ふふふ俺はもっと高度な2次元配列も扱えるぞ。
int Count[10][64];の場合は、
Count[10]=(int*)malloc(size);というふうにできるということだ。
これはかなり高度だぞ。

275 :名無し@沢村:02/12/19 21:07
↑これは、
int *Count[10];
Count[10]=(int*)malloc(size);というふうにもできるということだ。

276 :デフォルトの名無しさん:02/12/19 21:08
先生!沢村に反応してもいいんですか?
無視するんですか?でも、反応してほしがってますよ。
いいんですね?後悔しても知りませんよ?
公開なんていってませんよ、だれがチャックを開けるって。
もう先生たらエッティ♥ セクハラで訴えちゃうぞ〜♪
でも先生ならいいかも(あはぁん
もう反応していいかなんて未定義です、NULLです
ヌルポ。

277 :デフォルトの名無しさん:02/12/19 21:08
ゆっとくけど、レスするヤツが悪いよ。

278 :デフォルトの名無しさん:02/12/19 21:10
レスしてー(;´Д`)ハァハァ[
でも、荒れるー。つー(以下略)

279 :デフォルトの名無しさん:02/12/19 21:18
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>276



280 :デフォルトの名無しさん:02/12/19 21:21
つまらんネタレスばかりしやがってウザイんだよ!!ええっ!?
      ∧_∧          _ _     .'  , .. .∧_∧
     ( ´_ゝ`)   _ .- ― .= ̄  ̄`:, .∴ '     (    ) ←>名無し@沢村
    /     '' ̄      __ ヽ´=', ・,‘ r⌒> _/ /
   / /\   / ̄\-―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒\
 _| ̄ ̄ \ /  ヽ \_               |  /  ノ |
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)              , ー'  /´ヾ_ノ
  ||\            \          / ,  ノ
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄          / / /
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||          / / ,'
  ||  ||           ||       /  /|  |
                       !、_/ /   〉
                           |_/

281 :デフォルトの名無しさん:02/12/19 21:55
つーか 276、コピペったって貼るたびに殴られるのはやーよ。
せめて最後の一行はカットして。

282 :デフォルトの名無しさん:02/12/19 22:15
ぶぁっはははははーーーっ!!
このスレにはまだ沢村の相手をする奴がいたのか!?
ぶぁっはははははーーーっ!!
ぶぁっはははははーーーっ!!

283 :デフォルトの名無しさん:02/12/19 22:16
>>282==沢村

284 :デフォルトの名無しさん:02/12/19 22:17
お前ら!!
もょもとって知ってるか?

285 :デフォルトの名無しさん:02/12/19 22:18
何を嬉しそうに。

286 :デフォルトの名無しさん:02/12/19 23:37
>>198
(unsigned char)((unsigned char)0-(unsigned char)1)
にしても、コンパイラは定数部分をint型にして演算する事が多いので
(規格でもint型だったような気もするけど、間違ってるかも…)
(unsigned char)(-1)
と同じ結果になる

287 :デフォルトの名無しさん:02/12/20 00:30
C言語でテトリス作りたいんだけどlocateとかgraphic関数とか使えないから
面倒臭いんだよ。なんとかしてくれ

288 :デフォルトの名無しさん:02/12/20 00:34
面倒臭いなら諦めれば?

289 :286:02/12/20 00:45
頼むよ
簡単なサンプルでいいからうpしてくれよ


290 :デフォルトの名無しさん:02/12/20 00:54
ここはプログラム作ってスレではない。


ここはと言うより、そういうスレは無いんだよ厨房ちゃん

291 :286:02/12/20 01:02
いや、だから全部作れってわけじゃ無いんだよ
グラフィック関数使った奴はもう出来たんだけど
テキストオンリーのやつがどうしてもわからないんだ
スクロールとか辺り判定とか

292 :デフォルトの名無しさん:02/12/20 01:03
とんでもねぇ奴もいたもんだなw

293 :デフォルトの名無しさん:02/12/20 01:18
どう弁解しようと 287 + 289 は 「全部作れ」 以外の何物でもない

294 :デフォルトの名無しさん:02/12/20 01:20
出された課題が自分の手に負えないから何とかしろと言うならまだ分かる (でもスレ違い
だけど) が、自分で作りたいというのに人に作ってもらってどうするつもりなんだ?

295 :デフォルトの名無しさん:02/12/20 01:21
ちなみに、ぶっちゃけた話、C 標準ではテキストテトリスは作れない。
標準出力は 「ストリーム」 であり 「画面」 ではないからだ。

296 :デフォルトの名無しさん:02/12/20 01:24
プリンターにプリントアウトしながら
テキストテトリスをやるのが本物の漢だ

297 :291:02/12/20 01:31
>>293
いや、あんたがどう誤解しようと全部作れとは言ってないわけで
その作り方が知りたいだけですよ。その辺の小学生じゃないんだから
ソース教えてもらったからって丸パクリするわけじゃないし

298 :291:02/12/20 01:32
>>295
あ、そうなの?じゃいいや
悪いね

299 :デフォルトの名無しさん:02/12/20 01:32
>>297
誰かこいつ頃せ

300 :デフォルトの名無しさん:02/12/20 01:41
291より過剰に反応してるヤツの方がウザイ。教えるか無視するか
どっちかにしとけ。

301 :デフォルトの名無しさん:02/12/20 01:50
>>300
ここは教えて君マンセーなスレだったのか?

302 :デフォルトの名無しさん:02/12/20 01:56
虫四郎

303 :Sタソファソ:02/12/20 02:04
C言語じゃなくてJavaScriptならいいの知ってたのに・・・

304 :デフォルトの名無しさん:02/12/20 02:34
ちぃ言語きぼんぬ

305 :デフォルトの名無しさん:02/12/20 04:19
>>284
知ってる!!

306 :デフォルトの名無しさん:02/12/20 04:53
何を嬉しそうに。

307 :236:02/12/20 10:41
>>264
文字列 ≡ char[] なんだが…
少しだけ >>184 の気持ちが判った気がする。

308 :デフォルトの名無しさん:02/12/20 12:09
教えてください
X2乗+y2乗+z2乗→最小

6x+3y+4z=61
をc言語でやるとどうなりますか??

309 :デフォルトの名無しさん:02/12/20 12:14
>>308
…?
よく判らんけど、アルゴリズムを訊いてるの?

310 :デフォルトの名無しさん:02/12/20 12:15
>>269
結局誰もマジレスしなかったね。

311 :デフォルトの名無しさん:02/12/20 12:15
>>308
マルチだし、意味もわからない。

312 :デフォルトの名無しさん:02/12/20 12:22
すみません
>308はちょっと頭がおかしいのです。
あの計算をするプログラムを聞いているのだと思います

313 :デフォルトの名無しさん:02/12/20 12:31
もしかして、
308==312では?


314 :デフォルトの名無しさん:02/12/20 12:39
モチロンソウヨ

315 :デフォルトの名無しさん:02/12/20 12:51
>>313
まあ、どっちでもヨいんではないかと。
>>312もいみわかんないし。・・・ドノケイサンナンダロウ・・・

316 :デフォルトの名無しさん:02/12/20 13:13
オリジナルのMassageBoxの出し方を教えてください。

317 :デフォルトの名無しさん:02/12/20 13:27
void MessageBox(const char* message)
{
 int c;
 printf("オリジナルのMessageBox: %s\nHit Enter", message);
 while ((c = getc()) != EOF && c != '\n');
}


318 :デフォルトの名無しさん:02/12/20 14:49
ソウアルカ・・・
ジツハ、ワタシモドレヲ
ケイサンシテイイカ
ワカラナイノヨ

319 :デフォルトの名無しさん:02/12/20 16:30
すみません、
#include <conio>の、conioってなんですか?

320 :デフォルトの名無しさん:02/12/20 16:31
conio.hじゃなくて?

コンソール I/O のことだと思う。

321 :319:02/12/20 16:39
.hを付けると、エラーがでるのですが、
同じものなのでしょうか?

322 :319:02/12/20 16:43
↑ getch() 使っていました。すみません。わかりました。

323 :デフォルトの名無しさん:02/12/20 16:54
アルゴマンコ参上!

324 :60cm浮き上がるストレート:02/12/20 17:02
>>308
こんな感じですか?

>X2乗+y2乗+z2乗→最小
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1040370788&res=2

>6x+3y+4z=61
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1040370788&res=3

325 :デフォルトの名無しさん:02/12/20 17:12
2ちゃんねる VS TIME・・・
その戦いの歴史は、まさに近代兵器の見本市だった
田代砲にはじまる数々のスクリプト兵器を経て、到達した97式アラファトマシンガン
これはまさに最終兵器として、猛威を振るった
だがしかし、ついにTIMEはこれらの兵器全てを完膚無きまでに無効とする
パプリカの設置に成功した
武器を奪われた我々に残されたもの ・・・それはチョップ
手動で一撃一撃叩き込むチョップ。地味で威力も極限まで小さなチョップ
ただそれだけと、なってしまった
だがしかし、チョップといえども決してバカには出来ないということを!
そしてこのような手段にまで出たTIMEを今一度
我が2ちゃんねらーの総意を込めたチョップを以て、叩き壊したい!
有志たちの参戦を、ひとりでも多くの戦士の挑戦を待つ!!!

「TIME」誌2002年の顔にアラファト議長を! 5
http://live.2ch.net/test/read.cgi/festival/1040349157/

326 :デフォルトの名無しさん:02/12/20 17:13
K&Rサンプルソースを打ち込んでみたのですが、エラーの原因がわかりません。

#include<stdio.h>
#include<string.h>

#define MAXLINES 5000

char *lineptr[MAXLINES];

int readlines(char *lineptr[],int nlines);
void writelines(char *lineptr[],int nlines);
void qsort(void *lineptr[],int left,int right,int (*comp)(void *,void *));
int numcmp(char *,char *);

main(int argc,char *argv[]){
int nlines; /* 読み込まれた行の数 */
int numeric = 0; /* 数値ソートならが1 */



327 :326:02/12/20 17:13
続きです

if(argc > 1 && strcmp(argv[1],"-n") == 0)
numeric = 1;
if((nlines = readlines(lineptr,MAXLINES)) >= 0){
qsort((void **) lineptr , 0 , nlines-1 , (int (*)(void *,void *))(numeric ? numcmp:strcmp) );<<ここでエラーらしい
writelines(lineptr,nlines);
return 0;
}else{
printf("input too big to sort\n");
return 1;
}
}

エラーメッセージは↓
20: 2 つのオペランドは同じ型に評価されなければならない(関数 main )



328 :デフォルトの名無しさん:02/12/20 17:14
エラーメッセージを貼ってよ。

329 :デフォルトの名無しさん:02/12/20 17:14
>>326
エラーメッセージがわからなければ原因がわかりません。

330 :328:02/12/20 17:15
おっと。



331 :デフォルトの名無しさん:02/12/20 17:16
ワラタ

332 :デフォルトの名無しさん:02/12/20 17:16
続きがあるならあると言えw




333 :デフォルトの名無しさん:02/12/20 17:16
>>327
そのものズバリだと思うが。

334 :デフォルトの名無しさん:02/12/20 17:17
自分で解ってんじゃ

335 :328:02/12/20 17:17
三項演算子の二番目と三番目の型が違うってことか?

336 :デフォルトの名無しさん:02/12/20 17:19
>>324
それは恐らく違う、思うに問は
6x+3y+4z-61=0の条件の下でのx^2+y^2+z^2の最小値

337 :デフォルトの名無しさん:02/12/20 17:20
セミコロンが全角とか…

338 :デフォルトの名無しさん:02/12/20 17:25
ブラックジャックのプログラムを組んだらエラーは出ないけど点数の集計がおかしい
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CMAX 52
struct input {
int num[CMAX];
int n;
} ;
int comp(void);
int getcard(struct input *inp);
void print(struct input *inp);
int calc(struct input *inp);
#define randmize() srand(time(NULL))
char *card[]={"0", "A", "2", "3", "4", "5", "6",
"7", "8", "9","10", "J", "Q", "K"};
int ncard[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10};
main()
{
int x, c, h;
char in[256];
struct input inp = {{0},0};
randmize();
printf("ブラックジャック\n");
c=comp();
x = getcard(&inp);
printf("'%s'を引きました。もう1枚引きますか?(y/n)\n", card[x]);

続くよ

339 :デフォルトの名無しさん:02/12/20 17:26
while (inp.n < CMAX && scanf("%s", in) == 1) {
if (strcmp(in, "y") == 0) {
x = getcard(&inp);
printf("'%s'を引きました。もう1枚引きますか?(y/n)\n", card[x]);
print(&inp);
}
else if (strcmp(in, "n") == 0)
break;
else
printf("yかnのどちらかを入力してください\n");
}
h = calc(&inp);
printf("コンピュータは%d点です。あなたは%d点です。\n", c, h);
if ((c<=21 && h>21)|| (c<=21 && c>h) )
printf("コンピュータの勝ち!\n");
else if ((h<=21 && c>21) || (h<=21 && h>c))
printf("あなたの勝ち!\n");
else
printf("引き分け\n");

return 0;
}

int comp(void)
{
return rand()%8+16;
}

まだ

340 :デフォルトの名無しさん:02/12/20 17:26
int numcmp(char *,char *);
これを
int numcmp(const char *, const char *);
にすればいいんんかな?


341 :デフォルトの名無しさん:02/12/20 17:27
int getcard(struct input *inp)
{
int x;
x = rand() % 13 + 1;
inp->num[inp->n] = x;
(inp->n)++;
return x;
}
void print(struct input *inp)
{
int i;
printf("いままでに引いたカードは ");
for (i=0; i<inp->n; i++)
printf(" %s", card[inp->num[i]]);
printf(" です\n");
}
int calc(struct input *inp)
{
int i, n1=0, sum=0;
for (i=0; i<inp->n; i++) {
sum = sum + ncard[inp-<num[i]];
if (inp->num[i] == 1)
n1++;
}
while (n1-- > 0)
if (sum <= (21-10))
sum = sum + 10;
return sum;
} 終わり。なんで?

342 :デフォルトの名無しさん:02/12/20 17:28
普通に動かないか?
無駄は多いが

343 :デフォルトの名無しさん:02/12/20 17:28
何がどうおかしいのか書けよ

344 :デフォルトの名無しさん:02/12/20 17:29
>>341
なんでって言われても。計算方法が違うんだろ。

345 :デフォルトの名無しさん:02/12/20 17:30
sum = sum + ncard[inp-<num[i]];

[inp-<num[i]];
   ~~~~
これで集計が出たら神です

346 :デフォルトの名無しさん:02/12/20 17:31
>sum = sum + ncard[inp-<num[i]];
ここを
sum=sum+ncard[inp->num[i]];
に書き直す



347 :341:02/12/20 17:32
うぉ、早いな
やってみよう

348 :デフォルトの名無しさん:02/12/20 17:33
スイマセン!!
C++Builderでホームページを作るにはどうしたらいいですか!?

349 :デフォルトの名無しさん:02/12/20 17:34
あっ間違えました!
ボーランドっていうやつです!

350 :デフォルトの名無しさん:02/12/20 17:35
>>348
#include <stdio.h>
int main()
{
printf("Content-Type:text/html\n\n")
/* ここからprintfの嵐 */

return 0;
}


351 :デフォルトの名無しさん:02/12/20 17:35
>>348
int main()
{
    printf("<html>\n");
    printf("<body>\n");
    printf("</body>\n");
    printf("</html>\n");


352 :デフォルトの名無しさん:02/12/20 17:36
ネタにマジレスが美しい。

353 :デフォルトの名無しさん:02/12/20 17:37
使い古されたネタだな

354 :デフォルトの名無しさん:02/12/20 17:37
「!」が多いと厨って感じ。

355 :デフォルトの名無しさん:02/12/20 17:37
>>353
質問が?回答が?

356 :デフォルトの名無しさん:02/12/20 17:38
>>355
質問

357 :デフォルトの名無しさん:02/12/20 17:39
回答もだろ…w

358 :デフォルトの名無しさん:02/12/20 17:40
暴乱怒はしらないけど、VC++ならHTMLエディタとしての機能があったような。

359 :デフォルトの名無しさん:02/12/20 17:44
>>348いい加減ぼーらんど使うのやめればいいのに

360 :デフォルトの名無しさん:02/12/20 17:53
>>350printf()関数セミコロンつけ忘れと思われ

361 :350:02/12/20 18:03
(;_;)(;_;)(;_;)(;_;)(;_;)

362 :デフォルトの名無しさん:02/12/20 18:12
もう>>350さんったらおっちょこちょいね♪

363 :デフォルトの名無しさん:02/12/20 18:26
>>358
キーワードハイライトだけはやってくれるね。

ちなみにテンプレート
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Developer Studio">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=x-sjis">
<TITLE>ドキュメント タイトル</TITLE>
</HEAD>
<BODY>

<!-- ここに HTML を挿入してください -->

</BODY>
</HTML>

364 :デフォルトの名無しさん:02/12/20 18:38
>>316
もしかしたら存在するかもしれない、と思ってググったら本当にあったよ!
http://members.jcom.home.ne.jp/warna-warni/AB-10.html

365 :デフォルトの名無しさん:02/12/20 18:42
http://www.vector.co.jp/soft/data/writing/se001951.html

vectorってこんなものまで登録されるのね

366 : ◆F52DmOxJlc :02/12/20 20:33
>>364
ワロタ

367 :名無し@沢村:02/12/20 20:37
>>348
C++Builder付属のテキストエディタでホームページのソースを書いて.html拡張子をつけて保存すればいいよ。
C++Builder付属のテキストエディタでなくてもテキストエディタなら何でもいいよ。メモ帳でもいいんだよ!ホントだよ!!

368 :デフォルトの名無しさん:02/12/20 20:52
愚問ですがポインタに関することで
int a;
printf("%p",&a);
とするのと
int *a;
printf("%p",&a);
とするのでは違いはあるのでしょうか?できたら*や&の概念について
教えて欲しいです
厨房でスマソ

369 :デフォルトの名無しさん:02/12/20 20:58
違いはないよ。どちらもaのポインタを見ている。

ただ、
int a;

int *a;
は全く型が違う!とだけ言っておこう。

370 :デフォルトの名無しさん:02/12/20 21:10
ポインタは、初心者本にあるようなintに*や&をつけて試してるだけでは
おそらく理解できないよ。余計混乱するだけ。

構造体を動的に確保したり、リストを作ったりしてれば自然と分かる。

371 :368:02/12/20 21:15
う〜ん やっぱりポインタは難しい
プログラム本格的に勉強するんだったら学校通った方が
いいんでしょうかね〜?

372 :デフォルトの名無しさん:02/12/20 21:18
ランダムな数列
1,3,6,7,9....
を配列aに保存したいとして、
1. 配列を0で初期化して1,3,6,7,9番目の要素を1にセットする
2. 0番目の要素に1、1番目の要素に3、3番目の要素に6…と入れる

1.だとある数字が保存されているかどうかa[i]が1かどうかを調べれば分かるが、
 保存された数字をとりだしたいときは配列の先頭から調べなければならない
2.だと配列の先頭から保存された数字を簡単に取り出せるが、
 ある数字が保存されているかどうかは配列の先頭から調べなければならない

で、1.と2.の両方の配列を用意しようと思うのですが、もっと一般的な常套手段はありますか?



373 :デフォルトの名無しさん:02/12/20 21:19
>>371
独学で十分だと思うが・・・
ちなみに、
*の付いた変数は、変数のアドレスを格納する変数。
&の付いた変数は、&の付いている変数自身のアドレス。


374 :デフォルトの名無しさん:02/12/20 21:19
>>371
それはない。

375 :デフォルトの名無しさん:02/12/20 21:23
ポインタを宣言するときの
int *a;
とポインタの参照先を表す
*a = ....
は混乱するな。


376 :デフォルトの名無しさん:02/12/20 21:24
するか!

377 :368:02/12/20 21:25
ん〜 やっぱりよくわからん
C言語勉強するんだったらどういう勉強方法が一番いいですか?

378 :デフォルトの名無しさん:02/12/20 21:25
>>375
慣れてないとナ。

379 :デフォルトの名無しさん:02/12/20 21:28
とにかく、くむ、くむ、くむ
ひたすら、くむ、くむ、くむ
はくまで、くむ、くむ、くむ

380 :デフォルトの名無しさん:02/12/20 21:28
ポインタで挫折する奴が多いかも・・・

381 :デフォルトの名無しさん:02/12/20 21:30
ポインタ完全制覇とかは?
読んでないけど。

で、例題を応用してなんか作ってみる。



382 :デフォルトの名無しさん:02/12/20 21:30
>>377
試行錯誤

ポインタが最初の壁だよね。

383 :368:02/12/20 21:31
なるほどw
んで
int a;
int *b;
を使ってaのアドレスをbに格納するには
どうしたらいいですか?

384 :デフォルトの名無しさん:02/12/20 21:33
>>377
俺は、柴田望洋著の「秘伝C言語問答 ポインタ編」を読んで、
ポインタを理解したが・・・

385 :デフォルトの名無しさん:02/12/20 21:34
>>372
1. を少しいじくって、要素に1をセットするのではなく、次の数字を入れる
ってぇのはどう?

386 :デフォルトの名無しさん:02/12/20 21:37
>>383
bは変数のアドレスを格納する変数だから、
int *b = &a
&が付いている変数(a)は、その変数(a)のアドレスを意味する。

387 :デフォルトの名無しさん:02/12/20 21:38
アセンブラからCに入ったから
ポインタでは挫折しなかった。

今考えたら幸せな人生だったな。

388 :デフォルトの名無しさん:02/12/20 21:39
>>387
そういえば、ポインタで挫折する奴が多いんだよな。

389 :368:02/12/20 21:40
ってことはbを宣言してからbにaを代入する式を書く場合は
int a;
int *b;
b=&a;
ってなカンジですか?

390 :デフォルトの名無しさん:02/12/20 21:41
>>389
その通り!!

391 :デフォルトの名無しさん:02/12/20 21:42
つーか、モノつくってりゃ、ポインタがナンタルカはわからなくても、使い方
は理解できるようになる。理解はその後でいいと思うけど。

392 :368:02/12/20 21:44
このときに*b=&aにしちゃうとエラー出ますよね?
これってのはどういう事なんですか?

393 :デフォルトの名無しさん:02/12/20 21:44
>>391
理解してからモノ作り始めた方が、挫折する確立が
低くなるのでは?(そうとも限らないかな??)

394 :デフォルトの名無しさん:02/12/20 21:46
ポインタのどこが難しいのかが分からん。
凡人の考えが理解できない天才の悩み。

395 :デフォルトの名無しさん:02/12/20 21:46
ポインタ=変数をグローバル変数みたいに扱う機能
ってことでいいんですか?

396 :デフォルトの名無しさん:02/12/20 21:47
>>392
変数名の前に&をつけるとその変数のアドレスになる。
また、ポインタの前に*をつけるとそのポインタが指し示す変数(とは限らんが)の値になる。
で、君はなにをやろうとしたのかな?

397 :デフォルトの名無しさん:02/12/20 21:50
>>395
違うかも・・・

398 :デフォルトの名無しさん:02/12/20 21:52
>>395
ポインタ(pointer)は変数のアドレスを示す変数。


399 :368:02/12/20 21:53
>>396
int *b;
って宣言したらそのまま*b自体を変数として
使わなきゃいけないのかぁと思いまして

400 :デフォルトの名無しさん:02/12/20 21:55
俺はCの演習書の例題みたいなのやってたら自然に見についたなぁ。
いま思うとなんでこんなややこしいことすんなり頭に入ったんだろ?って
すごい不思議だ。

401 :デフォルトの名無しさん:02/12/20 21:58
>>399
int*型(intのポインタ型)の変数bを宣言したといえば分かる?

402 :デフォルトの名無しさん:02/12/20 21:59
ココは「ポインタを自然に理解した」ことを自慢するスレじゃないぞ...

403 :デフォルトの名無しさん:02/12/20 21:59
>>392
初期化以外に*を変数に付けると、間接参照の意味になる。
例えば、
int a = 10 aに10を格納
int *b = &a bにaのアドレスを入れる
int c = *b bに格納されているアドレス(a)に間接的にアクセスし
       aに格納されている値をcに代入
したがって、cに格納される値は、aに格納されている値、10。


404 :368:02/12/20 22:00
なるほど!
int型で*bを宣言するんじゃなくて
int*型でbを宣言するって事か!!

405 :デフォルトの名無しさん:02/12/20 22:01
>>404
その通り!!

406 :368:02/12/20 22:03
勉強になりました!!
なんとなくポインタの概念が分かったような気がします

407 :デフォルトの名無しさん:02/12/20 22:08
気のせい

408 :デフォルトの名無しさん:02/12/20 23:19
char* str;
char *str;
って何か違いあるのですか?

あと、ポインタってやっぱり必要なの?

409 :デフォルトの名無しさん:02/12/20 23:26
char* str;
だろうと
char *str;
だろうと
char * str;
だろうと
char
*
str
;
だろうと同じこと。
あと、それなりのプログラム書こうと思ったらポインタは必須。

410 :デフォルトの名無しさん:02/12/20 23:41
>>409
ありがとうございます。


411 :名無し@沢村:02/12/20 23:42
>>404
>int型で*bを宣言するんじゃなくて
>int*型でbを宣言するって事か!!

それはいえる。*bをbのように扱うとintから(int *)への変換ができませんというエラーが出るのがその証拠だよ。

412 :名無し@沢村:02/12/20 23:56
>>404
ただ、int(*b)とした場合はbはint型になるよ。

413 :デフォルトの名無しさん:02/12/21 00:05
>>371
お前さんみたいなのがいるからうちは儲かるんだよ。

414 :バカ:02/12/21 00:19
くだんないことですいません。
スタックと配列の違いってなんですかね〜?


415 :デフォルトの名無しさん:02/12/21 00:20
>intから(int *)への変換ができませんというエラーが出る
それはC++だろう

>int(*b)とした場合はbはint型になる
そんなわけがない

416 :デフォルトの名無しさん:02/12/21 00:25
>>414
小麦と麺のような違い

417 :デフォルトの名無しさん:02/12/21 00:25
>>414
何のことかよく分からんが
スタックはFirst In Last Outなデータ構造で
配列はランダムアクセスな奴じゃないか

それとも記憶クラスとかの話か
それだと比較対象が変な気がするが

418 :デフォルトの名無しさん:02/12/21 00:32
>>417
普通、Last In First Outと言わないか?LIFO

419 :デフォルトの名無しさん:02/12/21 00:33
>>418
俺もそのツッコミしようとしたが検索するとどっちも相当数引っかかるのでやめた。 

420 :バカ:02/12/21 00:38
どうもです。なんとなくわかりました

421 :デフォルトの名無しさん:02/12/21 00:38
>>418
そうか ? FIFO と対比するために、おれも FILO と言うよ。

422 :417:02/12/21 00:44
うーむおかしいな、ずっとFILOだと思っていたんだが
ちょっと見た手持ちの本もLIFOになってる。
俺は異世界に紛れ込んで来てしまったのか?

423 :デフォルトの名無しさん:02/12/21 00:47
普通はLIFOだろ。うちの英和辞典には簿記用語としてだがFIFO⇔LIFOと書いてある。

424 :デフォルトの名無しさん:02/12/21 00:51
LIFOだろ…

425 :デフォルトの名無しさん:02/12/21 00:55
数式文字列を解析するロジックを教えてください。

answer = expr("1 + ( 2 + 3 * 4 )");

trace(answer == 15);

こんなかんじで・・とりあえず変数とか関数は結構です。

426 :デフォルトの名無しさん:02/12/21 00:58
漏れ、最近まで、

スタックは頭から入って頭から出ていくんだから、FIFO。
キューは尻から入って頭から出ていくんだから、LIFO。

だと勘違いしてた。

427 :417:02/12/21 01:11
うーむだめだ。ずいぶん前にPC98関係の何かで見たと思うのだが見つからない。
ハードウェアの本はFIFOがメインだし、
と思ったら80x86/80x87ファミリーテクニカルハンドブックという本に
「このようなスタック操作はLIFOまたはFILOと呼ばれています。」という記述を発見

終了

428 :デフォルトの名無しさん:02/12/21 01:37
>>425
「四則演算 インタプリタ」で google すれ
セオリー通りに作るなら、
字句解析、再帰下降型構文解析、インタプリタ実行
の三段階。

429 :デフォルトの名無しさん:02/12/21 01:43
お手軽なのは、逆ポーランド記法。

430 :デフォルトの名無しさん:02/12/21 02:06
>>428
> 「四則演算 インタプリタ」で google すれ
>>429
> お手軽なのは、逆ポーランド記法。
おお そんなものがあるのですね
言葉すら知らなかった厨卒プログラマでした・・・

431 :デフォルトの名無しさん:02/12/21 02:11
>>427
そこまで分かっていながら何を悩んでいるのだ。キミは間違ってないぞ。
終了してしまう前にこのへんでも眺めて整理すれ。

スタック == LIFO (FILO)
http://www.atmarkit.co.jp/icd/root/56/5783656.html

キュー == FIFO (LILO)
http://www.atmarkit.co.jp/icd/root/43/67542643.html

432 :デフォルトの名無しさん:02/12/21 04:31
LInux LOader?

433 :JPL ◆M2sbYPnTcE :02/12/21 04:39
#if 0はコメントになりえるか。

434 :デフォルトの名無しさん:02/12/21 05:07
int RingNum(int base,int off,int min,int max)
{return((base+off-(max<min ? min^=max^=min^=max:min)<0 ?
(max-min+1)-(min-base-off)%(max-min+1):base+off-min)%
(max-min+1)+min);}
リングナンバーを無理矢理1行にしてみたっす(既出っぽくてすいません)
base:開始点off:移動距離ね
minmaxは大きさ比較してスワップ、offにmax-min+1以上入れても
だいじょぶっす・・・たぶん
バグありますかね?

435 :434:02/12/21 05:26
return((base+off-((...?...)...?...:base+off-min)...;
を注目するとbase+offの所ら辺がもっと突っ込めるかな?

436 :434:02/12/21 05:32
いやおかしいぞbaseもoffも消えたら定数じゃんか!?

437 :デフォルトの名無しさん:02/12/21 05:34
リングナンバーって何ぞや?

438 :434:02/12/21 05:38
return((base+off-(...)<0 ?
ああここで区切りだった
なんかもっと縮められないかな?



439 :434:02/12/21 05:45
>>437
正式名称知らないっすけどmin=2,max=5だったら
base+off=
0,1,2,3,4,5,6,7,8,9,10,11,12,13,...だと
4,5,2,3,4,5,2,3,4,5, 2, 3, 4, 5,...ってかんじ
循環数ってゆうのかな?プログラム的にはよく使うでしょ

440 :デフォルトの名無しさん:02/12/21 05:51
>>434
base+offの2つに分ける意味は?
int RingNum(int base_off,int min,int max); /* これでも同じでは? */

441 :434:02/12/21 05:52
>>439
書き忘れたけど負の方もつながってるねんで

どうでもいいけど
マウスがいかれてキーボードだけで打つのってかなりしんどいんですが...

442 :434:02/12/21 05:56
>>440
同じだけどbaseは現在位置offは移動距離とゆうのを
はっきりさせたいんすよ、まあ呼び出し元で
n=RingNum(base+off,min,max);とやってもいいんですが、

443 :434:02/12/21 06:21
n=RingNum(base+off,min,max);の方が良く思えてきた...
じゃあこうです
int RingNum(int num,int min,int max)
{return((num-(max<min ? min^=max^=min^=max:min)<0 ?
(max-min+1)-(min-num)%(max-min+1):num-min)%
(max-min+1)+min);}
ああこの方が見通しいいですね
(num-MIN<0 ? VAL-(MIN-num)%VAL:num-MIN)%VAL+MIN;
//MAX,MIN:比較スワップ済み
//VAL=(MAX-MIN+1)
複数行で書いたのとほぼ同じになりますた

444 :434:02/12/21 06:27
負の入った剰余ってちゃんと定義されてるのかな?
気持ち悪くて使わないのですが・・・
使っても問題無さそうでも気持ち悪いんすよ

445 :デフォルトの名無しさん:02/12/21 10:10
>>444
ごちゃごちゃ抜かさんとコード書いて検証すれば良かろう。

446 :デフォルトの名無しさん:02/12/21 10:18
あのAAを呼び寄せるスレですか?

447 :デフォルトの名無しさん:02/12/21 10:23
#include <stdio.h>
#define N 0
int RingNum(int num,int min,int max){
return((num-(max<min ? min^=max^=min^=max:min)<0 ?
(max-min+1)-(min-num)%(max-min+1):num-min)%
(max-min+1)+min);
}

main(){
for(int i=-5; i<5; i++)
printf("%d",RingNum(N+i,2,5));
return 0;
}


3452345234
でした。


448 :デフォルトの名無しさん:02/12/21 10:44
strstrの第二引数に空文字列を与えた場合に第一引数の値がそのまま返るというのは仕様で決められていますか?


449 :デフォルトの名無しさん:02/12/21 10:52
はい

450 :デフォルトの名無しさん:02/12/21 10:53
>>448
私へのレスですよね??
サンクスです。

451 :デフォルトの名無しさん:02/12/21 11:31
>>60cm浮き上がるストレートサンクス
とりあえず。やってみます。

452 :デフォルトの名無しさん:02/12/21 14:30
>>445
出来るに互換性のあると限るまいて

>>444
ISO9899に(a/b)*b+a%b==aとある

453 :デフォルトの名無しさん:02/12/21 15:30
>>336
そうです。
それで、やるとどうなりますか??
オネガイシマス


454 :デフォルトの名無しさん:02/12/21 16:09
C言語でwindowsで動くのGUIアプリを作りたいんですが
どのソフトを使えばいいんでしょうか?

455 :デフォルトの名無しさん:02/12/21 17:07
>>453
他のスレで答え出てるぞ

456 :デフォルトの名無しさん:02/12/21 17:17
数学板か・・・

457 :デフォルトの名無しさん:02/12/21 17:36
>>454
Cのコンパイラ

458 :デフォルトの名無しさん:02/12/21 17:58
>>454
実は無い。Windowsでは全ての言語はBASICにトランスレートしてからコンパイルされる。

459 :名無し@沢村:02/12/21 20:28
>>441
>マウスがいかれてキーボードだけで打つのってかなりしんどいんですが...

マウスくらい買え!!

460 :デフォルトの名無しさん:02/12/21 20:40
それはあなたがGUIに魂を惹かれたからです

偉い人にはエディタにマウスなんて入らないことがわからんのですよ

正直俺はキーボードだけでほとんどの作業をやります

461 :デフォルトの名無しさん:02/12/21 20:46
最近、キーボードで文字を打つのがおっくうになってきた。
過去の遺産をコピペして自作リファクターかけてお終い
ってパターンで仕事が済むようになってきたからかな。

462 :デフォルトの名無しさん:02/12/21 21:14
最近、
マウスまで手をのばすのが面倒になってきた・・・

お  い  ら  だ  け  で  す  か  ?

463 :デフォルトの名無しさん:02/12/21 21:41
名無し@沢村 の発言

> 基本的に本は読まないポリシーだが、
> ちなみにそれはどこの出版社から出ているのですか?著者は誰ですか?いくらですか?


プログラマに向いてない今すぐやめろ。

464 :デフォルトの名無しさん:02/12/21 22:32
>>463
いや、「人間に向いてない今すぐやめろ」にすべきだ。

465 :デフォルトの名無しさん:02/12/21 22:58
>>462
漏れは前からそうです。
マウス使うぐらいなら、ノートのタッチパッド使います。
普段は、IBMのスペースセーバーキーボード。


466 : ◆F52DmOxJlc :02/12/21 23:21
>>462
>>465
同意。

467 :デフォルトの名無しさん:02/12/22 00:55
最近はキーボードだけで操作ができないアプリは
(たとえそれがGUIでも)駄目なんじゃないかと思い始めました

468 :デフォルトの名無しさん:02/12/22 01:21
じゃあWindowsなんかはエクスプローラからして
すでに駄目なソフトなわけだ。

469 :デフォルトの名無しさん:02/12/22 01:25
>>468
具体的に、どの操作がキーボードでできないんだ ?

470 :デフォルトの名無しさん:02/12/22 01:49
>>468
Win + e でエクスプローラを起動して
Tab , Shift + Tabで移動して
Shift + F10で右クリックできますが、何か?

471 :デフォルトの名無しさん:02/12/22 01:52
>>470
俺はShift+F10じゃなくて変なボタン(jp106:Windowsボタンの横にある奴)使ってるよ。
ってかShift+F10なんて知らなかった。ありがd

472 :デフォルトの名無しさん:02/12/22 02:29
Windowsはそのほとんどの基本操作がキーボードで出来るように設定されているよね。
一方、Xなどはwmによってはマウス無しでは何もできない・・・

473 : ◆F52DmOxJlc :02/12/22 02:34
>>471
>変なボタン(jp106:Windowsボタンの横にある奴)
アプリケーションキー

474 :デフォルトの名無しさん:02/12/22 02:47
>>473
ありがd!このキーを説明する機会があったら恥をかかずに済みそうです。


475 :デフォルトの名無しさん:02/12/22 03:07
>>470
マウスでCtrl押しながらクリックして
複数のファイルをちょんちょんと
飛び飛びに選択 ってのが
キーボードだとできない。
あとファイルの(見た目の)移動も。

476 :デフォルトの名無しさん:02/12/22 03:08
>>475
できる。

477 :デフォルトの名無しさん:02/12/22 03:11
>>475
移動する時にCtrl押しながら移動してごらん。

478 :デフォルトの名無しさん:02/12/22 03:13
>>477
できないよ

479 :デフォルトの名無しさん:02/12/22 03:20
>>478
んー。
1.Ctrl押しながら移動
2.Ctrl離してスペース
3.Ctrl押しながら移動

だよ。

480 :デフォルトの名無しさん:02/12/22 03:35
winのキーボード操作がCと何の関係があるのか小…(略)
と言う訳で、これ以上は他の板でやって下さい

481 :デフォルトの名無しさん:02/12/22 03:51
アハハw

482 :デフォルトの名無しさん:02/12/22 04:04
ユーザー補助のマウス--テンキーを使うのはだめですか?

483 :デフォルトの名無しさん:02/12/22 04:39
C言語でポリモーフィズムが出来ると聞いたのですが、
C++に移行せずにCに拘ってまで使う意味ってありますかね?

484 :デフォルトの名無しさん:02/12/22 04:45
C++以上のポリモを実装するなら意味はある

485 :デフォルトの名無しさん:02/12/22 06:26
>>434&&452
数学的に負の値が入った除算は
-5/2 = -3 余り1
が正しいらしいが(これを実装してる処理系がある)C99で
-5/2 = -2 余り-1
に統一されたようです

ちなみに
min^=max^=min^=max;
の結果は未定義なんじゃ…

486 :デフォルトの名無しさん:02/12/22 07:45
>>485
それは結合規則が厳密に決まってるから
結果は常に一意だと何度も何度も何度も
何度も何度も何度も何度も何度も何度も

487 :デフォルトの名無しさん:02/12/22 07:56
>>486
ではFAQの3.8は嘘だと
>直前の副作用完了点と次の副作用完了点までの間に、
>式の評価によってオブジェクトに格納された値を
>変更する回数は高々一度だけでなければならない。
>更に、変更前の値は、格納される値を決定するため
>だけにアクセスしなければならない。

488 :デフォルトの名無しさん:02/12/22 08:00
>>483
Cでポリモというと
関数ポインタ,stdioあたりか
Win32のハンドルもかなり多相的

C++よりCがいいのは
ずばりプログラムが小さいときだ
言う人によって違うと思うが
漏れ的には1000行以下のとき

489 :デフォルトの名無しさん:02/12/22 08:02
>>484>>488
ありがd
本格的に調べてみるっす

490 :デフォルトの名無しさん:02/12/22 08:07
>>487


491 :デフォルトの名無しさん:02/12/22 08:56
>>490
嘘って、これって規格の文章じゃないの?
Between the previous and next sequence point an object shall have
its stored value modified at most once by the evaluation of an expression.
Furthermore, the prior value shall be accessed only to determine the value to be stored.

492 :菊地桃子:02/12/22 10:43
ここって、厨房ばっかりでほんっと
つかえない

493 :デフォルトの名無しさん:02/12/22 11:01
>>492
意味のない書き込みをしているお前が一番使えない

494 :デフォルトの名無しさん:02/12/22 11:21
ネタとして使ってやろうぜ〜〜〜〜〜

495 :デフォルトの名無しさん:02/12/22 12:39
((きすつならすまそ.>>1にかかれている「ソース丸投げ」スレもわからんかった.すまそ))

バブルソートのコードについて質問です.
『独習C』には下記のようにかかれていました.
・・・・・・・・・・・・・・・・・・・

printf("数をいくつ入力しますか?");
scanf("%d", &count);
for(a=0; a<count; a++) scanf("%d", &item[a]);
for(a=1; a<count; ++a)
for(b=count-1; b>=a; --b) {
if(item[b-1] > item[b]) {
t = item[b-1];
item[b-1] = item[b];
item[b] = t;
}}
for(t=0; t<count; t++) printf("%d ", item[t]);
・・・・・・・・・・・・・・・・・・
しかし,私が考えたソートと表示の部分は,
for(a=0;a<count;a++){
for(b=0;b<count-1;b++){
if(item[b]>item[b+1]){
t=item[b+1];
item[b+1]=item[b];
item[b]=t;
}}}
for(a=0;a<count;a++)printf("%d",item[a]);
っとなりました.
独習の方は,forループの初期化の部分がややこしく感じるのですが,
一般的には私のほうがわかりにくいんでしょうか.
独習みたいにするメリットとかがあれば教えてください.

496 :デフォルトの名無しさん:02/12/22 12:59
>>495
分かりにくいというより間違ってる。

497 :デフォルトの名無しさん:02/12/22 13:35
え,どこがですか?

ちなみに,テキストファイルでうぷしますた.↑よりは見やすいです.
http://cgi.2chan.net/up/src/f8508.txt
http://cgi.2chan.net/up/src/f8509.txt

498 :デフォルトの名無しさん:02/12/22 14:13
>>497
あなたの書いたコードは無駄な処理をしているので、お手本のものより2倍近く遅いです。
どこが無駄かはアルゴリズムをちゃんと理解してれば分かるので
自分で考えてね。

499 :デフォルトの名無しさん:02/12/22 14:23
ああ,速さか.
そう言われるとそうですね.
お手本のほうが直線的な感じがします.
まだ,プログラミングをはじめたところなのでパフォーマンスの面までは
なかなか気を配ることが出来ませんでした.
いいコードを吸収してスマートなコーディングができるようになりたいものです.
ども.

500 :デフォルトの名無しさん:02/12/22 14:24
500

501 :デフォルトの名無しさん:02/12/22 14:26
static a;

static int a;
といっしょ?


502 :デフォルトの名無しさん:02/12/22 14:30
>>501
ああ、いっしょさ。

503 :デフォルトの名無しさん:02/12/22 14:32
>>502
さんくちゅ

504 :デフォルトの名無しさん:02/12/22 14:33
N個の玉から成るネックレスが用意されている。
玉の色は赤、青、白のうちのどれかであって、ランドムにアレンジされている。
そのネックレスをある点で切って横に並べ、その点から右、左と2方向に渡って
違う色に出会うまで同じ色の玉を集めるものとする。
このときもっとも多くで何個の玉を集めることができるかを判断する
プログラムをお願いします。

例:brbrrrbbbrrrrrbrrbbrbbbbrrrrb(ただし、r:赤, b:青, w:白)と
構成されているネックレスならば、9番目の玉と10番目の玉の間、
24番目の玉と25番目の玉の間から切るとすれば、最大の8個の玉を
集められますね。
->brbrrr{bbb|rrrrr}brrbbr{bbbb|rrrr}b
ただし、白の玉に出会った場合、それは赤にも青にも
変われるものとします。

505 :デフォルトの名無しさん:02/12/22 14:38
>>504
ランドム...。

506 :デフォルトの名無しさん:02/12/22 14:38
まず、ランドムから検討していこう
俺を踏み台にしますか?

507 :デフォルトの名無しさん:02/12/22 14:39
赤 マッシュ
青 オルテガ
白 ガイア

508 :504:02/12/22 14:41
おっと大事な情報を書くのを忘れました。
3<=N<=350
Nはネックレスの玉の数。

509 :デフォルトの名無しさん:02/12/22 14:41
>>506
エラー:1体足りません

510 :504:02/12/22 14:43
>>505 randomをそのままローマ字読みしてしまった。
>>506 OK

511 :504:02/12/22 14:47
入力ファイル:
1:玉の数。例:29
2:ネックレスを切って横に並べたもの。例:brbrrrbbbrrrrrbrrbbrbbbbrrrrb

出力ファイル:
1:最大でいくつ集められるか。例:8

512 :504:02/12/22 14:52
問題文に間違いを発見したので訂正します。

そのネックレスをある点で切って横に並べ、その点から右、左と2方向に渡って
違う色に出会うまで同じ色の玉を集めるものとする。
↓↓↓↓
そのネックレスをある点で切って横に並べ、任意の点から右、左と2方向に渡って
違う色に出会うまで同じ色の玉を集めるものとする。

513 :デフォルトの名無しさん:02/12/22 14:54
>>504
仕様が把握できない

白は特別なの?
何カ所で区切るの?

514 :デフォルトの名無しさん:02/12/22 15:00
>>512
切る点と集め始める点は無関係なのか?
なんのために切るんだ?


515 :デフォルトの名無しさん:02/12/22 15:04
宿題スレに逝けや

516 :504:02/12/22 15:05
>>513
入力ファイルから情報を読み取って、出力ファイルに答えを書くプログラムですが、
例えば入力ファイルが次の場合、

29
wwwbb}rwrbrbrrbrbrwrwwrb{wrwrr|b

|から左に赤玉が5個(wrwrr)、右に青玉が6(bwwwbb)個ありますね。
wはrにもbにも変われるものだから、左の場合rとして数えられて右の場合bとして
数えられていますよね。このとき集められる玉の最大値は5 + 6 = 11個。
よって、出力ファイルには、

11

となればいい。

>何カ所で区切るの?
1ヶ所から区切る。ただ、>>504の例では2ヶ所のどちらから区切っても、
答えは8で同じだっただけです。

517 :504:02/12/22 15:10
>>514
切る点はどこでもいいです。問題文が悪くてすみませんでした。
最大で何個集められるかの問題ですので、

wwwbb}rwrbrbrrbrbrwrwwrb{wrwrr|b

でも、

rwrbrbrrbrbrwrwwrb{wrwrr|bwwwbb}

のどちらの場合でも答えは11。

518 :デフォルトの名無しさん:02/12/22 15:16
>>517
要するにリング状になったまま左右に数えるんだな。
それなら最初の文のほうがまだ分かりやすい。

「任意の点で切って、両端から連続する色を数える。ただし白を含んでも構わ
ない。」ってとこか?

bwwwbb}rwrbrbrrbrbrwrwwrb{wrwrr




519 :504:02/12/22 15:31
>>518
>要するにリング状になったまま左右に数えるんだな。
その言い方の方が分かりやすいですね。
ただ、stringとして与えられているのでどっかで切られているだと。

>両端から連続する色を数える。
どんな形でネックレスのstringが与えられているか分からないので、
両端から数えると必ずしも答えにはならない。

520 :デフォルトの名無しさん:02/12/22 15:33
>>519
> どんな形でネックレスのstringが与えられているか分からないので、
> 両端から数えると必ずしも答えにはならない。
だからそれを切り直すんだろ。

521 :デフォルトの名無しさん:02/12/22 15:34
>>520
いやまて、8の字型のネックレスとかいうんじゃあるまいな?

522 :504:02/12/22 15:37
>>520
そういう突込みをされるのではないかと思っていました。(笑
8の字型になることはないのでご心配なく。

523 :デフォルトの名無しさん:02/12/22 15:38
>>522
じゃあはじめから厳密に定義しろよボケ。

524 :デフォルトの名無しさん:02/12/22 15:41
というかはじめから宿題スレに逝けよボケ。

525 :デフォルトの名無しさん:02/12/22 15:41
ボケボケ言うなよボケ。

526 :デフォルトの名無しさん:02/12/22 15:59
ボケボケボケ
ボケボケボケボケ
ボケボケボケ


527 :デフォルトの名無しさん:02/12/22 16:13
子供の喧嘩だな・・・

528 :デフォルトの名無しさん:02/12/22 16:30
>>504
ほらよ、とりあえず版だ。

#include <windows.h>
#include <stdio.h>
#include <conio.h>

typedef struct {
 char Beads[351];
 int NumberOfBeads;
} Necklace;

static int NextPoint(const int NumberOfBeads, int Point, const int Step)
{
 Point += Step;
 if(Point < 0){
  return Point + NumberOfBeads;
 }
 if(NumberOfBeads <= Point){
  return Point - NumberOfBeads;
 }
 return Point;
}


529 :デフォルトの名無しさん:02/12/22 16:30
>>528
続き...

static int GetContinuousBeads(const Necklace *Necklace, int Point, const int Step)
{
 int n;
 char OriginalColor;
 int OriginalPoint;

 OriginalPoint = NextPoint(Necklace->NumberOfBeads, Point, 0);
 OriginalColor = Necklace->Beads[OriginalPoint];
 for(Point = NextPoint(Necklace->NumberOfBeads, OriginalPoint, Step), n = 1;
  Point != OriginalPoint; Point = NextPoint(Necklace->NumberOfBeads, Point, Step), n++){
  char CurrentColor;

  CurrentColor = Necklace->Beads[Point];
  if(CurrentColor != 'w' && CurrentColor != OriginalColor){
   break;
  }
 }
 return n;
}


530 :デフォルトの名無しさん:02/12/22 16:33
>>529
続き...

int main(void)
{
 Necklace Necklace;
 int i;
 int Maximum;
 int SplitPoint;

 if(fgets(Necklace.Beads, sizeof Necklace.Beads - 1, stdin) == NULL){
  fprintf(stderr, "入力できんかった、鬱だ...。\n");
  exit(1);
 }
 for(i = 0; Necklace.Beads[i] != '\n' && Necklace.Beads[i] != '\0'; i++){
  switch(Necklace.Beads[i]){
  case 'r':
  case 'b':
  case 'w':
   break;
  default:
   fprintf(stderr, "変な色 %c があるやん、ちゃんとせーや。\n", Necklace.Beads[i]);
   exit(1);
  }
 }
 Necklace.NumberOfBeads = i;
 if(Necklace.NumberOfBeads < 2){
  fprintf(stderr, "ビーズが少なすぎるぞ、なめとんかぁごらぁ。\n");
  exit(1);
 }


531 :デフォルトの名無しさん:02/12/22 16:33
>>530
続き、これで終わり。

 Maximum = 0;
 for(i = 0; i < Necklace.NumberOfBeads; i++){
  int n;

  n = GetContinuousBeads(&Necklace, i, -1) + GetContinuousBeads(&Necklace, i + 1, 1);
  if(Maximum < n){
   Maximum = n;
   SplitPoint = i;
  }
 }
 for(i = 0; i < Necklace.NumberOfBeads; i++){
  printf("%c", Necklace.Beads[i]);
  if(i == SplitPoint){
   printf(" | ");
  }
 }
 printf(": %d個だ。\n", Maximum);
 _getch();
 return 0;
}

結果:
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
wwwbbrwrbrbrrbrbrwrwwrbwrwrr | b: 11個だ。

532 :504:02/12/22 16:45
>>528
ご丁寧にありがとうございました。

533 :デフォルトの名無しさん:02/12/22 16:53
>>528-531
長い + 処理系依存 = カコワルイ
の典型みたいなコードだな。こりゃ。

534 :デフォルトの名無しさん:02/12/22 16:58
>>533
評論するのは楽だよな。と。

535 :デフォルトの名無しさん:02/12/22 17:08
>>534
つーか、長いって言うのは半分意識的に書いてるからいいんだけど、処理系依存ってどこよ ? >>533

もしかして消し忘れの #include <windows.h> と、デバッグ用の _getch() のこと言ってんのか ?

536 :504:02/12/22 17:08
>>528-531
俺はプログラムを書いて頂いただけで十分に感謝しています。
しかも動作のチェックまでしてくれているので、
なんの問題もなく享受することができて、満足です。

537 :デフォルトの名無しさん:02/12/22 17:10
消し忘れか。
上手いいいわけだな。

538 :デフォルトの名無しさん:02/12/22 17:11
#include <windows.h>
だってーギャハハ!!!!プーー!!!
ここ何のスレ?
C言語のスレ!
Windows のスレじゃないない!!

539 :デフォルトの名無しさん:02/12/22 17:18
>>538
ワラタ。

540 :デフォルトの名無しさん:02/12/22 17:30
>>537
これっていいわけ?
あんたの前じゃ、ちょっとした間違いも正すことができないな。

541 :デフォルトの名無しさん:02/12/22 17:30
>>537-538
悪いけど、マジ消し忘れだよ。
ソースのどっからも参照してないでしょ ?
それとも、ソースすら読めない厨房なのか。

542 :デフォルトの名無しさん:02/12/22 17:33
>>536
一つの動作ができるからといって、正しいプログラムとは限らんよ。
wwbrww とか与えると多分あんたの予想と違う結果となるよ。
作成時点からわかってたけど、そこは >>504 の宿題だ。(つーか、結構面倒と思う。)

543 :デフォルトの名無しさん:02/12/22 17:54
人の書いたコードを理解もせず自分で書きもせず1行2行の
ロジックと関係ないミスをいちいち指摘してるやつってなんなの?

544 :デフォルトの名無しさん:02/12/22 17:56
>>543
ただのガキだ。無視しとけ。


545 :デフォルトの名無しさん:02/12/22 18:02
    ___
  _l≡_、_ |_
   (≡,_ノ` )y─┛~~  ガキか・・・負け犬に相応しいセリフだな…フッ
   <__ヽyゝ|  
   /_l:__|゚
   ´ lL lL

546 :デフォルトの名無しさん:02/12/22 18:23
getch関数って覚えておいた方がいいですか?
あと,kbhit関数も

547 :デフォルトの名無しさん:02/12/22 18:26
>>546
>>1

548 :デフォルトの名無しさん:02/12/22 18:42
>>546
DOSでゲームとか作りたい場合は必須だぞ。

549 :デフォルトの名無しさん:02/12/22 18:46
スレ違いの質問にレスするヤシは氏んでほしいな。

550 :デフォルトの名無しさん:02/12/22 18:47
ヴィジュアルC++
#include <stdio.h>
int main(void)
{
int data1, data2;
char data;
scanf("%d", &data1);
scanf("%d", &data2);
scanf("%c", &data);

return 0;
}
これを行うと、scanf("%C"、&data);が実行されません。
・・・・・なんで?

551 :デフォルトの名無しさん:02/12/22 18:47
>>549
C言語以外にgetchとかkbhitが存在するのならいざ知らず。

552 :デフォルトの名無しさん:02/12/22 18:52
>>551
おまいは>>1も読めんのか。くたばれ

553 :デフォルトの名無しさん:02/12/22 19:00
>>552
>>1にそってない質問の結果が未定義となっているので、
どんな解答もありでは?

例えそれが間違っていても質問した香具師が悪いんだし

554 :デフォルトの名無しさん:02/12/22 19:01
>>548
ありがとう

555 :デフォルトの名無しさん:02/12/22 19:34
>>553
あなたの頭が悪い理由は?

556 :↑典型例( ´∀` ):02/12/22 20:11
 


557 :デフォルトの名無しさん:02/12/22 20:41
冬休み突入で精鋭軍がやってきたな。

558 :デフォルトの名無しさん:02/12/22 21:20
int main()
{
int c;
int flg=0;

while((c=getchar())!='n'){
if(c==' '){
if(flg<2) flg++;
}
else{
if(flg==2){
putchar(' ');
flg=0;
}
else{
flg=0;
putchar(c);
}
}
}
}

ふたつ以上の空白を1つにしようとしているんですが,変な動作をします

559 :デフォルトの名無しさん:02/12/22 21:22
char型のポインタに、2バイト文字をセットするにはどうすればいいんでしょうか?

560 :デフォルトの名無しさん:02/12/22 21:24
なぁ、

int flag = 0;

while((c=getchar())!='n')
{
if(c == ' ')
flag++;

if(flag >= 2)
{
putchar(c);
flag = 0;
}
}


561 :デフォルトの名無しさん:02/12/22 21:27
>>559

char c="あ";
char *p;

p=&c;

562 :デフォルトの名無しさん:02/12/22 21:28
>>561
>char c="あ";

普通に怒られるだろ。

563 :デフォルトの名無しさん:02/12/22 21:30
char c[]="あ?";

564 :デフォルトの名無しさん:02/12/22 21:46
>>560


565 :デフォルトの名無しさん:02/12/22 21:47
>>564



566 :デフォルトの名無しさん:02/12/22 21:47
>>565

 

567 :デフォルトの名無しさん:02/12/22 21:47
>>566

  

568 :デフォルトの名無しさん:02/12/22 21:47
>>567

   

569 :デフォルトの名無しさん:02/12/22 21:47
>>568

                    

570 :JPS ◆M0LaMzf5rY :02/12/22 21:51
>>558
#include <stdio.h>

int main(void)
{
int ch, space = 0;

while ((ch = getchar()) != EOF)
{
if (! space || ch != ' ')
putchar(ch);

space = (ch == ' ');
}
return 0;
}


571 :デフォルトの名無しさん:02/12/22 21:51
>>570

             

572 :デフォルトの名無しさん:02/12/22 21:51
>>571

                             

573 :デフォルトの名無しさん:02/12/22 22:26
>>574


574 :デフォルトの名無しさん:02/12/22 22:43
>>1


575 :デフォルトの名無しさん:02/12/22 22:54
オナラの回数を競い合うスレですか?

576 :デフォルトの名無しさん:02/12/23 00:12
> char型のポインタに、2バイト文字をセットするには
char *p = (char *) 'プ';

577 :デフォルトの名無しさん:02/12/23 00:13
>>576
がっかり・・・

578 :デフォルトの名無しさん:02/12/23 07:50
ヴィジュアルC++
#include <stdio.h>
int main(void)
{
int data1, data2;
char data;
scanf("%d", &data1);
scanf("%d", &data2);
scanf("%c", &data);

return 0;
}
これを行うと、scanf("%C"、&data);が実行されません。
これぐらい教えてくれよ!あんたら先輩なんだろ!

579 :デフォルトの名無しさん:02/12/23 07:54
scanf()使ったらfflush(stdin)汁

580 :デフォルトの名無しさん:02/12/23 08:11
>scanf("%C"、&data);
なんかどこにもねーだろが。

581 :578:02/12/23 08:14
すいません・・・
scanf("%c", &data);が実行されないんです。
自分はとりあえず共用体や構造体等独習Cって本は全部さらさらっと終了させました
が、知り合いにこれを質問されてさっぱりです。
scanf("%d", &data1);
scanf("%d", &data2);
scanf("%c", &data);
の部分を
scanf("%d", &data1);
scanf("%d", &data2);
data = getchar();
scanf("%c", &data);
に変更するとできるんですよ。はてはて?
なんでdata = getchar();したかってのは勘てか、なんとかなく書いたらできました

582 :デフォルトの名無しさん:02/12/23 08:25
>>581
宿題で無いなら、scanf() は使うな。
char buff[512]; fgets(buff, sizeof buff, stdin); sscanf(buff, "...", ...); にしとけ。

583 :デフォルトの名無しさん:02/12/23 09:31
>>581
scanf"%c", &data)をscanf"%*c%c", &data);に変更

584 :デフォルトの名無しさん:02/12/23 09:33
nannde '(' ga nuketeruno?

585 :583:02/12/23 09:35
>>584
あれ?ゴメン・・・

586 :名も無き英雄for北朝鮮:02/12/23 10:30
SharpDevelopの本とか出版してないの?
やさしく説明してるページあったら教えて

587 :デフォルトの名無しさん:02/12/23 11:01
>>579
未規定動作。

>>581
何を期待してたのか知らんが、%cで改行を読んでるに300カノッサ。
scanf(" %c", &data);にしてみろ。

588 :デフォルトの名無しさん:02/12/23 11:49
>>587
実規定坊はしね

589 :名無しさん@3周年:02/12/23 11:58
char buf[1024];

fgets(buf, 1024, stdin);
sscanf(buf, "%d", &data);

590 :デフォルトの名無しさん:02/12/23 13:59
typedef struct Person Person;
struct Person {
char name[NAMELEN];
int total;
};


Person*
lookup(char *name)
{
int i;

/* look for name in people table */
for(i=0; i<npeople; i++)
if(strcmp(name, people[i].name) == 0)
return &people[i];

assert(0);/* should have found name */
}

上記のソースについてですが、Person*とはlookup函数はポインタを返すということ?
Personはstruct Personっていう型を意味するのは分かるんですが、
struct Person型のポインタって何??って感じです。
あとassert(0);にたどり着く場合ってなんでしょうか?

591 :デフォルトの名無しさん:02/12/23 14:12
>>590
>struct Person型のポインタって何??って感じです。
は勉強不足なので勉強し直してください。
リストのここに該当する情報があるよと呼び出し元にポインタで教えてるわけですな。

assertが出るのはなぜかリストに発見したい名前が無かったときに発生するのかと。
コメントにもそう書いてあるし。

592 :デフォルトの名無しさん:02/12/23 15:05
mallocでメモリを確保したのですが、100000000サイズになると
NULLになります。これを直す方法をご存知の方はいますでしょうか?

n_array = (max-1) / 2;
array = (char *)malloc( n_array );

↑がソースの一部です。

593 :デフォルトの名無しさん:02/12/23 15:06
>>592
>100000000サイズ

どうでもいいが妙な単位つくんな。

594 :デフォルトの名無しさん:02/12/23 15:06
>>592
>↑がソースの一部です。
ふぅん。で?

595 :デフォルトの名無しさん:02/12/23 15:14
>>592
メモリを増やす
スワップを増やす
ulimit -vを増やす

596 :デフォルトの名無しさん:02/12/23 15:52
nバイトだけメモリを確保されたブロックを指すポインタを表示するには
malloc以外でどんな方法があるのでしょうか?

597 :名無し@沢村:02/12/23 15:55
>>596
new

例:
char *Data;
Data=new char;

delete Data;

598 :デフォルトの名無しさん:02/12/23 16:00
>>597
>Data=new char;
のcharって何?メモリのサイズであるnはどこに書けばいい?

599 :名無し@沢村:02/12/23 16:02
>>598
ヌヒよ、サイズであるnは、
char *Data;
Data=new char[n];

delete Data[];

とそこに書けばいいぞ。


600 :デフォルトの名無しさん:02/12/23 16:04
>>599
間違った答え晒してなにをえらそーに。
ついでにC言語、な。

601 :デフォルトの名無しさん:02/12/23 16:04
>>599
ありがとうございました。

602 :デフォルトの名無しさん:02/12/23 16:11
>>599
Your program exited with signal #6 (abort())
ってでるんだけど・・・・・・

603 :名無し@沢村:02/12/23 16:12
>>600
ヌヒよ、callocというのもあるぞ。
callocはmalloc+zeromemoryをいっぺんにやってくれる関数だ。
char *Data;
Data=(char *)calloc(n,1);

free (Data);

ヌヒよ、俺はC言語の第一人者かもしれないぞ。


604 :デフォルトの名無しさん:02/12/23 16:13
>>596
表示?


605 :デフォルトの名無しさん:02/12/23 16:14
>>603
誰かこいつから座蒲団全部とっちゃってくれ。

606 :596:02/12/23 16:26
実のところ、俺が組んだプログラムは2つの数が与えられて、
その2つの数の間にある回文(逆さに読んでも同じ)の
素数を出力させるんだけど、与えられる2つの数の一方が100000000と
なると、
Your program exited with signal #11 (segmentation violation
[maybe caused by accessing memory out of bounds, array indexing
out of bounds, using a bad pointer (failed open(), failed malloc),
or going over the maximum specified memory limit])
あきらかにmallocが原因だと思うんですけど、
mallocを棄てるとプログラム全体を組みなおさなくちゃならない。
newに変えても同じようなことになる。
どうかアドバイスお願いします。

607 :デフォルトの名無しさん:02/12/23 16:32
>>606
マルチ

608 :デフォルトの名無しさん:02/12/23 16:33
>>606
だからお前のシステムだとメモリに100MBも空きがなかったんだよ。
char単位じゃなくてbit単位のフラグにすれば1/8で済む。
いずれにしても、とんでもなく時間がかかるのは明らかなんで、
まずはもっと小さい値で試してみるべし。
いっとくけど、所用時間はmaxの2乗に比例するからな。

609 :デフォルトの名無しさん:02/12/23 16:34
>>608
スワップ含めて100MB確保できない環境ってのも今時珍しいな。

610 :デフォルトの名無しさん:02/12/23 16:35
>>609
だからulimitも書いてる

611 :名無し@沢村:02/12/23 16:37
>>606
char *temp;
char Data[n];
temp=(char *)malloc(n/2);
strcpy(Data,temp)
free (temp);
temp=(char *)malloc(n/2);
strcat(Data,temp)
free (temp);
と2回にわけてDataにtempをコピーする。



612 :606:02/12/23 16:39
最近買ったパソコンなんだけど可笑しいな★
みちゃいや〜ん★

613 :デフォルトの名無しさん:02/12/23 17:25
>>606
それって宿題スレでわしが書いてやったプログラムでは。。。

614 :デフォルトの名無しさん:02/12/23 17:33
>>613
ひどいよな。書いてやった苦労とかその他諸々無視だよ。

615 :デフォルトの名無しさん:02/12/23 18:56
単なる徘徊者かな?

616 :デフォルトの名無しさん:02/12/23 19:51
>>603
ところでヌヒってなんだ。



617 :デフォルトの名無しさん:02/12/23 20:46
塗り薬

618 :デフォルトの名無しさん:02/12/23 21:39
あー、痒いときのね。

619 :デフォルトの名無しさん:02/12/23 22:06
それはメンソレータム!

620 :デフォルトの名無しさん:02/12/23 22:11
めんそーれ、沖縄

621 :デフォルトの名無しさん:02/12/23 23:11
ぬひ【奴婢】
下男と下女。律令化の賤民。

622 :名無しさん@3周年:02/12/24 08:04
旭ヌヒ成

623 :デフォルトの名無しさん:02/12/24 13:44
void SampleFunction(char *name){
strcpy(SampleString, name);
}
ソースの一部ですが、*nameは文字列(name[])として関数SampleFunctionで
宣言されているということはnameは式の中ではポインタのはず。
では、なぜ関数strcpyでは第2引数にこのname(&name[0])が渡されているのでしょうか?
関数strcpyは文字列しか引数に取らないはず。

624 :デフォルトの名無しさん:02/12/24 14:08
>>623
strcpyのプロトタイプ宣言はこんなふうです。(manより)
char *strcpy(char *dest, const char *src);

625 :デフォルトの名無しさん:02/12/24 14:33
>>623
何が疑問なのかサパーリ。

626 :デフォルトの名無しさん:02/12/24 14:36
>>623
Cを理解できていませんね

627 :デフォルトの名無しさん:02/12/24 14:43
> 関数strcpyは文字列しか引数に取らないはず。

間違い。

628 :623:02/12/24 14:46
>>624
>char *strcpy(char *dest, const char *src);
destとsrcはポインタなのか文字列なのかよく分からない。
ポインタだったらsrcを確保しているメモリの先端のアドレスを
destを確保しているメモリの先端のアドレスにコピーするってこと?
ポインタって難しい……

629 :デフォルトの名無しさん:02/12/24 14:52
>>628
C に文字列はありません。文字配列があるだけです。

630 :デフォルトの名無しさん:02/12/24 14:57
?ヌル終端された文字配列を文字列(string)と言うんだと思うけど.......

631 :623:02/12/24 15:04
strcpy(SampleString, name); って、
すでに文字列が代入されている配列を第2引数に書いてるってだけか、
ということを検索でわかりました。

632 :629:02/12/24 15:09
じゃ補足 型として

633 :623:02/12/24 15:21
ってことは、
char string[9999999999999];で宣言して、
scanf("%s", string);で文字列を読み込んで、
function(string);で関数function()を呼ぶと、このときの
引数stringは&string[0]じゃなくて、単に文字列(なんだかよく分からないが)を表すのですか?

634 :デフォルトの名無しさん:02/12/24 15:29
ちったぁ勉強してから来いこのタコ
  ( ・∀・)   | |
 と    )    | | ガッ
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /

635 :デフォルトの名無しさん:02/12/24 15:30
ほかにも疑問に思う場合があります。例えば、
scanf("%s%s", str1, str2);
のとき、str1とは文字列の先頭アドレスなのに、
printf("%s %s\n", str1, str2);
では、そのアドレスを出力している。

簡単にstr1[∞]という文字配列があったとして、
str1だけで文字列を表すのだと覚えてよいのだろうか?

636 :知ったかぶりっこ:02/12/24 15:45
文字列なら最後に'\0'がつくはず!

637 :デフォルトの名無しさん:02/12/24 15:47
配列変数は以下の点を除いて、その先頭の要素を指すポインタと全く等価。
・ ポインタの指す先の領域は児童確保され、スコープを出ると自動破棄される
・ 単項 & 演算子のオペランドにした場合、データ型は配列へのポインタになる。
・ sizeof 演算子のオペランドにした場合、配列全体のサイズを返す
・ 配列変数は代入できない左辺値

638 :デフォルトの名無しさん:02/12/24 15:48
みんなメリクリ

639 :デフォルトの名無しさん:02/12/24 15:49
みんなカニミソワショーイ

640 :デフォルトの名無しさん:02/12/24 15:50
めりくり〜!!

641 :デフォルトの名無しさん:02/12/24 16:04
クリスマスは明日だろ

642 :デフォルトの名無しさん:02/12/24 16:05
>>641
寒いです。

643 :デフォルトの名無しさん:02/12/24 16:05
>>636
「ゼロ終端文字列」 ならそうだろうね。

644 :デフォルトの名無しさん:02/12/24 20:56
すいません。教えてください。
簡単なコンパイラを作成しているのですが、
8進数とか16進数とかを表現する時に
それぞれ頭に0か0xをつけて表記しますよね?

この表記では0は表現できないのですか?

645 :デフォルトの名無しさん:02/12/24 20:58
00
0x0

646 :デフォルトの名無しさん:02/12/24 20:59
というか、0 は8進表記なのだが。

647 :デフォルトの名無しさん:02/12/24 21:07
>>00
プ

648 :デフォルトの名無しさん:02/12/24 21:09
a=(int*)malloc(100*sizeof(int));
free(a)
とかしたときにaの指すアドレスからどこまでを開放するかってのは
どうやって分かるの?

649 :デフォルトの名無しさん:02/12/24 21:10
(^00^)プ

650 :デフォルトの名無しさん:02/12/24 21:10
>>648
なんかその手前のアドレスでそう言う情報管理してたりするらしいぞ。

651 :デフォルトの名無しさん:02/12/24 21:14
>>648
mallocの実装によるが…教科書通りなら、aの手前にサイズを持ってる。



652 :644:02/12/24 21:17
>>646
すいません。よくわかりません。
どういうことでしょうか?
00 や 0x0 でいいのでしょうか。

653 :デフォルトの名無しさん:02/12/24 21:17
>>650-651
マジッスカ?
カシコクナッタヨ
ありがとうゴザイマス。


654 :デフォルトの名無しさん:02/12/24 21:19
ライブラリが管理してるんでしょ。

655 :デフォルトの名無しさん:02/12/24 21:20
(^0x0^)プ

656 :デフォルトの名無しさん:02/12/24 21:32
ん?

657 :デフォルトの名無しさん:02/12/24 21:36
8 進/16 進表記がまともにわからない香具師がコンパイラを書くのか?

658 :デフォルトの名無しさん:02/12/24 21:44
(^00^)プ

659 :名無し@沢村:02/12/24 21:48
ときにヌヒ等よ。
「香具師」って何て読むの?

660 :644:02/12/24 21:52
>>657
はい。まともにわからないのです。
お手数ですが教えてください。

661 :デフォルトの名無しさん:02/12/24 21:53
>>642
0は8進数でも、16進数でも、10進数でも
同じ値を表すので問題ありません。

662 :デフォルトの名無しさん:02/12/24 21:54
沢村警報がガンガンに鳴っています

663 :名無し@沢村:02/12/24 21:54
なあヌヒ等よ。
「香具師」って何て読むよ?


664 :デフォルトの名無しさん:02/12/24 21:55
沢村には何も教えるな!!


    沢 村 に は 何 も 教 え る な ! !



665 :名無し@沢村:02/12/24 21:56
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?
「香具師」って何て読むよ? 「香具師」って何て読むよ? 「香具師」って何て読むよ?



666 :デフォルトの名無しさん:02/12/24 21:56
              _
..            //.|
           //./.|.     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          //./ | |     | すんません。すぐ処分しますんで・・・・・。
        //./|/:.| .|     \_ __________________
        □/ / //| |.        |/
        | |/.;;;;//. | ||.
        | | ;;;;;;//  | |||   l⌒)=|ニ二フ
        | |.;;;//   | |.||   ∧.|.∧
.    ∧ ∧ | |.//.   | | ||.  ( ・∀・)
   ( ・A・).| |/.    | |. ||  |   )               ワイワイ  ガヤガヤ
 __(    ).| |___. | | || __.| | |____
    | | | | |.   //.| ̄ (__(__).   /.|          ∧_∧ ∧_∧ ∧ ∧
   (__)__)| |.  //  |.         //|         (´-`;)(@・ )(;´∀)(
        | |.//∧井∧イヤァァァ--- // .|        ∧∧  ∧ ∧. ∧_∧ ∧∧
       (..| |/ (;´Д`)←沢村  //.   |       (∀・ )(ー゜* )(   )(´∀`
     (⌒ .| |    / ̄ ⊂.⊃.  .//   /      ∧_∧ ∧ ∧ ∧ ∧. ∧_∧
..∧ ∧    ̄| |  /    └─┘//   /       <_`  )(´・ω )(д ゜` )(   )(
( ・A・)   | |/         //   /       ∧_∧ ∧ ∧  ∧_∧  ∧_∧ ∧
(    ).   ~~        //   /        (   )( ゜∀゜)(`   )(   )(゜д
. | | |            //   /        ∧_∧. ∧_∧ ∧_∧  ∧_∧  ∧_∧
(__)__).         //   /         (д- )(   )(*゜ー゜)(T дT )(∀` )

667 :名無し@沢村:02/12/24 21:57
ヌヒ等よ、一生のお願い。
「香具師」って何て読むか教えて!!

668 :デフォルトの名無しさん:02/12/24 21:57
ヤシですよo

669 :デフォルトの名無しさん:02/12/24 22:00
>>668
スレ違い野郎の相手するなよ。

670 :デフォルトの名無しさん:02/12/24 22:01
「香具師」 = 「かぐし」

671 :デフォルトの名無しさん:02/12/24 22:02
こうぐしだろ

672 :デフォルトの名無しさん:02/12/24 22:03
「香具師」は「せなか」と読みます。

673 :名無し@沢村:02/12/24 22:04
>>667
ヌヒよ、「ヤシ」でいいのか、ヌヒよ?
実は俺は大字林第二版で検索して「コウグシ」「ヤシ」のうちのどちらかに違いないと思ってたんだよ。
「コウグシ」は香具を作る人、「ヤシ」はテキ屋のことなので、香具を作る人の「コウグシ」のほうが何かプログラマーに近いような気がして「コウグシ」と読む可能性大だと思っていたんだがなあ…。
俺の読みははずれて、「ヤシ」が正しかったみたいだな…。
何故プログラマーをテキ屋というのか理由は知らんがな…。
やはり質問してみるもんだな…。

674 :デフォルトの名無しさん:02/12/24 22:06
>>673
プ

675 :名無し@沢村:02/12/24 22:07
>>670>>672
嘘をつけ!!
大字林第二版には「コウグシ」「ヤシ」以外の意味は出てなかったぞ!!
>>671
ん?俺は最初そう思ったんだが、>>667が「ヤシ」って…

676 :デフォルトの名無しさん:02/12/24 22:10
>>675
おい、そろそろプレゼント配りに出かけろや

677 :デフォルトの名無しさん:02/12/24 22:13
ところで>>644は解決したのか?

678 :香具師:02/12/24 22:14
左の細いところの一番上の方にある
「2ch総合案内」をクリック
  応用&システム
掲示板やスレッドがおかしい。。。
削除依頼や要望をだしたい。。。
掲示板を追加or分割or閉鎖して欲しい。。。
特殊な用語などを知りたい。。。<<======ここから探したら?
もっと便利に使いたい。。。


679 :デフォルトの名無しさん:02/12/24 22:15
へー、香具師ってテキ屋のことだったのか。知識増えた。

680 :デフォルトの名無しさん:02/12/24 22:20
奴→ヤツ→ヤシ→香具師

681 :デフォルトの名無しさん:02/12/24 22:21
>>680
馬鹿かお前。

682 :デフォルトの名無しさん:02/12/24 22:23
それがさ・・・

683 :デフォルトの名無しさん:02/12/24 22:29
へー。そうなん?

684 :デフォルトの名無しさん:02/12/24 22:29
2ch初心者ですか?
書き込む前にセキュリティガードを(以下略

685 :デフォルトの名無しさん:02/12/24 22:33
うまいラーメン屋を探してきなさい。

686 :デフォルトの名無しさん:02/12/24 22:38
>>685
地下鉄永田町ガード下にありまッさ。

687 :デフォルトの名無しさん:02/12/24 22:39
ガード下って響きに酔ってるだけ。

688 :デフォルトの名無しさん:02/12/24 22:41
ガード下
  響きに酔って
    もらいゲロ

689 :デフォルトの名無しさん:02/12/24 22:43
コアダンプ ト イフ ナリ

690 :デフォルトの名無しさん:02/12/24 22:56
沢村の狙い通り荒れてしまったわけだが。

691 :デフォルトの名無しさん:02/12/24 22:58
元凶は沢村だが、荷担したのは 668

692 :デフォルトの名無しさん:02/12/24 23:00
ザンネン。668も沢村です。ヤツは一級の釣り師です。

693 :デフォルトの名無しさん:02/12/24 23:00
そして自作自演

694 :デフォルトの名無しさん:02/12/24 23:01
こ"めんネo

695 :デフォルトの名無しさん:02/12/24 23:01
あなたがたの心には、もう沢村が住みついてしまわれたのですね。

696 :デフォルトの名無しさん:02/12/24 23:02
ウッちゃん括弧(・∀・)イイ

697 :デフォルトの名無しさん:02/12/24 23:03
棲みついたのですか?

698 :デフォルトの名無しさん:02/12/24 23:03
旧世代言語のスレのクセに伸びがいいですね?

699 :デフォルトの名無しさん:02/12/24 23:10
いいえ近未来言語沢村言語のスレです。

700 :デフォルトの名無しさん:02/12/25 10:08
ど素人が700

あのwatcomのコンパイラインストールして使おうとしてるんですが、
コンパイルすると

Error! E1055: Unable to open 'stdio.h'

って出てコンパイルできないんです。ぐぐってみたらinclude pathを変えないと
いけないみたいに書いてあったんですが、変え方がまったくわかりません。
分かる人いたら、教えてください。

701 :デフォルトの名無しさん:02/12/25 11:08
-Ipath

702 :デフォルトの名無しさん:02/12/25 13:46
>>700
ドキュメント読めば一瞬で分かるはずだがな。

703 :デフォルトの名無しさん:02/12/25 17:02
scanf("%d%*c", &select);
の%*cってどういう意味があるんでつか?

704 :デフォルトの名無しさん:02/12/25 17:08
改行をスキップするのでないかな
残しておくと、直後に文字or文字列を取り込もうとしたときに
期待通りの動作してくれなくなるから

705 :デフォルトの名無しさん:02/12/25 17:34
行末までをスキップするならこのほうがよい。
scanf("%d%*[^\n]", &select); getchar();


706 :デフォルトの名無しさん:02/12/25 19:39
> scanf("%d%*c", &select);

これ、%*c の格納先を指定してないのはヤヴァくないか?

707 :デフォルトの名無しさん:02/12/25 19:42
>>706
え?

708 :デフォルトの名無しさん:02/12/25 19:42
ヤヴァくはないとおもう

709 :デフォルトの名無しさん:02/12/25 20:03
保守

710 :デフォルトの名無しさん:02/12/25 20:09
>>706
man scanf 100回

711 :デフォルトの名無しさん:02/12/25 20:16
腕立て伏せ 100 回

712 :デフォルトの名無しさん:02/12/25 20:19
漢はスキャンティ100枚

713 :デフォルトの名無しさん:02/12/25 20:41
っていうかscanfなんか無理して使おうとするなよ

714 :名無し@沢村:02/12/25 21:02
>>713
scanfですでに無理?
1+1はできますか?

715 :デフォルトの名無しさん:02/12/25 21:13
>>714
田だがなにか?

716 :デフォルトの名無しさん:02/12/25 22:07
サブ

717 :デフォルトの名無しさん:02/12/25 22:23
>>714
scanf使うなっていうのは、漏れも常識だと思うが?
sscanf, fscanfは使うがな

718 :デフォルトの名無しさん:02/12/25 22:47
使えないと使わないは違う。
>>713には同意だが、だからといって>>706が正しいわけではない。
ちなみに>>714は論外の更に外。


719 :デフォルトの名無しさん:02/12/25 23:00
scanf("%d%*[^\n]", &select); getchar();
""内は1+1で右側に1(select)しかないからだろ。

720 :デフォルトの名無しさん:02/12/25 23:05
>>719
何がいいたいのかサパーリ分からん。

721 :デフォルトの名無しさん:02/12/25 23:10
>>720
思考力なーし

722 :デフォルトの名無しさん:02/12/25 23:14
私にもサパーリ分かりませんが何か?

723 :デフォルトの名無しさん:02/12/25 23:14
俺も分からない。

724 :デフォルトの名無しさん:02/12/25 23:28
>>722>>723
おやすみ〜

725 :デフォルトの名無しさん:02/12/25 23:30

<             >>724ハァァァ???

  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^――/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllll|          ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕         :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\

726 :デフォルトの名無しさん:02/12/25 23:36
でかいのつれたな

727 :デフォルトの名無しさん:02/12/25 23:44
じゃ、じゃあ俺も!

728 :703:02/12/26 01:51
703だけども。
なんかアステリスクだっけ?*←
これつけたらそのあとの変換指定子にあう型のがきたら無視するってこと?
空白とかを無視したいんならfgetsにsscanfの方が良いって友達は言ってるけど。
ちなみに703のは学校の教授が模範解答として配ったソースにあったやつです。
初心者でスマソ

729 :デフォルトの名無しさん:02/12/26 02:33
>>728
例えば、scanf("%d %*d %d", &a, &b);とすると、
入力回数は3回になるが、2回目の入力は無視される。
1回目の入力値がaに格納され、3回目の入力値がbに格納される。

まあ、説明不足のような気がするが、だいたいこんなもんかな?

730 :デフォルトの名無しさん:02/12/26 05:37
>>717
fscanfも使わない方がいいんじゃなかった?


731 :starman@LinuxのC言語:02/12/26 10:21
マルチユーザOSのLinuxでは仮想端末を切り替える際にALT+(F1〜F6)などを使用しますが、
キーボードを使用せずにC言語のプログラム(システムコール?)から仮想端末を切り替えることはできるのでしょうか?
もしできるのなら、その方法を教えて頂けないでしょうか?


732 :デフォルトの名無しさん:02/12/26 13:46
質問です。
ある変数aの平方根を求めるプログラムって
どうするんですか?例えばa=36なら6とか。

733 :デフォルトの名無しさん:02/12/26 13:48
sqrt(a)

734 :デフォルトの名無しさん:02/12/26 13:51
×733

int a = 36, b;
for (b = 1; b*b != a; b++);

735 :732:02/12/26 13:57
>>733,734
解答ありがとうございます。
sqrt(a)を使ったら無事できました。

736 :デフォルトの名無しさん:02/12/26 14:00
プ>>734

737 :デフォルトの名無しさん:02/12/26 14:09
質問です。
ある変数aの自乗を求めるプログラムって
どうするんですか?例えばa=6なら36とか。

738 :デフォルトの名無しさん:02/12/26 14:10
>>737
a*=a;

739 :デフォルトの名無しさん:02/12/26 14:11
×738

int a = 6, b;
for (b = a; b != a*a; b++);

740 :デフォルトの名無しさん:02/12/26 14:12
×738

int b[] = { 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, };
int a = 6;
b[a];

741 :732:02/12/26 14:13
>>738,739,740
解答ありがとうございます。
a*=a;を使ったら無事できました。

742 :デフォルトの名無しさん:02/12/26 14:13
>>739
それだとaがintならともかくダブルだったりしたらどうするの?

743 :デフォルトの名無しさん:02/12/26 14:14
>>740
それだとaが0〜10ならともかくマイナスだったりしたらどうするの?

744 :デフォルトの名無しさん:02/12/26 14:20
>>742-743
良い質問だね。
明日までの宿題だ。

745 :デフォルトの名無しさん:02/12/26 14:24
>>744
先生!明日は冬休みじゃないんですか?

746 :デフォルトの名無しさん:02/12/26 14:31
>>744
それだと明日が登校日ならともかく冬休みだったりしたらどうするの?

747 :デフォルトの名無しさん:02/12/26 14:39
処理を時間差で行うにはどうすればいいのでしょうか。
例えば文字を出力した0.2秒後に別の文字を出力するとか。
整数秒後に出力するのはtimeとかで出来そうなんですが。
よろしくお願いします。

748 :デフォルトの名無しさん:02/12/26 15:16
>>747
ミリ秒がいるんなら
OSのシステムコールを使うか
ハードウェアでタイマ用意するだな

749 :デフォルトの名無しさん:02/12/26 15:29
>>748
解答ありがとうございました。
早速がんばってきます。

750 :デフォルトの名無しさん:02/12/26 18:08
732 から後はネタか何かかい?

751 :デフォルトの名無しさん:02/12/26 18:16
   。 。
  / /
 ( ゚Д゚) ヘ?
 ヽ人ゝ

752 :デフォルトの名無しさん:02/12/26 18:43
>>731
chvt というコマンドがあるので system を使って切り替えましょう。
具体的な方法は chvt のソースを見れば分かると思いますが。

753 :デフォルトの名無しさん:02/12/26 18:58
ヒマダ
おれも遂に脱初心者だな

754 :デフォルトの名無しさん:02/12/26 19:07
>>753
ふーん。
試しに、char[5][10] へのポインタの変数 p を定義してみてくれるかい?

755 :デフォルトの名無しさん:02/12/26 19:11
>>754
そんなもんは初級中の初級

756 :デフォルトの名無しさん:02/12/26 19:21
>>755
書けないならそう言えば? と言われたい訳?
釣りですか?

757 :デフォルトの名無しさん:02/12/26 19:21
(・∀・) バーカ!!

758 :デフォルトの名無しさん:02/12/26 19:24
なんだとー

759 :デフォルトの名無しさん:02/12/26 19:31
あのー、何かすごくお腹の調子が悪いんですが・・・。
今日でもう 10 リットルくらいは放屁した気がする・・・。

760 :デフォルトの名無しさん:02/12/26 19:50
そのうちの8リットルは俺が吸い取った。

761 :デフォルトの名無しさん:02/12/26 20:08
でかした

762 :デフォルトの名無しさん:02/12/26 20:25
760 は漢

763 :デフォルトの名無しさん:02/12/26 20:29
感動しますた

764 :デフォルトの名無しさん:02/12/26 20:34


765 :デフォルトの名無しさん:02/12/26 21:25
見事だ

766 :デフォルトの名無しさん:02/12/26 22:00
残り2リットルは、今日バイトでカレーとして客に出しました!!

767 :デフォルトの名無しさん:02/12/26 22:13
屁の河童でござんすよっ!

768 :753:02/12/26 23:11
>>754
そんなの簡単さ
char**pダヨ


769 :デフォルトの名無しさん:02/12/26 23:12
>>768
釣り師沢村ハケーソ!!!

770 :753:02/12/26 23:12
>>769
JPSデスケド

771 :デフォルトの名無しさん:02/12/26 23:13
>>768
あ〜あ、やっちゃた・・・

772 :753:02/12/26 23:14
わかった
char **p = a[5][10]だ!

773 :デフォルトの名無しさん:02/12/26 23:16
>>772
脱!!初心者!!ヤホーイ♪


774 :デフォルトの名無しさん:02/12/26 23:16
>>772
バカ。*は安全のため出来るだけ沢山付けとくもんだ。
char ****************************************************p=a[5][10];
くらいやってこそプロってもんよ。

775 :753:02/12/26 23:17
>>774
そうだね。
オレもまだまだだな!テヘ

776 :デフォルトの名無しさん:02/12/26 23:18
初心者脱出おめでとう>>772

777 :デフォルトの名無しさん:02/12/26 23:18
(^*^)プ

778 :デフォルトの名無しさん:02/12/26 23:18
しつも〜ん
*はいくつまでつなげられますか?

779 :デフォルトの名無しさん:02/12/26 23:18
初心者脱落おめでとう>>772

780 :デフォルトの名無しさん:02/12/26 23:18
>>774
沢山・・・
沢村の間違いじゃ?

781 :デフォルトの名無しさん:02/12/26 23:18
今日はお赤飯ね。

782 :デフォルトの名無しさん:02/12/26 23:19
>>778
それはお前の努力次第だ!!がんばれよ!!

783 :753:02/12/26 23:19
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=52
これがどうして動作しないのかわからん
ダレカオシエテ

784 :デフォルトの名無しさん:02/12/26 23:24
>>783
何のプログラムでつか?(読めば分かるって言うツッコミなしね)

785 :デフォルトの名無しさん:02/12/26 23:25
a=(int*)malloc(100*sizeof(int));
free(a)
とかしたときにaの指すアドレスからどこまでを開放するかってのは
どうやって分かるの?

786 :デフォルトの名無しさん:02/12/26 23:25
>>783
とりあえずどういうプログラムで、
動作しないとはどういうことか(コンパイルできない、実行時エラー、期待通りの動作をしない)
くらいは説明しろ。

787 :753:02/12/26 23:26
>>784
C

788 :デフォルトの名無しさん:02/12/26 23:27
>>784
単純な単語登録リストでつ
構造体で線型リストやってんだけど
たぶんそこのつなぎ合わせたりするとこに問題が。

あとね、FILE*型を返す関数をつくってその中で
fp = fopenってやったfpを返して
mainのほうで別のfp_mainに戻りチとして代入できる?よね?

789 :784:02/12/26 23:28
>>787
なんでCって言うのでつか?
DでもEでも良いじゃん。(Bはあったみたいだけど・・・)
バカですみません・・・ウヒャ!!

790 :デフォルトの名無しさん:02/12/26 23:30
>>786
ゴメソ
期待通りの動作をしない
っていうか。
mainの下のほうに
puts("\nPlease choose an output interface");
printf("file / 1 standard / 2 : ");
fgets(str_2,sizeof(str_2),stdin);
sscanf(str_2,"%d",&flag2);
ってとこがあるしょ?
ここのfgetsとsscanfが飛ばされるんだよ。
バッファに空白が残ってるのかな。
でもプログラム自体は正常終了してる。
mainのreturnまでいってる。

791 :デフォルトの名無しさん:02/12/26 23:31
>>785
aの指しているアドレスの手間いにサイズの情報が入っているとかいないとか・・・


792 :デフォルトの名無しさん:02/12/26 23:37
>>785
C言語ポインタ完全制覇読め
ISBN7741-1142-2

793 :デフォルトの名無しさん:02/12/26 23:42
>>785
そういう情報はOSが管理してるんだよ。

794 :デフォルトの名無しさん:02/12/26 23:43
>>793
そのネタおもろい!



....なわけねーだろヴォケ

795 :デフォルトの名無しさん:02/12/26 23:46
#include<stdio.h>
main()
{
int a;
printf("数字を入力してください\n");
scanf("%d",&a);
if(a%2==0)
printf("偶数です\n");
else
printf("奇数です\n");
}
どうですか?

796 :デフォルトの名無しさん:02/12/26 23:47
>>788
何言ってるのかよく分からない。

>>790
1つ目の質問で standard を選んじゃうととばされそうだね。
あと、いくらなんでも stdin に出力するのは無茶だよ。

797 :デフォルトの名無しさん:02/12/26 23:50
>>796
fgets・・・出力?

798 :デフォルトの名無しさん:02/12/26 23:51
>>797
プログラムを見ろ。

799 :デフォルトの名無しさん:02/12/27 00:04
>>796
一応出力されたけど(stdoutにして。ばかですた)やっぱし790がとばされてる。
どうしてか分かる人いない?

あと788で言ってるのは
FILE *func(void)
{
  FILE *fp;
  fp = fopen("data.txt","r");
  return fp;
}

main()
{
  FILE *fp_main = func();
ってやってfp_mainは使えるよね?ってこと

800 :デフォルトの名無しさん:02/12/27 00:08
>>799
一つ目の質問(input interface)を file にしてもとばされる?
後半の質問についてはできる。

801 :デフォルトの名無しさん:02/12/27 00:10
>>800
とばされなかった。
やっぱバッファ?

802 :デフォルトの名無しさん:02/12/27 00:12
>>801
get_word() のループの所で stdin を EOF まで読んじゃってるから
(それ以降はいくら読み込んでも EOF しか返ってこない)
と、fclose() で閉じちゃってる
という2重のミス。

803 :デフォルトの名無しさん:02/12/27 00:15
>>802
なるほど。てことはどうすりゃいんだ
バッファをクリーンにすればいいな!
あとfcloseで閉じたら何がまずい?

804 :デフォルトの名無しさん:02/12/27 00:17
>>803
バッファは関係ないってば......
output interface の質問を get_word() のループより前に持ってこい。
つまりデータ読み込む前に入力先、出力先の両方ともを尋ねておく。

805 :デフォルトの名無しさん:02/12/27 00:22
>>804
ハイ。
でもまだわかんない。
EOFはget_wordのchに入るだけでそれ以外にはないよね?
出力先を選択するときはmainのほうの変数に入れてるから
もんだいないんでないの?

806 :デフォルトの名無しさん:02/12/27 00:26
koremiro
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=54
tennsaida oreha

807 :デフォルトの名無しさん:02/12/27 00:27
>>805
EOF は特別なデータなの。End Of File。ファイルはもうお終いですよ、って印ね。
それ以外の、通常のデータとは全く意味が異なるの。
それで、EOF を検出したら、それ以降は何度読み込んでも EOF しか返ってこないの。
だから、2度目の fgets() でも即座に EOF を検出して NULL を返してるはず
だから調べてみ。

808 :デフォルトの名無しさん:02/12/27 00:29
>>795は完全無視かい・・・

809 :デフォルトの名無しさん:02/12/27 00:32
>>807
ナルホド
if(fgets(str_2,sizeof(str_2),stdin) == NULL)
printf("30");
ってやったら30とでますた。

ってことはプログラム中ではEOFは一度しか使えないってこと?

810 :デフォルトの名無しさん:02/12/27 00:34
>>808
return 0;

811 :デフォルトの名無しさん:02/12/27 00:37
>>809
EOF は使う、とか言うもんじゃないと思うけど.....

ある一つのファイルについて言えば、一度 EOF を検出したら
それ以降は EOF しか出てこない。
開き直したり fseek() したりしない限り。

812 :デフォルトの名無しさん:02/12/27 00:39
文字列"abcabcabcabc"があって、これのbを0に置き換えて
"a0ca0ca0ca0c"とやるにはどうすればいいですか?
ようするに、文字の置き換えってどうやればいいのですか>

813 :デフォルトの名無しさん:02/12/27 00:40
>>811
ファイルってのはstdinも含めてだよね?
したらさ、たとえばendで終了とかしないと、
このプログラムは動作しないってこと?
fseek使えば可能?

814 :デフォルトの名無しさん:02/12/27 00:42
>>812
配列の要素1つずつ走査していってbなら0を代入する

815 :デフォルトの名無しさん:02/12/27 00:44
>>813
fseek() は stdin には効かないんじゃないかな......
よく知らんわ。とりあえず、たとえ出来ても処理系依存になりそうだから
やめといたほうがいい気がする。自信ないが。
上で教えたように、最初に input、output 両方聞いとくか、
君の言うように end とかのデータ終了の印をつけるようにしとく方がいいかもね。

816 :デフォルトの名無しさん:02/12/27 00:45
>>815
わかりました。あとは自分で調べて見ます。
みんなサンクス!!

817 :デフォルトの名無しさん:02/12/27 00:46
>>816
もう寝るんでつか?


818 :デフォルトの名無しさん:02/12/27 00:47
酒飲んだら眠くなってきたんで。
スマソ

819 :デフォルトの名無しさん:02/12/27 00:47
でつとか言ってる奴ってマジキモイと思ってるのは俺だけではないはず。

820 :デフォルトの名無しさん:02/12/27 00:50
>>819
そうでつよね。マジキモイでつ。逝ってよしでつ。

821 :デフォルトの名無しさん:02/12/27 00:50
>>819
そう思うならここには来ないほうがいい。
キモイと思ったやつは2chから去っていく

822 :デフォルトの名無しさん:02/12/27 00:51


http://berry6.hp.infoseek.co.jp/
パートナーのいない人は急げ!
まったり、しっとり過ごしましょ(o^.^o)



823 :デフォルトの名無しさん:02/12/27 00:52
2匹ゲットでつ。

824 :デフォルトの名無しさん:02/12/27 00:53
>>821
2chだから言えるのですよ。現実では、
「漏れもそういうヤシ大好きなんでつ」
なんていってるやつに面と向かってキモイとか言えないし。


825 :デフォルトの名無しさん:02/12/27 00:54
>>823
いたいたしいからやめれ

826 :デフォルトの名無しさん:02/12/27 00:56
さらに2匹ゲットでつ。

827 :デフォルトの名無しさん:02/12/27 00:57
>>817
あんた、結構鋭いね・・・

828 :754:02/12/27 00:59
・・・ネタだよな?
漏れは char[5][10] へのポインタの変数 p を定義して、と言ったんだけど・・・。

>>768
それは char へのポインタ へのポインタ変数 p。

>>772
それは char へのポインタ へのポインタ変数 p に未定義の変数 a[5][10] の値を
代入している。

>>774
それは char へのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタへのポインタへの
ポインタへのポインタへのポインタへのポインタへのポインタ変数 p に未定義の
変数 a[5][10] の値を代入している。

829 :デフォルトの名無しさん:02/12/27 01:03
さて、ポインタと何回言ったでしょう?

830 :デフォルトの名無しさん:02/12/27 01:04
>>829
ん?1〜829まで?

831 :デフォルトの名無しさん:02/12/27 01:06
>>830
>>828だけでおながいしまつ......

832 :デフォルトの名無しさん:02/12/27 01:06
>>829
829 においては 1 回。

833 :754:02/12/27 01:07
1 コ多かったかも知らん・・・鬱

834 :デフォルトの名無しさん:02/12/27 01:10
ちなみに、1〜829 においては 113 回。
意外と少なかった。

835 :デフォルトの名無しさん:02/12/27 01:11
>>834
いいかげんに、寝ろ!!

836 :デフォルトの名無しさん:02/12/27 01:12
にごり酒が好きな香具師は心がにごっている!!

837 :デフォルトの名無しさん:02/12/27 01:12
>>832>>834
ブーッ!! ブーッ!! ブリブリブリッ!! ブピャーーーーーーーーッッッ!!!!!
正解正解不正解ーーーーー!!!!

書き込みしただけで1回も「言って」ません。

すなわち答えは0回!!
アヒャヘ(゚∀゚ヘ)(ノ゚∀゚)ノアヒャヒャ

838 :デフォルトの名無しさん:02/12/27 01:14
>>837
なるほど〜・・・
そう来るかね・・・

839 :デフォルトの名無しさん:02/12/27 01:14
なんだとー

840 :デフォルトの名無しさん:02/12/27 01:14
> アヒャヘ(゚∀゚ヘ)(ノ゚∀゚)ノアヒャヒャ

冬厨あほらしか

841 :デフォルトの名無しさん:02/12/27 01:15
俺が言った
ついつい書き込みを口に出して・・・

842 :デフォルトの名無しさん:02/12/27 01:18
>>841
そうだよな。
みんな書き込みをしながら、口に出して言っているかも・・・
独り言のように・・・

843 :デフォルトの名無しさん:02/12/27 01:19
ごめん、おれポインタって100回言っちゃった。
好きなもんで。。

844 :デフォルトの名無しさん:02/12/27 01:20
>>843
タポイン・・・

845 :デフォルトの名無しさん:02/12/27 01:20
負け惜しみ(・A・)イクナイ!!
素直に
「ごめんなさい。間違えました。これからは何でも言うこと聞きます。王様。
足なめさせてください。ペロペロ。美味です。王様。
私を弟子にしてください。王様。最高です。王様」
と言えばいいものを。

846 :デフォルトの名無しさん:02/12/27 01:20
>>842
この真夜中に・・・

847 :デフォルトの名無しさん:02/12/27 01:22
>>845
ごめんなさい。間違えました。これからは何でも言うこと聞きます。王様。
足なめさせてください。ペロペロ。美味です。王様。
私を弟子にしてください。王様。最高です。王様。ウヒ

848 :デフォルトの名無しさん:02/12/27 01:23
(・∀・) バーヤ

849 :デフォルトの名無しさん:02/12/27 01:24
> 負け惜しみ(・A・)イクナイ!!
> 素直に
> 「ごめんなさい。間違えました。これからは何でも言うこと聞きます。王様。
> 足なめさせてください。ペロペロ。美味です。王様。
> 私を弟子にしてください。王様。最高です。王様」
> と言えばいいものを。

> 私を弟子にしてください。王様。最高です。王様。ウヒ

冬厨あほらしか

850 :デフォルトの名無しさん:02/12/27 01:24
>>845
美味しゅうございます〜♪ウヒョ

851 :デフォルトの名無しさん:02/12/27 01:26
そろそろ、荒れ具合もやばくなってきたので、冬厨放置で。

852 :デフォルトの名無しさん:02/12/27 01:32
char[5][10] へのポインタの変数 p を定義してみて。

853 :デフォルトの名無しさん:02/12/27 01:32
char (*p)[5][10];

854 :デフォルトの名無しさん:02/12/27 01:36
>>853
空気読めよ

855 :デフォルトの名無しさん:02/12/27 01:37
________.  |  ・・・「からけ」?
|||          | \____ __
|||          |  )\       ∨
|||    空  気.   <⌒ヽ ヽ
|||         \ ( ´ー`)    ∧∧
|||_________V(   丿V^  ●Д゚,,)>>853
|,,|          |,,| ヽ (      と  ,)
              ノ )     |  |〜
                     し`J,,.

856 :デフォルトの名無しさん:02/12/27 01:38
ツレタ!!ブヒャー(w

857 :デフォルトの名無しさん:02/12/27 01:39
>>856
必死だな

858 :デフォルトの名無しさん:02/12/27 01:40
>>857
必死だよ

859 :デフォルトの名無しさん:02/12/27 01:40
>>856
リコーダーも満足に吹けないくせに粋がってんじゃねぞ

860 :デフォルトの名無しさん:02/12/27 01:41
>>858
哀れだな

861 :デフォルトの名無しさん:02/12/27 01:42
>>859
「ド」は調によって(ry

862 :デフォルトの名無しさん:02/12/27 01:42
>>858
哀れだよって言ってやれ!!

863 :デフォルトの名無しさん:02/12/27 01:43
冬厨の方のための専用スレです。
マターリしてきてください。

【冬厨】Cの文句は俺に言えぇ!part1【歓迎】
http://pc3.2ch.net/test/read.cgi/tech/1039768013/

864 :デフォルトの名無しさん:02/12/27 01:43
>>862
哀れ.....ごめん.....読めね....「もれ」?

865 :デフォルトの名無しさん:02/12/27 01:44
part1 かよ・・・

866 :デフォルトの名無しさん:02/12/27 01:46
冬休みに入ったんだと実感しました

867 :デフォルトの名無しさん:02/12/27 01:49
引数を取らず、char[5][10] へのポインタを返す関数 f のプロトタイプは。

868 :デフォルトの名無しさん:02/12/27 01:54
感動しますた

869 :デフォルトの名無しさん:02/12/27 01:55
char (*f(void))[5][10];

870 :デフォルトの名無しさん:02/12/27 01:55
デルフィニア戦記を読んだ人いますか?

871 :デフォルトの名無しさん:02/12/27 01:55
わかんないなら、素直に引数で渡せよ・・・

872 :デフォルトの名無しさん:02/12/27 01:55
>>869
空気読めよ

873 :デフォルトの名無しさん:02/12/27 01:56
________.  |  ・・・「からけ」?
|||          | \____ __
|||          |  )\       ∨
|||    空  気.   <⌒ヽ ヽ
|||         \ ( ´ー`)    ∧∧
|||_________V(   丿V^  ●Д゚,,)>>869
|,,|          |,,| ヽ (      と  ,)
              ノ )     |  |〜
                     し`J,,.

874 :デフォルトの名無しさん:02/12/27 01:57
>>871
で・・・何の話?

875 :デフォルトの名無しさん:02/12/27 01:57
ツレタ!!ブヒャー(w

876 :デフォルトの名無しさん:02/12/27 01:59
引数を取らず、char [5][10] へのポインタを返す関数へのポインタを引数とし、char [5][10] へのポインタを返す関数へのポインタの配列を定義してください。

877 :デフォルトの名無しさん:02/12/27 02:12
>>876
>char [5][10] へのポインタを返す
(゚Д゚)ハァ?

878 :デフォルトの名無しさん:02/12/27 02:13
char (*(*p[ARRAY_SIZE])(char(*(*)(void))[5][10]))[5][10];

879 :デフォルトの名無しさん:02/12/27 02:18
さて、寝ようかな・・・ん?ちょっとまって・・・今行くから・・・

880 :デフォルトの名無しさん:02/12/27 02:19
>>877
ネタですか?

881 :デフォルトの名無しさん:02/12/27 02:22
876

type_a = char [5][10] へのポインタ
type_b = 引数を取らず、type_a を返す関数へのポインタ
type_c = type_b を引数とし、type_a を返す関数へのポインタ
type_c の配列を定義してください。

#include <iostream>
typedef char (*type_a)[5][10];
typedef type_a ((*type_b)(void));
typedef type_a ((*type_c)(type_b));
const size_t array_size = 256;
int main()
{
 type_c func_table[array_size];
 std::cout << typeid(func_table).name() << std::endl;
}

これで調べるのは反則でつか?

882 :デフォルトの名無しさん:02/12/27 02:26
冬厨の方々は寝静まりやがりましたか?

883 :デフォルトの名無しさん:02/12/27 02:26
>>881
ここは
  C 言 語 の ス レ
ですよ?

884 :デフォルトの名無しさん:02/12/27 02:27
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
◆裏情報取引サイト→http://www.kawachi.zaq.ne.jp/dpdan803/
◆国際免許取得→→→http://www.kawachi.zaq.ne.jp/dpdan803/
◆悪徳業者情報→→→http://www.kawachi.zaq.ne.jp/dpdan803/
◆あらゆる調査→→→http://www.kawachi.zaq.ne.jp/dpdan803/
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
+

885 :デフォルトの名無しさん:02/12/27 02:28
>>883
だから何?

886 :デフォルトの名無しさん:02/12/27 02:35
フンベルト=ホーン=ギッキンゲン男爵

887 :デフォルトの名無しさん:02/12/27 02:47
お前の行動は見切った!!

888 :デフォルトの名無しさん:02/12/27 09:02
888get

889 :デフォルトの名無しさん:02/12/27 09:38
>>888
(・∀・) バーカ!!

890 :デフォルトの名無しさん:02/12/27 12:36
>>870
読みましたが何か?

891 :デフォルトの名無しさん:02/12/27 14:13
>>789
Bがあったからだろ。

892 :デフォルトの名無しさん:02/12/27 14:18
>>891でもBはスカラがなかったんだよね

893 :デフォルトの名無しさん:02/12/27 14:54
>>892
スカラって何?
食べられる?
食べられるとしたらおいしい?
どんな味?
コハダ?
臭い?
金玉の下の方を触った時の手の臭い?
どう?
どうなの?

894 :デフォルトの名無しさん:02/12/27 16:08
>>893
スカラ=巣殻
鳥の巣の殻のことだよ

895 :デフォルトの名無しさん:02/12/27 16:09
charとかint,double,列挙型,及びポインタのこと
簡単にいうとBは型がない(正確にはあるんだけど)言語だったってこと

896 :デフォルトの名無しさん:02/12/27 16:34
防御力がアップしたよ

897 :デフォルトの名無しさん:02/12/27 17:04
>>893
プログラム板なんだから、「スカラ」とは「スカラベ」のこと。
「べ」がどこから来たかというと、スカラの対義語の「ベクトル」から来た。
昔は「スカラベクトル」と呼んで区別されていたのが、
意味が曖昧になり「スカラ」の意味しか持たなくなった。
それくらい辞書引けよ

898 :デフォルトの名無しさん:02/12/27 17:06
>>897
ほそく

古代エジプトではスカラベを創造とか生成の意味で呼んでいた。
現代プログラムでは、プログラミングの過程を意味する。

899 :デフォルトの名無しさん:02/12/27 17:08
辞書に載ってないのでどれが正しいのか・・・
一番もっともらしい >>898 を信じることにします

900 :デフォルトの名無しさん:02/12/27 17:20
>899
898のほそく
いわゆるフンコロガシの仲間。
映画「ハムナプトラ」では肉食のスカラベが人を襲う話があります。

901 :デフォルトの名無しさん:02/12/27 18:07
>>898
ワロタ
C言語にはスカラがあるんだね。
俺も今度スカラを使ったプログラムを作るよ!

902 :デフォルトの名無しさん:02/12/27 19:15
ここにはネタが豊富ですね。

903 :デフォルトの名無しさん:02/12/27 22:04
それを言うなら、

ここはネタが豊富なインターネットですね。

904 :デフォルトの名無しさん:02/12/27 23:16
この橋渡るすからべ

905 :デフォルトの名無しさん:02/12/27 23:32
そ、それは擦れ違…

906 :デフォルトの名無しさん:02/12/28 01:06
ビットフィールドって配列にできないんですか?
ループ文でまわしたいんですけど。
struct a{
  unsigned char n[8] :1
};
だとだめですし。
struct a{
  unsigned char n1 :1
  unsigned char n2 :1
ってやってくしかないですか?

907 :デフォルトの名無しさん:02/12/28 01:07
>>906
どういう処理をしたいわけ?

908 :デフォルトの名無しさん:02/12/28 01:14
>>906
全く別の方法だけど、
例えばunsigned charの変数を宣言して各ビットを使うんじゃダメ?

909 :デフォルトの名無しさん:02/12/28 01:14
for(i;i<8;i++){
if(a1.ni==1){
・・・
って感じです。シフト演算使えってのはなしで。

910 :デフォルトの名無しさん:02/12/28 01:16
>>908
unsigned char型の変数を評価したいので、そういうわけには。

911 :デフォルトの名無しさん:02/12/28 01:18
>>906
シフト演算で廻せばイイジャン

//int bitfield,BOOL[] hoge
int i,count;
for(i = 1,count = 0 ;i < 0xFF; i << 1,count++){
hoge[count] = (i & bitfield == 0);
}

こんなかんじで。最近C屋ってないから文法これでいいのかどう
かわからんけど(スマソ


912 :デフォルトの名無しさん:02/12/28 01:22
レスくれた方、ありがとうございました。
やはりシフト演算ですか。

913 :デフォルトの名無しさん:02/12/28 01:26
>>912
STLportのstd::bit_vectorは?あ、C++は使わないのか。

914 :デフォルトの名無しさん:02/12/28 01:27
C++だと[]演算子をオーバーロードして、ビットフィールドのようなマネを
させられるから、どう?だめ?

915 :デフォルトの名無しさん:02/12/28 01:33
C++厨は(・∀・)キエロ!!

916 :デフォルトの名無しさん:02/12/28 02:37
>>915
Java厨みたいなこというなよ

917 :デフォルトの名無しさん:02/12/28 02:40
>>915
VB厨みたいなこというなよ

918 :デフォルトの名無しさん:02/12/28 03:16
でもさあ、C++でビットフィールドをエミュレートするとしても、左辺値の[]演算子
の実装はとても面倒臭いよ。

1ビットを1バイトで表すんなら簡単なんだが。

919 :デフォルトの名無しさん:02/12/28 05:01
どこが?
8 で割った商と余りを使えばいいだけの話だろ。

920 :デフォルトの名無しさん:02/12/28 05:06
あー、もうすぐ次スレの季節だが、1 のテンプレにはぐれぐれも

    沢 村 立 入 禁 止

と書いておいてくれよ。

921 :デフォルトの名無しさん:02/12/28 13:00
>>918
std::vector<bool> とか std::bitset とか既にあるんだから、
わざわざ車輪を再発明せんでも。

922 :デフォルトの名無しさん:02/12/28 16:45
ビットフィールドはビット演算の一部を簡略化するもの。
対応できないなら自力でやればいい。

#include <limits.h>
int get_bit(char bits[], int n) {
 return (bits[n / CHAR_BIT] & (1 << n % CHAR_BIT)) != 0;
}
void set_bit(char bits[], int n) {
 bits[n / CHAR_BIT] |= 1 << n % CHAR_BIT;
}
void clr_bit(char bits[], int n) {
 bits[n / CHAR_BIT] &= ~(1 << n % CHAR_BIT);
}
void put_bit(char bits[], int n, int b) {
 (b ? set_bit : clr_bit)(bits, n);
}

923 :デフォルトの名無しさん:02/12/28 20:42
再帰処理の使い道がいまいちわかりません
そこらへんの本に書いてある再帰だったら
普通にループした方が簡単だと思うのですが

924 :デフォルトの名無しさん:02/12/28 22:05
>>923
普通にループでいいよ。

925 :デフォルトの名無しさん:02/12/28 22:06
>>923
ディレクトリを巡回してサブディレクトリを全て表示するプログラム書いてみな。
再帰と非再帰の二通りで。

926 :923:02/12/28 22:35
>>925
なるほどね それだと確かに再帰じゃないと無理かも

927 :デフォルトの名無しさん:02/12/28 22:51
>>926
いや、無理というわけじゃないよ。再帰はループに落とせる。
ただ面倒なだけ。

928 :923:02/12/28 22:57
再帰で書かないとループの中に
更にループ書かなきゃいけなくなる?

929 :デフォルトの名無しさん:02/12/28 23:01
ちゃう。
再帰で積まれるスタックを自前で管理する必要が出てくる。


930 :923:02/12/28 23:06
ループで書くとオーバー風呂しちゃうかもってこと?

931 :デフォルトの名無しさん:02/12/28 23:21
>>923
とりあえず書いてみるとか・・

932 :デフォルトの名無しさん:02/12/28 23:22
こんな感じか>非再帰版。
ちなみにstackをqueueに書き換えると深さ優先から幅優先探索になる。

void traverse(char *path)
{
 int i;
 stack_push(path);
 while(!stack_empty())
 {
  char *path = stack_pop(); // 巡回された
  printf("%s\n", path);
  for(i=0; i<sub_dir_count(path); i++) // サブディレクトリをスタックに追加
   stack_push(get_sub_dirs(path, i));
 }
}

933 :デフォルトの名無しさん:02/12/29 00:45
>>930
気のせいか ループであふれるんだったら再帰でもあふれるような



934 :わたしは泣いたことがない:02/12/29 00:51
 入力書式についてお聞きしたいのです。

 入力バイト数変換%nが思った通りの値を返してくれません。
例えば以下のコードで、私は i=1が得られると思ったのですが、
私の環境では0になりました。
 私は何を間違っているでしょうか?


int myStr( const char *s )
{
char c;
int i;

ssccanf( s, "%1c%n", &c, &n );
return n;
}

935 :わたしは泣いたことがない:02/12/29 00:54
>934
 かきもれましたが、sには入力失敗しない文字列があります。
仮に"A000"のような。

936 :デフォルトの名無しさん:02/12/29 00:58
愛がないよ?

937 :私はないたことがない:02/12/29 01:05
>934
>936
 すみませんかきまちがえました。

int myStr( const char *s )
{
char c;
int i;

ssccanf( s, "%1c%n", &c, &i );
return i;
}


938 :デフォルトの名無しさん:02/12/29 01:17
>>937
俺の環境にはssccanf()って関数はないので分からんが、
代わりにsscanf()を使うと1が返って来た(gcc 3.2.1+glibc 2.3.1)。

939 :私は泣いた事がない:02/12/29 01:41
>938
 sscanf()です。すみません粗忽ものなので。
 調べてみると、書式文字列の先頭にc変換があり、かつ、
その直後にn変換がある場合には、n変換で得られる値は
仕様上予期される値よりも1だけ少ない値になることが
わかりました。 
 コンパイラのバグのようです。これで1日潰しました。ありがとうございました。 

940 :デフォルトの名無しさん:02/12/29 03:52
2GET

941 :VC6SP5@Windows2000:02/12/29 10:35
下のようなコードを書いて実行してみましたが、
sprintfで作成された文字列(test)がそのままbuf1に入ってしまいます。
文字列を上手く分割するには、strstrやstrchrを使ってstrcpyなどでコピーするしかないでしょうか?

--ここから--
#include <stdio.h>

int main()
{
    char test[256], buf1[256], buf2[256], buf3[256];

    sprintf(test, "%s,%s,%s", "abc", "def", "ghi");
    sscanf(test, "%s,%s,%s", buf1, buf2, buf3);

    return 0;
}

942 :デフォルトの名無しさん:02/12/29 10:59
>>941
スペースを使え
sprintf(test , "%s %s %s" , ...);
sscanf(test , "%s %s %s" , ...);

943 :デフォルトの名無しさん:02/12/29 11:05
たしか、sscanfで[,]とか使うんだよな、、、

944 :941:02/12/29 11:07
>>942
レスありがとうございます。
スペースを使いたいのはヤマヤマですが、デリミタがコンマと決まっているので…。
もともとのデータにスペース入ってたらおかしくなりません?
>>941の例でいうと、"abc" ではなく"a bc"となっていた場合)

945 :デフォルトの名無しさん:02/12/29 11:08
新スレ立ちました。

http://pc3.2ch.net/test/read.cgi/tech/1041127646/

946 :デフォルトの名無しさん:02/12/29 11:11
>>945
氏ね

947 :デフォルトの名無しさん:02/12/29 11:14
http://che-ez.hp.infoseek.co.jp/shougi.rar

にうpしたプログラムで、表示がうまくされません。誰か教えてください。よろしくお願いします。

948 :デフォルトの名無しさん:02/12/29 11:15
>>944
,じゃあ文字列かどうかの判定ができないから。
スペース2つ入れるとか3ついれるとかでは駄目なの?

949 :947:02/12/29 11:16
新スレのほうにも書きもみました。

950 :デフォルトの名無しさん:02/12/29 11:16
>>947
ウィルスです。開かないように。

951 :941:02/12/29 11:34
>>948
なるほど。
スペースがいくつ入るか、と言うことを想定しないほうが後々のバグがなくなると思いまして。

手を抜いちゃダメっすね。。。やっぱり。

952 :デフォルトの名無しさん:02/12/29 12:16
>>951
確実に文字列が','で区切られているなら自分で関数作った方がいいのでは。


953 :941:02/12/29 12:41
>>952
了解。

954 :デフォルトの名無しさん:02/12/29 13:39
昔からある次スレ
テンプレ貼っておいたよ。
1-66 は透明あぼ〜んしてね

C言語を俺に聞け 第48回ぐらいか?
http://pc3.2ch.net/test/read.cgi/tech/1037279828/


955 :954:02/12/29 14:33
専用ブラウザでない人はこちらのリンクをどうぞ

http://pc3.2ch.net/test/read.cgi/tech/1037279828/67-

956 :デフォルトの名無しさん:02/12/29 16:50
素数を列挙するプログラムですが、配列を用意して、エラストテネスのふるい
を利用したアルゴリズムでできますね。しかし、上限が100000000以上の場合、
配列を用意することができません。どなたか他のアルゴリズムが分かる方、い
ませんでしょうか?

957 :デフォルトの名無しさん:02/12/29 17:30
>>956
素数列挙アルゴリズムのスレがあったろ

958 :デフォルトの名無しさん:02/12/29 17:35
>>956
> 上限が100000000以上の場合、 配列を用意することができません。
ここの部分を詳しく説明してみそ。

959 :956:02/12/29 17:49
>>958
MAXが与えられたとして、
エラストテネスのふるい
を利用したMAXまでの素
数を列挙するアルゴリズ
ムって、array[MAX]を最
初に宣言しますね。で、
全部1に初期化してから
素数じゃないヤツを0に
して、array[i]が1なら
ばiが素数となるはず。
もしこのときMAXが100,
000,000を超えっちまっ
たら、
int array[100,000,000];
なんて宣言できないじゃん?

960 :デフォルトの名無しさん:02/12/29 17:50
疎な配列使え

961 :名無し:02/12/29 18:03
**pのようなポインタのポインタはどのような時に使うのですか?

962 :デフォルトの名無しさん:02/12/29 18:06
>>961
strtolとか。
ポインタ変数のアドレスを渡してそこにポインタを入れてもらう。

963 :956:02/12/29 18:06
>>961
ポインタを指すポインタ
p is a pointer to pointer
英語で読むと分かりやすい。初心者の俺がいうのもなんだが。
だれか俺の質問956にも答えてくらはい。

964 :名無し:02/12/29 18:08
>>962,963
ありがとうございました。

965 :デフォルトの名無しさん:02/12/29 18:15
>>959
エラトステネスのふるいってアルゴリズムを勘違いしていた。スマン。

ふるいをかける区間を分割してみたら。

966 :デフォルトの名無しさん:02/12/29 20:44
質問なのですが、
ネットの回線速度をタスクバーに表示したいのですが
どうしたらいいのかよく分からないのです。
回線速度を折れ線グラフで表したいのですが・・・。
どうかよろしくお願いします。

967 :デフォルトの名無しさん:02/12/29 21:06
>>966
どこまでできてんの?

968 :966:02/12/29 21:24
実はTClockの回線速度を折れ線グラフにして
TClockでタスクバーに表示されてる文字と重ならないようにしたいのです。
現在のは重なってしまうため、TClockの表示が見づらくなってしまうのです。
なので、回線速度はまた別のアプリとして作りたいのです。

TClockにはソースが同梱されてるのでその中の
回線速度を表示するソースだけmake、コンパイルすれば
いいと思ったのですが考えが甘かったみたいで
DOS上でコンパイルすると
「EXEファイルのエラーです」
とでてしまうのです。

それでここで聞いてみたのです。
最初は投げやりな感じですいませんでした。
よろしくお願いします。

969 :966:02/12/29 22:11
ソースアップしたほうがいいですか?

970 :デフォルトの名無しさん:02/12/29 22:14
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

971 :デフォルトの名無しさん:02/12/29 22:25
とりえあえずは。

972 :デフォルトの名無しさん:02/12/29 22:35
> ネットの回線速度
> タスクバー

スレ違い。

973 :デフォルトの名無しさん:02/12/29 22:43
http://www53.tok2.com/home/vbc/cgi-bin/upload/source/up1012.lzh
これです。
どうかよろしくお願いします。

974 :デフォルトの名無しさん:02/12/29 23:40
ここって、質問する時にプログラムを晒してもいいの?

975 :デフォルトの名無しさん:02/12/29 23:45
>>974
程度にもよる。1000行以上のプログラムを見てくれっていわれても誰も見ない。

976 :デフォルトの名無しさん:02/12/29 23:46
>>974
短かいプログラムであれば・・・

977 :デフォルトの名無しさん:02/12/29 23:59
ものすごく初歩的なことで悪いんですが、
for(i=0; i<N; i++){
  …
 for(j=0; j<N; i++){
   …
}
}

こういうループの中で、配列の内容を書き換えて、
その配列をループの外でprintfで出力しても、書き換えた値がちゃんと出力されますよね?
何度やっても、不思議なことに、どこから出てきたか分からない数値が出てくるんです。

それでプログラムに間違いがあるのかと思ったんですが、ループの中で一度printfで出力させてから、
ループの外で再び出力すると、正確な値が出てくるんです。

やっぱりどこかで気付かない間違いをしてるんですかね?

978 :デフォルトの名無しさん:02/12/30 00:00
>>974
ここは添削スレじゃない。
ソース丸投げして 「さあ問題箇所を探してくれ」 とやった場合、大抵無視される。

このスレで質問したいなら、ソース丸投げではなく、問題箇所をはっきりさせて
おいた方がいい。
質問を説明するためにソースが必要なら、問題が再現する最低限のソースを
書けばいい。

979 :966:02/12/30 00:01
だめなんですかね・・・?

980 :デフォルトの名無しさん:02/12/30 00:04
>>977
肝心なループの中の処理を晒せ

981 :デフォルトの名無しさん:02/12/30 00:04
>>979
>>972>>1 を見ろ。

982 :デフォルトの名無しさん:02/12/30 00:05
すいませんでした。
別スレで聞いてきます。

983 :デフォルトの名無しさん:02/12/30 00:08
int main()
{
double x[4],y[4];
double a[4][4];
int i,j,k;

for(k=0; k<13; k++){
for(i=0; i<4; i++){
y[i]=0;
for(j=0; j<4; j++){
y[i]=a[i][j]*x[j]+y[i];
}
}

for(i=0; i<4; i++){
x[i]=y[i]/max(y);
}

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

こんな感じなんですが。ちなみにこのprintfは、ちゃんと正確に出力されてます。

984 :デフォルトの名無しさん:02/12/30 00:08
>>977
内側のfor文のi++は?

985 :デフォルトの名無しさん:02/12/30 00:09
行列を扱うためのループです

986 :デフォルトの名無しさん:02/12/30 00:20
>>984
j++の間違いだろうね

987 :デフォルトの名無しさん:02/12/30 00:23
switch文を入れ子にすることは可能ですか?
ビルドしてみると、エラーが出てしまうのですが
なんとかなりませんか?

988 :984:02/12/30 00:25
>>986
そこが違うのでは?と言うつもりで書いたんだけど・・・
普通に説明されてしまったよ・・・

989 :デフォルトの名無しさん:02/12/30 00:26
>>987
可能。そーすさらせ。

990 :977=983:02/12/30 00:28
>>984 >>986 >>988
これは単なる書き間違いです。
すいません。
983でループの中の処理を晒しました。

991 :デフォルトの名無しさん:02/12/30 00:29
そろそろ新スレ作ります

992 :デフォルトの名無しさん:02/12/30 00:34
新そばをおながいします

993 :デフォルトの名無しさん:02/12/30 00:37
>>983
う〜ん・・・


994 :デフォルトの名無しさん:02/12/30 00:41
うんこ

995 :デフォルトの名無しさん:02/12/30 00:45
> double x[4],y[4];
> double a[4][4];

一体これはいつ初期化されているんだい?
未初期化のまま

> y[i]=a[i][j]*x[j]+y[i];

とかやったって、ゴミが演算対象になるだけだろう。
コンパイラは警告を出さないのか?

996 :デフォルトの名無しさん:02/12/30 00:50
>>995
そうだな、staticを付けて0初期化させとかないとな。

997 :デフォルトの名無しさん:02/12/30 00:53
スレが996まで行ってるのに
平然と会話をするこの様は
漏れにとっては不思議で仕方が無い

998 :977=983:02/12/30 00:55
>>995
>>996
いえ、初期化はちゃんとしてます。
ただ、重要なのはループの中身だと思って書いてません。

999 :デフォルトの名無しさん:02/12/30 00:55
h


1000 :デフォルトの名無しさん:02/12/30 00:56
1000!!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

212 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)