| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1832 人关注过本帖
标题:新手上路的问题 该怎么把某字符后的内容输出到新的TXT文件中
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
10楼的程序,是一个做了很多假定的程序,最好把那些假定罗列一下,看是不是真的合理和符合事实。比如,1楼说要把“某字符后的内容”输出到文件中,可没说那些内容就真的是3位小数点的浮点数,写出来是这个样子,不见得他的实际应用就是那样,甚至后面的内容也可能不等长(这是很典型的直接读写数据库文件需求,每个段是不同的数据类型,每行是一条记录)。何况,本身就是流输入流输出,没要求转换数据类型,多手替人家转换干什么呢,原样读入原样输出就是了,管它是什么内容,就算是中文文字,也不见得就是大陆的某种编码体系。假定越少,错误的几率越小。

把字符串头指针移到某个位置,puts()这个字符串就是了,那是什么流数据,根本不用管。gets()进来,变一下指针头位置,马上puts()出去,与数据内容无关,唯一要处理的就是判断那些间隔符是空格还是TAB,那涉及内码,才是要做假定的,这也是唯一的假定。

有些从数据库导出的文件,是用固定宽度分隔列数据的,有些是用指定分隔符(未必是单个字符,可以是串,在导出时人工指定,有任意性)分隔列数据的。在某些时候,要绕过数据库直接提取机密数据,就会用C之类的程序悄悄地读人家的数据库文件,也是这种手法,跳开文件前面的加密部分,提取后面未加密的文本。

[ 本帖最后由 TonyDeng 于 2011-8-2 12:55 编辑 ]

授人以渔,不授人以鱼。
2011-08-02 12:38
zxlwinner
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-8-2
收藏
得分:0 
\t和空格是不一样的 请问个位数和十位数以致百位千位 如果是\t移动的指针位置也不同 该怎么处理
2011-08-02 13:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
首先fgets()一行进入一个字符串中,指针从头开始往后扫,前面是什么字符都不管,跳,直到遇到TAB或空格,记下start标志,继续扫,只要仍是TAB或空格,还是跳,直到遇到非TAB且非空格,此时清掉start标志,扫描结束,把现在指针指示的字符串fputs()到文件。

读下一行,重复上面的动作,直到文件结束。

授人以渔,不授人以鱼。
2011-08-02 13:53
zxlwinner
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-8-2
收藏
得分:0 
我用fscanf(fp,"%*[^\t]%*c");    fscanf(fp,"%[^\n]%*c",str);个位后面的数据读出来 ,为什么到十位就少了小数点前面的数字,奇怪的是百位千位也和十位一样少小数点前面的数字
你说的start标志没学过 不知道怎么用 该怎么设定呢 谢谢了 麻烦大哥了

[ 本帖最后由 zxlwinner 于 2011-8-2 14:12 编辑 ]
2011-08-02 14:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
start标志是自己设的变量,布尔开关,标志正在扫描分隔符,第一次遇见TAB或空格时打开它,失去TAB或空格时关闭它,这是用于每行有多个分隔区时用的,简单的情形可以不用,如果把整个文件读到一个字符串中就这样用。

用fgetc()逐个字符读,当判断出应写入数据时就逐个fputc()写出去,否则舍弃,读下一个字符。全部用字符处理,不涉及数据转换处理过程,速度飞快(特别是带缓冲的流文件函数)。

关键点是识别要抛弃的列和分割符,自己考虑用什么标志标识什么时候舍弃、什么时候有用就是了。想象好逻辑,在脑中用动画走一遍:自己是那只指针,一路扫描的时候,怎么记忆现在是什么情形,这个数据要不要,碰到怎样的情形才算要。把这个逻辑整理好,就能写程序了。

授人以渔,不授人以鱼。
2011-08-02 14:26
zxlwinner
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2011-8-2
收藏
得分:0 
哦 我知道了 谢谢了
2011-08-02 15:42
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
我知道是字符串处理  但是这样可以满足楼主的要求  呵呵  见笑

                                         
===========深入<----------------->浅出============
2011-08-02 15:46
快速回复:新手上路的问题 该怎么把某字符后的内容输出到新的TXT文件中
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040074 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved