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

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

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

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

コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!

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

各種リンクは>>3-20あたり(誰か適当に貼って)

C言語なら俺に聞け! Part 80
http://pc5.2ch.net/test/read.cgi/tech/1084749585/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
しなやかに2get
>>1
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
4デフォルトの名無しさん:04/05/29 15:31
4get
5デフォルトの名無しさん:04/05/29 15:36
まろやかに5get
6デフォルトの名無しさん:04/05/29 15:40
豪快かつ華麗に6get
7デフォルトの名無しさん:04/05/29 15:43
7get in nullpo
7getし損ねた。
7にあつあつのおでんをぶつけてやる。
ついでににガッ!!
ニガって何だよと思った
10デフォルトの名無しさん:04/05/29 16:46
すいません、初めてここで質問します
char型というのはstrcpyとかstrcatとかで繋げることはできないのでしょうか?
やりたいことはchar str[]にchar str1を付けたしたいんです。
どうかよろしくお願いします
11デフォルトの名無しさん:04/05/29 16:49
>>10
ぬるぽ
12デフォルトの名無しさん:04/05/29 16:58
char str[MAX_PATH];
char str1;
strcpy(str,"ABCD");
strcat(str,str1);
>>12
突っ込みどころ満載だな。
>12
わけわからんコードをポストすな
sprintf(str, "%s%c", str, str1);
16デフォルトの名無しさん:04/05/29 17:02
>>13 >>14

あなたたちお二人 strcatですね
お幸せに(はあと)
1710:04/05/29 17:06
わかりにくくてすみません
char str[] = {0x41,0x42,043};
char str1 = 0x44;
strcat(str,str1);
printf("%x\n",str[3]);
こんな感じでやりたいんです
1812:04/05/29 17:07
>>17

すいませんお手上げです。お力になれなくてすみません
関数がないなら作ればいいじゃない
>>17
普通にsprintf()でくっ付けたら良いんとちゃう?
もしくは普通にprintf("%s,%c\n",str,str1);
って感じで・・・
21デフォルトの名無しさん:04/05/29 17:13
#include <stdio.h>
#include <stdlib.h>
int main(void){
char str[] = {0x41,0x42,043};
char str1 = 0x44;
int n = sizeof str;
realloc(str, n + 1);
str[n] = str1;
printf("%#x\n",str[3]);
return 0;
}
22デフォルトの名無しさん:04/05/29 17:13
>>17
printfのとことかが意味不明だが、
普通に
printf(%s)とprintf(%c)を続けてやればいいのでは?
%xは16進数をダンプするわけで、文字列は表示できない。
2322:04/05/29 17:14
あぁ、ごめん。printfは意味不明じゃなかったっす。
>>21
どっかいけよ
>>21
>int n = sizeof str;
はげわら
26デフォルトの名無しさん:04/05/29 17:18
ここは面白コードのインターネッツですか?
>>17
char str[] = {0x41,0x42,043};
この時点でstr[]のサイズは3なので、
後部にstr1を追加する余裕はありません
28あぼーん:あぼーん
あぼーん
>>25
何がおかしいのか素でわからんから、教えてくれよ。
>>20
いや、なんというか、printfすることが目的じゃなくて
配列に入れたいというか・・・

>>21
どうもです、できました。でも長くなりますね。
char型の配列を選ぶことが間違いでしょうか・・・
31デフォルトの名無しさん:04/05/29 17:20
自分で送れ厨房
なんで俺のメアド晒してんだよ
3310:04/05/29 17:22
>>27
あ、そうなのですか、すみません、
では
char str[4] = {0x41,0x42,043};
に訂正ということでお願いします。
3425:04/05/29 17:22
>>29
まじか・・・。つりならゆるさんぞ。
sizeofはsizeof(型名)の形で使う。
型のメモリサイズを得る演算子だから、変数の領域を取得することは出来ない。
strの長さを知りたいならstrlen(str)ってやるの。
35デフォルトの名無しさん:04/05/29 17:23
char nullpo[1] = {0xFF} // 255
って何ですか?さっぱり分かりません。1から教えてください。というか教えろ糞ども
>>33
駄目みたいです。スマソ
>>34
バカはお前だ

>>33
配列はrealloc出来ないから、

char str[4] = {0x41,0x42,043};
char str1 = 0x44;
str[3] = str1;

とするのが正解。
>>34
お前氏ね。
3924:04/05/29 17:25
>>29
素なのかよ。realloc()の第一引数はmalloc(), calloc(), realloc()で
返ってきた値しか使っちゃならん。それ以外の値を使うと不定となる。
解放済みのも駄目。
>>39
アンカーを良く見ろ、ネタか?
41デフォルトの名無しさん:04/05/29 17:28
int i = str1;
strcat(str, (char*)&i);

strの要素数が十分ではじめに0クリアされていてsizeof(int)>sizeof(char)ならできる。
「できる」と「やっていい」は別。
これがなぜ「できる」のか分からないのなら、やるべきではない。
っていうか、やるべではない。

なぜstrcatに目をつけたかがそもそも謎。
>>40
ん? realloc()のは分かっててやってるのか?
初心者いるようだから惑わすようなことするなよ。
4321:04/05/29 17:30
そうだったのか・・・むかついたが勉強になった・・・
MSDNより

Example
// expre_sizeof_Operator.cpp
// compile with: /EHsc
#include <iostream>

size_t getPtrSize( char *ptr )
{
    return sizeof( ptr );
}

using namespace std;
void main()
{
    char szHello[] = "Hello, world!";

    cout << "The size of a char is: "
           << sizeof( char )
           << "\nThe length of " << szHello << " is: "
           << sizeof szHello
           << "\nThe size of the pointer is "
           << getPtrSize( szHello ) << endl;
}
4510:04/05/29 17:34
char str[4] = {0x41,0x42,0x43};
char str1 = 0x44;
int n = strlen (str);
// realloc(str, n + 1);
str[n] = str1;
printf("%#x\n",str[3]);
でも出来ました
有難うございます >>34

strlenとsizeofの違いは後で調べます
あ、でも
警告: 関数 `strlen' の暗黙の宣言
となります。これも調べます。
>>10
>>34の発言は真に受けちゃダメだよ
4810:04/05/29 17:37
>>41
うーん、配列の追加とかそんな感じで検索してたら
strcatに行きついたんですが、もっと別の方法がありますでしょうか?
>>41
29が突っ込んだのは

>>int n = sizeof str;
>はげわら

これについてだろう。sizeof strは正しい構文。

>>41
Little-Endian依存
>strの要素数が十分ではじめに0クリアされていてsizeof(int)>sizeof(char)ならできる。
こんな嘘書くな
strcatとかstrlenは最後に'\0'が入ってることを前提にしてるから
今回の場合では使えないよ。
っていうか、文字型変数に str1 なんて命名するなよ。
何で誰も突っ込まん。
>>50
char str[] = {0x41,0x42,043};
だと使えないけど
char str[4] = {0x41,0x42,043};
ならstr[3]には0が勝手に入るからstrlenは使えるでしょ。
>>50
char str[4] = {0x41,0x42,0x43};

初期化指定が省略されている分は 0 で初期化されるから、
今回のケースに限り問題ない。
5441:04/05/29 17:42
>>49
それもやね。intel界の人間なんで、忘れとった。
何かCスレらしくなってきたじゃないか(゚∀゚)
56デフォルトの名無しさん:04/05/29 17:52
ええじゃないか、ええじゃないか(゚∀゚)
57デフォルトの名無しさん:04/05/29 17:57
初歩的な質問ですみません。
Cのソースやヘッダーを解析して宣言されている構造体とそのメンバの一覧を
出力するような解析ツールをご存知でしたら教えて下さい。

ベクターで探したのですが、関数のリスト表示はあっても構造体を
解析するものが見つからなくて、
>>57
自分で作れ!
59デフォルトの名無しさん:04/05/29 18:41
>>前スレ997
>メンバ変数ということはC++でスレ違いだが

釣りか?
60デフォルトの名無しさん:04/05/29 18:49
Cでは単にメンバーだな。
Cだとフィールドって言ってたんじゃないの?
まぁどっちでも通じるからいいけど。
ビットフィールドと勘違いしてそう
63デフォルトの名無しさん:04/05/29 19:12
C言語を無料でDL出来るサイト教えれ
>>3も読めない芽倉ですか?
>>63
K札で作ると良いよ
66デフォルトの名無しさん:04/05/29 19:29
C言語を作る方法教えれ
えっとね、c言語ってのは規格なんだよ
だからc言語なんてつくれないんだよ
きゃー、ネタにまじレスしちゃったー
にっげろ〜
↑釣り
釣堀で釣りをしなくて一体どうする?
program::= expression
expression::= ε

これC言語。
作者の俺が言うんだから、間違いない。
71デフォルトの名無しさん:04/05/29 19:54
おお、リッチーさん
ようこそ!
72デフォルトの名無しさん:04/05/29 19:57
リッチーさんて、著作権違反幇助幇助幇助で逮捕された香具師?
"C言語"は商標じゃないからな、誰が名乗っても問題ない。
74蟹飯:04/05/29 20:00
ども
75デフォルトの名無しさん:04/05/29 20:01
え、そうだったの? 知らんかった
禿がバイト見つけたってニュースは聞いたけど
http://www.cs.tamu.edu/reception
76デフォルトの名無しさん:04/05/29 20:40
>>21
reallocの戻り値を使わないと意味無しどころかリークしまくり。

>>46
#include <string.h>
ちなみにC++なら
string s = "ABC";
s += "D";

>>57
http://www.annie.ne.jp/~y-oka/pc/gnu_global/

>>59
どう見てもVC++での話だろw
どうせpublic変数にしてるかforの内側で何かメソッド呼んだりしてるんだろ。
>>76
s += 'D';
string s("ABC", 3);
>>77
まぁ同じだが、漏れ的には""にするな。あとで2文字にしたいかも知れないから。

>>78
3とかmagic number書きたくないな。"ABC"も同じだが。
どっちにしてもそんなまんどくさい書き方はしない。
変数名こそstrと言う名前だけど、あれは文字列じゃないんだよ。
実質的に同じ結果が得られると言って、"ABC"と [4]={0x41, 0x42, 0x43}は同じじゃあない。
>>80
Cならまぁそう言えるが、本質じゃないな。
前スレで同じ質問しました、すみませんがもう一度します。
ttp://www.sikaku.gr.jp/nj/index4.html
C言語プログラミング能力認定試験(3級)を受けようと
思っていますが、どのくらいの難しさでしょうか?アドバイスお願いします。
>>82
アホか
サーティファイ認定委員会
http://www.sikaku.gr.jp/certify/200.html
>>57
Doxygenとか、Graphviz
86デフォルトの名無しさん:04/05/30 01:24
>82
#define DIM(x) (sizeof(x)/sizeof((x)[0]))
上記がcharから構造体の配列にも使える事が理解できれば合格です。
87デフォルトの名無しさん:04/05/30 01:29
> 実行速度はn%8よりn&7のほうが速いのですね。

そもそも計算結果ちがうだろ。

(ふのすうのとき)
88デフォルトの名無しさん:04/05/30 01:29
>>86
でも、分母で0番目の要素書くのが気分的にいやなのよねえ。
分子を配列名にして、分母を型名にしたい!
89デフォルトの名無しさん:04/05/30 01:55
>>88
0番目にする必要もないし、型名でも問題ないがw
>>57
Cmap
ttp://www1.ocn.ne.jp/~microsys/
解析が目的なら薦める。
私ゃ
#define numberof(x) (sizeof(x)/sizeof*(x))
だな。
92デフォルトの名無しさん:04/05/30 10:03
> 0番目にする必要もないし、型名でも問題ないがw

べつに1番めでも2番めでもいやです。

型名にすると、このマクロつかえないでしょ?
93デフォルトの名無しさん:04/05/30 10:39
>>91
sizeof*(x)
sizeof*(x)
sizeof*(x)
確かに汎用性は無くなるな。 C++ なら inline + template で無問題だが。
95デフォルトの名無しさん:04/05/30 10:42
>>86
sizeof((x)[0]
sizeof((x)[0]
sizeof((x)[0]

どいつもこいつも
不要な括弧なんか書いてるから
肝心なとこで優先順位に

 知 ら ん 間 に 助 け ら れ

だっせー芋杉
96デフォルトの名無しさん:04/05/30 10:56
>>93
何か問題でも?
97デフォルトの名無しさん:04/05/30 10:57
>>95
ぼけはおまえ。
これはsizeofによくつけるカッコではなく、
「マクロの引数だからかならずつけカッコ」だ
それぐらいおぼえてから言え。かっこわるいぞ。
>>97
>>95はsizeofに括弧つけなくてもいいってことを最近知って
他の人にそのことを言いたかったんでしょう。
それぐらい察してあげようよ。

>「マクロの引数だからかならずつけカッコ」だ
sizeof((x)[0])
このsizeof直後の括弧は違うでしょ。
9991:04/05/30 11:50
前はsizeof(*(x))だったけど、マクロだからそろえなくてもいいやってんでsizeof*(x)
なんか痛々しいですね
10193=95:04/05/30 14:58
失礼した
102デフォルトの名無しさん:04/05/30 16:04
現行の C 言語では、interface という語は予約語ですか?
もしそうであれば、 interface というのは何のための予約語
なのか教えていただけませんでしょうか?
はじめましてC言語でプログラムに悩んでるので教えてください。

u'' = [ u, v, u' , v']
v'' = [ u, v, u' , v']

'は1回微分です。微分は時間で行っています。
上の式を4次のルンゲクッタであらわしたいのですがどうすればいいですか?
すみません、103です。抜けていたので補足です。
ルンゲクッタでu'、v'を求めたいのですがどうすればいいでしょうか?
106デフォルトの名無しさん:04/05/30 16:28
>>104 C でも C++ でも interface というのは予約語では
無いみたいなんですが Visual C++ のエディタでは
色つきで表示されるし、いくつかの COM 関係の
ソースにも interface ってのが出てくるんですよ…

C99 以降とかで増えたのかと思ったけど、違うっぽい。
107デフォルトの名無しさん:04/05/30 16:30
なんかVisual C++ 特有っぽいので、
Visual C++ スレに行きます。
★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/
10893=95:04/05/30 19:36
>>102
>http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+3010%3A2003&dantaiCd=JIS&status=1&pageNo=0
これ買え。もしくは、閲覧させてくれる人か機関を探せ。
ルールブック持ってない審判が同業者にいちいち聞いて回ってるのと同じで、ひたすらみっともないぞ。
ちなみに2chはネタをネタと見抜けない人には向かないって運営者の格言があることも知っておけ。
109デフォルトの名無しさん:04/05/30 19:49
>>105
>どうすればいいでしょうか?

この語尾を、「納期○月×日で、見積もりを下さい」に変えればいい。
宛名はム板じゃなく△株式会社御中でな。
>>106
VCでCOMを使うときに使うだけだろ
独自拡張だよ
111デフォルトの名無しさん:04/05/30 20:28
>>110
独自拡張だよ
独自拡張だよ
独自拡張だよ
>>105
マルチは死ね
113ビル・ジョブス:04/05/30 22:29
可読性向上のための括弧は付けるべきです。よって86を支持。
114デフォルトの名無しさん:04/05/30 22:40
115ビル・ジョブス:04/05/30 22:49
>>114
おれはこのスレのPart.1の1だから悪いけどここに居るよ。
君が張ったリンクへは君自身が逝ってくれ。
そしてもうこのスレには二度と帰って来ないでくれ。
116デフォルトの名無しさん:04/05/30 22:51
>>115
すごい主張ですね。
素直に感心しました。
117デフォルトの名無しさん:04/05/30 23:10
>>115
必死だなw
118デフォルトの名無しさん:04/05/30 23:56
スゲーワロタw
>>113 って、まだ生きてたのか…
>>119
お前もまだ死んでなかったんだw
漏れを嫌いな香具師なんてみんな死んじゃえばいいのに・・・
>>121
好き過ぎて嫌い。ごめん。
ソシテ ダレモ イナクナッタ・・・・
∧||∧
どうも最近のCスレはいかん。
すぐに話題がそれて、意味の解らん
レスがぐだぐだ続く。
もっとためになる話をしてくれないと困るではないか。
ネタがねぇんだよヽ(`д´)ノ
Cでかぁ? 何話せって言うのよ。
オブジェクト指向でもする?
128デフォルトの名無しさん:04/05/31 00:51
http://pc5.2ch.net/test/read.cgi/tech/1085929718/39

39 :デフォルトの名無しさん :04/05/31 00:40
>>36
globalはスタティック。
ローカル変数はスタックにのるのでメモリ(ヒープ)に乗せたいときに
staticを使う。
だったら書き込むなぼけ
お前は死ねぼけ
君にとってはどうでもいいかもしれないけど、
俺ことデフォルトの名無しさんにとっては非常に重要なんだ。
ここは君だけのためのスレじゃないんだから、
いいかげんに黙ってくれないか?

 さ ぁ 盛 り 上 が っ て ま い り ま し た
WINのLSIC+CPADでコッホ曲線が書きたいです。
つまり、グラフを描きたいのですがやり方がわかりません。
参考になるHP等を教えてください。
Cに未来はありますか?
C++でもなく
ましてやC#でもなく
単なるCに未来は?
C++よりはあると思う
136デフォルトの名無しさん:04/05/31 01:03
137デフォルトの名無しさん:04/05/31 01:03
Cが進化してC++,C#,Dになったのです。
Cの未来はC++,C#,Dなのです。
138デフォルトの名無しさん:04/05/31 01:04
> おれはこのスレのPart.1の1だから悪いけどここに居るよ。

実はおれもそうだ。
139デフォルトの名無しさん:04/05/31 01:05
Kusakabeが暴れている時に来た。
int main(int argc, char *argv[]) {
  const char *const p = *argv; /* 1 */
  const char *const *const pp = argv; /* 2 */
  return 0;
}

1 で警告が出ず、2 で警告が出るのは何故ですか?
initialization from incompatible pointer type と怒られてしまうのですが。
initialization from incompatible pointer type  だから。
142デフォルトの名無しさん:04/05/31 01:08
>>140
互換性のない型へのポインタで初期化しようとしたから。
143デフォルトの名無しさん:04/05/31 01:10
歴史的にみて、
> #define LENGTHOF(x) (sizeof(x) / sizeof*(x))
を提唱するやつが5年に1回でてきてる。
(おれはいままでに数回みた)

でも、けっきょく定着しないのは、大きな欠点があるためだ。

このマクロは、関数の外の比較的グローバルな配列に使われることも多い。
で、ほかのコンパイル単位でexternで参照されていることもある。

で、このマクロを使っている関数の一部を、ほかのファイルにこぴぺして
流用するとき、そのままコンパイル通っちゃうのが危険なのよね。

もしくは同様に、ある配列のサイズをこれで計算してて、
その配列のアドレスを関数のポインターとして渡し、
その関数の中の仮引数にこれをつかっちゃったときも、
コンパイルエラーにはならない!

そこが大きな欠点だな。
144デフォルトの名無しさん:04/05/31 01:11
>>139
それは誰ですか?
145デフォルトの名無しさん:04/05/31 01:11
> 1で警告が出ず、2で警告が出るのは何故ですか?

1は文法的にまったく問題がなく、2はあるからです。
146デフォルトの名無しさん:04/05/31 01:15
C#よりDbのほうができがいいと思います。
147デフォルトの名無しさん:04/05/31 01:33
>143
externって最近めったに使わないし、ましてや配列でしょ?
その変数を操作するメソッド用意して隠蔽しちゃうからね。
最後に、十分定着していると言うかこれ常識だと思いますけど。
148デフォルトの名無しさん:04/05/31 01:41
> externって最近めったに使わないし

おまえ あほか...。最近とかそういう問題じゃあねーだろ。

> ましてや配列でしょ?

逆だろ。配列だからこそ「グローバルにするかどうか」のさかいめでは、「じゃあグローバルに
しちゃお」って確率が増えるんだろうに

> 十分定着していると言うかこれ常識だと思いますけど。

いや20年前ぐらいにはじめてみたけど、その後も、流行っては消え、流行っては消えで、
ちっとも定着しない。けっきょく生で書くのよね割り算を。
149147:04/05/31 02:11
>148
>逆だろ。配列だからこそ「グローバルにするかどうか」のさかいめでは、「じゃあグローバルに
>しちゃお」って確率が増えるんだろうに
増えねーよ。そもそもH/WでMAPされたI/O AREAくらいしかexternなんて使わねーんだよ。

君は一生、生でこいてなさい。私たちは普通に使います。
これが末端か・・・
151デフォルトの名無しさん:04/05/31 02:15
> そもそもH/WでMAPされたI/O AREAくらいしかexternなんて使わねーんだよ。

おまえ...もうちょっとちゃんとC勉強したほいがいいぞ。
152デフォルトの名無しさん:04/05/31 02:17
errnoとか。マクロになっていることもあるけど。
153デフォルトの名無しさん:04/05/31 02:22
>>151
おまえ...もうちょっとオブジェクティブなC言語の実装を勉強したほうがいいぞ。
低脳ばっか
それが2ch
>int main(int argc, char *argv[]) {
int main(int argc, const char * const argv[]) {
int main(int argc, const char * const * argv) {
int main(int argc, const char * const * const argv) {
>>143
>>147 の言う通り、常識です。
>このマクロは、関数の外の比較的グローバルな配列に使われることも多い。
そーゆーものに使う方がまぬけなだけですね。
このスレには学生が多いな。
現場を理解してないからこんなことが言えるわけで。
コーディング体系にも適材適所があるんだから、それを宗教感覚で締め付けるのはよくない傾向だな。
こんなの現場に持ち込んでもらわれちゃ凄い迷惑だ。

カッコ付けだけのオブジェクト指向逝ってよし。
気安く変数を隠蔽してくれるとデバッグし辛くなるんだよ。
162デフォルトの名無しさん:04/05/31 18:06
文字列操作教えてください。
char temp[MAX_PATH]
に30文字くらいのアルファベットが格納されるのですが
先頭から2つめのタブ以降から3つ目のタブの間の文字を
取得したいです。よろしく教えていただけないでしょうか?
163デフォルトの名無しさん:04/05/31 18:07
×よろしく教えていただけないでしょうか?
○教えていただけないでしょうか。よろしくお願いします。
>>162
strtok
>>161
変数を隠蔽した程度でデバッグしにくくなる
お前のやり方が悪いだけ。
166デフォルトの名無しさん:04/05/31 18:16
>>164
ありがとうございます。
肝心のタブはどのように判別すればよろしいでしょうか?
167デフォルトの名無しさん:04/05/31 18:17
>>166
strtokについて調べろよ
char *get_token3(char *dst, const char *src)
{
#define TAB (0x09)
int c=0;
char *d=dst;
while(*src) {
if (*src++==TAB) {
if(++c==2) {
while(*src&&*p!=TAB)
*d++=*src++;
*d='\0';
return dst;
}
}
}
return NULL;
#undef TAB
}
169162:04/05/31 18:57
>>167
>>168
非常に助かりました。感謝いたします。
170デフォルトの名無しさん:04/05/31 19:41
>>169
早くstrtokを批判できるようになれよ
>>170
批判ってどんなの?
「文字列書き換えんな」とか?
でもなんでタブ区切りなんだろうな?
MAX_PATH とかいう名前から勝手に想像すると、
':' とか、':' とかじゃないのかな? ま、関係ない話だ。
173デフォルトの名無しさん:04/05/31 19:50
>>171
ぶっぶー 外れです
ヒントは記憶クラス
174デフォルトの名無しさん:04/05/31 19:57
>>168
\t
175171:04/05/31 20:21
>>173
わかんね。ギブアップ。
おしえて。
176デフォルトの名無しさん:04/05/31 20:31
>>175
strtokにぬるぽ渡してもガッされないだろ? 何でだ??
2回目以降の第一引数はNULLだから?
>>165
おまえ、デバッガ使ったことないだろ。
デバッガの機能を理解した上で、デバッグしやすいコーディングを考えたら
バカの一つ覚えみたいに変数を隠蔽しようなんて考えは起こらないはずだ。
それでも隠蔽に拘るなら、ヘボとしかいいようがない。
どんな隠蔽してるんだ?
IUKnownで関数テーブルからいちいちハンドラ探させるるとか?
あ、変数の隠蔽か。
181デフォルトの名無しさん:04/05/31 22:13
デバッガの世話になるとは、ヘボとしかいいようがない。
それは違うと思うが、しかし変数の隠蔽でデバッグが
困難になるという状況は、思いつきにくいな。

Cで変数の隠蔽なんて大した事できないっしょ?
変数のIDテーブルとか使うのかなぁ?
構造体のネストが深いとか?
184175:04/05/31 22:20
>>176
第1引数がNULLだったら前回の続きから
(言わんとしてることは察して)
ってことになってるから ガッ されないんでしょう。

こんな感じで実装されてるのかな。

/*
* 初めて使われたときの第1引数がNULLのときの
* 振る舞いは未定義らしいので気にしない。
*
* 簡単のために第2引数は1文字ってことで。
*/
char *hoge(char *str, const char c)
{
  static char *p; /* >>173の「記憶クラス」ってのはこれのこと? */
  char *q;

  if (str != NULL) p = str;
  while (*p == c) ++p;
  for (q = p; *p != '\0'; ++p)
    if (*p == c) { *p++ = '\0'; break; }

  return *q == '\0'? NULL: q;
}

やっぱ何が問題なのかわからん。
185デフォルトの名無しさん:04/05/31 22:21
>>184
マルチスレッドな環境で
デバッグしにくい変数。

構造体のヘッダにデータサイズフィールドとか、データ型IDのがあって、
構造体の受け渡しは void* で行われて、コンテクストによっていろ
んな構造体にキャストしつつ使われている場合。

こんなんだったら嫌だな。局所的にはよくある手法だけど。
デバッグ厨の反撃まだー? マチクタビレター
188175:04/05/31 22:30
>>185
正直マルチスレッドって良くわかんないけど
>>184でいうところのpを二人以上がいじったら大変だってこと?

二人って・・・
中の人などいない!
アライメントって何ですか?
191デフォルトの名無しさん:04/05/31 23:05
広島の新井か
192デフォルトの名無しさん:04/05/31 23:13
>>190
えんばいろめんと でぃびじょん
193デフォルトの名無しさん:04/05/31 23:14
>>190
アラインメント
194190:04/05/31 23:14
分りました。
ありがとうございました。
195デフォルトの名無しさん:04/05/31 23:15
尻洗いぜーしょん
C言語でミリ秒を取得することはできますか?
出来るが環境依存
>>197
Win32APIですか?
>>196
C言語にそのような機能はありません。
ただし、多くのOSがそういうサービスを提供しているので、
その場合はCで取得可能でしょう。
(ミリ秒を取得するって変な日本語ですけど。)
Win32APIならGetTickCountかQueryPerformanceCounter/Frequency
前者はお手軽後者は高精度
>>197,>>199-200
めっちゃありがとう。
勉強になります。
すみません簡単な質問なんですが

ROM=コード部
Heap領域=アロケートにより取得するメモリ
stack部=Auto変数や引数
静的領域=staticな変数やグローバル変数
RAM=Heap領域+stack領域+静的領域

という理解で正しいでしょうか?
正しいとも言いがたい。そして、スレ違い。
>>202
違います。
違いすぎてフォローできません。
なぜ、ROMやRAMが出てくる?
>>202
ROM/RAMはハードの用語
プログラムやデータはすべてRAM=メモリ上に乗っている。
ただしコードの乗っているメモリにはCPUの機能として実行可能フラグがセットされたりする。
なのでRAMだけど書き換え不可。

後は表現が微妙だけど大筋であってる。
>>200
GetTickCountよりtimeGetTimeの方がよくない?
>>206
ライブラリがwinmmだから面倒。
計測にはQuery*のラッパークラス使うし。
208デフォルトの名無しさん:04/05/31 23:59
はいそこまで。
???
僕の職場では、普通にRAMが足らないとかROMがあと残り3kとかいう話が出るんですが
組み込みだからということですか?普通にWin上でやったら全てRAM上に取られるということですか?
fgetsでファイルから読み込んだ1行を、もう一度読みたいのですがなにかうまい解決策はないでしょうか。
いろいろ調べてみたのですが、fseekとかなのかな。。
>>209
すれ違い。
まぁ、組み込みだろうな。今時のPCじゃそんな会話は出ない。
212デフォルトの名無しさん:04/06/01 01:20
>>210
fseekする前にfgetposで場所を覚えておく。
で、fseekしたあとにfsetposで戻る。


ところで、二度目にfseekする前にその一行が変わるのか?
213212:04/06/01 01:20
おおっと、fseekはfgetsの間違いだ。
f(σ・∀・)σゲッツ!!
>>212
目的を果たす処理を聞くのではなく
自分の考えたついたアホ処理を聞いて目的は言わない。
このスレの流れなのでスルーして下さい。
216デフォルトの名無しさん:04/06/01 08:42
待ち人: 来るが遅い
>>209
そんな職場にいながら、どうしてRAMやROMを理解できないのか、
オレにはそちらの方が不思議だ。
コンピュータの一般的知識からやり直した方がいいぞ。
>>205
>プログラムやデータはすべてRAM=メモリ上に乗っている。

どさくさに紛れて適当なこと言うな。
ROMにだってプログラムやデータは載るだろ。
まぁ、書き込み可能なEPROMとかもあるしな。
微妙にスレ違いだし。
220デフォルトの名無しさん:04/06/01 12:26
実行時の話じゃないの?
>>220
じゃあ、ROMにあるプログラムやデータは、
実行時にはのっていないことになるのか?
うるせーな。そんな下等な環境の話を持ち出すなよ。
CといったらWindowsに決まってんだろぼけ。
>>222
何故、Cと言ったらWindowsなのかと(ry
>>219-221
マスクROMに載っているコードだって実行できる。
3人ともそれを知らない世代なんだろうな。
>>224
バスに命令コードを流せる「何か」であれば
譬え紙テープリーダだろうと直接実行できる。
>3人ともそれを知らない世代なんだろうな。
世代とは関係なく、ハードウェアに頓着してないだけかと。
そんなことよりスレ違いですよと。