作者Qoooooo (Qoo)
站内C_and_CPP
标题[问题] C code 做文章字串的排序及计算
时间Sun Sep 13 10:10:05 2009
我的问题是这样的
若一txt档内容如下:
It is good day. Ptt is a nice place.
那麽我希望开档後可以做到字母的排序也就是说如下
It
Ptt
a
day.
good
is
is
nice
place.
这一步我用比较笨的方式去做到了
但我想要做到若有同样字则显示一次就好,所以可在後面注明有出现几次
也就是若如上题结果应为:
It 1
Ptt 1
a 1
day. 1
good 1
is 2
nice 1
place. 1
我曾想过用副程式去做重复比对
但总是写到整个错乱掉
所以想请问板上写C code的大哥大姐们,是否有什麽办法可以解决
还是有什麽函数可以解决,我只会写C,所以希望是C的解法~C++我可能会看不懂
Code新手在此向大家请教
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.126.215
1F:推 pizza0117:看不出来排序的规则,是不是换行就好? 09/13 10:23
2F:→ pizza0117:使用fscanf(fp,"%s",stemp);可以一行一行读字串 09/13 10:25
3F:→ pizza0117:fp是档案指标FILE* stemp是char[30]的阵列 09/13 10:25
4F:→ pizza0117:读进来之後依序用一个阵列存起来 sbox[100][30] 09/13 10:26
5F:→ pizza0117:然後新读进来的都要跟之前的比对 sbox[i] i=0~now 09/13 10:27
6F:→ pizza0117:now表示目前存了几个不同的字串 09/13 10:27
7F:→ pizza0117:比对相同的话要做纪录 sboxcount[k]++ 09/13 10:27
8F:→ pizza0117:不同的话就新增一个 sbox[now+1] = stemp 09/13 10:28
9F:→ pizza0117:但字串不是像这样直接用 = 就可以复制过去的 需要用函式 09/13 10:29
10F:→ pizza0117:字串函式就去找看看吧 我也没背下来 09/13 10:30
我目前排序是照字母排,也就是先大写A~Z在小写a~z
您所说的比对方式我还在想怎麽处理!!!因为目前还看不太懂~(但好像有feel了)
但我可以请问一下~你说读进来後要怎麽比对!?
是指stemp[](目前读进来的)跟sbox[a][](之前读进的)
然後从stemp[1]~EOF 分别跟sbox[每个][1]~EOF比吗
谢谢
※ 编辑: Qoooooo 来自: 123.204.126.215 (09/13 10:45)
11F:推 cspy:string有比对的函式 请爱用~ 09/13 11:09
12F:→ cspy:你应该没有写虚拟码的习惯 flow画出来就知道怎麽写了 09/13 11:12
13F:推 ledia:排完序, loop 整个 list, 如果跟前一个一样就表示重覆了 09/14 15:22
14F:→ ledia:再对重覆的 item 作处理 09/14 15:23