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

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

C言語なら俺に聞け(入門編)Part 75

1 :デフォルトの名無しさん:2010/12/18(土) 23:33:36 ?S★(532000)
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 74
http://hibari.2ch.net/test/read.cgi/tech/1290857610/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 144代目
http://hibari.2ch.net/test/read.cgi/tech/1291471791/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

2 :デフォルトの名無しさん:2010/12/18(土) 23:55:19
1乙

3 :デフォルトの名無しさん:2010/12/19(日) 01:04:05
一乙


4 :デフォルトの名無しさん:2010/12/19(日) 01:05:49
rerunに()がついてないのってどういう動作ですか
return(0)とかreturn(1)とかはよく見るのですが

5 :デフォルトの名無しさん:2010/12/19(日) 01:07:51
rerunってなに?

6 : ◆QZaw55cn4c :2010/12/19(日) 01:10:42
>>4
それは、参考にしている本があるとすればそれが古いのでは?
最近は return 0; と書くのが普通。
参考にしている書籍なりWebページなりを変えたほうがいいかもしれません。

7 :デフォルトの名無しさん:2010/12/19(日) 01:12:40
typoすると関数に間違われるからね

8 :デフォルトの名無しさん:2010/12/19(日) 01:16:04
>>6
お前の頭も古いだろ
この中年ニートが

9 :デフォルトの名無しさん:2010/12/19(日) 01:58:53
http://codepad.org/cLluAHsu

参考書の丸写しなんですが文字が出力されないです なんでですか

10 :デフォルトの名無しさん:2010/12/19(日) 08:06:13
if(ac==0)

if(ac<=1)

11 :デフォルトの名無しさん:2010/12/19(日) 08:57:37
> 参考書の丸写しなんですが文字が出力されないです なんでですか
文字を入力していない

起動時に任意のファイルを指定してない

12 :デフォルトの名無しさん:2010/12/19(日) 10:57:54
>>4
voidを返却する動作です。

13 :デフォルトの名無しさん:2010/12/19(日) 11:38:35
#include <stdio.h>
void main(void)
{
char s[10];
int in;
scanf("%d",&in);
scanf("%c",&s[10]);
printf("%d %c",in,s[10]);
}
うまくいきません。ご教授を

14 :デフォルトの名無しさん:2010/12/19(日) 11:43:33
ジョジョ、配列の範囲をよく見るんだ

15 :デフォルトの名無しさん:2010/12/19(日) 11:43:36
#include <stdio.h>
void main(void)
{
char s[10];
int in;
scanf("%d",&in);
scanf("%s",s);
printf("%d %s", in,s);
}

16 :デフォルトの名無しさん:2010/12/19(日) 11:47:23
15コピペしたらうまくいった。
scanf使うときは&つけなくていいのですか
scanf("%s",s);があやしいです

17 :デフォルトの名無しさん:2010/12/19(日) 11:56:37
>>16
ポインタの辺りまで勉強すると理解が可能になるからとりあえずはそういうもんだと暗記して先に進むといいよ

18 :デフォルトの名無しさん:2010/12/19(日) 12:00:04
>>16
&をつけるならこう
scanf("%s",&s[0]);

19 :デフォルトの名無しさん:2010/12/19(日) 12:03:44
標準入出力は隠蔽して、あるいは使わないで進めて
最後らへんで教えるようにしたほうがいいと思うんだがそんな参考書は存在しないのかね

20 :デフォルトの名無しさん:2010/12/19(日) 12:07:41
過去ログでも読んでろ

21 :デフォルトの名無しさん:2010/12/19(日) 12:11:58
勉強?になりました。
データの入力を文字列型で受け取るときは&使わない、もしくは&s[0]を使うんだ

22 :デフォルトの名無しさん:2010/12/19(日) 12:18:39
>>19
やさしいCはそんな感じの教え方だったよ

あとで説明するからとりあえず形だけ知っとけみたいな

23 :デフォルトの名無しさん:2010/12/19(日) 12:37:18
そうやって形だけ覚えるとあっという間に行き詰まるよ

24 :デフォルトの名無しさん:2010/12/19(日) 12:48:43
>>23
あとでやるから問題ないだろ
最初に書いたときは
#includeもint main(void)もわからなかったが説明されてもわかる訳ないしとりあえず無視しないと話は先に進まん

25 :デフォルトの名無しさん:2010/12/19(日) 14:12:45
>>19
同感
暗黙の副作用だの main に先立つ処理だのといった
汚いものは佳境に入ってからだよな

組み込みだとそういう流れになるし
当然のように甘っちょろい本は少ない

26 :デフォルトの名無しさん:2010/12/19(日) 15:56:20
へっへっ

27 :デフォルトの名無しさん:2010/12/19(日) 15:59:00
ひっひっ

28 :デフォルトの名無しさん:2010/12/19(日) 16:18:32
いいかげん、Cの所要点を全部まとめた1冊の本を出してください。

色々、本が足りなさ過ぎて全部網羅するとなると、20冊くらい立ち読みしなきゃいけないので、
足が棒になります。このスレで本の作者の人、宜しく。

29 :デフォルトの名無しさん:2010/12/19(日) 16:19:48
そんなバカな本はお前くらいしか読まないから書かない

30 :デフォルトの名無しさん:2010/12/19(日) 16:26:42
アルゴリズム辞典みたいなのがいいんじゃね

31 :デフォルトの名無しさん:2010/12/19(日) 16:30:52
規格書を印刷すればいいと思うぜ

32 :デフォルトの名無しさん:2010/12/19(日) 16:39:15
>>28はソースコードを分割しない人間

33 :デフォルトの名無しさん:2010/12/19(日) 17:23:43
本を買えば立ち読みせずにすむな

34 :デフォルトの名無しさん:2010/12/19(日) 17:54:39
スレッドとかって入門書には書いてないよね

35 :デフォルトの名無しさん:2010/12/19(日) 18:01:54
>>28
http://www.amazon.co.jp/gp/product/4434124234/

36 :デフォルトの名無しさん:2010/12/19(日) 18:12:11
スレッドとかってC言語の規格書にも書いてないよ

37 :デフォルトの名無しさん:2010/12/19(日) 18:16:34
>>28
Cリファレンスマニュアルが鉄板
それ以上はもう規格書をあたるしかない

38 :デフォルトの名無しさん:2010/12/19(日) 18:26:21
>>28はそんなことを聞いてるの?立ち読みした20冊を挙げてほしいわ

39 :デフォルトの名無しさん:2010/12/19(日) 19:53:04
C++0xにスレッド関連のライブラリが追加されるっぽいが
果たしてどうなるか・・・
まあCには関係のない話だが

40 :デフォルトの名無しさん:2010/12/19(日) 19:56:11
test

41 :デフォルトの名無しさん:2010/12/19(日) 20:57:13
糞スレ

42 :デフォルトの名無しさん:2010/12/19(日) 21:43:58
>>41
↑糞レス

43 :デフォルトの名無しさん:2010/12/19(日) 21:51:46
>>43
↑糞レス

44 :デフォルトの名無しさん:2010/12/19(日) 22:15:12
>>45
↑糞レス

45 :デフォルトの名無しさん:2010/12/19(日) 22:17:43
>>54
糞レス

46 :デフォルトの名無しさん:2010/12/19(日) 22:20:41
>>41
きっとスレの人たちがあなたに何かしたんですね?
それを怒ってるから粘着しつづけてるんですね?
わかります。
ごめんなさい。ゆるしてください。
ほら、みんなもあやまって!

47 :デフォルトの名無しさん:2010/12/19(日) 22:22:55
>>46
糞レス

48 :デフォルトの名無しさん:2010/12/19(日) 22:30:02
「C言語を始めよう!」の最新バージョンだと左に行番号表示させることってできないんですか?

49 :デフォルトの名無しさん:2010/12/19(日) 22:31:40
はい。まあメッセージの行番号をクリックすれば該当箇所に飛べたと思うけど

50 :デフォルトの名無しさん:2010/12/19(日) 22:32:00
>>48
環境設定はスレチなので死んでください

51 :デフォルトの名無しさん:2010/12/19(日) 22:34:59
macで何かいいC言語のコンパイラってありますか?

52 :デフォルトの名無しさん:2010/12/19(日) 22:44:18
とりあえずgccいいんじゃね?
命令一つでインストールできるし

53 :デフォルトの名無しさん:2010/12/19(日) 22:45:31
llvm-gcc

54 :デフォルトの名無しさん:2010/12/19(日) 22:50:49
ライセンスの関係でmacのgccはバージョンが古い

55 :デフォルトの名無しさん:2010/12/19(日) 23:16:36
buf[i+off]=buf[i];
これの意味がわかんない
どう代入するの?

56 :デフォルトの名無しさん:2010/12/19(日) 23:20:52
右に移動

57 :デフォルトの名無しさん:2010/12/19(日) 23:22:00
下とか上に移動かもしれん

58 :デフォルトの名無しさん:2010/12/19(日) 23:24:17
もうちょっとわかりやすく教えてほしいです

59 :デフォルトの名無しさん:2010/12/19(日) 23:25:02
ローテーション

60 :デフォルトの名無しさん:2010/12/19(日) 23:28:02
AKB

61 :デフォルトの名無しさん:2010/12/19(日) 23:29:05
>>52
gccってなんですか?


62 :デフォルトの名無しさん:2010/12/19(日) 23:32:13
Gnu Compiler Collection

63 :デフォルトの名無しさん:2010/12/19(日) 23:33:27
>>58
単にバッファーのデータ位置をoffセット分ずらしただけでしょ。
コードそのままジャン

64 :デフォルトの名無しさん:2010/12/19(日) 23:51:57
>>63 =つける意味あるの?

65 :デフォルトの名無しさん:2010/12/19(日) 23:53:55
つけたくなければ消せば?

66 :デフォルトの名無しさん:2010/12/20(月) 00:40:01
自然数を10個入力として受け付けて、それを配列に格納する。配列の各要素を調べて、奇数であれば1たした数でおきかえよ。0は偶数である。

この問題をやっています。
普通にコンパイルできるんですが、10個入力した後になんにもおきません。入力もできなくなります。なにかがちがうのでしょうか?
コンパイラは学習用C言語開発環境というソフトを使っています。

#include<stdio.h>
int main(void){
int data[10];
int i,tmp;
for(i=0;i<10;i++){
scanf("%d",&data[i]);
}
for(i=1;i<10;i=i++){
if(data[i]%2==0){
data[i]=data[i]+1;
}
}
for(i=0;i<10;i++){
printf("%d,",data[i]);
}
return(0);
}



67 :デフォルトの名無しさん:2010/12/20(月) 01:02:52
>for(i=1;i<10;i=i++)

(・∀・)

68 :デフォルトの名無しさん:2010/12/20(月) 01:14:16
例えば3333があったとして、これが3を何文字含む数字かをプログラムしたいとき
どのようにすればいいですか?

69 :デフォルトの名無しさん:2010/12/20(月) 01:33:25
>>66
i=i++
がよくなくて、無限ループになってる。
そこはi++だけでいい

70 :デフォルトの名無しさん:2010/12/20(月) 01:34:09
>>68
その3333が文字列なのか数字なのかによるけれど、文字列にして数えれば楽なんでないかな

71 :デフォルトの名無しさん:2010/12/20(月) 01:44:05
ふっひっ

72 :デフォルトの名無しさん:2010/12/20(月) 02:01:31
>>68
カウントを0にします
1桁目が3か調べます
3だったらカウントを1つ増やします
10で割ります
1桁目が3か調べます
3だったらカウントを1つ増やします
10で割ります
1桁目が3か調べます
3だったらカウントを1つ増やします
10で割ります

おしまい(^ω^)

73 :デフォルトの名無しさん:2010/12/20(月) 02:24:23
if文でのカウントの仕方が分かりません


74 :デフォルトの名無しさん:2010/12/20(月) 07:16:28
ほっほっ

75 :デフォルトの名無しさん:2010/12/20(月) 08:46:24
ふっほっ

76 :デフォルトの名無しさん:2010/12/20(月) 10:41:52
Javaの質問でもいいですか?

77 :デフォルトの名無しさん:2010/12/20(月) 10:45:48
はい

78 :デフォルトの名無しさん:2010/12/20(月) 10:54:09
よくねーよカス

79 :デフォルトの名無しさん:2010/12/20(月) 12:45:45
いやいいだろ
C→Javaなんだから

80 :デフォルトの名無しさん:2010/12/20(月) 12:55:14
アホかい。

81 :デフォルトの名無しさん:2010/12/20(月) 13:14:11
アホかい。

82 :デフォルトの名無しさん:2010/12/20(月) 13:30:45
どどど童貞ちゃうわー!

83 :デフォルトの名無しさん:2010/12/20(月) 15:04:49
下半身のC言語はいいのでしょうか

84 :デフォルトの名無しさん:2010/12/20(月) 15:22:55
ほっほっ

85 :デフォルトの名無しさん:2010/12/20(月) 15:57:10
どぴゅっどぴゅっ

86 :デフォルトの名無しさん:2010/12/20(月) 16:23:04
ぬりゅっぷぬりゅっぷ

87 :デフォルトの名無しさん:2010/12/20(月) 17:24:24
ひっひっ

88 :デフォルトの名無しさん:2010/12/20(月) 17:25:13
ふっふっ

89 :デフォルトの名無しさん:2010/12/20(月) 17:25:54
アホかい。

90 :デフォルトの名無しさん:2010/12/20(月) 17:42:19
こいつ毎日一人でこんな書き込みばかり繰り返して悲しくならないのかな

91 :デフォルトの名無しさん:2010/12/20(月) 17:49:29
多分つられて同じようなことしてる人が何人か

92 :デフォルトの名無しさん:2010/12/20(月) 17:51:16
ふっほっ


93 :デフォルトの名無しさん:2010/12/20(月) 18:02:05
>>91
お前が犯人だろw

94 :デフォルトの名無しさん:2010/12/20(月) 18:06:11
なにかの仕返し(?)か、プライド傷つけられた(?)か、何かの理由で荒らしてるんでしょうけど、
「ふっほっ」とかしか言わないから、なにを謝罪すればいいのか判らないです。

みんなは、あなたのお母さんじゃないので、あなたの気持ちをエスパーすることは難しいです。
あなたの不満の理由を教えてください。 具体的に、どうなってほしくて荒らしてるのか? 目的を教えてください。

改善できる事なら改善しますし、謝れることなら謝ります。

95 :デフォルトの名無しさん:2010/12/20(月) 18:10:20
↑コピペ?

96 :デフォルトの名無しさん:2010/12/20(月) 18:10:20
×エスパーする
△ESPする
○推測する
◎当て推量する

97 :デフォルトの名無しさん:2010/12/20(月) 18:19:00
>>94は過去にそういうことがあったんだなw

98 :デフォルトの名無しさん:2010/12/20(月) 18:37:30
糞スレ

99 :デフォルトの名無しさん:2010/12/20(月) 18:37:41
longが最低でも32bitあるって本当ですか?

100 :デフォルトの名無しさん:2010/12/20(月) 18:38:44
>>99
スレ違い

101 :デフォルトの名無しさん:2010/12/20(月) 18:39:11
基本情報用のテキストにあったんですがそのままやってみたところダメみたいです
どこ修正したらいいんでしょうか
http://codepad.org/Ts2MXyfF

102 :デフォルトの名無しさん:2010/12/20(月) 18:43:58
テキストをよく見るといいよ

103 :デフォルトの名無しさん:2010/12/20(月) 18:45:10
>>102
丸写しです

104 :デフォルトの名無しさん:2010/12/20(月) 18:53:21
>>103
おそらく写し間違いだと思うが、セミコロンが足りなかったり
スペースが足りなかったりしてる

105 :デフォルトの名無しさん:2010/12/20(月) 19:01:36
>>104
お前優しいな

106 :デフォルトの名無しさん:2010/12/20(月) 19:14:42
1〜10までの自然数の和を求めるプログラムをかけ
(ただしfor文を用いること)

for文使えとか意味不明ですが
自分なりにfor文入れてみました。あってますか
void main(void)
{
int i;
int sum;
sum = 0;
for(i=0;i<10;i++){
sum = 10 * 11 / 2;
}
printf("sum = %d",sum);
}

107 :デフォルトの名無しさん:2010/12/20(月) 19:18:10
いいんじゃねw

108 :デフォルトの名無しさん:2010/12/20(月) 19:20:29
>>104
間違ってないと思うんですがみおとしてるかもしれません
あとでスキャナで読み取ります;

109 :デフォルトの名無しさん:2010/12/20(月) 19:20:44
>>104
65点
まぁ合格かな

110 :デフォルトの名無しさん:2010/12/20(月) 19:20:59
10回同じ計算する必要はないだろw
for(i = 0; i < 1; i++) で 十分

111 :デフォルトの名無しさん:2010/12/20(月) 19:24:36
>>110
教授がfor(i=0;i<10;i++)使えいったからあえて使ってる

112 :デフォルトの名無しさん:2010/12/20(月) 19:27:32
int o = 1; for


( ; o ; )
// //


{ puts("55"); o = 0; }

113 :デフォルトの名無しさん:2010/12/20(月) 19:27:47
じゃ、for(i = 1; i <= 10; i++) sum += i; じゃダメなのかw

114 :デフォルトの名無しさん:2010/12/20(月) 19:39:36
>>106は釣りでした
みんな引っかかってくれてありがとう

115 :デフォルトの名無しさん:2010/12/20(月) 19:41:05
このスレ自体が釣りなのになにいってんだこいつ

116 :デフォルトの名無しさん:2010/12/20(月) 19:44:32
>>114
釣りじゃなかったらどうするつもりだったんだ
責任とれんのか

117 :デフォルトの名無しさん:2010/12/20(月) 19:53:27
>>113
> 教授がfor(i=0;i<10;i++)使え
こうすればいいかな。

void main(void)
{
int i;
int sum;
sum = 0;
for(i=0;i<10;i++);
for(i = 1; i <= 10; i++) sum += i;
printf("sum = %d",sum);
}

118 :デフォルトの名無しさん:2010/12/20(月) 19:56:20
void main(void)
{
int i;
int sum;
sum = 0;
for(i=0;i<10;i++){
sum+=i;
}
sum+=i;
printf("sum = %d",sum);
}

119 :デフォルトの名無しさん:2010/12/20(月) 19:58:12
>>118
0から10の整数を足しちゃってるから題意を完全には満たしていない

120 :デフォルトの名無しさん:2010/12/20(月) 20:00:08
>>119
void main(void)
{
int i,j=1;
int sum;
sum = 0;
for(i=0;i<10;i++){
sum+=j;
j++
}
printf("sum = %d",sum);
}


121 :デフォルトの名無しさん:2010/12/20(月) 20:02:22
ぐぬぬ

122 :デフォルトの名無しさん:2010/12/20(月) 20:08:28
糞スレ

123 :デフォルトの名無しさん:2010/12/20(月) 20:27:32
ぐふふ

124 :101:2010/12/20(月) 21:47:04
http://iup.2ch-library.com/i/i0207422-1292849169.jpg
スキャンしてきました


125 :デフォルトの名無しさん:2010/12/20(月) 22:05:18
>>124
テキストが間違えてる。
文の最後にはセミコロンが必要なので足してください。

126 :デフォルトの名無しさん:2010/12/20(月) 22:06:06
>>124
6行目: ステートメントにセミコロン(;)がない(関数 main )
→printf("キーボードから数字を2つ入力してください\n") の後にセミコロン付ける

11行目: 未定義のシンボル return0(関数 main )
→ returnと0の間に空白入れる。

127 :デフォルトの名無しさん:2010/12/20(月) 22:42:35
>>125-126
ありがとうございます。
加えて組みなおしてきます。

128 :デフォルトの名無しさん:2010/12/20(月) 23:15:09
ゼロサプレス、ゼロパディングを簡潔に書ける関数みたいなのって
標準で用意されてる?

129 :デフォルトの名無しさん:2010/12/20(月) 23:16:36
>>128
memset

130 :デフォルトの名無しさん:2010/12/20(月) 23:21:02
そっちの0埋めじゃなくね?

131 :デフォルトの名無しさん:2010/12/20(月) 23:31:05
でもできるでしょ

132 :デフォルトの名無しさん:2010/12/20(月) 23:38:56
ゼロサプレスはふつーにsprintf("%8d", n)とかでいいよね。

133 :デフォルトの名無しさん:2010/12/20(月) 23:41:28
08dだよね。

134 :デフォルトの名無しさん:2010/12/20(月) 23:42:33
ごめん、まちがえた。

135 :デフォルトの名無しさん:2010/12/21(火) 00:38:57
>>99
規格Cで保証されている
ちなみにcharは少なくとも8ビット、intは少なくとも16ビット

136 :デフォルトの名無しさん:2010/12/21(火) 01:07:41
fgets(buf,MAX,fp)って
一回の動作でbufに格納する時、文字列の途中で\nが入っていた場合、MAXに達してなくても
途中で文字の受け渡しを終了するんですか?

137 :デフォルトの名無しさん:2010/12/21(火) 01:10:49
はい

138 :デフォルトの名無しさん:2010/12/21(火) 01:20:46
巷で見かける MAX のほとんどが動くけど間違ってるんだよな…

139 :デフォルトの名無しさん:2010/12/21(火) 01:32:19
サプレス=抑止だから 0 つけちゃダメだおw


140 :デフォルトの名無しさん:2010/12/21(火) 02:52:23
>>135
そういうのよくないとおもうが、まぁ、これも勉強と思えばいいのかね。

141 :デフォルトの名無しさん:2010/12/21(火) 04:56:31
いや、C99しかみてないけど
charが規格を満たすにはどうしたって8bit要ることないか?

142 :デフォルトの名無しさん:2010/12/21(火) 05:00:55
いつものアレか?
charは1byteであることが保証されているが1byteが8bitであるとの保証はない

143 :デフォルトの名無しさん:2010/12/21(火) 06:12:43
CHAR_BITの話はさておいても、intもdoubleも規格ではサイズ決まってないというところ。

C99だとintは最低16bit doubleは最低32bitって決められてるのかな。

144 :デフォルトの名無しさん:2010/12/21(火) 06:25:11
>>143
サイズは決まってないが
最低限表現可能でなければいけないな値は決められてるじゃないか

サイズが決まってないってことしか知らないのか?

145 :デフォルトの名無しさん:2010/12/21(火) 06:48:13
7bitでもいけるじゃまいか?

146 :デフォルトの名無しさん:2010/12/21(火) 08:38:35
K&Rにはlong最低32bitって書いてあるようだけど?

147 :デフォルトの名無しさん:2010/12/21(火) 09:08:15
>>145
いや、足りないだろunsingned char で0-255が要求されてんだぞ

148 :デフォルトの名無しさん:2010/12/21(火) 09:08:34
ほっほっ

149 :デフォルトの名無しさん:2010/12/21(火) 10:11:52
K&R(笑)

150 :デフォルトの名無しさん:2010/12/21(火) 10:13:51
K&R馬鹿にする奴で有能な奴を見たことがない

151 :デフォルトの名無しさん:2010/12/21(火) 10:21:15
またカーニハン信者か。
プログラミング作法でも読んどけって感じだな

152 :デフォルトの名無しさん:2010/12/21(火) 12:32:30
ANSIは型チェックちょっと厳密になった程度という認識なんだけど。
(・ε・) K&Rって、そんなにダメなん?

153 :デフォルトの名無しさん:2010/12/21(火) 12:33:25
規格票 >> [超えられない壁] >> K&R

154 :デフォルトの名無しさん:2010/12/21(火) 15:57:59
>>153が真理だな。
規格レベルで話せない奴に限って「K&Rを馬鹿にする奴は…ブツブツ」とか言う

155 :デフォルトの名無しさん:2010/12/21(火) 16:03:16
(・∀・)ニヤニヤ

156 :デフォルトの名無しさん:2010/12/21(火) 16:21:11
規格厨 対 K&R厨の戦いか。
どっちも見苦しいな

157 :デフォルトの名無しさん:2010/12/21(火) 16:23:34
脳内規格じゃないだけ随分とマシになったな

158 :デフォルトの名無しさん:2010/12/21(火) 17:25:38
n=4のとき、
****
***
**

このように表示するプログラムを書いているのですが、ここからどうしてもできません
どなたか教えていただけないでしょうか
#include<stdio.h>
int main(void)
{int n,i,j;
printf("三角形の一辺の長さを入れなさい.\n");
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=i;j++)printf("*");
printf("\n");
}
}


159 :デフォルトの名無しさん:2010/12/21(火) 17:27:54
4桁の任意の数字があって、その中にある数字が含まれていることをif文であらわす
にはどうすればいいですか?
例えば、5345の中には5が2つある。みたいなのです。

160 :デフォルトの名無しさん:2010/12/21(火) 17:59:45
ふっふっ

161 :デフォルトの名無しさん:2010/12/21(火) 18:03:29
>>58
ばーーーーーーか

162 :デフォルトの名無しさん:2010/12/21(火) 18:05:37
>>158
for(i = n; i > 0; i--) {
for(j = 0; j < i; j++) printf("*");
printf("\n

163 :デフォルトの名無しさん:2010/12/21(火) 18:20:25
>>159
10で割った余りを数えていく

164 :デフォルトの名無しさん:2010/12/21(火) 18:58:18
>>159
sprintf()で文字列にして、文字として数える。

165 :デフォルトの名無しさん:2010/12/21(火) 18:59:14
ほっほっ

166 :デフォルトの名無しさん:2010/12/21(火) 19:06:43
http://9cguide.appspot.com/14-03.html
[7]文字列の比較 の2番目のプログラムで質問です
forの条件式でi < len + 1となっているのでif (i == len + 1)にはなることはないように思えます
このプログラムは文字列を比較するプログラムとして機能するのでしょうか?

167 :デフォルトの名無しさん:2010/12/21(火) 19:11:39
もう一度紙に書いて良く考えてみよう

168 :デフォルトの名無しさん:2010/12/21(火) 19:12:20
>>166
機能するかどうかは動かして試してみればいいじゃん。
ヒントを書いておくと、文字列の一致とは長さも一致している必要があるってこと。

169 :デフォルトの名無しさん:2010/12/21(火) 19:25:06
>>167-168
うーん、まぁまぁですね。

170 :デフォルトの名無しさん:2010/12/21(火) 19:31:18
breakに到達しなかった場合はどうやってfor文から抜けるのかな?かな?

171 :デフォルトの名無しさん:2010/12/21(火) 19:35:19
>>162
ありがとう!

172 :デフォルトの名無しさん:2010/12/21(火) 19:49:18
一応>>169は別人です

i++でiが12になってからi < len + 1で比較され、12(i)<12(len+1)と条件を満たさなくなり
i=12の状態でfor文を抜けるということでいいんでしょうか?
条件満たすi=11の段階でfor文を抜けると思っていました

173 :デフォルトの名無しさん:2010/12/21(火) 20:10:55
>>171
いえいえ

174 :デフォルトの名無しさん:2010/12/21(火) 20:13:09
ふっほっ

175 :デフォルトの名無しさん:2010/12/21(火) 20:43:55
ふっふっ

176 :デフォルトの名無しさん:2010/12/21(火) 21:12:21
最近の学生は問題出されると
すぐパソコンに向かってプログラミングしようとする
常識的に考えてフローチャートつくるのが先だろ。
話変わるがソースコードからフローチャートに変換できるツールってない?
自筆で図描くのめんどくさい

177 :デフォルトの名無しさん:2010/12/21(火) 21:27:15
>>176
書くべきはデータフローだろ

178 :デフォルトの名無しさん:2010/12/21(火) 22:22:17
>>172
for (A; B; C)

ABCBCB…


179 :デフォルトの名無しさん:2010/12/21(火) 22:51:13
>>152
K&R はダメだったけど
ANSI でもっとダメになった
C99 でさらに追い打ち

上のほうの人たちが C の何がいいのかをまるでわかっておらず
枝葉末節のために醍醐味をまき散らすように捨て続けてきた

スタック構造をダイレクトに書けるのはいいことで register 渡しまであったのはあれでよかったし
lint は lint で独自の差別化を競えたはずで芽を摘まれなければ今ごろ頼もしかっただろうし
const はせっかく新設までしといて逆がないから write only な論理をきれいに書けないままだし
void* も文法を汚してまで新設しといて予想外に使えないやつだった

long long は待望だったけど 0b や数値定数の空白継続は結局なし
auto 配列の初期化だの可変配列みたいないらんものを大量にマンダトリーにしちまいやがった

180 :デフォルトの名無しさん:2010/12/21(火) 23:39:31
文字があってその中のある特定の文字の数を数えるには
どのようにプログラムすればいいですか?
プログラムの例を載せてもらえると助かります。

181 :デフォルトの名無しさん:2010/12/21(火) 23:41:37
あとif文でお願いします

182 :デフォルトの名無しさん:2010/12/21(火) 23:44:27
void main(void)
{
char moji[]="aiueoaiueoaiueo";
int i,count=0;

for(i=0;moji[i]!='\0';i++){
if(moji[i]=='a'){
//aをカウント
count++;
}
}

printf("aは%d個でつ",count);
}

ばっちりでつ

183 :デフォルトの名無しさん:2010/12/21(火) 23:47:03
>>180

int charCount(const char* s, char ch)
{
if (*s == '\0')
return 0;
return (*s == ch) + charCount(s + 1, ch);
}

int main()
{
const char* s = "qwertyanxa";
printf("%d\n", charCount(s, 'a'); /* 'a'の個数を数える */
printf("%d\n", charCount(s, 't'); /* 't'の個数を数える */
return 0;
}


184 :デフォルトの名無しさん:2010/12/21(火) 23:48:37
ありがとうございます

185 :デフォルトの名無しさん:2010/12/21(火) 23:55:36
>>183
すげぇな。再帰的にカウントしてるなんてとてもじゃないけど思いつかない
カウントする対象の文字が全角だったらどうなるの

186 :デフォルトの名無しさん:2010/12/21(火) 23:57:40
文字コードが分かってるなら文字単位で再起処理すればいいだけじゃないかな。
スタックの心配はしなくていいか。

187 :デフォルトの名無しさん:2010/12/22(水) 00:04:13
int charCountSub(int count, const char* s, char ch)
{
if (*s == 0) return 0;
return charCountSub((*s == ch) + count, s + 1, ch);
}

int charCount(const char* s, char ch)
{
return charCountSub(0, s, ch);
}

スタックが心配なときは末尾再帰にすれば。


188 :デフォルトの名無しさん:2010/12/22(水) 00:05:51
>>187
よくみたらバグってるな。まあいいか。

189 :デフォルトの名無しさん:2010/12/22(水) 00:07:44
すげぇ
最近C言語とやらを勉強しだしておれにはこのスレ心強すぎる

190 :デフォルトの名無しさん:2010/12/22(水) 00:08:18
>>187
!!(*s == ch)
こうしなくていいっけ

191 :デフォルトの名無しさん:2010/12/22(水) 00:12:27
return 0じゃなくてreturn countかな。

192 :デフォルトの名無しさん:2010/12/22(水) 00:19:23
>>185
Cだけじゃなく関数型言語もやってみな

193 :デフォルトの名無しさん:2010/12/22(水) 00:45:50
なんでわざわざそんな分かりにくいコードを書くのかと小一時間

194 :デフォルトの名無しさん:2010/12/22(水) 00:51:45
>>192
関数型言語を勉強するのにオススメは何?

195 :デフォルトの名無しさん:2010/12/22(水) 00:58:02
Emacs Lisp以外で使われてる関数型言語とかあんの?

196 : [―{}@{}@{}-] デフォルトの名無しさん:2010/12/22(水) 01:08:29
プロローグ

197 :デフォルトの名無しさん:2010/12/22(水) 01:13:05
Common Lisp

198 :デフォルトの名無しさん:2010/12/22(水) 07:12:50
186でいわれてるスタックの心配ってどういうこと。
スタック領域が飽和状態になって違う領域(ヒープ?)にはみ出てしまうという意味ですか。
初心者の俺には専門用語すぎてカオスすぎる

199 :デフォルトの名無しさん:2010/12/22(水) 07:15:51
スタックオーバーフローでっgr

200 :デフォルトの名無しさん:2010/12/22(水) 07:20:13
199
そのスタック領域をオーバーした先はヒープ領域で間違いないですか

201 :デフォルトの名無しさん:2010/12/22(水) 07:22:08
かんきょうによる
すたっくとひーぷのぽいんたがれんぞくしているとはかぎらない
そもそもひーぷというものがないかもしれない

202 :デフォルトの名無しさん:2010/12/22(水) 07:24:26
なるほどすっきり^q^

203 :デフォルトの名無しさん:2010/12/22(水) 08:56:34
コンソールプログラムでメモリを動的確保した時に、
コンソール画面を右上の×で閉じてしまったらメモリって解放されないですよね?
じゃあこの×を押したときに、解放するようにしたいのですが、
良い方法ないでしょうか?
WINAPIを使ったウィンドウのプログラムなら余裕なんですが、コンソールプログラムだと
方法がわかりません。

204 :デフォルトの名無しさん:2010/12/22(水) 09:02:14
>>203
本当に解放されない?

205 :デフォルトの名無しさん:2010/12/22(水) 09:03:53
ストリーム関数のエラーを拾って終了処理に移ればいいと思うよ。

206 :デフォルトの名無しさん:2010/12/22(水) 09:06:59
>>204
自動的に解放されるのでしょうか?

>>205
つまり、scanfとかで停止させている場合、その関数のエラーを
ウィンドウを閉じたと判断して、終了処理させるということですか?

207 :デフォルトの名無しさん:2010/12/22(水) 09:50:24
>>208
C言語なんてマイナー言語誰も使ってないよw

208 :デフォルトの名無しさん:2010/12/22(水) 10:09:46
ttp://www.dotup.org/uploda/www.dotup.org1310536.gif

209 :デフォルトの名無しさん:2010/12/22(水) 11:10:55
C言語はハッカー御用達

210 :デフォルトの名無しさん:2010/12/22(水) 11:31:20
ハッカー御用達はPerlじゃないの?

211 :デフォルトの名無しさん:2010/12/22(水) 11:31:40
if分が正常に行われなくて悩んでいます。
環境はVC++です。

{
float length=100;
float length2=200;
float lenlen=length-length2;

if(lenlen>=0){

return false;

}
return true;

}


なぜかfalseが帰ってきてしまいます。
0より小さいはずなのに
ちなみにlenlen>0としたら正常に動きました。

よろしくお願いします。

212 :デフォルトの名無しさん:2010/12/22(水) 11:38:57
>>211
どーせ書いた処理そのままのせてないんだろう
そんで実際の処理ではlenlenが0になってるんだろう
じっさいのコードでif分岐の直前にlenlenを出力してみたらどうだ?

213 :デフォルトの名無しさん:2010/12/22(水) 11:40:22
>>211
別のところで未初期化のポインタ使って何か書き込んでないか?

214 :デフォルトの名無しさん:2010/12/22(水) 11:42:45
>>211
馬鹿なんだから省略とかしちゃだめだよ
ちゃんと全部載せないと

215 :デフォルトの名無しさん:2010/12/22(水) 11:48:27
たしかに馬鹿なことしてました。
正常に動作してたのに別のところで勘違いしてたみたいでした。
すいませんm(_ _)m

216 :デフォルトの名無しさん:2010/12/22(水) 11:50:40
うむ、許してやろう

217 :デフォルトの名無しさん:2010/12/22(水) 12:15:03
>>203
プロセスが終了したら動的にとってきたメモリも解放されると思うけど。


218 :デフォルトの名無しさん:2010/12/22(水) 14:38:07
>>215
特別に許してやるよ
感謝しろww

219 :215:2010/12/22(水) 15:17:27
>>218
どこの馬の骨とも分からないあんたにそんな事を言われる筋合いは
これっぽっちもないんですけど?

220 :デフォルトの名無しさん:2010/12/22(水) 15:23:31
ほっほっ

221 :デフォルトの名無しさん:2010/12/22(水) 15:29:40
ふほほほほほっほほほふfひいいひいいいいいいいいっじじじゃあああああ

222 :215:2010/12/22(水) 15:58:28
キチガイ共乙

223 :デフォルトの名無しさん:2010/12/22(水) 16:30:01
ふっほっ

224 :デフォルトの名無しさん:2010/12/22(水) 16:49:14
あずにゃんペロペロ

225 :デフォルトの名無しさん:2010/12/22(水) 18:05:42
ヘッダファイルの存在価値が全然わからないんですが、何のために
あるんでしょうか?わざわざ別に作る必要ないですよね。

226 :デフォルトの名無しさん:2010/12/22(水) 18:21:43
ふっふっ

227 :デフォルトの名無しさん:2010/12/22(水) 18:22:45
>>225
非常に小規模な開発なら、その通り

228 :デフォルトの名無しさん:2010/12/22(水) 18:28:36
>>227
具体的に教えろ。

229 : ◆QZaw55cn4c :2010/12/22(水) 18:53:52
>>225
ひとつのプログラムを複数の c ファイルで構成するような場合に有用となります。


230 :デフォルトの名無しさん:2010/12/22(水) 19:20:30
必要ないんだったら一つのファイルにコード書いとけ

231 :デフォルトの名無しさん:2010/12/22(水) 19:23:52
>>230
説明できないんだ!?w
ばーか。w

232 :デフォルトの名無しさん:2010/12/22(水) 19:28:18
K&R読んでからもう一回来い

233 :デフォルトの名無しさん:2010/12/22(水) 19:29:00
>>229
意味がわかりません。
具体例を教えてください。
具体例のわかりやすさは異常。


234 :デフォルトの名無しさん:2010/12/22(水) 19:29:12
必要ないよ

235 :デフォルトの名無しさん:2010/12/22(水) 19:29:33
>>233
stdio.h

236 :デフォルトの名無しさん:2010/12/22(水) 19:30:13
お前ら釣られすぎだろw

237 :デフォルトの名無しさん:2010/12/22(水) 19:33:47
釣りでしたww
みんな引っかかってくれてありがとうww

238 :デフォルトの名無しさん:2010/12/22(水) 19:35:37
>>237
どこが釣りなのか教えてくれ
ヘッダファイルをどういうときに使うのか説明できないだろ

239 :デフォルトの名無しさん:2010/12/22(水) 19:43:40
ふっほっ

240 :デフォルトの名無しさん:2010/12/22(水) 19:46:10
まさに糞スレ

241 :デフォルトの名無しさん:2010/12/22(水) 19:50:10
煽って出るものでもない

242 :デフォルトの名無しさん:2010/12/22(水) 20:21:25
ほっほ

243 :デフォルトの名無しさん:2010/12/22(水) 22:15:45
ふっほっ

244 :デフォルトの名無しさん:2010/12/22(水) 23:35:26
どぴゅっどぴゅっ

245 :デフォルトの名無しさん:2010/12/22(水) 23:50:58
質問だがたとえばchar s[1000000000000];と宣言すると
その時点でスタック領域がオーバーして実行できなくなるが
これを解消するにはメモリを増設することが考えられますが
他に手はないですか

246 :デフォルトの名無しさん:2010/12/22(水) 23:59:59
>>245
メモリ増設してもムリじゃないか?

247 :デフォルトの名無しさん:2010/12/23(木) 00:05:04
違うのか汗

248 :デフォルトの名無しさん:2010/12/23(木) 00:07:22
そのサイズを確保するのは難しいと思うけど、
スタック領域をオーバーするような大きな配列はstaticつけるといいかもね。


249 :デフォルトの名無しさん:2010/12/23(木) 00:28:04
コンパイルオプションでスタックサイズを変更すればいいけど、その例は大きすぎてダメ。

250 :デフォルトの名無しさん:2010/12/23(木) 01:19:33
ふっふっ

251 :デフォルトの名無しさん:2010/12/23(木) 02:10:17
うちの研究所の共有メモリマシンを占有すれば、
ギリギリ取れるサイズだな。

252 :デフォルトの名無しさん:2010/12/23(木) 02:13:03
ひゃっふっ

253 :デフォルトの名無しさん:2010/12/23(木) 09:00:14
>>245
1.小さくする
2.ヒープにとる
3.あきらめる

254 :デフォルトの名無しさん:2010/12/23(木) 10:05:05
スタックってヒープより容量少ないの?

255 :デフォルトの名無しさん:2010/12/23(木) 10:25:05
普通はね

256 :デフォルトの名無しさん:2010/12/23(木) 11:30:09
ちょっと気になったので教えてください

int main(){
char a[2]={'1111','?0'};
return 0;
}

単純にこれだけコンパイルしてみたんですが、'1111'の部分、何故かエラーを吐かずに正常終了しました。char型って1バイトですよね?入りきらないと思うんですが…


257 :デフォルトの名無しさん:2010/12/23(木) 11:40:29
>>256
警告レベルを上げたらでるんじゃないかな警告
あふれちゃうような整数型の変換は普通に通る
規格上は未定義ではあり、値もおかしくなるが

258 :デフォルトの名無しさん:2010/12/23(木) 11:43:19
Cでは文字定数はint型だからな
もちろんcharには入りきらない
黙って切り捨てられる

259 :デフォルトの名無しさん:2010/12/23(木) 12:09:35
>>256
1111って4bitしか使ってないじゃん。だからエラーにならないんだよ

260 :デフォルトの名無しさん:2010/12/23(木) 12:15:37
お前の眼は節穴か?

261 :デフォルトの名無しさん:2010/12/23(木) 12:43:28
>>260
うん

262 :デフォルトの名無しさん:2010/12/23(木) 12:53:01
char *hoge = "piyo"
strcpy(hoge, "piyo");

これはダメな気がするんですが動きます
どうしてでしょうか?

263 :デフォルトの名無しさん:2010/12/23(木) 12:55:00
>>262
文字列のリテラルが書き込み可の領域に置かれてるんだろ。

264 :デフォルトの名無しさん:2010/12/23(木) 12:57:38
>>262
char *hoge = "piyo" ここで指しているアドレスと
strcpyの第二引数に指定されている"piyo"が指しているアドレスが一緒だから
"piyo"じゃなくて"aaa"とかだとエラーがでるはず。

265 :デフォルトの名無しさん:2010/12/23(木) 13:01:05
264だがエラーでなければ263の説が正しいです

266 :デフォルトの名無しさん:2010/12/23(木) 13:21:46
>>263-264
ありがとうございます
たまたま書き込み可の領域に置かれていて、
これが動いてるのは環境依存だから良くないよって事でいいんでしょうか

267 :デフォルトの名無しさん:2010/12/23(木) 13:26:11
>>266
そう。よくない。

268 :デフォルトの名無しさん:2010/12/23(木) 13:38:46
ポインタの参照先がリテラル文字列かどうか判別するにはどうすればいいんですか?

269 :デフォルトの名無しさん:2010/12/23(木) 13:42:45
ソース見ればわかる

270 :デフォルトの名無しさん:2010/12/23(木) 13:45:11
>>268
どの環境でも使える方法はないよ。
const char* s = "aaaa";
みたいにconstを活用してそういうミスを防ぐくらい。

271 :デフォルトの名無しさん:2010/12/23(木) 13:46:05
>>269
あなたが馬鹿だということはわかりました
しかしいまだポインタの参照先がリテラル文字列かどうかは判別できません
どうすればいいでしょうか

272 :デフォルトの名無しさん:2010/12/23(木) 13:52:07
char ss[] = "aaaa";
char* sp = "aaaa";
printf("%p %p",ss,sp);
printfでアドレス表示させれば文字列リテラルがどこらへんに格納されるか把握して
if文でアドレスチェックすればいけなくないか


273 :デフォルトの名無しさん:2010/12/23(木) 14:05:22
>>271
カス

274 :デフォルトの名無しさん:2010/12/23(木) 14:10:39
グローバルなハッシュにリテラル文字列のアドレスを格納しておく
マクロを使ってポインタへの代入とアドレスの登録を同時に出来るようにすれば便利だね

275 :デフォルトの名無しさん:2010/12/23(木) 14:29:42
>>271
「ポインタの参照先を判別」という発想がそもそも C ではサポートされない
RTTI 的なものが欲しければ自分でそういう仕掛けを作ることになる

276 :デフォルトの名無しさん:2010/12/23(木) 15:27:16
ほっほっ

277 :デフォルトの名無しさん:2010/12/23(木) 15:49:32
リテラルとRTTIにいったいどんな繋がりが有るというのだろう?

278 :デフォルトの名無しさん:2010/12/23(木) 16:49:57
ポインタで配列渡したら要素数さえ分からないんだから贅沢言うな

279 :デフォルトの名無しさん:2010/12/23(木) 17:00:33
ふっふっ

280 :デフォルトの名無しさん:2010/12/23(木) 17:08:40
ポインタの参照先が何であるか... プログラマは自分でそれを知っているはずである
自分で書いたプログラムなのだから、そこに何が渡されてくるのか、わからないはずがない
従ってわざわざ判別する必要などないはずである

281 :デフォルトの名無しさん:2010/12/23(木) 17:11:01
人の書いたプログラム使ったり使われたりするし

282 :デフォルトの名無しさん:2010/12/23(木) 17:20:07
結論 Cは糞

283 :デフォルトの名無しさん:2010/12/23(木) 17:26:20
>>280
頭悪すぎて哀れになってくるな
解ってたらポインタなんていらねーよ参照でおしまい

284 :デフォルトの名無しさん:2010/12/23(木) 17:44:57
ポインタを使わなかったらどうだろうか

285 :デフォルトの名無しさん:2010/12/23(木) 17:50:53
節子、それはCやない

286 :デフォルトの名無しさん:2010/12/23(木) 17:53:28
>>284
グッドアイデア!

287 :デフォルトの名無しさん:2010/12/23(木) 17:56:53
ふっほっ

288 :デフォルトの名無しさん:2010/12/23(木) 18:02:14
ひっひっ

289 :デフォルトの名無しさん:2010/12/23(木) 18:32:43
ほっほっ

290 :デフォルトの名無しさん:2010/12/23(木) 18:44:39
キチガイ共乙

291 :デフォルトの名無しさん:2010/12/23(木) 18:49:31
WikiLeaks板できました
http://raicho.2ch.net/test/read.cgi/wikileaks/1291228726/

292 :デフォルトの名無しさん:2010/12/23(木) 19:23:22
ふっほっ

293 :デフォルトの名無しさん:2010/12/23(木) 19:24:30
すぽっすぽっ

294 :デフォルトの名無しさん:2010/12/23(木) 19:29:53
ほっほっ

295 :デフォルトの名無しさん:2010/12/23(木) 19:32:41
ぶはっ!選ぶはっ!

296 :デフォルトの名無しさん:2010/12/23(木) 19:35:46
糞スレ

297 :デフォルトの名無しさん:2010/12/23(木) 19:36:18
ぽるっぽるっ

298 :デフォルトの名無しさん:2010/12/23(木) 19:37:30
ぷっぷっ

299 :デフォルトの名無しさん:2010/12/23(木) 19:38:45
Nakaso

300 :デフォルトの名無しさん:2010/12/23(木) 19:38:49
Nakaso

301 :デフォルトの名無しさん:2010/12/23(木) 19:43:58
Nakaso

302 :デフォルトの名無しさん:2010/12/23(木) 19:46:51
糞スレ

303 :デフォルトの名無しさん:2010/12/23(木) 19:49:21
↓サドルマン

304 :デフォルトの名無しさん:2010/12/23(木) 19:53:58
荒らし報告しとくか

305 :デフォルトの名無しさん:2010/12/23(木) 20:01:52
↑サドルマン

306 :デフォルトの名無しさん:2010/12/23(木) 20:06:15
嵐豊国しました

307 :デフォルトの名無しさん:2010/12/23(木) 20:06:23
C言語初心者なのですが、サドルマンとは何ですか?

308 :デフォルトの名無しさん:2010/12/23(木) 20:08:47
IP抜くの楽しいお

309 :デフォルトの名無しさん:2010/12/23(木) 20:30:43
ぼいんぼいん

310 :デフォルトの名無しさん:2010/12/23(木) 20:34:48
push any keyはどうすればいいの?


311 :デフォルトの名無しさん:2010/12/23(木) 20:35:18
system("pause");

312 :デフォルトの名無しさん:2010/12/23(木) 20:36:13
printf("push any key");

313 :デフォルトの名無しさん:2010/12/23(木) 20:42:07
>>311
ホントに止まった
ありがとー!

314 :デフォルトの名無しさん:2010/12/23(木) 20:44:24
>>313は自分ではありません。
system関数を使わない方法を教えて。

315 :デフォルトの名無しさん:2010/12/23(木) 20:46:49
system関数は嫌なのか?
何かの課題でsystem関数を使ってはいけないという縛りでもあるのか?

316 :デフォルトの名無しさん:2010/12/23(木) 20:49:31
>>277
あったら作れとか言わねえよバカ

317 :デフォルトの名無しさん:2010/12/23(木) 20:50:13
>>314
getchar()
kbhit()

318 :デフォルトの名無しさん:2010/12/23(木) 21:30:15
標準ライブラリのみという縛りだとしたら簡単には出来ないだろうな
asmで割り込みいじる事になるのか?w



319 :デフォルトの名無しさん:2010/12/23(木) 21:42:14
system関数って便利だなと思って自分の環境で動かしていたが
別の環境にもっていくとそれが使えなかったりするから正直微妙。

320 :デフォルトの名無しさん:2010/12/23(木) 21:55:40
>>318
もうちょっと勉強してからおいで。

321 :デフォルトの名無しさん:2010/12/23(木) 22:03:55
yahooの腐女子と801板の腐女子の違いって?

322 :デフォルトの名無しさん:2010/12/23(木) 22:09:40
エキスパートCプログラミングってサンプルコードとかある?

323 :デフォルトの名無しさん:2010/12/23(木) 22:20:19
wikiLeaksって何?

324 :デフォルトの名無しさん:2010/12/23(木) 22:23:33
>>322
ない

325 :デフォルトの名無しさん:2010/12/23(木) 22:31:16
携帯電話のC言語って?

326 :デフォルトの名無しさん:2010/12/23(木) 22:35:35
>>323
正義の味方

327 :デフォルトの名無しさん:2010/12/23(木) 23:10:28
>>323
「王様の耳はロバの耳」と床屋が叫んだ穴

328 :デフォルトの名無しさん:2010/12/23(木) 23:22:35
標準入力関数の中でsscanfを愛用してるんだがお前らもそうだろ。
scanfとかいうやつはジョークだ

329 :デフォルトの名無しさん:2010/12/23(木) 23:24:34
環境変数が分からなさすぎる。
プログラム組んでソフト作っても、プログラムによって
環境変数を変えなきゃならんような事もしないといけないの?

330 :デフォルトの名無しさん:2010/12/23(木) 23:25:44
sscanfもscanfもジョークだ


331 :デフォルトの名無しさん:2010/12/23(木) 23:27:57
sscanfは入力した文字列を指定の書式に変換してくれる優れものだぞ。
scanfと一緒にすんなよ

332 :デフォルトの名無しさん:2010/12/23(木) 23:29:09
>>329
実務では当然

333 :デフォルトの名無しさん:2010/12/23(木) 23:29:55
>>329
環境変数を設定しなくてもいいようにプログラムに組んでおけばすむことでは

334 :デフォルトの名無しさん:2010/12/23(木) 23:30:53
>>329
環境変数はOSの話だ。コンパイラの実行パスとかデバッグフラグとか。基本的にC自体とは関係ない。
例えば環境変数に作業用のパス情報があって、それをプログラム中で参照するとかで利用することが可能ってだけ。
プログラムが不要とするならば環境変数に意味はない。

335 :デフォルトの名無しさん:2010/12/23(木) 23:39:38
>>334
このプログラムはWindows7では動作しないから、環境変数を変えないと
いけないみたいなのあるんかなぁ?

336 :デフォルトの名無しさん:2010/12/23(木) 23:45:16
パソコンでyoutube見るのも、2ちゃんねるに書き込めるのも、ゲーム
するのも環境変数のおかげだが?やっぱりC言語学ぶなら環境変数や
シェルの知識は必須だよな。


337 :デフォルトの名無しさん:2010/12/23(木) 23:50:19
UNIX前提かと思ったらwindowsかよ

338 :デフォルトの名無しさん:2010/12/23(木) 23:50:32
>>335
Windowsに限って言えば、使用するWinAPI(.NET)によって動作可能なバージョンも決まる。
決まるんだが、C標準だけで組むようなコンソールプログラムレベルなら何も気にしないでいい。
OSに依存しないから。

339 :デフォルトの名無しさん:2010/12/23(木) 23:55:01
>>338
環境変数全部削除したら依存するだろ。

340 :デフォルトの名無しさん:2010/12/24(金) 00:00:09
>>339
誰が削除しろなんて言ってんだよ…
コンパイラをインストールしてあるなら後は気にすることないだろ。

341 :デフォルトの名無しさん:2010/12/24(金) 00:00:57
コンパイラが環境変数満たしてればいいのか。

342 :デフォルトの名無しさん:2010/12/24(金) 00:00:57
「fopen()したら忘れずにfclose()する。」、「malloc()したら忘れずにfree()する」っていうふうに
教わったんだけど、exit()で強制終了する時って、exit()する前に必要な分だけ
fclose(またはfree)しなきゃだめなの?面倒じゃない?

343 :デフォルトの名無しさん:2010/12/24(金) 00:01:37
>>342
しなくていい。

344 :デフォルトの名無しさん:2010/12/24(金) 00:07:34
環境変数を巧妙にいじって3Dアクセラレータと同様の機能を可能にする
事とかできますか?

345 :デフォルトの名無しさん:2010/12/24(金) 00:09:56
exit(1)でもexit(0)でもプログラム上手くいってるわw
二つの違いが全然わからんw

346 :デフォルトの名無しさん:2010/12/24(金) 00:13:37
>>345
echo ?
echo %errorlevel%

347 :デフォルトの名無しさん:2010/12/24(金) 00:14:28
>>346
間違えた

echo $?
echo %errorlevel%

348 :デフォルトの名無しさん:2010/12/24(金) 00:16:06
>>342
exitなどでプログラムが終了するときは、そのプロセスで使ったメモリはすべて解放されます。
なのでfreeでメモリを解放しなくても問題ないです。が、常駐するプログラムではそうはいかないので
クセをつけるという意味で使ったメモリは解放するという習慣を身につけたほうがいいでs。

349 :デフォルトの名無しさん:2010/12/24(金) 00:17:26
メモリ何て開放する必要ないだろ、メモリ何て2ギガあれば
無限みたいなもんだし。

350 :デフォルトの名無しさん:2010/12/24(金) 00:18:50
富豪的プログラミングと言っても、
Cなんてシビアな組み込みとかでしか使わないんじゃね

351 :デフォルトの名無しさん:2010/12/24(金) 00:18:59
4メガしかない環境でやってるんで無理です

352 :デフォルトの名無しさん:2010/12/24(金) 00:19:41
>>349
お前、話が理解できてないなら無理にレスしなくていいぞ

353 :デフォルトの名無しさん:2010/12/24(金) 00:22:14
>>351
ゲーム機かよwww


354 :デフォルトの名無しさん:2010/12/24(金) 02:22:42
四則演算プログラムを作りました。
コマンドラインから 「"ファイル名" 4 + 5 - 7 * 8」 とすると計算がめちゃくちゃになります。
*(アスタリスク)を他のx(エックス)などにすると大丈夫。

質問はコマンドラインから *(アスタリスク)は認識にもともと難があるものですか。

355 :デフォルトの名無しさん:2010/12/24(金) 02:40:15
>>354
認識に何があるというか ワイルドカードという役割がある
だから *だけじゃ *がそのまま argvに入ってこない

356 :デフォルトの名無しさん:2010/12/24(金) 02:45:44
>>354
>>355の言う通りで、「"ファイル名" "4 + 5 - 7 * 8"」でやってみ

357 :デフォルトの名無しさん:2010/12/24(金) 04:24:17
void remove(char *buf)//配列のアドレスを受け取る
{
int n;
char *p;
char *q;

for(p=buf; ISBLANK(*p);p++) //#define ISBLANK(c) ((c)==' '||(c)=='\t')
;
q=buf;
n=strlen(p)+1;
while(n--)
*q++=*p++;
}

渡される配列の一文字目が空白の場合、空白を取り除く処理をしている関数です
whileで処理されているところがわからないので教えてください


358 :デフォルトの名無しさん:2010/12/24(金) 04:31:08
>>357
最初に出現する空白文字を取り除いた後の文字数をnに代入し、
nが0になるまで(処理後の文字列の先頭にくるまで)巻き戻しながら*q(=buf)にコピーしている。

359 :デフォルトの名無しさん:2010/12/24(金) 05:04:38
図々しいようですがブロックごとに説明をつけてくれませんか

360 :デフォルトの名無しさん:2010/12/24(金) 05:15:59
死ね

361 :デフォルトの名無しさん:2010/12/24(金) 05:16:31
>>358
間違ってるな

×処理後の文字列の先頭にくるまで巻き戻しながら
○処理後の文字数分だけ先頭から

362 :354:2010/12/24(金) 06:49:53
>>355-356
めちゃくちゃ勉強になりました。 深夜にありがとうございました。

363 :デフォルトの名無しさん:2010/12/24(金) 06:50:48
>>357
なんか色々バグってね?

void remove(char *buf)//配列のアドレスを受け取る
{
int n;
char *p;
char *q;

for(p=buf; ISBLANK(*p);p++) //#define ISBLANK(c) ((c)==' '||(c)=='\t')
;
q=p;
n=strlen(q)+1;
while(n--)
*p++=*q++;
}

だろ

364 :デフォルトの名無しさん:2010/12/24(金) 06:55:56
>>363
間違った

void remove(char *buf)//配列のアドレスを受け取る
{
int n;
char *p;
char *q;
for(p=buf; ISBLANK(*p);p++) //#define ISBLANK(c) ((c)==' '||(c)=='\t')
  q=p;
p=buf;
n=strlen(q)+1;
while(n--)
  *p++=*q++;
}

365 :デフォルトの名無しさん:2010/12/24(金) 07:00:28
なんでpとq無意味に入れ替えてんの?

366 :デフォルトの名無しさん:2010/12/24(金) 07:08:15
>>357
取り除く空白は一文字だけじゃないだろ

367 :デフォルトの名無しさん:2010/12/24(金) 07:39:21
while(*q++ = *p++);ならstrlen()とかいらないのに

368 :デフォルトの名無しさん:2010/12/24(金) 08:12:10
ちゃんと書いてくれ!俺は真剣に悩んでいるんだ

369 :755:2010/12/24(金) 08:22:41
void aaa(char *a)
{
char* b = a;

while (*a==' ' || *a=='\t') {a++;}

while (*a!=0) {*b++ = *a++;}
*b=0;
}

そんな難しいことかぁ〜〜??(w
って思う。

なんかISBLANKとかマクロ作って、しかもそれをforの中に入れちゃって、
簡単な事をわざわざややこしくしてるだけでバカバカしいと思う。個人的に。

戻り値で何かするわけでも無いのに int main に絶対的に固執したり、mainの最後なのにわざわざ free したりとか、
forやwhileに{}を使わなかったりとか、
そういうバカバカしい「かっこつけ・ハッタリ」かますから、そういう小さい微妙な読みづらさが積み重なって、全体的にプログラムが意味不明になるってのにw

たとえば、これみたいな「ど〜〜〜ってことない処理w」でも、364やら363やら357やらみたいに「あれ?あれ?」ってなっちゃってて、
ほんとバカバカしい文法だなぁ〜〜って思うw
もっと普通に、素朴に書けば、な〜〜んてことない簡単なことなのにw
わざわざ「通っぽい文法」で書いて、自分で自分を混乱させてるという… あ、あほや…w


370 :デフォルトの名無しさん:2010/12/24(金) 08:32:09
>>357はどう見ても自分で考えてない、どっかのコードの丸写しなのにw

371 :デフォルトの名無しさん:2010/12/24(金) 10:38:22
>>369
コードを修正するなら挙動が異なる部分を言わないと。
>>357はこの関数にバグがあると予測して調査をしていた可能性がある

372 :デフォルトの名無しさん:2010/12/24(金) 14:39:32
>>368
最初の空白以外の文字を見つける
それ以降を前方に移動する

処理の内容はこの2つだけだ
オレだったらわかりやすく以下のようにする

while (!isgraph(*cp)) cp++;
memmove(cq, cp, strlen(cp)+1);

373 :デフォルトの名無しさん:2010/12/24(金) 14:44:21
>>357は参考書のサンプルにコメントで説明を補っただけです。
確かにこの参考書は他のものと比べてわかりづらい印象です。
参考書なのでバグがあることは想定外ですね
一回main()から書き出してデバッグしてみます

374 :デフォルトの名無しさん:2010/12/24(金) 15:04:49
まぁどうせ写し間違いなんだろうけどね

375 :デフォルトの名無しさん:2010/12/24(金) 15:06:55
バグってるのは>>363の頭だけだろw

376 :デフォルトの名無しさん:2010/12/24(金) 16:55:58
ほっほっ

377 :デフォルトの名無しさん:2010/12/24(金) 17:46:39
Ruby関連のスレ行ったら冷たくあしらわれた・・・orz
C言語にかなうプログラミング言語ありませんよね??
ゲームを開発するのはほとんどCまたはC++ですよね?

378 :デフォルトの名無しさん:2010/12/24(金) 18:16:01
全ての言語はC言語からインスピレーショ受けてるよ。
Cに勝る言語はない。ドラクエもFFもC言語のおかげなのかなぁ?

379 :デフォルトの名無しさん:2010/12/24(金) 18:21:18
使いどころを選ぶ気がないのなら
CもRubyもゴミにしかならん

380 :デフォルトの名無しさん:2010/12/24(金) 19:04:20
アセンブリ最高

381 :デフォルトの名無しさん:2010/12/24(金) 22:27:05
.NETは結構です

382 :デフォルトの名無しさん:2010/12/24(金) 22:42:08
>>377
ゲームなんて言い出すと C でカバーできる範囲は狭っ苦しいぞ
遊びには必ずしも CPU やメモリが出てくるとは限らないからな

383 :デフォルトの名無しさん:2010/12/24(金) 22:58:21
いるよなぁ、こういう奴

384 :デフォルトの名無しさん:2010/12/24(金) 23:18:13
実数を指数と価数に分離する方法を教えてください。


385 :デフォルトの名無しさん:2010/12/24(金) 23:19:19
Javaには抽象ウィンドウツールキットがあるが
CやC++はグラフィック関連の機能をまったくもっていない。
マルチスレッドへの配慮も足りていない。
科学技術計算ではFORTRANの方が速い場面も多い。
10進演算を必須とする世界ではCOBOLは今なお強力だ。
etc...

そんなわけで、>>379の言うとおりだと思う。

386 :デフォルトの名無しさん:2010/12/24(金) 23:20:00
>>384
浮動小数点型の内部構造について知る

387 :デフォルトの名無しさん:2010/12/25(土) 00:13:01
ubuntu10.10などのリナックスなら、
/dev ディレクトリにある fb0 ってファイルに画像を描くだけで、画面に絵を出せますよ。
printfくらい簡単に画面に点を打てます。

(特別なライブラリは必要ありません。)

http://codepad.org/jMUT3eG5



起動方法(ubuntu10.10の場合)
Ctrl + Alt + F1〜F6 を押して、tty表示にします。(フレームバッファでの描画は、xwindow上のコンソールでは動かない)

コンパイルしたプログラムをスーパーユーザー権限で起動します
sudo ./a

これだけでグラフィックを扱えます。
じつにシンプル。 printfよりシンプルかもしれません。
むかしのPC98のDOSよりシンプルかもしれません。


余談:カーネルのコンパイルオプションによっては、フレームバッファに対応してない場合もあります。
また、カラーも16bitや8bitかもしれません。 また、画面サイズも1920x1080じゃない環境の人もいるでしょう。
そういう何処でも動くコードを目指すなら、ライブラリを活用してもいいですが、単に個人用の動けばなんでもいいってコードなら、これで十分絵が描けます。

388 :デフォルトの名無しさん:2010/12/25(土) 03:29:27
if(!isdigit(*s))

これどういう意味(書き方)か教えてください

389 :デフォルトの名無しさん:2010/12/25(土) 03:32:14
if(isdigit(*s)==0)と同義

390 :デフォルトの名無しさん:2010/12/25(土) 03:33:24
>>388
ポインタsが指し示すメモリ上の値を文字として評価した時に
数字ではない事を判定している

391 :デフォルトの名無しさん:2010/12/25(土) 07:33:08
>>388
! は否定(NOT)、真なら偽、偽なら真と評価する
isdigit()は数字ならば真を返す

つまりif文としては、
*sの指す文字が数字なら(isdigit()は真だがそれを否定するので)偽
*sの指す文字が数字以外なら(isdigit()は偽だがそれを否定するので)真

392 :デフォルトの名無しさん:2010/12/25(土) 10:40:26
正直いって
if(!isdigit(*s)) こういう書き方は見る人にとってはわかりづらい。

393 :デフォルトの名無しさん:2010/12/25(土) 11:03:42
分かり辛いと思う人の頭が悪いだけだと思うよ

394 :デフォルトの名無しさん:2010/12/25(土) 11:04:29
sの型は何だ?
charならunsigned charにキャストしろよ

395 :デフォルトの名無しさん:2010/12/25(土) 12:06:11
>>393
いろんな人がみるからそういう人のために配慮して書けといってるんだ
わかったか?

396 :デフォルトの名無しさん:2010/12/25(土) 12:07:44
iと!が重言みたいな気持ち悪さを醸し出してる

397 :デフォルトの名無しさん:2010/12/25(土) 12:23:04
いろんな人w

398 :デフォルトの名無しさん:2010/12/25(土) 12:26:04
struct hoge {
int data;
struct hoge *next;
}

みたいな片方向リストで任意の要素nを削除するにはどうすればいいんですか

先頭から順にを探す

目的の要素nが見つかる

ポインタを繋ぎかえようとするが、nの前にある要素へのポインタがないので???となっています


399 :デフォルトの名無しさん:2010/12/25(土) 12:30:53
>>395
じゃあどう書けばいいのかやってみて

400 :デフォルトの名無しさん:2010/12/25(土) 12:34:35
>>398
探す時に1つ前のポインタも残しておけば良い

401 :デフォルトの名無しさん:2010/12/25(土) 12:43:20
>>399
可読性を向上させたいなら389の例がいいんじゃないかな。

402 :デフォルトの名無しさん:2010/12/25(土) 12:48:44
きっとこう書けばいいに違いない

#define not !

if (not isdigit(*s))

403 :デフォルトの名無しさん:2010/12/25(土) 12:49:41
>>401
分かりにくくなる
色んな人が見るんだから配慮しろ

404 :デフォルトの名無しさん:2010/12/25(土) 12:50:28
#define isnotdigit(x) (!isdigit(x))

405 :デフォルトの名無しさん:2010/12/25(土) 12:51:11
真偽値を比較で判定とか可読性下げるだけ

406 :デフォルトの名無しさん:2010/12/25(土) 12:52:24
>>403
お前それいいたかっただけだろw


407 :デフォルトの名無しさん:2010/12/25(土) 12:53:38
! くらい慣れておけよ
プログラマ失格だ

408 :デフォルトの名無しさん:2010/12/25(土) 12:55:22
>>402
そういう言語もあるね

409 :デフォルトの名無しさん:2010/12/25(土) 12:57:10
C++なら実はnotが使える

410 :デフォルトの名無しさん:2010/12/25(土) 12:58:57
仕事先でソース書いた後にコーディング規約チェッカーツールとか使わないの?
if(!isdigit(*s)) とか書いても可読性の観点から違反扱いされて
書き直されるよ。

411 :デフォルトの名無しさん:2010/12/25(土) 13:00:29
>>409
あ、ホントだ

412 :デフォルトの名無しさん:2010/12/25(土) 13:00:52
どんな糞ツールだよ
というか、真値が一意に定まらないCでは
真偽を比較で確かめる癖付けるのは危険なんだよ

413 :デフォルトの名無しさん:2010/12/25(土) 13:02:14
>>412
上手く動かない反例を見せてくれ

414 :デフォルトの名無しさん:2010/12/25(土) 13:06:59
偽との比較は全て動くが
真との比較が危険

if (isdigit('9') == 1) {
 printf("hoge\n");
}

これは環境によっては動かない

当然これは != 0 にするのが正しい
しかし果たしてこれは可読性が高いと言えるだろうか?
二重否定だし、それに真な時に != で比較して偽な時に == で比較する事になる

415 :デフォルトの名無しさん:2010/12/25(土) 13:10:02
!=0なら書かなくて良いだろ

416 :デフォルトの名無しさん:2010/12/25(土) 13:11:14
偽の時だけ == 0 と書くとか何それ気持ち悪い

417 :デフォルトの名無しさん:2010/12/25(土) 13:11:52
特定の場合に0を返すように設計してるんだから、
それをif文の条件にしても可読性が低いってことにはならないと思うけど

418 :デフォルトの名無しさん:2010/12/25(土) 13:12:03
>>415
それで可読性あると思う奴なら
if(!isdigit(*s))でも問題ないだろ

419 :デフォルトの名無しさん:2010/12/25(土) 13:12:42
機械の可読性を言ってるんじゃないけどな

420 :デフォルトの名無しさん:2010/12/25(土) 13:13:29
Windows プログラミングで == TRUE と書いてる奴をよく見る
こういう奴はこのコードの危険性が何も分かってない
API の仕様では BOOL で真を返す場合は「0 以外を返す」と書かれている
動いてるのはたまたまだ
比較方式はこういう奴を量産するだけ

421 :デフォルトの名無しさん:2010/12/25(土) 13:16:43
>>420>>414
だれも真の値が1だとは思ってないから。

422 :デフォルトの名無しさん:2010/12/25(土) 13:18:40
!=0でも読みにくいつってんだろ

423 :デフォルトの名無しさん:2010/12/25(土) 13:22:55
>>400
できました
前のポインタを保持しながらループ回せばいいんですね
ありがとうございました

424 :デフォルトの名無しさん:2010/12/25(土) 13:23:51
比較する際に次のノードの要素と比較するという方法もある

425 :デフォルトの名無しさん:2010/12/25(土) 13:49:41
新しいc規格とかはおいといて
もともとc言語にbool型変数は無く,0を偽,非0を真と決めているだけ
isdigitの戻り値を真偽値とみるか整数値とみるかなんだけど
関数名がis〜だから真偽値と見てもいいような気がする

だがfopenおまえらはダメだ
!=NULLを省略するんじゃねぇぇぇぇぇぇ

426 :デフォルトの名無しさん:2010/12/25(土) 13:52:11
いいじゃん!fpしても

427 :デフォルトの名無しさん:2010/12/25(土) 13:56:56
!=NULLは二重否定に見えるが
!だとポインタなのに真偽値に見える
どちらも微妙なのでどちらでもいいわって感じだが
真偽値にしか!を付けられない言語も多いし
!=NULLで慣れた方が応用は効くのかなとは思う

428 :デフォルトの名無しさん:2010/12/25(土) 14:11:10
0の否定は真になるけど、非0の否定が偽になるとは限らないのが
ややこしいので、いつも == や != 使ってます><

429 :デフォルトの名無しさん:2010/12/25(土) 14:12:45
!(非0) は常に偽だぞ・・・

430 :デフォルトの名無しさん:2010/12/25(土) 14:14:15
え、そうなの?勉強になりました><;

431 :デフォルトの名無しさん:2010/12/25(土) 14:15:34
比較はこういう奴を量産するだけだと証明されたな

432 :デフォルトの名無しさん:2010/12/25(土) 14:17:58
!(非0)が0、!(0)が1に慣れちゃってるから
C#とかやると少しイラっとするな

433 :デフォルトの名無しさん:2010/12/25(土) 14:22:02
最近はCでも条件式を計算式に埋め込まなくなったな
(三項演算子以外では)

434 :デフォルトの名無しさん:2010/12/25(土) 14:27:21
比較はー比較はーって言ってる奴、頭悪そうに見えるんだが

435 :デフォルトの名無しさん:2010/12/25(土) 15:00:48
C言語に興味あります。
勉強しようと思うのですが
オススメの勉強用の本があれば
教えでいただけないでしょうか?
よろしくお願いします。


436 :デフォルトの名無しさん:2010/12/25(土) 15:01:34
K&R

437 :デフォルトの名無しさん:2010/12/25(土) 15:34:04
明解C

438 : ◆QZaw55cn4c :2010/12/25(土) 15:58:34
>>435
ひとつの本だけで満足しない、と決心すればそれはもうどんな本でもいいから立ち読みしてよさそうな本を今日にでも買ってコンパイラはBorland C++ 5.5 でもすぐにインストールしてれっつごーです
思い立ったが吉日ですわからなかったらここできけばいいもうなにも躊躇することはありません

439 :デフォルトの名無しさん:2010/12/25(土) 16:10:16
Borland C++ Compiler は使うの面倒臭くないか
製品版という事なら別だが、フリーのを意図してんでしょ?
今なら VC++ EE でいいかと

440 :デフォルトの名無しさん:2010/12/25(土) 16:16:05
どの辺が面倒くさいんだろう

441 :デフォルトの名無しさん:2010/12/25(土) 16:26:54
IDEがない
まあその方が教育的という観点もあるかもしれないけど

442 : ◆QZaw55cn4c :2010/12/25(土) 16:29:40
>>435
>>439
ああコンパイラもういんどうずでうごくやつならなんでもいいやLSI-CはちょっとまずいかもしれないけどねそうだねVC++ExpressEditionでもいいやねもうなにも躊躇することはないいけいけどんどん


443 :デフォルトの名無しさん:2010/12/25(土) 16:31:31
bccってデフォCなの?VC++はデフォC++だよね。

444 :デフォルトの名無しさん:2010/12/25(土) 16:32:54
>>441
C言語を始めようとかCPadとか使えるだろ
それに最初は別にIDEなくても問題ないと思うけど、cygwinは勧めないな
仮想マシンにubuntu入れてgcc使った方がマシ

445 :デフォルトの名無しさん:2010/12/25(土) 16:38:52
>>443
拡張子で区別されるがそういう意味ではなくて

446 :デフォルトの名無しさん:2010/12/25(土) 16:50:42
(´・ω・`)C

447 :デフォルトの名無しさん:2010/12/25(土) 17:53:25
書店寄っていくつか見てみます
コンパイラっていうのも調べてみます。
ありがとうございました。


448 :デフォルトの名無しさん:2010/12/25(土) 17:57:39
そしてドラゴンブックを買ってくる447であった

449 :デフォルトの名無しさん:2010/12/25(土) 18:08:20
このご時世、本なんて不要だと思うけどな。標準ライブラリの使い方くらいネットにいくらでも転がってるし。
学習に足りないのはおそらく「お題」だろうが、それも簡単に見付かる。
自分が便利だなと思うものを真似すればいい。最初から全部ではなく部分的にな。

450 :デフォルトの名無しさん:2010/12/25(土) 18:20:21
ググったソースをコピペして500円というビジネス。

451 :デフォルトの名無しさん:2010/12/25(土) 18:25:24
>>449
普段、本とか読まないだろ?

452 :デフォルトの名無しさん:2010/12/25(土) 18:29:53
>>451
なんで?小説みたいな創作物は読むけど。

453 :デフォルトの名無しさん:2010/12/25(土) 18:39:21
大丈夫!Wikipediaの情報だよ!

454 :デフォルトの名無しさん:2010/12/25(土) 18:42:05
小説だってネットにいくらでも転がってる

455 :デフォルトの名無しさん:2010/12/25(土) 18:44:39
Cの勉強しようと思ってコンパイラを探しているのですが
Borland C/C++ CompilerとVisual Studioだとどちらがオススメでしょう
あとCygwinについても教えていただけたらありがたいです

456 :デフォルトの名無しさん:2010/12/25(土) 19:00:15
>>455
個人的にはgcc

457 :デフォルトの名無しさん:2010/12/25(土) 19:19:15
>>455
悪いことは言わん。MinGWにしとけ。
gccの使い方は覚えておいて絶対に損しない。

458 :デフォルトの名無しさん:2010/12/25(土) 19:20:22
Visual Studio はフリーでも統合開発環境(IDE)があるから楽
でも勉強のためコンパイラ直接扱いたいのなら
Borland C/C++ Compiler か gcc (MinGW) を使うのもあり
ただし、後々 C++ もやるなら Borland C/C++ Compiler は古いのでおすすめしない

Cygwin は UNIX のシェルを Windows に移植した「ような雰囲気」の物
gcc もインストール選択したら使える
UNIX/Linux 使った事あるなら薦められるけど
使った事無いならどうだろう?
コンパイルするだけならいいのかな

459 :デフォルトの名無しさん:2010/12/25(土) 19:23:23
C言語を学ぶついでにUNIX系のコマンドラインツールに触れておくのも悪いわけではないし別にいいんじゃない
俺はcygwinおすすめ

460 :デフォルトの名無しさん:2010/12/25(土) 19:32:05
>>459
それだったら仮想でいいからLinux環境作ったほうがマシ。
Cygwinは>>458の言うとおりUNIXもどきでしかない。

461 :デフォルトの名無しさん:2010/12/25(土) 19:33:16
Visual Studioでいい

462 :デフォルトの名無しさん:2010/12/25(土) 19:37:46
>>456-461
ありがとうございます
MinGWかCygwinを使って見ようと思います

463 :デフォルトの名無しさん:2010/12/25(土) 19:40:36
いえいえ

464 :デフォルトの名無しさん:2010/12/25(土) 19:51:32
CygwinでMinGW使ってもいいんだぜ
gcc -mno-cygwin でMinGWが使われる

465 :デフォルトの名無しさん:2010/12/25(土) 20:41:56
Cコンパイラを探してるレベルの人間にCygwinを勧めんなカスどもが

466 :デフォルトの名無しさん:2010/12/25(土) 20:59:04
カスとは失礼な
俺はgccとcygwinを一緒に使い始めたぞ
ある程度の厳しい状況は作るべきだ
そんな事してるから最初が簡単で軟弱なクレクレ君が出てくるんだ


467 :デフォルトの名無しさん:2010/12/25(土) 21:00:32
お前みたいな奴が回答者として一番いらねーんだよ。質問スレで何してんだボケ

468 :デフォルトの名無しさん:2010/12/25(土) 21:01:48
>>455
LSI C-86試食版

469 :デフォルトの名無しさん:2010/12/25(土) 21:02:03
>>455
1.ubuntu10.10のisoをダウンロード
2.CD-Rなどに焼く
3.再起動してCDから起動
4.インストールを選択
5.windowsを残したままインストールする項目をマウスで選択。
6.適当にマウスでボタン押してって質問に答えてインストール開始。

7.再起動して起動メニューからubuntuを選択
8.スタートメニューから端末(コマンドプロンプトのこと)を選択
9.gcc(Cコンパイラーのこと) をインストール
sudo apt-get install gcc

10.kdevelop(エディタのこと)をインストール
sudo apt-get install kdevelop

適当にエディターでプログラムを書いて、適当な名前で保存( aaa.c など)
コンパイル方法
gcc -o aaa aaa.c

そのプログラムを実行する方法
./aaa

余談:ディレクトリの移動は cd ○○、DIRは ls、 ディレクトリの作成は mkdir ○○、 ファイルの削除は rm ○○、 ディレクトリの削除は suro rm ○○ -r
コピーは cp 元 先、 移動は mv 元 先、 名前の変更は mv 元 先、 math.h 入りソースのコンパイルは gcc -lm、 c++のソースのコンパイルは gcc -lstdc++

470 :デフォルトの名無しさん:2010/12/25(土) 21:03:54
そもそも何を基準に勧めればいいのかわからん
規格に準拠してるかどうかか?
C89でいいならVC, BCC, GCC全て準拠しているから導入のしやすさと好みでいいんじゃないの
C99ならgccほぼ一択な気がする

471 :デフォルトの名無しさん:2010/12/25(土) 21:04:42
C99で学習する奴なんているのかよ

472 :デフォルトの名無しさん:2010/12/25(土) 21:06:35
>>467
質問スレだった
反省...

ただなんもググらずに聞いて口開けて待ってる奴もいることは分かってほしい
なんか一回ぐらい難しい解決の経験をしないといけないような気がする

473 : ◆QZaw55cn4c :2010/12/25(土) 21:08:39
>>464
gcc4 からはだめなよう。

474 :デフォルトの名無しさん:2010/12/25(土) 21:12:33
ほっほっ

475 :デフォルトの名無しさん:2010/12/25(土) 21:13:18
趣味であえて面倒くさい方を選ぶなんてアホ
そういう意味では、Cという選択自体が微妙だが

476 :デフォルトの名無しさん:2010/12/25(土) 21:15:56
cygwin使うぐらいならLinux使った方が今後共に楽だよな

477 :デフォルトの名無しさん:2010/12/25(土) 21:19:43
>>475
まあ趣味でアセンブリやるよりはいんじゃねぇかw

478 :デフォルトの名無しさん:2010/12/25(土) 21:37:48
ふっほっ

479 :455:2010/12/25(土) 21:41:19
今までは学校のCentOSで色々やってたんですが
年末年始は使えないんで家のPC(windows)でできたら便利だなと思ってたんですけど
やっぱりLinux環境用意した方がいいんですかね

480 :デフォルトの名無しさん:2010/12/25(土) 21:47:32
別に。Cの開発環境はWindowsで揃う
あと性能が良いPCならVirtualBox+Ubuntuで何でも出来るよ
ネットワークの設定は勝手にやってくれるし、ホストからのコピペとかフォルダの共有も出来る

481 :デフォルトの名無しさん:2010/12/25(土) 22:04:13
c++とかc+1のようにインクリメントした値は変数に格納しなくても
その値は保持されるんですか?

説明がわかりづらいですが解答よろしくおねがいします

482 :デフォルトの名無しさん:2010/12/25(土) 22:05:59
c++はインクリメントした値を変数に格納しますよ
c+1は格納しませんので保持されません

483 :デフォルトの名無しさん:2010/12/25(土) 22:09:27
c++ は c+=1 のシンタックスシュガー
c+=1 は c=c+1 のシンタックスシュガー
c+1 は c+1 を計算してるだけで 変数c は上書きされない

484 :デフォルトの名無しさん:2010/12/25(土) 22:10:43
>>483
x=c++;
x=(c+=1);
違うよね

485 :デフォルトの名無しさん:2010/12/25(土) 22:11:11
なるほど!
ありがと

486 :デフォルトの名無しさん:2010/12/25(土) 22:11:57
++c

487 :デフォルトの名無しさん:2010/12/25(土) 22:15:43
>>484
そうだったなと反省しつつ
c言語で前置と後置の評価順って決められていたっけ?

488 :デフォルトの名無しさん:2010/12/25(土) 22:19:18
はい

489 :デフォルトの名無しさん:2010/12/25(土) 22:33:12
c = 1;
a = c++;  これは aには1が入る

c = 1;
a = ++c;  これは aには2が入る

490 :デフォルトの名無しさん:2010/12/25(土) 23:15:00
〜はシンタックスシュガーとか言う奴に限って知識レベルが中途半端

491 :デフォルトの名無しさん:2010/12/25(土) 23:21:25
なにか問題でも?

492 :デフォルトの名無しさん:2010/12/26(日) 00:06:01
>>491
問題あるから言われてんだろ
中途半端な知識は人を惑わすから書くなカス

493 :デフォルトの名無しさん:2010/12/26(日) 00:30:58
シンタックスシュガーなんて言い方したばっかりに、粘着の対象にされてるわろたwww


494 :デフォルトの名無しさん:2010/12/26(日) 00:34:06
>>493
アホか

495 :デフォルトの名無しさん:2010/12/26(日) 00:52:51
え?

496 :デフォルトの名無しさん:2010/12/26(日) 00:57:50
シンタックスシュガーに噛み付く奴w

497 :デフォルトの名無しさん:2010/12/26(日) 01:18:37
シンタックス・シュガー氏

498 :デフォルトの名無しさん:2010/12/26(日) 01:30:28
K&Rは後置インクリメント/デクリメントの優先順位が間違っていて困るのは最新版で修正されたの?

499 :デフォルトの名無しさん:2010/12/26(日) 01:33:43
c++は前置は+1されてから評価され後置は評価されてから+1されるけど
c言語はそういう規定が無いから注意しろって言われた気がするんだがなぁ

500 :デフォルトの名無しさん:2010/12/26(日) 01:47:29
んなわけあるかい^^
Cではただインクリメントを行うだけの時のコストが一緒という話じゃないのか?
C++ではPOD型でないとき後置は前置よりもコストがかかる(ことがある)。

501 :デフォルトの名無しさん:2010/12/26(日) 01:57:06
PODのコストってなんだよw

502 :デフォルトの名無しさん:2010/12/26(日) 02:05:57
知識の最高到達点、ギリギリ知ってる語彙で戦うのが2ちゃんねる

503 :デフォルトの名無しさん:2010/12/26(日) 02:09:51
Cで評価順が規定されてないってほんと?

504 :500:2010/12/26(日) 02:25:54
ありゃま。インクリメントのコストがわからない人がいたか。
C++ Coding Standards 第28章 参照ね^^

505 :500:2010/12/26(日) 02:32:06
>>503
Cで評価順が規定されないのは「演算子の非演算数に対する評価順序」。
>>499の言ってることとは無関係。



506 :デフォルトの名無しさん:2010/12/26(日) 02:41:31
馬鹿ばっか^^

507 :デフォルトの名無しさん:2010/12/26(日) 02:48:27
ほんとばかばっか^^

508 :デフォルトの名無しさん:2010/12/26(日) 02:49:41
俺以外全部馬鹿

509 :デフォルトの名無しさん:2010/12/26(日) 02:50:23
バカ祭り^^

510 :デフォルトの名無しさん:2010/12/26(日) 02:58:20
今夜も強烈なの

511 :デフォルトの名無しさん:2010/12/26(日) 03:11:47
Cで2進数から16進数の変換をビット演算使ってやる方法教えてください。

512 :デフォルトの名無しさん:2010/12/26(日) 03:49:30
その質問の言い方だといくつかの意味に取ることが出来るのは気づいてるのかな
そのうちのひとつは有名でFAQにすら挙げられてる
http://www.kouno.jp/home/c_faq/c20.html#10

これであればはっきり言ってクソミソに言われバカにされるのがオチ(実際、>>511のような書き方するくらい
だからアタマ悪いんだろうなと思う)なので、質問の求めてる内容がこれでないなら質問をもっと的確に書くといい

513 :デフォルトの名無しさん:2010/12/26(日) 03:52:15
質問者がバカなのはしょうがないけど
回答者もバカだからなぁ、ここ。

514 :デフォルトの名無しさん:2010/12/26(日) 04:48:54
>>512
これであれば、がどこにかかるかわからないんだけど、ちゃんと自分が貼ってあるリンク先読んだ?

515 :デフォルトの名無しさん:2010/12/26(日) 09:43:39
>>511
変換って何さ?16進数として表示したいってことか?
やりたいことが伝わらないから皆答えようがないんだよ。
断片でもいいからソースを示せ。

516 :デフォルトの名無しさん:2010/12/26(日) 10:12:54
>>511
char bin[] = "011101101101"
unsigned int hex = 0;

for(char* p = bin; p; p++){
if(p == '0') hex = hex << 1;
else if(p == '1') hex = hex << 1 + 1;
else exit(0); // detect invalid character
}

printf("(bin)%s = 0x%x\n", bin, hex);

517 : [―{}@{}@{}-] デフォルトの名無しさん:2010/12/26(日) 12:44:47
これって無限ループにならないんだな。ハマッたぜksg
do{
  puts("hello");
  continue;
} while(0);


518 :デフォルトの名無しさん:2010/12/26(日) 12:57:05
while(1)に修正してみろ。コンパイラ持ってないが俺の脳内はコンパイラより賢い

519 :デフォルトの名無しさん:2010/12/26(日) 13:00:04
>>518
そういう話じゃないだろ。

520 :デフォルトの名無しさん:2010/12/26(日) 13:19:09
ワロタ

521 :デフォルトの名無しさん:2010/12/26(日) 13:20:22
continue; はループの先頭に戻るんじゃないと聞いて驚く奴は沢山見たが
実際にそれにはまったやつを見るのは初めてだ。

522 :デフォルトの名無しさん:2010/12/26(日) 13:22:27
do〜whileをちゃんと使える男の人ってかっこいい

523 :デフォルトの名無しさん:2010/12/26(日) 13:25:57
do while()とcontinueを組み合わせて使ったことがないんで、
いざ「どう動く?」とか言われても即答できない。

524 :デフォルトの名無しさん:2010/12/26(日) 13:31:09
それcontinueを分かってないだけだろ。。

525 :デフォルトの名無しさん:2010/12/26(日) 13:50:02
クスクス

526 :デフォルトの名無しさん:2010/12/26(日) 13:51:39
>>525
もうそれは許してやれよ、あの子は声優じゃないから仕方ない

527 :デフォルトの名無しさん:2010/12/26(日) 13:51:40
なにがおかしいんや!

528 :デフォルトの名無しさん:2010/12/26(日) 14:23:02
俺もこれは知らなかった

529 :デフォルトの名無しさん:2010/12/26(日) 14:25:10
もともと do{ }while() をほとんど使わないから。
どうでもいい気はする

530 :デフォルトの名無しさん:2010/12/26(日) 14:37:16
空のループをどう書くべきかしばしば悩むことがあった。
文法的には
for (〜; 〜; 〜);
と書けばいいのだが、セミコロンを見逃しやすい。
for (〜; 〜; 〜)
 ;
これもなんだか微妙。
しかし今さっき思いついた。こう書けばいいのではないか?
for (〜; 〜; 〜)
 continue;

531 :デフォルトの名無しさん:2010/12/26(日) 14:48:12
>>529
do{ }while(0)は結構見かけるよ

532 :デフォルトの名無しさん:2010/12/26(日) 14:49:19
くだらん
空の波括弧を置くよりも下策ばかり並べて何を悩んでんだ

533 :デフォルトの名無しさん:2010/12/26(日) 15:01:09
Cじゃないが空のブロックは警告されるんだ
だからブロック化してもやっぱり中に何か書かなくちゃいけないんだ
それで習慣になってCやるときも空のブロックはなんか気持ち悪くて避けてるんだ
まぁ警告OFFにすればいいだけなんだけど警告は全部ONにするものっていう刷り込みがあって・・・

534 :デフォルトの名無しさん:2010/12/26(日) 15:02:36
空のブロックなら>>530の二番目がいいだろ。


535 :デフォルトの名無しさん:2010/12/26(日) 15:02:48
>>530
俺は真ん中の書き方かな

536 :デフォルトの名無しさん:2010/12/26(日) 15:16:38
みんなセミコロンが空中に浮いててもあんまり違和感ないのか・・・なるほど、参考にする

537 :デフォルトの名無しさん:2010/12/26(日) 15:20:28
>>533
何の言語か知らないけど、
ブロック中にコメント書いても警告されるの?

538 :デフォルトの名無しさん:2010/12/26(日) 15:22:47
>>536
一番上の書き方されると、かなり紛らわしいから嫌だな
forの次行に空セミコロンは、一見してforで値を回しているんだなぁって思えるから
俺は別に違和感ないな

539 :デフォルトの名無しさん:2010/12/26(日) 15:29:44
インクリメント部を外に出すとか

540 :デフォルトの名無しさん:2010/12/26(日) 15:40:22
for (〜; 〜; 〜) {
}

素朴に書けばいいじゃない

541 :デフォルトの名無しさん:2010/12/26(日) 15:46:32
空ブロックは変だろ。

542 :デフォルトの名無しさん:2010/12/26(日) 15:51:27
質問です
Hoge(int (*dat)[][2])

 …

上の関数をコールする場合のパラメーターってどう書くんですか?

int *d[4][2];
Hoge(d);

これではエラーになってしまう。ちなみにVSC++2008使用です。



543 :デフォルトの名無しさん:2010/12/26(日) 15:52:18
void foo(){}
for(;;){}

合わせたほうが好み

544 :デフォルトの名無しさん:2010/12/26(日) 15:59:08
int d[4][2];
foo(&d);
かな?

545 : ◆QZaw55cn4c :2010/12/26(日) 16:03:11
>>542
#include <stdio.h>
void f(int(*dat)[][2]){
}
int main() {
int array[3][2] = {
{1, 2}, {3, 4}, {5, 6}
};
f(&array);
return 0;
}

546 :デフォルトの名無しさん:2010/12/26(日) 16:08:01
>>544
void Hoge(int (*dat)[][2])
{
(*dat)[0][1] = 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int d[4][2];
Hoge(&d);
return 0;
}
でエラー
.\test-090.cpp(13) : error C2664: 'Hoge' : 1 番目の引数を 'int (*)[4][2]' から 'int (*)[][2]' に
変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは
関数スタイルのキャストが必要です。
他にエラーはなし。

547 :デフォルトの名無しさん:2010/12/26(日) 16:11:37
>>545
#include <stdio.h>
void Hoge(int (*dat)[][2])
{
(*dat)[0][1] = 1;
}
int main()
{
int array[3][2] = { {1, 2}, {3, 4}, {5, 6} };
Hoge(&array);
return 0;
}
でワーニングエラーでした。
.\test-090.c(12) : warning C4048: 'int (*)[][2]' と 'int (*)[3][2]' で配列の添字が異なります。


548 :デフォルトの名無しさん:2010/12/26(日) 16:13:34
void Hoge(int (*dat)[][2])

void Hoge(int (*dat)[3][2])
と入れれば、ワーニングも消えました。
上の書式は、ワーニングなしではいけない?

549 :デフォルトの名無しさん:2010/12/26(日) 16:18:33
gccだと>>547でも警告でないけど。

550 :デフォルトの名無しさん:2010/12/26(日) 16:19:00
>>547
VC2010では
#include <stdio.h>

void Hoge(int (*dat)[4][2])
{
(*dat)[0][1] = 1;
}
int main(void)
{
int d[4][2];
Hoge(&d);

printf("%d", d[0][1]);

return 0;
}

としないと警告が出るな

551 :デフォルトの名無しさん:2010/12/26(日) 16:22:22
>>549-550
そうすると、元々の例題ソースがgccだったんですね。たぶん。
ありがとうございました。勉強になりました。

552 : ◆QZaw55cn4c :2010/12/26(日) 16:26:31
>>548
多次元配列の次元指定のうち最大のものは、配列のアクセス場所を特定する演算では使用しなくても問題ないので、
void f(int (*a)[][3][4][5]);
はありだと思うのですが、msvc は丁寧に警告してくれるのですね。
警告が気になるのなら、プログラムと相談して、
void f(int (*a)[10][3][4][5]);
とするのもいいかと思います。
なお、gcc や borland c では警告はでませんでした。

553 :デフォルトの名無しさん:2010/12/26(日) 16:32:22
void f(int a[][3][4][5]);
void f(int (*a)[3][4][5]);
それはこういうときだろ?

void f(int (*a)[][3][4][5]);
じゃ指定なしじゃどう考えてもまずいだろ
なんで必要ないのかちゃんと考えろボケ

554 :デフォルトの名無しさん:2010/12/26(日) 16:34:48
void Hoge(int (*a)[][3][4][5])
は通るけど
void Hoge(int a[][][3][4][5])
は通らないんだな・・・興味深い

555 :デフォルトの名無しさん:2010/12/26(日) 16:36:36
bccだと上も通らない

556 : ◆QZaw55cn4c :2010/12/26(日) 17:02:33
>>553
もうしわけない。
>void f(int (*a)[][3][4][5]);
>じゃ指定なしじゃどう考えてもまずいだろ
が理解できません。よろしければぜひ。

なお私の考えは >>552 に示しました。

557 :デフォルトの名無しさん:2010/12/26(日) 17:07:40
>>552
gcc -ansi -Wall
で警告が出ないなら問題ないよ

558 :デフォルトの名無しさん:2010/12/26(日) 17:46:08
int型関数の場合main()に値を返すことができますよね
main()をint型で作ってreturn(0),return(1),return(-1)を返すと
どうなるんですか

559 :デフォルトの名無しさん:2010/12/26(日) 17:54:01
>>558
プログラムそのものが返す、正常終了したかどうかの値として使われるという感じ

560 :デフォルトの名無しさん:2010/12/26(日) 18:03:23
@int main(int argc, char *argv[])
Aint main(void)
Bint main()
Cvoid main(void)
Dvoid main()

ANSI C89として間違ってるやつを教えてください
出来れば理由も込みで…

561 :デフォルトの名無しさん:2010/12/26(日) 18:11:08
C89なら処理系で定義されてればどんなのでも許される

562 :デフォルトの名無しさん:2010/12/26(日) 18:21:38
>>560
C89は前のCの亜流を統一したような規格なので大抵の書き方は許してしまう

563 :デフォルトの名無しさん:2010/12/26(日) 18:24:43
何でCだと空を意味するのをvoidにしたんだろ
emptyじゃダメだったのけ?

564 :デフォルトの名無しさん:2010/12/26(日) 18:29:51
雰囲気的には
emptyは、何かあったものが空になったと言うイメージがある。
voidは、もともと空、もともと無いと言うイメージがある。
voidの方が合ってる気はする。

565 :デフォルトの名無しさん:2010/12/26(日) 18:54:59
ω・`)ぷ〜

566 :デフォルトの名無しさん:2010/12/26(日) 19:00:47
>>564
NULLほど

567 :デフォルトの名無しさん:2010/12/26(日) 19:33:24
>>563
理想的には何も書かない無言であるべきだったが
それだと K&R と互換性が保てないのでやむを得ず新設したプレースホルダー

568 :デフォルトの名無しさん:2010/12/26(日) 19:53:06
>>560
明確に規格で定義されてるのは1と2

569 :デフォルトの名無しさん:2010/12/26(日) 20:47:57
void main(int ac, char** av)
当方アマチュアなのでもっぱらこれか
void main()
これだわ。
ラクだし。

570 :デフォルトの名無しさん:2010/12/26(日) 20:50:05
まぁいいんじゃない
どうせ終了コードなんて滅多に使われない

571 :デフォルトの名無しさん:2010/12/26(日) 21:04:11
>>569
タイプ量を数個減らすために警告出すほうが気持ち悪い。


572 :デフォルトの名無しさん:2010/12/26(日) 22:30:51
>>533
gccでのコンパイルオプションになにを指定しているのか教えてほしいw

573 :デフォルトの名無しさん:2010/12/26(日) 22:50:14
C#の質問はここでいいですよね?

574 :デフォルトの名無しさん:2010/12/26(日) 22:51:46
シャラープ(#)

575 :デフォルトの名無しさん:2010/12/26(日) 23:05:25
すいませんC言語以前の段階で詰まってるので助けてください

http://www.kazamiya.net/svm/svm-light_install.html


上の手順でmakeをしてコンパイルしろという部分があるのですが、
'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出ます。色々と調べたら恐らくパスが通ってないってのが原因なのはわかるん
ですが、具体的にどこのパスを通せばいいのかがわかりません。
よろしくお願いします

576 :575:2010/12/26(日) 23:07:23
ちなみにvisual c++は入れてあるのですが、これを使ってコンパイルするやり方も
よくわからなかったのでできれば教えていただけると嬉しいです

577 :デフォルトの名無しさん:2010/12/26(日) 23:08:42
>>575
UNIX/Linux でやれとしか
Windows でどうしてもやりたいなら Cygwin をインストールしてそこでやるべし

578 :デフォルトの名無しさん:2010/12/26(日) 23:09:37
>>577
MacOSXでもできるよ!多分

579 :575:2010/12/26(日) 23:10:32
え、そうなんですか!?
Cygwinも入ってるには入ってるんですが。
ちなみにどこを見てunixでやった方がいいと判断されたのですか?

580 :デフォルトの名無しさん:2010/12/26(日) 23:12:15
Makefileって知ってる?

581 :デフォルトの名無しさん:2010/12/26(日) 23:14:41
>>560
ttp://www.kijineko.co.jp/tech/superstitions/void-main.html

従って、1、2は規格合致、3は処理系定義されていれば規格合致、4、5は規格違反
C++でも同様

C99なら4、5も処理系定義されていれば規格合致だが、
C99はmainでreturn 0;を省略できるのでvoidにするメリット0

582 :デフォルトの名無しさん:2010/12/26(日) 23:15:47
>>579
使ってるコマンド

583 :デフォルトの名無しさん:2010/12/26(日) 23:17:59
Cygwin外からも使えるようにしたければMinGW使ってコンパイルすればいい
-mno-cygwinオプションつけてコンパイルすればMinGW使ってくれる

584 :デフォルトの名無しさん:2010/12/26(日) 23:20:49
UbuntuとWindowsでデュアルブートする方法お願いします

585 :デフォルトの名無しさん:2010/12/26(日) 23:21:09
ソフト自体はWindows版も提供されてるからその必要はないと思うけどな

586 :575:2010/12/26(日) 23:25:30
>>580
聞いたことはあるんですが設定の仕方とかわかりません

>>582
そうなんですか、今日一日windowsでやろうとしてたのにorz

>>583
makeのあとにそれをつけるんですか?

587 :デフォルトの名無しさん:2010/12/26(日) 23:29:05
>>585
そうなんですか。
どうもありがとう!

588 :デフォルトの名無しさん:2010/12/26(日) 23:30:16
>>585
普通にWindows版バイナリがあるなw
ttp://download.joachims.org/svm_light/current/svm_light_windows.zip

589 :575:2010/12/26(日) 23:34:24
>>588
おおおおおおおおお!!!!
ありがとうございます!多分それで解決したのかもしれません。
12時間ぐらいかかってたのですがようやく使えそうです。ありがとうございました

590 :デフォルトの名無しさん:2010/12/26(日) 23:36:46
UbuntuとかGUIが充実し過ぎててわざわざ使う意味ないな。

591 :デフォルトの名無しさん:2010/12/26(日) 23:36:46
あぁ〜、逆にね

592 :デフォルトの名無しさん:2010/12/26(日) 23:51:03
たしかに、開発用途だとGUI関連はぽんぽんアンインストールしてるな。

593 :デフォルトの名無しさん:2010/12/26(日) 23:51:55
あぁ〜、逆にね

594 :デフォルトの名無しさん:2010/12/26(日) 23:53:40
だったらubuntuなんてハイカラなもん使わずに最初からFreeBSDで良くね^^;

595 :デフォルトの名無しさん:2010/12/27(月) 00:06:18
Ubuntuはインストールの仕方がわからないからだめ
時代はCygwinだよ

596 :デフォルトの名無しさん:2010/12/27(月) 00:09:23
CD-Rに入れるだけだろw

597 : ◆QZaw55cn4c :2010/12/27(月) 00:19:28
>>581
C99 での話です。
>>560 のBは、JIS X3010:2003 6.7.5.3 によれば、
関数定義の一部である関数宣言子で識別子並びが空の場合、関数が仮引数をもたないことを指定する
とあり、JIS X3010:2003 5.1.2.2.1
一、上に掲げた二つの方法のいずれかと等価な方法
に該当するので、Bは無条件に規格合致です。

598 : ◆QZaw55cn4c :2010/12/27(月) 00:22:57
>>575
VC++ Express Edition ならば、Visual Studio Tool のなかに、コマンドプロンプトがあり、
これを起動すれば nmake が使えます。make も使えますが、unix の make に近いのは nmake のほう。(昔からそうだった。)
このVC の設定をしたコマンドプロンプトは工夫すれば cygwin の bash を起動させることができ、便利に使えます。

599 :デフォルトの名無しさん:2010/12/27(月) 00:47:39
>>595
cygwin勧めてるのがこんなレベルの人間だと思われたら困る
Unix,Linuxを使いこなしてる人間がcygwinを勧めてるはず

600 :デフォルトの名無しさん:2010/12/27(月) 00:52:30
Windowsでフリーで“使える”コンパイラが無かった時代はcygwinを学校などで使う理由はあったが
今はいらない子だよ

601 :デフォルトの名無しさん:2010/12/27(月) 00:54:28
今cygwinを使うとしたら Xサーバー として使うのが有力だろう

602 :デフォルトの名無しさん:2010/12/27(月) 00:58:13
デカいIDEはいらないからVC++はオーバースペックすぎるし
unixコマンド使いたいからcygwin+gcc入れて使ってます

603 :575:2010/12/27(月) 01:05:22
>>598
ありがとうございます。
わからないことだらけすぎて質問がし辛いのでもうちょっと勉強してから
また質問しに来させてください。

みなさん丁寧に教えていただいてありがとうございました。

604 :デフォルトの名無しさん:2010/12/27(月) 01:13:29
cygwinのviがショボいんだが

605 :デフォルトの名無しさん:2010/12/27(月) 01:19:53
禿同
どうにかならないもんかなぁ

606 :デフォルトの名無しさん:2010/12/27(月) 02:48:02
初めてC言語をコンパイラすることを
CEXの初体験と言うと聞いたのですが本当ですか?
お前はまだCTだって言われたんですがどういう意味ですか?


607 :デフォルトの名無しさん:2010/12/27(月) 07:43:08
今どんな気持ち?

608 :デフォルトの名無しさん:2010/12/27(月) 08:35:59
viがうまく使いこなせない

609 :デフォルトの名無しさん:2010/12/27(月) 14:58:16
ほっほっ

610 :デフォルトの名無しさん:2010/12/27(月) 15:20:17
>>598
Windows版のバイナリ使うことで結論でてないか?

611 :デフォルトの名無しさん:2010/12/27(月) 15:22:59
>>604-605
vim7.2 enhancedが提供されてそうに見えたけど、だめかい?

612 :デフォルトの名無しさん:2010/12/27(月) 15:28:14
だめ!!!!!

613 :デフォルトの名無しさん:2010/12/27(月) 15:42:22
そんな7.3すごいの?

614 :デフォルトの名無しさん:2010/12/27(月) 16:29:25
モードを芯柱にしたUI設計なんて前世紀の遺物だし今更使い始めても慣れられないのも当たり前だよ

615 :デフォルトの名無しさん:2010/12/27(月) 16:36:13
慣れてなさそうなのを明言しているのは>>608ぐらいだと思うけど、どうした

616 :デフォルトの名無しさん:2010/12/27(月) 17:08:52
時代はCUI

617 :デフォルトの名無しさん:2010/12/27(月) 17:16:44
scanfを使って数字を入力するとストリームに改行が残ってしまって次のfgetsで改行を食べてしまうのですが一般的に数字を入力する時はどのような関数を使っているんでしょうか?

618 :デフォルトの名無しさん:2010/12/27(月) 17:28:32
年に何度も出る質問だね

619 :デフォルトの名無しさん:2010/12/27(月) 17:29:00
fgets→sscanfが結構メジャーな流れです

620 :デフォルトの名無しさん:2010/12/27(月) 20:25:39
>fgetsで改行を食べてしまうのですが
fgetsは関数だ。改行は食い物じゃない。俺おかしなこといってるか?

621 :デフォルトの名無しさん:2010/12/27(月) 20:27:10
とりあえずfflushでどこかに吐き出すといいよ

622 :デフォルトの名無しさん:2010/12/27(月) 20:34:02
windowsでS-Jis(char)を、EUC-jp(wchar_t)に変換する方法ありますか。
EUCかつ一文字が2バイトにしたいです。扱いやすいため。

623 : ◆QZaw55cn4c :2010/12/27(月) 20:34:18
>>621
fflush() は入力ストリームには使えない。

>>617
>>619

624 :622:2010/12/27(月) 20:35:39
age
正確に言うと、char文字列をwchar_t文字列にする事です。

625 :デフォルトの名無しさん:2010/12/27(月) 20:38:22
ふっほっ

626 :622:2010/12/27(月) 20:38:47
Sjis(char)をメモリ上の配置気にせずEUC(wchar_t)へ変換したらいいですか。
Sjis(char)→EUC(char)変換→EUC(wchar_t)そのままコピーする。

627 :617:2010/12/27(月) 20:49:55
お礼の返事遅れましたが回答頂きありがとうございました!
fgets,sscanfを使うようにします。

628 :デフォルトの名無しさん:2010/12/27(月) 20:51:29
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html

629 :デフォルトの名無しさん:2010/12/27(月) 20:52:18
何かいてるのかさっぱりわからんがとりあえずここコピペすれば変換ばっちりでつ

630 :デフォルトの名無しさん:2010/12/27(月) 20:52:54
どぴゅっどぴゅっ

631 :デフォルトの名無しさん:2010/12/28(火) 01:16:45
なんか参考書が難しくてプログラムの動作に追いつけないんだけど
ソース眺めてるだけでわかるもんなの なんかいい方法ないですか?

632 :デフォルトの名無しさん:2010/12/28(火) 01:23:17
手を動かせ

633 :デフォルトの名無しさん:2010/12/28(火) 01:24:01
制御・変数・関数について概念と構文を把握する
参考書を捨てて作りたいものを試行錯誤しながら作り上げる
アルゴリズムを勉強して↑のコードを書き直す
参考書を買って読む

634 :デフォルトの名無しさん:2010/12/28(火) 01:26:13
>>631
ソース眺めてるだけでもわかるけど、実際にソースを色々変えてコンパイルしたほうが理解は早いよ。

635 :デフォルトの名無しさん:2010/12/28(火) 01:36:29
プログラマーって左利き多くね?
俺右利きおわた・・・

636 :デフォルトの名無しさん:2010/12/28(火) 01:41:21
>>635
右手をへし折ればいいんじゃね

637 :デフォルトの名無しさん:2010/12/28(火) 02:10:22
ちょっと確認いいですか
#include<stdio.h>
#include<stdlib.h>
#include<string.h>


main(int ac,char **av)
{
printf("%s\n",*av);
while(--ac>0&&**++av=='-'){
return(1);
}
printf("%s\n",(*av));
printf("%s\n",(*(av++))); ←この部分
}


ちょっと動作確認してたんですが 最後のprintfの出力はインクリ前の値が
出力されるみたいです。
これ他の関数の場合でも渡してからインクリするんですか

638 :デフォルトの名無しさん:2010/12/28(火) 02:15:54
>>637
副作用完了点 でぐぐれ

av++;の副作用完了点は;の直前
つまりavの値を返してからセミコロンに行くまでの間のどこかでインクリメントされる

++av;だったらインクリメントした値を返す

639 :デフォルトの名無しさん:2010/12/28(火) 03:02:41
副作用完了点 でぐぐるまでもない

640 :デフォルトの名無しさん:2010/12/28(火) 04:20:32
>副作用完了点
教科書とかに頼らない独学だとこういった固有名詞を知らないことが多いよね


641 :デフォルトの名無しさん:2010/12/28(火) 05:16:26
C言語でタブーサーチによる実装を心がけてるんですが、
どこかにソースとかってありませんか?

よろしくお願いします

642 :デフォルトの名無しさん:2010/12/28(火) 07:40:20
>>641
つ[google]

643 :デフォルトの名無しさん:2010/12/28(火) 08:13:45
>>431
エディタをカスタマイズする。
強調キーワードとか色付けとか工夫しとけ
まさかメモ帳でやっとるわけないよなぁ

644 :デフォルトの名無しさん:2010/12/28(火) 08:16:43
アンカミス >>631

645 :デフォルトの名無しさん:2010/12/28(火) 10:26:09
>>640
教科書三冊読んだけど初めて見ました^^

646 :デフォルトの名無しさん:2010/12/28(火) 15:13:57
みんなもっと>>640をおうえんしよう!

647 :デフォルトの名無しさん:2010/12/28(火) 16:05:23
a[i++] = i; と あからさま な奴や
a[i++] = *p;  /* p = &i */ と ワンクッションかかってる奴
稀に古い書物で出てたりするから危ないんだよな…

648 :デフォルトの名無しさん:2010/12/28(火) 16:57:58
______________________________________
|                                        ノ´⌒ヽ,,           |
|                                    γ⌒´      ヽ,           |
| 以下                              // ""⌒⌒\  )          |
| ミンシュトー創設者                           i /   \  / ヽ )             |
| ルゥピー・ウェールズからの                   !゙   (・ )` ´( ・) i/          |
| メッセージをお読みください                 |     (__人_)  |          |
|                                   \    `ー'  /.            |
|                                  ハ',::ヽ      ハ、.            |
|                               ,,、-'´ |\`ヾ::::::::::::ィ  / | ``ヽ─-、.  |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

649 :デフォルトの名無しさん:2010/12/28(火) 17:49:05
やーだお(´・ω・`)

650 :デフォルトの名無しさん:2010/12/28(火) 17:49:55
ちょいと疑問に思った事なんですが、
何でforのループとかって「i,j,k,l,m,n」辺りがよく使われるの?

「i」が「iterate」の頭から来てるのは何となく分かるんだけど、
その他って何か理由があったりするの?

651 :デフォルトの名無しさん:2010/12/28(火) 17:51:26
>>638
副作用完了点は関係ないな

652 :デフォルトの名無しさん:2010/12/28(火) 18:49:02
関係ないよ(キリッ

653 :デフォルトの名無しさん:2010/12/28(火) 18:51:10
>>650
FORTRAN 訛り

654 :デフォルトの名無しさん:2010/12/28(火) 19:12:15
関係ないよ(キリッ(キリッ

655 :デフォルトの名無しさん:2010/12/28(火) 19:18:26
>>650
iはintegerのi

656 :デフォルトの名無しさん:2010/12/28(火) 19:19:11
iterateなんてC++以前は全然使われてなかった
k,n辺りは数学で使われてたΣとかで
FORTRANの暗黙で整数型はintegerから来てるんじゃないかな

657 :デフォルトの名無しさん:2010/12/28(火) 19:19:20
iはindexのiではないか?数学で、要素の一時的な添字は慣習的に、i,j,kなどを使うので
それに倣ったんじゃないか。

658 :デフォルトの名無しさん:2010/12/28(火) 21:06:39
すいません。
あるRGB値のテーブルが定義されていて、
0xffffff
0x888888
0x444444
0x123456

ある任意のRGB値が与えられた場合に、
テーブルの中から最も近い色のRGBを取り出す、
ということをやりたいのですが、どういう比較をすればいいでしょうか。

659 :デフォルトの名無しさん:2010/12/28(火) 21:19:02
ググったら情報が出てきたわ。
(r1 - r2)^2 + (g1 - g2)^2 + (b1 - b2)^2
を比較すれば良さそうですね
ありがとうございました

660 :デフォルトの名無しさん:2010/12/28(火) 21:21:30
そうとは言えないだろ。色合いが近いって意味でしょ。
距離では人間のみためを正しい表さないとおもう。

661 :デフォルトの名無しさん:2010/12/28(火) 21:48:37
おおう。どうすれば。。

662 :デフォルトの名無しさん:2010/12/28(火) 22:17:18
減色するときに似たようなことやったけどね
そのままじゃベタっとするから拡散すればいい

663 :デフォルトの名無しさん:2010/12/28(火) 22:21:16
用途によるけど、別にRGB空間での距離でも問題ないと思うが。
HSVでもHLSでもLABでもYUVでも好きな色空間に変換してから距離を求めれば?


664 :デフォルトの名無しさん:2010/12/28(火) 23:07:52
LAB 以外は投影モデルが円柱だったり円錐だったりするので
ピュアに距離比較するなら 球に相当する LAB が良いかも?

665 :デフォルトの名無しさん:2010/12/29(水) 01:16:04
最近質問の内容が難しすぎて本当にC言語初心者か?って疑いたくなる
もっと簡単な質問にしてくれよ

666 :デフォルトの名無しさん:2010/12/29(水) 01:35:45
わからないなら黙ってろ

667 :デフォルトの名無しさん:2010/12/29(水) 02:52:43
>>666
お前も分からないなら黙ってろカス

668 :デフォルトの名無しさん:2010/12/29(水) 02:58:54
>>667
お前も分からないなら黙ってろクズ

669 :デフォルトの名無しさん:2010/12/29(水) 04:00:21
for(i = 666; i < 668; i++){
printf(">>%d\nお前も分からないなら黙ってろクズ \n", i);
}

670 :デフォルトの名無しさん:2010/12/29(水) 04:01:14
i < 669 の間違いじゃねえの

671 :デフォルトの名無しさん:2010/12/29(水) 04:40:39
>>665
C言語として難しいことは何もしていないからねぇ。

672 :デフォルトの名無しさん:2010/12/29(水) 10:28:43
>>669
これは恥ずかしい

673 :デフォルトの名無しさん:2010/12/29(水) 14:24:09
このスレ入門者のためのスレだろ。
中級、上級のためのスレってないの?不公平やないか

674 :デフォルトの名無しさん:2010/12/29(水) 15:18:11
ほっほっ

675 :デフォルトの名無しさん:2010/12/29(水) 15:38:07
Windowsのみなさんエディタなに使ってますか?

676 :デフォルトの名無しさん:2010/12/29(水) 15:41:43
秀丸エディタ

677 :デフォルトの名無しさん:2010/12/29(水) 15:43:56
秀丸ってコンパイル出来ないじゃん

678 :デフォルトの名無しさん:2010/12/29(水) 15:45:41
エディタだからいいだろw

679 :デフォルトの名無しさん:2010/12/29(水) 15:52:28
NetBeans

680 :デフォルトの名無しさん:2010/12/29(水) 16:02:14
あぁん?ぷよぷよの悪口か?

681 :デフォルトの名無しさん:2010/12/29(水) 16:08:08
HOLDの甘さ蜂蜜級

682 :デフォルトの名無しさん:2010/12/29(水) 16:11:26
秀丸って拡張子.cのファイル作ってからじゃないとダメなの?

683 :デフォルトの名無しさん:2010/12/29(水) 16:34:38
HOLDの甘さ砂糖級

684 :デフォルトの名無しさん:2010/12/29(水) 16:45:23
最近は専らxyzzyかvimだな。

685 :デフォルトの名無しさん:2010/12/29(水) 19:51:07
あれ?NetBeansだめなのか?

686 :デフォルトの名無しさん:2010/12/29(水) 19:51:54
C言語を始めよう!

687 :デフォルトの名無しさん:2010/12/29(水) 20:50:34
ロシヒカリってなんですか?

688 :デフォルトの名無しさん:2010/12/29(水) 20:57:53
お米

689 :デフォルトの名無しさん:2010/12/29(水) 21:13:49
ロシヒカリなんてあるのか

690 :デフォルトの名無しさん:2010/12/29(水) 21:21:11
なんか力が抜ける響きだな

691 :デフォルトの名無しさん:2010/12/29(水) 22:29:49
ロシヒカリw

692 :デフォルトの名無しさん:2010/12/30(木) 00:12:12
cygwinのエラー張りたいんだけど
ドラッグで範囲選択できない
なんか方法ないですか? 

693 :デフォルトの名無しさん:2010/12/30(木) 00:15:13
パイプでもつかったら?

694 :デフォルトの名無しさん:2010/12/30(木) 00:17:22
>>692
[編集]-[選択範囲]
マウスで範囲選択した後、Enterキーでクリップボードに入るはず

695 :デフォルトの名無しさん:2010/12/30(木) 01:14:20
a.c:28: error: stray ‘\201’ in program
a.c:28: error: stray ‘@’ in program
a.c:28: error: stray ‘\201’ in program
a.c:28: error: stray ‘@’ in program
a.c:28: error: stray ‘\201’ in program
a.c:28: error: stray ‘@’ in program

エラーの一部です @も\201もコードに書いてないはずなんですが
どういう意味のエラーですか

696 :デフォルトの名無しさん:2010/12/30(木) 01:55:36
'\201'は8進数で201、つまり16進数で81
'@'は文字コードにして16進数で40
8140といえばSJISの全角空白

697 :デフォルトの名無しさん:2010/12/30(木) 02:02:54
ありがとう
16進数ででるんですね
でもシフトジスは関係ないですね
81と40はビンゴです、

698 :デフォルトの名無しさん:2010/12/30(木) 02:08:47
何を言っているんだか。

699 :デフォルトの名無しさん:2010/12/30(木) 02:14:48
コンパイラのエラーから察すると 0x81 0x40 という並び文字だ
この並びで意味あるペアといえば SJIS で全角空白
ゆえに ソースは SJIS で開くと 28行目に 全角空白が 3発入っている箇所があるはずだ

インデントの時に全角空白入れてしまった か "が漏れた か

700 :デフォルトの名無しさん:2010/12/30(木) 02:30:52
>>699のみて確認したら全角でした
81,40も#defineで使ってたんですが見当違いのようです。
 
驚嘆しました

701 :デフォルトの名無しさん:2010/12/30(木) 03:40:53
よくあること。
>16進数ででるんですね
これも見当違いであったことに気付いてほしい

702 :デフォルトの名無しさん:2010/12/30(木) 03:42:55
コンパイルエラーを解説する本が出たら売れると思う

703 :デフォルトの名無しさん:2010/12/30(木) 07:33:28
プログラム上でbmpファイルをひとつのフォルダにたくさん保存したいのですが、
例えばbmpファイルを image001.bmp image002.bmp image003.bmp ...
というように順番に自動で保存していく方法を教えてください。
このときにフォルダ内に既にimage002.bmpがある場合はimage003.bmpという名前から保存し始めたいです。

704 :デフォルトの名無しさん:2010/12/30(木) 07:55:13
ループの中で既にそのファイル名がある場合はcontinueすればいいんじゃない?
既にそのファイル名があるかどうかの確認はAPIつかってもいいし
rモードでのfopenが成功するかどうかでもいいし

705 :デフォルトの名無しさん:2010/12/30(木) 08:20:15
コイツラわざとやってるんだろうか?

706 :デフォルトの名無しさん:2010/12/30(木) 11:40:18
$ gcc a.c
/cygdrive/c/Users/mituru/AppData/Local/Temp/cckRIuT4.o:a.c:(.text+0x338): undefi
ned reference to `_fpintf'
collect2: ld returned 1 exit status

なんじゃこりゃあ
解決方法おしえて



707 :デフォルトの名無しさん:2010/12/30(木) 11:42:20
× fpintf
○ fprintf

708 :デフォルトの名無しさん:2010/12/30(木) 12:11:44
英語も読めないのか……


709 :デフォルトの名無しさん:2010/12/30(木) 13:26:19
俺はドイツ人だから英語はちょっと・・・

710 :デフォルトの名無しさん:2010/12/30(木) 13:35:15
ドイツ人は英語できるよ

711 :デフォルトの名無しさん:2010/12/30(木) 13:50:20
英語のできるドイツ人もいる。
英語のできる日本人もいる。

712 :デフォルトの名無しさん:2010/12/30(木) 13:50:36
undefined reference to `_fpintf'を翻訳サイトにかけたら、
「_fpintfへの未定義の参照」とでた。つまり、

「'_fpint'という未定義な命令を参照しているから、定義を見直してください」
ということだろう。



713 :デフォルトの名無しさん:2010/12/30(木) 14:08:14
>>711
無知って怖いよね

714 :デフォルトの名無しさん:2010/12/30(木) 14:32:15
そうだね。

715 :デフォルトの名無しさん:2010/12/30(木) 15:00:10
バッファってC言語の世界では配列とか変数のことをさしてるんですか?
一時的にデータを記憶するものと認識してるんですが、、。
標準関数のリファレンスみてるとストリームやらバッファなど難しい言葉があってわからん

716 :デフォルトの名無しさん:2010/12/30(木) 15:04:38
バッファは文字通り「緩衝」

AからBに何かを移すときに、その間に一時的に保持する緩衝領域。

717 :デフォルトの名無しさん:2010/12/30(木) 15:04:50
>>703
話聞いてたら欲しくなったので自分用に書いた。エロ画像整理に便利かと思って。

標準入力のリストから、ファイルを連番でコピーする。
http://ideone.com/2CKH6

ls や find と組み合わせて使う前提。

テキストファイルでリストを作って
a.jpg
b.jpg
c.jpg
cat list.txt | ./renban newlist
とかでもいい。ようするにファイル名リストの文字列をパイプで流し込めれば、何でもいい。


718 :デフォルトの名無しさん:2010/12/30(木) 15:15:48
>>716
その緩衝領域はプログラマが参照してはいけない領域なんですか。
モニタにどういう値が格納されているかモニタに表示させたい

719 :デフォルトの名無しさん:2010/12/30(木) 15:33:44
長さx=1のベクトルを-90度回転させたところ
xに1.2086-e008
yに0
zに-1
という数値がでて長さが変わってしまいました。
これは計算誤差という奴ですか?
いちおうベクトルの長さを100倍して
x,y,zそれぞれ100で割ってベクトルを正規化するという処理を行うことにしたのですが
普通はどうやるのでしょうか?
ちなみに回転の計算はOpenGLでやりました。

よろしくお願いしますm(_ _)m

720 :デフォルトの名無しさん:2010/12/30(木) 15:48:28
はい、計算誤差というやつです。
普通は無視します。 1 が 1.00000001 になっても大抵どうってことありません。

721 : ◆QZaw55cn4c :2010/12/30(木) 16:41:24
>>719
1.2086-e008 =0.000000012086
ですから、誤差でしょうね。

722 :デフォルトの名無しさん:2010/12/30(木) 17:22:27
コンピュータのくせに計算誤差とか許せんな

723 :デフォルトの名無しさん:2010/12/30(木) 17:28:08
そうだよな、許せんよな
窓から投げ捨てようぜ

724 :デフォルトの名無しさん:2010/12/30(木) 17:29:09
俺の方がよっぽど正確に計算できる

725 :デフォルトの名無しさん:2010/12/30(木) 17:31:21
俺だってできる
遅くてもいいなら

726 :デフォルトの名無しさん:2010/12/30(木) 17:53:40
OpenGLということはfloatで計算しているのかな?
floatなんて、10進数換算で高々7桁しか精度がないから1e-8なら量子化限界以下だ。
その新しいxに1を足してから1を引けば綺麗さっぱり0になるんじゃね?

727 :デフォルトの名無しさん:2010/12/30(木) 18:20:25
double使いやがれ!

728 :デフォルトの名無しさん:2010/12/30(木) 18:41:56
誤差がイヤならBCDライブラリでも作るといい。勉強にもなるし。

729 :デフォルトの名無しさん:2010/12/30(木) 18:45:49
座標データは量が多くなりがちだからfloatにしてるんじゃないの?

730 :デフォルトの名無しさん:2010/12/30(木) 19:00:52
>>728
アホ
BCD でも誤差はなくせん

数学の式をそのまま保持し続けなきゃ無理だよ

731 :デフォルトの名無しさん:2010/12/30(木) 20:56:43
>>730
無限小数みたいな表現不可能な値はどんな方法使っても不可能だが、それ以外はBCDでカバーできる。
もちろん計算も自前で作るのが前提だから、その意味で「ライブラリ」と言っている。

732 :デフォルトの名無しさん:2010/12/30(木) 20:58:50
有理数なら分数で扱えば?

733 :デフォルトの名無しさん:2010/12/30(木) 22:22:45
>>> import math
>>> pow(math.e, 1j * math.pi)
(-1+1.2246467991473532e-16j)

http://www.google.co.jp/search?sourceid=UTF-8&q=e^(%CF%80+*+i)
e^(π * i) = -1

結論:グーグル電卓機能を使った方が良い

734 :デフォルトの名無しさん:2010/12/30(木) 22:24:55
二進化十億進有理数でよろ

735 :デフォルトの名無しさん:2010/12/31(金) 17:32:18
動的メモリと静的メモリ領域って
動的→プログラム実行中に確保
静的→コンパイル時に確保
という違いですか? またfree()しなければいけないのはなぜ?


736 :デフォルトの名無しさん:2010/12/31(金) 18:25:31
>>735
だいたい合ってる。
動的というのは、コンパイル時点でサイズが分からない(変動する)から確保しようがない、ということ。
free()は、長時間常駐するようなアプリじゃないとおそらく必要性が実感できないだろう。

737 :デフォルトの名無しさん:2010/12/31(金) 20:16:01
人が少ないのは大晦日だからですか

738 :デフォルトの名無しさん:2010/12/31(金) 20:23:17
>>735
> またfree()しなければいけないのはなぜ?
どんどんメモリを確保していったら、いずれメモリを使い尽くして空き領域が無くなってしまうから
使い終わった不要な領域はfreeで解放して空き領域に戻しておけば、また使える

739 :デフォルトの名無しさん:2010/12/31(金) 20:27:29
freeしてもすぐに解放されてる訳じゃないけどな

740 :デフォルトの名無しさん:2010/12/31(金) 20:33:08
こまけぇこたぁいいんだよ (AA略

741 :デフォルトの名無しさん:2010/12/31(金) 20:47:39
メモリ消費を気にしないならfreeしたくなかったらしなくてもいい
プログラムが終了すればOSが解放するから他への影響は無い
OSが無かったりOSがメモリ管理する気がないやつだったら別だけど

742 :デフォルトの名無しさん:2010/12/31(金) 23:42:21
int a=741;
return a;

743 :デフォルトの名無しさん:2010/12/31(金) 23:44:48
俺はお前ら底辺と違って富豪的プログラマーだから

744 : 【だん吉】 【1606円】 :2011/01/01(土) 00:07:11
!omikuji!dama

745 : 【豚】 【1171円】 :2011/01/01(土) 00:07:54
基本情報技術者試験に合格できますように。

746 : 【吉】 【1027円】 :2011/01/01(土) 00:31:38
>>745
豚終わったな。俺は基本は前回受かった。次は応用受ける

747 : 【小吉】 【1974円】 :2011/01/01(土) 00:39:33
今年から本気出す

748 :デフォルトの名無しさん:2011/01/01(土) 01:49:33
豚・・・

749 : 【豚】 【346円】 :2011/01/01(土) 02:14:34
基本情報とかまだ大丈夫だろ

750 :デフォルトの名無しさん:2011/01/01(土) 02:20:52
#include<stdio.h>
#define MAX 256

main(){

int count[MAX];
int c;
int i;

for(i=0;i<MAX;i++)
count[i]=0;

while((c=getchar())!=EOF)
count[c]++;
for(i=0;i<MAX;i++)
printf("%d:%d\n",i,count[i]);
}



コンパイルできません cygwinです 
comand not foundになります
アドレスは指定したんですが

751 :デフォルトの名無しさん:2011/01/01(土) 02:22:42
>>750
コンパイラをインストールしていないか
path の設定ができていない

752 :デフォルトの名無しさん:2011/01/01(土) 02:32:02
具体的にどうすればいいですか><

753 : ◆QZaw55cn4c :2011/01/01(土) 03:14:51
>>752
1) cygwin のコマンドラインで which gcc とした結果を教えてください。
2) cygwin のコマンドラインで set とした結果を教えてください。

結果は
タイトルバーのところで右クリック->編集->範囲指定
マウスで範囲指定(左ドラッグ)
タイトルバーのところで右クリック->編集->コピー
でコピペできます。

754 :デフォルトの名無しさん:2011/01/01(土) 03:24:26
ほっほっ

755 :デフォルトの名無しさん:2011/01/01(土) 03:28:09
ふっほっ

756 :デフォルトの名無しさん:2011/01/01(土) 03:39:10
>>750
cygwin をインスコしたときに setup.exe というファイルを実行したはず
(持っていなければ http://www.cygwin.org からゲット)
そいつが表示するウイザードを [次へ>] で進めていくと8ページ目くらいで [Select Packages] というツリーが出る
[All]-[Devel] の中に [gcc-core: C compiler] があって、そこに [Skip] と表示されていたらそれが原因
[Skip] をクリックすると日付っぽい表示に変わる(クリックから表示までラグがある)
この状態にしてから [次へ>] で最後までインスコを済ませれば cc が使えるようになっている

757 :756:2011/01/01(土) 03:40:15
すまん http://www.cygwin.com

758 :デフォルトの名無しさん:2011/01/01(土) 03:45:54
べっぽっ

759 :デフォルトの名無しさん:2011/01/01(土) 04:07:50
どぴゅっどぴゅっ

760 :デフォルトの名無しさん:2011/01/01(土) 04:25:44
初GUIでRPG作ろうと思ってある程度組めたんだけど素材集めで手が止まってしまった

761 :デフォルトの名無しさん:2011/01/01(土) 04:27:09
スレ違い

762 :デフォルトの名無しさん:2011/01/01(土) 04:35:01
すいまえんでした;;

763 :デフォルトの名無しさん:2011/01/01(土) 06:40:32
ほっほっ

764 :デフォルトの名無しさん:2011/01/01(土) 08:04:37
ぬりゅっぷぬりゅっぷ

765 :デフォルトの名無しさん:2011/01/01(土) 10:25:25
ぬるぽっぬるぽっ

766 :デフォルトの名無しさん:2011/01/01(土) 12:51:13
>>753へwhich gccから

$ which gcc
which: no gcc in (/usr/local/bin:/usr/bin:/bin:/cygdrive/c/Program Files/Common
Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Win
dows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Program Files/Softex/OmniPass
:/cygdrive/c/Program Files/pcdNavi/bin:/cygdrive/c/Program Files/Common Files/Ro
xio Shared/10.0/DLLShared/:/cygdrive/c/Program Files/Common Files/Roxio Shared/D
LLShared/:/cygdrive/c/Program Files/Common Files/Ulead Systems/MPEG:/cygdrive/c/
Program Files/Fujitsu/sadata:/cygdrive/c/Program Files/QuickTime/QTSystem/:/cygd
rive/c/Program Files/Windows Live/Shared:/cygdrive/c/Program Files/Microsoft SQL
Server/100/Tools/Binn/:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/B
inn/:征/)

767 :デフォルトの名無しさん:2011/01/01(土) 12:52:10
http://codepad.org/3bPNB3dr

>>753へsetの実行結果↑

768 :デフォルトの名無しさん:2011/01/01(土) 14:47:01
>>753
>>756
コンパイルできました
今年もよろしくお願いします

769 : ◆QZaw55cn4c :2011/01/01(土) 14:55:39
>>766 >>767
ごめなさい。情報は >>766 だけでよかったですね。
そもそも gcc が入っていないようですね。

>>756 が参考になると思います。
http://www.dotup.org/uploda/www.dotup.org1333668.png.html
http://www.dotup.org/uploda/www.dotup.org1333670.png.html

770 :デフォルトの名無しさん:2011/01/01(土) 15:15:03
がめんなさい

771 :デフォルトの名無しさん:2011/01/01(土) 15:20:13
しゅみません

#define hoge hage
とするとhogeをhageと定義するということになりますが、

#define hoge
の一文しかない場合はどういう意味になるんでしょうか?

よく
#ifndef hage
#define hage
〜処理〜
#endif
というような流れでみます。

772 :デフォルトの名無しさん:2011/01/01(土) 15:44:12
何も置換されない
文中にhogehogehogehogeとか書いてもプリプロセッサを通った後
コンパイラが処理する時には無くなっている
置換はしないが、プリプロセッサはhogeというシンボルがある事は記憶するので
#ifdefや#ifndefで判断できる

773 :デフォルトの名無しさん:2011/01/01(土) 15:53:24
#define DEBUG

〜処理〜
#ifdef DEBUG
printf("何かしらの結果");
#endif

774 :デフォルトの名無しさん:2011/01/01(土) 15:58:46
Eオプションで展開後のソースを確認してみるといいよ

775 :771:2011/01/01(土) 16:45:26
すみません。みなさん、おかげさまで大体のことはわかりました。
自分はオブジェクト指向系の言語からきてCにチャレンジしているので
まだまだ、わからないことばかりですが、がんばっていきます。

大体、のことは色々わかりましたので、Eオプションでやってみたり
して調べて見ます。>>773さんのは、デバッグのときに有効な手法なんですね。

色々ためしてやってみます。どうもありがとうございました。



776 :デフォルトの名無しさん:2011/01/01(土) 18:10:22
ほっほっ

777 :デフォルトの名無しさん:2011/01/01(土) 21:50:33
ふっほっ

778 :デフォルトの名無しさん:2011/01/01(土) 22:15:21
ちょww

>ミス日本の候補者は、さまざまな勉強会に参加しない面にも磨きをかけている。

779 :デフォルトの名無しさん:2011/01/02(日) 00:51:49
べっぽっ

780 :デフォルトの名無しさん:2011/01/02(日) 02:52:58
ほっほっ

781 :770:2011/01/02(日) 10:29:27
>>771
オブジェクト指向系の言語とは、例えばどんな?

782 :770:2011/01/02(日) 11:52:03
誤爆しました><

783 :デフォルトの名無しさん:2011/01/02(日) 12:34:12
glibc-2.7のgettimeofday.cを見るとマイクロ秒が入る変数に0Lを
代入しています。
それなのになぜgettimeofday関数はマイクロ秒を取得出来るのでしょうか?
見ているソースコードは./glibc-2.7/sysdeps/posix/gettimeofday.cです。

784 :デフォルトの名無しさん:2011/01/02(日) 12:41:26
そりゃお前(ry

785 :デフォルトの名無しさん:2011/01/02(日) 13:03:02
マイクロ秒が入る変数に0Lを
代入していません。

786 :デフォルトの名無しさん:2011/01/02(日) 13:10:22
たぶん実際に使う関数はそれじゃないんじゃないかな

787 :デフォルトの名無しさん:2011/01/02(日) 14:40:14
16個以下の整数を入力してその平均を求める。
-1が入力された場合はそれまでも数値の平均を求める。
と言ったプログラムなんですが、calcの部分が上手く実行されません。
どの部分が間違っているのでしょうか?

http://codepad.org/q58owKAZ

788 : ◆QZaw55cn4c :2011/01/02(日) 14:47:12
>>787
×*i++
○(*i)++
∵*i++ ≡ *(i++)

あとそのコードでは 16 個全部に値が入ったときに破綻するのでは?

789 :デフォルトの名無しさん:2011/01/02(日) 14:57:23
>>788
++のが*より早いと言うことですね
ありがとうございました。

そして data[*i]!=-1 && *i<16 と改善して16個入力しても上手く実行できるようにしました。
御指摘ありがとうございました。

790 :デフォルトの名無しさん:2011/01/02(日) 16:05:02
え?

791 :デフォルトの名無しさん:2011/01/02(日) 17:35:39
とあるサイトに「strはローカル宣言なので、この関数が終ると同時に開放されてしまいます
したがってこのアドレスを戻った先で使おうとしても内容は保証されません」と書いていました

char *func(val)
int val;
{
char str[512];
sprintf(str,"val = %d",val);
return(str);
}

そこで逆のパターンなのですが、アドレス渡しした変数iのデータは関数funcで確実に保証
されるのでしょうか?
結構使っていると思うのですが…

void main(){

int i=100;
func(&i);

}
void func(int *val){

printf("%d",*val);

}

792 :デフォルトの名無しさん:2011/01/02(日) 17:49:31
何が逆なんだw

793 :デフォルトの名無しさん:2011/01/02(日) 18:03:42
i は main が終わるまでは活きている ただそんだけ

794 :デフォルトの名無しさん:2011/01/02(日) 18:21:41
>>793
なるほど、ありがとうございます。

ではイベントからスレッドへのアドレス渡しの場合はどうなるとおもいますか

void OnButton(){

int i=100;
_beginthread(thread, 0, &i);
return;
}

void thread(void *data){

printf("%d",*(int*)data);
}

この場合、OnButtonイベントからすぐにリターンするので
スレッド内で引数 i は保証されないような気がしますが

795 :デフォルトの名無しさん:2011/01/02(日) 18:30:04
(Windowsだとして) どうなるか不明だと思うよ
OnButton から戻るのが先か
_beginthread で新しく作られたスレッドが呼び出されて終わるのが先か

時間t →
メインスレッド OnButton --- _beginthread --- OnButton からの戻り
               thread() ---- thread からの戻り
                         thread() ---- thread からの戻り
                                          thread() ---- thread からの戻り
何時別スレッドへディスパッチかかるかはわっからん

796 :デフォルトの名無しさん:2011/01/02(日) 18:31:36
てすお

797 :795:2011/01/02(日) 18:45:21
ちょっとずれたけど、意図は伝わるかな?
マルチスレッド環境下で、そういう生命期間の怪しいものは、保障できないものとして考えると良いよ
(だから別スレッドへ渡すものは、生命期間がスレッドよりも確実に長いものを渡す)

スタック追跡したいとかの用途で あえて無茶な呼び出しも考えられるけど…
そんなの特殊すぐる

798 :794:2011/01/02(日) 19:07:22
>>797
返答ありがとうございます。
意図は伝わりました。

今までの話はWindowsを前提にしているのですが
どうなるか不明ということは i は確実に保証されないということですね


いままで気づかなかったのですが、猫でもわかるのページでは
スレッドに値をアドレス渡しする場合にはstatic宣言していました。
今後はスレッドに値を渡すときはstatic宣言するように気をつけます

799 :デフォルトの名無しさん:2011/01/02(日) 20:05:41
こうやって、グローバル変数が増えるのでつねw

800 :デフォルトの名無しさん:2011/01/02(日) 20:19:00
>>799
いつ釣りとかいいだすの?

801 :デフォルトの名無しさん:2011/01/02(日) 20:21:13
マジ釣れたの? 暇人だな

802 :デフォルトの名無しさん:2011/01/02(日) 20:25:38
>>799
VCの_beginthreadで作成したスレッドに確実に値を渡す方法は他にあるのですか?

803 :デフォルトの名無しさん:2011/01/02(日) 20:28:55
>>802
まあ、mallocでヒープメモリー確保して渡す方法もある。
その他にもある。

804 :デフォルトの名無しさん:2011/01/02(日) 20:39:49
>>803
なるほど、確かにmallocだと値は確実に保持されると思いますが
プログラムが遅くならないですか?
他にも方法があるなら教えて欲しいです

805 :デフォルトの名無しさん:2011/01/02(日) 20:54:49
よくよく考えると今作っているプログラムのスレッドにstatic変数を渡すとまずいことが分かりました
今作っているプログラムはボタンを押すとダウンロードスレッドが立ち上がるようにしているのですが
ダウンロードスレッドが一つの場合は問題ないですが、複数のスレッドの場合、static変数にすると
別のスレッドで値が書き換わるように思えてきました。

806 :デフォルトの名無しさん:2011/01/02(日) 21:01:47
>>804
基本的にメモリー管理の問題だ。
メモリーには3つ有る、スタックエリアとグローバル(静的)メモリー、ヒープメモリー
スレッドを使う場合、スタックエリアをデーター渡しにするのはあまり良くない。
(と言うか俺は禁止するがな)
複数スレッドを起動したい場合、スタテックなラベルを使用すると大変だ。
(と言うか複数スレッドにデータ渡しでラベルは、俺なら禁止事項だ)
後は、メモリー管理処理を作って、複数のメモリーブロックを管理する。
その場合、グローバル領域に作ると個数制限が出る。
(最大個数が決まっていればそれでもいい)
ヒープで作れば、個数やメモリー制限が少ない。
メモリー確保は、管理処理から空いてるメモリーブロックを受けるだけなので、スピードは速い。
でもだ、これはあくまでも複数スレッドを管理するときだけで。

「単純スレッドなら、スタック以外何でもいい。」

余分な事だが、スレッド間通信を多用する場合。通信データーのメモリー管理を作ると
後々色々楽になる。
これはあくまでも俺の主観だ。

807 :デフォルトの名無しさん:2011/01/02(日) 21:32:39
>>806
ご説明ありがとうございます。
結局はヒープを確保してスレッドに渡すしかないようですね

メモリー管理処理とは初めて聞いたのですが、JAVAなどのガベージ・コレクタと考えて宜しいのでしょうか

808 :デフォルトの名無しさん:2011/01/02(日) 21:49:14
>>807
いや、単純に固定ブロックのメモリーを幾つかもって使用中や空きの管理。
とても高速に管理するだけ。
これの利点は色々ありすぎて説明が大変になってくるので、パスしたい…のでよろ。

809 :デフォルトの名無しさん:2011/01/02(日) 22:01:45
>>786
ありがとうございます。
どこにあるか分かる方、いないでしょうか。

一応、glibc-2.7ディレクトリ内のgettimeofdayと名がつくファイルを検索したところ
上記の他に
./time/gettimeofday.c
./sysdeps/posix/gettimeofday.c
./sysdeps/unix/sysv/linux/x86_64/gettimeofday.S
./sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
./sysdeps/unix/sysv/linux/alpha/gettimeofday.S
./sysdeps/mach/gettimeofday.c
と出ました。
intelの64ビットCPUを使っていて、OSは32ビットのもの、なおかつ一番上はエラーを返すだけなので
./sysdeps/posix/gettimeofday.c
./sysdeps/unix/sysv/linux/x86_64/gettimeofday.S
の2つに絞って読みましたが(OSは32ビットなのでx86_64はないと思いますが・・)
上記は先ほど説明したとおり、
下記は64ビット命令のため、知識がほとんどなく、調べても読むことが出来ませんでした。
またgrepでも検索をしましたがそれらしきものを見つけることは出来ませんでした。

810 :デフォルトの名無しさん:2011/01/02(日) 22:44:49
us単位なんて出るわけないだろ
時間関係の関数は全てカーネルのタイマ割込み間隔に依存する
4msぐらいじゃなかったか

811 :デフォルトの名無しさん:2011/01/02(日) 22:51:20
ほっほっ

812 :デフォルトの名無しさん:2011/01/02(日) 23:38:51
ふっほっ

813 :デフォルトの名無しさん:2011/01/02(日) 23:41:16
sysdeps/unix/syscalls.listから自動生成されるんじゃないかなぁ
なんにせよカーネルのgettimeofdayを呼ぶだけだと思うよ

814 :デフォルトの名無しさん:2011/01/03(月) 00:33:53
13 : ななしのよっしん :2010/05/11(火) 00:02:40 ID: c9tRC0XT4j
何お前ら佐倉紗織ディスってんのか
そんな空耳なんか書き込んで楽しいの?
そもそも椅子取りなんか聞こえないが
ファンとしてはマジイライラするわ
マジ氏ね

14 : ななしのよっしん :2010/05/11(火) 00:09:45 ID: NxfYIO7cl1
>>13






・・・?

16 : ななしのよっしん :2010/05/26(水) 16:22:10 ID: 2H5NgzDKW0
なんでもかんでも空耳つければおもしろいと思ってる人は何なの。
きしめんはまぁ良いとしても、無理矢理なの多すぎだろ。

17 : ななしのよっしん :2010/06/05(土) 22:05:30 ID: 6vZhnMoj4A
>>13>>16
それが大多数にウケてる現実を見ようw
それでも嫌なら見ないほうがいいw


815 :デフォルトの名無しさん:2011/01/03(月) 03:51:28
>>810
そうなんですか?検索して調べるとマイクロ秒の取得が出来ると書いてあったのですが・・
>>813
システムコールにgettimeofdayがあるんですね。
それならglibc内にないのも頷けます。
ちょっとカーネルのソースコードから探してみます。

ありがとうございました。

816 :デフォルトの名無しさん:2011/01/03(月) 08:36:33
>771>775

今さら見ていないかもしれないけど。

>772さん自身はわかっていそうだけれど

>何も置換されない
「何にも置換されない」のではなく「無に置換される。」

>文中にhogehogehogehogeとか書いてもプリプロセッサを通った後
>コンパイラが処理する時には無くなっている

トークンとして"hoge"と"hogehogehogehoge"は別物なので
#define hoge
で"hogehogehoge"は無くなったりしない。

817 :デフォルトの名無しさん:2011/01/03(月) 08:58:43
そんなこと分かってます。

818 :794:2011/01/03(月) 11:42:06
VCのプログラムでスレッドに安全に値を渡す方法についてですが
以下のような方法は問題ないのでしょうか。


struct DAT{
int a;
char b[30];
};
char mem[100];


void OnButton(){

DAT d;
d.a=100;
strcpy(b,"AAA");
memcpy(mem,&d,sizeof(d));
_beginthread(thread, 0,NULL);
}

void thread(void *data){

DAT d2;

memcpy(&d2,mem,sizeof(d2));
printf("%d %s",d2.a,d2.b);
}

819 :818:2011/01/03(月) 11:44:22
書き忘れましたが、スレッドを使わない簡単なプログラムでは
コンパイル、実行結果、問題なく動きました

820 :デフォルトの名無しさん:2011/01/03(月) 11:45:17
そのボタンを目にも止まらぬ早さで2連打したら問題ありそうな予感
え、そんなこと無理? まぁそうかもしれない

821 :デフォルトの名無しさん:2011/01/03(月) 11:48:45
>>820
すみません
簡単に書いたのですが、実際にはmemの開き領を調べて
空きがある場合にコピーして、ない場合にはエラーを返すように考えています。

あまり一般的な方法ではないような気がして質問しました

822 :デフォルトの名無しさん:2011/01/03(月) 12:17:19
いいんじゃない
別に一般的な方法にこだわる必要はない
動けばいいのさ

823 :デフォルトの名無しさん:2011/01/03(月) 12:48:55
DATをmallocして
map<threadid,DAT*> threads
のようなスレッド管理オブジェクトに詰め込むのが一般的じゃないかな
DAT構造体にbool quit;みたいな終了フラグを入れとけば
外部スレッドから自殺を促せるし
サブスレッドが走っているのにメインスレッドを終了する事もなくなるから。
終了時はどうでもいいってことなら
スレッドに渡したパラメーターのコピーが終わるまで
スレッド生成側がスコープを抜けないように
イベントやセマフォ、スピンロックなどを使って同期を取ればいいと思う

824 :デフォルトの名無しさん:2011/01/03(月) 13:00:14
あぁ、どうでもいいなら
同期取るよりmallocで渡してthread側でfreeしちゃうほうが楽だね

825 :デフォルトの名無しさん:2011/01/03(月) 13:02:23
すみません。煽りとかじゃないんす。

ここで、よくmallocとかけっこうCの実践的な質問をみるんですが、
いまどき、Cで開発してるところって、真面目にあるんですか?

一度もみたことないんです。。

826 :818:2011/01/03(月) 13:13:07
>>823
確かにヒープが一般的だと思いました
ただ強制終了した場合にヒープだとメモリリークになるような気がしましたので
外部変数を考えました

827 :デフォルトの名無しさん:2011/01/03(月) 13:13:58
組み込みではCが普通

828 :デフォルトの名無しさん:2011/01/03(月) 13:29:48
組み込みではアセンブラを使ってマジックナンバーするのが普通

829 :デフォルトの名無しさん:2011/01/03(月) 13:43:25
>>826
リークしないように管理すればいいじゃん
てか、サブスレッドを強制的に落とすのはOKでリークはNGな理由は何?

830 :デフォルトの名無しさん:2011/01/03(月) 13:58:24
>>829
例えばサブスレッドではデータのアップ、ダウンロードを行うのですが
そのスレッドが強制終了などで中断されてもアップなら再アップロード
ダウンなら再ダウンロードを行えば問題ないと思います

メモリリークの場合は利用者が一日中パソコンを起動しているケースや
メモリが少ない場合はパソコンが不安定になるかもと考えたからです
動的にメモリを確保したままプログラムがなんらかのバグで
強制終了してもパソコンに全く影響がないのであればヒープを使います

831 :デフォルトの名無しさん:2011/01/03(月) 14:10:15
用語が錯綜しとるな −スレッドの強制終了
・(Win32)TerminateThread や 構造化例外を受けての脱出
・ユーザーの入力による脱出の選択処理


前者は間接的にリークを起こす可能性を秘めてるんじゃ…
(おおよそ、プロセス終了時に解放してくれるだろうけど)

832 :デフォルトの名無しさん:2011/01/03(月) 14:18:35
>>824
VCの malloc/free (ついでに new/delete) はスレッドセーフだっけ? <malloc/free のスレッドが異なる
いつも同じスレッドで入れ子に取り扱ってることが多いから ふと疑問におもた

833 :デフォルトの名無しさん:2011/01/03(月) 15:14:51
>>830
レジューム出来るようにすりゃいいじゃん
いっそのこと並列DL/ULに上限を設けて配列にしちまえ

>>831
分かりづらくてすまない
自殺or自然死以外という意味です

>>832
プロセス内で共有してるから開放できるよ

834 :デフォルトの名無しさん:2011/01/03(月) 15:55:48
int x[MAX];
int top=0;

int push(int n)
{
int (top>=MAX)
return(ERROR);/*Overflow*/
x[top++]=n;
return(n);
}

int pop(void)
{
if(top<=0)
return(ERROR);*/Underflow*/
return(x[--top]);
}
スタックのコーディングです なにをやっているかまったくわからないんですが
教えてください

835 :デフォルトの名無しさん:2011/01/03(月) 16:08:25
スタックだな

836 :デフォルトの名無しさん:2011/01/03(月) 16:25:22
http://codepad.org/3ImQwWse

837 :デフォルトの名無しさん:2011/01/03(月) 16:51:10
スレッドについてだが。
サンプルとか、本とかで簡単にスレッド実行ができるが。
サンプルスレッド(簡単)>>>>(技術的・設計的壁)>>>>実用的にスレッド使用
の隔たりがある。心にとどめておいてくれ。

838 :デフォルトの名無しさん:2011/01/03(月) 17:56:39
そんなのスレッドに限ったことじゃないし。なんでドヤ顔してるの?

839 :デフォルトの名無しさん:2011/01/03(月) 18:00:05
不等号の向きが気になる

840 :837:2011/01/03(月) 18:02:19
なんだ?俺が何か間違ったこと言ったか?
お前らド低脳のために高脳の俺が助言してるんだが。
これくらい理解出来ないと技術者にはなれないぞ。

841 :デフォルトの名無しさん:2011/01/03(月) 18:11:45
ファビョったw

842 :デフォルトの名無しさん:2011/01/03(月) 19:50:25
C言語を勉強中のものです
6つの要素からなるベクトルの角度を求めるっていうプログラムを作ったのですが
http://codepad.org/l1zDb90Z
にあるように、めっちゃエラーを吐いてしまって自分ではどうにも出来ない状態です。
だれか助けてくれませんでしょうか・・・



843 :デフォルトの名無しさん:2011/01/03(月) 19:53:54
全角スペース

844 :デフォルトの名無しさん:2011/01/03(月) 20:34:22
>>842
>   /*ユーグリッド距離の計算*/

正しくは「ユークリッド」(Euclid)ね。

「マゼンタ」を「magenda」と綴ったりする間違いがあると、
ああ日本人が書いたんだなって予想がつくw

845 :デフォルトの名無しさん:2011/01/03(月) 20:42:10
>>842
まずエラーメッセージを丸ごとぐぐってみなよ。ダメ元で。
"stray '\343' in program"

846 :842:2011/01/03(月) 21:00:03
http://codepad.org/q5SE6uCt
どうやらご指摘道理スペースが問題みたいでした。一応エラーは消えたのですが
まだoutputに気がかりな文が出てるのですが、これは大丈夫なんでしょうか・・・

847 : ◆QZaw55cn4c :2011/01/03(月) 21:04:59
>>846
#include <math.h>

848 :デフォルトの名無しさん:2011/01/03(月) 21:37:44
>>844
お前友達少ないよな

849 :842:2011/01/03(月) 22:11:08
>>847
#includeを忘れてました。ご指摘ありがとうございます!
結果を貼っておきます
http://codepad.org/iwvxDAJF
cosの事についてはまだ残ってましたが、そうやらこれに関してはコンパイラの問題らしいので一応スルーしておきます
どうもありがとうございました

850 :デフォルトの名無しさん:2011/01/03(月) 23:11:22
>>834について少々調べたつもりですが結局last in first outは
どういうとこで役にたつの?

851 :デフォルトの名無しさん:2011/01/03(月) 23:28:53
再帰とか?

852 :デフォルトの名無しさん:2011/01/03(月) 23:42:57
rbuf[(head+count)%MAX]=c;
この%ってなんですか

853 :デフォルトの名無しさん:2011/01/03(月) 23:43:49
>>852 ごめん解決した

854 :デフォルトの名無しさん:2011/01/04(火) 00:01:16
文字列テンプレートだよ

855 :デフォルトの名無しさん:2011/01/04(火) 00:20:34
int* (***p[MNTS][STS])(int (***[MNTS][STS])());

ってどう読むんですか?

先輩に聞いたら、気にしなくてもいいよ
なんていってたけど、気持ち悪いんで教えてください。


856 :デフォルトの名無しさん:2011/01/04(火) 00:24:00
>>855
K&R嫁

857 :デフォルトの名無しさん:2011/01/04(火) 00:24:20
まったくのスレ違いであることを承知で尋ねることを、どうかお許しください!
中々答えが得られず非常に困っているのです。

ワープロのフロッピーをパソコンにデーター移行することができず、その際
のキーワードが『CSO』となっております。
カシオのワープロを5、6年前まで使っていました。ウィンドウズXPを使う
ようになり、その際保存していた1部の2HDの内容をパソコンに移しました。
その時はテキスト形式で何の問題もなく移行できました。使用したUSBはLogi-
tecという会社のドライバー器具です。
ところが先日別の2HDフロッピーで同作業を試みると、ファイル名やテキス
トの拡張子(?)がCSOとなっていて、開くことができません。
これは自分の操作で解決できる類のものなのでしょうか。また、前回できた
のに今回こういう風になったのは何故なのでしょうか。
どなたかスムーズにデータ移行できる方法をご伝授ください!

858 :デフォルトの名無しさん:2011/01/04(火) 00:26:33
>>857
カシオに聞け

859 :デフォルトの名無しさん:2011/01/04(火) 05:48:16
>>858

 キ
   の
           し
                        た
  と
               で
                    こ
     の
          な
   か

860 :857:2011/01/04(火) 05:57:41
>859は俺じゃないが礼を尽くした相手にこのざまとはな

861 :デフォルトの名無しさん:2011/01/04(火) 06:29:40
なにこいつ

862 :デフォルトの名無しさん:2011/01/04(火) 07:08:01
カシオに聞けとしか言いようが無い

863 :デフォルトの名無しさん:2011/01/04(火) 07:10:41
csoファイルをバイナリエディタで開きます
元のデータを思い出しながらcso→元のデータに変換するプログラムを書きます
思い出した元のデータをそのままファイルに書き出します
おわり

864 :デフォルトの名無しさん:2011/01/04(火) 07:15:07
>>855
関数ポインタテーブルを受け取って処理し、
関数ポインタテーブルを返す関数、だな
状態遷移関数を実行するための関数とかか?

865 :デフォルトの名無しさん:2011/01/04(火) 07:34:51
>>864
それを証明してください。

866 :デフォルトの名無しさん:2011/01/04(火) 09:44:07
気になってしょうがありません。

867 :デフォルトの名無しさん:2011/01/04(火) 10:40:47
int型を返す関数へのポインタへのポインタへのポインタの要素数STS個の配列の要素数MNTS個の配列を引数に取りint型へのポインタを返す関数へのポインタへのポインタへのポインタの要素数STS個の配列の要素数MNTS個の配列

868 :デフォルトの名無しさん:2011/01/04(火) 10:46:17
伺いたいことがあるのですが、C言語で
あるデータの情報を処理→その情報とデータベースにある不特定多数の情報と類似度計算→その類似度が高いヤツをピックアップして表示
って感じのプログラムを作らなきゃならなくなったんですが、そもそもデータベースをC言語使って操作とか計算とか出来るのでしょうか
助言をお願いします。。。


869 :デフォルトの名無しさん:2011/01/04(火) 10:50:16
>>868
ライブラリがあればできる
詳しいことはデータベースの開発元に聞け

870 :デフォルトの名無しさん:2011/01/04(火) 10:57:48
質問なんですが、HTTP仕様的にGETリクエストにはhttp://から始まるフルパスを指定してもいいのですか?

871 :デフォルトの名無しさん:2011/01/04(火) 11:14:02
>>869
ありがとうございます!やってみます。ひとまずMYSQLのアクセスとかで調べてみます
あと出来ればこう言うのについて詳しく書かれてる場所があれば教えて欲しいのですが、どこかにあったりしますか?


872 :デフォルトの名無しさん:2011/01/04(火) 11:14:45
さげ忘れました。すいません

873 :デフォルトの名無しさん:2011/01/04(火) 11:18:25
そもそもsageる必要はない。

874 :デフォルトの名無しさん:2011/01/04(火) 11:19:14
その通り。むしろこのスレはage推奨とされている。

875 :デフォルトの名無しさん:2011/01/04(火) 11:24:19
>>871
"MySQL API C"でググればたくさん出てくる

876 :デフォルトの名無しさん:2011/01/04(火) 12:02:15
>>875
でました。ありがとうございます!

877 :デフォルトの名無しさん:2011/01/04(火) 12:32:08
>>855
こんなコードって多用されるの?
読める人は凄いな

878 :デフォルトの名無しさん:2011/01/04(火) 12:36:29
多用はされないだろ。こんなの出てくるなら設計見直す。
出てくるとしてもtypedefする。

879 :デフォルトの名無しさん:2011/01/04(火) 13:27:27
ポインタ完全制覇を読み終えたぐらいのレベルなんですがC言語のTCP/IPプログラミングを勉強するのに良い本またはサイトがあるでしょうか。

880 :デフォルトの名無しさん:2011/01/04(火) 13:31:21
typedef でなんとかなるレベルじゃねーし関数ポインタの引数が出てくるまで煮詰めたコードを汚いからと作り直すバカは居ねえと思うがね

881 :デフォルトの名無しさん:2011/01/04(火) 14:40:23
>>879
「ソケットプログラミング」でググッてみるとか。

882 :デフォルトの名無しさん:2011/01/04(火) 15:11:36
>>880
>typedef でなんとかなるレベルじゃねーし
関数ポインタをtypedefしたことがないんですね。

>関数ポインタの引数が出てくるまで煮詰めたコードを汚いからと作り直すバカ
妄言過ぎて言葉も出ない

883 :デフォルトの名無しさん:2011/01/04(火) 15:13:48
>>882
関数ポインタはtypedefできねーよ馬鹿

884 :デフォルトの名無しさん:2011/01/04(火) 15:17:56
>>883
できるぞ?

885 :デフォルトの名無しさん:2011/01/04(火) 15:33:37
>>883
嘘つくな

886 :デフォルトの名無しさん:2011/01/04(火) 15:34:58
>>881
良いサイト見つけました。
どうもありがとう。

887 :デフォルトの名無しさん:2011/01/04(火) 15:36:01
http://www5a.biglobe.ne.jp/~shinotan/hiro.jpg

888 :デフォルトの名無しさん:2011/01/04(火) 16:13:47
if、switch、for、while、配列、多次元配列などを勉強しました。

次は何を勉強すればいいですか?独学でやtってます

889 :デフォルトの名無しさん:2011/01/04(火) 16:23:01
リスト

890 :デフォルトの名無しさん:2011/01/04(火) 16:24:46
>>888
関数

891 :デフォルトの名無しさん:2011/01/04(火) 16:25:56
>>888
いままでのおさらいでマスターマインド作る

892 :デフォルトの名無しさん:2011/01/04(火) 16:38:27
>>890

難しそうで避けて通っていましたがテキストも次が関数なので
やってみます><

893 :デフォルトの名無しさん:2011/01/04(火) 18:56:13
テキスト通りにやれよw

894 :デフォルトの名無しさん:2011/01/04(火) 20:03:31
>>893
嘘つき

895 :デフォルトの名無しさん:2011/01/04(火) 20:20:55
#include <stdio.h>
int Tashizan(int a, int b){

int c;
c=a+b;
printf("%d + %d = %d\n",a,b,c);
}
int Hikizan(int a,int b){

int c;
c=a-b;
printf("%d - %d = %d\n",a,b,c);
}
int main(void){

int a;
int b;
a=1;
b=1;
Tashizan(a,b);

a=2;
b=1;
Hikizan(a,b);

return 0;
}
-----------------------
警告:関数は値を返すべき(関数 Tashizan)
警告:関数は値を返すべき(関数 Hikizan)
とでるのですが、どうすればいいですか?
使っているコンパイラソフトは「C言語を始めよう!」というフリーソフトです。

896 :デフォルトの名無しさん:2011/01/04(火) 20:23:05
returnすればいいです

897 :デフォルトの名無しさん:2011/01/04(火) 20:33:10
>>896


Tasizan、Hikizanをそれぞれ「return 0;」で
値を返せばよかったのですね!解決しました!

898 :デフォルトの名無しさん:2011/01/04(火) 20:43:00
#include <stdio.h>

int a,b,c;
int Tashizan(){

c=a+b;
printf("%d + %d = %d\n",a,b,c);

return 0;
}
int Hikizan(){

c=a-b;
printf("%d - %d = %d\n",a,b,c);

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

a=2;
b=1;
Hikizan(a,b);

return 0; }
--------------------------------
>>895のint a,b,cをグローバル変数にしたところ
警告:プロトタイプ宣言のない関数(Tasizan,Hikizan)の呼び出し(main)
とでました。どういうことなのでしょうか?


899 :デフォルトの名無しさん:2011/01/04(火) 20:54:04
>>898
定義と呼び出すときで関数の型が違う

900 :デフォルトの名無しさん:2011/01/04(火) 21:34:25
>>898
引数が空括弧の関数定義は「プロトタイプ宣言」としての効果を持たない
> int Tashizan() {
         ↑
         ここ
C++ と混同する者がよくいる要注意箇所である

C ではプロトタイプ宣言なしで呼び出した関数は引数の宣言がなく int を返すと仮定される
> Tashizan(a,b);

よって仮定された関数の型は合っていて >>899 はウソ

正しくは
> int Tashizan()

int Tashizan(int a, int b)
とすれば「プロトタイプ宣言された」と見なされる

ちなみに、それはあくまで「警告」であってエラーではない
場合によっては無視する判断も必要になる部類のメッセージだ

901 :デフォルトの名無しさん:2011/01/04(火) 22:01:13
>>899
>>900

ありがとうございます!解決しました!

つまり、関数の利点って、mainで指定した値をそれぞれの関数で別に使えるってことですよね?おそらく

902 :デフォルトの名無しさん:2011/01/04(火) 22:01:15
呼び出し元を修正しろ

903 :デフォルトの名無しさん:2011/01/04(火) 22:22:04
>>901
あせるな
作ろうとしているプログラムが複雑になるほど
複雑さをしまっておける収納箱のありがたみは
追わなくても向こうからついてくる

904 :デフォルトの名無しさん:2011/01/04(火) 22:24:34
ついてくるね

905 :デフォルトの名無しさん:2011/01/04(火) 23:36:35
ついてくるな

906 :デフォルトの名無しさん:2011/01/04(火) 23:37:13
ついんてーる

907 :デフォルトの名無しさん:2011/01/05(水) 00:05:28
関数ポインタをqsortでしか使ったことないんだけど
例えばどういった便利な利用方法があーる?

908 :デフォルトの名無しさん:2011/01/05(水) 00:07:18
>>907
qsort

909 :デフォルトの名無しさん:2011/01/05(水) 00:10:54
>>907
OOP

910 :デフォルトの名無しさん:2011/01/05(水) 00:15:04
>>907
COM

911 :デフォルトの名無しさん:2011/01/05(水) 00:17:47
>>907
GetProcAddress

912 :デフォルトの名無しさん:2011/01/05(水) 00:29:00

追っかけにくいから、関数ポインタが嫌いな人もいる。
場合分けがはっきりしてる時は、便利かも

913 : [―{}@{}@{}-] デフォルトの名無しさん:2011/01/05(水) 00:53:04
g_state = TITLE;

if(g_state == TITLE){
  title_func();
}
else if(g_state == PLAY){
  play_func();
}



func_tbl[g_state]();

になって嬉しく感じられる人がいる

914 :デフォルトの名無しさん:2011/01/05(水) 06:09:40
g_state = TITLE;

if(g_state == TITLE){
  title_func();
}
else if(g_state == PLAY){
  play_func();
}

なにこの糞コードw

915 :デフォルトの名無しさん:2011/01/05(水) 06:35:21
>>914
バグらないだけこれよりマシなレベル

g_state = TITLE;
switch (g_state) {
case TITLE:
  title_func();
case PLAY:
  play_func();
}

switchなんてまず使わんから構文があってるかわからん

916 :デフォルトの名無しさん:2011/01/05(水) 06:51:01
コードを書くうえで、常に神経質にならなければならない問題にに、ライセンスの問題があります。
ここはベテランコーダーが多そうなので、質問です。
ライセンスに関する質問です。(よくわからない人は無理して答えてくれなくて結構です)

プロプライエタリなライブラリーであるadobe photoshop sdk = A
ライブラリとしてAを使用する、プラグインプログラムのソースコード = S
Sのa.out形式のバイナリ = B
AとBをリンクしたdll形式のバイナリ = P

Q1:S&Bのtar配布で、BSDライセンスとして配布することは、ライセンス的に可能でしょうか? また、これが可能なライセンスは何がありますか?
Q2:Bのみの配布で、BSDライセンスとして配布することは、ライセンス的に可能でしょうか? また、これが可能なライセンスは何がありますか?
Q3:Pのみの配布で、BSDライセンスとして配布することは、ライセンス的に可能でしょうか? また、これが可能なライセンスは何がありますか?
Q4:GNU等フリーソフトとして配布可能な、移植されたAは存在しますか?
Q5:上記の件について、どのような対処を行えばソースフォージの登録審査を通ると予想できますか?

917 :デフォルトの名無しさん:2011/01/05(水) 07:17:00
>>916
スレ違い

【License】ライセンス総合【利用許諾】
http://hibari.2ch.net/test/read.cgi/tech/1266247461/

918 :デフォルトの名無しさん:2011/01/05(水) 07:53:14
「俺っち普段switchなんて使わんkらよぉwww間違ってても堪忍してちょwwwwwww」


919 :デフォルトの名無しさん:2011/01/05(水) 11:28:54
>>914-915
どこがクソコードなのか分からん

920 :デフォルトの名無しさん:2011/01/05(水) 12:15:25
rand()%Nやgetsで発狂しちゃうタイプなんでしょ

921 :デフォルトの名無しさん:2011/01/05(水) 12:30:15
rand()%Nはともかく、gets()は発狂するしかないな

922 :デフォルトの名無しさん:2011/01/05(水) 12:37:09
>>915
switchでbreakしてないところじゃね?

923 :デフォルトの名無しさん:2011/01/05(水) 12:38:51
>>914-915
すいません、これってif文よりswitch文を使えってこと?
俺はどちらも結構使うんだけれど今後の参考のために
知りたいす。

ちなみに俺はif文とswitch文は前後のコードの見やすさで
使い分けてる感じ。

924 :923:2011/01/05(水) 12:39:40
>>922
あ〜 そうゆうことかい。 orz

925 :デフォルトの名無しさん:2011/01/05(水) 13:02:52
>>921
本筋と関係の無い部分で揚げ足とってたら切り無いぞ
サンプルコードのお約束ってやつだ

>>922
それはないんじゃない?
フォールスルーのミスなんて自業自得なのに
責任転嫁の言語叩きは恥ずかしすぎでしょ

926 :デフォルトの名無しさん:2011/01/05(水) 14:14:03
>責任転嫁の言語叩き
えっ

927 :デフォルトの名無しさん:2011/01/05(水) 14:20:42
埋め

928 :デフォルトの名無しさん:2011/01/05(水) 14:46:57
埋め

929 :デフォルトの名無しさん:2011/01/05(水) 14:59:16
胡桃沢梅

930 :デフォルトの名無しさん:2011/01/05(水) 15:05:43
どんだけ気が早いんだよ
せめて次スレが立ってから埋めろ

都合の悪いことを埋めたいならさっさと次スレ立ててしまえ

931 :デフォルトの名無しさん:2011/01/05(水) 15:13:38
はいはい埋め埋め

932 :デフォルトの名無しさん:2011/01/05(水) 15:15:16
梅梅

933 :デフォルトの名無しさん:2011/01/05(水) 15:16:33
松竹梅

934 :デフォルトの名無しさん:2011/01/05(水) 15:16:52
個人的には牛丼屋の中では松屋がウメーと思う

935 :デフォルトの名無しさん:2011/01/05(水) 15:22:54
いやややいうや吉野家もうめーよ

936 :デフォルトの名無しさん:2011/01/05(水) 15:32:59
SQLインジェクション

937 :デフォルトの名無しさん:2011/01/05(水) 15:50:25
俺のちんぽをインジェクション

938 :デフォルトの名無しさん:2011/01/05(水) 15:57:04
埋め

939 :デフォルトの名無しさん:2011/01/05(水) 16:09:01
ポイズン

940 :デフォルトの名無しさん:2011/01/05(水) 16:46:08
関数ポイズン

941 :デフォルトの名無しさん:2011/01/05(水) 16:52:54
バッファオーバフロー

942 :デフォルトの名無しさん:2011/01/05(水) 16:53:24
バッファロー

943 :デフォルトの名無しさん:2011/01/05(水) 17:07:34
次スレもお世話になるか

944 :デフォルトの名無しさん:2011/01/05(水) 17:09:43
糞スレ

945 :デフォルトの名無しさん:2011/01/05(水) 18:20:35
エキスパートCプログラミングって結構分厚いんだな

946 :デフォルトの名無しさん:2011/01/05(水) 19:07:02
C言語でコマンドプロンクトを介入して他のプログラムを起動して操作するって方法があるらしいのですが、情報があまりに足りなくて困ってます
だれか詳しいやり方とか知ってる人がいたら教えてくれませんか

947 :デフォルトの名無しさん:2011/01/05(水) 19:11:30
popenとかのこと?

948 :デフォルトの名無しさん:2011/01/05(水) 19:23:50
>>945
いつまで売ってんだか
Cの古臭さが良く分かる本。

949 :デフォルトの名無しさん:2011/01/05(水) 19:28:29
あれをけちょんけちょんに批判できる人が言う「古い」と
イソップのキツネが言う「古い」は
重みが全然違う

950 :デフォルトの名無しさん:2011/01/05(水) 19:34:19
>>947
ぐぐってみましたが、恐らくそのことだと思います。
これで操作とか出来ればいいのですが、後もう少し調べてみないと判断出来ないですね。。。
ひとまず、教えてくれてありがとうです

951 :デフォルトの名無しさん:2011/01/05(水) 19:36:37
>>950
いえいえ

952 :デフォルトの名無しさん:2011/01/05(水) 21:17:26
void main(void){
int i=0;
int *p;

i = &i;
p = i;
printf("%d",*p);
}
これいけるかと思ったら案の定だめでした。

953 :デフォルトの名無しさん:2011/01/05(水) 21:45:56
そりゃキャストしないとダメだろ

954 :Perl忍者 ◆M5ZWRnXOj6 :2011/01/05(水) 22:00:10
まだやってんのかゴミ虫どもは

955 :Perl忍者 ◇M5ZWRnXOj6:2011/01/05(水) 22:20:40
Perl最強だぜ!

956 :Perl忍者 ◇M5ZWRnXOj6:2011/01/05(水) 22:30:19
C言語は糞

957 :Perl忍者 ◇M5ZWRnXOj6:2011/01/05(水) 22:31:26
C言語にコンプレックスがありました。
皆さんすみませんでした。

958 :Perl忍者 ◇M5ZWRnXOj6:2011/01/05(水) 22:32:20
おしっこもらしました。
皆さんすみませんでした。

959 :デフォルトの名無しさん:2011/01/05(水) 22:34:30
ほっほっ

960 :デフォルトの名無しさん:2011/01/05(水) 22:35:37
ふっほっ

961 :デフォルトの名無しさん:2011/01/05(水) 22:44:53
どぴゅっどぴゅっ

962 :デフォルトの名無しさん:2011/01/05(水) 22:51:30
ぶはっ!選ぶはっ!

963 :デフォルトの名無しさん:2011/01/05(水) 22:55:18
キチガイ共乙

964 :デフォルトの名無しさん:2011/01/05(水) 22:57:41
キキキキチガイ共乙えうえうえうえうえうえうえうえうえうフフフフフフフフフフフフフ

965 :デフォルトの名無しさん:2011/01/05(水) 23:01:00
C言語とはなんだったのか

966 :デフォルトの名無しさん:2011/01/05(水) 23:03:10
なんだもなにも只のプログラミング言語

967 :デフォルトの名無しさん:2011/01/05(水) 23:03:14
未だに死なない、息の長い言語

968 :デフォルトの名無しさん:2011/01/05(水) 23:05:15
>>949
どこが古くなってるかkwsk

969 :デフォルトの名無しさん:2011/01/05(水) 23:07:05
C言語は何故大失敗したのか

970 :デフォルトの名無しさん:2011/01/05(水) 23:10:59
scanfやgetsで信者とアンチを生み出したから

971 :デフォルトの名無しさん:2011/01/05(水) 23:11:27
どう考えても、Cは大成功だろ

972 :デフォルトの名無しさん:2011/01/05(水) 23:14:08
さっそく信者が釣れてるw

973 :デフォルトの名無しさん:2011/01/05(水) 23:15:42
成功かどうかはわからないけど世界で一番普及してるのはC言語なんだっけ
Perl()笑

974 :デフォルトの名無しさん:2011/01/05(水) 23:20:16
クロスワードパズル作れ言われたらC言語でつくるんか?
違うだろ。Perlだろ

975 :デフォルトの名無しさん:2011/01/05(水) 23:28:12
まぁCの信者って最近の言語を貶すことしかできないからねw

976 :デフォルトの名無しさん:2011/01/05(水) 23:30:00
今の日本のようですねw

977 :デフォルトの名無しさん:2011/01/06(木) 00:13:04
キモオタC言語信者がいたから顔面殴って蹴り落としてやったら意味不明なことを呟いていたなwwww

978 :デフォルトの名無しさん:2011/01/06(木) 00:13:06
作ったプログラムを評価というか、こうした方がいいよってアドバイスして
欲しいんですがそういうことをする人たちが集まるサイト紹介してください。

979 :デフォルトの名無しさん:2011/01/06(木) 00:18:16
Cさえマスターすれば他の言語で学ぶに時間かからないだろ。
文法とかスコープの概念なんかはすべて一緒だし。
逆にC言語は使えるけど他は分かりませんっていう人いる?いないだろ

980 :デフォルトの名無しさん:2011/01/06(木) 00:19:14
↑C言語使いがみんなこういう奴だと思われたら嫌だな

981 : [―{}@{}@{}-] デフォルトの名無しさん:2011/01/06(木) 00:24:18
文法だけならすぐ理解できるけどな、開発をやるってなると開発環境とかライブラリとか
その他周辺知識の有無がかなり重要になってくるのな。
C言語で組み込みソフト作ってた奴がJavaで携帯アプリ作る仕事に転職できるかってできないのな。

982 :デフォルトの名無しさん:2011/01/06(木) 00:26:24
>>979みたいなのって文法脳だよね。
プログラミング言語使えるのなんて最低条件なのに「俺は多くの言語が書けます」とか言っちゃうタイプ。
で、開発能力は皆無。

983 : ◆QZaw55cn4c :2011/01/06(木) 00:27:22
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。

984 :デフォルトの名無しさん:2011/01/06(木) 00:29:23
>>982
開発能力ってなんやねん。言語扱えるなら開発もできるだろ。なめんな

985 :デフォルトの名無しさん:2011/01/06(木) 00:30:23
>>983
あなたは答えなくていいです。

別の方、改めてサイト紹介してください。

986 :デフォルトの名無しさん:2011/01/06(木) 00:32:18
984 :デフォルトの名無しさん:2011/01/06(木) 00:29:23
>>982
開発能力ってなんやねん。言語扱えるなら開発もできるだろ。なめんな


ほら、すぐにボロがでたw

987 :デフォルトの名無しさん:2011/01/06(木) 00:39:34
馬鹿ってなんで反論すぐとき関西弁になるの?

988 :デフォルトの名無しさん:2011/01/06(木) 00:41:34
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。

989 :デフォルトの名無しさん:2011/01/06(木) 00:43:58
>>988
消えろや

990 :デフォルトの名無しさん:2011/01/06(木) 00:45:50
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。

991 :978:2011/01/06(木) 00:46:55
>>983
ありがとうございます
みてきます。 m(_ _)m

992 :デフォルトの名無しさん:2011/01/06(木) 00:47:44
◆QZaw55cn4c
こいつどうにかしてくれ

993 :デフォルトの名無しさん:2011/01/06(木) 00:55:33
ずいぶん前からいる荒らし

994 :デフォルトの名無しさん:2011/01/06(木) 00:57:22
983 : ◆QZaw55cn4c :2011/01/06(木) 00:27:22
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。

988 :デフォルトの名無しさん:2011/01/06(木) 00:41:34
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。

990 :デフォルトの名無しさん:2011/01/06(木) 00:45:50
>>978
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
が、わりに(わりに....ですけど)食いついてくれるかもしれません。コード書かない人は来ないところみたいですし。


これはひどい

995 :デフォルトの名無しさん:2011/01/06(木) 01:01:13


996 :デフォルトの名無しさん:2011/01/06(木) 01:08:08
結局エキスパートCプログラミングは買って良いんだなお前ら!!

997 :デフォルトの名無しさん:2011/01/06(木) 01:09:43
>>996
お前だって同類だから。

998 :デフォルトの名無しさん:2011/01/06(木) 01:13:00
構造体

999 :デフォルトの名無しさん:2011/01/06(木) 01:22:26
ほっほっ

1000 :デフォルトの名無しさん:2011/01/06(木) 01:23:34
糞スレ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

182 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)