vc中如何修改TXT文件的指定行的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc中如何修改TXT文件的指定行的内容?相关的知识,希望对你有一定的参考价值。

txt配置文件:
SERV_IP=127.0.0.1
SERV_PROT=9666
DB_NAME=master
DB_USER=sa
DB_PWD=
SERV_CHECK_CODE=123456
SERV_COM_ID=0
SERV_CLIENT_TYPE=1
SERV_ISMAINSTATION=0
PROGRAM_STAR_TIME=2011-10-12 16:08:36
PROGRAM_CLOSE_TIME=2011-10-12 16:08:42
我想每次在程序关闭的之前得到系统时间,然后存到配置文件PROGRAM_CLOSE_TIME中,然后在下次程序开启的时候读取这个时间。
请问下vc中怎么修改PROGRAM_CLOSE_TIME后面的时间呢。
!!!!!!!!!!!
不要用读取全部 修改 重新写入的方法!!!
!!!!!
怎样才能单独修改该配置值呢?

咳咳 我正好在弄这个问题 等我有了结果再来和你讨论~~占个楼先
好了我弄出来了 嘿嘿 我新手有点笨啊 用了五天才把这个搞明白 其实楼下那位同学说的关于CStdioFile::ReadString和CStdioFile::WriteString的方法是可行的啊
首先给你说两个函数哈 ReadString和WriteString
我是新手 也搞不懂什么派生啊之类的了 只说功能
Step1. 使用file.open打开文件之后呢 文件的指针就停在该txt的开始位置 然后这个ReadString可以以行为单位进行读取 每用一次这个函数,指针就会自动往下走一行(估计是用换行符判断的)。比如你想修改第五行 你只需要运行这个函数四次 就可以将文件指针调到第五行的开始了 是不是很爽~咩哈哈
Step2. 定义一个Dword的变量“o” 来记录指针位置
“DWORD o=0;”
用GetPosition()来获取该指针位置 并将它给变量“o ”
o=file.GetPosition();

Step3. Seek到指针位置 然后使用WriteString函数写入 注意这个WriteString的写入是覆盖原先的文本内容的
file.Seek(o,0);
file.WriteString("NC不脑残");
file.Close();
这样就完成啦

给你一个我做的例子 经试验是可以完成该功能滴
CStdioFile file;
CString sss;
DWORD o=0;
int ol=0;
file.Open("C:\\Documents and Settings\\Administrator\\桌面\\哈哈.txt",CFile::modeReadWrite);
while(file.ReadString(sss))

ol++;
if(ol>2)//读两次就不读了
break;

MessageBox(sss);
o=file.GetPosition();
file.Seek(o,0);
file.WriteString("Hello, world");
file.Close();
参考技术A 以读写方式打开文件( r+ , w+ )
按行读取文件中的数据,同时,读之前先记录最后一次读的文件位置。
检查数据是不是PROGRAM_CLOSE_TIME=这一行
如果不是 继续读取下一行
如果是: 修改成待修改的数据,重新定位文件到最后一次读取的位置,将修改后的数据写到当前行。关闭文件,退出程序。追问

想是这么想没错啊。能不能贴点代码出来啊!c++的!我现在在做vc ado编程呢。配置文件这问题不想用重新写入这方法逃避。

参考技术B 我刚做了这个功能,给你个思路不给代码了。
用CStdioFile::ReadString读取每一行的字符串,读到你想要的那一行停止,然后文件定位,再用CStdioFile::WriteString写入你新的字符串
参考技术C 这种类型的配置文件只能读取全部,修改,重新写入
如果是xml类型的配置文件,倒可以实现你需要的功能
参考技术D 楼主 用记事本 打开 文件 ,像怎么改就怎么改 ~~ 为嘛用VC啊~~追问

你个鸟人!!!!!给哥贴点代码出来?

易语言 如何 列出 指定目录下 所有 文件名

@ECHO OFF
FOR /F "tokens=1,2" %%a IN (city.txt) DO (
IF EXIST %%a% %.txt (
COPY %%a% %.txt %%b% %.txt
)
)

这是从别人那边转过来的。我不大懂这个东西。
以下内容来自
dir /a/b 指定目录路径 >输出目录路径\1.txt

如果输出路径为%ComputerName%.txt则命名为计算机名

新建文本文档在文本文档里输入:
dir *.* /a /b /s >1.txt
保存为 提取名字.bat
文件名字被提取到当前文件夹的1.txt里面了!也可以提取某类型的文件比如*.mp3 或者a*.mp3

参 数:
-1 每列仅显示一个文件或目录名称。
-a或--all 下所有文件和目录。
-A或--almost-all 显示所有文件和目录,但不显示现行目录和上层目录。
-b或--escape 显示脱离字符。
-B或--ignore-backups 忽略备份文件和目录。
-c 以更改时间排序,显示文件和目录。
-C 以又上至下,从左到右的直行方式显示文件和目录名称。
-d或--directory 显示目录名称而非其内容。
-D或--dired 用Emacs的模式产生文件和目录列表。
-f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。
-F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。
-g 次参数将忽略不予处理。
-G或--no-group 不显示群组名称。
-h或--human-readable 用"K","M","G"来显示文件和目录的大小。
-H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。
-i或--inode 显示文件和目录的inode编号。
-I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。
-k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。
-l 使用详细格式列表。
-L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。
-m 用","号区隔每个文件和目录的名称。
-n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。
-N或--literal 直接列出文件和目录名称,包括控制字符。
-o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。
-p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。
-q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。
-Q或--quote-name 把文件和目录名称以""号标示起来。
-r或--reverse 反向排序。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-s或--size 显示文件和目录的大小,以区块为单位。
-S 用文件和目录的大小排序。
-t 用文件和目录的更改时间排序。
-T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。
-u 以最后存取时间排序,显示文件和目录。
-U 列出文件和目录名称时不予排序。
-v 文件和目录的名称列表以版本进行排序。
-w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。
-x 以从左到右,由上至下的横列方式显示文件和目录名称。
-X 以文件和目录的最后一个扩展名排序。
--block-size=<区块大小> 指定存放文件的区块大小。
--color=<列表格式> 培植文件和目录的列表格式。
--full-time 列出完整的日期与时间。
--help 在线帮助。
--indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。
--quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。
--show-control-chars 在文件和目录列表时,使用控制字符。
--sort=<排序方式> 配置文件和目录列表的排序方式。
--time=<时间戳记> 用指定的时间戳记取代更改时间。
--version 显示版本信息。

批量重命名
新建文本文档在文本文档里输入:
@for /f %%a in (A.txt) do @(
if exist %%a for /f %%b in (B.txt) do (
rename %%a %%b))
保存为 批量改名.bat
A.txt 是原来的文件名
B.txt 是修改后的文件名
一行对应一个名字不能有空格同时注意文件属性
a.txt :
NBA直播录像1.3gp
NBA直播录像2.3gp
NBA直播录像3.3gp
NBA直播录像4.3gp
b.txt :
NBA直播录像第一场.3gp
NBA直播录像第二场.3gp
NBA直播录像第三场.3gp
NBA直播录像第四场.3gp
参考技术A 一个简单的、、、

.版本 2
.支持库 EThread

.程序集 窗口程序集1
.程序集变量 是否停止, 逻辑型
.程序集变量 列表框文件名, 文本型, , "0"

.子程序 __启动窗口_创建完毕

编辑框1.内容 = 取运行目录 () + “\”
组合框1.加入项目 (“*”, )
组合框1.加入项目 (“exe”, )
组合框1.加入项目 (“jpg”, )
组合框1.加入项目 (“bmp”, )
组合框1.现行选中项 = 0

.子程序 _按钮1_被单击

是否停止 = 假
启动线程 (&子程序1, , )

.子程序 子程序1
.局部变量 表项
.局部变量 路径, 文本型
.局部变量 文件名, 文本型

.如果真 (是否停止 = 真) ' 搜索被停止,则返回
返回 ()
.如果真结束
文件名 = 寻找文件 (编辑框1.内容 + 组合框1.内容, )
.判断循环首 (文件名 ≠ “”) ' 显示找到的文件
列表框1.加入项目 (文件名, )
加入成员 (列表框文件名, 编辑框1.内容 + 文件名)
文件名 = 寻找文件 (, )
.判断循环尾 ()

.子程序 _按钮2_被单击

是否停止 = 真
参考技术B 判断循环首(返回文件名!="")
返回文件名=寻找文件(“D:\*.*”,)
列表框。添加项目还是什么(记不太清楚了)=“D:\”+返回文件名
判断循环尾

按照这个伪码自己去试一下吧~应该能做出的!!

以上是关于vc中如何修改TXT文件的指定行的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何写BAT 修改指定文件内容,并保存

excel用命令将指定的内容保存在指定的txt文件中

怎么用python读取txt文件里指定行的内容,并导入excel

怎么用python读取txt文件里指定行的内容,并导入excel?

c语言修改文件图标

linux 自己文件的内容追加在自己文件中