C言語なら俺に聞け(入門篇) Part 12

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語の入門者向け解説スレです。 
・C++言語はスレ違いです。 
・分からない事をなるべく詳しく書いて下さい。 
・ソースコードを晒すと答えやすくなるかもしれません。 
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 

前スレ 
C言語なら俺に聞け(入門篇) Part 11
http://pc11.2ch.net/test/read.cgi/tech/1176800483/

過去スレ
Part 1 ttp://pc8.2ch.net/test/read.cgi/tech/1146700389/ Part 2 ttp://pc8.2ch.net/test/read.cgi/tech/1153818463/
Part 3 ttp://pc8.2ch.net/test/read.cgi/tech/1160682950/ Part 4 ttp://pc8.2ch.net/test/read.cgi/tech/1162999861/
Part 5 ttp://pc8.2ch.net/test/read.cgi/tech/1165022193/ Part 6 ttp://pc10.2ch.net/test/read.cgi/tech/1167325490/
Part 7 ttp://pc10.2ch.net/test/read.cgi/tech/1170064980/ Part 8 ttp://pc11.2ch.net/test/read.cgi/tech/1171946674/
Part 9 ttp://pc11.2ch.net/test/read.cgi/tech/1173284217/ Part 10 ttp://pc11.2ch.net/test/read.cgi/tech/1174290325/

関連スレ
C/C++の宿題を片付けます 86代目
http://pc11.2ch.net/test/read.cgi/tech/1176996941/
くだすれC言語(初心者用) Part.2
http://pc11.2ch.net/test/read.cgi/tech/1172099763/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/l50
はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/l50

【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
2デフォルトの名無しさん:2007/05/08(火) 19:41:30
前スレ>>996
char c;
char str[100];
もしかしてこのcとstrが同じだと思ってるとか?
3デフォルトの名無しさん:2007/05/08(火) 19:45:33
996じゃないけど

C言語の場合
char c; /* 文字型の宣言 */
char str[100]; /* 文字列型の宣言 */

Java とか C# とか
char c;
string str;

こういうことなのかな?なんか変なかんじがする…
4デフォルトの名無しさん:2007/05/08(火) 19:47:26
その本はstrがポインタというような事を言ってるはず。
さすがにcがポインタだとは言わないだろ。
5デフォルトの名無しさん:2007/05/08(火) 19:48:20
>>2
違うんですか?
6デフォルトの名無しさん:2007/05/08(火) 19:48:38
str はある意味ポインタと言えなくはないが、
少なくともポインタ変数ではないし、
ポインタと説明してる紛らわしい本はあって欲しくない。

文字列をポインタを通して渡す、程度の話をしてるんでないかな。
7デフォルトの名無しさん:2007/05/08(火) 19:50:27
前スレ975は期待する動作と実際の動作を書けよ。
上手く動かないだけじゃ何を意味してるのか曖昧だぞ。
8デフォルトの名無しさん:2007/05/08(火) 19:52:17
>>3
Cには文字型も文字列型もない
9デフォルトの名無しさん:2007/05/08(火) 19:56:10
>>7
期待している動作
printf ("%d\t%d\n",ran,kai);を10回実行し、11回目のループ時にEndを吐き出す

表示例は、以下の様な感じ
32  1
1   2
176 3
43  4
22  5
11  6
299 7
231 8
32  9
98  10
End

実際の動作
何も表示されない

やっぱりgotoじゃ無理なんですかね?
10デフォルトの名無しさん:2007/05/08(火) 19:56:59
前スレ>>990
授業とかはあくまで補助や学習スケジュール管理と考えたほうがいい
専門学校なんかは1年〜数年単位ですべてが学べるようになっているはずだから
教え方や進歩速度に不満があるならとりあえず教科書読んで池
ポインタもそのうちしっかりやるだろ
11デフォルトの名無しさん:2007/05/08(火) 19:58:55
全ての制御文は if と goto で書けるから
goto で無理なんてことはあり得ない。
12デフォルトの名無しさん:2007/05/08(火) 20:05:00
プロンプトのコピペ

C:\KD\sk\practis\goto>bcc32 goto.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
goto.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

C:\KD\sk\practis\goto>goto

C:\KD\sk\practis\goto>goto

C:\KD\sk\practis\goto>
13デフォルトの名無しさん:2007/05/08(火) 20:11:09
practisだから失格
14デフォルトの名無しさん:2007/05/08(火) 20:11:52
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
 int ran;
 int kai;

 srand((unsigned)time(NULL));

 kai = 0;
LOOP:
 if(kai >= 10) { goto END; }
  ran = rand() % 300 + 1;
  printf("%d\t%d\n", ran, kai);
  ++kai;
 goto LOOP;
END:
 puts("End");

 return 0;
}
15デフォルトの名無しさん:2007/05/08(火) 20:17:03
>>14
>>12と同じ状況になりますが・・・
16デフォルトの名無しさん:2007/05/08(火) 20:18:16
ちゃんとコンパイルしてるか?
17デフォルトの名無しさん:2007/05/08(火) 20:19:16
どうせどっか書き写し間違えてんじゃないの?
18デフォルトの名無しさん:2007/05/08(火) 20:19:48
>>15
っ .\goto
っ goto.exe
19デフォルトの名無しさん:2007/05/08(火) 20:20:51
訂正
goto.exe

.\goto.exe
20デフォルトの名無しさん:2007/05/08(火) 20:21:36
>>16-17
してますよw
証拠
http://www.imgup.org/iup378065.png

因みにclでコンパイルしても結果は同じでした
これがVISTA QUALITY?
21デフォルトの名無しさん:2007/05/08(火) 20:23:51
>>18-19
しまった、gotoはコマンドなのか・・・
これで解決しました

済みませんでしたあああ(ノ-`)
22デフォルトの名無しさん:2007/05/08(火) 20:24:16
>>20
プロンプトのコマンドと被るような名前をやめればおk
copy dir del mkdir などなど
23デフォルトの名無しさん:2007/05/08(火) 20:25:54
そういうオチかw
なるほど
24デフォルトの名無しさん:2007/05/08(火) 20:26:06
さすがにファイル名をgotoにしてるとは誰も予想できなかったなw
25デフォルトの名無しさん:2007/05/08(火) 20:29:01
いやいや、>>12 で気づくべきだった。
俺も失念してたぜ。
26デフォルトの名無しさん:2007/05/08(火) 20:29:27
完全に予想外だったぜ…
27デフォルトの名無しさん:2007/05/08(火) 20:30:45
.exeつけたら全スレのソースでも動きました!!
感激です><

因みに、ファイル名の8割が関数名なので、こういうことは偶にあったんですが
今回はコマンドエラーが出なかったので全然気付きませんでした(ノ-`)
28デフォルトの名無しさん:2007/05/08(火) 20:32:04
なるほど べんきょうになったw
ついでにpractisも直したといたほうがいいぞw
29デフォルトの名無しさん:2007/05/08(火) 20:39:29
>>27
全スレ→前すれ

>>28
>>13で言われて気付いたので直そうとしたんですが
システム系統以外、全部落としてもシステムから蹴られるので
今度再起動した時にでも直しておきます
30デフォルトの名無しさん:2007/05/08(火) 20:53:51
神代刹那?
31デフォルトの名無しさん:2007/05/08(火) 21:14:36
webマトリックスにて、
セッションによるページ間のデータの転送の仕方がわからないのですが・・・

例えば、BMP(体脂肪の奴)を測定するプログラムで、
1ページ目で体重・身長を入力して
2ページ目で結果を表すという流れなんですが・・・


色々調べたり試行錯誤してみても全くわかりません。
ご教授願えませんか??
32デフォルトの名無しさん:2007/05/08(火) 21:22:56
>>31
C関係ない気がするが適当にエスパーして答えとく
・1ページ目で入力されたデータを何らかの識別子と共に保持しておく
・2ページ目にその識別子を埋め込んでおく
・2ページ目からの入力がきたら、識別子から保存してるデータと関連づける
33デフォルトの名無しさん:2007/05/08(火) 21:25:16
BMI?
34デフォルトの名無しさん:2007/05/08(火) 21:44:19

       FOX★公認!!!

俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
http://wwwww.2ch.net/test/read.cgi/news4vip/1178602852/

1. ポーランド  139,797,680
2. チリ     137,040,439
3. ★日本    86,475,213★
4. イスラエル  80,930,530
5. スロベニア  57,137,042
6. フィンランド  40,857,499

石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である

・戦場
http://www.clickclickclick.com/default.asp
・まとめサイト
http://www33.atwiki.jp/clickvip/
35デフォルトの名無しさん:2007/05/08(火) 23:50:42
http://www.uploda.org/uporg802717.c.html
配列の大きさをただしく認識してくれないのですが、どこが間違っていますか?
内積を計算するプログラムです。
C言語むずい^^;
36デフォルトの名無しさん:2007/05/08(火) 23:52:25
>>35
スコープ外で宣言された配列の大きさは取得できない
関数引数で渡されるのはあくまで配列先頭へのポインタのみ

それができるならライブラリ関数でわざわざバッファサイズ指定したりしないだろ?
37デフォルトの名無しさん:2007/05/08(火) 23:53:06
38デフォルトの名無しさん:2007/05/09(水) 00:02:12
しかしout ofの方のsizeof(v1)でいれてるv1というのもポインタのはずだ。
だったらこっちも4とでるべきなのでは?
39デフォルトの名無しさん:2007/05/09(水) 00:05:53
>38
>36
40デフォルトの名無しさん:2007/05/09(水) 00:07:39
サブルーチン限定仕様なんですね。
では、実際この関数で配列の大きさを求めるにはどうしたらいいのでしょう?
rubyでは.sizeでよかったんですが・・計算系はruby遅すぎて;;
41デフォルトの名無しさん:2007/05/09(水) 00:09:49
関数内で求めなければいい
42デフォルトの名無しさん:2007/05/09(水) 00:11:32
それじゃ関数じゃありません。
43デフォルトの名無しさん:2007/05/09(水) 00:14:02
ruby でもやってろw
44デフォルトの名無しさん:2007/05/09(水) 00:18:10
いやlinuxをしててC言語が必要なのでここは譲れません。
関数内でもいけるはずです。どうしたらいいでしょう?
もしやひとつひとつ取得していく系?
45デフォルトの名無しさん:2007/05/09(水) 00:19:06
>関数内でもいけるはずです
だからできんといっとろーが
46デフォルトの名無しさん:2007/05/09(水) 00:20:20
完全に不可能なんですか?
47デフォルトの名無しさん:2007/05/09(水) 00:21:01
不可能です。
48デフォルトの名無しさん:2007/05/09(水) 00:23:10
だから普通は配列の要素数も引数に与える
49デフォルトの名無しさん:2007/05/09(水) 00:23:18
count = 0

for(i=0; a[0]!=null; i++){
count++;
}

などは?
50デフォルトの名無しさん:2007/05/09(水) 00:23:44
null って何だよ。
51デフォルトの名無しさん:2007/05/09(水) 00:24:11
>>48
配列の要素数が未定なのですが?
ベクトルとベクトルを渡したら内積が得られる。
引数は2つのはずです。
52デフォルトの名無しさん:2007/05/09(水) 00:25:12
nilか。
nullじゃなかった・・・
53デフォルトの名無しさん:2007/05/09(水) 00:27:39
何言ってるか分からんが
無理なもんは無理 まじで無理
54デフォルトの名無しさん:2007/05/09(水) 00:27:45
疲れるなあ・・・。
政府の Ruby 計画が心配になってきたぞ。

>>51
要素数はどこかで分かってるはずだ。
inner_product 内に入ってしまうとどうやっても分からないから、
inner_product に要素数を渡すようにするしかない。
55デフォルトの名無しさん:2007/05/09(水) 00:27:46
nilって何だよ。
56デフォルトの名無しさん:2007/05/09(水) 00:30:17
(sizeof(配列)/sizeof(配列の要素))を引数に入れとけばいいんじゃ?
57デフォルトの名無しさん:2007/05/09(水) 00:30:17
>>51
ならその2つの要素数を渡す
58デフォルトの名無しさん:2007/05/09(水) 00:31:21
>>52
Cに nil はない
59デフォルトの名無しさん:2007/05/09(水) 00:31:24
引数が増えるのが嫌だったら、
値と要素数を持った構造体を作って管理しとけ。
60デフォルトの名無しさん:2007/05/09(水) 00:34:12
もうvectorクラスみたいなの自作するしか
61デフォルトの名無しさん:2007/05/09(水) 00:34:51
自作っつーか、ライブラリ拾ってこい。
62デフォルトの名無しさん:2007/05/09(水) 00:34:53
何こいつ
理解力無さ杉
63デフォルトの名無しさん:2007/05/09(水) 00:40:54
rubyのようにCもできると思っているんだろうね
rubyに汚染されすぎ
64デフォルトの名無しさん:2007/05/09(水) 00:44:37
rubyでは隠蔽されていた色々な事に全く気づいてなかったんだねぇ
65デフォルトの名無しさん:2007/05/09(水) 00:55:38
Cじゃそういったことはすべて自分で実装するかライブラリ使わなきゃいけないってのに
動的に確保したメモリも開放しなさそう
66デフォルトの名無しさん:2007/05/09(水) 00:59:23
自分で実装ってインラインアセンブラ使ったりするの?

と初心者が申しております
67デフォルトの名無しさん:2007/05/09(水) 01:03:26
そうそう、便利≒隠蔽の対価として、性能のトレードオフ
性能を求めるならば、対価の代償として、より低級言語のしがらみ、
メモリの動き、キャッシュの動き、CPUのプリフェッチぐあいを理解しないと速くはならないね
68デフォルトの名無しさん:2007/05/09(水) 01:10:57
もうおとなしくC++ & STL使うといいよ

#include <vector>
#include <iostream>

typedef std::vector<double> vec_t;
typedef unsigned int UINT;

double inner_product (const vec_t& a, const vec_t& b) {
typedef vec_t::size_type vec_sz;
vec_sz len(a.size());
std::cout << "length of a:" << (UINT)len << ", size of a[0]:" << (UINT)sizeof(a[0]) << '\n';
if (len != b.size()) {
std::cerr << "can not define inner product of these vectors" << std::endl;
return 0;
}
double ip(0);
for (vec_sz i = 0; i < len; ++i)
ip += a[i]*b[i];
return ip;
}
int main () {
// 1.3,0,1
vec_t v1;
v1.push_back(1.3); v1.push_back(0); v1.push_back(1);
vec_t v2;
v2.push_back(2); v2.push_back(3); v2.push_back(4);
std::cout << "length of a:" << (UINT)v1.size() << ", size of a[0]:" << (UINT)sizeof(v1[0]) << '\n';
std::cout << inner_product(v1,v2);
return 0;
}
69デフォルトの名無しさん:2007/05/09(水) 01:13:11
>>51
何言いたいのか意味不明だが、これで納得できないなら、そういうことが出来る他の言語使ってろ
読みづらいがJISのホームページでPDF化された奴も見れるから確認なり好きにしろ

6.5.3.4 sizeof演算子の注釈(84)
配列型又は関数型をもつと宣言された仮引数に適用する場合、sizeof演算子は、
型調整された(ポインタ)型の大きさを与える(6.9.1参照)。
                                    (JIS X 3010:2003より引用)
70デフォルトの名無しさん:2007/05/09(水) 01:29:15
>>68
要素数が欲しければtemplate使って配列の参照を引数にするだけでいいだろ。

まぁ俺ならそれ以前にstd::inner_product使うけど。
71デフォルトの名無しさん:2007/05/09(水) 02:47:13
テンプレート使ってやってみました
漏れの知識の程度じゃ読みにくくなるだけしたまる
#include <stdio.h>
#include <numeric>
#define ARRAY_SIZE(X) (sizeof(X)/(sizeof(X[0])))
#define INNER_PRODUCT(x,y) ( g( (x),(y), ( f((x),(y)) ) ) )
template <class T> size_t f(const T& a, const T& b) {
size_t len=0;
len = (ARRAY_SIZE(a));
if (len != ARRAY_SIZE(b)) {
puts("can not define inner product of these vectors");
return -1;
}
else
return len;
}
float g(const float a[], const float b[], size_t len) {
if (len == -1)
return 0;
float ip(0);
for (size_t i = 0; i <len; ++i)
ip += a[i]*b[i];
return ip;
}
int main (void){
float v1[3]={1.3f,0,1}; float v2[3]={2,3,4};
printf("out of function: %d,%d\n", sizeof(v1), sizeof(v1[0]));
printf("%f\n", INNER_PRODUCT(v1,v2) ) ;
return 0;
}
72デフォルトの名無しさん:2007/05/09(水) 02:48:49
float なんて精度悪いもの使うなよ。
double 使え、double 。
73デフォルトの名無しさん:2007/05/09(水) 07:18:26
>>71
訳の分からん自作マクロ使って可読性落とすぐらいなら
上で書かれてるように、Vector型とstd::inner_product()使えばいいだろ
なんのための標準ライブラリだと思ってるんだ
74デフォルトの名無しさん:2007/05/09(水) 08:02:10
先にJavaを試してみたら?
正直、Ruby→C はキツいだろ
75デフォルトの名無しさん:2007/05/09(水) 08:12:31
どう見てもこちらのほうが楽です、本当にありがとうございました
ってかこれってC?

#include <vector>
#include <numeric>
#include <iostream>

int main() {
using std::vector;
using std::inner_product;
using std::cout;

// float v1[3]={1.3,0,1}; float v2[3]={2,3,4};
vector<double> v1, v2;
v1.push_back(1.3); v1.push_back(0); v1.push_back(1);
v2.push_back(2); v2.push_back(3); v2.push_back(4);

double ip = inner_product(v1.begin(), v1.end(), v2.begin(), 0.0);
cout << "inner product:" << ip;

return 0;
}
76デフォルトの名無しさん:2007/05/09(水) 08:17:36
namespaceとかClassはC++の仕様ですよね?
Classがあるなら使いますよ。
でもね、C言語じゃないといけないんです。linuxのデフォだからね。
Cを勉強するのは計算が早いからとrubyのライブラリが作りたいから。
あとlinuxプログラミングがしたいから。
77デフォルトの名無しさん:2007/05/09(水) 08:19:29
CがLinuxのデフォってあんた……
それならC++でもいいでしょうが。
78デフォルトの名無しさん:2007/05/09(水) 08:47:03
確定したライブラリがない。
C++はもう終わった言語。手続き型にクラスをくっつけただけの言語でしょ。
純粋なrubyこそソフト開発に向いてるが、やはり速度がネック
79デフォルトの名無しさん:2007/05/09(水) 09:03:56
m9(^д^)プギャー!!
80デフォルトの名無しさん:2007/05/09(水) 10:04:47
勘違いや思い込みが激しいな
こんな奴rubyもたいしてできんだろ
81デフォルトの名無しさん:2007/05/09(水) 11:35:39
ディレクトリ名をジャスティスに変えるとすべてが上手くいく
82デフォルトの名無しさん:2007/05/09(水) 13:37:48
sizeof自体がどうなってるか分かりませんか?
あとC言語って自由に配列数を増やしたり減らしたり出来ない?
出来たらうれしい
83デフォルトの名無しさん:2007/05/09(水) 13:45:54
rubyじゃないんだから・・・
84デフォルトの名無しさん:2007/05/09(水) 13:59:39
>>82
sizeofは、コンパイル時にコンパイラが計算する。

配列要素数の増減はできないので、realloc()したりC++のvectorを使っ
たり。
85デフォルトの名無しさん:2007/05/09(水) 14:11:39
reallocというのは確保領域を変えるってことですか?
それなら手間が増えるだけで増減可能ですね。

sizeofはライブラリではないんですか?
sizeofはどうやって書かれているかを聞いています。
86デフォルトの名無しさん:2007/05/09(水) 14:13:08
C++は使わないことにしています。
なぜならC++はC言語の拡張とはいえないからです。
オブジェクト指向としてはrubyがもっとも純粋であることは確かですし
Cとの互換性が消えたので、linuxで使えません
87デフォルトの名無しさん:2007/05/09(水) 14:28:35
オブジェクト指向としての純粋性を追求する事に何の意味が?
Cとの互換性が不完全でもLinuxでC++は使えるが?
88デフォルトの名無しさん:2007/05/09(水) 14:32:47
>>85
sizeof はコンパイラが解釈する演算子の内のひとつです。関数ではありません。
89デフォルトの名無しさん:2007/05/09(水) 14:33:51
システムはCで書かれている。
C++では書かれていない。これは互換性が消えたことによるものである。
linuxといえばC言語
C++は窓用言語
rubyはクロスプラットフォームの純粋オブジェクト指向型言語
90デフォルトの名無しさん:2007/05/09(水) 14:45:57
つまりLinuxのシステムだけを書くためにCを勉強中って事?
91デフォルトの名無しさん:2007/05/09(水) 14:49:08
>>85
reallocはただの動的確保で配列関係ないから
配列の要素数増減は不可でFA
92デフォルトの名無しさん:2007/05/09(水) 14:52:21
rubyではどうやって配列の要素数増減ができると見せかけられたかを考えてみるといいよ。
93デフォルトの名無しさん:2007/05/09(水) 15:44:37
どうせRubyの事も大して分かってないんだろうな
94デフォルトの名無しさん:2007/05/09(水) 16:05:07
それは俺も思った
95デフォルトの名無しさん:2007/05/09(水) 16:06:07
突っ込みどころがあり過ぎるが、たぶん釣りだからガマン。
うちの会社に来ないことを祈る。
96デフォルトの名無しさん:2007/05/09(水) 18:09:22
>>91
メモリ確保した所を配列として扱うなら可能だと思うが。
97デフォルトの名無しさん:2007/05/09(水) 18:52:22
高級言語から入るとこれだからいかんな。
アセンブリ言語の洗礼を受けてくるといい。
98デフォルトの名無しさん:2007/05/09(水) 18:59:53
>>97
すいません。8080, Z80, 6502, 6800, 68000 ぐらいまでしかやってません。
この頃の x86 系についてはよく分かりません。
99デフォルトの名無しさん:2007/05/09(水) 19:00:42
釣り来た
100デフォルトの名無しさん:2007/05/09(水) 19:26:05
rubyはかなり分かってます。
linuxの為にCを勉強しています。当然です。ちなみにVine
101デフォルトの名無しさん:2007/05/09(水) 19:27:04
釣りくせー
102デフォルトの名無しさん:2007/05/09(水) 19:29:37
「かなり分かっています」 と自信を持って言う奴の 99% は、大して分かっていない。
なぜなら、言語の奥深さを知ってる者は、おいそれとそんな事は言えないからだ。
ほんの一握りのエキスパートか、Ruby 処理系の開発者か、
そうでなければ見栄っ張りの小物にしかそんな事は言えん。
103デフォルトの名無しさん:2007/05/09(水) 19:48:15
というかこういうやつほどコテつけて欲しいな
ただの騙りの可能性も否定できないし
もしすべて本人だったらかなり・・・
104デフォルトの名無しさん:2007/05/09(水) 20:05:58
Linux上で動くアプリケーションを作りたいだけなら、g++使えばいいだろうし、
Linuxのメジャーなディストリビュージョンなら、
g++がない(gccや下手したらccだけしかない)なんて状況を仮定する必要なんてないはず。

また、完全な互換性がない今のC++でも、それなりにCらしいコードも書けるし。
このスレで出てくるようなコードなら、ほとんどvoid*周りしか問題にならないと思う。
105デフォルトの名無しさん:2007/05/09(水) 20:30:07
なんか勘違いしている香具師が多いようだが、Cでも可変長配列はあるぞ。
それから、malloc()などで確保した領域を配列のように運用することはできてもそれは配列じゃないぞ。
#まぁ、可変長配列も伸び縮みできるわけじゃないがな。
106デフォルトの名無しさん:2007/05/09(水) 20:32:41
C99 なんてあってないような規格で語られてもな。
107デフォルトの名無しさん:2007/05/09(水) 20:33:53
意味わからん
108デフォルトの名無しさん:2007/05/09(水) 20:38:23
>>106
身近なところではgcc, icc, SunのccがC99準拠なんだが。
後二者はデフォルトだし。
109デフォルトの名無しさん:2007/05/09(水) 20:39:02
しかし、ほとんど使われていないのもまた事実。
110デフォルトの名無しさん:2007/05/09(水) 20:40:00
自分が使えないからといって、無闇に否定するのは如何な最中と。
111デフォルトの名無しさん:2007/05/09(水) 20:40:08
お前が使ったこと無いだけ
112デフォルトの名無しさん:2007/05/09(水) 20:42:20
>>105
どうやるんですか?可変長配列
113デフォルトの名無しさん:2007/05/09(水) 20:42:49
VC が準拠しない限り、使用人口は増えない。
114デフォルトの名無しさん:2007/05/09(水) 20:43:57
C99がOKでC++駄目ってのがよくわからん
115デフォルトの名無しさん:2007/05/09(水) 20:43:59
>>112
ttp://seclan.dll.jp/c99d/c99d04.htm#dt19990719

つーか、なんで「C99」ってキーワードまで書かれてるのに
自分で調べようとしないんだろうな
116デフォルトの名無しさん:2007/05/09(水) 20:46:11
使った事ないんじゃなくて、使う気がしないだけ。
117デフォルトの名無しさん:2007/05/09(水) 21:24:47
#include <stdio.h>

int main (void){
int a[3]={1,2,3};
a[3] = 4;
printf("%d\n", sizeof(a)/sizeof(a[0]));
printf("%d\n", a[3]);
return 0;
}

どうしてだお?
118デフォルトの名無しさん:2007/05/09(水) 21:27:47
>>117
printf("%d\n", a[3]); // Access Violation
119デフォルトの名無しさん:2007/05/09(水) 21:28:22
でないお
gccだけど
120デフォルトの名無しさん:2007/05/09(水) 21:29:30
どっちかっつーとこっちのがヤバい。
a[3] = 4;
121デフォルトの名無しさん:2007/05/09(水) 21:30:05
size is 3
a[3] is 4

こうなったお
122デフォルトの名無しさん:2007/05/09(水) 21:30:16
a[0] = 1;
a[1] = 2;
a[2] = 3]

a[3] = ?
123デフォルトの名無しさん:2007/05/09(水) 21:30:19
どうしてって何が?
124デフォルトの名無しさん:2007/05/09(水) 21:31:27
不変な表明ってこういうときに役に立つの?
125デフォルトの名無しさん:2007/05/09(水) 21:37:05
Cに不変表明なんかないだろ。
126デフォルトの名無しさん:2007/05/10(木) 00:32:21
assertがそれにあたるんじゃ
127デフォルトの名無しさん:2007/05/10(木) 00:37:21
>>117のなんて、そもそもインデックスと要素数の関係自体理解できてないんだから
assertとかそういう次元の問題じゃないだろ
あれは何かの拍子で変な値がインデックス用の変数に入り込んだりするのを発見するため
12831:2007/05/10(木) 02:07:35
>>32
それはわかるんだけど、それから先が全くわからなくて・・・
というかまず何を書けばいいのかもわからない・・・ド素人でスマン。

助けて・・・
129デフォルトの名無しさん:2007/05/10(木) 02:09:41
きもちわる・・・
130デフォルトの名無しさん:2007/05/10(木) 02:23:34
webマトリックスてなんすか?
とりあえずGET,POSTとだけ言ってこ
131デフォルトの名無しさん:2007/05/10(木) 09:18:45
アク禁
132デフォルトの名無しさん:2007/05/10(木) 14:51:22
>>117
もしや a[3] = 4; の所で何かエラーが出て欲しかったのか?
ま、しかし、C言語は元々そんな生易しい言語ではないのだよ。
133デフォルトの名無しさん:2007/05/10(木) 15:03:16
だろうな
しかしなんでコンパイラ通っちゃうのかよくわからん
134デフォルトの名無しさん:2007/05/10(木) 15:04:13
そういうのでもコンパイルを通すように作られてるから
135デフォルトの名無しさん:2007/05/10(木) 15:06:30
文法的には正しいから
136デフォルトの名無しさん:2007/05/10(木) 15:13:46
>>117
JavaとかC#とかしかやったことが無い人?
137デフォルトの名無しさん:2007/05/10(木) 15:19:34
>>133
エラー出すようにするとコンパイラ作るのが面倒だろ
138デフォルトの名無しさん:2007/05/10(木) 15:24:15
なるほどw
先頭要素のポインタさえありゃ動くからあとはシラネってことか
139デフォルトの名無しさん:2007/05/10(木) 15:59:43
仕様通り
140デフォルトの名無しさん:2007/05/10(木) 15:59:53
indexに変数が入ってる場合に、その変数が取り得る値をチェックするには実行してみないと
わからないんじゃ?
141デフォルトの名無しさん:2007/05/10(木) 16:01:47
これを応用(悪用?)した技もあったしな
構造体の最後の要素を [1] にして、使いたい配列の大きさ分大きめにallocして使う

いつからか 1 無くてもコンパイル通るようになってたっけな
142デフォルトの名無しさん:2007/05/10(木) 16:18:20
JavaとかC#の配列だと境界チェックしてるから範囲外なら例外が投げられるけどCではそういうのが無いからね。
C#はLengthプロパティ使ってループ回す場合はチェックはオフになったり
monoのC#コンパイラには配列境界チェックをしないようにするオプションがあったりするけど
Cは常にチェック無し。
まぁチェックがある分安全で遅いか、無い分危険で速いかだな。Cは後者。
143デフォルトの名無しさん:2007/05/10(木) 16:48:32
switchが上手く動作しないのですけれど、何処が可笑しいのか教えて下さい

/*
    もし小文字なら大文字を、大文字なら小文字を出力し
    エラーの後に再入力可否選択を要求する
*/

#include <stdio.h>
#include <ctype.h> // islowerやtoupperなどが含まれる

main () {
    char text;

first:

    printf ("アルファベットを入力して下さい\n");
    text = getchar ();
    
    // 大文字変換処理
    
    if (islower(text)) { // islower = 小文字であるかを判定
    text = toupper (text); // toupper = 大文字変換
    printf ("入力されたアルファベットの大文字は %c です。"
                ,text);
        } else if (isupper(text)) { // isupper = 大文字であるかを判定
    
144 ◆awSK7mC37A :2007/05/10(木) 16:49:33
    // 小文字変換処理
    
    text = tolower (text); // tolower = 小文字変換
    printf ("入力されたアルファベットの小文字は %c です。"
                ,text);
        } else {
        
        // エラー処理
        
    printf ("エラー\n"
                "アルファベット以外の値が入力されました。"
                "\n"
                "継続して入力しますか?\n"
                "Y/N");
    text = getchar ();
    
145デフォルトの名無しさん:2007/05/10(木) 16:50:09
        switch (text) {
        /*
            switchが何故か機能しない
            書式ミス?
        */
        case 'Y':   goto first;
        break;
        
        case 'N':   goto end;
        break;
        }
    }

end:

    return 0;
    }

>>144の名前は気にしないでください。。
146デフォルトの名無しさん:2007/05/10(木) 16:59:12
switchの式って整数型に限られるんじゃ無かったっけ?
147デフォルトの名無しさん:2007/05/10(木) 17:00:40
textはどう見ても整数型だろ
148デフォルトの名無しさん:2007/05/10(木) 17:00:50
いや、別にこれでいいけど、2回目のgetchar() では最初のgetchar()時に
入力した2文字目を取ってきてるからこうなる。
具体的には改行だな。それ以外でも2つ以上入れてりゃ同じだ
149デフォルトの名無しさん:2007/05/10(木) 17:51:56
alphabet以外の文字、たとえば 1 を入力してテストしてみると
swtich文に入って行かない。きっと1の後ろに"\0"とかあって
うまくゆかないのだろう。

text = getchar (); // ここで "\0" を喰わせる
text = getchar (); // きっと入力待ち状態になるはず

とか思ってしまったトーシローなのは俺だけでいいと思うんだ…orz
150デフォルトの名無しさん:2007/05/10(木) 18:18:00
わざわざそんなこと書かなくてもいいよ
151デフォルトの名無しさん:2007/05/10(木) 18:25:13
>>148
つまりどういうことですか?
152デフォルトの名無しさん:2007/05/10(木) 18:36:47
>>151
つまり、余分な入力バッファはクリアする必要がある。
getchar() なら、'\n' が来るまで読み捨てるとか。
while (getchar() != '\n')
  ;
例えばこんな感じで。 fflush(stdin); は物議をかもしそうなのでお試しでw
あとは、switch - case にdefault: は必要だと思うぞ、特に今回のは。
153デフォルトの名無しさん:2007/05/10(木) 19:35:06
>>151
scanf(" %c", ...) を使う。
154デフォルトの名無しさん:2007/05/10(木) 19:38:20
goto の使い所がダメな感じするな。
goto 使って見辛くしてどうする。
お前は昔の BASIC かと言いたい。
155デフォルトの名無しさん:2007/05/10(木) 19:48:39
どうでもいいけどgotoつかったらbreak;いらなくね?
156デフォルトの名無しさん:2007/05/10(木) 19:55:41
いらないが付けるクセはつけといてもいいかも
あとそれ以前に慣れないうちはdefault付けるクセをつけといたほうがいいと思う
157デフォルトの名無しさん:2007/05/10(木) 21:41:52
ANSI-Cを勉強してまだ日も浅いのですが

四則計算の 23 / 3 =7 アマリ 1

という風にアマリを出すにはどのようにすればいいのでしょうか?
158デフォルトの名無しさん:2007/05/10(木) 21:42:09
mod
159デフォルトの名無しさん:2007/05/10(木) 21:42:37
普通に%じゃあかんのか?
160デフォルトの名無しさん:2007/05/10(木) 21:42:46
%dane
161デフォルトの名無しさん:2007/05/10(木) 21:43:44
%d姉
162デフォルトの名無しさん:2007/05/10(木) 21:46:32
〜〜省略〜〜

int a,b,c;

scanf("%d",&a);
scanf("%d",&b);

c= a % b ;

printf("%d % %d =%d\n",a,b,c);

return 0;


でいいのでしょうか?
163デフォルトの名無しさん:2007/05/10(木) 21:47:58
だめ
164デフォルトの名無しさん:2007/05/10(木) 21:48:10
> printf("%d % %d =%d\n",a,b,c);
printf("%d %% %d =%d\n",a,b,c);
165デフォルトの名無しさん:2007/05/10(木) 21:51:08
あとbが0かどうかもチェックしたほうがいいな。
166デフォルトの名無しさん:2007/05/10(木) 21:51:31
>>162
bが0の場合どうするんだ?
167デフォルトの名無しさん:2007/05/10(木) 21:53:19
分岐か何かが必要なんですね、if 0〜〜とかそういう感じなんでしょうか
168デフォルトの名無しさん:2007/05/10(木) 21:58:04
聞く前にとりあえずコード書いてコンパイルしてみろ。
169デフォルトの名無しさん:2007/05/10(木) 22:05:35
if (*s && isalpha(*s)) {...}
が LinuxとSolarisで動作が違うのでgcc -Eで確認したらSolatisではisalpha(c)が
((__ctype+1)[c] & (0x01 | 0x02)) に展開されててLinuxではライブラリ関数呼んでました。
動作が違ったのは*sが負数になってたせいのようでした。(なぜ負のインデックスで__ctype配列
参照してcore吐かなかったか不思議ですが...)*sに入る整数値がなんでもありと
すると、ここは普通どう書きますか?
if (isascii(*s) && isalpha(*s)){...}
とかすればOK?
170デフォルトの名無しさん:2007/05/10(木) 22:11:18
>>164
%% って \n とかのエスケープシーケンスと同じものと考えておkですか?
171デフォルトの名無しさん:2007/05/10(木) 22:12:19
>>170
エスケープシーケンスで例えるなら \\ やね。
172デフォルトの名無しさん:2007/05/10(木) 22:13:43
>>169
is系関数に渡すときは unsigned char でキャストするのは定石。
もう多すぎて面倒なら、char を符号無しにするコンパイラのフラグを指定汁。
173デフォルトの名無しさん:2007/05/10(木) 22:29:09
UNIX環境でCを書いています。

FILE *fp
fp = popen("gnuplot", "w");
fprintf(fp, "plot sin(x) w lines \n");
pclose(fp);

としてgnuplotを呼び出すプログラムを作りました。
今の状態では、gnuplotが立ち上がってsin(x)の関数が一瞬だけ表示され、
gnuplotが直ちに終了してしまいます。
どこにどのような処理をすれば、gnuplotを表示させたままに出来るのでしょうか?

Enterキーなどを押すことで終了するようにしたいです。
よろしくおねがいします。
174デフォルトの名無しさん:2007/05/10(木) 22:32:14
>>172
それだけだとSJIS の時は、
全角文字の2バイト目で真になる可能性があるな。
リードバイトの判定とかした方がいい。
>>169 は EUC みたいだから大丈夫だとは思うが。
175デフォルトの名無しさん:2007/05/10(木) 22:48:20
>>173
system("gnuplot < data.txt");

とかじゃだめかな?
data.txtはあらかじめ作っておく。
176デフォルトの名無しさん:2007/05/10(木) 22:49:27
>>172,174
ありがとうございます。m(_;_)m
>is系関数に渡すときは unsigned char でキャストするのは定石。
助かります。
177デフォルトの名無しさん:2007/05/10(木) 23:27:12
>>173
とりあえず表示を残すだけなら "gnuplot -persist" とすれば良いけど、
グラフを表示しているプロセス(gnuplot_x11)のIDを
外部プログラムを使わずに見付けて殺す方法が分からん。
178デフォルトの名無しさん:2007/05/10(木) 23:50:48
system("gnuplot ... &")ではダメ?
真面目にプロセス管理したいならfork()/exec*()を使う羽目になるけど。
179デフォルトの名無しさん:2007/05/11(金) 06:20:36
初歩的な質問ですがお願いします。
strlenなどの文字列を扱う関数は引数としてchar型の文字列への先頭ポインタをとります。
つまり、strlen(s)とすると配列sの先頭アドレスが渡され、結果が返ります。
しかし、strlen("test")とした際も結果は出力されます。
この"test"という文字列はどのようにプログラム内部で扱われるのでしょうか?
自動的に一時的にメモリに確保されるのでしょうか?

では宜しくお願いします。
180デフォルトの名無しさん:2007/05/11(金) 07:31:33
>>179
exeファイルの中に入ってるでしょ
実行時にどう配置されるかはシステムによる
プログラム上ではポインタとして扱われる
181デフォルトの名無しさん:2007/05/11(金) 07:44:13
>>179
ほぼ、static const char foo[] = {'t', 'e', 's', 't', '\0', }; strlen(foo);と同じ。
182デフォルトの名無しさん:2007/05/11(金) 15:35:08
クリリンのAAきぼん
183183:2007/05/11(金) 20:29:09
↓のソースで、☆印の行は何か意味があるでしょうか。
 あってもなくても変わらない気がするのですが...
( 環境:Windows Vista , Visual Studio C++ Express Edition )

#include <stdio.h>
#include <windows.h>

#define THREAD_NUM 4
#define DATA_NUM 12

typedef struct _thread_type {
int thread_no;
int *data;
CRITICAL_SECTION *cs;
} thread_arg_t;

void thread_func(void *arg) {
thread_arg_t* targ = (thread_arg_t *)arg;
int i, result;

for (i = 0; i < DATA_NUM; i++) {
// EnterCriticalSection(targ->cs);
result = targ->data[i] + 1;
Sleep(0); ☆
targ->data[i] = result;
// LeaveCriticalSection(targ->cs);
}
}

184183:2007/05/11(金) 20:30:00
int main() {
HANDLE handle[THREAD_NUM];
thread_arg_t targ[THREAD_NUM];
int data[DATA_NUM];
int i;
CRITICAL_SECTION cs;

/* データの初期化 */
for (i = 0; i < DATA_NUM; i++) data[i] = 0;

InitializeCriticalSection(&cs);

for (i = 0; i < THREAD_NUM; i++) {
targ[i].thread_no = i;
targ[i].data = data;
targ[i].cs = &cs;
handle[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread_func,
(void *)&targ[i], 0, NULL);
}
WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);
DeleteCriticalSection(&cs);
for (i = 0; i < DATA_NUM; i++) printf("data%d : %d\n", i, data[i]);
return 0;
}


あとSleepは、
 ・0ミリ(引数の分)秒ウェイト状態にする。
 ・0はMPUを他の優先度のスレッドにのみ譲る。
 ということでしたよね?
185デフォルトの名無しさん:2007/05/11(金) 20:30:46
>>183
Win32では 「0を指定した場合、 スレッドは、 実行準備ができている同じ優先順位のほかのスレッドにタイム スライスの残りを譲ります。」
186デフォルトの名無しさん:2007/05/11(金) 20:39:55
なんでMSDN Libraryで調べれば直ぐ分かるような事を質問するんだろうな
187183:2007/05/11(金) 20:40:06
>>185
おーありがとございますー!!
188デフォルトの名無しさん:2007/05/12(土) 00:12:06
printf("%s/n","Hello World");

上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。
189デフォルトの名無しさん:2007/05/12(土) 00:14:46
意味が分からん。
190デフォルトの名無しさん:2007/05/12(土) 00:15:28
>>188
マルチうざい
191デフォルトの名無しさん:2007/05/12(土) 00:25:14
>>190
すみません
192デフォルトの名無しさん:2007/05/12(土) 00:33:48
>>190
ごめんなさい、でも教えてください蟹

  Viiv  
 ミ(エ)ミ....
193デフォルトの名無しさん:2007/05/12(土) 00:35:48
あのーコールバックの書き方が解からないのですが
助けてください。動作するサンプル提示してくれませんか?
194デフォルトの名無しさん:2007/05/12(土) 00:37:14
何のコールバックだよ…
195デフォルトの名無しさん:2007/05/12(土) 00:37:38
196蟹NIC:2007/05/12(土) 00:37:47
printf("%p/n","Hello World");

上のprintf文の%pでどのように"Hello World"を処理しているのか分かりません。
どなたか教えてください。 

  Viiv  
 ミ(エ)ミ....
197デフォルトの名無しさん:2007/05/12(土) 00:49:14
>>188
可変長引数でも調べて推測してください。

様は第一引数の中を読んでいって、%フラグに当たったら対応する引数をフラグに従って変換した上で元の文字列に挿入してるんだと思う。
198デフォルトの名無しさん:2007/05/12(土) 00:56:33
別に挿入なんかしてないけどね。
199デフォルトの名無しさん:2007/05/12(土) 01:55:15
>>197
ご教授ありがとうございます。
200デフォルトの名無しさん:2007/05/12(土) 02:30:45
そんなに知りたいならglibcのソースでも読めばいいのにな
201デフォルトの名無しさん:2007/05/12(土) 02:37:18
ソースリーディングは初心者には難しい
202デフォルトの名無しさん:2007/05/12(土) 02:45:10
>>196
------------------------------------------------------------
60 名前: デフォルトの名無しさん 投稿日: 2007/05/12(土) 00:10:17
printf("%s/n","Hello World");

上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。
------------------------------------------------------------

この質問って流行ってるのか?
203デフォルトの名無しさん:2007/05/12(土) 02:49:12
馬鹿がマルチしてるだけじゃない?
204蟹NIC :2007/05/12(土) 03:16:31
>>202 いいえ、まマイブームレベル位かな

  Viiv  
 ミ(エ)ミ....
205デフォルトの名無しさん:2007/05/12(土) 06:53:20
>>117
配列は番兵を使うために便宜的に要素+1の部分にアクセスできるんだぜ?

206デフォルトの名無しさん:2007/05/12(土) 07:27:03
>>205
ねーよwwwwwwwwwwwwwwwwwwwwwwwwwww

#include <stdio.h>

int main() {
int a[4] = { 0, 0, 0, 0 };
int b = 0;

a[4] = 3;
printf("%d\n", b);

return 0;
}

で 3 が表示されたぜ(gcc 4.0.1 for Mac)。
207デフォルトの名無しさん:2007/05/12(土) 07:33:50
ポインタを向けるだけなら未定義動作にならないってだけでしょ
208デフォルトの名無しさん:2007/05/12(土) 07:43:23
>アクセスできる
をどう好意的に解釈しても、ポインタを向けるだけ、にはならん罠。
209デフォルトの名無しさん:2007/05/12(土) 07:45:46
どちらかというと205宛てに書いたレスなのだが…
210デフォルトの名無しさん:2007/05/12(土) 08:50:05
>>205
>配列は番兵を使うために便宜的に要素+1の部分にアクセスできるんだぜ?
マジレスするとそれは文字列のときだけな。
char a[] = {1, 2, 3}; // sizeof a == 3
char b[] = "123"; // sizeof b == 4
211デフォルトの名無しさん:2007/05/12(土) 08:50:21
釣りだって
212デフォルトの名無しさん:2007/05/12(土) 08:51:17
知ってるよ
213デフォルトの名無しさん:2007/05/12(土) 08:52:22
char c[3] = "123";
214デフォルトの名無しさん:2007/05/12(土) 09:00:47
charの配列だけchar配列じゃなくて文字配列って言うことが多いし
文字配列には後ろに'\0'が付くみたいな覚え方をしてたから
なんかcharの配列だけは特別な代物のように思ってた過去
215デフォルトの名無しさん:2007/05/12(土) 09:01:56
文字配列とは言わんなあ。
文字列としか。
216デフォルトの名無しさん:2007/05/12(土) 11:26:20
私の処で文字配列といった場合、それはナルターミネートされていない。
217デフォルトの名無しさん:2007/05/12(土) 11:35:24
相変わらず嘘と無価値な雑談でしか伸びないスレだな
218デフォルトの名無しさん:2007/05/12(土) 11:36:38
君も仲間だ、歓迎するよ
219デフォルトの名無しさん:2007/05/12(土) 13:01:15
質問です。
#include <stdio.h>
int main(void)
{
float a,b;
char e;
printf("変数a=");
scanf("%f",&a);
printf("変数b=");
     scanf("%f",&b);
printf("文字=");
scanf("%c",&e);
printf("変数a=%f 変数b=%f 文字列d=%c\n",a,b,e);
return 0;
}
これをコンパイルすると文字列データを読みこんでくれません。。
おそらくprintfかscanfの仕様に問題があるのでしょうがこれの理由と回避方法をご教示願いたいです。
220デフォルトの名無しさん:2007/05/12(土) 13:17:40
>>219
・文字と文字列の違いを理解しよう。
・scanf()の仕様に気をつけよう。
221デフォルトの名無しさん:2007/05/12(土) 13:20:11
演算子を使わないで割り算や掛け算ってどうやるんですか?たとえば9÷3
222デフォルトの名無しさん:2007/05/12(土) 13:22:43
演算子を使わないで演算するには、関数を使えばいい。
223デフォルトの名無しさん:2007/05/12(土) 13:25:01
>>222
関数を自分でつくるということですかね?
224デフォルトの名無しさん:2007/05/12(土) 13:25:16
>>219
scanf("%c",&e);

scanf("%*[ \t\n]");
scanf("%c",&e);

変数b を読み込んだ後、改行文字がバッファに残っている
バッファに残った改行文字を次の scanf("%c",&e); で読み込んだため
変数e には改行文字が入ってしまった

この問題を回避するには、バッファに残っている改行文字を読み飛ばせば良い
225デフォルトの名無しさん:2007/05/12(土) 13:27:18
つか入門書安易にscanf使いすぎ。
エラーチェックしなさすぎ。
226デフォルトの名無しさん:2007/05/12(土) 13:38:59
>>223
つ[div()]
227デフォルトの名無しさん:2007/05/12(土) 13:54:31
>>224なるほど ありがとうございます。
228デフォルトの名無しさん:2007/05/12(土) 14:22:00
>>222
数学を一度勉強した方がいいですね。
具体的には線形空間というやつですよ・・・
229デフォルトの名無しさん:2007/05/12(土) 14:27:06
数学の話じゃないだろ・・・常識的に考えて。
230デフォルトの名無しさん:2007/05/12(土) 14:27:32
>>228
演算子を使わずにできる?
もちろんシフト演算も無しで

>>221
関数以外だとインラインアセンブラ使えば
演算子を使ったとは言われないとか?
231デフォルトの名無しさん:2007/05/12(土) 14:28:43
>>228
何を寝惚けたことを?
232デフォルトの名無しさん:2007/05/12(土) 14:44:24
設問の定義があいまい
233デフォルトの名無しさん:2007/05/12(土) 14:51:20
// 演算子を使わない足し算。
int add(int a, int b)
{
FILE * fp = fopen("/dev/null", "w");
int rtn = fprintf("%*s%*s", a, "", b, "");
fclose(fp);
return rtn;
}
234デフォルトの名無しさん:2007/05/12(土) 14:52:56
>>233
負数対応キボン
235デフォルトの名無しさん:2007/05/12(土) 14:57:17
>>233
代入演算子を使っているw

>>234
わはは、そりゃ確かに>233じゃ無理だ。
236デフォルトの名無しさん:2007/05/12(土) 14:58:03
int add(int a, int b) {

}
237デフォルトの名無しさん:2007/05/12(土) 14:58:57
ミスった。

int add(int a, int b) {
 __asm {
  mov eax, a
  add eax, b
 }
}
238デフォルトの名無しさん:2007/05/12(土) 15:02:00
そういえば関数呼び出しの括弧も演算子なんじゃなかったっけ?
239デフォルトの名無しさん:2007/05/12(土) 15:02:17
>>222がなんでそんなことをしたくて何を「演算子」と呼んでいるかしらんが
if文だりなんだり使って全部作ればいいんじゃね
足し算なら1+1 = 2
だからa,bが両方とも1なら2を出力するというように
それらをすべて0〜9のを自分でつくる
あと桁上げの関数ももちろん自分で作って
240デフォルトの名無しさん:2007/05/12(土) 15:03:27
比較にも演算子が必要だな。
241デフォルトの名無しさん:2007/05/12(土) 15:04:40
if じゃなくて switch ならイケる。
ただ、コード量が多すぎて int 全部を網羅できないな。
char 程度ならともかく。
242デフォルトの名無しさん:2007/05/12(土) 15:05:01
switch しか無いな
243デフォルトの名無しさん:2007/05/12(土) 15:05:06
つまんないからもうやめていいよ
244デフォルトの名無しさん:2007/05/12(土) 15:07:01
お前らほんと数学分かってないんだな・・・
まじ小学校からやり直せよ
245デフォルトの名無しさん:2007/05/12(土) 15:08:19
>>235
そこにある=は初期化子であって演算子ではない。
246デフォルトの名無しさん:2007/05/12(土) 15:12:47
>>244
プログラミング言語において「演算子」が何を指すかを勉強し直してきてください。
247デフォルトの名無しさん:2007/05/12(土) 15:13:17
>>241
桁上げの関数作ればできるだろ
switchだって演算子を裏に隠しているだけに過ぎないし
ちなみに足し算とかってそもそも写像なんだから
なんでそんなことやりたいのかよくわからん
数学じゃなくてC言語で言う「演算子」は人間が勝手に付けた分類だから
それにこだわっても意味が無い
>>228のいうように少し数学を学んだほうがいい
248デフォルトの名無しさん:2007/05/12(土) 15:13:39
>>245
しかし残念 >>238
249デフォルトの名無しさん:2007/05/12(土) 15:15:31
>>247
何で数学の演算子にこだわるのか理解できないのだが。
ここは C 言語スレだぞ?
250デフォルトの名無しさん:2007/05/12(土) 15:18:44
元質問者出てこいよ
後出しで、四則演算子のことでした、とか言いそうだが
251デフォルトの名無しさん:2007/05/12(土) 15:19:36
252デフォルトの名無しさん:2007/05/12(土) 15:20:53
>>221
>演算子を使わないで割り算や掛け算ってどうやるんですか?たとえば9÷3
割り算や掛け算って言ってるけど
253デフォルトの名無しさん:2007/05/12(土) 15:22:43
>>222の問題意識が何なのかということだぁね

C言語だと同じことできるけどこれは演算子と呼ぶ
これはそう呼ばないだけの違いになってしまうから
C言語での「演算子」の意味にこだわって
わざわざ考えるほどの価値がある物と思えない
もし>>222がC言語において何を演算子と呼ぶのかをどうやって決めたか
知りたいとかなら別だけど

結局のところC言語での演算子と数学での演算子の区別すらつかずに
質問しちゃったってオチの気がするw
254デフォルトの名無しさん:2007/05/12(土) 15:24:37
C仕様書には区切り句で何らかの作用を起こすもの(代入とかな)を演算子とすると書かれてるんだから
演算子を使わずに何かをするなんて無理だろ
255デフォルトの名無しさん:2007/05/12(土) 15:27:00
ここは環境依存おkだから、
インラインアセンブラ使えばおk。
256デフォルトの名無しさん:2007/05/12(土) 15:30:17
2で割った剰余を取る演算て最近のコンパイラだと
勝手に0x01とのビットANDもしくはそれより速いコードに変えてくれるんでしょうか?
257デフォルトの名無しさん:2007/05/12(土) 15:32:47
>>254
てことはC言語の演算子は数学の演算子の定義に沿って定義されている
ということだな べんきょうになったw
258デフォルトの名無しさん:2007/05/12(土) 15:33:27
>>256
Yes.
259デフォルトの名無しさん:2007/05/12(土) 15:36:31
sizeof まで演算子だしなあ。
260デフォルトの名無しさん:2007/05/12(土) 16:02:59
(void)printf("ほげほげ");
と、printfまでキャストをする必要はあるのでしょうか?
261デフォルトの名無しさん:2007/05/12(土) 16:04:21
>>260
無い。そもそもintをvoidにキャストしてどうするんだ?
262デフォルトの名無しさん:2007/05/12(土) 16:04:27
>>260
ない。
ただし、戻り値を取得し忘れてるわけじゃなく明示的に捨ててるんだという意思表示として
(void)にする流儀はあるにはある。
好み、コーディングスタイルレベルの話。
263デフォルトの名無しさん:2007/05/12(土) 16:05:26
>>261
戻り値を使わないことを明示する効果がある。
lintのようなチェッカを黙らせる効果もあるな。
264デフォルトの名無しさん:2007/05/12(土) 16:06:37
そうそう、コーディング規約に「戻り値は必ずチェックすること」という項目があって、
それの評価を厳密に行なう運用の場合にもそうする必要があるね。
265デフォルトの名無しさん:2007/05/12(土) 16:10:14
>>263
lint対策か。それなら納得
266デフォルトの名無しさん:2007/05/12(土) 16:57:40
コンパイラにもよる。
たとえばFreescaleのCodeWarriorは(void)をつけないとwarningを出すのがデフォルト動作。
267デフォルトの名無しさん:2007/05/12(土) 18:42:50
int main(void){
  int a=1;
  kansu(a);
}
までやっておいて

@int kansu(int a){
  printf("%d",a*2);
  }
Aint kansu(int *a){
  printf("%d",a*2);
  }

@だと正常に動いたのですが、
Aだと「*」がダメだ〜 とコンパイラに怒られるのですが、
この違いとは何なんでしょうか?
268デフォルトの名無しさん:2007/05/12(土) 18:45:51
>>267
(2)の*は、意味も分からないで適当につけたの?
269デフォルトの名無しさん:2007/05/12(土) 18:47:47
int kansu(int *a){
  printf("%d",a*2);
  }
 ↓

printf("%d",*a*2);
       ↑
    これじゃね?
270デフォルトの名無しさん:2007/05/12(土) 18:50:45
gets()関数で文章を読み取ってます。リダイレクションでメモ帳で作った文章入れると、改行のところ以降プログラムに読み込まれません。
どうしてでしょうか?改行があっても最後までいきたいんですが
271デフォルトの名無しさん:2007/05/12(土) 18:52:22
>>270
getsは改行文字までしか読み取らない
manにも書かれてる基本仕様

ついでにgetsを使うのは推奨されない
272デフォルトの名無しさん:2007/05/12(土) 18:53:05
>>271
じゃあ代理のものとして、何を使ったらいいですかね
273デフォルトの名無しさん:2007/05/12(土) 18:54:58
>>268
気のせいかもしれませんが、
関数を定義してるプログラムを見ると多くが *a となっていたので、
違いを知りたいなと思って作ったプログラムなので、
かなり不備はあるかもしれません・・・。

>>269
Aの場合だと必ずメモリ関連でセグメントエラーか、警告が出続けてしまうんです。
試したところ、、、セグメントエラーが出ました。
274デフォルトの名無しさん:2007/05/12(土) 18:56:55
>>272
fgets(・・・, stdin)
275デフォルトの名無しさん:2007/05/12(土) 18:58:02
>>274
stdinっていうのはなんでしょうか
276デフォルトの名無しさん:2007/05/12(土) 18:59:01
>>272
>gets() を使うのは極めて危険である。(中略)代わりに fgets() を使うこと。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/gets.3.html

これぐらい自分で調べろ
277デフォルトの名無しさん:2007/05/12(土) 18:59:34
>>273
コールするほうも
kansu(&a);
と変えないとだめだよ。

こういうところで試行錯誤してるなら、入門書を一冊買ったほうがだいぶ時間の節約になると思うけど。
278デフォルトの名無しさん:2007/05/12(土) 19:00:09
>>275
とりあえずググれや。
279デフォルトの名無しさん:2007/05/12(土) 19:00:11
>>273
int kansu(int *a) にするなら
int main(void){
  int a=1;
  kansu(&a); < &をつけなきゃ
}
280デフォルトの名無しさん:2007/05/12(土) 19:01:56
>>276
危険なんですね。
fgetsにしたら
呼び出し時のパラメータが足りない:fgets(関数 main )
ってなってコンパイルできないんですが・・・・
281デフォルトの名無しさん:2007/05/12(土) 19:02:58
>>280
ttp://www.bohyoh.com/CandCPP/C/Library/fgets.html
ちゃんと必要な引数を与えている?
282デフォルトの名無しさん:2007/05/12(土) 19:04:35
>>277,279
すごい納得できました。ありがとうございました。

入門書は・・・買ったんですが、、、馬鹿なので理解できない^^;
283デフォルトの名無しさん:2007/05/12(土) 19:06:16
>>281
なんかよくわからないんですが、
char型の配列に文章をいれたいんです・・・・

char bunsyo[256]
みたいなやつにです
284デフォルトの名無しさん:2007/05/12(土) 19:07:28
>>283
fgets(bunsyo, 255, stdin)
285デフォルトの名無しさん:2007/05/12(土) 19:08:16
>>283
gets()をfgets()に変更するくらいの手続きを自分で考えられない(≒検索できない)なら、
プログラマに向かないからとっとと諦めた方がいいよ。
286デフォルトの名無しさん:2007/05/12(土) 19:09:04
>>284
ダウト。慣用句的にそれを使っているのなら、
一度マニュアルページをよく読んで自分の過ちに気付いておいた方がいい。
287デフォルトの名無しさん:2007/05/12(土) 19:09:56
>>284
コンパイルはとおるんですが、改行のところで読み込みがおわってしまうんですが・・・・
288デフォルトの名無しさん:2007/05/12(土) 19:10:09
>>284
第二引数Nはバッファサイズだろ
読み込まれる文字数最大値はN-1
289デフォルトの名無しさん:2007/05/12(土) 19:10:27
>>286
ダウト。説明なしにそういうことを言うのはお前の知ったかに過ぎない
290デフォルトの名無しさん:2007/05/12(土) 19:11:12
>>287
fgets()も、改行までしか読まない。
だから、マニュアルページを読むなり情報を検索できないなら無駄だから諦めろって。
291デフォルトの名無しさん:2007/05/12(土) 19:11:56
>>288
gdgdいってねーで正解を書いたら?知ったかへぼプログラマーwwww
N-1そうだよ?何か?まさか、254 にしろとかボケないだろうね?
292デフォルトの名無しさん:2007/05/12(土) 19:12:48
>>290
読み込むテキストに工夫がいりますかね?
293デフォルトの名無しさん:2007/05/12(土) 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
294本日の知ったか馬鹿第一号:2007/05/12(土) 19:13:27
288 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:10:09
>>284
第二引数Nはバッファサイズだろ
読み込まれる文字数最大値はN-1
295デフォルトの名無しさん:2007/05/12(土) 19:13:42
暇だからプログラム組もうかな
でも、モチベーションが・・・・・
なにか練習問題でものってるサイトないか?
296デフォルトの名無しさん:2007/05/12(土) 19:14:33
>>292
テキストファイルを丸ごと読み込むには、
・fgetc()で一文字ずつ
・fgets()で一行単位で
・fread()でブロック単位(或いは一気に)
読む必要がある。
297デフォルトの名無しさん:2007/05/12(土) 19:14:34
>>291
だから>>283の宣言なら、普通にfgets(bunsyo, 256, stdin);でいいだろ
なんでバッファのラスト1バイトを無駄にしてんだよ


>>292
ループ回して一行ずつ読み込む
298デフォルトの名無しさん:2007/05/12(土) 19:14:44
>>287
宿題スレで、ファイル全部読み込むコード書いてくださいって言ったほうがいいんじゃね?
299デフォルトの名無しさん:2007/05/12(土) 19:14:47
>>276とかこのスレにいらねーだろ。このスレが何なのかわかっていないのに
まだ勉強中の知らない奴を見つけて、自分が知っていることをひそかに自慢しながら
他人をたたく基地外だろ。ここでレスしているほかの奴にとっては迷惑千万、失せろクズプログラマー
300デフォルトの名無しさん:2007/05/12(土) 19:15:52
>>293
>そこまで分かってて正解が判らないような屑が
自分が指摘したのに答えられない(勘違い)クズこそ来るなよw
お前はまったく指摘をしていない。ただたんに 自分が思った ことと違っていただけ。
それもお前が間違えているという勘違い(プ
不適切なら正しい使い方を明示しろ、たぶんお前じゃできない。あれは間違っていないからw
301デフォルトの名無しさん:2007/05/12(土) 19:15:56
ファイルのサイズがわかってるなら、適当な大きさのバッファを用意して、
fread()でもいいけどな。
302デフォルトの名無しさん:2007/05/12(土) 19:16:07
人間の屑よりはマシだな
303デフォルトの名無しさん:2007/05/12(土) 19:16:58
>>296
うーん。めんどくさそうですね。テキストファイルの改行をなくしちゃいます
304デフォルトの名無しさん:2007/05/12(土) 19:17:35
>>300
あのね、坊やみたいなお子ちゃまはこんなところに来ちゃダメよ。
既に正解レスがついているんだからもっと落ち着きましょうね。
305デフォルトの名無しさん:2007/05/12(土) 19:18:10
お前ら邪魔
306デフォルトの名無しさん:2007/05/12(土) 19:18:18
>>299
自分で考えよう、調べようって姿勢が見えたら、頭わるそうなヤツでもけっこう親切に教えてもらえるよ。
ただ「わからない、を即答せよ」ってだけじゃ教えてもらえない。
307デフォルトの名無しさん:2007/05/12(土) 19:19:32
>>293
揚げ足取りにもならなかったな、所詮お前はわかっていない(っと自分が思った)奴をたたくだけか
二度とくるな、お前みたいなクズこそこのスレにはいらない。このスレのタイトル読めますか?
あっ、日本語も日本の社会もろくに知らない在日かw
308デフォルトの名無しさん:2007/05/12(土) 19:20:15
まぁ、fgets()の慣用句はfgets(buf, sizeof(buf), stdin)だがな。
仮にもプログラムを組もうというときに、きちんと調べる手間を惜しんじゃ遺憾な。
309デフォルトの名無しさん:2007/05/12(土) 19:20:18
以下、キモメンメガネデヴピッツァのきめ台詞が出るまでお待ちください
310デフォルトの名無しさん:2007/05/12(土) 19:20:38
>>304
あのね、小学生未満の精神年齢のお子ちゃまはこんなところに来ちゃダメよ。
勘違いの指摘レスがついているんだからもっと落ち着きましょうね♪
んで、何が間違いか、指摘できた?正解がとかじゃなくてw
311デフォルトの名無しさん:2007/05/12(土) 19:21:38
「屑」対「クズ」か。どっちが半島人かは火(病)を見るより明らかだな。
312デフォルトの名無しさん:2007/05/12(土) 19:22:26
>>284は単なる入力ミスだろ。それだけでここまで お前はあほだ! みたいな
プレッシャーをかける基地外ってプログラマーに向いてねーよなwwwwww
313デフォルトの名無しさん:2007/05/12(土) 19:22:47
>>309
半島人がでてきたぞ。
314デフォルトの名無しさん:2007/05/12(土) 19:23:23
>>282
だったらその本は自分に向いていなかったと諦めて、
ちょっと立ち読みして、ほかに良さそうな本を探して買えばいい。
315デフォルトの名無しさん:2007/05/12(土) 19:23:36
くずはくずかごに入っとけ。

それより早く>>295に答えてください。
316デフォルトの名無しさん:2007/05/12(土) 19:24:33
>>311 地球上のカス以下の  お  前  が  言  う  な  wwwwwwww
っつーか、揚げ足取り必死だなw
そんなんじゃ本当にプログラマーに向いてねーよ、その程度のことでガミガミ
相手を罵倒するようじゃ、そんな奴こそこんなスレに来ないほうが良いだろ。
気分が悪くなるものを敢えてみてゲロを吐いているマゾかい?w
グロ動画でも貼ってやろうか?w
317デフォルトの名無しさん:2007/05/12(土) 19:24:59
おお、新展開。今度の攻撃は「単なる入力ミス」ですw

>>315
宿題スレに未解決の宿題が幾つかあるんじゃない?
下手なサイト見るより勉強になりそうですよ。
318デフォルトの名無しさん:2007/05/12(土) 19:29:25
freadでも使えば。
319デフォルトの名無しさん:2007/05/12(土) 19:30:13
>>317
ほらな、そういうことで相手をチクチクつついて周りの気分も害しているだろ?
だからお前みたいなつまらねークズはプログラマーに向いてないから
頼むから大掛かりなプロジェクトには絶対に介入するなよ。
っつーか協調性がなくて無理だろうね、お前みたいなちっぽけなクズはw
ちなみに、あの程度の間違いならさらっと 256 って書けば済んだ話だろ。
お前わかってねー!間違えたへへーん馬鹿!とか罵倒する方が頭がイカレてんだろ。
そういう奴に限って、自分の間違いを指摘されると、認めないどころか
お前がおかしい!って言い始めるから困るぜ ヤレヤレ

以後、さっきからきんもぉ〜★な指摘するだけで答えを出さない基地外は放置よろ
たぶん引きこもりニートだろ
320デフォルトの名無しさん:2007/05/12(土) 19:30:36
>>318
>296
>301
317 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:24:59
おお、新展開。今度の攻撃は「単なる入力ミス」ですw

293 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。

297 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:14:34
>>291
だから>>283の宣言なら、普通にfgets(bunsyo, 256, stdin);でいいだろ
なんでバッファのラスト1バイトを無駄にしてんだよ
なんでバッファのラスト1バイトを無駄にしてんだよ
↑こういう嫌らしい言い方をするだろ?
だから日ごろ嫌われていることに気づかない仲間はずれなんだろうからこんな場所で
匿名性を利用して自分より知識の乏しい弱者相手に強気になれるんだろうねw
322284:2007/05/12(土) 19:34:14
>>284はただの入力ミスです ♠
56としたつもりが同じキーを2回押して書き込みしちゃっただけでぇ〜〜〜す ♣
あぁ〜〜いとぅいまてぇ〜〜ん、文字配列のサイズを指定するように、ここでレスする以外の
自分が書くソースでは sizeof 使ってまぁ〜〜〜つ ♥
323デフォルトの名無しさん:2007/05/12(土) 19:36:19
char s[256];
size_t size=sizeof(s)/sizeof(s[0];
sizeof(s,size,stdin);
こんな感じでぇ〜〜どぉ〜〜〜でちゅかぁ〜〜?♦
324デフォルトの名無しさん:2007/05/12(土) 19:37:15
あちゃぁ〜〜、今度はsizeofの閉じ括弧忘れちゃいまちちゃぁ〜〜〜
あぁ〜〜〜いとぅいまちぇぇ〜〜〜〜ん ♪
325デフォルトの名無しさん:2007/05/12(土) 19:39:29
fgetsの仕様って
buf[BUFFER_SIZE];
fgets(buf, BUFFR_SIZE, stdin);
とかするためにこんな仕様になってるんでしょうか?
326デフォルトの名無しさん:2007/05/12(土) 19:43:07
こんな仕様が何を指すのかわからん。
327デフォルトの名無しさん:2007/05/12(土) 19:44:52
>>325
そう
328デフォルトの名無しさん:2007/05/12(土) 19:46:54
>>325
fgets()の他にも、strftime(), snprintf()も同じように格納バッファサイズを指定して、
それよりも少ない文字数しか格納しないような仕様になっている。
329デフォルトの名無しさん:2007/05/12(土) 19:50:27
なるほど、文字列の最後が\0で終わるからその分余計に取らないと駄目だからか
330デフォルトの名無しさん:2007/05/12(土) 20:11:00
普通にsizeof使えば、悩むことなんて何もないのに
331デフォルトの名無しさん:2007/05/12(土) 20:20:56
>>330
getsもsizeof使って実装すれば何の問題もないのに、と思っていたりする?
332デフォルトの名無しさん:2007/05/12(土) 20:22:21
まず、おまえさんが何が言いたいのか分からん。
333デフォルトの名無しさん:2007/05/12(土) 20:22:29
333 gets!
334デフォルトの名無しさん:2007/05/12(土) 20:37:37
つまり、まぁ、こういうこと

int main(void)
{
exit 0;
}
335デフォルトの名無しさん:2007/05/12(土) 20:38:31
http://d.hatena.ne.jp/keyword/%A5%B2%A5%C3%A5%C4
お前らほんっとうにこれが好きなんだな
336デフォルトの名無しさん:2007/05/12(土) 20:39:50
くだらなすぎ
337デフォルトの名無しさん:2007/05/12(土) 20:54:40
標準入力から読み込みたいけどサイズとファイルポインタ指定が面倒ってことなら
自分でfgetsをそれらを決め打ちした状態で呼び出す関数作ればいいんでは
338デフォルトの名無しさん:2007/05/12(土) 21:24:36
void WriteLog(const wchar_t szComment[])
{
FILE *fp;
errno_t err;
time_t ttime;
wchar_t buff[CTIME_SIZE];

if ( ( err = fopen_s( &fp, szPath, "at") ) != 0 )
return

time( &ttime );

if( ( err = _wctime_s( buff, CTIME_SIZE, &ttime) ) != 0 )
return;

fwprintf( fp, L"%s", szComment );
fwprintf( fp, L", %s", buff);

fclose( fp );
}
こういう関数を作って、使おうと思ったんですが、
例えばこのように使うと WriteLog( L"あああ (AAA)" );
↓のように書き込まれてしまいます
??? (AAA), Sat May 12 21:15:19 2007

なぜでしょうか?
339デフォルトの名無しさん:2007/05/12(土) 21:43:29
>>338
ログファイルの先頭にBOMを入れるようにすれば読めるんじゃね?
340デフォルトの名無しさん:2007/05/12(土) 22:06:58
今、配列の要素として1,2,3,4があるとき、これらの要素を連結して他の変数に代入(n = 1234)することはできますか?
341デフォルトの名無しさん:2007/05/12(土) 22:07:24
できます。
342デフォルトの名無しさん:2007/05/12(土) 22:15:24
>>341
教えて下さい
343デフォルトの名無しさん:2007/05/12(土) 22:18:45
BOOL厨ワロタw
344デフォルトの名無しさん:2007/05/12(土) 22:19:50
b = a[0] * 1000 + 1[a] * 100 + *(a+2) + 10 + a[3];
345デフォルトの名無しさん:2007/05/12(土) 22:24:01
>>344
ありがとうございます
346デフォルトの名無しさん:2007/05/12(土) 22:42:10
>>344
この妙な書き方噴いたwww
347デフォルトの名無しさん:2007/05/12(土) 22:42:59
一箇所間違ってるし
348デフォルトの名無しさん:2007/05/12(土) 22:50:12
>>347
可哀想だからスルーしてやれよw
349デフォルトの名無しさん:2007/05/12(土) 22:50:45
足し算になってるのか
350デフォルトの名無しさん:2007/05/13(日) 00:07:33
数学が分かってない人が多すぎる
351デフォルトの名無しさん:2007/05/13(日) 00:18:02
小学生だっているだろうし 仕方ないさ
352デフォルトの名無しさん:2007/05/13(日) 00:21:03
#include <stdio.h>
#include <math.h>

int main() {
int nums[] = {1,2,3,4,5};

int nums_len = sizeof(nums)/sizeof(nums[0]);
int num = 0;
for (int i = 0; i < nums_len; ++i) {
num += nums[i] * (int)pow(10, (nums_len-1) -i);
}

return 0;
}

よし、これでどうだ!!
353デフォルトの名無しさん:2007/05/13(日) 00:29:06
もうsprintfでいいだろw
354デフォルトの名無しさん:2007/05/13(日) 00:48:01
ちょっと聞きたいんだけど
(環境.WindowsXP BCC32)

#include <stdio.h>
int main()
{
FILE *fp=fopen("test.txt","w");
unsigned d=0x0d;
fwrite(&d,sizeof(d),1,fp);
fclose(fp);
return 0;
}

test.txt に バイナリ値で 0D 00 00 00 ではなく 00 00 00 4E として書き込まれる
これってどうしてでしょうか?
355デフォルトの名無しさん:2007/05/13(日) 00:52:10
356デフォルトの名無しさん:2007/05/13(日) 00:52:54
>354
bcc32(v5.82)でコンパイルしてみた。

ちゃんと
0D 00 00 00
になったけど?
357デフォルトの名無しさん:2007/05/13(日) 00:53:19
>>354俺んとこじゃちゃんと0D 00 00 00になったぞい
358デフォルトの名無しさん:2007/05/13(日) 00:54:14
亡羊のページなんか張るなよ
359デフォルトの名無しさん:2007/05/13(日) 00:55:10
>>358
なんで?んじゃどこをはれば良いの?なんでいちいちちっぽけな低学歴馬鹿のお前の言うことを
聞かなきゃならねーの?さっきからうぜぇんだよ、くだらねぇことでチクチク煽ったり、あほじゃねこいつ?
360354:2007/05/13(日) 00:55:21
失礼しました
ちょっと違いました

バイナリ値で 0D 00 00 00 ではなく 00 00 00 として書き込まれる
0D が書き込まれていない、でした
それと1Aも書き込まれないようです
制御コードだからですか?
361デフォルトの名無しさん:2007/05/13(日) 00:56:20
>>360
意味が分からん。何がいいたい?
362デフォルトの名無しさん:2007/05/13(日) 00:56:52
確認方法に問題があるんじゃないのか。
ちゃんとしたバイナリエディタ使ってるか?
363自分が気に食わない発言を見つけると得意気に罵倒してくる基地外:2007/05/13(日) 00:57:12
286 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:09:04
>>284
ダウト。慣用句的にそれを使っているのなら、
一度マニュアルページをよく読んで自分の過ちに気付いておいた方がいい。

293 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
お前みたいな自分基準しか言わない馬鹿や間違っているのを見つけては叩くだけしかしない奴が
このスレどころかこの板にこない方が良いよ、プロになれなかったグラマー(ただのデブ)www
364デフォルトの名無しさん:2007/05/13(日) 00:58:33
>>360
バイナリィエディタで開いてみたら、0D 00 00 00になったけど?
365デフォルトの名無しさん:2007/05/13(日) 01:00:00
>>360
0x0d を書き込んでいて、
なんで 0x1Aを期待するのかわからんし。
そもそも書き込んでるのがバイナリなのにファイル名が.txtなのも謎だし。

というか君は何がしたいの?w
そこを言えば根本的なバグも教えて貰えるかも。
366デフォルトの名無しさん:2007/05/13(日) 01:00:40
>>358
ねぇねぇ、どこを参照すりゃ良いの?お前、もしかして亡羊さんのことが嫌いな人?
亡羊さんに嫌がらせをしている人がいないか聞いたら、お前みたいなへぼプログラマーが
誰か特定できるかな?ちと亡羊さんに通報してこようかな?w
367デフォルトの名無しさん:2007/05/13(日) 01:01:46
>>365
お前もいちいちうるさいなぁ、馬鹿じゃね?わけがわからないとかじゃなくてさぁ
できたって報告があるんだから、いちいち何言ってんだかわかんねーじゃなくて
どうやって0D 00 00 00以外が書き込まれたか、確認した手段を聞いた方がはえーよ馬鹿w
368354:2007/05/13(日) 01:01:59
>>356-357
そうですよねぇ
普通なりますよねぇ
もうすこしチェックしてみます
369デフォルトの名無しさん:2007/05/13(日) 01:03:44
>>360
ttp://www.vector.co.jp/soft/dl/win95/util/se079072.html
良いから開いてみれ。ちゃんと書き込まれているからw
370デフォルトの名無しさん:2007/05/13(日) 01:07:54
C言語初心者です。
基本情報処理技術者をとって会社に就職して、
プログラマーからSEになったらどの位の給料になるんでしょうか?
もちろん個人と会社による話ですが、相場を教えて下さい。
SEになっても月に30万位なんでしょうか??
371デフォルトの名無しさん:2007/05/13(日) 01:07:58
365の反応が普通だろw
372デフォルトの名無しさん:2007/05/13(日) 01:08:52
>>370
マ板池
373デフォルトの名無しさん:2007/05/13(日) 01:09:25
>>367
ば…ばかって言うヤツが馬鹿なんだからねっ!!!
374デフォルトの名無しさん:2007/05/13(日) 01:09:51
>>371
普通じゃねーよ、相手にひたすらプレッシャーを与えてボロを出したところを
さらに叩く基地外くらいだろ、そういうのがデフォになっている視野も心も狭い低学歴はw
普通は何を使って書き込まれた値を確認したか聞くだろ。
375デフォルトの名無しさん:2007/05/13(日) 01:10:52
>>372さん
マ坂とはなんでしょうか…?
376デフォルトの名無しさん:2007/05/13(日) 01:11:40
良いかてめぇ〜ら、C言語をかじったくらいのクソガキが、これから始める初心者を
ネチネチいじめてんじゃねーよ、スレタイが読めていないのか、こういうスレに集まる
初心者より自分の方が知識も経験もあるということを知って安心したいのか知らないが
答える気がないならこのスレから出ていってくれ。二度と戻ってくるな。
所詮お前は、プロになれなかったただのデヴ(グラマー)だ
377デフォルトの名無しさん:2007/05/13(日) 01:12:03
>>375
プログラマー板
378354:2007/05/13(日) 01:15:10
すみません.自分の勘違いのようです
今作っているものがunsigned ID, unsigned short sizeを読み、次にsize分文字列として読ませているんですが
IDが0x0Dまたは0x1Aになるとバグったもので
もう一度見直してきます

どうもありがとうございました
379デフォルトの名無しさん:2007/05/13(日) 01:16:06
>>378
おそらくfopenの際、モードをバイナリにしてないからだろ
バイナリ指定してない場合、改行文字絡みで自動変換が行われる
380デフォルトの名無しさん:2007/05/13(日) 01:21:23
>>374
オマエのトラウマなんかどうでもいいよ
381デフォルトの名無しさん:2007/05/13(日) 01:21:24
>>374
火病ってんじゃねーぞ

・ >365 が元質問者を叩いているという事実認識がまず脳内
・ 自分が >365 を叩いてる事実を放置
・ 自分の主観が「普通」と勝手に定義

どっちが基地外かは火を見るより明らか
382デフォルトの名無しさん:2007/05/13(日) 01:21:55
マジでやめてくんないかな
383デフォルトの名無しさん:2007/05/13(日) 01:22:45
嫌な荒れ具合だな
亡羊本人でも降臨してんの?
384354:2007/05/13(日) 01:24:02
>>379
まったくもって情けないです
バイナリ指定したつもりがしてませんでした
ちゃんと動作しました
お騒がせしました
385デフォルトの名無しさん:2007/05/13(日) 01:25:07
>>380 >>381
おまえらうるせーよ?お前が一番うっとうしい、士ねよ馬鹿
質問に答える気がないなら来るなよ。ほかにレスしている奴の邪魔なんだよクソガキ
何歳だお前?なぁ?士ねよ馬鹿w
ふぁびょってんのはお前だろ。他人にファビョってんじゃねーよとか言っておきながらwwwww

380 名前:デフォルトの名無しさん 投稿日:2007/05/13(日) 01:21:23
>>374
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
↑それお前だろ。お前の場合はウマシカだがw

381 名前:デフォルトの名無しさん 投稿日:2007/05/13(日) 01:21:24
>>374
火病ってんじゃねーぞ

・ >365 が元質問者を叩いているという事実認識がまず脳内
・ 自分が >365 を叩いてる事実を放置
・ 自分の主観が「普通」と勝手に定義

どっちが基地外かは火を見るより明らか

・ >365 が元質問者を叩いているという事実認識がまず脳内
自分のレス読み返せ基地外。

・ 自分が >365 を叩いてる事実を放置
はぁ?なんで?叩いた覚えありましぇ〜〜ん、ちゃんとできたと答えたけど?
いつ俺が叩いたか、参照レスきぼんぬ。ってか、俺を特定できないから無理だろうけど
俺は叩いていないし
386デフォルトの名無しさん:2007/05/13(日) 01:25:53
>>383
そうやっていないのに特定の人物をどうこう言い始めるだろ?
お前もうそれで名誉毀損だよ。亡羊さんに通報しとくねw
覚悟しとけよ
387デフォルトの名無しさん:2007/05/13(日) 01:27:09
釣れてますねw
388デフォルトの名無しさん:2007/05/13(日) 01:27:18
>>386
亡羊ってだれだよ。
389デフォルトの名無しさん:2007/05/13(日) 01:27:40
>>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 に問う
なんではっちゃだめなの?理由は?お前の気まぐれとか、気分とかだったらまずお前がただの馬鹿だと言う結論しか出ないから。
参考にできるページがあったら使う、別になんら問題ないし、そのページには間違った記述はされてないよ。
まぁ、たぶん亡羊を嫌っている誰かだろ。特定できそうだから、亡羊さんに聞いてくるわ。
どうせプロになれなかったボケグラマーだろw
390デフォルトの名無しさん:2007/05/13(日) 01:29:54
>>388
>>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 参照w
言ったのは俺じゃないから。正しくは望洋だから。ANSI、ISO準拠を重視した本の出版をしているし
そんじょそこらの知ったかプログラマーと比べたらかなりまともな人だろうね。
他人を叩くような奴って、世界基準すら知らなさそうで視野が狭そうだなw
int mainについても理解してなさそう(どこぞのスレで議論になったが、ISOの参照ページを出したら
尻尾を巻いて逃げたけどなw)
391デフォルトの名無しさん:2007/05/13(日) 01:32:00
>>俺を特定できないから無理だろうけど

これがこいつの心理だろうなw
392デフォルトの名無しさん:2007/05/13(日) 01:32:30
>>381
> ・ 自分の主観が「普通」と勝手に定義
はい?自分の主観で言った覚えはありませんけど?
ちゃんとバイナリィエディタで 0D 00 00 00 が書き込まれているのを確認しましたが何か?
質問者が何で書き込まれた値を確認したか聞いたのに、どうして俺が 主観 となるんでしょうか?
正確にお答えをして下さい。でなければ偽証罪で通報しますよ?証人喚問は怖いですよぉ〜〜
393デフォルトの名無しさん:2007/05/13(日) 01:33:35
>>391
ぷぷっ、そういうところにしかもう反応できない肝っ玉の小さいクズ乙w
こういう匿名(実際のところは完全に匿名ではない)ところでしか強がれないボケ
他人の粗探しを必死こいてするくせに、自分の落ち度をまったく認めない井の中の蛙乙w
394デフォルトの名無しさん:2007/05/13(日) 01:34:33
ここまで望洋さんに肩入れできるのはある意味すごいと思った。
395デフォルトの名無しさん:2007/05/13(日) 01:35:51
質問者の答えに答えるどころか お前何やってんだよ としか言わない奴はとっととこのスレから
出て行ってくれませんか?うっとうしいんだよ、答えもしないくせに相手のボロを探すだけの馬鹿
396デフォルトの名無しさん:2007/05/13(日) 01:35:52
>>389
特定できたら家にきてくれよ。酒くらいは出してやる。
397デフォルトの名無しさん:2007/05/13(日) 01:40:30
もう眠い。寝る。
398デフォルトの名無しさん:2007/05/13(日) 01:41:01
どうぞ。
399デフォルトの名無しさん:2007/05/13(日) 02:02:29
望洋信者って怖いな
400デフォルトの名無しさん:2007/05/13(日) 02:04:43
いつの間にか信者になっているしw
参照できるライブラリのページを出しただけだろ。亡羊を狙った覚えはない
401デフォルトの名無しさん:2007/05/13(日) 02:44:13
なんだ、まだやってたんだ。暇な人はこれだから……
402デフォルトの名無しさん:2007/05/13(日) 05:37:00
他人の粗探しをしている奴がきんもぉ〜♪だよな。指摘するならするで
間違いを指摘すりゃ良いだろ。気持ち悪いよ、お前それわかってねーなって
ネチネチ煽る奴。日頃、まともな人付き合いがないからこういう捻くれた
相手を見下して自分が優位な立場だと思い込みたい引きこもりなんだろうね
403デフォルトの名無しさん:2007/05/13(日) 05:45:51
>402
自己紹介乙
404デフォルトの名無しさん:2007/05/13(日) 06:14:59
>>403 反応したお前ノナー
405デフォルトの名無しさん:2007/05/13(日) 06:15:32
>>403=昨日、つまらないミスを気持ち悪く指摘して煽っただけの知ったかバカ
406デフォルトの名無しさん:2007/05/13(日) 07:01:27
亡羊?
ボコボコにしてやんよ

 ∧_∧
 ( ・ω・)=つ≡つ 
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪
407質問者:2007/05/13(日) 08:52:04
きのうはお騒がせしました。
「演算子を使わない」とは、四則演算のことです。
ビット演算で何とかできないかな?と思いましたが。どうでしょうか?
408デフォルトの名無しさん:2007/05/13(日) 10:27:06
#include <stdio.h>
#include <string.h>
int main(void) {
    char *name[12] = {"Mutsuki","Kisaragi","Yayoi","Uzuki",
    "Satsuki","Minazuki","Fuzuki","Hazuki",
    "Nagatsuki","Kannazuki","Shimotsuki","Shiwasu"};
    char **p;
    int i;
    p = name;

    for(i = 0;i < 12;i++){
        printf("%2d月:%s(%d)\n",(i + 1),strlen( *p ),*p); /* @ */
        printf("%2d:%s\n",strlen(*p),*p); /* A */
        ++p;
    }
    return 0;
}
今、ポインタのポインタを使って文字数を数える練習問題やっているのですが
@のprintf文を実行するとDos窓が強制終了してしまいます。
デバックの時にエラーは出ないのですが・・・なにが間違っているのでしょうか。
Aの方は普通に出力できます。

Visual C++ 2005 Express Editionを使っています。
409デフォルトの名無しさん:2007/05/13(日) 10:38:24
>>407
コンピュータサイエンスの基礎をやれ。
四則演算を論理素子でどうやって実現するか知れば
くだらない疑問を抱かずにすむ。
410デフォルトの名無しさん:2007/05/13(日) 11:02:22
>>408
printf("%2d月:%s(%d)\n",(i + 1),strlen( *p ),*p);

%2d = i+1
%s = strlen(*p) ←
%d = *p ←
411デフォルトの名無しさん:2007/05/13(日) 11:08:34
どうやって、論理素子で計算するんですか。
16進数に置き換えてするんだとは思いますが、すごく疑問です。
2×4=8とか、8÷2=4を論理素子で計算する。
すごく難しいと思います。
412408:2007/05/13(日) 11:15:59
>>410
あああ!逆だった
ありがとうございます!
413デフォルトの名無しさん:2007/05/13(日) 11:36:28
>>411
本屋に行って"CPUの仕組み"みたいな本買ってこい
あとは加算器で調べてみるとか
414デフォルトの名無しさん:2007/05/13(日) 11:47:10
>>411
2 << 2
8 >> 1
415デフォルトの名無しさん:2007/05/13(日) 12:40:23
剰余はどうするんすか?
スタック使って割られる数-商*割る数って演算するんですか?
416デフォルトの名無しさん:2007/05/13(日) 13:43:31
ファイル操作のとこでreturn(-1);の意味がさっぱり。
417デフォルトの名無しさん:2007/05/13(日) 14:57:20
>>415
掛け算と割り算は加減算で表現できるだろ
単純に何回も引いていって引けなくなればそれが余り
2進数で桁上がり下がりフラグ使って同じようにやればできる
筆算で(2進数)割り算やるときとほとんど同じ あとは本買って嫁

>>416
return(-1);はよくエラーチェックに使う
-1が返ってきたらファイル開けなかったということになってるとおも
418デフォルトの名無しさん:2007/05/13(日) 14:58:24
変数を使わずに1+2の計算結果を出すにはどのようなプログラムを組めばいいのでしょうか
419デフォルトの名無しさん:2007/05/13(日) 15:04:32
printf("%d",1+2);
420デフォルトの名無しさん:2007/05/13(日) 15:04:42
>>418
こういうこと?

printf("%d\n", 1 + 2);
421デフォルトの名無しさん:2007/05/13(日) 15:05:48
演算子、変数と来たから次は何だろう
422デフォルトの名無しさん:2007/05/13(日) 15:06:39
関数を使わずに(ry
423デフォルトの名無しさん:2007/05/13(日) 15:08:56
C言語を使わずに(ry
424デフォルトの名無しさん:2007/05/13(日) 15:10:33
頭を使わずに(ry
425デフォルトの名無しさん:2007/05/13(日) 15:20:20
>>417ありがとうございます
426デフォルトの名無しさん:2007/05/13(日) 15:35:27
30年とか表示するとき
int a;

a = 30年;

printf("%d",a);

でやると、年が邪魔っぽくて表示されない
どうやればいいの〜?
427デフォルトの名無しさん:2007/05/13(日) 15:37:35
printf("%d年", a);
428デフォルトの名無しさん:2007/05/13(日) 15:39:42
表示以前にコンパイルできないのでは????
429デフォルトの名無しさん:2007/05/13(日) 15:40:53
>>428
だから結果として年が邪魔で表示されないんだろう。初心者苛めんな。
430デフォルトの名無しさん:2007/05/13(日) 15:41:45
せめて教科書読めよっていう質問ばっかりきてるなぁ
431デフォルトの名無しさん:2007/05/13(日) 15:47:30
とうとう>>424の問題が出てきたか
432デフォルトの名無しさん:2007/05/13(日) 16:04:10
一般的な入門書やりおわったけど、次はどんなステップを踏めばいいですか?
433デフォルトの名無しさん:2007/05/13(日) 16:05:13
>>432
目標は何?
434デフォルトの名無しさん:2007/05/13(日) 16:07:29
自分一人で基礎知識の応用が出来るようにすることかな。
処理速度とかも視野に入れた上で。

なんかテキトーに自作ツール作ってみるとか。
435デフォルトの名無しさん:2007/05/13(日) 16:08:14
>>434>>432へのレス
436デフォルトの名無しさん:2007/05/13(日) 16:09:20
>>432
この世界は片っ端から全部覚えてたらキリがないから
ちゃんと自分がなにをやりたいのか見定めて進んで行かんと、
無駄に多大な労力を費やすことになるぞ。
437デフォルトの名無しさん:2007/05/13(日) 16:09:22
作りたいもん作ればいいと思うぜ
438デフォルトの名無しさん:2007/05/13(日) 16:12:40
>>434
自分で C のプリプロセッサでも作ってみたら?

確か以前、"未踏"でも採択されたことがあったはず。
439デフォルトの名無しさん:2007/05/13(日) 16:33:39
Socket,データベース,文字列処理(正規表現含む)
これらができると幅がぐっと広がる…っていうか基本
後はアイデア次第
440デフォルトの名無しさん:2007/05/13(日) 16:34:35
かなり意欲はあるのですが…やはりいろいろとオリジナルのアプリケーション・ソフトウェアを作ってみたいです。やはりそーゆー本を買っていろいろやってみるべきですか?
441デフォルトの名無しさん:2007/05/13(日) 16:36:13
本を買う必要はないが、色々やってみるべきだろう。
442デフォルトの名無しさん:2007/05/13(日) 16:38:52
>>439の中でまず文字列処理からやってみては?
とっつきやすいと思うよ。
ネットにも入門サイトとかいっぱいあるし。
443デフォルトの名無しさん:2007/05/13(日) 16:41:18
入門書に文字列処理についての事が無かった様に思うのでお聞きします。文字列処理は初耳です。
444デフォルトの名無しさん:2007/05/13(日) 16:42:23
>>440
作りたいものがあるならさっさと作ってみるのが吉
やってるうちに技術もついてくる
445デフォルトの名無しさん:2007/05/13(日) 16:44:04
>>443
>入門書に文字列処理についての事が無かった様に思うのでお聞きします
strcpy() も文字列処理だと思うが?
446デフォルトの名無しさん:2007/05/13(日) 16:44:16
現実問題Cで作るべきアプリなんて存在しないのが辛いな
447デフォルトの名無しさん:2007/05/13(日) 16:45:51
みなさんご親切に…大変ありがたいです。ちなみに、みなさんはどのようなプロセスで、今のC言語のプログラミング力まで力を伸ばされたんですか?簡易的に話して頂けたらいいのですが…
448デフォルトの名無しさん:2007/05/13(日) 16:47:17
ゲームプログラミングをやってみては?
囲碁・将棋・チェス・オセロとかね。
Cで作るのが最適。
449デフォルトの名無しさん:2007/05/13(日) 16:50:23
>>447
宇宙からの電波

>>448
オセロなら6行で作ってた神がいたな
450デフォルトの名無しさん:2007/05/13(日) 16:51:01
>>448 やはりそうしようかなと思います。Cで作るべきアプリケーションがそんなに存在しないようならば
451デフォルトの名無しさん:2007/05/13(日) 16:51:53
自分は将棋が趣味で、自分より強い将棋プログラムを作ろうという目標があったから勉強した。
将棋プログラムってハッシュテーブルとかリストとかソートとかビット演算とか、
基本的なアルゴリズムが各所にちりばめられてるから勉強にはいいテーマだと思う。
452デフォルトの名無しさん:2007/05/13(日) 16:52:40
>>450
>Cで作るべきアプリケーションがそんなに存在しないようならば 

これって、どういう意味だと思っている?
453デフォルトの名無しさん:2007/05/13(日) 16:56:43
>>452 C言語にはその点ではあまり需要がないものかと…
454デフォルトの名無しさん:2007/05/13(日) 16:57:15
>>450
あとはOSに興味あるならLinuxのソース読んでみるとか

学ぶのは自分で作ってみたり本読むか知っている人に聞く
プログラミング力のうちの知識はそれで十分だが英語できるかどうかで
足りない知識の吸収率が変わってくる(最先端の知識・アルゴリズムなど)
あとは経験で補えるが数学力のあるなし(知識じゃなく頭良いかどうか)
でどこまで伸びるかが変わる
455デフォルトの名無しさん:2007/05/13(日) 17:06:48
勉強のためにCの勉強してるなら
標準ライブラリのクローン(strcpy, strcat, printf, ...)と
UNIX系コマンドラインツール(cp, tail, head, sort, ...)のクローンを片っ端から作っていくと勉強になる。
サイズも小さいし、答え合わせ用のソースコードも(あまり初学者向けとは言いがたいが)あるし。

まあほとんど糞つまらん苦行に近いがコーディングは楽しいし一番無駄がないだろう。
456デフォルトの名無しさん:2007/05/13(日) 17:08:09
うーん、自分はまだ、配列、構造体、ポインタ、ファイル操作、関数の作り方、変数、if文、switch文、for文、while文、をやってきたとゆう感じです。
457デフォルトの名無しさん:2007/05/13(日) 17:10:47
>>456
じゃ、もう少し実践的な奴やってみたら?
http://www.kumei.ne.jp/c_lang/
とか参考にしてウインドウ開いてみたりさ。
458デフォルトの名無しさん:2007/05/13(日) 17:15:36
バブルソートを用いて
構造体に対して、データが格納された構造体配列を
学生証番号で降順にソートする関数sortIDと
点数で降順にソートする関数sortEngを作成しなさい。

データの入力は、関数input_seiseki_pを呼び出して行い、
次に「どちらで整列しますか(1:学生証番号、2:点数):」と表示し
その入力により関数sortIDと関数sortEngを選択肢、その結果を
関数seisekiを使って表示する関数meinを作りなさい


上記の問題において私なりに途中まで作ってみたのですが、
ここから先がわかりません。。

どなたかお知恵を拝借させて下さい

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3974.c
↑途中まで作ったソースです。

よろしくお願いします。
459デフォルトの名無しさん:2007/05/13(日) 17:17:41
もういっかい違う入門書を買ってみろってことですか?
460デフォルトの名無しさん:2007/05/13(日) 17:40:37
>>458
どこがどうわからないのかkwsk
学校とかのレポートなら解答出すわけにいかんし

>>459
>>457じゃないがおまえちゃんと>>457のリンク先見てみたのか?
簡単なデータペースやゲームの作り方も内容にあるだろ
それとも全部わかってるのかこの内容?
461デフォルトの名無しさん:2007/05/13(日) 17:47:38
まぁ、猫が妥当かどうかは問題だがな。
462デフォルトの名無しさん:2007/05/13(日) 17:48:44
ちゃんと見てませんでした。ごめんなさい。
463デフォルトの名無しさん:2007/05/13(日) 18:10:29
http://www.geocities.jp/supermisosan/rksimultaneousequation.html
のページにあるローレンツのプログラムをコンパイルしようとしたのですがエラーがでて出来ませんでした
開発環境に問題があると思うのですが、原因がよくわからないのでご教授願います
windowsXPでソフトは「C言語を始めよう!」、コンパイラはBorland C++ Compiler 5.5です
そのままコピペしてコンパイルするとエラーメッセージが(rktest.cはファイル名)
------ コンパイル開始 ------
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
rktest.c:
エラー E2140 rktest.c 17: ここでは宣言はできない(関数 main )
警告 W8057 rktest.c 57: パラメータ 't' は一度も使用されない(関数 f1 )
警告 W8057 rktest.c 57: パラメータ 'z' は一度も使用されない(関数 f1 )
警告 W8057 rktest.c 66: パラメータ 't' は一度も使用されない(関数 f2 )
警告 W8057 rktest.c 75: パラメータ 't' は一度も使用されない(関数 f3 )
*** 1 errors in Compile ***
------ コンパイル終了 ------
と出ます
スレ違いのような気がしますが、該当スレが見つからなかったのでここで質問させていただきました
464デフォルトの名無しさん:2007/05/13(日) 18:18:13
>>463
そのコードはANSI Cに準拠していない。

FILE *output; の行を main 関数の先頭に持ってくるといいよ。
465デフォルトの名無しさん:2007/05/13(日) 18:39:02
4つくらいのデータを1つのノードとして
そのノードを2二次元配列の1文字分のように扱いたいんですけど、
構造体を設定して
strcut ABC{
char
char
char
};
struct ABC data[][];とできますかね?
466デフォルトの名無しさん:2007/05/13(日) 18:40:59
struct ABC data[ ][ ];です
467デフォルトの名無しさん:2007/05/13(日) 18:41:17
なんでやってみないの?
468デフォルトの名無しさん:2007/05/13(日) 18:42:18
いややったんだけどセグメンテーションエラーだから
無理なのかと。
469デフォルトの名無しさん:2007/05/13(日) 18:44:16
>>468
コンパイルできないはずだけど
470デフォルトの名無しさん:2007/05/13(日) 18:45:21
>>469
どういう意味ですか?
471デフォルトの名無しさん:2007/05/13(日) 18:46:05
>>468
コード貼ってみろよ。中途半端に省略しないで。
472463:2007/05/13(日) 18:47:21
>>464
回答ありがとうございました
警告は消えませんでしたが、エラーが消えて無事コンパイルすることができました
この警告は無視しても問題ない範囲なのでしょうか?
原因を把握していらっしゃるのでしたらお伺いしたいのですが
473デフォルトの名無しさん:2007/05/13(日) 18:48:14
>>472
使ってない仮引数を教えてくれてるだけ。無視しても問題はない。
474デフォルトの名無しさん:2007/05/13(日) 18:49:44
>464
コンパイラがANSI Cに対応してないんでねーの?
475463:2007/05/13(日) 18:50:31
重ね重ねのご親切ありがとうございました
476デフォルトの名無しさん:2007/05/13(日) 18:51:37
>>474
ANSI Cでは変数はブロックの先頭のみで宣言できる。
bccはANSI準拠。
477デフォルトの名無しさん:2007/05/13(日) 18:54:07
struct ABC
{
char name[10];
char initial[10];
char home[10];
};と構造体を設定

struct ABC data[10][10];
int i,j;

for(i=0;i<10;i++){
for(j=0;j<10;j++){
strcpy(data[i][j].name,NULL);
strcpy(data[i][j].name,NULL);
strcpy(data[i][j].name,NULL);
}
}

一部ですけども、その二次元配列の中身の全ての各部門の初期化をしたいのですけど
この時点でセグメンテーション違反がおきるわけです。
478デフォルトの名無しさん:2007/05/13(日) 18:55:21
strcpy(data[i][j].initial,NULL);
strcpy(data[i][j].home,NULL);です
479デフォルトの名無しさん:2007/05/13(日) 18:57:10
馬鹿だろ。

strcpy(data[i][j].name, "");
480デフォルトの名無しさん:2007/05/13(日) 19:04:35
>>479
ありがとさん
481デフォルトの名無しさん:2007/05/13(日) 19:07:04
まあ
data[i][j].name = '¥0';
ってやった方がいいとは思うけど初期化だから別にいいか。
482デフォルトの名無しさん:2007/05/13(日) 19:07:45
うわ。間違い
 data[i][j].name[0] = '¥0';
こう
483デフォルトの名無しさん:2007/05/13(日) 19:54:50
大学でC言語を習っています。
ifやforといった基本的なことは理解しているつもりである程度プログラムは書けます。
今、アルゴリズムの授業を受けているのですがポインタや構造体が理解できません。
参考書に載っているソースを自分で打ち込んで実行したり、少し変えたりしているのですがどうも暗記っぽくなっています。
そのため「○○をポインタと構造体を利用して作れ」と言われても何からしたらいいかわからない状態で。
ポインタや構造体はC言語で一番重要と言われているので是非自分のものにしたいです。
皆さんはどうやってポインタや構造体を理解していきましたか?
484デフォルトの名無しさん:2007/05/13(日) 19:57:33
サンプルコードをいくつか読めばそれで理解できた。
485デフォルトの名無しさん:2007/05/13(日) 20:10:22
使ってりゃ理解できた
486デフォルトの名無しさん:2007/05/13(日) 20:11:48
>>483
わからないところは図を描いて理解。
デバッガで全変数表示してつながり・変化を確認。
487デフォルトの名無しさん:2007/05/13(日) 20:12:40
くそなげえプログラム書いてたら飯なんてどうでも
よくなって4時間経過w
488デフォルトの名無しさん:2007/05/13(日) 20:30:41
さっき構造体での二次元配列はどのようにすればいいのかを聞いたものですけど
その二次元配列data[i][j]において
1行さすのはdata[i]でいいのはわかるのですけど
1列をさすのはどうおけばいいですかね?
489デフォルトの名無しさん:2007/05/13(日) 20:44:39
基礎からやり直せ
490デフォルトの名無しさん:2007/05/13(日) 20:46:59
>>488
列は無理。
491デフォルトの名無しさん:2007/05/13(日) 20:47:08
>>488
メモリの配置を想像してみろ。
列は分断されていて連続したメモリとしてアクセスする方法はない。
492デフォルトの名無しさん:2007/05/13(日) 20:57:08
>>483
ポインタのイメージがつかめない場合はその都度アドレスと中身を表にして書いて理解
ポインタpのpと*pと&pの違い,あるいは変数aのaと*aと&aの違いが
わかっていれば大丈夫のはず
なぜポインタが必要かっていう設計思想を知りたければアセンブラとかを
学んでみるといいいかも

>>488
他の言語なら実装されてたりするけど
C言語ではそういう便利な機能は基本的に用意されてない
493デフォルトの名無しさん:2007/05/13(日) 23:12:11
転職してプログラマになりたいんだ。
そのためにCとC++をマスターしたいんだが…。

それで今は一応C言語の基礎を終わらせたんだけど
C言語で関数やアルゴリズムやAPIなども覚えてから
C++行ったほうがいいのかな?

それとも先にC++でオブジェクト指向とか把握してから
いろんなこと手を出した方が良いかな?
494デフォルトの名無しさん:2007/05/13(日) 23:15:29
さっさとC++池
今時Cなんてほとんど使わないからC++からCのコードを利用する際の最低限の知識さえあれば十分。
495デフォルトの名無しさん:2007/05/13(日) 23:16:05
ぶっちゃけ経験年数のが大事。
マの真っ当な評価なんてマ以外に出来るわけがないんだから。
496デフォルトの名無しさん:2007/05/13(日) 23:22:16
あらためてアルゴリズムを考えてみると
その列であてはまるのは1つだから
列指定にしなくてよかった。
497デフォルトの名無しさん:2007/05/13(日) 23:23:21
>>494
Cは使わないのか
じゃC++の勉強にいこうかな
まだCでコードとか書けないけど大丈夫かな・・・

>>495
年齢が30前後とかだと未経験じゃプログラマになるの難しいかな?
498デフォルトの名無しさん:2007/05/13(日) 23:29:01
>>497
おまいさんはマ板にお逝き。
499デフォルトの名無しさん:2007/05/14(月) 00:00:23
>>497
どんなプログラムの仕事がしたくてどんな会社かによる
なんか実用的(ゲームでもいい)なプログラムひとつでも組んでると
就職のときにアピールにはなる
とりあえずマ板へ池
500デフォルトの名無しさん:2007/05/14(月) 01:50:07
プログラムの処理がどの程度完了しているのかを示すことを試みたのですが,
うまくいきませんでした.具体的には,以下のことをしました.

#include<stdio.h>

int main(){
int i, j;

for(j=0; j<10000; j++){
for(i=0; i<100000; i++){
}
if((j%1000)==0)printf("*");
}
printf("\n");

return(0);
}

j が10000ループされますが,1000ループごとに * を1つ出力し,
* が10個になったら処理完了を知らせるというものです.
上のソースコードのようにしてみたところ,j のループを出てから
* が10個同時に表示されてしまいます.

どのように書けばよいのでしょうか?お願いします.
501デフォルトの名無しさん:2007/05/14(月) 02:02:37
>500
ちゃんとjのループの途中で*が表示されてるけど?
ただ、1000個ごとなら(i%j)==999だろう。
502デフォルトの名無しさん:2007/05/14(月) 02:07:08
バッファフラッシュしなきゃいけないとかそーいう問題じゃないの?
環境は?
503デフォルトの名無しさん:2007/05/14(月) 02:09:42
ANSI C準拠だったら整数の範囲って32767までじゃなかった?
504デフォルトの名無しさん:2007/05/14(月) 02:16:56
>>500
for(i=0; i<100000; i++){

i 使って無いじゃんwwww
ワロタw
505デフォルトの名無しさん:2007/05/14(月) 02:18:50
int に10000も入れれませんwww
基本からやり直せよwww
506デフォルトの名無しさん:2007/05/14(月) 02:19:42
>>500
if((j%1000)==0){ printf("*"); fflush(stdout); }
という話か?
507デフォルトの名無しさん:2007/05/14(月) 02:20:26
>>504-505
釣りにしても ひどい
508デフォルトの名無しさん:2007/05/14(月) 02:22:24
C とC++ の違いを分かってない人がいっぱいいるので一応書いておく

Cの構造体には変数しか設定できないのですが
C++は構造体の中に関数を入れれます。それがクラスって呼ばれるものです

C++でヤリなされw
509デフォルトの名無しさん:2007/05/14(月) 02:23:17
何かの処理の進捗状況を表示する部分について質問してるんでしょ。
単にその処理の部分は省略しただけなんじゃないか?
510500:2007/05/14(月) 02:25:02
>>501-508
レスありがとうございます.

>>502さん及び>>507さんのもので,求めていた結果を得ることが出来ました.
これからfflushをググってみます.

>>504-505が釣りかどうかすら分からない自分が悔しいです.
勉強に励みます.ありがとうございました.
511デフォルトの名無しさん:2007/05/14(月) 02:26:59
進捗状況ってさ

ソースに
printf("処理○○終わり");
って書いていけばいいんじゃないの?

完成したら消せばいいわけだし
512デフォルトの名無しさん:2007/05/14(月) 02:28:26
だからfflushはだめだってw
513デフォルトの名無しさん:2007/05/14(月) 02:30:15
ほかっとけ
初心者だぞ相手はwww
514500:2007/05/14(月) 02:31:20
>>509
実際は処理内容が含まれますが,それとは別に処理内容を全部消したもの
>>500そのもののソースファイル)を作成して実行しても * が一度に出力された
ので質問をしにきました.

>>511
1試行で数分かかる繰り返し計算処理なので,何%終了したのかを概数でも
良いから表示させたかったのです.

>>512
駄目なのですか??
515デフォルトの名無しさん:2007/05/14(月) 02:32:26
マロックにサイズオブ使わずそのまま数字書いてるとか
goto使いなんだろうよ

516デフォルトの名無しさん:2007/05/14(月) 02:33:37
>>514
目的が達成できたんならそれで問題ないよ
環境依存だから、他の環境に持っていくことがあるなら問題だけど
517デフォルトの名無しさん:2007/05/14(月) 02:34:10
つうかさ
関数の再帰使わなかったら 処理スピードなんか大して変わらんよ
何千万行でも数行でも・・・
518500:2007/05/14(月) 02:37:48
>>516
今の環境のみで動かすものなので
これで大丈夫です.皆さん,ありがとうございました.
519デフォルトの名無しさん:2007/05/14(月) 02:50:38



     お ま い ら 難 し く 考 え す ぎ


 
520デフォルトの名無しさん:2007/05/14(月) 02:58:24
>>508
クラスの肝は派生できる事。
派生無しにクラスを語っても意味がない。
521デフォルトの名無しさん:2007/05/14(月) 03:01:07
C++はスレ違い
522デフォルトの名無しさん:2007/05/14(月) 03:05:30
>>516の言ってる環境依存ってfflushの事か?
確かに入力ストリームに対するfflushは未定義動作だが
出力ストリームに対しては正常に機能したと思うが違ったか?
523デフォルトの名無しさん:2007/05/14(月) 03:08:10
お前ら 
もう質問者はいなくなったぞw
524デフォルトの名無しさん:2007/05/14(月) 03:16:47
rand()で作った変数を
for()等でループにかけることって
実際問題 どうゆう場合ですか?
525デフォルトの名無しさん:2007/05/14(月) 03:17:47
頭の悪い質問に頭の悪い回答者
このスレほんとゴミ化したな・・・
526デフォルトの名無しさん:2007/05/14(月) 03:23:18
>>512
中途半端な知識でゴミ回答するんじゃないよ
527デフォルトの名無しさん:2007/05/14(月) 03:30:23

じゃあ 頭のいい質問しましょw

関数のポインタと、配列のポインタ等の置き場が勝手に割り付けられると聞いたのですが

実際はどのように割り付けてるんですか?

出来ればコンパイル自体のソースをもちいて答えていただきたいと思います
528デフォルトの名無しさん:2007/05/14(月) 03:31:25
>>524
質問の意味がよく分からんが
10体の敵がそれぞれランダムに動く場合とか?
529デフォルトの名無しさん:2007/05/14(月) 03:32:34
>>527
メモリの話か?
530デフォルトの名無しさん:2007/05/14(月) 03:33:24
>>527
ポインタの置き場って何?
コンパイル自体のソースって何?
531デフォルトの名無しさん:2007/05/14(月) 03:34:03
おーい!機械語読める奴探してるらしいぞw
532デフォルトの名無しさん:2007/05/14(月) 03:34:55
メモリの割付だおw
533デフォルトの名無しさん:2007/05/14(月) 03:39:15
よーわからんな
関数が置かれるアドレスの話か? なぜそこでポインタが出てくるんだ?
配列も置かれるアドレス? なぜ普通の変数じゃなくてわざわざ配列?
ローカルとグローバルによっても違うし
もうちょっと問題を整理してくれんか
534デフォルトの名無しさん:2007/05/14(月) 03:47:40
>>527
そんなもん環境依存だろ・・・
535デフォルトの名無しさん:2007/05/14(月) 03:49:24
【内容】浮動小数点型(float、double等)を使用せず整数型(int)のみを使用し
「√」計算を行える計算機を作る
【どこが分からないのか?】全部wごめん
【どうして欲しいのか】代わりにソースを書いて欲しい
536デフォルトの名無しさん:2007/05/14(月) 03:51:40
宿題は帰れ。

最近の学校は開平も教えないから困る。
537デフォルトの名無しさん:2007/05/14(月) 03:53:53
開平ってなんですか?

538デフォルトの名無しさん:2007/05/14(月) 03:55:44
ググれ
539デフォルトの名無しさん:2007/05/14(月) 05:58:55
>>537
波平の双子の兄さんだよ。
540デフォルトの名無しさん:2007/05/14(月) 06:53:39
>>537
灘、駒場、麻布と並ぶ名門です。
541デフォルトの名無しさん:2007/05/14(月) 09:26:01
C >>>>>>>>>>>>>>>>> C++


C++は究極の中途半端言語
542デフォルトの名無しさん:2007/05/14(月) 09:40:57
C++に挫折したそうです
543デフォルトの名無しさん:2007/05/14(月) 13:59:59
>>535
intしか「√」内に入らないということでよろしいか?
544デフォルトの名無しさん:2007/05/14(月) 14:01:04
>>543
お前意味が分からんw
整数しか入らないか?って聞けよwww
545デフォルトの名無しさん:2007/05/14(月) 14:07:39
一番簡単な整数「9」を計算し「3」を出すプログラムを作りソースを書け
話はそこからだw
546デフォルトの名無しさん:2007/05/14(月) 14:48:06
そのまえにルートがなんなのか学んだほうがいいw
547デフォルトの名無しさん:2007/05/14(月) 14:58:35
>>535
確認だが正整数の間違いじゃないか?
そうでないとしたら複素数使わんと駄目だぞ
548デフォルトの名無しさん:2007/05/14(月) 15:00:21
0でも問題ないだろ。
549デフォルトの名無しさん:2007/05/14(月) 15:00:56
出題者がアホなのか質問者がアホなのか。
後者だろうけど。
550デフォルトの名無しさん:2007/05/14(月) 15:01:52
宿題野郎にヒントなんて与えなくていいよ。
551デフォルトの名無しさん:2007/05/14(月) 15:02:58
負数を与えたら死ぬようにすりゃいいじゃん。
552デフォルトの名無しさん:2007/05/14(月) 15:03:41
>>548
おまえひょっとして-9は整数に入らないとか思ってないよな?
553デフォルトの名無しさん:2007/05/14(月) 15:04:17
>>552
0は正整数に入らないと思ってる。
554デフォルトの名無しさん:2007/05/14(月) 15:04:54
>>552
おまえひょっとして0は正整数入るとか思ってないよな?
555デフォルトの名無しさん:2007/05/14(月) 15:06:58
負数が入っても絶対値の平方根に i つけりゃいいだけじゃん。
556デフォルトの名無しさん:2007/05/14(月) 15:11:16
おk 言い直し 非負整数でおk
557デフォルトの名無しさん:2007/05/14(月) 15:14:10
誤爆にレス付けてるアホどもってよっぽどやることがないんだね。
558デフォルトの名無しさん:2007/05/14(月) 15:15:51
つか整数か非負整数いずれにしてもなんで出題者はそんなのに限定してるんだ?
実数じゃなにか問題があるのか?
559デフォルトの名無しさん:2007/05/14(月) 15:17:35
ヒント:宿題
560デフォルトの名無しさん:2007/05/14(月) 15:20:01
>>557
どのレスが誤爆なんだ?
ちょっとよく分からん
561デフォルトの名無しさん:2007/05/14(月) 15:22:14
宿題スレのテンプレに似てると思ったんじゃないか?
562デフォルトの名無しさん:2007/05/14(月) 15:30:15
宿題スレってはじめて見てみたがひどいな
写し放題じゃねーかwwww
先生は宿題スレもチェックしとくべきだなw
563デフォルトの名無しさん:2007/05/14(月) 15:34:55
してるんじゃない?
そうでなくとも、まったく同じ答えが複数きてたらばれるだろう
564デフォルトの名無しさん:2007/05/14(月) 15:38:04
教授からここの宿題スレを使うなと警告が来た例もあるらしいよ
565デフォルトの名無しさん:2007/05/14(月) 15:40:44
そういうことするやつってそのへんは抜かりなくて少し変えてたりする
普段の態度や小テストで理解度見てたらだいたい自分でやったかどうか想像付くんだけど
さすがに人数多いといちいちチェックするのはめんどくさいw
院生に採点まかせっきりだったりもするからな
566デフォルトの名無しさん:2007/05/14(月) 15:41:00
うざい
567デフォルトの名無しさん:2007/05/14(月) 15:43:56
でも先輩友人の繋がりで写すのはどこでも常態化してるだろ。
それのネット版だ。
大してかわらんだろ。
568デフォルトの名無しさん:2007/05/14(月) 17:37:23
char a[5] = "unko"

どこにNULLが入っていますか?
6個目?
569デフォルトの名無しさん:2007/05/14(月) 17:38:08
何でデバッガ使わないの?
570デフォルトの名無しさん:2007/05/14(月) 17:42:01
>>568 |壁|д゚) あのさ 教科書きちんと読もうよ
NULLと¥0と0の違いをきちんと理解しろw

571デフォルトの名無しさん:2007/05/14(月) 17:43:59
>>568
先頭を一個目と数えて五個目にNUL文字が入っている。六個目は存在しない。
572デフォルトの名無しさん:2007/05/14(月) 17:44:58

NULL 値アドレスなし、値0、ポインタの値として使用できる
\0 値アドレスなし、値0
0   値アドレス有り、値0
573デフォルトの名無しさん:2007/05/14(月) 17:51:17
値アドレスって何ですか?
574デフォルトの名無しさん:2007/05/14(月) 17:52:04
イミフな空白はなんですか?
575デフォルトの名無しさん:2007/05/14(月) 17:54:28
>>572
あなたはなにをいいたいんですか
576デフォルトの名無しさん:2007/05/14(月) 17:55:53
>>535
問題の趣旨を考えてみたw

10/3を計算すると3.33333333333333333・・・・と続くが小数点以下が増えていけば4という端数が発生する
COBOLでやれよと言いたいwなぜにcでww
577デフォルトの名無しさん:2007/05/14(月) 17:57:07
ttp://www.psl.ne.jp/perl/pdojo00b.html
ちっちっち、なんか勘違いしていないかね?NULLポインタとNULL文字とはまた別物だよ?
578デフォルトの名無しさん:2007/05/14(月) 18:08:59
>>577
出力形式が、紙への印刷しかなかった時代が有ることを説明しないと無理でしょw
579デフォルトの名無しさん:2007/05/14(月) 18:12:36
>>578
いやいや、そうじゃなくて、NULLといってもポインタと文字とは別物だってことなんだが?
580デフォルトの名無しさん:2007/05/14(月) 18:13:10
>>572
正確に言えば
NULL=値無し、アドレス有り
¥0  =値0 、アドレス無し
0   =値0 、アドレス有り
だけどねw
581デフォルトの名無しさん:2007/05/14(月) 18:13:58
何で初心者が回答したがるんですか?
582デフォルトの名無しさん:2007/05/14(月) 18:15:13
>>580 イミフw
アドレス無かったら値入れれませんがw
583デフォルトの名無しさん:2007/05/14(月) 18:16:35
文字配列をNULLポインタに指定するのと、文字配列の中にNULL文字を入れるのとでは
ぜんぜん意味が違うということさ。前者はまだ文字列を指定するアドレスが指定されいない
何もないところを示しているが、後者は文字列の中にNULL文字だけでも入っていれば
空ではあるが文字列(の先頭)を示すアドレスは存在しているよん。
584デフォルトの名無しさん:2007/05/14(月) 18:17:23
>>580
志村ーーー、上の2つのアドレスありなしは逆逆w
585デフォルトの名無しさん:2007/05/14(月) 18:17:37
あの・・・
かなり前に関数で配列の数を数えたいといった(内積を計算したいと)ものなんですが
NULLになるまでcount++するというプログラムならいけるかなと思いまして。
ぬるぽっていうのは、char型のアドレス限定ですか?
586デフォルトの名無しさん:2007/05/14(月) 18:19:29
そもそも「¥0」ってなんだ?
好意的に解釈して「\(バックスラッシュ)0」の心算なんだろうけど、
'\0'と書かないと意味を持たない希ガス。
587デフォルトの名無しさん:2007/05/14(月) 18:20:34
>>580
アドレスの有無ってなんだよ

いかなる値でも記憶領域に属していればアドレスはあるし、
そうでなければアドレスはないだろ。
588デフォルトの名無しさん:2007/05/14(月) 18:21:49
#include <stdio.h>
int main(void) {
char *a=NULL,*b={"\0"},*c={"0"};

printf("%p : %s \n",a,a);
printf("%p : %s \n",b,b);
printf("%p : %s \n",c,c);
return 0;}

これの出力結果を見れば一目瞭然だよ
589デフォルトの名無しさん:2007/05/14(月) 18:26:10
>>588マジレス乙
590デフォルトの名無しさん:2007/05/14(月) 18:29:13
>>588を実行すると、異常終了して1行も出力されません。
どうしたら一目瞭然になるんでしょうか。
591デフォルトの名無しさん:2007/05/14(月) 18:30:33
>>590
とりあえずaを表示する部分を消して下の2つは確認できる?
592デフォルトの名無しさん:2007/05/14(月) 18:31:00
>>590
ゴメンよ なぜか知らんがコンパイルできて出力できてしまったよw
593デフォルトの名無しさん:2007/05/14(月) 18:32:46
>>588の出力結果は、俺んとこ(WinXP , BCC使用)でやったら

00000000 : (null)
0040A128 :
0040A12A : 0

っと表示された。
594デフォルトの名無しさん:2007/05/14(月) 18:33:23
(nil) : (null)
0x80484cc :
0x80484ce : 0
595デフォルトの名無しさん:2007/05/14(月) 18:34:16
>>585
ガッ
いや、char型のアドレスだけじゃなく他の型でもNULLはある。
charとかchar[]はNULL文字と深くかかわってるけどNULL文字とNULLポインタは全く別物。
NULL文字は文字列の最後に終端記号として置かれる物。
NULLはポインタがどこも指してない事を示す記号として色んな型のポインタ変数に入れられる物。
596デフォルトの名無しさん:2007/05/14(月) 18:34:37
0x0 : (null)
0x402000 :
0x402002 : 0
597デフォルトの名無しさん:2007/05/14(月) 18:42:21
こういうアホ連中がそのうち社会に解き鼻垂れるのかと思うと
陰鬱な気持ちになるな・・・
598デフォルトの名無しさん:2007/05/14(月) 18:43:38
ヒント
int main(void)
{
printf("てすつ");
return NULL;
}
やってみようw
599デフォルトの名無しさん:2007/05/14(月) 18:45:45
>>598
> return NULL;
いっ、いぃ〜〜のか?
600デフォルトの名無しさん:2007/05/14(月) 18:46:08
コンパイルとおりませんでした。
601デフォルトの名無しさん:2007/05/14(月) 18:47:09
$ gcc -xc -
#include <stdio.h>
int main(void)
{
printf("てすつ");
return NULL;
} ^D
<stdin>: In function ‘main’:
<stdin>:5: 警告: return makes integer from pointer without a cast
$ ./a.out
てすつ
$ echo $?
0
602デフォルトの名無しさん:2007/05/14(月) 18:48:01
>>597=>>286
とか上からものを言っているあほなお前がすでに社会に出ている方が怖い
603デフォルトの名無しさん:2007/05/14(月) 18:51:37
ヒント
マは人格障害者の宝庫w
604デフォルトの名無しさん:2007/05/14(月) 18:52:38
俺に聞け スレで 俺に聞くなよ って態度は何様だよ?w
605デフォルトの名無しさん:2007/05/14(月) 18:55:06
ここは初心者さんのスレだから、イイのw
【1】
#include <stdio.h>
void main(void)
{
printf("てすつ");
return NULL;
}
【2】
#include <stdio.h>
int main(void)
{
printf("てすつ");
return ;
}
【3】
#include <stdio.h>
void main(void)
{
printf("てすつ");
return ;
}
それぞれやってみよう
606デフォルトの名無しさん:2007/05/14(月) 18:57:22
>>605
> やってみよう
何が目的?何が言いたい?はっきりしろ、うっとうしい
607デフォルトの名無しさん:2007/05/14(月) 18:57:37
そういう阿呆なこと教えるから、阿呆プログラマが量産されるわけだ。
608せんしぇ〜 ◆cNsKLREitk :2007/05/14(月) 19:01:47
はい。
コンパイルのはじき方が理解できましたか?
609デフォルトの名無しさん:2007/05/14(月) 19:02:46
我ら幼い人類に 目覚めてくれと 鼻垂れた〜
610デフォルトの名無しさん:2007/05/14(月) 19:10:28
>>608
もしかして、そういうの面白いと思ってる?
611デフォルトの名無しさん:2007/05/14(月) 19:11:49
ぜんぜん
612デフォルトの名無しさん:2007/05/14(月) 19:12:05
605 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:55:06
ここは初心者さんのスレだから、イイのw
【1】
#include <stdio.h>
void main(void)
{
printf("てすつ");
return NULL;
}
【2】
#include <stdio.h>
int main(void)
{
printf("てすつ");
return ;
}
【3】
#include <stdio.h>
void main(void)
{
printf("てすつ");
return ;
}
それぞれやってみよう

ここは初心者さんのスレだから、イイのw
ここは初心者さんのスレだから、イイのw
ここは初心者さんのスレだから、イイのw
それぞれやってみよう
それぞれやってみよう
それぞれやってみよう
それぞれやってみよう
613デフォルトの名無しさん:2007/05/14(月) 19:25:59
>>608のが面白いとは思わないけど
>>612みたいなのも面白いとは思わない
614デフォルトの名無しさん:2007/05/14(月) 19:28:09
>>613 自己擁護乙。お前つまんねっ、初心者を見ていらつくくらいなら
こんなスレに来るなよw お前みたいな気持ち悪い基地外に回答なんて求めてねーよボケ
俺は初心者じゃなくて回答する側だけどなw
615デフォルトの名無しさん:2007/05/14(月) 19:29:07
んで、さっきっからこいつも何?せめて自分の使用環境くらい書けようぜぇ

600 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:46:08
コンパイルとおりませんでした。

590 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:29:13
>>588を実行すると、異常終了して1行も出力されません。
どうしたら一目瞭然になるんでしょうか。
616デフォルトの名無しさん:2007/05/14(月) 19:31:21
んでさぁ、これって何の  ヒ  ン  ト  なの?なんについてのレス?
main関数の戻り値はintって指定してあるのに、NULL指定って何?ただのバカ?失せろ社会のクズw

598 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:43:38
ヒント
int main(void)
{
printf("てすつ");
return NULL;
}
やってみようw
617デフォルトの名無しさん:2007/05/14(月) 19:31:27
>>614
どこがどう擁護してるのか分からないけど
言われて傷ついた?
そろそろwつけるの止めたほうがいいよ
618デフォルトの名無しさん:2007/05/14(月) 19:32:40
>>617
はいっ、そうやって言い返さないと気がすまない=自分を自分で擁護して必死こいているのがバレバレ
なんすけど?擁護する必要すらない。お前みたいな奴は養護学校へ行けw
619デフォルトの名無しさん:2007/05/14(月) 19:33:18
やっぱり最近ここ荒らしてるって
このwつけるやつだと思う
620デフォルトの名無しさん:2007/05/14(月) 19:34:08
>>617
> 言われて傷ついた?
それお前だろ?お前が基地外だのこのスレには不要だのバカだの言われて
戦力外通告されて必死だな
621デフォルトの名無しさん:2007/05/14(月) 19:34:26
>>618
面白くない
622デフォルトの名無しさん:2007/05/14(月) 19:36:51
>>619=>>286 以下このスレの質問には無関係な自分の知識をひけらかして他人の無知を探ろうとしている奴
クソレスして他人の気分を害している  お  前  が  言  う  な  
>>605みたいなのがうぜぇ。本当にバカじゃね?何いきなり戻り値の話に持ち込んでんだよ?
NULLを使う場所間違ってんぞ
以後、ここで質問に関係ないレスをしている奴は、現実世界で友達のいない寂しがりやだと思って
見守ってやってください。ここではもちろん スルー でおながいします。
623デフォルトの名無しさん:2007/05/14(月) 19:37:47
必死すぎだろ・・・
624デフォルトの名無しさん:2007/05/14(月) 19:38:29
やっぱ荒れてきた
>>622
wつけるの止めたの?
625デフォルトの名無しさん:2007/05/14(月) 19:39:18
必死すぎワロタ
626デフォルトの名無しさん:2007/05/14(月) 19:39:55
誰か配列の大きさを調べる関数を書いてくれるとありがたし
627デフォルトの名無しさん:2007/05/14(月) 19:41:03
>>626
大きさって何ですか?もっと詳しく!
628デフォルトの名無しさん:2007/05/14(月) 19:42:52
>>622
>ここで質問に関係ないレス
>  お  前  が  言  う  な

>>626
Cでそれは無理ではないだろうか
629デフォルトの名無しさん:2007/05/14(月) 19:46:04
さっきっからファビョって自分を擁護している奴って間違えた
>>580 と >>572か?まぁ、誰が誰をバカにしているかわからんが
答えるなら正確に調べてからレスするなり、参照できるページを使うのもありだぞ。
答えても相手が理解する能力がなければそれまでだしな。
けど、int mainの戻り値にreturn NULL;とかありえないから。
NULLに関するヒントとか何にもなってないし、明らかにint mainとしているだけあって
戻り値の指定が不適切ってことしか言えないから。関数の前に記述している型について
理解していないことをカミングアウトしなくて良いから、こんなスレで自分も初心者でぇ〜す
ってことをアピールしなくて良いから、ファビョらず黙っていてくれ。
630デフォルトの名無しさん:2007/05/14(月) 19:46:57
>>628=間違ったヒントを出して赤っ恥かいているバカ
以後放置よろ
631デフォルトの名無しさん:2007/05/14(月) 19:47:29
すいません
C言語でしか作れないプログラムはありますか?
Cの良さってなんですか?

付け加えて他の言語の良さ悪さを教えてください
632デフォルトの名無しさん:2007/05/14(月) 19:49:27
>>630
じゃあ正しいヒントだせば?
でなきゃ>>628と同じ
633デフォルトの名無しさん:2007/05/14(月) 19:51:28
>>632
ただしいヒントとかじゃなくて、何であんな無意味なヒント出したんだ?w
何が意図かはっきりしろって言われてんじゃん。なお、NULLポインタについては
すでにソース付きでレスがあるんであしからず。
634デフォルトの名無しさん:2007/05/14(月) 19:52:32
>>628=>>632 他人を装ってしらじらしいんですけど。
>>605 >>598 なんすかこれ?
635デフォルトの名無しさん:2007/05/14(月) 19:53:12
>>633
さっきから間違えてるんだけど
>>613より前にレスしてないし
636デフォルトの名無しさん:2007/05/14(月) 19:53:49
趣味でハックしてる人はソースコードでハァハァってオナニーしているって聞きましたが

お金かからなくていいですね・・・・・・・・・
うらやましいです
637デフォルトの名無しさん:2007/05/14(月) 19:54:24
っと、最後まで自分の間違いを隠そうと相手に必死こいて相手のボロを出そうとしている
赤っ恥さんがいましたとさ。以後放置よろ。
638デフォルトの名無しさん:2007/05/14(月) 19:57:10
>>637
いろいろ必死すぎ・・・
639デフォルトの名無しさん:2007/05/14(月) 19:57:54
つうか 過去レス探すのメンドクサイからHP作れよ!
640デフォルトの名無しさん:2007/05/14(月) 19:58:14
>以後放置よろ
これみて思い出したけど前回荒れたときもこいついた
641デフォルトの名無しさん:2007/05/14(月) 20:01:38
んで、みんな >>605 をそれぞれやってみた?
コンパイルエラーだの警告だの出たよね?だから何?としか言いようがないんすけど・・・
>>605は何をしたかったか、明確なレスを求む。
642デフォルトの名無しさん:2007/05/14(月) 20:08:02
>>641
やってないし、やる気もない
643デフォルトの名無しさん:2007/05/14(月) 20:10:06
>>642
やってないお前に聞いてないけど?だからそういうレスするなって。
NULLポインタのアドレスを表示するコンパイルもしてないくせに。
644デフォルトの名無しさん:2007/05/14(月) 20:12:55
>>643
>みんな
>それぞれやってみた?
やった人間だけレスしろというなら最初からそう書け
お前は抜けてるんだよいろいろと
645デフォルトの名無しさん:2007/05/14(月) 20:14:08
さっきっから何かと噛み付いてこないと気がすまない基地外がいるんだな。
わかりやすいね、そういう人間って。このスレには初心者が集まって
自分より知識のないやつが多いと思い込んで、浅はかな知識でレスしちゃっているんだろうけど
それが仇となってボロだしまくりで恥をかく奴。
646デフォルトの名無しさん:2007/05/14(月) 20:14:17
>>643
そろそろ消えてください
647デフォルトの名無しさん:2007/05/14(月) 20:15:22
>>645
いちいちレスするな
うざい
648デフォルトの名無しさん:2007/05/14(月) 20:15:36
>>644
はぁ?抜けているのはお前。しかもお前には脳みそが抜けているようだ。
日本語がわからない?何他人に指図してんだよ?こっちはやれよとは言ってないが
やってみた?とは聞いたが?何これ?何俺に噛み付いてんの?さっきから基地外だよなお前はw
抜けているのはお前の脳みそ、な?理解しろ。
> 最初からそう書け
何命令してファビョってんだよ?わけのわかんねーソースを書いたNULLポインタ厨w
649デフォルトの名無しさん:2007/05/14(月) 20:15:44
ん〜と、やってみてだから何?という人に早くレスしてあげてください。
さっさとね。
650デフォルトの名無しさん:2007/05/14(月) 20:16:54
何言ってもこういう自分中心人間には効かないんだろうな
ある意味うらやましい
651デフォルトの名無しさん:2007/05/14(月) 20:17:11
>>647=>>646=>>644 初心者叩きするのに失敗して赤っ恥ソースを出した厨房必死だなwwwww
何そこまで必死こいてんの?あっ、あのソースをコンパイルされて、自分がボロを出して
バカだということを露呈されるのが怖いんだぁ〜〜〜〜(^ー^)b
コンパイルした奴らにはあほだということがバレて大恥かいたもんなぁ〜〜〜君ってw
652デフォルトの名無しさん:2007/05/14(月) 20:18:44
>>650
そうだね、わけのわからねーソースを出してreturn NULLしちゃっているぬるい奴って
>>598 >>605 < こっ、こここ、これは・・・すごい大ヒントだ!こいつがバカだってことがわかる大ヒントw
653デフォルトの名無しさん:2007/05/14(月) 20:20:42
>>605
ほらほら早く説明しろよ。初心者さんがコンパイルして待ってまつよ。
ほら、涙目を拭いてさ。
654デフォルトの名無しさん:2007/05/14(月) 20:20:46
こうゆうスレには 群がってくるんだな 
有る意味新鮮
655デフォルトの名無しさん:2007/05/14(月) 20:21:01
>>590だけコンパイルできない(しょぼい環境)を使っていることがバレバレ
もしかして、OSはMS-DOSでつか?
656デフォルトの名無しさん:2007/05/14(月) 20:22:24
608 名前:せんしぇ〜 ◆cNsKLREitk 投稿日:2007/05/14(月) 19:01:47
はい。
コンパイルのはじき方が理解できましたか?
↑しかもこれがあのヒントの答えだろ?だから何?コンパイルエラーを誘うなら
別にreturn NULLじゃなくても通らないソースを書けばおkだろ?
NULLの取り扱いについてなんら説明になってないから。
657デフォルトの名無しさん:2007/05/14(月) 20:25:05
>>631
以前他のスレで似たような質問があってその回答だけどどうぞ。
http://pc11.2ch.net/test/read.cgi/tech/1175949937/539
658デフォルトの名無しさん:2007/05/14(月) 20:25:31
オレ、このスレのこと一生忘れない
659デフォルトの名無しさん:2007/05/14(月) 20:25:34
しつけ〜
660デフォルトの名無しさん:2007/05/14(月) 20:30:26
ってか俺も言っててわけわからなくなったw
return NULL;だけを持ち出したらそれはそれで問題とならないが
あれがその前の流れからして何のヒントなのか?それが知りたいw
661デフォルトの名無しさん:2007/05/14(月) 20:35:07
おわった?
662デフォルトの名無しさん:2007/05/14(月) 20:37:58
ヒント
#include <stdio.h>
int main(void){
int x=NULL;
printf("%d \n",x);
return 0;
}
さぁ、int型のxに代入された値はなんだった?俺んとこは0。
ただ、これはNULLポインタとは話は別なんで、あしからず。
663デフォルトの名無しさん:2007/05/14(月) 20:39:12
環境依存
664デフォルトの名無しさん:2007/05/14(月) 20:41:07
さて、もう一つ、大大だーーーーいヒントでピントを与えちゃよ。
次は文字データとしてNULLを指定しちゃうよ。俺んとこは空文字でコードは0が入った。

#include <stdio.h>
int main(void){
char x=NULL;
printf("%c %d \n",x,x);
return 0;
}
665デフォルトの名無しさん:2007/05/14(月) 20:42:57
そう、何か値(データ)として与えるのと、ポインタに対して与えるのとでは
ぜんぜん違うんですねぇ〜。これならわかるでしょ。NULLそのものが何なのか。
え?こんな説明じゃ不十分でヌルい?まぁ、後は使い方を適切にしてやってくれ。
ポインタにNULLを与えた場合、何も示すアドレスがないってことには変わりはないさ。
666デフォルトの名無しさん:2007/05/14(月) 20:43:46
>>662
これ、時々偉そうに「環境依存」だなんていう奴がいたりするけど
実際に0が出ない環境を見たことあるのか?
667デフォルトの名無しさん:2007/05/14(月) 20:50:12
>>665
まずは、お前のレスがどれか教えてくれ
668デフォルトの名無しさん:2007/05/14(月) 20:56:55
>>667
そうやって相手をさぐろうとするだろ?だから気持ち悪いって思われるんだよ。
>>662が本日の最初だが?だから何だ?って言われることをお前は言うから
日頃周りから「なんだこいつ?気持ち悪い」って思われてんだよ。
いいたいことがあるなら言えよ、相手次第でいえるとかやっているから
お前は弱者を見つけては相手を叩く性格になっちまったんだろ?
自分が筋の通る説明ができないなら黙ってた方が良いぞ。
ちなみに、&xにして%pでポインタのアドレスを確認すると、
中にNULLで与えた値は入っているが、ちゃんとアドレスは割振られているから。確認してみろ。
669デフォルトの名無しさん:2007/05/14(月) 20:57:46
>>535 プログラムよりアルゴリズムの方が(数学が)難しかった
#include<stdio.h>
int main(void){
    int x, tmp, left, ans, digit_align;

    printf("正整数を入力してください > ");
    scanf("%d", &x);
    if(x<0){printf("\nError:正整数を入力してください\n");return 1;}

    for(digit_align=1;x/digit_align>=100;digit_align*=100);

    left=x/digit_align;
    ans=0;
    while(left>0 || digit_align>0){
        for(tmp=9;tmp>0;tmp--)
            if((ans*20+tmp)*tmp<=left)
                break;
        if((ans*20+tmp)*tmp<0) break; // overflow?
        printf("%d", tmp);
        if(digit_align==1) printf(".");
        digit_align/=100;
        if(digit_align>0)
            left=(left-(ans*20+tmp)*tmp)*100+(x/digit_align)%100;
        else
            left=(left-(ans*20+tmp)*tmp)*100;
        ans=ans*10+tmp;
    }
    printf("\n");

    return 0;
}
670デフォルトの名無しさん:2007/05/14(月) 21:00:50
ポインタに対してと値との違いがわからないならプログラムなんてやめとけ。

#include <stdio.h>
int main(void){
char x=NULL,*xn=NULL;
int y=NULL,*yn=NULL;

printf("char x=NULL : %p -%c- \nchar *xn=NULL : %p \n",&x,x,xn);
printf("int y=NULL : %p -%d- \nint *yn=NULL : %p",&y,y,yn);
return 0;
}
671デフォルトの名無しさん:2007/05/14(月) 21:00:51
#include <stdio.h>
void main(void)
{
printf("てすつ");
int a;
a=NULL;
return a;
}
672デフォルトの名無しさん:2007/05/14(月) 21:04:23
>>668
被害妄想激し過ぎだろ…
普通に流れが混乱して誰が誰か分からなかっただけなんだが、
まあいいや
673デフォルトの名無しさん:2007/05/14(月) 21:06:10
>>669
ありがとうございました
助かりました

他のアホどもとは格が違いますね
674デフォルトの名無しさん:2007/05/14(月) 21:06:58
>>672
うざい。何が言いたいかはっきりしろ。相手がどうとか関係なしに
NULLがどういうことか?の話で説明する相手次第で事実関係を捻じ曲げたり
おかしいと自分が思ったことを叩きつけるのはどうかと。言いたいことがあるなら言え。
すでにソースを提示して証明されてんだろ。ポインタとNULL(データ)を与えるのとはどういことかについて。
理解できないのにこんなスレで無知な初心者相手にいい加減なレスをしているのか貴様は?
675デフォルトの名無しさん:2007/05/14(月) 21:11:02
>>672
相手にしないほうがいいよ
さっきだって人違いって言ってるのにわかろうとしないし
といっても擁護乙って言われるだけだけど
自分に対する批判は>>605だと思ってるから
ちなみに>>662が本日の最初って言うのはうそだから
676デフォルトの名無しさん:2007/05/14(月) 21:12:14
>>673 訂正
先頭に #include<limits.h> を追加

        if((ans*20+tmp)*tmp<0) break; // overflow?

        if(ans>=(INT_MAX-81)/180) break; //overflow?
677デフォルトの名無しさん:2007/05/14(月) 21:13:21
>>675
ですね
すみません
678デフォルトの名無しさん:2007/05/14(月) 21:21:10
ぬるぽを代入するなら#define NULLPO 0にするか普通に0使えって事ですか?
679デフォルトの名無しさん:2007/05/14(月) 21:21:55
>>631
マイコン等を使う組込系では、Cしか高級言語の選択肢がない
(ほかは低級なアセンブリ言語)という場合も多い。
680デフォルトの名無しさん:2007/05/14(月) 21:23:58
>>678
NULLを代入したいのならNULLと書けばいいだろうガッ
681デフォルトの名無しさん:2007/05/14(月) 21:24:08
>>666
「NULLが(void*)0と定義されていてコンパイルエラーになる」という可能性もある。

>>673
次から宿題スレ行け
C/C++の宿題を片付けます 87代目
http://pc11.2ch.net/test/read.cgi/tech/1179025919/l50
682デフォルトの名無しさん:2007/05/14(月) 21:25:22
>>669
ここを宿題スレにするつもりか?
683デフォルトの名無しさん:2007/05/14(月) 21:28:14
C FAQ の事も時々でいいから思い出してあげてください。
http://www.kouno.jp/home/c_faq/c5.html#0
684デフォルトの名無しさん:2007/05/14(月) 21:32:59
>>681
んー・・・
基本的に「代入したらいくつになるの?」って話だから、
代入ぐらいさせてくれ(っていうか初期化だな。こりゃ)。

int x=(int)NULL;

で x が 0 で初期化されない環境があるかないか、という事で。
685デフォルトの名無しさん:2007/05/14(月) 21:42:51
あのさ 
お前らって「Cパズル」ってやったこと無いだろw

686デフォルトの名無しさん:2007/05/14(月) 21:48:31
ないお^^
687デフォルトの名無しさん:2007/05/14(月) 21:52:39
>>684
C FAQから
http://www.kouno.jp/home/c_faq/c5.html#17
たぶんこうこうところなら(int)NULLは0にならないのだろう
688デフォルトの名無しさん:2007/05/14(月) 22:15:24
>>687
>たぶんこうこうところなら(int)NULLは0にならないのだろう 

http://www.kouno.jp/home/c_faq/c5.html#5
を読んだ?
689デフォルトの名無しさん:2007/05/14(月) 22:27:51
Cなら NULL か 0 を必要に応じて使い分けなくてはならない

C++なら、ほとんどのプログラマーが 0 を使っている

VCなら nullptr で即解決
690687:2007/05/14(月) 22:37:03
>>688
すまん687のNULLは(void*)0のことだと思ってほしい。
FAQ 5.5は0をポインタ型として扱うときの話だろ。
でもここではヌルポインタを整数型として扱おうとしている。
C++でいうところのreinterpret_cast<int>((void*)0)を表したかった。
691デフォルトの名無しさん:2007/05/14(月) 23:28:36
規格上の話を言えばポインタから整数型への変換は implementation-defined だから、何も言えないかと。
大抵はいちいち変換かけたりせず値としてはそのままにするだろうから、実際上は >687 の通りだと思う。

で、調べてて気づいたんだけど、9899:1999 だと、ポインタ型→整数型→元のポインタ型で元の値に戻ることすら
保証されてない(void* 経由ならOK)。
14882:2003 だと、整数型が十分な大きさであれば↑で元の値に戻ると明示されてるんだけど。
692デフォルトの名無しさん:2007/05/14(月) 23:48:33
ttp://ja.wikipedia.org/wiki/%E3%83%8C%E3%83%AB_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
まだやってんのかよ。実際にNULLをコードの中に入れてどういう結果が出力されたかで
わかるだろ。各個人の勝手な定義や妄想はいらねーって。
time(NULL)だの使われているけど、何もないを与えてもしゃーないべ?
だから、データや値として与えた場合と、ポインタに与えた場合とでどう違うか?

それはそうと、>>580あたりで \0 (NULL文字)の値(コード)が0なのは良いとして
アドレス無しってところがどういうことなのか、説明を求む。
文字列の終端を示す文字として使われているんで、その終わりを示す場所にも
先頭からそのNULL文字そのもののアドレスまでちゃんと割り振られているとは思うが?
>>568で言えば unko の後ろに空文字が入っている場所のアドレスが存在していると思うが?

#include <stdio.h>
int main(void)
{
char a[5]="unko";
size_t i,sz=sizeof(a)/sizeof(a[0]);
for(i=0; i<sz; i++)
printf("a[%d] : %p / \"%c\" \n",i,&a[i],a[i]);
return 0;
}
693デフォルトの名無しさん:2007/05/14(月) 23:56:42
printf("a[%d] : %p / \"%c\" / code : %d \n",i,&a[i],a[i],a[i]);
なんならこうして、文字コードも参照してみるか?って終端の\0(NULL文字)に対して
ASCIIコードでは0が割り当てられているのは既出だが、ちゃんとコード(値)0として
扱われてんだよ。そこは実装されている言語によって扱われ方も違う点はあるだろうけど
なんだかんだ言ってもそれはおかしいといっても、実際はそう扱われているというのが現実。
なぁ、おまいら、いい加減目を覚ませよ?辻はもう処女じゃないんだぜ?それが現実さ(タバコを吸う紳士のAA略)
694デフォルトの名無しさん:2007/05/14(月) 23:58:03
だれもそんな話してないだろ・・・
695デフォルトの名無しさん:2007/05/15(火) 00:00:21
またNULLの話してんのかよ。毎度毎度よく飽きねえな
696デフォルトの名無しさん:2007/05/15(火) 00:01:24
これでどうだ?
#include <stdio.h>
int main(void)
{
char a[5];
size_t i,sz=sizeof(a)/sizeof(a[0]);
a[0]='u';
a[1]='n';
a[2]='k';
a[3]='o';
a[4]=NULL;
for(i=0; i<sz; i++)
printf("a[%d] : %p / \"%c\" / code : %d \n",i,&a[i],a[i],a[i]);
puts(a);
return 0;
}
697デフォルトの名無しさん:2007/05/15(火) 00:02:29
>>694
反応しちゃダメ
698デフォルトの名無しさん:2007/05/15(火) 00:02:56
毎年分からないやつが入ってくるんだから
同じ話題が繰り返されるのはしょうがないさ
699デフォルトの名無しさん:2007/05/15(火) 00:09:19
700デフォルトの名無しさん:2007/05/15(火) 01:35:35
つまりこういう事

void hoge(void)
{
return;
}
701デフォルトの名無しさん:2007/05/15(火) 01:45:03
戻り値void に 空return を、御丁寧につける必要なんてないだろ


そんなふうにかんがえていた時代もありました
702デフォルトの名無しさん:2007/05/15(火) 01:50:35
すみません。PHPはC言語でできてるみたいですが、ソースないっすかね?
703デフォルトの名無しさん:2007/05/15(火) 01:52:28
>>702
ここからどうぞ
http://www.php.net/downloads.php
704デフォルトの名無しさん:2007/05/15(火) 01:57:28
>>693
\0は八進法で値を指定するエスケープシーケースなのだから、
ASCIIでなくても'\0'は0に等しくて当然。
705デフォルトの名無しさん:2007/05/15(火) 02:26:10
>>704
お前もわかってないアホだな。無駄口たたくな、自分の勘違いをさらすだけだから。
文字コードを表示するのに %d を用いている点が理解できてないな。
706デフォルトの名無しさん:2007/05/15(火) 02:29:13
704 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 01:57:28
>>693
\0は八進法で値を指定する
\0は八進法で値を指定する
\0は八進法で値を指定する
\0は八進法で値を指定する

http://ja.wikipedia.org/wiki/%E5%85%AB%E9%80%B2%E8%A8%98%E6%95%B0%E6%B3%95
ん?八進法で値を指定?意味わかんねー。参考にできる文献やソースきぼんぬ。
文字コードの割り当てに何進法とか関係ないから。むしろ16進数にて対応コードを
示している文献はよく見かけるけど。
707デフォルトの名無しさん:2007/05/15(火) 02:33:47
>>704
文字の終端を意味する \0(NULL文字、空文字)を入れたところにも
ちゃんとデータを格納するアドレスが存在しているって話だが?
なんかややこしくなっているが、 unko の後ろにNULL文字があるからといって
unko の後ろのアドレスがNULLになっているわけではないんだが・・・
その説明に何をわけの分からない説明にもならないことをいい掛かってきてんだね君は?
まさか、値は0だけどアドレスはなしとか書いちゃった赤っ恥>>580でつか?
708デフォルトの名無しさん:2007/05/15(火) 02:34:46
>>706
「猫でもわかるC言語プログラミング」
これ読め
709デフォルトの名無しさん:2007/05/15(火) 02:37:00
ぐぐったらこの154にほとんど似たような文句があった・・・
http://nssearch.hp.infoseek.co.jp/clang/1127737437.html
710デフォルトの名無しさん:2007/05/15(火) 02:40:51
580 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:13:10
>>572
正確に言えば 正確に言えば 正確に言えば 正確に言えば 正確に言えば
¥0  =値0 、アドレス無し ¥0  =値0 、アドレス無し ¥0  =値0 、アドレス無し

その後、文字の終端を意味するNULL文字の入ったデータに
前の文字列に続いてアドレスが割り振られていたことが
プログラムの実行にて証明されたため、赤っ恥をかいてしまったのであ〜〜る
あっ、ちなみに16進数で表示したかったら、%d から %x なり %X で指定してね♪
711デフォルトの名無しさん:2007/05/15(火) 02:41:15
>>706
704じゃないけど
八進法で値を指定ってのはたとえば'A'=65(10進)=101(8進)だから
これを'\101'と表すって事では。
712デフォルトの名無しさん:2007/05/15(火) 02:42:45
八進法 八進法 八進法 八進法 八進法 八進法 八進法 wwwwwww
713デフォルトの名無しさん:2007/05/15(火) 02:44:06
酔ってんの?
素面でこれだったら怖いけど。
714デフォルトの名無しさん:2007/05/15(火) 02:45:47
八進法、発進!ブ・ラジャー!
715デフォルトの名無しさん:2007/05/15(火) 02:46:21
相手すんなよ・・・くだらん
716ここでフレーム投下:2007/05/15(火) 02:48:41
cで10進定数の0を使いたいのですがどうしたらいいでしょう。
普通に0と書いたのでは8進定数になってしまいました。
717デフォルトの名無しさん:2007/05/15(火) 02:49:34
単に順番にコードが割り当てられているのに、なぜか八進法wwwwww
何のために2進数、16進数があるか分かってないな、この八進法w
>>704
> ASCIIでなくても'\0'は0に等しくて当然。
これも意味が分からん。そりゃ何進法になっても0は0だが
そういうことをいってんじゃねーよ。\0が割り当てられている文字コードが0って話だろ。
ASCIIだからじゃなくて、ASCIIではそうなっていて、そのASCIIコードを参照できる
ソースコードを用いた説明で、なぁ〜〜に意見にもならないわけの分からない理論を持ち出してんだ?
\0 が 0 に等しい、だから何?そうじゃなくて、文字の終端を表す NULL 文字が入ったアドレスには
値に 0 が入っているのを敢えて参照して、ちゃんとNULL文字もデータとして格納されている
アドレスが割り振られているって話 な・ん・だ・がw
718デフォルトの名無しさん:2007/05/15(火) 02:51:11
八進法必死だなw
719デフォルトの名無しさん:2007/05/15(火) 02:52:18
16進数 → \x00
8進数 → \000

\0 は8進数の0だったんだよ。まあ同じ0だけどね。
720デフォルトの名無しさん:2007/05/15(火) 02:52:22
消えろゴミめ
721デフォルトの名無しさん:2007/05/15(火) 02:53:00
八進法、発疹!そりゃちゃいまんがなw
722デフォルトの名無しさん:2007/05/15(火) 02:54:04
704 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 01:57:28
>>693
\0は八進法で値を指定するエスケープシーケースなのだから、
ASCIIでなくても'\0'は0に等しくて当然。

ASCIIとかじゃなくてNULL文字の入ったchar型のデータにどんな値が入ったかであって
値が入っているアドレスが存在するって話でしょ?ぶぅ〜〜ふふふふっ(吹いた)
723デフォルトの名無しさん:2007/05/15(火) 02:55:45
ム板って何か些細なことに異様にこだわる人がいるよね。
やっぱ仕事のストレスなんだろうか。
SI業界で就活してたけどやめとこうかなあ…orz
724デフォルトの名無しさん:2007/05/15(火) 02:55:51
>>716
0で始まる数字は8進数だよ。

int a = 090; とか書いてコンパイルしてみ、8進数に9という数字は無いからエラーになるよ
725気まぐれアナスイ:2007/05/15(火) 02:56:14
Cの構成を考えていて、偶然にも、
driver.ができました。
『C言語なら俺に聞け』と
なっている位なのでそんな物は、
とっくにご存知なのでしょう、ね?
726デフォルトの名無しさん:2007/05/15(火) 02:57:04
>>708
読む必要性なし、というか、ちゃんと八進法に関する文献やソースを分かりやすく
提示してもらえませんかねぇ?ASCIIじゃさまざまな文字が表現できないんで
いまさらASCIIだけにこだわる気はねーよ。文字コードで10進数以外だと
16進数で表記されているのをよく見かけるんですけどねぇ〜。どこでつか、八進法で
表記しているところは?なんで八進法?そんなんで表記したら、桁が多くなるものだと
10進法で表すより桁の数が増えて面倒なんすけど?
727デフォルトの名無しさん:2007/05/15(火) 02:59:00
いったい何の議論をしているのかさっぱりわからんw
728デフォルトの名無しさん:2007/05/15(火) 02:59:55
阿呆が喚いてるだけだろ。議論になんかなってないよ。
729気まぐれアナスイ:2007/05/15(火) 03:00:24
>>725『続』
忘れていました、拡張子をなくしてもdriver、です。
730デフォルトの名無しさん:2007/05/15(火) 03:00:36
いい加減秋田から、まとめとくね。NULL文字を入れたところにもアドレスは存在する。
勝手にNULLポインタにしちゃだめだぞ、めっ
731気まぐれアナスイ:2007/05/15(火) 03:01:48
>>726
source.で作成したので厭です。
732デフォルトの名無しさん:2007/05/15(火) 03:02:19
何でお前らそんなに喧嘩腰なの^^
733デフォルトの名無しさん:2007/05/15(火) 03:03:30
734デフォルトの名無しさん:2007/05/15(火) 03:05:25
>>708
>猫でもわかるC言語プログラミング
これは糞、ほかのをおすすめします
735気まぐれアナスイ:2007/05/15(火) 03:06:23
>>726『続』
!(Φ_Φ+)
あ、number.を間違えてしまいました、失礼。
736デフォルトの名無しさん:2007/05/15(火) 03:06:37
さぁ、みんなで八進法の文字コード対応表を表示させようじょのいこ!

#include <stdio.h>
int main(void)
{
int i,cnt;

for(i=32,cnt=0; i<127; i++,cnt++) {
printf("%c : %3d",i,i);
if(cnt%6==5) printf("\n");
else printf(" | ");
}
printf("\n\n魅惑の八進法!\n");
for(i=32,cnt=0; i<127; i++,cnt++) {
printf("%c : %3o",i,i);
if(cnt%6==5) printf("\n");
else printf(" | ");
}

return 0;
}
737デフォルトの名無しさん:2007/05/15(火) 03:06:52
んじゃこないだ見かけた望洋のアレ
738デフォルトの名無しさん:2007/05/15(火) 03:08:59
あっ、すまん、これも追加しといて

printf("\n\n平凡な十六進法!\n");
for(i=32,cnt=0; i<127; i++,cnt++) {
printf("%c : %X",i,i);
if(cnt%6==5) printf("\n");
else printf(" | ");
}
739デフォルトの名無しさん:2007/05/15(火) 03:11:20
( ´ω`)
740デフォルトの名無しさん:2007/05/15(火) 03:11:24
微笑ましいけど鬱陶しいなあw
741デフォルトの名無しさん:2007/05/15(火) 03:12:29
天災と思って諦めてる
742デフォルトの名無しさん:2007/05/15(火) 03:13:02
天才に向かって失礼な、めっ、めっめっ(猫をしかりつけるように)
743デフォルトの名無しさん:2007/05/15(火) 03:17:53
カス
744デフォルトの名無しさん:2007/05/15(火) 03:18:01
ハゲ
745デフォルトの名無しさん:2007/05/15(火) 03:26:25
ナルはナルシストのナルさぁ〜、決して成瀬川なるのなるではない。
746デフォルトの名無しさん:2007/05/15(火) 03:26:33
(´ω`)
747デフォルトの名無しさん:2007/05/15(火) 03:30:52
なんか変な方向に行ってるみたいだな。

1. ヌル文字の値が '\0' なのは規格で決まってる。

2. \0 という特別なエスケープシーケンスは規格で用意されておらず、
  これは 8 進数の値を直接埋め込むエスケープシーケンスでしかないので、
  '\0' の値はどの環境でも厳密に 0 になる。
  (そもそもそんな特別なエスケープシーケンスを用意してしまったら、
  8 進数で 0 を埋め込むことが不可能になってしまう)

これでいいだろ、もう。
748デフォルトの名無しさん:2007/05/15(火) 03:35:06
>>747
だからぁ、NULL文字もちゃんとデータとして存在しているから
文字の終端を示す\0が入っているアドレスもちゃんと存在しているって話なんだが?
規格がどうとかじゃなくて、空文字でNULLが扱われていてもちゃんと文字データとして
存在して実態があるからNULLポインタの示す場所と勝手に解釈するなって話ナノーメートル
749デフォルトの名無しさん:2007/05/15(火) 03:36:40
アドレスがあるのは当たり前だろ。
750気まぐれアナスイ:2007/05/15(火) 03:37:54
!(Φ_Φ+)
頑張っていますね?
source.を書きたい、のですが、
original.なのでとって置きます。
751デフォルトの名無しさん:2007/05/15(火) 03:39:07
あと、NULLポインタが示すオブジェクトに対してデータを表示させようとかするのは
どうも過去ログからしてタブーっぽい。指し示す場所がないゆえに、環境によっては
(null)とご丁寧に表示してくれているが、実体がないから何も表示できないのが当たり前だし。
752デフォルトの名無しさん:2007/05/15(火) 03:42:19
>>748
うーん、「NULL」が出てきたら脳内で「NULLポインタ」に置換しちゃう人?
>>747は全くNULLポインタについて言及してないよ。

だけどまあ、NULL文字ってのは誤解しやすいような気もするから、
終端文字と表現するのがいいんじゃねえのかなあ。
753デフォルトの名無しさん:2007/05/15(火) 03:44:13
NULL ポインタは参照しちゃいけない。
「あらゆる有効なアドレスと比較しても等しくならない」のが NULL ポインタの定義だから。

ただ、NULL 渡して表示させるという場合、
内部でポインタが NULL ならこれを表示・・・という分岐があるのなら問題ない。
参照してないから。
754デフォルトの名無しさん:2007/05/15(火) 03:44:21
彼は自分の知らないことに話が展開していくのを怖がってるんですよ
755デフォルトの名無しさん:2007/05/15(火) 03:45:04
おまいらほんっとにナルちゃんが好きなんだね ♥
756デフォルトの名無しさん:2007/05/15(火) 03:45:50
NULL 文字という表記は良くない。
NULL はヌルポインタを表すマクロ名を表すから、紛らわしい。
null 文字という風に小文字で書くならいい。
757デフォルトの名無しさん:2007/05/15(火) 03:45:50
>>749
いや、だからそれを勘違いしたのが >>580 なんだが、お前いい加減にしろ?
何歳だ?ゆとり教育世代か?寝ろやボケガキ
758デフォルトの名無しさん:2007/05/15(火) 03:46:38
>>580 みたいな無茶苦茶なのは、既に訂正するとかそういうレベルじゃないな。
759デフォルトの名無しさん:2007/05/15(火) 03:46:39
>>754
はいはい、すでに話がわかっているという証拠のソースも何度も提示しているのに
それすら自分の思い込みや勘違いで否定しているお前が論破されるのが怖くて
何も筋の通った意見がいえなくておびえているのはお前だろ?
760デフォルトの名無しさん:2007/05/15(火) 03:46:51
表記の問題じゃない
761デフォルトの名無しさん:2007/05/15(火) 03:47:37
怖がりすぎ
762デフォルトの名無しさん:2007/05/15(火) 03:49:02
「彼」って自分の事だと思ったの?
自覚してんのだなぁ。
763デフォルトの名無しさん:2007/05/15(火) 03:49:15
>>752
> >>747は全くNULLポインタについて言及してないよ。
いや、モロ最初の項目で
> 1. ヌル文字の値が '\0' なのは規格で決まってる。
言及してんじゃん。だから、NULL文字の値が\0とか話ではないが
値は \0 ではなく 0 だが?それすら間違ってんじゃん。
あくまでもエスケープシーケンス、 printf(""); の " " の中で使うときとかで用いられる
\n \t のように \ がついたものは値じゃないんだが?w
764デフォルトの名無しさん:2007/05/15(火) 03:50:55
んで、ことの本質は >>580 にある \0 あるいは NULL文字データが入っているところにも
ちゃんとアドレスが文字列の終わりに続いて割り振られているって説明に、なぁ〜〜に
ごちゃごちゃとわけのわからない言い掛かりをしてきているんだね?って言っているんだが?
いや、もうええわ。八進法とかわけのわからん話を絡めるし、気持ち悪いぜ?
765デフォルトの名無しさん:2007/05/15(火) 03:53:08
>>763
だからそこのどこにNULLポインタが出てくるの?
766デフォルトの名無しさん:2007/05/15(火) 03:53:16
NULL
ヌルポインタを表す単なるマクロ。
C では 0 あるいは ((void*)0) と定義される。

'\0'
ヌル文字。値の全てのビットが厳密に 0 となると規格で決められている。
この表記の場合、型は C では int 、C++ では char 。

0
数値の 0 でもあり、ヌルポインタでもある。
型は int ではあるが、値 0 になる定数式がポインタに代入された場合、
あるいはポインタと比較された場合は、ヌルポインタと解釈される。
その場合、その値のビットが全て 0 になるという保証はない。
767デフォルトの名無しさん:2007/05/15(火) 03:53:19
日本語でおk
768デフォルトの名無しさん:2007/05/15(火) 03:54:30
> 1. ヌル文字の値が '\0' なのは規格で決まってる。
全くNULLポインタには言及してないんだよ。
769デフォルトの名無しさん:2007/05/15(火) 03:55:13
ヌル文字とヌルポインタは全くの別物ってのが分かってないのかねえ。
770デフォルトの名無しさん:2007/05/15(火) 03:56:34
>>763
分かってない奴がでしゃばるな
771デフォルトの名無しさん:2007/05/15(火) 03:58:03
あたいのこと、舐めたらいかんぜよ。
ちなみに \a \n \t \0 だのは文字であって値ではありませんので、あしからず。
それらを示す文字コードは値といってもまぁ差し支えないかもしれんけどね。
んじゃ、レベルの低い知ったかを相手にするのもここらでやめておいてやるわ。
まったく、本当に理解力のないどうしようもないやつっているんだなw
だからこの世はいつまでも頭の悪い奴が立場が悪くなってファビョって自暴自棄になるんだなw
772デフォルトの名無しさん:2007/05/15(火) 03:59:23
>771
自己紹介乙
773デフォルトの名無しさん:2007/05/15(火) 03:59:46
C++ の規格票(しかも 1998 年のドラフト)ですまんが、

null character (respectively, null wide character), whose representation has all zero bits.
ヌル文字(あるいはヌルワイド文字)、これは全てのビットが 0 の表現をとる。

>>771
\0 は文字だが '\0' は値だぞ。
774デフォルトの名無しさん:2007/05/15(火) 04:00:23
ということで



  NULL文字をNULLポインタと思いこんで延々暴れたバカがいた



ということでよいかな。まあ紛らわしいからその分は差し引いてあげるけどさ。
775デフォルトの名無しさん:2007/05/15(火) 04:01:15
>>774
よい
776デフォルトの名無しさん:2007/05/15(火) 04:02:17
ttp://ratan.dyndns.info/MicrosoftVisualC++/eskape.html
\がついたものはここでも説明されているように「文字」であって値には該当せず。
いわゆる制御文字ゆえに表示される文字とは別扱いだが
それらにも「文字コード」が割り振られている。その文字コードを
char型のデータに入れることで扱っているのだが、そこまで理解できないかなぁ
理解力のないお○カちん達ってw
だからNULL文字に対応するコードが0であって、\0は値じゃなくてNULL文字と言うべき。
777デフォルトの名無しさん:2007/05/15(火) 04:03:07
>>772
もうその程度のことでしか反論できないでしょ?おまえどこの学校出身だ?
まぁ、ランクE未満の大学でもなく大学未満なんでしょうね。
派遣のお仕事がんばってねぇ〜〜 ♣
778デフォルトの名無しさん:2007/05/15(火) 04:03:25
>>747 で \0 と '\0' を使い分けてるのが理解できないんだろうか。
779デフォルトの名無しさん:2007/05/15(火) 04:04:19
「NULL文字」なんて腐った表記をする奴にロクな奴はいない。
null文字と書け。
780デフォルトの名無しさん:2007/05/15(火) 04:05:45
>>765
>>580
> ¥0  =値0 、アドレス無し
参照。ちなみに\0(NULL文字、空文字)に割り当てられているコードは0だが
\0自身は値ではなく「文字」ですから。
781デフォルトの名無しさん:2007/05/15(火) 04:06:48
\0が値だなんて誰か言ってたっけ
782デフォルトの名無しさん:2007/05/15(火) 04:08:18
まあ、'\0' も値が 0 になる整定数式だから
ヌルポインタとして扱おうと思えば扱えるけどね。
紛らわしいから絶対やっちゃいけないが。
783デフォルトの名無しさん:2007/05/15(火) 04:09:01
>>580 がクソなのは既に誰もが認めている終わった話題だ。
784デフォルトの名無しさん:2007/05/15(火) 04:09:57
580・・・
誰かがこんなのを擁護してるとでも思ったのかな
785デフォルトの名無しさん:2007/05/15(火) 04:10:38
必死に無意味な説明をしようとした奴がボロ出しまくりでワロスwwww
なんだよ、\0が値とか言っちゃっているやつ?あたいにそんな小細工
通用しないかんねぇ〜(スケバン恐子風に)
エスケープシーケンスは文字であって値ではない、これ定説。
ライフスペースでも定説。オウムには破防法(意味不明)
786デフォルトの名無しさん:2007/05/15(火) 04:10:53
int *p = 2 - 4 + 2;

これもヌルポインタ。
787デフォルトの名無しさん:2007/05/15(火) 04:13:55
>>747
1. ヌル文字の値が '\0' なのは規格
        ^^^^^^^^^^^^
対応コードが0ではあるが、NULL文字は値ではなく文字ってことな・ん・だ・が?
文字って値なんだぁ。それじゃぁ、char a[10]; a[0]='a';ってaって文字を入れるとき
値にAが入っちゃうのぉ〜〜?もはや値に有らず。
a[0]='\0';で空文字を入れることはあるけど、値で入れるなら '' とかつけずに
対応している文字コードを入れたらええんでな〜〜い?
788デフォルトの名無しさん:2007/05/15(火) 04:14:12
>>785
ヌル文字とヌルポインタは別物ってことはわかったの?
789デフォルトの名無しさん:2007/05/15(火) 04:17:09
自分の意味不明な筋の通らない理論を押し切ろうと、もう必死で
相手の筋の通った理論を屁理屈で解釈してつつこうと必死でしょ?
そんなんだから物事の本質が霞んでしまうんだよ。
路上を見てみろ?道路交通法をまともに守っている奴がいない、破っている奴らばかり
だから自分もそうする?それじゃ自分 も 道路交通法を理解していないと
道路交通法を知っている人に対して思われているだけだと気づくんだな。
警察の前じゃ違反は違反だぜ?キップ切られるぜ?免許傷つくぜ?
俺はまだ違反点数の累積は0だ。けど、違反点数も俺の免許もNULLじゃないぜ?
790デフォルトの名無しさん:2007/05/15(火) 04:17:50
もうぬるぽ('A`)
791デフォルトの名無しさん:2007/05/15(火) 04:17:52
「値が'\0'」と書いてあるんであって「値が\0」とは書いてないんだよ。
792デフォルトの名無しさん:2007/05/15(火) 04:18:27
>>788
あたりまえじゃん、っつーかそれをず〜〜〜っと昨日の>>580に対して言い続けてきたんだが?w
俺が理解していないと思ってんの?何回文字列の終端を示すNULL文字自身が入ったデータの
アドレスが存在していて、文字列の後ろの終端を示す部分がNULLポインタになっていないと説明したら
わかるんだと?鬱陶しいなぁ・・・
793デフォルトの名無しさん:2007/05/15(火) 04:18:48
なるほど。そこにつっこんでたのか。
「ヌル文字の値」は「ヌル文字の文字コード」の意味だが、
確かに紛らわしい表現ではあったな。

でも、それを言うなら、
>char a[10]; a[0]='a';ってaって文字を入れるとき
                ~~~~~~~~~~~~~~~~~~~~~~
>a[0]='\0';で空文字を入れることはあるけど、
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
もおかしいな。
「aの文字コードを入れるとき」、
「空文字の文字コードを入れることはあるけど」だな。
794デフォルトの名無しさん:2007/05/15(火) 04:19:43
>>791
だから \0 は値じゃなくて 文字 だっつってんだろ・・・説明だって出てんだろ。
その文字、NULL文字に該当する対応コードが 0 だっつってんの。
対応コードは \0 か? \0 って何進法?w
795デフォルトの名無しさん:2007/05/15(火) 04:20:24
>>792

763 名前:デフォルトの名無しさん [sage] :2007/05/15(火) 03:49:15
>>752
> >>747は全くNULLポインタについて言及してないよ。
いや、モロ最初の項目で
> 1. ヌル文字の値が '\0' なのは規格で決まってる。
言及してんじゃん。
796デフォルトの名無しさん:2007/05/15(火) 04:21:28
>>794
\0 は文字だけど '\0' は文字リテラルで値だろ!!!
何度言ったら分かるんだ!!!
797デフォルトの名無しさん:2007/05/15(火) 04:22:38
>>793
お前が >>736 の出力結果を理解していないことがわかった。もう黙ってろ。
文字型の変数に文字でなくても直接文字コードを入れても使えることが理解できてないんだな。
通りで話がわからないわけだw
なんか、俺がNULLポインタとデータの違いがわかってないみたいないわれ方しているが
さっきっから俺に対して曲解した考えで論破しようと必死こいている奴の方が
曲解しているだけあって理解していないのがバレてんだが・・・なんだよ \0 が値って?
あたいにはそんなの通用しないかんね!
798デフォルトの名無しさん:2007/05/15(火) 04:23:04
\0は値じゃない。
'\0'は値。
799デフォルトの名無しさん:2007/05/15(火) 04:23:39
この流れなら言える!お前ら全員ぬるぽ!(寝るぽ!)
800デフォルトの名無しさん:2007/05/15(火) 04:23:57
何というか日本語がこれほど通じないのは、もはや釣りだとしか思えない。
801デフォルトの名無しさん:2007/05/15(火) 04:25:44
>>797
C に「文字型」なんてありません。
802デフォルトの名無しさん:2007/05/15(火) 04:26:02
クォーテーションで括ってるか括ってないかの違いがまだわかってないな
803デフォルトの名無しさん:2007/05/15(火) 04:26:21
779 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 04:04:19
「NULL文字」なんて腐った表記をする奴にロクな奴はいない。
null文字と書け。
↑こういうことしかいえなくなっているら。しかもこれは自分基準w
こういうのが鬱陶しいんだよな。だから何?としか言われない
間違いではないことを気にいらねーって罵倒してくる奴。
お前何様だよ?デジタル世界の王者か?欧米か!?
てめぇ基準なんてどうでも良い。検索してどっちが多く使われているか調べてから出直せw
804デフォルトの名無しさん:2007/05/15(火) 04:27:12
紛らわしいのにわざわざ大文字で書く理由が知りたい。
805デフォルトの名無しさん:2007/05/15(火) 04:29:59
>>773
値って言うならちゃんと演算子使って演算できんだろうな?
その\0(空文字)をどうやって演算すんだ?
文字データとしては表示すらされないってのにw
文字同士の計算でもあるの?Aを文字と扱うか16進数として値を10として扱うかでは大違いだろ
それすら理解していないなんて、どこの大学出身だ?あっ、大学未満か
806デフォルトの名無しさん:2007/05/15(火) 04:30:55
\0は値じゃないって言ってるでしょ
807デフォルトの名無しさん:2007/05/15(火) 04:32:40
本気で言ってるのか???

str[i] != '\0' は演算だろ?

そして printf("%d\n", '\0' + 3); がエラーにでもなると思ってるのか?
808デフォルトの名無しさん:2007/05/15(火) 04:33:36
なんで'\0'を勝手に\0に置き換えるかな。
809デフォルトの名無しさん:2007/05/15(火) 04:35:06
どう見ても釣りです。
本当にありがとうございました。
810デフォルトの名無しさん:2007/05/15(火) 04:37:07
結論出しておくわ。これは捻じ曲げようとしても無理。
\n \a \t \b \0 それらは文字であって値ではない。とりわけ制御文字といわれるものであって
値のように演算は不可能。
ttp://ratan.dyndns.info/MicrosoftVisualC++/eskape.html
でも説明されているように、文字(制御文字)であってそれらにも文字コードが割り振られていて
その文字コードなら割り振られているという事実を踏まえて、その文字の値として扱うことは可能。
ttp://www.psl.ne.jp/perl/pdojo00b.html
たとえば、AはASCIIコードでは16進数にて41(10進法では65)と指定されていて
コードに1を足すことによって66にした場合、その文字コードを参照して表示される文字は
ちゃんとBになるってのは >>736 を実行すりゃ一目瞭然。
実証、検証されているのにつまらない屁理屈を言う奴、だめぽ。
811デフォルトの名無しさん:2007/05/15(火) 04:38:16
>>808
もうその程度でしか言い返せないんだね。どちらも値じゃないんだが?w
値は\0よって、スケバン風に言ってなさいってこったでパンナコッタ。
812デフォルトの名無しさん:2007/05/15(火) 04:38:47
>もうその程度でしか言い返せないんだね。どちらも値じゃないんだが?w

もうオワタ\(^o^)/
813デフォルトの名無しさん:2007/05/15(火) 04:39:40
また、Bという文字に1を足すなんておかしい。文字コードに対してならおk。
Bに1を足すなんて、環境によっては文字列の追加として B1 と解釈されかねんよ。
814デフォルトの名無しさん:2007/05/15(火) 04:40:29
>>811
本気で分かってねえな・・・。
呆れてものも言えん。
815デフォルトの名無しさん:2007/05/15(火) 04:42:23
だめだこいつ
816デフォルトの名無しさん:2007/05/15(火) 04:42:28
最後まで自分の理解する頭のないことを露呈しつつ粘着乙。お前だけだよ、こんなところで
朝まで居残りしているのは。
817デフォルトの名無しさん:2007/05/15(火) 04:45:46
全くだ
818デフォルトの名無しさん:2007/05/15(火) 04:48:26
っと、最後までこんなスレで自分の間違いを必死こいて間違いじゃなかったことにしようと
ここでレスしている人に対して噛み付いてくるメガネデヴピッツァですた(・∀・)
819デフォルトの名無しさん:2007/05/15(火) 04:49:14
820デフォルトの名無しさん:2007/05/15(火) 04:49:43
もう放っとけ。
821デフォルトの名無しさん:2007/05/15(火) 04:50:10
うん
822デフォルトの名無しさん:2007/05/15(火) 04:50:33
\0は値じゃなくて文字だよぉ〜〜、対応コードは0で値として扱えるけどな、ケケケw
823デフォルトの名無しさん:2007/05/15(火) 05:07:05
http://pc11.2ch.net/test/read.cgi/tech/1179025919/66
おーい、ちょうど良いや、ここでふぁびょ〜んなお前ら、これに答えてやれよw
824デフォルトの名無しさん:2007/05/15(火) 05:13:38
>>814
'\0'でもこれは制御文字であって値にあらず。何が言いたいかはっきりしろよ?
このスレってやっぱ分かってねーとかそことなく揺さぶるけど、結局
自分の意見を言わずに逃げるチキンが多いよな。この前もそう。
お前分かってないなみたいなことを言ったが、答えは fgets の中の文字数の指定に
255 と入力ミスをしたのをネチネチ陰湿にあおってきただけで、そいつ自身は
fgetsの使い方についてろくに答えず。入力ミスしたやつは間違いにしろ
参考にできるページを参照してたが、このスレのタイトルを理解しておらず
答える気がないくせに相手にだけくだらねぇ間違いを指摘する程度でここにいるなら
出て行った方がよくね?何、自分にとってイラつくものを見て気分を害したんだよ!みたいな
不満をわざわざいい掛かってくるのか、さっぱりわからねぇ。こんなところにいるくらいなら
車軸の壊れそうなジェットコースターにでも乗ったら?
825デフォルトの名無しさん:2007/05/15(火) 05:26:00
char a; に対して
a=0; a='\0'; はおkだが、前者は0という値、後者は明らかに文字データゆえに
\0は文字ではあるが値じゃないんだが、それすら理解していないのはどっちだぁ〜〜い?
NULLはWikiにも記録されているが、ゼロと区別するためのドイツ語で0を意味するnullを用いて
何もないを意味するが、null文字は表示される文字も何もない文字として扱われていて
割り当てられている文字コードは0だが文字そのものはアルファベットも数”字”も含めて
文字であって”値”ではない。\0 およびその他制御文字は表示されないけど文字であって
値ではない。あたいも値ではない。
826デフォルトの名無しさん:2007/05/15(火) 05:27:21
ようやく分かった。お前が何が分かってないかが。

char 型というのは CHAR_MIN〜CHAR_MAX の値を入れることの出来る整数型であって、
C には「文字型」なんて型はないんだよ。
827デフォルトの名無しさん:2007/05/15(火) 05:28:20
値だっていうなら a=\0; をやればいいさ。コンパイルエラー起こすけどな、ケケケ
誰かさん、敢えて\0と'\0'のシングルクォートを強調したが、それをつけてんなら
なおさら値じゃなくて文字データだよなぁ。まさか、値にわざわざ''をつけて代入してんのかーい?
828デフォルトの名無しさん:2007/05/15(火) 05:30:20
入れることの出来る、じゃないな。
表現することの出来る、だ。
829デフォルトの名無しさん:2007/05/15(火) 05:31:05
わかんねーなら調べろだの、調べてないだのを指摘するくらいなら
調べられる参考文献を参照しろってーの。ろくにそういうのも出さずに
ただ自分が思った(間違った)理論を提唱されても、お前が決めた仕様でも規格でも
ルールでもないだろって話で流されるよ。本来の基本概要を理解している、知っている人には
うそは通用しない。\0は制御文字であって値じゃない。あたいでもそんなことは分かっている。
勝手にありもしないことを定義しないでくれ。\0を文字コードで参照するなら0なら分かるし
文字データとして入れるのに '\0' で指定するなら分かるが、値じゃない。文字だ。
いつまでもモジモジしてんじゃねーぞ。
830デフォルトの名無しさん:2007/05/15(火) 05:35:41
C の規格票読め。
読むだけならタダだ。
831デフォルトの名無しさん:2007/05/15(火) 05:38:34
くどいようだが、すでに俺は証明、提示をした。制御文字は値ではなく
文字データ。文字コードによって割り当てられている文字データ。
その文字コードがあっても、コードに対応した文字データがなければ
文字コードを使ってもナンセンス。\0は便宜上使われている文字であって
これは値ではない。そして本来は表示されない制御文字も、便宜上
使えるようにと割り当てられている代用の文字があるだけであって
\a \n \t そのものは値ではなく制御 文 字 であーる。
そんなの当たり前なのに、なーーにが値だ、あたいにはそんな屁理屈、通用しないかんね。
832デフォルトの名無しさん:2007/05/15(火) 05:40:08
\0 はエスケープシーケンスで''か""の中に出てこないと意味がない。
833デフォルトの名無しさん:2007/05/15(火) 05:43:31
\0は代用で用いられている文字であって値ではない。値じゃない。
値に対しても定義が曖昧だが、みたまんま、\0 \a \t \n は制御文字として
代用で使われているものであり、数値ではない。数字だって場合によっては
数値ではなく数字(数の文字)として扱われるが、その数の文字に対してだって
文字コードが割り当てられているけど、数字のまんまの数値で文字コードは割り当てられて
いないのは、ASCIIコードの対応表を出漁するプログラムで一目瞭然。
そう、単に文字コードが割り当てられているんであって、文字そのものは
値じゃ〜〜ないんだよ。制御文字として代用されたものだけ特別扱いで値になっちゃうの?
それじゃ、アルファベットや数字も値?値じゃ〜ねぇなぁ、文字データは演算できんよ。
割り当てられた文字コードを数値として演算することは出来るけどな。
たとえばAに割り当てられている文字コード1を足してBにすることが出来るというのは
説明済み。だけど、Bに1を足すのは不可能。文字の結合として B1 としちゃう
環境や言語は存在するから、要注意。文字は文字データであって値にあらず、これ当たり前。
834デフォルトの名無しさん:2007/05/15(火) 05:44:23
#include <stdio.h>
int main() {
int a = 1;
a = '\0';
printf("%d", a);

return 0;
}
835デフォルトの名無しさん:2007/05/15(火) 05:44:57
長文になったが、制御文字の代用の \0 は値じゃなくて文字。モジモジ君だって
それくらい知ってるよ?割り当てられている文字コードと文字データをごっちゃにしないよう
今後は注意しましょうね♪ さっ、これにこりたらこんなところにいないで
とっととジェットコースターにでも乗って来い。頭がスカッとすっぜ?
836デフォルトの名無しさん:2007/05/15(火) 05:54:03
というかCでいう文字とは整数の一種でつまりは値なんだが。
と今更こんなことを言ってみるが、みんな寝ちゃったかなw
837デフォルトの名無しさん:2007/05/15(火) 05:56:04
文字定数
838デフォルトの名無しさん:2007/05/15(火) 06:02:23
眠いから寝る
839デフォルトの名無しさん:2007/05/15(火) 06:11:24
朝までやってたのか!
840デフォルトの名無しさん:2007/05/15(火) 06:20:18
 ___  見えませ〜ん
‖    |     ∨
‖現実 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U


 ___  読めませ〜ん
‖    |     ∨
‖空気 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U


 ___  知りませ〜ん
‖    |     ∨
‖常識 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U


 ___  ありませ〜ん
‖    |     ∨
‖未来 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )   (  と)
凵    し`J   U U
841デフォルトの名無しさん:2007/05/15(火) 06:20:28
何やってんだお前ら?
842デフォルトの名無しさん:2007/05/15(火) 06:24:22
子供同士でサンタは居るか居ないかで喧嘩してたようです。
843デフォルトの名無しさん:2007/05/15(火) 06:41:30
C 規格票より
http://www.jisc.go.jp/app/JPS/JPSO0020.html
JIS X3010 を検索

3.7.1 文字、1バイト文字
<プログラミング言語Cでの意味> 1バイトに納まるビット表現

5.2.1 文字集合
(略)
すべてのビットが 0 であるバイトをナル文字という。
(略)

6.4.4.4 文字定数
構文規則
 文字定数:
  'c文字列'
  L'c文字列'
 (略)

単純文字定数は、型 int をもつ。
1 バイトの実行文字に対応する単一の文字を含む単純文字定数の値は、
対応付けた文字の表現を整数として解釈した数値とする。
2 文字以上を含む(例えば 'ab')又は 1 バイトの実行文字で表現できない文字
若しくは逆斜線表記を含む単純文字定数の値は、処理系定義とする。
単純文字定数が単一の文字又は逆斜線表記を含む場合、
その値はその単一の文字又は逆斜線表記の値を持つ char 型のオブジェクトを
int 型に変換したときの結果とする。
(略)
例 1. 普通、ナル文字を表すために表現 '\0' を使う。
(略)
844デフォルトの名無しさん:2007/05/15(火) 06:50:52
文字は値だな。
845デフォルトの名無しさん:2007/05/15(火) 06:52:31
だめだこいつ、制御文字は表示できる文字データじゃないから
便宜上代用されている\0 \a \n \tがあってもそれを値だと思っているよw
文字と値の違いが分からないからって、プログラムが出来ないわけじゃないから
安心しろ。だけどお前の頭じゃ限界が見えているから、言語の使用とか
電子計算機の仕組みにかかわらず大学で受ける授業にはついていけないだろうから
低学歴のまま人生を諦めろ。まぁ、学歴が高くなくても成功する人も稀にいるから
努力は怠らないこったね。つまらないことに労を費やしているうちに、老いていくし
元気もなくなるから、早いところ人生の積み重ねを始めておけ。
間違っても間違いを押し切ることはするな。\0 が値に見えるなら目じゃなくて頭が
どうかしているよ。
846デフォルトの名無しさん:2007/05/15(火) 06:54:17
規格表を見る限り、\0 \a \n \t は「c文字」であって「文字」ではない。
847デフォルトの名無しさん:2007/05/15(火) 06:54:40
>>844
ダウト。文字データそのものは電子計算機はもってないんだよ。
人間が文字として認識する形を示すものを、文字コードで対応させて
参照しているのが分からないみたいだね。所詮、大学未満の考える
つまらない浅はかな考えだな。大学で普通に習うから、まだ受験するチャンスがあるなら
がんばって大学に行きな。基本的には入学に年齢制限はないから。60過ぎても入学する人もいるし。
848デフォルトの名無しさん:2007/05/15(火) 06:55:00
×規格表
○規格票
849デフォルトの名無しさん:2007/05/15(火) 06:55:50
>>847
脳内定義はどうでもいいから >>843 の規格票を読め。
850デフォルトの名無しさん:2007/05/15(火) 06:56:12
>>846
制御文字の代用で使われている文字だと言っているんだが?
どう見ても値じゃなくて円マーク+文字の組み合わせの文字だろ。
いい加減馬鹿は市ねよ。うぜぇよ。値に対する概念もない馬鹿が
851デフォルトの名無しさん:2007/05/15(火) 06:57:48
>>850
規格票の 6.4.4.4 文字定数を 100 回読んでこい。
「逆斜線表記」は「c文字」だ。
852デフォルトの名無しさん:2007/05/15(火) 06:59:01
>>849
いや、脳内じゃなくて書かれているまんま述べただけだが?
お前こそ理解しろよwwww
> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
はい、自分で爆弾抱えたまま爆発させて自爆しちゃいましたね。
決定的な証拠。表現を使うであって値とは掛かれていません。
ちなみに、null文字のコードが0に割り当てられているのは事実だが
これは人間が決めたことであってもともと電子計算機がそれをそうだという
仕組みを持っていたわけじゃないんだよ。文字そのものが数値じゃないんだから。
いい加減、文字が人間が作ったものだと気づいてね。計算機がやっているのは
あくまでも0と1の組み合わせの演算。そのデータから文字データを参照して
表示する際に文字コードを使ってんだよ。大学レベルだから、専門学校以下は黙っててね。
853デフォルトの名無しさん:2007/05/15(火) 07:00:10
>>851
ええ、だからお前もしつこいなぁ。理解力のない馬鹿は失せろ。
俺がまず否定しているいのは \0 が値ということ。値じゃなくて
どこをどう見ても文字。お前はそれを敢えて c文字だと言ってるしw
値じゃなくて文字、それについては俺がすでに述べてるんだが?
ボケは市ねよ、低学歴w
854デフォルトの名無しさん:2007/05/15(火) 07:00:50
\0 は c文字。
'\0' は文字定数で値。
855デフォルトの名無しさん:2007/05/15(火) 07:01:53
>>854
残念ながら制御文字であって \0 は便宜上表示できない制御文字の代用で
使っている文字だ。値ではない。値について理解していない馬鹿は失せろwwww
856デフォルトの名無しさん:2007/05/15(火) 07:02:30
>>855
規格票の 6.4.4.4 文字定数を 100 回読んでこい。
あ、構文規則の読み方も分からない低学歴なのか?
857デフォルトの名無しさん:2007/05/15(火) 07:05:26
こういう話題であげあしの取り合いになるのは宿命なのか
858デフォルトの名無しさん:2007/05/15(火) 07:05:59
> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
くどいようだが自分で墓穴を掘ってそのままあの世へ行け。
二度と人間界に戻ってくるな。これが読めないなら日本語を勉強してから出直せ。
そこにある \0 は紛れもなく
\ と 0 を並べたそれぞれが文字であり、組み合わせて値としたものではない。
これ以上理解できない曲解しかしないやつは放置するね。
値じゃないのは事実。文字コードは便宜上人間が割り当てたもので
Aそのものが値を持つとかないから。AはA。人間が作った文字コード表に
電子計算機が持つ基本の数値を割り当てただけだから。
859デフォルトの名無しさん:2007/05/15(火) 07:06:37
とうとう規格票に文句付け出したよwwwwwwwwwwwwwwwwwwwwwwww
860デフォルトの名無しさん:2007/05/15(火) 07:07:19
盛り上がっていいじゃない
861デフォルトの名無しさん:2007/05/15(火) 07:07:32
>すべてのビットが 0 であるバイトをナル文字という。
これが見えないのか?
862デフォルトの名無しさん:2007/05/15(火) 07:07:39
char a=0; の a を %c で表示すると、というか表示はされないが空文字が参照される。
a='\0'; とした場合、明らかに文字データを使っているんであって
a=0; のような値は使われていない。ちゃんと文字データと値の違いを理解しましょーね
大学未満w
863デフォルトの名無しさん:2007/05/15(火) 07:10:03
>単純文字定数は、型 int をもつ。
>1 バイトの実行文字に対応する単一の文字を含む単純文字定数の値は、
>対応付けた文字の表現を整数として解釈した数値とする。
これも読めないのかな。
864デフォルトの名無しさん:2007/05/15(火) 07:10:53
誰かさんは制御文字の代用で使われている \ と 0 という2つの文字をくっつけると
値になっちゃうらしいよ?w どこをどう見ても \ も 0 もつなげても \0 という 文字 です
ありがとうございました。文字と値の違いが分からない痛い子は以後放置よろ。
865デフォルトの名無しさん:2007/05/15(火) 07:11:16
#include <stdio.h>

int main() {
char a = '\0';
printf("%s", a == 0 ? "'\\0' == 0" : "");
return 0;
}
866デフォルトの名無しさん:2007/05/15(火) 07:12:24
\0 は値じゃないと何度言えば分かるのか。
867デフォルトの名無しさん:2007/05/15(火) 07:13:29
規格票をまともに読めないキチガイを相手にしても無駄だな。
868デフォルトの名無しさん:2007/05/15(火) 07:13:55
c文字c文字うっせーよボケ。俺は値じゃなくて\0も文字だっつってんだよw
文字と値の違いも分からない弱い頭ってやーね、こいつぜってー最後は犯罪者になってんな
理解力がないのが自分だと気づいていない、判断力を失った麻薬中毒者のごとく
869デフォルトの名無しさん:2007/05/15(火) 07:14:54
まだやってたのか?
870デフォルトの名無しさん:2007/05/15(火) 07:16:49
引き際を失ったんだろうな・・・可哀想に。
871デフォルトの名無しさん:2007/05/15(火) 07:17:06
んでよぉ、本質はそんなことじゃないんだよ。null文字が入った場所にも
ちゃんとそのnull文字の文字コードが入ったデータを示すアドレスが入っているんであって
>>580がいう値0なのにアドレスなしってのが間違いって話なんだが?
何ここまで複雑に話をこじらせちゃってんだろうねw
これだから理解力のないやつは、何か相手の知ってなさそうなことを持ち出して
揺さぶろうとするんだけど、自分の理解力のなさが露呈されて墓穴を掘るんだよねw
872デフォルトの名無しさん:2007/05/15(火) 07:18:05
いつの間にかnull文字のnullが小文字になっててワロタw
873本日の自作自演擁護厨:2007/05/15(火) 07:18:34
844 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 06:50:52
文字は値だな。

846 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 06:54:17
規格表を見る限り、\0 \a \n \t は「c文字」であって「文字」ではない。
「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。
「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。
ちゃんと自分で文字と言っているのに文字じゃないとか言い出す大ボケかますしw
874デフォルトの名無しさん:2007/05/15(火) 07:18:56
>>580 の話はもうとっくに終わってるんだが・・・。
875デフォルトの名無しさん:2007/05/15(火) 07:19:47
C の規格では「文字」はビット列、すなわち数値であると規定されています。

>3.7.1 文字、1バイト文字
><プログラミング言語Cでの意味> 1バイトに納まるビット表現
876デフォルトの名無しさん:2007/05/15(火) 07:19:52
580が\0と書いたのが気にくわないんじゃないの。
ちゃんと'\0'と書け、と。
(でも、そうすると、854,855の対応が気になるわけだけど)
877デフォルトの名無しさん:2007/05/15(火) 07:19:58
まだやってたのか
そんな暇あるならバイトでもしろよ
878デフォルトの名無しさん:2007/05/15(火) 07:20:46
テレビ見ながらついでで相手してるだけだからどうでもいい。
879デフォルトの名無しさん:2007/05/15(火) 07:22:22
>>843って結局 JIS 規格の話だろ?逆斜線ってのは、大学の授業で聞いたことあるけど
日本じゃもともと存在していなかったんで、¥(円マーク)をバックスラッシュの代用で
使ったって話で、それについて制御文字の表現を \ を前に用いる規格があるって話で
>>843 は文字が値とかって話じゃなくて、制御文字を日本では \ との組み合わせで
使われているって話でしょ?何勘違いして直接関係ない文献を勘違いしたという
意味の分からん説明をしているのか、理解不能だわ。

> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
これについてはあくまでも表現の仕方であって、値として使っているって話じゃないよ。
JIS規格におけるバックスラッシュの代用が \ って話だろw
880デフォルトの名無しさん:2007/05/15(火) 07:25:56
よくこんな釣りを思いつくよなあ。尊敬するぜ。
881デフォルトの名無しさん:2007/05/15(火) 07:28:11
\ がバックスラッシュで表示される環境で見てるものとして脳内変換しろよ。
882デフォルトの名無しさん:2007/05/15(火) 07:28:38
(´ω`)
883デフォルトの名無しさん:2007/05/15(火) 07:31:13
ttp://okuyama.mt.tama.hosei.ac.jp/unix/C/slide19-1.html
でも書かれているけど、明らかに '\0' をナル文字といって値とは言っていない
敢えて値というならそれは 0。\0 でなくて敢えて '\0' というならなおさらそれ自身は値じゃなくて
なる文字。文字がなんなのか、どのように制御されているのか分からない馬鹿って困るな。
大学レベルじゃまずついていけない頭の持ち主か。何JIS規格のバックスラッシュの
代用について話をしてんねん、ボケが
884デフォルトの名無しさん:2007/05/15(火) 07:31:46
ちょっと哀れに思えてきたねw
885デフォルトの名無しさん:2007/05/15(火) 07:32:16
それは、5.2.1参考
「この規格で規定する基本文字集合の中の二つの要素
\と〜は、JIS X 0201では、それぞれ¥(円記号)と
 ̄(オーバーライン)に置き換える」
で既出なんだな
886デフォルトの名無しさん:2007/05/15(火) 07:32:24
バックスラッシュの代用の話なんて規格票に何も書かれていないんだが。
規格票読んでないのバレバレ。
887デフォルトの名無しさん:2007/05/15(火) 07:34:02
とうとうISO646にまでケチをつけるまで来たのか?
888デフォルトの名無しさん:2007/05/15(火) 07:34:08
>>886>>843 のレスの部分に、ということね。
889デフォルトの名無しさん:2007/05/15(火) 07:35:54
>883
文字定数が('A'とか'B'とか'\0'とか)が値を持たないといいたいわけ?
890デフォルトの名無しさん:2007/05/15(火) 07:37:17
「値」という言葉の定義すら怪しいな。
数値以外は値じゃねー、と考えてそうだ。
891デフォルトの名無しさん:2007/05/15(火) 07:39:25
#include <stdio.h>
#define TEST '\0'

int main() {
printf("%d", TEST);
return 0;
}
892デフォルトの名無しさん:2007/05/15(火) 07:39:59
もうここまで来ると理屈抜きで全面的に賛同して輪廻から解放してあげたいのだが
こだわっているポイントがイマイチ分からない
893デフォルトの名無しさん:2007/05/15(火) 07:41:29
暇な時に適当に遊んであげれば良いと思うよ。
894デフォルトの名無しさん:2007/05/15(火) 07:42:08
void main()
gets()
NULL
\0

他になんかあったっけ?
895デフォルトの名無しさん:2007/05/15(火) 07:42:24
>>894
fflush(stdin);
896デフォルトの名無しさん:2007/05/15(火) 07:42:29
でもそういうスレじゃないしな多分
897デフォルトの名無しさん:2007/05/15(火) 07:42:59
こいつの脳内計算機では「値」ってのと文字とが区別されてるんだよ、きっと。
メモリにタグビットかなんかがついてて。
898デフォルトの名無しさん:2007/05/15(火) 07:44:51
ttp://okuyama.mt.tama.hosei.ac.jp/unix/C/slide19-1.html
> 次は,エスケープ文字です。
> \a ビープ音(警報)

> # [例1]'\0':ナル文字
> # [例2]'\x00':ナル文字
エスケープ”文字”です。おまけにシングルクォートつきで '\0' ナル”文字”
どこにも値なんて書かれていましぇ〜〜〜ん。'\0'と敢えて表記するなら
なおさらナル”文字”であって値じゃありましぇ〜〜〜ん。そして
僕は死にましぇ〜〜ん、C言語あるから!
899デフォルトの名無しさん:2007/05/15(火) 07:44:58
>894
malloc&freeを忘れてもらっては困るな
900デフォルトの名無しさん:2007/05/15(火) 07:45:19
こういう奴は議論してる最中は絶対に認めないけど、
数日経つと「そんなの当たり前じゃないか」とか言い始めるタイプ。
901デフォルトの名無しさん:2007/05/15(火) 07:46:20
902デフォルトの名無しさん:2007/05/15(火) 07:46:26
>>897
お前の低レベルな頭じゃ文字と値の違いがなくて、数字の0として扱われている0も
値の0なんだろうねwwww 文字と値の違いが分かってないから、数字が入ったとき
数値との区別がついてねーようだな。お前、文字と数字の入り混じったデータを
扱ったこともない素人だろw
903デフォルトの名無しさん:2007/05/15(火) 07:46:56
おまえら夜通しやってたのか?
904デフォルトの名無しさん:2007/05/15(火) 07:47:26
このスレはかまってくれる人が多いね。
宿題スレじゃもう誰も相手しなくなったのに。
905デフォルトの名無しさん:2007/05/15(火) 07:47:45
面白いオモチャだからいじってみた。
906デフォルトの名無しさん:2007/05/15(火) 07:48:30
>>901
いや、モロニ表現って書いてあるやん。ところでさぁ、話をそらすなよ。
きゃつは敢えてシングルクォートをつけて '\0' を値といったんだぞ?w
JIS規格じゃもろにそれをなる文字の表現とされているんだが?w
お前の場合、Aも値とか言いそうで怖いわ。Aは16進数では確かに値として
扱われることもあるが、文字と値をごっちゃにしてたら、Fまで値になって
E以降が文字になってそうだなw
907デフォルトの名無しさん:2007/05/15(火) 07:51:55
   〃∩ ∧_∧
   ⊂⌒(  ・ω・)  はいはいそのとおりそのとおり
     `ヽ_っ⌒/⌒c
        ⌒ ⌒
747 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 03:30:52
なんか変な方向に行ってるみたいだな。

1. ヌル文字の値が '\0' なのは規格で決まってる。

2. \0 という特別なエスケープシーケンスは規格で用意されておらず、
  これは 8 進数の値を直接埋め込むエスケープシーケンスでしかないので、
  '\0' の値はどの環境でも厳密に 0 になる。
  (そもそもそんな特別なエスケープシーケンスを用意してしまったら、
  8 進数で 0 を埋め込むことが不可能になってしまう)

これでいいだろ、もう。



1. ヌル文字の値が '\0' なのは規格で決まってる。
        ^^^^^^^^^^^^^^^
表現はJIS規格でそうだが、値とは書かれていない。強いて値というならそれは0。
割り当てられている文字コードが0。あくまでも\にも0も文字、組み合わせてもそれらは
文字列という解釈はされど、C言語ではそれをエスケープシーケンスで使われる
表示できない文字を代用した文字コードが使われているって話であって
それらは値ではない。んじゃ、アラートとして使われるアラートの値は'\a'って言うかね?
こいつは \ の後ろに 0 があったんで、その数字に目がいってしまい、値と言ってしまったんだろうけど
それは0という文字であって値ではないんだよ。んじゃ、\a が値になるんかね?
これはどう見ても文字列であって、その組み合わせを代用して表示できない文字をあるように
使っているのさ。それが理解できないから大学未満レベルって言われるんだよw
909デフォルトの名無しさん:2007/05/15(火) 07:53:26
#include <stdio.h>

char itoc(int i) {
if (i >= 0 && i <= 9)
return '0' + i;
else
return '\0';
}

int ctoi(char c) {
if (c >= '0' && c<= '9')
return c - '0';
else
return -1;
}

int main() {
int i = 9;
char c = '8';
printf("i(char):%c c(int):%d", itoc(i), ctoi(c));
return 0;
}
910デフォルトの名無しさん:2007/05/15(火) 07:54:10
「文字として存在するか、数値として存在するか」なら計算機の中ではどちらも数値として存在していて、
「文字として扱うか、数値として扱うか」ならプログラム上での扱いによる
911デフォルトの名無しさん:2007/05/15(火) 07:59:12
コンピュータ的には状態として存在しているような気もするが。
912デフォルトの名無しさん:2007/05/15(火) 07:59:29
\a ビープ音(警報)
\b バック・スペース(後退)
\f フィード(書式送り)
\n 改行
\r キャリッジ・リターン(復帰)
\t 水平タブ
\v 垂直タブ
\' シングル・クォーテーション '
\" ダブル・クォーテーション "
\? ?
\\ バックスラッシュ \
さぁ、これらもそれぞれ 改行の値は '\n'、水平タブの値は '\t'って言うかね?
表示できない、エスケープ文字って俺は言うね。そう、それらには表示できる文字が
存在しないから、便宜上代用されているんであって、別にその\との組み合わせが値
って言うものにはなっていないんだよ。強いて値って言うなら、割り当てられている文字コードに
対してなら理解は出来るが。実際のところ、整数型の値として文字コードが格納されているしな。
文字そのものは数値としては存在しておらず、文字コード表から該当する、登録されている文字を
表示させる仕組みがあるんであって、実態は数値なのさ。だから敢えて文字コードを参照する
ソースを書いてやったのに、理解していないなんて・・・だめだな。
お前じゃ汎用電子計算機の仕組みについて学ぶのは無理だ。その仕組みの原理にのっとって
プログラムだって作られているんだが・・・
913デフォルトの名無しさん:2007/05/15(火) 08:00:24
感じとしてはわかったけど、その「値」はCの規格票で
定義された用語ではないな。
914デフォルトの名無しさん:2007/05/15(火) 08:03:52
もちっと 制御 文字について理解しましょーね、大学未満さんw
さて、今日は休みだがお前らには付き合ってられん。悔しかったら
どこでも良いとは言わないが、施設の整った大学にくらい通って勉強してみろ。
実際にその原理について習う実験や研究をした人間とじゃ格が違うぜ。
もちっと電子計算機の基本原理を理解してから出直せ。
文字データそのものは数値としては存在しないよ。文字だって人間が使っている文字みたく
見えるように視覚的にコンピュータが実装している範囲内の表現能力を用いて構成されてんだから。
915ここでフレーム投下:2007/05/15(火) 08:04:14
printf("??[foo]??");としたら、期待通りの出力になりませんでした。
期待通りに出力させるにはどうしたらいいでしょう。
916デフォルトの名無しさん:2007/05/15(火) 08:11:06
>>912
別にお前のポリシーなんて誰も聞いてないよ
917デフォルトの名無しさん:2007/05/15(火) 08:11:55
#include <stdio.h>

int main() {
char str[] = "abcdefghijk";
for (unsigned int i = 0; str[i] != '\0'; ++i)
printf("%p:%x ", str+i, str[i]);
return 0;
}
918デフォルトの名無しさん:2007/05/15(火) 08:13:58
( ´ω`)
919デフォルトの名無しさん:2007/05/15(火) 08:15:36
(´ω`)
920デフォルトの名無しさん:2007/05/15(火) 08:16:42
どっかのブログでも書かれてたが、ほんと質問者置いてけぼりで言い争いが続くなw
921デフォルトの名無しさん:2007/05/15(火) 08:17:31
こっち見んな
922デフォルトの名無しさん:2007/05/15(火) 08:18:16
\0の0が数値に見えちゃったんだろうね。これはその他の\aや\tのごとく
数値ではなく数”字”だから。\の後ろに数値を参照していると思ったんだろうね、可愛そうに。
どう考えてもそれも含めて\と組み合わされた文字列をエスケープ文字として代用しているだけです
ありがとうございますた。
923デフォルトの名無しさん:2007/05/15(火) 08:19:10
>>920
fj的フレームですらないのが困り物だな。manだの規格書だの読めば済むことをグダグダと・・・
924デフォルトの名無しさん:2007/05/15(火) 08:23:32
#include <stdio.h>

int main() {
int chs[] = {'\a', '\b', '\f', '\n', '\r', '\t', '\v',
'\'', '\"', '\?', '\\', '\0' };
for (unsigned int i = 0; chs[i] != '\0'; ++i)
printf("%x ", chs[i]);

putchar('\n');

int j = 0;
while (chs[j] != '\'') ++j;
while (chs[j] != '\0')
printf("%c ", chs[j++]);

return 0;
}
925デフォルトの名無しさん:2007/05/15(火) 08:26:52
あほが一人だと哀れなだけだが、
あほが二人だと始末に負えないな
926デフォルトの名無しさん:2007/05/15(火) 08:27:58
あほが三人集まったらどうなるんだろ
927デフォルトの名無しさん:2007/05/15(火) 08:27:57
>>568が始まりか…
こんなに長文を書きながら密度がスカスカの議論を延々と…
928デフォルトの名無しさん:2007/05/15(火) 08:36:24
延々と「俺的『値』の定義」を読まされるスレはここですか?
929デフォルトの名無しさん:2007/05/15(火) 08:36:57
>>923
void に向かって``半角''の一言をだして, 引き際失った奴を思い出したよ...
# fj だけじゃないけどな, void + ``半角''
930デフォルトの名無しさん:2007/05/15(火) 08:40:29
まぁエスケープシーケンスの話はもう良いや。はいはい、'\0'はナル文字の値ってことで良いよ。
俺も今後'\0'はナル文字じゃなくてなる文字の値って言ってあげるから。

それよりもさぁ、最近、里田まいが気になるんよ。俺、別に今までハロプロだのモー娘。だの
まったく興味がなったんだけどさ、クイズヘキサゴン2に出ている里田まいを見て
なんかこう、キュンッときたんよ。辻と違ってまだ処女だったらええのになぁ〜なんて
期待しつつ、プログラミングをしているわけだ。そんな俺ってどうよ?C言語ならぬ
Cまでいけそうかな?
931デフォルトの名無しさん:2007/05/15(火) 08:40:53
もまいら思い出してくれ。
文字と数値がメモリ上でも区別されてると思い込んでる人種がいるだろ。
COBOうあなにをするタテイスカンナニラセ@「
932デフォルトの名無しさん:2007/05/15(火) 09:14:23
(´ω`)
933デフォルトの名無しさん:2007/05/15(火) 09:25:34
こいつらが何か意味のある議論をしている・したがっていると勘違いするから混乱するんだよ。
レスを付けて何か返ってくるというリアルワールドでのコミュニケーションの代償行為をほぼ唯一の生きがいとしているだけなのに。
934デフォルトの名無しさん:2007/05/15(火) 09:30:03
俺の周囲の場合リアルワールドの会話はこれより遥かにつまらんから困る
人の噂話、悪口、武勇伝等の自慢話ばっかりでうんざり
2chが悪口ばっかりとか生産性の無いネタばっかりって言える人は幸せ者
935デフォルトの名無しさん:2007/05/15(火) 09:31:40
これは釣りに対して全力で釣られてみる遊び。
素人にはオススメできない。
936デフォルトの名無しさん:2007/05/15(火) 09:32:56
おまいらじゃせいぜい2ちょんねるだな。日本語で
937デフォルトの名無しさん:2007/05/15(火) 11:54:24
だめだこいつら…はやくなんとかしないと
938デフォルトの名無しさん:2007/05/15(火) 12:01:11
>>1
939デフォルトの名無しさん:2007/05/15(火) 13:04:21
昨日今日あたりで一気にスレを消費しちまったな
940デフォルトの名無しさん:2007/05/15(火) 13:20:05
開発環境はvc++2005 OSはxpです。現在研修でコマンドラインから
取得した引数で四則演算を行うプログラムを作成しているのですが、
オーバーフローのチェックで悩んでいます。

加算、減算については出来たのですが、乗算のオーバーフローチェックが
分かりません。limits.hをインクルードして2147483647〜-2147483648
までの数値を扱っています。どのようなコードを書けばよいのでしょうか?
よろしくお願いします。

扱っている変数は
int lop; // 左のオペランドに入力する値
int rop; // 右のオペランドに入力する値
int result; // 計算結果
int mod; // 除算の余り
int max = INT_MAX; // 表現可能な最大値
int min = INT_MIN; // 表現可能な最小値

char *check; // 変換不可能な文字を格納
char op; // 入力する演算子

これらになります。ファイル名lop op ropの形式で
実行します。
941デフォルトの名無しさん:2007/05/15(火) 13:29:02
long long 使っていいならラクチンなんだがなあ。
942デフォルトの名無しさん:2007/05/15(火) 13:32:03
>>940
lop*rop (lop>0 rop>0)について調べる場合
lop>INT_MAX/rop のときオーバーフロー
負数とか考えると面倒だね
943デフォルトの名無しさん:2007/05/15(火) 13:40:23
インラインアセンブラ使いてーなー。
944デフォルトの名無しさん:2007/05/15(火) 13:42:04
掛け算のオーバーフローは難しそうだな。
n周まわって 結果が正のまま とかありえそうだし
945デフォルトの名無しさん:2007/05/15(火) 13:48:36
>>940
マルチ乙。
加減算も自分でやったんじゃないんだろ?w

Hackmem とかhacker's delight で調べてみ。
日本語訳も出版されている。
946デフォルトの名無しさん:2007/05/15(火) 13:51:21
掛け算だけにマルチ


いやスミマセン
947デフォルトの名無しさん:2007/05/15(火) 13:53:30
掛け算を足し算のループに変えてオーバーフローを検出くらいしか思い浮かばん…
負数は先読み計算で。
948デフォルトの名無しさん:2007/05/15(火) 13:59:21
MSBのbit位置テーブル作っといてlookupすりゃええんちゃうの?
949デフォルトの名無しさん:2007/05/15(火) 14:02:51
レスありがとうございます。確かにlongが使えるといいのですが、使っちゃ駄目みたいです。ちなみに先ほどのコードを使用して動かしてみました。全ては試していないのですが、
-2147483648 * -1 = -2147483648や
 2147483647 * -1 = オーバーフローと
なってしまいます。上はオーバーフローに下は
-2147483647になるようにしたいのですが、中々上手くいきません。
どうすればよいでしょうか?よろしくお願いします。

950デフォルトの名無しさん:2007/05/15(火) 14:21:43
2進数のまま手計算してみれば?
途中経過のビットも出力して確認しながらやれよ。
951デフォルトの名無しさん:2007/05/15(火) 14:28:25
これでダメな場合って lop==0 の時以外にあるかな?
result=lop*rop;
if(result/lop!=rop) オーバーフロー
952デフォルトの名無しさん:2007/05/15(火) 14:54:12
>>951
っ lop=-1 rop=INT_MIN
953デフォルトの名無しさん:2007/05/15(火) 14:56:41
>>940
加減算のオーバーフローチェックはどうやったの?
954デフォルトの名無しさん:2007/05/15(火) 15:04:30
>>952
これやったら落ちてビビった (MacOSX 10.4.9 Intel Core 2 Duo)
955デフォルトの名無しさん:2007/05/15(火) 15:11:19
>>954
>>952 で同じく落ちた (Win98SE C7 600MHz)

なんと言うか恐ろしい計算だw
956デフォルトの名無しさん:2007/05/15(火) 15:29:19
>>952
これ反則だよなあ。普通の計算でも起こり得りそうで困る。
957デフォルトの名無しさん:2007/05/15(火) 15:40:55
gccで落ちたコードの核になる部分だけ抽出。
--
movl $-2147483648, %eax
movl $-1, %ecx
idivl %ecx
--
うーん、-1で割っているだけなのに。
958デフォルトの名無しさん:2007/05/15(火) 15:49:53
これは勉強になった。
959デフォルトの名無しさん:2007/05/15(火) 15:53:22
>>952
C#でも落ちるかなと思ったけどOverflowExceptionが出るだけだった。
960デフォルトの名無しさん:2007/05/15(火) 15:57:11
>>959
Exception をキャッチしてないからCだと落ちる っつーことっしょ
961デフォルトの名無しさん:2007/05/15(火) 16:04:16
Instruction Set Reference の idiv の項を見てみた。

例外 #DE (divide error)

1. 除数が 0 の場合
2. 商が大きすぎる/小さすぎる場合

の、2. に引っかかってるみたいね。
アセンブラレベルで QWORD で使うなら十分起こりうる状況だけど、
int でやってる限りは -2147483648 / -1 でしか起こらないよね、これ。
こりゃ盲点だわ。
962デフォルトの名無しさん:2007/05/15(火) 16:07:44
実数でも同じことできる?
963デフォルトの名無しさん:2007/05/15(火) 16:14:23
どうでもいいけど、Linuxだと"Floating point exception"って出るんだよな。
どこがFloatingPointなんだか。
964デフォルトの名無しさん:2007/05/15(火) 16:15:41
gcc@MacOSX でもそう出る。
イミフ。
965デフォルトの名無しさん:2007/05/15(火) 16:15:56
>>962
起きなかった
966デフォルトの名無しさん:2007/05/15(火) 16:18:14
実数は普通の演算で例外起きたっけ?
967デフォルトの名無しさん:2007/05/15(火) 16:19:32
もう面毒せーから1/0=πという数学体系を新たに定義しようぜ
968デフォルトの名無しさん:2007/05/15(火) 16:22:10
移項すると 1 = π × 0 になるんだけど
969デフォルトの名無しさん:2007/05/15(火) 16:23:16
その定義上ではその移項自体がまた特殊な扱いになるのか。
970デフォルトの名無しさん:2007/05/15(火) 16:47:17
>>963
English WikiからSIGFPEの項より
>Although SIGFPE does not necessarily involve floating-point arithmetic, there is no way to change its name without breaking backward compatibility.
971デフォルトの名無しさん:2007/05/15(火) 17:50:56
可換環じゃなかったら最早普通の計算に使えないなw
972デフォルトの名無しさん:2007/05/15(火) 18:17:22
次のような関数を作っていて、test3の直前でセグメントエラーが
出てしまい困っています。
R[]はintのポインタの配列で、疑似二次元配列です。
R[i]とy[]のなかで共通する数をR[i+1]に代入して、
最後に0を入れる関数です。
どうしてエラーが出るのか、誰か教えてください。

void katu(int *R[], const int i, const int y[]){
  int a=0, b=0, k=0;

  for(a=0; a<N; a++){
    for(b=0; b<N; b++){
      if(R[i][a] == y[b]){
        print("test1\n");
        realloc(R[i+1], sizeof(int)*(k+2));
        printf("test2\n");
        R[i+1][k] = y[b];
        printf("test3\n");
        k++;
      }
      if(y[b] <= 0)
        break;
    }
    if(R[i][a] <= 0)
      break;
  }
  R[i+1][k] = 0;

  return;
}
973デフォルトの名無しさん:2007/05/15(火) 18:20:50
>>972
reallocの戻り値捨ててどうするんだよ。
reallocが成功したら元の領域はアクセスできなくなる。
974デフォルトの名無しさん:2007/05/15(火) 18:22:18
>>972
realloc()の使い方を勉強しろ。

それはさておき、一文字変数は判り難いだけだから止めた方がいいぞ。
#特に引き数iなんて、誤解してくれと言わんばかりだ。
975デフォルトの名無しさん:2007/05/15(火) 18:24:42
i は for ループのカウンタ以外では使わないほうがいいかもw
976デフォルトの名無しさん:2007/05/15(火) 18:32:47
一文字変数はカウンタくらいしか使わないな
977デフォルトの名無しさん:2007/05/15(火) 18:32:48
aとかbをループ変数にするのはなんかいやだな。
978デフォルトの名無しさん:2007/05/15(火) 18:34:57
(滅多に使わない)数式の実装ではまんま1文字変数使うこと多い
# コメントで参考書名+page 書いとくが
979デフォルトの名無しさん:2007/05/15(火) 18:37:50
数式をコメントに入れておくなあ、そういう場合。
980デフォルトの名無しさん:2007/05/15(火) 18:40:42
>>979
数行オーダーの数式なら、そうするほうが多いけどね。
RGB⇔HSV変換とかの 条件付な式だとコメント書きにくいねぇ (で、リファレンス書いて終了w)
981デフォルトの名無しさん:2007/05/15(火) 18:48:04
こういうアルゴリズムでーす後はググれって感じでコメント書く。
982972:2007/05/15(火) 19:18:53
>>973-974
ありがとうございます。
realloc(R[i+1], sizeof(int)*(k+2));
を、
R[i+1] = realloc(R[i+1], sizeof(int)*(k+2));
にしたら無事に動くようになりました。
結果が正しいかはこれから検討する所でありますが。

今回初めてreallocを使ってみたので、本当に間抜けなことをしていました。
重ね重ね、ありがとうございます。

変数についてですが、どうにもうまい名前の付け方が思い付きませんorz。
他の方のソースを読んで勉強していくしかないのでしょうか?
983デフォルトの名無しさん:2007/05/15(火) 19:24:18
>>982
変数名を思いつけないと言うことは、書いているものが理解できていないか説明できないかのどちらかだろう。
前者は問題外だが、後者も社会人として必要な能力だ。「相手に伝える」ことを念頭に入れて、
変数の説明をする積もりで名前をつけてみるといい。
984デフォルトの名無しさん:2007/05/15(火) 19:35:27
例えばこんな感じですね

int i
int love, you
985デフォルトの名無しさん:2007/05/15(火) 19:39:59
>>984
あーそれは、愛のあるいい変数名だね。
って、違うでしょ。
986972:2007/05/15(火) 19:42:35
>>983
「相手に伝える」ですか。心がけてみます。
どうもありがとうございます。
987デフォルトの名無しさん:2007/05/15(火) 19:52:03
変数名なんて、それが何を入れとくための奴なのか分かるんならなんでもいいよ
988デフォルトの名無しさん:2007/05/15(火) 19:58:41
VisualC++.NETならばC言語で.NETを使えますか?
989デフォルトの名無しさん:2007/05/15(火) 20:11:54
いいえ。
VS2003ならMC++, VS2005ならC++/CLIでのみ.NETを使えます。
990デフォルトの名無しさん:2007/05/15(火) 20:12:27
いいえ、専用に構文が拡張されたC++になります。
991デフォルトの名無しさん:2007/05/15(火) 20:17:00
自前でホスティングすれば使えなくもないだろう。
992デフォルトの名無しさん:2007/05/15(火) 20:28:25
// 次スレテンプレ

C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 12
http://pc11.2ch.net/test/read.cgi/tech/1178620766/

過去スレ
Part 1 ttp://pc8.2ch.net/test/read.cgi/tech/1146700389/ Part 2 ttp://pc8.2ch.net/test/read.cgi/tech/1153818463/
Part 3 ttp://pc8.2ch.net/test/read.cgi/tech/1160682950/ Part 4 ttp://pc8.2ch.net/test/read.cgi/tech/1162999861/
Part 5 ttp://pc8.2ch.net/test/read.cgi/tech/1165022193/ Part 6 ttp://pc10.2ch.net/test/read.cgi/tech/1167325490/
Part 7 ttp://pc10.2ch.net/test/read.cgi/tech/1170064980/ Part 8 ttp://pc11.2ch.net/test/read.cgi/tech/1171946674/
Part 9 ttp://pc11.2ch.net/test/read.cgi/tech/1173284217/ Part 10 ttp://pc11.2ch.net/test/read.cgi/tech/1174290325/
Part 11 ttp://pc11.2ch.net/test/read.cgi/tech/1176800483/
993デフォルトの名無しさん:2007/05/15(火) 20:29:05
関連スレ
C/C++の宿題を片付けます 86代目
http://pc11.2ch.net/test/read.cgi/tech/1165718021/
くだすれC言語(初心者用) Part.2
http://pc11.2ch.net/test/read.cgi/tech/1172099763/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/

関連リンク
C 関数検索 man on WWW
http://www.linux.or.jp/JM/
初心者のためのポイント学習C言語
http://www9.plala.or.jp/sgwr-t/

// ここまでテンプレ
994気まぐれアナスイ:2007/05/15(火) 20:32:34
984 differ:char 5,6,7,8,9 line 4
!(Φ_Φ+){level}
995デフォルトの名無しさん:2007/05/15(火) 20:33:11
Cスレ乱立しすぎ
こっちへ吸収されていいと思う

【初心者歓迎】C/C++室 Ver.37【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1178432985/l50
くだすれC言語(初心者用) Part.2
http://pc11.2ch.net/test/read.cgi/tech/1172099763/l50
996気まぐれアナスイ:2007/05/15(火) 21:57:37
吸収も良いですが?
スレを、そちらに変更?
997デフォルトの名無しさん:2007/05/15(火) 22:13:54
実行の様子をテキストファイルとして作成する方法を知りたいのですが、windowsの場合どうすればいいのでしょうか?
Linuxなら./program > text.txtとするらしいのですが、windowsの場合がわかりません
998デフォルトの名無しさん:2007/05/15(火) 22:15:03
>>997
同じ事やってみた?
999デフォルトの名無しさん:2007/05/15(火) 22:17:13
なぜ試さない?
1000デフォルトの名無しさん:2007/05/15(火) 22:17:54
1000ゲット
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。