10楼的程序,是一个做了很多假定的程序,最好把那些假定罗列一下,看是不是真的合理和符合事实。比如,1楼说要把“某字符后的内容”输出到文件中,可没说那些内容就真的是3位小数点的浮点数,写出来是这个样子,不见得他的实际应用就是那样,甚至后面的内容也可能不等长(这是很典型的直接读写数据库文件需求,每个段是不同的数据类型,每行是一条记录)。何况,本身就是流输入流输出,没要求转换数据类型,多手替人家转换干什么呢,原样读入原样输出就是了,管它是什么内容,就算是中文文字,也不见得就是大陆的某种编码体系。假定越少,错误的几率越小。
把字符串头指针移到某个位置,puts()这个字符串就是了,那是什么流数据,根本不用管。gets()进来,变一下指针头位置,马上puts()出去,与数据内容无关,唯一要处理的就是判断那些间隔符是空格还是TAB,那涉及内码,才是要做假定的,这也是唯一的假定。
有些从数据库导出的文件,是用固定宽度分隔列数据的,有些是用指定分隔符(未必是单个字符,可以是串,在导出时人工指定,有任意性)分隔列数据的。在某些时候,要绕过数据库直接提取机密数据,就会用C之类的程序悄悄地读人家的数据库文件,也是这种手法,跳开文件前面的加密部分,提取后面未加密的文本。
[ 本帖最后由 TonyDeng 于 2011-8-2 12:55 编辑 ]
把字符串头指针移到某个位置,puts()这个字符串就是了,那是什么流数据,根本不用管。gets()进来,变一下指针头位置,马上puts()出去,与数据内容无关,唯一要处理的就是判断那些间隔符是空格还是TAB,那涉及内码,才是要做假定的,这也是唯一的假定。
有些从数据库导出的文件,是用固定宽度分隔列数据的,有些是用指定分隔符(未必是单个字符,可以是串,在导出时人工指定,有任意性)分隔列数据的。在某些时候,要绕过数据库直接提取机密数据,就会用C之类的程序悄悄地读人家的数据库文件,也是这种手法,跳开文件前面的加密部分,提取后面未加密的文本。
[ 本帖最后由 TonyDeng 于 2011-8-2 12:55 编辑 ]
授人以渔,不授人以鱼。