C编程实现如何将txt中指定字符进行对应的替换。
发布网友
发布时间:2022-04-25 15:15
我来回答
共3个回答
热心网友
时间:2023-10-11 19:41
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
struct COUPLE
{
char *s; //源字符串
int sl; //源字符串长
char *t; //目标字符串
int tl; //目标字符串长
} *ChangeList=NULL; //存放转换对
int ChangeListNum=0; //共有多少对转换
void PrepareChangeList(const char *ChangeListFileName) //准备转换列表
{
int i,r;
FILE *cf;
char from[512], to[512], buf[512];
//1. 求ChangeListFileName共有多少有效的行ChangeListNum
cf=fopen(ChangeListFileName,"r");
if (cf==NULL) return;
for (ChangeListNum=0; ; )
{
if (NULL==fgets(buf, 500, cf)) break;
r=sscanf(buf, "%s%s", from, to);
if (r==2) ++ChangeListNum; //本行符合格式, 有效
}
if (ChangeListNum==0) return;
//2. 根据行数申请内存
r=ChangeListNum*sizeof(struct COUPLE); //共要多少内存
ChangeList=(struct COUPLE *)malloc(r);
//3. 读入转换对
rewind(cf);
for (i=0; i<ChangeListNum; ++i)
{
//3.1读入一对
fgets(buf, 500, cf);
r=sscanf(buf,"%s%s",from,to);
if (r!=2) continue;
//3.2保存源串
r=strlen(from);
ChangeList[i].sl=r++;
ChangeList[i].s=(char *)malloc(r);
memcpy(ChangeList[i].s, from, r);
//3.3保存目标串
r=strlen(to);
ChangeList[i].tl=r++;
ChangeList[i].t=(char *)malloc(r);
memcpy(ChangeList[i].t, to, r);
}
fclose(cf);
}
void ClearChangeList() //释放转换列表
{
int i;
for (i=0; i<ChangeListNum; ++i)
{
free(ChangeList[i].s);
free(ChangeList[i].t);
}
free(ChangeList);
ChangeListNum=0;
ChangeList=NULL;
}
//得到文件Filename的大小
int FileSize(const char *Filename)
{
struct _stat Stat;
if (0!=_stat(Filename, &Stat)) return -1;
if (0==(Stat.st_mode&_S_IFREG))return -1;
return Stat.st_size;
}
void change(const char *source, const char *target) //转换
{
int TextSize;
int i,j,len;
char buf[512];
FILE *tf, *rf;
if ( -1 == (TextSize=FileSize(source) ) ) return;
if (NULL == ( tf=fopen(source,"rb") ) ) return;
if (NULL == (rf =fopen(target,"wb") ) ) return;
memset(buf,0, sizeof(buf));
fread(buf,1,sizeof(buf),tf);
for (j=0; j<TextSize; ++j)
{
//根据所有的转换对,来一一比较
for (i=0; i<ChangeListNum; ++i)
if (memcmp(buf,ChangeList[i].s,ChangeList[i].sl)==0) break;
//根据结果写入目标文件
if (i>=ChangeListNum) //无一匹配,则将第一个字符写入目标
{
len=1;
fwrite(buf, 1, 1, rf);
}
else //匹配,则写入转换结果
{
len=ChangeList[i].sl;
fwrite(ChangeList[i].t, 1, ChangeList[i].tl, rf);
}
//文件缓冲区向前移位
i=sizeof(buf)-len;
memcpy(buf, buf+len, i);
//读入补空文件缓冲区
memset(buf+i,0,len);
fread(buf+i,1,len,tf);
}
fclose(tf);
fclose(rf);
}
void main(int argn, char *argv[])
{
if (argn<4)
{
printf("用法:change 原始文件名 待替换文字列表文件名 替换后输出文件名\n");
return;
}
//准备转换列表
PrepareChangeList(argv[2]);
if (ChangeListNum==0) return;
//转换
change(argv[1],argv[3]);
//释放转换列表
ClearChangeList();
}
/*
待替换文字列表文件格式:
A 一
B 二
C 三
D 四
E 五
张三丰 武当掌门
张艺谋 超生队长
......
表示将前面的词换成后面的词
*/
热心网友
时间:2023-10-11 19:41
一楼实在没必要那么麻烦,被替换的是英文又不是中文,进行简单替换即可
#include <stdio.h>
int main()
{
FILE *fp,*fp1;
register char ch;
fp=fopen("test.txt","r"); //文件路径
if(fp==NULL)
{printf("can not open the file\n");return 1;}
fp1=fopen("new.txt","w"); //新建一个文件保存
ch=fgetc(fp);
while(ch!=EOF)
{
if(ch=='A')fprintf(fp1,"一"); //进行替换
else if(ch=='B')fprintf(fp1,"二");
else if(ch=='C')fprintf(fp1,"三");
else if(ch=='D')fprintf(fp1,"四");
else if(ch=='E')fprintf(fp1,"五");
else fputc(ch,fp1);
ch=fgetc(fp);
}
fclose(fp); //关闭文件
fclose(fp1);
return 0;
}
热心网友
时间:2023-10-11 19:42
用UltraEdit 可以吗?
C编程实现如何将txt中指定字符进行对应的替换。
//存放转换对int ChangeListNum=0; //共有多少对转换void PrepareChangeList(const char *ChangeListFileName) //准备转换列表{ int i,r; FILE *cf; char from[512], to[512], buf[512]; //1. 求ChangeListFileName共有多少有效的行ChangeListNum cf=fopen(ChangeListFi...
在c语言编程中如何实现程序对文本文件中字符串进行替换及生成新的文本...
void Display_text(); //显示本文内容 void Count_ch(); //统计字符数,空格数,行数 void Search_KeyWord(); //检索关键字 void Replace_KeyWord(); //替换关键字 void index(SqString s,SqString t); //简单匹配算法(BF)void SetColor(unsigned short ForeColor,unsigned sho...
c语言:如何将字符串中指定的字符替换为另一个指定字符
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:char a[] = "hello world!", b[20];strrpl(a, b, sizeof(b), "world", "c");puts(a);3、编译器运行test.cpp文件,此时成功将"world"替换为"c"进行了输出。
c语言:如何将字符串中指定的字符替换为另一个指定字符
在C语言中,如果你需要将一个字符串中的特定字符替换为另一个指定字符,可以使用以下函数实现:c void rep(char *s, char *s1, char *s2){ char *p;for (; *s; s++) { // 遍历字符串s中的每个字符 for (p = s1; *p && *p != *s; p++); // 搜索s1中是否与s中的字符匹配 ...
c语言中完成一个自定义函数,替换指定字符串中的对应字符的代码
i] == oldChar){ string[i] = newChar; } }}int main(){ char str[] = "test"; char oldChar = 't'; char newChar = 'w'; replaceChar(str, oldChar, newChar); printf("%s\n", str); return 0;} ...
C语言中如何将文件中的几个字符替换成另外几个字符?
butteryflycut@163.com 获取关键字,得到它的长度,然后从操作文件中读取这么长的字符串,进行比较,把文件指针指向下一个字符(注意,要一个字符一个字符的向下进行),这样就可以把需要的关键字找出来,如果想替换的话,把读取出的数组改成想要得,最后别忘记fcolse();...
用C语言编写程序,将字符数组中的指定字符替换为另一个字符?
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。2、定义变量:#include <stdio.h>void main(){ char c1,c2,c3; /*定义字符变量*/。3、输入一个字符:printf("输入一个字符,使用getche函数接收\n"); /*提示用户输入一个字符*/c1=getche(); /*使用getche()函数接收...
实现txt文件中的查找与替换功能
使用方法:一、查找: FindText( txt, czgjz, wz ) 中,各参数分别为:txt为文本框控件名变量,czgjz为要查找的关键字变量,wz为开始位置变量 二、替换:ReplaceText(txt,czgjz, thgjz, wz) 中,各参数分别为:txt为文本框控件名变量,czgjz为替换前的关键字变量,thgjz为替换后的关键字...
C#,查找txt中特定字符,把包含该字符的所有行进行输出操作,请问如何实现...
{ class Program { static void Main(string[] args){ string path = @"C:\test.txt";char ch = '/';StreamReader sr = new StreamReader(path);string line = null;while (sr.ReadLine() != null){ line = sr.ReadLine();if (line != null &&line.Contains(ch) ){ Console....
c语言:如何将字符串中指定的字符替换为另一个指定字符
/*功能:将str字符串中的oldstr字符串替换为newstr字符串 参数:str:操作目标oldstr:被替换者newstr:替换者 返回值:返回替换之后的字符串 版本:V0.2 / char*strrpc(char*str,char*oldstr,char*newstr){ char bstr[strlen(str)];//转换缓冲区 memset(bstr,0,sizeof(bstr));for(int i=...