C++读取c:\test.txt文件,进行计算后将结果输出到文件c:\test_txt中。

test.txt数据格式为:张三,1,2,3李四,3,4,5王五,6,7,9马六,3,6,8输出的结果数据位,第一列为:姓名不动,第二列为:第二第三列第四列之和,第三列为... test.txt数据格式为:
张三,1,2,3
李四,3,4,5
王五,6,7,9
马六,3,6,8
输出的结果数据位,第一列为:姓名不动,第二列为:第二第三列第四列之和,第三列为:第三列加100,最后一列为:本列-1;
张三,6,102,5
李四,12,104,11
王五,22,107,21
马六,17,106,16
请问怎么进行处理,谢谢。
原始数据:
张三,1,2,3
李四,3,4,5
结果数据为:
张三,6(1+2+3),102(100+2),2
李四,12(3+4+5),104(100+4),4
展开
 我来答
hu0904
2013-07-05 · TA获得超过222个赞
知道小有建树答主
回答量:510
采纳率:0%
帮助的人:461万
展开全部
bool fun(){
std::ifstream in("C:/test.txt");
std::ofstream out("C:/temp");
if(!in||!out)return false;
char *p=new char[1024],*q, *t;
long n[3];
while(!in.eof()){
in.getline(p,1024);
q=p;
t=p;
while(!(*q>='0'&&*q<='9')&&*q!='\0')q++;
if(q=='\0')break;
while(t!=q){
out<<*t;
t++;
}
n[0]=strtol(q,&q,10);
while(!(*q>='0'&&*q<='9')&&*q!='\0')q++;
n[1]=strtol(q,&q,10);
while(!(*q>='0'&&*q<='9')&&*q!='\0')q++;
n[2]=strtol(q,&q,10);
n[0]=n[0]+n[1]+n[2];
n[1]=100+n[1];
n[2]=-1;
for(int i=0;i<3;i++)out<<n[i]<<" , ";
out<<endl;
}
in.close();
out.close();

in.open("C:/temp");
out.open("C:/test.txt");
if(!in||!out)return false;
while(!in.eof()){
in.getline(p,1024);
out<<p<<endl;
}
in.close();
out.close();
system("cd C:\\");
system("del C:\\temp");//顺便说下这命令别乱用,我就用错了把我真在用来测试这东西的项目删了。。。头文件自己去引用
delete[] p;
return true;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2013-07-05 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6444万
展开全部
输出的结果数据位,第一列为:姓名不动,第二列为:第二第三列第四列之和,第三列为:第三列加100,最后一列为:本列-1;
张三,6,102,5
李四,12,104,11
王五,22,107,21
马六,17,106,16
你这部分描述真够DT的,没看明白啊,能不能再描述清楚些? 6=1+2+3 102=100+2 5=??-1
更多追问追答
追问
原始数据:
张三,1,2,3
李四,3,4,5
王五,6,7,9
马六,3,6,8
结果数据为:
张三,6(1+2+3),102(100+2),2
李四,12(3+4+5),104(100+4),4
……
追答
#include 
#include
#include
using namespace std ;
//将逗号变成空格
void deal_str( char *str )
{
while( *str )
{
if ( *str==',' )
*str=' ';
str++;
}
}
int main()
{
char str[1024] ;
ifstream infile( "c:\\test.txt" );
if ( !infile.good() )
{
cout <<"open file error\n" ;
return -1;
}
while( infile.getline( str, sizeof(str) ) ) //读一行数据
{
char name[16];
int iC1,iC2,iC3;
deal_str( str ); //sscanf 读字符串数据时,数据不能用逗号分隔,故采用此方法将逗号改为空格
sscanf( str , "%s %d %d %d " , name, &iC1, &iC2, &iC3 );
iC1 += iC2+iC3 ;
iC2 += 100 ;
iC3 -= 1 ;
cout << name <<"," << iC1 <<"," << iC2 <<"," <<iC3<<endl ;
}
infile.close();
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
普洛智应
2013-07-05 · 知道合伙人互联网行家
普洛智应
知道合伙人互联网行家
采纳数:410 获赞数:1585
虚拟现实(VR/AR)以及游戏相关技术,物联网以及传感器技术

向TA提问 私信TA
展开全部
#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
string name,i,j,k;

ifstream infile("test.txt");
while( !infile.eof() )
{
getline(infile, name, ',');
getline(infile, i, ',');
getline(infile, j, ',');
getline(infile, k, '\n');
cout << name << ":\t" << atoi(i.c_str()) + atoi(j.c_str()) + atoi(k.c_str()) << ",\t" <<  atoi(j.c_str()) + 100 << ",\t" << atoi(k.c_str())-1 << endl;

}
return 0;
}
更多追问追答
追问
能不能帮我放到数组中啊
追答
放到几个数组,你希望怎么存放数据,比如哪些信息放哪里等等。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-07-05 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3466万
展开全部
请问哥们,你是要做什么,怎么全是这么奇怪的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式