C言語なら俺に聞け(入門篇) Part 12
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/05/08(火) 19:39:26・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
0002デフォルトの名無しさん
2007/05/08(火) 19:41:30char c;
char str[100];
もしかしてこのcとstrが同じだと思ってるとか?
0003デフォルトの名無しさん
2007/05/08(火) 19:45:33C言語の場合
char c; /* 文字型の宣言 */
char str[100]; /* 文字列型の宣言 */
Java とか C# とか
char c;
string str;
こういうことなのかな?なんか変なかんじがする…
0004デフォルトの名無しさん
2007/05/08(火) 19:47:26さすがにcがポインタだとは言わないだろ。
0005デフォルトの名無しさん
2007/05/08(火) 19:48:20違うんですか?
0006デフォルトの名無しさん
2007/05/08(火) 19:48:38少なくともポインタ変数ではないし、
ポインタと説明してる紛らわしい本はあって欲しくない。
文字列をポインタを通して渡す、程度の話をしてるんでないかな。
0007デフォルトの名無しさん
2007/05/08(火) 19:50:27上手く動かないだけじゃ何を意味してるのか曖昧だぞ。
0008デフォルトの名無しさん
2007/05/08(火) 19:52:17Cには文字型も文字列型もない
0009デフォルトの名無しさん
2007/05/08(火) 19:56:10期待している動作
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じゃ無理なんですかね?
0010デフォルトの名無しさん
2007/05/08(火) 19:56:59授業とかはあくまで補助や学習スケジュール管理と考えたほうがいい
専門学校なんかは1年〜数年単位ですべてが学べるようになっているはずだから
教え方や進歩速度に不満があるならとりあえず教科書読んで池
ポインタもそのうちしっかりやるだろ
0011デフォルトの名無しさん
2007/05/08(火) 19:58:55goto で無理なんてことはあり得ない。
0012デフォルトの名無しさん
2007/05/08(火) 20:05:00C:\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>
0013デフォルトの名無しさん
2007/05/08(火) 20:11:090014デフォルトの名無しさん
2007/05/08(火) 20:11:52#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;
}
0016デフォルトの名無しさん
2007/05/08(火) 20:18:160017デフォルトの名無しさん
2007/05/08(火) 20:19:160018デフォルトの名無しさん
2007/05/08(火) 20:19:48っ .\goto
っ goto.exe
0019デフォルトの名無しさん
2007/05/08(火) 20:20:51goto.exe
↓
.\goto.exe
0020デフォルトの名無しさん
2007/05/08(火) 20:21:36してますよw
証拠
http://www.imgup.org/iup378065.png
因みにclでコンパイルしても結果は同じでした
これがVISTA QUALITY?
0021デフォルトの名無しさん
2007/05/08(火) 20:23:51しまった、gotoはコマンドなのか・・・
これで解決しました
済みませんでしたあああ(ノ-`)
0022デフォルトの名無しさん
2007/05/08(火) 20:24:16プロンプトのコマンドと被るような名前をやめればおk
copy dir del mkdir などなど
0023デフォルトの名無しさん
2007/05/08(火) 20:25:54なるほど
0024デフォルトの名無しさん
2007/05/08(火) 20:26:060025デフォルトの名無しさん
2007/05/08(火) 20:29:01俺も失念してたぜ。
0026デフォルトの名無しさん
2007/05/08(火) 20:29:270027デフォルトの名無しさん
2007/05/08(火) 20:30:45感激です><
因みに、ファイル名の8割が関数名なので、こういうことは偶にあったんですが
今回はコマンドエラーが出なかったので全然気付きませんでした(ノ-`)
0028デフォルトの名無しさん
2007/05/08(火) 20:32:04ついでにpractisも直したといたほうがいいぞw
0029デフォルトの名無しさん
2007/05/08(火) 20:39:29全スレ→前すれ
>>28
>>13で言われて気付いたので直そうとしたんですが
システム系統以外、全部落としてもシステムから蹴られるので
今度再起動した時にでも直しておきます
0030デフォルトの名無しさん
2007/05/08(火) 20:53:510031デフォルトの名無しさん
2007/05/08(火) 21:14:36セッションによるページ間のデータの転送の仕方がわからないのですが・・・
例えば、BMP(体脂肪の奴)を測定するプログラムで、
1ページ目で体重・身長を入力して
2ページ目で結果を表すという流れなんですが・・・
色々調べたり試行錯誤してみても全くわかりません。
ご教授願えませんか??
0032デフォルトの名無しさん
2007/05/08(火) 21:22:56C関係ない気がするが適当にエスパーして答えとく
・1ページ目で入力されたデータを何らかの識別子と共に保持しておく
・2ページ目にその識別子を埋め込んでおく
・2ページ目からの入力がきたら、識別子から保存してるデータと関連づける
0033デフォルトの名無しさん
2007/05/08(火) 21:25:160034デフォルトの名無しさん
2007/05/08(火) 21:44:19FOX★公認!!!
俺たちのクリックで日本を一位にしようぜ!!
“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/
0035デフォルトの名無しさん
2007/05/08(火) 23:50:42配列の大きさをただしく認識してくれないのですが、どこが間違っていますか?
内積を計算するプログラムです。
C言語むずい^^;
0036デフォルトの名無しさん
2007/05/08(火) 23:52:25スコープ外で宣言された配列の大きさは取得できない
関数引数で渡されるのはあくまで配列先頭へのポインタのみ
それができるならライブラリ関数でわざわざバッファサイズ指定したりしないだろ?
0037デフォルトの名無しさん
2007/05/08(火) 23:53:06ttp://www.kouno.jp/home/c_faq/c6.html#21
0038デフォルトの名無しさん
2007/05/09(水) 00:02:12だったらこっちも4とでるべきなのでは?
0039デフォルトの名無しさん
2007/05/09(水) 00:05:53>36
0040デフォルトの名無しさん
2007/05/09(水) 00:07:39では、実際この関数で配列の大きさを求めるにはどうしたらいいのでしょう?
rubyでは.sizeでよかったんですが・・計算系はruby遅すぎて;;
0041デフォルトの名無しさん
2007/05/09(水) 00:09:490042デフォルトの名無しさん
2007/05/09(水) 00:11:320043デフォルトの名無しさん
2007/05/09(水) 00:14:020044デフォルトの名無しさん
2007/05/09(水) 00:18:10関数内でもいけるはずです。どうしたらいいでしょう?
もしやひとつひとつ取得していく系?
0045デフォルトの名無しさん
2007/05/09(水) 00:19:06だからできんといっとろーが
0046デフォルトの名無しさん
2007/05/09(水) 00:20:200047デフォルトの名無しさん
2007/05/09(水) 00:21:010048デフォルトの名無しさん
2007/05/09(水) 00:23:100049デフォルトの名無しさん
2007/05/09(水) 00:23:18for(i=0; a[0]!=null; i++){
count++;
}
などは?
0050デフォルトの名無しさん
2007/05/09(水) 00:23:440051デフォルトの名無しさん
2007/05/09(水) 00:24:11配列の要素数が未定なのですが?
ベクトルとベクトルを渡したら内積が得られる。
引数は2つのはずです。
0052デフォルトの名無しさん
2007/05/09(水) 00:25:12nullじゃなかった・・・
0053デフォルトの名無しさん
2007/05/09(水) 00:27:39無理なもんは無理 まじで無理
0054デフォルトの名無しさん
2007/05/09(水) 00:27:45政府の Ruby 計画が心配になってきたぞ。
>>51
要素数はどこかで分かってるはずだ。
inner_product 内に入ってしまうとどうやっても分からないから、
inner_product に要素数を渡すようにするしかない。
0055デフォルトの名無しさん
2007/05/09(水) 00:27:460056デフォルトの名無しさん
2007/05/09(水) 00:30:170057デフォルトの名無しさん
2007/05/09(水) 00:30:17ならその2つの要素数を渡す
0058デフォルトの名無しさん
2007/05/09(水) 00:31:21Cに nil はない
0059デフォルトの名無しさん
2007/05/09(水) 00:31:24値と要素数を持った構造体を作って管理しとけ。
0060デフォルトの名無しさん
2007/05/09(水) 00:34:120061デフォルトの名無しさん
2007/05/09(水) 00:34:510062デフォルトの名無しさん
2007/05/09(水) 00:34:53理解力無さ杉
0063デフォルトの名無しさん
2007/05/09(水) 00:40:54rubyに汚染されすぎ
0064デフォルトの名無しさん
2007/05/09(水) 00:44:370065デフォルトの名無しさん
2007/05/09(水) 00:55:38動的に確保したメモリも開放しなさそう
0066デフォルトの名無しさん
2007/05/09(水) 00:59:23と初心者が申しております
0067デフォルトの名無しさん
2007/05/09(水) 01:03:26性能を求めるならば、対価の代償として、より低級言語のしがらみ、
メモリの動き、キャッシュの動き、CPUのプリフェッチぐあいを理解しないと速くはならないね
0068デフォルトの名無しさん
2007/05/09(水) 01:10:57#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;
}
0069デフォルトの名無しさん
2007/05/09(水) 01:13:11何言いたいのか意味不明だが、これで納得できないなら、そういうことが出来る他の言語使ってろ
読みづらいがJISのホームページでPDF化された奴も見れるから確認なり好きにしろ
6.5.3.4 sizeof演算子の注釈(84)
配列型又は関数型をもつと宣言された仮引数に適用する場合、sizeof演算子は、
型調整された(ポインタ)型の大きさを与える(6.9.1参照)。
(JIS X 3010:2003より引用)
0070デフォルトの名無しさん
2007/05/09(水) 01:29:15要素数が欲しければtemplate使って配列の参照を引数にするだけでいいだろ。
まぁ俺ならそれ以前にstd::inner_product使うけど。
0071デフォルトの名無しさん
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;
}
0072デフォルトの名無しさん
2007/05/09(水) 02:48:49double 使え、double 。
0073デフォルトの名無しさん
2007/05/09(水) 07:18:26訳の分からん自作マクロ使って可読性落とすぐらいなら
上で書かれてるように、Vector型とstd::inner_product()使えばいいだろ
なんのための標準ライブラリだと思ってるんだ
0074デフォルトの名無しさん
2007/05/09(水) 08:02:10正直、Ruby→C はキツいだろ
0075デフォルトの名無しさん
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;
}
0076デフォルトの名無しさん
2007/05/09(水) 08:17:36Classがあるなら使いますよ。
でもね、C言語じゃないといけないんです。linuxのデフォだからね。
Cを勉強するのは計算が早いからとrubyのライブラリが作りたいから。
あとlinuxプログラミングがしたいから。
0077デフォルトの名無しさん
2007/05/09(水) 08:19:29それならC++でもいいでしょうが。
0078デフォルトの名無しさん
2007/05/09(水) 08:47:03C++はもう終わった言語。手続き型にクラスをくっつけただけの言語でしょ。
純粋なrubyこそソフト開発に向いてるが、やはり速度がネック
0079デフォルトの名無しさん
2007/05/09(水) 09:03:560080デフォルトの名無しさん
2007/05/09(水) 10:04:47こんな奴rubyもたいしてできんだろ
0081デフォルトの名無しさん
2007/05/09(水) 11:35:390082デフォルトの名無しさん
2007/05/09(水) 13:37:48あとC言語って自由に配列数を増やしたり減らしたり出来ない?
出来たらうれしい
0083デフォルトの名無しさん
2007/05/09(水) 13:45:540084デフォルトの名無しさん
2007/05/09(水) 13:59:39sizeofは、コンパイル時にコンパイラが計算する。
配列要素数の増減はできないので、realloc()したりC++のvectorを使っ
たり。
0085デフォルトの名無しさん
2007/05/09(水) 14:11:39それなら手間が増えるだけで増減可能ですね。
sizeofはライブラリではないんですか?
sizeofはどうやって書かれているかを聞いています。
0086デフォルトの名無しさん
2007/05/09(水) 14:13:08なぜならC++はC言語の拡張とはいえないからです。
オブジェクト指向としてはrubyがもっとも純粋であることは確かですし
Cとの互換性が消えたので、linuxで使えません
0087デフォルトの名無しさん
2007/05/09(水) 14:28:35Cとの互換性が不完全でもLinuxでC++は使えるが?
0088デフォルトの名無しさん
2007/05/09(水) 14:32:47sizeof はコンパイラが解釈する演算子の内のひとつです。関数ではありません。
0089デフォルトの名無しさん
2007/05/09(水) 14:33:51C++では書かれていない。これは互換性が消えたことによるものである。
linuxといえばC言語
C++は窓用言語
rubyはクロスプラットフォームの純粋オブジェクト指向型言語
0090デフォルトの名無しさん
2007/05/09(水) 14:45:570091デフォルトの名無しさん
2007/05/09(水) 14:49:08reallocはただの動的確保で配列関係ないから
配列の要素数増減は不可でFA
0092デフォルトの名無しさん
2007/05/09(水) 14:52:210093デフォルトの名無しさん
2007/05/09(水) 15:44:370094デフォルトの名無しさん
2007/05/09(水) 16:05:070095デフォルトの名無しさん
2007/05/09(水) 16:06:07うちの会社に来ないことを祈る。
0096デフォルトの名無しさん
2007/05/09(水) 18:09:22メモリ確保した所を配列として扱うなら可能だと思うが。
0097デフォルトの名無しさん
2007/05/09(水) 18:52:22アセンブリ言語の洗礼を受けてくるといい。
0098デフォルトの名無しさん
2007/05/09(水) 18:59:53すいません。8080, Z80, 6502, 6800, 68000 ぐらいまでしかやってません。
この頃の x86 系についてはよく分かりません。
0099デフォルトの名無しさん
2007/05/09(水) 19:00:420100デフォルトの名無しさん
2007/05/09(水) 19:26:05linuxの為にCを勉強しています。当然です。ちなみにVine
0101デフォルトの名無しさん
2007/05/09(水) 19:27:040102デフォルトの名無しさん
2007/05/09(水) 19:29:37なぜなら、言語の奥深さを知ってる者は、おいそれとそんな事は言えないからだ。
ほんの一握りのエキスパートか、Ruby 処理系の開発者か、
そうでなければ見栄っ張りの小物にしかそんな事は言えん。
0103デフォルトの名無しさん
2007/05/09(水) 19:48:15ただの騙りの可能性も否定できないし
もしすべて本人だったらかなり・・・
0104デフォルトの名無しさん
2007/05/09(水) 20:05:58Linuxのメジャーなディストリビュージョンなら、
g++がない(gccや下手したらccだけしかない)なんて状況を仮定する必要なんてないはず。
また、完全な互換性がない今のC++でも、それなりにCらしいコードも書けるし。
このスレで出てくるようなコードなら、ほとんどvoid*周りしか問題にならないと思う。
0105デフォルトの名無しさん
2007/05/09(水) 20:30:07それから、malloc()などで確保した領域を配列のように運用することはできてもそれは配列じゃないぞ。
#まぁ、可変長配列も伸び縮みできるわけじゃないがな。
0106デフォルトの名無しさん
2007/05/09(水) 20:32:410107デフォルトの名無しさん
2007/05/09(水) 20:33:530108デフォルトの名無しさん
2007/05/09(水) 20:38:23身近なところではgcc, icc, SunのccがC99準拠なんだが。
後二者はデフォルトだし。
0109デフォルトの名無しさん
2007/05/09(水) 20:39:020110デフォルトの名無しさん
2007/05/09(水) 20:40:000111デフォルトの名無しさん
2007/05/09(水) 20:40:080112デフォルトの名無しさん
2007/05/09(水) 20:42:20どうやるんですか?可変長配列
0113デフォルトの名無しさん
2007/05/09(水) 20:42:490114デフォルトの名無しさん
2007/05/09(水) 20:43:570115デフォルトの名無しさん
2007/05/09(水) 20:43:59ttp://seclan.dll.jp/c99d/c99d04.htm#dt19990719
つーか、なんで「C99」ってキーワードまで書かれてるのに
自分で調べようとしないんだろうな
0116デフォルトの名無しさん
2007/05/09(水) 20:46:110117デフォルトの名無しさん
2007/05/09(水) 21:24:47int 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;
}
どうしてだお?
0118デフォルトの名無しさん
2007/05/09(水) 21:27:47printf("%d\n", a[3]); // Access Violation
0119デフォルトの名無しさん
2007/05/09(水) 21:28:22gccだけど
0120デフォルトの名無しさん
2007/05/09(水) 21:29:30a[3] = 4;
0121デフォルトの名無しさん
2007/05/09(水) 21:30:05a[3] is 4
こうなったお
0122デフォルトの名無しさん
2007/05/09(水) 21:30:16a[1] = 2;
a[2] = 3]
a[3] = ?
0123デフォルトの名無しさん
2007/05/09(水) 21:30:190124デフォルトの名無しさん
2007/05/09(水) 21:31:270125デフォルトの名無しさん
2007/05/09(水) 21:37:050126デフォルトの名無しさん
2007/05/10(木) 00:32:210127デフォルトの名無しさん
2007/05/10(木) 00:37:21assertとかそういう次元の問題じゃないだろ
あれは何かの拍子で変な値がインデックス用の変数に入り込んだりするのを発見するため
012831
2007/05/10(木) 02:07:35それはわかるんだけど、それから先が全くわからなくて・・・
というかまず何を書けばいいのかもわからない・・・ド素人でスマン。
助けて・・・
0129デフォルトの名無しさん
2007/05/10(木) 02:09:410130デフォルトの名無しさん
2007/05/10(木) 02:23:34とりあえずGET,POSTとだけ言ってこ
0131デフォルトの名無しさん
2007/05/10(木) 09:18:450132デフォルトの名無しさん
2007/05/10(木) 14:51:22もしや a[3] = 4; の所で何かエラーが出て欲しかったのか?
ま、しかし、C言語は元々そんな生易しい言語ではないのだよ。
0133デフォルトの名無しさん
2007/05/10(木) 15:03:16しかしなんでコンパイラ通っちゃうのかよくわからん
0134デフォルトの名無しさん
2007/05/10(木) 15:04:130135デフォルトの名無しさん
2007/05/10(木) 15:06:300136デフォルトの名無しさん
2007/05/10(木) 15:13:46JavaとかC#とかしかやったことが無い人?
0137デフォルトの名無しさん
2007/05/10(木) 15:19:34エラー出すようにするとコンパイラ作るのが面倒だろ
0138デフォルトの名無しさん
2007/05/10(木) 15:24:15先頭要素のポインタさえありゃ動くからあとはシラネってことか
0139デフォルトの名無しさん
2007/05/10(木) 15:59:430140デフォルトの名無しさん
2007/05/10(木) 15:59:53わからないんじゃ?
0141デフォルトの名無しさん
2007/05/10(木) 16:01:47構造体の最後の要素を [1] にして、使いたい配列の大きさ分大きめにallocして使う
いつからか 1 無くてもコンパイル通るようになってたっけな
0142デフォルトの名無しさん
2007/05/10(木) 16:18:20C#はLengthプロパティ使ってループ回す場合はチェックはオフになったり
monoのC#コンパイラには配列境界チェックをしないようにするオプションがあったりするけど
Cは常にチェック無し。
まぁチェックがある分安全で遅いか、無い分危険で速いかだな。Cは後者。
0143デフォルトの名無しさん
2007/05/10(木) 16:48:32/*
もし小文字なら大文字を、大文字なら小文字を出力し
エラーの後に再入力可否選択を要求する
*/
#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 = 大文字であるかを判定
text = tolower (text); // tolower = 小文字変換
printf ("入力されたアルファベットの小文字は %c です。"
,text);
} else {
// エラー処理
printf ("エラー\n"
"アルファベット以外の値が入力されました。"
"\n"
"継続して入力しますか?\n"
"Y/N");
text = getchar ();
0145デフォルトの名無しさん
2007/05/10(木) 16:50:09/*
switchが何故か機能しない
書式ミス?
*/
case 'Y': goto first;
break;
case 'N': goto end;
break;
}
}
end:
return 0;
}
>>144の名前は気にしないでください。。
0146デフォルトの名無しさん
2007/05/10(木) 16:59:120147デフォルトの名無しさん
2007/05/10(木) 17:00:400148デフォルトの名無しさん
2007/05/10(木) 17:00:50入力した2文字目を取ってきてるからこうなる。
具体的には改行だな。それ以外でも2つ以上入れてりゃ同じだ
0149デフォルトの名無しさん
2007/05/10(木) 17:51:56swtich文に入って行かない。きっと1の後ろに"\0"とかあって
うまくゆかないのだろう。
text = getchar (); // ここで "\0" を喰わせる
text = getchar (); // きっと入力待ち状態になるはず
とか思ってしまったトーシローなのは俺だけでいいと思うんだ…orz
0150デフォルトの名無しさん
2007/05/10(木) 18:18:000151デフォルトの名無しさん
2007/05/10(木) 18:25:13つまりどういうことですか?
0152デフォルトの名無しさん
2007/05/10(木) 18:36:47つまり、余分な入力バッファはクリアする必要がある。
getchar() なら、'\n' が来るまで読み捨てるとか。
while (getchar() != '\n')
;
例えばこんな感じで。 fflush(stdin); は物議をかもしそうなのでお試しでw
あとは、switch - case にdefault: は必要だと思うぞ、特に今回のは。
0153デフォルトの名無しさん
2007/05/10(木) 19:35:06scanf(" %c", ...) を使う。
0154デフォルトの名無しさん
2007/05/10(木) 19:38:20goto 使って見辛くしてどうする。
お前は昔の BASIC かと言いたい。
0155デフォルトの名無しさん
2007/05/10(木) 19:48:390156デフォルトの名無しさん
2007/05/10(木) 19:55:41あとそれ以前に慣れないうちはdefault付けるクセをつけといたほうがいいと思う
0157デフォルトの名無しさん
2007/05/10(木) 21:41:52四則計算の 23 / 3 =7 アマリ 1
という風にアマリを出すにはどのようにすればいいのでしょうか?
0158デフォルトの名無しさん
2007/05/10(木) 21:42:090159デフォルトの名無しさん
2007/05/10(木) 21:42:370160デフォルトの名無しさん
2007/05/10(木) 21:42:460161デフォルトの名無しさん
2007/05/10(木) 21:43:440162デフォルトの名無しさん
2007/05/10(木) 21:46:32int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
c= a % b ;
printf("%d % %d =%d\n",a,b,c);
return 0;
でいいのでしょうか?
0163デフォルトの名無しさん
2007/05/10(木) 21:47:580164デフォルトの名無しさん
2007/05/10(木) 21:48:10printf("%d %% %d =%d\n",a,b,c);
0165デフォルトの名無しさん
2007/05/10(木) 21:51:080166デフォルトの名無しさん
2007/05/10(木) 21:51:31bが0の場合どうするんだ?
0167デフォルトの名無しさん
2007/05/10(木) 21:53:190168デフォルトの名無しさん
2007/05/10(木) 21:58:040169デフォルトの名無しさん
2007/05/10(木) 22:05:35が LinuxとSolarisで動作が違うのでgcc -Eで確認したらSolatisではisalpha(c)が
((__ctype+1)[c] & (0x01 | 0x02)) に展開されててLinuxではライブラリ関数呼んでました。
動作が違ったのは*sが負数になってたせいのようでした。(なぜ負のインデックスで__ctype配列
参照してcore吐かなかったか不思議ですが...)*sに入る整数値がなんでもありと
すると、ここは普通どう書きますか?
if (isascii(*s) && isalpha(*s)){...}
とかすればOK?
0170デフォルトの名無しさん
2007/05/10(木) 22:11:18%% って \n とかのエスケープシーケンスと同じものと考えておkですか?
0171デフォルトの名無しさん
2007/05/10(木) 22:12:19エスケープシーケンスで例えるなら \\ やね。
0172デフォルトの名無しさん
2007/05/10(木) 22:13:43is系関数に渡すときは unsigned char でキャストするのは定石。
もう多すぎて面倒なら、char を符号無しにするコンパイラのフラグを指定汁。
0173デフォルトの名無しさん
2007/05/10(木) 22:29:09FILE *fp
fp = popen("gnuplot", "w");
fprintf(fp, "plot sin(x) w lines \n");
pclose(fp);
としてgnuplotを呼び出すプログラムを作りました。
今の状態では、gnuplotが立ち上がってsin(x)の関数が一瞬だけ表示され、
gnuplotが直ちに終了してしまいます。
どこにどのような処理をすれば、gnuplotを表示させたままに出来るのでしょうか?
Enterキーなどを押すことで終了するようにしたいです。
よろしくおねがいします。
0174デフォルトの名無しさん
2007/05/10(木) 22:32:14それだけだとSJIS の時は、
全角文字の2バイト目で真になる可能性があるな。
リードバイトの判定とかした方がいい。
>>169 は EUC みたいだから大丈夫だとは思うが。
0175デフォルトの名無しさん
2007/05/10(木) 22:48:20system("gnuplot < data.txt");
とかじゃだめかな?
data.txtはあらかじめ作っておく。
0176デフォルトの名無しさん
2007/05/10(木) 22:49:27ありがとうございます。m(_;_)m
>is系関数に渡すときは unsigned char でキャストするのは定石。
助かります。
0177デフォルトの名無しさん
2007/05/10(木) 23:27:12とりあえず表示を残すだけなら "gnuplot -persist" とすれば良いけど、
グラフを表示しているプロセス(gnuplot_x11)のIDを
外部プログラムを使わずに見付けて殺す方法が分からん。
0178デフォルトの名無しさん
2007/05/10(木) 23:50:48真面目にプロセス管理したいならfork()/exec*()を使う羽目になるけど。
0179デフォルトの名無しさん
2007/05/11(金) 06:20:36strlenなどの文字列を扱う関数は引数としてchar型の文字列への先頭ポインタをとります。
つまり、strlen(s)とすると配列sの先頭アドレスが渡され、結果が返ります。
しかし、strlen("test")とした際も結果は出力されます。
この"test"という文字列はどのようにプログラム内部で扱われるのでしょうか?
自動的に一時的にメモリに確保されるのでしょうか?
では宜しくお願いします。
0180デフォルトの名無しさん
2007/05/11(金) 07:31:33exeファイルの中に入ってるでしょ
実行時にどう配置されるかはシステムによる
プログラム上ではポインタとして扱われる
0181デフォルトの名無しさん
2007/05/11(金) 07:44:13ほぼ、static const char foo[] = {'t', 'e', 's', 't', '\0', }; strlen(foo);と同じ。
0182デフォルトの名無しさん
2007/05/11(金) 15:35:080183183
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);
}
}
0184183
2007/05/11(金) 20:30:00HANDLE 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を他の優先度のスレッドにのみ譲る。
ということでしたよね?
0185デフォルトの名無しさん
2007/05/11(金) 20:30:46Win32では 「0を指定した場合、 スレッドは、 実行準備ができている同じ優先順位のほかのスレッドにタイム スライスの残りを譲ります。」
0186デフォルトの名無しさん
2007/05/11(金) 20:39:550188デフォルトの名無しさん
2007/05/12(土) 00:12:06上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。
0189デフォルトの名無しさん
2007/05/12(土) 00:14:460190デフォルトの名無しさん
2007/05/12(土) 00:15:28マルチうざい
0191デフォルトの名無しさん
2007/05/12(土) 00:25:14すみません
0192デフォルトの名無しさん
2007/05/12(土) 00:33:48ごめんなさい、でも教えてください蟹
Viiv
ミ(エ)ミ....
0193デフォルトの名無しさん
2007/05/12(土) 00:35:48助けてください。動作するサンプル提示してくれませんか?
0194デフォルトの名無しさん
2007/05/12(土) 00:37:140195デフォルトの名無しさん
2007/05/12(土) 00:37:380196蟹NIC
2007/05/12(土) 00:37:47上のprintf文の%pでどのように"Hello World"を処理しているのか分かりません。
どなたか教えてください。
Viiv
ミ(エ)ミ....
0197デフォルトの名無しさん
2007/05/12(土) 00:49:14可変長引数でも調べて推測してください。
様は第一引数の中を読んでいって、%フラグに当たったら対応する引数をフラグに従って変換した上で元の文字列に挿入してるんだと思う。
0198デフォルトの名無しさん
2007/05/12(土) 00:56:330199デフォルトの名無しさん
2007/05/12(土) 01:55:15ご教授ありがとうございます。
0200デフォルトの名無しさん
2007/05/12(土) 02:30:450201デフォルトの名無しさん
2007/05/12(土) 02:37:180202デフォルトの名無しさん
2007/05/12(土) 02:45:10------------------------------------------------------------
60 名前: デフォルトの名無しさん 投稿日: 2007/05/12(土) 00:10:17
printf("%s/n","Hello World");
上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。
------------------------------------------------------------
この質問って流行ってるのか?
0203デフォルトの名無しさん
2007/05/12(土) 02:49:120204蟹NIC
2007/05/12(土) 03:16:31Viiv
ミ(エ)ミ....
0205デフォルトの名無しさん
2007/05/12(土) 06:53:20配列は番兵を使うために便宜的に要素+1の部分にアクセスできるんだぜ?
0206デフォルトの名無しさん
2007/05/12(土) 07:27:03ねーよ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)。
0207デフォルトの名無しさん
2007/05/12(土) 07:33:500208デフォルトの名無しさん
2007/05/12(土) 07:43:23をどう好意的に解釈しても、ポインタを向けるだけ、にはならん罠。
0209デフォルトの名無しさん
2007/05/12(土) 07:45:460210デフォルトの名無しさん
2007/05/12(土) 08:50:05>配列は番兵を使うために便宜的に要素+1の部分にアクセスできるんだぜ?
マジレスするとそれは文字列のときだけな。
char a[] = {1, 2, 3}; // sizeof a == 3
char b[] = "123"; // sizeof b == 4
0211デフォルトの名無しさん
2007/05/12(土) 08:50:210212デフォルトの名無しさん
2007/05/12(土) 08:51:170213デフォルトの名無しさん
2007/05/12(土) 08:52:220214デフォルトの名無しさん
2007/05/12(土) 09:00:47文字配列には後ろに'\0'が付くみたいな覚え方をしてたから
なんかcharの配列だけは特別な代物のように思ってた過去
0215デフォルトの名無しさん
2007/05/12(土) 09:01:56文字列としか。
0216デフォルトの名無しさん
2007/05/12(土) 11:26:200217デフォルトの名無しさん
2007/05/12(土) 11:35:240218デフォルトの名無しさん
2007/05/12(土) 11:36:380219デフォルトの名無しさん
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の仕様に問題があるのでしょうがこれの理由と回避方法をご教示願いたいです。
0220デフォルトの名無しさん
2007/05/12(土) 13:17:40・文字と文字列の違いを理解しよう。
・scanf()の仕様に気をつけよう。
0221デフォルトの名無しさん
2007/05/12(土) 13:20:110222デフォルトの名無しさん
2007/05/12(土) 13:22:430223デフォルトの名無しさん
2007/05/12(土) 13:25:01関数を自分でつくるということですかね?
0224デフォルトの名無しさん
2007/05/12(土) 13:25:16scanf("%c",&e);
↓
scanf("%*[ \t\n]");
scanf("%c",&e);
変数b を読み込んだ後、改行文字がバッファに残っている
バッファに残った改行文字を次の scanf("%c",&e); で読み込んだため
変数e には改行文字が入ってしまった
この問題を回避するには、バッファに残っている改行文字を読み飛ばせば良い
0225デフォルトの名無しさん
2007/05/12(土) 13:27:18エラーチェックしなさすぎ。
0226デフォルトの名無しさん
2007/05/12(土) 13:38:59つ[div()]
0227デフォルトの名無しさん
2007/05/12(土) 13:54:310228デフォルトの名無しさん
2007/05/12(土) 14:22:00数学を一度勉強した方がいいですね。
具体的には線形空間というやつですよ・・・
0229デフォルトの名無しさん
2007/05/12(土) 14:27:060230デフォルトの名無しさん
2007/05/12(土) 14:27:32演算子を使わずにできる?
もちろんシフト演算も無しで
>>221
関数以外だとインラインアセンブラ使えば
演算子を使ったとは言われないとか?
0231デフォルトの名無しさん
2007/05/12(土) 14:28:43何を寝惚けたことを?
0232デフォルトの名無しさん
2007/05/12(土) 14:44:240233デフォルトの名無しさん
2007/05/12(土) 14:51:20int add(int a, int b)
{
FILE * fp = fopen("/dev/null", "w");
int rtn = fprintf("%*s%*s", a, "", b, "");
fclose(fp);
return rtn;
}
0234デフォルトの名無しさん
2007/05/12(土) 14:52:56負数対応キボン
0235デフォルトの名無しさん
2007/05/12(土) 14:57:17代入演算子を使っているw
>>234
わはは、そりゃ確かに>233じゃ無理だ。
0236デフォルトの名無しさん
2007/05/12(土) 14:58:03}
0237デフォルトの名無しさん
2007/05/12(土) 14:58:57int add(int a, int b) {
__asm {
mov eax, a
add eax, b
}
}
0238デフォルトの名無しさん
2007/05/12(土) 15:02:000239デフォルトの名無しさん
2007/05/12(土) 15:02:17if文だりなんだり使って全部作ればいいんじゃね
足し算なら1+1 = 2
だからa,bが両方とも1なら2を出力するというように
それらをすべて0〜9のを自分でつくる
あと桁上げの関数ももちろん自分で作って
0240デフォルトの名無しさん
2007/05/12(土) 15:03:270241デフォルトの名無しさん
2007/05/12(土) 15:04:40ただ、コード量が多すぎて int 全部を網羅できないな。
char 程度ならともかく。
0242デフォルトの名無しさん
2007/05/12(土) 15:05:010243デフォルトの名無しさん
2007/05/12(土) 15:05:060244デフォルトの名無しさん
2007/05/12(土) 15:07:01まじ小学校からやり直せよ
0245デフォルトの名無しさん
2007/05/12(土) 15:08:19そこにある=は初期化子であって演算子ではない。
0246デフォルトの名無しさん
2007/05/12(土) 15:12:47プログラミング言語において「演算子」が何を指すかを勉強し直してきてください。
0247デフォルトの名無しさん
2007/05/12(土) 15:13:17桁上げの関数作ればできるだろ
switchだって演算子を裏に隠しているだけに過ぎないし
ちなみに足し算とかってそもそも写像なんだから
なんでそんなことやりたいのかよくわからん
数学じゃなくてC言語で言う「演算子」は人間が勝手に付けた分類だから
それにこだわっても意味が無い
>>228のいうように少し数学を学んだほうがいい
0248デフォルトの名無しさん
2007/05/12(土) 15:13:39しかし残念 >>238
0249デフォルトの名無しさん
2007/05/12(土) 15:15:31何で数学の演算子にこだわるのか理解できないのだが。
ここは C 言語スレだぞ?
0250デフォルトの名無しさん
2007/05/12(土) 15:18:44後出しで、四則演算子のことでした、とか言いそうだが
0251デフォルトの名無しさん
2007/05/12(土) 15:19:360252デフォルトの名無しさん
2007/05/12(土) 15:20:53>演算子を使わないで割り算や掛け算ってどうやるんですか?たとえば9÷3
割り算や掛け算って言ってるけど
0253デフォルトの名無しさん
2007/05/12(土) 15:22:43C言語だと同じことできるけどこれは演算子と呼ぶ
これはそう呼ばないだけの違いになってしまうから
C言語での「演算子」の意味にこだわって
わざわざ考えるほどの価値がある物と思えない
もし>>222がC言語において何を演算子と呼ぶのかをどうやって決めたか
知りたいとかなら別だけど
結局のところC言語での演算子と数学での演算子の区別すらつかずに
質問しちゃったってオチの気がするw
0254デフォルトの名無しさん
2007/05/12(土) 15:24:37演算子を使わずに何かをするなんて無理だろ
0255デフォルトの名無しさん
2007/05/12(土) 15:27:00インラインアセンブラ使えばおk。
0256デフォルトの名無しさん
2007/05/12(土) 15:30:17勝手に0x01とのビットANDもしくはそれより速いコードに変えてくれるんでしょうか?
0257デフォルトの名無しさん
2007/05/12(土) 15:32:47てことはC言語の演算子は数学の演算子の定義に沿って定義されている
ということだな べんきょうになったw
0258デフォルトの名無しさん
2007/05/12(土) 15:33:27Yes.
0259デフォルトの名無しさん
2007/05/12(土) 15:36:310260デフォルトの名無しさん
2007/05/12(土) 16:02:59と、printfまでキャストをする必要はあるのでしょうか?
0261デフォルトの名無しさん
2007/05/12(土) 16:04:21無い。そもそもintをvoidにキャストしてどうするんだ?
0262デフォルトの名無しさん
2007/05/12(土) 16:04:27ない。
ただし、戻り値を取得し忘れてるわけじゃなく明示的に捨ててるんだという意思表示として
(void)にする流儀はあるにはある。
好み、コーディングスタイルレベルの話。
0263デフォルトの名無しさん
2007/05/12(土) 16:05:26戻り値を使わないことを明示する効果がある。
lintのようなチェッカを黙らせる効果もあるな。
0264デフォルトの名無しさん
2007/05/12(土) 16:06:37それの評価を厳密に行なう運用の場合にもそうする必要があるね。
0265デフォルトの名無しさん
2007/05/12(土) 16:10:14lint対策か。それなら納得
0266デフォルトの名無しさん
2007/05/12(土) 16:57:40たとえばFreescaleのCodeWarriorは(void)をつけないとwarningを出すのがデフォルト動作。
0267デフォルトの名無しさん
2007/05/12(土) 18:42:50int a=1;
kansu(a);
}
までやっておいて
�@int kansu(int a){
printf("%d",a*2);
}
�Aint kansu(int *a){
printf("%d",a*2);
}
�@だと正常に動いたのですが、
�Aだと「*」がダメだ〜 とコンパイラに怒られるのですが、
この違いとは何なんでしょうか?
0268デフォルトの名無しさん
2007/05/12(土) 18:45:51(2)の*は、意味も分からないで適当につけたの?
0269デフォルトの名無しさん
2007/05/12(土) 18:47:47printf("%d",a*2);
}
↓
printf("%d",*a*2);
↑
これじゃね?
0270デフォルトの名無しさん
2007/05/12(土) 18:50:45どうしてでしょうか?改行があっても最後までいきたいんですが
0271デフォルトの名無しさん
2007/05/12(土) 18:52:22getsは改行文字までしか読み取らない
manにも書かれてる基本仕様
ついでにgetsを使うのは推奨されない
0272デフォルトの名無しさん
2007/05/12(土) 18:53:05じゃあ代理のものとして、何を使ったらいいですかね
0273デフォルトの名無しさん
2007/05/12(土) 18:54:58気のせいかもしれませんが、
関数を定義してるプログラムを見ると多くが *a となっていたので、
違いを知りたいなと思って作ったプログラムなので、
かなり不備はあるかもしれません・・・。
>>269
�Aの場合だと必ずメモリ関連でセグメントエラーか、警告が出続けてしまうんです。
試したところ、、、セグメントエラーが出ました。
0274デフォルトの名無しさん
2007/05/12(土) 18:56:55fgets(・・・, stdin)
0275デフォルトの名無しさん
2007/05/12(土) 18:58:02stdinっていうのはなんでしょうか
0276デフォルトの名無しさん
2007/05/12(土) 18:59:01>gets() を使うのは極めて危険である。(中略)代わりに fgets() を使うこと。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/gets.3.html
これぐらい自分で調べろ
0277デフォルトの名無しさん
2007/05/12(土) 18:59:34コールするほうも
kansu(&a);
と変えないとだめだよ。
こういうところで試行錯誤してるなら、入門書を一冊買ったほうがだいぶ時間の節約になると思うけど。
0278デフォルトの名無しさん
2007/05/12(土) 19:00:09とりあえずググれや。
0279デフォルトの名無しさん
2007/05/12(土) 19:00:11int kansu(int *a) にするなら
int main(void){
int a=1;
kansu(&a); < &をつけなきゃ
}
0280デフォルトの名無しさん
2007/05/12(土) 19:01:56危険なんですね。
fgetsにしたら
呼び出し時のパラメータが足りない:fgets(関数 main )
ってなってコンパイルできないんですが・・・・
0281デフォルトの名無しさん
2007/05/12(土) 19:02:58ttp://www.bohyoh.com/CandCPP/C/Library/fgets.html
ちゃんと必要な引数を与えている?
0282デフォルトの名無しさん
2007/05/12(土) 19:04:35すごい納得できました。ありがとうございました。
入門書は・・・買ったんですが、、、馬鹿なので理解できない^^;
0283デフォルトの名無しさん
2007/05/12(土) 19:06:16なんかよくわからないんですが、
char型の配列に文章をいれたいんです・・・・
char bunsyo[256]
みたいなやつにです
0284デフォルトの名無しさん
2007/05/12(土) 19:07:28fgets(bunsyo, 255, stdin)
0285デフォルトの名無しさん
2007/05/12(土) 19:08:16gets()をfgets()に変更するくらいの手続きを自分で考えられない(≒検索できない)なら、
プログラマに向かないからとっとと諦めた方がいいよ。
0286デフォルトの名無しさん
2007/05/12(土) 19:09:04ダウト。慣用句的にそれを使っているのなら、
一度マニュアルページをよく読んで自分の過ちに気付いておいた方がいい。
0287デフォルトの名無しさん
2007/05/12(土) 19:09:56コンパイルはとおるんですが、改行のところで読み込みがおわってしまうんですが・・・・
0288デフォルトの名無しさん
2007/05/12(土) 19:10:09第二引数Nはバッファサイズだろ
読み込まれる文字数最大値はN-1
0289デフォルトの名無しさん
2007/05/12(土) 19:10:27ダウト。説明なしにそういうことを言うのはお前の知ったかに過ぎない
0290デフォルトの名無しさん
2007/05/12(土) 19:11:12fgets()も、改行までしか読まない。
だから、マニュアルページを読むなり情報を検索できないなら無駄だから諦めろって。
0291デフォルトの名無しさん
2007/05/12(土) 19:11:56gdgdいってねーで正解を書いたら?知ったかへぼプログラマーwwww
N-1そうだよ?何か?まさか、254 にしろとかボケないだろうね?
0292デフォルトの名無しさん
2007/05/12(土) 19:12:48読み込むテキストに工夫がいりますかね?
0293デフォルトの名無しさん
2007/05/12(土) 19:13:06ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
0294本日の知ったか馬鹿第一号
2007/05/12(土) 19:13:27>>284
第二引数Nはバッファサイズだろ
読み込まれる文字数最大値はN-1
0295デフォルトの名無しさん
2007/05/12(土) 19:13:42でも、モチベーションが・・・・・
なにか練習問題でものってるサイトないか?
0296デフォルトの名無しさん
2007/05/12(土) 19:14:33テキストファイルを丸ごと読み込むには、
・fgetc()で一文字ずつ
・fgets()で一行単位で
・fread()でブロック単位(或いは一気に)
読む必要がある。
0297デフォルトの名無しさん
2007/05/12(土) 19:14:34だから>>283の宣言なら、普通にfgets(bunsyo, 256, stdin);でいいだろ
なんでバッファのラスト1バイトを無駄にしてんだよ
>>292
ループ回して一行ずつ読み込む
0298デフォルトの名無しさん
2007/05/12(土) 19:14:44宿題スレで、ファイル全部読み込むコード書いてくださいって言ったほうがいいんじゃね?
0299デフォルトの名無しさん
2007/05/12(土) 19:14:47まだ勉強中の知らない奴を見つけて、自分が知っていることをひそかに自慢しながら
他人をたたく基地外だろ。ここでレスしているほかの奴にとっては迷惑千万、失せろクズプログラマー
0300デフォルトの名無しさん
2007/05/12(土) 19:15:52>そこまで分かってて正解が判らないような屑が
自分が指摘したのに答えられない(勘違い)クズこそ来るなよw
お前はまったく指摘をしていない。ただたんに 自分が思った ことと違っていただけ。
それもお前が間違えているという勘違い(プ
不適切なら正しい使い方を明示しろ、たぶんお前じゃできない。あれは間違っていないからw
0301デフォルトの名無しさん
2007/05/12(土) 19:15:56fread()でもいいけどな。
0302デフォルトの名無しさん
2007/05/12(土) 19:16:070303デフォルトの名無しさん
2007/05/12(土) 19:16:58うーん。めんどくさそうですね。テキストファイルの改行をなくしちゃいます
0304デフォルトの名無しさん
2007/05/12(土) 19:17:35あのね、坊やみたいなお子ちゃまはこんなところに来ちゃダメよ。
既に正解レスがついているんだからもっと落ち着きましょうね。
0305デフォルトの名無しさん
2007/05/12(土) 19:18:100306デフォルトの名無しさん
2007/05/12(土) 19:18:18自分で考えよう、調べようって姿勢が見えたら、頭わるそうなヤツでもけっこう親切に教えてもらえるよ。
ただ「わからない、を即答せよ」ってだけじゃ教えてもらえない。
0307デフォルトの名無しさん
2007/05/12(土) 19:19:32揚げ足取りにもならなかったな、所詮お前はわかっていない(っと自分が思った)奴をたたくだけか
二度とくるな、お前みたいなクズこそこのスレにはいらない。このスレのタイトル読めますか?
あっ、日本語も日本の社会もろくに知らない在日かw
0308デフォルトの名無しさん
2007/05/12(土) 19:20:15仮にもプログラムを組もうというときに、きちんと調べる手間を惜しんじゃ遺憾な。
0309デフォルトの名無しさん
2007/05/12(土) 19:20:180310デフォルトの名無しさん
2007/05/12(土) 19:20:38あのね、小学生未満の精神年齢のお子ちゃまはこんなところに来ちゃダメよ。
勘違いの指摘レスがついているんだからもっと落ち着きましょうね♪
んで、何が間違いか、指摘できた?正解がとかじゃなくてw
0311デフォルトの名無しさん
2007/05/12(土) 19:21:380312デフォルトの名無しさん
2007/05/12(土) 19:22:26プレッシャーをかける基地外ってプログラマーに向いてねーよなwwwwww
0313デフォルトの名無しさん
2007/05/12(土) 19:22:47半島人がでてきたぞ。
0314デフォルトの名無しさん
2007/05/12(土) 19:23:23だったらその本は自分に向いていなかったと諦めて、
ちょっと立ち読みして、ほかに良さそうな本を探して買えばいい。
0315デフォルトの名無しさん
2007/05/12(土) 19:23:36それより早く>>295に答えてください。
0316デフォルトの名無しさん
2007/05/12(土) 19:24:33っつーか、揚げ足取り必死だなw
そんなんじゃ本当にプログラマーに向いてねーよ、その程度のことでガミガミ
相手を罵倒するようじゃ、そんな奴こそこんなスレに来ないほうが良いだろ。
気分が悪くなるものを敢えてみてゲロを吐いているマゾかい?w
グロ動画でも貼ってやろうか?w
0317デフォルトの名無しさん
2007/05/12(土) 19:24:59>>315
宿題スレに未解決の宿題が幾つかあるんじゃない?
下手なサイト見るより勉強になりそうですよ。
0318デフォルトの名無しさん
2007/05/12(土) 19:29:250319デフォルトの名無しさん
2007/05/12(土) 19:30:13ほらな、そういうことで相手をチクチクつついて周りの気分も害しているだろ?
だからお前みたいなつまらねークズはプログラマーに向いてないから
頼むから大掛かりなプロジェクトには絶対に介入するなよ。
っつーか協調性がなくて無理だろうね、お前みたいなちっぽけなクズはw
ちなみに、あの程度の間違いならさらっと 256 って書けば済んだ話だろ。
お前わかってねー!間違えたへへーん馬鹿!とか罵倒する方が頭がイカレてんだろ。
そういう奴に限って、自分の間違いを指摘されると、認めないどころか
お前がおかしい!って言い始めるから困るぜ ヤレヤレ
以後、さっきからきんもぉ〜★な指摘するだけで答えを出さない基地外は放置よろ
たぶん引きこもりニートだろ
0320デフォルトの名無しさん
2007/05/12(土) 19:30:36>296
>301
0321こいつさいこーに協調性のない引きこもりwww
2007/05/12(土) 19:32:14おお、新展開。今度の攻撃は「単なる入力ミス」です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
0322284
2007/05/12(土) 19:34:1456としたつもりが同じキーを2回押して書き込みしちゃっただけでぇ〜〜〜す ♣
あぁ〜〜いとぅいまてぇ〜〜ん、文字配列のサイズを指定するように、ここでレスする以外の
自分が書くソースでは sizeof 使ってまぁ〜〜〜つ ♥
0323デフォルトの名無しさん
2007/05/12(土) 19:36:19size_t size=sizeof(s)/sizeof(s[0];
sizeof(s,size,stdin);
こんな感じでぇ〜〜どぉ〜〜〜でちゅかぁ〜〜?♦
0324デフォルトの名無しさん
2007/05/12(土) 19:37:15あぁ〜〜〜いとぅいまちぇぇ〜〜〜〜ん ♪
0325デフォルトの名無しさん
2007/05/12(土) 19:39:29buf[BUFFER_SIZE];
fgets(buf, BUFFR_SIZE, stdin);
とかするためにこんな仕様になってるんでしょうか?
0326デフォルトの名無しさん
2007/05/12(土) 19:43:070327デフォルトの名無しさん
2007/05/12(土) 19:44:52そう
0328デフォルトの名無しさん
2007/05/12(土) 19:46:54fgets()の他にも、strftime(), snprintf()も同じように格納バッファサイズを指定して、
それよりも少ない文字数しか格納しないような仕様になっている。
0329デフォルトの名無しさん
2007/05/12(土) 19:50:270330デフォルトの名無しさん
2007/05/12(土) 20:11:000331デフォルトの名無しさん
2007/05/12(土) 20:20:56getsもsizeof使って実装すれば何の問題もないのに、と思っていたりする?
0332デフォルトの名無しさん
2007/05/12(土) 20:22:210333デフォルトの名無しさん
2007/05/12(土) 20:22:290334デフォルトの名無しさん
2007/05/12(土) 20:37:37int main(void)
{
exit 0;
}
0335デフォルトの名無しさん
2007/05/12(土) 20:38:31お前らほんっとうにこれが好きなんだな
0336デフォルトの名無しさん
2007/05/12(土) 20:39:500337デフォルトの名無しさん
2007/05/12(土) 20:54:40自分でfgetsをそれらを決め打ちした状態で呼び出す関数作ればいいんでは
0338デフォルトの名無しさん
2007/05/12(土) 21:24:36{
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
なぜでしょうか?
0339デフォルトの名無しさん
2007/05/12(土) 21:43:29ログファイルの先頭にBOMを入れるようにすれば読めるんじゃね?
0340デフォルトの名無しさん
2007/05/12(土) 22:06:580341デフォルトの名無しさん
2007/05/12(土) 22:07:240342デフォルトの名無しさん
2007/05/12(土) 22:15:24教えて下さい
0343デフォルトの名無しさん
2007/05/12(土) 22:18:450344デフォルトの名無しさん
2007/05/12(土) 22:19:500345デフォルトの名無しさん
2007/05/12(土) 22:24:01ありがとうございます
0346デフォルトの名無しさん
2007/05/12(土) 22:42:10この妙な書き方噴いたwww
0347デフォルトの名無しさん
2007/05/12(土) 22:42:590348デフォルトの名無しさん
2007/05/12(土) 22:50:12可哀想だからスルーしてやれよw
0349デフォルトの名無しさん
2007/05/12(土) 22:50:450350デフォルトの名無しさん
2007/05/13(日) 00:07:330351デフォルトの名無しさん
2007/05/13(日) 00:18:020352デフォルトの名無しさん
2007/05/13(日) 00:21:03#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;
}
よし、これでどうだ!!
0353デフォルトの名無しさん
2007/05/13(日) 00:29:060354デフォルトの名無しさん
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 として書き込まれる
これってどうしてでしょうか?
0355デフォルトの名無しさん
2007/05/13(日) 00:52:10ttp://www.bohyoh.com/CandCPP/C/Library/fwrite.html
ttp://www.bohyoh.com/CandCPP/C/Library/fopen.html
0356デフォルトの名無しさん
2007/05/13(日) 00:52:54bcc32(v5.82)でコンパイルしてみた。
ちゃんと
0D 00 00 00
になったけど?
0357デフォルトの名無しさん
2007/05/13(日) 00:53:190358デフォルトの名無しさん
2007/05/13(日) 00:54:140359デフォルトの名無しさん
2007/05/13(日) 00:55:10なんで?んじゃどこをはれば良いの?なんでいちいちちっぽけな低学歴馬鹿のお前の言うことを
聞かなきゃならねーの?さっきからうぜぇんだよ、くだらねぇことでチクチク煽ったり、あほじゃねこいつ?
0360354
2007/05/13(日) 00:55:21ちょっと違いました
バイナリ値で 0D 00 00 00 ではなく 00 00 00 として書き込まれる
0D が書き込まれていない、でした
それと1Aも書き込まれないようです
制御コードだからですか?
0361デフォルトの名無しさん
2007/05/13(日) 00:56:20意味が分からん。何がいいたい?
0362デフォルトの名無しさん
2007/05/13(日) 00:56:52ちゃんとしたバイナリエディタ使ってるか?
0363自分が気に食わない発言を見つけると得意気に罵倒してくる基地外
2007/05/13(日) 00:57:12>>284
ダウト。慣用句的にそれを使っているのなら、
一度マニュアルページをよく読んで自分の過ちに気付いておいた方がいい。
293 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
お前みたいな自分基準しか言わない馬鹿や間違っているのを見つけては叩くだけしかしない奴が
このスレどころかこの板にこない方が良いよ、プロになれなかったグラマー(ただのデブ)www
0364デフォルトの名無しさん
2007/05/13(日) 00:58:33バイナリィエディタで開いてみたら、0D 00 00 00になったけど?
0365デフォルトの名無しさん
2007/05/13(日) 01:00:000x0d を書き込んでいて、
なんで 0x1Aを期待するのかわからんし。
そもそも書き込んでるのがバイナリなのにファイル名が.txtなのも謎だし。
というか君は何がしたいの?w
そこを言えば根本的なバグも教えて貰えるかも。
0366デフォルトの名無しさん
2007/05/13(日) 01:00:40ねぇねぇ、どこを参照すりゃ良いの?お前、もしかして亡羊さんのことが嫌いな人?
亡羊さんに嫌がらせをしている人がいないか聞いたら、お前みたいなへぼプログラマーが
誰か特定できるかな?ちと亡羊さんに通報してこようかな?w
0367デフォルトの名無しさん
2007/05/13(日) 01:01:46お前もいちいちうるさいなぁ、馬鹿じゃね?わけがわからないとかじゃなくてさぁ
できたって報告があるんだから、いちいち何言ってんだかわかんねーじゃなくて
どうやって0D 00 00 00以外が書き込まれたか、確認した手段を聞いた方がはえーよ馬鹿w
0369デフォルトの名無しさん
2007/05/13(日) 01:03:44ttp://www.vector.co.jp/soft/dl/win95/util/se079072.html
良いから開いてみれ。ちゃんと書き込まれているからw
0370デフォルトの名無しさん
2007/05/13(日) 01:07:54基本情報処理技術者をとって会社に就職して、
プログラマーからSEになったらどの位の給料になるんでしょうか?
もちろん個人と会社による話ですが、相場を教えて下さい。
SEになっても月に30万位なんでしょうか??
0371デフォルトの名無しさん
2007/05/13(日) 01:07:580372デフォルトの名無しさん
2007/05/13(日) 01:08:52マ板池
0373デフォルトの名無しさん
2007/05/13(日) 01:09:25ば…ばかって言うヤツが馬鹿なんだからねっ!!!
0374デフォルトの名無しさん
2007/05/13(日) 01:09:51普通じゃねーよ、相手にひたすらプレッシャーを与えてボロを出したところを
さらに叩く基地外くらいだろ、そういうのがデフォになっている視野も心も狭い低学歴はw
普通は何を使って書き込まれた値を確認したか聞くだろ。
0375デフォルトの名無しさん
2007/05/13(日) 01:10:52マ坂とはなんでしょうか…?
0376デフォルトの名無しさん
2007/05/13(日) 01:11:40ネチネチいじめてんじゃねーよ、スレタイが読めていないのか、こういうスレに集まる
初心者より自分の方が知識も経験もあるということを知って安心したいのか知らないが
答える気がないならこのスレから出ていってくれ。二度と戻ってくるな。
所詮お前は、プロになれなかったただのデヴ(グラマー)だ
0377デフォルトの名無しさん
2007/05/13(日) 01:12:03プログラマー板
0378354
2007/05/13(日) 01:15:10今作っているものがunsigned ID, unsigned short sizeを読み、次にsize分文字列として読ませているんですが
IDが0x0Dまたは0x1Aになるとバグったもので
もう一度見直してきます
どうもありがとうございました
0379デフォルトの名無しさん
2007/05/13(日) 01:16:06おそらくfopenの際、モードをバイナリにしてないからだろ
バイナリ指定してない場合、改行文字絡みで自動変換が行われる
0380デフォルトの名無しさん
2007/05/13(日) 01:21:23オマエのトラウマなんかどうでもいいよ
0381デフォルトの名無しさん
2007/05/13(日) 01:21:24火病ってんじゃねーぞ
・ >365 が元質問者を叩いているという事実認識がまず脳内
・ 自分が >365 を叩いてる事実を放置
・ 自分の主観が「普通」と勝手に定義
どっちが基地外かは火を見るより明らか
0382デフォルトの名無しさん
2007/05/13(日) 01:21:550383デフォルトの名無しさん
2007/05/13(日) 01:22:45亡羊本人でも降臨してんの?
0385デフォルトの名無しさん
2007/05/13(日) 01:25:07おまえらうるせーよ?お前が一番うっとうしい、士ねよ馬鹿
質問に答える気がないなら来るなよ。ほかにレスしている奴の邪魔なんだよクソガキ
何歳だお前?なぁ?士ねよ馬鹿w
ふぁびょってんのはお前だろ。他人にファビョってんじゃねーよとか言っておきながらwwwww
380 名前:デフォルトの名無しさん 投稿日:2007/05/13(日) 01:21:23
>>374
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
↑それお前だろ。お前の場合はウマシカだがw
381 名前:デフォルトの名無しさん 投稿日:2007/05/13(日) 01:21:24
>>374
火病ってんじゃねーぞ
・ >365 が元質問者を叩いているという事実認識がまず脳内
・ 自分が >365 を叩いてる事実を放置
・ 自分の主観が「普通」と勝手に定義
どっちが基地外かは火を見るより明らか
・ >365 が元質問者を叩いているという事実認識がまず脳内
自分のレス読み返せ基地外。
・ 自分が >365 を叩いてる事実を放置
はぁ?なんで?叩いた覚えありましぇ〜〜ん、ちゃんとできたと答えたけど?
いつ俺が叩いたか、参照レスきぼんぬ。ってか、俺を特定できないから無理だろうけど
俺は叩いていないし
0386デフォルトの名無しさん
2007/05/13(日) 01:25:53そうやっていないのに特定の人物をどうこう言い始めるだろ?
お前もうそれで名誉毀損だよ。亡羊さんに通報しとくねw
覚悟しとけよ
0387デフォルトの名無しさん
2007/05/13(日) 01:27:090388デフォルトの名無しさん
2007/05/13(日) 01:27:18亡羊ってだれだよ。
0389デフォルトの名無しさん
2007/05/13(日) 01:27:40なんではっちゃだめなの?理由は?お前の気まぐれとか、気分とかだったらまずお前がただの馬鹿だと言う結論しか出ないから。
参考にできるページがあったら使う、別になんら問題ないし、そのページには間違った記述はされてないよ。
まぁ、たぶん亡羊を嫌っている誰かだろ。特定できそうだから、亡羊さんに聞いてくるわ。
どうせプロになれなかったボケグラマーだろw
0390デフォルトの名無しさん
2007/05/13(日) 01:29:54>>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 参照w
言ったのは俺じゃないから。正しくは望洋だから。ANSI、ISO準拠を重視した本の出版をしているし
そんじょそこらの知ったかプログラマーと比べたらかなりまともな人だろうね。
他人を叩くような奴って、世界基準すら知らなさそうで視野が狭そうだなw
int mainについても理解してなさそう(どこぞのスレで議論になったが、ISOの参照ページを出したら
尻尾を巻いて逃げたけどなw)
0391デフォルトの名無しさん
2007/05/13(日) 01:32:00↑
これがこいつの心理だろうなw
0392デフォルトの名無しさん
2007/05/13(日) 01:32:30> ・ 自分の主観が「普通」と勝手に定義
はい?自分の主観で言った覚えはありませんけど?
ちゃんとバイナリィエディタで 0D 00 00 00 が書き込まれているのを確認しましたが何か?
質問者が何で書き込まれた値を確認したか聞いたのに、どうして俺が 主観 となるんでしょうか?
正確にお答えをして下さい。でなければ偽証罪で通報しますよ?証人喚問は怖いですよぉ〜〜
0393デフォルトの名無しさん
2007/05/13(日) 01:33:35ぷぷっ、そういうところにしかもう反応できない肝っ玉の小さいクズ乙w
こういう匿名(実際のところは完全に匿名ではない)ところでしか強がれないボケ
他人の粗探しを必死こいてするくせに、自分の落ち度をまったく認めない井の中の蛙乙w
0394デフォルトの名無しさん
2007/05/13(日) 01:34:330395デフォルトの名無しさん
2007/05/13(日) 01:35:51出て行ってくれませんか?うっとうしいんだよ、答えもしないくせに相手のボロを探すだけの馬鹿
0396デフォルトの名無しさん
2007/05/13(日) 01:35:52特定できたら家にきてくれよ。酒くらいは出してやる。
0397デフォルトの名無しさん
2007/05/13(日) 01:40:300398デフォルトの名無しさん
2007/05/13(日) 01:41:010399デフォルトの名無しさん
2007/05/13(日) 02:02:290400デフォルトの名無しさん
2007/05/13(日) 02:04:43参照できるライブラリのページを出しただけだろ。亡羊を狙った覚えはない
0401デフォルトの名無しさん
2007/05/13(日) 02:44:130402デフォルトの名無しさん
2007/05/13(日) 05:37:00間違いを指摘すりゃ良いだろ。気持ち悪いよ、お前それわかってねーなって
ネチネチ煽る奴。日頃、まともな人付き合いがないからこういう捻くれた
相手を見下して自分が優位な立場だと思い込みたい引きこもりなんだろうね
0403デフォルトの名無しさん
2007/05/13(日) 05:45:51自己紹介乙
0404デフォルトの名無しさん
2007/05/13(日) 06:14:590405デフォルトの名無しさん
2007/05/13(日) 06:15:320406デフォルトの名無しさん
2007/05/13(日) 07:01:27ボコボコにしてやんよ
∧_∧
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) ババババ
( / ̄∪
0407質問者
2007/05/13(日) 08:52:04「演算子を使わない」とは、四則演算のことです。
ビット演算で何とかできないかな?と思いましたが。どうでしょうか?
0408デフォルトの名無しさん
2007/05/13(日) 10:27:06#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を使っています。
0409デフォルトの名無しさん
2007/05/13(日) 10:38:24コンピュータサイエンスの基礎をやれ。
四則演算を論理素子でどうやって実現するか知れば
くだらない疑問を抱かずにすむ。
0410デフォルトの名無しさん
2007/05/13(日) 11:02:22printf("%2d月:%s(%d)\n",(i + 1),strlen( *p ),*p);
%2d = i+1
%s = strlen(*p) ←
%d = *p ←
0411デフォルトの名無しさん
2007/05/13(日) 11:08:3416進数に置き換えてするんだとは思いますが、すごく疑問です。
2×4=8とか、8÷2=4を論理素子で計算する。
すごく難しいと思います。
0412408
2007/05/13(日) 11:15:59あああ!逆だった
ありがとうございます!
0413デフォルトの名無しさん
2007/05/13(日) 11:36:28本屋に行って"CPUの仕組み"みたいな本買ってこい
あとは加算器で調べてみるとか
0414デフォルトの名無しさん
2007/05/13(日) 11:47:102 << 2
8 >> 1
0415デフォルトの名無しさん
2007/05/13(日) 12:40:23スタック使って割られる数-商*割る数って演算するんですか?
0416デフォルトの名無しさん
2007/05/13(日) 13:43:310417デフォルトの名無しさん
2007/05/13(日) 14:57:20掛け算と割り算は加減算で表現できるだろ
単純に何回も引いていって引けなくなればそれが余り
2進数で桁上がり下がりフラグ使って同じようにやればできる
筆算で(2進数)割り算やるときとほとんど同じ あとは本買って嫁
>>416
return(-1);はよくエラーチェックに使う
-1が返ってきたらファイル開けなかったということになってるとおも
0418デフォルトの名無しさん
2007/05/13(日) 14:58:240419デフォルトの名無しさん
2007/05/13(日) 15:04:320420デフォルトの名無しさん
2007/05/13(日) 15:04:42こういうこと?
printf("%d\n", 1 + 2);
0421デフォルトの名無しさん
2007/05/13(日) 15:05:480422デフォルトの名無しさん
2007/05/13(日) 15:06:390423デフォルトの名無しさん
2007/05/13(日) 15:08:560424デフォルトの名無しさん
2007/05/13(日) 15:10:330425デフォルトの名無しさん
2007/05/13(日) 15:20:200426デフォルトの名無しさん
2007/05/13(日) 15:35:27int a;
a = 30年;
printf("%d",a);
でやると、年が邪魔っぽくて表示されない
どうやればいいの〜?
0427デフォルトの名無しさん
2007/05/13(日) 15:37:350428デフォルトの名無しさん
2007/05/13(日) 15:39:420429デフォルトの名無しさん
2007/05/13(日) 15:40:53だから結果として年が邪魔で表示されないんだろう。初心者苛めんな。
0430デフォルトの名無しさん
2007/05/13(日) 15:41:450431デフォルトの名無しさん
2007/05/13(日) 15:47:300432デフォルトの名無しさん
2007/05/13(日) 16:04:100433デフォルトの名無しさん
2007/05/13(日) 16:05:13目標は何?
0434デフォルトの名無しさん
2007/05/13(日) 16:07:29処理速度とかも視野に入れた上で。
なんかテキトーに自作ツール作ってみるとか。
0435デフォルトの名無しさん
2007/05/13(日) 16:08:140436デフォルトの名無しさん
2007/05/13(日) 16:09:20この世界は片っ端から全部覚えてたらキリがないから
ちゃんと自分がなにをやりたいのか見定めて進んで行かんと、
無駄に多大な労力を費やすことになるぞ。
0437デフォルトの名無しさん
2007/05/13(日) 16:09:220438デフォルトの名無しさん
2007/05/13(日) 16:12:40自分で C のプリプロセッサでも作ってみたら?
確か以前、"未踏"でも採択されたことがあったはず。
0439デフォルトの名無しさん
2007/05/13(日) 16:33:39これらができると幅がぐっと広がる…っていうか基本
後はアイデア次第
0440デフォルトの名無しさん
2007/05/13(日) 16:34:350441デフォルトの名無しさん
2007/05/13(日) 16:36:130442デフォルトの名無しさん
2007/05/13(日) 16:38:52とっつきやすいと思うよ。
ネットにも入門サイトとかいっぱいあるし。
0443デフォルトの名無しさん
2007/05/13(日) 16:41:180444デフォルトの名無しさん
2007/05/13(日) 16:42:23作りたいものがあるならさっさと作ってみるのが吉
やってるうちに技術もついてくる
0445デフォルトの名無しさん
2007/05/13(日) 16:44:04>入門書に文字列処理についての事が無かった様に思うのでお聞きします
strcpy() も文字列処理だと思うが?
0446デフォルトの名無しさん
2007/05/13(日) 16:44:160447デフォルトの名無しさん
2007/05/13(日) 16:45:510448デフォルトの名無しさん
2007/05/13(日) 16:47:17囲碁・将棋・チェス・オセロとかね。
Cで作るのが最適。
0449デフォルトの名無しさん
2007/05/13(日) 16:50:23宇宙からの電波
>>448
オセロなら6行で作ってた神がいたな
0450デフォルトの名無しさん
2007/05/13(日) 16:51:010451デフォルトの名無しさん
2007/05/13(日) 16:51:53将棋プログラムってハッシュテーブルとかリストとかソートとかビット演算とか、
基本的なアルゴリズムが各所にちりばめられてるから勉強にはいいテーマだと思う。
0452デフォルトの名無しさん
2007/05/13(日) 16:52:40>Cで作るべきアプリケーションがそんなに存在しないようならば
これって、どういう意味だと思っている?
0453デフォルトの名無しさん
2007/05/13(日) 16:56:430454デフォルトの名無しさん
2007/05/13(日) 16:57:15あとはOSに興味あるならLinuxのソース読んでみるとか
学ぶのは自分で作ってみたり本読むか知っている人に聞く
プログラミング力のうちの知識はそれで十分だが英語できるかどうかで
足りない知識の吸収率が変わってくる(最先端の知識・アルゴリズムなど)
あとは経験で補えるが数学力のあるなし(知識じゃなく頭良いかどうか)
でどこまで伸びるかが変わる
0455デフォルトの名無しさん
2007/05/13(日) 17:06:48標準ライブラリのクローン(strcpy, strcat, printf, ...)と
UNIX系コマンドラインツール(cp, tail, head, sort, ...)のクローンを片っ端から作っていくと勉強になる。
サイズも小さいし、答え合わせ用のソースコードも(あまり初学者向けとは言いがたいが)あるし。
まあほとんど糞つまらん苦行に近いがコーディングは楽しいし一番無駄がないだろう。
0456デフォルトの名無しさん
2007/05/13(日) 17:08:090457デフォルトの名無しさん
2007/05/13(日) 17:10:47じゃ、もう少し実践的な奴やってみたら?
http://www.kumei.ne.jp/c_lang/
とか参考にしてウインドウ開いてみたりさ。
0458デフォルトの名無しさん
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
↑途中まで作ったソースです。
よろしくお願いします。
0459デフォルトの名無しさん
2007/05/13(日) 17:17:410460デフォルトの名無しさん
2007/05/13(日) 17:40:37どこがどうわからないのかkwsk
学校とかのレポートなら解答出すわけにいかんし
>>459
>>457じゃないがおまえちゃんと>>457のリンク先見てみたのか?
簡単なデータペースやゲームの作り方も内容にあるだろ
それとも全部わかってるのかこの内容?
0461デフォルトの名無しさん
2007/05/13(日) 17:47:380462デフォルトの名無しさん
2007/05/13(日) 17:48:440463デフォルトの名無しさん
2007/05/13(日) 18:10:29のページにあるローレンツのプログラムをコンパイルしようとしたのですがエラーがでて出来ませんでした
開発環境に問題があると思うのですが、原因がよくわからないのでご教授願います
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 ***
------ コンパイル終了 ------
と出ます
スレ違いのような気がしますが、該当スレが見つからなかったのでここで質問させていただきました
0464デフォルトの名無しさん
2007/05/13(日) 18:18:13そのコードはANSI Cに準拠していない。
FILE *output; の行を main 関数の先頭に持ってくるといいよ。
0465デフォルトの名無しさん
2007/05/13(日) 18:39:02そのノードを2二次元配列の1文字分のように扱いたいんですけど、
構造体を設定して
strcut ABC{
char
char
char
};
struct ABC data[][];とできますかね?
0466デフォルトの名無しさん
2007/05/13(日) 18:40:590467デフォルトの名無しさん
2007/05/13(日) 18:41:170468デフォルトの名無しさん
2007/05/13(日) 18:42:18無理なのかと。
0469デフォルトの名無しさん
2007/05/13(日) 18:44:16コンパイルできないはずだけど
0470デフォルトの名無しさん
2007/05/13(日) 18:45:21どういう意味ですか?
0471デフォルトの名無しさん
2007/05/13(日) 18:46:05コード貼ってみろよ。中途半端に省略しないで。
0472463
2007/05/13(日) 18:47:21回答ありがとうございました
警告は消えませんでしたが、エラーが消えて無事コンパイルすることができました
この警告は無視しても問題ない範囲なのでしょうか?
原因を把握していらっしゃるのでしたらお伺いしたいのですが
0473デフォルトの名無しさん
2007/05/13(日) 18:48:14使ってない仮引数を教えてくれてるだけ。無視しても問題はない。
0474デフォルトの名無しさん
2007/05/13(日) 18:49:44コンパイラがANSI Cに対応してないんでねーの?
0475463
2007/05/13(日) 18:50:310476デフォルトの名無しさん
2007/05/13(日) 18:51:37ANSI Cでは変数はブロックの先頭のみで宣言できる。
bccはANSI準拠。
0477デフォルトの名無しさん
2007/05/13(日) 18:54:07{
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);
}
}
一部ですけども、その二次元配列の中身の全ての各部門の初期化をしたいのですけど
この時点でセグメンテーション違反がおきるわけです。
0478デフォルトの名無しさん
2007/05/13(日) 18:55:21strcpy(data[i][j].home,NULL);です
0479デフォルトの名無しさん
2007/05/13(日) 18:57:10strcpy(data[i][j].name, "");
0480デフォルトの名無しさん
2007/05/13(日) 19:04:35ありがとさん
0481デフォルトの名無しさん
2007/05/13(日) 19:07:04data[i][j].name = '¥0';
ってやった方がいいとは思うけど初期化だから別にいいか。
0482デフォルトの名無しさん
2007/05/13(日) 19:07:45data[i][j].name[0] = '¥0';
こう
0483デフォルトの名無しさん
2007/05/13(日) 19:54:50ifやforといった基本的なことは理解しているつもりである程度プログラムは書けます。
今、アルゴリズムの授業を受けているのですがポインタや構造体が理解できません。
参考書に載っているソースを自分で打ち込んで実行したり、少し変えたりしているのですがどうも暗記っぽくなっています。
そのため「○○をポインタと構造体を利用して作れ」と言われても何からしたらいいかわからない状態で。
ポインタや構造体はC言語で一番重要と言われているので是非自分のものにしたいです。
皆さんはどうやってポインタや構造体を理解していきましたか?
0484デフォルトの名無しさん
2007/05/13(日) 19:57:330485デフォルトの名無しさん
2007/05/13(日) 20:10:220486デフォルトの名無しさん
2007/05/13(日) 20:11:48わからないところは図を描いて理解。
デバッガで全変数表示してつながり・変化を確認。
0487デフォルトの名無しさん
2007/05/13(日) 20:12:40よくなって4時間経過w
0488デフォルトの名無しさん
2007/05/13(日) 20:30:41その二次元配列data[i][j]において
1行さすのはdata[i]でいいのはわかるのですけど
1列をさすのはどうおけばいいですかね?
0489デフォルトの名無しさん
2007/05/13(日) 20:44:390490デフォルトの名無しさん
2007/05/13(日) 20:46:59列は無理。
0491デフォルトの名無しさん
2007/05/13(日) 20:47:08メモリの配置を想像してみろ。
列は分断されていて連続したメモリとしてアクセスする方法はない。
0492デフォルトの名無しさん
2007/05/13(日) 20:57:08ポインタのイメージがつかめない場合はその都度アドレスと中身を表にして書いて理解
ポインタpのpと*pと&pの違い,あるいは変数aのaと*aと&aの違いが
わかっていれば大丈夫のはず
なぜポインタが必要かっていう設計思想を知りたければアセンブラとかを
学んでみるといいいかも
>>488
他の言語なら実装されてたりするけど
C言語ではそういう便利な機能は基本的に用意されてない
0493デフォルトの名無しさん
2007/05/13(日) 23:12:11そのためにCとC++をマスターしたいんだが…。
それで今は一応C言語の基礎を終わらせたんだけど
C言語で関数やアルゴリズムやAPIなども覚えてから
C++行ったほうがいいのかな?
それとも先にC++でオブジェクト指向とか把握してから
いろんなこと手を出した方が良いかな?
0494デフォルトの名無しさん
2007/05/13(日) 23:15:29今時Cなんてほとんど使わないからC++からCのコードを利用する際の最低限の知識さえあれば十分。
0495デフォルトの名無しさん
2007/05/13(日) 23:16:05マの真っ当な評価なんてマ以外に出来るわけがないんだから。
0496デフォルトの名無しさん
2007/05/13(日) 23:22:16その列であてはまるのは1つだから
列指定にしなくてよかった。
0497デフォルトの名無しさん
2007/05/13(日) 23:23:21Cは使わないのか
じゃC++の勉強にいこうかな
まだCでコードとか書けないけど大丈夫かな・・・
>>495
年齢が30前後とかだと未経験じゃプログラマになるの難しいかな?
0498デフォルトの名無しさん
2007/05/13(日) 23:29:01おまいさんはマ板にお逝き。
0499デフォルトの名無しさん
2007/05/14(月) 00:00:23どんなプログラムの仕事がしたくてどんな会社かによる
なんか実用的(ゲームでもいい)なプログラムひとつでも組んでると
就職のときにアピールにはなる
とりあえずマ板へ池
0500デフォルトの名無しさん
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個同時に表示されてしまいます.
どのように書けばよいのでしょうか?お願いします.
0501デフォルトの名無しさん
2007/05/14(月) 02:02:37ちゃんとjのループの途中で*が表示されてるけど?
ただ、1000個ごとなら(i%j)==999だろう。
0502デフォルトの名無しさん
2007/05/14(月) 02:07:08環境は?
0503デフォルトの名無しさん
2007/05/14(月) 02:09:420504デフォルトの名無しさん
2007/05/14(月) 02:16:56for(i=0; i<100000; i++){
i 使って無いじゃんwwww
ワロタw
0505デフォルトの名無しさん
2007/05/14(月) 02:18:50基本からやり直せよwww
0506デフォルトの名無しさん
2007/05/14(月) 02:19:42if((j%1000)==0){ printf("*"); fflush(stdout); }
という話か?
0507デフォルトの名無しさん
2007/05/14(月) 02:20:26釣りにしても ひどい
0508デフォルトの名無しさん
2007/05/14(月) 02:22:24Cの構造体には変数しか設定できないのですが
C++は構造体の中に関数を入れれます。それがクラスって呼ばれるものです
C++でヤリなされw
0509デフォルトの名無しさん
2007/05/14(月) 02:23:17単にその処理の部分は省略しただけなんじゃないか?
0510500
2007/05/14(月) 02:25:02レスありがとうございます.
>>502さん及び>>507さんのもので,求めていた結果を得ることが出来ました.
これからfflushをググってみます.
>>504-505が釣りかどうかすら分からない自分が悔しいです.
勉強に励みます.ありがとうございました.
0511デフォルトの名無しさん
2007/05/14(月) 02:26:59ソースに
printf("処理○○終わり");
って書いていけばいいんじゃないの?
完成したら消せばいいわけだし
0512デフォルトの名無しさん
2007/05/14(月) 02:28:260513デフォルトの名無しさん
2007/05/14(月) 02:30:15初心者だぞ相手はwww
0514500
2007/05/14(月) 02:31:20実際は処理内容が含まれますが,それとは別に処理内容を全部消したもの
(>>500そのもののソースファイル)を作成して実行しても * が一度に出力された
ので質問をしにきました.
>>511
1試行で数分かかる繰り返し計算処理なので,何%終了したのかを概数でも
良いから表示させたかったのです.
>>512
駄目なのですか??
0515デフォルトの名無しさん
2007/05/14(月) 02:32:26goto使いなんだろうよ
0516デフォルトの名無しさん
2007/05/14(月) 02:33:37目的が達成できたんならそれで問題ないよ
環境依存だから、他の環境に持っていくことがあるなら問題だけど
0517デフォルトの名無しさん
2007/05/14(月) 02:34:10関数の再帰使わなかったら 処理スピードなんか大して変わらんよ
何千万行でも数行でも・・・
0519デフォルトの名無しさん
2007/05/14(月) 02:50:38お ま い ら 難 し く 考 え す ぎ
0520デフォルトの名無しさん
2007/05/14(月) 02:58:24クラスの肝は派生できる事。
派生無しにクラスを語っても意味がない。
0521デフォルトの名無しさん
2007/05/14(月) 03:01:070522デフォルトの名無しさん
2007/05/14(月) 03:05:30確かに入力ストリームに対するfflushは未定義動作だが
出力ストリームに対しては正常に機能したと思うが違ったか?
0523デフォルトの名無しさん
2007/05/14(月) 03:08:10もう質問者はいなくなったぞw
0524デフォルトの名無しさん
2007/05/14(月) 03:16:47for()等でループにかけることって
実際問題 どうゆう場合ですか?
0525デフォルトの名無しさん
2007/05/14(月) 03:17:47このスレほんとゴミ化したな・・・
0526デフォルトの名無しさん
2007/05/14(月) 03:23:18中途半端な知識でゴミ回答するんじゃないよ
0527デフォルトの名無しさん
2007/05/14(月) 03:30:23じゃあ 頭のいい質問しましょw
関数のポインタと、配列のポインタ等の置き場が勝手に割り付けられると聞いたのですが
実際はどのように割り付けてるんですか?
出来ればコンパイル自体のソースをもちいて答えていただきたいと思います
0528デフォルトの名無しさん
2007/05/14(月) 03:31:25質問の意味がよく分からんが
10体の敵がそれぞれランダムに動く場合とか?
0529デフォルトの名無しさん
2007/05/14(月) 03:32:34メモリの話か?
0530デフォルトの名無しさん
2007/05/14(月) 03:33:24ポインタの置き場って何?
コンパイル自体のソースって何?
0531デフォルトの名無しさん
2007/05/14(月) 03:34:030532デフォルトの名無しさん
2007/05/14(月) 03:34:550533デフォルトの名無しさん
2007/05/14(月) 03:39:15関数が置かれるアドレスの話か? なぜそこでポインタが出てくるんだ?
配列も置かれるアドレス? なぜ普通の変数じゃなくてわざわざ配列?
ローカルとグローバルによっても違うし
もうちょっと問題を整理してくれんか
0534デフォルトの名無しさん
2007/05/14(月) 03:47:40そんなもん環境依存だろ・・・
0535デフォルトの名無しさん
2007/05/14(月) 03:49:24「√」計算を行える計算機を作る
【どこが分からないのか?】全部wごめん
【どうして欲しいのか】代わりにソースを書いて欲しい
0536デフォルトの名無しさん
2007/05/14(月) 03:51:40最近の学校は開平も教えないから困る。
0537デフォルトの名無しさん
2007/05/14(月) 03:53:530538デフォルトの名無しさん
2007/05/14(月) 03:55:440539デフォルトの名無しさん
2007/05/14(月) 05:58:55波平の双子の兄さんだよ。
0540デフォルトの名無しさん
2007/05/14(月) 06:53:39灘、駒場、麻布と並ぶ名門です。
0541デフォルトの名無しさん
2007/05/14(月) 09:26:01C++は究極の中途半端言語
0542デフォルトの名無しさん
2007/05/14(月) 09:40:570543デフォルトの名無しさん
2007/05/14(月) 13:59:59intしか「√」内に入らないということでよろしいか?
0544デフォルトの名無しさん
2007/05/14(月) 14:01:04お前意味が分からんw
整数しか入らないか?って聞けよwww
0545デフォルトの名無しさん
2007/05/14(月) 14:07:39話はそこからだw
0546デフォルトの名無しさん
2007/05/14(月) 14:48:060547デフォルトの名無しさん
2007/05/14(月) 14:58:35確認だが正整数の間違いじゃないか?
そうでないとしたら複素数使わんと駄目だぞ
0548デフォルトの名無しさん
2007/05/14(月) 15:00:210549デフォルトの名無しさん
2007/05/14(月) 15:00:56後者だろうけど。
0550デフォルトの名無しさん
2007/05/14(月) 15:01:520551デフォルトの名無しさん
2007/05/14(月) 15:02:580552デフォルトの名無しさん
2007/05/14(月) 15:03:41おまえひょっとして-9は整数に入らないとか思ってないよな?
0553デフォルトの名無しさん
2007/05/14(月) 15:04:170は正整数に入らないと思ってる。
0554デフォルトの名無しさん
2007/05/14(月) 15:04:54おまえひょっとして0は正整数入るとか思ってないよな?
0555デフォルトの名無しさん
2007/05/14(月) 15:06:580556デフォルトの名無しさん
2007/05/14(月) 15:11:160557デフォルトの名無しさん
2007/05/14(月) 15:14:100558デフォルトの名無しさん
2007/05/14(月) 15:15:51実数じゃなにか問題があるのか?
0559デフォルトの名無しさん
2007/05/14(月) 15:17:350560デフォルトの名無しさん
2007/05/14(月) 15:20:01どのレスが誤爆なんだ?
ちょっとよく分からん
0561デフォルトの名無しさん
2007/05/14(月) 15:22:140562デフォルトの名無しさん
2007/05/14(月) 15:30:15写し放題じゃねーかwwww
先生は宿題スレもチェックしとくべきだなw
0563デフォルトの名無しさん
2007/05/14(月) 15:34:55そうでなくとも、まったく同じ答えが複数きてたらばれるだろう
0564デフォルトの名無しさん
2007/05/14(月) 15:38:040565デフォルトの名無しさん
2007/05/14(月) 15:40:44普段の態度や小テストで理解度見てたらだいたい自分でやったかどうか想像付くんだけど
さすがに人数多いといちいちチェックするのはめんどくさいw
院生に採点まかせっきりだったりもするからな
0566デフォルトの名無しさん
2007/05/14(月) 15:41:000567デフォルトの名無しさん
2007/05/14(月) 15:43:56それのネット版だ。
大してかわらんだろ。
0568デフォルトの名無しさん
2007/05/14(月) 17:37:23どこにNULLが入っていますか?
6個目?
0569デフォルトの名無しさん
2007/05/14(月) 17:38:080570デフォルトの名無しさん
2007/05/14(月) 17:42:01NULLと¥0と0の違いをきちんと理解しろw
0571デフォルトの名無しさん
2007/05/14(月) 17:43:59先頭を一個目と数えて五個目にNUL文字が入っている。六個目は存在しない。
0572デフォルトの名無しさん
2007/05/14(月) 17:44:58NULL 値アドレスなし、値0、ポインタの値として使用できる
\0 値アドレスなし、値0
0 値アドレス有り、値0
0573デフォルトの名無しさん
2007/05/14(月) 17:51:170574デフォルトの名無しさん
2007/05/14(月) 17:52:040575デフォルトの名無しさん
2007/05/14(月) 17:54:28あなたはなにをいいたいんですか
0576デフォルトの名無しさん
2007/05/14(月) 17:55:53問題の趣旨を考えてみたw
10/3を計算すると3.33333333333333333・・・・と続くが小数点以下が増えていけば4という端数が発生する
COBOLでやれよと言いたいwなぜにcでww
0577デフォルトの名無しさん
2007/05/14(月) 17:57:07ちっちっち、なんか勘違いしていないかね?NULLポインタとNULL文字とはまた別物だよ?
0578デフォルトの名無しさん
2007/05/14(月) 18:08:59出力形式が、紙への印刷しかなかった時代が有ることを説明しないと無理でしょw
0579デフォルトの名無しさん
2007/05/14(月) 18:12:36いやいや、そうじゃなくて、NULLといってもポインタと文字とは別物だってことなんだが?
0580デフォルトの名無しさん
2007/05/14(月) 18:13:10正確に言えば
NULL=値無し、アドレス有り
¥0 =値0 、アドレス無し
0 =値0 、アドレス有り
だけどねw
0581デフォルトの名無しさん
2007/05/14(月) 18:13:580582デフォルトの名無しさん
2007/05/14(月) 18:15:13アドレス無かったら値入れれませんがw
0583デフォルトの名無しさん
2007/05/14(月) 18:16:35ぜんぜん意味が違うということさ。前者はまだ文字列を指定するアドレスが指定されいない
何もないところを示しているが、後者は文字列の中にNULL文字だけでも入っていれば
空ではあるが文字列(の先頭)を示すアドレスは存在しているよん。
0584デフォルトの名無しさん
2007/05/14(月) 18:17:23志村ーーー、上の2つのアドレスありなしは逆逆w
0585デフォルトの名無しさん
2007/05/14(月) 18:17:37かなり前に関数で配列の数を数えたいといった(内積を計算したいと)ものなんですが
NULLになるまでcount++するというプログラムならいけるかなと思いまして。
ぬるぽっていうのは、char型のアドレス限定ですか?
0586デフォルトの名無しさん
2007/05/14(月) 18:19:29好意的に解釈して「\(バックスラッシュ)0」の心算なんだろうけど、
'\0'と書かないと意味を持たない希ガス。
0587デフォルトの名無しさん
2007/05/14(月) 18:20:34アドレスの有無ってなんだよ
いかなる値でも記憶領域に属していればアドレスはあるし、
そうでなければアドレスはないだろ。
0588デフォルトの名無しさん
2007/05/14(月) 18:21:49int 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;}
これの出力結果を見れば一目瞭然だよ
0589デフォルトの名無しさん
2007/05/14(月) 18:26:100590デフォルトの名無しさん
2007/05/14(月) 18:29:13どうしたら一目瞭然になるんでしょうか。
0591デフォルトの名無しさん
2007/05/14(月) 18:30:33とりあえずaを表示する部分を消して下の2つは確認できる?
0592デフォルトの名無しさん
2007/05/14(月) 18:31:00ゴメンよ なぜか知らんがコンパイルできて出力できてしまったよw
0593デフォルトの名無しさん
2007/05/14(月) 18:32:4600000000 : (null)
0040A128 :
0040A12A : 0
っと表示された。
0594デフォルトの名無しさん
2007/05/14(月) 18:33:230x80484cc :
0x80484ce : 0
0595デフォルトの名無しさん
2007/05/14(月) 18:34:16ガッ
いや、char型のアドレスだけじゃなく他の型でもNULLはある。
charとかchar[]はNULL文字と深くかかわってるけどNULL文字とNULLポインタは全く別物。
NULL文字は文字列の最後に終端記号として置かれる物。
NULLはポインタがどこも指してない事を示す記号として色んな型のポインタ変数に入れられる物。
0596デフォルトの名無しさん
2007/05/14(月) 18:34:370x402000 :
0x402002 : 0
0597デフォルトの名無しさん
2007/05/14(月) 18:42:21陰鬱な気持ちになるな・・・
0598デフォルトの名無しさん
2007/05/14(月) 18:43:38int main(void)
{
printf("てすつ");
return NULL;
}
やってみようw
0599デフォルトの名無しさん
2007/05/14(月) 18:45:45> return NULL;
いっ、いぃ〜〜のか?
0600デフォルトの名無しさん
2007/05/14(月) 18:46:080601デフォルトの名無しさん
2007/05/14(月) 18:47:09#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
0603デフォルトの名無しさん
2007/05/14(月) 18:51:37マは人格障害者の宝庫w
0604デフォルトの名無しさん
2007/05/14(月) 18:52:380605デフォルトの名無しさん
2007/05/14(月) 18:55:06【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 ;
}
それぞれやってみよう
0606デフォルトの名無しさん
2007/05/14(月) 18:57:22> やってみよう
何が目的?何が言いたい?はっきりしろ、うっとうしい
0607デフォルトの名無しさん
2007/05/14(月) 18:57:370608せんしぇ〜 ◆cNsKLREitk
2007/05/14(月) 19:01:47コンパイルのはじき方が理解できましたか?
0609デフォルトの名無しさん
2007/05/14(月) 19:02:460610デフォルトの名無しさん
2007/05/14(月) 19:10:28もしかして、そういうの面白いと思ってる?
0611デフォルトの名無しさん
2007/05/14(月) 19:11:490612デフォルトの名無しさん
2007/05/14(月) 19:12:05ここは初心者さんのスレだから、イイの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
それぞれやってみよう
それぞれやってみよう
それぞれやってみよう
それぞれやってみよう
0613デフォルトの名無しさん
2007/05/14(月) 19:25:59>>612みたいなのも面白いとは思わない
0614デフォルトの名無しさん
2007/05/14(月) 19:28:09こんなスレに来るなよw お前みたいな気持ち悪い基地外に回答なんて求めてねーよボケ
俺は初心者じゃなくて回答する側だけどなw
0615デフォルトの名無しさん
2007/05/14(月) 19:29:07600 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:46:08
コンパイルとおりませんでした。
590 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:29:13
>>588を実行すると、異常終了して1行も出力されません。
どうしたら一目瞭然になるんでしょうか。
0616デフォルトの名無しさん
2007/05/14(月) 19:31:21main関数の戻り値はintって指定してあるのに、NULL指定って何?ただのバカ?失せろ社会のクズw
598 名前:デフォルトの名無しさん 投稿日:2007/05/14(月) 18:43:38
ヒント
int main(void)
{
printf("てすつ");
return NULL;
}
やってみようw
0617デフォルトの名無しさん
2007/05/14(月) 19:31:27どこがどう擁護してるのか分からないけど
言われて傷ついた?
そろそろwつけるの止めたほうがいいよ
0618デフォルトの名無しさん
2007/05/14(月) 19:32:40はいっ、そうやって言い返さないと気がすまない=自分を自分で擁護して必死こいているのがバレバレ
なんすけど?擁護する必要すらない。お前みたいな奴は養護学校へ行けw
0619デフォルトの名無しさん
2007/05/14(月) 19:33:18このwつけるやつだと思う
0620デフォルトの名無しさん
2007/05/14(月) 19:34:08> 言われて傷ついた?
それお前だろ?お前が基地外だのこのスレには不要だのバカだの言われて
戦力外通告されて必死だな
0621デフォルトの名無しさん
2007/05/14(月) 19:34:26面白くない
0622デフォルトの名無しさん
2007/05/14(月) 19:36:51クソレスして他人の気分を害している お 前 が 言 う な
>>605みたいなのがうぜぇ。本当にバカじゃね?何いきなり戻り値の話に持ち込んでんだよ?
NULLを使う場所間違ってんぞ
以後、ここで質問に関係ないレスをしている奴は、現実世界で友達のいない寂しがりやだと思って
見守ってやってください。ここではもちろん スルー でおながいします。
0623デフォルトの名無しさん
2007/05/14(月) 19:37:470624デフォルトの名無しさん
2007/05/14(月) 19:38:29>>622
wつけるの止めたの?
0625デフォルトの名無しさん
2007/05/14(月) 19:39:180626デフォルトの名無しさん
2007/05/14(月) 19:39:550627デフォルトの名無しさん
2007/05/14(月) 19:41:03大きさって何ですか?もっと詳しく!
0628デフォルトの名無しさん
2007/05/14(月) 19:42:52>ここで質問に関係ないレス
> お 前 が 言 う な
>>626
Cでそれは無理ではないだろうか
0629デフォルトの名無しさん
2007/05/14(月) 19:46:04>>580 と >>572か?まぁ、誰が誰をバカにしているかわからんが
答えるなら正確に調べてからレスするなり、参照できるページを使うのもありだぞ。
答えても相手が理解する能力がなければそれまでだしな。
けど、int mainの戻り値にreturn NULL;とかありえないから。
NULLに関するヒントとか何にもなってないし、明らかにint mainとしているだけあって
戻り値の指定が不適切ってことしか言えないから。関数の前に記述している型について
理解していないことをカミングアウトしなくて良いから、こんなスレで自分も初心者でぇ〜す
ってことをアピールしなくて良いから、ファビョらず黙っていてくれ。
0630デフォルトの名無しさん
2007/05/14(月) 19:46:57以後放置よろ
0631デフォルトの名無しさん
2007/05/14(月) 19:47:29C言語でしか作れないプログラムはありますか?
Cの良さってなんですか?
付け加えて他の言語の良さ悪さを教えてください
0632デフォルトの名無しさん
2007/05/14(月) 19:49:27じゃあ正しいヒントだせば?
でなきゃ>>628と同じ
0633デフォルトの名無しさん
2007/05/14(月) 19:51:28ただしいヒントとかじゃなくて、何であんな無意味なヒント出したんだ?w
何が意図かはっきりしろって言われてんじゃん。なお、NULLポインタについては
すでにソース付きでレスがあるんであしからず。
0634デフォルトの名無しさん
2007/05/14(月) 19:52:32>>605 >>598 なんすかこれ?
0635デフォルトの名無しさん
2007/05/14(月) 19:53:12さっきから間違えてるんだけど
>>613より前にレスしてないし
0636デフォルトの名無しさん
2007/05/14(月) 19:53:49お金かからなくていいですね・・・・・・・・・
うらやましいです
0637デフォルトの名無しさん
2007/05/14(月) 19:54:24赤っ恥さんがいましたとさ。以後放置よろ。
0638デフォルトの名無しさん
2007/05/14(月) 19:57:10いろいろ必死すぎ・・・
0639デフォルトの名無しさん
2007/05/14(月) 19:57:540640デフォルトの名無しさん
2007/05/14(月) 19:58:14これみて思い出したけど前回荒れたときもこいついた
0641デフォルトの名無しさん
2007/05/14(月) 20:01:38コンパイルエラーだの警告だの出たよね?だから何?としか言いようがないんすけど・・・
>>605は何をしたかったか、明確なレスを求む。
0642デフォルトの名無しさん
2007/05/14(月) 20:08:02やってないし、やる気もない
0643デフォルトの名無しさん
2007/05/14(月) 20:10:06やってないお前に聞いてないけど?だからそういうレスするなって。
NULLポインタのアドレスを表示するコンパイルもしてないくせに。
0644デフォルトの名無しさん
2007/05/14(月) 20:12:55>みんな
>それぞれやってみた?
やった人間だけレスしろというなら最初からそう書け
お前は抜けてるんだよいろいろと
0645デフォルトの名無しさん
2007/05/14(月) 20:14:08わかりやすいね、そういう人間って。このスレには初心者が集まって
自分より知識のないやつが多いと思い込んで、浅はかな知識でレスしちゃっているんだろうけど
それが仇となってボロだしまくりで恥をかく奴。
0646デフォルトの名無しさん
2007/05/14(月) 20:14:17そろそろ消えてください
0647デフォルトの名無しさん
2007/05/14(月) 20:15:22いちいちレスするな
うざい
0648デフォルトの名無しさん
2007/05/14(月) 20:15:36はぁ?抜けているのはお前。しかもお前には脳みそが抜けているようだ。
日本語がわからない?何他人に指図してんだよ?こっちはやれよとは言ってないが
やってみた?とは聞いたが?何これ?何俺に噛み付いてんの?さっきから基地外だよなお前はw
抜けているのはお前の脳みそ、な?理解しろ。
> 最初からそう書け
何命令してファビョってんだよ?わけのわかんねーソースを書いたNULLポインタ厨w
0649デフォルトの名無しさん
2007/05/14(月) 20:15:44さっさとね。
0650デフォルトの名無しさん
2007/05/14(月) 20:16:54ある意味うらやましい
0651デフォルトの名無しさん
2007/05/14(月) 20:17:11何そこまで必死こいてんの?あっ、あのソースをコンパイルされて、自分がボロを出して
バカだということを露呈されるのが怖いんだぁ〜〜〜〜(^ー^)b
コンパイルした奴らにはあほだということがバレて大恥かいたもんなぁ〜〜〜君ってw
0652デフォルトの名無しさん
2007/05/14(月) 20:18:44そうだね、わけのわからねーソースを出してreturn NULLしちゃっているぬるい奴って
>>598 >>605 < こっ、こここ、これは・・・すごい大ヒントだ!こいつがバカだってことがわかる大ヒントw
0653デフォルトの名無しさん
2007/05/14(月) 20:20:42ほらほら早く説明しろよ。初心者さんがコンパイルして待ってまつよ。
ほら、涙目を拭いてさ。
0654デフォルトの名無しさん
2007/05/14(月) 20:20:46有る意味新鮮
0655デフォルトの名無しさん
2007/05/14(月) 20:21:01もしかして、OSはMS-DOSでつか?
0656デフォルトの名無しさん
2007/05/14(月) 20:22:24はい。
コンパイルのはじき方が理解できましたか?
↑しかもこれがあのヒントの答えだろ?だから何?コンパイルエラーを誘うなら
別にreturn NULLじゃなくても通らないソースを書けばおkだろ?
NULLの取り扱いについてなんら説明になってないから。
0657デフォルトの名無しさん
2007/05/14(月) 20:25:05以前他のスレで似たような質問があってその回答だけどどうぞ。
http://pc11.2ch.net/test/read.cgi/tech/1175949937/539
0658デフォルトの名無しさん
2007/05/14(月) 20:25:310659デフォルトの名無しさん
2007/05/14(月) 20:25:340660デフォルトの名無しさん
2007/05/14(月) 20:30:26return NULL;だけを持ち出したらそれはそれで問題とならないが
あれがその前の流れからして何のヒントなのか?それが知りたいw
0661デフォルトの名無しさん
2007/05/14(月) 20:35:070662デフォルトの名無しさん
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ポインタとは話は別なんで、あしからず。
0663デフォルトの名無しさん
2007/05/14(月) 20:39:120664デフォルトの名無しさん
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;
}
0665デフォルトの名無しさん
2007/05/14(月) 20:42:57ぜんぜん違うんですねぇ〜。これならわかるでしょ。NULLそのものが何なのか。
え?こんな説明じゃ不十分でヌルい?まぁ、後は使い方を適切にしてやってくれ。
ポインタにNULLを与えた場合、何も示すアドレスがないってことには変わりはないさ。
0666デフォルトの名無しさん
2007/05/14(月) 20:43:46これ、時々偉そうに「環境依存」だなんていう奴がいたりするけど
実際に0が出ない環境を見たことあるのか?
0667デフォルトの名無しさん
2007/05/14(月) 20:50:12まずは、お前のレスがどれか教えてくれ
0668デフォルトの名無しさん
2007/05/14(月) 20:56:55そうやって相手をさぐろうとするだろ?だから気持ち悪いって思われるんだよ。
>>662が本日の最初だが?だから何だ?って言われることをお前は言うから
日頃周りから「なんだこいつ?気持ち悪い」って思われてんだよ。
いいたいことがあるなら言えよ、相手次第でいえるとかやっているから
お前は弱者を見つけては相手を叩く性格になっちまったんだろ?
自分が筋の通る説明ができないなら黙ってた方が良いぞ。
ちなみに、&xにして%pでポインタのアドレスを確認すると、
中にNULLで与えた値は入っているが、ちゃんとアドレスは割振られているから。確認してみろ。
0669デフォルトの名無しさん
2007/05/14(月) 20:57:46#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;
}
0670デフォルトの名無しさん
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;
}
0671デフォルトの名無しさん
2007/05/14(月) 21:00:51void main(void)
{
printf("てすつ");
int a;
a=NULL;
return a;
}
0672デフォルトの名無しさん
2007/05/14(月) 21:04:23被害妄想激し過ぎだろ…
普通に流れが混乱して誰が誰か分からなかっただけなんだが、
まあいいや
0673デフォルトの名無しさん
2007/05/14(月) 21:06:10ありがとうございました
助かりました
他のアホどもとは格が違いますね
0674デフォルトの名無しさん
2007/05/14(月) 21:06:58うざい。何が言いたいかはっきりしろ。相手がどうとか関係なしに
NULLがどういうことか?の話で説明する相手次第で事実関係を捻じ曲げたり
おかしいと自分が思ったことを叩きつけるのはどうかと。言いたいことがあるなら言え。
すでにソースを提示して証明されてんだろ。ポインタとNULL(データ)を与えるのとはどういことかについて。
理解できないのにこんなスレで無知な初心者相手にいい加減なレスをしているのか貴様は?
0675デフォルトの名無しさん
2007/05/14(月) 21:11:02相手にしないほうがいいよ
さっきだって人違いって言ってるのにわかろうとしないし
といっても擁護乙って言われるだけだけど
自分に対する批判は>>605だと思ってるから
ちなみに>>662が本日の最初って言うのはうそだから
0676デフォルトの名無しさん
2007/05/14(月) 21:12:14先頭に #include<limits.h> を追加
if((ans*20+tmp)*tmp<0) break; // overflow?
↓
if(ans>=(INT_MAX-81)/180) break; //overflow?
0677デフォルトの名無しさん
2007/05/14(月) 21:13:21ですね
すみません
0678デフォルトの名無しさん
2007/05/14(月) 21:21:100679デフォルトの名無しさん
2007/05/14(月) 21:21:55マイコン等を使う組込系では、Cしか高級言語の選択肢がない
(ほかは低級なアセンブリ言語)という場合も多い。
0680デフォルトの名無しさん
2007/05/14(月) 21:23:58NULLを代入したいのならNULLと書けばいいだろうガッ
0681デフォルトの名無しさん
2007/05/14(月) 21:24:08「NULLが(void*)0と定義されていてコンパイルエラーになる」という可能性もある。
>>673
次から宿題スレ行け
C/C++の宿題を片付けます 87代目
http://pc11.2ch.net/test/read.cgi/tech/1179025919/l50
0682デフォルトの名無しさん
2007/05/14(月) 21:25:22ここを宿題スレにするつもりか?
0683デフォルトの名無しさん
2007/05/14(月) 21:28:14http://www.kouno.jp/home/c_faq/c5.html#0
0684デフォルトの名無しさん
2007/05/14(月) 21:32:59んー・・・
基本的に「代入したらいくつになるの?」って話だから、
代入ぐらいさせてくれ(っていうか初期化だな。こりゃ)。
int x=(int)NULL;
で x が 0 で初期化されない環境があるかないか、という事で。
0685デフォルトの名無しさん
2007/05/14(月) 21:42:51お前らって「Cパズル」ってやったこと無いだろw
0686デフォルトの名無しさん
2007/05/14(月) 21:48:310687デフォルトの名無しさん
2007/05/14(月) 21:52:39C FAQから
http://www.kouno.jp/home/c_faq/c5.html#17
たぶんこうこうところなら(int)NULLは0にならないのだろう
0688デフォルトの名無しさん
2007/05/14(月) 22:15:24>たぶんこうこうところなら(int)NULLは0にならないのだろう
http://www.kouno.jp/home/c_faq/c5.html#5
を読んだ?
0689デフォルトの名無しさん
2007/05/14(月) 22:27:51C++なら、ほとんどのプログラマーが 0 を使っている
VCなら nullptr で即解決
0690687
2007/05/14(月) 22:37:03すまん687のNULLは(void*)0のことだと思ってほしい。
FAQ 5.5は0をポインタ型として扱うときの話だろ。
でもここではヌルポインタを整数型として扱おうとしている。
C++でいうところのreinterpret_cast<int>((void*)0)を表したかった。
0691デフォルトの名無しさん
2007/05/14(月) 23:28:36大抵はいちいち変換かけたりせず値としてはそのままにするだろうから、実際上は >687 の通りだと思う。
で、調べてて気づいたんだけど、9899:1999 だと、ポインタ型→整数型→元のポインタ型で元の値に戻ることすら
保証されてない(void* 経由ならOK)。
14882:2003 だと、整数型が十分な大きさであれば↑で元の値に戻ると明示されてるんだけど。
0692デフォルトの名無しさん
2007/05/14(月) 23:48:33まだやってんのかよ。実際に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;
}
0693デフォルトの名無しさん
2007/05/14(月) 23:56:42なんならこうして、文字コードも参照してみるか?って終端の\0(NULL文字)に対して
ASCIIコードでは0が割り当てられているのは既出だが、ちゃんとコード(値)0として
扱われてんだよ。そこは実装されている言語によって扱われ方も違う点はあるだろうけど
なんだかんだ言ってもそれはおかしいといっても、実際はそう扱われているというのが現実。
なぁ、おまいら、いい加減目を覚ませよ?辻はもう処女じゃないんだぜ?それが現実さ(タバコを吸う紳士のAA略)
0694デフォルトの名無しさん
2007/05/14(月) 23:58:030695デフォルトの名無しさん
2007/05/15(火) 00:00:210696デフォルトの名無しさん
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;
}
0697デフォルトの名無しさん
2007/05/15(火) 00:02:29反応しちゃダメ
0698デフォルトの名無しさん
2007/05/15(火) 00:02:56同じ話題が繰り返されるのはしょうがないさ
0699デフォルトの名無しさん
2007/05/15(火) 00:09:19http://images.google.co.jp/images?q=%E6%9D%89%E6%B5%A6%E5%A4%AA%E9%99%BD&lr=lang_ja&ie=UTF-8&oe=UTF-8&aq=t&rls=org.mozilla:ja:official&client=firefox&um=1&sa=N&tab=wi
ttp://puka-world.com/php/upload/ren/img-box/1178589185304.jpg
ttp://puka-world.com/php/upload/ren/img-box/1178589261938.jpg
0700デフォルトの名無しさん
2007/05/15(火) 01:35:35void hoge(void)
{
return;
}
0701デフォルトの名無しさん
2007/05/15(火) 01:45:03そんなふうにかんがえていた時代もありました
0702デフォルトの名無しさん
2007/05/15(火) 01:50:350703デフォルトの名無しさん
2007/05/15(火) 01:52:28ここからどうぞ
http://www.php.net/downloads.php
0704デフォルトの名無しさん
2007/05/15(火) 01:57:28\0は八進法で値を指定するエスケープシーケースなのだから、
ASCIIでなくても'\0'は0に等しくて当然。
0705デフォルトの名無しさん
2007/05/15(火) 02:26:10お前もわかってないアホだな。無駄口たたくな、自分の勘違いをさらすだけだから。
文字コードを表示するのに %d を用いている点が理解できてないな。
0706デフォルトの名無しさん
2007/05/15(火) 02:29:13>>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進数にて対応コードを
示している文献はよく見かけるけど。
0707デフォルトの名無しさん
2007/05/15(火) 02:33:47文字の終端を意味する \0(NULL文字、空文字)を入れたところにも
ちゃんとデータを格納するアドレスが存在しているって話だが?
なんかややこしくなっているが、 unko の後ろにNULL文字があるからといって
unko の後ろのアドレスがNULLになっているわけではないんだが・・・
その説明に何をわけの分からない説明にもならないことをいい掛かってきてんだね君は?
まさか、値は0だけどアドレスはなしとか書いちゃった赤っ恥>>580でつか?
0708デフォルトの名無しさん
2007/05/15(火) 02:34:46「猫でもわかるC言語プログラミング」
これ読め
0709デフォルトの名無しさん
2007/05/15(火) 02:37:00http://nssearch.hp.infoseek.co.jp/clang/1127737437.html
0710デフォルトの名無しさん
2007/05/15(火) 02:40:51>>572
正確に言えば 正確に言えば 正確に言えば 正確に言えば 正確に言えば
¥0 =値0 、アドレス無し ¥0 =値0 、アドレス無し ¥0 =値0 、アドレス無し
その後、文字の終端を意味するNULL文字の入ったデータに
前の文字列に続いてアドレスが割り振られていたことが
プログラムの実行にて証明されたため、赤っ恥をかいてしまったのであ〜〜る
あっ、ちなみに16進数で表示したかったら、%d から %x なり %X で指定してね♪
0711デフォルトの名無しさん
2007/05/15(火) 02:41:15704じゃないけど
八進法で値を指定ってのはたとえば'A'=65(10進)=101(8進)だから
これを'\101'と表すって事では。
0712デフォルトの名無しさん
2007/05/15(火) 02:42:450713デフォルトの名無しさん
2007/05/15(火) 02:44:06素面でこれだったら怖いけど。
0714デフォルトの名無しさん
2007/05/15(火) 02:45:470715デフォルトの名無しさん
2007/05/15(火) 02:46:210716ここでフレーム投下
2007/05/15(火) 02:48:41普通に0と書いたのでは8進定数になってしまいました。
0717デフォルトの名無しさん
2007/05/15(火) 02:49:34何のために2進数、16進数があるか分かってないな、この八進法w
>>704
> ASCIIでなくても'\0'は0に等しくて当然。
これも意味が分からん。そりゃ何進法になっても0は0だが
そういうことをいってんじゃねーよ。\0が割り当てられている文字コードが0って話だろ。
ASCIIだからじゃなくて、ASCIIではそうなっていて、そのASCIIコードを参照できる
ソースコードを用いた説明で、なぁ〜〜に意見にもならないわけの分からない理論を持ち出してんだ?
\0 が 0 に等しい、だから何?そうじゃなくて、文字の終端を表す NULL 文字が入ったアドレスには
値に 0 が入っているのを敢えて参照して、ちゃんとNULL文字もデータとして格納されている
アドレスが割り振られているって話 な・ん・だ・がw
0718デフォルトの名無しさん
2007/05/15(火) 02:51:110719デフォルトの名無しさん
2007/05/15(火) 02:52:188進数 → \000
\0 は8進数の0だったんだよ。まあ同じ0だけどね。
0720デフォルトの名無しさん
2007/05/15(火) 02:52:220721デフォルトの名無しさん
2007/05/15(火) 02:53:000722デフォルトの名無しさん
2007/05/15(火) 02:54:04>>693
\0は八進法で値を指定するエスケープシーケースなのだから、
ASCIIでなくても'\0'は0に等しくて当然。
ASCIIとかじゃなくてNULL文字の入ったchar型のデータにどんな値が入ったかであって
値が入っているアドレスが存在するって話でしょ?ぶぅ〜〜ふふふふっ(吹いた)
0723デフォルトの名無しさん
2007/05/15(火) 02:55:45やっぱ仕事のストレスなんだろうか。
SI業界で就活してたけどやめとこうかなあ…orz
0724デフォルトの名無しさん
2007/05/15(火) 02:55:510で始まる数字は8進数だよ。
int a = 090; とか書いてコンパイルしてみ、8進数に9という数字は無いからエラーになるよ
0725気まぐれアナスイ
2007/05/15(火) 02:56:14driver.ができました。
『C言語なら俺に聞け』と
なっている位なのでそんな物は、
とっくにご存知なのでしょう、ね?
0726デフォルトの名無しさん
2007/05/15(火) 02:57:04読む必要性なし、というか、ちゃんと八進法に関する文献やソースを分かりやすく
提示してもらえませんかねぇ?ASCIIじゃさまざまな文字が表現できないんで
いまさらASCIIだけにこだわる気はねーよ。文字コードで10進数以外だと
16進数で表記されているのをよく見かけるんですけどねぇ〜。どこでつか、八進法で
表記しているところは?なんで八進法?そんなんで表記したら、桁が多くなるものだと
10進法で表すより桁の数が増えて面倒なんすけど?
0727デフォルトの名無しさん
2007/05/15(火) 02:59:000728デフォルトの名無しさん
2007/05/15(火) 02:59:550730デフォルトの名無しさん
2007/05/15(火) 03:00:36勝手にNULLポインタにしちゃだめだぞ、めっ
0732デフォルトの名無しさん
2007/05/15(火) 03:02:190733デフォルトの名無しさん
2007/05/15(火) 03:03:300734デフォルトの名無しさん
2007/05/15(火) 03:05:25>猫でもわかるC言語プログラミング
これは糞、ほかのをおすすめします
0736デフォルトの名無しさん
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;
}
0737デフォルトの名無しさん
2007/05/15(火) 03:06:520738デフォルトの名無しさん
2007/05/15(火) 03:08:59printf("\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(" | ");
}
0739デフォルトの名無しさん
2007/05/15(火) 03:11:200740デフォルトの名無しさん
2007/05/15(火) 03:11:240741デフォルトの名無しさん
2007/05/15(火) 03:12:290742デフォルトの名無しさん
2007/05/15(火) 03:13:020743デフォルトの名無しさん
2007/05/15(火) 03:17:530744デフォルトの名無しさん
2007/05/15(火) 03:18:010745デフォルトの名無しさん
2007/05/15(火) 03:26:250746デフォルトの名無しさん
2007/05/15(火) 03:26:330747デフォルトの名無しさん
2007/05/15(火) 03:30:521. ヌル文字の値が '\0' なのは規格で決まってる。
2. \0 という特別なエスケープシーケンスは規格で用意されておらず、
これは 8 進数の値を直接埋め込むエスケープシーケンスでしかないので、
'\0' の値はどの環境でも厳密に 0 になる。
(そもそもそんな特別なエスケープシーケンスを用意してしまったら、
8 進数で 0 を埋め込むことが不可能になってしまう)
これでいいだろ、もう。
0748デフォルトの名無しさん
2007/05/15(火) 03:35:06だからぁ、NULL文字もちゃんとデータとして存在しているから
文字の終端を示す\0が入っているアドレスもちゃんと存在しているって話なんだが?
規格がどうとかじゃなくて、空文字でNULLが扱われていてもちゃんと文字データとして
存在して実態があるからNULLポインタの示す場所と勝手に解釈するなって話ナノーメートル
0749デフォルトの名無しさん
2007/05/15(火) 03:36:400750気まぐれアナスイ
2007/05/15(火) 03:37:54頑張っていますね?
source.を書きたい、のですが、
original.なのでとって置きます。
0751デフォルトの名無しさん
2007/05/15(火) 03:39:07どうも過去ログからしてタブーっぽい。指し示す場所がないゆえに、環境によっては
(null)とご丁寧に表示してくれているが、実体がないから何も表示できないのが当たり前だし。
0752デフォルトの名無しさん
2007/05/15(火) 03:42:19うーん、「NULL」が出てきたら脳内で「NULLポインタ」に置換しちゃう人?
>>747は全くNULLポインタについて言及してないよ。
だけどまあ、NULL文字ってのは誤解しやすいような気もするから、
終端文字と表現するのがいいんじゃねえのかなあ。
0753デフォルトの名無しさん
2007/05/15(火) 03:44:13「あらゆる有効なアドレスと比較しても等しくならない」のが NULL ポインタの定義だから。
ただ、NULL 渡して表示させるという場合、
内部でポインタが NULL ならこれを表示・・・という分岐があるのなら問題ない。
参照してないから。
0754デフォルトの名無しさん
2007/05/15(火) 03:44:210755デフォルトの名無しさん
2007/05/15(火) 03:45:040756デフォルトの名無しさん
2007/05/15(火) 03:45:50NULL はヌルポインタを表すマクロ名を表すから、紛らわしい。
null 文字という風に小文字で書くならいい。
0757デフォルトの名無しさん
2007/05/15(火) 03:45:50いや、だからそれを勘違いしたのが >>580 なんだが、お前いい加減にしろ?
何歳だ?ゆとり教育世代か?寝ろやボケガキ
0758デフォルトの名無しさん
2007/05/15(火) 03:46:380759デフォルトの名無しさん
2007/05/15(火) 03:46:39はいはい、すでに話がわかっているという証拠のソースも何度も提示しているのに
それすら自分の思い込みや勘違いで否定しているお前が論破されるのが怖くて
何も筋の通った意見がいえなくておびえているのはお前だろ?
0760デフォルトの名無しさん
2007/05/15(火) 03:46:510761デフォルトの名無しさん
2007/05/15(火) 03:47:370762デフォルトの名無しさん
2007/05/15(火) 03:49:02自覚してんのだなぁ。
0763デフォルトの名無しさん
2007/05/15(火) 03:49:15> >>747は全くNULLポインタについて言及してないよ。
いや、モロ最初の項目で
> 1. ヌル文字の値が '\0' なのは規格で決まってる。
言及してんじゃん。だから、NULL文字の値が\0とか話ではないが
値は \0 ではなく 0 だが?それすら間違ってんじゃん。
あくまでもエスケープシーケンス、 printf(""); の " " の中で使うときとかで用いられる
\n \t のように \ がついたものは値じゃないんだが?w
0764デフォルトの名無しさん
2007/05/15(火) 03:50:55ちゃんとアドレスが文字列の終わりに続いて割り振られているって説明に、なぁ〜〜に
ごちゃごちゃとわけのわからない言い掛かりをしてきているんだね?って言っているんだが?
いや、もうええわ。八進法とかわけのわからん話を絡めるし、気持ち悪いぜ?
0765デフォルトの名無しさん
2007/05/15(火) 03:53:08だからそこのどこにNULLポインタが出てくるの?
0766デフォルトの名無しさん
2007/05/15(火) 03:53:16ヌルポインタを表す単なるマクロ。
C では 0 あるいは ((void*)0) と定義される。
'\0'
ヌル文字。値の全てのビットが厳密に 0 となると規格で決められている。
この表記の場合、型は C では int 、C++ では char 。
0
数値の 0 でもあり、ヌルポインタでもある。
型は int ではあるが、値 0 になる定数式がポインタに代入された場合、
あるいはポインタと比較された場合は、ヌルポインタと解釈される。
その場合、その値のビットが全て 0 になるという保証はない。
0767デフォルトの名無しさん
2007/05/15(火) 03:53:190768デフォルトの名無しさん
2007/05/15(火) 03:54:30全くNULLポインタには言及してないんだよ。
0769デフォルトの名無しさん
2007/05/15(火) 03:55:130770デフォルトの名無しさん
2007/05/15(火) 03:56:34分かってない奴がでしゃばるな
0771デフォルトの名無しさん
2007/05/15(火) 03:58:03ちなみに \a \n \t \0 だのは文字であって値ではありませんので、あしからず。
それらを示す文字コードは値といってもまぁ差し支えないかもしれんけどね。
んじゃ、レベルの低い知ったかを相手にするのもここらでやめておいてやるわ。
まったく、本当に理解力のないどうしようもないやつっているんだなw
だからこの世はいつまでも頭の悪い奴が立場が悪くなってファビョって自暴自棄になるんだなw
0772デフォルトの名無しさん
2007/05/15(火) 03:59:23自己紹介乙
0773デフォルトの名無しさん
2007/05/15(火) 03:59:46null character (respectively, null wide character), whose representation has all zero bits.
ヌル文字(あるいはヌルワイド文字)、これは全てのビットが 0 の表現をとる。
>>771
\0 は文字だが '\0' は値だぞ。
0774デフォルトの名無しさん
2007/05/15(火) 04:00:23NULL文字をNULLポインタと思いこんで延々暴れたバカがいた
ということでよいかな。まあ紛らわしいからその分は差し引いてあげるけどさ。
0775デフォルトの名無しさん
2007/05/15(火) 04:01:15よい
0776デフォルトの名無しさん
2007/05/15(火) 04:02:17\がついたものはここでも説明されているように「文字」であって値には該当せず。
いわゆる制御文字ゆえに表示される文字とは別扱いだが
それらにも「文字コード」が割り振られている。その文字コードを
char型のデータに入れることで扱っているのだが、そこまで理解できないかなぁ
理解力のないお○カちん達ってw
だからNULL文字に対応するコードが0であって、\0は値じゃなくてNULL文字と言うべき。
0777デフォルトの名無しさん
2007/05/15(火) 04:03:07もうその程度のことでしか反論できないでしょ?おまえどこの学校出身だ?
まぁ、ランクE未満の大学でもなく大学未満なんでしょうね。
派遣のお仕事がんばってねぇ〜〜 ♣
0778デフォルトの名無しさん
2007/05/15(火) 04:03:250779デフォルトの名無しさん
2007/05/15(火) 04:04:19null文字と書け。
0780デフォルトの名無しさん
2007/05/15(火) 04:05:45>>580の
> ¥0 =値0 、アドレス無し
参照。ちなみに\0(NULL文字、空文字)に割り当てられているコードは0だが
\0自身は値ではなく「文字」ですから。
0781デフォルトの名無しさん
2007/05/15(火) 04:06:480782デフォルトの名無しさん
2007/05/15(火) 04:08:18ヌルポインタとして扱おうと思えば扱えるけどね。
紛らわしいから絶対やっちゃいけないが。
0783デフォルトの名無しさん
2007/05/15(火) 04:09:010784デフォルトの名無しさん
2007/05/15(火) 04:09:57誰かがこんなのを擁護してるとでも思ったのかな
0785デフォルトの名無しさん
2007/05/15(火) 04:10:38なんだよ、\0が値とか言っちゃっているやつ?あたいにそんな小細工
通用しないかんねぇ〜(スケバン恐子風に)
エスケープシーケンスは文字であって値ではない、これ定説。
ライフスペースでも定説。オウムには破防法(意味不明)
0786デフォルトの名無しさん
2007/05/15(火) 04:10:53これもヌルポインタ。
0787デフォルトの名無しさん
2007/05/15(火) 04:13:551. ヌル文字の値が '\0' なのは規格
^^^^^^^^^^^^
対応コードが0ではあるが、NULL文字は値ではなく文字ってことな・ん・だ・が?
文字って値なんだぁ。それじゃぁ、char a[10]; a[0]='a';ってaって文字を入れるとき
値にAが入っちゃうのぉ〜〜?もはや値に有らず。
a[0]='\0';で空文字を入れることはあるけど、値で入れるなら '' とかつけずに
対応している文字コードを入れたらええんでな〜〜い?
0788デフォルトの名無しさん
2007/05/15(火) 04:14:12ヌル文字とヌルポインタは別物ってことはわかったの?
0789デフォルトの名無しさん
2007/05/15(火) 04:17:09相手の筋の通った理論を屁理屈で解釈してつつこうと必死でしょ?
そんなんだから物事の本質が霞んでしまうんだよ。
路上を見てみろ?道路交通法をまともに守っている奴がいない、破っている奴らばかり
だから自分もそうする?それじゃ自分 も 道路交通法を理解していないと
道路交通法を知っている人に対して思われているだけだと気づくんだな。
警察の前じゃ違反は違反だぜ?キップ切られるぜ?免許傷つくぜ?
俺はまだ違反点数の累積は0だ。けど、違反点数も俺の免許もNULLじゃないぜ?
0790デフォルトの名無しさん
2007/05/15(火) 04:17:500791デフォルトの名無しさん
2007/05/15(火) 04:17:520792デフォルトの名無しさん
2007/05/15(火) 04:18:27あたりまえじゃん、っつーかそれをず〜〜〜っと昨日の>>580に対して言い続けてきたんだが?w
俺が理解していないと思ってんの?何回文字列の終端を示すNULL文字自身が入ったデータの
アドレスが存在していて、文字列の後ろの終端を示す部分がNULLポインタになっていないと説明したら
わかるんだと?鬱陶しいなぁ・・・
0793デフォルトの名無しさん
2007/05/15(火) 04:18:48「ヌル文字の値」は「ヌル文字の文字コード」の意味だが、
確かに紛らわしい表現ではあったな。
でも、それを言うなら、
>char a[10]; a[0]='a';ってaって文字を入れるとき
~~~~~~~~~~~~~~~~~~~~~~
>a[0]='\0';で空文字を入れることはあるけど、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
もおかしいな。
「aの文字コードを入れるとき」、
「空文字の文字コードを入れることはあるけど」だな。
0794デフォルトの名無しさん
2007/05/15(火) 04:19:43だから \0 は値じゃなくて 文字 だっつってんだろ・・・説明だって出てんだろ。
その文字、NULL文字に該当する対応コードが 0 だっつってんの。
対応コードは \0 か? \0 って何進法?w
0795デフォルトの名無しさん
2007/05/15(火) 04:20:24763 名前:デフォルトの名無しさん [sage] :2007/05/15(火) 03:49:15
>>752
> >>747は全くNULLポインタについて言及してないよ。
いや、モロ最初の項目で
> 1. ヌル文字の値が '\0' なのは規格で決まってる。
言及してんじゃん。
0796デフォルトの名無しさん
2007/05/15(火) 04:21:28\0 は文字だけど '\0' は文字リテラルで値だろ!!!
何度言ったら分かるんだ!!!
0797デフォルトの名無しさん
2007/05/15(火) 04:22:38お前が >>736 の出力結果を理解していないことがわかった。もう黙ってろ。
文字型の変数に文字でなくても直接文字コードを入れても使えることが理解できてないんだな。
通りで話がわからないわけだw
なんか、俺がNULLポインタとデータの違いがわかってないみたいないわれ方しているが
さっきっから俺に対して曲解した考えで論破しようと必死こいている奴の方が
曲解しているだけあって理解していないのがバレてんだが・・・なんだよ \0 が値って?
あたいにはそんなの通用しないかんね!
0798デフォルトの名無しさん
2007/05/15(火) 04:23:04'\0'は値。
0799デフォルトの名無しさん
2007/05/15(火) 04:23:390800デフォルトの名無しさん
2007/05/15(火) 04:23:570801デフォルトの名無しさん
2007/05/15(火) 04:25:44C に「文字型」なんてありません。
0802デフォルトの名無しさん
2007/05/15(火) 04:26:020803デフォルトの名無しさん
2007/05/15(火) 04:26:21「NULL文字」なんて腐った表記をする奴にロクな奴はいない。
null文字と書け。
↑こういうことしかいえなくなっているら。しかもこれは自分基準w
こういうのが鬱陶しいんだよな。だから何?としか言われない
間違いではないことを気にいらねーって罵倒してくる奴。
お前何様だよ?デジタル世界の王者か?欧米か!?
てめぇ基準なんてどうでも良い。検索してどっちが多く使われているか調べてから出直せw
0804デフォルトの名無しさん
2007/05/15(火) 04:27:120805デフォルトの名無しさん
2007/05/15(火) 04:29:59値って言うならちゃんと演算子使って演算できんだろうな?
その\0(空文字)をどうやって演算すんだ?
文字データとしては表示すらされないってのにw
文字同士の計算でもあるの?Aを文字と扱うか16進数として値を10として扱うかでは大違いだろ
それすら理解していないなんて、どこの大学出身だ?あっ、大学未満か
0806デフォルトの名無しさん
2007/05/15(火) 04:30:550807デフォルトの名無しさん
2007/05/15(火) 04:32:40str[i] != '\0' は演算だろ?
そして printf("%d\n", '\0' + 3); がエラーにでもなると思ってるのか?
0808デフォルトの名無しさん
2007/05/15(火) 04:33:360809デフォルトの名無しさん
2007/05/15(火) 04:35:06本当にありがとうございました。
0810デフォルトの名無しさん
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 を実行すりゃ一目瞭然。
実証、検証されているのにつまらない屁理屈を言う奴、だめぽ。
0811デフォルトの名無しさん
2007/05/15(火) 04:38:16もうその程度でしか言い返せないんだね。どちらも値じゃないんだが?w
値は\0よって、スケバン風に言ってなさいってこったでパンナコッタ。
0812デフォルトの名無しさん
2007/05/15(火) 04:38:47もうオワタ\(^o^)/
0813デフォルトの名無しさん
2007/05/15(火) 04:39:40Bに1を足すなんて、環境によっては文字列の追加として B1 と解釈されかねんよ。
0814デフォルトの名無しさん
2007/05/15(火) 04:40:29本気で分かってねえな・・・。
呆れてものも言えん。
0815デフォルトの名無しさん
2007/05/15(火) 04:42:230816デフォルトの名無しさん
2007/05/15(火) 04:42:28朝まで居残りしているのは。
0817デフォルトの名無しさん
2007/05/15(火) 04:45:460818デフォルトの名無しさん
2007/05/15(火) 04:48:26ここでレスしている人に対して噛み付いてくるメガネデヴピッツァですた(・∀・)
0819デフォルトの名無しさん
2007/05/15(火) 04:49:140820デフォルトの名無しさん
2007/05/15(火) 04:49:430821デフォルトの名無しさん
2007/05/15(火) 04:50:100822デフォルトの名無しさん
2007/05/15(火) 04:50:330823デフォルトの名無しさん
2007/05/15(火) 05:07:05おーい、ちょうど良いや、ここでふぁびょ〜んなお前ら、これに答えてやれよw
0824デフォルトの名無しさん
2007/05/15(火) 05:13:38'\0'でもこれは制御文字であって値にあらず。何が言いたいかはっきりしろよ?
このスレってやっぱ分かってねーとかそことなく揺さぶるけど、結局
自分の意見を言わずに逃げるチキンが多いよな。この前もそう。
お前分かってないなみたいなことを言ったが、答えは fgets の中の文字数の指定に
255 と入力ミスをしたのをネチネチ陰湿にあおってきただけで、そいつ自身は
fgetsの使い方についてろくに答えず。入力ミスしたやつは間違いにしろ
参考にできるページを参照してたが、このスレのタイトルを理解しておらず
答える気がないくせに相手にだけくだらねぇ間違いを指摘する程度でここにいるなら
出て行った方がよくね?何、自分にとってイラつくものを見て気分を害したんだよ!みたいな
不満をわざわざいい掛かってくるのか、さっぱりわからねぇ。こんなところにいるくらいなら
車軸の壊れそうなジェットコースターにでも乗ったら?
0825デフォルトの名無しさん
2007/05/15(火) 05:26:00a=0; a='\0'; はおkだが、前者は0という値、後者は明らかに文字データゆえに
\0は文字ではあるが値じゃないんだが、それすら理解していないのはどっちだぁ〜〜い?
NULLはWikiにも記録されているが、ゼロと区別するためのドイツ語で0を意味するnullを用いて
何もないを意味するが、null文字は表示される文字も何もない文字として扱われていて
割り当てられている文字コードは0だが文字そのものはアルファベットも数”字”も含めて
文字であって”値”ではない。\0 およびその他制御文字は表示されないけど文字であって
値ではない。あたいも値ではない。
0826デフォルトの名無しさん
2007/05/15(火) 05:27:21char 型というのは CHAR_MIN〜CHAR_MAX の値を入れることの出来る整数型であって、
C には「文字型」なんて型はないんだよ。
0827デフォルトの名無しさん
2007/05/15(火) 05:28:20誰かさん、敢えて\0と'\0'のシングルクォートを強調したが、それをつけてんなら
なおさら値じゃなくて文字データだよなぁ。まさか、値にわざわざ''をつけて代入してんのかーい?
0828デフォルトの名無しさん
2007/05/15(火) 05:30:20表現することの出来る、だ。
0829デフォルトの名無しさん
2007/05/15(火) 05:31:05調べられる参考文献を参照しろってーの。ろくにそういうのも出さずに
ただ自分が思った(間違った)理論を提唱されても、お前が決めた仕様でも規格でも
ルールでもないだろって話で流されるよ。本来の基本概要を理解している、知っている人には
うそは通用しない。\0は制御文字であって値じゃない。あたいでもそんなことは分かっている。
勝手にありもしないことを定義しないでくれ。\0を文字コードで参照するなら0なら分かるし
文字データとして入れるのに '\0' で指定するなら分かるが、値じゃない。文字だ。
いつまでもモジモジしてんじゃねーぞ。
0830デフォルトの名無しさん
2007/05/15(火) 05:35:41読むだけならタダだ。
0831デフォルトの名無しさん
2007/05/15(火) 05:38:34文字データ。文字コードによって割り当てられている文字データ。
その文字コードがあっても、コードに対応した文字データがなければ
文字コードを使ってもナンセンス。\0は便宜上使われている文字であって
これは値ではない。そして本来は表示されない制御文字も、便宜上
使えるようにと割り当てられている代用の文字があるだけであって
\a \n \t そのものは値ではなく制御 文 字 であーる。
そんなの当たり前なのに、なーーにが値だ、あたいにはそんな屁理屈、通用しないかんね。
0832デフォルトの名無しさん
2007/05/15(火) 05:40:080833デフォルトの名無しさん
2007/05/15(火) 05:43:31値に対しても定義が曖昧だが、みたまんま、\0 \a \t \n は制御文字として
代用で使われているものであり、数値ではない。数字だって場合によっては
数値ではなく数字(数の文字)として扱われるが、その数の文字に対してだって
文字コードが割り当てられているけど、数字のまんまの数値で文字コードは割り当てられて
いないのは、ASCIIコードの対応表を出漁するプログラムで一目瞭然。
そう、単に文字コードが割り当てられているんであって、文字そのものは
値じゃ〜〜ないんだよ。制御文字として代用されたものだけ特別扱いで値になっちゃうの?
それじゃ、アルファベットや数字も値?値じゃ〜ねぇなぁ、文字データは演算できんよ。
割り当てられた文字コードを数値として演算することは出来るけどな。
たとえばAに割り当てられている文字コード1を足してBにすることが出来るというのは
説明済み。だけど、Bに1を足すのは不可能。文字の結合として B1 としちゃう
環境や言語は存在するから、要注意。文字は文字データであって値にあらず、これ当たり前。
0834デフォルトの名無しさん
2007/05/15(火) 05:44:23int main() {
int a = 1;
a = '\0';
printf("%d", a);
return 0;
}
0835デフォルトの名無しさん
2007/05/15(火) 05:44:57それくらい知ってるよ?割り当てられている文字コードと文字データをごっちゃにしないよう
今後は注意しましょうね♪ さっ、これにこりたらこんなところにいないで
とっととジェットコースターにでも乗って来い。頭がスカッとすっぜ?
0836デフォルトの名無しさん
2007/05/15(火) 05:54:03と今更こんなことを言ってみるが、みんな寝ちゃったかなw
0837デフォルトの名無しさん
2007/05/15(火) 05:56:040838デフォルトの名無しさん
2007/05/15(火) 06:02:230839デフォルトの名無しさん
2007/05/15(火) 06:11:240840デフォルトの名無しさん
2007/05/15(火) 06:20:18‖ | ∨
‖現実 ∧_∧ .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂ ) ( と)
凵 し`J U U
___ 読めませ〜ん
‖ | ∨
‖空気 ∧_∧ .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂ ) ( と)
凵 し`J U U
___ 知りませ〜ん
‖ | ∨
‖常識 ∧_∧ .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂ ) ( と)
凵 し`J U U
___ ありませ〜ん
‖ | ∨
‖未来 ∧_∧ .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂ ) ( と)
凵 し`J U U
0841デフォルトの名無しさん
2007/05/15(火) 06:20:280842デフォルトの名無しさん
2007/05/15(火) 06:24:220843デフォルトの名無しさん
2007/05/15(火) 06:41:30http://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' を使う。
(略)
0844デフォルトの名無しさん
2007/05/15(火) 06:50:520845デフォルトの名無しさん
2007/05/15(火) 06:52:31便宜上代用されている\0 \a \n \tがあってもそれを値だと思っているよw
文字と値の違いが分からないからって、プログラムが出来ないわけじゃないから
安心しろ。だけどお前の頭じゃ限界が見えているから、言語の使用とか
電子計算機の仕組みにかかわらず大学で受ける授業にはついていけないだろうから
低学歴のまま人生を諦めろ。まぁ、学歴が高くなくても成功する人も稀にいるから
努力は怠らないこったね。つまらないことに労を費やしているうちに、老いていくし
元気もなくなるから、早いところ人生の積み重ねを始めておけ。
間違っても間違いを押し切ることはするな。\0 が値に見えるなら目じゃなくて頭が
どうかしているよ。
0846デフォルトの名無しさん
2007/05/15(火) 06:54:170847デフォルトの名無しさん
2007/05/15(火) 06:54:40ダウト。文字データそのものは電子計算機はもってないんだよ。
人間が文字として認識する形を示すものを、文字コードで対応させて
参照しているのが分からないみたいだね。所詮、大学未満の考える
つまらない浅はかな考えだな。大学で普通に習うから、まだ受験するチャンスがあるなら
がんばって大学に行きな。基本的には入学に年齢制限はないから。60過ぎても入学する人もいるし。
0848デフォルトの名無しさん
2007/05/15(火) 06:55:00○規格票
0849デフォルトの名無しさん
2007/05/15(火) 06:55:50脳内定義はどうでもいいから >>843 の規格票を読め。
0850デフォルトの名無しさん
2007/05/15(火) 06:56:12制御文字の代用で使われている文字だと言っているんだが?
どう見ても値じゃなくて円マーク+文字の組み合わせの文字だろ。
いい加減馬鹿は市ねよ。うぜぇよ。値に対する概念もない馬鹿が
0851デフォルトの名無しさん
2007/05/15(火) 06:57:48規格票の 6.4.4.4 文字定数を 100 回読んでこい。
「逆斜線表記」は「c文字」だ。
0852デフォルトの名無しさん
2007/05/15(火) 06:59:01いや、脳内じゃなくて書かれているまんま述べただけだが?
お前こそ理解しろよwwww
> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
はい、自分で爆弾抱えたまま爆発させて自爆しちゃいましたね。
決定的な証拠。表現を使うであって値とは掛かれていません。
ちなみに、null文字のコードが0に割り当てられているのは事実だが
これは人間が決めたことであってもともと電子計算機がそれをそうだという
仕組みを持っていたわけじゃないんだよ。文字そのものが数値じゃないんだから。
いい加減、文字が人間が作ったものだと気づいてね。計算機がやっているのは
あくまでも0と1の組み合わせの演算。そのデータから文字データを参照して
表示する際に文字コードを使ってんだよ。大学レベルだから、専門学校以下は黙っててね。
0853デフォルトの名無しさん
2007/05/15(火) 07:00:10ええ、だからお前もしつこいなぁ。理解力のない馬鹿は失せろ。
俺がまず否定しているいのは \0 が値ということ。値じゃなくて
どこをどう見ても文字。お前はそれを敢えて c文字だと言ってるしw
値じゃなくて文字、それについては俺がすでに述べてるんだが?
ボケは市ねよ、低学歴w
0854デフォルトの名無しさん
2007/05/15(火) 07:00:50'\0' は文字定数で値。
0855デフォルトの名無しさん
2007/05/15(火) 07:01:53残念ながら制御文字であって \0 は便宜上表示できない制御文字の代用で
使っている文字だ。値ではない。値について理解していない馬鹿は失せろwwww
0856デフォルトの名無しさん
2007/05/15(火) 07:02:30規格票の 6.4.4.4 文字定数を 100 回読んでこい。
あ、構文規則の読み方も分からない低学歴なのか?
0857デフォルトの名無しさん
2007/05/15(火) 07:05:260858デフォルトの名無しさん
2007/05/15(火) 07:05:59くどいようだが自分で墓穴を掘ってそのままあの世へ行け。
二度と人間界に戻ってくるな。これが読めないなら日本語を勉強してから出直せ。
そこにある \0 は紛れもなく
\ と 0 を並べたそれぞれが文字であり、組み合わせて値としたものではない。
これ以上理解できない曲解しかしないやつは放置するね。
値じゃないのは事実。文字コードは便宜上人間が割り当てたもので
Aそのものが値を持つとかないから。AはA。人間が作った文字コード表に
電子計算機が持つ基本の数値を割り当てただけだから。
0859デフォルトの名無しさん
2007/05/15(火) 07:06:370860デフォルトの名無しさん
2007/05/15(火) 07:07:190861デフォルトの名無しさん
2007/05/15(火) 07:07:32これが見えないのか?
0862デフォルトの名無しさん
2007/05/15(火) 07:07:39a='\0'; とした場合、明らかに文字データを使っているんであって
a=0; のような値は使われていない。ちゃんと文字データと値の違いを理解しましょーね
大学未満w
0863デフォルトの名無しさん
2007/05/15(火) 07:10:03>1 バイトの実行文字に対応する単一の文字を含む単純文字定数の値は、
>対応付けた文字の表現を整数として解釈した数値とする。
これも読めないのかな。
0864デフォルトの名無しさん
2007/05/15(火) 07:10:53値になっちゃうらしいよ?w どこをどう見ても \ も 0 もつなげても \0 という 文字 です
ありがとうございました。文字と値の違いが分からない痛い子は以後放置よろ。
0865デフォルトの名無しさん
2007/05/15(火) 07:11:16int main() {
char a = '\0';
printf("%s", a == 0 ? "'\\0' == 0" : "");
return 0;
}
0866デフォルトの名無しさん
2007/05/15(火) 07:12:240867デフォルトの名無しさん
2007/05/15(火) 07:13:290868デフォルトの名無しさん
2007/05/15(火) 07:13:55文字と値の違いも分からない弱い頭ってやーね、こいつぜってー最後は犯罪者になってんな
理解力がないのが自分だと気づいていない、判断力を失った麻薬中毒者のごとく
0869デフォルトの名無しさん
2007/05/15(火) 07:14:540870デフォルトの名無しさん
2007/05/15(火) 07:16:490871デフォルトの名無しさん
2007/05/15(火) 07:17:06ちゃんとそのnull文字の文字コードが入ったデータを示すアドレスが入っているんであって
>>580がいう値0なのにアドレスなしってのが間違いって話なんだが?
何ここまで複雑に話をこじらせちゃってんだろうねw
これだから理解力のないやつは、何か相手の知ってなさそうなことを持ち出して
揺さぶろうとするんだけど、自分の理解力のなさが露呈されて墓穴を掘るんだよねw
0872デフォルトの名無しさん
2007/05/15(火) 07:18:050873本日の自作自演擁護厨
2007/05/15(火) 07:18:34文字は値だな。
846 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 06:54:17
規格表を見る限り、\0 \a \n \t は「c文字」であって「文字」ではない。
「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。
「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。
ちゃんと自分で文字と言っているのに文字じゃないとか言い出す大ボケかますしw
0874デフォルトの名無しさん
2007/05/15(火) 07:18:560875デフォルトの名無しさん
2007/05/15(火) 07:19:47>3.7.1 文字、1バイト文字
><プログラミング言語Cでの意味> 1バイトに納まるビット表現
0876デフォルトの名無しさん
2007/05/15(火) 07:19:52ちゃんと'\0'と書け、と。
(でも、そうすると、854,855の対応が気になるわけだけど)
0877デフォルトの名無しさん
2007/05/15(火) 07:19:58そんな暇あるならバイトでもしろよ
0878デフォルトの名無しさん
2007/05/15(火) 07:20:460879デフォルトの名無しさん
2007/05/15(火) 07:22:22日本じゃもともと存在していなかったんで、¥(円マーク)をバックスラッシュの代用で
使ったって話で、それについて制御文字の表現を \ を前に用いる規格があるって話で
>>843 は文字が値とかって話じゃなくて、制御文字を日本では \ との組み合わせで
使われているって話でしょ?何勘違いして直接関係ない文献を勘違いしたという
意味の分からん説明をしているのか、理解不能だわ。
> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
これについてはあくまでも表現の仕方であって、値として使っているって話じゃないよ。
JIS規格におけるバックスラッシュの代用が \ って話だろw
0880デフォルトの名無しさん
2007/05/15(火) 07:25:560881デフォルトの名無しさん
2007/05/15(火) 07:28:110882デフォルトの名無しさん
2007/05/15(火) 07:28:380883デフォルトの名無しさん
2007/05/15(火) 07:31:13でも書かれているけど、明らかに '\0' をナル文字といって値とは言っていない
敢えて値というならそれは 0。\0 でなくて敢えて '\0' というならなおさらそれ自身は値じゃなくて
なる文字。文字がなんなのか、どのように制御されているのか分からない馬鹿って困るな。
大学レベルじゃまずついていけない頭の持ち主か。何JIS規格のバックスラッシュの
代用について話をしてんねん、ボケが
0884デフォルトの名無しさん
2007/05/15(火) 07:31:460885デフォルトの名無しさん
2007/05/15(火) 07:32:16「この規格で規定する基本文字集合の中の二つの要素
\と〜は、JIS X 0201では、それぞれ¥(円記号)と
 ̄(オーバーライン)に置き換える」
で既出なんだな
0886デフォルトの名無しさん
2007/05/15(火) 07:32:24規格票読んでないのバレバレ。
0887デフォルトの名無しさん
2007/05/15(火) 07:34:020888デフォルトの名無しさん
2007/05/15(火) 07:34:080889デフォルトの名無しさん
2007/05/15(火) 07:35:54文字定数が('A'とか'B'とか'\0'とか)が値を持たないといいたいわけ?
0890デフォルトの名無しさん
2007/05/15(火) 07:37:17数値以外は値じゃねー、と考えてそうだ。
0891デフォルトの名無しさん
2007/05/15(火) 07:39:25#define TEST '\0'
int main() {
printf("%d", TEST);
return 0;
}
0892デフォルトの名無しさん
2007/05/15(火) 07:39:59こだわっているポイントがイマイチ分からない
0893デフォルトの名無しさん
2007/05/15(火) 07:41:290894デフォルトの名無しさん
2007/05/15(火) 07:42:08gets()
NULL
\0
他になんかあったっけ?
0895デフォルトの名無しさん
2007/05/15(火) 07:42:24fflush(stdin);
0896デフォルトの名無しさん
2007/05/15(火) 07:42:290897デフォルトの名無しさん
2007/05/15(火) 07:42:59メモリにタグビットかなんかがついてて。
0898デフォルトの名無しさん
2007/05/15(火) 07:44:51> 次は,エスケープ文字です。
> \a ビープ音(警報)
略
> # [例1]'\0':ナル文字
> # [例2]'\x00':ナル文字
エスケープ”文字”です。おまけにシングルクォートつきで '\0' ナル”文字”
どこにも値なんて書かれていましぇ〜〜〜ん。'\0'と敢えて表記するなら
なおさらナル”文字”であって値じゃありましぇ〜〜〜ん。そして
僕は死にましぇ〜〜ん、C言語あるから!
0899デフォルトの名無しさん
2007/05/15(火) 07:44:58malloc&freeを忘れてもらっては困るな
0900デフォルトの名無しさん
2007/05/15(火) 07:45:19数日経つと「そんなの当たり前じゃないか」とか言い始めるタイプ。
0901デフォルトの名無しさん
2007/05/15(火) 07:46:20>>875
0902デフォルトの名無しさん
2007/05/15(火) 07:46:26お前の低レベルな頭じゃ文字と値の違いがなくて、数字の0として扱われている0も
値の0なんだろうねwwww 文字と値の違いが分かってないから、数字が入ったとき
数値との区別がついてねーようだな。お前、文字と数字の入り混じったデータを
扱ったこともない素人だろw
0903デフォルトの名無しさん
2007/05/15(火) 07:46:560904デフォルトの名無しさん
2007/05/15(火) 07:47:26宿題スレじゃもう誰も相手しなくなったのに。
0905デフォルトの名無しさん
2007/05/15(火) 07:47:450906デフォルトの名無しさん
2007/05/15(火) 07:48:30いや、モロニ表現って書いてあるやん。ところでさぁ、話をそらすなよ。
きゃつは敢えてシングルクォートをつけて '\0' を値といったんだぞ?w
JIS規格じゃもろにそれをなる文字の表現とされているんだが?w
お前の場合、Aも値とか言いそうで怖いわ。Aは16進数では確かに値として
扱われることもあるが、文字と値をごっちゃにしてたら、Fまで値になって
E以降が文字になってそうだなw
0907デフォルトの名無しさん
2007/05/15(火) 07:51:55⊂⌒( ・ω・) はいはいそのとおりそのとおり
`ヽ_っ⌒/⌒c
⌒ ⌒
0908JIS規格の逆斜線の話を持ち出した大ボケの最初の定義
2007/05/15(火) 07:53:22なんか変な方向に行ってるみたいだな。
1. ヌル文字の値が '\0' なのは規格で決まってる。
2. \0 という特別なエスケープシーケンスは規格で用意されておらず、
これは 8 進数の値を直接埋め込むエスケープシーケンスでしかないので、
'\0' の値はどの環境でも厳密に 0 になる。
(そもそもそんな特別なエスケープシーケンスを用意してしまったら、
8 進数で 0 を埋め込むことが不可能になってしまう)
これでいいだろ、もう。
1. ヌル文字の値が '\0' なのは規格で決まってる。
^^^^^^^^^^^^^^^
表現はJIS規格でそうだが、値とは書かれていない。強いて値というならそれは0。
割り当てられている文字コードが0。あくまでも\にも0も文字、組み合わせてもそれらは
文字列という解釈はされど、C言語ではそれをエスケープシーケンスで使われる
表示できない文字を代用した文字コードが使われているって話であって
それらは値ではない。んじゃ、アラートとして使われるアラートの値は'\a'って言うかね?
こいつは \ の後ろに 0 があったんで、その数字に目がいってしまい、値と言ってしまったんだろうけど
それは0という文字であって値ではないんだよ。んじゃ、\a が値になるんかね?
これはどう見ても文字列であって、その組み合わせを代用して表示できない文字をあるように
使っているのさ。それが理解できないから大学未満レベルって言われるんだよw
0909デフォルトの名無しさん
2007/05/15(火) 07:53:26char 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;
}
0910デフォルトの名無しさん
2007/05/15(火) 07:54:10「文字として扱うか、数値として扱うか」ならプログラム上での扱いによる
0911デフォルトの名無しさん
2007/05/15(火) 07:59:120912デフォルトの名無しさん
2007/05/15(火) 07:59:29\b バック・スペース(後退)
\f フィード(書式送り)
\n 改行
\r キャリッジ・リターン(復帰)
\t 水平タブ
\v 垂直タブ
\' シングル・クォーテーション '
\" ダブル・クォーテーション "
\? ?
\\ バックスラッシュ \
さぁ、これらもそれぞれ 改行の値は '\n'、水平タブの値は '\t'って言うかね?
表示できない、エスケープ文字って俺は言うね。そう、それらには表示できる文字が
存在しないから、便宜上代用されているんであって、別にその\との組み合わせが値
って言うものにはなっていないんだよ。強いて値って言うなら、割り当てられている文字コードに
対してなら理解は出来るが。実際のところ、整数型の値として文字コードが格納されているしな。
文字そのものは数値としては存在しておらず、文字コード表から該当する、登録されている文字を
表示させる仕組みがあるんであって、実態は数値なのさ。だから敢えて文字コードを参照する
ソースを書いてやったのに、理解していないなんて・・・だめだな。
お前じゃ汎用電子計算機の仕組みについて学ぶのは無理だ。その仕組みの原理にのっとって
プログラムだって作られているんだが・・・
0913デフォルトの名無しさん
2007/05/15(火) 08:00:24定義された用語ではないな。
0914デフォルトの名無しさん
2007/05/15(火) 08:03:52さて、今日は休みだがお前らには付き合ってられん。悔しかったら
どこでも良いとは言わないが、施設の整った大学にくらい通って勉強してみろ。
実際にその原理について習う実験や研究をした人間とじゃ格が違うぜ。
もちっと電子計算機の基本原理を理解してから出直せ。
文字データそのものは数値としては存在しないよ。文字だって人間が使っている文字みたく
見えるように視覚的にコンピュータが実装している範囲内の表現能力を用いて構成されてんだから。
0915ここでフレーム投下
2007/05/15(火) 08:04:14期待通りに出力させるにはどうしたらいいでしょう。
0916デフォルトの名無しさん
2007/05/15(火) 08:11:06別にお前のポリシーなんて誰も聞いてないよ
0917デフォルトの名無しさん
2007/05/15(火) 08:11:55int main() {
char str[] = "abcdefghijk";
for (unsigned int i = 0; str[i] != '\0'; ++i)
printf("%p:%x ", str+i, str[i]);
return 0;
}
0918デフォルトの名無しさん
2007/05/15(火) 08:13:580919デフォルトの名無しさん
2007/05/15(火) 08:15:360920デフォルトの名無しさん
2007/05/15(火) 08:16:420921デフォルトの名無しさん
2007/05/15(火) 08:17:310922デフォルトの名無しさん
2007/05/15(火) 08:18:16数値ではなく数”字”だから。\の後ろに数値を参照していると思ったんだろうね、可愛そうに。
どう考えてもそれも含めて\と組み合わされた文字列をエスケープ文字として代用しているだけです
ありがとうございますた。
0923デフォルトの名無しさん
2007/05/15(火) 08:19:10fj的フレームですらないのが困り物だな。manだの規格書だの読めば済むことをグダグダと・・・
0924デフォルトの名無しさん
2007/05/15(火) 08:23:32int 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;
}
0925デフォルトの名無しさん
2007/05/15(火) 08:26:52あほが二人だと始末に負えないな
0926デフォルトの名無しさん
2007/05/15(火) 08:27:580927デフォルトの名無しさん
2007/05/15(火) 08:27:57こんなに長文を書きながら密度がスカスカの議論を延々と…
0928デフォルトの名無しさん
2007/05/15(火) 08:36:240929デフォルトの名無しさん
2007/05/15(火) 08:36:57void に向かって``半角''の一言をだして, 引き際失った奴を思い出したよ...
# fj だけじゃないけどな, void + ``半角''
0930デフォルトの名無しさん
2007/05/15(火) 08:40:29俺も今後'\0'はナル文字じゃなくてなる文字の値って言ってあげるから。
それよりもさぁ、最近、里田まいが気になるんよ。俺、別に今までハロプロだのモー娘。だの
まったく興味がなったんだけどさ、クイズヘキサゴン2に出ている里田まいを見て
なんかこう、キュンッときたんよ。辻と違ってまだ処女だったらええのになぁ〜なんて
期待しつつ、プログラミングをしているわけだ。そんな俺ってどうよ?C言語ならぬ
Cまでいけそうかな?
0931デフォルトの名無しさん
2007/05/15(火) 08:40:53文字と数値がメモリ上でも区別されてると思い込んでる人種がいるだろ。
COBOうあなにをするタテイスカンナニラセ@「
0932デフォルトの名無しさん
2007/05/15(火) 09:14:230933デフォルトの名無しさん
2007/05/15(火) 09:25:34レスを付けて何か返ってくるというリアルワールドでのコミュニケーションの代償行為をほぼ唯一の生きがいとしているだけなのに。
0934デフォルトの名無しさん
2007/05/15(火) 09:30:03人の噂話、悪口、武勇伝等の自慢話ばっかりでうんざり
2chが悪口ばっかりとか生産性の無いネタばっかりって言える人は幸せ者
0935デフォルトの名無しさん
2007/05/15(火) 09:31:40素人にはオススメできない。
0936デフォルトの名無しさん
2007/05/15(火) 09:32:560937デフォルトの名無しさん
2007/05/15(火) 11:54:240938デフォルトの名無しさん
2007/05/15(火) 12:01:110939デフォルトの名無しさん
2007/05/15(火) 13:04:210940デフォルトの名無しさん
2007/05/15(火) 13:20:05取得した引数で四則演算を行うプログラムを作成しているのですが、
オーバーフローのチェックで悩んでいます。
加算、減算については出来たのですが、乗算のオーバーフローチェックが
分かりません。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の形式で
実行します。
0941デフォルトの名無しさん
2007/05/15(火) 13:29:020942デフォルトの名無しさん
2007/05/15(火) 13:32:03lop*rop (lop>0 rop>0)について調べる場合
lop>INT_MAX/rop のときオーバーフロー
負数とか考えると面倒だね
0943デフォルトの名無しさん
2007/05/15(火) 13:40:230944デフォルトの名無しさん
2007/05/15(火) 13:42:04n周まわって 結果が正のまま とかありえそうだし
0945デフォルトの名無しさん
2007/05/15(火) 13:48:36マルチ乙。
加減算も自分でやったんじゃないんだろ?w
Hackmem とかhacker's delight で調べてみ。
日本語訳も出版されている。
0946デフォルトの名無しさん
2007/05/15(火) 13:51:21いやスミマセン
0947デフォルトの名無しさん
2007/05/15(火) 13:53:30負数は先読み計算で。
0948デフォルトの名無しさん
2007/05/15(火) 13:59:210949デフォルトの名無しさん
2007/05/15(火) 14:02:51-2147483648 * -1 = -2147483648や
2147483647 * -1 = オーバーフローと
なってしまいます。上はオーバーフローに下は
-2147483647になるようにしたいのですが、中々上手くいきません。
どうすればよいでしょうか?よろしくお願いします。
0950デフォルトの名無しさん
2007/05/15(火) 14:21:43途中経過のビットも出力して確認しながらやれよ。
0951デフォルトの名無しさん
2007/05/15(火) 14:28:25result=lop*rop;
if(result/lop!=rop) オーバーフロー
0952デフォルトの名無しさん
2007/05/15(火) 14:54:12っ lop=-1 rop=INT_MIN
0953デフォルトの名無しさん
2007/05/15(火) 14:56:41加減算のオーバーフローチェックはどうやったの?
0954デフォルトの名無しさん
2007/05/15(火) 15:04:30これやったら落ちてビビった (MacOSX 10.4.9 Intel Core 2 Duo)
0955デフォルトの名無しさん
2007/05/15(火) 15:11:19>>952 で同じく落ちた (Win98SE C7 600MHz)
なんと言うか恐ろしい計算だw
0956デフォルトの名無しさん
2007/05/15(火) 15:29:19これ反則だよなあ。普通の計算でも起こり得りそうで困る。
0957デフォルトの名無しさん
2007/05/15(火) 15:40:55--
movl $-2147483648, %eax
movl $-1, %ecx
idivl %ecx
--
うーん、-1で割っているだけなのに。
0958デフォルトの名無しさん
2007/05/15(火) 15:49:530959デフォルトの名無しさん
2007/05/15(火) 15:53:22C#でも落ちるかなと思ったけどOverflowExceptionが出るだけだった。
0960デフォルトの名無しさん
2007/05/15(火) 15:57:11Exception をキャッチしてないからCだと落ちる っつーことっしょ
0961デフォルトの名無しさん
2007/05/15(火) 16:04:16例外 #DE (divide error)
1. 除数が 0 の場合
2. 商が大きすぎる/小さすぎる場合
の、2. に引っかかってるみたいね。
アセンブラレベルで QWORD で使うなら十分起こりうる状況だけど、
int でやってる限りは -2147483648 / -1 でしか起こらないよね、これ。
こりゃ盲点だわ。
0962デフォルトの名無しさん
2007/05/15(火) 16:07:440963デフォルトの名無しさん
2007/05/15(火) 16:14:23どこがFloatingPointなんだか。
0964デフォルトの名無しさん
2007/05/15(火) 16:15:41イミフ。
0965デフォルトの名無しさん
2007/05/15(火) 16:15:56起きなかった
0966デフォルトの名無しさん
2007/05/15(火) 16:18:140967デフォルトの名無しさん
2007/05/15(火) 16:19:320968デフォルトの名無しさん
2007/05/15(火) 16:22:100969デフォルトの名無しさん
2007/05/15(火) 16:23:160970デフォルトの名無しさん
2007/05/15(火) 16:47:17English WikiからSIGFPEの項より
>Although SIGFPE does not necessarily involve floating-point arithmetic, there is no way to change its name without breaking backward compatibility.
0971デフォルトの名無しさん
2007/05/15(火) 17:50:560972デフォルトの名無しさん
2007/05/15(火) 18:17:22出てしまい困っています。
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;
}
0973デフォルトの名無しさん
2007/05/15(火) 18:20:50reallocの戻り値捨ててどうするんだよ。
reallocが成功したら元の領域はアクセスできなくなる。
0974デフォルトの名無しさん
2007/05/15(火) 18:22:18realloc()の使い方を勉強しろ。
それはさておき、一文字変数は判り難いだけだから止めた方がいいぞ。
#特に引き数iなんて、誤解してくれと言わんばかりだ。
0975デフォルトの名無しさん
2007/05/15(火) 18:24:420976デフォルトの名無しさん
2007/05/15(火) 18:32:470977デフォルトの名無しさん
2007/05/15(火) 18:32:480978デフォルトの名無しさん
2007/05/15(火) 18:34:57# コメントで参考書名+page 書いとくが
0979デフォルトの名無しさん
2007/05/15(火) 18:37:500980デフォルトの名無しさん
2007/05/15(火) 18:40:42数行オーダーの数式なら、そうするほうが多いけどね。
RGB⇔HSV変換とかの 条件付な式だとコメント書きにくいねぇ (で、リファレンス書いて終了w)
0981デフォルトの名無しさん
2007/05/15(火) 18:48:040982972
2007/05/15(火) 19:18:53ありがとうございます。
realloc(R[i+1], sizeof(int)*(k+2));
を、
R[i+1] = realloc(R[i+1], sizeof(int)*(k+2));
にしたら無事に動くようになりました。
結果が正しいかはこれから検討する所でありますが。
今回初めてreallocを使ってみたので、本当に間抜けなことをしていました。
重ね重ね、ありがとうございます。
変数についてですが、どうにもうまい名前の付け方が思い付きませんorz。
他の方のソースを読んで勉強していくしかないのでしょうか?
0983デフォルトの名無しさん
2007/05/15(火) 19:24:18変数名を思いつけないと言うことは、書いているものが理解できていないか説明できないかのどちらかだろう。
前者は問題外だが、後者も社会人として必要な能力だ。「相手に伝える」ことを念頭に入れて、
変数の説明をする積もりで名前をつけてみるといい。
0984デフォルトの名無しさん
2007/05/15(火) 19:35:27int i
int love, you
0985デフォルトの名無しさん
2007/05/15(火) 19:39:59あーそれは、愛のあるいい変数名だね。
って、違うでしょ。
0987デフォルトの名無しさん
2007/05/15(火) 19:52:030988デフォルトの名無しさん
2007/05/15(火) 19:58:410989デフォルトの名無しさん
2007/05/15(火) 20:11:54VS2003ならMC++, VS2005ならC++/CLIでのみ.NETを使えます。
0990デフォルトの名無しさん
2007/05/15(火) 20:12:270991デフォルトの名無しさん
2007/05/15(火) 20:17:000992デフォルトの名無しさん
2007/05/15(火) 20:28:25C言語の入門者向け解説スレです。
・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/
0993デフォルトの名無しさん
2007/05/15(火) 20:29:05C/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/
// ここまでテンプレ
0994気まぐれアナスイ
2007/05/15(火) 20:32:34!(Φ_Φ+){level}
0995デフォルトの名無しさん
2007/05/15(火) 20:33:11こっちへ吸収されていいと思う
【初心者歓迎】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
0996気まぐれアナスイ
2007/05/15(火) 21:57:37スレを、そちらに変更?
0997デフォルトの名無しさん
2007/05/15(火) 22:13:54Linuxなら./program > text.txtとするらしいのですが、windowsの場合がわかりません
0998デフォルトの名無しさん
2007/05/15(火) 22:15:03同じ事やってみた?
0999デフォルトの名無しさん
2007/05/15(火) 22:17:131000デフォルトの名無しさん
2007/05/15(火) 22:17:5410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。