帮忙解决两道有关文件的题目

Who_know_me 2009-07-03 05:16:02
本人是新手,正在自学。麻烦各路高手帮忙解惑,3Q。

1、编写一个函数,以一个文本文件名作为命令行参数,并产生一个拥有下面标题行的新文本文件
**********file name**********
新文件的内容在原始文件内容中加上行标号得到,如果原始文件名包含句点,那么使用句点之前的部分文件名再连接上.lis作为新的文件名,否则只要用整个文件名连接.lis即可。

PS:在这道题目上我想知道,一般是在什么情况下使用如int main(int argc,char *argv[])这样的命令行参数

2、考虑员工记录的文件empstat.txt。每个员工的数据由员工名(最多20个字符)、社会保险号(最多11个字符)、周总薪(double型)、税款(double型)和净周薪(double型)组成,在文件empstat.txt中的每个记录都是一个单独的文本行。编写一个程序,产生一个文本文件report.txt,它带有标题行
NAME SOC.SEC.NUM GROSS TAXES NET

下面是两个空白行和每个列标题下的相关信息,该程序还应该产生empstat.txt的二进制文件的版本,它的名称为empstat.bin

PS:这道题目是想弄明白,如何改写一个文本文件。考虑到文本文件中存储的都是字符,而我不知道如何操纵这些字符,比如说.txt文件中的内容是一行一行的,那怎么提取这些字符呢??






























...全文
29 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingling1989r 2009-07-03
  • 打赏
  • 举报
回复
如果你要改写文件再读入的话,你就单个字符的读入。

char ch;
while(!fin.eof())
{
ch = fin.get();
if(ch=='.')//是这个意思么?
{
......
}
}
lingling1989r 2009-07-03
  • 打赏
  • 举报
回复
问题1:

命令行参数的最开始的认识,看这个 http://www.diybl.com/course/3_program/c++/cppsl/2008919/143715.html
文件读取 :http://blog.waterlin.org/articles/how-to-read-a-file-at-one-time-in-c.html

下面写了一段代码,没看懂你说的“原始文件包含句点。。”什么意思,所以只实现了,文件头部显示文件名,下面显示行号和文件内容。

args.cpp

#include<iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc,char *args[])
{
string name;
name = args[1];
ifstream fin(name.c_str());
ofstream fout("test.txt");
fout<<"**********************"<<name<<"******************"<<endl;
fout<<"1 ";
int i=1;
string str;
while(!fin.eof())
{
getline(fin,str);
fout<<++i<<" "<<str<<endl;
}
return 0;
}



我的是minGW Developer Studio,测试结果如下
cmd->找到debug生成的当前目录,然后
args a.txt (我在当前目录下建了个a.txt的文件)回车就会生成test.txt的文件。

打开test.txt内容如下:

**********************a.txt******************
1 2 @@@author@@@:luoax084@nenu.edu.cn
3 @@@author@@@:luoax084@nenu.edu.cn
4
5 @@@author@@@:luoax084@nenu.edu.cn
6
7 @@@author@@@:luoax084@nenu.edu.cn
8
9 @@@author@@@:luoax084@nenu.edu.cn
10
11 @@@author@@@:luoax084@nenu.edu.cn
12
13
14
15


lingyin55 2009-07-03
  • 打赏
  • 举报
回复
PS:这道题目是想弄明白,如何改写一个文本文件。考虑到文本文件中存储的都是字符,而我不知道如何操纵这些字符,比如说.txt文件中的内容是一行一行的,那怎么提取这些字符呢??

操作文件都是先读出来》》保存》》修改》》写回文件。
具体操作可以看fread和fwrite。
c++的可以直接看fstream
大前置 2009-07-03
  • 打赏
  • 举报
回复
1. 一般程序带参数运行时,使用如int main(int argc,char *argv[])这样的命令行参数;argc 表示带多少个参数, argv参数数组
像你这个程序要文件名作参数,就需要了;运行如: 程序名 file.txt
2. 文件改写有困难,如果块改写,只要定位并覆盖就可以了;但是改写内容大于原内容,就会覆盖文件的其它内容了。
一般可以先把文件读取到内存再修改,再保存。
如果文件太大,可以读取一部分,修改一部分,保存到另一个文件,再rename就可以

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧