还请各位高手把具体的代码发上来。先谢拉...
8 个解决方案
#1
个人建议你先自己实现以下这个功能,有误或者结果不正确,再由大家一起讨论
#2
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
FILE* ifp=0;
FILE* oallfile=0;
const char* iallfp="/media/本地磁盘/datafiles/0502BeijingIT_201009291243.txt";
ifp=fopen(iallfp,"r");
if(ifp==NULL)
{
printf("Can not open the source file!\n");
return 1;
}
while(!feof(ifp))
{
char* a;
a=(char*)malloc(1000);
fgets(a,1000,ifp);
int pos2=0,pos3=0;
char c[10];
char data[2000];
memset(&data,0,sizeof(data));
memset(&c, 0, sizeof(c));
while (*a++ != ',')
++pos2;
strncpy(c, a-pos2-1, pos2);
while (*a++ != '/')
++pos3;
strncpy(data,a-3,pos3+200);
// 获取源文件的路径和文件名
char* p=iallfp;
int pos1 = 0;
char s[100];
memset(&s, 0, sizeof(s));
while (*p++ != '.')
++pos1;
strncpy(s, iallfp, pos1+1);
char ofilename[150];
strcpy(ofilename,s);
strcat(ofilename,c);
oallfile=fopen(ofilename,"w+");//创建并打开存储数据的txt文档
if(oallfile==NULL)
{
printf("Can not ctreat target file!\n ");
return 2;
}
fprintf(oallfile,"%s\n",data);
fclose(oallfile);
}
return 0;
}
这就是我实现的代码,但是这个代码不能完全读取源文件中所有行的字符串,只能读取最后几行的字符串写入到新的文件。各位高手请看看出了什么问题?
#3
jixingzhong,麻烦你看看有什么问题?
#4
LZ会debug不?
#5
一直在malloc 没有free啊
#6
lz写一下程序运行的结果,和期望结果。
#7
我现在感觉C++里面的ifstream和string结合处理这样的问题简直得心应手啊,呵呵
一行一行的读文件例子如下:
一行一行的读文件例子如下:
#include <isotream>
#include <fstream>
#include <string>
using namespace std;
int readFile(char fileName[]) //fileName是需要处理的文件名
{
ifstream in(fileName);
if (!in)
{
cerr << "Cannot open the file:" << fileName << endl;
exit(EXIT_FAILURE);
}
string str = "";
while (getline(in,str))
{
//调用str.substr()截取三个字符进行处理
}
in.close();
}
#8
最后那个循环里文档的打开方式错拉,以你那种打开方式只会每次打开就把写入文件的上一条数据给覆盖了,把w换成at就可以了。
#1
个人建议你先自己实现以下这个功能,有误或者结果不正确,再由大家一起讨论
#2
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
FILE* ifp=0;
FILE* oallfile=0;
const char* iallfp="/media/本地磁盘/datafiles/0502BeijingIT_201009291243.txt";
ifp=fopen(iallfp,"r");
if(ifp==NULL)
{
printf("Can not open the source file!\n");
return 1;
}
while(!feof(ifp))
{
char* a;
a=(char*)malloc(1000);
fgets(a,1000,ifp);
int pos2=0,pos3=0;
char c[10];
char data[2000];
memset(&data,0,sizeof(data));
memset(&c, 0, sizeof(c));
while (*a++ != ',')
++pos2;
strncpy(c, a-pos2-1, pos2);
while (*a++ != '/')
++pos3;
strncpy(data,a-3,pos3+200);
// 获取源文件的路径和文件名
char* p=iallfp;
int pos1 = 0;
char s[100];
memset(&s, 0, sizeof(s));
while (*p++ != '.')
++pos1;
strncpy(s, iallfp, pos1+1);
char ofilename[150];
strcpy(ofilename,s);
strcat(ofilename,c);
oallfile=fopen(ofilename,"w+");//创建并打开存储数据的txt文档
if(oallfile==NULL)
{
printf("Can not ctreat target file!\n ");
return 2;
}
fprintf(oallfile,"%s\n",data);
fclose(oallfile);
}
return 0;
}
这就是我实现的代码,但是这个代码不能完全读取源文件中所有行的字符串,只能读取最后几行的字符串写入到新的文件。各位高手请看看出了什么问题?
#3
jixingzhong,麻烦你看看有什么问题?
#4
LZ会debug不?
#5
一直在malloc 没有free啊
#6
lz写一下程序运行的结果,和期望结果。
#7
我现在感觉C++里面的ifstream和string结合处理这样的问题简直得心应手啊,呵呵
一行一行的读文件例子如下:
一行一行的读文件例子如下:
#include <isotream>
#include <fstream>
#include <string>
using namespace std;
int readFile(char fileName[]) //fileName是需要处理的文件名
{
ifstream in(fileName);
if (!in)
{
cerr << "Cannot open the file:" << fileName << endl;
exit(EXIT_FAILURE);
}
string str = "";
while (getline(in,str))
{
//调用str.substr()截取三个字符进行处理
}
in.close();
}
#8
最后那个循环里文档的打开方式错拉,以你那种打开方式只会每次打开就把写入文件的上一条数据给覆盖了,把w换成at就可以了。