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

このエントリーをはてなブックマークに追加
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-3あたり

C言語なら俺に聞け! Part 97
http://pc5.2ch.net/test/read.cgi/tech/1102749965/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
2デフォルトの名無しさん:04/12/27 11:24:52
【コンパイラ】
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/12/27 11:25:18
【姉妹スレ】

C言語なら俺俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
4デフォルトの名無しさん:04/12/27 11:28:36
(・∀・)ダディ
5デフォルトの名無しさん:04/12/27 11:35:13
サイアーク
6デフォルトの名無しさん:04/12/27 13:21:15

このスレは
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
のスレを先に使い切ってから使って下さい
7デフォルトの名無しさん:04/12/27 13:54:23
>>6
誰お前?えらそーに。
8デフォルトの名無しさん:04/12/27 14:16:00
あっちは別系列だから
9デフォルトの名無しさん:04/12/27 14:19:56
そそ、あっちはネタスレ。
10デフォルトの名無しさん:04/12/27 14:24:53
本系の新スレ移行がうまく行かない時の避難所としても役立ってるのでなかなか良い
11デフォルトの名無しさん:04/12/27 14:33:11
こっちも最近、煽りたいだけの莫迦が増殖してて
大差ない肝するけどな。
12デフォルトの名無しさん:04/12/27 16:11:27
年末マターリ
13デフォルトの名無しさん:04/12/27 16:40:55
>>11
あー、ちょっと複雑なロジックの質問が出ると
途端に沈黙する奴が少なくともひとり居るな。
14デフォルトの名無しさん:04/12/27 16:57:37
(・∀・)ノ ハーイ
15デフォルトの名無しさん:04/12/27 17:40:10
1から青ばかりだから緑を。
16デフォルトの名無しさん:04/12/27 19:50:13
ハァ?
17デフォルトの名無しさん:04/12/27 19:59:57
>>13
で、ほとぼりが冷めた頃に戻ってきて煽るのな
18デフォルトの名無しさん:04/12/27 20:26:46
週末になると数々の名言を残していく奴なら一人知ってる
19デフォルトの名無しさん:04/12/27 20:27:52
迷言の間違いだろ
20デフォルトの名無しさん:04/12/27 20:29:29
>>19
またそういう当てもない憎まれ口をたたく。
21デフォルトの名無しさん:04/12/27 21:44:36
sscanfの書式指定子に%[^,]というものが来ているソースがあったんですが、
どういう意味なのでしょうか?

具体的には
sscanf(buf, "%d, %[^,], %d", arg1, arg2, arg3);
のような感じになっています。arg1、arg2、arg3の型はそれぞれint, char [], int
です。
またbufの中は0,AAAA BBBB,1のようなものが入っています。
22デフォルトの名無しさん:04/12/27 23:43:15
[^,]…','以外の文字が連続している部分
2321:04/12/27 23:54:59
>>22
ありがとうございます。解決しました。
24デフォルトの名無しさん:04/12/28 05:32:23
連続ではないですね。
25デフォルトの名無しさん:04/12/28 08:38:37
[^,^;]
26デフォルトの名無しさん:04/12/28 14:18:01
printf()の代わりにfprintf(stdout)を使う意味ってありますか?
27デフォルトの名無しさん:04/12/28 14:22:46
stderrや他のファイルに出力したくなった場合の変更がほんの少し楽です
2826:04/12/28 15:23:36
>>27
なるほど・・。
これで思い残すことなくfprintf連発できます。
printよりfprintの方が形が好きなんです。怒られそうですが・・
2926:04/12/28 15:26:35
↑printfのミスです。   ・・・念のため
30デフォルトの名無しさん:04/12/28 15:49:29
質問なんですが、
円の半径(r)と中心点(cx,cy)がわかっていて、
この円上に座標点(x,y)を取り、基準点を(cx,cy+r)としたとき、
この座標点の角度を求めるプログラムを作るには、
どのような式を使えばよいでしょうか?
ちなみにasinとacosを使用したいです。
31デフォルトの名無しさん:04/12/28 15:56:01
atan2(x-cx, y-(cy+r));
デイイジャン('A`)
32デフォルトの名無しさん:04/12/28 15:59:17
>>30
x座標の向き、y座標の向きはどっち向き?
角度ってどの線とどの線の角度?
3330:04/12/28 15:59:53
>>31
atan2の2って何ですか?
あと、xとyの間の”,”とは?
3430:04/12/28 16:04:28
>>32 x,y座標ともに任意で決めるので、向きは−と+両方です。
線は(cx,cy)から(cx,cy+r)の直線と(cx,cy)から(x,y)の直線の角度です。
35デフォルトの名無しさん:04/12/28 16:04:43
ググれ。

と書こうとしてatan2をググったら、、、「googleの電卓機能について」だって。
初めて知ったよ。
3630:04/12/28 16:19:50
>>35 僕もはじめて知りました。
37デフォルトの名無しさん:04/12/28 16:19:59
>>30
求める角度をθとする。
(x,y),(cx,cy+r)を結ぶ線分の長さをaと置き、
(x,y),(cx,cy)を結ぶ線分の長さをbと置く。
余弦定理より、
r^2=a^2+b^2-4*a*c*cosθ
<=>
θ=acos((a^2+b^2-r^2)/(4*a*b))
38デフォルトの名無しさん:04/12/28 16:25:28
と思ってまた問題を見ると、求めるべき角度が違った。
θ=acos((b^2+r^2-a^2)/(4*b*r))
3930:04/12/28 16:34:48
>>37
(cx,cy)から(cx,cy+r)じゃなく(x,y),(cx,cy+r)で結ぶんですか?
あと、acosだと270°と90°の区別はどうやってつけたら良いですか?
質問ばっかですいません。
40デフォルトの名無しさん:04/12/28 16:37:14
>>39
普通に考えて
90°= π/2
270° = -π/2
が得られるから区別つくんじゃない?
4130:04/12/28 16:40:45
>>38さんの式で区別ってつきますか?
42デフォルトの名無しさん:04/12/28 18:03:04
>>30
asin,acos,atanの値域も考えてくれ。
もうatan2でいいじゃん。
43デフォルトの名無しさん:04/12/28 18:17:19
atan2の2は引数を二つ取るの意味だろ
二つ取る意義は引数一個じゃ90度のとき問題がおきるから
4430:04/12/28 19:51:45
確かに…atan2でやらせていただきます。
みなさんアドバイスありがとうございました。
45デフォルトの名無しさん:04/12/28 23:28:05
>>28
27の理由ではfprintfを常用する理由としては弱すぎるぞ。printfに慣れろ。
46デフォルトの名無しさん:04/12/29 01:12:13
> 「googleの電卓機能について」だって。初めて知ったよ。

こういうぼけは、近年まで、プッシュホン回線に電卓機能がついていたことを知らない。
47デフォルトの名無しさん:04/12/29 01:12:55
ふつうvprintf
48デフォルトの名無しさん:04/12/29 01:14:29
>>46
きっとGoogleから株価検索が出来たり
乗り換え案内が出せたり
辞書になったりすることも知らないんだろうな
49デフォルトの名無しさん:04/12/29 01:22:03
>プッシュホン回線に電卓機能がついていたことを知らない
まじで?
たかが回線に電卓機能が付いてるの?
50デフォルトの名無しさん:04/12/29 01:37:15
しらないのかー
51デフォルトの名無しさん:04/12/29 02:59:28
入力の中にある連続したスペースを1つにするプログラムなんですが
自分で見てかなり汚いと思います。もっと綺麗に書くにはどうしたらよいでしょうか。
int main (void)
{
int c;

while ((c = getchar()) != EOF) {
if (c == ' ') {
putchar(c);
while ((c = getchar()) != EOF) {
if (c != ' ') {
putchar(c);
break;
}
}
}

else putchar(c);
}

return 0;
}
よろしくおながいします。
52デフォルトの名無しさん:04/12/29 03:00:19
>>51
きにするな
53デフォルトの名無しさん:04/12/29 03:57:24
>>51
仕様として毎回getcharしないと駄目?
バッファに入れておくと簡潔にまとまりそうだけど

>>52
動きゃ良い派ですか?
54デフォルトの名無しさん:04/12/29 04:01:42
>>53
馬鹿ですね
55デフォルトの名無しさん:04/12/29 04:24:30
!=EOFが2つ出るのが気持ち悪いな
2つ目の条件は c!=' ' にした方が文脈的にもいいと思う
どうせifでbreakさせるわけだし

あとはオートマトン的に状態フラグを使うくらいしか思いつかないや
56デフォルトの名無しさん:04/12/29 04:42:48
fgetsで作ってみた。使用変数が増えるのが欠点か・・・

char buf[1024];
const char *p;
int space = 0;

while (fgets(buf, sizeof(buf), stdin)) {
p = buf;
do {
if (*p == ' ') {
if (flag) continue;
else space = 1;
}
else space = 0;
putchar(*p);
} while(*++p);
}
57デフォルトの名無しさん:04/12/29 04:45:45
s/flag/space/
リネームミスorz
58デフォルトの名無しさん:04/12/29 04:48:07
>>56
あんまかわんねー
59デフォルトの名無しさん:04/12/29 04:50:28
トークン連結演算子というのがありますが実際どういった場面で効果を発揮でますか?
理解が少ないせいだと思いますがいくら考えてもどういった場面で
有効に活用できるのかが想像できません。
どなたか教えて頂けたら幸いです。
60デフォルトの名無しさん:04/12/29 05:43:26
hoge_funcを呼ぶ側のコンパイル時に

error C2059: 構文エラー : 'サフィックスが無効です。'
error C2143: 構文エラー : ')' が 'constant' の前に必要です。
error C2198: 'hoge_func' : 実引数が少なすぎます。

のエラーが出るのですが、原因と対処方法を教えていただけないでしょうか。
「実引数が少なすぎます」ですが、呼び出し側、呼び出される側、共に引数の数は合っています。
61デフォルトの名無しさん:04/12/29 05:48:05
60ですが、提示した情報が少なすぎですので、判断・検討に必要な情報があれば、
出来る範囲で提示しますのでよろしくお願いします。
62デフォルトの名無しさん:04/12/29 07:57:42
・hoge_funcのプロトタイプ宣言または関数定義の最初の部分。
・hoge_funcを呼出している部分とその前2行位のソース。
63デフォルトの名無しさん:04/12/29 08:35:51
>>59
Windowsのメッセージクラッカーがうまく使っている。
#define HANDLE_MSG(hwnd, message, fn) case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
HANDLE(hwnd, WM_CREATE, OnCreate);とするとHANDLE_WM_CREATEマクロの呼び出しになり、
HANDLE(hwnd, WM_DESTROY, OnDestroy);と書けばHANDLE_WM_DESTROYマクロの呼び出しになる。
そしてHANDLE_WM_〜が実際にOn〜関数を呼び出すマクロになっている。
64デフォルトの名無しさん:04/12/29 09:37:58
>>51
int main(void)
{
int c, lastc = '\0';

while ((c = getchar()) != EOF) {
if (c != ' ' || lastc != ' ')
putchar(c);
lastc = c;
}

return 0;
}
65デフォルトの名無しさん:04/12/29 09:58:30
>>62
60のことでしょうか。でしたらありがとうございます。
"hoge_fun.c"を呼んでいる側で利用しているマクロに問題がありました。
解決のキッカケ、ありがとうございました。
66デフォルトの名無しさん:04/12/29 11:01:33
>>64
感動した
67デフォルトの名無しさん:04/12/29 14:46:17
>64
>連続したスペースを1つにする

if (lastc != ' ') putchar(c);
lastc = c;

でね?
68デフォルトの名無しさん:04/12/29 14:51:55
cの値は無視か
69デフォルトの名無しさん:04/12/29 14:56:37
>>66 そんなのに感動するやつはまぬけ
>>64 末尾に1個空白あったら出ないだろ! ぼけ
70デフォルトの名無しさん:04/12/29 15:03:40
日下部先生にならったことがあるまっとうなやつなら
ふつうこう書く。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int c, nextc;

  while ((c = getchar()) != EOF) {
    if (c != ' ')
      putchar(c);
    else {
      if ((nextc = getchar()) != ' ')
        putchar(c);
      ungetc(nextc, stdin);
    }
  }
  return EXIT_SUCCESS;
}
71デフォルトの名無しさん:04/12/29 15:04:55
> トークン連結演算子というのがありますが実際どういった場面で効果を発揮でますか

まくろ
72デフォルトの名無しさん:04/12/29 15:06:27
>>70
彼の本にまさにそんな例が載ってるもんな
73デフォルトの名無しさん:04/12/29 15:14:05
授業でもやりました
74デフォルトの名無しさん:04/12/29 15:16:15
> あとはオートマトン的に状態フラグを使うくらいしか思いつかないや

こうやって知ったかぶりしてるやつは実は書けない
75デフォルトの名無しさん:04/12/29 15:23:49
>>70
いや、Kusakabe氏本人だったら、
こう答えるはず。

(1) バグが少ないほどいいプログラム
(2) 短くてシンプル(複雑じゃない)プログラムのほうがバグが少ない
(3) プログラムを書かずにすめば、0行なのでバグはでないのでもっとよい
といって、
tr -s ' '
使えというはず ;-)
76デフォルトの名無しさん:04/12/29 15:32:24
↑自称「本人の知り合い」かよ!
77デフォルトの名無しさん:04/12/29 15:33:01
いや、むしろ本人かも。
78デフォルトの名無しさん:04/12/29 15:35:07
こうすれば使用する変数減らせるな。

{
  int c;

  while ((c = getchar()) != EOF) {
    if (c != ' ')
      putchar(c);
    else {
      if ((c = getchar()) != ' ')
        putchar(' ');
      ungetc(c, stdin);
    }
  }
  return EXIT_SUCCESS;
}
79デフォルトの名無しさん:04/12/29 15:38:40
>>73
日下部に習ったことあるってか?
本当か?
どこの大学の学生か言ってみろ! どうせウソだろ?
80デフォルトの名無しさん:04/12/29 15:39:30
>>78
いや、そこは無理に可読性おとしてまで変数減らす意味は少ない。
81デフォルトの名無しさん:04/12/29 15:51:18
これでどうだ

{
  int c;

  while ((c = getchar()) != EOF)
    (c != ' ') ? putchar(c) : ((((c = getchar()) != ' ') ? putchar(' ') : c), ungetc(c, stdin));
  return EXIT_SUCCESS;
}
int c = 0;
while((c = getchar()) != EOF)
{
 if(c == ' '){
  putchar(c);
  while((c = getchar()) != EOF)
   if(c != ' ')
    goto biw;
  break;
 }
biw:
 putchar(c);
}
83デフォルトの名無しさん:04/12/29 16:49:33
char *filenames[50];
DIR *dir;
struct dirent *dp;

dir=opendir(".");
i=0;
while( (dp = readdir(dir)) != NULL )
{
filenames[i]=dp->d_name;
printf("%s\n",filenames[i]);
i=i+1;
}
closedir(dir);

printf("%s\n",filenames[0]);
printf("%s\n",filenames[1]);
printf("%S\n",filenames[2]);

ディレクトリ内にあるファイル名を文字列ポインタ*filenamesに格納
していくプログラムを作りたいんですが、なぜかどこの配列にも
最後に読み取った同じファイル名が入っちゃうようなんですが、
なぜ?????
84デフォルトの名無しさん:04/12/29 16:53:49
(c != ' ')  が顔に見えてしかたがない
85デフォルトの名無しさん:04/12/29 16:59:35
同値の隣り合う2bitを1bitにするコードは?
86デフォルトの名無しさん:04/12/29 17:02:35
> なぜ?????

変数iを宣言していないから。
87デフォルトの名無しさん:04/12/29 17:05:23
> printf("%S\n",filenames[2]);

Sが大文字だから
88デフォルトの名無しさん:04/12/29 17:16:48

おい、日下部の弟子! へんなところつっこんでる暇があったら
模範解答を書いてみろよ
89デフォルトの名無しさん:04/12/29 17:19:11
#include <stdio.h>
#include <stdlib.h>
#include <sys/dir.h>

#define MAX 50

int main(void)
{
  char *name[MAX];
  DIR *dir;
  struct dirent *dp;
  int n;
  int i;

  if ((dir = opendir(".")) == NULL)
    return EXIT_FAILURE;
  for (n = 0; (dp = readdir(dir)) != NULL; n++) {
    if (n >= MAX)
      break;
    name[n] = dp->d_name;
  }
  closedir(dir);

  for (i = 0; i < n; i++)
    printf("%d: %s\n", i, name[i]);

  return EXIT_SUCCESS;
}
90デフォルトの名無しさん:04/12/29 17:22:37
ぜんぶ最後のと同じになっちゃうってことは、
エントリーごとの値が保存されていないへんな環境だってことだろうから,

char *name[MAX]; → char name[MAX][FILENAME_LEN + 1];
にして、
name[n] = dp->d_name; → strcpy(name[n], dp->d_name);
にすればいいのでは?
91デフォルトの名無しさん:04/12/29 17:27:08
strdupって標準関数じゃなかったっけ? 違うのだったら作ってやれ。

char *strdup(const char *s)
{
 char *p = malloc(strlen(s) + 1);
 if (p)
  strcpy(p, s);
 return p;
}
92デフォルトの名無しさん:04/12/29 17:29:25
> 違うのだったら作ってやれ。

つくるんだったらそんなダサイのにするなよ ぼけ


(Linuxのgccにはあるが > strdup、そのむかしのLatticeCにあったのでmscにもそのまま入った。K&Rに載ってるが標準にはない有名な関数)
93デフォルトの名無しさん:04/12/29 17:32:03
94デフォルトの名無しさん:04/12/29 17:33:26
ret~ strcpy...
95デフォルトの名無しさん:04/12/29 17:44:12
ふつうに書いたらこうだな。

{
  char *r;

  return (r = malloc(strlen(p) + 1)) ? strcpy(r, p) : r;
}
96デフォルトの名無しさん:04/12/29 17:51:26
94は「なんとなくそんな書き方があるはず! とは思ったが、10分考えてもわらかなった」ぼけ
97デフォルトの名無しさん:04/12/29 17:53:13
甘い。安全なstrlenなら
strcpy(malloc(strlen(p)+1),p)
98デフォルトの名無しさん:04/12/29 17:54:23
strcpyといいたかったのだろうか...
99デフォルトの名無しさん:04/12/29 17:55:01
96
ケータイ打ちはつらいんだ
100デフォルトの名無しさん:04/12/29 17:57:01
inline char *strdup(const char *p)
{
 return strcpy(malloc(strlen(p) + 1), p);
}
101デフォルトの名無しさん:04/12/29 17:58:01
他の関数呼んでてもinline有効になる処理系あるの?
102デフォルトの名無しさん:04/12/29 18:00:07
ある。
103デフォルトの名無しさん:04/12/29 18:00:48
ない。
104デフォルトの名無しさん:04/12/29 18:03:54
>>69
>>64 末尾に1個空白あったら出ないだろ! ぼけ
の意味が判らんのだが誰か説明してくれないか?
105デフォルトの名無しさん:04/12/29 18:11:59
> の意味が判らんのだが

頭わるすぎー
106デフォルトの名無しさん:04/12/29 18:13:55
>104

クスリでもやってんだろ
107デフォルトの名無しさん:04/12/29 18:14:16
つくればある
108デフォルトの名無しさん:04/12/29 18:17:58
void氏がいつもいってる。
Unixの基本精神は、
(1) 作ればあるもんっ
(2) ひとりでできるもんっ
の2つだと
109デフォルトの名無しさん:04/12/29 18:18:54
>>108
彼がfjに書いてるのには「っ」は無かったような…(あったかな?)
110デフォルトの名無しさん:04/12/29 18:38:14
108
その通り。一億行のソースコードも一億分の一秒ごとに一行書けば一秒で作れる。
111104:04/12/29 18:39:33
つまりvoidの弟子がアホって事か。真面目に読もうとした漏れが悪かった。

お詫びにこれ置いとくから使ってくれ。
「末尾に1個空白あったら出ないだろ! ぼけ」
「末尾に1個空白あったら出ないだろ! ぼけ」
「末尾に1個空白あったら出ないだろ! ぼけ」
112デフォルトの名無しさん:04/12/29 18:43:07
1億行のソースコードも1万人動員すれば
1人当たり1万行。余裕。
113デフォルトの名無しさん:04/12/29 18:53:11
UNIXってI/F周りがシンプルかつかなりこなれてるから、
ロジックの実装に専念できる。

だから(1)に関しては同意。
114デフォルトの名無しさん:04/12/29 18:57:42
>104

むしろ漏れは >>68 の方が気になってしようが無いんだが
115デフォルトの名無しさん:04/12/29 20:35:59
>>114
>>67 が c != ' ' の判定を端折ってるのがダメって事でしょ。
116114:04/12/29 20:38:21
>115
なぜその判定が必要?
117115:04/12/29 20:43:44
>>116
空白の次の文字が無条件に出力されなくなる。
118114:04/12/29 21:03:02
おぉdクス
119デフォルトの名無しさん:04/12/29 21:29:19
>>111
それ書いたのはvoid一派のやつではないと思うが。
120デフォルトの名無しさん:04/12/29 21:29:53
strdupのほかに「こんな関数も標準にあったらいいのに」ってのはほかにない?
121デフォルトの名無しさん:04/12/29 21:32:32
setenv/getenv
diropen
popen/connect./select/listen
122デフォルトの名無しさん:04/12/29 22:02:14
strdupについては、メモリの解放方法が定められない限り標準に
すべきではないと思うわけだが。
123デフォルトの名無しさん:04/12/29 22:02:39
mallocだっておなじじゃん
124デフォルトの名無しさん:04/12/29 22:11:24
お前さんは私に「free」と言わせたいのか?そうなのか?
125デフォルトの名無しさん:04/12/29 22:14:37
ああ、ショットガンをかまえて暴漢に向かって言うやつね
126デフォルトの名無しさん:04/12/29 22:15:51
エイメーンそれは「プリーズ」だゼ イェア
127デフォルトの名無しさん:04/12/29 22:16:51
ブリーズだろ?
128デフォルトの名無しさん:04/12/29 22:26:53
>>121
それは、例えば無線端末や電子レンジで意味のある関数だろうか…?

>>123
だねぇ。malloc/free があるなら strdup もあっていい希ガス。
129デフォルトの名無しさん:04/12/29 22:29:03
ACT3ってことか
130デフォルトの名無しさん:04/12/29 23:03:35
strdupだけあってもな・・・
strdupandcpyとかそこらへんも整備しないと使い物にならん
131デフォルトの名無しさん:04/12/30 01:30:13
> strdupandcpyとかそこらへんも整備しないと使い物にならん

はあ? 意味不明
132デフォルトの名無しさん:04/12/30 01:31:20
ああ、ユニクロの主力製品ですね!
133デフォルトの名無しさん:04/12/30 02:28:35
Cより先にC++が死滅します
134デフォルトの名無しさん:04/12/30 02:38:11
理由を述べよ
135デフォルトの名無しさん:04/12/30 02:40:56
理由なんかないさ
136デフォルトの名無しさん:04/12/30 03:16:00
おばけなんかないさ
137デフォルトの名無しさん:04/12/30 03:19:04
すみません、教えてください。
Cのlong int型変数だと2147483647までしか格納できないようなのですが、
それ以上の、たとえば1兆とかの整数を格納して扱いたいときはどうすればいいのですか?
138デフォルトの名無しさん:04/12/30 03:21:11
>>137
仮想そろばんを作ればいいのだよ
139デフォルトの名無しさん:04/12/30 03:23:07
>>138
桁ごとに変数を分けるということですか?
140デフォルトの名無しさん:04/12/30 03:26:03
>>139
とりあえず多桁計算でぐぐってみてくれ
141デフォルトの名無しさん:04/12/30 03:28:37
たばいちょー で googleしろ
142デフォルトの名無しさん:04/12/30 03:29:10
> Cのlong int型変数だと2147483647までしか格納できないようなのですが、
> それ以上の、たとえば1兆とかの整数を格納して扱いたいときはどうすればいいのですか?

long long intにすればいいだけじゃん
143デフォルトの名無しさん:04/12/30 03:34:40
>>140-141
ありがとうございます。ググッてみます。

>>142
そんなことができるんですか?
144デフォルトの名無しさん:04/12/30 03:39:13
多倍長整数
145デフォルトの名無しさん:04/12/30 03:41:39
多倍長ていうのがキーワードなんですね。
それでちょっと調べてみます。
ひよっこの質問に親切に答えていただいてありがとうございました。
146デフォルトの名無しさん:04/12/30 03:43:16
おやすみなさい。
147デフォルトの名無しさん:04/12/30 04:33:21
> >>142
> そんなことができるんですか?

long long int も知らずにC使ってるのかー
148デフォルトの名無しさん:04/12/30 04:58:47
>>147
何しろ非標準だからな。んなもん知らんでも使える。
149デフォルトの名無しさん:04/12/30 05:03:03
>>147
そういうお前も、long long long int は知らないんだろ?
150デフォルトの名無しさん:04/12/30 05:06:30
> 何しろ非標準だからな。んなもん知らんでも使える。

ぼけ、どこが非標準だよ。
もろに標準規格そのものだろ! ぼけ

long long intを知らないばかりか「標準じゃない」とまでおもってるのは
かなりまぬけ。
151デフォルトの名無しさん:04/12/30 05:26:22
longlong int とか言ってる人がいるけど、C99がまともにコンパイルできる処理系は
一体どれくらいあると言うのだろう・・・・
(´-`).。oO
152デフォルトの名無しさん:04/12/30 05:39:47
> longlong int とか

そんなものはありません。

> まともにコンパイルできる処理系は

なんてまぬけなことをいえばいいわけできるとおもってるようだが、
世間のたいがいのコンパイラーではつかえる > long long int
使えないまぬけなコンパイラーのほうがむしろ稀
153デフォルトの名無しさん:04/12/30 05:40:19
使えないコンパイラーの名前をあげてみろよ?

それとも自分が「VC厨」だとバレるから言えない?
154デフォルトの名無しさん:04/12/30 05:45:21
とりあえず「DOSで起動するコンパイラ」はおすすめできない
155デフォルトの名無しさん:04/12/30 06:57:05
>>152
バカですか君は。
long long intは確かに通るコンパイラは多いけど、コンパウンドリテラルとか、restrictポインタとか
まともに使えるコンパイラがあるんですか?と聞いているのに。木を見て森を見ずとは、まさに
君のような人間の事を言うんですね。
156デフォルトの名無しさん:04/12/30 07:14:32
*p++はどうした?
157デフォルトの名無しさん:04/12/30 08:42:39
先に増えるだろ
158デフォルトの名無しさん:04/12/30 08:49:55
多倍長整数ならrubyのソースにもある
159デフォルトの名無しさん:04/12/30 12:01:36
rubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyruby
160デフォルトの名無しさん:04/12/30 12:10:19

まさかこのスレには無限ループを普通に書く奴はいないだろうな
161デフォルトの名無しさん:04/12/30 12:35:09
while("ruby!"){
  // ループ処理
}
162デフォルトの名無しさん:04/12/30 12:48:19
while (1) {
  "10種類マダ?”
}
163デフォルトの名無しさん:04/12/30 13:29:22
また10個か
164デフォルトの名無しさん:04/12/30 13:30:35
なにしろ、まだ一個も出てないもんで
165デフォルトの名無しさん:04/12/30 14:04:02
long long intが使えないコンパイラ
Borland C++ Compiler
Visual C++

面倒くさいのであとはよろしく.
166デフォルトの名無しさん:04/12/30 14:39:32
> long long intは確かに通るコンパイラは多いけど

いえそれが使えないコンパイラーが何かと聞いているのですが?
167デフォルトの名無しさん:04/12/30 14:40:08
> 先に増えるだろ

なわけねー
168デフォルトの名無しさん:04/12/30 14:41:02
> コンパウンドリテラルとか、restrictポインタとかまともに使えるコンパイラが

どちらもgccならふつーに使える。
169デフォルトの名無しさん:04/12/30 14:41:46
> long long intが使えないコンパイラ
> Borland C++ Compiler
> Visual C++

やっぱりVC厨だったかー
170デフォルトの名無しさん:04/12/30 14:44:26
>>169
使えないコンパイラを挙げるのに、そのコンパイラを使っている必要がありますか?:-)
171デフォルトの名無しさん:04/12/30 14:51:33
そうではなく、VC厨だから、いちいち標準機能なのにVCで使えないものの話題が出るたびに
ケチつけるわけでしょ? ;-)
172デフォルトの名無しさん:04/12/30 14:53:54
すでに死んでるコンパイラーだからなあ > VC
173デフォルトの名無しさん:04/12/30 14:55:02
私はVCなんか使ってないです ;-(
174デフォルトの名無しさん:04/12/30 14:57:02
でも、VC++.NETの新しいのがこの正月に出るだろ?
あれでは、ちょっぴりだけ標準機能に対応したといううわさだぞ
175デフォルトの名無しさん:04/12/30 14:59:36
手遅れです。蘇生はもはや不可能かと ;-)
176デフォルトの名無しさん:04/12/30 15:08:18
すでに死んでるコンパイラーはもうどうでもいい。
177デフォルトの名無しさん:04/12/30 15:09:58
LonghornではC死滅しちゃうしな。
かろうじて低レベルで最下級で下品なコーダが下品なコードを記述するのに使われるだろうけど。
178デフォルトの名無しさん:04/12/30 15:30:00
で、日下部本って、ぶっちゃけどうなのよ?
読みやすい? ためになる?
179デフォルトの名無しさん:04/12/30 15:34:22
>>178
void of all usefulness
180デフォルトの名無しさん:04/12/30 15:35:24
なるほど。いい本なのか
181デフォルトの名無しさん:04/12/30 15:50:28
標準C++ってナに?ストラウストラップ?未だに
開発ツールにこだわっているやつがいるんだ。
そんなSEとかプログラマーはイラネー
182デフォルトの名無しさん:04/12/30 15:51:57
標準とツールがどうかんけいするんだ ぼけ
183デフォルトの名無しさん:04/12/30 16:11:59
>>181
>そんなSEとかプログラマーはイラネー
お前社長か?どうせ糞プログラマーに過ぎねー癖に偉そうな口叩いてんなよ(プ
184デフォルトの名無しさん:04/12/30 16:13:07
目くそ鼻くそで言い合うのはやめなさい。見苦しい ;-(
185デフォルトの名無しさん:04/12/30 16:50:46
今更だが出来るだけ見たまんまな感じにしてみた
これ見て分からないやつはいないだろう
int main(void)
{
  int c;

  while ((c = getchar()) != EOF) {
    putchar(c);
    if (c == ' ') {
      while ((c = getchar()) == ' ')
        ;
      ungetc(c, stdin);
    }
  }
  return 0;
}
186デフォルトの名無しさん:04/12/30 16:55:45
ungetを使うのはアルゴリズム的に美しくない
187デフォルトの名無しさん:04/12/30 17:21:45
同感
188デフォルトの名無しさん:04/12/30 17:56:03
関数を一つ作るだけで、ずっと美しくなると思う。

#include <stdio.h>

void SkipSpace(void)
{
  int c;

  while ((c = getchar()) == ' ')
    ;
  ungetc(c, stdin);
}

int main(void)
{
  int c;

  while ((c = getchar()) != EOF) {
    putchar(c);
    if (c == ' ')
      SkipSpace();
    }
  return 0;
}
189デフォルトの名無しさん:04/12/30 18:12:12
だれか512×256の画像データをフーリエ変換するプログラム作ってください。。。
190デフォルトの名無しさん:04/12/30 18:16:37
>>189
作るには情報不足です
191デフォルトの名無しさん:04/12/30 19:08:56
>>190
8次でいいです。
そこまで言ったんだからさっさと作ってください。
192デフォルトの名無しさん:04/12/30 20:11:06
> ungetを使うのはアルゴリズム的に美しくない

いや、むしろ美しい。
フラグとか使うやつはぼけ
193デフォルトの名無しさん:04/12/30 20:18:50
>>189
画像データのフォーマットが不明だと作れんということもわからんのかと。
しかもスレ違い。その頼み方じゃどこに行っても駄目だろうが(藁
194デフォルトの名無しさん:04/12/30 20:22:29
>>193
あんた資格何もってる?
195デフォルトの名無しさん:04/12/30 20:37:49
調理師なら
196デフォルトの名無しさん:04/12/30 20:39:12
いいね。俺もそう言う生きていくのに必要なのほしいなぁ。
197デフォルトの名無しさん:04/12/30 20:49:41
2種免許…_| ̄| ...○
198デフォルトの名無しさん:04/12/30 20:59:59
>>197
いいね、漏れもそういう生きていくのに無駄なのほしいなぁ。
199デフォルトの名無しさん:04/12/30 21:12:43
ソムリエは?
200じっち:04/12/30 21:18:07
201デフォルトの名無しさん:04/12/30 21:49:08
>>199
それは日下部
202デフォルトの名無しさん:04/12/30 22:32:39
203デフォルトの名無しさん:04/12/30 23:19:48
>>165
VCでは一応用意されているが。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcedit/html/vcoriccompilerlinkerclanguage.asp
> long long 型は、__int64 の typedef として使用できます。
> 詳細については、「Fundamental Types」を参照してください。
> CRT では、long long はまだサポートされていません。
204デフォルトの名無しさん:04/12/30 23:52:32
int main(void)
{
  int i1 = 1;
  int i2 = 0;
  int i3 = 0;
  int i4 = 0;
  int i5 = 1;

  if (i1 || i2 || i3 || i4 || i5) printf("OK\n");

  return 0;
}

こういう時って i1 が真だったら残りの i2 i3 i4 i5 は
評価されないのですか?
205デフォルトの名無しさん:04/12/30 23:53:46
ない
206デフォルトの名無しさん:04/12/30 23:53:55
されない
ショートサーキットでググれ
207204:04/12/31 00:17:48
レスありがとうございます。
ショートサーキット、ググりました。少し勉強になりました。
208デフォルトの名無しさん:04/12/31 01:33:17
っていうか常識
209デフォルトの名無しさん:04/12/31 01:33:37
おまいら今年も今日で終わりですよ。
210デフォルトの名無しさん:04/12/31 01:52:18
あと1か月以上あるじゃん
211デフォルトの名無しさん:04/12/31 02:25:16
現実逃避してる
212デフォルトの名無しさん:04/12/31 03:04:47
イスラム教徒なんだろ、たぶん。
213デフォルトの名無しさん:04/12/31 10:52:05
時代遅れ
214デフォルトの名無しさん:04/12/31 11:03:13
チャンコロかもしれない
215デフォルトの名無しさん:04/12/31 13:52:12
日本人ならふつうの正月だろ。元日は新月にきまってるんだよ。
216デフォルトの名無しさん:04/12/31 13:59:36
C#の質問なんですがインストールガイドなどのサイトをみているとIISのインストールがWindowsXPHomeEditionではいれられません。
WindowsXPではVisualStdio.Net C#って入れられないんですか?
217デフォルトの名無しさん:04/12/31 14:01:01
>>216
タイトルを良く見ろ
お前なんて誰も望んでないんだ
必要ないんだよ
つまり、スレ違い
218デフォルトの名無しさん:04/12/31 14:05:47
216
proじゃないとね
219デフォルトの名無しさん:04/12/31 14:07:08
> WindowsXPHomeEditionでは
> WindowsXPでは

別物ですね。質問の途中で話をすり替えてはいけません。
220デフォルトの名無しさん:04/12/31 14:08:02
>>204
そもそもその例では評価しようと評価しまいと結果は同じじゃん。
もっと意味のある例を出せ!
221デフォルトの名無しさん:04/12/31 15:35:32
C言語のAPIってどこで調べられるんですか。
というかリファレンスは存在するんですか。
222デフォルトの名無しさん:04/12/31 15:36:56
223Rubyist!:04/12/31 15:37:59
man 3
224デフォルトの名無しさん:04/12/31 15:45:01
>>221
msdn
225デフォルトの名無しさん:04/12/31 16:02:36
> C言語のAPIってどこで調べられるんですか。

そんなものはない
226デフォルトの名無しさん:04/12/31 16:03:06
よって、222と223ははずれ
227デフォルトの名無しさん:04/12/31 16:05:52
>>222-224
こいつぼけ
228デフォルトの名無しさん:04/12/31 16:06:51
頭が悪いのか、常識がないのか。
229デフォルトの名無しさん:04/12/31 16:08:55
みんなぼけ
230デフォルトの名無しさん:04/12/31 16:14:42
数学、複素数、ワイド文字入出力、ワイド文字操作を除いた
残りの118個の関数ぐらいは、暗記してるようじゃないとだめ!
マニュアルなんか見ちゃだめ!
231デフォルトの名無しさん:04/12/31 16:17:40
abort abs asctime assert atexit atof atoi atol
bsearch
calloc clearerr clock ctime
difftime div
exit
fclose feof ferror fflush fgetc fgetpos fgets fopen fprintf fputc fputs fread fr
ee freopen fscanf fseek fsetpos ftell fwrite
getc getchar getenv gets gmtime
isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper
isxdigit labs
ldiv localeconv localtime longjmp
malloc memchr memcmp memcpy memmove memset mktime
perror printf putc putchar puts
qsort
raise rand realloc remove rename rewind
scanf setbuf setjmp setlocale setvbuf signal sprintf srand sscanf
strcat strchr strcmp strcoll strcpy strcspn strerror strftime strlen strncat str
ncmp strncpy strpbrk strrchr strspn strstr strtod strtok strtol strtoul strxfrm
system
time tmpfile tmpnam tolower toupper
ungetc
va_arg va_end va_start vfprintf vprintf vsprintf
232デフォルトの名無しさん:04/12/31 16:18:09
こいつぼけ
233デフォルトの名無しさん:04/12/31 16:18:32
たしかにどれも1度は使ったことある関数だなあ。
234age:04/12/31 16:25:28
CUIが多いがな・・・
235デフォルトの名無しさん:04/12/31 16:33:34
なにいってんのこの人?馬鹿?
236デフォルトの名無しさん:04/12/31 16:34:26
年末だというのに香ばしいやつがいるな…
237デフォルトの名無しさん:04/12/31 16:34:55
こいつぼけ
238デフォルトの名無しさん:04/12/31 16:38:13
虚構と現実が混じりあうスレ
239デフォルトの名無しさん:04/12/31 16:40:20
> CUIが多いがな・・・

Cの標準関数にGUIのものがあると思い込んでいるぼけ
こいつもVC厨!
240デフォルトの名無しさん:04/12/31 16:42:07
日下部先生の本のサンプルプログラムに出てくる標準ライブラリー関数の数を数えてみました。

59 printf
47 fprintf
43 exit
25 fopen
25 fclose
23 fgets
19 fputc
17 fputs
12 strlen
10 free
9 strcpy
8 strcmp
8 fgetc
6 malloc
6 tolower
4 striccmp
4 qsort
4 isdigit
3 strstr
3 putch
3 islower
2 getchar
2 atoi
1 putchar
1 cprintf
初心者向きでバランスいいですね。
241デフォルトの名無しさん:04/12/31 16:43:22
↑putchやcprintfはちがうだろ!
242デフォルトの名無しさん:04/12/31 16:44:08
古いCの256本でも同じような事やってたよな。
たしか一位はexitだったか……
243デフォルトの名無しさん:04/12/31 16:47:50
scanfやgetsがでてくる本はだめだね。
244デフォルトの名無しさん:04/12/31 16:50:56
striccmpなんてのもないぞ!

ってことは合計22個、getchar/fgetc、putchar/fputc を同じだということに
してしまえば、「たった20個」おぼえれば、そこそこコーディングできるって
ことだな。
245デフォルトの名無しさん:04/12/31 16:54:26
20個を並べ換えると、
fopen fclose fputc fgetc fgets fputs printf fprintf
strlen strcpy strcmp strstr
isdigit islower tolower atoi
malloc free
qsort exit
ってことか。
246デフォルトの名無しさん:04/12/31 17:23:17
やっぱCってもうダメだね
247デフォルトの名無しさん:04/12/31 17:25:02
今20世紀はRubyの時代になるだろうね。
248デフォルトの名無しさん:04/12/31 18:07:50
2chの法則:
根拠をのべずに「〜だ」「〜だろう」と書いてあるものは
すべて後ろに「だということにしたい」をつけて読むと正しい意味になる。
249デフォルトの名無しさん:04/12/31 18:11:32
tukkomutokorohasokokaiw
250デフォルトの名無しさん:04/12/31 18:16:42
今20世紀はRubyの時代になるだろうね。だということにしたい
251デフォルトの名無しさん:04/12/31 18:20:13
VCはすばらしい
252デフォルトの名無しさん:04/12/31 19:13:19
だということにしたい
253デフォルトの名無しさん:04/12/31 19:27:12
>>251
たしかにすばらしいが
使うやつにたいしたやつはいない。
254デフォルトの名無しさん:04/12/31 19:27:25
今20世紀ということにしたい
255デフォルトの名無しさん:04/12/31 19:31:57
いまは2004年だから20世紀だろ?
256デフォルトの名無しさん:04/12/31 19:33:40
誰もVC使う俺って凄い!、とかぶっこいてないだろ?
屈折してんなあ
257デフォルトの名無しさん:04/12/31 19:49:18
VC使う俺って凄い!
258デフォルトの名無しさん:04/12/31 19:59:01
こちらへどうぞ

中2でプログラミングできる俺って凄いの?
http://pc5.2ch.net/test/read.cgi/tech/1104066264/1
259デフォルトの名無しさん:04/12/31 22:08:14
260デフォルトの名無しさん:05/01/01 01:40:56
「標準入力から C 言語などのプログラムテキストファイルを読み込み、
使用している関数名を頻度順に並べなさい。
これは宣言文と実際の式のどちらも含みます。
なお、同じ頻度の関数は辞書順に並べなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに
入力した出力を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。
但し、関数名の長さは高々 255 文字と仮定して良い。」
という課題が出てるのですができないので教えてください。
よろしくい願いします。

261デフォルトの名無しさん:05/01/01 01:52:27
C言語「など」と書かれても、プログラミング言語によって関数の表現方法が
異なるから書きようがない。どの言語か明確に示せ。その前にスレ違い。
以後は次の宿題専門のスレで。ただしきちんと断ってからスレを移動しないと
マルチポストとして扱われて相手をしてもらえなくなるので注意せよ。

ぼるじょあがC/C++の宿題を片付けますYO! 37代目
http://pc5.2ch.net/test/read.cgi/tech/1103913840/
262デフォルトの名無しさん:05/01/01 01:59:23
>>261
正月から釣りに釣られちゃって…
おめでたい人ですね
263デフォルトの名無しさん:05/01/01 04:52:36
>>260
ま た お 前 か
先生が認めたからってよくやるわ。
264デフォルトの名無しさん:05/01/01 08:44:01
n個の素数を求める世界最速のCルーチンは?
265デフォルトの名無しさん:05/01/01 12:16:04
> scanfやgetsがでてくる本はだめだね。

たとえばどんな本ですか?
266デフォルトの名無しさん:05/01/01 12:24:33
> C言語「など」と書かれても、プログラミング言語によって関数の表現方法が

もっともなクレイムだが、問題なのは
こいつが、まるで「Cに限定すれば答えられる」とでも思ってることだ ;-)
けっこうむずいぞ。(lex使用禁止!)
267デフォルトの名無しさん:05/01/01 12:29:01
(\w+)\(
で検索すりゃいいんじゃないの。
可能な限り厳格にカウントしなければならないなんて書いてないし。
268デフォルトの名無しさん:05/01/01 12:31:56
sprintf(s,"cproto...(中略)
...
system(...以下略
269デフォルトの名無しさん:05/01/01 12:34:37
>>266
fun x -> x * x;;
270デフォルトの名無しさん:05/01/01 15:01:08
ソースファイルを誤って消してしまったのですが、
オブジェクトファイルをソースファイルにコンパイル
できるソフトってありますか?
271質問!!:05/01/01 15:10:10
唐突ですが

http://code.cside.com/3rdpage/jp/url/converter.html

ここでやってる

「テスト」 → 「%E3%83%86%E3%82%B9%E3%83%88」

のような文字コードを変換する関数を作ってください。
よろしくお願いします。
272デフォルトの名無しさん:05/01/01 15:13:46
>>270
リンク済みのものからやるよりは含んでる情報が多いかもしれないけど
望んでいるであろう完璧な復元は絶対に不可能だからあきらめろ
それよりも、ファイル自体を復元することを考えなされ
つ[ ttp://www.vector.co.jp/soft/win95/util/se192983.html ]
273デフォルトの名無しさん:05/01/01 15:14:41
printf("%%%02X",以下略
274デフォルトの名無しさん:05/01/01 15:27:56
>>270
それをdecompileと言います。まる。
275デフォルトの名無しさん:05/01/01 15:32:37
Cを勉強していて、Borland C++ Compiler5.5落としてきました。
無事コンパイルできる環境を整えられたんですが、
コンパイルするソースファイルをいちいちフルパスで指定するのが面倒くさいです。
たとえばC:\srcというフォルダを作って、そこにソースをおくことにしてプロンプトから
bcc32 test.c
と打ち込むだけで、C:\src\test.cファイルをコンパイルできるようにしたいのですが、どうしたらいいかわかりません。
出力先を指定する-n<path>オプションのように、ソースファイルを指定する方法はないのでしょうか?
もしこのスレがスレ違いだったらごめんなさい。
276デフォルトの名無しさん:05/01/01 15:40:19
>>275
カレントディレクトリを変えりゃいいだけの話じゃないのか・・・
277デフォルトの名無しさん:05/01/01 15:42:16
>>276
ありがとうございました。
278デフォルトの名無しさん:05/01/01 16:08:45
>>
今時始める奴はcmd知らんのよ
bccスレ時々見ておもう俺の感想
279275:05/01/01 16:27:26
ごめんなさい
おっしゃるとおりcmdになれてません…使う機会がなくて
280デフォルトの名無しさん:05/01/01 16:41:20
>278
もうDOSは必須じゃないでしょ。BCCDEVとサクラエディタを紹介しておきましょう。
281デフォルトの名無しさん:05/01/01 16:52:26
cmdがDOS???
282デフォルトの名無しさん:05/01/01 16:54:28
Windowsでは、CUIの時代は開発者の環境でも終焉を迎えているのか・・・
パイプとかバッチ処理とか応用効いて良いんだけど

BCCDEVはいいよね。環境汚さずbcc入れられるからGNUな環境と共存できて
283デフォルトの名無しさん:05/01/01 16:56:39
勝手に終わりにすんな
284デフォルトの名無しさん:05/01/01 17:29:36
Next-generation shells - is Linux falling behind?
http://blogs.zdnet.com/open-source/index.php?p=86
285216:05/01/01 17:36:20
>>217
ただ普通に間違いを指摘すればいいだけなのにこういう言い方を平気で出来る奴ばかりなんですか?
プログラム板の人間って
286デフォルトの名無しさん:05/01/01 17:50:35
>>285
何逆切れしてんのこいつ
287デフォルトの名無しさん:05/01/01 17:55:53
cmdの話出たけどなんかのインストールで(もちろんXP)
真っ黒な画面がちょっと出て来たときと
「何!?今の!?」って騒がれた。
288デフォルトの名無しさん:05/01/01 18:04:52
cmdの話出たけどなんかのインストールで(もちろんXP)
真っ赤な画面がちょっと出て来たときと
「何!?今の!?」って騒がれた。
289デフォルトの名無しさん:05/01/01 18:25:12
>>285
低級プログラマなどという職種は、中国人や印度人、に交換されるそうですから近いうちに消えて無くなるので怒るだけ無意味ダト思ワレ(W
290デフォルトの名無しさん:05/01/01 18:28:30
低級プログラマってアセンブリとかが得意なプログラマのこと???
291デフォルトの名無しさん:05/01/01 18:29:40
中国キモイ
292車 だん吉:05/01/01 18:38:12
>>290 人間性
293デフォルトの名無しさん:05/01/01 18:40:18
2ch初めてなんじゃない
294デフォルトの名無しさん:05/01/01 18:42:25
>>289
貴様、ハッカーを侮辱する気か!
295デフォルトの名無しさん:05/01/01 18:49:32
(void**)&vというのはどういう意味の記述なのでしょうか?
void**という部分がよくわからないのですが
296デフォルトの名無しさん:05/01/01 18:56:46
>>295
voidポインタへのポインタ
297デフォルトの名無しさん:05/01/01 19:54:24
>294
違法アクセスやめようよ
298デフォルトの名無しさん:05/01/01 20:53:51
すいません、http://gcc.gnu.org/←このサイトのとこでgccがDLできるんですか?
299デフォルトの名無しさん:05/01/01 20:59:22
300デフォルトの名無しさん:05/01/01 21:00:42
>>299
感謝しますありがとうございます
301デフォルトの名無しさん:05/01/01 21:10:12
そこソースだけだぞ
302デフォルトの名無しさん:05/01/01 21:20:13
ところで「C maga人」って何の雑誌ですか。
303デフォルトの名無しさん:05/01/01 21:23:42
http://www.cmagazine.jp/info.html

C MAGAZINEとは?

 C MAGAZINEは国内の技術者に向けて,さまざまな技術情報をお届けしている月刊誌です。
1989年より創刊以降,ソフトウェア開発の第一線に立つ方々にご執筆いただいた内容を一貫
して掲載し続けています。

 プログラミングの初心者はもちろんのこと,さまざまな技術者に向けて,実際のプログラム
開発で役立つ実用性のある内容をお伝えすることを使命としています。
304デフォルトの名無しさん:05/01/01 21:28:01
ソースだけでつか・・・
すいません、http://gcc.gnu.org/←このサイトのどこでgccがDLできるんですか?
305デフォルトの名無しさん:05/01/01 21:33:52
>>304
いいかげんすれ違いの話はやめたらどうだ
306デフォルトの名無しさん:05/01/01 21:33:55
どっかの外部サイトへのリンクがあろう
307デフォルトの名無しさん:05/01/01 21:35:36
>>305
すいません・・
308デフォルトの名無しさん:05/01/01 22:28:48
> それをdecompileと言います

いいません。
やーい > しったかぶり
309デフォルトの名無しさん:05/01/01 22:30:42
> 1989年より創刊以降,ソフトウェア開発の第一線に立つ方々にご執筆いただいた内容を一貫

たとえばだれだ?
310デフォルトの名無しさん:05/01/01 22:38:36
>>308
ばか?
311デフォルトの名無しさん:05/01/01 23:08:59
だれか>>297につっこんでやれよ・・・
312デフォルトの名無しさん:05/01/01 23:36:24
>>309
日下部とかー
313デフォルトの名無しさん:05/01/01 23:52:07
ほかには?
314デフォルトの名無しさん:05/01/02 01:54:27
#include <stdio.h>

int main(void)
{
int *a;
int *b;

*a = 0;

return (0);
}

これで実行するとエラーになるんですが、
intへのポインタを指す変数を2つ宣言してはいけないですか?
315デフォルトの名無しさん:05/01/02 01:56:49
>>314
ポインタaが何を指してるか考えてみれ
316デフォルトの名無しさん:05/01/02 01:57:48
>>314
aが指す先がない。intへのポインタを指す変数を宣言などしていない。
317デフォルトの名無しさん:05/01/02 02:25:42
>>314
int型へのポインタですね。
「int型の何か」はmallocなどで生成します。
318デフォルトの名無しさん:05/01/02 02:49:24
>>317
決して間違ったことは言っていないが微妙な回答だな…。
319デフォルトの名無しさん:05/01/02 04:24:22
微妙ですね・・ごめんなさいorz

>>314さんのは
*a = 0;
でエラーがでています。
ポインタはメモリをポイントするのですが、
アクセス可能なメモリ以外の場合だと実行時にエラーとなります。

int *a; // int型へのポインタの宣言
int x; // int型の変数の宣言

a = &x; // xのメモリアドレス(ポインタ)をポインタ型のaに代入

*a = 0; // ポイント先(int x)に0を代入
320!omikuji !dama:05/01/02 08:34:23
tes
321デフォルトの名無しさん:05/01/02 09:56:48
C Magazineは三田典玄とかもかいてただろ? それで「ソフトウェア開発の第一線に立つ方々」だと言うなら、ほかのもあやしいもんだなあ。
322デフォルトの名無しさん:05/01/02 10:43:35
>>321
あなたって▓▓▓▓ですよね?
323デフォルトの名無しさん:05/01/02 12:04:33
R▓▓y!!!!!!!!!!!!!!!
324デフォルトの名無しさん:05/01/02 14:30:29
>>321
いや、三田はエッセイ書いただけだろ。技術的な記事は書いてない。
いくらC Magazine編集部が馬鹿でも、三田に技術的な記事を書かせるほど
馬鹿ではないだろう。
325デフォルトの名無しさん:05/01/02 14:57:04
>>308
「いわない」ではなく「正しくない」だろ?
正しくはdiscompileであることぐらいはだれでもしってる。
326デフォルトの名無しさん:05/01/02 14:59:56
まあ、いまどきコマンドプロンプトの画面を出したときに「dir」なんてうたなきゃ
いけない環境がタコなだけだよ。
うちは、ふつうに、viしてgccできるし、perlもrubyも最初から入ってるしapachもftpもふつうにうごいてる。
Linuxつかったときと同じなので楽。いまどきこれが常識!
327デフォルトの名無しさん:05/01/02 15:15:53
328デフォルトの名無しさん:05/01/02 15:20:30
↑3つめがぶらくら
329デフォルトの名無しさん:05/01/02 15:24:20
>>325
逆アセンブル=disassemble
逆コンパイル=decompile
ここの連中は英語もろくにできないのか?
330デフォルトの名無しさん:05/01/02 15:41:59
*a = 0; // 先斗(int x)に0を代入
331デフォルトの名無しさん:05/01/02 17:12:11
%cは文字、%dは数字,%xは小数点に関係しますよね。
いま%sというのをみたんですが、これはなにを表すものなんでしょうか?
どなたかご教授おねがいします。
332デフォルトの名無しさん:05/01/02 17:20:20
char string[]="\"文字列です\n\"";
333デフォルトの名無しさん:05/01/02 17:24:12
標準入出力関数(1) http://www9.plala.or.jp/sgwr-t/c/sec05.html
334デフォルトの名無しさん:05/01/02 17:25:25
%xは十六進数の出力だぞ〜
335デフォルトの名無しさん:05/01/02 17:26:47
> いま%sというのをみたんですが、これはなにを表すものなんでしょうか

99ページに書いてある
336デフォルトの名無しさん:05/01/02 17:39:00
>>332
何で改行してから " つけるの ?
337デフォルトの名無しさん:05/01/02 19:10:04
>>326 がノイローゼ気味な件について
338デフォルトの名無しさん:05/01/02 19:14:40
つけたいから > 改行してから
339デフォルトの名無しさん:05/01/02 21:58:36

char ope = '+'
int num1 = 5;
int num2 = 7;
int ans;

ans = (num1 ope num2);

これで実行するとエラーが生じてしまいます。
どうしてでしょうか?アドバイスがありましたら
よろしくお願い致します。


340デフォルトの名無しさん:05/01/02 22:00:40

mainが無いな。
341デフォルトの名無しさん:05/01/02 22:02:01
ワロタ
342デフォルトの名無しさん:05/01/02 22:05:27
;
343339:05/01/02 22:09:03
これはプログラムの一部です。
ここに問題があって、エラーになってしまうのです
344デフォルトの名無しさん:05/01/02 22:11:20
入門書読み直してくれば?
345デフォルトの名無しさん:05/01/02 22:18:30
文字列を式として評価したければparserでも書かなければならない。
そのような機能はC言語の標準では用意されていない。
346デフォルトの名無しさん:05/01/02 22:36:21
>>343
つまらないネタは、いくら押してもつまらない。
347デフォルトの名無しさん:05/01/02 22:48:43

>>339
>アドバイスがありましたら
>よろしくお願い致します。

Lisp 使え。
348デフォルトの名無しさん:05/01/03 00:23:50
>>339
//ans = (num1 ope num2);
switch(ope) {
case '+':
ans = num1 + num2;
break;
case '-':
ans = num1 - num2;
break;
case '*':
ans = num1 * num2;
break;
case '/':
ans = num1 / num2;
break;
}

349デフォルトの名無しさん:05/01/03 00:25:04
sageじゃないと上がっちゃうのかw
350デフォルトの名無しさん:05/01/03 00:53:41
>>349
2ちゃんねるへようこそ
351デフォルトの名無しさん:05/01/03 00:59:15
<348
ありがとうございます
352デフォルトの名無しさん:05/01/03 05:21:31
ちょっと分からんので誰か教えてください。
例えば、以下のようなプログラムの場合

int getstr(const char* in, char* out)
{
 [ inを処理して可変長のoutを得る ]
 return 0;
}

int main(void)
{
 const char str1[10]="aaaaaaaaaa";
 char *str2;
 [str2の領域確保?]
 getstr(str1,str2);
 printf("%s",str2);
 [str2の領域解放?]
 return 0;
}

mainではstr2の長さが分からないので領域確保できないですが
どうしたらよいでしょうか?
できれば、領域を確保した関数内で解放も行いたいのですが。
353デフォルトの名無しさん:05/01/03 05:26:27
typedef struct {
  int op;
  int (*func)(int, int);
} FUNC;

int f_add(int, int);
int f_sub(int, int);
int f_mul(int, int);
int f_div(int, int);

FUNC selection[] = {
  {'+', f_add},
  {'-', f_sub},
  {'*', f_mul},
  {'/', f_div},
};
354デフォルトの名無しさん:05/01/03 05:31:03
  for (i = 0; i < sizeof(bar) / sizeof(FUNC); i++) {
    if (ope == selection[i].op)
      (selection[i].func)(num1, num2);
  }
355デフォルトの名無しさん:05/01/03 05:33:06
多めにとっときゃいいじゃん

もしくはgetstr関数内で確保
356デフォルトの名無しさん:05/01/03 10:09:42
七行プログラミング part4
http://pc5.2ch.net/test/read.cgi/tech/1051703369/814

こちらも参考にどうぞ.
gcc でしか試していません.
357デフォルトの名無しさん:05/01/03 11:41:37
営業乙
358デフォルトの名無しさん:05/01/03 18:50:09
UnixとWindows両方で使えるCのZip操作ライブラリが欲しいんですが、どんなのがありますか?

# zlibは圧縮・展開のみでアーカイブ機能はないので…
359Rubyist!:05/01/03 19:18:08
PhysicsFS
360デフォルトの名無しさん:05/01/03 21:30:39
かなり悩みましたがさっぱり分かりません

deque<char *> dp;に文字列を格納する時に
char buf[100];
strcpy(buf, "abc");
dp.push_back(buf);
とするとうまく格納されるのですが、
char buf[100];
buf[0] = 'a'; buf[1] = 'b'; buf[2] = 'c'; buf[3] = '\0';
dp.push_back(buf);
とするといろいろ不具合が出るんです
何が原因でしょうか?
361デフォルトの名無しさん:05/01/03 21:35:05
なんだよ > いろいろ
362デフォルトの名無しさん:05/01/03 21:35:27
激しくスレ違いですから〜!
残念!
あと不具合の詳細も書いとけ
363デフォルトの名無しさん:05/01/03 21:36:55
>>360
ここだな
【初心者歓迎】C/C++室 Ver.12【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1101100031/
364デフォルトの名無しさん:05/01/03 21:37:44
>>360
それ以前にそのコードはC++、ここはCスレ。つまりスレ違い。
まあ面倒くさいからstd::dequeにはstd::stringを入れろ。
365360:05/01/03 21:47:24
363の方で質問してきます
あと364の方が回答してくれているようですが、
atd::stringを入れるというのがどういう意味か分かりません
366デフォルトの名無しさん:05/01/03 21:49:49
それも分からんのにSTL使うのはどうかと…
367デフォルトの名無しさん:05/01/03 22:14:34
>>365
deque<string> ds;
368デフォルトの名無しさん:05/01/03 22:30:21
>>367

deque<string>は分かるのですが、<char *>で扱うと
strcpy(buf,)で格納するのとbuf[0]、buf[1]と1文字ずつ文字を格納するのとで
違う動作になるのが意味不明で解決したいんです
どちらで文字列を作ってもbufの中身はまったく同じと思うんですが、
違うのですか?
369デフォルトの名無しさん:05/01/03 22:41:04
> どちらで文字列を作ってもbufの中身はまったく同じと思うんですが

Cならね
370デフォルトの名無しさん:05/01/03 22:46:29
C++だと

strcpy(buf, "abc");

buf[0] = 'a'; buf[1] = 'b'; buf[2] = 'c'; buf[3] = '\0';
結果が違うのか〜マイッタ
371デフォルトの名無しさん:05/01/03 22:56:25
haa
372デフォルトの名無しさん:05/01/03 22:56:52
常識!
373デフォルトの名無しさん:05/01/03 23:04:36
へえ
374デフォルトの名無しさん:05/01/03 23:08:02
>>360
俺んところはこれを実行しても何も問題なないが。
#include <iostream>
#include <deque>
using namespace std;
int main()
{
    deque<char *> dp;
    char buf_a[100];
    strcpy(buf_a, "abc");
    dp.push_back(buf_a);
    char buf_b[100];
    buf_b[0] = 'a'; buf_b[1] = 'b'; buf_b[2] = 'c'; buf_b[3] = '\0';
    dp.push_back(buf_b);
    cout << dp[0] << '\n' << dp[1] << endl;
    return 0;
}
375360=365=368:05/01/03 23:08:31
>>369

C++だと違うのですか?
よければどう違うのか詳しく解説してくれる方居りませんか?
向こうで聞いても誰も教えてくれないので・・・
376デフォルトの名無しさん:05/01/03 23:11:38
>>372
また君か
377デフォルトの名無しさん:05/01/03 23:14:59
向こうでやれといっているのに。
378360:05/01/03 23:16:19
#include <iostream>
#include <deque>

using namespace std;

int main(void){

deque<char *> dp;
char buf[100];

buf[0] = 'a'; buf[1] = 'b'; buf[2] = '\0';
dp.push_back(buf);

buf[0] = 'c'; buf[1] = 'd'; buf[2] = '\0';
dp.push_back(buf);

cout << dp[0] << dp[1] << endl;

return 0;
}

これを実行した時に、頭の中ではabcdと表示されると思うのですが、
cdcdと表示されるのです
379デフォルトの名無しさん:05/01/03 23:43:52
>>378
お前、C++なんかやる前にCをもう少しちゃんとやれ。
ポインタについて何もわかってないだろ。
380デフォルトの名無しさん:05/01/04 00:08:02
deque<char *> なんか使ってる時点で
ポインタ理解してないだろうな、とは思ったが…
381360:05/01/04 00:20:45
やっと理解できました
<char *>って書くと勝手に領域作ってくれて
そこに文字列を代入してくれる仕様だと思いこんでいました
これからはstringを使います
382デフォルトの名無しさん:05/01/04 02:23:26
そんなdeque<T*>がそんな特殊化されていたら切れるな。

では、何事もなかったかのように「C言語なら俺に聞け!」をお送りします。
383デフォルトの名無しさん:05/01/04 09:01:56
lintの存在意義を教えてください。
384デフォルトの名無しさん:05/01/04 09:13:27
>383
中級者はgcc -Wall -pedantic の警告に耳を傾けていれば不必要。
385デフォルトの名無しさん:05/01/04 09:52:02
-pedantic をつけるとどうかわりますか?
386デフォルトの名無しさん:05/01/04 09:57:23
次の人どうぞ
387デフォルトの名無しさん:05/01/04 09:59:46
>385
電子辞書使え
388デフォルトの名無しさん:05/01/04 10:29:37
こっちが本スレだったんですか。
改めて、

exe形式で保存するのにはどうせればいいですか^^
exeファイルを作りたいんですが^^
389デフォルトの名無しさん:05/01/04 10:37:59
>388
何の? どんな?
390デフォルトの名無しさん:05/01/04 10:38:59
>>389
Cとか、そういうファイルをexeにしたいんですが^^
実行するにはexeしかないし^^
391デフォルトの名無しさん:05/01/04 10:41:02
まずはageを覚えてください。
392デフォルトの名無しさん:05/01/04 10:41:04
VB
393デフォルトの名無しさん:05/01/04 10:41:40
>390
レンジで簡単料理の本を読め
394デフォルトの名無しさん:05/01/04 10:42:33
>>391
すいません
395デフォルトの名無しさん:05/01/04 10:43:00
>>390
別にexeでなくても動きますがなにか。
396デフォルトの名無しさん:05/01/04 10:43:03
>>393
え?^^;
397デフォルトの名無しさん:05/01/04 10:43:36
>>395
そうなんですか。
じゃあVBっていうので動かしたいんですけど、どうすればいいですか
398デフォルトの名無しさん:05/01/04 10:46:24
>>390
優しい私が教えて差し上げましょう。
まず、exeファイルというのはWindows用の実行ファイルの事ですね。
それを作るというのはつまり、コンパイルするということです。
コンパイルするためには、コンパイラというソフトを使うと良いでしょう。
コンパイラはいろいろありますが、市販の物ならMicrosoftのVisualC++など、
無料の物なら…飽きた。この話題飽きた。
399デフォルトの名無しさん:05/01/04 10:46:39
>397
だから、料理の本買えって
400デフォルトの名無しさん:05/01/04 10:47:34
>>398
そうなんですか^^
親切にどうもありがとうございます。
今からぐぐってきます^^
401デフォルトの名無しさん:05/01/04 10:47:42
>>397
VisualBasicの使い方が書いた本が店に売ってるだろ。
402デフォルトの名無しさん:05/01/04 10:48:13
>>399
料理の本なんてみなくても目玉焼きぐらいなら作れますよ^^^^^^^^
403デフォルトの名無しさん:05/01/04 10:49:16
>>401
ありがとうございます
今度
404デフォルトの名無しさん:05/01/04 10:50:43
本屋見てみます
405デフォルトの名無しさん:05/01/04 11:25:46
BCCっていうのは使えるんですか
406デフォルトの名無しさん:05/01/04 11:35:18
>405
リソースエディタもヘルプも付属されず。あくまで練習用だ。使いたいならVectorでBCCを検索してみろ。
407デフォルトの名無しさん:05/01/04 12:03:10
質問があるんですが、















射精していいですか
408デフォルトの名無しさん:05/01/04 12:07:50
407
風俗街に逝けょ
409デフォルトの名無しさん:05/01/04 12:09:48
>>407
まだガマンしなさい…うふふ
410デフォルトの名無しさん:05/01/04 12:22:25
今射精したらムチでヤっちゃうよ?
411デフォルトの名無しさん:05/01/04 14:16:49
気を取り直してイってみよう!
412デフォルトの名無しさん:05/01/04 14:19:30
晴れ着の女に…
413デフォルトの名無しさん:05/01/04 14:47:54
コンドーム買ってやりたげな娘にナンパしる!
414デフォルトの名無しさん:05/01/04 16:20:18
BOOL StrTrim(LPTSTR s1, LPCTSTR s2);
と同じ機能のDの関数ってあるの?
415デフォルトの名無しさん:05/01/04 16:21:11
間違えた。 D→C
416デフォルトの名無しさん:05/01/04 16:25:25
>414
そりゃSDKではshlwapi.hで宣言されたwinapiだから、呼び出し型に注意して動的リンクすりゃ使える。
417414:05/01/04 16:45:31
>>416
レスどうも!後でやってみます。
418デフォルトの名無しさん:05/01/05 00:44:21
RedHatで標準関数のヘッダファイルがある
ディレクトリってどこでしょうか
419デフォルトの名無しさん:05/01/05 00:49:46
stdio.hを検索すればいいだろ
420デフォルトの名無しさん:05/01/05 00:50:03
locate stdio.h
421デフォルトの名無しさん:05/01/05 01:23:04
遅いだろうけど見当がつかないのなら

% find / -type f -print | xargs grep stdio.h
422デフォルトの名無しさん:05/01/05 01:46:37
>>415
驚いた
一瞬D言語スレと間違えたかと目を疑った…
423デフォルトの名無しさん:05/01/05 01:52:42
Dって普及すんのかな?
424デフォルトの名無しさん:05/01/05 01:55:36
ヴァンパイアハソター
425デフォルトの名無しさん:05/01/05 01:56:39
>>418
大抵は/usr/include
426デフォルトの名無しさん:05/01/05 02:32:33
ところで何で"C言語"って言うんだね?
"プログラミング言語C"って言うならともかく
427デフォルトの名無しさん:05/01/05 02:48:17
cc -o a,exe foo,c ってやればexeファイルができるよ!
428デフォルトの名無しさん:05/01/05 02:49:44
なんでxargsつかうんだ? > 421
429デフォルトの名無しさん:05/01/05 02:54:11
>427
>cc -o a,exe foo,c

','と'.'は同じではないし
430デフォルトの名無しさん:05/01/05 02:57:39
似てるからだいじょぶ
431デフォルトの名無しさん:05/01/05 03:00:20
ぐっじょぶ
432デフォルトの名無しさん:05/01/05 03:16:57
>>426
日本語だから。
433デフォルトの名無しさん:05/01/05 03:40:16
こいつぼく
434デフォルトの名無しさん:05/01/05 09:21:52
ぼく大統領
435デフォルトの名無しさん:05/01/05 09:33:43
北大と雨量
436デフォルトの名無しさん:05/01/05 09:58:00
ポインター型の引数(char *だったり、構造体へのポインターだったり)の
「指す内容」が変更されないことを示すのに「const」って使えますよね?
func(const char *); みたいに。
渡すときに内容がセットされてなければいけないか、どうかを示す方法はないですか?

foo(const char *buf, // Input
BAR *type, // Output
BAZ *info) // Input / Output

みたいな場合、typeのメンバーは呼ぶときにセットしておく必要はないが、
infoのは必要ある、みたいなのをコンパイラーもしくはlintに知らせたい場合。
437デフォルトの名無しさん:05/01/05 10:43:47
>>436
「内容をセットする」がどういう意味かを説明せよ。

ポインタが NULL ではない、という意味か? ポインタが指す先に何かあ
る、という意味か? どっちにしても、コンパイル時に検出するのは難し
いと思うけど。
438デフォルトの名無しさん:05/01/05 11:30:23
どっちにせよ"変数の値" みたいな実行時に
変化するものをコンパイルラーに検出してもうこと自体おかしい
439デフォルトの名無しさん:05/01/05 11:33:29
Cでテキストファイル(単純なリストファイルです)
をいじくるプログラムを作りました。
機能として、単に参照(画面出力)や二つのリストファイルをマージ、ソート
する機能をつけました。
ふと疑問に思ったのですが、各関数に渡す引数については
FILEポインタを渡したほうがいいのか、
const char *を渡し、関数内でfopen,fcloseさせたほうがいいのでしょうか。

どちらにせよ、プログラム内では統一させますが、普通はこうやる
みたいなのはありますか?
ちなみに僕は後者の方法にしました。
440デフォルトの名無しさん:05/01/05 11:37:40
>439
再利用しやすいのは前者
441デフォルトの名無しさん:05/01/05 11:44:13
>>369
これ、本当なの?
442デフォルトの名無しさん:05/01/05 11:48:49
質問なんですが
fopenなどの高水準なファイル入出力関数と
openなどの処理系依存(?)の低水準な関数って、
どう使い分けるの?

openなどを使うメリットは?実行ファイルが小さいとか?
教えてください。
443デフォルトの名無しさん:05/01/05 12:01:34
>442
互換性と処理速度が全く違う。動的リンクするならサイズは余り変わらない。ちなみにwinならCreateFileか_lopenを使え
444デフォルトの名無しさん:05/01/05 12:25:42
>441
論理エラーの議論を無視するのが2chの仕様
445439:05/01/05 14:29:37
返答ありがとうございます。

今度、前者の方で書き直しときます。
446デフォルトの名無しさん:05/01/05 17:49:34
>>426
確かB言語ってのがあったからC言語って名前にしたらしい
何故B言語っていう名前だったかは知らん
447デフォルトの名無しさん:05/01/05 18:01:34
BCPL→B言語→C言語 だったかと
448デフォルトの名無しさん:05/01/05 18:06:58
加えると
ALGOL60 が起源の CPL (Combined Programming Language)
-> BCPL (Basic Combined Programming Language)
-> B (First letter of BCPL)
-> (NB := New B)
-> C (Second letter of BCPL)
じゃなかったかな
449デフォルトの名無しさん:05/01/05 18:09:15
>>448
つまりC言語の命名に従えば、
D言語じゃなくてP言語になるべきだったのか
450デフォルトの名無しさん:05/01/05 18:16:48
>>449
そうですね
でも C++ も C# もありますしね

ちなみにC#の#は
++を上下に2つくっつけた説と
半音高い説があります

いずれにしても MS は「C# は C++ よりもイケてる」と言いたかったようです
451デフォルトの名無しさん:05/01/05 18:27:01
>>450
>半音高い説があります
じゃ俺、もう半音高い D にするわ。
452デフォルトの名無しさん:05/01/05 18:50:27
C♭
453デフォルトの名無しさん:05/01/05 18:50:49
454デフォルトの名無しさん:05/01/05 18:51:09
確かにC#はC++より逝けてる。うん。
455デフォルトの名無しさん:05/01/05 19:09:36
C井
456デフォルトの名無しさん:05/01/05 19:09:56
C丼
457デフォルトの名無しさん:05/01/05 19:11:40
【C丼 345円】
458デフォルトの名無しさん:05/01/05 19:14:28
オレC丼一杯! ウニなしで!
459デフォルトの名無しさん:05/01/05 19:28:51
ウニ食えない香具師は包茎
460激初心者:05/01/05 21:47:44
ファイルに書き込みをして、その文字を読み込み表示させたいのですが、
うまくいきません(文字化けしてしまいます)。どこに問題があるのでしょうか?
#include <stdio.h>

int main(void)
{
FILE *fp;
char word1[256], word2[256];

fp = fopen("dat37.dat", "w");

printf("Input any word.\n");
fgets(word1, 256, stdin);
fprintf(fp, "%s", word1);

fgets(word2, 256, fp);
printf("%s", word2);

fclose(fp);

return 0;
}
461デフォルトの名無しさん:05/01/05 21:52:25
>>460
おいおい書き込みモードでファイル開いてるのに読み込もうとするなよ
462デフォルトの名無しさん:05/01/05 21:53:41
>>460
#include <stdio.h>
int main(void)
{
    FILE *fp;
    char word1[256], word2[256];
    fp = fopen("dat37.dat", "w+");
    if (fp == NULL)
        return 1;
    puts("Input any word.");
    fgets(word1, sizeof word1, stdin);
    fputs(word1, fp);

    fseek(fp, 0, SEEK_SET);

    fgets(word2, sizeof word2, fp);
    puts(word2);
    fclose(fp);
    return 0;
}
463激初心者:05/01/05 21:57:45
>>461
あ・・。ありがとうございます。^^;
読み込みモードで開きなおしたらできました。
ちなみにfeof関数も使えということなんですが、これは
do {} while(feof(fp) == 0);と、読み込みのとこに足せば
良いのでしょうか?
464デフォルトの名無しさん:05/01/05 22:00:50
feof関数とwhileをヘルプで調べろ、タコ。
465デフォルトの名無しさん:05/01/05 22:02:16
ついでにif elseもだ
466激初心者:05/01/05 22:02:26
>>462
ご丁寧に直して下さってありがとうございます!
ところで
fseek(fp, 0, SEEK_SET);
は指定ファイルを頭出しする為に必要、ということでよいのでしょうか?
467激初心者:05/01/05 22:07:17
>>464>>465
すいません^^;
リファレンスでfeof関数は見てみたのですが、EOFを検出すると!=0になるというのが
いまいち使い方がわかりません。
if else文でif (feof == 0)と else で条件分岐させるということでしょうか?
468デフォルトの名無しさん:05/01/05 22:09:57
end of fuckの略
469デフォルトの名無しさん:05/01/05 22:12:35
つまり、ファイルの終わり。

関数の後にはカッコに囲まれた引数がいる。
470デフォルトの名無しさん:05/01/05 22:14:29
データの読み込みに関して質問させてください。
たとえば

-----------------------
This paper written by hoge.
You see , I'm hoge.

1,2,3
4,5,6
7,8,9
-----------------------

上のようなデータファイルがあったとき
1,2,3
4,5,6
7,8,9
の部分だけずらっと読み込みたいんですが、
定石のようなコードはありませんでしょうか?
今まで上のようなデータファイルのときは文字の部分を切り取って
fscanfで読み込みをしていたもんで^^;
471デフォルトの名無しさん:05/01/05 22:16:41
素人は一歩ずつ一行ずつやれ
472デフォルトの名無しさん:05/01/05 22:49:40
fgetsして先頭文字ををisdigit等で判定して
sscanf等で取り込むのが一般的かと。
極端に速度を求めるのでもない限り。
473デフォルトの名無しさん:05/01/05 23:12:32
良スレハケーン(大学受験板)・・・スレタイを見よ。
http://school4.2ch.net/test/read.cgi/kouri/1102125273/

なんともム板にふさわしいスレタイではないか。「真」だ!!!
474デフォルトの名無しさん:05/01/05 23:18:47
>>472
先頭文字チェックですか。
参考にします。どうもでした^^
475デフォルトの名無しさん:05/01/05 23:59:03
Cじゃ面倒なんでSchemeで100!を計算してみたw
476デフォルトの名無しさん:05/01/06 00:00:25
Mathematicaで

100! Shift+Enter

終わり
477デフォルトの名無しさん:05/01/06 00:10:15
Mathematicaも関数型言語ですねー にゃんにゃん
478デフォルトの名無しさん:05/01/06 00:12:10
最近はオブジェクト指向も取り入れられているらしい。いつも
関数型言語としてしか使わないが。スレ違い。
479デフォルトの名無しさん:05/01/06 00:25:23
let rec f x = if x = 1 then 1 else x * f (x-1);;
480デフォルトの名無しさん:05/01/06 00:53:10
OCamlかよw
481デフォルトの名無しさん:05/01/06 04:50:50
> どっちにせよ"変数の値" みたいな実行時に
> 変化するものをコンパイルラーに検出してもうこと自体おかしい

は? 「変化する」かどうかを決めるのはコードのロジックだろうが!
コンパイラーがチェックするのはあたりまえ。
482デフォルトの名無しさん:05/01/06 08:41:24
参照してない仮引数があれば警告するオプションならば、ほとんどのコンパイラにある
483デフォルトの名無しさん:05/01/06 08:53:11
>>481
ネタをネタと(ry
484デフォルトの名無しさん:05/01/06 11:35:09
> 参照してない仮引数があれば警告するオプションならば、ほとんどのコンパイラにある

は? こいつぼけか。
(1) 参照しかしてない
(2) 値が変わっている
(3) 参照もし、値が変わっている
の3種類を区別する方法だよ ぼけ。(1)はできるが、(2)と(3)を区別したい。
485デフォルトの名無しさん:05/01/06 11:54:35
「コンパイラー」って、何か新鮮な響き♥
486デフォルトの名無しさん:05/01/06 11:56:17
ふつうです。
487デフォルトの名無しさん:05/01/06 12:29:15
>>485
>438の「コンパイルラー」はどうよ。
488デフォルトの名無しさん:05/01/06 12:45:14
コンパイラァ
489デフォルトの名無しさん:05/01/06 12:50:29
>>481
>>436を、
どう解釈すればそんな回答が飛び出すの?
490デフォルトの名無しさん:05/01/06 12:55:07
コンパイゴルァ
491デフォルトの名無しさん:05/01/06 13:19:55
492デフォルトの名無しさん:05/01/06 13:25:57
早朝から支離滅裂なレスをする >>481 に萌え。

>>484
つか >>436 のような場合、未設定の変数「を指すポインタ」を
引数に使う分には警告も何もださないのがふつうで、それを
何とかしたいんでしょ?
結論としては「無理」としか言いようがないけど。

もし引数が構造体へのメンバだったら
まったく使用しないメンバも有り得るわけで
そんなのまでいちいち警告出されたくないだろうし。
493デフォルトの名無しさん:05/01/06 13:30:10
そこまで管理したかったらC++で参照使えと。
494デフォルトの名無しさん:05/01/06 14:10:10
PADって何?
495デフォルトの名無しさん:05/01/06 14:11:11
>>494
電子手帳
496デフォルトの名無しさん:05/01/06 16:10:21
1.キーボードから5つの実数データを入力し、その
・合計
・平均
・最大値
・最小値
・範囲
を求めるプログラムを作成せよ。
という課題が出ているのですが学がなくまったくわかりません。
どなたか教えてください。
497デフォルトの名無しさん:05/01/06 16:11:33
1行目の要素が512個、2行目の要素が500個・・・
の様に各行の要素数がバラバラのcsvファイルがあります。
これを改行が出るまで読み込み、2次元配列に読み込ませるプログラムを作成中です。
(初期値として配列の要素は全て-1)

fscanf(fp, "%d", &y[i][j]);

を使って読み込んでみましたが値が代入されません。
どのようにすれば読み込めるのか教えていただきたいです。
よろしくお願いします。
498デフォルトの名無しさん:05/01/06 16:38:18
>496 ここまでやってみろ。
わからんことは聞け。
int i; float an[5];
float s,a,mi,ma;//合計,平均,最小値,最大値
for(i=0;i<5;i++){
printfで"i番目の実数は?"と表示;
scanfでan[i]に実数を入力;
}
499デフォルトの名無しさん:05/01/06 16:42:12
>497
i,jをそれぞれ説明しろ。
fscanfとsscanfをヘルプれ。
500デフォルトの名無しさん:05/01/06 16:49:23
>496-497
解決しました。
501デフォルトの名無しさん:05/01/06 18:08:44
ヘルプれ…なかなかいいな。
502デフォルトの名無しさん:05/01/06 19:22:28
>500
503超初心者:05/01/06 19:26:39
文字列が入力してあるファイルからreadシステムコールを使って指定した
1文字をカウントしたいのですが、0文字になってしまいます。
どこに問題があるのでしょうか?
#include <stdio.h>
#include <fcntl.h>

int main(void)
{
int fd;
int n_read;
int count = 0;
int ch;
char buf[256];

fd = open("data.dat", O_RDONLY, 0);

fprintf(stdout, "Input a letter you want to count.\n");
ch = fgetc(stdin);

while ((n_read = read(fd, buf, 1)) > 0) {
if (buf == ch)
count++;
}

fprintf(stdout, "found %d%c.\n", count, ch);

close(fd);

return 0;
}
504デフォルトの名無しさん:05/01/06 19:28:14
それ以前にコンパイルできてんのかよ
505デフォルトの名無しさん:05/01/06 19:30:54
2次元配列を関数に渡し、新しい2次元配列を返り値として受け取りたいと思っています

//main
double a[3][3]
double b[3][3]

//関数呼び出し (どうやって行列を受け取るか?)
b = arrray2(a);

//関数部 (関数の型を2次元配列にするには?)
double arrray2(double (*a)[3])
{
double c[3][3];

return c;
}

aという行列を関数array2を使い変形したあとbに渡したいんですが、
2次元配列を返すのにどうしたらよいのか教えてください
506超初心者:05/01/06 19:32:14
はい。エラーも出ませんし、プログラムも実行されるんですが・・
507デフォルトの名無しさん:05/01/06 19:36:56
>>503
>if (buf == ch)
これがコンパイルできてしまうようなコンパイラは
棄てた方が幸せになれる。
508デフォルトの名無しさん:05/01/06 19:38:03
文字じゃねーじゃん
509デフォルトの名無しさん:05/01/06 19:41:46
>>506
ほんまか。コンパイラ教えれ
510超初心者:05/01/06 19:44:26
>>507-509
BCCです・・。 buf == (char)ch ・・じゃだめですよね?^^;
511デフォルトの名無しさん:05/01/06 19:45:35
初心者age質問お断り
512デフォルトの名無しさん:05/01/06 19:46:10
>505
double[][]→double**
出力用の仮引数double**outを追加。
513デフォルトの名無しさん:05/01/06 19:47:04
>>507
> if (buf == ch)

配列「buf」の先頭ポインタ値と、
変数「ch」の値が一致するか?

と言う判定だから、型の不一致で警告は出ても、
エラーにはならないのでは?
514超初心者:05/01/06 19:49:52
ためしにscanf("%c", ch)でもだめでした・・・
515初心:05/01/06 19:56:08
↓消費税を求める物を作ったつもりなんですが計算をしてくれません。
何故か分かりませんか?
#include <stdio.h>

int main(void)
{
int a, b;
printf("金額を入力して下さい。\n");
scanf("%d", &a);
b = a * ( 1 + 5 / 100 );
printf("%d 円の消費税込みの価格は %d 円です。\n", a, b);
return 0;
}
516デフォルトの名無しさん:05/01/06 19:57:48
C言語ではどんな式を与える場合でも宣言された型と一致しなければ逝けない。関数の型を知るにはヘルプを見よ。
517デフォルトの名無しさん:05/01/06 19:58:46
a * 1.05
518デフォルトの名無しさん:05/01/06 20:01:14
>515
整数の割り算だから。途中でキャストや代入どして、floatやdouble型の式に変換すべし。
519Yura:05/01/06 20:02:45
>a * ( 1 + 5 / 100 );
->a * 1.05

これでうまく動くと思います(理由は面倒なので他の人どうぞ)
520515:05/01/06 20:05:07
a * 1.05
は自分も確認しました
でも、
a * ( 1 + 5 / 100 );
だと出来ないので不思議に思ってました。
floatかdoubleでやってみたいと思います。
どうもでした
521デフォルトの名無しさん:05/01/06 20:06:03
補足:1はint型、1.0はint型ではない
522デフォルトの名無しさん:05/01/06 20:06:14
それじゃa * ( 1 + (double)5 / 100 )
523デフォルトの名無しさん:05/01/06 20:17:40
int型に小数点入ってる数字が代入できるわけねーだろ
524デフォルトの名無しさん:05/01/06 20:18:33
>>523
( ゚Д゚)ポカーン
525デフォルトの名無しさん:05/01/06 20:20:09
b = a * ( 1.0 + 5.0 / 100.0);
526デフォルトの名無しさん:05/01/06 20:27:14
> a * ( 1 + 5 / 100 );
a + a * 5 / 100;
527526:05/01/06 20:28:18
補足。
intに代入するなら浮動少数かますなあほども。
528デフォルトの名無しさん:05/01/06 20:32:42
>526
昔、描画関数を速くするためによく整数化したもんだ。
529デフォルトの名無しさん:05/01/06 20:35:39
>>523
できますよ。デマを流さないように。つっても釣られるやつはいないと思うけど。
530デフォルトの名無しさん:05/01/06 20:36:24
ファイル内容を1ページずつ画面表示するプログラムを書けということなんですけど、
1ページずつ表示する、の意味がわかりません。
コマンドプロンプトの画面1つが1ページなんですか??
531デフォルトの名無しさん:05/01/06 20:40:52
>>530
言ったやつに聞け
532デフォルトの名無しさん:05/01/06 20:44:35
>530
おそらくkbhitやgetchでキー待ちができる。ヘルプれ。
533デフォルトの名無しさん:05/01/06 21:30:19
>>530
1 ページに縮小表示汁
534デフォルトの名無しさん:05/01/06 21:31:16
(a==b)==1 なのに、sizeof(a)とsizeof(b)が同じになってくれません。
どうも、sizeof(a)は配列の要素数を返しているようなんですが……
これはコンパイラ(gccです)の仕様なんですか?
535534:05/01/06 21:33:57
書き忘れました。両方とも型はchar*です
536デフォルトの名無しさん:05/01/06 21:38:07
>>534
char a[256];
char *b;
こうしているんだろ
537530:05/01/06 21:51:11
>>532
if (kbhit()) c = getch(); で入力待ちができることはわかったのですが、
それでどう画面をページわけできるのかが・・。
どういう形で使用するのでしょうか?

538534:05/01/06 21:52:21
>>536
そうです、そんな感じです。今、bccでもやってみたらgccと同じ動作でした。
C言語自体の仕様なんですか?なんか不自然な気がします……
539デフォルトの名無しさん:05/01/06 22:01:55
仕様です
540デフォルトの名無しさん:05/01/06 22:02:45
それじゃあ仕様が無いねHAHAHAHAHAHA
541デフォルトの名無しさん:05/01/06 22:09:25
>537
一行ずつ
542デフォルトの名無しさん:05/01/06 22:16:12
>>537
決めた行数を表示して停止すれば
543534:05/01/06 22:18:00
仕様なんですか……
なら、 char a[256]; のときの256って数値は、どこかに数値として残ってるってことですか?
だったら、その数値を読み出す方法とかないんでしょうか。
544デフォルトの名無しさん:05/01/06 22:21:17
>>543
いや、sizeofはコンパイル時に定数になるから。
逆にコンパイル時に決まらない値(動的な配列のサイズ)は
求められない
545530:05/01/06 22:36:33
>>541-542
ありがとうございます、やってみます!
546534:05/01/06 22:45:04
あーなるほど。つまりコンパイルの時点でサイズがわかってる場合のみ、配列のサイズを
求めてるわけですか。 試しに sizeof(malloc(256)) とやっても、返ってきたのはポインタのサイズでした。
547デフォルトの名無しさん:05/01/06 22:52:14
>>546
というか厳密に言えば、char a[256];のaの型はchar*じゃないぞ
だからこそsizeofの結果が違ってくるんだけど。
548534:05/01/06 23:02:51
え、そうだったんですか。これまで、完璧にchar*と等しいと思いこんでました。
配列を表す型、みたいに呼ぶんでしょうか?
549デフォルトの名無しさん:05/01/06 23:08:58
配列型(array type)
550デフォルトの名無しさん:05/01/06 23:16:59
char a[256];の型はchar[256]だ。
551デフォルトの名無しさん:05/01/06 23:17:55
>>547
厳密に言う必要はない
552デフォルトの名無しさん:05/01/06 23:40:30
>>548
char a[256];としたらaの型はchar [256]、つまりcharの配列[要素数256]であり、決してchar*ではない。
構文上はaが使われるたびに配列からポインタの読み替えがなされている。

http://kmaebashi.com/programmer/pointer.html
ここの下の方、「配列→ポインタの読み換え」の項にあるけど、
sizeofと単項&には例外的に配列→ポインタの読み替えが起こらない。
(ここから余談)つまり&aとするとchar(*)[256]、charの配列へのポインタが得られる。
553デフォルトの名無しさん:05/01/06 23:45:22
> これがコンパイルできてしまうようなコンパイラは

できないコンパイラーがあったらかなり問題があるぞ
554534:05/01/07 00:29:43
>>549-552
sizeof(char[256]) でやってみたら、見事に256が表示されました。こういう形の型もあったんですね。

char *b=&a としたときでも b==a となりました。つまり、「a[256]の配列」が始まる場所と「数値a[0]」がある場所が
同じだから、 「先頭要素へのポインタと読みかえられる b=a」 でも、「char(*)[256]へのポインタである b=&a」でも、
結局は同じ場所を指すことになるってことですね。なんか言いづらいですが、頭のなかじゃ理解できました。
555デフォルトの名無しさん:05/01/07 02:11:53
既出でしたらすいません。
実行ファイルが使用したメモリ量を計測する簡単な方法はないでしょうか。
今はタスクマネージャを目視して図っているのですがもっとスマートなやり方があるような気がするのですが・・・

・・・というか意味分かりますかね?(;´Д`)
556デフォルトの名無しさん:05/01/07 02:14:28
>>555
スレ違い。
557555:05/01/07 02:16:57
>>556
申し訳ありませんでした。
失礼ついでに差し支えなければ教えてください、どこで聞いてくればよいでしょうか?
558デフォルトの名無しさん:05/01/07 02:18:45
>>557
このあたりかなぁ

Win32API質問箱 Build26
http://pc5.2ch.net/test/read.cgi/tech/1104109858/
★初心者にVisual C++を教えるスレ★ Part16
http://pc5.2ch.net/test/read.cgi/tech/1101022051/
559555:05/01/07 02:19:09
>>558
どうもです!
560デフォルトの名無しさん:05/01/07 02:21:59
561デフォルトの名無しさん:05/01/07 03:39:08
並べ替えたい単語数を入力して、
英単語をその数だけ入力して、
アルファベット順に並べるプログラムってどうやって作れますか?

どうかよろしくお願いします。
562デフォルトの名無しさん:05/01/07 04:05:04
宿題は宿題スレへって書いてなかったっけ
563デフォルトの名無しさん:05/01/07 04:42:30
>>561
ぼるじょあがC/C++の宿題を片付けますYO! 37代目
http://pc5.2ch.net/test/read.cgi/tech/1103913840/
今度はちゃんとテンプレ読んで質問すること
564デフォルトの名無しさん:05/01/07 06:56:17
> 並べ替えたい単語数を入力して、

ここがダサい。
565デフォルトの名無しさん:05/01/07 08:36:07
>>554
だからさ&aとaは値が同じになっても型が違う。
char a[256];
char *b = a;
char (*c)[256] = &a;
566デフォルトの名無しさん:05/01/07 09:22:07
>564 空文字列なら終了とかね。
>561
char**pp=(char**)malloc(n*sizeof(char*));
...
pp[i]=(char*)malloc(100);
...
これならreallocでnを増やせる。
567デフォルトの名無しさん:05/01/07 10:38:22
#pragma once というのは
C言語ですか?それともC++で拡張された物ですか?
初歩的な入門書しか買わなかったのですが
次に何を買うか迷っています
568デフォルトの名無しさん:05/01/07 11:11:43
>>567
CでもC++でもなく、Visual C++のコンパイラ独自のもの。
本に載っていなくてもその本自体は別に悪くない。
569デフォルトの名無しさん:05/01/07 11:42:33
失礼します。。int型4つを持った構造体kozoを、0で初期化して、
初期化済みの構造体のポインタを得たいのです。
static型なので、一発で上のようなことができないでしょうか。
static struct kozo *abc={0,0,0,0};
static struct kozo *(abc={0,0,0,0});
ではうまくいきませんでした。
よろしければどこがいけないのかも教えてください。
570デフォルトの名無しさん:05/01/07 11:49:36
>>569

static struct kozo nullkozo;
static struct kozo *abc = &nullkozo;

注: static 変数の初期値はオール0
571デフォルトの名無しさん:05/01/07 11:50:12
>569
static struct kozo abc={0,0,0,0};
とおけば、&abcはabcのアドレス。ポインタを初期化するのはアドレスのみ。
572569:05/01/07 12:02:46
ありがとうございましたっ。
ポインタはなかなか難しくて・・・(*´Д`)
573デフォルトの名無しさん:05/01/07 12:03:50
>>569
static struct kozo abc[1] = {0, 0, 0, 0};
もちろんこういう方法もある。
static struct kozo abc_main = {0, 0, 0, 0};
#define abc (&abc)

ところでstruct kozoってテレフォン電話とかスポーツ運動とかそういう感じのネーミングだよ。
574569:05/01/07 12:06:29
なるほど・・・
あ、訳したら構造構造ですね...気をつけます>_<;
575デフォルトの名無しさん:05/01/07 12:20:26
>>569
何がしたいのかよく解らないよ。




static struct kozo *abc = calloc( 1, sizeof(struct kozo) );

こういう事か?
576デフォルトの名無しさん:05/01/07 16:57:41
プログラムのPADを示せと言われたらどうすればいいの?
577デフォルトの名無しさん:05/01/07 18:25:21
ifとswitch~caseによる分岐、速度はどちらが速いのですか?
578デフォルトの名無しさん:05/01/07 18:56:26
>>576
PAD図かな?

>>577
分岐数と実装による。
579デフォルトの名無しさん:05/01/07 19:12:40
PAD 流れ図 でググれ
580デフォルトの名無しさん:05/01/07 19:13:31
PAD アルゴリズム の方がよかったかも
581デフォルトの名無しさん:05/01/07 19:45:32
>>577
C の仕様として速度は保証外
現実問題としては、何よりもまず実測
納得いかないときはアセンブラ(読むなり書くなり)
場合によってはハードウェアも視野に入れる
582デフォルトの名無しさん:05/01/07 19:53:31
>>577
>>581の言う通りなんだけど、ifかswitchかで迷うなら可読性で軍配の上がるswitchにしてほしい。
583デフォルトの名無しさん:05/01/07 21:24:15
>>582
それもまた、一概には言えない。
584デフォルトの名無しさん:05/01/07 22:15:32

char str[10] = {""};

こういう初期化方法って一般的ですか
585デフォルトの名無しさん:05/01/07 22:20:24
>>584
私なら降格。
char str[10] = "";
586デフォルトの名無しさん:05/01/07 22:20:39
二次元配列じゃないんだから
char str[10] = "";
でいいんじゃない?
587デフォルトの名無しさん:05/01/07 22:25:01
>>585-586
dです。
あと、関数内で確保したchar配列の領域って
その関数が終了すると解放されるんでしたっけ?
初歩質問ばっかでスマセン
588デフォルトの名無しさん:05/01/07 22:29:02
>>587
staticじゃなければそう
589デフォルトの名無しさん:05/01/07 22:31:24
ヘッダファイルの扱い方について質問です。
sub.cで定義されて、かつ外部で使用されるグローバル変数や関数の宣言をまとめたものをsub.hに書いたとします。
sub.hの大半は、externではじまる文になると思うのですが、
sub.cに#include <sub.h>を入れるべきなのでしょうか?入れないべきなのでしょうか?
590デフォルトの名無しさん:05/01/07 22:33:06
入れた方がいい気がするが。人によるんじゃ?
591デフォルトの名無しさん:05/01/07 22:36:06
>>589
習慣として入れなきゃ駄目。
通常は構造体とかdefineとかがあるから入れないとビルドできないし
もし関数だけだった場合でも.hと.cで関数が食い違ってたら悲惨なことになる。

関数だけで食い違いがなければビルドは通るし普通に動くけどね。
592デフォルトの名無しさん:05/01/07 22:39:35
>>590-591
ありがとうございます。
extern文と定義文が同一ソースにあるのは冗長かと思い、迷っていました。
593デフォルトの名無しさん:05/01/07 22:45:34
windowsでopen,readを使うにはどうすればいいですか。
fopen,freadは無しで

594デフォルトの名無しさん:05/01/07 22:49:49
>>592
#include "sub.h"ね
595デフォルトの名無しさん:05/01/07 22:50:59
>593
普通、open/readか、_open/_readが使える。ヘッダは処理系依存。
596デフォルトの名無しさん:05/01/07 22:51:46
>>593
CreateFile
ReadFile
597592:05/01/07 22:56:30
>>594
書いていて何か違和感のある原因がわかりました(汗
598デフォルトの名無しさん:05/01/07 23:00:29
>591
揚げ足取りだが、
>通常は構造体とかdefineとかがあるから入れないとビルドできないし
ヘッダがなくてもビルドはできるんだな。
勝手に定義しておけばいいだけで、なんならヘッダと一致していなくてもビルドはできる。

昔見たソースがそうなっていてしかも、おまけにメンテしていた人の愚痴コメントが書いてあった。
こんなところで勝手に定義して食い違ったらどうするんだとね。
ふと思い出したのであえて突っ込んでしまいました。
599デフォルトの名無しさん:05/01/07 23:18:12
あるファイルからアルファベットの出現頻度を出すプログラムを考えよ
600デフォルトの名無しさん:05/01/07 23:20:36
>>599
かなり昔学校の課題で考えたことある。で?
601デフォルトの名無しさん:05/01/07 23:25:45
>>599
命令すんなボケェ
602デフォルトの名無しさん:05/01/07 23:35:03
>>599
#include <stdio.h>
int main(int argc,char**argv){int a,b[256]={0};FILE*fp;if(!(argc==2&&(fp=fopen(
argv[1],"r"))!=NULL))return 1;while((a=getc(fp))!=EOF)b[a]++;for(a='a';a<='z';a
++)printf("%c:%d\n",a,b[a]+b[a+'A'-'a']);fclose(fp);return 0;}
603デフォルトの名無しさん:05/01/07 23:39:04
ヴァージョンの増やし方って慣習みたいなのはあるんでしょうか?
手直しするたびに0.1増やすとか、形になったら1.0になるとか、、
604デフォルトの名無しさん:05/01/07 23:46:55
c駆け出しの者ですが、質問です。
#include <stdio.h>
typedef struct { char name[20];
int age;
           }data,*pdata;
voidinput(pdata p,char*,int);

int main()
{
data _data[1];
pdata _pdata;

_pdata=_data;

input(_pdata,"ポコたん",19);

printf("%s %d\n",data[0].name,data[0].age);

return 0;
}
void input(pdata p,char *nm,int a)
{
strcpy(p->name,nm);
p->age=19;
}
この場合なぜ関数INPUT内で nmをp->nameにコピーすることで
名前 ポコたん がname[20]の中に入るのか分からないのです
また、どうしてcharのポインタで呼び込まないといけないのでしょうか
普通にchar nameではなぜエラーになるのか
どなたか教えてもらえないでしょうか。
605デフォルトの名無しさん:05/01/08 00:13:51
>>604
まず、変数の先頭に_を付けるのは止めた方が良いです。
予約語とかぶる恐れがあります。
Cでは大文字と小文字を区別するので、inputとINPUTは別物ですから、気を付けてください。

本題ですが、
_pdata=_data;
しているでしょ。これは_pdataというポインタが_dataという配列の先頭を指す、
という意味を持っています。
ですから、その後の関数inputの呼び出しでは、メモリ上で_dataと同じ部分がが
使われているのです。
606デフォルトの名無しさん:05/01/08 00:14:33
>>604
ところで、本当はネタなんでしょう?
607デフォルトの名無しさん:05/01/08 00:17:41
>>604
それコンパイルできません
608デフォルトの名無しさん:05/01/08 00:21:39
>>605
忠告ありがとうございます。以後気をつけます。

質問点なのですが、なぜstrcpy(p->name,em);なのかが分からないです。
*emではないのでしょうか?
p->nameは(*p).nameと同義ですよね、それになぜアドレスをコピーできるのかが分かりません。

>>606
マジです、スレ汚してすみませんorz
609デフォルトの名無しさん:05/01/08 00:22:28
変数名や関数名の頭に'_'(アンダーバー)を付けるのってどういう時ですか。
暗黙のルールとかあるのかな
610デフォルトの名無しさん:05/01/08 00:23:14
付けてはいけません。処理系に予約されています。
つまりコンパイラ屋さんしか使ってはいけない。
611デフォルトの名無しさん:05/01/08 00:27:54
少し複雑だけど、そんなことを全く気にしなくてもいいように
_のプリフィクスは使わない方がよい。
代わりに_のサフィクスにする。
使うのはスコープを明示したいとき(主にメンバ変数)。
612デフォルトの名無しさん:05/01/08 00:28:36
603が放置されているわけだが。

>603
基本的に適当。
613デフォルトの名無しさん:05/01/08 00:43:18
>>610
何とも古くさいルールだな
/usr/usr/usr/usr/usr/usr/bin
614608:05/01/08 00:44:50
すみません、emじゃなくてnmでしたorz
落ち着いて少し、調べてきます。お騒がせしてすみませんでした
615デフォルトの名無しさん:05/01/08 00:46:29
>>578
>>581-583
トンクス!
レス遅れました_| ̄|○スンマセン
色々試してみます。
616デフォルトの名無しさん:05/01/08 00:53:17
>>613
そうなん?詳しく
617デフォルトの名無しさん:05/01/08 01:05:45
>>616
詳しくもへったくれもねえだろ
めちゃ小さいプログラムでない限り
何レイヤもかぶせるんだぞ
618デフォルトの名無しさん:05/01/08 01:06:22
>>607
見逃していたので一応レスです。
voidとinputの間にスペースを入れ忘れていたのと
%s%dにいれる変数のdataの前に_を付け忘れていました。
619デフォルトの名無しさん:05/01/08 01:28:05
解決しました、基本中の基本だったんですね
勉強し直してきますorz
620デフォルトの名無しさん:05/01/08 02:22:02
const装飾子について質問であります、Sir!

const char *s;

の時、const はcharに掛かるのでありますかそれとも
*にかかるのでありますか。
また、それはどういう意味でありますか、Sir!

予想
1)constはcharに掛かり文字が変更できない、ポインタの増減は可能であります。
2)const *はポインタを動かすことすら不可能であり、
さらにはcharに触れるなど言語道断である、と申されますか。

いったいどちらの予測が正しいのでありますか?Sir!
621デフォルトの名無しさん:05/01/08 02:24:34
なんでconstすらググれねぇの?
終わってるなお前
622デフォルトの名無しさん:05/01/08 02:25:11
>>621
m9(^Д^)プギャー
623デフォルトの名無しさん:05/01/08 02:26:23
const char* s; → ポインタの参照先がconst
char* const s; → ポインタ変数がconst
char const * s; → 最初に同じ
624623:05/01/08 02:27:38
const char* const s; → ポインタ変数そのものも参照先もconst
625デフォルトの名無しさん:05/01/08 02:31:26
s++とか*s = 'h'とかやってコンパイルエラー出してみりゃいいんだよ
626デフォルトの名無しさん:05/01/08 02:36:30
まあこのくらい自分で試せといいたい
627デフォルトの名無しさん:05/01/08 02:38:17
>>622
m9(^Д^)プギャー
628デフォルトの名無しさん:05/01/08 02:38:41
>>626
m9(^Д^)プギャー
629デフォルトの名無しさん:05/01/08 02:39:33
>>623
m9(^Д^)プギャー
630623:05/01/08 02:40:32
631デフォルトの名無しさん:05/01/08 02:55:27
なんか見えないレスが多いな
632デフォルトの名無しさん:05/01/08 03:42:41
>>631
それは君が馬鹿だからです。
633ぼるじょあ ◆yBEncckFOU :05/01/08 03:46:15
m9(・3・)ブキャー
634デフォルトの名無しさん:05/01/08 06:44:06
「ヴォケ」でなく「ぼけ」が流行っているのはプログラム板の仕様ですか?
635デフォルトの名無しさん:05/01/08 08:19:59
>>634
このスレの伝統です。
636デフォルトの名無しさん:05/01/08 10:38:51
下のmain()を使って、push(int v), int pop()の動作を確かめたいんですが
どうしたらいいのかわかりません。
教えてもらえませんか?
#include <stdio.h>

main()
{
  int d;

push(1);
push(2);
push(3);
d = pop();
printf("%d\n", d);
d = pop();
printf("%d\n", d);
push(4);
d = pop();
printf("%d\n", d);
push(5);
d = pop();
printf("%d\n", d);
d = pop();
printf("%d\n", d)
}
637デフォルトの名無しさん:05/01/08 10:42:45
自己解決しました。ありがとうございました。
638デフォルトの名無しさん:05/01/08 11:11:15
オブジェクトとインスタンスの定義教えて。
639デフォルトの名無しさん:05/01/08 11:22:36
>>635
一人だけの奈
640デフォルトの名無しさん:05/01/08 12:28:48
>>634
こいつぼけ
641デフォルトの名無しさん:05/01/08 13:49:44
int型のみでenterを押すまで数字を入力し続けるやり方がわかりません
1024を入力するとして、入力画面は
1
0
2
4(enter)
とはならず、
1024(enter)
といった感じにしたいです
642デフォルトの名無しさん:05/01/08 15:21:06
これはキーボードの操作方法を聞かれているのだろうか
「1」「0」「2」「4」の順にキーを叩いて, 最後に「Enter」キーを叩けばそのように入力できるはずだ.
643デフォルトの名無しさん:05/01/08 15:51:54
わかりづらい表現してすみません
要はenterを押すまで数字を入力し続けられ、画面に入力した数字がリアルタイムで出ればいいです
>>641はその際こうなって欲しいということです
644デフォルトの名無しさん:05/01/08 16:16:25
> char�str[10]�=�{""};
> こういう初期化方法って一般的ですか

間違い。コンパイラーはwarningださないが、splintはちゃんと指摘してくれる。
645デフォルトの名無しさん:05/01/08 16:17:56
それをやるなら
char str[10] = {0};
だろうなぁ
646デフォルトの名無しさん:05/01/08 16:28:48
または
char str[10] = "";
647デフォルトの名無しさん:05/01/08 16:31:49
>643
環境依存だけどgetchで
648デフォルトの名無しさん:05/01/08 17:02:59
> 下のmain()を使って、push(int v), int pop()の動作を確かめたいんですが

189ペイジ参照
649デフォルトの名無しさん:05/01/08 17:45:49
質問です。
hoge - piyo の値が10じゃなかったら
変数piyoに数値を変えて10になるようにしたいんですけど
どうやればいいんですか?
なんかすごく簡単そうだと思うけど、実際に組むと全然分りません
650デフォルトの名無しさん:05/01/08 17:48:52
if ((hoge - piyo) != 10)
 piyo = hoge - 10;

小学生レベルの式変形かと…
651デフォルトの名無しさん:05/01/08 17:49:41
>>650
ありがとうございます
652デフォルトの名無しさん:05/01/08 17:51:27
どこが「式変形」なのやら!
653デフォルトの名無しさん:05/01/08 18:10:20
piyo = hoge - 10;

これだけでいいじゃん
654デフォルトの名無しさん:05/01/08 18:40:34
>>649
>変数piyoに数値を変えて10になるようにしたい

この言葉、誰か日本語にしてよ。
655デフォルトの名無しさん:05/01/08 18:52:34
hoge と piyo の型が分からん以上こう書くしかないな…

if ((hoge - piyo) != 10) {
 piyo = hoge - 10;
 if ((hoge - piyo) != 10) {
  fprintf(stderr, "失敗したぞゴルァ\n");
 }
}
656デフォルトの名無しさん:05/01/08 19:54:43
struct HOGE { //★
   int foo ;
   int bar ;
} ;

int main(void) {
   static struct HOGE a ;
return 0 ;
}

みたいなことやっても、a が値を保持し続けてくれないんですが、なぜですか?
なにか良い方法はないでしょうか?
一番上の //★ のところにも static 付けてみたけど駄目でした。
どうしてもわかりません・・・
657デフォルトの名無しさん:05/01/08 19:57:37
>>656
保持し続けるってどういうこと?
658デフォルトの名無しさん:05/01/08 19:58:34
まさかプログラムを一度終了しても…ってことじゃないだろうな
659デフォルトの名無しさん:05/01/08 20:01:40
漏れの環境だとずっとゼロを保持してるぞ

マジレスするとプログラムを実行するごとに, 前の実行で設定した値を使いたいなら
ファイルに保存するなりしないといかん.
660デフォルトの名無しさん:05/01/08 20:03:41
うはは
661656:05/01/08 20:08:07
上のぶんではグローバルになっちゃってますが、
別関数の中で static a とかって宣言すると、静的な領域に確保されて、
関数が消滅した後も、その値が残ってるはずだと思ったんです。
構造体でも同じようなことがしたいのですが、無理なのでしょうか?

プログラムを終了してもって事じゃないけど、レスありがとうございます。
参考になるっす。
662デフォルトの名無しさん:05/01/08 20:11:35
>>661
言ってる意味がようわからん。ソース貼ってくれ
663603:05/01/08 20:16:46
はよ、応えてください。
664デフォルトの名無しさん:05/01/08 20:18:24
>>663
スレ違いにもかかわらず、もう答は出てると思うが。
665656:05/01/08 20:19:29
す、すいません。
なぜかちゃんと出来ました(;´Д`)
static がうまく機能しなかったんです。
666デフォルトの名無しさん:05/01/08 20:20:42
うまく機能してないのはテメェの臭いマンコだボケ
667デフォルトの名無しさん:05/01/08 20:26:43
俺のマンコも綺麗にしてくれ
668デフォルトの名無しさん:05/01/08 20:33:25
人それぞれだと思うけど、
@main()
Amain(void)
Bint main(void)
Cint main()
どれがいいですか?
ちなみに自分は@番がいいかな、とか思ってます。
669デフォルトの名無しさん:05/01/08 20:35:04
正解はB番なんだろうけど、
結局どれでもいいっすよね?
670デフォルトの名無しさん:05/01/08 20:42:19
>>668
省略すると返り値がvoidの場合とintの場合、(もしくはそれ以外)があるので、
int main(int argc, char* argv[])と書いた方が良い。
ちなみに、プログラムが終了時に何も返り値を返さない場合、他のシェルなどの
プログラムから扱い難くなります。
なるべくint型の返り値を返すようにした方が良いです。
671デフォルトの名無しさん:05/01/08 20:54:23
そうですか。
ttp://www9.plala.or.jp/sgwr-t/c/sec11.html
こちらのサイトの (2)関数の使用例 あたりで、return を省略したら
int 型になると、はっきり赤字で書いてあったので、鵜呑みにするところでした。
確かに、先のこととか考えると、670さんの表記の仕方の方が正しいと思えます。
大変参考になりました。
672603:05/01/08 20:58:33
ヴァージョンとかつけたことないんですか?>ALL
673デフォルトの名無しさん:05/01/08 21:01:34
>>670>>671は本を読み直せ。
674デフォルトの名無しさん:05/01/08 21:02:05
>>673
何の本を読めばいいんですか?
675デフォルトの名無しさん:05/01/08 21:04:34
>>671
return を省略したら int 型になる
676デフォルトの名無しさん:05/01/08 21:24:39
mainはint main(void)かint main(int argc, char *argv[])と同等のもの、
それ以外は処理系定義(つまりどこでも動くとは限らない)とされている
(5.1.2.2.1 Program startup -1より)

mainの戻り値がintとcompatibleな場合、returnを省略するとreturn 0;と
同等になる。mainの戻り値がintとcompatibleでない場合、戻り値は
明示されていない(unspecified)。
(5.1.2.2.3 Program termination -1より)
677デフォルトの名無しさん:05/01/08 21:27:49
>>676
ISOに返値型の省略についての記述ってあるのかな
以前探したけど見つからなかった罠…
678デフォルトの名無しさん:05/01/08 21:35:57
>>676
本当だ。
省略時のreturn 0;はC++だけだと思ってたらC99に加えられていたのね。
679デフォルトの名無しさん:05/01/08 22:05:40
ファイル内の特定のデータを削除したい時は
どうしたらいいんでしょうか?

ファイルポインタを
消したい文字の後ろに持ってきて
fputc('\b', fin);
で削除できるかと思ったのですが
できませんでした。
fputc(0x80, fin);fputc(0x10, fin);
どちらでも駄目でした。
バイナリファイルを扱いたいです。
680デフォルトの名無しさん:05/01/08 22:07:21
0x10は0x7Fの間違いです。
失礼しました。
681デフォルトの名無しさん:05/01/08 22:07:55
一度全部読み込んで、該当箇所を消して、ファイルに書き込む
682デフォルトの名無しさん:05/01/08 22:27:32
>679


りーどらいと汁!
683デフォルトの名無しさん:05/01/08 23:11:51
>>676
処理系定義の意味を歪曲してはいけない
未定義や未規定とは違う

 保 証 さ れ た 動 作

であることを銘記すべき
684デフォルトの名無しさん:05/01/08 23:23:11
>>676
処理系定義の意味を歪曲してはいけない
未定義や未規定とは違う

 保 証 さ れ た 動 作

であることを銘記すべき
685デフォルトの名無しさん:05/01/09 02:14:42
C言語でグラフィックスが書けるらしいのですが
ソース(三角形のプログラム)を拾ってきて貼り付けて実行しても
エラーしか出ません
何か必要なものがあるのですか
686デフォルトの名無しさん:05/01/09 02:15:35
>>685
ソースを見ろ
エラーを見ろ
足りないライブラリを追加しろ
687デフォルトの名無しさん:05/01/09 02:19:09
円周率πの値を計算するモンテカルロシミュレーションのプログラムが分かる
人是非教えてください。お願いします。
688デフォルトの名無しさん:05/01/09 02:26:58
家でも課題ができるようにとBorland C++ Compiler を
インストールしました
しかし学校ではUnixを使っているため
カンパイルから実行まで全てがさっぱりです
初心者向けで良いサイトがあれば教えてください
よろしくお願いします。
689デフォルトの名無しさん:05/01/09 02:29:01
>>687
マルチ氏ね
690デフォルトの名無しさん:05/01/09 02:32:29
>>688
>>2のcygwinとか入れればいいじゃんかよ
691デフォルトの名無しさん:05/01/09 02:40:50
Borlandの使い方も覚えればいいじゃんかよ
692デフォルトの名無しさん:05/01/09 02:41:03
カンパイルとは・・・
http://www.google.co.jp/search?hl=ja&ie=Shift_JIS&q=%83J%83%93%83p%83C%83%8B&btnG=Google+%8C%9F%8D%F5&lr=
上から2番目が答えだ。今日からあなたもカンパイル。
693デフォルトの名無しさん:05/01/09 02:44:36
>>687
じゃ、まずはモンテカルロという町はどういうところか、ということをレポートに
まとめなさい。
694デフォルトの名無しさん:05/01/09 02:47:00
public class モンテカルロ extends 街 implements π {
695デフォルトの名無しさん:05/01/09 04:27:50
構造体の宣言そのものを関数内staticにしてしまったのでは?
その構造体の型による「変数」の宣言を関数内のstaticにしろ > ぼけ
696デフォルトの名無しさん:05/01/09 04:49:17
今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?
ですが、どこが難しいのかよく解からなく、逆に難しいとされている事を理解できてないのか?と不安です。
たしかに、ポインタの有用な使い方が思い当たらないってのはあるんですが、基本的なことは単純なような気がします。
そこで、難しいとされている理由を教えてください。
*の使い方が、若干ややこしいという事ですか?
697デフォルトの名無しさん:05/01/09 04:56:04
あれを難しいというのは最初の30分くらいで、それ以降も難しいと騒いでるのは単に向いてない人だけだよ
698デフォルトの名無しさん:05/01/09 08:13:46
int findgoal(int x,int y)
{
int i;
if(x == GOAL_X && y == GOAL_Y)
{
printf("Goal in!!\n");
printmaze();
return;
}
maze[y][x] = KITA;
for(i=x;maze[y][x+1] == AKI;i++)x=x+i;
for(i=y;maze[y+1][x] == AKI;i++)y=y+i;
for(i=x;maze[y][x-1] == AKI;i--)x=x+i;
for(i=y;maze[y-1][x] == AKI;i--)y=y+i;
printf("I can not find goal.\n");
maze[y][x] = AKI;
}
迷路の全ての経路探す関数ですが、これって再帰使わないで解けますか?
699デフォルトの名無しさん:05/01/09 08:16:20
>>698
書けません。次。
700デフォルトの名無しさん:05/01/09 08:17:18
解けるけど使った方が遙かにいいだろ
再帰を使ういい例だ
701デフォルトの名無しさん:05/01/09 08:19:13
使わないで解けと強要されております。
702デフォルトの名無しさん:05/01/09 08:35:30
再帰使わないと書けないほど長いプログラムなんですか?
何か解くヒントくれませんかー
703デフォルトの名無しさん:05/01/09 11:04:10
宿題スレにいったほうが早い
704デフォルトの名無しさん:05/01/09 11:55:09
質問です。
変数が5以上だったら変数の値-5の数値で、
10以上だったら-10、15以上だったら-15と言った感じで、
変数が5の倍数の数値以上だったら、その一番大きい倍数を
引いた数を求めたいんですけど、どうすればいいんですか?
705デフォルトの名無しさん:05/01/09 11:56:41
>>704
v = v % 5;
706デフォルトの名無しさん:05/01/09 11:59:34
>>705
v %= 5;
707デフォルトの名無しさん:05/01/09 12:02:52
そういえば%=って使ったこと無い。
708デフォルトの名無しさん:05/01/09 12:34:55
>702
再帰関数の中でそれ自体を引数を変えて呼び出し、返値を使う。ただし仮引数をポインタの入出力にしておけ。
709デフォルトの名無しさん:05/01/09 12:38:44
>704
%の実装は、*と/の組み合わせより遅いことが多い。
-(v/5)*5
710704:05/01/09 12:43:25
あ、ちょっと説明が間違ってました。
例えば、変数の値が12のとき、求めたい数は2ということです。
711デフォルトの名無しさん:05/01/09 12:45:47
>>709
遅かったらコンパイラが最適化でそっちに直すだろう。

ところでx86だと1命令で商と余り同時に得られるんじゃなかったっけ?
だからx86ではそこへ乗算をする分お前の方が遅いと思うんだけど。

>>710
if ((v %= 5) == 0)
    v= 5;
712デフォルトの名無しさん:05/01/09 12:48:10
>>709
% の計算量は / と本質的に同じ
713704:05/01/09 12:57:06
あー、ちょっと例が悪かったです。
例えば変数の値が29だったら、
29の中で一番大きい5の倍数は25ですよね。
で、29-25を計算して、求める数値は4という意味だったんです。
この、25の部分を求める方法を知りたいんです。
714デフォルトの名無しさん:05/01/09 13:01:47
v = (v/5)*5;
715704:05/01/09 13:06:24
>>714
え?これでは求めることは出来ませんよね?
vを5で割って、後で5をかけてるから、最初の値に戻るような・・・
716デフォルトの名無しさん:05/01/09 13:06:56
>>715
アフォ やってみてから言え
717704:05/01/09 13:09:26
理論が分らないと意味ないよ
電卓で計算しても、最初の数値に戻りますよ。
718デフォルトの名無しさん:05/01/09 13:10:31
>>717
基礎からちゃんと教えて貰えるとでも思っているのか?
719デフォルトの名無しさん:05/01/09 13:10:38
C言語の話じゃないんか?
720デフォルトの名無しさん:05/01/09 13:12:03
29/5==5
5*5==25
721デフォルトの名無しさん:05/01/09 13:12:35
>>717
死んだ方がいいな。
722704:05/01/09 13:13:09
え!Cではそうなるんですか!?
すみませんでしたw
723デフォルトの名無しさん:05/01/09 13:25:17
>698
すいません、プログラム間違ってました。
あれじゃ答え出ませんね。
訂正します。
maze[y][x] = KITA;
if(maze[y][x+1] == AKI)
findgoal(x+1,y);
if(maze[y+1][x] == AKI)
findgoal(x,y+1);
if(maze[y][x-1] == AKI)
findgoal(x-1,y);
if(maze[y-1][x] == AKI)
findgoal(x,y-1);
printf("I can not find goal.\n");
maze[y][x] = AKI;
これで再帰を使わないで関数findgoal()を書き換えるんです。
あれ、これって>708さんの言ってたことかな…
724デフォルトの名無しさん:05/01/09 13:55:41
>708さんのアドバイスで何とか解けました。
あっざーす!
725デフォルトの名無しさん:05/01/09 14:32:56
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
726デフォルトの名無しさん:05/01/09 14:35:07
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
727デフォルトの名無しさん:05/01/09 14:38:23
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
728デフォルトの名無しさん:05/01/09 14:43:06
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
729デフォルトの名無しさん:05/01/09 14:43:07
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
730デフォルトの名無しさん:05/01/09 15:21:15
 「 \r 」ってどういうときに使うんですか?
色々調べたけど 「 復帰 」 としか書かれていなくて
肝心の説明がないので困っています。
731デフォルトの名無しさん:05/01/09 15:22:52
>>725
鯖の調子が悪いときに投稿しまくりましたな。

>>730
試してみては?
732デフォルトの名無しさん:05/01/09 15:23:23
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
733デフォルトの名無しさん:05/01/09 15:25:11
>>730
くるくる
734デフォルトの名無しさん:05/01/09 15:26:45
>>730
すれ違いです
735デフォルトの名無しさん:05/01/09 15:29:21
>723
のやつ、誰か木構造で出来るつわものの方いませんか?
736デフォルトの名無しさん:05/01/09 15:38:17
>  「 \r 」ってどういうときに使うんですか?
> 色々調べたけど 「 復帰 」 としか書かれていなくて

ttyのキャリッジを左に戻すときに使います。

OS/9とかはこれ1つでテキストファイルの行の区切りでもありましたね。
737デフォルトの名無しさん:05/01/09 15:49:12
>>736
片寄った知識ですね
738デフォルトの名無しさん:05/01/09 15:50:45
>>698
アンタひょっとして群馬の大学に通ってないか?
いや念のためだ。
739デフォルトの名無しさん:05/01/09 15:53:40
隣接した未踏座標をキューかスタックに突っ込めばいいだけ
740デフォルトの名無しさん:05/01/09 16:01:22
>>730
端末の仕様による
741デフォルトの名無しさん:05/01/09 16:04:54
端末とは限らないだろう。
742デフォルトの名無しさん:05/01/09 16:12:04
整数aとbの値の交換を行うとき(a!=bです)に、
a ^= b ^= a ^= b というのは副作用の関係で良くないと聞きましたが、
a ^= ( b ^= ( a ^= b ) ) にすれば、
a ^= b, b ^= a, a ^= b と同じ動作を期待していいんでしょうか?
743デフォルトの名無しさん:05/01/09 16:30:51
asm
{
 push a;
 push b;
 pop a;
 pop b;
}
744デフォルトの名無しさん:05/01/09 16:34:51
そこまでして^を使いたがる理由が理解できない
745デフォルトの名無しさん:05/01/09 16:36:08
聞かれたことに黙って答えろボケ
746デフォルトの名無しさん:05/01/09 16:39:17
あっざーす!
747デフォルトの名無しさん:05/01/09 16:41:29
>>742
1つの式の中で副作用を受けるオブジェクトが2度参照されているようだが
748ぼるじょあ ◆yBEncckFOU :05/01/09 17:07:26
うっざーす!!
749デフォルトの名無しさん:05/01/09 17:32:45
>>742
根本的に、優先順序と評価順序の区別がついていない。
括弧は優先順序を変更できるが、評価順序は変更できない。
a = b ^ ( c ^ d ) という式に関して
b と c^d とで ^ 演算が実行されることは、優先順序により保証される。
だけど、b,c*d の順番で評価されるか c*d,b の順で評価されるかはわからない。
750デフォルトの名無しさん:05/01/09 18:18:19
#include<stdio.h>
#include<conio.h>

void main(void)
{
int ch = 'a' ;

_ungetch(ch);
_ungetch(ch);
_ungetch(ch);
_ungetch(ch);
}

次の読み込みを行う前に 2 回以上 _ungetch 関数を呼び出すとエラーとなります。
って書いてあるけどエラーが出ません。エラーの出し方教えてください。
751デフォルトの名無しさん:05/01/09 18:24:31
>>750
戻り値
どちらの関数も、正常に終了すると文字 c を返します。エラーが発生すると、_ungetch は EOF を返し、_ungetwch は WEOF を返します。
って書いてあるだろ。
752デフォルトの名無しさん:05/01/09 18:39:29
ホントだ! やっと意味がわかりました。ありがとうございました。
753windows環境です:05/01/09 18:51:30
別のプログラムを呼び出す際
そのプログラムの標準入出力を切り替えるには
どうしたらよいのでしょうか?

754デフォルトの名無しさん:05/01/09 18:55:58

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

int main(void)
{
int check ;
while(!_kbhit()){
printf("loop\n") ;
}
fflush(stdin) ;
check = _getch() ;
printf("%d\n",check) ;

return 0 ;
}

fflushのところで、入力した値をクリアしてると思ったんですけど、
getchで取り出してみると、値が残ってます。この値をクリアしたいんですがどうすればいいんですか。
kbhit()で捕まえたこの値は、stdinじゃないとすれば、どこに存在するのでしょう?

755デフォルトの名無しさん:05/01/09 18:58:05
>>754
Using fflush() for input streams especially the standard input stream (stdin)
is undefined and is not supported and will not flush the input buffer.
756デフォルトの名無しさん:05/01/09 19:00:13
このプログラムはある系列(SEEDというグローバル変数)の[0,1]なる擬似一様乱数
を発生し表示するプログラムなんですけど、これを参考にして円周率πの値を計算
するモンテカルロシミュレーションのプログラムが作れません。教えてください。
よろしくお願いします!


#include<iostream>
#include<cstdlib>
#define SEED 100000

int main(int argc, char **argv)
{
unsigned int SEED;
unsigned int MAXNUM;

if(argc != 3){
cerr << "USAGE:uniform SEED MAXNUM\n";
exit(1);
}

SEED = atoi(argv[1]);
MAXNUM = atoi(argv[2]);
srand(SEED);
for(unsigned int i =1; i <= MAXNUM; i++){
double x = (double)rand() / (double)RAND_MAX;
cout << i << '\t' << x << '\n';
}
return(0);
}
757デフォルトの名無しさん:05/01/09 19:03:05
スレ違い。
宿題スレ逝け
758デフォルトの名無しさん:05/01/09 19:04:46
>753
新プロセスのIOを無名のパイプで繋げて、パイプの端を読み書きしてみろ。CreateProcess,CreatePipe,WriteFile,ReadFileを参照
759デフォルトの名無しさん:05/01/09 19:17:02
>>725-729
ほとんどの参考書は知ったかぶりだという事ですね
760デフォルトの名無しさん:05/01/09 19:22:38
>>759
難しいかどうかは、それを言う人の主観だから、第三者がどうこう言えることじゃない。
だけど、たかがあんなのでめげるようじゃ先が思いやられることだけは間違いない。
     ^^^^^^^^^^^^^^^^
参考書の筆者の話にすり替わりかけているが、騙されんじゃねえぞ。
761デフォルトの名無しさん:05/01/09 19:24:17
初体験で失敗するとさ、インポになっちゃうんだよ。
だから優しく教えてくんなきゃイヤ。
762デフォルトの名無しさん:05/01/09 19:51:46
つまり>>754は、なすすべ無しと言う事で?
763デフォルトの名無しさん:05/01/09 20:04:39
>754
kbhitで食い潰すか、rewind呼ぶんだったかな。

BIOSなどのキーボードバッファに残る
764デフォルトの名無しさん:05/01/09 20:12:28
ということは、ここに書いてあることは全部嘘なんですか?
http://www.matx.org/REFS/node84.htm
標準入力=stdin って思ってる、自分が間違ってんのかな?

rewindでも駄目でした。_flushallでも駄目でした。

そのBIOSなどのキーボードバッファにアクセスするには
どうしたらいいでしょう?
765デフォルトの名無しさん:05/01/09 20:13:38
>>764
このスレで答える範囲内では無い。
766デフォルトの名無しさん:05/01/09 20:15:36
rewindもfflushも、stdinで期待通りの動作をするのはVCだけ
767デフォルトの名無しさん:05/01/09 20:23:12
>>765
では、どこのスレで質問すればよろしいのでしょう?

>>766
自分はVCで、期待通りの動作をしてくれないので質問してみました。
768デフォルトの名無しさん:05/01/09 20:25:26
かなり変な環境じゃないのか。
ともかくキーが押されたら元に戻るまで待てばどうだ?
769デフォルトの名無しさん:05/01/09 20:30:22
>>767
>1は読んだ?
770デフォルトの名無しさん:05/01/09 20:31:05
とりあえず、環境依存スレへ。
というのは、元々kbhit()というのが、DOS(コマンドプロンプトじゃないよ)で
BIOSコールでキーボード状態を知るためのものだから。
同様に標準出力を用いずにBIOS等で入力/表示するのが、conio.hにある関数群。
互換性のために、Windows環境でも残されている。
そして、これらは、stdio.hの関数群とは関係ないし、同時に使用してもいけない。
771デフォルトの名無しさん:05/01/09 20:34:47
キーボードバッファは間違いだった。失礼。

//キー押しが来るまで待つ
while(!_kbhit());
//キー押しが戻るまで待つ
while(_kbhit());
772デフォルトの名無しさん:05/01/09 20:35:37
元に戻るまで待つとはどういう事ですか?
今確認してみたんですが、やはり駄目です。
やっぱりgetch()でクリアする以外方法はないんですかね?
皆様ならば、getch()の中身を調べて、どこにアクセスして値を取り出しているか、
とかわかると思ったんです。
773772:05/01/09 20:40:33
早とちりレス失礼しました。

>>771
なるほど。どうも、レスありがとうございます。

>>770
どうして、そんな事がわかるんですか?
ヘルプ見てもそんな事は一言も書いてなかったです。

何にしても、よくわかりました。
本当にありがとうでした。
774デフォルトの名無しさん:05/01/09 20:53:19
>>773
喧嘩売ってるとしか思えないな
氏ねや
775デフォルトの名無しさん:05/01/09 21:32:04
相変わらず、バカが多いな
776デフォルトの名無しさん:05/01/10 02:56:56
#defineを使って関数名の一部を変更したいんですが

#define aaa bbb
func_aaa();

のようにしてもfunc_bbb()にはなってくれません。
どうすればいいでしょうか?
777デフォルトの名無しさん:05/01/10 03:36:57
#define func_aaa func_bbb
778デフォルトの名無しさん:05/01/10 05:11:47
#define func_(x) func_##x
func_(aaa)() ;
じゃ不満かい?
779デフォルトの名無しさん:05/01/10 05:20:46
> そして、これらは、stdio.hの関数群とは関係ないし、同時に使用してもいけない。

これ知ったかぶり。
前半はともかく、後半がデマ。
実際同時につかうことはよくある(いまでも)。DOSの時代もよく同時につかわれていた。
780デフォルトの名無しさん:05/01/10 05:22:02
>>753
popen関数を使う。
781デフォルトの名無しさん:05/01/10 11:05:50
>>779
同時に使用できない、或いは使用すると不都合がある関数はいくつもあるよね。
それをデマボーグと言うのは言いすぎだと思うけど。

#つーか、未だに使っているのか ┐(´・ω・`)┌
782デフォルトの名無しさん:05/01/10 11:07:55
783デフォルトの名無しさん:05/01/10 14:19:24
入力した文字列がekeyと一致した時にbreakさせたいのですが、
うまくいきません。どこに問題があるのでしょうか?

while (1) {
    fgets(text, 256, stdin);
    if ((strcmp(text, ekey)) == 0 )
        break;
    fprintf(fp, "%s", text);
}

/* char text[256];
char *ekey = "//end" */
784デフォルトの名無しさん:05/01/10 14:23:07
>783
fgetsは改行文字'\n'も格納する
785783:05/01/10 14:28:50
>>784
即レスありがとうございます、助かりました。
786デフォルトの名無しさん:05/01/10 14:42:07
printfが何回呼ばれたかとかいう具合に、
どの関数が何回呼ばれたかわかる、又はそれに類似した関数って無いですか?
787デフォルトの名無しさん:05/01/10 14:46:30
>786
static int c;
#define printf c++,printf
788デフォルトの名無しさん:05/01/10 14:48:01
ない
789デフォルトの名無しさん:05/01/10 14:51:50
>>786
関数全てにstaticなカウンタを設けないと。
790デフォルトの名無しさん:05/01/10 14:52:49
>787
これ、ありがたく使わせていただきます。
791デフォルトの名無しさん:05/01/10 14:54:20
DevPartnerStudio買えば、もれなく関数カウンタがついてきます
792デフォルトの名無しさん:05/01/10 14:56:22
>790
コンパイラのオプションにクロスレファレンスがないか?
最適化時に結構使えるぞ
793デフォルトの名無しさん:05/01/10 14:57:09
>>781
>デマボーグ

サイボーグの親戚か?
794デフォルトの名無しさん:05/01/10 14:58:10
《ドイツ語》 Demagogie
795デフォルトの名無しさん:05/01/10 15:45:54
> どの関数が何回呼ばれたかわかる

profilerを使え!
796デフォルトの名無しさん:05/01/10 17:16:59
>>781
conio と stdio が連携してない時点でクソリブの烙印くれたい
797デフォルトの名無しさん:05/01/10 17:21:25
左辺値ってなんですか?
変数のことですか?

*(int *)0
は左辺値ですか?
798デフォルトの名無しさん:05/01/10 17:24:58
>>797
非定数のこと
変数も含む
799デフォルトの名無しさん:05/01/10 17:25:20
>797
左辺値(lvalue)は、代入の左側に来る式のこと。
800デフォルトの名無しさん:05/01/10 17:26:07
>*(int *)0
>は左辺値ですか?

びっくりするだろうけど、
これも左辺値だよ。
キャストで代入可能になったからね。
801デフォルトの名無しさん:05/01/10 17:26:34
ageてる馬鹿がいるな
802デフォルトの名無しさん:05/01/10 17:28:52

int a[10];

*(int *)a;
これは左辺値ですか?
803デフォルトの名無しさん:05/01/10 17:29:24
ですよ。
804デフォルトの名無しさん:05/01/10 17:29:50
つまり代入可能型にキャストすれば何でも左辺値ですか?
805デフォルトの名無しさん:05/01/10 17:30:41
int i;

(int)i = 1;

これは左辺値ではありません。
806デフォルトの名無しさん:05/01/10 17:33:23
-2["hoge"+3]
は左辺値ですか?
807デフォルトの名無しさん
>>804
その通りです。
左辺値は変数だけとは限りません。

enum {
FALSE, TRUE
};

*(int *)FALSE = 1;

これも左辺値です。