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

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

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

1 :デフォルトの名無しさん:03/06/28 22:26
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

コンパイラを探しているなら >>2-13 を。
C machineはCに非ず
上記を逸した場合の結果は激しく未定義だYO!

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

前スレ C言語なら俺に聞け! Part 〈58〉
http://pc2.2ch.net/test/read.cgi/tech/1056109884/
http://www.darkcat.on.arena.ne.jp/cgi-bin/dknbbs2/bbs.cgi?usr=hello_world82563#

2 :デフォルトの名無しさん:03/06/28 22:27
【コンパイラ】
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 :955:03/06/28 22:27
>>1


4 :デフォルトの名無しさん:03/06/28 22:30
return の意味が分かりません。
何冊本を読んでも、何回検索して調べても分かりません。
簡単に説明してもらえませんか?

5 :デフォルトの名無しさん:03/06/28 22:30
>>4
呼び出し元へ戻る

6 :デフォルトの名無しさん:03/06/28 22:30
>>4
呼び出し元へ戻る

7 :4:03/06/28 22:33
呼び出し元に戻るってのは・・・。
return 0;や
return a;
の時のときもですよね?

8 :デフォルトの名無しさん:03/06/28 22:34
>>7
そうだ。


9 :4:03/06/28 22:37
で呼び出し元っていうのは?

10 :デフォルトの名無しさん:03/06/28 22:39
>>9
その関数を呼び出したところへ

11 :4:03/06/28 22:39
>>9は漏れじゃないです。
でもそれも気になるけど・・

12 :4:03/06/28 22:40
戻ったら終了ですか?

13 :デフォルトの名無しさん:03/06/28 22:41
>>12
main関数から戻れば

14 :4:03/06/28 22:41
mainのときの呼び出し元とはどうなるでしょう?

15 :4:03/06/28 22:43
>>14も漏れじゃないです

16 :デフォルトの名無しさん:03/06/28 22:43
>>14
os

17 :4:03/06/28 22:45
>>12も漏れじゃないです

18 :4:03/06/28 22:45
>>4も漏れじゃないです

19 :デフォルトの名無しさん:03/06/28 22:45
returnの中の人も大変だな

20 :4:03/06/28 22:46
return 0;の時の0はOSに戻るってこと?
return a;なら・・・

21 :4:03/06/28 22:47
>>20
mainからのreturnは。

22 :returnの住民:03/06/28 22:48
おい、おまいら。
漏れたちreturnを使うんじゃない。
めんどくさいんだよ。いちいち戻るのが。

23 :デフォルトの名無しさん:03/06/28 22:49
脳がタリーンってことで

24 :デフォルトの名無しさん:03/06/28 22:50
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>23

25 :returnの住民:03/06/28 22:54
ぬるぽん。ぬるぽん。ぬるぽん。

26 :4:03/06/28 22:55
returnを使わないで戻れますか?

27 :デフォルトの名無しさん:03/06/28 22:56
>>4
その程度調べられないんじゃ、もうやめとけ。
勉強するだけ無駄!!

28 :デフォルトの名無しさん:03/06/28 22:56
>>26
伝家の宝刀「longjmp」

29 :4:03/06/28 22:58
色々と検索してここを発見。

30 :デフォルトの名無しさん:03/06/28 22:59
>>4
本読んでもreturnが分からないようじゃ
プログラムはやめたほうがいいね!

31 :4:03/06/28 23:02
本には「return 0;」は絶対に書くものだと
覚えておけばいいでしょうだとさ

32 :デフォルトの名無しさん:03/06/28 23:03
>>31
その通り

size_t strlen(const char *str)
{
for(;*str;str++)
;
return 0;
}


33 :4:03/06/28 23:03
>>30
プログラミングは続けるけどね!

34 :デフォルトの名無しさん:03/06/28 23:04
void のいみないじゃん

35 :4:03/06/28 23:05
void型のポインタってどういうときに使いますか?

36 :デフォルトの名無しさん:03/06/28 23:07
使うな、そんなもん

37 :デフォルトの名無しさん:03/06/28 23:08
メモリ動的確保

38 :4:03/06/28 23:15
近所のお姉さんと和姦したいのですが?

39 :デフォルトの名無しさん:03/06/28 23:25
なんか、偽者の4が多いような気がする。

40 :デフォルトの名無しさん:03/06/28 23:26
気のせい

41 :4:03/06/28 23:31
C言語に文字列型はないんですか?

42 :デフォルトの名無しさん:03/06/28 23:39
     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <>>41 文字の配列という考えしかないようです(゜∇゜)/
  =〔~∪ ̄ ̄〕                 「ウンマンコ」
  = ◎――◎  


43 :4:03/06/28 23:40
なんでかエラーが出ます。

char moji[100];
moji = "abc";

44 :デフォルトの名無しさん:03/06/28 23:42
     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <いや、ですから moji[0]='a' とかしないと・・(゜∇゜)/
  =〔~∪ ̄ ̄〕                        「ウンマンコ」
  = ◎――◎  


45 :4:03/06/28 23:45
なんでか動作がおかしいです。

if ( a < x < b ) {
    ...
} else {
    ...
}

46 :デフォルトの名無しさん:03/06/28 23:45
char moji="abc";
ならいけるよ

47 :デフォルトの名無しさん:03/06/28 23:46
>>46
コンパイルエラーの予感

48 :デフォルトの名無しさん:03/06/28 23:46

     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <いや、ですから a<x&&x<b とかしないと・・(゜∇゜)/
  =〔~∪ ̄ ̄〕                        「ウンマンコ」
  = ◎――◎  


49 :47:03/06/28 23:47
警告か

50 :デフォルトの名無しさん:03/06/28 23:47
こっちだった
char moji[]="abc";

51 :デフォルトの名無しさん:03/06/28 23:52
>>45
アホだ
if ( a < x < b ) ×
if ( a<x && x<b ) ○

52 :4:03/06/28 23:55
a++と++aの違いは何ですか?

53 :47:03/06/28 23:55
整数型とポインタなら一応は互換性があるということか。
double d="abc";ではエラーだしな。

54 :デフォルトの名無しさん:03/06/28 23:57
>>4って
わざとか!

55 :4:03/06/28 23:58
mainにreturnもexitもない場合何がosに返りますか?

56 :デフォルトの名無しさん:03/06/29 00:04
>>47
キャストすれば?

57 :デフォルトの名無しさん:03/06/29 00:04
 a < x < b

って、

 (a<x) < b

と等価だっけ?

58 :4:03/06/29 00:04
引数が評価される順番は決まってますか?

void func(int a, int b, int c)
printf("%d, %d, %d", a, b, c);
}

a = 0;
func(++a, ++a, ++a);

59 :デフォルトの名無しさん:03/06/29 00:08
すっかりネタスレかよ。本スレたてようか?

60 :デフォルトの名無しさん:03/06/29 00:09
>>ALL
もうそろそろ、ネタはやめようよ

61 :デフォルトの名無しさん:03/06/29 00:09
>>59
頼む

62 :デフォルトの名無しさん:03/06/29 00:10
>>61
了解。試してみる。

63 :4:03/06/29 00:11
------------------------------------------------------------------
ここまでテンプレ

64 :デフォルトの名無しさん:03/06/29 00:13
ちぃ、、、立てられなかった。

65 :デフォルトの名無しさん:03/06/29 00:14
>>59==62
スレ削除依頼出すなら良いけど
そうじゃないなら、立てちゃ駄目だよ

66 :デフォルトの名無しさん:03/06/29 00:18
65=偽4

67 :デフォルトの名無しさん:03/06/29 00:20
マ、100越える頃には落ちつくだろ。
よくあることだ。おおらかにいこう。

68 :4:03/06/29 00:25
答えられないからってねた扱いですか。

69 :デフォルトの名無しさん:03/06/29 00:26
>>66
俺は4を騙ってないし、常識的な事を言ってるだけだが?

70 :デフォルトの名無しさん:03/06/29 00:28
(=´Д`=)

71 :デフォルトの名無しさん:03/06/29 00:31
data = malloc(sizeof(DataRec));
・・・;
・・・;
if (!fp) {
printf("%sが開けません。\n", path);
exit(EXIT_FAILURE);
}
・・・;
・・・;

で、終了しちゃった場合、mallocで確保された領域は
どうなるんでしょうか?


72 :デフォルトの名無しさん:03/06/29 00:34
>>71
もし、解放されるとしたら解放しない気でつか?

73 :4:03/06/29 00:35
>>71
osが開放します。

74 :デフォルトの名無しさん:03/06/29 00:39
>>73
だから、もうネタは良いんだって

75 :71:03/06/29 00:41
早めに答えてもらえませんか?
さもないと本当にあなたたちを無知だと見なしますよ。

76 :71:03/06/29 00:42
>>4, 72
即レス有り難う御座います。

>>72
同じ関数内なら忘れず解放するんですが
他で確保してる領域はどうなるのかと
思いまして・・・。

>>4
OSが解放してくれるんですか
今夜は熟睡できそうでつ

有り難う御座いました。

77 :71:03/06/29 00:45
うぅ!?

>>4もとい、>>73はネタでつか?
それに、漏れがもう一人・・・。

今日は早めに床につきまつ。
お邪魔しますた。

78 :72:03/06/29 00:46
>>75
オマエガナー

79 :4:03/06/29 01:01
本物の>>4なんですけど・・・。
俺のせいですごいことになってしまった。
俺ってすごい釣り師? 
反省してます。

80 :デフォルトの名無しさん:03/06/29 01:03
>77
>73が正しい

81 :デフォルトの名無しさん:03/06/29 01:04
このスレ的には環(以下略

82 :デフォルトの名無しさん:03/06/29 01:11
osを監禁します

83 :4:03/06/29 01:15
おまいら、もうネタは良いって。

84 :デフォルトの名無しさん:03/06/29 01:19
>>77&80
マジレスすると、解放するのはOSとは限らないし(そもそもOSが無いとか)
atexit()とか使ってると、exit()で終了するとも限らない

85 :4:03/06/29 01:24
そういうことにしとくか。

86 :49&4:03/06/29 01:25
マジ最高。
こんなにつれたのはじめてでつ

87 :4:03/06/29 01:33
そういうことにしとくか。

88 :デフォルトの名無しさん:03/06/29 01:35
http://www.geocities.co.jp/HeartLand-Suzuran/6071/main.mid

89 :71:03/06/29 07:25
>>80,84
そっそうですか、取り敢えず
回収してくれるんですね。

>>84
atexit()は知りませんでした。
標準ライブラリも奥が深い。

精進しまつ。
有り難う御座いました。

90 :デフォルトの名無しさん:03/06/29 09:06
二分木の再起処理を頭で整理しようとすると脳内がオーバーフローしそうなんですが
他に再起が必要な場面ってありますか?

91 :デフォルトの名無しさん:03/06/29 09:21
>>89
fcloseは自動的に行われることになっているが
freeが自動的に行われるとはどこにも書いてないぞ

ここ重要

だから自分で調べろと言うのだ

規格票なり作者の発言なり1次情報にアクセスしろ
伝聞についてくる尾ひれにはトンデモが混じってる

92 :デフォルトの名無しさん:03/06/29 09:30
>>90
再帰を『使いたくなる』場面なら色々ある。パーサ、ディレクトリ、ソート、メッセージ、etc...
だが、あなたが聞いているのは再帰が『必要な』場面だよな。

それは『ない』。

93 :デフォルトの名無しさん:03/06/29 09:50
fopenも終了時にストリームは自動的に閉じられるけれど、fopen内でmallocを使っていたとしたら、その領域が開放される保証はないな。

94 :デフォルトの名無しさん:03/06/29 10:51
fopenがmallocを使っているのに
fcloseでfreeが行われないとしたら
それはバグだろ

while(???) {
fp = fopen(???);
...
fclose(fp);
}
これができないことになる

95 :たく:03/06/29 10:56
コンパイルできません。どこが間違っているのか教えてください。
#include <stdio.h>
main()
{
int count = 0;
int gyo;
char file[20];
int a = count + 1 - gyo;
int b = 0;
int fp;
puts("表示したい行数を入力");
scanf("%d", gyo);
puts("表示したいファイル名を入力");
scanf("%s", file);
FILE *fp;/*ファイルポインタ*/
char buffer[500];
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
}
次に続く

96 :デフォルトの名無しさん:03/06/29 10:57
>>94
fcloseを呼ばずに終了した場合の話

97 :たく:03/06/29 10:57
while((fgets(buffer, 500, fp) != NULL))
{
count++;
}
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
} 次に続く


98 :たく:03/06/29 10:58
while((fgets(buffer, 500, fp) != NULL))
{
if(b >= a)
{
printf("%s\n", buffer);
}
b++;
}
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
return 1;
}次に続く

99 :たく:03/06/29 10:58
コンパイル時に表示されたメッセージ
head.c 18: Warning: 'gyo' used before set
head.c 27: Warning: 'fp' used before set
head.c 27: illegal type combination (*)
head.c 29: syntax error near 'char'
head.c 29: 'buffer' undefined
head.c 31: Warning: illegal pointer combination (=)
head.c 37: 'buffer' undefined
head.c 37: Warning: illegal pointer combination (param)
head.c 43: Warning: illegal pointer combination (param)
head.c 49: Warning: illegal pointer combination (=)
head.c 55: 'buffer' undefined
head.c 55: Warning: illegal pointer combination (param)
head.c 59: 'buffer' undefined
head.c 67: Warning: illegal pointer combination (param)

100 :デフォルトの名無しさん:03/06/29 11:05
>>96
fopenしたストリームを閉じるのに
直接にも間接にもfcloseを使わないってことか

仮にそういう実装があったにしても
そういう実装をする者がfcloseを使った場合と
同等の結果を保証することに全責任を負うべきだ

101 :デフォルトの名無しさん:03/06/29 11:08
int a = count + 1 - gyo;
このときのaがいくつになることを『意図している』?

万が一、この問いに答えられないようなら
コードを書き始めたこと自体が間違っている。
この場合は設計に戻るべき。

102 :デフォルトの名無しさん:03/06/29 11:10
なんかfpの宣言が2つあるな

103 :たく:03/06/29 11:26
このプログラムは指定された行数を
最後の行からさかのぼって出力することを目的に書きました。
int a = count + 1 - gyo;
はb>aのときから表示させることにより
最後の行からさかのぼって指定された行を表示させようとしています。

if(b >= a)
{
printf("%s\n", buffer);



104 :デフォルトの名無しさん:03/06/29 11:27
>>103
だから、具体的にいくつだよ?
エラーメッセージがそうなってるだろ

105 :デフォルトの名無しさん:03/06/29 11:28
>>103
自動変数はきちんとプログラマが値を入れてやらないと何が入るか分からないよ。

> 'gyo' used before set
これはgyoに値をセットする前に使ったという意味。

106 :デフォルトの名無しさん:03/06/29 11:36
まずは英和翻訳ソフトを買うなり、オンライン英和翻訳サービスを利用するなりして、エラーメッセージの内容を理解するべきだろ。

107 :デフォルトの名無しさん:03/06/29 11:37
日本語でメッセージが表示されても分からない予感

108 :デフォルトの名無しさん:03/06/29 11:37
こんくらいの英語は自力で嫁ろ
ISOやIEEEの原文が読めないと勝負にならん

109 :デフォルトの名無しさん:03/06/29 11:42
ネットで稼ぐならこれ。完全無料!!
リンクスタッフになれば小遣い稼ぎができます!!(左下に詳しい説明があります)
[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に1000円の報酬
キャンペーン・・・今なら登録するだけで1000円プレゼント
間接報酬・・・紹介者が得た報酬の25%を加算いたします
プレミアム・・・優秀サイトには、報酬に応じてボーナス有り

単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると1000円もらえるので
1日5人スタッフを紹介できたとして1000×5×30=150000円
30000+15000=180000!!間接報酬などもありますのでどんなに悪くても一ヶ月に10万円以上は必ず稼げます!!
http://www.santa.ac/~comtec/linkstaff/cgi/click.cgi?id=3007        
ぜひ一度覗いて見てはいかがでしょうか?

110 :デフォルトの名無しさん:03/06/29 11:44
> 30000+15000=180000

111 :デフォルトの名無しさん:03/06/29 11:45
>int gyo;

この宣言を見た時、「ギョ」って何?
とオモタ。
素直に「line」にしようよ(w

112 :デフォルトの名無しさん:03/06/29 11:50
とりあえず、全部コメントアウトして一行ずつ外していってコンパイル通るかしていけ。

113 :デフォルトの名無しさん:03/06/29 11:52
iostream.hとstdio.hの違いがよくわかりません。
教えてください!

114 :たく:03/06/29 12:43
皆さんレスありがとうございます。
とりあえず直したのですが、
fpとaを定義したにもかかわらす以下のようなメッセージが出ます。
どこが間違っているか教えてください。

head.c 18: 'fp' undefined
head.c 20: 'fp' undefined
head.c 26: 'fp' undefined
head.c 30: syntax error near 'int'
head.c 30: 'a' undefined
head.c 32: 'fp' undefined
head.c 38: 'fp' undefined
head.c 44: 'fp' undefined
head.c 46: 'a' undefined
head.c 56: 'fp' undefined

115 :たく:03/06/29 12:44
#include <stdio.h>
main()
{
int count = 0;
int gyo;
char file[20];
int b = 0;
char buffer[500];
puts("表示したい行数を入力");
scanf("%d", &gyo);
puts("表示したいファイル名を入力");
scanf("%s", file);

116 :たく:03/06/29 12:45
FILE *fp;
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
}

while((fgets(buffer, 500, fp) != NULL))
{
count++;
}
int a = count - gyo + 1;

117 :たく:03/06/29 12:45
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
}

118 :たく:03/06/29 12:46
while((fgets(buffer, 500, fp) != NULL))
{
if(b >= a)
{
printf("%s\n", buffer);
}
b++;
}
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
return 1;
}

119 :デフォルトの名無しさん:03/06/29 12:47
少しは自分で考えれ!

120 :デフォルトの名無しさん:03/06/29 12:56
たくくたばれ

121 :デフォルトの名無しさん:03/06/29 13:03
>>114
2つの変数の宣言をアタマに持って毛。

122 :たく:03/06/29 13:14
>>121
ありがとうございます。無事コンパイルと実行ができました。
所でナンデ上に持ってくだけでコンパイルできたのですか?

123 :デフォルトの名無しさん:03/06/29 13:17
Cは変数定義をブロック({と}で囲まれた部分)の先頭にまとめないといけないから。

124 :たく:03/06/29 13:24
>>123
しりませんでした。勉強になりました。
ありがとうございます。

125 :たく:03/06/29 13:27
>>120
おまえがな!

126 :120:03/06/29 13:31
お前もな。俺はくたばる

127 :FLA1Abe019.tky.mesh.ad.jp:03/06/29 13:46
ttp://.jp/staff/in.cgi?id=13675

128 :4=たく:03/06/29 13:56
しかし良く釣れるな(藁

129 :デフォルトの名無しさん:03/06/29 14:04
>127
別の意味で釣れた

130 :デフォルトの名無しさん:03/06/29 14:41
超初心者です。
>>50
char moji[]="abc";
はい、できますた。ここで、0から3までの4個の要素が定義されてますね。
ここで、
char moji[4]="def";
とやると、コンパイルエラーになりますが、なぜだめなのですか。
文字列配列の要素は、1文字2バイトしか使えないのですか。


131 :デフォルトの名無しさん:03/06/29 14:58
超初心者です。
openという名前の関数を作ったところfopenの動作がおかしいのです。
どうしたでしょうか。

132 :デフォルトの名無しさん:03/06/29 14:59
>>130
どうせ>>123だろ

133 :デフォルトの名無しさん:03/06/29 15:15
文字列ぶちこむのは
sprintf(&moji[0],"def");
にしとき。

134 :4:03/06/29 15:18
strcpyだろ

135 :たく:03/06/29 15:24
たびたびすみません。実行するときに head 20 a.c
と入力し、a.cというファイルの中身を逆からさかのぼって
20行表示させようとしています。
head1.c 55: Warning: 'file' not used
と出てしまうのですがどこが悪いのでしょうか?

#include <stdio.h>
main(int argc, char *argv[])
{
FILE *fp;
int a;
int b = 0;
int count = 0;
char file[20];
char buffer[500];次に続く

136 :たく:03/06/29 15:25
if((fp = fopen(argv[2], "r")) == NULL)
{
puts("read open error");
return(-1);
}
while((fgets(buffer, 500, fp) != NULL))
{
count++;
}
a = count - *argv[1] + 1;
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}次に続く

137 :たく:03/06/29 15:26
if((fp = fopen(argv[2], "r")) == NULL)
{
puts("read open error");
return(-1);
}
while((fgets(buffer, 500, fp) != NULL))
{
if(b >= a)
{
printf("%s\n", buffer);
}
b++;
}次に続く

138 :デフォルトの名無しさん:03/06/29 15:26
警告とエラーの区別がつかないアフォ

139 :たく:03/06/29 15:26
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
return 1;
}

140 :デフォルトの名無しさん:03/06/29 15:27
>>130
エラーになるかい?

141 :デフォルトの名無しさん:03/06/29 15:29
>>140
char moji[]="abc";
char moji[4]="def";

とか

int a=0;
a+=4;
char moji[4]="def";

とかやれば。

142 :デフォルトの名無しさん:03/06/29 15:30
>>141
変数名が重複してる・・・

143 :デフォルトの名無しさん:03/06/29 15:31
>>142
だからエラーになる。


144 :_:03/06/29 15:35
http://homepage.mac.com/hiroyuki44/jaz10.html

145 :デフォルトの名無しさん:03/06/29 15:37
>>135
>>105をミロ!!

146 :デフォルトの名無しさん:03/06/29 15:39
初心者です
丁度文字列の話が出てるので質問したいのですが
strcpyの関数を使う時の関数の宣言って何ですか?
教えてください

147 :130:03/06/29 15:51
>>132
| >>130
| どうせ>>123だろ
そんなー、人に意見が言えるような偉い人じゃあーりません。
エラーじゃなくて警告でしたが、実行してみると、
>>138,>>140
segmenation faultだって、Cってなんでこんなにメンドイの。



148 :130:03/06/29 15:53
いけね、行がずれた。メンゴ。
ちなみに漏れはawk→perlとやってます。楽でよかった。


149 :132:03/06/29 16:00
>>147
>>123という理由でエラーになったんだろうという意味なんだが。
Segmentation Faultは別の場所で起きていると思うけど。

それと>>138>>135へのレスだろ。多分。

150 :71:03/06/29 16:04
>>91
アドバイス有り難う御座います。
早速、漁ってみます。

151 :デフォルトの名無しさん:03/06/29 16:22
>>146
プロトタイプ宣言 というキーワードで google
C言語の解説サイトを嫁

152 :130:03/06/29 16:23
>>149
あらー、またまた誤解スマソ。
ダイヤルアップなんで、今度は、2・3時間後にきます。


153 :130:03/06/29 18:14
到着。

154 :デフォルトの名無しさん:03/06/29 18:33
part60 になってからツマんなくなったな。

155 :130:03/06/29 19:22
130です。
お勉強すれで紹介されている「配列とポインタの完全制覇」行って
勉強してきました。で、成果は、特にない。今晩、寝ずに考えて見末。
皆さん、ありがとうございました。ダイヤルアップなんで・・・


156 :デフォルトの名無しさん:03/06/29 22:45
あるチャットのタイムアウト(ユーザーでは設定できない)防止対策用に
自動発言させるプログラムを作りたいのですが、
どのようにしてTABキーを押させるようにすればいいのでしょうか?
計画としては、テキストボックスまでTABで移動させて、
そこに任意のメッセージを入力、Enterキーを押させて発言させようと思っています。

超初心者的な質問ですいません。よろしくおねがいします。

157 :デフォルトの名無しさん:03/06/29 22:52
そんなチャット使うな。

158 :デフォルトの名無しさん:03/06/29 23:02
>>156
アームロボット買ってきて、キーボードを押すようにプログラミングするとか。

などと言う冗談はさておき、スレ違いなんでとっとと消えましょう。

159 :デフォルトの名無しさん:03/06/29 23:07
>158
それ、何の本に載ってたっけ?たしか、IBMが
「プログラムの改修にン億円かかります」とかって
答えた話だよね。

160 :デフォルトの名無しさん:03/06/29 23:12
>>1
http://www.darkcat.on.arena.ne.jp/cgi-bin/dknbbs2/bbs.cgi?usr=hello_world82563#

161 :貧乏脱出!これであなたはお金持ち:03/06/29 23:20
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

. . . . . . . . . .

162 :デフォルトの名無しさん:03/06/30 00:32
>>156
ハード作れ

163 :デフォルトの名無しさん:03/06/30 02:11
あるファイルを読み込んで処理するプログラムを考えています。
たとえば、あるファイルの内容が

one
two
three

だったとすると、行数は3行、1行あたりの最大文字数は5文字、ということで
struct text{
word[6]
} line[3]

と宣言したいのです(構造体になっているのは、実際は行ごとにいくつかの
単語を評価するからです)。しかし、実際にプログラムを書くと、ファイル
操作の前の段階で、word[6]やline[3]などの具体的な数字を要求されて
しまいます。ファイルの内容を読み込んでから、それに最適な構造体を
定義するには、どのようにすればよいのでしょうか。

どうかよろしくお願いします。

164 :デフォルトの名無しさん:03/06/30 02:15
>>163
普通のやり方じゃできない。

無理やりやるならば前もって最大文字数と行数をカウントして、Cのソースを吐き出し、
コンパイルするってやり方を考えたけど、アクロバット過ぎるし実用にならんだろうなw

そういう場合は、

struct text {
char *word;
} line;

とか定義しておいて、mallocなどを使ってやりくりするしかあるまい。

165 :デフォルトの名無しさん:03/06/30 08:03
>>163
Cって不便ね。Perlなら簡単よ。


166 :デフォルトの名無しさん:03/06/30 08:25
Perlって汚いわね。PHPなら綺麗よ。

167 :デフォルトの名無しさん:03/06/30 08:44
>>164
>普通のやり方じゃできない。
mallocを使った動的メモリ確保は普通では?

168 :デフォルトの名無しさん:03/06/30 09:27
>>166
> PHPなら綺麗よ。
眼科に行きましょう。

169 :163:03/06/30 13:39
課題の指導書の参考関数に malloc が入っている訳がわからなかったのですが、
そのようにするのですか。どうもありがとうございました。

ところで、この例について
struct text{
char word1[10];
char word2[10];

} line[20]

と先に決めてしまい、ファイルの内容について「20行以下、1単語につき
9文字以下」と約束をつくる、というやり方も考えました。これを一般的な
プログラミングの慣習からみると、スマートとはいえないやり方なのでしょうか?
(20行に満たなかった場合など、かなりメモリを無駄に浪費するような気が…)

170 :デフォルトの名無しさん:03/06/30 13:51
その程度は別に無駄とも思わん。
メモリをたくさん使ってもプログラムが簡単に書けてスピードも速くなるなら
トレードオフが成立する。
むしろ20行を超えたとき動かないのがよくない。

171 :デフォルトの名無しさん:03/06/30 18:08
>>169
構造体のメンバのサイズ固定はそこそこよくある実装だと思うが、
行数制限はよくない。構造体を必要な数だけmalloc()するくらいがよくある実装。

172 :デフォルトの名無しさん:03/06/30 20:34
#include <stdio.h>
void main(){
int n;
char ch;

printf("数字を入力してください\n");
scanf("%d",&n);
printf("文字を入力してください\n");
scanf("%c",&ch);

printf("\n\n");
printf("入力された数字は%dです。\n",n);
printf("入力された文字は%cです。\n",ch);
}

このソース間違ってますか?途中で文字入力が
飛ばされるのですが。。

173 :デフォルトの名無しさん:03/06/30 20:38
>>172
多分scanf("%d",&n);の時に入力した改行がscanf("%c",&ch);で拾われている

174 :デフォルトの名無しさん:03/06/30 20:39
バッファとかよく分かりません。
どこを変えたらよいでしょうか?

175 :デフォルトの名無しさん:03/06/30 20:40
>>174
ストリームのバッファならsetvbufで

176 :デフォルトの名無しさん:03/06/30 20:42
>>172
scanf(" %c", &ch);

177 :172:03/06/30 20:45
すごい!なぜですか?
空白を入れるなんて思いつきませんでした。


178 :デフォルトの名無しさん:03/06/30 20:48
>>172
釣りは帰れ
過去スレよめ

179 :デフォルトの名無しさん:03/06/30 20:49
過去スレ・・・( ´_ゝ`)プッ
おっと釣られちゃったかな

180 :デフォルトの名無しさん:03/06/30 21:07
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
このサイトでCの勉強しようと思ったんですが、
サンプルコードに滅茶苦茶なのがたくさんあるんだけど、
目の錯覚ですか?

181 :172:03/06/30 21:11
うほっ いい男!

182 :デフォルトの名無しさん:03/06/30 21:30
>>180
どこら辺よ?

183 :デフォルトの名無しさん:03/06/30 22:07
>>180
キエテ。キエテ。キエテ。キエテ。キエテ。キエテ。

184 :デフォルトの名無しさん:03/06/30 22:19
>>180
滅茶苦茶なのがわかってるならそのサイトに用はないだろ
素直にメールでもだして注意してやればいいだろ

晒したいなら晒したいと素直にいおうね

185 :デフォルトの名無しさん:03/06/30 22:25
>>179
自分がでけへんことを人に言いなや (プ

186 :デフォルトの名無しさん:03/06/30 22:29
次のページの問題がよくわかりません、課題11-1はできたんですが・・・
誰かわかる人お願いします。
http://www.laser.ee.kansai-u.ac.jp/lecture/kisopro/report11.htm

187 :デフォルトの名無しさん:03/06/30 22:30
宿題スレへGO

188 :デフォルトの名無しさん:03/06/30 22:31
>>180の紹介したサイト、嘘だらけだね。
作った人間の馬鹿さ加減が偲ばれるいいサイトだ。

189 :デフォルトの名無しさん:03/06/30 22:37
>>188
例えば?


190 :デフォルトの名無しさん:03/06/30 22:39
>C言語には複素数を直接扱うデータ型はない
あるので
===終了===

191 :デフォルトの名無しさん:03/06/30 22:42
>>189
scanf()の説明とかファイル操作関連とか、
規格をよく判っていないで書いているのがありあり。

192 :デフォルトの名無しさん:03/06/30 22:44
>>190
それはC++だろ

193 :デフォルトの名無しさん:03/06/30 22:47
>なお、低水準入出力関数を使用するためには、<io.h>をインクルードする必要があります。
このへん氏んでいい

194 :なまお:03/06/30 22:50
おら、かかってこい!!

195 :デフォルトの名無しさん:03/06/30 22:51
>>192
C99

196 :デフォルトの名無しさん:03/06/30 22:51
>>192
C99にあるよ。現実として無いも同然だけど

197 :デフォルトの名無しさん:03/06/30 22:53
http://www5c.biglobe.ne.jp/~ecb/c/00_01.html
> 1972年、B.W.Kernighan氏とD.M.Ritchie氏により 考案され、

カーニハンがC言語の開発に携わったの?

198 :デフォルトの名無しさん:03/06/30 22:55
配列のサイズ指定には定数しか使えないと言ったらつっこまれるかな。

199 :デフォルトの名無しさん:03/06/30 22:58
C99なんて実装されても誰も使わないよな?
なんか、Cに求められてるものとはかなり違う気がするよ。

200 :デフォルトの名無しさん:03/06/30 22:59
snprintfくらいなら使う

201 :デフォルトの名無しさん:03/06/30 22:59




毎年、約1万組の日韓結婚。
それに伴なう朝鮮化した混血児。
年間、日本の新生児約100万人のうち、
約1〜2万人の新生児に
容赦の無い朝鮮人の血が流し込まれている。






202 :デフォルトの名無しさん:03/06/30 23:01
//とか使う

203 :デフォルトの名無しさん:03/06/30 23:01
なまおってトンデモなC言語講座を開いてfjのお兄さまたちに
タコ殴りにされてた彼か。

204 :なまお:03/06/30 23:05
gcc知らんらしいなこのガキどもは

205 :デフォルトの名無しさん:03/06/30 23:41
>>203
なまおクンのサイトだったのか。懐かしい…
にしても、トップページのJavaアプレットがうざ。
http://hp.vector.co.jp/authors/VA000124/intro.html
にTeXがプログラミング言語じゃないようなこと書いてあるけど、
プログラミング言語だよなあ、あれ。


206 :デフォルトの名無しさん:03/06/30 23:44
マークアップ言語じゃね?

207 :デフォルトの名無しさん:03/06/30 23:45
ネットwatchか

208 :デフォルトの名無しさん:03/06/30 23:48
>>206
条件判断とか変数とかあるよ。立派なプログラミング言語。
もっともその言語仕様はこれよりクソなものを見たことないくらいクソ。

209 :デフォルトの名無しさん:03/06/30 23:53
使用目的からいってマークアップ言語じゃね?
条件判断とか変数とかはあんま関係ないっしょ。多分。

210 :デフォルトの名無しさん:03/06/30 23:55
構造体の一部を共通にしたい場合に、以下のようなソースを見つけたのですが、
VC++ではエラーになってしまいました。
この方法は使用できないのでしょうか?

typedef struct _HEADER{
     int name;
}HEADER;

typedef struct _BOXA{
      HEADER; //ここで中身の無い構造体エラー
      int a;
}

typedef struct _BOXB{
      HEADER;
      int b;
}

int main(){
     BOXA c;
     c.name云々;   
     BOXB d;
     d.name云々;   
}


211 :210:03/06/30 23:56
typedefの名前書き忘れました・・・すみません。

212 :デフォルトの名無しさん:03/06/30 23:58
typedef struct _BOXA {
 HEADER h;
 int a;
};
とでもせんと。

213 :デフォルトの名無しさん:03/06/30 23:58
面罵名は?

214 :デフォルトの名無しさん:03/06/30 23:58
typedefで定義する新しい名前が指定されていない気が・・・・
型だけでメンバー名が指定されていない気が・・・

215 :デフォルトの名無しさん:03/06/30 23:59
気持ちはわかるな。
確かに面罵名いらんって言いたいときがある。
C++なら(ry

216 :デフォルトの名無しさん:03/07/01 00:02
>>215
そんなことしたらメンバーにアクセスできないよ??

217 :216:03/07/01 00:03
あ、わかった。そういうことを言いたいのか。

218 :デフォルトの名無しさん:03/07/01 00:04
PostScriptがプログラミング言語だと知ったときの驚き

219 :_:03/07/01 00:05
http://homepage.mac.com/hiroyuki44/hankaku10.html

220 :デフォルトの名無しさん:03/07/01 00:05
>>209
スレ違いだからここまでにするけど、おれもマークアップ言語だと思ってるよ。
ただプログラミング言語では全くないといわれたら、そりゃ違うだろってだけ。

221 :デフォルトの名無しさん:03/07/01 00:06
C++なら、210は、
struct HEADER{ int name };
struct BOXA : public HEADER{ int a };
struct BOXB : public BOXA{int b};
とか(邪悪やなぁ)。

222 :デフォルトの名無しさん:03/07/01 00:07
#define MACRO1 int n;\
char *p

typedef struct{
MACRO1;
double d;
}KOZOTAI1;

typedef struct{
MACRO1;
int i;
}KOZOTAI2;


223 :デフォルトの名無しさん:03/07/01 00:07
継承関係まちがえた。

224 :デフォルトの名無しさん:03/07/01 00:12
>>221
publicいらんでえ

225 :210:03/07/01 00:17
>>212-224
有難う御座います。

私もメンバ名が無いのは承知していて、不思議だったので、
色々調べてみたのですがどーしてもわからず、質問させていただきました。

マイクロソフトのDDKのサンプルソースにさっきの様なのが含まれていました。、
ということは、サンプルのコードが妖しいということになるのかな???


226 :デフォルトの名無しさん:03/07/01 00:22
freopenなんて

227 :デフォルトの名無しさん:03/07/01 00:22
使わないよ!!

228 :デフォルトの名無しさん:03/07/01 00:25
>>227
うん、使わなくていいよ
少なくとも君だけは永久にw

229 :デフォルトの名無しさん:03/07/01 00:26
>>225
MSのサンプルはC++だろ不通

230 :デフォルトの名無しさん:03/07/01 00:26
つーても面罵名ないのは変だよな

231 :デフォルトの名無しさん:03/07/01 00:28
ま、あれか。
こういうとこ読むときと同じで
行間嫁ってことか。
わざわざ自然言語で書かにゃならんとき
つい入っちまうからな、動作確認してないソース。

232 :デフォルトの名無しさん:03/07/01 00:30
あんなミスをC使いがするものか。

233 :デフォルトの名無しさん:03/07/01 00:33
そういうのが動くコンパイラもあるってことなんだろうか?

234 :デフォルトの名無しさん:03/07/01 01:26
入力した数値が数字だけでできてるか判断させる関数作りたいんですけど
これ以上わかんない。どう直したらいいんでつか?省略のところも書いてほしいです。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>
BOOL NumCheck( char *pcData, int iLen );
//呼び出しもと
int main( void )
{
BOOL t;char ten[1][7];
do{
/*省略*/
t = NumCheck( &ten[0], strlen(&ten[0]) );
}while( t == FALSE );
/*ここにatoi()でint型にする方法も教えてください*/
return 0;
}
//pcData チェックする文字列
//iLen 文字の長さ
//戻り値 TRUE:全部数字、FALSE:数字でない文字がある
BOOL NumCheck( char *pcData, int iLen )
{
int i;BOOL bRet = TRUE;
//チェックする文字数分ループ
for( i=0; i < iLen; i++ ){
//数字なら次をチェック
if( isdigit( pcData[i] ))
continue;
//数字でない文字があったのでエラーを表示して
//ループ終了
printf( "数字ではありません。再度入れ直してください。\n" );
bRet = FALSE;break;}
return bRet; //結果を返します
}

235 :デフォルトの名無しさん:03/07/01 01:31
#include <ctype.h>
int suujidake(const char *str)
{
for(;*str;str++)
if(!isdigit(*str))
return 0;

return 1;
}

テストしていないし、符号も許さない。


236 :デフォルトの名無しさん:03/07/01 01:38
>>234
2ch には意地悪なものが多いということを踏まえて、こんな感じで。

BOOL NumCheck(char *pcData)
{
 if(*pcData == '\0')
  return TRUE;
 if(!isdigit(*pcData))
  return FALSE;
 return NumCheck(pcData + 1);
}

これでも別に悪くは無いけど、あんま C っぽくない。
C 風に組んだ場合のコードはヒントあげるから考えてみ。


1. 数字なら次をチェックするのではなく、
  数字でなければ return FALSE; という風にすれば楽。
2. 文字列の終わりには '\0' があるので、いちいち iLen なんぞ使わんでもいい。
3. NumCheck は数値かかどうかをチェックする関数なんだから、
  「再度入れ直してください」なんて出力は NumCheck にはさせない方がいい。

237 :デフォルトの名無しさん:03/07/01 01:39
NumCheckは完成している気がするんだが。

238 :デフォルトの名無しさん:03/07/01 01:44
>>236
ワラタ
意地悪だなあw

239 :デフォルトの名無しさん:03/07/01 01:50
再帰(T_T)

240 :デフォルトの名無しさん:03/07/01 02:32
Lisper ですかw

241 :デフォルトの名無しさん:03/07/01 03:02
>>234
俺の場合
int NumCheck(char *s)
{
    const char *h = s;
    for(;*s;++s){
        if('0'<=*s && *s <='9'){
            if(*(s-1) == '-') return s - h - 1;
            return s - h;
        }
    }
    return -1;
}

int main(void)
{
    char s[] = "abcd-1234abcde";
    int t = NumCheck(s);
    if(t<0) return 0;
    printf("%d",atoi(s+t));
    return 0;
}


242 :デフォルトの名無しさん:03/07/01 03:05
>>241
> if('0'<=*s && *s <='9'){

if(isdigit(*s)){でいいと思います。

243 :デフォルトの名無しさん:03/07/01 04:43
>>241
> if(*(s-1) == '-') return s - h - 1;

ここおかしい。

244 :デフォルトの名無しさん:03/07/01 10:57
教えてください
strstr は検索範囲が文字列ということで先頭から 0までですが
単純に char*型のメモリから検索したいです。
for (i=0;i<100-2;i++) if (buf[i]=='a'&&buf[i+1]=='b')
上記を関数一発で行いたいですがあります?

245 :デフォルトの名無しさん:03/07/01 11:01
>>244
ない。
ただしmemcmpというのがあるからこれを使えば比較的楽に書けるんじゃないかな。

246 :デフォルトの名無しさん:03/07/01 11:37
>>245
やはり無いですか
memcmpを一文字づつずらすしか ないですね
ありがとうございました。

247 :デフォルトの名無しさん:03/07/01 12:33
>>246
それだと効率悪いから、せめてmemchr()で先頭を見つけてからにしよう。

248 :デフォルトの名無しさん:03/07/01 15:59
unsigned int sjis2euc(unsigned int sjis)
{
unsigned int hib, lob;

hib = (sjis >> 8) & 0xff;
lob = sjis & 0xff;
hib -= (hib <= 0x9f) ? 0x71 : 0xb1;
hib = (hib << 1) + 1;
if (lob >= 0x9e) {
lob -= 0x7e;
hib++;
}
else if (lob > 0x7f) lob -= 0x20;
else lob -= 0x1f;

hib |= 0x80;
lob |= 0x80;

return (hib << 8) | lob;
}
この関数にcharの配列を渡したいんですけど
可能ですか?
そしてどのようにすれば実現できるのでしょうか?

char hoge[80]にはハンカクカナが入っています。

厨な質問でつが宜しくご教授お願い致します。

249 :デフォルトの名無しさん:03/07/01 16:02
C言語人気サイトランキング。
ここで学びましょう。

http://ranking.yi-web.com/yuugi/ranklink.cgi?id=glayid

250 :デフォルトの名無しさん:03/07/01 16:04
>>248
無理だろう。for文使え。

251 :デフォルトの名無しさん:03/07/01 16:16
>>248
ポインターを勉強してください。

252 :デフォルトの名無しさん:03/07/01 17:01
>>248
そもそも、その関数は半角カナに対応してない

253 :デフォルトの名無しさん:03/07/01 19:37
C言語で、外部プログラムを呼び出すのってどうするんですか?
分かりやすく書いてあるサイトとかってありますか?

254 :デフォルトの名無しさん:03/07/01 19:39
system

255 :デフォルトの名無しさん:03/07/01 19:41
systemを知ったとき、もうなんでもできる気がした。

256 :_:03/07/01 19:42
http://homepage.mac.com/hiroyuki44/hankaku10.html

257 :名無し@沢村:03/07/01 19:52
文字列のことをどうして椅子(char)というのですか?

258 :デフォルトの名無しさん:03/07/01 19:54
>>257
chair

259 :デフォルトの名無しさん:03/07/01 19:54
>>253
とりあえず標準では system 。
他に凝った事したければそれぞれの環境のスレに行くがよろし。

260 :デフォルトの名無しさん:03/07/01 19:55
popenが標準だったら良かったのに

261 :デフォルトの名無しさん:03/07/01 20:05
C言語でファイルを削除する方法を教えてください。
作成はfopenでできるようですが。

262 :デフォルトの名無しさん:03/07/01 20:19
あるソースで、
#include <WinLib.h>
とあったんですが、これって何ですか?

263 :デフォルトの名無しさん:03/07/01 20:20
>>262
コンパイルに先立ってWinLib.hの中身をそこに展開する

264 :デフォルトの名無しさん:03/07/01 20:34
WinLib.hってなんですか?

265 :デフォルトの名無しさん:03/07/01 20:37
>>261
remove

>>264
そういうファイルがあるんだろう、としか。

266 :デフォルトの名無しさん:03/07/01 20:37
>>264
おいらが作ったエロエロライブラリのヘッダー


267 :デフォルトの名無しさん:03/07/01 20:40
>>264
ボーランドのヘッダー

268 :デフォルトの名無しさん:03/07/01 20:44
(σ・∀・)σゲッツ!!ならココ!
http://www3.kcn.ne.jp/~barozza/
言語を英語にすると見れるんだ

269 :デフォルトの名無しさん:03/07/01 20:46
>>267
プ

270 :デフォルトの名無しさん:03/07/01 21:06
ttp://www5c.biglobe.ne.jp/~ecb/c/06_01.html

> printf("変数nは%x番地に確保されました\n", &n);


271 :デフォルトの名無しさん:03/07/01 21:07
printf("変数nは%p番地に確保されました\n", &n);

272 :デフォルトの名無しさん:03/07/01 21:07
http://www5c.biglobe.ne.jp/~ecb/c/06_01.html

273 :デフォルトの名無しさん:03/07/01 22:09
指定されたデータを削除する配列のプログラムはどうしたらいいんですか?
削除して空いた場所に、最後のデータを移動するのと、
後のデータを1個ずつずらすものをつくりたいです。配列は順序よく並んでいません。
デリートを使ってお願いします

274 :デフォルトの名無しさん:03/07/01 22:10
C++?

275 :273:03/07/01 22:10
あ・・・スレ違いですね・・・
逝ってきます

276 :デフォルトの名無しさん:03/07/01 22:11
>>273
後者はmemmoveで。
つーかそういうものは線形リストを使うのが一般的だと思うけど。

277 :デフォルトの名無しさん:03/07/01 22:11
>>274
なんで?

278 :デフォルトの名無しさん:03/07/01 22:14
>>277
delete
のことじゃないか?

279 :デフォルトの名無しさん:03/07/01 22:16
>>278
ああなるほど・・・・
じゃあ配列じゃなくてリストかなにかじゃん(配列なら丸ごと消えてしまう)・・・

280 :デフォルトの名無しさん:03/07/01 23:36
CでAPIを使いたいんですけど、
解説サイトお願します。

281 :デフォルトの名無しさん:03/07/01 23:37
>>280
関数に適切な引数を与えて呼ぶだけでしょ?

282 :デフォルトの名無しさん:03/07/01 23:37
>>280
猫、MSDN

283 :デフォルトの名無しさん:03/07/01 23:39
WIN32APIをAPIと略すのはやめて

284 :280:03/07/01 23:39
まずは簡単に文字色やカーソルの位置でも
変えてみようと思うのですがね

285 :デフォルトの名無しさん:03/07/01 23:40
>>284
DBのクライアント?

286 :デフォルトの名無しさん:03/07/01 23:40
>>282
猫といって誰が何のことだと分かると思いますか?
玄人ぶるのはやめなさい。

287 :デフォルトの名無しさん:03/07/01 23:42
そんなに玄人っぽい?

288 :デフォルトの名無しさん:03/07/01 23:42
>>282
APIといって誰が何のAPIのことだか分かると思いますか?
玄人ぶるのはやめなさい。

289 :ごばくった:03/07/01 23:43
>>280
APIといって誰が何のAPIのことだか分かると思いますか?
玄人ぶるのはやめなさい。

290 :280:03/07/01 23:43
猫ってのは
「猫でもわかる・・・」ですよね

291 :デフォルトの名無しさん:03/07/01 23:43
多分本人には分かるんじゃない?

292 :デフォルトの名無しさん:03/07/01 23:44
分かってるジャン(プ

293 :デフォルトの名無しさん:03/07/01 23:45
>>290

http://www.gochomuseum.net/neko/

294 :デフォルトの名無しさん:03/07/02 00:01
main関数を呼び出すとき、
int main()や
main()、
void main(void)とか何なんですか?
違いはあるんですか?戻り値との関係はあるのですか?

295 :デフォルトの名無しさん:03/07/02 00:01
違いはある。戻り値と関係ある。

296 :デフォルトの名無しさん:03/07/02 00:01
猫でも〜よりこっちのサイトの説明のほうがわかりやすいと俺は思う
http://black.sakura.ne.jp/~third/system/winapi/win.html

297 :デフォルトの名無しさん:03/07/02 00:47
hensuu1 = abc
hensuu2 = xyz
などが書いてあるファイルを読み込んで
char hoge []= "abc"
などとする場合には、fgets で1文字づつ読んで
hensuu1 が見つかったら = の後全部を temp に入れて、
hoge = temp;
にするしかないのでしょうか?
1文字ずつ読み込ませたり、マッチングの部分を書くのは
めんどくさいのですが・・・。
perl みたいにサクッとマッチングが取れて、
必要部分を変数に代入できる方法を教えていただけると助かります。
お願いします。

298 :デフォルトの名無しさん:03/07/02 00:52
fgets で一文字づつ読むのは激しく無駄な行為です。

299 :デフォルトの名無しさん:03/07/02 00:53
>>297
fgetsで一行読み込んで、
strchrまたはstrrchrで'='の位置を取得して、それ以降をstrcpy。
無駄なブランクは適宜除いてください。

300 :名無し@沢村:03/07/02 00:59
>>290
「猫でもわかる」は本人の頭には「ザコでもわかる」という発想があったはずだ。
だがザコというと問題があるので、「ザコ」に似た言葉「ネコ」が採用され、結局「猫でもわかる」になったものと、おれは想像している。

301 :デフォルトの名無しさん:03/07/02 01:00
>>300
ただ単に猫飼ってるだけだろ

302 :デフォルトの名無しさん:03/07/02 01:01
>>301
相手すんなって

303 :(つД`):03/07/02 01:02
教えてください。
画像上の点Piは二次元の点で、この場合点Piで2ペアの点の中点を結んだものが
対称線となります。この線の方向ベクトルを求めるプログラムです。
どう書けばいいのか、さっぱりです。お願いします。


304 :デフォルトの名無しさん:03/07/02 01:03
void (*signal)(int) という宣言では、
signal は int を引数にもつ、戻り値のない関数へのポインタですよね?

しかし
void (*signal(int signum, void (*handler)(int)))(int);
という宣言の意味が分かりません。
(int signum, void (*handler)(int)) はどういう意味なんでしょうか。

305 :デフォルトの名無しさん:03/07/02 01:06
関数の前にcrtとつくものはどういう機能があるのでしょうか?

306 :297:03/07/02 01:08
>>299
strchr って、1文字のマッチングでその先頭のポインタを返すのですよね。
1文字だと、他にも = が何度も出てくるファイルから読み込む場合、
使えなくないですか?
文字列(できれば正規表現)とのマッチングのできるものってないのですか?

307 :デフォルトの名無しさん:03/07/02 01:08
☆頑張ってまーす!!☆見て見て!!☆
http://endou.kir.jp/betu/linkvp2/linkvp.html

308 :デフォルトの名無しさん:03/07/02 01:37
>>304
戻り値の型も第二引数の型もvoid (*)(int)
戻り値の型が関数ポインタだとそこまで醜くなる。

309 :デフォルトの名無しさん:03/07/02 01:37
>>300-301
わらた

310 :デフォルトの名無しさん:03/07/02 01:38
>>303
>この場合点Piで2ペアの点の中点を結んだものが対称線となります。
ここ何度読んでもわかんない。「2ペアの点」ってことは、後4つ点が出てくるの?それで対称「線」って?

>>304
signalの引数じゃないの?

311 :デフォルトの名無しさん:03/07/02 01:39
typedef void (*sighandler_t)(int);
sighandler_t signal(int,sighandler_t);

うーん・・・すっきり!

312 :デフォルトの名無しさん:03/07/02 01:40
関数ポインタはtypedefが基本

じゃないと俺が読めない

313 :デフォルトの名無しさん:03/07/02 01:55
>>306
バッファ内容壊していいんなら strtok でも。
そうでないなら、何度も strchr を使って、
地道に strncpy で文字列を切り出すべし。

314 :デフォルトの名無しさん:03/07/02 02:03
sscanf

315 :デフォルトの名無しさん:03/07/02 02:11
>310
「あるペアの中点と、別のあるペアの中点を結ぶとできる
対称線の方向ベクトル」がほしいんじゃないの?

316 :(つД`):03/07/02 02:35
>310
315さんの言うとおりです〜
説明下手ですいません_| ̄|○

317 :デフォルトの名無しさん:03/07/02 02:40
>>303
それってプログラムが分らないのではなく、数学のベクトルが分らないんでしょ?
typedef struct tag_vector {
float x, y;
}vector;

vector A, B, AB;
float unit;

A.x = 1.0f; A.y = 1.0f;
B.x = 4.0f; B.y = 2.0f;

//AベクトルとBベクトルを位置ベクトルとし、ABベクトルを求める
//B - A = AB
AB.x = B.x - A.x; AB.y = B.y - A.y;

//これを方向ベクトルとするには単位化が必要
unit = (AB.x * AB.x) + (AB.y * AB.y);
AB.x = AB.x / unit; AB.y = AB.y / unit;

こんな感じ。でも、君の場合数学調べた方が速いと思うよ。

318 :(つД`):03/07/02 02:48
う・・・たしかにその通りかも・・・。
ありがとございましたー

319 :304:03/07/02 02:57
>>308, >>310
ようやく分かりました。
最後の (int) は引数ではなく関数 signal の戻り値
void (*)(int) を表しているんですね。。。
ありがとうございました。

320 :デフォルトの名無しさん:03/07/02 14:16
じゃんけんをするプログラムを組んでみました。コンパイルもできました。
以下のプログラムを組んでみたのですが、問題がときどき発生してしまいます。
「ときどき」発生するのがなぜなのか、また、どこが悪いのかご指摘お願いします。
#問題1、「〜手を選んでください…」のあとに「1,2,3」いずれかをタイプ、Enterを押すと、「ときどき」じゃんけんが実行されないで再度「〜手を選んで…」と出力される。
#問題2、間に敗けを挟んでいるのに、「最多連続勝ち回数」と「勝った回数」が一致していることが「ときどき」ある。

長くなってもうしわけありませんが、よろしくお願いします。

#include<stdio.h>

main()
{
int first,cpu,oni,kachi,combo,max;

kachi=0;
combo=0;
max=0;
oni=100;
srand(time(0));
//オープニング文章
printf("\n\nあなたは桃太郎です。鬼ヶ島にいる鬼は,じゃんけん
に自信を持っているそうです。鬼達は,じゃんけんに負けるとショック
死してしまうことが知られています。鬼の数は100匹です。何匹まで減
らせるか頑張ってください。\n\n");

321 :320続きです:03/07/02 14:19
do{
printf("あなたの出す手を選んでください。:[グー:1][チョキ:2][パー:3]");
scanf("%d",&first);

if(first < 1 || 3 < first) /* これが終了条件 */
{printf("\n\n桃太郎は疲れたので帰ることにしました。
以下が今回の成績です。\n\n");
printf("あなたは%d回勝ちました。\n",kachi);
printf("残りの鬼は%d匹です。\n",oni);
printf("最多連続勝ち回数は%d回です。\n",max);
exit(0);
}
else


322 :320続きです:03/07/02 14:20
cpu = rand()%3;

if(first ==1 && cpu ==1)
printf("あいこ!鬼は驚いています。\n");
else if(first ==1 && cpu ==2)
{printf("勝ち!鬼は息耐えました。\n");
oni=oni-1; //鬼が一匹減る。
kachi=kachi+1; //勝ち回数+1
combo=combo+1; //連続勝ち回数+1
if(max < combo)max=combo; //最多勝ち回数の判定
}
else if(first ==1 && cpu ==3)
{printf("負け!鬼は喜んでいます。\n");
combo=0; //連続勝ち回数消去
}
else if(first ==2 && cpu ==1)

〜〜〜中略〜〜〜

}while(1);
exit(0);
}

323 :デフォルトの名無しさん:03/07/02 14:22
do{}while(1);なんて書き方するくらいならwhile(1){}とかけば??

324 :_:03/07/02 14:23
http://homepage.mac.com/hiroyuki44/

325 :デフォルトの名無しさん:03/07/02 14:37
> cpu = rand()%3;
cpu は 0, 1, 2

326 :デフォルトの名無しさん:03/07/02 14:58
>>320
もしや、3×3=9個のif 〜 else if 〜 を並べているのか?
どうせどこかで combo = 0 を忘れているとか、
条件式が間違ってるとか、そういう事だろう。
つか、そういう汚い作りをするのが原因とも言える。
if (first == cpu) {
  // あいこ
}
else if (first == cpu - 1 ||
  first == 3 && cpu == 1) {
  // 勝ち
}
else {
  // 負け
}

327 :デフォルトの名無しさん:03/07/02 15:02
勝敗判定は関数にしたいな

328 :デフォルトの名無しさん:03/07/02 15:22
>>326
テーブル作ってもいいかもね。

329 :デフォルトの名無しさん:03/07/02 21:07
>>323は若造かな?

330 :デフォルトの名無しさん:03/07/02 21:10
そもそも while(1)を書くな。
for(;;)にすべき。

331 :デフォルトの名無しさん:03/07/02 21:13
>>330
なぜ?

332 :デフォルトの名無しさん:03/07/02 21:15
>>329
do{}while(1);とwhile(1){}はどう違うの?

333 :デフォルトの名無しさん:03/07/02 21:20
>>332
アホですか?
do{}while(1);doのスコープが絶対処理される。
while(1){}whileのスコープが絶対処理される。
while()は条件によっては処理されないことがあるが常に真なのでdo-whileと
おなじ・・・

334 :デフォルトの名無しさん:03/07/02 21:35
>>332
一回は実行するという do-while の仕様により
一回は実行するというプログラムの性質を強調できる、と。
そういうコードでは拡張するうちに条件を加えたくなった場合にも
多分 while じゃなくて do-while にすることになると思う。

335 :(´・ω・`):03/07/02 21:45
ご指導お願いしたい・・・このアフォな俺に・・・_| ̄|○
3次元上の点でp1,p2,p3,p4があるとする。p1,p2は水平で、p3,p4も水平であり、
この2線は平行している。p1,p2を結んだ中点とp3,p4を結んだ中点を結んだものが
対称面となる。
このとき、この法線ベクトルを求めるプログラムを書きなさい。
お願いします〜(つД`)

336 :_| ̄|○ :03/07/02 21:49
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○

337 :デフォルトの名無しさん:03/07/02 21:50
>>335
だから、それは数学だって。


338 :デフォルトの名無しさん:03/07/02 21:51
>>335
プログラミングの為の数学と算数
http://pc2.2ch.net/test/read.cgi/tech/997150743/l50

339 :デフォルトの名無しさん:03/07/02 21:52
>>335
もしかして >>303 と同じ問題じゃない?
回答は >>317 にあるよ。

340 :デフォルトの名無しさん:03/07/02 21:52
>>333
ま、先にwhile(1)とか書いて「無限ループっすよ」と読む側に
注意を促しといてくれるほうが嬉しいな。do〜whileだと、
ループの終了条件ははるか下のほうにあるから面倒だな。


341 :デフォルトの名無しさん:03/07/02 21:56
>>331
高速に打てるぞ

342 :デフォルトの名無しさん:03/07/02 22:14
>>332
ノーbraの方がカワイイじゃん

343 :デフォルトの名無しさん:03/07/02 22:21
while(0120-444-444) { ... }

344 :デフォルトの名無しさん:03/07/02 22:25
>>341-343
さて、訳の分からん連中が出てきたところで・・・

age


345 :デフォルトの名無しさん:03/07/02 22:28
S・O・G・E さげ〜♪

346 :デフォルトの名無しさん:03/07/02 22:28
この程度がわからんとは。
それでもプログラマか。

347 :デフォルトの名無しさん:03/07/02 23:03
つーかコーダーがほとんどだろ、こんなとこ

348 :デフォルトの名無しさん:03/07/02 23:07
コーダーとプログラマとSEの違いをおしえてください

349 :デフォルトの名無しさん:03/07/02 23:14
スコットランドの伯爵サマらしいが。。。

350 :デフォルトの名無しさん:03/07/02 23:22
精神ハクジャクかおまいは

351 :デフォルトの名無しさん:03/07/02 23:27
>>331
while(1)では、評価式が常に真ですという警告を出すコンパイラがある



らしい。

352 :デフォルトの名無しさん:03/07/02 23:31
漏れの中では
SE=Sound Effect
ですが、何か?

353 :320-322:03/07/02 23:32
返事が遅くなってすみませんでした。

>>325
ΣΣ(゚д゚lll)ズガーン!!最初は、自分の出す手を「0,1,2」にしたのですが、「0」だけ離れているので「1,2,3」に変えたんです。その時に、cpuの数も変えてしまったようです。おそらく、問題1はこれで解決されると思います。ありがとうございます。

>>326
学校でC言語を習い始めて2日なので、色々考えてこうなったのです。326さんのやり方のほうがスマートですね。もっともっと勉強したいとおもいます。
「combo=0」は、全ての負け条件の時にいれてあります。が、美しくないので、条件部分を書き直します。ありがとうございました。

354 :デフォルトの名無しさん:03/07/03 00:10
------rand.h---------
#define IA 16807
#define IM 2147483647
#define AM 1/IM
#define IQ 127773
#define IR 2836
float rand(long *idum);
------rand.h---------

------rand.cpp-------
#include <rand.h>
float rand(long *idum){
long k;
float ans;
k=(*idum)/IQ;
idum=IA*(*idum-k*IQ)-IR*k;
if(*idum<0) *idum+=IM;
ans=AM*(*idum);
return ans;
}
------rand.cpp-------
borlandでrand.cppをコンパイルしたんですけど、どうもうまくいきません
'long'が'long *'にできないというエラーが出ます。
学校のUNIXではうまくいけるのに、理由がわかりません

355 :デフォルトの名無しさん:03/07/03 00:13
何行目?

356 :デフォルトの名無しさん:03/07/03 00:14
*idum=IA*(*idum-k*IQ)-IR*k;

こうじゃないの?


357 :デフォルトの名無しさん:03/07/03 00:14
> idum=IA*(*idum-k*IQ)-IR*k;
これがまちがい。
学校のうにくすは、ポインタへ整数値を警告なしで
代入できるんだろう。

358 :デフォルトの名無しさん:03/07/03 00:15
つーかなんでidumはポインタなんだ?
値渡しでいいじゃん。

359 :デフォルトの名無しさん:03/07/03 00:16
変更させたいんだろ。

360 :デフォルトの名無しさん:03/07/03 00:17
なんでfloatを使うんだろうね

361 :358:03/07/03 00:18
ああ、メモリ上を次々に移動しながら値を拾っていくのか。

362 :デフォルトの名無しさん:03/07/03 00:20
>>361
ハァ?

363 :デフォルトの名無しさん:03/07/03 00:21
361 vs 362
宿命の対決

364 :354:03/07/03 00:21
>>355-359
仰せの通りidumに*忘れたのが間違いでした
今度はできました

365 :358=361:03/07/03 00:25
ああ、いや引数のidumのポインタを関数内で変更して、
変更後のポインタが指している値を次の乱数シードにす
るのかと思ったんだけど違ったみたいね・

366 :デフォルトの名無しさん:03/07/03 00:28
>>365
それをどうやったら>>361みたいな書き方が出来るんだ?
素直に間違ってましたって書けよ。

367 :35:03/07/03 00:30
アタシのために喧嘩するのはやめて・・・

368 :デフォルトの名無しさん:03/07/03 00:32
>>335
先ずp1とp2を結ぶベクトルを求める。
次にp1とp3を結ぶベクトルを求める。
ココでp1p2//p3p4なので、p1p2ベクトルとp1p3ベクトルは同一平面上である。
よってp1p2ベクトルとp1p3ベクトルの外積を求めればよい。

normal.x = p1p2.y * p1p3.z - p1p2.z * p1p3.y;
normal.y = p1p2.z * p1p3.x - p1p2.x * p1p3.z;
normal.z = p1p2.x * p1p3.y - p1p2.y * p1p3.x;

この求まったベクトルを単位化すれば、法線となる。
ただし、この外積計算は左手系の場合。
何度も言わせないでね、数学をやるべき。
全然プログラム処理は大した事ない、数的理解のみでしょ。

369 :デフォルトの名無しさん:03/07/03 00:32
>>366
そこまで言ったら理解して欲しいな。
シードを指すポインタを次々に変更して値をとるってのを、メモリ上を移動していくと表現したのだが。

370 :デフォルトの名無しさん:03/07/03 00:33
fp=fopen("/etc/passwd","a");とやっているんですが、必ず失敗します(;_;)
なんで?(;_;)

371 :デフォルトの名無しさん:03/07/03 00:35
>>369
ハァ?

372 :デフォルトの名無しさん:03/07/03 00:35
>>371
どこがおかしいのか指摘もできないんだね。

373 :デフォルトの名無しさん:03/07/03 00:39
>>369
ポインタは変更されてませんが、何か?

374 :デフォルトの名無しさん:03/07/03 00:39
>>370
あなたの環境で、そのストリームを開けないから

375 :デフォルトの名無しさん:03/07/03 00:41
>370
多分君がrootぢゃないから。
CというよりUNIXの話だと思われ。

376 :デフォルトの名無しさん:03/07/03 00:41
>>373
アラ本当だ。藁

377 :デフォルトの名無しさん:03/07/03 00:43
>>374-375
そういうことですか(;_;)
いたづらできないようになっているんですね(;_;)

378 :デフォルトの名無しさん:03/07/03 00:43
すまん、私の勘違いでした。

これで満足?

379 :デフォルトの名無しさん:03/07/03 00:48
2次元配列の要素を動的に追加していくにはどうしたらよいでしょうか?
最終的にはhoge[n][10]って感じの配列になるんですが、nの数がわからない。
配列に格納すべきデータが見付かるたびに、要素を追加していくって感じ
の処理なのですが。

380 :デフォルトの名無しさん:03/07/03 00:49
>>379
mallocタン(^o^=)

381 :デフォルトの名無しさん:03/07/03 00:50
*hoge[10] で宣言してmalloc

382 :380:03/07/03 00:50
追加してゆくのか。じゃあreallocも混ぜる(ただし一定数ごとに)かリストで。

383 :デフォルトの名無しさん:03/07/03 01:00
>>381
今さら、そんなネタ出さなくても…

384 :デフォルトの名無しさん:03/07/03 01:03
**hoge 宣言?

385 :デフォルトの名無しさん:03/07/03 01:09
(*hoge)[10];
が正解

386 :354:03/07/03 01:40
--------random1.cpp--------
#include <stdio.h>
#include <rand.h>
#define seed 20030416
#define r 1000
int main(){
int i;
long s;
float x;
FILE *a;
a=fopen("pre0.txt","w");
s=seed;
for(i=0;i<r;i++){
x=ran0(&s);
fprintf(a,"%d, %f\n",i,x);
}
fclose(a);
}
--------random1.cpp--------
これと修正したrand.cppをそれぞれコンパイルしてリンク、実行したんですけど
実行結果で0から1までの乱数群が出て来ずに
... 1, 0.000000\n2, 0.000000\n .... \n 999 0.000000 ...(\nで改行)と出てきました
... 1, 0.254542\n2, 0.647889\n .... \n 999 0.913525 ...のように出てくるにはどうしたらいいでしょうか?

387 :デフォルトの名無しさん:03/07/03 01:46
1/2147483647ってさ答えは0だよね

388 :デフォルトの名無しさん:03/07/03 01:50
しかしなんでまたfloatを使うのかね。

389 :デフォルトの名無しさん:03/07/03 01:54
ran0 って何だらう?

390 :387:03/07/03 02:06
>>386
ran0の戻り値を確認してみれば分かると思うよ。多分常に0.0が返ってくる思う。

ans=AM*(*idum);を展開してans=1/2147483647*(*idum);。1/21...は0だから*idumとかけても0。
それをansに入れて返すんだから常に0
#define AM 1/IMを#define AM 1.0F/IMにすれば解決するはず。他にも問題ありそうだけど。

391 :デフォルトの名無しさん:03/07/03 03:35
GUNDAM の SEED ?

392 :デフォルトの名無しさん:03/07/03 04:32
>391
FF8だろ?

393 :デフォルトの名無しさん:03/07/03 08:33
'aaa'とかを#defineで100とかに置き換えるにはどうしたらいいでしょうか?
最初と最後の『 ' 』も含めて'aaa'です

394 :デフォルトの名無しさん:03/07/03 08:53
>>393
できん

395 :デフォルトの名無しさん:03/07/03 11:14
printfなんか30分もあれば実装できるだろ。

396 :デフォルトの名無しさん:03/07/03 11:25
>>393
unix系のコマンドラインが使えるなら、
sed/awkなどで書き換えてからコンパイルするようにmakefileを書けばできるけど。

で、なんでそんな意味不明なことしたいの?

397 :デフォルトの名無しさん:03/07/03 12:24
>>395
口だけじゃなく、やって見せろ!!

398 :デフォルトの名無しさん:03/07/03 12:49
int printf(const char* format, ...)
{
 int ret;
 va_list args;
 va_start(args, format);
 ret = vprintf(format, args);
 va_end(args);
 return ret;
}

399 :デフォルトの名無しさん:03/07/03 12:57
>>398
やると思った。

400 :デフォルトの名無しさん:03/07/03 13:59
mallocとfreeみたいにfopenしてないFILEポインタをfcloseするとまずいですか?

401 :デフォルトの名無しさん:03/07/03 14:01
>>400
当然ながらまずい。
ついでにいうと、freeと違ってNULLを渡すのもまずい。

402 :デフォルトの名無しさん:03/07/03 14:20
実数Aに任意の正の整数を代入し、その1の桁を四捨五入して表示するプログラムを作ってもらえないでしょうか

403 :デフォルトの名無しさん:03/07/03 14:21
>>402
ばーか

404 :デフォルトの名無しさん:03/07/03 14:21
>>402
>ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

405 :デフォルトの名無しさん:03/07/03 14:25
すいません

406 :400:03/07/03 14:25
FILEポインタにNULLとかいれて

FILE *p;
p = NULL;

if(p=NULL)fclose(p);

とかやっても大丈夫ですか?


407 :デフォルトの名無しさん:03/07/03 14:26
>>406
そのコードならOK(ワラ

408 :400:03/07/03 14:26

FILE *p;
p = NULL;

if(p != NULL)fclose(p);

でした

409 :デフォルトの名無しさん:03/07/03 14:27
>>404
 どこにあるの??

410 :デフォルトの名無しさん:03/07/03 14:29
>>408
「p = NULL;」と「if(p != NULL)fclose(p);」の間に何もないのならOKだけど、
何かあるなら、そのなにかによってはまずい。

411 :400:03/07/03 14:38
ip = fopen(i_name,"r");
op = fopen(o_name,"w");

fgetcとか
fputcとか

opとipは別々のファイルポインタで、ファイルポインタに触れるのはこれくらいです
やっぱ、まずいですか?

412 :デフォルトの名無しさん:03/07/03 14:39
>>411
fopenの戻り値ならOK

413 :デフォルトの名無しさん:03/07/03 14:41
>>409
そんくらい自分で探せ。

414 :デフォルトの名無しさん:03/07/03 14:47
>>413
ないでしょ。

415 :400:03/07/03 14:47
ありがとうございました

416 :デフォルトの名無しさん:03/07/03 14:53
>>414
自分が無能で見つけられないものは無いってか?w

417 :デフォルトの名無しさん:03/07/03 20:58
これからCをやろうと思っている、全くの素人なんですが
オススメの入門書ありますか?

418 :デフォルトの名無しさん:03/07/03 21:05
>>417
http://www.amazon.co.jp/exec/obidos/ASIN/487734537X/250-1622258-0824212

419 :デフォルトの名無しさん:03/07/03 21:25
>>417
参考図書スレへ Go!

420 :デフォルトの名無しさん:03/07/03 21:43
char unko[5];

unko[0] = 'a';
unko[1] = 'b';
unko[2] = 'c';
for(int i=0;i<10;i++){
 unko[3]=i;←
}
みたいなことをやりたいんですけど
どうしたらいいかおわかりの方教えていただけないでしょうか
bcc使ってます

421 :デフォルトの名無しさん:03/07/03 21:45
超能力者募集中。

422 :デフォルトの名無しさん:03/07/03 21:46
>>420
いまいちよくわからないんだけど。それでもコンパイルできるし(iの宣言場所がCとしてはまずいけど)動くし。
何をしたいの?

423 :_:03/07/03 21:47
http://homepage.mac.com/hiroyuki44/hankaku06.html

424 :デフォルトの名無しさん:03/07/03 21:47
>>422
型が違うかなっと思ったんですけど
通るんですか?

425 :エスパー:03/07/03 21:48
>>420
俺にも読み取れないとは・・・

426 :デフォルトの名無しさん:03/07/03 21:48
>>424
charもintも整数だから互換性があるよ。
ただしintの方が大きい場合(大抵は大きい)、データが失われる可能性があるけど。

427 :デフォルトの名無しさん:03/07/03 21:52
>>426
コンパイル通るんですけど
なんか文字化けします


428 :デフォルトの名無しさん:03/07/03 21:54
>>427
制御文字を表示したからでは。

429 :デフォルトの名無しさん:03/07/03 21:54
>>427
何がしたいの?って聞かれてるのにちゃんと答えないからだよ

430 :デフォルトの名無しさん:03/07/03 21:55
>>427
つまり、正常に動作しているわけだが。

431 :デフォルトの名無しさん:03/07/03 21:55
http://www.mars.dti.ne.jp/~torao/program/appendix/ascii.html

最終的にunko[3]に入るのは9。ASCIIコードでHT。・・・・HTってなに?

432 :デフォルトの名無しさん:03/07/03 21:55
>>428
文字コードのことですか?
>>429
数字を文字にしたいのです
つまりint型の1を半角数字の1にしたいのです

433 :デフォルトの名無しさん:03/07/03 21:56
itoa

434 :デフォルトの名無しさん:03/07/03 21:56
>>431
\tかな?

435 :デフォルトの名無しさん:03/07/03 21:57
>>432
そういうときはASCIIなら'0'と足す。i+'0';
確か数字が連続していない文字コードはなかったと思うから、他の環境でもOKだと思うけど。心配なら面倒だけどatoi

436 :デフォルトの名無しさん:03/07/03 21:57
>>431
解決しました
ありがとうございます


437 :デフォルトの名無しさん:03/07/03 21:58
一桁までなら unko[3] = '0'+i;

438 :デフォルトの名無しさん:03/07/03 21:59
>>434
ああそうか。Horizon Tabか。サンクス。

439 :デフォルトの名無しさん:03/07/03 22:57
charをすべて使うと文字化けしてしまうのですが
どうすればいいですか?

440 :デフォルトの名無しさん:03/07/03 22:59
知るかボケ

441 :デフォルトの名無しさん:03/07/03 22:59
エスパー召喚

442 :デフォルトの名無しさん:03/07/03 23:01
×charをすべて使うと
○charを使うとすべてが

です・・・
コンパイラはVC6を使ってます

443 :デフォルトの名無しさん:03/07/03 23:01
>>437

"0123456789"[kazu%10];

一桁ならこちらの方がコードに依存しない。

444 :デフォルトの名無しさん:03/07/03 23:02
>>442
知るかボケ

445 :エスパー候補:03/07/03 23:02
for(char c = 0;c <= 0xff;c++){
printf("%c",c);
}
とか

446 :デフォルトの名無しさん:03/07/03 23:13
いや
char* p ="表示";
char str[3];

strncpy(str,p,3);

printf("%s",str);

か?

447 :デフォルトの名無しさん:03/07/03 23:17
>>442
なら、charを使うな

448 :デフォルトの名無しさん:03/07/03 23:19
正確な乱数を発生させるには、どの関数が有効ですか?
記述のしかたもお願します。
房質問すみません。

449 :デフォルトの名無しさん:03/07/03 23:20
>>448
釣り?

450 :デフォルトの名無しさん:03/07/03 23:21
>>448
正確な乱数の定義は?

451 :デフォルトの名無しさん:03/07/03 23:24
周期が超長ければいいんだろ

452 :デフォルトの名無しさん:03/07/03 23:26
MTを多段で使えば?
正確な乱数(謎)とは言いがたいが

453 :デフォルトの名無しさん:03/07/03 23:28
420ですが皆様のおかげで何とかできました
ttp://www.geocities.co.jp/Milkyway-Sirius/1907/index.html
どうもありがとうございました
でもなんか見た目が悪くてなんか嫌です

454 :デフォルトの名無しさん:03/07/03 23:30
.txtでうpしる。

455 :デフォルトの名無しさん:03/07/03 23:32
テキストにしました
ttp://www.geocities.co.jp/Milkyway-Sirius/1907/unko.txt

456 :デフォルトの名無しさん:03/07/03 23:38
>>455
unkoの末尾に'\0'がつかないままfputsしている気がする・・・

457 :442:03/07/03 23:42
>>443-451
てめーらシカトしてんじゃねぇ!!!!!
Cなら俺に聞けって言うから
あんまりC自体には関係ないが・・・
聞いてんじゃねぇかヴぉけ!!

だから教えてください


458 :デフォルトの名無しさん:03/07/03 23:45
>>456
よく分かんないですけど
メモリ確保したときのデフォルトって0じゃないんですか?
とりあえず動きました
それよりできれば綺麗な書き方を教えてほしいです

459 :デフォルトの名無しさん:03/07/03 23:47
>>457
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
for(c=0;c<=127U;c++)
if(isprint(c))
printf("%c ",c);
else
printf("(^_^;) ");
putchar('\n');
return 0;
}



460 :デフォルトの名無しさん:03/07/03 23:48
>>458
自動変数だと明示的に初期化しないと何が入るかわからない。
char unko[8]={0};とすれば全て0に初期化される。

461 :デフォルトの名無しさん:03/07/03 23:55
>>460
static char unko[8];
にすればいいってことですか?

462 :デフォルトの名無しさん:03/07/03 23:57
>>460

いつから、Cの仕様が、かわったんだ?

463 :デフォルトの名無しさん:03/07/03 23:58
>>462
1999年

464 :デフォルトの名無しさん:03/07/03 23:58
>>463
そうか、しらんかった。ありがとう

465 :デフォルトの名無しさん:03/07/03 23:59
>>464
なぁ、何か間違ったこと言った?指摘してくれると嬉しいんだけど。

466 :443:03/07/04 00:00
>>457
日本語で書き直して下さい。

467 :デフォルトの名無しさん:03/07/04 00:08
>>465
安心汁。合ってる。
配列の一部分を初期化した場合、
明示的に初期化しなかった部分は0で初期化される。

468 :デフォルトの名無しさん:03/07/04 00:14
>>439
俺には一体どこでつまづいてんのかよー分からん。
もしかしてだけど、最初UNIX系で作ったプログラムじゃない?

469 :デフォルトの名無しさん:03/07/04 00:29
>>457
>>466さんの言う通りにしてもらうと一番いいのだが、書いて表現するのが難しいというなら
せめてどういう入力をしてどういう出力がされたのか書いてくれ。

470 :デフォルトの名無しさん:03/07/04 00:41
関数の定義を使う前に書いておけば問題ないと思ってたんですが、
そうすると、コンパイラが「プロトタイプのない関数を使ってる」って
警告を出します。なぜなんでしょう。

471 :デフォルトの名無しさん:03/07/04 00:44
>>470
プロトタイプのない関数を使っているから

472 :デフォルトの名無しさん:03/07/04 00:45
プロトタイプ宣言をしない人は給料10%カット

473 :デフォルトの名無しさん:03/07/04 00:56
どうしてプロトタイプ宣言が必要なんでしょうか。
おれは学生です。

474 :デフォルトの名無しさん:03/07/04 00:57
>>473
http://www.cmagazine.jp/src/kinjite/c/oldstyle.html

結構つっこみどころのおおい記事ではあるが

475 :デフォルトの名無しさん:03/07/04 01:09
>>473
チミの質問は
「どうして = じゃなくて == なんでしょうか」
と同じ類の質問だな。
仕様なんだからどうしてとか言われても答えようがないわな。

476 :デフォルトの名無しさん:03/07/04 01:16
仕様になった理由を聞きたいんだろ・・・・・・

477 :デフォルトの名無しさん:03/07/04 01:16
>>475
仕様上はプロトタイプは必要ないぞ。

あと、どうしてその仕様がその言語に追加されたのかを知っていると、
その仕様の活用の度合いが変わってくる。
なぜ、と問うことは決して無駄なことじゃない。

478 :デフォルトの名無しさん:03/07/04 01:21
>>475
プロトタイプの存在はその例ほど単純なものじゃない。

・コンパイラは前方参照しない
・型宣言のない関数はintを返す
・関数に渡すパラメータは一定の法則で型変換される

といったもともとのCの仕様があって、型の不整合によるバグが相次ぎ、
しかもそれを検出する手段がほとんどなかった(lintなんてのはあった)。
その経験上の反省からC++にプロトタイプという関数の型を宣言する
機能が生まれ、それがCにも輸入されたという経緯がある。

プロトタイプの存在意義が初心者にわかりづらい側面があるのは
こういった複数の要因から成り立っているからだと思うな。

479 :デフォルトの名無しさん:03/07/04 01:24
前方参照って言葉がいつもよく分かんない。
前方って先の方ってこと?
それとも以前の方のこと?

480 :デフォルトの名無しさん:03/07/04 01:26
>>479
ファイルの終端方向が前方。


481 :デフォルトの名無しさん:03/07/04 01:28
>>480
了解。
ホンマ分かりにくい言葉だ。
というか、日本語が分かりにくいのか。

482 :デフォルトの名無しさん:03/07/04 01:30
>>481
うん。わかりづらいんだよね。おれもはじめてみたときは面食らったもの。
一応テクニカルタームなのでそのまま使ったけど、ひどい訳語だと思う。

483 :デフォルトの名無しさん:03/07/04 01:34
>>482
ファイルを基準にするのと
ファイルポインタの進行方向を基準にするので
どっち方向も前にも後ろにもなりうるんだよね。
どっちかというとファイルを基準にしたほうが分かりやすいと思うんだけど、
一体誰がこんな訳語を考えたのか。

俺なら未来参照と訳すかなぁ...。

484 :デフォルトの名無しさん:03/07/04 01:37
俺は先入れ先だしが納得いかない。

先(に)入れ(たものを)先(に)だし

と補完しないと意味不明になる



485 :デフォルトの名無しさん:03/07/04 02:30
double型の値を小数点以下四捨五入してint型にするのはどうやったらいいんですか?
(値を格納している変数は変えずに)
本で調べてものってなかったです。くだらない質問ですが教えてください。

486 :デフォルトの名無しさん:03/07/04 02:35
>>485
整数部がそれほど大きくなければ、(int)((d*10+5)/10) /* dはdouble型 */


487 :486:03/07/04 02:36
まてよ・・・四捨五入用の関数があったかも

488 :486:03/07/04 02:46
http://www.catnet.ne.jp/kouno/c_faq/c14.html#6

・・・・。0.5を足せばいいんじゃないか・・・・なにやってんだろ俺。

489 :デフォルトの名無しさん:03/07/04 02:47
forward - 順方向に向かう
backward - 逆方向に向かう

日本語だと前は手前も先のほうにも解釈できてややこしいな

490 :デフォルトの名無しさん:03/07/04 02:51
forward pointer【コンピュータ】正方向ポインタ
goo辞書はこう訳しているみたいだ。前方よりはいいかも。

491 :485:03/07/04 02:54
>>486ありがとうございます!

492 :486:03/07/04 02:59
>>491
まて。
>>488のリンク先の方法でやった方がいい。
(int)(d+0.5)

493 :デフォルトの名無しさん:03/07/04 03:08
宿題スレに同じ質問あったな・・

494 :485:03/07/04 03:28
>>492
ふう、できました。どうもです。

495 :直リン:03/07/04 03:38
http://homepage.mac.com/maki170001/

496 :デフォルトの名無しさん:03/07/04 04:43
struct hoge{
int i;;
char a;
}aho[100];

とかのすべてのiに0とかの初期値を入れたいのですがforとかで回して入れるしかないんでしょうか?

497 :デフォルトの名無しさん:03/07/04 04:46
>>496
>>460>>467

498 :デフォルトの名無しさん:03/07/04 05:03
0以外なら、100個全部書くか、for

499 :デフォルトの名無しさん:03/07/04 05:13
泣けますぜ、おまいら

http://pc2.2ch.net/test/read.cgi/hp/1004494535/l50

500 :デフォルトの名無しさん:03/07/04 09:56
前方参照
手前参照

501 :デフォルトの名無しさん:03/07/04 10:12
int insert(int data , NODE **ptr)
{
NODE *tempptr = *ptr , *newptr ;
if(tempptr == NULL) {
newptr = malloc(sizeof(struct node)) ;
newptr->leftptr = NULL ; newptr->rightptr = NULL ;
newptr->data = data ; *ptr = newptr ; return 1 ;
}
while(tempptr != NULL) {
if(tempptr->data == data)
return 0 ;
else {
if(tempptr->data > data)
tempptr = tempptr->leftptr ;
else
tempptr = tempptr->rightptr ;
}
}
newptr = malloc(sizeof(struct node)) ;
if(newptr == NULL) {
printf("\n out of memory \n") ;
exit(0) ;
}
else {
newptr->data = data ; newptr->leftptr = NULL ;
newptr->rightptr = NULL ; tempptr = newptr ; return 1 ;
}
}
これで挿入した二分探索木を走査すると論理エラーになりますんでよろ。

502 :デフォルトの名無しさん:03/07/04 10:44
int insert(int data , NODE **ptr)
{
while(*ptr != NULL) {
if((*ptr)->data == data) return 0 ;
if((*ptr)->data > data)
ptr = &(*ptr)->leftptr ;
else
ptr = &(*ptr)->rightptr ;
}
*ptr = malloc(sizeof(NODE)) ;
if((*ptr) == NULL) {
printf("\n out of memory \n") ;
exit(0) ;
}
(*ptr)->leftptr = NULL ; (*ptr)->rightptr = NULL ;
(*ptr)->data = data ;
return 1 ;
}

503 :デフォルトの名無しさん:03/07/04 10:51
>>502
質問なんですが
6行目や8行目の
ptr = &(*ptr)->leftptr ;
の部分を
*ptr = (*ptr)->leftptr ;
とコーディングしてもいいんでしょうか?

504 :デフォルトの名無しさん:03/07/04 11:08
>>503
そのココロは…?
ptr=...
*ptr=...
が同じことをするようには見えないけど

505 :デフォルトの名無しさん:03/07/04 12:40
>>504
自分には*ptr=... でも
同じようになぞってるように見えるんですが

506 :デフォルトの名無しさん:03/07/04 13:21
>>505
じゃあ、それでOK

507 :デフォルトの名無しさん:03/07/04 13:57
>>505
ptr = ...  → ptr の値を変更する
*ptr = ... → ptr の参照先の値を変更する

全然違う。

>>506


508 :デフォルトの名無しさん:03/07/04 14:14
>>507
よく読め。
ptr = &(*ptr)->leftptr ;
の「ptr」はポインタのポインタだろうが

509 :松井:03/07/04 14:21
型が合えばいいというものなの?

510 :デフォルトの名無しさん:03/07/04 14:31
>>508
だから?

511 :デフォルトの名無しさん:03/07/04 14:33
もし引数のptrが二分木のルートだとしたら、間接参照して書き換えるのはまずいと思うんだけど・・・

512 :デフォルトの名無しさん:03/07/04 15:37
「XwasyGraphic」を用いて、画像の表示を試みています。
#include<stdio.h>
#include<XeasyGraphic.h>

float bkack[] = {0.0};
float orange[] = {0.8, 0.8, 0.0};
float purple[] = {0.8, 0.0, 0.8};

main()
{
int x,y,r;
id w;

printf("中心のX座標を指定してください。 >");
scanf("%d",&x);
printf("中心のY座標を指定してください。 >");
scanf("%d",&y);
printf("円の半径を指定してください。>");
scanf("%d",&r);

w = GrWindow(100.0, 100.0, 500.0, 500.0);
GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

getchar();

exit(0);
}
このように書いて、コンパイルしようとしたのですが、
「c.21(GrCircleの行らへん):parse error before '%'」とエラーになってしまいます。
どこが間違っているのでしょうか?よろしくおながいします。

513 :デフォルトの名無しさん:03/07/04 15:39
>>512
GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

ここの%d。
21行目だと教えてくれているじゃないか・・・・

514 :デフォルトの名無しさん:03/07/04 15:40
GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

515 :デフォルトの名無しさん:03/07/04 15:41
http://www.ics.kyoto-su.ac.jp/~oomoto/lecture/program/C/XeasyGraphic.html

516 :512:03/07/04 15:48
>>513
>>514
指定した数をscanfで「%d」に代入されて、printfで表示させる方法と同じ方法で書いたものなので、なぜ間違っているのかがわからないのです。どう直せばよいのか、ご指導お願いします。

>>515
実は、京産からアクセスしていたりします。

517 :デフォルトの名無しさん:03/07/04 15:59
>>516
scanf は、指定された変換フォーマット(ここでは %d )に従い入力を変換し、
対応するパラメタをポインタとして取り出してオブジェクトを格納するんだよ。
ようするに、値は x, y, zに入っているから、それを直接パラメタにしていいんだよ。

518 :デフォルトの名無しさん:03/07/04 16:01
>>516
>指定した数をscanfで「%d」に代入されて、printfで表示させる方法と同じ方法で書いたものなので
printfで表示させる方法ってなんのことやらわからん。

GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

でprintfフォーマット文字列のようなものを使ってるけどそのことか?
文字列でさえないんだけどな。

519 :デフォルトの名無しさん:03/07/04 16:01
>>516
scanfの"%d"はあくまでも文字列。
%dと裸のまま書いたらエラー。%は割ったあまりを求めるもので、項が二つ必要だからね。(あとdが未定義だし)

520 :519:03/07/04 16:02
あとさ、コンパイルエラーにはならないけど、scanfでfloat型に入れるときは%fだよ。

521 :520:03/07/04 16:02
なんでもないです(^_^;)
見間違えた

522 :512:03/07/04 16:07
>>517-521
ありがとうございました。無事、コンパイル、実行することができました。
が、値を入力して、画像が表示された直後に画像が消えてしまいました。
ためしに、「getchar();」を2つにしてみたところ、任意のキーを押すまで画像が消えなくなりました。
これはなぜなのでしょうか?
重ね重ねすいません。おながいします。


523 :デフォルトの名無しさん:03/07/04 16:10
scanfのとらなかった入力のあまりを、getcharが受けるからだろ。

524 :522:03/07/04 16:15
>>523
では、どうすればよいのでしょうか?
本当に初心者なものでして、よくわかりません(泣。
ここに来たのも、色々調べてのことなのです。よろしくおながいします。

525 :デフォルトの名無しさん:03/07/04 16:18
>>524
画像がすぐに消えるのも嫌。任意のキーを押すまで消えなくなるのも嫌。
じゃあどうしたいの?一定時間表示させたいとか?

526 :522:03/07/04 16:23
>>524
あ、いえ、任意のキーを押すまで消えなくさせたいのですが、大学の抗議では、
「getchar();は、任意のキーを押すまで表示させておく命令です」と教わっているので、
getchar();を2つ入力することに抵抗があるのです。
getchar();を2つ入力するままでよろしいのでしょうか?

527 :デフォルトの名無しさん:03/07/04 16:24
>>526
その教授を窓から投げ捨てよう。

528 :526:03/07/04 16:33
>>527
何となくわかりました<w
ありがとうございました。

529 :デフォルトの名無しさん:03/07/04 16:38
>>528
犯行予告?

530 :デフォルトの名無しさん:03/07/04 16:46
(((( ;゚Д゚)))ガクガクブルブル

531 :デフォルトの名無しさん:03/07/04 16:51
教師を疑うのも才能のうち。

532 :デフォルトの名無しさん:03/07/04 16:55
無茶なこと教えるやつもいるんだなw

533 :デフォルトの名無しさん:03/07/04 21:47
大学の小テストで、こういう scanf の使い方をしたら×になりました。

 int x[3], i;

 for(i=0; i<3; i++)
   scanf("%d", x+i);

解答では x+i じゃなくて &x[i] になってたんですけど、
x+i でも普通に実行できると教授に抗議したら嫌そうな顔で○にしてくれました。
x+i だと何かいけないんでしょうか?

534 :デフォルトの名無しさん:03/07/04 21:49
>>533
その教授を窓から投げ捨てよう。


535 :デフォルトの名無しさん:03/07/04 21:53
こんなのばっかかよ
日本の大学授業ってレベル低いのな・・・

536 :533:03/07/04 22:08
>>534
´Д`)マジっスカ
「ホントに実行できたんか?」と念押しされたんで、
処理系に依存しているとかの問題があるのかと思ったのに。
今見たらK&Rでも使われてるし……。

537 :デフォルトの名無しさん:03/07/04 22:21
CPUの周波数によって表示を変えたり
メモリーの容量で表示を変えたり
HDDの容量で表示変えたり
OSによって表示変えたり実行できるOS制限したり

できませんか?

538 :デフォルトの名無しさん:03/07/04 22:23
>>537
>>1
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!

539 :デフォルトの名無しさん:03/07/04 22:32
>>536

なんら問題はない。
むしろ、その方がスマートかと。

ちなみに、その場合の「x+i」は
配列 x の先頭アドレスから i 個目の要素を指す。

540 :デフォルトの名無しさん:03/07/04 22:32
だから日本の大学は世界中からナメられんだよ

&x[0]を知らない博士サマが
真面目な反論にろくに検証もせずに嫌な顔って?

fjにもいたけどよ、意見合わないとすぐバカとか猿とか言い出す助教授サマ
まさにこの親にしてこの子ありだよな

嘆かわしい限りだ

541 :デフォルトの名無しさん:03/07/04 22:33
C初心者です
猫でも分かるプログラミングの
ISBNを作ろうでつまずいてるんですけど
やばいっすか?

542 :デフォルトの名無しさん:03/07/04 22:35
&a[i]派とa+i派ってどちらが多いんだろう。
俺はa+iを使うけど。

543 :デフォルトの名無しさん:03/07/04 22:40
&i[x]で○くれないかな。

544 :デフォルトの名無しさん:03/07/04 22:43
>>543

x+i で貰えない様だから無理じゃないの?
合ってるけどな(w

545 :デフォルトの名無しさん:03/07/04 22:44
よくscanf関数は学習用だと聞くんですが、
通常は入力関数に何を使うんですか?

546 :デフォルトの名無しさん:03/07/04 22:46
>>545
弱虫はfgets
漢はgets

そのあとsscanfなどを使って処理する。

547 :デフォルトの名無しさん:03/07/04 22:47
>>545
状況による

548 :デフォルトの名無しさん:03/07/04 22:48
fgetc, fgets, fread

549 :デフォルトの名無しさん:03/07/04 22:48
perlを使う。

550 :546:03/07/04 22:48
一文字ならgetchar
一定バイトごととかならfread

551 :デフォルトの名無しさん:03/07/04 22:51
http://gametui.hp.infoseek.co.jp/tetoris.zip
このテトリスってどうやって作ってるんですか?
API使ってるの?
標準C?


552 :デフォルトの名無しさん:03/07/04 22:52
>>561
しらねーよ。
実行ファイルだけじゃCと関係ないし。

553 :デフォルトの名無しさん:03/07/04 22:52
>>551
しらねーよ。
実行ファイルだけじゃCと関係ないし。

554 :デフォルトの名無しさん:03/07/04 22:53
>>551
スレ違い

555 :デフォルトの名無しさん:03/07/04 22:56
>>546-550
分かりました。
sscanfは初耳なんでちょっと調べてみまつ。

556 :デフォルトの名無しさん:03/07/04 22:57
sscanfはポインタを返せない
データをこぼす点でgetsと同類

557 :デフォルトの名無しさん:03/07/04 23:00
>>551
怖いから実行しないで想像で答えるけど、グラフィック使ってるなら、API使ってる。
(もしくは標準以外のライブラリか)

558 :デフォルトの名無しさん:03/07/04 23:19
>>556
はぁ?

559 :p:03/07/04 23:21
この宿題を解いてください。

GNU MPライブラリを用いて二項係数 nCkを求める関数
void my_mpz_binom(mpz_t rop, int n, int k) を作成し、
70 C 13 を求めよ。

560 :デフォルトの名無しさん:03/07/04 23:23
>>558
コドモは寝る時間だ
高尚なギャグを邪魔するな

561 :デフォルトの名無しさん:03/07/04 23:50
>>559
宿題は自分でやるものだ。

562 :デフォルトの名無しさん:03/07/04 23:54
>>559
C/C++の宿題・・・のほうに解を書いときました。
当方 GNU MPライブラリは初めてなので間違ってるかも。
でも大体あってると思います。
マニュアル↓
http://mirrors.theonlinerecordstore.com/gnu/Manuals/gmp/html_mono/gmp.html#Function%20Classes

563 :デフォルトの名無しさん:03/07/04 23:56
>>561
宿題は写すものだ

564 :_:03/07/04 23:56
http://homepage.mac.com/hiroyuki44/jaz08.html

565 :デフォルトの名無しさん:03/07/04 23:58
自分でやる = 自分で写す

566 :デフォルトの名無しさん:03/07/05 10:03
>>565 警告: おそらく不正な代入

567 :デフォルトの名無しさん:03/07/05 12:34
足してn(自然数)になる自然数の組み合わせを表示するプログラムを教えてください。
具体的には n=5 のとき 自然数の組み合わせは
5, 41, 32, 311, 221, 2111, 11111 です。
つまり、自然数の組み合わせの中に 1 がk_1個、 2 がk_2個、…、 n がk_n個あるとすると
k_1,k_2,…,k_n が
 k_1 + 2 * k_2 + … + n * k_n = n
という方程式を満たす0以上の整数解を持てばいいのですが、どういうアルゴリズムで
k_1,k_2,…,k_n を求めるかわかりません。お願いします。

568 :デフォルトの名無しさん:03/07/05 12:38
再帰

569 :デフォルトの名無しさん:03/07/05 12:44
>>568
再帰だとちょっと n が大きいと止まっちゃうんじゃない?

570 :デフォルトの名無しさん:03/07/05 12:51
>>566
ワラタ

571 :デフォルトの名無しさん:03/07/05 13:05
>>567
C/C++の宿題スレの過去ログを見ろ。

572 :デフォルトの名無しさん:03/07/05 13:35
  ┏俺様用セーブポイント━━━━━━━━━━━━━━━━┓
  ┃ここまで理解した                          .┃
  ┃┌─────┐ LV 10                     ┃
  ┃│  ∧ ∧. ..│ HP 100/150                  ┃
  ┃│ ( ´∀`) ..│ MP  25/50        ┌────┐  ┃
  ┃└─────┘                .│SAVE← .│  ┃
  ┗━━━━━━━━━━━━━━━━━━ │LOAD   │━┛
 ..                             └────┘

573 :デフォルトの名無しさん:03/07/05 13:37
>>572 きゃんせる

574 :デフォルトの名無しさん:03/07/05 13:41
int arege(char *data){
char dmy[2];
dmy[1]='\0';

int ret=0;
int data_length=strlen(data);
int i;

for(i=0;i<data_length;i++){
dmy[0]=data[i];
ret+=atoi(dmy);
}
return ret;
}

int main(){
char data[1000];
scanf("%s",data);
printf("%s is %d",data,arege(data));
}


575 :デフォルトの名無しさん:03/07/05 13:43
http://slashdot.jp/

576 :デフォルトの名無しさん:03/07/05 13:53
n=5ならば、
最初に、1を全部並べる。11111

data[0]とdata[1]を合計して、11111から、2111 → 311 → 41 → 5
次に、data[1]とdata[2]を合計して、2111から221→ 23, 311から32
ここで、data[n-1]>=data[n]という条件があるならば23は消せる。

結局これで得られるのは、
11111,2111,311,41,5,221,32

あとは、strlenでソートかければよろしい。

577 :574:03/07/05 13:55
>>575 goodjob.

578 :デフォルトの名無しさん:03/07/05 13:57
悪い、data[i-1]>=data[i]にしてくれ。
問題で与えられたnと混乱する。

579 :デフォルトの名無しさん:03/07/05 14:31
strcpy(ptMyStr->szName,"あいうえお");

のあいうえおは、いったん確保されますよね?
関数終了と同時に領域確保されるんですか?

580 :デフォルトの名無しさん:03/07/05 14:34
>>579
プログラムが動いている間確保されているハズだが

581 :デフォルトの名無しさん:03/07/05 14:45
>>579
終了と同時に確保してどうする

582 :デフォルトの名無しさん:03/07/05 14:49
>>581
間違えましたw
関数抜けたと同時になくならず、プログラム終了と同時になくなるのですか?

583 :デフォルトの名無しさん:03/07/05 14:52
>>582
状況による。
ROM とかに確保する場合もあるんだから、電源切っててもなくならなかったりする。

584 :デフォルトの名無しさん:03/07/05 14:54
>>583 そだね。

585 :デフォルトの名無しさん:03/07/05 21:52
time.hってインクルードしたら
どういったことに使えるんですか?
実用的な例をお願いします。
簡単なコードもお願いします

586 :デフォルトの名無しさん:03/07/05 21:55
保守

587 :デフォルトの名無しさん:03/07/05 21:58
time.hを見てみれ。

588 :デフォルトの名無しさん:03/07/05 22:14
>>585
CLOCKS_PER_SECが使えるようになる

589 :デフォルトの名無しさん:03/07/05 22:58
srand(time(NULL));

590 :デフォルトの名無しさん:03/07/06 00:32
計算用に関数を作るんですが(たとえばmatrixのようなもの)
計算結果は戻り値で返しますか?引数で返しますか?
これは状況によるのか個々の考えか、どっちでしょう?

591 :デフォルトの名無しさん:03/07/06 00:39
個々の考えだし、状況による。


592 :590:03/07/06 01:02
>>591
う、そうなんですか・・・。
わかりました。

593 :デフォルトの名無しさん:03/07/06 01:13
time.h 見たの?

というのは既に出てたか。

594 :デフォルトの名無しさん:03/07/06 02:13
お聞きしたいのですが、

char szStr1[] = "0123";
char* szStr2 = "0123";

szStr1[0] = szStr1[1]; // OK
szStr2[0] = szStr2[1]; // NG -> アクセス違反

となってしまうのが、いまいち理解できないのです…
どうしてでしょうか…?

なお、VC6 / Win2kSP3 環境下で発生しました。


595 :デフォルトの名無しさん:03/07/06 02:16
>>594
いままで何度も繰り返された話題だからログ読みなされ


596 :デフォルトの名無しさん:03/07/06 02:17
文字列リテラルのアドレスに書き込もうとしたからだろ。

597 :594:03/07/06 03:00
>>595
前スレにすら、似たような質問がありましたね…
失礼しました…



とりあえず、回答(だと思う)のある過去ログへのURLでも張っておきます。

- C言語なら、ぬるぽに聞け! Part 〈53〉
http://pc2.2ch.net/test/read.cgi/tech/1048995232/275-


598 :デフォルトの名無しさん:03/07/06 03:12
>>597
ガッ!

599 :デフォルトの名無しさん:03/07/06 03:29
#include <stdio.h>
long int y; /* 乱数の種 */
#define a 1234
#define b 4567
#define m 16383
main(){
double n;
y=8901;
y=(a*y+b)%m;
n=(double)y/(double)m;
printf("n=%lf\n",n);
exit( 0 );
}
上記のプログラムはコンパイル時、'exit'がおかしいと出ます
なんでですか?

600 :デフォルトの名無しさん:03/07/06 03:31
exitはstdlib.h。
まあ、mainの最後にexitがあるのもおかしいわけだが。

601 :デフォルトの名無しさん:03/07/06 03:33
>>599
#include <stdlib.h> が無いからでないの?

602 :デフォルトの名無しさん:03/07/06 03:35
かぶってしもった・・・

603 :デフォルトの名無しさん:03/07/06 03:36
>>600

main関数の終了はexit関数を呼び出した時と同じ動作をする。

604 :599:03/07/06 03:47
さっきのプログラムはstdlib入れたら解決しましたが
そのプログラムでmain(){とdouble n;の間にint z;
y=(a*y+b)%m;とn=(double)y/(double)m;の間に
z=(n*9%9)+1;を入れて再コンパイルしたら(9は適当な数です。10とかでも同じ結果でした)
浮動小数点を不正な使ってるというエラーが出ましたが、
まったくこの意味が分かりません。



605 :デフォルトの名無しさん:03/07/06 03:48
return すりゃええやんけ。
なんでわざわざ関数を呼ぶのか分からん。

606 :デフォルトの名無しさん:03/07/06 03:50
double で剰余演算子 % は使えん。

あと、%lf → %f ナ。

607 :デフォルトの名無しさん:03/07/06 03:53
>>604
変数は初期化してから使用汁

608 :デフォルトの名無しさん:03/07/06 04:12
>>607
この場合は特に初期化する必要もないと思うが。
ポインタを一応 NULL で初期化しておくことはよくするけど、
これは正しく参照できないことが保証されてるからであって、
普通の数では何で初期化すればいいのやら分からんぜよ。

609 :デフォルトの名無しさん:03/07/06 04:18
>>608
double n;
y=8901;
y=(a*y+b)%m;
z=(n*9%9)+1; /* nは初期化すべき */
n=(double)y/(double)m;

610 :609:03/07/06 04:19
まぁ、それ以前に%の方が問題なのだが…

611 :デフォルトの名無しさん:03/07/06 04:25
あ、これを見落としてた。
>y=(a*y+b)%m;とn=(double)y/(double)m;の間に
確かにそうやわ。

612 :デフォルトの名無しさん:03/07/06 04:48
いややわ〜

613 :デフォルトの名無しさん:03/07/06 05:37
うちなめんといて〜。

614 :_:03/07/06 05:38
http://homepage.mac.com/hiroyuki44/

615 :デフォルトの名無しさん:03/07/06 06:03
>>608
最近のオプティマイズでは無意味な初期化は無視されるので
初期化しておくのがいいよ、ぐらいの意では

616 :デフォルトの名無しさん:03/07/06 06:41
>>615
無意味に初期化してしまうと
>>609 のような状態で警告してくれなくなっちゃうでしょ?

617 :デフォルトの名無しさん:03/07/06 07:07
char型は8ビット
int型は32ビット
この場合、jは初期化すべきなのか、しないべきなのか…
unsinged int decode( unsigned char *p )
{
  unsigned int i,j;
  for(i=4;i--;j=(j<<8)+p[i]);
  return j;
}

618 :デフォルトの名無しさん:03/07/06 07:10
j=(j<<8)+p[i]); ←ここ j 初期化してないと死ぬで

619 :デフォルトの名無しさん:03/07/06 07:22
>>618
jの中身は未定でも問題ありません(警告は出るけど)

620 :デフォルトの名無しさん:03/07/06 08:03
>>605
そんな細かいこと気にすんなよ。

>>619
「未定義」なんだから、abort() するコード吐かれても文句は言えないよ。

621 :デフォルトの名無しさん:03/07/06 10:10
fmodってどういう使い方するんですか。
余りを求めるんですよね?
%を使ったほうがいいと思うんですが

622 :デフォルトの名無しさん:03/07/06 10:13
整数なら

623 :デフォルトの名無しさん:03/07/06 11:44
普通は
int func(){
return;
}
とすると思うけど、

func(){
return;
}

こんな関数って、返り血はint型になるのですか?


624 :デフォルトの名無しさん:03/07/06 11:48
(゚Д゚)ハァ?

625 :デフォルトの名無しさん:03/07/06 11:56
それが警告なしで通せるコンパイラってあんのかな?

626 :デフォルトの名無しさん:03/07/06 11:59
C++ はダメで、古い C なら勝手に int じゃなかった?C99 とかは知らんけど

627 :デフォルトの名無しさん:03/07/06 12:00
>>623
なにが訊きたいかわからん。

とりあえず、return;だけじゃ何も返らん。
関数の返り値の型を書かないとintが仮定される。

628 :デフォルトの名無しさん:03/07/06 12:04
>>625
int なら、省略可能

629 :デフォルトの名無しさん:03/07/06 12:45
>>623です。
仮定されるんですか、なるほど。
今まで、int func()としないと値は返ってこないものと
思いこんでいて、本を眺めてたら、いきなり返値の指定のない
func()で書かれていたので。。
ちなみに、func(){}
として、連続してprintfで呼び出すと
1
2
2
2
て感じになったんですが、どういうことでしょう?
BCBのコンパイラです。

630 :デフォルトの名無しさん:03/07/06 12:48
return 戻り値;
をちゃんと書けと言ってるだろうが

631 :デフォルトの名無しさん:03/07/06 12:48
これは言語の範囲を超えるのかな?よくわかんないけど。
関数の呼び出し側に制御が戻った時に
あるレジスタに入っている値を戻りの値とみなしてるだけだったような。

632 :623:03/07/06 12:53
>>630
func(){}
なら、return 値;書かなくても、コンパイラ通るよ。
やってみた?
VC++のコンパイラの場合は
-858993460の連続でした。

633 :デフォルトの名無しさん:03/07/06 12:54
>>632
誰がコンパイル出来ないと言っている?

634 :デフォルトの名無しさん:03/07/06 12:57
はぁ〜
gccだったら-Sつけて.s吐かせて関数呼び出し側のコードを見てみれ。

635 :デフォルトの名無しさん:03/07/06 13:15
駄目だな、コイツは

636 :デフォルトの名無しさん:03/07/06 13:20
「コンパイラ通るよ」か。

637 :デフォルトの名無しさん:03/07/06 13:52
BCBなりVCのスレで語ってくれ

638 :デフォルトの名無しさん:03/07/06 14:03
俺がコンパイラだったらPCあぼーんするな。

639 :デフォルトの名無しさん:03/07/06 14:25
世に出ないよそんな奴>>638
何回実行し直しても同じ値?>>632

640 :デフォルトの名無しさん:03/07/06 14:53
>>639
VC++はスタックを0xccで初期化するからね。
>>632
Debug版じゃなく、Release版で試してみな、値が変わると思うよ。

641 :デフォルトの名無しさん:03/07/06 14:59
インラインアセンブラ使って eax に値を設定した時は
戻り値なし return を使うこともある。

642 :デフォルトの名無しさん:03/07/06 16:00
鬱だ氏のう

643 :デフォルトの名無しさん:03/07/06 16:16
  ┏俺様用セーブポイント━━━━━━━━━━━━━━━━┓
  ┃ここまで理解した                          .┃
  ┃┌─────┐ LV 10                     ┃
  ┃│  ∧ ∧. ..│ HP 100/150                  ┃
  ┃│ ( ´∀`) ..│ MP  25/50        ┌────┐  ┃
  ┃└─────┘                .│SAVE← .│  ┃
  ┗━━━━━━━━━━━━━━━━━━ │LOAD   │━┛
 ..                             └────┘

644 :デフォルトの名無しさん:03/07/06 16:26
>>641
__declspec(naked)のときくらいだな、そんなことするのは。
もっとも、そんときゃreturnなんて使わん。

645 :デフォルトの名無しさん:03/07/06 17:07
>>643
MP(マジックポイントかな?)ってどういうとき減るのかな?

646 :デフォルトの名無しさん:03/07/06 17:10
マジックナンバーを使うと減っていく。

647 :デフォルトの名無しさん:03/07/06 17:30
メモリーの量だろ?>MP

648 :デフォルトの名無しさん:03/07/06 17:31
ダウソの仕方がわからん!
download のreleaseクリックしてもそこからどうやるかわからん!
知ってる人教えてください

【コンパイラ】
gcc
http://gcc.gnu.org/


649 :デフォルトの名無しさん:03/07/06 17:34
>>648
どうせダウンロードもできない奴には、使えないからあきらめろ。

それ以前にスレ違いだし。

650 :デフォルトの名無しさん:03/07/06 17:39
配列を返す関数ってどうやって書けばいいの?

651 :デフォルトの名無しさん:03/07/06 17:41
>>648
好きなの落とせ
ftp://ftp.kddlabs.co.jp:0/pub/gnu/gcc/

652 :デフォルトの名無しさん:03/07/06 17:47
>>650
不可能
配列をメンバーにもつ構造体を返すことはできるけど。

653 :デフォルトの名無しさん:03/07/06 17:51
>>650
配列そのものは渡すことも返すこともできない。
配列へのポインタ、または配列の先頭要素へのポインタなら
渡すことも返すこともできる。

654 :653:03/07/06 17:54
hoge f()[SIZE]; /* 配列を返す関数(エラー) */
hoge (*f())[SIZE]; /* 配列へのポインタを返す関数 */
hoge *f(); /* 配列の先頭要素へのポインタを返す関数 */

655 :653:03/07/06 17:57
くだらんことのように聞こえるかも知れんが
hogeを返すこととhogeへのポインタを返すことを
混同しているようではC使いにはなれない。

656 :デフォルトの名無しさん:03/07/06 18:00
>>651
つながらないよ。
本当にポート番号は0なの?

657 :デフォルトの名無しさん:03/07/06 18:02
う〜むCはむづかし…
むづむづむづ…
修行してきます

658 :657:03/07/06 18:03
とりあえず
>>653さんくすこ

659 :652:03/07/06 18:07
なぜか煽りと思われたらしい。

660 :657:03/07/06 18:16
いえいえ>>652さんもありがとん
ん?

661 :650:03/07/06 18:27
あ〜なるほど!
構造体なら名前空間とかは関係ないですねぇ
いままで構造体がある言語を使ったことがなかったんで
こいつはたまげた!

662 :俺的補足:03/07/06 18:40
構造体を使ってもいいが、配列を返したいだけだったら
大抵は、呼び出し側で予め用意した配列のアドレスを引数として渡してやると思うんだが・・・

このやり方分かってて聞いているんならいいけどさ。

663 :デフォルトの名無しさん:03/07/06 18:44
便乗しちゃうけど、

struct abc func();

って気持ち悪いんだけど、どう?

664 :デフォルトの名無しさん:03/07/06 18:51
べつに。

665 :デフォルトの名無しさん:03/07/06 18:54
>664
そう。

666 :デフォルトの名無しさん:03/07/06 18:56
typedefしているけど、標準ライブラリにも構造体を返すがあるね。divとか。

667 :デフォルトの名無しさん:03/07/06 19:01
それみたいに構造体の規模が小さいなら我慢できるけど、俺は気持ち悪い。

668 :デフォルトの名無しさん:03/07/06 19:06
divってなんの役に立つんだろう。

669 :デフォルトの名無しさん:03/07/06 19:36
>>668
DIVはFORTRANの除算と同じ結果が得られるように作られた。
/%演算子とは結果が異なる場合がある。
簡単に言うと、/の商の丸め方と%の結果の符号は処理系依存だが、div()では規格で規定されている。

それに、大抵のCPUでは1命令で商と余りが同時に得られているので、
商も余りも必要な処理では実行速度の点で有利。
divはかなり遅い命令なのです。


670 :デフォルトの名無しさん:03/07/06 20:01
制御文で「もし9の倍数なら〜」ってのはどうやって判別するんですか?

671 :デフォルトの名無しさん:03/07/06 20:06
複雑系のリアプノフ数をシミュレーションするのに適したソフトって
ありますか?

672 :デフォルトの名無しさん:03/07/06 20:08
#include <stdio.h>
int main(){
char a='〇',b='●';
int c,n;
for(c=1;c<=91;c++){
if(c%2==1){
printf("%s",a);
}
else if(c%2==0){
printf("%s",b);
}
for(n=1;n<=9;n++){
if(c==9*n){
printf("\n");
}
}
}
}


673 :デフォルトの名無しさん:03/07/06 20:09
>>670
9 の倍数 → 9 で割ったあまりが 0 と考える。

>>671
この板は、ソフトを作る人のための板で、作られたソフトを探す人のための板ではない。

674 :デフォルトの名無しさん:03/07/06 20:12
>>672 はいそこ!あちこちのスレに貼らない!

675 :デフォルトの名無しさん:03/07/06 20:15
(0_)! (┃┃〈リ  はわわ

676 :デフォルトの名無しさん:03/07/06 20:16
>この板は、ソフトを作る人のための板で、作られたソフトを探す人のための板ではない。

『板』を色んな言葉に置き換えて言ってやりたいドアフォが大杉!!

・・・愚痴聞きアリガトウ >>ALL

677 :Nanashi_et_al.:03/07/06 20:20
func1からfunc2を呼び出す(使用する)とき
宣言で func1(…, double (*func2)(…), …) とサンプルでしているのですが,
別のところで func2 を宣言してるし,使えるのに
func1 の宣言を上のようにするのはナゼですか?

678 :デフォルトの名無しさん:03/07/06 20:22
>>677
その場合のfunc2は関数ポインタ。

・・・・しっかし同じ名前を付けるのはどういうことか・・

679 :Nanashi_et_al.:03/07/06 20:33
ん,こーゆーことだからかな???
func1から呼び出せる関数がfunc2だけでなくfunc3とかにすることができて,
使いまわしができるから,ということで納得しました。。。

680 :デフォルトの名無しさん:03/07/06 20:40
>>672のコードを興味本位でコンパイルしてみたら
フリーズしてしまいました。
一瞬、ウイルスかと思いますた。(ぇ

681 :デフォルトの名無しさん:03/07/06 21:01
>>672のコードって何がしたいのか教えて下さい。

682 :680:03/07/06 21:06
めっちゃ気になります。
どうか、教えて下さい。
なぜフリーズなのか。コンパイルエラーなら分かるけど

683 :デフォルトの名無しさん:03/07/06 21:12
printf("%s",a);
     ↑ 

684 :デフォルトの名無しさん:03/07/06 21:19
単に市松模様を書きたいだけじゃねーの

685 :デフォルトの名無しさん:03/07/06 21:32
学校のコマンドプロンプトの時は、bcc32 ○.c って入れると
コンパイルされるんですが、家でやると出来ないんですけどな
んででしょうか。。。


686 :デフォルトの名無しさん:03/07/06 21:38
bccインストールしてないんだろ

687 :デフォルトの名無しさん:03/07/06 21:39
bcc入れてないからだろ。

688 :デフォルトの名無しさん:03/07/06 21:43
bccをインストールしてないんだきゅん

689 :デフォルトの名無しさん:03/07/06 21:45
bcc にパスが通ってないんだろ?

690 :デフォルトの名無しさん:03/07/06 21:47
スレ違いだろ。

691 :デフォルトの名無しさん:03/07/06 21:48
Delphi最強!!

692 :デフォルトの名無しさん:03/07/06 21:50
>>691 で?

693 :デフォルトの名無しさん:03/07/06 21:51
オチがついたところで次の方どうぞ

694 :デフォルトの名無しさん:03/07/06 21:53
下川みくに「tomorrow」


695 :デフォルトの名無しさん:03/07/06 21:55
>>694
C言語っぽい娘だな

[下川みくに ]
■80.3.19生
■北海道 静内郡 静内町
■血液型B型
■星座・魚座
■身長 155cm
■下川みくにとは・・・
・ウソは苦手 
・感極まるとすぐ泣く 
・二つのことは同時に出来ない
・けっこうタフ 
・自分は自分、人は人 
・左手も器用 
・口説くならストレートにね 
・焼肉はハラミ、ビールはスーパードライ 
・やっぱり夏が好き!! 
・打倒ミシェルブランチ 
・淋しい時は私の歌声で癒されてね


696 :デフォルトの名無しさん:03/07/06 21:56
シングルタスクか

697 :デフォルトの名無しさん:03/07/06 22:00
知らなかった。。。
今入れてみたんですが、ここにXPが書いてなくて分からないんですが・・・
http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
どうすれば良いのでしょう?

698 :デフォルトの名無しさん:03/07/06 22:02
何?みくにちゃん馬鹿にしてんの。プンぷん。

699 :デフォルトの名無しさん:03/07/06 22:06
>>697
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/

700 :697:03/07/06 22:06
aは出来ました!!!
b&cが分かりません。。。
ドコにどうやって作成するんですか?T_T
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib"


701 :デフォルトの名無しさん:03/07/06 22:11
>>700
ん、行動派だな。bin ディレクトリ上に(かな?)
bcc32.cfg ってファイルを作れ。
ilink32.cfg ってファイルを作れ。
内容は書いてあるとおりだ。

702 :デフォルトの名無しさん:03/07/06 22:11
bcc32.exe があるところにメモ帳で作れ

703 :デフォルトの名無しさん:03/07/06 22:12
ageてる時点でネタと思いたい。

704 :デフォルトの名無しさん:03/07/06 22:14
んなこというと質問者はageづらくなるではないかい?

705 :デフォルトの名無しさん:03/07/06 22:19
 

706 :デフォルトの名無しさん:03/07/06 22:22
堤さやか \952
「とびっきりSUNDAY,・・・fall in love ♥」


707 :680:03/07/06 22:22
>>672のソースに興味を持ったので少し直して実行してみました。
Cでは〇●は出力できないんですかね。変わりにa,bを置いてみました。
コードにはif((c%9)==0とあるので、9個表示したら改行するのかなぁ、と
思ったら4個で改行してるじゃないですか。>>672のマジックでつか?
それとも俺がバカなだけ?
#include <stdio.h>
int main(){
char a='a',b='b';
int c;
for(c=1;c<=91;c++){
if((c%2)==1){
printf("%c",a);
if((c%9)==0){
printf("\n");
}
}
else if((c%2)==0){
printf("%c",b);
if((c%9)==0){
printf("\n");
}
}


}
}


708 :デフォルトの名無しさん:03/07/06 22:22
>>703
「メール欄にageと入れている時点で」に直せ。

709 :697:03/07/06 22:23
ageないと気が付かないと思いました。。。

んと、、、binファイル内(bcc32.exeがあるとこ)にbを作ってcも作りました。
いったん、txtで保存してそれのファイル名を変えるって方法をとってみました。
しかし、コンパイルはされませんT_T
再起動は必要なのでしょうか??
他になにか問題はありますか???T_T

710 :697:03/07/06 22:25
>>708
そういう意味だったんですか!!!T_T

711 :デフォルトの名無しさん:03/07/06 22:25
コンパイルされないってエラーかなんか出てないの?

712 :680:03/07/06 22:25
俺もそれは最初にすごく悩んだ。
でも、よく分からないうちにできてた。
もっと楽に設定できるフリーソフトがあったからそれ使ってみたら?

713 :680:03/07/06 22:25
>>709
俺もそれは最初にすごく悩んだ。
でも、よく分からないうちにできてた。
もっと楽に設定できるフリーソフトがあったからそれ使ってみたら?

714 :デフォルトの名無しさん:03/07/06 22:25
>>709
作業ディレクトリを移動したか?


メール欄を空にすればいいだろ。ここはID出ないし。

715 :680:03/07/06 22:26
ガーソ。
ゴメソ

716 :デフォルトの名無しさん:03/07/06 22:26
>>710
これ嫁
http://hp.vector.co.jp/authors/VA017148/pages/install/bcc.html

717 :デフォルトの名無しさん:03/07/06 22:27
コンパイルされないだけじゃわからん、
実行してどうなったか書け。

718 :デフォルトの名無しさん:03/07/06 22:27
ZeroMemoryとmemsetってどっちのほうを使ったらよいんだっけ?
ZeroMemoryのほうは、VC++にしか用意されていないんでしたっけ?

719 :680:03/07/06 22:27
cというディレクトリを作って
まず、cd \c で移動。
bcc32 *.cでOK!


720 :デフォルトの名無しさん:03/07/06 22:28
>>718
UNIXのbzeroもそうだが、移植性を高めるならmemsetを使うべき。標準関数だからね。

721 :697:03/07/06 22:29
>>711
内部なんたらが認識されてませんって出ますT_T

722 :デフォルトの名無しさん:03/07/06 22:30
>>718
yes

普通は
VCでコンパイルする前提ならZeroMemory、
他環境でもコンパイルする可能性があるならmemset。

それか、それらの関数のラッパーを作るか。

723 :デフォルトの名無しさん:03/07/06 22:31
>>721
メッセージをコピペせー。
DOSプロンプトとかだったらマウスで選択して、
Enterでコピーできる。それを晒せ。

724 :デフォルトの名無しさん:03/07/06 22:31
pathがとおってないんだろ。

725 :デフォルトの名無しさん:03/07/06 22:31
>>721
aができてねぇっぇえええっぇぇぇぇ

726 :デフォルトの名無しさん:03/07/06 22:33
path設定したあとDOS窓立ち上げなおしてないんじゃねーの?

727 :デフォルトの名無しさん:03/07/06 22:33
sizeofって関数ではないんだね
sizeof演算子か・・・
どういう仕様なんでしょうか?

例:int getchar(void);

728 :デフォルトの名無しさん:03/07/06 22:35
>>727
オペランドの大きさをバイト単位で返す演算子

729 :デフォルトの名無しさん:03/07/06 22:35
>>727
型やオブジェクトのバイト数をsize_t型として返す。

730 :デフォルトの名無しさん:03/07/06 22:36
>>718
ZeroMemoryはWin32API

731 :デフォルトの名無しさん:03/07/06 22:36
配列の場合は要素数な

732 :697:03/07/06 22:38
>>726
まじ感謝です。。。
その通りでしたT_T
そしてみなさまありがとうございましたT_T

733 :デフォルトの名無しさん:03/07/06 22:39
>>731
char配列ならな

734 :デフォルトの名無しさん:03/07/06 22:39
>>731
うそつくんじゃねえw
int a[32];
のとき
sizeof(a)
は32を返すのか?

735 :デフォルトの名無しさん:03/07/06 22:53
あんまり731を追い込むなよw

736 :デフォルトの名無しさん:03/07/06 22:57
☆頑張ってまーす!!☆女の子が作ったサイトです☆
       ☆見て見て!!
http://endou.kir.jp/betu/linkvp2/linkvp.html

737 :デフォルトの名無しさん:03/07/06 22:58
☆頑張ってまーす!!☆女の子が作ったスレッドです☆
       ☆見て見て!!
http://pc2.2ch.net/test/read.cgi/tech/1056806789/

738 :デフォルトの名無しさん:03/07/06 22:59
>>730
APIじゃなくってmemesetのマクロじゃねー?

739 :デフォルトの名無しさん:03/07/06 23:04
VC++6.0ではマクロみたい。

740 :デフォルトの名無しさん:03/07/06 23:14
>>644
naked 使わない場合はスタックフレームに関する処理が暗黙に入るので、
直接 ret を使わずに return を使うのじゃ。

741 :デフォルトの名無しさん:03/07/06 23:14
>>734
sizeof aな
下手にカッコ書くから関数と勘違いさせちまうreturn(0)とかな

>>731
sizeof 配列名
コンパイル通らないことだってあるよな
もちろん知ってるよな?

742 :デフォルトの名無しさん:03/07/06 23:18
>>741
>コンパイル通らないことだってあるよな
それはコンパイラが悪いだろ

743 :デフォルトの名無しさん:03/07/06 23:23
>>738
Win32環境で用意されるという意味だ。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/zeromemory.asp

744 :デフォルトの名無しさん:03/07/06 23:24
>>742
ふーん
じゃgcc3.2もbcc5.51もcl13.00.9466も悪いのか

745 :デフォルトの名無しさん:03/07/06 23:24
便乗させて〜!
aでのbinとBinは一緒?

746 :デフォルトの名無しさん:03/07/06 23:38
>>745
大文字/小文字の区別はないハズだよ

747 :デフォルトの名無しさん:03/07/06 23:38
>>744
gcc3.2もbcc5.5.1も通るけど何やったら通らないの?

748 :デフォルトの名無しさん:03/07/06 23:41
>>747
外部変数

749 :デフォルトの名無しさん:03/07/06 23:46
>>748
extern汁

750 :デフォルトの名無しさん:03/07/06 23:47
>>748
extern int a[]; で通らんのは当たり前やないか。

751 :デフォルトの名無しさん:03/07/06 23:50
>>748
バカ丸出しだな


752 :デフォルトの名無しさん:03/07/06 23:51
path設定って一回一回
 path c:\Borland\Bcc55\bin
ってかくんですか?メンドイ

753 :デフォルトの名無しさん:03/07/06 23:53
>>750, >>751
答え聞くまでぐうの音も出んかったくせに

754 :デフォルトの名無しさん:03/07/06 23:54
>>752
パスの設定は bcc パス 設定
で検索汁
windowsのバージョン別で違うから

755 :デフォルトの名無しさん:03/07/06 23:55
>>752
環境変数設定にいれとけ

756 :デフォルトの名無しさん:03/07/06 23:55
typedef char str[10];
とかやってて
sizeof str
が駄目だから配列は駄目だと思ってたに1ポイント

757 :デフォルトの名無しさん:03/07/06 23:57
環境変数設定?


758 :デフォルトの名無しさん:03/07/06 23:59
>>752
何でココで聞くのかな…

759 :デフォルトの名無しさん:03/07/07 00:01
>>756
ワラタ

760 :デフォルトの名無しさん:03/07/07 00:04
私とうとう脱いじゃった♪
http://alink3.uic.to/user/angeler.html

761 :デフォルトの名無しさん:03/07/07 00:17
%>bcc32 test.c
エラー:ファイルtest.cが見つからない

何故?

762 :デフォルトの名無しさん:03/07/07 00:18
>>761
test.cが見つからないから

763 :デフォルトの名無しさん:03/07/07 00:19
>>761
パスとは何かを理解すれ
そして>>1-2をみれ

764 :デフォルトの名無しさん:03/07/07 00:20
>>762
確かに存在すんだけどなぁ

765 :デフォルトの名無しさん:03/07/07 00:22
>>763
path設定もたぶんできてるんだけど

766 :デフォルトの名無しさん:03/07/07 00:25
>>764
>>714

767 :デフォルトの名無しさん:03/07/07 00:29
>>761
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/

768 :デフォルトの名無しさん:03/07/07 00:37
>>766
>>719のようにしても駄目でした(悲

769 :デフォルトの名無しさん:03/07/07 00:40
いい加減うざがられてるぞ。

770 :デフォルトの名無しさん:03/07/07 00:42
>>768
だから、スレが違うんだって
ココはC言語に関する質問スレで
チミの問題はBCCの使い方で、ココとは関係ない

771 :デフォルトの名無しさん:03/07/07 00:43
path設定(xp)
・mycomputer を右クリックして以下のようにする
  プロパティ > 詳細設定 > 環境変数 > path(編集)
・;c:\Borland\Bcc55\bin を加える

772 :デフォルトの名無しさん:03/07/07 00:45
エラーでてるからbcc32は問題ないのかな?
ただカレントディレクトリが test.c のある所じゃないんじゃないの、
bcc32 "test.cのフルパス"
でやってみれ。

773 :デフォルトの名無しさん:03/07/07 00:46
というか、スレ違いじゃぁぁぁぁぁ!!!!

774 :デフォルトの名無しさん:03/07/07 00:47
bcc32 とタイプしたあとにコマンドプロンプトにソースファイルをD&D

775 :デフォルトの名無しさん:03/07/07 00:47
>>769-770
スマソ ;´Д`
他スレ(板)と比べてここの人親切だからついつい調子に乗りすぎてしまいました

776 :デフォルトの名無しさん:03/07/07 00:48
>>772
多分、次はコンパイル出来たけど、
コンパイル後のファイルが無いって言い出すよ

777 :デフォルトの名無しさん:03/07/07 00:49
ttp://www.birdport.jp/c-pre/free.htm
よめ
他にも検索すりゃたくさん見つかる

778 :デフォルトの名無しさん:03/07/07 00:56
・・・といいつつ
コンパイルkita━━━(゚∀゚)━━━!!
あとはexeっしょ!?

親切に答えてくれた人も色々忠告してくれた人もマリガトー,,´∀`

779 :デフォルトの名無しさん:03/07/07 01:01
>>778
なぁ〜んだ、つまんねぇ
mkdir test.c
とか禿藁があるんだろうと
楽しみに待ってたのに...

780 :デフォルトの名無しさん:03/07/07 01:05
>>779
これでも一応情報工学科なんで・・・オハズカシィ

781 :デフォルトの名無しさん:03/07/07 01:45
LPCTSTRとかの引数の関数に渡す場合、charのままではだめなの?

782 :デフォルトの名無しさん:03/07/07 01:45
charっていうか、charの配列だね

783 :デフォルトの名無しさん:03/07/07 01:47
>>781
#ifdef _UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif

#define FAR

typedef const TCHAR FAR* LPCTSTR;

784 :デフォルトの名無しさん:03/07/07 01:50
>>783
OKってことですか

785 :デフォルトの名無しさん:03/07/07 01:56
if(----)
{
textprint("うまくいきました");
}

のような場合、if関数に入らない限りうまくいきましたの文字列は、確保されないのでしょうか?

786 :デフォルトの名無しさん:03/07/07 01:59
>>784
_UNICODE が定義されてなければ OK だけど。
NT 系でプロジェクト作ると
デフォルトで _UNICODE が定義されるようになってたと思う。
98 系でプロジェクト作ったならデフォルトで定義されない。

もし面倒ならプロジェクトの設定いじって _UNICODE を切るのも手だけど。

787 :デフォルトの名無しさん:03/07/07 02:03
>>785
文字列リテラル(" " で囲まれた奴)は
プログラムの開始から終了の間ずっと確保される。
if(0) { textprint("..."); } のように条件が常に偽なってる場合に
確保するかはコンパイラ依存。
gcc で前確認した時には確保されてたっぽい。

788 :デフォルトの名無しさん:03/07/07 02:19
#if 0
"うまくゆきました";
#endif
これなら確保されないな。コンパイル前に消えるんだから当たり前だけど。

789 :デフォルトの名無しさん:03/07/07 02:24
大学で最近つくづく思うんだけどさ、
もちっとコンピュータの扱い方から教えんとダメポ、残念だけど。
これからプログラム書かなきゃならんやつがコマンドプロンプトも知らんし。
教えてもその本質を知ろうとしない。ブラックボックスのままで良しとする。

見てて効率悪すぎだし。あ〜ぁ、スレ違い。

790 :デフォルトの名無しさん:03/07/07 02:28
>>789
オヤジっぽいな

791 :デフォルトの名無しさん:03/07/07 02:31
>>789
同感。でも、使い方から教えてたら一年間くらい費やしそう

792 :デフォルトの名無しさん:03/07/07 02:32
>>787
エラーのガ起こった時に、

if(エラー起こったか?)
errmessage("○○関数の値が不正値");

としているのですが、調べる箇所が増えると文字列も増えるのでちょっと鬱

まーでもよくよく考えると、初期化とかの部分ぐらいしかエラーメッセージ出さないんだけど(たぶん)

793 :_:03/07/07 02:33
http://homepage.mac.com/hiroyuki44/2ch.html

794 :デフォルトの名無しさん:03/07/07 02:42
誰かifは関数じゃねぇって突っ込んでやれよ

795 :デフォルトの名無しさん:03/07/07 02:50
気付かなかった。迂闊だ。

796 :デフォルトの名無しさん:03/07/07 02:57
#include "readme.txt"


797 :デフォルトの名無しさん:03/07/07 03:04
#include "http://pc2.2ch.net/usr/include/lib2ch.h"

798 :デフォルトの名無しさん:03/07/07 10:40
>>789
最近は中学高校でも情報科目が導入されているから、だんだん改善されていくんじゃないのかね。

799 :デフォルトの名無しさん:03/07/07 10:42
中学高校の情報科目なんて IE と Word つかっておしまいだろ。

800 :デフォルトの名無しさん:03/07/07 10:48
OutlookExpressも

801 :デフォルトの名無しさん:03/07/07 10:48
うーん、そうなのか?
6年かけてそれだけじゃ悲しすぎるな。

802 :デフォルトの名無しさん:03/07/07 10:49
最近は亀の子を動かすやつやらないのか?

803 :デフォルトの名無しさん:03/07/07 10:50
xyzzy ?

804 :デフォルトの名無しさん:03/07/07 10:58
while(fgets(str, 512, file)!=NULL){
}
のカッコの中で、str が空白行(スペース、タブと改行のみの行)であれば
continue したいのですが、その判別はどうすればよいのでしょうか。

よろしくお願いします。

805 :デフォルトの名無しさん:03/07/07 11:03
>>804
判定のための関数を関数を作るのがよい。

int kuhakudake(const char *s)
{
for(;*s;s++)
/* if(!isspace(*s)) */
if(!(*s==' '||*s=='\t'||*s=='\n'))
return 0;
return 1;
}

806 :ヽ(´ー`)ノ:03/07/07 11:04
>>799-801
現在の教員が一週間かそこら講習受けた程度で情報の教員免許貰える制度が
あるらしいので、そう考えるとそんなもんなんだろうな。


807 :805:03/07/07 11:05
while(fgets(str, 512, file)!=NULL){
if(kuhakudake(str))
continue;
}

こんな風に使う。
ださい関数名は自分で何とかして。

808 :804:03/07/07 11:10
>>805
やっぱこうやって一文字ずつ確認するしかないですか?
Cって正規表現とか使えないのでしょうか?

809 :デフォルトの名無しさん:03/07/07 11:11
標準ライブラリでは無理。
C言語はテキスト処理苦手な言語です。

810 :デフォルトの名無しさん:03/07/07 11:12
まぁ、perlだってjavaだって内部じゃどんな文字列処理も一文づつ処理しているんだろう。
用意されているか、自分で作るかの違いでしかない。

811 :810:03/07/07 11:13
×一文づつ
○一文字づう

812 :デフォルトの名無しさん:03/07/07 11:17
もし構文解析の一部なら、yacc/lex を使うという手もある。
そこまで大掛かりじゃなさそうだけど。
C で書く前に、本当で C でやらなければいけないのか(Perl や
シェルスクリプトを使えないか)よく考えた方が良い。


813 :_:03/07/07 11:24
http://homepage.mac.com/hiroyuki44/2ch.html

814 :デフォルトの名無しさん:03/07/07 11:25
strpbrkを使えば多少はましになるが・・・
805さんのと根本的には変わりはない

815 :805:03/07/07 11:28
>>814
そうだ。うってつけのがあったんだ。
サンキュー

if(!strpbrk(str," \t\n")) continue;
これで一発だな。

816 :810:03/07/07 12:21
>>815
それだと、文字列の中に " " "\t" "\n" が一つも無いときにcontinue じゃないの?

817 :デフォルトの名無しさん:03/07/07 13:49
以下のようなコードで、出力ファイルをUnicodeで保存するにはどうすればよいのでしょうか?

ofstream os; os.open("test.xml");
os << "<?xml version=\"1.0\" encoding=\"UTF-16\" ?><mtf>";
中略
os << "<mtf/>";
os.close();

あるいは、Unicodeでファイルを保存するにはofstreamを使ってはいけないのでしょうか?

titn

818 :デフォルトの名無しさん:03/07/07 14:21
以下のようなコードでファイルを保存するときに、Unicodeで保存するにはどうすればよいのでしょうか?

ofstream os; os.open("tgt.tmp");
os << "<?xml version=\"1.0\" encoding=\"UTF-16\" ?><mtf>";
中略
os << "<mtf/>";
os.close();

あるいは、Unicodeで保存するにはofstream意外を使うのでしょうか?

819 :デフォルトの名無しさん:03/07/07 14:23
Cと関係ない話は他所で。

820 :804:03/07/07 14:41
これでうまくいかないのですが、なぜでしょうか?

関数側
int isemptyline(char *s){
 char *tmp = s;
 printf("this%s\n", tmp);
 for(; *tmp!='\0'; tmp++){
  printf("%c", *tmp);
  if (!(*tmp==' '||*tmp=='\t')){
   return 0;
  }
 }
 return 1;
}

呼び出し側
while(fgets(str, 512, file) != NULL){
 if ((ptr=strchr(str, '\n'))!=NULL){
  *ptr='\0';
 }
 if (isemptyline(str)){ /* skip empty line */
  printf("space line\n");
  continue;
 }
 処理
}


821 :820:03/07/07 14:56
スペースだけの行でも、文字を含む行でも
isemptyspace が 0 を返してしまうようなんです。

822 :デフォルトの名無しさん:03/07/07 15:51
>>821
そのままコンパイルしてうまく動きましたけど

823 :デフォルトの名無しさん:03/07/07 16:18
>>821
順にソースを追っていって見て

824 :_:03/07/07 16:22
http://homepage.mac.com/hiroyuki44/2ch.html

825 :デフォルトの名無しさん:03/07/07 16:48
>802
なんだっけ。日本語プログラミングのやつっしょ?

826 :820:03/07/07 16:50
別のファイルを読み込ませたらうまくいくことが分かりました。
が、実行したいファイルではうまくいきません。
よく分かりませんが、フォントか何かがまずいみたいです。
emacs で編集しているのですが、下のほうのバーに
実行したいファイルの方は (Text) と書かれています。
これを別のファイル名にコピーして emacs で開くと、(Fundamental) と
書かれており、^M という文字が全ての行(のおそらく改行位置)に現れます。
しかも、この ^M を手動で取り除くと、うまく動くようです。
多分、改行のフォントが異なるのだと思うのですが、
これはどうすればよいのでしょうか?

827 :デフォルトの名無しさん:03/07/07 16:57
>>820
これはだめかな?
int isemptyline(const char *s){
//    printf("this : %s\n", s);
    while(*s == ' ' || *s == '\t') ++s;
    if(*s == '\r' || *s == '\n' || *s == '\0'){
        return 0;
    }
    for(;*s;++s) putchar(*s);
    
    return 1;
}
int main()
{
    char line[256];
    FILE *in = fopen("test.txt","r");
    while(fgets(line,sizeof(line),in)){
        if(!isemptyline(line)){
            printf("space line\n");
        }
    }
}


828 :デフォルトの名無しさん:03/07/07 17:06
>>818
wofstream を使う。
あと、文字列リテラルの前に L を付ける。
古いコンパイラによっては自分で typedef する必要があるかも。
mbstowcs/wcstombs とかも参考に。

// typedef basic_ofstream<wchar_t> wofstream;
wofstream os;
os.open("tgt.tmp");
os << L"<?xml version=\"1.0\" encoding=\"UTF-16\" ?><mtf>";
中略
os << L"<mtf/>";
os.close();

829 :828:03/07/07 17:11
今気が付いたけど、ここ C スレじゃん。
C++ スレと両方見てるから感覚なくなってたわ。

830 :デフォルトの名無しさん:03/07/07 17:21
そんなもんです。

831 :デフォルトの名無しさん:03/07/07 18:04
どなたかitoaの中身(ソース)をご存知のかたはいらっしゃらないでしょうか?
atoiの中身は分かったのですがitoaが分かりません(TT)

お願いします。

832 :デフォルトの名無しさん:03/07/07 18:05
☆可愛い女の子たちが待ってます(^−^)☆
http://endou.kir.jp/yuminet/link.html

833 :デフォルトの名無しさん:03/07/07 18:54
>>831
スレ違い。
つーか、マルチポストしてんじゃね。

834 :デフォルトの名無しさん:03/07/07 19:08
>>831
atoiがわかればitoaもわかるべ
逆のことやればいいんだよ。

835 :デフォルトの名無しさん:03/07/07 19:12
K&Rの3.6にソースが載ってる。

836 :デフォルトの名無しさん:03/07/07 19:24
>>826
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/164linendm.html
http://linux.ascii24.com/linux/allascii/linuxmag/2001/06/09/626472-004.html

フォントは、画面に表示するときに使う書体なんで、こいつ悪くない。
文字コードだね。

837 :836:03/07/07 19:25
ごめん、文字コードに改行文字の宣言はないから、また別物だわ。

838 :デフォルトの名無しさん:03/07/07 19:35
>>826
空白文字と水平送り文字のほかに復帰文字も空白扱い汁。

839 :805:03/07/07 19:46
>>816
そうかも

じゃあif(strspn(str," \t\n")==strlen(str)) continue;
これならOKかな。

840 :デフォルトの名無しさん:03/07/07 19:54
c言語で書かれたプログラムをコンパイルした物をwin32実行ファィルに
するにはどうすればいいですか?

841 :デフォルトの名無しさん:03/07/07 19:57
>>840
>>1-2

842 :デフォルトの名無しさん:03/07/07 20:01
◎無修正画像をご覧下さい◎無料パスワードをゲットすれば、もっと凄い画像とムービーがご覧頂けます◎
http://endou.kir.jp/moro/linkv.html

843 :デフォルトの名無しさん:03/07/07 20:01
cで書いたプログラムをwindows2kのコマンドプロンプト(cygwin bash)で実行します。
プログラム内の

 system("notepad");

はnotepad が同期呼び出しなのでここで処理がまたされます。
おなじように

 system("xyzzycli.exe");

を実行したいのですが、xyzzycli.exe は非同期で呼び出されるために、すぐに処理がもどってきてしまいます。
notepad と同じような挙動にしたいのですが、どうしたらよいのでしょうか?

コンパイラはMinGWをつかってます。

844 :デフォルトの名無しさん:03/07/07 20:16
>>843
標準じゃ無理。
forkしてexec*

845 :844:03/07/07 20:17
system("xyzzycli.exe &"); これはどう?

846 :デフォルトの名無しさん:03/07/07 20:17
-waitオプションってやってみた?

847 :844:03/07/07 20:19
質問を読み間違えていたな。待ちたいんだ。
・・・・wait?

848 :デフォルトの名無しさん:03/07/07 20:25
C言語スレなんだから、C言語に関する質問をして欲しいのだが。

---------- test.bat ----------
xyzzycli.exe -wait a.txt
echo -waitがある場合
xyzzycli.exe a.txt
echo -waitが無い場合
pause
---------------------
a.batをxyzzycli.exeのある場所において実行して見てくれ。

849 :デフォルトの名無しさん:03/07/07 20:26
ぶっ!a.batじゃなくて、このバッチファイルっていうことにしてくれ。

850 :デフォルトの名無しさん:03/07/07 20:27
>>848
結局ソフトの使い方の問題だったけど、質問者はそう思っていなかったみたいだからいいんじゃない?

851 :843:03/07/07 20:28
とりあえずプロンプトで

xyzzycli.exe -wait

とやってもすぐに帰ってきてしまいますね。

同期プログラムは新しくスレッド作ってやれば非同期に出来ますが、
非同期のすでにあるプログラムに同期処理させるのは外部からどう
がんばっても無理なのかな・・・?

852 :843:03/07/07 20:30
>>848
ありがとうございます。
ソフトの使い方というのも、うすうすわかってましたが、cの関数内でどうにかできないかなという期待もあっての質問でした。
どこで質問しようか迷いマシた。

とりあえずそれでやってみます。

853 :843:03/07/07 20:32
あ、できそうですね。-waitかかってます。わたしの勘違いだったようです。
cでやるなら system("xyzzycli.exe -wait filename");
でしょうか。
bat、shで十分ですけどね・・・。

854 :デフォルトの名無しさん:03/07/07 20:41
ファイル名を指定するといいみたい。

855 :デフォルトの名無しさん:03/07/07 21:32
通算日数計算で、例えば

2003/1/1 → 2003/1/1 = 1日
2003/1/1 → 2003/1/2 = 1日
2003/1/1 → 2003/1/5 = 4日

とするにはどうすればいいのでしょうか?

856 :デフォルトの名無しさん:03/07/07 21:34
difftime

857 :デフォルトの名無しさん:03/07/07 21:43
なんで戻り値がdouble型なんだ・・・

858 :デフォルトの名無しさん:03/07/07 22:00
>>809
ライブラリ持ってないアマグラマ
ハケーン

859 :デフォルトの名無しさん:03/07/07 22:26
アライグマって読んじゃったよ…

860 :デフォルトの名無しさん:03/07/07 22:31
同じく

861 :デフォルトの名無しさん:03/07/07 22:53
doubleの由来ってなんなのでしょうか?

862 :デフォルトの名無しさん:03/07/07 22:57
>>861
倍 (double) 精度浮動小数点

863 :デフォルトの名無しさん:03/07/07 23:11
>>862
どうもテンキュです

864 :デフォルトの名無しさん:03/07/07 23:55
c で、ある関数funcを main を持つファイルtest.cとは
別のファイルfunc.cに実装し、main から呼び出して使いたいです。
func.c を gcc -c func.c でオブジェクトファイルにした場合、
test.c 側から呼び出すにはどうすればよいのでしょうか。

865 :デフォルトの名無しさん:03/07/07 23:57
何か★の箇所にエラーが出るんですが・・・

#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
#define N 100
main(){
return 0;
}
int sigma(a,d){
int i,b[N];
double s=0;
seiki(a,d,b[]);          (★)
for(i=0; i<N; i++){
s = s + b[i];
}
return s;
}

seiki(a,d,b[]){      (★)
int i, seed, random,b[N];
seed = 2;
srand(seed);
for(i=0;i<N;i++){
random = rand()*4/randmax;
b[i]=sqrt(N/2/PI)/a/d/d*exp((-1)*random*N/2/a/a/d/d);
} }


866 :デフォルトの名無しさん:03/07/07 23:57
> 何か★の箇所にエラーが出るんですが・・・

そうですか。お大事に。

867 :865:03/07/08 00:01
>>866

処方箋下さいな

868 :デフォルトの名無しさん:03/07/08 00:03
>>864
gcc -c -o func.o func.c
gcc test.c func.o

869 :デフォルトの名無しさん:03/07/08 00:04
>>867
処方箋は C の参考書の関数と配列(かポインタ)の部分を
一から読み直すことだな。

870 :865:03/07/08 00:05
できました。
ありがとうございました☆

871 :デフォルトの名無しさん:03/07/08 01:01
>>836-837

コード体系の違いだろ。

おそらく、EUC(改行:LF)コードの環境で、
Shift-JIS(改行=CR+LF)コードのテキストを処理しようとしてるんだろ。

872 :デフォルトの名無しさん:03/07/08 02:02
c言語で、外部プログラムを呼び出す際に、
他のマシンで実行させることなどはできるのでしょうか?
例えば、あるマシン local 上の main() から、
別のマシン remote 上で test() という関数を実行するとか、もしくは、
test というコマンドor実行ファイルを実行するとか。

ご教授お願いいたします。

873 :デフォルトの名無しさん:03/07/08 02:04
Cの問題ではない

874 :デフォルトの名無しさん:03/07/08 02:05
telnetでも使えば

875 :デフォルトの名無しさん:03/07/08 02:05
処理系の話か

876 :デフォルトの名無しさん:03/07/08 02:33
ネットワークプログラミングでも勉強シル!

877 :デフォルトの名無しさん:03/07/08 05:20
初歩的な質問なんですがヘッダーファイルに

struct aaa {
int (*bbb)( ZZZZ *ggg, void *lll );
int (*ccc)( ZZZZ *ggg );

};

とあって
意味は構造体aaaに定義された関数が二つ
名前は*bbbと*ccc(ポインタ)でZZZZ等は引数
返り値はintと解釈するのでしょうか?

全然ちがったらごめんなさい

878 :デフォルトの名無しさん:03/07/08 05:23
ZZZ*が引数の型

879 :デフォルトの名無しさん:03/07/08 05:23
>>877
違う。構造体に関数そのものはもてない。

ZZZZ *とvoid *を引数に取り、intを返す関数へのポインタbbb
ZZZZ *を引数に取り、intを返す関数へのポインタccc
上記二つをメンバーに持つ構造体aaa

880 :デフォルトの名無しさん:03/07/08 05:29
>>878
>>879
関数といってもあくまでポインタなのですね
とても良くわかりましたありがとうございます(TT


881 :デフォルトの名無しさん:03/07/08 05:34
>>880
代入しないと使えないからな

882 :デフォルトの名無しさん:03/07/08 05:39
>>881

Javaでいうリフレクションみたいなもの?@@

883 :デフォルトの名無しさん:03/07/08 05:43
>>882
Javaもリフレクションも知らないけど、あくまでポインタなので、参照するもの(すなわち関数本体)のアドレスをいれてあげないと使えない。

int kansu(ZZZZ *a,void *b)
{
/* 中略 */
}

int main()
{
struct aaa obj={kansu,NULL}; /* メンバーaaaをkansuのアドレスで初期化 bbbはNULLに */
ZZZZ z;

obj.aaa(&z,NULL);

return 0;
}

こんな感じで使えるはず。

884 :883:03/07/08 05:47
aaaなんてメンバーはないよ(鬱
struct aaaのaaa以外のaaaをbbbに置き換えて。

885 :883:03/07/08 05:48
int kansu(ZZZZ *a,void *b)
{
/* 中略 */
}

int main()
{
struct aaa obj={kansu,NULL}; /* メンバーbbbをkansuのアドレスで初期化 cccはNULLに */
ZZZZ z;

obj.bbb(&z,NULL);

return 0;
}

886 :デフォルトの名無しさん:03/07/08 05:50
関数や変数名には意味の判るものを付けましょう

887 :デフォルトの名無しさん:03/07/08 06:02
>>886
そうですね^^;;

>>885
ここでbbbっていうメンバ名を指定する必要があるからヘッダー
ファイルで定義しているのですね@@(なるほど)
指定できる関数の範囲はpublicとかprivateとかで指定できるの
でしょうか?(まず関数にスコープの指定ができるのか知らない
です(?_?))



888 :デフォルトの名無しさん:03/07/08 06:06
cにゃそんな指定子はにゃーよ。
構造体内はみんなpublic

889 :デフォルトの名無しさん:03/07/08 06:14
Cの構造体は変数(言葉が不適切かも)の集合でしかない。
int a,char *pなどを一つにまとめたものでしかない。

890 :デフォルトの名無しさん:03/07/08 06:16
>>888
何かもやもやしていたものがスッキリしました^^;
ありがと〜

891 :デフォルトの名無しさん:03/07/08 12:08
>>872
標準Cでは無理。とりあえず、JDKもって、【RMI】だ。

892 :デフォルトの名無しさん:03/07/08 12:44
学校でB木をCで組んでるのだが
正直C言語ってこんなにエゲつないものとは思わんかった・・
JAVAならもっと楽に実装できますかね?>JAVAもされてる方

893 :デフォルトの名無しさん:03/07/08 12:49
えげつな・い

(形)
〔「いげちない」の転〕
(1)度を過ごして露骨に表現するさま。露骨で、いやらしい。
「―・いことを言う」
(2)やり方に思いやりや人情味がない。情け容赦もない。

894 :デフォルトの名無しさん:03/07/08 12:52
適切な表現だな。

895 :デフォルトの名無しさん:03/07/08 12:57
JAVAの半分は思いやりでできています

896 :デフォルトの名無しさん:03/07/08 13:00
重い槍なんかいらねーよ

897 :デフォルトの名無しさん:03/07/08 14:04
Javaってあれだろ、
Cに挫折した奴が使いやすいようにポインタを見せないようにしたって。
その所為で、まともなCプログラマからは却って使いにくくなったけど。
まぁなんだ、お蔭でC++に移行しやすくなったとも言えるがな。

898 :デフォルトの名無しさん:03/07/08 17:18
消費メモリー削減のこつを教えてください

899 :デフォルトの名無しさん:03/07/08 17:22
>>898
メモリー使い回す。

900 :デフォルトの名無しさん:03/07/08 17:26
>>899
同じ変数を複数の用途に使うということですか?

901 :デフォルトの名無しさん:03/07/08 18:29
タイミングの悪い初歩的な質問ですけど、

char s[5];
s[0]="*";

↑これって何でエラーになるんですか?

902 :デフォルトの名無しさん:03/07/08 18:31
>>901
型が合わないから

s[0]='*';

903 :デフォルトの名無しさん:03/07/08 18:31
>>896
言い得て妙

904 :901:03/07/08 18:34
>>902
うひゃあ、そんな違いがあるんでっか!!!
どうもです。

905 :デフォルトの名無しさん:03/07/08 18:55
2進数表示するのにこんなの思い付いたんだけど、
これってよく知られた方法なんでしょうか?

  for( i = INT_BIT-1; i >= 0; i-- )
    printf( "%d", !!( data & 1 << i ) );printf( "\n" );

906 :デフォルトの名無しさん:03/07/08 18:57
>>905
三項演算子を使え。

907 :デフォルトの名無しさん:03/07/08 18:58
iは0より小さくなるのだろうか?

908 :907:03/07/08 18:59
ごめん勘違い。
俺は普通、iをbitマスクにして最上位からビットシフしていくな。
それと間違えた。ト

909 :デフォルトの名無しさん:03/07/08 19:12
#include <stdio.h>
main(){
int a;

printf("正の値を打ち込んでください。");
scanf("%d",&a);
a=((a+5)/10)*10;
printf("一の位を四捨五入してみました。%d \n",a);

return 0 ;
}

こんなプログラムを作ったんですが、正の値が上限(?)かなにかを越えると
うまく作動しないんですがなぜでしょうか?
また、上限を完全に無くすことは可能でしょうか??

よろしくおねがいします。

910 :デフォルトの名無しさん:03/07/08 19:16
>>909
分かっていて聞いているだろ?

911 :デフォルトの名無しさん:03/07/08 19:22
int b;

/* 中略 */
b=a%10;
if(b>=5)
a+=10-b;
else
a-=b;


912 :デフォルトの名無しさん:03/07/08 20:35
質問です。
int main( void )
{
 double *hage, *nuge;

 hage = (double *)malloc( sizeof( double ) * 10 );
 printf("\nhage : %p", hage);
 free(hage);

 nuge = (double *)malloc( sizeof( double ) * 100);
 printf("\nnuge : %p", nuge);
 free(nuge);

 return(EXIT_SUCCESS);
}

両方のポインタとも同じ値になっても良いと思うんですが
間隔があくのはなぜですか?
hageのあとに直ぐフリーしてもhageの前後には別の値が入ってて
同じ大きさしか旧hage領域に入れない…と考えれば良いですか?

あと、あいた間隔はOS(処理系?)が有効活用してくれるのでしょうか?

913 :デフォルトの名無しさん:03/07/08 20:41
実装依存

914 :デフォルトの名無しさん:03/07/08 21:12
予想されることとしては
main関数に到達するまでのコード(コンパイラが挿入するコード)
ですでにheapを使っており、その結果としてフラグメントが発生した。
たとえば空き領域が1000バイトと空き領域が50Mバイトなど。
hage = (double *)malloc( sizeof( double ) * 10 );
では1000バイトの空き領域がつかえるが、
nuge = (double *)malloc( sizeof( double ) * 100);
では1000バイトの空き領域を使えないので50Mバイトの
空き領域を使った。
こんなでどうでしょう。
ポイントはheapを使用するのはわれわれが書いたコード
だけではないということです。

915 :914:03/07/08 21:31
追加
あと、heap管理プログラムがブロック(mallocのサイズ)によって
使用する空き領域を分けているということも考えられる。
数十バイト程度の要求と数K単位の要求を同じ空きブロック領域で
行うと、フラグメントの発生でheakの使用効率が悪くなる。

916 :デフォルトの名無しさん:03/07/08 21:33
a += (a++)+a+(++a);

可能?

917 :デフォルトの名無しさん:03/07/08 21:41
>>916
コンパイル可能だとしても、結果は未定義。

918 :デフォルトの名無しさん:03/07/08 21:45
それが可能なのが何か意味があるのだろうか?

919 :デフォルトの名無しさん:03/07/08 21:50
>>918
派遣先でちょちょいのちょい

920 :デフォルトの名無しさん:03/07/08 21:57
>JAVAならもっと楽に実装できますかね?>JAVAもされてる方

氏ね。おまえは二度とCを使うな。破門だ。

921 :デフォルトの名無しさん:03/07/08 22:12
JAVAなんてものは無いわけだが

922 :デフォルトの名無しさん:03/07/08 22:26
Cだとめんどいけど勉強になるね

923 :デフォルトの名無しさん:03/07/08 22:37
ポインタ使うことでどういう利点があるかわかりません
住所とかメモリの確保とかはわかるけどそれをどういうふうに使うと効果的なんですか?

924 :デフォルトの名無しさん:03/07/08 22:39
効果的というか、ポインタじゃないと出来ない処理がある。
必要ないときは無理に使わなくてもいい。

925 :デフォルトの名無しさん:03/07/08 22:45
ポインタを使わないなんてありえない

926 :デフォルトの名無しさん:03/07/08 22:46
すべてコピーですませるとか

927 :デフォルトの名無しさん:03/07/08 22:46
>> 923
機械語レベルではメモリはすべてアドレス(=ポインタ)で参照します。
プログラマがポインタを使わなくても、コンパイラはつかってます。
ポインタを使うとそれだけプログラマの自由度が増すということです。


928 :デフォルトの名無しさん:03/07/08 22:48
プログラマがどう使うかって話だろ。
そんな内部的な話してどうすんだよ。

929 :923:03/07/08 22:49
じゃあ具体的に言うとどういうことができるんですか?

930 :【中吉】:03/07/08 22:50
test

931 :デフォルトの名無しさん:03/07/08 22:52
int a,b;の内容を入れ替える関数を作るときとか。

932 :デフォルトの名無しさん:03/07/08 22:53
わざわざ説明しなくても指差して「あれ」で済む

933 :923:03/07/08 22:53
>>931
そんな関数を作らなければいいんですよね?マクロにすれば。

934 :デフォルトの名無しさん:03/07/08 22:53
>>933
じゃぁ、構造体a,bの中身を入れ替える関数。

935 :デフォルトの名無しさん:03/07/08 22:53
>>929
関数に文字列を渡すとか

936 :934:03/07/08 22:54
マクロで出来るね。スンマソン

937 :デフォルトの名無しさん:03/07/08 22:56
>>933
コマンドライン引数をつかうとき。

938 :デフォルトの名無しさん:03/07/08 22:59
ポインタの有用性がわからないなら、今後ポインタをなるべく使わないようにプログラミングすることをお勧めする。
そうすればポインタがないとこまることにぶつかるから。

939 :923:03/07/08 23:01
てかよくわかりません
ポインタでしかできない事が入ってるソースで解説してくれませんか?

940 :923:03/07/08 23:03
>>938 そういうふうにやってると変な癖つきそうでいやです

941 :デフォルトの名無しさん:03/07/08 23:04
標準ライブラリの文字列操作関数はみな引数ポインタなのだが。
そういうんじゃだめ?
全部自分でつくる? ポインタ使わないで(無理だけど)。

942 :デフォルトの名無しさん:03/07/08 23:04
C使っていればポインタは使う必要が出てくると思うけどなぁ。
共用体とかビットフィールドならまだしも・・・・

943 :デフォルトの名無しさん:03/07/08 23:05
>>940
たとえばどんな?

944 :デフォルトの名無しさん:03/07/08 23:05
外部プログラムを実行、結果を変数に入れたいのですが、
どうすればよいのでしょうか。
よろしくお願いします。

945 :デフォルトの名無しさん:03/07/08 23:06
どんな外部プログラム?

946 :デフォルトの名無しさん:03/07/08 23:06
>>944
スレ違いだが、popenを使ってみぃ

947 :944:03/07/08 23:07
自前です。
もしくは、普通のコマンド。
標準出力に結果を出します。

948 :944:03/07/08 23:09
popen ですか?
使い方が分からないので、
使い方、もしくは参考ページを教えてもらえませんか?

949 :デフォルトの名無しさん:03/07/08 23:09
>>940
心配するな。どんな変な癖がついても、ポインタ使わずにまともアプリは作れないから。

つまり今あんたは、まだそういうレベルに達していないと言うこと。

ポインタ以外にも覚えることはある。

そういうのをすっ飛ばしてポインタだけ覚える方が変な癖がつくと思うよ。

950 :デフォルトの名無しさん:03/07/08 23:09
ググレって

951 :デフォルトの名無しさん:03/07/08 23:10
>>948
マニュアル持っていないの?
標準じゃないからpopenがあるかどうかは分からない。UNIX系ならまずあるだろうけど

952 :デフォルトの名無しさん:03/07/08 23:10
>>939
main(){
FILE *pf;
fopen(fp,"data.txt","w"); /* ファイル構造体のポインタを使わなければファイルを扱えない*/
while(fgets(fp,buf,BUFZISE)){
/* : */
}
fclose(fp)
}


953 :デフォルトの名無しさん:03/07/08 23:11
>>952
おーい、fopenの使い方が違うぞー

954 :デフォルトの名無しさん:03/07/08 23:13
引数違うし、戻り値を受けていないし、wなのに読んでいるし。

955 :952:03/07/08 23:13
うほっ

956 :デフォルトの名無しさん:03/07/08 23:14
fgetsも引数が(ry

957 :デフォルトの名無しさん:03/07/08 23:18
>>954
可哀想だからpfとfpも突っ込んでやれよ

958 :952:03/07/08 23:19
うほ、我ながらこりゃ酷い。

959 :デフォルトの名無しさん:03/07/08 23:21
10行足らずのコードでそこまでまちがうって、確信犯でなければ
ある意味すごいね。

960 :デフォルトの名無しさん:03/07/08 23:26
>>923
そんな質問しても、あんまり意味なくねー。
ポインタってもっと深い、ポインタだけで本も出てるしな、読んだことはないけど。
ここでどんな例がでてもポインタの一面を見ているにすぎない。
ポインタをポインタそのものとして受け止めれるように勉強しろ。

961 :デフォルトの名無しさん:03/07/08 23:27
>>960
ほ、惚れた・・・・

962 :デフォルトの名無しさん:03/07/08 23:31
CをやるならLinuxだ!

963 :デフォルトの名無しさん:03/07/08 23:35
NULLポインタとは具体的に言うと、どこも差していないポインタということですか?

if( lp == NULL ) lpはNULLポインタが入っている

id( i == NULL ) iはint型

は、NULLマクロでポインタと整数値を比べていますけど、なぜこういうことが可能なんでしょうか?

964 :デフォルトの名無しさん:03/07/08 23:35
>>923
ポインタでしか出来ない事
p=malloc(n);

965 :デフォルトの名無しさん:03/07/08 23:35
Mac OS X という道もある。

966 :デフォルトの名無しさん:03/07/08 23:39
ポインタいらねーとか言ってる奴って
「ええ〜? なにそれ〜、パァ子わかんな〜い」って
情報隠蔽と似て非なる思想の持ち主が多い

ソフト作るより使え、それに向いている
せいぜい配列でリストでも作って遊んでろ

967 :デフォルトの名無しさん:03/07/08 23:39
>>963
多分
#define NULL 0
になってる処理系を使ってるんだと思うが、
だからといって NULL と整数値を比べるべからず。

968 :デフォルトの名無しさん:03/07/08 23:40
>>963
NULLは各変数等々他の全てのポインタが取りうる値と一致しない事が保証されてる値

969 :デフォルトの名無しさん:03/07/08 23:41
>>962
逆だろ。

970 :デフォルトの名無しさん:03/07/08 23:41
>>963
整数値とポインタを比べることはできる。警告は出るだろうが。

971 :デフォルトの名無しさん:03/07/08 23:42
0番地ってないんかな?

972 :デフォルトの名無しさん:03/07/08 23:43
よく分からないんですけど、UNIXはCでできてるんですよね?
UNIXとLinuxはどちらがCの開発に向いているんでしょうか?

973 :デフォルトの名無しさん:03/07/08 23:45
>>972
UnixとLinuxの違いを調べてきたら答えてあげる。

974 :デフォルトの名無しさん:03/07/08 23:47
>>973
Linuxはペンギンたんでふ

975 :デフォルトの名無しさん:03/07/08 23:47
試験期間か

976 :デフォルトの名無しさん:03/07/08 23:48
質問がおかしいよな。
OS関係ないだろ。何を作るんだよ。

977 :デフォルトの名無しさん:03/07/08 23:48
NULLはなんで予約語じゃなく#defineですか?
nullとかにすればいいのに

978 :デフォルトの名無しさん:03/07/08 23:49
C言語のコンパイラを開発するんだったら、yaxx/lexがはいってるGNU環境をお勧めしてみよう。

979 :デフォルトの名無しさん:03/07/08 23:50
>>977
予約語の意味を勉強し直して来て下さい

980 :デフォルトの名無しさん:03/07/08 23:52
>>977
ヌルポインタは 0 で表現する、と決めちゃったから、
別な予約語を導入したくなかったんじゃないの?

981 :デフォルトの名無しさん:03/07/08 23:52
>>963
ポインタのNULLは無効なポインタということ。
ところがポインタに無効なという情報をもてないので普通は
#define NULL 0
で0番地を犠牲にしているのです。
まあ、アプリケーションプログラムが0番地を参照することは
なかろうということからです。
よくNULLは0であることを前提にしているコードを見るがこれは
問題あり。
#define NULL 0xffffffff
でも理屈からしたらよいわけです。

>>923
ポインタはどちらかというと高度というよりは原始的なものです。
Cでポインタを使わないプログラムを作れますが、Cのよさはその
原始的なところにあるので、ぜひマスターしましょう。

982 :デフォルトの名無しさん:03/07/08 23:54
原始的じゃなく低レベルと言いたいな。

983 :デフォルトの名無しさん:03/07/08 23:54
>>981
だめだろ。
NULLは0か(void *)0
それのビットパターンが全て0とは限らないけど。

984 :デフォルトの名無しさん:03/07/08 23:54
>>981
> #define NULL 0xffffffff
それはだめだ!

985 :デフォルトの名無しさん:03/07/08 23:54
>>980
>ヌルポインタは 0 で表現する、と決めちゃったから、
その手のネタは、飽きるほどやってるから、やめて

986 :デフォルトの名無しさん:03/07/08 23:55
釣りか?

987 :デフォルトの名無しさん:03/07/08 23:57
>>983
0なら全てのビットパターンが0になる事は保証されてたはず

988 :683:03/07/08 23:57
>>981
大変勉強になりました
お礼にバナクリしてきます

989 :デフォルトの名無しさん:03/07/08 23:59
>>987
#define NULL 0かつ、int a=NULL;とかやったらね。
ポインタとして使うという意味に決まっているでしょ・・・

990 :デフォルトの名無しさん:03/07/09 00:00
>>987
0 というリテラルを整数値として使うならそうだろうが。
こういう場合、0 だけが表示されるとは限らない。

int i;
void *p = 0;
for(i = 0; i < sizeof (void *); i++) {
 printf("%d\n", ((char*)&p)[i]);
}

991 :デフォルトの名無しさん:03/07/09 00:01
このスレの最初の最初にリンクがあるのに。
http://www.catnet.ne.jp/kouno/c_faq/c5.html#0

992 :デフォルトの名無しさん:03/07/09 00:03
なにも指していないことなんて保証できないよな。
ポインタであればかなら何かさしているだろ。
どんなデータだって同じメモリの中に格納できるんだから。

993 :デフォルトの名無しさん:03/07/09 00:03
なんつーか、説明するのがメンドイから一度しか言わない
C言語ではNULLは内部的には、何処を指していようが構わない
その処理系でNULLである事が一番自然なポインタを指せば良い
また、全ての有効なポインタは0を指さない事が保証されている
また、0とNULLを比較しても等しい事が保証されている
結果、NULLを0にしてる処理系が圧倒的に多い

994 :デフォルトの名無しさん:03/07/09 00:05
ところでお前ら、次スレは?
まだ前スレが1000行っていないというのにこちらは1000目前とは。

995 :デフォルトの名無しさん:03/07/09 00:05



                ス
      レ

996 :デフォルトの名無しさん:03/07/09 00:06
じゃぁ、次スレ

C言語なら俺に聞け! Part 59
http://pc2.2ch.net/test/read.cgi/tech/1056109884/


997 :デフォルトの名無しさん:03/07/09 00:06
>>992
疲れるが釣られてやる。
int a; で &a とか
int* p = malloc(10 * sizeof (int)); の p とか
そういう風に得られたどんなポインタと比較しても
一致しないことが保証されているのがヌルポインタだ。

998 :デフォルトの名無しさん:03/07/09 00:07
記念カキコv(^-^*)

999 :デフォルトの名無しさん:03/07/09 00:08
1000かよ

1000 :デフォルトの名無しさん:03/07/09 00:08
1000だね

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

191 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)