广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4061 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
dfgkopeeed
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][讨论] 设计能读取档案内容的程式问题
我现在假设我文件档(档名01.txt)的内容有38.117.232.0/24    32.112.45.0/24   1.53.48.0/20  这三个,我已经做出能读取档 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾教育部 | Posted:2011-12-05 09:12 |
Freelife
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x60
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

(1)先用"空白"字元,把3个子字串分离出来。
(2)每一个子字串,再用'/'做切割,就得到你想的结果。


献花 x0 回到顶端 [1 楼] From:台湾中华电信股份有限公司 | Posted:2011-12-05 09:48 |
dfgkopeeed
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我就是用空白换行的, 不过我现在的问题就是我要用我那个尾数(有24,28......)来分类输出,我那三个只是其中几个而已也就是我最后想输出(以我那三个为例子) 



献花 x0 回到顶端 [2 楼] From:台湾教育部 | Posted:2011-12-05 10:05 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

读取进来的方法有很多种,第一个要作的是用 char* 阵列来储存三个 字串

arrS[0] = "38.117.232.0/24"
arrS[1] = "32.112.45.0/24"
arrS[2] = "1.53.48.0/20"

可以用 scanf 用 %s 方式一次读一串,或是全部读进来后,用 strtok 依照空白字元 切割



接下来要做分类的动作,作分类的动作之前,必须先得知每个 arrS 斜线后面的数字是多少

也是可以用 strtok 来作切割,再来用 atoi 转换成数字

或是用 strrchr 来搜寻斜线,同样动作用 atoi 转换成数字



接下来分类我提供一个很简单的方法 :

用另外一个阵列 arrNum[] 来记录斜线后的数字,对应到同一 Index 的 arrS

只要将 arrNum 来排序,排序过程中任何两个 Index 的数字 swap 时候,arrS 的字串也要跟着 swap


arrS[0] = "38.117.232.0/24"
arrS[1] = "32.112.45.0/24"
arrS[2] = "1.53.48.0/20"


arrNum[0] = 24
arrNum[1] = 24
arrNum[2] = 20


排序完后资料会像这样 :

arrS[0] = "1.53.48.0/20"
arrS[1] = "38.117.232.0/24"
arrS[2] = "32.112.45.0/24"


arrNum[0] = 20
arrNum[1] = 24
arrNum[2] = 24


再把 arrS 用回圈从 0 ~ 2 依序印出即可




这是一个我想出来的几个简单的方法,要更有效率可以用 List, Tree 等资料结构来作,但是稍显复杂


My BOINC stats :

献花 x0 回到顶端 [3 楼] From:台湾教育部 | Posted:2011-12-05 13:05 |
dfgkopeeed
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢您的回答,我现在的困境是在我很有很多笔资料(几千笔),我在想这样的话要怎么去做处理


献花 x0 回到顶端 [4 楼] From:台湾教育部 | Posted:2011-12-05 18:20 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

几千笔的话,可以考虑 动态分配 来储存资料

在 C 中就是用 malloc, calloc 的语法来动态分配记忆体,虽然执行速度会比 用阵列来的慢

好处是比较没有长度的顾虑


(进阶的作法是用 Array 搭配 动态分配,速度可以提升一点)



1000 多笔资料用 Quick sort 的排序法来排序资料也是很快的

实作一次就大概知道了,我猜应该也是 咻一下就显示出来了


My BOINC stats :

献花 x0 回到顶端 [5 楼] From:台湾教育部 | Posted:2011-12-05 23:56 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.083387 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言