1 :
JOY:
初心者の方、わからないことがあれば何でも聞きなさい。
2 :
プリンちゃん:2001/02/11(日) 00:34
ファイルから読んだ新、旧ユーザーリストファイルを読みこんで
ソートする方法。それを構造体にぶち込んで、
お互いを比較する方法。
教え下さい。
3 :
名無しさん@1周年:2001/02/11(日) 00:36
構造体に一気にいれて比較ってできんのか?
4 :
7743:2001/02/11(日) 01:04
構造体ポインタでふぃるたーってことか???
5 :
名無しさん@1周年:2001/02/11(日) 01:05
ここのページに来る奴じゃ、わかんねーよ。
6 :
名無しさん@1周年:2001/02/11(日) 01:19
2です。
質問が曖昧ですみませんでした。
struct TBL_INF{
int UID;
char PWD;
};
main()
{
tmpptr = ((struct TBLINF *)buf);
とした後、PWDをmemcmpしたのですが、PWDを指定しても
何も表示できません。
7 :
名無しさん@1周年:2001/02/11(日) 03:26
8 :
名無しさん@1周年:2001/02/11(日) 03:31
>>6 memcmpでなくても良いんでないの?
char PWD; だんべ?
比較してる部分の式おせ〜てちょ!
9 :
名無しさん@1周年:2001/02/11(日) 03:52
>>6 相変わらず質問の意味が良く分からんけど、ユーザリストを事前に構造体
TBL_INF の配列に叩き込んでおいて、UID@` PWD フィールドの値でソートし
たい、ってことで良い?
データの数にもよるけど、主記憶でケリがつく程度の量なら qsort() 使え
ば OK。qsort() 使った構造体のソートは、こんな感じ。
# サンプルってことで、構造体の要素の型を変えてあるんで注意ね。
-----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
struct ulist {
int ul_uid;
char *ul_name;
};
int
ulist_cmp(const void *p1@` const void *p2)
{
const struct ulist *up1 = p1@` *up2 = p2;
int rv = 0;
if (up1->ul_uid > up2->ul_uid)
rv = 1;
else if (up1->ul_uid < up2->ul_uid)
rv = -1;
else
rv = strcmp(p1@` p2);
return (rv);
}
#define NELEM(x) (sizeof(x) / sizeof(x[0]))
int
main(void)
{
struct ulist ulist[] = {
{ 1003@` "Ryo Sakazaki" }@`
{ 888@` "Bill Joy" }@`
{ 1002@` "Ryu Takagi" }@`
{ 1000@` "Ken Tompson" }@`
};
struct ulist *up;
qsort(ulist@` NELEM(ulist)@` sizeof(ulist[0])@` ulist_cmp);
for (up = ulist; up - ulist < NELEM(ulist); ++up)
printf("id = %d@` name = %s\n"@` up->ul_uid@` up->ul_name);
return (0);
}
-----------------------------------------------------------------
p.s.
UID はともかく PWD って何が入るんだ? 名前だったら char * か char[]
だろうし。
構造体の名前のつけ方とか、フィールド名が大文字ってあたりが、さりげ
なくダサい (大文字はマクロと typedef 名ぐらいにしとくのが吉)。コ
メントなしでも大体の意味が分かるように名前を選ばないと、後でコード
読めなくて苦労するよ。
10 :
仕様書無しさん:2001/02/11(日) 05:02
>9
パスワードに決まってるだろ。PWDで十分わかる。
char PWD とは何ぞや
1文字のパスワードだよ、きっと。
13 :
森 秀樹:2001/02/11(日) 09:04
#define PWD *password
14 :
森 秀樹:2001/02/11(日) 12:23
char * p = &(PWD); と使うやつがかわいそうなんで、
#define PW password
をおまけで付けておきます。
1 = 2
16 :
名無しさん@1周年:2001/02/11(日) 19:13
age
17 :
もい:2001/02/11(日) 19:25
ほうほう
■--荒らし速報!
http://mbspro3.uic.to/user/kiyopon.html ++ デジマニ (グレイモン)…51回 ---
http://dreamcity.gaiax.com/home/kiyocchi --------------------------------------------
ホスト↓
(proxy2.odn.ne.jp)..
あんたなにを考えてるんだ?
僕はドリームシティであって
kiyocchi@mlcity ではないのですよ?
あなたを荒らしとみなします!
って事でプロバイダ教えろ
教えないのなら こちらで解析させてもらう
では!
(q27-dn07kokubunji.tokyo.ocn.ne.jp).. 2/10(Sat) 13:11[88]
■--荒らしは書き込めません
++ デジマニ (グレイモン)…52回 ---
http://dreamcity.gaiax.com/home/kiyocchi ---------------------------------------------
荒らしが書き込めない様にしました!
これでアホな荒らしもいなくなったぜ!
(q27-dn07kokubunji.tokyo.ocn.ne.jp).. 2/10(Sat) 13:14[89]
-----------------------------------------------
■--てってめー
++ キング (コロモン)…21回 ---
-----------------------------------------------
おい私の元ホムペー師匠になんてことをなにがクソガイアックスだ
おまえまおまえはなんてことを言うんだ(怒)(proxy1.odn.ne.jp)とやらめ
しかも荒らすだとそれとこのガイアックスのホムペー作りも立派なことなんだよ
それを馬鹿にするなんて許せない
(max4k-1-i37.hk.nttdata.net).. 2/10(Sat) 19:25[92]
■--荒らし 最低です。
++ デジマニ (グレイモン)…53回 ---
http://dreamcity.gaiax.com/home/kiyocchi -----------------------------------------
あなた誰なんですか?
僕はガイアックスのお陰でこんないい
ホームページを作れたんですよ?
あなたは何者なのですか?(只今 解析中だけどね)
また荒らすような事があれば
僕の将軍(元荒らしバスターズリーダー)
に 報告してもいいのですね?
これは脅しではないですよ
キングさんにまであんな事を・・・
ウソは最低で下劣極まりない最悪の行為だね
(p02-dn01kokubunji.tokyo.ocn.ne.jp).. 2/10(Sat) 21:14[93]
■--hgf
++ hgf (デジタマ)…1回 ---
--------------------------------------------------
(・∀・) (・∀・) (・∀・) (・∀・) (・∀・) (・∀・)
(proxy3.anonymizer.com).. 2/10(Sat) 21:18[94]
-------------------------
++ デジマニ (グレイモン)…54回
http://dreamcity.gaiax.com/home/kiyocchi また荒らしか↓
(proxy3.anonymizer.com)..
もういいかげんにしてくれ・・・・
あんたも解析開始するよ
(p02-dn01kokubunji.tokyo.ocn.ne.jp).. 2/10(Sat) 21:19[97]
■--それは立派な荒らしだ
++ デジマニ (グレイモン)…55回 ---
http://dreamcity.gaiax.com/home/kiyocchi -----------------------------------------------
その行いは荒らしそのものだ
今 プロに解析してもらう
(p02-dn01kokubunji.tokyo.ocn.ne.jp).. 2/10(Sat) 21:21[98]
■--まつさんへ
++ 管理人デジマニ (デジタマ)…3回 ---
http://dreamcity.gaiax.com/home/kiyocchi --------------------------------------------------------------------------------
まつさん!すいません!
ホスト間違えてしまったらしいです!では
(q29-dn06kokubunji.tokyo.ocn.ne.jp).. 2/10(Sat) 23:54[99]
http://mbspro3.uic.to/user/kiyopon.html
18 :
名無しさん@1周年:2001/02/11(日) 20:34
2です。
9さん、ソートの方法についてありがとうございました。
ファイルの中身はこうなっています。
新:12345password67890password改行
旧:12345PASSWORD67890password改行
というファイルを新、旧passwordの部分を比較し、
違っていれば、その一連のユーザー情報を取得して
データベースに渡すためにいったんファイルに書き出します。
最初の一つ続きのデータを区切って、構造体に入れるには
どうすればいいのでしょうか。
19 :
仕様書無しさん:2001/02/12(月) 02:39
>>18>>2 だ、だいじょうぶなのか?
この調子で最後まで作りつづけられるのか? おら、心配だ・・・
>>9 乗りかかった船だ がんばってけろ
>>19 uidは5桁固定なのか?
pwも同じく。
普通csv形式にしないか?
>>20の
>>19は
>>18だった。撃打。
ついでだ。
uidはint型のようなので直接構造体に入れるのは無理。
文字列のuidをatoi関数でintに変換しなければならない。
passの方はmemcpyでもスレ。nullつけれ。
22 :
19:2001/02/12(月) 03:39
>>21 >uidはint型のようなので直接構造体に入れるのは無理
んだんだ
と、その前に・・・
>>18 その新・旧ファイルって何ファイルなのん?テキスト?
それともstruct TBL_INFに入ってたのを書き出したんか?
改行はどんなタイミングで出現するんじゃ?不定期なんか?
情報が足りんのぉ・・・
23 :
2です。:2001/02/12(月) 03:45
ファイルはテキストです。最後に一個改行が入ります。
24 :
仕様書無しさん:2001/02/12(月) 09:14
フリーのCってのがあるらしいんですが、どこにあるのでしょうか?
25 :
仕様書無しさん:2001/02/12(月) 10:48
>>23 仕様をまとめなさい。あなたは、自分で何をしたいのか理解してません。
仕様をまとめたら、機能ブロックに分けて自分でコードを書きなさい。
コードを書いて、思うどおり動かないのであれば相談しなさい。
>>24 FreeBSD/Linux を手に入れればついてきます。
C++ Magazine を手に入れればついてきます。
27 :
仕様書無しさん:2001/02/12(月) 15:54
>>2 >struct TBL_INF{
>int UID;
>char PWD;
>};
はファイルに書き出すときに使うとして
読み出すときは
struct TEXT_TBL_INF{
char UID[5];
char PWD[8];
};
にして sizeof(TEXT_TBL_INF)ずつ読みだすってのはどだ?
28 :
森 秀樹:2001/02/12(月) 17:45
29 :
仕様書無しさん:2001/02/12(月) 18:37
レコード仕様が分からないとお手上げで砂。
CSVでないべた書きはCOBOLで出力したファイルなんかで
お目にかかりますが、可変長でべた書き、マーカなし、というのは
初めてみたかも。
30 :
仕様書無しさん:2001/02/12(月) 19:44
>>28 そうは言うが、みんな日常業務はこんなことの繰り返しじゃないのん?
お客さまさまのわけわからん話を具現化していくっちゅう
31 :
森 秀樹:2001/02/12(月) 19:59
>>30 そう、そうなんです。
で、苦労してお客さんの要求や現実のデータなんかを見て
苦労してデータの解析が終わって、これならなんとかなり
そうだ。と思ったとたんに、お客さんが逃げて、その
仕様書を持って他の所でコンペしたりしません?
私はなんどか、そういうのを見ましたけど。
32 :
工藤 智行:2001/02/13(火) 00:10
自分の考えていることがしっかりと表現できないお客さんから、辛抱強く話を
聞いて、こんな仕様でどうでしょうと提案型で話をまとめていくのは、プログラマ
や SE の必須の能力ですね。最近の CGI を作って欲しいというお客さんなんかは
プログラミングから 100Km 位離れているので、別の星の言葉ではないかと感じて
しまう位、苦労が多いです。。。。
34 :
仕様書無しさん:2001/02/13(火) 01:24
C++で
unsigned charに読み込んだ16進数のデータを10進数で扱って、
intの10進数のデータを16進数でファイルに書き出すにはどうしたらいいんでしょうか?
35 :
名無しさん@1周年:2001/02/13(火) 02:08
sprintfでいいじゃん。
どんなライブラリがあるんだか知らないから
そうとしか答えられんと思うが。
36 :
30:2001/02/13(火) 03:03
それを社内でヤラれたよ、わしゃ
解析してた期間の費用は、全てマイナス計上となった(ウチの部署持ち)
泣くに泣けんのぢゃ
37 :
30:2001/02/13(火) 03:04
38 :
仕様書無しさん:2001/02/13(火) 03:06
intの10進数のデータって所で脳味噌が活動停止しちゃったんだが(ワラ
マジレスしとくと、intのデータってのは「値」なの。
10進数とか16進数というのはその「値」の「表現」なの。
まぁ、BCDとかだったら「10進の値」って言ってもソレほど外れてないかもしれないけどね
だから、intというのは、ビット列で表された「値」であって10進のデータというのは訳がわからん
2進のデータってのならまだわからん事もないが(ワラ
>>38 初心者用スレなんだからワラワラ書くなよ・・・
40 :
仕様書無しさん:2001/02/13(火) 12:39
>2
>1.ファイルから読んだ新、旧ユーザーリストファイルを読みこんでソートする方法。
>2.それを構造体にぶち込んで、お互いを比較する方法。
のうち、
1. は事前にソートが済んでいれば「マージソート」というアルゴリズムが適用できるはずです。
マージソート後に重複するレコードを削除すれば済みます。
事前に済んでいない場合には、上にあるように qsort(クイックソート)を使えばいいでしょう。
2.は・・・単純に構造体の要素ごとに比較するだけじゃだめですか?
41 :
34:2001/02/13(火) 15:18
>>38 すみません、じゃあ『データ』のところを『表現』に変えればいいんでしょうか?
で、どうしたらいいんでしょうか?
>>41 >で、どうしたらいいんでしょうか?
fprintf()を調べてみよう
43 :
仕様書無しさん:2001/02/13(火) 15:24
突然の質問ですが、
fwriteとfputsの使い分け方を教えて下さい。
>>43 データが「文字列」か「バイナリ」で使い分ける
strcpyとmemcpyの使い分け方と同じ
45 :
仕様書無しさん:2001/02/13(火) 15:55
>データが「文字列」か「バイナリ」で使い分ける
>strcpyとmemcpyの使い分け方と同じ
精度の違いだけで、どちらでも実現は可能ということですか?
46 :
仕様書無しさん:2001/02/13(火) 15:59
「精度」ってのが何のつもりか判らんが、
'\0' でぶち切られるかどうか、とか '\n' が変換されるかどうか、
といったあたりには気を付けるよーに。
>>45 >どちらでも実現は可能ということですか?
'0x00'をファイルに書き込みたい場合、
fputsでは不可能、fwriteなら可能
48 :
仕様書無しさん:2001/02/13(火) 16:16
>「精度」ってのが何のつもりか判らんが、
>'\0' でぶち切られるかどうか、とか '\n' が変換されるかどうか、
>といったあたりには気を付けるよーに。
説明ありがとうございました。
49 :
仕様書無しさん:2001/02/13(火) 16:37
版違いにより
-- 終了 ------------------------------------------
聞いてくれてあーりがと アロエリーナ♪
\______ ________/
|/
∧_∧
Ψ (∀T )
□ (∩∩ )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
。| ノ⌒ヽ、_ノ⌒ヽ、 。| ノ⌒ヽ、_ノ⌒ヽ、_
| |。 |゚ y / | |。.. |゚ y /
゚| | |io i| ( 春の 宵、 ゚| | |io i| ( 春 の宵、
。| ゚i| 。i|@`@`ノ |i ) 隣りは な に を 。.| ゚i| .。i|@`@`ノ |i ) 隣 り はなにを
i|゚ ||゚ /ii 。 ゚|i_/゚ / するひ と ぞ . i|゚ ||゚ /ii .。 ゚|i_/゚ /.. す る ひとぞ
`ヽoー|i;|y-ノ ( .. `ヽoー.|i.;|y-ノ (
@`;:i´i;ノ )ノ⌒ヽ、_ノ⌒ヽ、 ... @`;:i´i;ノ )ノ⌒ヽ、_ノ⌒ヽ、
('';ii;;'' . ('';ii;;''
ii\;;;ii'ノ モナモナ ii\;;;ii'ノ モナモナ
.∧_∧ ∧_∧ __o__ .∧_∧ ∧_∧ . __o__
( ・∀・) ( ´∀`)() ./=ニ=ヽ . ( ・∀・) ( ´∀`) () . ./=ニ=ヽ
(つ .⊂ (つ[] つ┃ ~|:□|~ . (つ .⊂ (つ.[] つ┃ ~|:.□|~
.( 、 ^ヽ ^ヽ ( 、 ^ヽ ^ヽ 旦~ ゛)三(" . .( 、 ^ヽ ^ヽ ( 、 ^ヽ ^ヽ 旦~ . ゛)三("
.ニ(__)_)ニ(__)_)ニニ⊃ |;;; |_ . .ニ(__)_)ニ(__)_)ニニ⊃. |;;; |_
@`@`@` || @`@`@`@`@`@`@` @`@`@`@`@`@`@`@`@`@`@`@`@` @`@`@`@`@`@`@`@`@`@`@` @`@`@`@`@`|| @`@`@`@`@` @`@` @`@`|;;;〈;.ヽ@`〉@`.@`@`@` || @`@`@`@` @`@`@`@`@`@`@`@`@`@`@`@`@` @`@`@`@`@`@`@`@`@`@`@` @`@`......|| @`@`@`@`@` @`@` @`@`|;;;〈;.ヽ@`〉@`.@`.@`.@`.
;;;;;;;; ;;;;;;;;; ;;;;;;;;;;;; ;;;;;;;;;;;; ;;;;;ヘ へヘ、~ @`.@` ;;;;;;;;;; ;;;;;;;;;;; ;;;;;;;;;;;;;; ;;;;;;;;;;;;;; ;;;;;;;ヘ へヘ、~ @`.@`
;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;::丿~@`. ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;::丿~@`.