トップページ⇒tech
1001コメント286KB

【ANSI-C】 C言語なら俺に聞け!  Part 129

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/08/27(日) 15:43:44
このスレは標準Cのみの限定スレです。
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

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

他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
【ANSI-C】 C言語なら俺に聞け!  Part 128
http://pc8.2ch.net/test/read.cgi/tech/1151282084/


GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は
専門の別スレッド↓があるのでそこへさようなら。

【初心者歓迎】C/C++室 Ver.30【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1156145524/
C/C++の宿題を片付けます 73代目
http://pc8.2ch.net/test/read.cgi/tech/1155355501/
新・推薦図書/必読図書のためのスレッド 1
http://pc8.2ch.net/test/read.cgi/prog/1146889623/
0369デフォルトの名無しさん2006/09/13(水) 10:09:23
プリプロセッサの展開が起こるタイミングが分かりません。

#define A #include "aiueo.h"

そもそもこんなことっておk?
0370デフォルトの名無しさん2006/09/13(水) 10:10:28
インスタンスとかHashtableとか言って、バリバリのJava使いだろ。
ちょっとだけCが必要になったからといって、そういうつまんねーウソついてばかりで
お前は相当嫌われてるんだろうな。
それもこのスレで聞いているし、お前相当バカだ。

そしてお前らもこういうウソぐらい見抜けよな。
ネタ以下なのにいつまでも気がつかないから、お前らカモられてるんじゃねーのか?
ケケケ
0371デフォルトの名無しさん2006/09/13(水) 10:10:54
>>368
それは本当に初心の頃なら誰でも辿る道だ。
キニスンナ

プログラマはバグを出して大きくなるのさ。w
0372デフォルトの名無しさん2006/09/13(水) 10:18:52
C++ならともかく、今時Cのライブラリなんて見つからない。
たとえば「c コンテナ ライブラリ」でググるとC++のライブラリばかり。

もし有用なサイトを知っているならURLだけでも教えてください。
このスレに聞いたのはCのライブラリ知ってる人がいると思ったから。
俺最初は「Cのライブラリありませんか?」って質問しにきたんだけど、
元発言読んでる?

今Java使いなのはその通りだけど、10年以上前はHP-UX上で
Motif使ったCプログラム書いてたよ。1年くらいでC++に行ったし、
当時はぺーぺーだったからC使いとは言えない感じだけど。
C++ではStringとかコンテナの汎用ライブラリを使ってた。
0373デフォルトの名無しさん2006/09/13(水) 10:21:40
>>370
オレには、文系で口が上手い奴に見える。
Javaしか使えなくて、Cは教養程度しか知らないんだろうよ。
setjmp.hとか知らなそうだ。
0374デフォルトの名無しさん2006/09/13(水) 10:57:42
作るのはめんどくさいので何か無いか
と
自分で作った奴が既にある

という矛盾。
自分で作ったならそれ使えばいいじゃん。
0375デフォルトの名無しさん2006/09/13(水) 11:48:01
>>373
お前もかなりのステレオタイプである事が推察されるw
0376デフォルトの名無しさん2006/09/13(水) 11:53:16
続きはこちらでお楽しみください。

[今さら]C言語でクラスライブラリを作る[Cかよ]
http://pc8.2ch.net/test/read.cgi/tech/1158108311/
0377デフォルトの名無しさん2006/09/13(水) 13:19:36
ポインタで悩んでいます。

void test(char *data2){

 *data2++;
 printf("addres_2:%d\n", data2);

};

int main(){

 char data[10] = "zxcvbnm";
 printf("addres_1:%d\n", data);
 test(data);
 printf("addres_3:%d\n", data);

 return 0;
};

実行した後、addres_2とaddres_3の値が一緒になると思っていたらaddres_1とaddres_3の値が同じになってしまいました。関数内のポインタ加算は初期化されるのでしょうか?それとも関数のdata2はdataと別物?なのでしょうか?
0378デフォルトの名無しさん2006/09/13(水) 13:39:53
'を文字にしたいのですが
char c = ''';
とするとエラーが出るのですが、他に方法があるのでしょうか?

0379デフォルトの名無しさん2006/09/13(水) 13:41:34
\でエスケ-プするよろし
char c = '\'';
0380デフォルトの名無しさん2006/09/13(水) 14:11:09
>>377
ポインタ表示したいなら、%p指定すべき

引数に渡した時点で、指している場所は同じだが別物
関数内でどうしてもポインタを加算したいなら、
戻り値で加算後のポインタを返せばよい
0381デフォルトの名無しさん2006/09/13(水) 14:29:35
そもそも
>*data2++;
がおかしい。
0382デフォルトの名無しさんNGNG?2BP(200)
>>377
ツッコミどころ多すぎ。

>void test(char *data2){

ここで渡される引数data2をいくらいじろうとも、呼び出し元のdataには何の影響もない。

>*data2++;

しかも、これはdata2に対する操作ではない。
mainの最後に printf("%s\n",data);を入れてみると何が悪いのか分かるはず。

>char data[10] = "zxcvbnm";

呼び出し先でポインタをいじるのに配列渡しちゃダメ。
03833772006/09/13(水) 16:18:32
今さっきわかりました。あはは、馬鹿だ俺。
ポインタに限らず引数は「初期値がセットしてあるかもしれないローカル変数」なんですよね。
addres_2を変更してもaddres_3が変わらないのは当たり前でした。
別のソースではtest関数でdataの内容をポインタでアクセスして変更してた(できてた)のが混乱の元でした…。

>>380-382
ご指摘ありがとうございました。
0384デフォルトの名無しさん2006/09/13(水) 16:39:53
Z を 32 ビット整数型と仮定して Z を二の補数表現で解釈したとするなら
(0xFFFFFFFF ^ Z) + 1 (この演算に限っては 1 + ~Z でもかまわない)
の演算を実行すれば -Z と解釈されますか?
プログラムを実行した結果 -32768 を除き正しい事は確かめられたのですが、考え方は間違ってませんよね?
どこかの教科書に ^Z + 1 のことについて書かれていたので初めは混乱したのですが。
0385デフォルトの名無しさん2006/09/13(水) 17:06:22
unsigned char*の文字列をsigned char*に間接的に移す方法はないでしょうか?
何故わざわざunsignedを取り扱うのかというのは
自分が使っているツールの処理系に依存しているからです。
unsigned charだと、Cの関数であるstrcmpやstrcpyが使用できません。
やり方が全く思い浮かばず困っています。どうかご教授お願いしますm(_ _)m。
0386デフォルトの名無しさん2006/09/13(水) 17:07:04
よくわからんがキャストすればいいんじゃね
0387デフォルトの名無しさん2006/09/13(水) 18:25:53
「間接的」ってどんなだろう?
0388デフォルトの名無しさん2006/09/13(水) 18:26:43
#Error: lvalue expected
#Warning 6: value of expression is not used

試しに(includeとかmainは表記省略)
unsigned char a[] = "てすと";
a = (char)a;
とやってみたらエラーが出ました・・・
charのキャストは出来ないっぽいです。
0389デフォルトの名無しさん2006/09/13(水) 18:28:14
直接でも間接でも出来たら構いません。
特に条件はなく、どんな方法でもいいのでやり方教えて下さいm(_ _)m
0390デフォルトの名無しさん2006/09/13(水) 18:29:45
それ以前に a は定数ポインタだから変更できませんよ。
0391デフォルトの名無しさん2006/09/13(水) 18:32:02
↑のミスりました。
char a[];
unsigned char b[] = "てすと";

a = (char)b;
と書くつもりでした。(できないのは同じ事です)
0392デフォルトの名無しさん2006/09/13(水) 18:32:38
>>388
unsigned char a[] = "てすと";
char *b;
b = (char *)a;
0393デフォルトの名無しさん2006/09/13(水) 18:34:06
char *a;
unsigned char b[] = "てすと";
a = (char*)b;
0394デフォルトの名無しさん2006/09/13(水) 18:34:30
言っている意味が良く把握できませんが
unsigned char *str = "hello" ;
signed char *pstr ;
pstr = (signed char *) str ;
それと使えないのではなくて警告が出るだけではないのですか?
0395デフォルトの名無しさん2006/09/13(水) 18:34:41
>>391
その場合もaは変数じゃなくて定数だってば。
Javaじゃないんだから。
0396デフォルトの名無しさん2006/09/13(水) 18:34:47
リロードしてなかった。
ゴミレスすまそ。
0397デフォルトの名無しさん2006/09/13(水) 18:39:44
とりあえずポインタをもう一回勉強した方が
0398デフォルトの名無しさん2006/09/13(水) 18:41:53
そもそも char a[]; なんてコンパイル通らない気が。
0399デフォルトの名無しさん2006/09/13(水) 18:44:16
できました!!!!!!!!!!!
ずっとこの事が分からなくてスランプに陥ってましたが
皆さんのおかげでやっと解決しました!(^_^)/
キャストの際ポインターをつけたらちゃんと出来ました!
このやり方だとエラーも警告も出ませんでした。
本当に有り難うございましたm(_ _)m!
0400デフォルトの名無しさん2006/09/13(水) 18:49:43
>>398
実際には char a[] = "てす";
と書いていたのですが、テンパって省略してしまったのでw
*と[]は違うのはある程度知っていましたが、ポインターを勉強し直した方がいいというのは事実です・・・
なんにせよ、本当になんとお礼を言っていいのかm(_ _)m!
0401デフォルトの名無しさん2006/09/13(水) 19:23:10
例えば、下のような文字をファイルから読み込みます。
(実際は、何十万文字あるとして)
改行をなくして、1行にして、
X文字目からY文字目までの文字列を、そのつどXとYを入力して文字列を取り出すには、
どの関数を使えばよいのでしょうか?


TIAUAOTUAOITUAOITAOTUAOTUATUAO
TOAUTOAITUAOTUAOSITUAOTUAOITUA
AOTUAOTUAOTUAOTUAOTUAOTUAOTUAO
TYOAUTOATUAOTUAOTUAOTUAOTUAOTA
0402デフォルトの名無しさん2006/09/13(水) 19:26:22
>>401
fopen()
fgets()
strlen()
printf() or putc()
0403デフォルトの名無しさん2006/09/13(水) 19:57:38
>>382
お前もツッコミどころ多すぎ。
0404デフォルトの名無しさん2006/09/13(水) 20:00:40
>>402
まじでそれでいけますか?
for文使うやつって、凄いなんか処理重くなりそうと思ったんす
つまり、XとYの長さをstlenで測って それを
substrなりするのかな

改行はfgetsできえましたか?
0405デフォルトの名無しさん2006/09/13(水) 20:07:33
>>404
行の長さが固定長なら、fseekでいける。

> 改行はfgetsできえましたか?
試すかマニュアル読めよ。
0406デフォルトの名無しさん2006/09/13(水) 20:07:52
>>404
1行ずつ読み込んでから、1つに連結していけばよい。
あと、重いかどうかは、創造する前にまず試してみろ。
案外率直な方法でも気にするほど遅くなかったりその逆だったりすることは良くあることだ。
04074042006/09/13(水) 20:19:19
ありがとうございます。
しかし、何十万、何百万文字を1行にして
charで保存できましたっけ

とりあえず、strcatで連結して
1行で出力してそこを、x〜yまで抽出して
charに格納かな。
0408デフォルトの名無しさん2006/09/13(水) 20:22:58
>>407
いやいや、Xを超えるまでは読み捨て。
Xを超えたら、そこから連結しながらX+Yを超えるまで読み込む。
0409デフォルトの名無しさん2006/09/13(水) 22:03:57
何百万文字でもメモリ確保が失敗しない限りいけるんじゃない?
まぁ読んでは捨ててを繰り返したほうが効率いいだろうけどさ。
0410デフォルトの名無しさん2006/09/13(水) 22:14:29
百万文字なんてたったの1MBですよ(シングルバイトで)
0411デフォルトの名無しさん2006/09/14(木) 00:33:41
#define PRINTF(MOJI) printf("->MOJI<-\n");

#include <stdio.h>
main()
{
  PRINTF(文字);
}

として、

->文字<-

と表示されることを期待したのですが、だめでした。
#defineの部分を直せば、こういうことできますか?
0412デフォルトの名無しさん2006/09/14(木) 00:46:41
#define PRINTF(MOJI) printf("->" #MOJI "<-\n")
0413デフォルトの名無しさん2006/09/14(木) 01:06:58
>412
ありがとうございました。できました!
0414デフォルトの名無しさん2006/09/14(木) 07:35:02
>>411-413
「文字」に \ や不正な文字が混ざるとまずい事になるから、普通にダブルクォート使え。

#define PRINTF(MOJI) printf("->" MOJI "<-\n")
PRINTF("文字")
0415デフォルトの名無しさん2006/09/14(木) 09:14:17
カーソルキーの入力って標準Cでできますか?
scanf()系の関数やgetche()ではうまくいきませんでした。
これは環境依存になってしまうのでしょうか?
0416デフォルトの名無しさん2006/09/14(木) 09:18:47
>>415
コンソールの中でカーソル位置を任意に動かすのは多分環境依存
行頭に復帰させるだけなら \r で出来るかどうか忘れた
0417デフォルトの名無しさん2006/09/14(木) 10:40:08
>>415
標準 C ではコンソールの概念が無いのでカーソルキーを監視することは出来ない。
あと getche() は非標準。
>>416
「カーソル位置を任意に動かす」とはどこにも書いてない。
0418デフォルトの名無しさん2006/09/14(木) 10:41:50
ncurses つかえ。
とほざいてみる。
0419デフォルトの名無しさん2006/09/14(木) 17:22:02
>>415
http://msdn2.microsoft.com/ja-JP/library/kswce429.aspx
http://msdn2.microsoft.com/ja-JP/library/078sfkak.aspx
こんなの書いてあった。やったことは無いけど二回呼ぶらしい。

ところでカーソルキーを読んでそのあと何しようとしてたの?
読んで終わりってことは無いと思うけど、カーソルの点滅位置
を動かしたかったの?
0420デフォルトの名無しさん2006/09/14(木) 19:21:46
ファイルの中に100億文字あるファイルがあるとします

そこから、100〜200、10万〜1億とか 70億から70億1000文字
取り出すにはどうすればよいのでしょうか?

char array[10000000000]
なんてできませんよね

それに、100〜200とかしか取り出さないのなら、10000000000も領域確保する
必要がない気もするのですが
どうすれば効率的になるのでしょうか?

1000000000領域確保したとして、すぐに消さばいいのかな
0421デフォルトの名無しさん2006/09/14(木) 19:28:00
ファイルの中にファイルがある、という構造はあまり一般的ではありませんね。
でもたぶん、中にあるほうのファイルは通常のファイルとして扱っていいでしょう。
04224202006/09/14(木) 19:29:15
すみません。ファイルの中に100億文字があるの間違いでした・・・
0423デフォルトの名無しさん2006/09/14(木) 19:32:51
で、とても大きなファイルでも、必要になるのはそのうち一部な事が多いです。
そういうときは必要な一部を読み込んで処理すればいいです。

最初から順番に処理するような場合も、最初からちょっとづつメモリに読んで
処理するのがいいでしょう。

メモリマップド+仮想記憶のような仕組みを使うときはメモリを確保したかのよな
処理の仕方も可能です。
0424デフォルトの名無しさん2006/09/14(木) 19:37:56
簡単にいうと

fseekでぐぐって末吉
0425デフォルトの名無しさん2006/09/14(木) 19:40:55
>>420
単なるテキストファイルと見ても、
最低10GBのサイズになるわけだが。

チェックしなきゃいかんなら、
先頭から順番に一定範囲だけ読んで、
そこに開始条件を満たすものがなければ読み捨てて次、と
繰り返せば良し。
単に位置しかみないなら、開いてからそこまでseekして、
目的の位置から終了位置まで別ファイルに切り出すとか。

コード自体はごく単純に済ませることが可能。
04264202006/09/14(木) 20:25:29
でもやっぱり、
必要な範囲だけのこすにしても

とりあえず100億文字なら100億文字の配列を最初に確保しなきゃいけないのですよね
20億〜30億文字や10億〜15億文字 70億〜80億文字と任意の間を読むにしろ

この最初に確保する配列を任意の文字にできないのでしょうか?
開始条件が位置なので、fseekでも最初に膨大な配列のメモリ領域を確保しないといけませんよね
0427デフォルトの名無しさん2006/09/14(木) 20:38:18
おまえの使っているPCが、100億バイトを記憶できるアドレス空間を持っているか
まずそれから考えてみろ
0428_2006/09/14(木) 20:44:45
>427
ページング
0429デフォルトの名無しさん2006/09/14(木) 20:55:51
fgetsでファイルの中身を1行ずつ読み込んでいくとき

最初の1行はスルーする もしくは、 ? など特定の文字が先頭にある行を
スルーするときは、
どうすればよいのでしょうか?
if文でしょうか?
0430デフォルトの名無しさん2006/09/14(木) 20:55:58
↑
知ったかぶりしたいだけのバカ
0431デフォルトの名無しさん2006/09/14(木) 20:58:28
あーん、>>429ごめん。
俺は>>428向けに書いたんだ。
ページングで物理メモリの不足は補えるけど
アドレス空間の不足はどうしようもないんだよ。
だから、64bitという話が出てくる。

>>429
読んでから確かめるしかないでしょ。
最初の一文字なりで簡単に判定出来るじゃん。
0432デフォルトの名無しさん2006/09/14(木) 21:05:21
>>426
>fseekでも最初に膨大な配列のメモリ領域を確保しないといけませんよね
 ・そのファイルがテキストファイルかどうか
 ・文字コードは何か
 ・改行コードは何か
 ・「何文字目」は文字単位なのかバイト単位なのか
によって変わるが、それにしたって
読み飛ばした分全部覚えておく必要なんかないだろうに。
0433デフォルトの名無しさん2006/09/14(木) 21:07:56
32bit環境だと物理的に2^32以上のアドレス空間は認識できないからな。
メモリだけがアドレス空間を使用してるわけでもないし
04344292006/09/14(木) 21:20:20
while(fgets(string 50 fp))
{
if( string[0] != ?){
sscanf(string,%c,mojikakunou)
}
}

こんな感じで判定でしょうか?
0435デフォルトの名無しさん2006/09/14(木) 21:24:58
文法的には滅茶苦茶だが
考え方としてはそんな感じでいいんじゃないか。
04364292006/09/14(木) 21:29:33
最初の1行だけ飛ばすってのは・・・
1行目だけ違うとこに格納みたいなことかな
しかし1行目の判定はどこですれば
0437デフォルトの名無しさん2006/09/14(木) 21:38:41
「一行を読み飛ばす」ってのは「読むだけで何もしない」ってことでしょ。
違うの?
04384292006/09/14(木) 21:39:48
>>437
ファイルの中を出力しようとしたら
fgets、while文で全行読んでいくから、1行読み飛ばすってのは・・・
0439デフォルトの名無しさん2006/09/14(木) 21:43:18
何を悩んでるのかが全然わからん。
本当に「最初の一行」で良いなら
ループに入る前に空読みすりゃ良いし。

まあファイル中で特定の行が現れた次の行ってなら
フラグ使うか、ifの内部でもう一度読むとかで
多少面倒にはなるが。
04404292006/09/14(木) 21:54:25
むむ

fegets( string 20 fp)
while(fgets(string 20 fp)
{
}

こんな感じかな・・・
0441デフォルトの名無しさん2006/09/14(木) 22:00:10
>fegets
釣りですか
0442デフォルトの名無しさん2006/09/14(木) 22:02:48
ファイルパスの \ 区切りの位置を取得するのに
下のようなソースコードがあったんですけど、
少しだけいじって、SJISに対応させることはできませんか。

#define DIRSEP '\\'
...
filepart=strrchr(realfilename, DIRSEP);
0443デフォルトの名無しさん2006/09/14(木) 22:04:59
mixiでKusakabe暴走ワロス
0444デフォルトの名無しさん2006/09/14(木) 22:10:08
誰だよw たっきーことXCODE?
0445デフォルトの名無しさん2006/09/14(木) 22:14:53
>>442
環境依存で、SJISの2byte目かを判定する関数が用意されているはず。
0446デフォルトの名無しさん2006/09/14(木) 22:17:10
たとえばVC++なら_mbsrchrとかね。
0447デフォルトの名無しさん2006/09/14(木) 22:26:31
>>445-446
ありがとうございます。
_mbsrchrでばっちり動作しました。
04484292006/09/14(木) 23:09:26
>>440
fgetsです。
こんな感じで1行とばしは合ってますでしょうか?
0449デフォルトの名無しさん2006/09/14(木) 23:30:05
>>448
まず、やりたいことを日本語で詳しく書いてみたらどうだろう?
読みたいファイルのサイズも含めて。
04504292006/09/14(木) 23:40:10
>>449
はい。すみません。

ファイル名 file.name

作者:ねずみ講
猫がねこんだアナコンダ
あめんぼあかいなあいうえお
空と君との間には
紫の薔薇の人
・・・

とまぁ、こんな感じのファイルを
最初の先頭行(作者)の行以外を別の配列にセットして
出力したいのです。
0451デフォルトの名無しさん2006/09/15(金) 02:23:01
上のほうのsigned char*をunsigned cahr*にキャストする話で疑問に思って

#include <stdio.h>
int main(){

int i=-1;
int *ip = &i;
unsigned int *ip2 = (unsigned int *)ip;

printf("i = %d\n",i);
printf("*ip = %d\n",*ip);
printf("*ip2 = %d\n",*ip2);

if (*ip2 > 0) printf("*ip2 は正です");

return 0;
}

と書いて実行してみたら

i = -1
*ip = -1
*ip2 = -1
*ip2 は正です

となってしまったのですが、*ip2 は正と負、どちらなんでしょうか?
0452デフォルトの名無しさん2006/09/15(金) 02:43:42
>>451
printfの書式指定の中で %d とやっているが、これは int用の指定。
unsigned用にするには %uとしなければならない。

そしてunsignedなんだから、0でなければ必ず正。
04534512006/09/15(金) 02:59:38
>>452
%uというのがあったんですね、ありがとうございます
*ip2は正で、iは負のままだから、*で参照される度にiがunsigned intにキャストされてるってことなんですね
0454デフォルトの名無しさん2006/09/15(金) 03:10:09
>>453
正確には解釈が微妙に間違っているのだが・・・・まあそれでいいだろ。
勉強を進めていくうちに別な見方にも気づく事だろう。
0455デフォルトの名無しさん2006/09/15(金) 03:26:54
>>454
ありゃ微妙に違うんですか…精進します
0456デフォルトの名無しさん2006/09/15(金) 03:38:00
微妙にどころか思いっきり違ってるんだが、少し勉強が進めばわかるこったし、気にスンナ。
0457デフォルトの名無しさん2006/09/15(金) 04:25:55
http://portable-c.jugem.jp/?eid=22
> 今回のテーマであるNULLですが、このマクロで表される空ポインタ定数というのは、実は関数へのポインタには代入することができません。

これマジ?
0458デフォルトの名無しさん2006/09/15(金) 16:32:58
cygwin上でfopenするとFILE*が正常に取得できるのに
errno=29(ESPIPE)が設定されてしまいます。気にしなくていいのでしょうか。
open()&lseek()使った方がいいですか?
その後ファイルへの書き込みはできます。

errno=0;
printf("%s:%d:errno[%d]\n", __FILE__, __LINE__, errno);
fp = fopen(filename, "ab");
printf("%s:%d:errno[%d]\n", __FILE__, __LINE__, errno);

04594582006/09/15(金) 16:52:27
すいません、FAQにこうありました。気にしないことにします。

>プログラムがerrnoの中身を調べることは、エラーが報告されたときだけ意味があることに注意
0460デフォルトの名無しさん2006/09/15(金) 22:07:02
データファイルがいくつもあるフォルダ下で
プログラムを実行し、ファイルを読みとるため、
データファイル名を入力するとき、入力補完機能をつけるにはどうすればよいのでようか?
長いファイル名をイチイチうつのが面倒なのですが
UNIX環境みたいにscanfで文字を入力する際に補完とかできないかと思いまして
0461デフォルトの名無しさん2006/09/15(金) 22:17:36
シェルのソースでも読めば?

まあ補完機能の部分だけなら別に読む必要も無いだろうが。
0462デフォルトの名無しさん2006/09/16(土) 00:59:37
ワイルドカードを使えるようにしたら?
0463デフォルトの名無しさん2006/09/16(土) 02:30:08
>>457
つうか厳密には比較もダメみたいに書いてあるね

今まで
if(f!=NULL){
f();
}

とかさんざんやってきたんだけど・・・
0464デフォルトの名無しさん2006/09/16(土) 03:55:35
>>463
いや、比較は大丈夫らしいぞ。
それで代入がダメってのは、なんかおかしい気がするが。
0465デフォルトの名無しさん2006/09/16(土) 16:13:09
NULLポインタのビットパターンがすべて0とは限らないが、
0とNULLポインタを比較すると真になる。

http://www.kouno.jp/home/c_faq/c5.html#2
0466デフォルトの名無しさん2006/09/16(土) 21:16:00
質問です。

条件
AさんとBさんがいます。AさんとBさんは通信ができます。
AさんとBさんが通信を開始し、終了すると、その間の記録がログファイルとして
記録されます。
通信の開始は、キーボードからスタートと入力することにより開始されます。
終了は、キーボードからエンドと入力することにより、開始されます。

言語はC++。コンパイラはVisual C++

要求
通信を自動的に1時間ごと切り、1時間ごとのログファイルを作成したい。


よろしくお願いいたします。
0467デフォルトの名無しさん2006/09/16(土) 21:16:14
ぬるぽ代入できないのにぬるぽと比較して意味あるのかな
0468デフォルトの名無しさん2006/09/16(土) 21:20:06
          _
      ミ ∠_)
         /
         /   \\
 ウイーン  Γ/了     | |
  ウイーン  |.@|    | | ガッガッガッ
       | / | .     人
       |/ |    <  >_Λ∩
      _/  | //. V`Д´)/←>>467
      (_フ彡           /
■ このスレッドは過去ログ倉庫に格納されています