作者KengiBon (蜀中无大将)
看板C_and_CPP
标题Re: [问题] c语言 档案内容比对与合并
时间Wed Apr 29 21:18:15 2009
我使用fscanf(file, "%s", &arr[i]);的方式
将A和B档案的偶数行的前三项依序抓入arr1[]和arr2[]中来比对
但是出现一个问题
以第二行为例
虽然arr1[0]=|,arr1[1]=NUM,arr1[2]=|
且 arr2[0]=|,arr2[1]=NUM,arr2[2]=|
但是用if来比对arr1[i]与arr2[i]时却是"FALSE"
为什麽??
我不太懂 希望大大能帮我解答
看可以用甚麽方式来比对
谢谢!!
※ 引述《KengiBon (蜀中无大将)》之铭言:
: 想请问程设的大大一个问题
: (本人是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
1F:推 VictorTom:请问你的arr1和arr2两个array怎麽开的??看起来至少要先 04/29 21:52
2F:→ VictorTom:宣告两个够大的2维array, 照你这样写的话@_@" 04/29 21:53
3F:→ KengiBon:两个都是[4][10240] 传回值是int(不知跟char有甚麽差别 04/29 22:14
4F:推 VictorTom:请问您後面那句传回值是int是什麽意思?_? 04/30 00:03
5F:→ VictorTom:您是 int arr1[4][10240]; 这样吗?? 那请改用char试试:) 04/30 00:03
6F:→ VictorTom:另外, char字串的compare应该用strcmp()这个function做 04/30 00:04
7F:→ VictorTom:推测您的写法, arr1是一个2D array, arr2是另一个.... 04/30 00:04
8F:→ VictorTom:arr1[i]拿到的是第i个第一维度里, 第二维度10240的头的 04/30 00:05
9F:→ VictorTom:位址; 很饶舌, 简单说就是你拿来比较的是array的某一个 04/30 00:06
10F:→ VictorTom:address, 而不是里面存的value, 这个case它们比较永远 04/30 00:06
11F:→ VictorTom:不会成立的. 请照00:04那推, 用strcmp(arr1[i],arr2[i]) 04/30 00:07
12F:→ VictorTom:这个function return 0代表字串相同, 但是你要确定你的 04/30 00:08
13F:→ VictorTom:两个array都有'\0'结尾, 照理说你用fscanf应该就有了. 04/30 00:08
14F:→ VictorTom:最後还是那个建议, 只要不是太复杂或太机敏, 请贴code:) 04/30 00:09
15F:→ VictorTom:尽量别让板友帮您找问题时还得先猜您可能是怎麽实作的XD 04/30 00:10
16F:→ VictorTom:补充一下, 如果您肯定file里的data一定照个您的规定写的 04/30 00:12
17F:→ VictorTom:'|'这个字元的判断可以用 arr1[i][0] == arr2[i][0] 04/30 00:12
18F:→ VictorTom:保险一定要抓到'|', 还可以再 && arr1[i][0] == '|' 04/30 00:13
19F:→ KengiBon:感谢V大大的指导 我会试试看的(下次会把code也贴出来得:) 04/30 08:55