[問題] c語言 檔案內容比對與合併

看板C_and_CPP (C/C++)作者 (蜀中無大將)時間16年前 (2009/04/29 14:57), 編輯推噓5(5018)
留言23則, 4人參與, 最新討論串1/2 (看更多)
想請問程設的大大一個問題 (本人是C語言初學者) 拜託大大給小弟解惑一下 (不一定要給我程式解答 但希望能給我一個方向 感恩!!) 想把一個A檔案(a.txt)中的第一個欄位(NUM)與B檔案(b.txt)的NUM欄位依序比對 比對成功 則在A檔案中之最後一欄位(MODE)後增加一B檔案中的欄位(12hr)內容 A檔案內容如下: ----------------------------------------------------- | NUM | CHART | DATETM | MODE | ----------------------------------------------------- | 1 | 123 | 上午 10:45:00 | EPIDURAL MODE | ----------------------------------------------------- | 2 | 25 | 下午 02:55:00 | PCA MODE | ----------------------------------------------------- | 3 | 10017587 | 下午 11:23:10 | PCA MODE | (以下省略) B檔案內容如下:(PS:與A檔案中欄位長不全相同) ----------------------------------------------- | NUM | CHART | 12hr | ----------------------------------------------- | 1 | 123 | 20 | ----------------------------------------------- | 2 | 25 | 12.5 | ----------------------------------------------- | 3 | 10017587 | 125 | (以下省略) 以上 我也找過一些資料 但大都是介紹C++的方法 (但是不清楚能否用於C中 因為我主要是要寫C的程式)^^" 若有甚麼太蠢或是表達不好的地方 還請各位大大能見諒 謝謝各位! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.171.202

04/29 15:18, , 1F
提示: strchr 用在標題那列上可以得知一些事情
04/29 15:18, 1F

04/29 15:18, , 2F
這些事情可以幫助你找出每筆資料
04/29 15:18, 2F

04/29 15:18, , 3F
(當然不一定用一次)
04/29 15:18, 3F

04/29 15:26, , 4F
Bfile-> double a[num]=12hr;Afile-> append a[num];
04/29 15:26, 4F

04/29 16:02, , 5F
先找出欄位的定義吧 看是用逗號,空白,還是Tab
04/29 16:02, 5F

04/29 16:06, , 6F
能分辨欄位後 在比較A.Num & B.Num
04/29 16:06, 6F

04/29 16:10, , 7F
L大大是說用strchr找兩檔案是否都有NUM欄位嗎??
04/29 16:10, 7F

04/29 16:12, , 8F
chr大大的程式可以寫清楚一些嗎?(抱歉我不太懂^^")
04/29 16:12, 8F

04/29 16:15, , 9F
eve大大 我只知道欄位就是用|隔開而已耶(不然應是空白吧)
04/29 16:15, 9F

04/29 16:35, , 10F
我想請問您 NUM 的值域與空洞程度
04/29 16:35, 10F

04/29 16:36, , 11F
0,1,2,3,5,7,9,10 值域=0~10 空洞程度3/11
04/29 16:36, 11F

04/29 16:39, , 12F
如果空洞程度很低 就比較適合 用查表法
04/29 16:39, 12F

04/29 16:40, , 13F
如果 值域範圍也很低的話 那是最好不過了
04/29 16:40, 13F

04/29 16:40, , 14F
值域應該是1~3360 空洞應該只有幾個忘記寫的項目 10吧^^
04/29 16:40, 14F

04/29 16:40, , 15F
查表法是?
04/29 16:40, 15F

04/29 16:42, , 16F
先讀 B檔案 拿到 NUM,12hr 這兩個欄位值 先假設您會
04/29 16:42, 16F

04/29 16:43, , 17F
開個陣列 double arr[3360+1] 之後 如果讀檔
04/29 16:43, 17F

04/29 16:44, , 18F
假設您拿到 num = 19, 12hr = 99.50 就把 arr[19]=99.50
04/29 16:44, 18F

04/29 16:45, , 19F
表建好後 去讀A檔 拿到num=19 就知道後面要補 arr[19]
04/29 16:45, 19F

04/29 16:45, , 20F
以上
04/29 16:45, 20F

04/29 16:47, , 21F
缺點是 如果查不到就是0 紀錄上應該是0 分不清楚
04/29 16:47, 21F

04/29 16:48, , 22F
找個適當的初始值填充那個陣列吧 EX:-1.0
04/29 16:48, 22F

04/29 17:49, , 23F
想請問 怎麼讓arr[19]拿到num=19的12hr的值 我不會抓^^"
04/29 17:49, 23F
文章代碼(AID): #19z_f2JL (C_and_CPP)
文章代碼(AID): #19z_f2JL (C_and_CPP)