问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

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 &amp;&amp; *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 &lt;stdio.h&gt;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 &amp;&amp;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=...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
急~~~!南京师范大学附属实验学校的高中部怎么样 在吉普岛旅游时,你有过哪些比较难忘的经历? 迅雷怎么发布资源啊?高手指教.小弟先谢过了.发布两个字在哪啊? ...和应该不出什么维生素,望医生们解答!小弟在此谢过 ...求各位电脑高手们帮忙教一下,小弟在这先谢过了! 地球爷爷的手是英国科学家谁发现的 苹果手机的邮箱地址已经被使用了,怎么办? 如果没有地“球爷爷的手",世界会是怎样的呢? 两篇狂人日记的作者分别是中国的鲁迅和哪位俄罗斯作家 两篇狂人日记的作者分别是什么 统计局表示2020年CPI较上年上涨2.5%,各类物品食品上涨了多少? 如何让桌面上隐藏的图标显示出来? 2020年CPI较上年上涨多少? C语言如何从文件中查找指定的字符,然后替换它? 2020年全国居民消费价格比上年上涨2.5%,这对社会经济有何影响? 怎样用c/c++编程替换文本中指定区间的内容? 2020年通货膨胀率是多少 C语言 怎么替换文件中的某一段 2020年CPI较上年上涨2.5%? c语言编程替换文件中字符串 20年12月CPI同比上涨0.2%,为何会出现这样的趋势? C语言,能找到文件中指定的内容后,应该怎么修改替换 怎么用C语言对文件操作用特定内容替换其中某些内容 2020年CPI较上年上涨2.5%!新年的物价将会是什么走势? c语言:如何将字符串中指定的字符替换为另一个指定字符 2020年CPI较上年上涨2.5%,未来走势如何? 微信来消息怎么才会是绿色图华为微信怎么设置来消息显示绿色图标? 北京银行定慧盈是什么? 微信来消息时左上角不显示微信图标怎么办? 红米note怎么设置微信桌面信息通知,比如微信来消息了,只有铃声提示,微信图标没有显示有消息通知 用C语言或者C++语言,将一个文件中的特定内容替换到另外一个文件 2021年居民消费价格涨幅目标3%左右,这是否会引起物价的上涨? 批处理如何替换文本中的指定内容---满分 电脑桌面最下面的一列不显示怎么能调节出来? 如何用C语言在文件中查找并替换指定字符串?清高手指点! 2020CPI数据出炉,这对经济有怎样的影响? c# 如何替换指定行中的内容 怎样吧桌面上被隐藏的图标显示出来 用C语言编写程序,将字符数组中的指定字符替换为另一个字符。 以2000~2020年CPI+PPI+WPI数据为基础找出其连续两个季度上涨的时期,同时观察该时期_百度问一问 c语言 更改一个文本文件中指定的词语 桌面 隐藏了 怎么找出来 易语言如何读编辑框中的内容 替换到指定路径 文本中的指定内容 怎样把桌面隐藏的图标弄出来 C语言中,如何在文本文件中搜索指定字符串并修改 为什么隐藏的列选择取消隐藏后还是不能显示出来? 怎样把桌面隐藏的图标,让它显示了呀? 27岁小伙欠6万网贷烧炭自杀,深陷网贷该如何应对? 27岁欠债50万左右,应该怎么办? 明年27岁,欠债7万四,很难受怎么办?
  • 焦点

最新推荐

猜你喜欢

热门推荐