C++-c语言或者c++编程 处理txt文本内容
txt文本中有n排数据,每排数据有2列,怎么实现将右边的一列数据删掉,只保留左边的那一列数据。假设txt文档中有100行数据,每行数据有两个数字,两个数字之间有7个空格,请问怎么把右边列的数据删除,只保留左边一列的数据,重新写入新的txt文本,按100行一列的格式排列。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
C语言可以使用fopen只读、fscanf读源文件保存到程序中
然后fopen只写打开原文件,这时候原文件内容会被清除
然后用fprintf把左边一列写入。。。
如果想保留原文件,那么就fopen写入一个新文件就可以了。。。
至于那么复杂吗?把数据按前后两部分读出来,前面的写到一个新文件里就行了。
#include <stdio.h>
#define MAX_STR_LEN 100
int main()
{
FILE *rfp, *wfp;
char str[MAX_STR_LEN], tmp[MAX_STR_LEN]
rfp = fopen("read_file.txt", "r");
wfp = fopen("write_file.txt", "w");
while(1)
{
fscanf(rfp, "%s%s", str, tmp);
if(feof(fp))
break;
puts(str);
}
fclose(rfp);
fclose(wfp);
}
算好间隔读取吧,用seek()函数,到没用的数据就跳过去。
用stringstream吧!
#include<iostream>
#include<fstream>
#include<string>
#include<sstream>
using namespace std;
int main(int argc, char *argv[])
{
ifstream is("test.txt");
string buffer;
int col;
while (!is.eof())
{
getline(is,buffer);
istringstream isstr(buffer);
isstr >> col;
cout << col << endl;
}
return 0;
}
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream fin("test.txt",ios::in);
if(!fin)
{
cout<<"Can not open the file!";
return 1;
}
int num[100];
int i=0;
while(!fin.eof())
{
fin>>num[i];
fin.seekg(9,ios::cur);
i++;
}
fin.close();
ofstream fout("test.txt",ios::out);
if(!fout)
{
cout<<"Can not open the file!";
return 1;
}
int size=i-1;
for(int j=0;j!=size;j++)
fout<<num[j]<<endl;
fout.close();
return 0;
}
用while循环操作;每行读取,然后对每行字符串操作取出第一个字符然后输出另一文件即可。
#include <stdio.h>
int main()
{
char str[15] = {0};
char str1[2] = {0};
FILE *fp, *fi;
fp = fopen("./test.txt", "r+");
fi = fopen("./read.txt", "w+");
while(1)
{
fgets(str, sizeof(str), fp);
if(feof(fp))
{
break;
}
str1[0] = *str;
fprintf(fi, "%sn", str1);
}
fclose (fp);
fclose (fi);
return 0;
}