怎么用c语言在a.txt文件中获取一指定字符串,如(china),然后将其写入到已有的的b.txt文件中去?
最好有可以指定加到b.txt文件的第几行中,付给指定变量。谢谢各位!最好用有代码,调用的库函数...
最好有可以指定加到b.txt文件的第几行中,付给指定变量。谢谢各位!
最好用有代码,调用的库函数 展开
最好用有代码,调用的库函数 展开
展开全部
首先,打开一个tmp.txt的文件保存结果文件
FILE* out=fopen("tmp.txt","w");
FILE* in=fopen("原文件.txt","r");
循环采用fgets从in中读入字符串,fgets可以指定读入的最大字符串长度,因此可以一部分一部分地读,处理到文件结束为止
然后,因为你是要对完整的单词进行处理,所以fgets完之后再继续fgetc一个一个的字母,直到读到一个','再结束,这样就可以在内存中读到一部分的完整单词
char str[1000]; //开个1000长度的字符串数组
int len;
while (fgets(str,900,in)!=NULL) //读900个,留点空间后面可以读入直完整单词
{
len=strlen(str);
if (str[len-1]=='\n')
{
str[len-1]='\0'; //fgets还有个特点,碰到回车会结束,所以如果碰到回车,就会把结尾的回车也读进去,要去掉
len--;
}
while (str[len-1]!=',') //把最后的单词读完整
{
str[len]=fgetc(in);
if (str[len]==EOF) break;
len++;
}
str[len]='\0';
//接下来对str中的单词进行处理啦,这里自己写,逐个地读,判断是不是要删除的那个,不是的话,就写入out文件中
}
//最后,删除原文件,把tmp.txt代替原文件
fclose(in);
fclose(out);
remove("原文件.txt");
rename("tmp.txt","原文件.txt");
FILE* out=fopen("tmp.txt","w");
FILE* in=fopen("原文件.txt","r");
循环采用fgets从in中读入字符串,fgets可以指定读入的最大字符串长度,因此可以一部分一部分地读,处理到文件结束为止
然后,因为你是要对完整的单词进行处理,所以fgets完之后再继续fgetc一个一个的字母,直到读到一个','再结束,这样就可以在内存中读到一部分的完整单词
char str[1000]; //开个1000长度的字符串数组
int len;
while (fgets(str,900,in)!=NULL) //读900个,留点空间后面可以读入直完整单词
{
len=strlen(str);
if (str[len-1]=='\n')
{
str[len-1]='\0'; //fgets还有个特点,碰到回车会结束,所以如果碰到回车,就会把结尾的回车也读进去,要去掉
len--;
}
while (str[len-1]!=',') //把最后的单词读完整
{
str[len]=fgetc(in);
if (str[len]==EOF) break;
len++;
}
str[len]='\0';
//接下来对str中的单词进行处理啦,这里自己写,逐个地读,判断是不是要删除的那个,不是的话,就写入out文件中
}
//最后,删除原文件,把tmp.txt代替原文件
fclose(in);
fclose(out);
remove("原文件.txt");
rename("tmp.txt","原文件.txt");
展开全部
至少 我没有在C语言中遇到过能取出制定匹配字符的函数。
在其他的设计程序中我用过用正则表达式做匹配的,比如QT
下面是我想到的一个方法:
#include "stdio.h"
#include "string.h"
void main()
{
char a[6]="china";
char temp[1024];
int n=0;//记录有多少个china
FILE *outFile=fopen("c:\\b.txt","r+");
FILE *inFile=fopen("c:\\a.txt","r+");
while(fgets(temp,500,inFile)!=NULL)
{
int k=0;
for(int i=0;i<strlen(temp);i++)
{
if(temp[i]==a[k] && k<strlen(a))
{
k++;
}
else
{
if(k==strlen(a))
{
n++;
fprintf(outFile,"%s\n",a);
}
k=0;
}
}
}
}
在C盘要有这两个文件。。。
a文件中可能有多个china ,指定加到第几行自己看情况 在设置一个int变量记录就行了
在其他的设计程序中我用过用正则表达式做匹配的,比如QT
下面是我想到的一个方法:
#include "stdio.h"
#include "string.h"
void main()
{
char a[6]="china";
char temp[1024];
int n=0;//记录有多少个china
FILE *outFile=fopen("c:\\b.txt","r+");
FILE *inFile=fopen("c:\\a.txt","r+");
while(fgets(temp,500,inFile)!=NULL)
{
int k=0;
for(int i=0;i<strlen(temp);i++)
{
if(temp[i]==a[k] && k<strlen(a))
{
k++;
}
else
{
if(k==strlen(a))
{
n++;
fprintf(outFile,"%s\n",a);
}
k=0;
}
}
}
}
在C盘要有这两个文件。。。
a文件中可能有多个china ,指定加到第几行自己看情况 在设置一个int变量记录就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询