C言語のことは俺に聞け<45>

このエントリーをはてなブックマークに追加
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しろ。
むしろ質問する前にWEBで検索するのが常識だ。

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

入門書レベルの質問はC言語質問所スレへ行け。

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

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

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

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1037796472/
【コンパイラ】
gcc
http://gcc.gnu.org/

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

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

32003年は午年:02/11/27 22:58
  _ハ、            _ハ、
 (- ・  ヾ          (- ・  ヾ
   ̄\  ヾ          ̄\  ヾ   
    (     ̄ ̄ ̄ヽヾ、    (     ̄ ̄ ̄ヽヾ、
     |        〈  ゞ   |        〈  ゞ
    / /| | ̄ ̄/ / | |     / /| | ̄ ̄/ / | |
    // ヽニニ// ヽニニl.  // ヽニニ// ヽニニl
   //     //.        //     //
   `       `        .`       `
4過去スレ:02/11/27 23:01
5過去スレ:02/11/27 23:02
いいかげんにしろ
このスレは冗談で作られたニセスレです。ageないようにお願いします。

本物は↓こちら
C言語質問所 <45>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50
>>1
乙かれ〜

しばらく厨房が騒ぐでしょうが、マタ〜リいきましょう。
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

http://big.freett.com/scheme_a/num1000.swf
ここも荒れるな
11あぼーん:あぼーん
あぼーん
12あぼーん:あぼーん
あぼーん
>>1

>入門書レベルの質問はC言語質問所スレへ行け。

これは失敗だったな。もうすぐ無くなるスレへ行けとは。
なんで重複スレ立てまくるんだ?

C言語質問所 <45>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/

↑を再利用すればいいじゃねーか
15あぼーん:あぼーん
あぼーん
16あぼーん:あぼーん
あぼーん
17あぼーん:あぼーん
あぼーん
18西門 ◆J1DLkSnXwI :02/11/27 23:09
>>JPS

(last_char_was_1 == ' ')という式の値は必ず0か1になります。
19あぼーん:あぼーん
あぼーん
20西門 ◆J1DLkSnXwI :02/11/27 23:10
まちがい。スマソ
(last_char_was_space == ' ')という式の値は必ず0か1になります。
21あぼーん:あぼーん
あぼーん
22あぼーん:あぼーん
あぼーん
23あぼーん:あぼーん
あぼーん
24デフォルトの名無しさん:02/11/27 23:11
>荒らしてる香具師
つーか、質問所スレで論争になったらなったで文句言うくせに。
矛盾してるって。
25あぼーん:あぼーん
あぼーん
26あぼーん:あぼーん
あぼーん
>>20
おまえさー、常識とかないわけ?
こんな無駄遣いすれたてて恥ずかしいとか思わないの?
俺はおまえみたいなのが同じCをやっていると思うと恥ずかしいよ。
     \ 馬 /   \ 鹿 /
               ∩     ∩
               | つ   「,"|
        ヾ∧     !,'っ_ ⊂_,!
      / ・ |ミ    /  ・ ヽつ
     (_'...  |ミ   ▼,__  |
      (゚Д゚; )..|ミ     (゚Д゚ ,)・|
      (|  .、)|      (|   、)|
       |    |       |   ・・|
       ヽ.._人     ヽ._・ν
       U"U        U"U
>>20
あのコードだが、
nt ch, last_ch;
while ((ch = getchar()) != EOF) {
 if (ch != ' ' || last_ch != ' ')
  putchar(ch);
 last_ch = ch;
}
で良いのでは?
30あぼーん:あぼーん
あぼーん
31あぼーん:あぼーん
あぼーん
32あぼーん:あぼーん
あぼーん
33あぼーん:あぼーん
あぼーん
>>20
じゃあ、xが整数のとき、!xの値はどうなるの?
35あぼーん:あぼーん
あぼーん
36あぼーん:あぼーん
あぼーん
37あぼーん:あぼーん
あぼーん
38あぼーん:あぼーん
あぼーん
39あぼーん:あぼーん
あぼーん
40あぼーん:あぼーん
あぼーん
41西門 ◆J1DLkSnXwI :02/11/27 23:18
>>34
>じゃあ、xが整数のとき、!xの値はどうなるの?

0か1になります。
42あぼーん:あぼーん
あぼーん
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
44西門 ◆J1DLkSnXwI :02/11/27 23:19
>>29
そっちの方が良いかも。
45デフォルトの名無しさん:02/11/27 23:19
ここにゲ製作板の房が流れ込んできたかな・・・
46あぼーん:あぼーん
あぼーん
だめだこりゃ
48デフォルトの名無しさん:02/11/27 23:20
>>41
うそだろ?
49あぼーん:あぼーん
あぼーん
50あぼーん:あぼーん
あぼーん
51あぼーん:あぼーん
あぼーん
52あぼーん:あぼーん
あぼーん
53あぼーん:あぼーん
あぼーん
まあ、1日も立てば落ち着くだろう。
しばらくすればニセスレのほうも削除されるだろうし。
厨ども、せいぜいがんがれや。いくら荒らしても無駄だがナー
55あぼーん:あぼーん
あぼーん
56あぼーん:あぼーん
あぼーん
57あぼーん:あぼーん
あぼーん
58あぼーん:あぼーん
あぼーん
59あぼーん:あぼーん
あぼーん

ビクッ. ∧ ∧ ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  Σ(゚Д゚;≡;゚д゚) < うお!なんかすごいところに迷い込んじまったぞゴルァ!
     ./ つ つ    \______________________
  〜(_⌒ヽ ドキドキ
     )ノ `Jззз
61あぼーん:あぼーん
あぼーん
62あぼーん:あぼーん
あぼーん
63あぼーん:あぼーん
あぼーん
64あぼーん:あぼーん
あぼーん
65デフォルトの名無しさん:02/11/27 23:26
まあ荒らしてるのは偽スレの1なんだろうなぁ・・・
66あぼーん:あぼーん
あぼーん
67あぼーん:あぼーん
あぼーん
でも何で連続投稿できるのだろう・・・?
69あぼーん:あぼーん
あぼーん
70あぼーん:あぼーん
あぼーん
   |
_ー|ー|-┐     __|_     ̄──
   |  ノ   ヽ/ |  ヽ     /
   |     /丶/   |   |
    |     し^ヽ   /    \


         ヽ(;´Д`)ノ
72デフォルトの名無しさん:02/11/27 23:28
>>65>>68
放置しろ。
   |
_ー|ー|-┐     __|_    ー十 ̄ \  /      ─_
   |  ノ   ヽ/ |  ヽ    |      |   \    フ ヽヽ
   |     /丶/   |    _ |     ∨   |  /
    |     し^ヽ   /    \/\           \


                ヽ(;´Д`)ノ
見慣れたAAコピペばかりでつまらない…
75デフォルトの名無しさん:02/11/27 23:29
一つ気づいた!
荒らしてる奴らは実はこのスレを偽スレよりもレスを多くするため仕方なく荒らしてるんだ!
そして偽スレと圧倒的差がついたころにこっちのほうが賑わってるとか言って平和的に向こうを潰す気だ
こんなことしても偽スレは復活しないよ。
77あぼーん:あぼーん
あぼーん
とりあえず謝っとく。
正直、すまなかった。
>>75
なるほど。
荒らしじゃなくて助けてくれてるんだね。
>>75
一つ気づいた!
そうやってコピペを止めようとしているんだな。
無駄だ。コピペは止まらない。
>>48
本当だよ。
82あぼーん:あぼーん
あぼーん
83あぼーん:あぼーん
あぼーん
84あぼーん:あぼーん
あぼーん
85拾ってきた:02/11/27 23:35
18 :西門 ◆J1DLkSnXwI :02/11/27 23:09
  >>JPS

  (last_char_was_1 == ' ')という式の値は必ず0か1になります。

20 :西門 ◆J1DLkSnXwI :02/11/27 23:10
  まちがい。スマソ
  (last_char_was_space == ' ')という式の値は必ず0か1になります。

29 :デフォルトの名無しさん :02/11/27 23:13
  >>20
  あのコードだが、
  nt ch, last_ch;
  while ((ch = getchar()) != EOF) {
   if (ch != ' ' || last_ch != ' ')
    putchar(ch);
   last_ch = ch;
  }
  で良いのでは?
86あぼーん:あぼーん
あぼーん
87拾ってきた:02/11/27 23:35
34 :デフォルトの名無しさん :02/11/27 23:15
  >>20
  じゃあ、xが整数のとき、!xの値はどうなるの?

41 :西門 ◆J1DLkSnXwI :02/11/27 23:18
  >>34
  >じゃあ、xが整数のとき、!xの値はどうなるの?

  0か1になります。

44 :西門 ◆J1DLkSnXwI :02/11/27 23:19
  >>29
  そっちの方が良いかも。

48 :デフォルトの名無しさん :02/11/27 23:20
  >>41
  うそだろ?
88あぼーん:あぼーん
あぼーん
89あぼーん:あぼーん
あぼーん
同じ AA の繰り返しでもつまんねーよ。
何か芸しろ。
ほんとだよ!
xが実数でも !x は整数の0か1になるよ。
>>90
そうやって煽るから...
>>48
! と ~ を混同していないか?

http://www.catnet.ne.jp/kouno/c_faq/c9.html#2
> 組み込みの演算子によってブー ル値が産み出されるときは、1か0であることが保証されている。
94デフォルトの名無しさん:02/11/27 23:40
あげ
レス数抜けばこっちが事実上本スレに!!
をを。
荒らしの美奈さん御苦労。
美奈タンが荒らしていたのか・・・。
98デフォルトの名無しさん:02/11/27 23:42
レス数抜いたぞ!
こっちが本スレだ!・・・元からだけど
99デフォルトの名無しさん:02/11/27 23:43
なぜ論理演算子にXORがないんだろう?
ビット演算子にはあるのに。
でも、テンプレは気に入らん。
書いとこ。
--
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しろ。
むしろ質問する前にWEBで検索するのが常識だ。

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

質問は 「通じる日本語」 を書け。
具体的には、少なくとも訊き返されないように十分な情報を盛りこみ、
「オレ語」 は使うな。

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

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

なお、自助努力のうかがえない香具師は冷たくあしらわれる。

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

前スレ
c[44] = "http://pc3.2ch.net/test/read.cgi/tech/1038324550/";
>>99
(゚Д゚)ハァ?

^ は?
102101:02/11/27 23:45
スマソ、論理演算子ね。

>質問は 「通じる日本語」 を書け。
>具体的には、少なくとも訊き返されないように十分な情報を盛りこみ、
>「オレ語」 は使うな。
こんなのいらんよ。つーか、書いても無駄だと思う。

>入門書レベルの質問はC言語質問所スレへ行け。
そんなスレいらない。つーか、なくなるし。

>なお、自助努力のうかがえない香具師は冷たくあしらわれる。
これも冗長だよ、「WEBで検索」「激しく未定義」でいいじゃん。
テンプレ長いのカコワルイ
>>102
ビット演算子で事足りるから
>>105
えーっと、
(!!x)^(!!y)
とか?
>>104
それを言ったら、

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

これすら必要無い。
でも

> 入門書レベルの質問はC言語質問所スレへ行け。

これが要らないのには同意。
>>104
読まれているかどうかもわからないテンプレに、何でそれを書いて欲しいという
要望が出るか理解してるか?
本スレ争い(みっともない)でレス消費するのは止めろバカ。
両方いかせばいいだろうがバカ。
>>106
まぁそんな感じ
こっちが本当の雑談スレでつか?
>>106
いや、普通は条件が2つあるだろうから、
単に
(x > 0) ^ (y < 0)
とかでいいんじゃないの?
>>112
でも、条件が両方とも評価されちゃうジャン。
>>113
xorで両方評価しない方法があったら教えてほすぃ。
115デフォルトの名無しさん:02/11/27 23:59
最近c言語を勉強し始めたものです。
あるサイトに
?#include<stdio.h>

int main()
{
int a, b;
printf("a,bを入力してください。n");
scanf("%d %d",&a, &b);
printf("a = %d b = %dn", a, b);
printf("a + b = %dn", a + b);
printf("何かキーを押してくださいn");
getchar();
printf("End");
return 0;
}
このように書いてあって実行すると、
printf("a,bを入力してください。n");の前に
scanf("%d %d",&a, &b);これがはいってきてgetcharと同時に操作が行われてしますようです。
これはどこか間違っているのでしょうか?
116113:02/11/27 23:59
>>114
はあ?
117デフォルトの名無しさん:02/11/28 00:00
どっちが本スレ?
>>116
xor のおさらいしてきたほうが良いかと
>>117
こっちが偽スレ
>>115
入力時に半角スペースを間に入れたか?
>>117
何かについてわからなければ、わからないという事が助けになるかも知れない。
>>115
scanfは改行文字の前で入力を読み取るのを止める。
(正確には、いったん読んだ改行文字をungetcする)

getchar()はその改行文字を読み取って直ちに返ってきてしまう。
123デフォルトの名無しさん:02/11/28 00:04
>>115
>入門書レベルの質問はC言語質問所スレへ行け。
C言語質問所
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50
124113:02/11/28 00:06
そうかー、必ず両方評価しなきゃ駄目か。
>>109
バカは余計
>>123 は荒らしだな。放置。
>>124
一体 XOR に何を求めていたんだ?
128デフォルトの名無しさん:02/11/28 00:14
みなさんレスありがとうございます。
これだけいわれてもまだ理解できません。
具体的な直し方を教えていただけないでしょうか?
↑は115です。
>>128
何の?どこの?
>>115 ?
132デフォルトの名無しさん:02/11/28 00:19
つーか、普通にC言語質問所とおなじことするんだったら削除される
のはこっちだと思う。タイトルの伝統はどうあれ先に立ったほうが
優先されるから。どうせ統合になったらなったで、論争が起これば
文句が出ることはすでにわかってることだ。だったら、Cスレが2つ
あってもいいと思うのだが。
>>115
getchar()で止めたいってことでしょ?
getch();
conio.h
遣え!
>>128
すまんが、ここは添削スレじゃないんだ。
>>132
アフォ。

むこうは、こっちの旧スレがまだ600かそこらのときに
重複して立てたんだよ! その時点で考えれば、むこうは
後で立ったの。
>>135
またそうやって荒らす。
>>132
どっちでも質問してどっちでも論争してたじゃねーか。
まったくおんなじスレ2つ作ってどうするよ?
139115:02/11/28 00:23
上から順番にならないんです。
printf("a,bを入力してください。n"); これより先に
scanf("%d %d",&a, &b); を読んじゃうんです。
あとgetcharでもとまりません。
140132:02/11/28 00:24
というわで、
>入門書レベルの質問はC言語質問所スレへ行け。
を守って、そういう質問は向こうにきっちり誘導して差別化をはかるってのが
いいと思うのだが。
>>139
どういうOSで何というコンパイラを使った?

あと、"してください。\n"じゃなくて"してください。n"と書いちゃったのか?
142デフォルトの名無しさん:02/11/28 00:25
>>137
スレ違い指摘の何が荒らしなんだ?

>>139
添削スレに逝ってくれ。
http://pc3.2ch.net/test/read.cgi/tech/1021881540/l50
143デフォルトの名無しさん:02/11/28 00:28
>>142
いや、もともと俺に聞けスレの範疇だったような気がするぞ。
>>139
#include <conio.h>して
getch(); 使え!るか??
>>143
つまり、1 の 「ソース丸投げ禁止」 は何の効力も持っていないと訴えたいわけか?
こんなところか?

#include<stdio.h>

int main(void)
{
  int a, b, ret;
  char buf[256];
  do {
    printf("a, b を入力してください: ");
    fgets(buf, sizeof(buf), stdin);
    ret = sscanf(buf, "%d %d", &a, &b);
  } while(ret < 1);
  ret--;
  while(ret < 1) {
    printf("a = %d, b を入力してください: ", a);
    fgets(buf, sizeof(buf), stdin);
    ret = sscanf(buf, "%d", &b);
  }
  printf("a = %d, b = %d\n", a, b);
  printf("a + b = %d\n", a + b);
  printf("何かキーを押してください:");
  getchar();
  printf("End");
  return 0;
}
147JPS ◆M0LaMzf5rY :02/11/28 00:40
>>144
getcheでは?
>>147
数字以外のキーのエコーを認めるのか?
本スレ逆転したんですね。
getch() 使ってみた。

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

void key_cushion(void) { while(kbhit()) getch(); }
int get_int(const char *s)
{
  int ret = 0, col = 0; char c;
  printf("%s を入力してください: ", s); key_cushion();
  while(c = getch(), c != '\r' && c != '\n') {
    if(isdigit(c) && col < 8) { putchar(c); ret = ret * 10 + c - '0'; col++; }
    else if(c == '\b' && col) { printf("\b \b"); ret /= 10; col--; }
  }
  putchar('\n');
  return ret;
}

int main(void)
{
  int a = get_int("a"), b = get_int("b");
  printf("a = %d, b = %d\n", a, b);
  printf("a + b = %d\n", a + b);
  printf("何かキーを押してください:");
  key_cushion(); getch();
  printf("\nEnd");
  return 0;
}
151146=150:02/11/28 00:58
ダメ出しは無いかい?
getch() バージョンの入力は自由ではないが。
煽られないと不安になるな。
sukiyaki!
ヒヒヒヒヒ

#include<stdio.h>
#include<ctype.h>
int main(void)
{
  char key[] = "A52A2245332A252B435B2222A2B2A2A23A2C32A3B5B2222A52B43532A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B2A32A5D2C25D4A26C4A1";
  char *p = key;
  int i, c, b = 1;
  while(*p) {
    c = 0;
    for(i = 0; i < 8; i++) {
      if(*p == '0') {
        if(!*++p)
          break;
        b = !b;
      }
      c <<= 1;
      c += b;
      if((*p)-- == 'A')
        *p = '0';
      if(isupper(*p))
        b = !b;
    }
    if(c)
      putchar(c);
  }
  getchar();
  return 0;
}
ヒヒヒヒヒ

#include <stdio.h>
#define a do
#define b ]
#define c return
#define d fopen
#define e (
#define f fputc
#define g fclose
#define h ".smw"
#define i =
#define j FILE *
#define l -
#define m 3
#define n [
#define o +
#define p ;
#define q int
#define r )
#define s while e z r
#define t {
#define u &
#define w main
#define y }
q k e j r p q z i l m p q w e r t j x i d e u e e m o z r n h b r, u e m n h b r r p k e x r p g e x r p c z p y q k e j v r t a t f e e m o z r n h b, v r p y s p c m p y
156デフォルトの名無しさん:02/11/28 04:34
>>155
154 に比べると全然おもろくないぞ。
こうだ

int getchar();int putchar(int);int main(){char k[]="A52A2245332A252B435B2222A2"
"B2A2A23A2C32A3B5B2222A52B43532A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B"
"2A32A5D2C25D4A26C4A1",*p=k;int i,c,b=1;while(*p){c=0;for(i=0;i<8;i++){if(*p==
'0'){if(!*++p)break;b=!b;}c=(c<<1)+b;if((*p)--=='A')*p='0';if(*p >= 'A')b=!b;}
if(c)putchar(c);}getchar();return 0;}
>>157
7行プログラミングスレのコピペかよ
159デフォルトの名無しさん:02/11/28 09:09
>>158
原本は 155 ですが何か?
そもそもコピペではありませんが何か?
160159:02/11/28 09:10
原本は 154 ですた・・・
161デフォルトの名無しさん:02/11/28 18:07
本スレあげ
162デフォルトの名無しさん:02/11/28 22:12
スクリプト言語しか作れない俺はだめですか?
>>162
言語が作れるならなかなか大したものだと思うが。
164162:02/11/28 22:18
>>163
でも本格的なコンパイラを作るのができない。
マシン語ができないから。
>>164
じゃあ、Cにコンパイルすればよい。
後はCコンパイラに任せる。
166162:02/11/28 22:30
>>165
My言語をCにコンパイルしてそれを別のCコンパイラにコンパイルさせるメリットがないきがする。
だれも使ってくれなさそう。
167デフォルトの名無しさん:02/11/28 22:39
何度やってもエラーになります。どこが違うんでしょうか?
ソース↓

#include<stdio.h>

main()

{
int a;

printef("Hello world!\n");
}
168デフォルトの名無しさん:02/11/28 22:41
#include<stdio.h>

main()

{
int a;

//printef("Hello world!\n");
}
169デフォルトの名無しさん:02/11/28 22:43
>>167
#include<stdio.h>

main()

{
int a;

printef("トロイの木馬をインストールしました!\n");
}

170デフォルトの名無しさん:02/11/28 22:45
>>167
main関数の引数が書いてないよ。
>>165
C言語にコンパイルすると、いろんな環境で走るから、
使ってもらいやすくなる。現にそういう処理系はたくさんある。
>>sourceを別のテキストへ書いている。
173デフォルトの名無しさん:02/11/28 22:50
#include<stdio.h>

int main(void);

{
int a;

printef("Hello world!\n",a);
}
174デフォルトの名無しさん:02/11/28 22:51
>>172
???
初期の頃のC++って、Cのコードに変換かけてCコンパイラにコンパイル
させてたという噂が、、、
176デフォルトの名無しさん:02/11/28 22:54
エラーコードは?
何故素直に printf を使わないんだろう
178デフォルトの名無しさん:02/11/28 22:56
>>175
エキスパートCを読んだね。
#include<stdio.h>

printef(char *s,int a){
printf("%s",s);
}
int main(void);

{
int a;

printef("Hello world!\n",a);
}
プリントエフって言葉で聞いたんでしょ。
180教えてください:02/11/28 23:02
最小値は求まるんですが、最大値がわけわからん数値になります・・
どこが間違えているのでしょうか?
#include<stdio.h>
#define NUM 4

main()
{
int suuji[NUM];
int i;
int min;
int max;

min=suuji[0];
max=suuji[0];

printf("4つの値を入力してください。\n");
for(i=0; i<NUM; i++){
scanf("%d",&suuji[i]);
if(min > suuji[i])
min=suuji[i];
if(max < suuji[i])

max=suuji[i];
}
printf("最大値は%dで、最小値は%dです。\n",max,min);
}
最初、suuji[0]に何が入っているか?
0なら?ランダムなら?
182デフォルトの名無しさん:02/11/28 23:04
>>180
それはコンパイラのバグです。もっといいコンパイラを使いましょう。
そのバグを避けるにはminとmaxの宣言を以下のようにしてください。
static int min;
static int max;
183182:02/11/28 23:07
>>180
ごめんちがった。
static int suji[NUM];
ってしてね。
おいおいキティガイが発生したぞ。
185教えてください:02/11/28 23:12
>>182 やってみたんですが、今度は最小値がおかしくなりました・・
だからauto変数は初期値未定だっツノ
187名無し@沢村:02/11/28 23:16
>>180
それはsuujiとminとmaxを最初初期化しておけばいいです。
188教えてください:02/11/28 23:16
>>184
おいアホは黙ってろ
>>185
こうしる!
int suuji[NUM] = {0};
190182:02/11/28 23:17
>>186
だからstaticなら初期化してあるじゃん
そんなへんなstaticの使い方するなよ
192デフォルトの名無しさん:02/11/28 23:18
>>189
もう一人のキティが発生した
suuji[0]に値が入ってから、min,maxに代入するとか、
max=0;min=INT_MAX;としておくとか・・・。
min=32767;...
>>188
あ゛ぁ゛ーー!?!?!?
もういっぺん言ってみろコラ!!!
誰もいっとらんわ!

      書いとるんじゃ!
196名無し@沢村:02/11/28 23:20
完璧なコード

#include<stdio.h>
#define NUM 4

main()
{
int suuji[NUM];
int i;
int min;
int max;
for(i=0; i<NUM; i++)
{suuji[i]=0;}
min=max=0;

printf("4つの値を入力してください。\n");
for(i=0; i<NUM; i++){
scanf("%d",&suuji[i]);
if(min > suuji[i])
min=suuji[i];
if(max < suuji[i])

max=suuji[i];
}
printf("最大値は%dで、最小値は%dです。\n",max,min);
}
197182:02/11/28 23:21
>>191
悪かったよ

>180
グローバル変数で宣言しろ
うちのとこだと、INT_MIN と INT_MAX がlimits.hに定義されてるんだけどね
ANSIなのかな、コレ
max=INT_MIN;
min=INT_MAX;
0でMAXを初期化していいんかいな、、、
すべてマイナスだった場合(以下略)
if(i==0){
max=suuji[i];//iは0でも可
min=suuji[i];
}
これいれといてもいいぞ。
201182:02/11/28 23:24
>>196
あんた頭悪すぎ。minを0で初期化してどーすんだ、ごらぁ
202教えてください:02/11/28 23:25
どれが合ってんの?一体
203182:02/11/28 23:26
>>196
とおもってよく見たらよかった。正直悪かったな。
>>202
196があってる
auto変数はとりあえず初期化しなさい。
なんで196があってんだ???
>>202

ちなみにコンパイラがどうこうというのとかは初心者を惑わすためのいぢわるだと思われるので信用しないように
なんで196があってるの?
全部に5入れても、minに0入るだろ
look at >>200.
208207:02/11/28 23:31
forのすぐ下に入れときゃ良い。
209204:02/11/28 23:32
ごめん >>204 は勘違いだ 取り消す。
紛らわしくて済まん。

210教えてください:02/11/28 23:32
これぐらい即答してよ・・
211名無し@沢村:02/11/28 23:32
皆々様方〜、いろいろありあとうございました、皆々様方〜!
私はここでコールバックタイマーを使用しろとか、複数トラックのデータをマージしてひとつのデータにまとめろとか、いろいろなアドバイスをいただきました。
でもはっきりいってそんな面倒なことはしたくなかったんです…。
はっきりいって手抜きに近い楽なやりかたで複数トラックをちゃんと演奏する方法を見つけたかったんです。
でもついにその方法が見つかったんです!!
その完璧なルーチンをここに乗せますから、皆様方も楽にmidiシーケンサーをつくるときの参考にしてください、皆々様方〜!

for(i=0;i<=i_Sum_Track[i_longest_Track];i++)
{for(l=0;l<16;l++)
{t[l]=0;
if(CodeCount[l]!=0)
{for(jj[l]=0;jj[l]<Onpu_Index[l];jj[l]++)
{kk[l]=jj[l]*8;
if(i==t[l] )
{
_Multi_Time[l]= timeGetTime();
midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000));
midiOutShortMsg(hMidiOut, (DataCode[l][kk[l]]) + (DataCode[l][kk[l]+1] * 0x100)+(DataCode[l][kk[l]+2] * 0x10000)); // Note On}
t[l]+=DataCode[l][kk[l]+3];
if(i==t[l] ) { while (Play_Tempo(DataCode[l][kk[l]+3])>=timeGetTime()-_Multi_Time[l]);
midiOutShortMsg(hMidiOut,(DataCode[l][kk[l]+4])+ (DataCode[l][kk[l]+5] * 0x100)+(DataCode[l][kk[l]+6] * 0x10000)); // Note Off } }} }}
212180:02/11/28 23:34
なんか途中から僕の偽者がでてきたみたいですが、
勉強になりました。みなさんありがとうございました。
213デフォルトの名無しさん:02/11/28 23:34
ウンコソース

#include<stdio.h>
#define NUM 4

main()
{
int suuji[NUM];
int i;
int min;
int max;



printf("4つの値を入力してください。\n");
for(i=0; i<NUM; i++){
scanf("%d",&suuji[i]);
if(i==0) {
min=suuji[0];
max=suuji[0];
}
if(min > suuji[i])
min=suuji[i];
if(max < suuji[i])
max=suuji[i];
}
printf("最大値は%dで、最小値は%dです。\n",max,min);
return 0;
}
214デフォルトの名無しさん:02/11/28 23:36
printf("4つの値を入力してください。\n");
scanf("%d", &suuji[0]);
min= max= suuji[0];
for(i=1; i<NUM; i++){
scanf("%d",&suuji[i]);
if (min > suuji[i])
min=suuji[i];
else if(max < suuji[i])
max=suuji[i];
}
printf("最大値は%dで、最小値は%dです。\n",max,min);
#include <stdio.h>
#define NUM 4
main(){
int i,suuji[NUM],max,min;
printf("4つの値を入力してください。\n");
scanf("%d", &suuji[0]);
min= max= suuji[0];
for(i=1; i<NUM; i++){
scanf("%d",&suuji[i]);
min>suuji[i]?min=suuji[i]:max<suuji[i]?max=suuji[i]:1;
}
printf("max is %d and min is %d.\n",max,min);
return 0;
}
216名無し@沢村:02/11/28 23:46
皆々様方〜、いろいろありあとうございました、皆々様方〜!
私はここでコールバックタイマーを使用しろとか、複数トラックのデータをマージしてひとつのデータにまとめろとか、いろいろなアドバイスをいただきました。
でもはっきりいってそんな面倒なことはしたくなかったんです…。
はっきりいって手抜きに近い楽なやりかたで複数トラックをちゃんと演奏する方法を見つけたかったんです。
でもついにその方法が見つかったんです!!
その完璧なルーチンをここに乗せますから、皆様方も楽にmidiシーケンサーをつくるときの参考にしてください、皆々様方〜!

for(i=0;i<=i_Sum_Track[i_longest_Track];i++)
{for(l=0;l<16;l++)
{t[l]=0;
if(CodeCount[l]!=0)
{for(jj[l]=0;jj[l]<Onpu_Index[l];jj[l]++)
{kk[l]=jj[l]*8;
if(i==t[l] )
{
_Multi_Time[l]= timeGetTime();
midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000));
midiOutShortMsg(hMidiOut, (DataCode[l][kk[l]]) + (DataCode[l][kk[l]+1] * 0x100)+(DataCode[l][kk[l]+2] * 0x10000)); // Note On}
t[l]+=DataCode[l][kk[l]+3];
if(i==t[l] ) { while (Play_Tempo(DataCode[l][kk[l]+3])>=timeGetTime()-_Multi_Time[l]);
midiOutShortMsg(hMidiOut,(DataCode[l][kk[l]+4])+ (DataCode[l][kk[l]+5] * 0x100)+(DataCode[l][kk[l]+6] * 0x10000)); // Note Off } }} }}
217訂正215:02/11/28 23:47
#define NUM 4
main(){
int i,suuji[NUM],max,min;
>printf("%dつの値を入力してください。\n",NUM);
>>216
マルチはせんといて
219デフォルトの名無しさん:02/11/29 03:19
また沢村かよ・・・
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 | 大盛りねぎだくギョク |
 |_________|
    ∧∧ ||
    ( ゚д゚)||
    / づΦ
221デフォルトの名無しさん:02/11/29 11:56
本スレage
222デフォルトの名無しさん:02/11/29 12:11
「アルゴリズムとデータ構造」スレより移動

今、16KBのメモリブロックがあって、その中に
struct x {
    int n;
    char d[];
};
をなるべくたくさん並べたい。(ただし、d[]の実体の長さは
どれも同じで、実行時に決まる。Lとしましょう。)

どうやればポータブルにalignmentできる?
d[]の実体の長さはどれも同じで、実行時に決まる。
ってなに?
224デフォルトの名無しさん:02/11/29 12:14
長さがsizeのバイトデータを、ある構造体Aの配列の大きさに
収めるために、sizeに必要なAの個数を求たいんですが、
現在以下の様に計算してます。

size/sizeof(A) + (size%sizeof(A) ? 1 : 0)

sizeof(A)=10です。
Aのサイズが2の乗数だったらシフトとAND演算子が使えたんですが、
半端なので割り算を使ってます。
これより良い方法はないでしょうか?
(size + sizeof(A) - 1) / sizeof(A)
>>223

>>222の書き方は、可変長の構造のヘッダを書くための定石で、
struct x *x1;
x1->d[i] = ...;
とか書くわけ。
http://seclan.dll.jp/c99d/c99d04.htm#dt19990726
そのヘッダをどう整列するかという話。
227デフォルトの名無しさん:02/11/29 12:21
228224:02/11/29 12:21
>>225
即レスありがとうございます。
なんかそれでいけそうです。
どうもでした!
>>226
普通に割り算するんじゃ駄目なの?
>>229
余りがあるときに違う。
    char d[];
なんてできるの?
>>226
struct x {
    int n;
    char d[1];
};
の間違いじゃないのか?
d[]; だの d[0]; だのは通らなかったり警告出たりしないか?

で、「ポータブルにalignment」 の意味するところがわからないんだが。
なるべくコンパクトに、かつある境界単位に並べるという事か?
>>231
>>226のリンク嫁。C99の機能。
>>230
会話をしてくれ。
「違う」 とは、何がどう変わるという事だ?
struct x{
int n;
} ;
#define x_d(p) (char *)((p) + 1)
とかは?
236235:02/11/29 12:44
使い方は
struct x *p = malloc(sizeof(struct x) + dの長さ);
とかやって
p->n = 0;
memcpy(x_d(p), "dのデータ");
printf("%d %s\n",p->n,x_d(p));
みたいな感じ。
Cでunion使わずに多態やるときに使う。
237235:02/11/29 12:45
s/memcpy/strcpy/
>>235
一見よさそうだが、アラインメントの関係で
struct x{
int n;
char c;
};
のような場合に無駄が出る事がある。
> Cでunion使わずに多態やるときに使う。

可変配列とは直接関係無いんじゃないか?
240235:02/11/29 12:50
>>238
そうだけど、それが嫌ならx_c作れば良いんじゃない?
>>239
可変配列にも応用できるってことで。
>>234
例えば、40bitのデータをintの配列に保存するとき大きさをいくつにするかと
かやったことないのか?
40/32 = 1...8
単に割算して1にしちゃったら8bit足りないだろ。bitとbyteの違いはあるがそ
ういうことだ。
242235:02/11/29 12:53
#define x_c(p) (char *)((p) + 1)
#define x_d(p) ((char *)((p) + 1)+1)
>>236
それをスマートにアクセスできるようにしたいってこと。
244235:02/11/29 12:55
>>243
>それをスマートにアクセスできるようにしたいってこと。
そのためにマクロ作ったんだけど・・
>>244
それはスマートじゃないと思う人間が多かったんだろうな。
246デフォルトの名無しさん:02/11/29 13:03
えーと、それで
16KBのメモリブロックをvoid *blockが指しているとして、
dの長さがLバイトとして、
・blockに、何個のstruct xが詰められるか、どう計算します?
・blockにつめてある、i番目のstruct xってどう書けばよいですか?
bsize = 16 * 1024;
size = offsetof(struct x, d) + L;
n = bsize / size;
p = (struct x *)((struct {struct x x; char d[L];} *)block)[i];

最後のは通るかどうかちょっと自信なし。
符号化とかならともかく
アラインメント無視して詰めたら遅くなるだけだよ
>>248
すまめ、忘れてたよ。遅くなるどころか環境によってはSIGBUS食らうな。

#define align_size(x) (sizeof(struct {x _x; char _dummy;}) - sizeof(x))
const size_t align_size_x = align_size(x);
#define rooms(x, y) (((x) + (y) - 1)/(x))

bsize = 16 * 1024;
size = rooms(offsetof(struct x, d) + L, align_size_x);
n = bsize / size;
p = (struct x *)((struct {struct x x; char d[L];} *)block)[i];
250デフォルトの名無しさん:02/11/29 14:07
>>249
B木とかのライブラリって、
こんな具合いに書いてあるもんなんでしょうかね。

やっぱ、メモリ上で木構造の勉強するのに比べると、
だいぶ複雑ですね。
>>241
その計算を (40+32-1)/32 でやらない香具師がいるのか?
>>251
>229に聞いてみてくれ。
253デフォルトの名無しさん:02/11/29 16:17
>>249 const size_t align_size_x = align_size(x);
ってのは
const size_t align_size_x = align_size(struct x);
のこと?

これで、ちゃんとalignされるって、保証されるのかな…
254 ◆SpXtQMM.WA :02/11/29 16:23
自由に使ってくれ

#include <stdio.h>

int main()
{
printf("あめま\n");
return 0;
}
>>253
> const size_t align_size_x = align_size(struct x);
> のこと?
んだす。その後もこうだな。ボケてるよ…。
size = rooms(offsetof(struct x, d) + L, align_size_x) *align_size_x;

> これで、ちゃんとalignされるって、保証されるのかな…

struct x1 {struct x _x; char _dummy;} x1[2]; で
x1[1]._x も x1[0]._x 同様 align されることを考えれば、
sizeof(struct x1) は strcut x の alignment の倍数だということが分かる。
sizeof(struct x) も当然倍数なので、 sizeof(struct x1)-sizeof(struct x) も倍数。
sizeof(char) == 1 なので、この差は(おそらく)可能な最小値であり、
strcut x の alignment そのもの。

# 最小値でなくても align されることに変わりはない。

こんなとこでどーよ。
256デフォルトの名無しさん :02/11/29 17:44
int main()ってどうゆう効果なの?main()じゃだめなの?
関数宣言/定義の戻り値の型は省略可能で、その場合int。
だから等価だが省略するのは古い書き方。
mainのintはくだらねえことで金切り声をだして時間と気力を浪費するバカよけだ
ファイル名を持つChar型の変数をファイル名にしようと次のように
組んだのですがエラーが出てしまいます。
char str[256];
char *fname="data.txt";
FILE *f=fopen(fname,"rt");
while(fgets(f,255,str)!=NULL) ← ここでアラー




どうか助けてください、お願いします
fgets() のプロトタイプを確認すれば原因はすぐわかると思います。
ところで、どんなアラーメッセージが出ますか?
261259:02/11/29 18:43
'fgets' : 1 番目の引数を 'struct _iobuf *' から 'char *' に変換できません。

              ア ラ ー 
あらー>260ちゃんじゃないのぉ。大っきくなったわねぇ。
>>261
'struct _iobuf *' とは、FILE* のことです。
コンパイラがどうしてそれを char* に変換しようとしているかわかりますか?

ところで、260 の 1 行目は検討していただけましたか?
while(fgets(str,255,f)!=NULL)
266259:02/11/29 19:03
ああ、わかりました・・・相当勘違いをしてました。
助言ありがとう御座います。
宗教板に「アラーメッセージ」ってスレ立てていいですか?
>>267
この板に立ててください。
そして、荒らされてください。
>>258
禿同
そっちに立てたか・・・。
アラーされてください。
ム板はよっぽどの事が無い限りアラーされないからナー。
273デフォルトの名無しさん:02/11/29 20:03
今度初めてCを学ぶのですが
環境はどうすればいいですか?
メモ帳+コンパイラがあればできると聞いたのですが
もっと便利に使いやすいもので学びたいのですが
そういうC用ツールってありますか?
なるべくフリーがいいのですが。
お願いします。
>>273
emacsで検索しろ
275273:02/11/29 20:31
>>274見てきましたが結構使いにくそうです・・・。
別スレで聞いたほうがいいですかね?
>>275
いや、ふつーemacsです。
最初は他のエディタと違う雰囲気という観点で
使いにくいと錯覚しますが、それも最初の2,3日だけです。
277JPS ◆M0LaMzf5rY :02/11/29 20:45
>>273
「CPad」で検索しる!bccがいるけどね。どっちもフリーでつ。
初心者向けで分かりやすいでつ。
それで足りなくなったらBccDev
>>273
シェアウェアだけどエディタは秀丸がいいよ。
ただでも使いつづけられるけど、
grep画面からタグジャンプするときとかうざいので、
ケチらずに4000円払った方がいいよ。
>>273
xyzzyも挙げておこう。
TeraPad
テストコード程度ならNotepad使ってます。
むかしはEDLIN使ったけどね・・・
282デフォルトの名無しさん:02/11/29 22:02
WinならVC++を使えよお前ら。
使ってますが何か?
VC++ってフリーなんですか?
一応 BCC Developer も挙げておこう。
.NET Framework 付属の最適化かからないコンパイラなら VC++ でも無料。
この文脈では、「VC++のIDE」の話ではないのか?
288デフォルトの名無しさん:02/11/29 22:50
>>273ですが、みなさん、こんなにレスありがとうございます・・・!
本当に感謝です。
で、自分なりにググって見たのですが
TeraPadはフリーで高機能というもので
かなりいい評判でした。

秀丸は超有名ですがこのフリーのエディタがいくつもあるなか
4000円はちょっと高い気がします。しかし学生なので
無料になるということなのでこの機会にやってみるのも
いいかなぁと思いました。

CPadもなかなか使いやすそうです。
個人的にはこれがいいかなと思ってるのですが
機能面ではどうなのですか?それについては分からないのです。

あと、VC++も調べてみたのですがフリーなのかシェア
なのかよく分からないんです。(本当に)
教えていただけないでしょうか?

長文読みにくくてすいません。
ではお願いします。
しゃぁからスレ違いやっちゅうに
>289
ちょ、まてや。
確かに>289の言いたいことは分からんでもないが
漏れはスレ違いとは思わんが
スレタイよく見てみ
>GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
とかかれてますが?
>>287
MSDEV (Developer Studio) は VC++ を呼ぶが VC++ じゃない。
>>292
プ
>>293
ttp://www.seiki21.com/img/img-box/img20021124224653.jpg
これでも見てもちつけ (・∀・)
>>294
ブ
296デフォルトの名無しさん:02/11/30 00:17
猫でもわかるプログラミングを見ても難しくてわからなかった
猫以下の超下等生物でもわかるようなC言語の入門サイト教えてください。
家の猫(マイケル)に、そのサイトを見せても
マイケルにはC言語は理解出来なかったようだぞ
>>286
それ「V」C++じゃないよ。
299273:02/11/30 00:43
スレ違いですか?
できることならこのスレでいいと思ってるんですが。
>296
この辺りから適当なものを
ttp://www2.famille.ne.jp/~akio1998/l_cpp.html
301デフォルトの名無しさん:02/11/30 01:15
>>300
おお!ありがとうございます。
いろいろなサイトがあるようなので、これから見て回ります。
結局、
入門書レベルの質問はC言語質問所スレへ行け。
てのは誰も言わないのな。ホントに誰も。
>302
荒れまくってるようで使い物にならん。
>>302
あそこは初心者用の質問所ではない
今はもう、あまぐりスレになってるな。
306デフォルトの名無しさん:02/11/30 12:54
>>292
じゃあ何がVC++なの?
コンパイラだけ?
307デフォルトの名無しさん:02/11/30 13:00
質問っす。
ファイルを読み込み/書き込みの両方出来るモードで開いたときに
先頭から上書きしていって途中でファイルの終了にするにはどうすればいいの?

(例)

元データ

aaa
bbb
ccc
終了

変更後

aaa
bbb
終了
環境によるが、POSIXなら
ftruncate(ftell(fp));
>307
環境によるが、プログラムを実行させ、ハードディスクのアクセスランプが点灯す
る瞬間に、パソコンの電源を抜く。
310デフォルトの名無しさん:02/11/30 15:37
コンパイラをDLしてきた後の設定方法を教えてください。
>>310
コンパイラはこの世に一つしかないとでも思っているのか?
ついでにスレ違い。
>>310
ドキュメントを読む。
313デフォルトの名無しさん:02/11/30 17:33
_outp _inp を使って内部スピーカーを鳴らすソースを教えてください。
>>313
そこまで知ってるなら逆にこっちに教えてくれ
>>313
Unix系OSだったらUnixUser読めばわかるのにね、といってみる
>>301
遅レスだが、参考書を一冊買った方がいい。
>>314
putchar('\007');
間接的にoutポートも使うだろ。
>>317
out ポートは使ってるとは思うが、_outp を使ってるとは限らんぞ。
>>317
\a
320デフォルトの名無しさん:02/11/30 22:45
GNU diff のソースがよくわかりません。
解説してください。
GREPってなんやねん〜〜
>>320
256回嫁
>>321
上エプ 中エプ 下エプ

大文字を使った番外なオマエはさしずめビチアス海淵
324デフォルトの名無しさん:02/12/01 00:14
>>320
動的計画法を使った編集距離アルゴリズムについて勉強しろ。
http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Dynamic/Edit/
325デフォルトの名無しさん:02/12/01 00:17
何を偉そうに
326デフォルトの名無しさん:02/12/01 00:31
>>325
戦わなきゃ、現実と。
GNU のソースって、やたら面倒だよね。
「GNUの」と一括りにできる程読んでるのかと小一時間。
>>327
根本のアルゴリズムやルーチンだけでなく、
統一されたインタフェースやエラー処理、不正入力処理、等の方が随分長いからね。
コアだけ抜き出すとかなり短い。
grepについて。

Boyer-Moore-Mosesの検索アルゴリズムについて勉強汁。
http://www.geocities.co.jp/SiliconValley-Oakland/1680/zsaru/zsaru13.html

# しかし、有用な情報を提供できる奴はほんとに少ないな。
331デフォルトの名無しさん:02/12/01 01:53
int read(int *ip){
scanf("%d",ip);
return *ip;
}

insert( &g[vect], read(&val), read(&ch) );

問題点は何かと聞かれましたが,上の関数では問題点はなさそうです。
下の関数は,実行する時の動作がおかしいと言うことだろうとは思うのですが,
readを呼び出して,戻り値を引数として渡すから大丈夫だと思うのですが,
どこが問題点なのでしょうか?
>>331
#include <stdio.h>
int read(int *ip){
scanf("%d",ip);
return *ip;
}
int main(void) {
int a, b;
printf( "%d %d\n", read(&a), read(&b) );
return 0;
}
このプログラムを動かして
100 200
を入力したときの出力はどうなるでしょう?
100 200がでたが・・・
VC++とCマシーンで
Σ(゚д゚lll)ガーン
>>332
gcc 2.95.3, glibc 2.2.4では
200 100
336333:02/12/01 02:07
scanfの呼び出しが,引数評価の後にくるかもしれないってこと?
>>336
お前、もう少し考えてから書けよ。
338 :02/12/01 02:09
あ,ごめん。
200 100だった・・・
なぜ?
>>338
引数の評価順序は未規定。
関数の引数の評価順序は規定されていない。
341340:02/12/01 02:13
>>339
ケケケ、ケコーンしてくだちい
>>339-340
ありがとう
自己嫌悪だす
出なおしてくるです
int main(void)
{
char **s1=("ABC\0""DEF\0""GHI\0" "JKM\0"
"NLO\0""PQR\0""STU\0""VWX\0""YZ\0");
int i;
int j;
++s1;
printf("%s",s1);

return 0;
}
char **s1=("ABC\0""DEF\0""GHI\0""JKM\0"
"NLO\0""PQR\0""STU\0""VWX\0""YZ\0");

 で、文字リテラルの多次元配列を実現しようとしました。
  でも、こんな警告でる
   間接参照のレベルが 'char ** '
      と 'char [36]' で異なっています。
 また、別の見方をすると
  *s1[]={"ABC","DEF","HIJ","..","YZ"};

公書いたら↑のように宣言せねばならない。
 だけど、こう書くと文字リテラルではなくなる。

 
成り立ってる理由はchar *s1=("ABC\0""DEF\0""GHI\0"
"JKM\0""NLO\0""PQR\0""STU\0""VWX\0""YZ\0");

 こう宣言して、++s1;すると一文字づつしかアクセス
 できない。 だが、上記のようにchar **s1="etc";
 とすると++s1;は、リテラル単位でアクセスする。
  
   すなわち、僕が考えた形は成り立ってるのだ。
 じゃあ、いったいなんで警告されるのだ。
キティガイデタ━━━━━━(゚∀゚)━━━━━━ !!!!!
signal()とかでタイマーで再帰的に呼び出す処理をさせる場合、親スレッドと子スレッド
がいて、子スレッドの方でこのsignalでタイマーをセットして処理させることは可能ですか?
>>346
落ち着け。
signalはタイマーをセットしないし(たぶんalarmのことか?)、
タイマーは再帰的になにかを呼び出したりもしない。

ちゃんと説明して。
>>343-344
最初に、何がやりたいのを書け。
char s1[][4]={"ABC","DEF","GHI"..."YS"};
char *p=(char*)&s1;
これで済む話か?
> ++s1;は、リテラル単位でアクセスする

この間違った思い込みが元凶か。
>>331>>332>>333
stackが効いたりしたのでしょう。
>>350
(゚Д゚)ハァ?
誰か 350 を翻訳してくれ。
353超初心者。:02/12/01 13:38
Warning: illegal pointer combination (param)
ってエラーが出るんですが何を直せばいいんでしょうか。
346です。すみません。説明が混乱してました。

>>347
OSはLinuxなのですが、例えば signalでSIGALRMでコールバック関数
を設定してsetitimerである時間待ってから実行させる処理を再帰的に繰り返
すとします。
通常、タイマー処理(といういいかたでいいのかな)を単一スレッド内で行い
たい場合の一つの方法だと思うのですが、これを子スレッド内で
同じようにできるのでしょうか?(子スレッド内でsignal/setitimerする)
その場合、その子スレッドが終了した時にそのタイマー処理も終了するの
でしょうか?といった事が質問したかったのですが。
>>353
お前の書いたソースコード。
>>353
まるち。
>>354
pthreadではsignalはメインスレッドが受けると思ったが。
358714:02/12/01 17:12
それは分かるんですが・・確かに2つのスレに聞いたけど。。
359超初心者:02/12/01 17:14
うあ、714とかいって恥ずかしい。すみませんでした。
>>358
マルチポストが何故いけないか調べてこい。
調べた結果マルチポストはかまわないということが分かった
結果的にマルチ
363クレアラ汁:02/12/01 21:04
質問です:1kΩの抵抗に10vの電圧をかけ、流れる電流を20回計測した結果を
処理しその平均を求めるプログラムを作成してください。ただし許容差は±5%で、
電圧源の出力電圧の誤差は最大で±10%であるとする。
これらのパラメータから理論上ありえない計測値がでたら、入力データの番号と
「計測値が不正」のメッセージを出し、その回の計測は無視する。・・・・是非教えて下さい
このスレとC言語質問所スレってどう違うんですか?
>>363
許容差の意味がわからん。
許容誤差のことであろう。
>>366
ただいま電気科だがワカラン。まあ、それがわかれば簡単だすな。
> プログラムを作成してください

(・∀・)カエレ!
>>367
そうか?
他にも解決しなきゃいけない問題があるんじゃないか?
「電圧をかけ」「計測」「理論上ありえない計測値」
つーか、思いっ切り環境依存の話じゃないか?
おまいら、対応は 「未定義」 でおながいします。
371デフォルトの名無しさん:02/12/01 22:25
電源:10v±1v
抵抗:1kΩ
電流:電源/抵抗=10±1mA
許容差:±5%
よって、9mA*±5%〜11mA±5%となり、
8.55mAから11.55mAの範囲で正常とみなす。
372クレアラ汁:02/12/01 22:26
電圧をかけ:電源を入れる。
許容誤差のことは気にしないで下さい。
よろしくお願いします
許容差って平均とったときの許容誤差のことじゃなかったの?
374デフォルトの名無しさん:02/12/01 22:33
すれ違いなのでその話は雑談スレにでも行ったほうがいい。
375デフォルトの名無しさん:02/12/01 23:21
電源:10v±1v
抵抗:1kΩ
電流:電源/抵抗=10±1mA
許容差:±5%
よって、9mA*±5%〜11mA±5%となり、
8.55mAから11.55mAの範囲で正常とみなす。
376デフォルトの名無しさん:02/12/01 23:51
>>375
それは実効値か? 理論値か?
>8.55mAから11.55mAの範囲で正常とみなす。
実験して取ったデータが入力された時に、
上の、正常値にならなければ、
「再度入力して下さい。許容誤差範囲外です」
とか書けば良い。

378377:02/12/02 00:40
「計測値が不正」のメッセージを出し
って書いてあったな。すまん。
379デフォルトの名無しさん:02/12/02 01:53
inline void a()
{
//作業
}

と言う関数を,ヘッダーファイルの中で,
inline void a();
void a();
のふたつで,プロトタイプ宣言してみましたが,未解決ですと表示されてコンパイルできませんでした。
そこで,関数の実体の方のinlineを取ったらコンパイルできました。
inline関数の時は,どうすればコンパイルできるようになるのでしょうか?

win98
VC++6.0
です
低レベルだとは思いますがご教授ください
visualc++を使ったプログラミングの課題をやるのに
(まだDOS窓しか使ってないので、)文字に色をつける等ができる
関数が使えるヘッダファイル(拡張子がhのもの)を学校側からもらってるんですが

/*マクロ定義*/
#define KEY_UP (0x48)
#define KEY_DOWN (0x50)

こういったことが書いてあって
これを利用すると、キーボードの↑を押した時に
何か処理をさせるみたいなことができるらしいんですが
使い方がわかりません、どう使うんでしょうか?
スレ違いやん?
いつから宿題丸投げスレになったんだ?
383380:02/12/02 02:41
>>382
一応ポインタ変数とか構造体までやってて
操作がまだscanfで何か入力しかできないので、入力してEnter押す
では味気ないからってことで使えるようになってるだけです
課題そのものはデーターベースみたいのを作ることで全然丸投げではないです
>>383
スレタイ分かってるか?

  「C言語のことは俺に聞け」

つまり裏を返せば

 「C言語と関係ないことは俺に聞くな」

ってこった。分かるな?
385380:02/12/02 02:49
>>384
C言語と関係ないなら何と関係あるんですか?
386デフォルトの名無しさん:02/12/02 02:51
>>385
タダの煽りなので気にしないほうがよろし。
387380:02/12/02 02:52
>>386
いえ、知識がないからホントにわからないんですが…
ウィンドウプロシージャって知ってる?
>>387
(゚Д゚)ハァ?おまえが授業中に情報聞き逃すかなんだしたんだろ?
>>380だけで使い方分かるやつなんていねーよ。
390デフォルトの名無しさん:02/12/02 02:56
VBすら挫折する糞SE。
PGを数人原子炉現地デバッグに缶詰にさせ数億円の被害
【八千代】ソレすら作れないってヤバいだろ【市民】
http://pc.2ch.net/test/read.cgi/prog/1038753020/l50
391380:02/12/02 02:56
>>388
聞いたこともないです…
392380:02/12/02 02:58
>>389
いえ、その使い方(全部の内容)は説明してないんです
プログラミングの経験がある人が何人か使っててできることがわかっただけで
>>392
宿題丸投げは宿題スレへ。
WindowsでのC/C++プログラミングは、VC++スレとかで聞いてみれば?
394ぬるグラマー(初心者):02/12/02 03:20
>>380さんのはこんな感でできそうな感じですけど。
もっと良い方法知ってる人居たら教えて。
#include <stdio.h>
#include <conio.h>
/*マクロ定義*/
#define KEY_UP (0x48)
#define KEY_DOWN (0x50)
int main(void)
{
int c;
if(getch()==0){
c = getch();
if(c == KEY_UP)printf("KEY_UP!");
if(c== KEY_DOWN)printf("KEY_DOWN!");
}
getch();
return 0;
}
395ぬるグラマー(初心者):02/12/02 03:21
>>394でだめなとこも教えて。
396デフォルトの名無しさん:02/12/02 04:34
>>380
かわいそう…
>>394
まともに動かねーぞゴルァ
>>394
はっきりいってスレ違い。

>1 GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
400デフォルトの名無しさん:02/12/02 12:24
getsとgetline、どちらを使うほうがカッコイイ?
>>400
getlineなんてC言語の標準ライブラリにはない。
getlineだろ、当然
403403:02/12/02 13:01
UNIXでネットワークプログラミングをしているんですが、

サーバがlistenで待って、クライアントがconnectで接続。
その後、クライアントがshutdownすると、
「パイプが切断されました」と言って、サーバも終了してしまいます。

どうすればクライアントの切断(予期しない切断も含める)を
正常処理できるでしょうか?

お願いします。
EPIPEをトラップ
SIGPIPEをトラップ
406デフォルトの名無しさん:02/12/02 13:08
POSIXってなんですか?UNIXの仲間ですか?
407404-405:02/12/02 13:08
すまん、404は間違い。
>>406
板違いっぽいが、UNIXベースのOSの規格。
409403:02/12/02 13:10
>>405さん
ありがとうございます!やってみます!
>>406
POSIX: Portable Operating System Interface
OSのAPIの国際標準規格。
>>408
Unixに限らない。Windows NT/2000もPOSIXに準拠してる。
>>411
どこがどのように準拠しているのかと。
>>403-412
スレ違い。
414デフォルトの名無しさん:02/12/02 13:37
どうしてgetchはWin32s およびWin32 GUI のアプリケーションでは使用
してはいけないのですか?
>>413 逃げた!
>>411
UNIXをベースにしてるだろが。
>>414
これもかなりスレ違いだが、コンソールを持ってないからじゃないか?
>>416
NT/2000がUNIXベースのOSとは初めて聞いた。
Java や C# は C++ をベースにしているが、C++ ではない。
それと同レベルの話。
>>419
つまり>>411は正しいということだな。
>>420
Microsoft の言を信用するなら正しい。
一般には、完全準拠ではないと言われている。
漏れは確かめていないので分からない。
423デフォルトの名無しさん:02/12/02 19:01
つまり>>411は正しいということだな。
激しくボッキ!!
micro kernel
>>423
>408は、POSIXがUNIXをベースにして制定されたということ。
NTが準拠してるかどうかは別問題で、>416はそのへんを誤読している。
でもNTってmachベースって話じゃなかったっけ。
427デフォルトの名無しさん:02/12/02 19:28
符号なし整数を使いたいのですが、
unsigned int i;
と宣言しても、符号付き整数になってしまいます。
どうやったら符号なし整数を使うことができるのでしょう?
>>427
つーか、どうやって符号付き整数になったかどうかわかったの?
429デフォルトの名無しさん:02/12/02 19:39
符号付整数がとれる最大の値に1足すと、マイナスの値
になってしまうのです。
>>429
いや、だから・・・どうやってマイナスだとわかったのかと。
もしかしてprintf("%d", i); で表示してたってオチじゃないだろうな。
>>426
マイクロカーネルと言う意味ではmach的ともいえるけど
VMSを設計したデビッドカトラーをVAXから引き抜いて作らせたから
内部構成はVMSに似ているらしい。
(VMSを一文字ずらすとWNTになるというのはヨタ話くさいと思うけど。)

POSIXは準拠でないと一時期米政府機関がシステムを納入させてくれなかった関係で
形だけ最低限対応したというのが実態にちかいんじゃなかろか。
432デフォルトの名無しさん:02/12/02 19:46
そのオチでございます。
printf("%d", i);
だとあかんのですか。。。それは知りませんでした。
で、どうやって表示すればいいのでしょうか?
>>432
printf("%u", i); デス。
434デフォルトの名無しさん:02/12/02 19:53
>>433
ありがとうございました!
(しかし、それは知らなかった。。。)
>>431
実態はたぶんそんなとこだろうが、それ以前に使いようがない。
Interixってんがそうなのかなぁ。
C言語はどうやって作ったんですか?

あとB言語ってのがあったそうですけど難しいんッスか?
処理系や解説書の入手自体難しい。
ってか入手できるの?
439デフォルトの名無しさん:02/12/02 21:30
無理なんじゃねーのB言語の発展版がC
>>439
常識
Bのそのまた前の
BCPLの本ならまだ売ってるが。共立出版。
VMSをずらしたらWNTってのは本当だろう。
VMSの設計者David Cutlerが
Win NTも設計したんだから。
>>436

↓ ここに全部書いてある
http://www.cs.bell-labs.com/who/dmr/
444雑談:02/12/03 00:36
「Cの次はP。その次はLである。」(DやEではない!!)
「C言語はそれ自身でかかれた言語である」
C FAQ 20.38 そもそも、「C」という名前の由来は。
http://www.catnet.ne.jp/kouno/c_faq/c20.html#38
446デフォルトの名無しさん:02/12/03 15:42
変な質問なんですけど・・・。
Cで変数やら配列をたくさん使いすぎると、
変数や配列の中身が変わったりしませんか?
>>446
メモリリークでも起こしてるだけじゃないのか?
448446:02/12/03 16:01
>>447
初心者なのでメモリリークの意味もあまりよくわからないです。
mallocを一切使わずにプログラムを書いているので、
その辺が原因なんじゃないかと踏んでいるんですが・・・。

とりあえず、a[50]→a[100]とかにして宣言し直したら、
配列の中身は変わらなくなりました。
Cってそういうとこ原因わかりにくいからなぁ。
>>448
配列の添え字外をアクセスしているに100カノッサ。
>>445の脳ミソをオーバーフローしてるに1000pF。
452446:02/12/03 16:18
>>450
それはないはずです。
今まで普通に動いていたのに、配列を増やしたら急におかしくなった。
その配列はプログラムの最初以外はアクセスしないのに、
最後で出力すると中身が変わっていた。
でも、使うギリギリまでしか添字の範囲を取っていなかった。
>>452
環境とソース。
454446:02/12/03 16:27
>>453
環境はよく分かりません。スイマセン。
プログラムは600行ぐらいあるのでちょっと・・・。
外部変数としての配列は20種ぐらいです。
配列の種類増やしたぐらいでもし中身が書き変わってしまうとすれば、
俺は職を失うことになる(((( ;゚Д゚))))ガクガクブルブル
初期化ミスに1.2ml
>>454
関係ないとこぶち壊してたのが、配列広げたせいでそこまでカバーしちまった
とかかも。
いずれにせよ、コンパイラのバグよりも自分の環境も分からない香具師のバグ
のほうに3000nxt。
458デフォルトの名無しさん:02/12/03 16:40
文字列操作とかしていない?
for(i=0;i<=N;i++)
とかのNの部分とか変更ミスってない?
Borland C++Builderとかなら、CodeGuardかければ一発でわかるんだけどな。
460446:02/12/03 16:47
>>457
スイマセン。

>>458
文字列は全く使っていません。
for文の中身もほとんど、for(i=0;i<N;i++) で統一しているので。
Nの部分もすべてマクロ定義にしています。
>459
あれだ、BoundsCheckerってば、体験版あったはず
>>446
> Cで変数やら配列をたくさん使いすぎると、
> 変数や配列の中身が変わったりしませんか?
ansi準拠な処理系かつansi準拠ななソースだと仮定すれば
「そ ん な こ と は 絶 対 に 起 こ ら な い」
よって処理系がバクっているか君のソースがバグっている
可能性から言うと君のソースがバグっている可能性が高い
>>460
すごくまさかとは思うが・・・・
LSI-C86試食版のような、16bitコンパイラ使ってないだろな。それで
配列が1セグメントを超えてしまったような。今時ないよな。
464446:02/12/03 16:56
とりあえず直ったのでもう大丈夫です。
回答していただいた皆さん、ありがとうございました。
>463
セグメント超えるような配列は、
コンパイラがさじ投げる気がするけど、、、
>>464
いったいどう直したのか聞いてみたいのは漏れだけか?
>>466 変数増やしたりしてたらメモリリークが気づかない箇所にうつっただけだろ。
>>467
バグが隠れただけだってことは間違いないだろうが、malloc()は使ってないっ
つてるから(信用するなら)メモリリークじゃないだろう。つーかメモリリーク
で関係ない所を壊すって症状は、あまり聞いたことないんだが。
スタックオーバーフローだろ。
470デフォルトの名無しさん:02/12/03 18:48
テスト
>>469
446が再帰なんて使ってるとも思えんのだが。

まぁうだうだいってもソース晒す気がないのなら無駄だがな。
>>471
スタックオーバーフローの要因なんぞ再帰以外にもあるがな。
>>446
何度も連続してコンパイルして居ると、*.objが、前のデータを流用して、
容量増やした時に、配列の先頭を変えずに、確保しようとして、ほかの配列で
使って居る所を、上書きしたりする事もあるから、*.objを消してから
コンパイルした方が良い。
>>473
そりゃコンパイラかリンカのバグってこと?
つーか処理系は何
>>473
ネタか ?
インクりメンタルコンパイルかなんかでコンパイラがバグってたらあるかも知れんが、俺は聞いたことない。
ネタじゃないなら、ソースキボン。
>>473
VC6の統合開発環境でよく起こるな。
あのバカメイクのせいで。
477デフォルトの名無しさん:02/12/04 01:57
構造体のポインタにつぃて聞きたいのです。

配列でない要素をポインタで扱う時
data->a=100;
と言う風にできるんですが配列の場合はどうすればいいんでしょうか?
data->b[12]=100;
とかしたいんだけど
> data->b[12]=100;
> とかしたいんだけど

本当にそうしたいのであればそのコードでOKなはずだが。

data[12]->b = 100
とか
data[12].b = 100
とかしたいのではないかと推測。
>>477
mallocつかわないといけないらしい。
480デフォルトの名無しさん:02/12/04 05:36
>>477
struct Test
{
int a;
int b[20];
};
int main(void)
{
Test* data = (Test*)malloc(10);

data->a = 10;
data->b[12]= 10;

return 0;
}
こんな感じ?
>>480
せめて
Test* data = (Test*)malloc(sizeof(Test));
とすべきでは?
>>477
したらええがな。
483480:02/12/04 05:58
失礼!そうだね。
クソどもの集りだな
struct Test *data = (struct Test *)malloc( sizeof(struct Test) );
だろーがヴォケが。
485デフォルトの名無しさん:02/12/04 06:05
struct A
{
 char str[ 100 ];
};

struct B
{
 char * str;
};

void main()
{
 struct A a;
 struct B b;

 char src[] = "ABCDE";
 int srclen = strlen( src ) + 1;

 memcpy( a.str, src, srclen );
 printf( "A string is \"%s\".\n", a.str );

 b.str = (char *)malloc( srclen );
 memcpy( b.str, src, srclen );
 printf( "B string is \"%s\".\n", b.str );
 free( b.str );
}
486480:02/12/04 06:06
>>484
普段、C++で組んでるから癖が・・・
487480:02/12/04 06:08
477さん。
見たら直しといて下さいね。
>>486
それワカル
struct hoge{
hoge* p;
};
としたらえらい怒られた。
C++ で struct ってそんな使う?
interface
>>486
そうです。C++だともはやstructなんてキーワードは型キャストやsizeofに
使わないので、完全に癖になっています。
typedef struct hoge hoge;
struct hoge
{
hoge *giko;
};
他の言語でどうのって言い訳カコワルイだけ
#define begin { と一緒
拡張子を".c"にしてg++でなくてgccでコンパイルしてから投稿すればいいという罠。
>>493
それはそれで痛いが、それはわかっていてやっているので違う問題だと思われ。
496初心者です。:02/12/04 20:19
#include<stdio.h>
void keisan1(int a,int b);
void keisan2(int *a,int *b);
int main(void)
{
int kazu1,ans1;
int *kazu2,*ans2;
kazu1=10;
ans1=9999;
kazu2=&kazu1;
ans2=&ans1;
keisan1(kazu1,ans1);
printf("%d\n",ans1);
keisan2(kazu2,ans2);
printf("%d\n",*ans2);
return 0;
}
void keisan1(int a,int b)
{
b=a*100;
}
void keisan2(int *a,int *b)
{
*b=*(a)*100;
}
このプログラムの実行結果は
9999
1000
になります。
9999になるのは、keisan1の関数がvoidだからということでよろしいのでしょうか。
それと、呼び出しがkeisan(*kazu2,*ans2);ではなく
keisan2(kazu2,ans2); なのはなぜですか?
>9999になるのは、keisan1の関数がvoidだからということでよろしいのでしょうか。
よろしくないです。
498デフォルトの名無しさん:02/12/04 20:30
keisan1の方は値のみ、keisan2の方は値が
格納されているアドレスが渡されている。
499初心者です。:02/12/04 20:49
void keisan1(int a,int b);
int main(void)
{
int kazu1,ans1;

kazu1=10;
ans1=9999;
keisan1(kazu1,ans1);
printf("%d\n",ans1);
return 0;
}
void keisan1(int a,int b)
{
b=a*100;
}

このプログラムの間違いはどこなのですか?
正しい。
501デフォルトの名無しさん:02/12/04 20:56
void keisan1(int a, int* b)
{
*b = a * 100;
}

int main(void)
{
int kazu1 = 10;
int ans1 = 9999;

keisan1(kazu1, &ans1);
printf("%d\n", ans1);

return 0;
}
このコードを見て自分で考えるべし!!
502初心者です。:02/12/04 20:57
>>499のプログラムはなぜ実行結果が1000にならないのですか?(半泣)
>502
どんなCの本にでも載っていることだとおもうが。
504デフォルトの名無しさん:02/12/04 21:07
>>502
void keisan1(int a, int b)の
int a 10が格納された変数
int b 9999が格納された変数

void keisan1(int a, int* b)の
int a 10が格納された変数
int* b 呼び出し元のans1変数のアドレスが格納されている変数

呼び出し元の変数の中身を変えるには変えたい変数のアドレスが必要
よって呼び出し側に中身を変えたい変数のアドレスを渡す

説明が下手でごめん・・・
505初心者です。:02/12/04 21:07
>>501
はい。

1.まず、int型変数kazu1とans1が作られます。
2.kazu1に整数10、ans1に整数9999が入りました。
3.keisan1関数に10とans1のアドレスが飛びます。
4.keisan1関数で10×100、つまり1000が*bに格納されます。
5.keisan1関数から、10とans1のアドレスが帰ってきました。
6.ans1の中身は1000なので、printfの実行結果は1000になります。

あってますか?
>>505

> 5.keisan1関数から、10とans1のアドレスが帰ってきました。

アドレスなんかどこで返してるか?

507デフォルトの名無しさん:02/12/04 21:11
OK!!
508デフォルトの名無しさん:02/12/04 21:13
>>507
訂正。
>>506さんが言うようにそこはおかしい。
509初心者です。:02/12/04 21:17
じゃあ何が帰ってきてますか?
>>476
nmake.exe のせいと言うことか ?
nmake.exe のバグで、>>473 みたいなことするのは難しいと思うぞ。
それとも、お前のバカメイクと言う奴は *.obj の中身を触ってるのか ?
511デフォルトの名無しさん:02/12/04 21:21
>>509
帰るというニュアンスがおかしい。
keisan1関数に値を渡しているだけ。
512511:02/12/04 21:23
「渡す」より「教えている」の方が分かりやすいかな?
513初心者です。:02/12/04 21:24
>>511
keisan1関数はmainになにも値を返していない?
何も返さないから、voidっていうことにしたいんですね :-)
>>513
VBと混同していない?
C言語では引数で「返す」ことはできない。
516511:02/12/04 21:27
>>513
そう。
返すとは、
int keisan1(int a)
{
return a*100;
}
のようにする事。
>>515
引数で返すことができないと言い切ってしまうと間違いになるが。
518初心者です。:02/12/04 21:28
やはり誤解していました。
値を返すにはreturnが必要なのですね!
519初心者です。:02/12/04 21:29
値を二つ返したい場合は、
return (a,b)ですか?
>>519
そうきたか、やっぱり。
521511:02/12/04 21:32
いや、値を複数返すのは不可能だから、
引数で*を使用してやるしかない。
さてポインタの話になるわけだが。
523デフォルトの名無しさん:02/12/04 21:33
>>520
予想通りでしたか?
最初はみんな考えそうなことですね。
524初心者です。:02/12/04 21:36
なるほど〜。だからポインタが必要になるわけですね。

ポインタだと、変数の中身を関数で変更してしまうから値を返す必要がないというわけですね。
さてここからポインタ厨の講釈が始まるわけだが。
526JPS ◆M0LaMzf5rY :02/12/04 21:37
ローマ字を日本語に直すプログラムを作ろうと思うんだけども。
最初は半角カタカナでやったほうがいいよえね?
全角って2バイト?
とりあえずこの初心者は話にならんから、
K&Rでも真っ当に読み直せ。以上。
528デフォルトの名無しさん:02/12/04 21:38
>>524
そうだね。
529初心者です。:02/12/04 21:38
ああ、わかった。うれしい!

みなさま、感謝です!
試験まであと4日、がんばります!
530JPS ◆M0LaMzf5rY :02/12/04 21:41
あ。なんでgetchar使うときはint型の変数使うんでつか?
531デフォルトの名無しさん:02/12/04 21:41
>>529
がんばれよ!!
>>530
charだと0xffとEOFの区別がつかないから。
>>530
初心者は素直にFAQよんどれ。なんども厨房な質問すんな。
>>529
他人事ながら心配になってきた。もしかしてネタ?
535初心者です。:02/12/04 21:44
>>531
はい!ありがとうございます!
あと4日でポインタ配列まではマスターしなければならないので、
また教えてくださいね。
536JPS ◆M0LaMzf5rY :02/12/04 21:47
>>532
0xffって具体的に何?
537初心者です。:02/12/04 21:48
>>534
日曜日に情報処理活用能力検定2級受けてきます。
>>536
だからFAQ読めって。お前は自分の都合の悪いことは無視して、
質問することしかできんのか?
539532:02/12/04 21:50
…。
これ以上どう具体的にしろと……。
>>536
ASCIIコード表でも見れや。
つーか、>>1
>入門書レベルの質問はC言語質問所スレへ行け。
って書いてあんのにさ。きっちり誘導すれば厨房初心者は向こう
行ったろうに。気まぐれで答えてやったりするから収拾つかなくなる。
542デフォルトの名無しさん:02/12/04 21:53
>>536
16進数 0xff
10進数 255
2進数 11111111
さてJPSはまたしても無視するわけだが。
544質問に答えてきた者:02/12/04 21:55
>>541
すまん、>>1を読んでなかった・・・
545初心者です。:02/12/04 21:56
C言語質問所 <45>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/

↑こちらで質問したほうがよかったですか?
ずいぶん荒れていたので・・・。すいません。
「C言語のことは俺に聞け」とあれば聞きたくなる気もする。

でも入門書レベルの質問は以下にお願いします。

C言語質問所 <45>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/
547JPS ◆M0LaMzf5rY :02/12/04 21:59
255?それがなにか意味あるの?
unsigned charだったら表現できるしょ?
>>546
正直言って「C言語のことは俺に聞け」とあればネタスレだと思ってしまう。
でもあっちは荒らされているのでこっちにも書きたくなる。
やはりJPSは無視し続ける訳だが。氏ね。
>>548
あっちは
>まずは腕立て伏せ100回。
>話はそれからだ。
だもんなあ〜。
551JPS ◆M0LaMzf5rY :02/12/04 22:05
だれか教えてくれええええ
入門書に書いてないYO!
K&Rに任意の可能なcharってあるけど
charだと256種類表現できるわけでしょ?
そこには英数字いれても十分空きがあるわけだから
0xffはcharで表現できるんでないの?
>>551
EOFを入れて257種類だってば。
553JPS ◆M0LaMzf5rY :02/12/04 22:09
>>552
ってことはcharで256個の文字を保持してるってこと?
ANSCIIのコード表だと127個しかないけどもどゆこと?
>>553
ASCIIしか相手にしないの?
555晒しage:02/12/04 22:10
ANSCII
>charで256個の文字を保持してる

重症だな
>>551
getchar() の入力が必ずキーボードであると想定するな。
558JPS ◆M0LaMzf5rY :02/12/04 22:14
いま色々みてたら、EOFの値は処理系依存で、大抵-1だけど
charが符号付かどうかも処理系依存だから、符号なしの場合は
EOFを認識できないからintを使うって書いてたけど、これであってんの?
>>557
身近なところだとファイルからリダイレクトってのがあるな。
JPS ってさ、出てきた時は、正直、こいつちょっと頭悪いんじゃないか
って思ってたけどさ。そうじゃなかったよ。








ものすごく頭悪い。
561デフォルトの名無しさん:02/12/04 22:17
まあ、色々な疑問を持つのは良いことだけど・・・
562JPS ◆M0LaMzf5rY :02/12/04 22:19
ていうかchar型で256種類もどんな文字あるの?
>>560
お前も昔は同じようなもんだったんだろ?プ
564ためしに誘導してみるテスト:02/12/04 22:20
>JPSさん
厨房な質問はこちらでお願いします
c言語質問所
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50
>>558
何のページをみてるんだか知らんけど、その説明じゃ大嘘だ。
(よりによってなんでまたそんな説明のページを…)
charが符号つきだろうが符号なしだろうが関係ない。
566デフォルトの名無しさん:02/12/04 22:22
カレー
>>564
あっちでは逆にこっちに誘導しているみたいだけど
どうなってんの?
568JPS ◆M0LaMzf5rY :02/12/04 22:23
>>565
この説明が一理あるのも分かるけど。
EOFって文字じゃないわけでしょ?ただの整数値だよね?
それだったらEOFもchar型の文字にしてって事はなんでしないの?
569JPS ◆M0LaMzf5rY :02/12/04 22:25
getcharによって入力された文字がAだったとします。
しかし変数に記憶されるデータは65という数値データになるのです。
この65という数値はAに対応する「文字コード」になっています。
getcharは取得した文字を文字コードに変換して変数に記憶させるため、
int型を利用します。

この説明で正しい?
>>568
じゃあお前のプログラムが読むファイルに 0xff が出てきたら
そこがファイルの終端ってことにしろよ。絶対しろよ。
>>568-569
557 や 559 は完全無視か?
getchar() の正常値は、char が取りうる全ての値。
そのどれかを EOF にすると、正常値なのか EOF なのか判断できなくなる。
>>568
まあchar型を8bitと仮定しよう
そうするとchar型のとり得る値には256通りあるわけだ。
よって必然的にgetchar()の返す値も最低256通り必要になる。
そしてそれに加えてEOFという特殊な印を1種類返す必要があるわけだ。
そうするとgethcar()は最低257通りの値を返さないといけないことになる。
つまりchar型では不可能なんだよ。分かる?
JPS に一言。
getchar() が返すのが文字であって、数値ではないと思っているのなら間違っているから改めてくれ。
574デフォルトの名無しさん:02/12/04 22:30
>>572
おっ、分かりやすい。
575デフォルトの名無しさん:02/12/04 22:30
>>571-572
お前ら優しいな。
576JPS ◆M0LaMzf5rY :02/12/04 22:31
ああ!わかりますた。256種類使うかどうかに関係ないんでつね。
0〜255の値を返すから、それ以外の整数地をEOFにするんでつね?
>572
ふと思ったけど、sizeof(char) == sizeof(int)な環境はどうなるんだろう...?
>>576
0〜255かどうかは処理系依存だが
まぁだいたい理解できたみたいだからOK
579JPS ◆M0LaMzf5rY :02/12/04 22:35
ありがとございました。
>>577
色々調べてたらこんなのがありますた。

getchar は文字を返す関数なのだから、 char の変数に戻り値を受けた。なぜこれが非難の的になるのか。

 あまり難しく考えることはありません。マニュアルを見てください。どのマニュアルにも、 getchar() の型は int と書かれているし、ANSI Cではそのように定義されています。従って、 getchar() の戻り値は int の変数で受けるのです。
 getchar() は、実際、0〜255の値と、 EOF という値(おそらく-1)の、合計257通りの値を戻します。これは char の範囲では受け切れません。あえて char の変数で受けるなら、 EOF と255は区別できないことになります。

 「私の処理したいファイルの中には255などという文字コードは使われていないから char で受けても実害はない」という主張を見たことがありますが、 int で受ければさらに実害はないはずです。

580デフォルトの名無しさん:02/12/04 22:36
つまり色々調べずに質問してた、と。
>580
まあ調べもしないヴァカな質問にも、答える香具師がいるからな。
582JPS ◆M0LaMzf5rY :02/12/04 22:40
調べてもわからないんです。
自分で確認しながらじゃないと、理解できないんで。
ここでみんなと語らい、確かめてますた。
583JPS ◆M0LaMzf5rY :02/12/04 22:42
ふと思ったけど、もしね、char型がgetchatのためにあったとしたら、
0xffをEOFとすれば、int使わなくてもいいんだよね?
>>583
言いたいことは分かるが。
ISO/IEC 9899:1999
7.19.7.6 The getchar function
Synopsis
1 #include <stdio.h>
int getchar(void);
Description
2 The getchar function is equivalent to getc with the argument stdin.
Returns
3 The getchar function returns the next character from the input stream pointed to by
stdin. If the stream is at end-of-file, the end-of-file indicator for the stream is set and
getchar returns EOF. If a read error occurs, the error indicator for the stream is set and
getchar returns EOF.

getchar() が返す正常値については何も記述がない。
586デフォルトの名無しさん:02/12/04 22:43
>>582
アセンブラ勉強すると理解度UP
>>583
分からん。どゆこと?
>>584
わかるのか、すごいな。
漏れは分からなかったぞ。
589JPS ◆M0LaMzf5rY :02/12/04 22:47
>>585
getchar()が返す正常値ってchar型の文字のコードでないの?
>>577
getchar()が返す正常値は処理系のchar型の範囲じゃないのではないか。

The byte input/output functions ? those functions described in this subclause that
perform input/output: fgetc, fgets, fprintf, fputc, fputs, fread,
fscanf, fwrite, getc, getchar, gets, printf, putc, putchar, puts,
scanf, ungetc, vfprintf, vfscanf, vprintf, and vscanf.
ちなみに、EBCDIC 942 では、~ は 0xFF だな。
>>590
??
>>589
だから何度も文字とは限らんと言っているだろう。
大体文字コード体系も限定されとらん。
0〜255まですべて文字で使うコード体系の環境で動くプログラムをC言語で組むかもしれないだろ。
ちなみに、Wingdings では 0xFF は Windows ロゴだな。

ASCII 系の環境でも、あるコードが ASCII に定められていないからと言って
文字として使われていないとは思わない方がいい。
595JPS ◆M0LaMzf5rY :02/12/04 22:55
>>593
591みたいにね。文字とは限らんって他にはたとえば何があるのかな?
>>585
> getchar() が返す正常値については何も記述がない。

それは...

> The getchar function is equivalent to getc with the argument stdin.

だから記述がないだけ。getchar() → getc() → fgetc() にある。

If the end-of-file indicator for the input stream pointed to by stream is not set and a
next character is present, the fgetc function obtains that character as an unsigned
char converted to an int and advances the associated file position indicator for the
stream (if defined).
>>595
111111111111111100000000000000111111
みたいな文章でなくて何かのデータを
getchar() で読み込むことだってあるのよ。
598JPS ◆M0LaMzf5rY :02/12/04 23:00
>>597
ああ。それがさっき言ってたファイルの話か。
ベンキョウになりますた。
>>549
プ
>>597
それ文字やん。誰も「文章」云々は議論しとらん。話をややこしくするなよ。

>>598
何の勉強になったんだ ?


要は、バイナリデータを getchar() で読むこともあるってこと。あまりお勧めではないけどね。
>>600
>>597の1111・・・ってのはそういう文字列のことを言っているわけではないと思うんだが・・・
本当に分かったのか…?
603JPS ◆M0LaMzf5rY :02/12/04 23:05
バイナリデータを読み込むのに使うんだなって勉強になりますた。
>>600
>要は、バイナリデータを getchar() で読むこともあるってこと。あまりお勧めではないけどね。
なんで?フツーに大丈夫だと思うが。お勧めでない理由は?根拠は?
605JPS ◆M0LaMzf5rY :02/12/04 23:08
>>602
わかったYO!なんとなくだけど。
バイナリデータだったらそのまま0と1の羅列でしょ?
8bitをフルに使う可能性は120%あるってことか!
漏れも、fread() を使って 1 文字ずつ読むとか一気に読んでバッファリングして
プログラムを複雑にしたりするくらいなら、getchar() や fgetc() のがいいと思う。
元々 FILE はバッファを持っているし。
ブランクって空白文字のこと?
タブとかいれないで。いわゆるスペースか?
定義による
すっとこどっこい
厨房だった俺はオヤジの洗濯屋けんちゃんを発見して
サルの様に抜きまくっていたのはいいんだが、
なぜか自己嫌悪に駆られてビデオを捨ててしまったのだよ(オヤジのなのに)。

あれから15年近く経つけど、オヤジは何も言ってこない。
でもひょっとしてオヤジも大切にしてたのかも…と思うと、やっぱり返してあげたいんだよね。
611デフォルトの名無しさん:02/12/05 00:03
ええ話あげ
すれ違いサゲ
613デフォルトの名無しさん:02/12/05 00:27
>>610
泣けました・・・
ビデオデッキを捨てたのか・・・
泣けるか!ヴォケ。
質問。
今、VC6 でこんなコードが通るのを確認してしまった。

int $ = 123;
printf("%d\n", $);

変数名に $ は OKなの??
617デフォルトの名無しさん:02/12/05 00:43
>>616
漏れも通った

printf("%d\n", $_);

Perlっぽいな
VCで通るからといって規格上正しいコードと思ったら大間違い。
VC++的には正しいコードなんだろ。
規格上正しいコードだからといって
メジャーなコンパイラで通ると思ったら大間違い。
>>616
gccでも通るよ。
>>617
「漏れも」 じゃなくてコンパイラを書いてくれ。

gcc-2.95.1 で通った。
BCC 5.5.1 では通らなかった。

まあ、C では $ はメタ文字じゃないから、通ってしまうのもわからんでもないが・・・。
template<typename $> hoge(){$ $$}

よし、今日からこうしよう。
Tはもう古い。通はこれ。
しかし規格にも MSDN にも、識別子に $ が使えるなんてちっとも書いてないんだよなあ・・・。
>>623
ほんとにPerlみたいだよ…
std::string A$;
627デフォルトの名無しさん:02/12/05 01:19
結論:
$はperlっぽい。


      $   は   p   e   r   l   っ   ぽ   い   。
>626はBASICっぽいがな。
629デフォルトの名無しさん:02/12/05 01:27
>>616
というか、どういう経緯でそういうコードを書こうと思ったのか知りたい。

そういえば、昔、知り合いが _ だけの変数を使っていて、間違いじゃないけど、
ちょっとショックを受けた。
>>629
知り合いは MLer!!
631デフォルトの名無しさん:02/12/05 01:30
int _;
_= --_ - _--;
>>631
禿しく未定義!!
>>631
nxt?
モールス信号みたいね。
_ は Splus だヴぁー?(・┏┓・)
636デフォルトの名無しさん:02/12/05 01:37
BrainFacker
日本語変数名使用可能なC処理系ってあったよね?
int  =2,(・,┏,┓,・),; /* 全角スペースは使用できるだろうか? */
char *ヴァー="(・┏┓・)";
printf("%d\n", );
638相互リンク:02/12/05 01:42
http://pc3.2ch.net/test/read.cgi/tech/1038031395/266-

>>622 が gcc で通ったと報告しなかったらうんちMSが
「これだから VC++ は…」と言っていたに5600万ガバス!
GCC.EXE (GCC) 3.2 (mingw special 20020817-1)
でも通りました。>$
>>627
perlなら$_を使え!

$_ = 2;
main(){
 printf("%d\n",$_);
}
>>640 それだ!(gcc 3.2 on Cygwin)

$_=1,*$=&$_,$1;
main() {
 *$='#'%~!&$1;//
 printf("%d\n",*$);
}
_;main(){printf("%d\n",
  (6^_^9)
);}
>>642
そろそろつまらん
644デフォルトの名無しさん:02/12/05 02:11
C言語始めたいんだけど、お勧めの参考書あります?
645デフォルトの名無しさん:02/12/05 02:16
/* Hello world */
#include <stdio.h>
int main(){
printf("Welcome to HellWorld!");
return 0;
}
ここは参考になるかも。
ttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
647デフォルトの名無しさん:02/12/05 02:20
呪いは始まったとか書いてあったんですけど・・
pa_003_a はもういいでつ
$は規格が出来る前のコンパイラで使えた。
gccは互換性のため$を使えるようにしているが、オプション指定でエラーにすることも出来る。

ってことだったような。
わかった、こうだ!!

double A = 12.345;
char A$[] = "abcde";
>>650
外出
ちょっと質問。

for(...) {
 for(...) {
  if(...) {
   処理1;
   goto next_loop;
  }
 }
 処理2;
next_loop:
 ;
}

これをgotoもフラグも使わずに書ける?
関数を分けるとかも無しで。
653652:02/12/05 16:07
ちなみに、ifや2番目のforの条件式の中身は、
その上のループカウンタに依存します。
setjmp...longjump...
そんな制御文作るやつの宿命だ > goto hell
656652:02/12/05 17:19
>>653
こうですか?

for(...) {
 jmp_buf mark;
 if(setjump(mark) == 0) {
  for(...) {
   if(...) {
    処理1;
    longjmp(mark,1);
   }
  }
  処理2;
 }
}
657652:02/12/05 17:21
× >>653
>>654
>>652
for(...) {
  for(...;式;...) {
    if(...) {
      処理1;
      break;
    }
  }
  if (!式) {
    処理2;
  }
}
式はフラグとみなすか?
処理1の中で式の値が変わるかも。
660658:02/12/05 19:53
for(...) {
  for(...;;...) {
    if (!式) {
      処理2;
      break;
    }
    if(...) {
      処理1;
      break;
    }
  }
}
さっさとbreak label;を仕様に盛り込め
662デフォルトの名無しさん:02/12/05 21:15
bolandのコンパイラの設定の方法を優しく教えてくれるサイトはありませんか?
なければ誰か教えてください
663デフォルトの名無しさん:02/12/05 21:31
質問があります。
私は、C言語でDOS/VマシンのCOM1ポート(RS232C)を
DOSモードで制御して外部機器へ命令したいと考えています。
しかし、ネットや本で調べたところVBなどで書くのが主流のようで
プログラムの方法がわかません。

なんらかの情報でもよいので教えていただけませんか?
よろしくお願いします。
664デフォルトの名無しさん:02/12/05 21:34
プリプロセッサに対して、
#error "逝ってよし"
みたいなことが出来ますが、
これをメッセージだけ表示するようにすることは
できますか?
if((fp=fopen("a.txt","r"))==NULL) exit(-1);
これで、exitをfflushにしてファイル操作をやめてプログラムを続行するのは駄目ですか?
>>663
DOS/VではVBは動かんと思われ
>>665
何をfflushするんだよ。stdoutか?
意味のある処理が続行できるんなら続行しろよ。
そんな一行だけ見せられても、お前のプログラムの仕様なんて分からん。
>>667
いや、こういうのをよく見るんだけど、exitでは全てのファイルバッファをフラッシュするというから
そういうことをする必要があるのかなと思って…
そのまま続行したい場合は何もしなくていいのですか。

というか変なこと言ったみたいですね。スマソ
669デフォルトの名無しさん:02/12/05 22:11
Pythonを基礎の基礎の基礎から始めたいんですが、本とかじゃなくてサイトで学習したいです。
オススメのサイトってありますか?
はいネタおもしろい〜
671669:02/12/05 22:16
>>670
え?誰に言ってるの?俺?
全然ネタじゃないですが・・・
Pythonって駄目なんですか?
672668:02/12/05 22:17

折れ?
だとしたらもういいや、鬱だ寝よう
673デフォルトの名無しさん:02/12/05 22:18
WindowsMEを使用しているのですが、
Cドライブのなかの「AUTOEXEC.BAT」にパスを書込めば完成なのでしょうか
・・・
675673:02/12/05 22:21
ダメです。コンパイラ動きません。
>>1 も見ないようなクソ共に一体何を教えろというのだ
677673:02/12/05 22:40
間違えてBAKのほうに書いていました。
bak all right. bak all right!
679デフォルトの名無しさん:02/12/05 23:23
つい先日Cを始めたんです。
今勉強してるんですがどうしても
for文、while文が理解できません。
どなたか教えていただけないでしょうか?
あと、for文ってCを学ぶ上でそんなに重要なものなんですか?
よろしくお願いします。
for(A;B;C)D;

A;label:if(B){D;C;goto label;}

while(A)B;

label:if(A){B;goto label;}
>>679
なくてもプログラムは書ける
…が、絶対覚えたほうがいい。
書き直すとこうなる

for( i = 0; i < 5; i++ ) {....}

i = 0;
while( i < 5 )
{
  i++;
}
682679:02/12/05 23:41
いろいろ自分なりにも勉強してるんですけど
難しいですね。

for(式1,式2,式3){...}

式1=初期化の式
式2=繰り返すかどうか調べる式
式3=変化のための式

こう書いてあるのを理解しようとしているのですが・・・。
高校一年生には難しいです。
それとも深く考えすぎですかね?

あと、もう一つせっかくなので質問させていただきますが
for文、while文はどちらも似た様なものなんですよね?
ということはどちらか一つだけ覚えれば十分てことですか?
よろしくお願いします。
683JPS ◆M0LaMzf5rY :02/12/05 23:45
>>679
for文はwhileぶんと似てるよね。たとえばさ

for(i = 0 ; i < MAX ; i++)
  printf("%d",i);
っていうのは

int i = 0;
while(i < MAX)
{
  printf("%d",i);
  i++;
}

ってなるしょ?whileに+αしたのがforって感じかな。
この場合はforの方がすっきりしてみやすいけど、
whileの方がずっと見やすい事もある。初期化が不要だったり、ポインタ演算使うときとか。
だから両方覚えたほうがいいYO!
>似た様なもの...ということはどちらか一つだけ覚えれば十分

それ言ったらifとgotoでも十分だが最も意味的に
分かりやすいのを書くのが定石
exitの仮引数って意味はあるんですか?
どんな値を渡しても、ちゃんと終了してくれるんでしょうか?
あと、returnに1とか渡して、main関数を終わらせるのは、間違ってますか?
686デフォルトの名無しさん:02/12/05 23:48
htmlファイルの解析したいんですけど
例えばソースファイル内に<B>があるが探したい場合
どうすれば効率よく検索できますか?
char *stringがあって、stringの中に\が含まれていたら、それを\\に置き換えたいです。

string = "hoge\\hoge\"
処理後↓
string = "hoge\\\\hoge\\"

stringを1文字目から見ていって、\があったら、それ以降の文字を1つずらして、\を挿入するように
したいのですが、文字列をずらす、もしくは文字を文字列に挿入するといった関数はありますか?
>>685
exitの引数はシェルへ返す値だったとも終われ。
どちらの方法も間違いではない。
>>685
mainが0以外を返すというのはエラーが起こったと言うことですね。
>>687
それ、文字列の長さとかを拡張したりしなきゃいけないんでかなり大変。がんばって!
>>686
exitのときは、色々処理をしていますよね?
私も詳しい事はわかりませんが、りふぁんれすに書いてありました。
return 1とした場合、どんな意味があるんですか?
異常終了してことを教えているんでしょうか?
>>686
文字列 検索 アルゴリズム
でGoogle検索。

>>687
ない。
ずらすときは確保したメモリからはみださないようにな。
>>689
一概には決まってなかった気が。結局環境依存になると思われ。
>>689
ありがとうございます。
exitの方が好ましいということはないんでしょうか?
返す値は1とかでいいんですね?
>>687
別領域にコピーしながらやるがよろし。

>>691
0なら正常、非ゼロなら異常終了という以外は
なにも決まっていない。1として良いかどうかも処理系定義。

完全にポータブルにしたければEXIT_SUCCESS(=0)と
EXIT_FAILURE(値は処理系定義)以外は使えない。
やはりCは文字列の扱いがめんどくさいね。
MSDNより

exit 関数と _exit 関数は値を返しませんが、
親プロセスが待ち状態の場合は、呼び出し側プロセスの終了後に、
親プロセスが status の下位バイトを受け取ります。
status は、オペレーティング システムのバッチ コマンド
ERRORLEVEL で参照でき、次の 2 つの値のどちらかで示されます。
EXIT_SUCCESS は 0 です。EXIT_FAILURE は 1 です。

# statusはexitの引数のことね
>>694
まあ、あれだ、シェルスクリプトを書くときにコマンドの返り値によって処理を変える
とかそういった使い方かな。
699デフォルトの名無しさん:02/12/06 00:07
>>C言語でやるのだったらはどうすればよいでしょうか?
>>699
意味不明
>>700
それを言いたいためだけに2レスも消費したんですか?
>>699
GetExitCodeProcess
main関数がintを返すのって規格だよね?
return 書いてないのは、だめなんでないの?
おっと、ここはWinスレじゃなかったか
C99ではmain関数の終端は勝手にreturn 0;になる
>>703
mainに限ってはreturnがなくても0を返すとみなすっていう話題が最近あったような・・・
>>706
前橋はreturn しろと言っているが・・・
K&Rがreturn書いてないのは問題ないの?
main()ってvoid main(void)って事でないのか?
>>707
int mainだと思われ。
>>707
またその話題かよ。と言われるのが落ちだぞ。というか俺が言った。
K&Rは糞という結論に。
あのmainの書き方は、ANSI準拠を詠う資格はない!
mainはreturnすべき、絶対に。
えーと、C言語でチンコの勃起角を求める方法おしえてください。
>>711
こうでつ。

main()
{
  int std_length,bokki_length;

  scanf("%d %d",&std_length,&bokki_length);
  printf("勃起角は%f度でつ。",(bokki_length - std_length) * 19.19072);
}

公式でつ。試験に出ます。
>>706
return文書かずにgccでコンパイルして実行したら3が返ってきたぞ。
int main(){}
>>713
それがゴミじゃないって保証は?
>>713
何も帰ってきませんが?
>>713
嫁が帰ってきませんが?
>>716
こんなところで遊んでないで実家言った方が良いって。
>>714
この場合ゴミだから問題あるわけだが。
>>718
ほんとだ。714をさらりと読んでた。
>>717
実家いったら,袋にされそう・・・
首輪がいけなかったか・・・
SEなんで給料がいいんだが,それでは補えなかったか
C89ではたぶん決まってないんだろうな。
でも、K&Rがreturn書かなかったものだからそれに合わせるように
C++/C99で変なルールを作ったと。
首輪プレイですか
723714:02/12/06 00:49
ん?いや、だからゴミだから問題あるんだろ?
>>714
だからゴミなんだよ。
だから明示的にreturn 0;としなければいけない。
>>723
ゴミじゃないっていう保障は?
じゃなくて、
ゴミだっていう保障は?
って聞くべきだったって事
726714:02/12/06 00:58
ああ、そうかごめん。706見て無かったよ。
アセンブラレベルで考えれば、実に明白。
>>727
ソース載せてもらえませんか?
729デフォルトの名無しさん:02/12/06 01:04
なにガベってんだYO!
(´-`).。oO(本だったらスキャンして…
>>713
ちゃんとgcc -fstd=c99オプションつけた?
>>731
その前にgccのバージョンを聞かなくて良いんですか?さっきから疑問なんですが。
>>731-732
2.95です。
cc1: Invalid option `-fstd=c99'
C言語は終わったはずなのに、なんでこのスレは好調なんだ?宿題か??
735西門 ◆J1DLkSnXwI :02/12/06 02:56
>>733
ドキュメントに載ってない?
昔は何だっけ… -std=c9x だっけ。
>>734
ご自分のスレッドに帰るのが身のためです。
737デフォルトの名無しさん:02/12/06 09:01
16進数なら0x、8進数なら0を前につけますよね。
2進数ならどう書けばよいのですか?お教えください。
>>737
Cでは表現できませんよ。
>>737
規格では出来ない。
コンパイラによっては拡張機能として0bで指定できるものもある。

そういう機能がない場合は↓みたいなのを定義するとか。
#define Ob0000_0000 0
#define Ob0000_0001 1
#define Ob0000_0010 2
>>739
マクロで表現すれば使えそうですね。
#define Ob0000_0000 0
#define Ob0000_0001 1
#define Ob0000_0010 10
742デフォルトの名無しさん:02/12/06 10:59
LCC-Win32なんですが、>>2でライセンスや機能などに問題あり、とありますが
どのように問題があるのでしょうか。

英語め…。
>>742
漏れも英語わからんがダウンロードしてみた。
インストーラに出てくる Licence Agreement で、商用禁止をうかがわせる
文があった。
学術研究に関してなら制限無しのようだ。
機能についてはまだわからない。
機能については、日本語に対応していないこと、C++ が使えない事以外は問題なさそうだ。
>>743-744
おおお、どうもです。
機能の問題はやっぱりそれだけですよね。
商用禁止か、
これで作ったものをフリーで配布することに関しては問題無いのだろうか…?
実際使ってるのですがね。
746デフォルトの名無しさん:02/12/06 13:26
free()に配列の配列を渡した時、
その配列が作られた過程を問わず、全ての領域を解放してくれますか?

つまり、

/********* 以下、プログラム(headerファイルのincludeは省略) **********/
int i;
int num_of_strings = 123, len_of_a_string = 1024;
char **strings;

strings = (char **)calloc(sizeof(char *),num_of_strings);
for(i=0;i<num_of_strings;i++)
strings[i] = malloc(len_of_a_string);

free(strings);
/****************************** 以上 *********************************/

としたとき、
最後のfreeは、その上のforの中でmallocした領域も解放してくれるか?
ということです。
それとも、for(〜〜) free(strings[i]); をその前にやらなきゃいけませんか?

よろしくお願いします。
>>746
解放しません。自分でやりなさい。
>>746
Cがそんなに便利な言語なわけなかろう。
749747:02/12/06 13:48
ありがとうございます!
>>744
すまん、読み間違えていた。
LCC 本体および付属品を転売してはいけない、と書いてあった。
雑誌の付録につけたりするのが NG なのかな。

LCC でコンパイルされたプログラムはその作者に属し、LC 作者の許可を得る事なく
販売できる、と書いてあった。
>>750
ああ、そうなのですか。
では自由に配布もできますね。
落としてわざわざ見ていただいて、感謝です。ありがd。
>>746よ、お主が提示したもの配列の配列ではない
進数チェンジャーできました。どうでしょう。
#include <stdio.h>
#include <string.h>
#define BEFORE_NUM "60cm" //前の数値
#define BEFORE_SIN 23 //前の進数
#define AFTER_SIN 10 //後の進数
int main(void)
{
 long i,s,r,n;
 char bC[]=BEFORE_NUM;
 long bN,bS=BEFORE_SIN,aS=AFTER_SIN;
 printf("%s(%ld)\n↓\n",bC,bS);
 s=strlen(bC)-1;
 for(i=0,r=1,bN=0;i<=s;i++,r*=bS)
 {
  n=bC[s-i];
  bN+=(n>'9'?n-'a'+10:n-'0')*r;
 }
 for(i=1;i<=bN/aS;i*=aS)
  ;
 for(;i>=1;i/=aS)
 {
  n=bN/i%aS;
  printf("%c",n>=10?'a'+n-10:'0'+n);
 }
 printf("(%ld)\n",aS);
 return 0;
}
読み込みは strtol()
>>754
知りませんでした。そういうのがあったのですね。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtol.3.html
>>687
コンソールプログラムで置き換えしながら、printfで順次文字出力するプログラムを作って、
リダイレクトでテキストに出しなされ。
757デフォルトの名無しさん:02/12/06 18:39
char hoge[40];

if(hoge == ' ',' ',' ',・・・・){

hogeの中身がスペースだったら、っていう
ショリするときってこうするしかないのでしょうか?
>>757
その通り
>>757
不思議なコードだね
760757:02/12/06 18:47
>>758 >>759

──■──■──────■─────────■────────────
─■─■─■────■■■■■─────■■■■───────────
■■■■─■■■■───■──■■─────■─■■■■──■■─■■
──■─■───■───■─■──■───■──────■─■■─■■
■■■■────■───■■───■───■─────■───■■■─
──■──■──■──■■────■──■───■──────■■■─
■─■■──■─■─■─■────■──■──■────────■──
─■■─────■───■────■─────■────────■──
■■────■■────■─────■─────■■■■■──────
またアホが沸いた
762デフォルトの名無しさん:02/12/06 19:26
int Recv(char *pbuf)
{
char recvbuf[16384];
while(1) {
 recv(socket, recvbuf, 16384, 0);
}


}
みたいなプログラムがあって、この時どれくらいのサイズのファイルを
受信するか分からないので、mallocでバッファを確保したいのですが
この時に、関数Recv内ではなく、呼び出した側でmallocで確保したいのですが
何か良い方法はありませんでしょうか?
763デフォルトの名無しさん:02/12/06 19:39
いまさらC?
>>763
Cをやってからほかに移るって手さ。
> if(hoge == ' ',' ',' ',・・・・){

常に成り立ちそうだ。
766デフォルトの名無しさん:02/12/06 19:50
763
そ、そうか
そ、そういうかんがえがあるのか・・・
俺は今猛烈に感動している
>>762
どれくらいのサイズを受信するのか分からない場合は、普通どのくらいの
バッファを確保して言いか決定できない。
従って、とりあえず適当なサイズのバッファを確保し、受信してみて、
足りなかったら realloc() で拡張していく。
Recv() を呼び出した側で malloc() したいなら、そうして、ポインタを
Recv() に渡せば良いが、そうする意味はない。
768757:02/12/06 20:07
初心者をいじめんといてください。。。

スペース入ってたら、という条件は
どうすればいいんですかー!!
ヽ(`Д´)ノ ウワァァン!!
>>757
strchr() じゃだめなの?
>>768
strchr
771770:02/12/06 20:15
>>769
僕と結婚してくれませんか?
>>768
769 は無視しろ。

配列の内容は一気に比較できない。
for ループで回して 1 要素ずつ調べろ。
773769:02/12/06 20:17
無視されてしまった・・・。
774757:02/12/06 20:17
>>772
僕と結婚してくれませんか?

ガムバッテミマス!

アリガdゴザイマスタ

スマター!!
>>774
結婚してもスマタかよ
776769:02/12/06 20:20
>>770
家事は分担ね。
>>770-771
どうして strchr() でいいと思ったんだ?
>>777
へ?strchrで駄目な理由って何?
char buf[256];
fgets(buf, sizeof buf, stdin);
if(strchr(buf, ' ') != NULL)
  printf("スペースが見つかった\n");
else
  printf("スペースが見つからなかった\n");
なんでわざわざループで回す必要があるのか小一時間問いつめたい。
779769:02/12/06 20:34
>>777
これじゃダメなの?
#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[]) {
 char hoge[40];
 if (argc > 1) {
  strcpy(hoge, argv[1]);
  if ((strchr(hoge, ' ')) == NULL) {
   printf("エn");
  } else {
   printf("エn");
  }
 }
 return 0;
}
780769:02/12/06 20:37
>>777
さっきの失敗。
こっちね。
#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[]) {
 char hoge[40];
 if (argc > 1) {
  strcpy(hoge, argv[1]);
  if ((strchr(hoge, ' ')) == NULL) {
   printf("あった\n");
  } else {
   printf("なかった\n");
  }
 }
 return 0;
}

781769:02/12/06 20:39
ああ、また間違ってるし。
「あった」と「なかった」逆だね。
そこのケーブルで首t(略
782757:02/12/06 20:51
char hoge[3];
char piyo[5];
int i, t;
for( i=0; hoge[i] !=0x20; i++ )
memset(hoge, NULL, 3);
for( t=0; piyo[t] !=0x20; t++ )
memset(piyo, NULL, 5);

/*以下スペース入ってなかったら本ショリ*/

こんな感じでできますかね・・・?
>>782
hoge, piyoの中にスペースが入ってないと暴走するぞ
あと0x20とかせずに素直に文字リテラル' 'を使え
ちなみに' 'と" "は意味が違うんで教科書を良く読んどけよ

同じようにNULLと'\0'は意味が異なる、
あとhogeやpiyoの大きさを変えたときわざわざmemsetの第3引数を
変えるのは面倒だろ。文字列を'\0'で初期化したいならば、
> memset(hoge, NULL, 3);
> memset(piyo, NULL, 5);
memset(hoge, '\0', sizeof hoge);
memset(piyo, '\0', sizeof piyo);
とした方が良い。
>>778-780
「hoge の中身がスペースだったら」 をどうすれば 「hoge の中にスペースが
見つかったら」 に曲解できるんだ?
785784:02/12/06 21:07
ごめん、782 のコメント見る限り strchr() でよさそうだ。
つまり>>757はC言語の前に日本語を(ry
>>784
> 「hoge の中身がスペースだったら」
了解、では意地でもループは使わずにやってやる
hoge[40];
cmp[40];
memset(cmp, ' ', sizeof cmp);
if(strcmp(hoge, cmp) == 0)
  printf("全てスペース\n");
else
  printf("スペース以外が入ってる\n");
で、こんなの作ってどうするんだ?
788769:02/12/06 21:11
>>784
うん、最初はhogeが" \0"だったらとかhogeがスペースのみの集合だったらとか考えたよ。
でも>>768で?スペース入ってたら」となってるから
「hoge中に一つでもスペースが入ってたら」と解釈したんだが。
実際>>782見てもこれであってると思うけど。
789757:02/12/06 21:11
>>783サソ
ご丁寧にアリガdゴザイマス

このままじゃ暴走いたしますか・・・
どうするか・・・?
コマータコマータ
漏れやぱりPGには向いてないなぁ。。。
んなこたぁーない
がんがれ
791769:02/12/06 21:17
>>789
向き不向きはかなりの部分努力で補えるよ。
また困ったらここにおいで。
792757:02/12/06 21:28
>>790-791サソ
アリガdゴザイマス

2chデハジメテ
カンドウシター!!
誰もいないオフィスで゙チョイナキソウニナッタ・・・

またきます!
いや、ちょっと待った。
757 は hoge の中にスペースが見つかったら何をしたかったんだ?
782 ははっきり言って目的不明な処理だぞ。
hoge でなく moe はどうか?
>>794
何が言いたいのか説明してくれないか?
>>795
ノリで言ってみただけ。
>>1-1000
All green!
カコイイ
moe はいいが nae はいかがなものか。
お前らいつか死ぬぞ。
知ってます。
そりゃまあ。
苦しゅうない、朕は不滅じゃ。
804201:02/12/07 10:49
int value = 任意;
if (0 <= value) {
 value = 0;
}
これ、ifを使わないで計算だけでかけますか?
>>804
value = (0 <= value)?value:0;

俺って天才!
>>805
逝ってよし
//面倒くさいからintは32bitと仮定
int val;
{
unsigned int i = val & 0x80000000;
i = i | (i >> 1) | (i >> 2 ) | (i >> 3 ) | ...略.. | (i>>31) ;
return val & i;
}
>807
じゅうぶん面倒だろそれ。
value * ((value >> 31) & 1);
>>805
逆じゃん

>>807
実装依存

0<=value && value=0 ;
>>804
value = value * (value < 0);

でも、素直に参考演算子か if 文使って書いた方がいいよ。
811804:02/12/07 11:38
説明不足でした。
可読性、速度、汎用性などを考慮したコードでは?

1000万回連続実行した場合の合計時間(debug build)。
>>804 31(ms)
>>805 94(ms)
>>807 313(ms)
812804:02/12/07 11:50
沢山の回答ありがちょう。
全てにおいて >>804 のコードが勝っていると認定されますた。
漏れって天才!
なるほど、こういう釣り方もあるのか。。_φ(..;)メモメモ
釣りとか嫌
>>813
(゚Д゚)ハァ?
構造体について疑問。

struct DATA {
 int a;
}

とした後、

struct DATA d1,d2,d3;

とした場合と、

DATA d1,d2,d3;

のようにstructを省略した場合とでは、どんな違いが出るんでしょうか?
>>812
よかったね。

もうくるなよ。
>>816
C++ スレに逝け。
>>812
君の言う天才は他人からみれば馬鹿以下なんだよ
>>816
前者は問題なくコンパイルできるが、後者はエラーになる。
>>820
VC++6.0だとエラーにはなりませんが…
>>821
ここはC言語スレですが何か。

$ cat a.c
struct DATA {
    int a;
};
DATA d1, d2, d3;
$ cl -c a.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

a.c
a.c(4) : error C2061: 構文エラー : 識別子 'd1' がシンタックスエラーを起こしました。
a.c(4) : error C2059: 構文エラー : ';'
a.c(4) : error C2059: 構文エラー : ','
$ mv a.c a.cpp
$ cl -c a.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

a.cpp
823812:02/12/07 13:01
>>817 >>819
誰もが書くであろう基本的なコードが1番早かった。ちゃんちゃん。
って落ちなんだよ。反抗期さんわかった?

>>816
CとC++の違いだな。
>>823
ほう、それはよかったな。

満足したら、もうくるなよ。
>>823
氏ねよ。マジで。
お前みたいな社会の屑は迷惑だ。
何が天才なんだか。
else 無しの if が一番速いのは実行しなくてもわかるだろうに。
827デフォルトの名無しさん:02/12/07 14:16
つーかこうせんかな。
if (value < 0) value = 0;
はっ!?
ひっ!?
(゚Д゚)ハァ?
( ´_ゝ`)プッ!
832デフォルトの名無しさん:02/12/07 14:36
( ゚Д゚)h?
ふーん( ´_ゝ`) <=> (´<_ ` )そっか
83445:02/12/07 14:40
(゚Д゚)ィェーッ
Σ(゚д゚lll)ガーン
('_`)ソウカ・・・
・・・
クソすれ
>>827
つっこんでいいもんやら...。
>>839
迷うくらいなら突っ込め。
てか >>828-838 は全て >>827 へのツッコミだと思ふ、
842デフォルトの名無しさん:02/12/07 16:51
>>823
なぁさ、最適化OFFにしたときはきっと結果は変わると思うんだがどうだろう?
そら、もっとも使用頻度の高いifがかりかりにチューンされているのは当たり前であって。

やっぱりお前は凡人だな。
つまらん。
> 使用頻度の高いifがかりかりにチューンされているの

(゚Д゚)ハァ?
そんな特別な事してねーよ。
単に if で書くと必要な演算量が減るだけだ。
つーか、827 は何がいけないんだ?
>>845=827ですか?( ´,_ゝ`)プッ
>>845
間を外したところ。
フルートが鳴りません。どうしたらいいですか?
>>845
ハァ ? >>805 を改良してどーする。
>>849
>>805じゃなくて>>804だろ。
いや、827 は value == 0 の時に代入が発生しないからより高速に動く事を
期待できるはずなんだが、みんな何をそんなに一生懸命叩いているんだ?

847 のような理由は置いといて。
間違ってるから。
ああ、比較の向きか。やっと気付いた。
>>850
なんか熱くなってない ?
冷静になって、>>804-805, >>827 のコード見た方がいいよ。
そうすれば、>>849 の言いたいことがわかるよ。
>>854
> なんか熱くなってない ?
いや全然。でも>853を見るまで気づかなかったよ。
848 に誰か答えてください
857 ◆F52DmOxJlc :02/12/07 19:22
>>848
ちゃんと充電したか?
電気を使わないタイプのフルートのようです。
>>848
実はフルーツ
つまんねーー!!!
>>848
実はフノレート。
>>858
だったら不良品だから、交換してもらってください。
フルートですが、マジでドとレとミの音が出ません。
クラリネットではありません。
実はプルート
実はプルーン
実はぷるるん 
実はぬるぽ
868 ◆F52DmOxJlc :02/12/07 19:54
>>863
思いっきりがんばればミは出るだろ。
869デフォルトの名無しさん:02/12/07 20:17
>>863
ド・レ・ミ抜きで演奏!
>>863
マジレスするが、ド とか言うなよ。恥ずかしいぞ。
十二音全て、ド になることができるんだからさ。
871デフォルトの名無しさん:02/12/07 20:32
じゃあ何て言うの?
873デフォルトの名無しさん:02/12/07 20:35
ラだよ馬鹿
わかった!!
C だ!!
>>874
じゃあシはなんて言うのさ?
>>874
ピン・ポ〜〜〜ン。
もちろん「シー」なんて言っちゃ駄目だよ。
>>876
>>872 も正解にしてあげて下さい。
西洋では CDEFGAB ...
日本では ハニホヘトイロ ...
879 ◆F52DmOxJlc :02/12/07 21:34
>>878
CDEFGAH の方が好き。
ドボルザークが
>>870
マジレスするが、そんなことは初めて聞いた。
>>881
相対的な話だろ。それが調にもつながるという。
だとするとAの周波数が厳密に決められてるのはおかしいわけだがw
883 ◆F52DmOxJlc :02/12/07 23:40
>>881
それぞれの調の主音をドと読むんだよ。
ニ長調ならレをドと読み替える。
楽典読んでごらん。
>>881
音楽のことを知らないくせに偉そうなこというな。
黙ってろヴォケが。
同志である>>883>>884のレベルの差がおもしろい。

>>882
A の周波数ってどっかで決まってんの ?
普通は、440Hz〜445Hz ぐらいの幅持ってたと思うが。
887デフォルトの名無しさん:02/12/07 23:57
つーか、これ何のスレだ?
ツェー
>>886
ここで調律論をやる気か?
440Hzと覚えておけば充分。

<             >858-889ハァァァ???

  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^――/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllll|          ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕         :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\

>>889
何言ってんのこの人 ?
俺は、A の周波数が (* 厳密に *) 決められているかどうかか知りたいだけだよ。
>>891
それをしってどうなる?
人間の耳は5Hzの違いなんて聞き分けられないぞ。
プログラム的には450でじゅうぶんじゃねーの。
それ以上のことを言うヤシは町立論(略
>>892
2行目に単位書いて3行目にそれがないのって不思議。
>>893
int に単位は不要だから。
ラの音は周波数が上がってきているんだよ。
昔は400Hzくらいだった。
でも地球の自転速度は徐々に遅くなってきてるぜ。
>>896
だからどうしたよ。ワラタけど。
>>892
> それをしってどうなる?

単なる興味だよ。ウィーン音楽協会みたいなとこが決めてんのかなぁって思っただけ。

> 人間の耳は5Hzの違いなんて聞き分けられないぞ。

フシ耳ですか ? 440Hz に対して、5Hz と言うと半音の約 1/5 だよ。
素人でも、なんとなく分かるぐらいのところだよ。
絶対音感持ってる奴なら、確実にわかるぞ。
ちょ球の自転速度が遅くなるはずはありません。
なぜなら地球は宇宙エネルギーをもらって動いているので
永久不変なのです。
もし自転速度が遅くなる時は宇宙がビッグバンになる時くらいです。
>>899
>>896のが正しい。
>>898
何cent?20cent位なら聞き分けられるYO!
秒の定義はもう変わったよ。
1分の1/60が1秒です。
>>903
じゃあ1分の定義は?
1時間の1/60が1分です。
嵐どもはさっさと氏ね
>>905
じゃあ1時間の定義は?

1日の1/24が1時間です。


じゃあ1日の定義は?
>>907
詰めが甘いな。1年の365文の1だ
>>907
太陽が南中してから翌日再び南中するまでの時間。
>>901
おお、久しぶりに cent なんて単位を聞いたよ。
既に定義を忘れてたので、ググッたら 100cent = 半音 ということのようだ。

つーことは、440Hz と 445Hz の違いは...

(log(445/440) / log(2)) * 1200 = 19.562174794920598517900518817139

やね。>>898 にも書いたけど、普通の人ならなんとなくわかるぐらいだよ。
DETUNEでちゅーん
912 ◆ZtXjKqCmiQ :02/12/08 01:18
C言語の話題は?
913912:02/12/08 01:20
#include と打ったらトリップになっちまった(T_T)
914 ◆g/ZMVdytmo :02/12/08 01:21
本物はボキです?
話を蒸し返すようで悪いんだけどさ
英語での
CDEFGAB
ドイツ語での
CDEFGAH
日本語での
ハニホヘトイロ
をイタリア語では
ドレミファソラシ
って発音するんだよ。
だから >>883 は真赤な嘘。
あとは音楽板のほうでどうぞ
917デフォルトの名無しさん:02/12/08 01:58
Javaしか触ってなくて、Cのソースがイマイチ読めないんだけど、何とか上手に読む方法ない?
木生成のアルゴリズムなんだけどね。
>>915
もしそうだとしても、それが通用するのはイタリアだけじゃないのか?
普通は調によってドそのものが変わる・・・
これ以上は音楽板逝くべきだな
そろそろ、次スレなんだが・・・
>入門書レベルの質問はC言語質問所スレへ行け。
入れる?
ここはどうしても荒れてしまうから。なんか。
920デフォルトの名無しさん:02/12/08 02:15
配列の最大数は決まってるのですか?
最大数を大きくしたい場合どうすればよいですか?
921デフォルトの名無しさん:02/12/08 02:24
>>920
INT_MAXまで。
922920:02/12/08 02:32
int型の最大値と同じって事ですか?
>>922
INT_MAXは、多分論理アドレスのMAX値ということが言いたいんだと思うが、
実際にはそこまで取れないと思う。
924923:02/12/08 02:47
ごめん。論理アドレスのMAX値だったらUINT_MAXだ。
ただしintとポインタの大きさが同じ処理系に限る。
>>919
入れちゃダメ。諸悪の根源。
926デフォルトの名無しさん:02/12/08 04:39
>>924
規格では、どの処理系でも最低限65535バイトのオブジェクトは作れることが
保証されている。それ以上大きいのは作れない処理系でも規格準拠といえる。

だから、「絶対安全」と保証されている配列のサイズは65535バイトまで。
>>919
偽スレは必要なし。いい加減ウザい。
440Hzがラ?下のプログラムを見てください。ファになるのですが。DOS/V、ANSI.SYSが必要と思われます。ポート入出力なので注意してください。
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main(void)
{
 int Hz=440,int key=0,pM=1;clock_t t;
 printf("\x1b[12;5H+:+ -:- *:*2 /:/2 0:増減値増加 .:増減値減少 Enter:♪ p:End");
 printf("\x1b[14;37H増減値:%-5d\x1b[16;37HHz:%-5d",pM,Hz);
 for(;;)
 {
  key=getch();
  if(key=='+')Hz+=pM;if(key=='-')Hz-=pM;if(key=='*')Hz*=2;if(key=='/')Hz/=2;if(key=='0')pM++;if(key=='.')pM--;
  if(Hz<=-1)Hz=0;if(Hz>=32768)Hz=32767;if(pM<=-1)pM=0;if(pM>=32768)pM=32767;
  if(key=='\r')
  {
   _outp(0x43,0xb6);_outp(0x42,Hz%256);_outp(0x42,Hz/256);
   _outp(0x61,_inp(0x61)|0x03);
   for(t=clock();t+500>=clock(););
   _outp(0x61,_inp(0x61)&0xFC);
  }
  printf("\x1b[14;44H%-5d",pM);printf("\x1b[16;40H%-5d",Hz);if(key=='p')break;
 }
 return 0;
}
929デフォルトの名無しさん:02/12/08 05:13
素数のプログラムを作らないと単位が取れないです。
誰か作り方を教えてください。
>>929
素数スレがあるぽ
>>930
ありがとうございます
932デフォルトの名無しさん:02/12/08 05:18
933デフォルトの名無しさん:02/12/08 05:18
>>929
素数をどうしたいんだ?
具体的なプログラムが欲しいなら宿題スレへ
http://pc3.2ch.net/test/read.cgi/tech/1036572120/l50
ここは C のスレだから A の話はいかんのだろうが、A = 465 Hz というべらぼう
なチューニングもあるらしいぞ。

それは置いといて、移調楽器の基音をドと呼ぶ事でずらすことはよくあるみたい
だけど、曲調によってドが変わるという話は聞いたことないぞ。
友人に、音大卒もプロで楽器やってる人もイパーイいるが、みんな例えばニ長調なら
レミファソラシドレと言っているし、そんな事は教わらなかったと言っている。
第一、ドレミファソラシドはイタリア読み、CDEFGABC は英語読み、CDEFGAHC は
ドイツ読み、ハニホヘトイロハは和読みというだけで、それ以上の違いはないだろう。
>>934
レミ 「ファ#」 ソラシ 「ド#」 レ
>>934
「固定ド」と「移動ド」くらい中学校で習うだろ。
な〜にが音大だYO!

悔しかったから一生懸命調べたんだろうが
もっぺん出直して来いや。他の板でナー。
ここには2度とくるな!
>>936
中学レベルの音楽知識で大口叩くとは真性キティだな。
音名と階名を混同してると思われ。
実際問題として音名の意味で「ド」とか「レ」とか言うことのほうが多いし、
「音合わせしたいからラの音出して」と言われて「調は何ですか」
なんて聞くやつはおらん。
音合わせするときにわざわざ○○の音出してなんて言うか?
>>937
ハイハイ、もう分ったから他の板逝って。

検索してみれば分るけど「固定ド」「移動ド」どちらを
使うかはコミュニティの流儀による。「あんたのまわりでは」
そういう決まりなのかもしれんが、他では違うかもしれん。
少なくとも中学高校の音楽では「移動ド」で教えているから
アマチュアの大部分にはそちらのほうが馴染みがある。

ハニホ…やCDE…ならそういう混乱の余地は無い。
>>937
「ハ長調」とか「C Major」とかは言うけど、「ド長調」とは言わない。
「ド」は移動する(ことがある)から。

君の理屈では「ド長調」「ラ短調」があるはずだが?
>>937
知ったか氏ね。
そういえば、「ハ長調のソがト長調ではドになる」というように
習ったな…「トがドになるのがト長調」と覚えた。
>>937は中学で音楽を落第しますた。
「ド長調」(ププ
階名という言葉を知っているのに意味を知らないとは変な奴だな >>937 って。
「ドレミ」は音階によって呼び名が変わる(移動する)から階名と言うんだけど。
音楽理論の教科書とかにはI II III IV〜とか数字で書いてあるけど、
そういうのは実生活で使わないのですか>薀蓄垂れしてる人
新たなミュージックシーンが誕生する予感。
   "ド長調" from ム板@2ch
>>945
コード教えてる本に載ってたなぁ。

Iをトニックにして後は相対的にって漢字の。
>>915>>934 は間抜けだが、>>937 はそう変な事は言ってないように見える。

>>945
それは和音の話では…?
動的に音階を生成
>>948
>中学レベルの音楽知識で大口叩くとは真性キティだな。

いらんこと書かなきゃ良かったのにな(藁
うんち君垂れている人
952 ◆F52DmOxJlc :02/12/08 11:49
まだ音楽話やってたのか…。
話の腰折って悪いけどちょっと教えて。

任意の文字列 char str[] 中に %02d のような型指定子があるかないか調べたくて

char s1[], s2[];
sprintf(s1, str, 1);
sprintf(s2, str, 2);
if (strcmp(s1, s2) == 0) {
 /* 型指定子なし */
} else {
 /* 型指定子あり */
}

ってやったんだけどこれって問題ある?
str[] によっては sprintf() で 1 や 2 が変換されないじゃない。
行き場のない引数を与えていいものか気になるんだけど。
>>952
str = "%2d%s%s%s%s%s%s%s";
で試してみ。
954 ◆F52DmOxJlc :02/12/08 12:05
>>953
納得。多謝。
普通はト長調について言う。
956デフォルトの名無しさん:02/12/08 15:18
957デフォルトの名無しさん:02/12/08 15:25
>>957
それは偽スレ。↓こっちが本物。

C言語のことは俺に聞け<46>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50
959デフォルトの名無しさん:02/12/08 15:29
>>958
45って書いてあるけど・・・
>>959
ごめん。46の間違い。
>>958
いい加減にしろクソヤロウ。
もうこれ以上荒らすな。
>>937
> 「音合わせしたいからラの音出して」と言われて「調は何ですか」
> なんて聞くやつはおらん。

お前、楽器のこと知らんだろ。ラの音出してなんて言うわけないじゃん。
指揮者が間違えてそんなこと言ったら、金管楽器、サックスとビオラ奏者に「ざけんなよ」と言われてもしょうがないぞ。
(他の楽器もあるかも知れんがなにぶんにも記憶が曖昧だ。)
これらの楽器は、>>934 が移調楽器と書いてある通り、普通に言う「ラ」の音が既に移調されている。
だから、オーケストラの楽譜等では楽器に合わせて移調して書いてある。
確かフルートがハ長調で書いてあったら、トランペットはニ長調で書いてあるはず。
(中には、C 管なんて言うトランペットもあるけどね。)

普通の楽団なら、「音合わせしまーす。」とか言うだけで、みんな A の音を出すよ。
(つーか、みんなの準備が揃った頃に第一オーボエ奏者が「ポェ〜〜〜」と吹き始めて、それに合わせるんだと思う。)
>>962
ブラバン限定の話などしていませんが。
C言語って音楽に関係する言語だったんですね。
>>962
いや、もう 915=934=937 がタダのクズヤロウであるという
結論は既に出ているわけで…
>>937には
http://instruments.hp.infoseek.co.jp/ongaku/on-kai.html
このへんのやさし〜いあたりから勉強しなおしてもらうということで。
C言語スレは軒並み壊滅だな。
「質問所」スレを立てた1は、
思い通りに荒らせてさぞ満足してるだろうな…
969デフォルトの名無しさん:02/12/08 18:47
もう埋めてしまいませんか?
誘導書き込み荒らしがうざいので。
協力者求む


969ゲット!
がーん。
970 ニナッテシマッタ・・・
>>972
いい加減にしろクソヤロウ。
もうこれ以上荒らすな。
埋め埋め
977ゲトズザー
  ,〜'~`〜'~`〜'~`〜'~` 、  。 ∧_∧。゚
 (  ひぃえぇぇぇぇぇ   )  ゚( ゚´Д`゚)っ゚
  (  誰か助けてぇ〜!!! >  (つ■  /
  `、_,〜、_,〜 、_,〜 、_,〜'     |  (⌒)
                   し⌒^
                     '''''
\モウ/    \ね/  \ アボカド /  \ 馬 /  \ 鹿 /  \ カト /
                                    ∩   ∩
                                    | つ  ⊂|
    ∩;;;∩                      ∧ノ~       ! ,'っ _c,!
  (Y;;;;;;;;;;ヽノ)               ヽ      ミ| ・  \    ⊂/  ・  \
   i;;;;;;;;;;゚;;;゚ヽ           γ⌒^ヽ    ミ|   ... '_)   | __,,▼    ∫
/;;;;;;\;;;;'⌒)          /::::::::::::::ヽ   ミ| (,,゚Д゚)    |・ (,,゚Д゚)   (,,゚Д゚)
 )|;;;;;;;;(,,゚Д゚)    (⌒)(⌒)  /.:::::::::(,,゚Д゚)    | (ノ  |)     | (ノ  |)  ⊂三つ: つ ババンバ
ι|;;;;;;;つ ;;;/つ   ( ・Å・)  i::::::(ノDole|)   |  馬 |      |・・ .鹿 |      ||||||||   バン
  ヽ..;;;;;;;;/  γ⌒ ( ゚Д゚))  ゙、:::::::::::::ノ    人.._,,,,ノ     ι・,,__,ノ     |  |     バン
    U"U  乂_) UU     U"U       U"U       U"U      U"U
 何このスレ・・・・・?
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       // ___   \  ::::::::::::::|
  | |       |  |   |     U :::::::::::::|
  | |      .|U |   |      ::::::U::::|
  | |       | ├―-┤ U.....:::::::::::::::::::/  
  | |____ ヽ     .....:::::::::::::::::::::::< 
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::::::::::::::::::::|
誘導:

次スレ 「C言語のことは<46>」http://pc3.2ch.net/test/read.cgi/tech/1039328710/
なんかここ二三日で激しく荒れてるな。
誘導:

次スレ 「C言語のことは<46>」http://pc3.2ch.net/test/read.cgi/tech/1039328710/
       へ ヘ        へ ヘ        へ ヘ
      \| /       \| /       \| /
      ';: ":;.       ';: ":;.       ';: ":;.
  ∧∧⊂.;'、 :つ  ∧∧⊂.;'、 :つ  ∧∧⊂.;'、 :つ
 ;'゚Д゚、":、.: :;:'   ;'゚Д゚、":、.: :;:'   ;'゚Д゚、":、.: :;:'
 '、;: ...: ,:. :.、.: '    '、;: ...: ,:. :.、.: '   '、;: ...: ,:. :.、.: '
  `"∪∪''`゙    `"∪∪''`゙    `"∪∪''`゙
                ._
                |:::::|
                |:::::|
     ∧_∧.  ∧_∧|:::::|
      ( ´∀`∩(・∀・ )___|
 | ̄ ヽ ( つ   ノ ( ⌒つ| ..|  /  ̄.|
 |      ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    .|
 |_______________.|
 |::::::::__   __  __ __ __:::::::::|
 |::::::`.! !´ ./△ ! `l D )`l l//´::::::::|
 |:::::::::| |_// ̄!.!__| |\ヽ,,| !\\_ :::::::|
 |::::::::´――'  '――` ´―― ´―` :::::!
 |_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_|
 |  SPECIAL. MILD. TOBACCOS.  |   (
 |――――――――――――――‐|    )  ノノ
 |       ______         |  ((   )             (
 |       ヽ     /          |    ) ノ                )    (
 |        | .∧ ∧ |          |   ( _⌒)              ( (    )
 |        | (゚д゚,,) |          |     )ノ               ヽヽ  ノ
 |        |       .|          |     ( (                 ) ))
 |        . ̄ ~~  ̄           | ∧ ∧ )ノ ウマー            (,, (
 |        MILDS           | (,,゚д゚)O_____________)ノ
 |     CHARCOAL FILTER.     | ( ⊃(;;;;;;;;;;;;;;;;;;;;;;;(           ((;;)
 |____________________|〜(,,⌒⊃⊃ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                           ̄
                    \
                      \
                       \
                         \            /|   。.
                       ,,-'―\       _,/ノ   . .
        ___,,-―――='' ̄ ̄    _,,-'―=''' ̄_,/|  o    *
_,,-―=''' ̄      ___,,-―――='' ̄ __,-―='' ̄   / .   . .
   _,,-―=''' ̄        _,,-―='' ̄ ヽ       /  +
 ̄ ̄        _,,-―=''' ̄          \    /  . . .  .
      ,,-='' ̄                   ヽ  /    .  。. ★  ☆
    ,,,-''                          ヽ/     。.    .
-―'' ̄       /\     ___,  /\   |   . ☆  +
.   |        ..::::::::::::...       |     /    ..:::::::... | + .   . .
   |                    |     /        |    . .   ☆
  ヽ    γ´~⌒ヽ.        |   /          /☆ . *  +.  . 
――ヽ   /      ヽ      |  /         /⌒ヽ、.  .  . .
    \/       |       |_/          /    ヽ +★
      /         |              /     ノ *  ☆
埋め立て
♪きのこっのっこーのこげんきのこっエリンーギマイタケブナ(゚д゚)シメジ!

    /⌒ヽ      γ´⌒`ヽ
   /  ●  ヽ    ./Oo〇oOヽ     ,-''"¨ ̄¨`'‐、
  (●/⌒ヽ●)   (Oγ⌒ヽOo)   (,,(,,i,,,i,,,,,,,,i,,,,i,,),)
   ヽ|´∀` |ノ ))  ヾ(゚Д゚ )゚ノ ))    )  (    ))
    .ゝ___ノ       ゝ_ノ.       (゚ー゚* )

>>988
腹減ったじゃねーか(゚Д゚)ゴルァ
>>986
梨華たん(*´Д`)ポワワ
埋め立て
>>988
どうも左と真中が毒キノコに見えるわけだが・・
>>962
オーケストラの音合わせは指揮者の口笛を基準にするんだよ。
ウソだけど。
1000間近なのに静かだなぁ。
1000は誰かに譲るよ。
お前ら、今までに何回1000取った事ある?
俺は2回
俺1回。
っていうか前から疑問なんだけど1000取ると何が嬉しいの?
俺は別に嬉しくなかった。普通に会話しながら1000逝っちゃったし。
1000
1000
1000
1000
1000デフォルトの名無しさん:02/12/08 21:25
偽スレに騙されないように。↓こっちが本物の次スレ。
スレタイちょっとミスった。ごめんね。

C言語のことは俺に聞け<46>
http://pc3.2ch.net/test/read.cgi/tech/1038324550/l50
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。