C言語なら俺に聞け(入門篇) Part 27 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/04/29 09:44:57
言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 26
スレリンク(tech板)
過去スレ
URLリンク(makimo.to:8000)

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 105代目
スレリンク(tech板)


2:デフォルトの名無しさん
08/04/29 09:45:21
Part 1 スレリンク(tech板)
Part 2 スレリンク(tech板)
Part 3 スレリンク(tech板)
Part 4 スレリンク(tech板)
Part 5 スレリンク(tech板)
Part 6 スレリンク(tech板)
Part 7 スレリンク(tech板)
Part 8 スレリンク(tech板)
Part 9 スレリンク(tech板)
Part 10 スレリンク(tech板)
Part 11 スレリンク(tech板)
Part 12 スレリンク(tech板)
Part 13 スレリンク(tech板)

3:デフォルトの名無しさん
08/04/29 09:45:57
Part 14 スレリンク(tech板)
Part 15 スレリンク(tech板)
Part 16 スレリンク(tech板)
Part 17 スレリンク(tech板)
Part 18 スレリンク(tech板)
Part 19 スレリンク(tech板)
Part 20 スレリンク(tech板)
Part 21 スレリンク(tech板)
Part 22 スレリンク(tech板)
Part 23 スレリンク(tech板)
Part 24 スレリンク(tech板)
Part 25 スレリンク(tech板)
Part 26 スレリンク(tech板)

4:デフォルトの名無しさん
08/04/29 09:47:29
過去スレのリンクってなんか意味があるの?

5:デフォルトの名無しさん
08/04/29 09:48:55
●にはね

6:デフォルトの名無しさん
08/04/29 09:52:46
リンクの h 削るのって意味あるの?

7:デフォルトの名無しさん
08/04/29 10:01:28
書き込めない

8:デフォルトの名無しさん
08/04/29 12:01:10
#include <iostream.h>

main()
{
char *(*pp)[3];
printf("%lu", sizeof(char*));
printf(" pp%lu", pp);
printf(", ++pp%lu", ++pp);
}
というプログラムを実行すると
"4 ,アドレス ,アドレス+12"と、表示されました。
ppは要素が三つの配列へのポインタのポインタだから、
ppがインクリメントされればアドレス+4になると思うのです。
どうして成らないのでしょうか?

9:デフォルトの名無しさん
08/04/29 12:02:33
4x3

10:デフォルトの名無しさん
08/04/29 12:05:11
> #include <iostream.h>
スレ違い。

11:デフォルトの名無しさん
08/04/29 12:14:29
これが++(*pp)なら4*3で理解できるのですが...

12:デフォルトの名無しさん
08/04/29 12:16:08
えっと、質問なんですが。
C言語で
1分待機してから次の分を実行
みたいな関数というのは存在するのでしょうかー?
また存在しない場合そのような動作をさせるには
どうすればいいんでしょうか・・・?;

13:デフォルトの名無しさん
08/04/29 12:18:35
clock関数では?

14:デフォルトの名無しさん
08/04/29 12:45:26
#include "windows.h"
Sleep(60000);

15:デフォルトの名無しさん
08/04/29 12:49:43
>>13-14
ありがとうございますっ
試してみます!

16:デフォルトの名無しさん
08/04/29 14:27:37
Javaプログラマです。Cの学習の王道ルート
を教えて下さい。Javaは自由に書けるので、
構文の基本は大丈夫かと思います。
勉強する際に便利な環境などもあわせて教えて
いただけると嬉しいです。

17:デフォルトの名無しさん
08/04/29 14:54:21
Javaが自由に書けたらそんなアホな質問はしない。
まずはJavaを勉強するように

18:デフォルトの名無しさん
08/04/29 15:56:15
エクリプス+CDTでいいんじゃね
使った事ないけど

19:デフォルトの名無しさん
08/04/29 16:27:17
JAVAからCとか大変だな・・・

20:デフォルトの名無しさん
08/04/29 17:27:15
malloc/free だけちゃんと理解してくれれば
それ以上困ることはほとんど無いと思うよ。

21:デフォルトの名無しさん
08/04/29 18:58:37
URLリンク(karetta.jp)

22:16
08/04/29 21:09:42
すみません、外からでしたので変な書き方でしたね。

自分のスペックですが、Javaでの開発経験がそこそこあり、
Javaに関しては仕様が与えられれば実装方式など自分で
考えて行えるレベルです。

最近、もう少し低レベルというか、アセンブリに近い部分に
ついて勉強したいと思い、それなら高級アセンブリと言われる
C言語だと思って質問をいたしました。

Cについては、ずっと昔に「独習C」とか、その他小さな本を読んだ
経験があるぐらいです。実務などでの経験はゼロ。「独習C」も
最近見たら全く読んだ覚えが無いぐらい忘れてましたw

基本的に今後実務で使用する予定も無いのですが、制御系や
OSカーネルの世界をちょっと知りたいのと、言語としてどういう
ものなのか、きちっとした仕様のようなものを知りたいと思ってます。

なので、よくある入門書というよりは、C言語っていうのはこういう
言語なんですよ、こういう原理原則なんですよ、という本などを
教えていただけると嬉しいです。

>>21
おお!これ、面白いですね。早速読んでみます。ありがとうございます。

23:デフォルトの名無しさん
08/04/29 21:52:00
>>22
こうしてjava使いは馬鹿にされるのか・・・

24:デフォルトの名無しさん
08/04/29 21:53:11
>>22
ほんとにそんなスキルあるってんなら
規格書でも読んでればいいんじゃねーの

25:16
08/04/29 22:51:35
>>21のサイト中にも紹介されてました、カーニハン&リッチー『プログラミング言語C 第2版』を
購入して勉強してみようと思います。

スレ住人の方々から見て、この本はいかがでしょうか?

26:デフォルトの名無しさん
08/04/29 22:55:08
いいんじゃないすか

Javaの経験があるなら入門書読んでも意味ないだろうし

27:デフォルトの名無しさん
08/04/29 23:12:47
>>8
ppは初期化されていない。つまりどこを指しているかわからない。
どこを指しているかわからないポインタへの演算は未定義となる。

上のことをさておいても、ppがなんであるかを本当に理解しているか。
ppはcharへのポインタの要素数3の配列へのポインタであり、
これをインクリメントした値は元の値よりcharへのポインタの要素数3の配列ぶん後をさす。
charへのポインタの要素数3の配列の大きさはもちろんcharへのポインタ三つぶんであるから、
charへのポインタの大きさが4であれば当然結果は12となる。

28:デフォルトの名無しさん
08/04/29 23:20:07
>>25
エキスパートCプログラミングもよかったよ。
ネットの「C FAQ」も一通り目を通すといい。(一部内容が古いけど)

29:デフォルトの名無しさん
08/04/30 00:34:19
独習C持ってるんなら一通り目を通して、それでも本が必要だと思ってから買ったら?

30:デフォルトの名無しさん
08/04/30 08:08:58
>>22
時間に余裕があるなら、まずアセンブラでプログラム書くことを勧める。
極々簡単なヤツでいい。
JavaのアナロジーでCを理解すると失敗しやすい。

31:デフォルトの名無しさん
08/04/30 10:06:09
Javaから見たC言語って、階層でいうとJavaより物理層に1段近くて
アセンブラの1段上みたいなポジションだよな。

32:デフォルトの名無しさん
08/04/30 10:27:22
すさまじく低レベルな質問ですまないのだが、
GlobalLockのメモリを動かないように固定するの『動かない』と
『固定する』ってどういう意味?

33:デフォルトの名無しさん
08/04/30 10:29:07
>>32
Cに関係ないのでスレ違い。
まぁ、それぞれ「メモリアドレス」が主語になっていると思えばいいよ。

34:デフォルトの名無しさん
08/04/30 11:01:48
質問なんだが、なにかオススメの入門書ないだろうか?

『これならわかる C 入門の入門』を買ったんだが、ボーランドの無償Cコンパイラがなくなってて、別のフリーコンパイラを代用しようとしたんだが、本の通りに進めれなくてオワタ

35:962
08/04/30 11:02:11
前スレ962です。回答ありがとうございます。遅れましてすみません。

fflushなんて初めて聞きました調べてみたらfsyncってのもあるんですね。
それらを使用しても確実ではないようですがだいぶ安定するかと思います。
たすかりましたm(_ _)m

36:デフォルトの名無しさん
08/04/30 11:17:19
>>32
APIのスレで聞くべし。
メモリーって実は地動説だったりするんだよ。

37:32
08/04/30 11:25:13
そういえばそうだな。ありがとよ。

38:デフォルトの名無しさん
08/04/30 13:29:56
>>34
独習C

39:デフォルトの名無しさん
08/04/30 15:38:30
英語では文末記号にピリオド(.)が使われているが、なぜC言語にピリオド(.)ではなく、セミコロン(;)を使うのか教えてもらえませんか。


40:デフォルトの名無しさん
08/04/30 15:42:58
仕様

41:デフォルトの名無しさん
08/04/30 15:48:39
>>39
英語じゃないし。

42:デフォルトの名無しさん
08/04/30 15:53:12
ピリオドだとカンマと見分け付かないから、俺は嫌だな。

43:デフォルトの名無しさん
08/04/30 15:55:14
英語では、ピリオドより弱い区切り記号としてセミコロンが使われます。
また、ピリオドは文中でも小数点記号として使われることがあります。
この辺りを鑑みてセミコロンを文末記号として使うことにしたのでしょう。
もしかしたら、そういうスタイルの言語が既にあったのかも知れません。

44:デフォルトの名無しさん
08/04/30 15:57:03
ピリオドに対してはコンマじゃね?

45:デフォルトの名無しさん
08/04/30 16:03:28
あと、コロン、セミコロンに関しては、英語でなくても
ある名目に対しての説明、要するに = のような役割をしているよ。

46:デフォルトの名無しさん
08/04/30 16:26:23
>>44
文の区切り記号としては、ピリオド>セミコロン>カンマの順で弱くなる。

47:デフォルトの名無しさん
08/04/30 16:28:45
何この勘違い野郎?使い方を知らない奴が、勝手に強弱を語るって、アホか?
URLリンク(dictionary.goo.ne.jp)
もちっと英文を読もうぜ?インターネットを使っていて、国境なき情報収集手段で
ジャポネーゼ文字だけ見ていても仕方なかろう?

48:デフォルトの名無しさん
08/04/30 16:31:13
>>47
えーと、どなたかコロンの強弱に言及なさってましたか?

49:デフォルトの名無しさん
08/04/30 16:36:04
今基礎的なこと勉強してるのですが
中々とっつき難いです、最初はこんなものなんでしょうか?
ちなみに本を読んで独学で勉強してます

50:デフォルトの名無しさん
08/04/30 16:37:15
>>43
その理由ってお前の思い込みだろ?理由なんてどうでも良いんだよ
ソースコードを記述するのに使われている区切り、ただそれだけ。
っつか、ソースで . や , を区切りとして使っている例を持ち出してみよう。
引数の区切りに , (コンマ)が使われておりますがっ、良いですか?
. (ドット)を使った、オブジェクト指向のコードにメソッドやクラス、構造体の要素を
結合する場合にも使われています。そうなると、ピリオドが終わりを意味するのではなく
結合に使われているという、文章の区切りでの説明が矛盾します。
ゆえに、これ以上個人的な思い込みではなく、規格書があるならそれを用いるなり
法律で言う基本原則の憲法を用いるような形で説明を求めます。
なんで、基本ルールを無視して、あいつ気にくわねぇ、基本的人権を無視して
俺ルールで批判してやれとかって話になるのでしょうか?理解不能

51:デフォルトの名無しさん
08/04/30 16:39:08
46 名前:デフォルトの名無しさん 投稿日:2008/04/30(水) 16:26:23
>>44
文の区切り記号としては、ピリオド>セミコロン>カンマの順で弱くなる。

↑お前じゃん。っつか、>>43は英語を持ち出しただろ?
区切りにコロンも存在するが、セミコロンはそれに対して「セミ」といった
セミロング、セミダブル、セミヌードなど「半ば」や「半」といった意味が付いた言葉ですが?
URLリンク(dictionary.goo.ne.jp)

52:デフォルトの名無しさん
08/04/30 16:41:13
理由なんてない。規格でそうなってるんだよ。
もし規格で\を区切り文字にする言語を作ればそういう規格になるだけ。
理由なんてない。考えるな。感じろ。

53:デフォルトの名無しさん
08/04/30 16:46:54
URLリンク(k-tan.staba.jp)
以上。区切りとは限らない、ましてや続きとして and の役割とも。
しかし、ソースコードでは流れとしては確かに上から順に
続く意味があるが、1行の分の終わりに使われる。
一方、コンマやピリオドは接続的な役割をしている。(引数、メソッド、メンバーなど)
区切りの強弱で説明をつけるのは、ナンセンス。所詮、人間が勝手に決めたもの。

54:43=46
08/04/30 17:22:51
>>51
>46は>44に対してなので、英文での話です。
それはさておき、「半分(半ば)」の「コロン」ってのは微妙ですね。
まぁ、M-Wにはこう書いてあるわけですが。
--
semicolon
a punctuation mark ; used chiefly in a coordinating function between major sentence elements (as independent clauses of a compound sentence)
colon
a punctuation mark : used chiefly to direct attention to matter (as a list, explanation, quotation, or amplification) that follows
comma
a punctuation mark , used especially as a mark of separation within the sentence
period
a point . used to mark the end (as of a declarative sentence or an abbreviation)
--
一応拙いながら訳しておきますとこうなります。
==
セミコロン: 句読点「;」は主として主要な文章要素の調整機能に使用される。
コロン: 句読点「:」は主として後続の重要項目に対する注意として使用される。
カンマ: 句読点「,」は特に文中で分離記号として使用される。
ピリオド: 点「.」は終わりを示すために使用される。
==
コロンはどちらかと言うとマーカーということですから、セミコロンとは役割が違うということですね。

>>50
>43は英文でのセミコロンの使われ方から推測しているわけです。
また、ピリオドに関しても「文の終端」という機能以外にも「小数点記号」などとして使われるからこそ、
Cでは終端記号として採用されなかったのだろうという推測です。
まぁ、「理由なんてどうでもいい」という話だけなら納得できますが。
後半は私には関係ないと思いますが、どなたか「批判してやれ」って話をなさってます?
私がアホ呼ばわりされているだけの気がするのですが。

55:デフォルトの名無しさん
08/04/30 17:33:29
>>54
お前さぁ、周りから変な目で見られてない?英数文字がコードでは
原則的に使われているが、あれは機械が演算するのを
人間がわかるコードで記述したものであって、英文法じゃないからw
どこで1文が区切られているか?の規定ごとに、英語の強弱が
関与してますよと説明して、それが根本から覆された説明文を見て
まだつまらない食い下がりをするの?すまんが、あんた何者だ?
標準化を決めている組織の関係者か?ただの一講師か?
初心者の生徒か?ナンバーサイン野郎にしろ、気持ち悪い思い込みが激しい香具師が目立つな

56:デフォルトの名無しさん
08/04/30 17:36:41
それじゃさぁ、HTMLにおいて、タグを <>で囲っているが、これは?
数学ではその記号はジャポネーゼでは大なり、小なり、英語では
greater than , less than という意味だが?言語や使われ方によって
本来の意味なんてナンセンスだろ?もともと演算子の優劣でさえ
人間が勝手に決めたものだよ。

57:デフォルトの名無しさん
08/04/30 17:50:57
ピリオドは小数点とかぶるからじゃね?

58:デフォルトの名無しさん
08/04/30 17:56:17
私の為にけんかはやめて!

59:デフォルトの名無しさん
08/04/30 18:03:28
= は式を計算して導くというよりも、プログラム言語では
左にある変数に対して 代入 となる。
しかし、人間が数学で使っている 3+4=7 は 3+4 は 7 という結果
あるいは7と等価という意味であり、全く意味が異なってくる。
比較演算子に == と決めたが、これは 成り立つかどうか? という評価であって
結局人間がコンピュータに解釈させるために決めたことであって
コンピュータが人間の言語として理解しているわけではない。
そこで、英文法での優劣を持ち出されて説明されても、へっ?意味が分からないんすけど?
ってなるわな。

60:デフォルトの名無しさん
08/04/30 18:06:53
英語とC言語は別物、ってことでいいでしょ

次の質問をどうぞ↓

61:デフォルトの名無しさん
08/04/30 18:14:45
またいつものキチガイかw

62:デフォルトの名無しさん
08/04/30 19:32:03
流れが読めません><
しかも中身のなさそうな長文ばかりで読む気がしません!

63:デフォルトの名無しさん
08/04/30 19:39:49
>>61
ようキチガイ

64:デフォルトの名無しさん
08/04/30 21:25:34
>>61 自己紹介乙。お前かなり頭がイカれてんな。こんなところに常駐して
自分が気に食わない奴をネチネチ煽るその性格。人間性のレベルが低すぎ。
あと、プログラミングに関してもお前は頭が悪いから向いてないよ。

65:デフォルトの名無しさん
08/04/30 21:33:59
IDも出ない板で雑談と煽りあいですか

66:デフォルトの名無しさん
08/04/30 21:36:01
>>62
長文になると中身が分からなくなるなんて、
受験じゃ国語と英語は失敗するぞ、お前。
数学も題意が分からずに間違った解答をするでしょうな。

67:デフォルトの名無しさん
08/04/30 21:37:59
>>55
お説ごもっともですが、すべてのファイルに EOF があると思っているとか、
#define で複数行にわたるときの書き方をしらないあなたに何を言われてもねぇ。

68:デフォルトの名無しさん
08/04/30 21:39:43
ナンバーサイン野郎はキレるとファビョると、メモメモ

69:デフォルトの名無しさん
08/04/30 21:39:59
質問系のスレって何でこんなに荒れるの?

70:デフォルトの名無しさん
08/04/30 21:43:33
ナンバーサインがキレたw

71:デフォルトの名無しさん
08/04/30 21:51:23
>>69
この世に10種類の人間がいるから。

72:デフォルトの名無しさん
08/04/30 21:55:52
スレリンク(tech板:758番)
基地外登場、以後放置よろ

73:デフォルトの名無しさん
08/04/30 22:15:44
途中、英語では・・とか意味不明なのがありましたがC言語の世界に戻ってよろしいですか?過去眺めてると pointer が肝なのかな。たとえば・・

int *a;
a[0] = 10; a[1] = 20; ...

のような事を始めてみたりしてます。これはあまり必要性が見えません。必要ないのに pointer を使うとろくなことは無いわけです。
以下が良い例と言うわけではないが気分は伝わるといい。

const int mdayA[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
const int mdayB[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int* mday;

if(うるう年なら)
 mday = mdayB;;
else
 mday = mdayA;

以下 mday[] でうるう年の時もそうでないときも同じソースで記述てきる。

これを

const int mday[2][13]
 = {{0,31,28,31,30,31,30,31,31,30,31,30,31},
  {0,31,29,31,30,31,30,31,31,30,31,30,31}};
mp = 0;
if(うるう年なら)
 mp = 1;
mday[mp][] となるよね。
pointer を使うと何かすっきりしそう。気分の問題です。

74:デフォルトの名無しさん
08/04/30 22:16:23
じゅーろくしゅるいでじゅーろくちゃ

75:デフォルトの名無しさん
08/04/30 22:19:38
>int *a;
>a[0] = 10; a[1] = 20;

なんにもわかってないw

76:デフォルトの名無しさん
08/04/30 22:29:25
>のような事を始めてみたりしてます。
誰がだYOw

77:デフォルトの名無しさん
08/04/30 22:31:37
>>73
前者は致命的に間違ってる

後者はむしろ構造体の出番だw

78:デフォルトの名無しさん
08/04/30 23:38:17
>>75 >>76 >>77
こんなコードを書いて質問する人がC始めた人に多いというがいいたいのだヨん。
この前のスレみてて何度か目にしたよ。

とにかくチミ達は始めに3行みて反応してるね?(2chはそんなもんか・・w)

79:デフォルトの名無しさん
08/04/30 23:41:47
最近C言語を勉強し始めたものです
今日、「Hello World」まで出来ましたが。。
参考書を読みつつ覚えるのも飽きてきましたorz
そこで、簡単な問題を出して頂けませんか?
よろしくお願いします




80:デフォルトの名無しさん
08/04/30 23:44:29
HelloWorldで飽きた人間に出せる簡単な問題って難しくないか?
fizzbuzzとか?

81:デフォルトの名無しさん
08/04/30 23:44:49
>>79
テキストファイルを開き、その文字列の中から
abcと言う文字が何個含まれているか、カウントして
なおかつ該当箇所が何行目にあったかを表示せよ。

82:デフォルトの名無しさん
08/04/30 23:47:22
おまえら優しいな・・・・・・・

83:デフォルトの名無しさん
08/04/30 23:55:01
>>79
では史上最初に出現したアルゴリズムを追体験してみましょうか。
「a = 1190, b = 1394 とおき、a, b の最大公約数を求めよ。」

84:デフォルトの名無しさん
08/04/30 23:57:07
最大って存在すんの?

85:79
08/04/30 23:59:06
>>81 >>83さん早速のレスありがとう御座います

早速がんばってみます

86:デフォルトの名無しさん
08/04/30 23:59:53
>>79
朝だったら、おはよう。昼だったらこんにちは、夜だったら今晩は、夜中だったっら、おやすみなさい明日はオハヨウって表示するように改造するんだ。


87:デフォルトの名無しさん
08/05/01 00:11:06
っつか、素数を1〜2^32 -1 の範囲内で求めよ。
むっちゃ時間かかるで?w

88:デフォルトの名無しさん
08/05/01 00:13:47
配列サイズの決め撃ち禁止するなら
とりあえず deque の実装からはじめないとな

89:デフォルトの名無しさん
08/05/01 00:14:29
別に両端に追加できなくても最後に追加さえできればいいじゃん

90:デフォルトの名無しさん
08/05/01 00:16:17
dequeである必要は無いだろ
まずは単方向リストだろ

91:デフォルトの名無しさん
08/05/01 00:23:30
配列リストだな。
つーか効率的に実装したスタック?

92:デフォルトの名無しさん
08/05/01 00:24:22
俺はチムポラリーファイルを使わせてもらうぜ

93:デフォルトの名無しさん
08/05/01 00:30:38
>>92
サイズ足りなすぎw

94:デフォルトの名無しさん
08/05/01 00:35:27
その前に書き込み保護されて書き込めません

95:デフォルトの名無しさん
08/05/01 00:57:12
>>65
そう、でも宿題スレではその実力のほどが露呈されてしまったので、さすがに出てこなくなったようです。
出したり引っ込めたり、くだらないソースなのに一人芝居をうじうじしていているのをみて、期限きって答えを書いてやりました。
無論、宿題スレでバンバン答えを出していただけるのであれば、歓迎します。

96:デフォルトの名無しさん
08/05/01 00:58:24
>>95
お前がまともに答える能力がなく、コピペに反応して必死になっていた
基地外ですって自己紹介乙w

97:デフォルトの名無しさん
08/05/01 00:59:18
>>95
> 期限きって答えを書いてやりました。
もろにあのときに、ソースを書くわけでもなく噛み付いていただけの
無能ですって露呈しているのがお前なのがワロスw

98:79
08/05/01 01:00:33
>>83さんできました。1時間以上かかりましたorz
#include <stdio.h>
main()
{
int a=1190,b=1394,c=-1;
while(c !=0){
c=b%a;
b=a;
a=c;
}
printf("最大公約数=%d",b);
}

>>81さん、>>87さんのはハードル高そうなので
次は>>86さんのをやって見ます

板汚しスイマセン

99:デフォルトの名無しさん
08/05/01 01:05:50
>>95 = EOFに関してナンバーサインに加担していたバカ
スレリンク(tech板:103番)
スレリンク(tech板:139番)
スレリンク(tech板:141番)
スレリンク(tech板:249番)
スレリンク(tech板:404番)
スレリンク(tech板:407番)

分かるだろ?大学で実験もしたこともない低レベル共。
お前ら笑われるぞ、コードだけでプログラミングできたとか言ってるとw

100:デフォルトの名無しさん
08/05/01 01:09:50
>>95
お前が糞だから無能を露呈しないためにも、簡単な答えの分かりきった
宿題しか答えられい、実力なきクズだとばれているから。
その言動にお前のレベルの低さが露呈されてますよw

101:デフォルトの名無しさん
08/05/01 01:24:09
>>95 ん?もう終わりか?威勢が良くないな、ヘタレ小心者。
お前みたいな奴は、一生まともにはなれんよ。思い上がりの前に
気に入らなきゃ誰それ構わず、自分が間違っていようが多勢に無勢で
攻撃をするから失敗するんだよ。まぁ、もちっと人間社会の人間慣れをするんだな。
所詮誰でも自分なんて数多くいる人間の中の一人。
どんな偉人でも完璧な人はいない。ましてや、こんなスレで初心者相手に
自分は相手が知らないことを知っているということで、安心しているようじゃ
先が知れてる。自分が知らない、体験したことがないことなんていくらでもあるが
こんなの基本は分かりきっていることだろ。その基本事項を用いた説明に対して
自分の体験談や思い込みで反論するから、簡単に跳ね返されるんだよ。
お前じゃ、炭素とダイヤが同じ成分で構成されていることすら知らんだろうよ。そんなもん。

102:デフォルトの名無しさん
08/05/01 01:50:00
>>98
結構前にこのスレだかで見た気がするが「projectEuler」とやらをやればいいじゃない
C言語というよりアルゴリズム、数学の問題だが

103:デフォルトの名無しさん
08/05/01 01:50:01
>気に入らなきゃ誰それ構わず、自分が間違っていようが多勢に無勢で
>攻撃をするから失敗するんだよ。まぁ、もちっと人間社会の人間慣れをするんだな。
自分のことだろw

104:デフォルトの名無しさん
08/05/01 02:02:32
相手してるやつのほうがうぜえよ
放置しろ

105:デフォルトの名無しさん
08/05/01 03:41:09
>>103
基地外馬鹿が、その程度の反論しかできないのか、お前性格が腐ってんぞ。
自分のしたレスを読み返せ、こぴぺに反応した馬鹿w

106:デフォルトの名無しさん
08/05/01 05:14:50
>>95
> 期限きって答えを書いてやりました。
期限が延長していたわけだが、どこに噛み付いてだこの基地外?

107:デフォルトの名無しさん
08/05/01 09:44:33
宿題スレで延々と続けたスレ違いを、このスレでもやろうというのか
別の場所でやれ

108:デフォルトの名無しさん
08/05/01 10:37:34
>>107
すみません。

109:デフォルトの名無しさん
08/05/01 10:38:16
>>107
申し訳ありませんでした

110:デフォルトの名無しさん
08/05/01 10:40:21
>>107
ごめんなさい。

111:デフォルトの名無しさん
08/05/01 13:01:29
型の違うものの配列ってどうやって実装するの?

112:デフォルトの名無しさん
08/05/01 13:10:57
void* array[]

113:デフォルトの名無しさん
08/05/01 13:45:52
>>111
普通は共用体の配列(場合によっては、データを保存するための共用体と型を記憶するためのフラグ変数をセットにした構造体の配列)を使う
型のサイズが極端に不ぞろいでメモリを節約したい場合にはvoid *の配列を作って各配列要素に適切な領域を割り当てる

114:デフォルトの名無しさん
08/05/01 13:53:21
>>107 最初に蒸し返した >>103  >>95  お前が言うなよw

115:デフォルトの名無しさん
08/05/01 13:57:03
>>107=>>103=>>95だったのか。
IDでない板は自演が楽でいいな。

116:デフォルトの名無しさん
08/05/01 14:17:46
強制IDのところへ移動してやったらどうかね?

117:デフォルトの名無しさん
08/05/01 15:44:09
質問です。
初歩的なことですいません。

親関数から子関数にとんだときに子関数がreturnしたら親関数も一緒にreturnすることってできますか?

例えば、、、

void func(void)
{
sub();

いろいろな処理;

return;
}

void sub(void)
{
return;
}

となったときに
『いろいろな処理』を行わないでfunc関数を終了したいのです。
適当に作った関数なのでそこの突っ込みはなしてお願いします。

subに値を返させてfunc関数内でsubを呼び出した後にif文で処理するのが
オーソドックスなのかと思いますが、
func内でif文を追加できない状況です。
exitも全て終了してしますのでダメです。

よろしくお願いします。

118:デフォルトの名無しさん
08/05/01 15:46:58
longjmp するくらいしかないんじゃないか?

119:デフォルトの名無しさん
08/05/01 15:47:39
func内にifが追加できない状況ってのがよくわからん。
っていうか、その例だといろいろな処理は常に実行されないってこと?

120:デフォルトの名無しさん
08/05/01 15:48:24
void func(void)
{
sub();

いろいろな処理;

return;
}



void func(void)
{
sub();

/*いろいろな処理;*/

return;
}

121:デフォルトの名無しさん
08/05/01 15:49:27
多分 func がライブラリで提供される関数で、
sub をコールバック関数として渡すんじゃないかと思われ。

122:デフォルトの名無しさん
08/05/01 15:52:02
だと仮定するとsubでスタックをいじるとかあやしい事するしかなくね
あるいはコードを直接書き換えるか

123:デフォルトの名無しさん
08/05/01 15:59:59
jmp_buf env;

を作って、func を使う部分を

if (! setjmp(env)) func();

とし、sub 内で return する代わりに

longjmp(env, 1);

とする。
これで一応目的の動作にはなる。
それでいいのかどうかは知らんが。

124:デフォルトの名無しさん
08/05/01 17:20:34
func()呼ばずにsub()呼べばいいだけじゃ

125:デフォルトの名無しさん
08/05/01 17:38:07
>124に1票

あるいは、sub()の後の"いろいろな処理"を別メソッドにして、func()呼び出している側がそれを呼び分ける


126:デフォルトの名無しさん
08/05/01 17:42:41
>>112,113
おk
試してみる
void*の配列のほうが汎用性が高そうだけど型キャストがめんどくさそうだ


127:デフォルトの名無しさん
08/05/01 19:30:02
>>121 - 125
回答ありがとうございます。
正直言いますと自分の設計ミスなんですが、上の例で言いますと、
func関数内でsubに引数与えて(例では引数ありませんが)何回も呼び出してるんですよ。
で、subはエラーを返すんですが、funcに返ってきた時点でエラーならさらに上の関数に戻りたい。
しかし、subを呼び出す度にif文処理をするのが妥当なんですが、時間もかかるので、
もし何か良いやり方があったら教わろうとしたわけです。

jmp関数はgoto文と似ていますね。
goto文は使わない方が良いと言われていますがやはりjmpもできる限り使わない方が良いんですか?


128:デフォルトの名無しさん
08/05/01 19:40:57
>時間もかかるので
そんなことを気にしなきゃならないような状況なら
悪いことはいわないから設計からやりなおせ

129:デフォルトの名無しさん
08/05/01 19:42:38
せいぜい、整数の判定をかけるだけのif文はさむよりも
longjmpにかかるコストのほうがでかいなんてことにならないようにな

130:デフォルトの名無しさん
08/05/01 19:53:06
if文処理するのが妥当なの分かってるんならif文で処理しろw

131:デフォルトの名無しさん
08/05/01 21:07:17
直せるけど面倒臭いだけかよ!

C限定じゃなければsub()で例外スローして終了なんだけど
涙目でsubの呼び出し箇所をひとつづつ修正していくんだ

132:デフォルトの名無しさん
08/05/01 21:58:00
素直にfunc()の設計しなおしをお勧めするね。

133:デフォルトの名無しさん
08/05/01 22:03:20
>>98
OK です。記述方法はいろいろありますが、いずれまた、この問題にもどることになると思います。

>>114
>>67=>>83=>>95=>>108

134:デフォルトの名無しさん
08/05/01 22:16:15
>>133
誰がいつすべてのファイルにEOFがあると言ったん?
お前の勘違いの方がアホだろ・・・あのね、思い込みで
話をこじらせるな。EOFの入力について。
もうね、お前みたいな 入力 の基本も知らない奴にバカ呼ばわりされたくねーから
最終的には、やはり学んだ場所、学歴が重要だってわかったわ。
いくら優秀なドライバーでも事故が起きれば終わりだしな。そんなもんだぞ、人生は。

135:デフォルトの名無しさん
08/05/01 22:17:30
で、あのプログラムにおいて、EOFを入力させると無限ループするってトラブルが
対処されていなかったという、穴があったという話で、良くここまでしつこく粘着が出来るな。
マジきめぇよ、お前。性格狂ってんな。絶対に社会に出てくるなよ。お前みたいな奴は
何をしでかすか分からないからw

136:デフォルトの名無しさん
08/05/01 22:19:24



  終


137:デフォルトの名無しさん
08/05/01 22:19:41
>>67
> #define で複数行にわたるときの書き方をしらないあなたに何を言われてもねぇ。
言った覚えねーわ・・・なんだこいつ?妄想癖があるのか?マジきめぇ、あぁきめぇ
どんな面してんだろ?鏡見てこいよ、それ、お前の面だから m9(^д^)

138:デフォルトの名無しさん
08/05/01 22:21:51
>>95
> その実力のほどが露呈されてしまったので、さすがに出てこなくなったようです。
お前の実力がしょぼいから、そうやって個人叩きしか出来ないか
資料を調べて必死に抵抗することしか出来ないんだろ?w
なんだよ、EOFがあるないを無理やり論点に持ち込む奴って?w
まるで、自分が違反をしても、他にも違反している奴がいるとか
あっ、俺に対して違反だといったお前、今違反しましたね?みたいな
ガキが小学生レベルの知能だな、こいつw

139:デフォルトの名無しさん
08/05/01 22:23:15
(∩. ゚д゚)アーアー聞こえない

140:デフォルトの名無しさん
08/05/01 22:31:21
質問です。
文字列の配列を直接引数として関数にわたしたいんですが、
引数の型定義はどのようにすればいいのでしょうか?
具体的には、

void function(??? data){
 ...
}

int main(void){
 char mojimoji[10][80];
 function(mojimoji);
}

といった感じで、???のところがわかりません。
"char *"、"char **"では駄目でした。
よろしくお願いします。

141:デフォルトの名無しさん
08/05/01 22:35:31
そういや、昔ASCII以外にもEBCDICがあったとか、んじゃお前は今更
それを使うのかと?なぁ、時代遅れのオッサンがここでのさばってんの?
インターネットを最近知ったとかで?今更古い手法に合わせてプログラミングをするの?
ねぇ?教えて、EOFがなかった時代を知っているプロさん?
っつか、ろくにコードを書かない奴ほど、ぎゃーぎゃーわめくよな、自治厨みたく。
実力云々以前に、他人の粗探しをして楽しいのか、こいつ?

142:デフォルトの名無しさん
08/05/01 22:35:46
char data[10][80]

143:デフォルトの名無しさん
08/05/01 22:37:40
void function(char * data){
}

int main(void){
 char mojimoji[10][80];
 function((char *)mojimoji);
}


mainは変えずに
void function(char (*data)[80])
void function(char data[][80])


144:デフォルトの名無しさん
08/05/01 22:41:32
原則的にはchar data[][80]

145:デフォルトの名無しさん
08/05/01 22:49:02
まぁ、ファイルにEOFがあろうがなかろうが、キーボードからの入力だから。
ナンバーサインはEOFの入力が出来ないとかほざいてただろ。
印字可能な文字ではないにしろ、代用の入力文字はあるというのに。
お互い様とは言わないが、粗探しする前に本題に目を向けてくれ。
入力とは、信号やデータなどを機器へ取り込むこと全般。その形式、手法は様々。

146:140
08/05/01 23:00:51
>>142-144
ありがとうございます。
早速明日やってみます!

147:デフォルトの名無しさん
08/05/01 23:46:09
C言語でURLの一部でブラウザを振り分けるプログラムを作りたいんですが、
プログラム内から、他の実行ファイルに引数を渡して実行するにはどうすればいいんでしょうか

コマンドプロンプトだと
C:\Program Files\Internet Explorer>iexplore URLリンク(***)
と同等の事をCでやりたいのですが

148:デフォルトの名無しさん
08/05/01 23:50:33
>>145
んん? EOF はファイルにあるのではなくファイルの終わりをみて返されるものだよね?
EOF (-1) は char でなく int で受けないと処理系で(俺は行ってる、俺は行かない)みたいな不毛な会話が飛び交ったりするし。
ま、なにか EOF の扱いで随分と迷走してる気はするな。そう、粘着するレベルのものではないよ。前にすすもうよ。

149:デフォルトの名無しさん
08/05/02 00:05:29
>>147
C言語の話としてやるならsystem()使えで終
実際にはWinAPIのShellExecute()を使うことになるだろう
詳しくはAPIスレで聞け

150:デフォルトの名無しさん
08/05/02 00:21:27
>>149
ありがとう
APIの事はほとんど分からんのでとりあえずsystemとやらを使って作ってみます

151:デフォルトの名無しさん
08/05/02 00:25:08
system はセキュリティ上の問題があるからな。
一応そこんとこは分かった上でよろ。

152:デフォルトの名無しさん
08/05/02 02:11:28
>>148
だからそのコードをキーボードから入力することについての話だったんだが・・・
何ごちゃごちゃその定義にまで話を持ち込もうとしてんだ???
お前ってさぁ、自分のステータスは良くなくても、所有している
スポーツカーがかっこいいだろ?乗るかい?って乗った女性を
家までさらっていくタイプだろ?目的がちがーうって振られるタイプでしょ?

153:デフォルトの名無しさん
08/05/02 02:19:13
スレ違い

154:デフォルトの名無しさん
08/05/02 02:25:20
URLリンク(www.google.co.jp)
EOFの入力は余裕で可能です、ありがとうございますた。

155:デフォルトの名無しさん
08/05/02 02:36:35
入力の終わりを通知することを「EOFを入力する」と定めるなら、余裕で可能です。

156:デフォルトの名無しさん
08/05/02 02:47:55
この前だってそういう話で終わったじゃないか。

157:デフォルトの名無しさん
08/05/02 03:01:33
荒らしに付き合うやつも荒らし
キチガイに付き合うやつもキチガイ

158:デフォルトの名無しさん
08/05/02 03:38:01
getchar()が云々はどうでも良い。キーボードから入力が可能です
当然EOFコードを検出するのに、ファイルの終わりを示している
コードを使うのもありです、本当に本当に、重ね重ね、ありがとうございますた!

159:デフォルトの名無しさん
08/05/02 09:40:33
□!!!これを見た貴方は3日以内に死にます!!!■
■死にたくなければ、このレスをコピーして他のスレに □
□10回貼り付けて下さい。1時間以内にです!もし無 ■
■した場合は、今日寝ている間に富子さんがやってきて□
□貴方の首を絞めに来ます。富子さんは太平洋戦争の■
■時に16歳という若さで亡くなった女の子で、未だに成 □
□仏していないそうです。信じる信じないは貴方次第。 ■
■今年になってからこのレスを無視した人で、“呪われ □
□て死亡した人”が続出しています。これは富子さんの ■
■呪い。呪われて死んでもいいのならこれを無視するこ□
□とでしょうね。                        ■
■―貴方がこうしているうちに富子さんが後ろから見□
□ていますよ…。                       ■
■□■□■□■□■□■□■□■□■□■□■□■□

160:デフォルトの名無しさん
08/05/02 11:08:02
おまえらがくだらん煽りあいをしてると初心者の人が質問しにくいだろ

161:その1は宿題スレね
08/05/02 11:30:28
どうせここは隔離スレ(その2)だからどうでもいいよ。

162:デフォルトの名無しさん
08/05/02 21:51:56
一つ目のウィンドウにHello、二つ目のウィンドウにWorld を表示させるにはどうすればいいんでしょう?

163:デフォルトの名無しさん
08/05/02 21:53:07
レベル7のエスパーを求む!

164:デフォルトの名無しさん
08/05/02 21:53:47
>>152
何か切れてる? Unixなら伝統的に ^D = EOF
そそ、だからといって通常に ^D (0x04) が現れても EOF にはならないよ。
とにかくファイルに EOF というコードが有ると勘違いしるのかとおもった。

>>160 おっと、すまん。そのとおりだ。

165:デフォルトの名無しさん
08/05/02 22:07:28
>>164
どのOSならとかどーでも良いんじゃい(竹原風に)
キーボードからの入力は可能だし、EOFはマクロで値が定義されているし
なんならそれに応じた入力をしてやりゃ良いんだよ。所詮俺らが視覚的に
見えているものは、デジタルデータ、0と1の組み合わせの符号、信号。

166:デフォルトの名無しさん
08/05/02 22:52:18
配列の宣言時に[]の中に変数って使えないんだっけ?
char num[sum];
みたいな

167:デフォルトの名無しさん
08/05/02 22:52:54
>>166
C99じゃあるまいし

168:デフォルトの名無しさん
08/05/02 22:54:49
>>163
すまない。俺はまだレベル6だ

169:デフォルトの名無しさん
08/05/02 23:02:16
つまりC99では使えると

170:デフォルトの名無しさん
08/05/02 23:06:20
「可変長配列」この辺かな
URLリンク(seclan.dll.jp)

171:デフォルトの名無しさん
08/05/02 23:14:11
>>170
そのページのsizeofのところでふいたw
図からわかるようにって、代入しただけで何がわかるんだよ

172:デフォルトの名無しさん
08/05/02 23:16:40
>>171
図の中のコメントに代入されるはずの値が書いてあるから
それを見ろということだろ。

173:デフォルトの名無しさん
08/05/02 23:23:54
>>166
結論からいうと変数は使えない・・・ので malloc alloc がある。

char* num = (char*)malloc(num*sizeof(char));
...
*(num+5) = 5; // or num[5] = 0; // みたいな...
...
free(num);


174:デフォルトの名無しさん
08/05/02 23:26:19
C99では使えるっつーの。

175:デフォルトの名無しさん
08/05/02 23:32:18
>>165
どうも何かごかいしているね。
EOF = (-1) が定義されているとしてこの -1 は入力できない値(int)なのよ。getchar() などが EOF と判断した条件の時に文字として存在しない値 (int)-1 0xffff あるいは 0xffffffff が返されるものなのだから。。。判るかな?

176:デフォルトの名無しさん
08/05/02 23:37:27
>>175
君ね、いい加減鬱陶しい。マクロを知らないのか?所詮、プログラム言語も仕様も
人間が都合よく定義、規格化しているだけ。EOFがどうとかどうでも良いんじゃい。
所詮 数値データ だと何度も言っているだろ。あとはマクロを使うことで
より幅広い環境で通用するという話。いい加減、大学にも通ってないような
低レベルとは話はしたくないんで。

177:デフォルトの名無しさん
08/05/02 23:38:13
>>174
使えた。

178:デフォルトの名無しさん
08/05/02 23:39:06
>>175
> この -1 は入力できない値(int)なのよ
これだけ取り出しても、こいつが相当な勘違い野郎だということがはっきりしたな。
入力の意味も広義で説明されていたというのに。ねぇ、こういう知ったかが
どこか政府が運営する機関の関係者にいたらどう思う?マジでやべーよ。
まぁ、こんな似非理系は当然、専門学校程度だろうけど。

179:デフォルトの名無しさん
08/05/02 23:46:30
URLリンク(www.google.co.jp)
EOFの入力は余裕で可能です、ありがとうございますた。

180:デフォルトの名無しさん
08/05/02 23:47:14
>>172
コメントの数字が正しいことはどうやって証明するんだよw

181:デフォルトの名無しさん
08/05/02 23:48:12
>>180


182:デフォルトの名無しさん
08/05/02 23:50:47
プログラムが扱う変数として、EOFの数値データをchar型などで扱うかまで
入力受付のライブラリを用いて話をするが、while(getchar()!=EOF); で
ループを止める際に、どうやって止めたいんだい、プログラムは?w
論点はそこじゃない。EOFが入力可能か?答えはYES。適切に処理しない
環境をいちいち持ち出されても迷惑。256色しか表現できない環境で
24ビット画像を正確に表示しようとしても無理なようにね。
くどいが、こんな目の前にある機械なんて、所詮人間がルール(規格)を決めて
定義されたとおりにコンピュータがデータを実装された能力に応じて
展開しているに過ぎない、人間が都合よく解釈できるように。
コンピュータには目の前の文字も画像も映像データも、0と1の塊にしか見えんよ。
あとは規則に則って処理しているだけ。

183:166
08/05/02 23:57:21
>>173
ありがとう
何故か、当然変数で宣言できると思っててエラーでまくってた

184:デフォルトの名無しさん
08/05/02 23:57:49
>>178
そんなむきにならならなくても。

185:デフォルトの名無しさん
08/05/02 23:59:05
>>175
> この -1 は入力できない値(int)なのよ
別にint型とは限らなくね?符号ありのchar型にも収まる数値だが?

#include <stdio.h>
int main(void) {
char a=EOF;
unsigned char b=EOF;
if(a==EOF) printf("a=EOF\n");
if(b==EOF) printf("b=EOF\n");
printf("a : %d / b : %d \n",a,b);
return 0;
}


186:デフォルトの名無しさん
08/05/03 00:10:02
さすがにそれはないわw

187:デフォルトの名無しさん
08/05/03 00:29:06
>>185
fgetc(), getc(), getchar() の返り値は int ですから、EOF (-1) はファイル中に存在する値でも
なければ、stdin から入力できる値でもないと思うのですが。

188:デフォルトの名無しさん
08/05/03 00:30:53
>>185
ああ、ようやく普通の人にであえたきが・・。勘違い >>182 系に辟易だったので・・・
で、実はそうではない。上位ビットが負号を示すのに用いられてるわけだけど
負号無しの unsigned char の場合 0x00 = 0, 0xff = 255 になって
負号付きの signed char の 0x80 〜 0xff は -127 〜 -1 とするから -1 という意味合いはある。
だけどこの -1 を EOF とみてしまうと・・・それはとても困る。
なぜなら(0x00〜0xff) の範囲にあるものすべて扱えないといけないから。
(0xff)が出現するバイナリーファイルの入出力はできないって事になるでしょ?

キーボードなどから (int(-1)) を入力できないデバイスはどうしたらいいかって事になるけど何度も既出だけど ^D (0x04) を犠牲にしそれを終端と意味付け、これをみて intサイズの -1 を返すという決めをしてる。

例で挙げている char a = EOF; の行でコンパイラから警告がでていない?(オプションによるけども char = int とするときの警告文)
後の比較系は int に負号拡張されるから見かけ動くようにみえてしまうので誤解しやすい。
0x7f (char) が 0x0000007f (int) に・・・同じ値 127 となる。
0x80 (signed char) が 0xffffff80 (int) に・・同じ -127 となる。
0x80 (unsigned char) は 0x000080 (unsigned int) ・・ 128・・という具合に・・
上位ビットを負号ビットに割り当てたのは負号拡張がとても容易だから。
a b が printf に渡った時点で負号拡張された int となっているからね。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5372日前に更新/213 KB
担当:undef