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

このエントリーをはてなブックマークに追加
1v(^o^i)d
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

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

各種リンク、関連スレは>>2-5あたり

C言語なら俺に聞け! Part 84
http://pc5.2ch.net/test/read.cgi/tech/1089136366/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
【コンパイラ】
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/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

【ライセンスや機能などに問題あり】
Microsoft 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
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
3デフォルトの名無しさん:04/07/15 13:03
scanfを使った書き方が分かりません。
教えてください。
・数値を一つ入力してそれを表示する。書式は"n=数字\n"
・数値以外のものが入力された場合
  ・"quit"が入力されたら終了する。
  ・それ以外の文字列の場合はエラーとその文字列を表示する。
・終了しなかった場合は最初に戻る。
4推奨NGワード:04/07/15 13:04
第一群
「頭悪すぎ」「池沼」「バカ」「馬鹿」「ばか」「アホ」「あほ」「まぬけ」「間抜け」
「アフォ」「くず」「クズ」「アフォ」「キモイ」「低脳」「タコ」「クソ」「死ね」
「餓鬼」「バッカ」「香ばしい」「ゲラゲラ」「(プ」「プゲラッチョ」
「莫迦」「逝け」「キモい」「キモイ」「消えろ」「失せろ」「晒し上げ」

第二群
「函数」「scanf」「gets」「goto」「コーディングスタイル」
「コメント」「セキュア」「セキュリティ」

第三群
「空白あけろ」「空白あけるな」「空白のあけかた」「空白の空け方」「空白空けるな」
「空白入れろ」「空白入れない」
「ボ○ケ」「ぼけぇ」「ヴぉけ」「ぼけ」「ボケ」

第四群
「;-)」 「;)」「すぎー」「初歩的な質問」「初心者です」「初心者」
「;-;」「異端」「脳内変換」「UNIX厨」「M$」「初心者的な質問」「のー?」
「日下部陽一」「勝利」「敗北」「妄想」「素人」


第一群:言葉自体の有害度が大きい。
第二群:言葉自体は有害ではないものの、使う人の技量や目的によってはフレームの原因になる。
第三群:荒らしが好んで使う言葉。
第四群:その他。主観で分類してください。
>>3
無理。
>>3
こういう事をしたいのかな?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int i;
long num;
char buf[64];
for (i = 0; ; i++) {
 scanf("%s", buf);
 if (!strcmp("quit", buf))
  break;
 if ((num = strtol(buf, NULL, 0))
  printf("%d=%ld\n", i, num);
 else
  printf("invalid input: %s\n", buf);
}
- if ((num = strtol(buf, NULL, 0))
+ if ((num = strtol(buf, NULL, 10))
8デフォルトの名無しさん:04/07/15 13:17
> scanf("%s", buf);
バッファオーバーフロー
キタ━━━━(゚∀゚)━━━━ッ!!
注文通りだろうが。それぐらいで騒ぐな知障
>>3 == >>8   釣り厨
11デフォルトの名無しさん:04/07/15 13:35
scanfを使うなって、HPとかが結構あるがなんでなんだ?
>>3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
 char s[256], *pNotNum;
 long int n = 0;
 scanf("%256s", &s); //fgets(s, 256, stdin);と同じ
 if (strcmp(s, "quit") == 0)
  exit(0);
 n = strtol(s, &pNotNum, 10);
 if (pNotNum[0] != '\0')
  printf("エラー:%s\n", s);
 else
  printf("n=%d\n", n);
 main();
}
13デフォルトの名無しさん:04/07/15 13:36
また同じ過ちを繰り返そうというのか
そうか、またscanfで荒らしたいのか。
>>11
よく昔の入門書に使うなって書いてあったから、その影響なんじゃね?
16デフォルトの名無しさん:04/07/15 13:38
stdinって、なんですか?
もしもし?俺だけど。俺俺。
なんかscanf使ったらさあ、プログラムが変なんだよ。
>>17
お前の感じている感情は精神疾患の一種だ。俺が治せる俺に任せろ。
>>12
なぜ%dを使わないんだ。
scanfの特徴が台無しじゃないか。
>>19
%dで"quit"が入力されたらどうすんだ。ボケ。

とあえて釣られてみるテスト
scanfのげんかいですね
>>4 の第二群を設定しましょう。
まあ、きれい!
お前ら、その話はいいかげんにしろ。


ところで漏れは
if (a == 0) って書くより
if (0 == a) って書いたほうが良いと思あqwせdrftgうわ何をすa4u89
24デフォルトの名無しさん:04/07/15 14:10
scanf

>>1
おつぅ
25デフォルトの名無しさん:04/07/15 14:13
1次元配列、2次元配列のほかに3次元配列、4次元配列も存在するの?
26デフォルトの名無しさん:04/07/15 14:14
>23
if (a = 0) の間違いを見つけてくれるコンパイラはないのか?
27デフォルトの名無しさん:04/07/15 14:14
scanf

>>25
する
28デフォルトの名無しさん:04/07/15 14:17
Cで食えるようになるにはどれくらいの腕が必要なの?
>>23
if (a == 0) って書くより
if(!a) って書いたほうが良いと思あqwせdrftgうわ何をすa4u89
>>28
少なくとも女よりも早くイッてしまわない耐性が必要だ。
31デフォルトの名無しさん:04/07/15 14:22
VisualC++
TurboC++

違いは何ですか
>>31
実装
33デフォルトの名無しさん:04/07/15 14:24
>31
メーカー
>>31
値段
>31
と、違いはいくらでもある。
36デフォルトの名無しさん:04/07/15 15:10
out of memory ってエラーについて詳しく教えてください。
>>36
マニュアル読めぐぐれ
>>25
Cには多次元配列など亜qwせdrftgyふじこlp;
語尾に
亜qwせdrftgyふじこlp;
こんなのをつけて遊ぶスレはここでうわなにをするjhふぉh2うぁfhg
40デフォルトの名無しさん:04/07/15 16:51
まぁ、皆さん楽しく遊んでください。
41デフォルトの名無しさん:04/07/15 17:08
ええと、直接のCの質問ではないのですが、ちょっと困っています。
私はOSはXPでコンパイラに無償のBorland C++ 5.5を使っていて、それで出来たファイルを簡単に実行できる「C言語を始めよう!」ってフリーソフト
を使っていろいろプログラムを作っています。
それで、実行時にDOS窓なるもの(バッチなんとか?)が出てきて結果が表示されるのですが、その内容がコピーできなくて困っています。
「すべて選択してctrl+C」でコピーが出来てないようです。
解決法を教えてください、お願いします。
>>41
マウスで選択して右クリック
4341:04/07/15 17:14
>>42
マウスで右クリして選択してます
そのあとマウスのボタン押すと選択範囲が消えてしまいます
>>43
すべて選択のあとにEnterでクリップボードに入るよ。
4541:04/07/15 17:16
ちなみに右クリした直後にはコピーが選択不可になっていて、

コピー(Y)  Enter

って書いてあるんです。意味はよくわかりません・・・
>>43
えんたーきーでこぴーするのさすれちがい
4741:04/07/15 17:17
>>44
出来たようです、ありがとうございました
>>41
PC初心者板でやれよボケ
4941:04/07/15 17:18
どうもすいません、みなさんありがとうございました
50デフォルトの名無しさん:04/07/15 20:15
ナケキャラな人だったな。
前スレの880です。
いろいろ調べたんですが、またわからなくなりました。
typedef struct link{
struct link *next;
struct link *prev;
int i;
}LINK;
って構造体があって、mainとかで
LINK *test=(LINK *)malloc(sizeof(LINK *));
testというのを作ったとして、

test->next=NULL;
free(test);

だとDAMAGE: after Normal 〜無しで

test->prev=NULL;
free(test);

だとDAMAGE: after Normal 〜有りになります。

test->i=1;
free(test);

だとエラー無しでした。
LINK構造体の中でnext,prevのどちらが先に宣言されてるかで
どちらがエラーになるか異なってるようですが・・・。
どういう事が起きているのでしょうか?
>>51
>>malloc(sizeof(LINK *));

malloc(sizeof(LINK));
>>52
できました。

何回も見直したつもりが
基本的なところ間違えてましたね。

本当にありがとうございました。
質問何ですが…



この詐欺の匂いのするスレタイは何なんですか?
55デフォルトの名無しさん:04/07/15 22:21
既出?

main() { printf(&unix["\021%six\012\0"], (unix)["2ch"]+"fun"-0x62);
5655:04/07/15 22:29
}
最後のブレースを忘れてますた。スマソ。
>>55
さてはお前、どっかのスレで
「エキスパートCプログラミングすげーいい!」
みたいなこと言ってたやつだな?
>>54
感感俺俺
5955:04/07/15 22:57
>>57
違うよ。でもあの本は評価されていいと思う。
60デフォルトの名無しさん:04/07/15 23:00
>>56
イモ
61デフォルトの名無しさん:04/07/15 23:02
ぐえ。まだこのスレつづけてんのかよ。
質問が糞なのはデフォだが、回答も相変わらず糞だな。
>>61
そうだな。お前のような口だけ野郎もいるし。
floatでもdoubleでもどっちでもいいって場合は
どっち使えばいいの?
>>63
実測して速度の速い方でも使えばいい
暑いときはフロートだな。
腹減ったときはダブルだ。
>>63
float使っとけ。
Cはなるべくコンパクトに書くのが良い。
67デフォルトの名無しさん:04/07/15 23:15
プログラマって、楽で良いよね。
SEに言われたとおりに関数と変数を並べて、
プログラム(のようなもの)をでっち上げて金クレクレと。
それでちょっとでも仕様が変ると、「使えないSEだ、コリャ」とかファビョって、
ちょっとでも考えさせると、「それはボクの仕事じゃありません!」とかキレて。
もうね、アフォかと。

ドキュメントを書かせると、小学生の作文並みの代物を平気な顔して提出して、
「ホレ、漏れは仕事したぜ?」ときた。
もうね、幼稚園児かと。

徹夜、休日出勤がある?
あっそ。
そりゃあんたらの仕事が、低技能で勤まる仕事だから、
給料を捻出するためにはそのくらいしなきゃならんのだよ。

漏れの子供には、プログラマーになってほしいね。
こんなに安全確実な仕事はそうそうない。
工場労働者なみの機械的作業で、工場ほどの危険さはまるでない。
マジでおすすめだわwww
>>66
本気で言っているのか?
>>68
釣りでしょ。
70デフォルトの名無しさん:04/07/15 23:21
何言ってるんだ? >>70 頭悪いのがバレバレだよ
確かに。ということで次の話題へ↓
>>63
C言語の浮動小数点リテラル定数のデフォルトがdoubleだから、
特に理由がなければ、doubleにしておいたほうがプログラムがスッキリするよ。
73デフォルトの名無しさん:04/07/15 23:35
質問1: strccpyは後ろに終端の'\0'をつけてくれますか?
>>73
回答1:そんな関数はありません
75デフォルトの名無しさん:04/07/15 23:36
まちがい...
質問1: strncpyは後ろに終端の'\0'をつけてくれますか?
76デフォルトの名無しさん:04/07/15 23:36
質問2: strncatは後ろに終端の'\0'をつけてくれますか?
>>76
回答2:テストプログラムを作り、自分の目で確かめてください
78デフォルトの名無しさん:04/07/15 23:38
それは「たまたまつけてくれた」だけかもしれなじじゃん
>>75
s2がnより短い場合は付けてくれます

>>76
付けてくれます
>>63
プロセッサによってはdoubleサイズのレジスタしかない場合がある。
その場合にはfloatで指定するとコンパイラがfloat→doubleの変換処理を挿入する。
変換処理の分だけ遅くなっていまうことになる。

上記は一般論ではないが、必ずしも小さい幅だから速いと言うわけではないということ。
速度が重要なら実測するのが確実。
速度がどうでもいいならどっちでもいい。
81デフォルトの名無しさん:04/07/15 23:41
じゃあnに3を指定しても4バイト書いちゃうの?
82デフォルトの名無しさん:04/07/15 23:42
>>63
どっちでもいいんじゃない?
floatのほうが取り回しやすいけど。
83デフォルトの名無しさん:04/07/15 23:42
>>63
性能云々は処理系依存であり
こっちの環境での話が
おまいの環境で通用する保証がない

doubleの精度が必要なければfloat
開口一番にこれが出てこない
これがここの回答者のレベルだ
84デフォルトの名無しさん:04/07/15 23:44
みなさん、realloc()は使ってますか?私、多用していたのですが、
同僚に使うなと言われました。禁じ手だったのですか?
85デフォルトの名無しさん:04/07/15 23:44
> floatのほうが取り回しやすいけど。

なわけねーだろ ぼけ
doubleのほうが取り回しが楽。
同様に整数はint使え。
86#:04/07/15 23:44
BCC5.5を使っています。
以下のようなエラーが出るのはどうしてでしょうか?


Error: 外部シンボル ’WinMain’ が未解決 (C:BORLAND\BCC55\LIB\COW32.OBJが参照)


int WINAPI WinMain(){・・・・・・}の部分について、
エラーが出ないプログラムと比較してみたのですが、全く一緒です。
>>83
doubleの精度とfloatの精度が違うという保証はあるの?
>>86
見事なスレ違いです。
89デフォルトの名無しさん:04/07/15 23:45
>>84
使わない。
禁じ手ではない。
>>84
まず真っ先に同僚に理由を聞く事です
91デフォルトの名無しさん:04/07/15 23:46
>>87
型floatの値は、型doubleの値の集合の部分集合
>>86
コンパイルオプションとかチェックしてみそ
93デフォルトの名無しさん:04/07/15 23:47
>>85
最近のプロセッサについて勉強しましょう。
94デフォルトの名無しさん:04/07/15 23:47
>>93
最近のプロセッサという条件はいつついたんだ?
>>91
それは初耳なんだけど、どこに書いてた?
96デフォルトの名無しさん:04/07/15 23:48
>>94
取り回しが楽という点で。
97デフォルトの名無しさん:04/07/15 23:48
>>95
規格票にはっきり書いてあるぞ
そんくら調べてから来い ぼけ
>>97
なんだ、釣りかよ
99デフォルトの名無しさん:04/07/15 23:49
>>98
もう一度言う
そんくらい調べてから来い ぼけ
100 ◆EnZwTLGqAk :04/07/15 23:50
>>88
板内検索してここが一番いいかと思ったんですけど。

>>92
ありがとうございます。
コンパイルオプションを見てみます。
>>97
ぼとけの間に空白あけろ ぼ け 
>>99
もう一度言う
なんだ、釣りかよ
>>99
ぼとけの間に空白あけろ ぼ け 
見えないレスに対してレスがついてる
105デフォルトの名無しさん:04/07/15 23:51
>>102
釣りではない

これはマジレスだ
規格票くらい調べてから聞け
float double 問答なんだけどさ、一度ワーニングレベルを最高にして強制エラーにしてみ
float と double を混ぜると、どんなときにどんな自働キャストが行われてハマリが起こるかわかるから
そうすりゃ特に事情がなけれぱ double でいいって分るよ。
ハードのサポートが float しかないマシンでプログラムした人間なら
デフォルトでない面倒くささは身にしみるんだろうけれど、普通気づきにくいからね。
>>105
うるさいよ。負け犬。
108デフォルトの名無しさん:04/07/15 23:53
>>107
ほう、俺があんたにどの点で負けたと言う気だ?
109デフォルトの名無しさん:04/07/15 23:53
いいえ。

たまたま規格票が手元にあるから言うけど、
そんなことは書いてないぞ > 型floatの値は、型doubleの値の集合の部分集合
110デフォルトの名無しさん:04/07/15 23:54
>>109
s/型floatの値/型floatの値の集合/
111デフォルトの名無しさん:04/07/15 23:55
やーい「わーにんぐ」 > 一度ワーニングレベルを最高にして
112デフォルトの名無しさん:04/07/15 23:56
> ハードのサポートが float しかないマシンでプログラムした人間なら

そんなものはない
113デフォルトの名無しさん:04/07/15 23:57
>>112
ゆんゆんうるせー
114デフォルトの名無しさん:04/07/15 23:57
うちの実家では南側にある部屋です > ぼとけの間に
>>112
有るよ、世の中に出回っているマシンでメジャーな奴の中にもな。
116デフォルトの名無しさん:04/07/15 23:59
>>115
ワラタ
112は絶対に言い返せないな
117デフォルトの名無しさん:04/07/16 00:00
> 有るよ

いいえ。ありません。
118デフォルトの名無しさん:04/07/16 00:00
>>117
ソースは?
119デフォルトの名無しさん:04/07/16 00:01
115は絶対マシン名を出せないな。

なんか「社外秘だから」とかいってごまかしそー
120デフォルトの名無しさん:04/07/16 00:01
>>119
だからソースは?
粘着を相手する粘着が巣くうスレだなおい。
定番荒らしにいつまでも乗るなよ。もう少し大人になれお前ら。
123デフォルトの名無しさん:04/07/16 00:02
ないものにソースはない。
あるというやつがソースをしめせぼけ
類は友を呼ぶ
125デフォルトの名無しさん:04/07/16 00:02
>>123
>ソースはない。

ここだけでいいよ、飾りはつけなくてもw
実際は粘着の自作自演な訳だが。
127デフォルトの名無しさん:04/07/16 00:03
ソースをしめせない以上「ない」のだ。
まあな。
129デフォルトの名無しさん:04/07/16 00:03
あるというならソースを示せ ぼけ
130デフォルトの名無しさん:04/07/16 00:03
>>122
ここは荒れるのを楽しむスレだろ。
>>119
プレステ2がそれだよ、PS2-Linux入手してみな
132デフォルトの名無しさん:04/07/16 00:03
>>127
ないという事実を裏付けるソースをお前がないと言った
133デフォルトの名無しさん:04/07/16 00:04
ほら、やっぱり ない。
134デフォルトの名無しさん:04/07/16 00:04
>>133
ないという事実がな
135デフォルトの名無しさん:04/07/16 00:04
プレステ2はdoubleつかえるじゃん。
ちょっと目を放した隙にこのスレらしくなってた
推奨NGワード: double, float, ソース
138デフォルトの名無しさん:04/07/16 00:05
>>135
ねぇよ、ソフトエミュレートだ、エミュライブラリが無いとエラーになる。
140デフォルトの名無しさん:04/07/16 00:06
とっとと示せ、時間が無いから早くしろ。
141デフォルトの名無しさん:04/07/16 00:06
プレステ2もdreamcastもdouble使えるぞ。
142デフォルトの名無しさん:04/07/16 00:07
X boxもな
doubleがエミュレートされてたのは初代PSじゃなかったかね
別にハードで対応してなくても問題無いような気がするが?
145デフォルトの名無しさん:04/07/16 00:07
すくなくともPS2はきれいにdouble使える。
PS2でdoubleは非常に遅いから使うと問題になるよ。
3D描画とかはハードのサポートがないと厳しいな。
話が標準Cから逸れて行く
149デフォルトの名無しさん:04/07/16 00:09
>>144
「問題」の定義によるな。
>>1
151デフォルトの名無しさん:04/07/16 00:09
>>146
そこで66の意見に着陸する訳ですね?
153ほんたま:04/07/16 00:10
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
154デフォルトの名無しさん:04/07/16 00:10
たとえば、その昔の8086なPCで、8087は高くてつけてなかった(ソケットだけ)なやつは
多かったが、8087にfloatやdoubleを計算させないで、8086で計算するLIBRARYを呼ぶ
かどうかを切り替えていたのだが(初期のは8087があったらそっちを呼ぶという仕掛けが
かなりいいかげんだったので(存在チェックがたまにしっぱいする)、コンパイルし分けが
主流だったが、そういう環境のPCでも「このハードウェアはdouble使えない」とはいわない。
155デフォルトの名無しさん:04/07/16 00:10
>>152
サイズの問題じゃねーだろ
つか、>>63>>64で話が終わってるだろう・・・
MVP!

>112 名前:デフォルトの名無しさん[] 投稿日:04/07/15(木) 23:56
> ハードのサポートが float しかないマシンでプログラムした人間なら
>
>そんなものはない
158デフォルトの名無しさん:04/07/16 00:12
> PS2でdoubleは非常に遅いから使うと問題になるよ。

実際、自社のゲームで使っている。
速度的に問題もない。
159デフォルトの名無しさん:04/07/16 00:12
>>154
だれも
「このハードウェアはdouble使えない」
などということは問題にしていない。
>>147
3Dでなくてもハードサポートの無い浮動小数点は実用にならないよぉ
161デフォルトの名無しさん:04/07/16 00:13
> 問題にしていない

してます。
おめーら、1レスに対して1レスつけずにまとめてレスつけろよ
無駄にスレ流すな。
163デフォルトの名無しさん:04/07/16 00:13
>>157
暴れたわりに収穫ゼロで帰って逝ったなw
164ほんたま:04/07/16 00:14
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
165デフォルトの名無しさん:04/07/16 00:14
>>161=112
あんたがね
>>158
マジで?
float<->doubleの変換はすごく遅くなります、
とちゃんと書かれているのに使ってるの?なんで?
167デフォルトの名無しさん:04/07/16 00:16
> 3Dでなくてもハードサポートの無い浮動小数点は実用にならないよぉ

そうでもない。

うちでは、1つのソフトの中で、
ハード任せの浮動小数点と
ソフトでやる精度は低いが特殊で早い浮動小数点と
ある部分で使うとにかく早い固定小数点を
使い分けている。(gameじゃなくて、cadの周辺ソフトだが)

別の部署で造っている会計ソフトでBCDの小数使うやつがあるが、
とても遅い。あれこそハードでやってほしい。
168デフォルトの名無しさん:04/07/16 00:17
> float<->doubleの変換はすごく遅くなります、

なんでfloatに変換なんかするんだ? ぼけ

その昔のCで一般的だったフォーマットだったらそこそこdouble<->floatの変換は軽いが、
いまどきIEEE形式がふつうだから精度変換は処理が重いぞ! (ハードでやっても相対的に)
169デフォルトの名無しさん:04/07/16 00:18
そりゃ、固定だったらいいけど。
170デフォルトの名無しさん:04/07/16 00:19
小数のことだったらオレに聴け!
171デフォルトの名無しさん:04/07/16 00:19
>>168
その先に渡したいからじゃ?
172デフォルトの名無しさん:04/07/16 00:19
> その先に渡したいからじゃ

なんでその先がfloatなんだ?
doubleの先は整数(bitmapディスプレイ)
173デフォルトの名無しさん:04/07/16 00:19
>>168
計算量と処理時間が比例すると思てけつかるなこの坊や (ケケケ
>>168
VU0とか使わないの?もう意味わかんないよ。
175デフォルトの名無しさん:04/07/16 00:20
> 計算量と処理時間が比例すると思てけつかるな

こいつ、自分で何言ってるのかわかってなさそー
>>167
ほいじゃ全部FPUに任せてやりなよ、「精度は低いが特殊で早い浮動小数点」より速くていいから。
最近のFPUは整数ユニットより計算能力は高いからね。
自作自演はそろそろやめてくれ。
178デフォルトの名無しさん:04/07/16 00:21
ちなみに某NEC製のミサイルのあたまについてる浮動小数点演算ルーチンは
ほとんどおれが書いてる
>>178
残りは俺だけどな
180デフォルトの名無しさん:04/07/16 00:22
> 「精度は低いが特殊で早い浮動小数点」より速くていいから。

こいつ「早」そうな男だ ;-)

(計算速度は「速」い)
181デフォルトの名無しさん:04/07/16 00:23
>>175
通訳すると、何言われたかわからないだな
182デフォルトの名無しさん:04/07/16 00:23
> 残りは俺だけどな

だからその分命中率がおちるんだな。
183デフォルトの名無しさん:04/07/16 00:24
>こいつ、自分で何言ってるのかわかってなさそー

つーかよ、お前が一番理解してなさそーなのが痛すぎるな
184デフォルトの名無しさん:04/07/16 00:24
目標とすれちがうときに自爆するのだが、
その時間的精度が0.01秒だ。
遅い計算ではまにあわん。
185デフォルトの名無しさん:04/07/16 00:26
>>184
つーか自爆してるやつ違くねーか?w
こんな連中がプログラム書いてるワケだからなあ
海外に仕事を持っていかれても仕方が無いよな
>>172
bitmapディスプレイでググったら 68K-Mac のしかヒットしないんですけど。
釣りはもうけっこうですんで。
>>184
どっちみち、火薬系の反応速度が、そんなに速くないんじゃないのか?
189デフォルトの名無しさん:04/07/16 00:27
っていうか、海外で仕事してるわけだが。(発注主は日本の会社)
190デフォルトの名無しさん:04/07/16 00:28
> どっちみち、火薬系の反応速度が、そんなに速くないんじゃないのか?

もちろん1秒後の相対位置も「予測」するルーチンもはいってるわけ
191デフォルトの名無しさん:04/07/16 00:29
68Kはfloatがオプション扱いだったもんな。
68040くらいから統合されたんだっけ。
192デフォルトの名無しさん:04/07/16 00:29
> bitmapディスプレイでググったら

っていうか、なんでそんなもん検索するのよ?
>>180-184→英語→日本語に自動翻訳してみました。

180 名前:デフォルト無名貢献日:04/07/16 00:22
>それが特別と初期の浮動十進小数点より迅速かもしれないので、「正確さは低い」が。
これ「――既に――"――それはその右を持った人です
;―("速"計算速度あること)

04/07/16 00:23>残りは私です――であるが、181の名前:デフォルト無名貢献日:
それが00:23を解釈する場合、04/07/16>175、
それは理解しません、何の中で、言われた--だな

182名:デフォルト無名貢献日:
したがって、部分打撃の割合は下がります。

183 名前:デフォルト無名貢献デイ:04/07/16 00:24
>それは理解します、何の中で、単独で言ってる、またなさそである―。
[これ、そして]つ(それ、あまり痛くない、大部分を理解します、
また、それはなさそである)

184名:デフォルト無名貢献日:04/07/16、であるが、それ、00:24
目標を見逃す場合、自己突風、時間精度は0.01秒です。
まは遅い計算の中で適しませんでした。
194デフォルトの名無しさん:04/07/16 00:30
> 68Kはfloatがオプション扱いだったもんな。

なわけない。
195デフォルトの名無しさん:04/07/16 00:30
おれに68881のコードかかせたらたぶん日本で1番
196デフォルトの名無しさん:04/07/16 00:31
下手
おれにCのコードかかせたらたぶん家族で1番

すごいだろ
198ほんたま:04/07/16 00:31
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
俺なんて家族で3番だよ
200デフォルトの名無しさん:04/07/16 00:32
Intel系のはかくきにならんな。
半角の?と常にメール欄は空、口癖は ぼけ、ぼけの手前には半角で空白を入れてる
2chのC系のスレで毎日他人煽っているキチガイ。
202デフォルトの名無しさん:04/07/16 00:32
> 下手

舞台に向かって右側ですね。
>>197→英語→日本語

197の名前:デフォルト無名[賢人]貢献日:04/07/16破損00:31
--似ている--Cのコード、あるいはかせた、
多くの家族--1番の異様なだろ--
どっちでもいいっていってんのにどうしてそう盛り上がれるんだお前らは
205デフォルトの名無しさん:04/07/16 00:33
> 口癖は ぼけ

日本語でいうと「ぼぉけぃ」ぐらいの発音?
>>203
それ、もういいから
207デフォルトの名無しさん:04/07/16 00:34
> 2chのC系のスレ

って、たとえばどこだろう?
208デフォルトの名無しさん:04/07/16 00:34
>>204
条件を捏造する香具師が叩かれている
209デフォルトの名無しさん:04/07/16 00:34
>>206
あぼ〜ん
210デフォルトの名無しさん:04/07/16 00:35
unsigned long long intみたいに、
でっかい浮動小数点数型はないんですか?
>>65-209は透明あぼーん推奨
>>210
doubleの時点で unsigned long long intよりデカイ数を扱えるよ。
213デフォルトの名無しさん:04/07/16 00:37
unshined wrong wrong doubt
214デフォルトの名無しさん:04/07/16 00:38
>>211
ー は★に頼んで来い
〜 は自分でやれ
>>210
そろばんエミュレータ作ればいい
>>211
まあ、いちいち反応する厨が居る限りこの状況は続くんだよな。
217デフォルトの名無しさん:04/07/16 00:39
Single a; // シングル
Double a; // ダブル
Short a; // ショート
Tall a; // トール
Grande a; // グランデ
Extra foam a; // フォームたっぷり
218デフォルトの名無しさん:04/07/16 00:39
>>210
あるよ。
219デフォルトの名無しさん:04/07/16 00:39
>>216
お前だろ! (核爆
>>214
ブラウザ依存のことを誇らしげにw
221デフォルトの名無しさん:04/07/16 00:41
>>220
●くらい買え貧乏人
>>221
知遅れの可哀相な人?
で、コードサイズが小さくなるのはどっちなんだよ。
224デフォルトの名無しさん:04/07/16 00:42
> そろばんエミュレータ作ればいい

うちに江戸時代のそろばんがあるんだけど、
玉が8つずつのやつ。

上の1つが8の玉で、下の7つで合計、1桁0〜fまで。
桁数の多くなる掛け算も、ふつうのそろばんより少ない桁でできて便利。
16bit、または8bitの浮動少数点数作るとしたら
符号部、指数部、仮数部はどんな割りあいがよいだろうか?
226デフォルトの名無しさん:04/07/16 00:42
>>222
黙れ下賎の者
> 引用
空行
一行レス
>>223
環境依存
229デフォルトの名無しさん:04/07/16 00:44
> 一行レス


2行だったとしても
「1行れす!」
「わたしのなまえは山田れす!」
230デフォルトの名無しさん:04/07/16 00:45
> 符号部、指数部、仮数部はどんな割りあいがよいだろうか?

符号「部」ってなんだよ「部」って。
符号に3bitとか使うフォーマットあったりするのか?
231デフォルトの名無しさん:04/07/16 00:45
>>223
データサイズはdouble以下だろう。
232デフォルトの名無しさん:04/07/16 00:45
>>228
結局それかよ。
ばーか
ぼけくんはきっと寂しがりやなんだね。おーよちよち。
234デフォルトの名無しさん:04/07/16 00:46
>>230
正でも負でもない値であることを表すことができるんだろ、きっとw
235デフォルトの名無しさん:04/07/16 00:46
double double a; とかできないのかなあ。

fortranは「4倍精度」ふつうなのに。
236デフォルトの名無しさん:04/07/16 00:47
>>235
long double
>>232
じゃあお前が模範解答してみせてくれよ。ばーか
238デフォルトの名無しさん:04/07/16 00:47
long double使え
239デフォルトの名無しさん:04/07/16 00:47
>>232
環境依存スレ逝けよ、ばーか
240デフォルトの名無しさん:04/07/16 00:48
うちのコンパイラーは、long doubleは使えることは使えるんだけど、
doubleと同じ精度だ OTL
241デフォルトの名無しさん:04/07/16 00:48
>>235
fortran使えば?
242デフォルトの名無しさん:04/07/16 00:49
long long doubleとかないかなあ。
中途半端なところでtripleとかでもいいぞ
Delphiでは実数を扱うのにRealを使う。
そしてRealは実際はDoubleである。
ゆえにdouble使えよぼけ。
244デフォルトの名無しさん:04/07/16 00:49
> fortran使えば

もうこの世から消滅したので使えません。
245デフォルトの名無しさん:04/07/16 00:49
>>242
long long long long long long long long long long long long long long long long long long long double
246デフォルトの名無しさん:04/07/16 00:49
> Delphiでは実数を扱うのにRealを使う。

ださ...
247デフォルトの名無しさん:04/07/16 00:50
>>244
DISCONしたのか?
>>246
だとさの間に空白空けろ ぼけ
249デフォルトの名無しさん:04/07/16 00:52
> Delphiでは

ださ...
250デフォルトの名無しさん:04/07/16 00:54
> DISCONしたのか

10 CONTINUE
251デフォルトの名無しさん:04/07/16 01:02
あびゃびゃ
> long long long long long long long long long long long long long long long long long long long double
やってらんねぇ
NGExでどうにか消えた。目出度い
>>234
NaN
254デフォルトの名無しさん:04/07/16 01:52
やけにスレがのびているな
>>254
ここは荒らしホイホイなので
256デフォルトの名無しさん:04/07/16 02:59
>>55がコンパイルに通りますた。実行しちゃって平気なのかな?
typedefの使いどころが解らない。
解説よろ。
PS2はIEEE準拠していない。HWサポートはfloatのみ。

>>256
unixと表示されるだけ。

>>257
いちいちstructと書きたくない場合。
それ以外には使うな。
259デフォルトの名無しさん:04/07/16 03:55
>>257
なるべく環境に依存しないようにしたい時。
>>55の詳細キボンage
なんであかんの?
char str[80],*p,*st = "kisimoto";
char *mystrcpy(char *,char *);
int main()
{
p = mystrcpy(str,st);
puts(p);
return 0;
}
char *mystrcpy(char *s,char *s2)
{
while(*s2)*s++ = *s2++;
return s;
}
sを返してるから。
何を返せばうまくいきますかね?
++する前のs
ああそうか、もう最後まで行っちゃってるんですね。
これって最初に戻すいい方法ありますか?
これでうまくいきましたがなんかショボイですね。
char *mystrcpy(char *s,char *s2)
{
int num = strlen(s2);
while(*s2)*s++ = *s2++;
for(;num>0;num--)s--;
return s;
}
これがいいみたいですね。ありがとうございました。
char *mystrcpy(char *s,char *s2)
{
char *s3 = s;
while(*s2)*s++ = *s2++;
;return s3;
}
>>260
こう定義されてることが前提
#define unix 1
その他ヒント
a[i] == *(a + i) == *(i + a) == i[a]
"abce"[1] == 'b'
'a' = 0x61, 'a' + 1 = 'b'
269デフォルトの名無しさん:04/07/16 06:38
公差2の等差数列の第k項までの和を出力するプログラムで

func1(int k){
int i,j;
j=0;
if(k<=0)
printf("計算できません");
else{
for(i=2; i<=2k; i=i+2){
j=j+i;

return(j);
}
printf("第%d項までの和は%d",k,j);
}

とやってコンパイルすると、
エラー E2378 basic2_2.c 17: For文に ; がない(関数 func1 )
エラー E2379 basic2_2.c 17: ステートメントにセミコロン(;)がない(関数 func1 )

とでます。意味がわかりません。教えてください。
2k
271デフォルトの名無しさん:04/07/16 06:40
ああ
2*kですね_| ̄|○
すいません、ありがとうございmす
272デフォルトの名無しさん:04/07/16 08:32
> とでます。意味がわかりません。教えてください。

空白あいてないからいけない。

正しくはこう。
main()
{
  if (k <= 0)
    printf("計算できません\n");
  else
    printf("第%d項までの和は%d\n", k, func1(k));
}

int func1(int k)
{
  int i, j;

  if (k <= 0)
    return 0;
  else {
    j = 0;
    for (i = 2; i <= k * 2; i += 2)
      j += i;
    return j;
  }
}

>>267
forを使うと短く収まる
だからどうしたといわれるとどうもしないのだが。

char *mystrcpy(char *s,char *s2) { for(char *s3=s; *s2; *s3++ = *s2++); return s; }
274デフォルトの名無しさん:04/07/16 09:26
void sound(unsigned frequency)を使ってピープ音で音楽を作りたいのですが、
数値の音階が分からないので作れないんです;
検索もしたんですが、それ関係が書いてあるページが見つからなくて困ってます。
どなたか教えていただけませんでしょうか?
よろしくお願いいたします。
周波数 音階でググったらすぐ出てきたぞ。
平均率ならexcelに計算させると簡単。
276デフォルトの名無しさん:04/07/16 10:06
>>272
ありがとうございます、いいプログラム書けるようにがんばります。
もうひとつ初歩的な質問ですが、平方根をとる関数 sqrt の宣言は int でも doubleでもよいのでしょうか?

つまり

int sqrt( int ) も double sqrt( double)

もOKなのかと。
Cで他プロセス(ゲームなど)の特定メモリアドレスの内容を読み取って編集するような
プログラムを書いてみたいのですが、どうすればいいのでしょうか?いろいろググってみたのですが、
ページングとかよけいなものばかりひっかかってしまうのでおしえてください
278デフォルトの名無しさん:04/07/16 10:16
>>272
追加でもうひとつ
>>272にある

 else  
    printf("第%d項までの和は%d\n", k, func1(k)); 

でいきなりfunc1が出てきますが、その前にfunc1を書かなくてもよいのでしょうか?

else
 func1(k);  
 printf("第%d項までの和は%d\n", k, func1(k));


のように。
実行結果はかわらないのは確かめましたが、書かないほうが負担が少ないということでいいのでしょうか?
279デフォルトの名無しさん:04/07/16 10:18
>>278
それどころか別のファイルに書いてもいい。
だがどちらにしろプロトタイプ宣言はすべきだ。
280デフォルトの名無しさん:04/07/16 10:22
>>279
ありがとうございます
しかし、C99ってスゲーな
Cに出来てC++に出来ないことがあると
なんかムカツク
>>267
きみの mystrcpyには最後に '\0' がつかないがいいのか?
で、そのまま s を帰すんなら strcpy でいいんじゃねのか?
>>282
do{}whileの方を使えば簡単だね。
>>277
環境依存。メモリ管理が甘いOSならどこでも自由にアクセスできるし、
Win32ならReadProcessMemoryVlmとかあたり。
285デフォルトの名無しさん:04/07/16 11:10
ポインタを使って変数aに100を、変数bに50をキーボードから入力後、
a+bの値をポインタによって求めて表示するプログラムを作成せよ。

ビギナーです。
>>282
そういわれればヌル入れてませんね。いれなくてもちゃんと表示されたんで
忘れてました。なんでヌルなしでできたんだろう・・・
それからこれは自作のstrcpyを作るのが目的だったンどす。
>>285
int a, b, c;
int *pa, *pb;
pa = &a; pb= &b;
scanf("%d %d",pa, pb);
c = *pa + *pb;
printf("a+b= %d", c);
288277:04/07/16 11:55
>>284
あ、APIを使うのか。
分かりました。ありがとうございます
>>277
ソースに(Cで)知りたいアドレス(変数等)を表示する関数を追加する。
後はデバッグ中にその関数を呼び出す。如何?
290デフォルトの名無しさん:04/07/16 16:16
char buf[10][12] = {
"鈴木一郎:46",
"田中一郎:33",
"佐藤一郎:21"
};


printf("%s\n",buf[1]);
printf("%s\n",&buf[1]);

どうしてこの二つが同じ結果になるのですか?
コマンドラインでmkdirでディレクトリ作成できるけど、
Cプログラム上では、どうやればいいの?
環境はredhat9
検索かけたけど、うまく見つからないよ
>>291
man 2 mkdir
>>292
ありがとう。
>>290
そうなっているからとしか言えない。
配列は式の中ではポインタに変換されるけど、明示的にアドレス演算子をつけてもいいことになっている。
295デフォルトの名無しさん:04/07/16 19:54
>>294
&式
buf[1] で配列bufの二番目のアドレスを表し、それに&をつけた
&buf[1] もやっぱり配列bufの二番目のアドレスを表す、と
こんなかんじですけーね?
buf[1] -> &buf[1][0]
&buf[1] -> buf[1]のアドレス
298ほんたま:04/07/16 20:14
おみゃ〜らよ、おみゃ〜らさーん♪
おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。
つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。
おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか?
「Slim de Can」ってすげ〜な〜。
おりはもう神だね♪どうよ?

http://hp.vector.co.jp/authors/VA015412/
299290:04/07/16 21:36
レスありがとうです
何となく分かった気がします!
300デフォルトの名無しさん:04/07/16 21:47
配列の配列だからbuf[x][0]のアドレスとbuf[x]のアドレスは同じになるということだよな。
>>300
何を言っている?

char buf[256];
(buf == &buf)だぞ。

キモい仕様だよな。
何でエラーにしてくれなかったんだ。
302デフォルトの名無しさん:04/07/16 23:45
>>301
キモいのはお前の頭だ氏ね
303290:04/07/16 23:50
キモいついでに(?)
char buf[6][16];
の時、

buf[1]    = 12FE00
buf[1]+1  = 12FE01
&buf[1]+1 = 12FE10

でした。
296さんの説明を見て、なるほどな。
と思いましたです。
304290:04/07/16 23:52
296さんが間違いっていう訳じゃないんですが、

297さんの

buf[1] -> &buf[1][0]
&buf[1] -> buf[1]のアドレス

の説明を見て・・・でした。スイマセン・・・汗;
305デフォルトの名無しさん:04/07/17 00:07
値さえ同じなら型はどうでもええちゅー香具師らはBでも使ってろ
306デフォルトの名無しさん:04/07/17 00:16
>>305
つまり、藻前は負けを認めたわけだな。
307デフォルトの名無しさん:04/07/17 00:20
>>306
おまえ本当にちょっと精神科で診てもらえ
308デフォルトの名無しさん:04/07/17 00:22
>>307
オマエモナー
309デフォルトの名無しさん:04/07/17 00:23
>>307
おまえ本当に精神科に入院したほうがいいぞ
310296:04/07/17 00:23
>>304
俺はお前をぶちころがす。
ぬっ転ばす
312デフォルトの名無しさん:04/07/17 00:26
クリストファー・コロンバス
クリ………をぶちころがす。
>>313
あぁっ、らめっ!そんなに激しくされたあ 尻穴ちんぽ逝っちゃううふうふぁsづうううう!!!
バカ!バカ!まんこ!!
char a[1];

a = &a
マジで何でこんな仕様になってんの?
&要らないじゃんか。
316デフォルトの名無しさん:04/07/17 01:38
>>315
いるよ。アドレスは同じでも型は違うから。
317デフォルトの名無しさん:04/07/17 01:46
int a=6582087;
printf("%s",&a);
>>315
は?
319デフォルトの名無しさん:04/07/17 02:35
APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
効率を削減してどうするよ
>>319
まずはその腐ったJavaScriptをやめろ。リンク反応せずに帰る奴が続出するぞ。
322デフォルトの名無しさん:04/07/17 08:04
 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 || ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
 || ○重複スレには誘導リンクを貼って放置。ウザイと思ったらそのまま放置。
 || ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
 ||  ノセられてレスしたらその時点であなたの負け。
 || ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
 ||  与えないで下さい。                  Λ_Λ
 || ○枯死するまで孤独に暴れさせておいて   \ (゚ー゚*) キホン。
 ||  ゴミが溜まったら削除が一番です。       ⊂⊂ |
 ||___ ∧ ∧__∧ ∧__ ∧ ∧_      | ̄ ̄ ̄ ̄|
      (  ∧ ∧__ (   ∧ ∧__(   ∧ ∧     ̄ ̄ ̄
    〜(_(  ∧ ∧_ (  ∧ ∧_ (  ∧ ∧  は〜い、先生。
      〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
        〜(___ノ  〜(___ノ   〜(___ノ
323質問です…:04/07/17 08:21
プログラムを作ったときの拡張子*.cと*.cppの違いって何でしょうか?
教えてください。お願いします。
Cでコンパイルするか、C++でコンパイルするか
テキストファイルを読み込んで、
例えば「そのファイルの3行目だけを出力する」のって、
どうすればいいか、教えてください。
326デフォルトの名無しさん:04/07/17 09:43
ageます。
>>325
テキストファイルを読み込んで3行目だけ出力すればOK
>>325
一個、二個、三個と数えていって3個目で出力。
329325:04/07/17 10:05
レスどうもです。
もうちょっと具体的に質問できる状態になってから、
また来ます。
int a[10];

1: a
2: &a
3: &a[0]
4: (&a)[0]
5: &(a[0])

この五つの違いについて解りやすく
解説できる方はいらっしゃいますか?
示す値は全部同じですよね。
>>325
int i;
char buf[65536];
FILE*fp;
for(i=0; fgets(buf,sizeof(buf),fp); i++)
{
 if(i==3)fputs(buf,stdout);
}
>>331
持ちネタ?
333デフォルトの名無しさん:04/07/17 10:36
>>332
ハァ?
>>333
恥の上塗りw
>>331
チョトワロタ.
微笑ましい初心者のプログラムを添削するスレはここですか?
みんな生まれて初めてプログラム組んだ日には、この手の間違いをしたよね?
二日目以降はさすがにやらないけどw
>>330
型の違いを考えれば難しくないはず、、、だったらいいな.
以下は今適当に書いたものだから、あまり正しくない可能性あり。すまそ。

1: aの値は最初の要素へのポインタとなり型はpointer to int。
aの型はarray 10 of int。
2: &aは配列aへのポインタとなって型はpointer to array 10 of int。
3: a[0]は配列aの最初の要素だから&a[0]は配列の最初の要素を指すポインタで
aと書くのと値は等しい。ただし、aとは異なり&a[0]の型はpointer to int。
4: &aは2で書いた通り。(&a)[0]は&aの指す先の配列となるためaと等しい。
5: 冗長な括弧があるだけで3と同じ。
はい、間違い
340デフォルトの名無しさん:04/07/17 11:12
>>334
ネタにマジレスのアフォw
自分が惨めになるだからやめとけって

>>340
恥の上塗りの上塗りw
>>330
濃い質問だね、ポイントは
int a;
double b ;
b = a ;
で int から double に自動的にキャストされるのと同じで
int a[10] ;
int * b ;
b = a ;
とすると int [10] から int * にキャストされることに注意。
この微妙な違いを知りたかったら、sizeof( 各種ポインタ ) としてみるといいですよ。

sizeof(a)=40
sizeof(&a)=40
sizeof(&a[0])=4
sizeof((&a)[0])=40
sizeof(&(a[0]))=4

どれが配列型で、どれがポインタ型がこれで一目瞭然です。
344デフォルトの名無しさん:04/07/17 11:46
あげ
345デフォルトの名無しさん:04/07/17 11:52
>>342
ネタにマジレスのマジレスのアフォw
ちなみに俺は331じゃないぞ。
346デフォルトの名無しさん:04/07/17 11:59
sageている奴は自作自演?
347デフォルトの名無しさん:04/07/17 12:24
int a[8]={0,1,2,3};

a と &a が同じなら、
a[2] も (&a)[2] も
同じように 2 になるんだよね?
348デフォルトの名無しさん:04/07/17 13:27
>>330
型が違う

1: int *
2: int (*)[10]
3: int *
4: int [10]
5: int *

>>343
代入のためにキャストされているんじゃなくて、式中の配列は
先頭要素のポインタを示すからじゃないっけ。
sizeof演算子での配列は、その例外で配列そのもののサイズが
得られるけど。

>>347
なりますん
>>346
ちょっと死んだほうがいいよおまいさん
ごめん、>>1-349全部自作自演だったんだ。
>>348
4: int [10] -> int * じゃないの?

自作自演だっていいじゃない 人間だもの
>>1-351自作自演乙
ネタだったことにすれば少しでも気が楽なんだろうよ・・・察してやれよ。
354デフォルトの名無しさん:04/07/17 13:55
>>348
じゃあやっぱり
(&a)[0]
は、配列の最初の要素を指すよね?
>>345
恥の上塗りの上塗りの上塗りのアフォw
ちなみに俺は332じゃないぞ。
>>322
どこかで見た気が。。。
>>348
>代入のためにキャストされているんじゃなくて、式中の配列は
>先頭要素のポインタを示すからじゃないっけ。
そうですね、確かに。

>sizeof演算子での配列は、その例外で配列そのもののサイズが
 sizeof(式) | sizeof(型)
じゃなかったっけ、といいつつちょっと心配になってきた
 sizeof(式) | sizeof(型) | sizeof(配列?)
なのかな、ちょっと確認しておいたほうが安全かな・・・
358デフォルトの名無しさん:04/07/17 15:55
>>348
例外じゃねえよ
左辺値のときは &[0] がつかねえ原則に従ってるだけだ

>>357
sizeof(配列?)なんて構文はねえよ
sizeof a は sizeof 式 なだけだ
>>358
Cは左辺値も右辺値も区別はないよ、全部式です。
>>359
お気楽プラグラマーはいいね
361デフォルトの名無しさん:04/07/17 15:58
例外と言えば sizeof &a がおかしな値になることくらいか
switchもしくはelse ifで
文字列を条件にする方法を教えてください
>>362
switch はムリ(実は独自拡張で通るコンパイラとかあんるですがね)
if 文中なら strcmp 等を調べよう。
文字列テーブルを用意しておいて
case (gettablenum(str)):
というのは出来るのかな?
>>363
ありがとうございます
>>361
配列ののポインタはCの型として未保障と聞いたことがある(未確認)
367sage:04/07/17 16:44
borland Cコンパイラ使ってるんですが、
自作関数をmain()の前に記述しないとエラーが出るのは何ででしょうか?
どこに書いてもいいはずですよね?
>>367
プロトタイプ宣言を先に書いてる な ら ば どこに書いてもいいよ
>>367
ワーニングをエラーにするオプションが入っているか、C++としてコンパイルされているんだと思う。
今後のことも考えてプロトタイプをmainの前に宣言しておくのが吉。

void hoge( int a ) ; // これを書く

void main()
{
hoge( a ) ;
}

void hoge( int a )
{
...
}
日本の夏、void mainの夏
371367:04/07/17 16:49
心当たりがありました。
ありがとうございます。
ああっ、最近C#ばっかりやってたら、すっかり忘れていた・・・void main()
エラーとヲーニンの区別が付かないヤツウザイ。
374デフォルトの名無しさん:04/07/17 17:24
質問です。
4:宣言の構文エラーがですんですが、
4行目をみると、
int main(void)
って書いてあります。
どういうエラーなのか分かりません。
どうやったらこのエラーを消せるのでしょうか?
教えてください。
>>374
もっと詳しく説明してもらえれば答えられるかもしれない・・・
376デフォルトの名無しさん:04/07/17 17:31
自分で書いたのはこんな感じです。
#include<stdio.h>
int GCD( int x, int y)
int main(void)
{
int a, b, m;
printf("ユークリッドの互除法により最大公約数の計算をします。\n");
printf("一つ目の値を入力してください。---\n");
scanf("%d", &a);
printf("二つ目の値を入力してください。---\n");
scanf("%d",&b);
if(a==b){
m = a;
}
else if(a>b){
m = GCD( a, b);
}
else{
m = GCD( b, a);
}
printf("最大公約数は、%dです。\n", m);
}

・・・続く
>>376

int GCD( int x, int y)
この行にセミコロン ';' が抜けています。
>>376
>int GCD( int x, int y)
セミコロンつけろ
>>376
2行目の
int GCD( int x, int y)
の後ろにセミコロン;
380デフォルトの名無しさん:04/07/17 17:35
>>377>>378
すっかり忘れてました。
再挑戦してみます。
const char *buf = "hogehoge\r\n";
char *p = strstr(buf, "\r\n");
printf("%d\n", p - buf);

で 8 と出力されるのは規格で保障されてましたっけ?
382デフォルトの名無しさん:04/07/17 17:48
This is a pen.
He has little money.
I am ... ... ... ...
... ... ... ... ... ...
... ... ... ... ... ...

このような英文が english.txtというファイルに存在する場合、
XとYの値を入力したときにX行目のY番目の単語を
表示するC++プログラムは何ですか。

また、この英文中でよく使われている単語ベスト5と
その回数を表示するC++プログラムは何ですか。
>>381
問題ないと思うが・・・・
>>382
宿題マル投げはさすがに禁止
385デフォルトの名無しさん:04/07/17 17:57
>>382
そんなプログラム見たこと無い。
>>382
ようかんマンがC/C++の宿題を片付けて見せます 28棹
http://pc5.2ch.net/test/read.cgi/tech/1089974839/
387381:04/07/17 18:05
>383
どうも。なんか、妙に自信がなかったもので…
>>387
答えたおれも自信ない(藁
まぁ、これが動かなかったら、この世の殆どのライブラリーがアウトな事は間違いないけど。
>>381
同じ型のポインタ同士の引き算なら問題ない。
結果は要素数の差になるようになっているはず。
390デフォルトの名無しさん:04/07/17 18:29
>>373
で、おまえさんは >>367 が遭遇したのはどっちだと言いたいんだ?
>>389
同じ配列上の要素を指すポインタ同士なら問題ない。
同じ型では不十分。
392デフォルトの名無しさん:04/07/17 18:58
ファイル読み込みでfgetsを使ってるんですが、ほかに使い勝手のいいものはありますか?
@hoge = <FILE>;
fread
>>392
stdio.h 等を開いて中にある関数でそれっぽいものを片っ端から man で調べるべし。
>>392
see see also.
397デフォルトの名無しさん:04/07/17 19:25
普段ヘッダって読むか?
>>397
低レベルの人は退場して下さい。
399デフォルトの名無しさん:04/07/17 19:30
>>398
酸性
400イラネ
401392:04/07/17 19:34
>>394
>>395
レスありがとう御座います。
stdio.hの中読んでみます。
初心者は読んでも理解するのは難しいだろう。
他ファイルのインクルードや条件コンパイルの嵐だったりするし。
>>402
昔は機能別リファレンスやクイックリファレンスの類が沢山あったけど
最近、とりわけオープンソースが流行り始めてから、「なんでもかんでもソース嫁」の風潮が出てきて
良い書籍が全滅してるから良い方法がないんだよ。
404デフォルトの名無しさん:04/07/17 19:40
>>402
紙に印刷して赤ペンでチェックすると
今までモニタだけで味わってた絶望感は
何だったのかという、すごいショックを味わえる

要は本腰入れりゃちょろいものを
それをしないことの結果が無慈悲な差となっていた
それだけのことだよ
>>404
つか、プリプロセッサの出力を整形しろ。
>>358
C99の6.3.2.1の3を訳すとこう書いてあるよ

sizeof演算子や単項&演算子のオペランド、配列初期化のための
文字列リテラルである場合を除いて「〜型の配列」という型を持つ式は
「〜型のポインタ」という型を持つ式に変換される。そのポインタは
配列の先頭オブジェクトを指し、得られた式は左辺値ではない。
配列がレジスタ記憶クラスを持つ場合、未定義の動作となる。
407デフォルトの名無しさん:04/07/17 22:01
>>406
a = 0;

これがエラーになる理由は調べたか?
408デフォルトの名無しさん:04/07/17 22:08
保守(-o-)
すいません
ESCキーで終了させるようなプログラムを書きたいのですが
どのように書けばいいのでしょうか?
410デフォルトの名無しさん:04/07/17 22:24
>>409
#include <stdlib.h>
#include <signal.h>
void f(int n);
{
exit(0);
}
int main()
{
signal(SIGESC,f);
while(1);
}
411デフォルトの名無しさん:04/07/17 22:24
>>409

printf(" %02x", hoge() );

こーゆーのやってみたか?
hoge に get〜 みたいな関数あてはめて
>>407
>得られた式は左辺値ではない。
の部分でいいんだよね?

>>358にあるように左辺値のときは変換されないじゃなくて、
変換されたときは左辺値じゃなくなるという方が正確だと思う。
int kazu=0;
if(int i=1;i<10;i++){
kazu++;
}
ならkazuの値は1,2,3,4,5,6,7,8,9という順に変わっていきますが、
これを1,9,2,8,3,7,4,6,5という順に値を変えていくにはどうしたらいいですか?
414デフォルトの名無しさん:04/07/17 22:48
>>413
変数を三つ使っちゃいけないのか?
↑ifじゃなかった、for文です。
416デフォルトの名無しさん:04/07/17 22:53
>>412
>左辺値のときは変換されないじゃなくて、
じゃ、左辺値のときに&[0]がつく例でも示したらどうだ?
>>413

 for(int i=1;i<10;i++){
 data[kazu]=ごにょごにょ・・・
 }
という風にしたいので、[]の中に入る数字が>>413で示した順番で変わるのなら何でも構いません。
ちなみに最大幅が9と決まってるわけでは無いのであらかじめ配列に数字を用意しておく手は使えません。
アンカー間違えた。。。>>414です。
>>416
素で言っているのかなあ。

変換される(&[0]がつく)なら左辺値じゃなくなるって言っているんだから、
左辺値でありながら変換されている状態が存在しないって言っているのに
何で存在を示させようとしてるの?

変換されない根拠を「左辺値だから」と言っている>>358
因果関係理解してないよね?とずっと言っているのだけど
あなたも理解していないですか。そうですか。
420デフォルトの名無しさん:04/07/17 23:05
>>419
規格に書いてあるのは結論だけなんだよ
そこに至る過程を知らない香具師にいくら説明しても
意味ねーって逃げるだけでつまらんから言わないのさ
>>417
#include<stdio.h>
#define N 10
int main(){
int i, kazu=N;
for(i=1; i<N; i++){
kazu=(i%2==0)? kazu+N-i: kazu-N+i;
printf("%d\n", kazu);
}
return 0;
}
>>421
なるほど!ありがとうございます!
>>406
その文書に BNF とか yacc lex 文法での定義が付いてない?
想像だけれど、訳された部分は厳密な定義の部分じゃなくて解説部分だと思うんで
その部分がもしあれば、ここに書き込んでもらえると謎の例外現象もはっきりすると思う。

式としての評価
sizeof の右側での評価
関数に渡すときの評価
typedef されたときの評価
キャストするときの(hogehoge)の評価

この辺りの取り扱いが微妙な可能性があるのではとは思ってるんですが・・・
すみません、教えてください。

CSVファイルなどで、
県名,市町村名,人口
という項目を持ったファイルがあるとします。

このファイルから県別の人口を出したいときに、
C言語では一般にどのようなコーディングを、
されるのでしょうか?

私はCOBOLなどでよく使うコントロールブレイク処理を、
コーディングいたしますが、C言語的にはおかしいのでしょうか?
425デフォルトの名無しさん:04/07/18 00:07
>>424
それでOKです。
426デフォルトの名無しさん:04/07/18 00:07
>>424
「一般に」の定義がものすごくあいまい
まず fscanf でも検討してみて、マズいのがあれば
どうなってればいいのかはっきりさせて
そういう関数を作ればいい
    ~~~~~~~
     ↑
ぐたぐた書いたが言いたいことはこの1点のみ
COBOL屋ならローカル変数が第1ハードル
>>424
参考までにですが、自分の好みだと・・・
char data[] = "abc,def,ghi" ;
というのがあったら
頭から ',' を探していって、その場所のポインタをどこかに保存して
そこに 0 をいれて、また次を探して、以下同様。
データへのアクセスは、保存しておいたポインタの文字列って感じかな。
この種の処理はCOBOLの方が圧倒的に楽そうですね。
適当なDBにでも食わせて、SQL叩いた方がよくないかね?
429デフォルトの名無しさん:04/07/18 00:15
そういうことに関しては
Perl>>>>>>>>>COBOL>>>>>>>>>(越えられない壁)>>>>>C
430424:04/07/18 00:35
>>425 >>428
参考にさせていただき、
今回のプログラムではコントロールブレイクで、
コーディングしようと思います。

>>426 >>427
すみません、私の説明不足でした。
いわゆる小計を出したいのです。

>>429
C言語のソースは本当に簡潔できれいですね。
そこにコントロールブレイク処理を書くと、
違和感がありましたので、質問させていただきました。

みまさま、ありがとうございました
431デフォルトの名無しさん:04/07/18 00:37
>>430
前回のキーと今回のキーが
違ったら抜けろ
同じである間つづけろ

基本は同じだよ?
432デフォルトの名無しさん:04/07/18 00:38
こんとろーるぶれーくって何?
和製英語ってやつ?
コントロールブレイク処理ってなにか知らないけど…

「都道府県」なら全部で47しかないから、都道府県名から0〜46の値を返す
関数をつくって、int count[47] に加算していくだけでは。

だけどもし「市町村」でも同じようなことをしたい場合同じやりかたでは
おばかさんなので、ハッシュをつくるですよ。
ハッシュについてはデータ構造の本に載ってます。
434デフォルトの名無しさん:04/07/18 00:44
>>432
COBOLスレで教えてもらいなさい
435デフォルトの名無しさん:04/07/18 02:08
>>331
そんなことしなくても、
fgets(buf, sizeof(buf), fp);
fgets(buf, sizeof(buf), fp);
fgets(buf, sizeof(buf), fp);
fputs(buf, stdout);
と4行書けばすむ
436デフォルトの名無しさん:04/07/18 02:14
>>382

tr -cs a-zA-Z < english.txt | sort | uniq -c | sort -nr | head -5

試験によくでる熟語だ。
(sortを2回使うのがコツ)
>>436
なんか間違ってるし、大体それはC++じゃないな。
system()使えってか?
>>420
左辺値の配列が右辺値のポインタに変換されることを例外とするか、
sizeofのオペランドで左辺値のまま変換されないことを例外とするかの
視点の違いかな。そもそもは。

変換されるのが普通だけどsizeofは特別って説明したほうが
俺は好きってだけの話で。

>>423
付録のlexical grammarに文法があるけど、その意味については
訳したような文章でしか定義されていないぽ。
JISCでJIS X 3010を検索して見てもらえばわかるかと。
http://www.jisc.go.jp/index.html
439デフォルトの名無しさん:04/07/18 04:35
構造体を定義するとき、
struct hoge
{
    ...
};
と書くのと
typedef struct
{
    ...
} hoge;
では何が違うんでしょうか。
使うときにstruct hogeで使うか、hogeで使うかだね
定義される領域が違う

typedef struct hoge{...}hoge;

みたいに同じ名前でもかぶらない
struct {...} fuga;
struct fuga {...} fuga;
は先の3つとは違うから注意
>>443
初心者は質問する側に回れよ。
445デフォルトの名無しさん:04/07/18 12:11
gcc/linux で使える、メモリ管理上のバグを検出するツール
を探しています。今組んでいるプログラムで、何も効果がな
いはずのコード(同じ初期化処理を何度も繰り返すコード等)
を挿入すると、結果が変わるというバグが取れなくて困って
います。一応ネット上で調べて、memwatchというのを使って
チェックしてみたところ、メモリリークは検出できて、debugし
たのですが、最初の問題は解決しません。memwatchの開
発者も、全ての問題が検出出来るわけでは無いと書いてい
ます。どなたか、この種の問題をdebugするのに良いツール
をご存知でしたら、お教えください。
(ちなみに、最適化オプションによって現象が出たり出なかっ
たりします。debugモードでコンパイルすると出なくなるので、
gdbでトレースすることもできそうにありません。)
>>443 はそのスレから来たんですか?
乙。
447デフォルトの名無しさん:04/07/18 12:17
> なんか間違ってるし、大体それはC++じゃないな。

こいつぼけ
>>445
ツールは知らないけれど、バグの症状からして初期化していない自働変数を使ったとか
自働変数へのポインタを関数から返したとか、scanf等で型の違う引数を渡したとか
その種のバグっぽい気がする
449デフォルトの名無しさん:04/07/18 12:46
>>448
どうもです。コンパイル時、ワーニングレベルを最高にして、
"自動変数が初期化せずに使われる可能性"のメッセージ
が出る個所は全て直しました。自動変数へのポインタを
関数から返したというのは、スコープの外で参照したという
ようなことですよね。その辺が怪しいと思います。何度か
見直したんですが、まだ見落としがあるのかもしれません。
チェックするツールがあると良いのですが。
450424:04/07/18 13:08
すみません。私のイメージしているコントロールブレイク処理とは、
長崎 佐世保 30
長崎 佐世保 50
埼玉 大宮 30
埼玉 川口 10
このようなソート済みファイルから、県別、市別の小計を出そうとすると
void main(void){
int flg,jinko,sumken,sumsi;
char ken[32],preken[32],si[32],presi[32];
if (scanf("%s %s %d",ken,si,&jinko)==EOF) flg=1;
else flg=0;
while (flg!=1) {
sumken = 0;
strcpy(preken,ken);
while (flg!=1 && strcmp(ken,preken)==0) {
sumsi = 0;
strcpy(presi,si);
while (flg!=1 && strcmp(si,presi)==0 && strcmp(ken,preken)==0) {
sumsi += jinko;
sumken += jinko;
if (scanf("%s %s %d",ken,si,&jinko)==EOF) {
flg=1;
}
}
printf("市合計 %s,%d\n",presi, sumsi);
}
printf("県合計 %s,%d\n",preken, sumken);
}
}
このようなコーディングになるというものです。
小さいグループの小計を出そうすると、多重ループが深くなるというものです。
みなさんのイメージしたものと、同じでしょうか?
451424:04/07/18 13:10
>>433さん
参考になります。
小計するグループ数が少ないときには、
このようにコーディングしたいと思います。
ありがとうございました。
>>447

>>382を1000回読み直せ。それでも分からなければ2度とくるな。
だから放置しないとまた来ちゃうって・・・
454デフォルトの名無しさん:04/07/18 13:25
>>452
>>382とスレタイを1000回読み直す必要があるのは>>436-437だね
>>450
そういうテキスト処理はCでやるよりawkやperlを使うのが楽。なんでSQLで全部
やっちゃわないのか知れないけど。
ちなみにawkならこんな感じ。Cよりperlとかawkとかrubyとかそういうスクリプト
お勉強した方がイイ。
$1 != prevKen {
    printShi(); printKen();
}

$1 == prevKen && $2 != prevShi {
    printShi();
}

{ prevKen = $1; prevShi = $2; sumShi += $3; sumKen += $3; }

END { printShi(); printKen(); }

func printKen() {
    if (prevKen) {
        printf("県合計 %s %d\n", prevKen, sumKen);
    }
    sumKen = 0;
}

func printShi() {
    if (prevShi) {
        printf("市合計 %s= %d\n", prevShi, sumShi);
    }
    sumShi = 0;
}
456409:04/07/18 15:24
>>410,411さんありがとうございます
でもどうもわからないです
#include <stdio.h>

main()
{
int c;

while((c = getchar()) !=EOF)
printf("%c",c);
}
これをESCキーで終了させたいのですが
良ければ教えてくれないでしょうか?
>>456
cがESCだったら終了すればいい。
458デフォルトの名無しさん:04/07/18 16:06
>>456
その辺りは環境依存。
NT系のウィンドウズなら、
キーボードからの入力をstdioで扱うと、
DOSKEY による入力バッファの編集・履歴呼び出し機能が使われる。
そうすると、その場合の ESC キーの役割は
入力行の破棄・キャンセルとなっている。
つまり(ry
459デフォルトの名無しさん:04/07/18 17:32
ネットに落ちてた万年カレンダーを参考にif文でグレゴリウス暦でなかった場合と
10000年を超える場合は再入力を求めるプログラムを作ったんですが
これで一度条件分岐してしまうとたとえも一度条件に合ってなくても先に進んでしまいます。
条件が合うまで何度もif文を参照させるにはどうしたらいいんでしょうか? 
プログラムの1部です。
scanf("%d",&year);
if (year<1582) {

printf("1582年以前は太陰暦です。\n");
printf("1582年以降で入力してください\n");
printf("西暦を4桁で入力してください。−> ");
scanf("%d",&y);}

if (year>9999) {

printf("10000年以上は計算できません\n");
printf("9999までの数値で入力してください\n");
printf("西暦を4桁で入力してください。−> ");

scanf("%d",&y);}
printf("何月ですか? --> ");
for(;;){
scanf("%d", &year);
if(year<1582){
...
} else if(year>9999){
...
} else break;
}
>>456
もれの環境では、termiosをいじらないと
改行待ちになるので、cursesをつかうといいようだ

#include <stdio.h>
#include <curses.h>
#include <stdlib.h>
#include <time.h>
int myrand(int min, int max) {
return (min +(int)(rand() * (max - min + 1.0) / (1.0 + RAND_MAX)));
}
int main(void) {
int c;
WINDOW *win, *win2;
srand(time(NULL));
initscr(); cbreak(); noecho();
win = newwin(20, 40, 10, 30);
box(win, '|', '-');
wrefresh(win);
win2 = newwin(1, 17, 31, 53);
waddstr(win2, "Press ESC to exit");
wrefresh(win2);
while ((c = wgetch(win)) != 0x1b) {
wmove(win, myrand(1, 18), myrand(1, 38));
waddch(win, (chtype)c);
wrefresh(win);
}
endwin();
return (0);
}
462デフォルトの名無しさん:04/07/18 17:53
>>460
ありがとうございます…!
>>456
マルチ氏ね
あんまり環境依存の質問に答えてると、いっぱい来るぞ…

>>456
getche() って関数を調べるよろし。
  c = getche();
  if (c == 0x00 || c == 0xE0)
    c = c << 8 || getche();
こんな感じで出来てた夜泣きガス。
getch();をやったら
rewind(stdin);
やらんと大変な事なるからきちんと入れるように
>>459
どうでもいいけど、グレゴリウス暦の採用年は国によって違うよ。
>>464
まあどうせここは隔離スレだし…
468デフォルトの名無しさん:04/07/18 19:52
> どうもです。コンパイル時、ワーニングレベルを最高にして、

やーい > わーにんぐ
>>467にとって、本スレとはどこなの?
2chは全部隔離所とでも言い出しそうな感じがするんだけど。
470デフォルトの名無しさん:04/07/18 19:53
>2chは全部隔離所とでも言い出しそうな感じがするんだけど。

まさしく、そのとおりだ
>>470
お前に聞いてない。出てくるなカス。
少なくとも、このスレのレベルが他に比べて異常に低いのは確かだな。
そうか?どこも一緒だと思うがw
レベルが普通以上のスレってどこだ?
Part86まで続いていると言うことは、厨を引き寄せる何かがあるということだろうな。
名前がそれっぽい
>>475
藁ってコーラ吹き出すところだった
>>472
ここが低いおかげでほかが下がらないんだろ。
ゴキブリホイホイだ。
ようかんマンがC/C++の宿題を片付けて見せます 28棹
http://pc5.2ch.net/test/read.cgi/tech/1089974839/
C++Builder相談室 Part10
http://pc5.2ch.net/test/read.cgi/tech/1089299158/
C++相談室 part32
http://pc5.2ch.net/test/read.cgi/tech/1088236078/
C言語なら俺俺に聞け! Part 86
http://pc5.2ch.net/test/read.cgi/tech/1089863973/
【独習C】猿63【猿C言語教室 part8】
http://pc5.2ch.net/test/read.cgi/tech/1089022705/
【初心者歓迎】C/C++室 Ver.7【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1086373839/
★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/
C言語ならママに聞け
http://pc5.2ch.net/test/read.cgi/tech/1087648569/
C、C++の最適化について語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1084676298/
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
C統合・質問スレッド
http://pc5.2ch.net/test/read.cgi/tech/1068359871/
一緒にCを学ぼうlt;初心者向けgt;
http://pc5.2ch.net/test/read.cgi/tech/1054980706/
CでWin32APIを駆使してプログラミングするスレ
http://pc5.2ch.net/test/read.cgi/tech/1057225723/
【Cのみ限定】★やってきたものすごいマジレス!★
http://pc5.2ch.net/test/read.cgi/tech/1074229556/
【冬厨】Cの文句は俺に言えぇ!part1【歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1039768013/

>>477どのスレが相対的に高いの?
> 【Cのみ限定】★やってきたものすごいマジレス!★
> 【冬厨】Cの文句は俺に言えぇ!part1【歓迎】
これがある意味レベル高そう
はい答えられないと分かってる質問をしない。
481424:04/07/18 21:35
>>455
ありがとうございました。
参考にいたします。
482デフォルトの名無しさん:04/07/18 22:31
関数を作ったりとかしすぎるとオーバーヘッドがでてくると参考書に書いておりましたが
google検索でも探してみたのですがまだ理解できません。
どなたか助けてください。
483デフォルトの名無しさん:04/07/18 22:33
>>482
参考書の具体的な書名がわからんが
そーゆーことが書いてある部分の論旨をよく読め

関数化を徹底しろと言ってない本は捨てろ
関数呼び出しとは、レジスタをいくつかスタックに退避した上で関数のアドレスをcallすることで実現されている。
それにより、関数の細分化を進めるとスタック退避/復帰やジャンプのオーバーヘッドが増えてくる、というのが
その参考書の主張だろう。つーかそんなことも説明してないくせにオーバーヘッド云々書いてる参考書なんて
さっさと金星で焼いてしまえ。

一応言っておくと、余程プアな環境でもない限り無視して良い程度のオーバーヘッド増加だ。
タイトなループ内では関数を避けることもあるけどな。
486デフォルトの名無しさん:04/07/18 23:00
普段 C99 が云々とさんざん言いながら、ご都合で C90 に戻るのな、こいつら (ペッ
487デフォルトの名無しさん:04/07/18 23:03
つまりあまり意識するほどの事ではないけど
意識しなさすぎはよくない程度ですかね
C99を云々言う馬鹿は君の脳内にしか居ないと思うよ (ペッ
本当に厨房の溜まり場になるから罵倒はやめろ
なにをいまさら
みなさんすいません
同じC言語でも環境依存があるなんて知りませんでした
私のはリナックスのなのでgetcheというのは使えないようです
環境依存は専用スレへどうぞ。
>>491
そうか
char loadfile[20];
FILE *fp;

printf("load file: ");
scanf("%s",loadfile);

if((fp = fopen(loadfile,"r")) == NULL){
printf("そんなファイルねーからその名前でファイル作るぜ.\n");
fp = fopen(loadfile,"w");
}


これ動かそうとするとエラー終了するんですがどう直せばいいですか?
> if((fp = fopen(loadfile,"r")) == NULL){
> printf("そんなファイルねーからその名前でファイル作るぜ.\n");
> fp = fopen(loadfile,"w");
> }

if((fp = fopen(loadfile,"r")) == NULL){
printf("そんなファイルねーからその名前でファイル作るぜ.\n");
fp = freopen(loadfile,"w", fp);
}

ただし未確認だが
>>495
それでもエラー返されちゃいました
で、そのエラーの内容を書かないというのは何か理由があってのことか?
セグメンテーション失敗、とだけなのでどうにも・・
多分他でつまずいてるっぽいので見直してみます、失礼しました
"a+" でいいじゃん。
500デフォルトの名無しさん:04/07/19 02:27
ふつうインライン関数。

うちではつかいまくり
501デフォルトの名無しさん:04/07/19 02:29
> これ動かそうとするとエラー終了するんですが

scanf使っているから
>>494
おそらく最終的なfpがNULLになっていると思われ
取り敢えず>495は全くの見当違いだな。

>>494
そこに問題があることは確認済みなのか?
作れないファイル名を入力されてないか?
改行文字では?
stdio.hとか読むの結構面白いな。
506デフォルトの名無しさん:04/07/19 14:14
> これ動かそうとするとエラー終了するんですがどう直せばいいですか?

空白あいてないからいけない。あけたらふつうにうごいたぜ。

#include <stdio.h>

main()
{
  char *loadfile;
  FILE *fp;

  loadfile = "hoge";

  if ((fp = fopen(loadfile,"r")) == NULL) {
    fprintf(stderr, "%sなんてファイルねーからその名前でファイル作るぜ\n", loadfile);
    if ((fp = fopen(loadfile, "w")) == NULL)
    fprintf(stderr, "だめだった。すまんOTL\n");
  }

  fclose(fp);
}
  char *loadfile;
  ...
  loadfile = "hoge";

キモチワルイ
>>507
妊娠初期か?
ご自愛下さい。
509508:04/07/19 14:27
…あぁ、loadfile が const char * じゃないと、って事?
>>508-509
そういう意味じゃなくて
ファイル名を「任意で打ち込む」んだからポインタでなくて配列で用意しとこうって事でしょ

char loadfile[64];

strcpy (loadfile, "hoge");

とぐらいやろうぜ
凄い逸材が現れたなm
>>511
誰のどこを云ってるのか解らないからきちんと云おうぜ
プログラム作る上でうやむやなコードとか書かないでしょ?
>>512
煽りは放置で
514デフォルトの名無しさん:04/07/19 14:52
> strcpy (loadfile, "hoge");
> とぐらいやろうぜ

空白あけるなよ ぼけ
>>514
strcpy と (loadfile, "hoge");
の間の事?
Cの仕様では空けても問題は無いはずですけど
>>513
夏だし、ねぇ・・・

素直になって欲しいですね、みんな
>>515
いつものアホだから放置していいよ。でもまあ空白空けないほうが好き。
printf(

"hogeeee"

"h%soo"
, bar)


;

とはやらないでしょ?
>>515
そうだけどそんなとこ空ける奴なんていない
>>518
仕様に沿ってるしいいんじゃないの?
もし気に食わないようなら間の空白は脳内削除しておいてください
いや、中が長くなってくるとそういう分割する奴いるよ。
Win32APIを呼び出す時とか。
>>520
さすがに>517ほどじゃないけど
"*****.***\0"
"*****.***\0"
"*****.***\0\0"
とか使う場合は確かにある

>517の云うように意味のない改行は無いけどね
>>514
>空白あけるなよ ぼけ

strcpy がマクロではなく、関数である事を
明示しているんですが、何か?
>>522
今度は無意味な騙りまで出てくるし
本当にこのスレどうかしちゃってるのかな・・・
>>521
意味ねー >> \0
このスレはこれで良いと思う。ウザいのなら見なければ済むのだし。
だから、どこがまともなのか>>478のリストから挙げてよ
>>524
\0\0と二つ並べたのはとあるAPIを使う時の話なのでスレ違いも甚だしくてすみません。

何で使うかは
OPENFILENAME構造体などで調べてみてください
ファイルオープン用のフィルタだっけ
>>524
なんで?
文字列は最後に\0がつくから
\0を2つ書かなくても良いってことだろう
>>530
"fsa" "fasdi"
は、コンパイル時に
fsafasdi\0
と連結される
532531:04/07/19 15:37
つーか、考えてもみろよ。
勝手に\0補完されたら
strcpy(buf, "abyabya" "uhyahyahya");
とやってもabyabyaしかコピーされないだろ。
533531:04/07/19 15:38
考えが足りないのは俺のほうだったわはー
>>531-532
ごめん、漏れが言いたいのは連結した後の話。
ここのラベルは相当なモノですね
>>522
マクロだって括弧空けてても平気だけど?
>>536
騙り釣りに反応しないようにしてください
アヒャヒャプゥゥゥ
C使いのレベル

初心: 参考書の通り打ち込む。参考書のソースにやけに空白があいていると、それも律儀に打ち込む
初級: 空白なんてあけない
中級: どこかしこ構わず空白をあけてみる
上級: 適切な場所に空白をあける

神: プログラミングなんてもうとっくにやめた
空白に拘るのは、クズの証拠だからほっとけ。
後でいくらでも好きなように修正できることに対してゴタゴタぬかすな。
チーム開発に向かないな、お前。
ずっと引き篭ってて下さい
ネットだしチームでは無いんじゃないかな
>540もチームで開発すればきちんと守るタイプだろうし
チームならルールを決めるでしょ。
ルールもないのに自分の好みを無意味に主張する奴は、
チームで決められたルールにも延々と文句を言い続けることが容易に想像できる。
ぼ けに釣られてる奴全員氏んでこい。
>>545
自己紹介乙
互換性を考えたら空白なんか論外だろ
>>539
仙人: 他人のコードは気にせず読むし、自身は適切に空ける。必要ならフィルタを通すから一々文句言わない。
test
550デフォルトの名無しさん:04/07/19 16:35
> strcpy(buf, "abyabya" "uhyahyahya");
> とやってもabyabyaしかコピーされないだろ。

こいつぼけ。
"foo" "bar"は
"foobar"と同じだから、そのあとに f o o b a r \0
になるんだよ ぼけ それぐらいおぼとけ



























































>>550
>おぼとけ
そんなおとぼけをw
>>550
> それぐらいおぼとけ
ホントに日本が不自由な方のようでw
空白あけすぎ
>>554
>ホントに日本が不自由な方のようでw
ホントに日本語が不自由な方のようでw
>>556
はずかちー
勘違いに勘違いなレスを勘違いしてるから










とりあえず、いままでの話は水に流そう
別に質問は無いみたいだし
このスレ名物の"ぼ け"君は空気どころか1レスすらロクに読みこなせないのが分かったところで次の質問ドゾー
よりにもよってこの流れをラウンコに張られて笑われてますよ
スレどこ?
いや待て。
「日本が不自由」って、どっかのスレで見たぞ。
もしかすっと流行ってんのかも試練。
>>561
話がかみ合わないスレ
228 名前:デフォルトの名無しさん[sage] 投稿日:04/07/19(月) 12:35
>>224の直後に>>225がきたんでネタかと思ったら、マジみたいね。
ホントに日本が不自由な方のようでw

229 名前:デフォルトの名無しさん[sage] 投稿日:04/07/19(月) 12:38
日本が不自由

230 名前:デフォルトの名無しさん[sage] 投稿日:04/07/19(月) 13:22
流れにワラタ

231 名前:デフォルトの名無しさん[sage] 投稿日:04/07/19(月) 14:38
>日本が不自由
うんうん日本って不自由だよね!
って… んっ?

232 名前:デフォルトの名無しさん[sage] 投稿日:04/07/19(月) 16:32
>>228
あんた最高だよ。
ラウンコってどこ?
>>556の釣られっぷりでも笑われてるの?
ラウンコ=ラウンジ
今度から荒れたらラウンジに報告するようにしますね(藁
Cとは無縁の奴が入り込んでくるだけだからやめとけ
>>562
メアド欄を見る限り >>554は釣りの気がするww
早速来たか
(・∀・)ニヤニヤ
俺たちはラウンジャー以下かよ(藁
そりゃあ(ry
ラウンジャはさっさと帰れよ
ラウンコ>(超えられない壁)>C厨
>>575
ラウンジャなんて一人も来てないと思うぞ
きてても一言も書いてないと思われ
なら、厨房臭い奴が住み着いてるだけか。
ひさしぶりにCスレにきたらとんでもないクソスレになってる・・
      人
    (__)
  \(__)/ ウンコー!
   ( ・∀・ )
     ̄ ̄ ̄
581デフォルトの名無しさん:04/07/19 20:19
>>579
目下、歴だけ長くて精神のついてきてない「ベテラン」が狡猾に荒らしているところだ
こんなのを見習って荒らしが育って欲しくはないが、おそらくそうなるだろう

自分にとって面白くないことがあると暴れる、つまり根はガキんちょのまんま
こーゆーオトナを見て育った子供がいま社会を脅かしているわけだ
.       ∧_∧すいませんすぐに片付けますんで・・・
       (;´Д`)
  -=≡  /    ヽ
.      /| |   |. |           .人
 -=≡ /. \ヽ/\\        (__)
    /    ヽ⌒)==ヽ_)=    .\(__)/ ウンコー!
-=   / /⌒\.\ ||  ||      ( ・∀・ )
  / /    > )| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 / /     / / .|______________|
 し'     (_つ  ̄(_)) ̄ (.)) ̄ ̄ ̄ ̄ (_)) ̄(.)) ̄
583228:04/07/19 20:37
おい、ラウンコのどのスレだよ。
気にになるじゃねーか!
相互ウンコしてるだろ
20くらい前のレスも目に入らんのか・・
586デフォルトの名無しさん:04/07/19 21:28
.libというファイルをa.objとb.objから作りたいのですが
コマンドが調べてもわかりません。
誰か助けて。
普段コンパイルはlcc a.cで通ってます
cat a.obj b.obj > .lib
lccは解らないけど
BorlandC++だと
bcc32 a.c a.lib
で作成できるみたいです

これは環境依存なのでこちらで訊いてください
【初心者歓迎】C/C++室 Ver.7【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1086373839/
double a;
scanf( "%f", &a );
では何故 a に正しく代入できないのでしょうか?

素人考えには「大は小を兼ねる」って感じで正しく代入できてもおかしくはないと思うのですが…
>>589
scanfはaの型を認識しないから。
>>589
%fとパラメータを渡されているために、scanfが&aをfloat型のアドレスであると
解釈してメモリアクセスするから。
>>589
float や double がどういうデータ形式か学んでください。
>>589
それは君が素人だから。
>>591
ていうことは *(float*)&a ってするとちゃんと取り出せるですかね?

とりあえず型が違うから本質的にムリ、程度に考えておきまつ
"%lf"を使おうね
他スレを見ていて思ったんですが
http://www.cmagazine.jp/src/kinjite/c/variable.html#index16
=引用=
たとえば,List 17のようなプログラムは問題をかかえています。というのも,配列aは4バイトのサイズしか用意されていないのに,
そこに5バイトのデータをセットしようとしているからです。文字列は"ABCD"だから4バイトだろうというのは大間違いで,実際には
文末コード(つまり'\0')もあるので,合計で5バイトぶん用意しないとまずいのです。

List 17
--------------------------------------------------------------------------------

void f()
{
  char a[4];

  strcpy(a,"ABCD");
}
=引用ここまで=

とありますが、これはおかしくありませんか?char a[4]の時点でaにはchar型4個分+NULL文字用の1byteの合計
5byteが割り当てられていて、strcpyで4+1=5byteコピーしても問題無いように思います。
char a[4]で確保されるのは4byteです。
NULL文字用のバイトなど確保されません。
>char a[4]の時点でaにはchar型4個分+NULL文字用の1byteの合計5byteが割り当てられていて
誰にそう言われたのかは知らないが誤り。
4バイトしか確保されない
>>596
char a[4]というのはchar 4個分てことよ。
釣りか?
601デフォルトの名無しさん:04/07/19 22:37
typedef struct HOGE HOGE;
 
HOGE add(HOGE a, HOGE b);
void add(HOGE *ans, HOGE *a, HOGE *b); 
どっちがいいですか?
const をつけろ。話はそれからだ
>>601
戻り値が値渡しだから、構造体が巨大な場合は前者はやめたほうがいい。

あとは、使いやすいほうで。
>>601
int add(HOGE *ans, HOGE *a, HOGE *b);
/* 戻り値 0:成功, -1:オーバーフロー, ... */
constが妥当かどうかの検討からだな。
add(a, a, a)
で問題なければどちらでも。
そもそも const が何であるかの検討からだな。
char moji[20];
scanf("%s",moji);

みたいにしたときに、半角スペースを含む文字列を入れると
半角スペース以前の部分しか代入されません。
スペースとその前後の文字列を代入させるにはどうすればいいでしょうか?
>>608
gets(moji);
fgetsを使う
また、scanfか!
121011
122241
021231

上の用な数列が書いてあるファイルから
a[0][0]=1 a[0][1]=2
のような感じで読み込むにはどうしたらいいでしょうか?

ちなみち桁数は毎回ちがいますが
一回の読み込みのなかでは各桁ともに同じです
613デフォルトの名無しさん:04/07/19 23:06
vb6のc++で一応本で調べたけどサパーリ。頼みます

五人分の得点ファイルを読み込んだとして
その最高得点を表示させたいんだけどどんな方法があるの?
取り敢えず関数作って五個の中から最大を選ぶていう関数を使おうとしたんだけど
whileでループして読み込み表示する方法だから得点が全部同じアドレスになっちゃって
折角の比較関数使えないんだよね

どうすりゃいいの 教えて偉い人
int *(k[6]);

...(桁数を取得してnとする)

k = (int**)calloc(sizeof (int)*6, n);

とやりましょう
次に、読み込む時は

読み込む時の桁
x=0
(k+x)[0] = 1, (k+x)[1]=2
とやれば>612と同じような結果になります
1行目を読む
  ↓
長さを見て動的に配列を確保
  ↓
a[行カウンタ][列カウンタ] = 変数[列] - '0';
  ↓
最終列まで(ry
>>613
vb6のc++で?
>>613
違うアドレスに読み込めばいいんじゃ?
>>613
STLつかえ。
>>613
一応翻訳しておきますね。
VS6をVB6と間違えるぐらい動転してますし。

VS6のVisualC++6.0を使って、一応C++の本を読んで見たけど解りません。

五人分の得点ファイルを読み込んだとします。
その五人分の得点を比較して、最高得点のみを表示したい。
// 五つの中から最大値を選ぶ関数を作ろうとしたけど全ての得点が同じになってしまいます。
*ファイルから読み込む時にwhileループを使ってるけど、そこで失敗してしまったので何とかしてください。

どうすりゃいいの 教えてえらい人
>>597-599
そうだったんですか・・・。変な覚えかたしてたようです。ありがとうございます。
>>619
お前の作ったプログラムを見せろ
& とか | のビット演算のオペランドは unsigned じゃないとダメだと聞いたのですが本当でしょうか?
ググっても全然出てこないので…
>>622
うそです。
624619:04/07/19 23:16
>>621
俺に云わんでくれw
>613に云ってくれよ

>613読んだだけだと問題の部分が最大値を選ぶ関数なのか
ファイルを読み込むところなのか一瞬迷う

問題はファイルを読み込む部分なんで>613はwhileループを張れ
warata
>>622
signedは最上位ビットで+か-を判断してます
unsignedにすると最上位ビットも数値の為のビットとなるので全て+になります
なのでどちらも同じビット数なので気にする程ではありません

余談:
unsignedがsignedの2倍の数値を扱えるのは最上位ビットで符号を扱わなくてすむので
一ビットあいて、一ビット開けば数値は2倍に増えるからです
627613:04/07/19 23:20
テンパってた。ごめん
ありがたいことに619が訳してくれたことが当に聞きたいことです。619どうも。
>617
違うアドに読み込むなんてできるもんなの?
>618
str挑戦してみるわ

とにかく不可解な質問してすみませんでした。もう一回挑戦してきます。では
>>627
挑戦するまえにwhileループの部分を張ってくれないか?
>>609-610
ありがとうございました。
>>627
#include <stdio.h>
main()
{
#define N 5
    int i, max = 0, score[N];
    for (i = 0; i < N; i++) {
        scanf("%d", &score[i]);
        if (score[i] > max)
            max = score[i];
    }
    printf("max= %d\n", max);
}
>>623, 626
ありがとうございます!

なんかググってみても、
unsigned long dwMask = 0x80;
みたいに unsigned つけてるものが多いから危うく騙されるとこでした
bitMaskつかうときは符号なしにしたほうが無難。
何故?
>>631
コンパイラによっては
longは32ビットなので
10000000000000000000000000000000(←を二進数で)
を代入させようと
long dwMask = 0x80000000;
などのように代入するとエラーを返すコンパイラもあるようです。

BorlandC++で確認しましたが平気でした
>>633
ビットマスクだからであって
ビットマスクにマイナスの符号は要らないので
ややこしくならないように符号なしにするのは自分に親切だと思います
signedの>><<って仕様どうなってんだっけ。負の時も定義されてんだっけ。
算術シフトと論理シフトに気ぃつけやー。
ビットダンプするとき

int main(){
  unsigned char m;
  char data = 1;
  for(m = 1 << CHAR_BIT - 1; m; m >>= 1)
    putchar(m & data ? '1' : '0');
  return 0;
}

これを
こうすると、無限ループになる。

int main(){
  char m;
  char data = 1;
  for(m = 1 << CHAR_BIT - 1; m; m >>= 1)
    putchar(m & data ? '1' : '0');
  return 0;
}
>>638
本当だ。

signed の場合定数値が切り捨てられたって警告が出た。
char m = 1 << 7
ってやると
m = 10000000(2)
ってちゃんとなるのに
m >>= 1
ってやると
m = 1100000000(2)
ってなった。

これが >>636 さんのいう定義されてないってこと?
640デフォルトの名無しさん:04/07/20 00:03
セキュリティの問題で、
printfの書式指定で%nを使うのは危険
とどこかで読んだんですが、理由を教えてください
641デフォルトの名無しさん:04/07/20 00:11
>>640
別に使うことは危険じゃない。
危険なのはフォーマット文字列(printfの第一引数)を悪意のあるユーザーに入力させて、その中に%nがあった場合だ。
%nはprintfの変換指定子の中で唯一引数の先にあるものに書き込む。
>>639
挙動を実際に見てないから推測だけど
> signed の場合定数値が切り捨てられたって警告が出た。
> char m = 1 << 7
これはコンパイラが左辺型を見て定数値1をsigned charと解釈し、signedの範囲(下位7bit)で
ビットシフトを行おうとするために発生するんだろうね。
643640:04/07/20 01:09
>>641
なるほど。

外部から入力されたものをまんま
printf(buf);
とかやるのはマズーなんですね

ありがとうです


でも%nはどういう用途で使うんだろ・・
すげえ今更だしもう628は寝てるかもだけど
まだできないんで貼らせてもらいます。

while(fp,"%d%d%d%d",&[0],&[1],&[2],&[3]!=EOF){
printf("%6d%6d%6d%6d\n",x[0],x[1],x[2],x[3]);
}

てのです

今挑戦したのは最大値を求めるためx[m][i]にして多次元配列で求めようとしたんだけど何故か巧くできず、orz
ほんとはソース全部貼りたいとこだけど携帯からなんできついっす
>644 そのwhileは全く意味がないぞ、ゴミだ。
いや、むしろ凄いな。カンマ演算を使いまくった挙句に結局やってることは
while (&[3] != EOF) {
...
}
だ。ここまで行くと賞賛に値すると思う。
それは釣りじゃn(ry
>646
>&[3] != EOF

プ
100["hoge"]とhoge[100]が等価っていう原則から行くと
&[3]ってのは&(int*)3[0]と等価?よく分からないけど
えっとですね。四教科の表示のためのwhile文なんですよ。
んで六人の得点をそれぞれ入れて、各科目毎の最高点を求めるってやつなのであのwhileを入れつつしないと不味い気が
それともあの部分は削って一から考えた方がいいんですかね?
100[hoge]とhoge[100]だっけ、そのへんうろ覚え
エラー
while() の条件は 式が成り立つ間繰り返しますよ条件に汁!
>五人分の得点ファイルを読み込んだとして
まず、ここはどうやったんだ?
>653
できた。ありがとう
どうもお騒がせしてすいませんでした
工エエェェ(´д`)ェェエエ工
>>644の解読きぼん
>>657
たぶんfscanf
ファイルが5個あるんじゃないですかね?
>>644
案の定もう寝てた
というか、質問しに来たなら問題のソースぐらい張らないと誰にも理解できない事は解った?
逆に言えば問題のソースさえ掲示すれば解決できる可能性がかなり上がるとな

でも解決してよかたな
きっともうこのスレ見に来ないよ
>>643
そこまで何バイト出力したかを知りたい場合に使うこともある。
まぁ、sprintf()で使うわけだが。

>>649
"hoge"[3] は、'e' になる。中身と外見を入れ替えると、
3["hoge"]と書いても同じ。
#勿論 hoge[3]と"hoge"[3]が同じわけはない。
663デフォルトの名無しさん:04/07/20 09:08
わたしの使ってる環境だと、charは8bitでunsigned charは9bitなんですけどー

(intとunsigned intはどちらも32bit)
664デフォルトの名無しさん:04/07/20 09:32
> bitMaskつかうときは符号なしにしたほうが無難。

これデマ
>>664

if(val & 0x8000){
ってやったときに
if(val & 0x00008000){

if(val & 0xFFFF8000){
のどっちで評価されるかを確実にする
っていうかコンパイラにウォーニング吐かせるため?
666デフォルトの名無しさん:04/07/20 10:34
空白あけろ ぼけ
667デフォルトの名無しさん:04/07/20 10:34
やーい > ウォーニング
668please!:04/07/20 10:38
GTK+でプログラムをかいてるんですが、以下のような警告がでてしまうのです
この警告はどうすればなくなるか教えていただきたいです。↓
警告: 互換性のないポインタ型からの引数 1 個の `gtk_text_view_set_buffer' を渡しますです
該当個所のソース載せろよ
警告なら無視しとけ。
その翻訳ダサダサだな
英文のままの方が意味がよく分かる
NULL
  × ヌル -> ○ ナル
Warning
  × ワーニング -> ○ ウォーニング
673デフォルトの名無しさん:04/07/20 11:15
質問
数以外の文字を入れた場合エラーを表示したいプログラムつくりたいん
だけど、(if文で・・・)
やり方がわからない・・・だれか教えてくだされ〜〜〜orz

674ここは日本だ:04/07/20 11:26
>>672
NULL

  × ヌル (・∀・)イイ!!

   ↓

  ○ ナル (・ω・)キモイ...

Warning

  × ワーニング (・∀・)イイ!!

   ↓

  ○ ウォーニング ( ゚Д゚ )ハァ?
675デフォルトの名無しさん:04/07/20 11:28
if (!isdigit(c))
error("hoge");
676please!:04/07/20 11:34
GtkTextBuffer *buffer;
char buf[10000];
FILE *inputfile;
char ch;
int i=0;
buffer = gtk_text_buffer_new(NULL);

inputfile = fopen("interface.c", "r");
if(inputfile==NULL){
printf("can not open!");
exit(1);
}

while(1){
ch = fgetc(inputfile);
if(ch==EOF){
break;
}

buf[i] = ch;
i++;
}
gtk_text_buffer_set_text(buffer, buf, strlen(buf));
gtk_text_view_set_buffer(textview1, buffer);
↑ここでエラーがでてます。
よろしくお願いします。
677おしえてぇー:04/07/20 11:36
getuid()の返り値をchar型の配列にいれたいのですが, できますでしょうか
>>677
やろうと思えば出来るだろうが、止めた方がいい
GTK_TEXT_VIEW
GTK_TEXT_VIEW
>>674
スターウォーズ → スターワーズ
オンウォード → オンワード
ウォーキング → ワーキング
ワーキング → ワーキング
グノーム
オグレ
スウォード
夏休み恒例、ワーニング祭
warning とかけばおk
まったりしてますね
ていうか、取り敢えず統一しておこうよ。
warning → ヲーニン
while → ファイォ
true → トゥウー
main → メインヌ
footwork → フッワーク
英国風に「ゥヲルネン」かな。 >warnig
warnig の検索結果のうち 日本語のページ 約 598 件中 1 - 50 件目 (0.32 秒)
690デフォルトの名無しさん:04/07/20 12:31
ifよりも
warning → ゥヲァナン
692おしえてぇー:04/07/20 12:43
あっ!できました。
693デフォルトの名無しさん:04/07/20 14:36
うぐ・・・・質問します。
以下のソースを実行し、数字以外の文字などを入れると、
数字を入れてくださいとエラーが出るはずなのですが
そのエラーが2つ出てしまいます。1つだけ表示させるようなことできないでしょうか?
多分、while文の ()のなかがおかしいと思いますが・・・
処理方法が思いつかないので・・・・
よろしくお願いいたします。

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

void main()
{
char n1;
printf("数を入力してください\n");

while(!isdigit(n1))
{
scanf("%c", &n1);
if(!isdigit(n1))
{
printf("数字を入れてください\n");
}
}
}

変数は初期化して使いなさいっていう基本
scanf(" %c", &n1);

do while 使った方がもっとすっきりすると思うが・・・

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

#define MAXBUF 256

void main()
{
  char buf[MAXBUF];
  char n1;
  printf("数を入力してください\n");

  while(!isdigit(n1))
  {
    fgets(buf, MAXBUF, stdio);
    sscanf(buf, "%c", &n1);
    if(!isdigit(n1))
    {
      printf("数字を入れてください\n");
    }
  }
}
正 誤
stdio -> stdin
698デフォルトの名無しさん:04/07/20 15:03
>>694-696さま
ありがとうございます、
どうもscanf()がだめぽだったようです・・・・
ありがとうございました〜〜感謝です。
>>693
なにそのソース、ふざけてるの?
なんだと
機種依存コードっ!!(@u@ .:;)ノシ
今時機種依存って言葉自体がダサいね。結局大半の環境でうまく動作するからいいじゃん。
極端に高い移植性を求めない限り。
なんだと
OS依存コードっ!!(@u@ .:;)ノシ
705デフォルトの名無しさん:04/07/20 17:30
MainとSubというふうに、別に作ってをつなげる場合
どうすればいいんでしょうか?
>>705
環境依存の質問は、専用スレへどうぞ。
#defineのような文字列置き換えを
前処理で行わないで文字列置換を行う方法はないでしょうか?
プログラム実行中で置き換えたいのですが。
>>707
変数・関数ポインタ・ifなどなどで対処できるはずだが。
709707:04/07/20 18:57
実際には下の様な処理を行いたいのです。(x,yはint型変数)
if(turnDirection==TURN_RIGHT){
#define DIST_X (4-y)
#define DIST_Y (x)
}else if(turnDirection==TURN_LEFT){
#define DIST_X (x)
#define DIST_Y (4-y)
}
これでは再定義が行われるのですが、
具体的には直せばいいのでしょうか
710707:04/07/20 19:00
>>708
文字列置換は出来ないという事ですか?
そういうのは関数ポインタを使えよ
int dist_x, dist_y;
if(turnDirection==TURN_RIGHT){
dist_x = (4-y); dist_y = (x);
}else if(turnDirection==TURN_LEFT){
dist_x = (x); dist_y = (4-y);
}
ではいかんのか

int dist_x_right(int x,int y){ return 4-y; }
int dist_x_left(int x,int y){ return x; }

int (*dist_x)(int , int );
if(turnDirection==TURN_RIGHT){
dist_x = dist_x_right;
}else if(turnDirection==TURN_LEFT){
dist_x = dist_x_left;
}
ではいかんのか。
関数ポインタの使い方がよく分からない奴はひとまず適当なApacheモジュール(asisとか)を
読んでみろ。よく分かるぞ。
defineがプリプロセッサで処理されることも知らないのに、
Apache読んでもチンポコマンポコだと思うが。
715714:04/07/20 19:28
と思たがら、前処理で行うってのは一応市ってるのね。
スマンカッタ。
>>715
でも、変数の概念を理解してないみたいだから。。
717707:04/07/20 19:54
説明不足でした。申し訳ないです。
if文内で、値を代入したく無かったんです。
for文内でgField[x][y]という風に変数x,yを使ってます。
x,yは値が常に変わります。

#define DIST_X(A) (((A)==TURN_RIGHT)? (4-y):(y))
#define DIST_Y(A) (((A)==TURN_RIGHT)? (x):(4-x))
で解決しました。本当は引数無しにしたかったけど。
ありがとうございました。
>>717
( ゚д゚) ポカーン…
なんかすごいのが現れてたのね。
規制されてたからお話できなかった。
720デフォルトの名無しさん:04/07/20 20:44
> 表示させるようなことできないでしょうか?
> 多分、while文の ()のなかがおかしいと思いますが・・・
> 処理方法が思いつかないので・・・・

答え: scanf使っているから
721デフォルトの名無しさん:04/07/20 20:44
> if文内で、値を代入したく無かったんです

しろよ
まあ、向いてない人間はとことん向いてないわけで、何を言っても同じ
>>721
全くもって同意
こういう香具師はD言語やってもversionとかdebugについていけなそうだな
724デフォルトの名無しさん:04/07/20 23:05
初心者本で勉強してます。
なんで本などではshort intを使ってないんですか?
1000とかならintを使わなくていいと思うんですが?
725デフォルトの名無しさん:04/07/20 23:06
整数の基本はintだから
726デフォルトの名無しさん:04/07/20 23:10
初心者本で勉強してます。
なんで本などではcharを使ってないんですか?
100とかならintを使わなくていいと思うんですが?
>>726
うっさいなあ。intはCPUやコンパイラに速度等に都合のいい型という事になってんだよ
#include <stdio.h>

int main(void)
{
float gal;
char sel;

do {
printf("ガロン:");
scanf("%f", &gal);

printf("%fリットルです\n", gal * 3.7854);

printf("まだ計算しますか\?(y/n)");
scanf("%c", &sel);
} while(sel != 'n');

return 0;
}


というただこれだけのプログラムなんですが、実行すると

ガロン:4 <-4を入力
15.141600リットルです
まだ計算しますか?(y/n)ガロン:n <-nを入力、この時点で何故かガロン:が出力されている
15.141600リットルです <-終了しない
まだ計算しますか?(y/n)n <-2回目のn

となってやっと終了します。デバッガで追ってみると15行目のscanfで入力をする前にwhileで真偽の判定がされているようです。
このプログラムのどこが問題なんでしょうか?
環境はGentoo Linux、GCC 3.4.1-r1です。(3.3.4でも同じでした)
scanfだから。バッファに改行が残ってます
charは文字型だから
文字以外を格納すると
「ソースを読んでる人が迷う」からです

別に規制は無いので数字が低い時はshortを使ってもいいですけど
今はほぼ死語(と云ったら怒られるけど)みたいな感じでほぼlongを使うべきでしょう。
会社やチームで組むときはもちろんshortは使います。
個人でやる分にはlong使っておけばいいでしょうと言う意味なのでそこを受け取り間違えないでください。

まとめると
・数字入力なのにcharを使うとソースを読んでて迷う(可読性を無視)
・使いたければshortでもいいし、使うなとは云わないので使うかは個人の自由


以上です
731デフォルトの名無しさん:04/07/20 23:22
>>728
while(sel != '\n');にすると無条件に終了するか?
>>728

#include <stdio.h>

int main(void)
{
float gal;
char sel;

do {
printf("ガロン:");
scanf("%f", &gal);
rewind(stdin);//←これ

printf("%fリットルです\n", gal * 3.7854);

printf("まだ計算しますか\?(y/n)");
scanf("%c", &sel);
rewind(stdin);//←追加
} while(sel != 'n');

return 0;
}
>>730
いくらなんでも,そりゃないんじゃないか?
>>733
文字だって数字だとかですか?
文字は数字だけど故人が文字と取り扱った方が扱いやすいと思ったから文字型が生まれたんだと思う
その通りにしてみるのも一理あると思う
fflush( stdin ) じゃダメポ?
736デフォルトの名無しさん:04/07/20 23:25
>>735
空白あ(ry
737デフォルトの名無しさん:04/07/20 23:28
>>730
>charは文字型だから

プッ バカジャネーノ?
return 0 を付ける理由ってなんですか?
無くても動くと思うのですが…
739デフォルトの名無しさん:04/07/20 23:29
>>738
0を返したいから。
>>735
fflushの基本的な意味は「書き込みされて無いバッファを書き込みます」
なので
>LSIC-86のようにユーザーズマニュアルに記されている場合のみ使用すべきでしょう。
(URL:ttp://www9.plala.or.jp/sgwr-t/lib/fflush.html より抜粋)
という事です。

ストリームバッファを空にするという意味ならば rewind を使った方が安全な策だとは思います
741デフォルトの名無しさん:04/07/20 23:29
>>738
彼が動くかどうかで決まるのさ
>>738
return 0厨がうるさいから
>>734
お前がそう思ってるだけならそれでいい。
だが、その腐ったゴミを撒き散らすな。
744728:04/07/20 23:29
皆さん、ありがとうございます。
よくデバッガでselを監視していたら\nが残ったままでした。
これが問題なんですね。
ただ残念なことに>>732さんのコードをコピペして試したのですが状況は変わりませんでした。。。
>>738
どこの話だか解らんので
どういうところでのreturn 0;なのか書いてくれ
たぶんmainの戻り値のことだとは思うが
747デフォルトの名無しさん:04/07/20 23:31
>>745
分かっているくせにぃ プニ(AA省略)
>>744
デバックライトやってみれ
所々で変数の値を表示したり、ここまでプログラムが動いてるよって確認表示な

#include <stdio.h>

int main(void)
{
float gal;
char sel;

do {
printf("ガロン:");
scanf("%f", &gal);

printf("%fリットルです\n", gal * 3.7854);

printf("まだ計算しますか\?(y/n)");
scanf("%c", &sel);
printf ("%c", sel);// selの中身がどうなってるか確認してみる
} while(sel != 'n');

return 0;
}

デバックライトを行えば更に対策が出来るわけだ
>>744

scanf("%c", &sel);    //空読み
printf("まだ計算しますか\?(y/n)");
scanf("%c", &sel);
>>746
UNIX系を使わないんであればmainの戻り値は気にする必要は無いですよね。
Windowsとかでは専ら
#include <stdio.h>

void main()
{
...
return;
}
とかだしね。

>>747
えへぇーバレちゃったぁー仕返しえぃ プニィ(AA略)
>>732をコンパイルしたけど正常に動いた

>>728の使ってるコンパイラは?
752デフォルトの名無しさん:04/07/20 23:39
>>750
errorlevel
753724:04/07/20 23:40
>>725
>>727
>>730
ありがとうございます。
レスが遅れたのはもう一度初心者本を見直してたからです。
726は私ではありません。
754728:04/07/20 23:42
>>751
マ、マジっすか!?
コンパイラはGCC 3.4.1/3.3.4の両方でやっても駄目です。
ちょっと後でWindowsのほうにBCCいれて>>732さんのコード試してみようと思います。
#GCCのバグ??仕様??
>>754
釣られるなよ
>>735さんのでよかったみたい
>>740みたいなでしゃばったこといってすみませんでした
>>740
入力ストリームに対する動作はどちらも未定義。

>>728
fgets()使っとけ。
要するに stdin に対しては rewind も fflush も未定義ということか…
>>752
GetExitCodeProcessも
760728:04/07/20 23:57
デバッグライト等いろいろしてみましたがよくわかんないですね(^_^;)

>>757
持っている本(独習C)にfgets()の記述があるので、当分先の分野ですがその前後を勉強してみます。

>>758
http://kmaebashi.com/bbs/bbs09.html
ここのやりとりにあるようにANSIで定義されてないんですねぇ。
>>760
この後に及んで何が分からないというんだ?
scanf("%*s");

じゃあこれは?
#include <stdio.h>

#define MAXBUF 256

int main(void)
{
  char buf[MAXBUF];
  float gal;
  char sel;

  do {
    printf("ガロン:");
    fgets(buf, MAXBUF, stdin);
    sscanf(buf, "%f", &gal);

    printf("%fリットルです\n", gal * 3.7854);

    printf("まだ計算しますか\?(y/n)");
    fgets(buf, MAXBUF, stdin);
    sscanf(buf, "%c", &sel);
  } while(sel != 'n');

  return 0;
}
sizeof(buf)使えよぼけ
765デフォルトの名無しさん:04/07/21 01:12
この書き方ならあえてsizeof使わないほうがいい。
766デフォルトの名無しさん:04/07/21 01:12
だけど空白はあけろ ぼけ > while(sel != 'n');
767デフォルトの名無しさん:04/07/21 01:14
> float gal;

ここはdoubleにするべきだな。

また、y/nのほうはsscanfしないほうがいい。
>>767
double にしたら printf 中の %f も %lf に直す必要がある
んなこたーねーべ
>>768
sscanfの中
771デフォルトの名無しさん:04/07/21 01:34
> IRCではn03021とかのHNも使ってます。

そりゃあたりまえだろ ぼけ
772デフォルトの名無しさん:04/07/21 01:34
> 要するに stdin に対しては rewind も fflush も未定義ということか…

いや、定義はされてる。
773デフォルトの名無しさん:04/07/21 01:35
> デバックライトやってみれ

ク...
774デフォルトの名無しさん:04/07/21 01:35
> この後に及んで何が分からないというんだ?

後...

おまえら知能程度低すぎ...
775デフォルトの名無しさん:04/07/21 01:36
> 持っている本(独習C)にfgets()の記述が

もっとましな本読め。
あの本はウソが多すぎ
>>774
お前のようにいちいち変換結果を精査してるほど時間を持て余してないんだ。

>>775
まずはましな本の例を挙げろ
今だ!777ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
7^(7^7)
の下一桁の数字を求めなさい
情報不足。板違いかもね
780デフォルトの名無しさん:04/07/21 01:50
> まずはましな本の例を挙げろ

逆だろ。だめな本を先にあげろ
781デフォルトの名無しさん:04/07/21 01:50
> 変換結果を精査

「精査」の使い方がまちがってる。
職場ではじめて知った言葉をよろこんで何にでも使うバカっているのよねー ;-)
>>780
K&Rの邦訳は誤訳だらけでだめだな。
さて、ましな本は?
だから相手にするなって言ってるのに・・・
>>781
また批判だけか?間違ってると主張するならどう間違ってるかを指摘しなければ
ただのキチガイ野郎としか思われないぞ。
>>784
○ ナル <-> × ヌル
○ ウォーニング <-> × ワーニング
>785
どうせ日本語の範疇では正確に発音出来ないんだから細かく拘る奴はただの馬鹿。
>>786
当たり前だ馬鹿。
みなさんは馬鹿と阿呆どっちが好きですか?
アホ(<-なぜか変換できない)を好む大阪人は馬鹿
「あほう」
で変換出来るはず
ほんといつ見てもここは荒れてるな
>>788
「莫迦」という表記を好んで使っています。
>>790
なるほど。 でもアホとあほうだと、ふいんき(今度はこっちが変換できない)がちょっと違うね。
>>793
雰囲気 = ふんいき;
さすがマ板だ、今更なネタにも突っ込みが入ってる
>>794
ありがとう! >>794さんて、しせんつ(あれ!今度はこれが・・・)ですね
もういいよ阿呆
extern struct Thre *Cnaraore[][1002];
extern void format(void *, int flags)
if (Cnaraore[86][796]->脳味噌.親切.読み == Cnaraore[86][796]->脳味噌.しせんつ)
 format(&Cnaraore[86][796]->脳味噌, ALL_CLEAR);
799デフォルトの名無しさん:04/07/21 10:53
> void main()


するなよ ぼけ
800デフォルトの名無しさん:04/07/21 10:54
○ ナル <-> × ヌル
○ ウォーニング <-> × ワーニング

ヌルはドイツ語だ!といえば通らなくないもないが、
ワーニングはまぬけすぎー
801デフォルトの名無しさん:04/07/21 10:54
> K&Rの邦訳は誤訳だらけでだめだな。
> さて、ましな本は?

K&R
802デフォルトの名無しさん:04/07/21 10:55
ましな本 == 例題にscanfが出てこない本 だろ?
803デフォルトの名無しさん:04/07/21 10:57
K&Rならscanf出てこないね
804デフォルトの名無しさん:04/07/21 10:58
たしかに「例題にscanfなんか出てくる本」==「だめな本」なのはわかるが、
K&R以外にないのか? > ましな本
てか出てくるが・・・。
まとめて逝け

推薦図書/必読書のためのスレッド PART 19
http://pc5.2ch.net/test/read.cgi/tech/1089492835/l50
807デフォルトの名無しさん:04/07/21 11:20
void型のfunctionなんて作ったことないよ。
何も返す必要なくてもとりあえずint型にしちゃうよ。
結局のところ、scanfって言語仕様のバグな訳ですか?
809デフォルトの名無しさん:04/07/21 11:21
> 間違ってると主張するならどう間違ってるかを指摘しなければ

翻訳すると「え? 違ってる? どういえばいい?? おしえてー」だろうな ;-)
そこで教えるのはぼけ
810デフォルトの名無しさん:04/07/21 11:22
> 結局のところ、scanfって言語仕様のバグな訳ですか?

システムコールのcreatと同じ程度です。
811デフォルトの名無しさん:04/07/21 11:22
> てか出てくるが・・・。

いえ、K&Rは出てきませんよ
>>799-804, 809-811 は、粘着自演荒らしですので放置願います。
#include <stdio.h>

void test1(void)
{
 _asm { MOV EAX, 11};
}

int test2(void)
{
 test1();
 return;
}

void main(void)
{
 printf("void = %08X\n", test2());
}

>>811
第2版にはあるんだが初版にはないのかね。
中級者ですが質問です。
C言語を使ってアスベスト志向プログラムミングをすることはできますか?
817デフォルトの名無しさん:04/07/21 13:55
>>816
まずはそのアスベクト志向プログラムミングについて教えてください。
818デフォルトの名無しさん:04/07/21 14:00
typedef enum {
FACE_BUSU=1 ,
FACE_KAWAII ,
FACE_BIJIN
} FACE_E;

最後のFACE_Eは小文字のほうがいいのかな
BUSU は 0 にしないと
if( FACE_E )
って出来ないよぉ〜
>>819
FACE_BUSU でも一応需要はあるので・・・

face_e face;
FACE_E face;
どっちがいいのかなー
多言語対応というのは、次のような風にしてやればいいんでしょうか?
なんかツールがありそうな気がしないでも無いんですが・・・

#ifdef JP
#define STR0 "あああいいい\0"
#else
#define STR0 "aaaiii\0"
#endif

tecnec
823デフォルトの名無しさん:04/07/21 14:17
>>821
とりあえずその末尾の\0は消せ。
>>821
環境に依存しない方法ならその方法がいいかも。
メッセージをテキストファイルにして実行時に読み込む方法もある。

環境依存だからスレ違いだけど、Winなら「リソース」、Unix系なら「gettext」とか
調べてみると良いかもね。
再コンパイルが必要な方法はあんまよろしくないんでは
>>818
いちいち typedef すんな ぽけ。
BUSU だけど KAWAII 娘もいるよね。
BUSU_SHOJO >>>>>> KAWAII_HISHOJO
>>828
後腐れの悪さか
>>821
他にも多言語対応==Unicode対応の意味で使われることもあるからそれも注意。
これはtchar.hをincludeして全ての文字列を_T("hoge")のように_Tマクロで囲い、charの変わりに_TCHARにするか、
winodws.hをincludeしているならTEXT("hoge")とTCHAR(や(L)P(C)TSTRなんか)の組み合わせにすればいい。
>821
実行時に言語選べないと意味無いし
ポインタを返すライブラリを使用する時、実体のないポインタで
受けているプログラムをよく見かけるんだけど、これって
どうなんでしょうか?
例えばこんなの↓
-----------------------
struct tm *tm;
time_t now;

now=time(NULL);
tm=localtime(&now);
-----------------------

*tmはまだ実際の領域は割り付けられていないからセグっても
おかしくないはずなのだが、実際に走らせてみるとそんなことはまずない。

本来ならこう↓書くべきだと思うんだが、動きさえすれば↑の書き方でも
良いものなんだろうか
-----------------------
sturct tm tm;
struct tm *tmptr;

tmptr=&tm;
now=time(NULL);
tmptr=localtime(&now);
-----------------------

ファイル処理でも似たようなもので
FILE *fp;
だけ宣言して、あとはいきなり
fp=fopen("hoge","r");
とかやってるのも多々あるし…
あなたはバカですか?
>>832
釣れますか?
>>832
俺もしばらく前までそのへんの理解があいまいだった。
ポインタと、ポインタのポインタについてもう一度丁寧に調べるといいよ。
>>832
char *p = (char*)malloc(7743);
...
free(p);
の意味するところを再考しる
> ポインタを返すライブラリを使用する時、実体のないポインタで
> 受けているプログラムをよく見かけるんだけど、これって
メモリ割り付けたポインタ変数に代入したら代入前のメモリ解放できないジャン。
そもそもお前の書くべきソースでも
>tmptr=&tm;
ここで初期化されてないポインタ変数に代入してるジャン。
お前の理論ならセグっても(プ 不思議じゃないジャン。
>>832
int global_val;

int* func(){
return &global_val;
}

int* func2(){
int* p;
p = malloc(sizeof(int));
return p;
}
>>832
struct tm **tm;
time_t now;

now=time(NULL);
*tm=localtime(&now);

とすればせぐふぉ起きるはず(環境によっては起きない?)。
tmptr=&tm;
tmptr=localtime(&now);

そのまま書き換えて何がしたいんですか?
向いてない人間は何をやってもダメ
>>836
キヤストするな ぽけ
C++ かもしれないし。
でも C++ なら統一して new 使うか
>>838
何その'*'の位置、ふざけてるの?
>>844
俺は>>838じゃないが、関数の冒頭では
int* func(char *foo) {
というようにやる。このほうがintへのポインタを返す関数というのが分かりやすいと思うんだけど
普通はしないの?普通の宣言は
char *bar;
というようにやるけど。
>>845
どっちかに統一しろ。
>>846
結局、int* func(...)とint *func(...)のどっちを使う人が多いと思う?
LPINT func(...);
849デフォルトの名無しさん:04/07/21 16:16
int *func 63%
int* func 25%
int * func 8%
int*func 4%
結合規則で結合する方に*を付けておくのが見通しが良いと思う
int *a ;
int* func() { ... }

結合の仕方はそれぞれ
int (*a);
(int*) func() { ... }
です
ループネタビームっ!!(@u@ .:;)ノシ
>>850
int (*func()) { ... } だと信じて俺はint *func()にする
int a; /* (a)が int型 */
int *a; /* (*a)が int型 */
int func(); /* (func())が int型 */
int *func(); /* (*func())が int型 */

わかりやすい。
int *func()と書くと、関数ポインタと紛らわしいと思うが、経験不足なだけかも。
>>853
その解釈はややこしいよ
>>853
君、よく人から「変わってる」って言われない?
int (* *Hoge [
  ])()
>>855,856
判りやすいよ。
複雑になっても一発でわかる。
>>782  ・⌒ ヾ(*´ー`) ポイ
ttp://homepage2.nifty.com/tenk/scrap/kr2rev.htm
860デフォルトの名無しさん:04/07/21 18:13
"visual c++"のプログラミングがわかりません。問題が、<入力された3値を辺に持つ三角形の種類、及びその面積を表示するプログラムを作成せよ。
ただし、「ポインタ変数を引数に持つ関数を作成、使用すること」>というものなんですが、初心者で基本的なこともわからないので、お手数ですがこれ
をプログラムしてもらえませんか?ホントわからないので、省略なしに全てお願いします。
>>860
環境依存スレへ

>>859
これは、見る度にぞっとするね。俺でも間違わないような異常な誤訳が満載の本が何万部も出回り
Cのバイブルとして読まれてるんだから。
862861:04/07/21 18:16
違った。宿題スレ行きだな。VC++の質問ってのはこの場合関係ないから伏せとけ

ようかんマンがC/C++の宿題を片付けて見せます 28棹
http://pc5.2ch.net/test/read.cgi/tech/1089974839/
http://www5a.biglobe.ne.jp/~sunomono/k_r2b.html
こっちはほとんどアホが重箱の隅を突付いてるようなものだから参照価値無いけどね。
特に
> 「許される」は「完全に合法である」。
アボガド馬鹿かと・・・
>>863
重箱アタック☆
ttp://aoki2.si.gunma-u.ac.jp/BotanicalGarden/HTMLs/abokado.html
アボカド、あほかと…
演算子の優先順位と結合規則が
1 ( )
2 関数の()
3 配列の[]
4 ポインタの *
のようであるからして、

char (*hoge())[]
のとき
hoge is a function returning pointer to array of char


ということで実験したところ、

char (*baz(char (*foo)[]))[]
{
strcpy(*foo, "abc");
return foo;
}

main()
{
char (*foo)[4] = calloc(1, sizeof(char (*)[4]));
puts(*baz(foo));
}

のようなものは通った。

しかし、"配列を返す関数 (function returning array of...)"
というものはつくれない模様。
まちがえました

- char (*foo)[4] = callocうんぬん
+ char (*foo)[] = malloc(4);
配列を返す関数が無いなら
char (*foo)[4] = calloc(1, sizeof(char (*)[4]));

これはなんで動くか説明してくれ
あぁ、はいはい
すみませんでした
ポインタ返してるんね

配列じゃありませんでしたね
ポインタ = 配列
871デフォルトの名無しさん:04/07/22 01:43
週間東洋経済

経済の衝撃

孫が
いなくなる日

http://www.toyokeizai.co.jp/mag/toyo/2004/w0717.html

ソンソンソ〜ン♪ ソンソンソンソン