c语言字符串替换(C语言如何实现字符之间的替换(打出一列顺序,输出按此顺序输出))

2025-02-20 04:30:03 0

c语言字符串替换(C语言如何实现字符之间的替换(打出一列顺序,输出按此顺序输出))

本文目录

C语言如何实现字符之间的替换(打出一列顺序,输出按此顺序输出)

根据你的题意。

第一行输入是26个字母的指定顺序。

第二行输入是内容字符串。

将内容字符串中的字母按照指定顺序替换成对应26个字母原顺序的字母。

规则:第一行输入必须是26个小写母,且不能重复。

          替换后的字符中字母大小写参照原字符串。

下面是代码:

#include《stdio.h》

#include《string.h》

#define MAXLEN 100//第二行输入字符串的最大长度

char *inPutNewOrder();//输入26个字母的新顺序,必须为小写字母,不能有重复。输入成功返回字符串,失败返回NULL

char getNewLetter(char cIn,char newOrder);//获取字母对应newOrder的原始字母,成功返回字母,失败返回0

int main()

{

    int i;

    char *newOrder;//输入新字母顺序

    char inputStr,cIn;

    while(1)

    {

        newOrder=NULL;

        while(!newOrder)

            newOrder=inPutNewOrder();

        memset(inputStr,0,sizeof(char)*MAXLEN);

        for(i=0;i《MAXLEN;i++)

        {

            cIn=getchar();

            if(cIn==10)//回车结束输入

                break;

            if((cIn》=65 && cIn《=90)||(cIn》=97 && cIn《=122))//如输入的是字母,对应新字母顺序,找到原字母

                inputStr=getNewLetter(cIn,newOrder);

            else

                inputStr=cIn;

        }

        if(i==MAXLEN)

            while ((cIn = getchar()) != EOF && cIn != ’\n’);

        printf(“%s\n\n“,inputStr);

    }

    return 0;

}

char *inPutNewOrder()//输入26个字母的新顺序,必须为小写字母,不能有重复

{

    int i=0,j,flag=1;

    static char newOrder;

    char c=0;

    memset(newOrder,0,sizeof(char)*27);

    while(1)

    {

        if(newOrder!=0)

            break;

        c=getchar();

if(c《97 || c》122)//输入小写字母以外字符,标识错误

            flag=0;

        for(j=0;flag && j《i;j++)

if(newOrder==c)//输入重复,标识错误

                flag=0;

        if(!flag)//错误,终止输入

        {

            printf(“输入格式错误!必须为26个小写字母,且不能有重复,请重新输入。\n“);

            while ((c = getchar()) != EOF && c != ’\n’);

            return NULL;

        }

        newOrder=c;

        i++;

    }

    while ((c = getchar()) != EOF && c != ’\n’);

    return newOrder;

}

char getNewLetter(char cIn,char newOrder)//获取字母对应newOrder的原始字母,成功返回字母,失败返回0

{

    static char letters=“abcdefghijklmnopqrstuvwxyz“;

    char c;

    int i,flag;//flag=1大写字母,flag=0是小写字母

    if(cIn》=65 && cIn《=90)//输入的是大写字母

        c=cIn+32,flag=1;

    if(cIn》=97 && cIn《=122)//输入的是小写字母

        c=cIn,flag=0;

    for(i=0;i《26;i++)

        if(newOrder==c)//在新序列中匹配大写字母或小写字母

        {

            if(flag)

                return letters-32;

            else

                return letters;

        }

    return 0;

}

C语言初学,字符替换

主函数的名字错了。字母顺序反了。

字符串是用数组存储的。你的str变量定义错了,应该是char str;

函数调用的写法也是错的。调用函数只写函数名和参数名。而且要写在最后一个printf语句前面,等你输入完成了才能调用函数。

strchange(str,c1,c2);

函数声明则要写在main函数的前面,不是里面。

scanf();后要跟一句getchar();取走一个回车或空格字符,否则下一句scanf无法接收到你输入的字符。

修改后可执行的完整代码如下

#include 《stdio.h》char*strchange(char*str,char c1,char c2);main() { char c1,c2,str;  printf(“请输入字符串:“); scanf(“%s“,str); getchar(); printf(“请输入要替换的字符:“); scanf(“%c“,&c1); getchar(); printf(“请输入被替换为的字符:“); scanf(“%c“,&c2); strchange(str,c1,c2); printf(“替换后的字符串为:%s“,str);}char*strchange(char*str,char c1,char c2){ while(*str){  if(*str==c1){   *str=c2;  }  str++; } return str;}

C语言中如何替换一个字符串中的字符

include《stirng.h》voidstrrpl(char*s,constchar*s1,constchar*s2){char*ptr;while(ptr=strstr(s,s1))/*如果在s中找到s1*/{memmove(ptr+strlen(s2),ptr+strlen(s1),strlen(ptr)-strlen(s1)+1);memcpy(ptr,&s2,strlen(s2));}returns;}intmain(){char*str1=“abc“,*str2=“a“,*str3=“de“,Str0;//如果字符串很长,100不够则需要预留更大的空间。strcpy(Str0,Str1);strrpl(Str0,str2,str3);printf(“%s\n“,Str0);return0;}

c语言:如何将字符串中指定的字符替换为另一个指定字符

/*功能:将str字符串中的oldstr字符串替换为newstr字符串

*参数:str:操作目标oldstr:被替换者newstr:替换者

*返回值:返回替换之后的字符串

*版本:V0.2

*/

char*strrpc(char*str,char*oldstr,char*newstr){

char bstr;//转换缓冲区

memset(bstr,0,sizeof(bstr));

for(int i=0;i《strlen(str);i++){

if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目标字符串

strcat(bstr,newstr);

i+=strlen(oldstr)-1;

}else{

strncat(bstr,str+i,1);//保存一字节进缓冲区

}

}

strcpy(str,bstr);

return str;

}

扩展资料:

c_str函数的返回值是constchar*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。

c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。

标准头文件《cstring》包含操作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串操作。

当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回const char*类型(可读不可改)的指向字符数组的指针。例:

#include《iostream》

//#include《cstring》

#include《string》//使用头文件string,否则最后cout《《无法输出add_to

using namespace std;

int main()

{

string add_to=“hello!“;

const string add_on=“baby“;

const char*cfirst=add_to.c_str();

const char*csecond=add_on.c_str();

char*copy=new char;

strcpy(copy,cfirst);

strcat(copy,csecond);

add_to=copy;

cout《《“copy:“《《copy《《endl;

deletecopy;

cout《《“add_to:“《《add_to《《endl;

return 0;

}

例(1)

函数声明:const char*c_str();

c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.

这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。

注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针

比如:最好不要这样:

char*c;

string s=“1234“;

c=s.c_str();

//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理(纠正:s对象的析构是在s的生命周期结束时,例如函数的返回)

参考资料:

百度百科——c_str

C语言字符串替换

  C语言实现字符串替换函数:  #include 《stdio.h》  #include 《stdlib.h》  #include 《ctype.h》  #include 《string.h》  //字符串替换函数  /********************************************************************  * Function: my_strstr()  * Description: 在一个字符串中查找一个子串;  * Input: ps: 源; pd:子串  * Return : 0:源字符串中没有子串; 1:源字符串中有子串;  *********************************************************************/  char * my_strstr(char * ps,char *pd)  {  char *pt = pd;  int c = 0;  while(*ps != ’\0’)  {  if(*ps == *pd)  {  while(*ps == *pd && *pd!=’\0’)  {  ps++;  pd++;  c++;  }  }else  {  ps++;  }  if(*pd == ’\0’)  {  return (ps - c);  }  c = 0;  pd = pt;  }  return 0;  }    /********************************************************************  * Function: memcpy()  * Description: 复制一个内存区域到另一个区域;  * Input: src: 源;  count: 复制字节数.  * Output: dest: 复制目的地;  * Return : dest;  *********************************************************************/  void * memcpy(void * dest,const void *src,size_t count)  {  char *tmp = (char *) dest, *s = (char *) src;  while (count--)  *tmp++ = *s++;  return dest;  }    /********************************************************************  * Function: str_replace()  * Description: 在一个字符串中查找一个子串,并且把所有符合的子串用  另一个替换字符串替换。  * Input: p_source:要查找的母字符串; p_seach要查找的子字符串;  p_repstr:替换的字符串;  * Output: p_result:存放结果;  * Return : 返回替换成功的子串数量;  * Others: p_result要足够大的空间存放结果,所以输入参数都要以\0结束;  *********************************************************************/  int str_replace(char *p_result,char* p_source,char* p_seach,char *p_repstr)  {  int c = 0;  int repstr_leng = 0;  int searchstr_leng = 0;    char *p1;  char *presult = p_result;  char *psource = p_source;  char *prep = p_repstr;  char *pseach = p_seach;  int nLen = 0;    repstr_leng = strlen(prep);  searchstr_leng = strlen(pseach);    do{  p1 = my_strstr(psource,p_seach);    if (p1 == 0)  {  strcpy(presult,psource);  return c;  }  c++; //匹配子串计数加1;  printf(“结果:%s\r\n“,p_result);  printf(“源字符:%s\r\n“,p_source);    // 拷贝上一个替换点和下一个替换点中间的字符串  nLen = p1 - psource;  memcpy(presult, psource, nLen);    // 拷贝需要替换的字符串  memcpy(presult + nLen,p_repstr,repstr_leng);    psource = p1 + searchstr_leng;  presult = presult + nLen + repstr_leng;  }while(p1);    return c;  }  #define MAX 200  int main(void)  {  int i = 0;  char s={0}; //存放替换字串  char result_a = {0};//存放替换结果;  char *p,*ptm,*pr;  puts(“Please input the string for s:“);  scanf(“%s“,s);  puts(“Please input the string for s1:“);  scanf(“%s“,s1);  puts(“Please input the string for s2:“);  scanf(“%s“,s2);  ptm = s;  pr = result_a;  i = str_replace(pr,ptm,s1,s2);  printf(“替换%d个子字符串;\r\n“,i);  printf(“替换后结果:%s\r\n“,result_a);  system(“pause“);  }

c语言编程替换文件中字符串

方法和详细的操作步骤如下:

1、第一步,依次单击visual C ++ 6.0的“文件”--》“新建”--》“文件”--》“C++ Source File”选项,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,定义变量,代码见下图,转到下面的步骤。    

3、第三步,执行完上面的操作之后,输入一个字符,使用getche函数接收,代码见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,输入如下代码,见下图,转到下面的步骤。

5、第五步,执行完上面的操作之后,再输入如下代码,见下图,转到下面的步骤。

6、第六步,执行完上面的操作之后,输出最终结果,见下图。这样,就解决了这个问题了。

C语言文件中字符串的查找与替换

  #include《stdio.h》  #include《conio.h》  #include《string.h》  #include《stdlib.h》  void Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)  {  char    *pi, *po, *p;  int     nSrcLen, nDstLen, nLen;  // 指向输入字符串的游动指针.  pi = pInput;  // 指向输出字符串的游动指针.  po = pOutput;  // 计算被替换串和替换串的长度.  nSrcLen = strlen(pSrc);  nDstLen = strlen(pDst);  // 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null).  p = strstr(pi, pSrc);  if(p)  {  // 找到.  while(p)  {  //计算被替换串前边字符串的长度.  nLen = (int)(p - pi);  // 复制到输出字符串.  memcpy(po, pi, nLen);  memcpy(po + nLen, pDst, nDstLen);  // 跳过被替换串.  pi = p + nSrcLen;  // 调整指向输出串的指针位置.  po = po + nLen + nDstLen;  // 继续查找.  p = strstr(pi, pSrc);  }  // 复制剩余字符串.  strcpy(po, pi);  }  else  {  // 没有找到则原样复制.  strcpy(po, pi);  }  }  int main(int ac, char *av)  {  if (ac!=5) {  printf(“程序名 要操作的文件 新文件 查找的字符串 替换的字符串\n“);  printf(“示例:test.exe 1.txt 2.txt hello love\n“);  return 0;  }  const int MAXSIZES = 100;  FILE *fpSrc,*fpDes;  char filename1=“1.txt“;  char filename2=“2.txt“;  //要求查找的字符串,替换的字符串;  char ps=“hello“;  char pd=“love“;  //求取所查找和替换的字符串的长度;  int len_src=strlen(av);  int len_des=strlen(av);  //定义存储字符串缓冲区;很奇怪的一点是,fgets函数不能将字符串写入动态分配的内存中  /*char* Src_buf=(char*)(sizeof(char)*MAXSIZES);  char* Cpy_buf=(char*)(sizeof(char)*MAXSIZES);  char* Des_buf=(char*)(sizeof(char)*MAXSIZES);*/  char Src_buf = {0};  //打开文件  if((fpSrc=fopen(av,“r+“))==NULL)  {  printf(“fail to open the file1 !\n“);  exit(1);  }  if((fpDes=fopen(av,“a+“))==NULL)  {  printf(“fail to open the file2 !\n“);  exit(1);  }  //进行循环读取  while(!feof(fpSrc))//判断文件是否已结束;!feof(fpSrc)  {  fgets(Src_buf,MAXSIZES,fpSrc);  Substitute(Src_buf,Des_buf,av,av);  fputs(Des_buf,fpDes);  printf(“%s“,Des_buf);  }  fclose(fpSrc);  fclose(fpDes);  system(“pause“);  return 0;  }说明:使用c标准为中的文件I/O函数一般是不推荐的,做为练习可以学习,真正用的最多的是内存文件映射。那要比用I/O函数读来读取方便的多,限制也会更小。

c语言字符串替换(C语言如何实现字符之间的替换(打出一列顺序,输出按此顺序输出))

本文编辑:admin

更多文章:


lambda表达式原理(c#什么时候使用lambda)

lambda表达式原理(c#什么时候使用lambda)

本文目录c#什么时候使用lambda浅谈如何使用 Lambda 表达式做抽象代表为什么 Kotlin 调用 java 时可以使用 Lambda有哪些好的Java的lambda表达式用法/原理文章/书籍等资料java中的lambda没有ret

2025年2月12日 05:10

扬名立万电影在线观看(《扬名立万》在哪个平台上映)

扬名立万电影在线观看(《扬名立万》在哪个平台上映)

本文目录《扬名立万》在哪个平台上映扬名立万电影《扬名立万》哪个平台可以看扬名立万在哪看最近刚上映的《扬名立万》哪里可以看扬名立万电影介绍《扬名立万》在哪个平台上映《扬名立万》在bilibili上映。《扬名立万》由刘循子墨导演,尹正、邓家佳、

2025年3月11日 12:50

external device boot(惠普如何进入bios)

external device boot(惠普如何进入bios)

本文目录惠普如何进入bios索尼老式笔记本boot里面没有 external device boot”为什么我的索尼笔记本Bios中找不到External Device Boot惠普如何进入bios1.惠普电脑进入BIOS,在开机时,可以按

2025年2月12日 05:50

suggestions翻译(suggestionanswerbulter的drama和翻译)

suggestions翻译(suggestionanswerbulter的drama和翻译)

本文目录suggestionanswerbulter的drama和翻译suggestion、idea、advice的区别翻译“我建议你好好学习,(suggestion)“suggestion;destined;detached 这些英语怎么

2025年2月26日 07:20

table array(在Excel中vlookup函数中table_array问题)

table array(在Excel中vlookup函数中table_array问题)

本文目录在Excel中vlookup函数中table_array问题table,array,分别是什么意思vlookup函数中的table array是4个英文字母代表什么含义函数vlookuP中Table_array 为ts是什么意思ta

2025年2月25日 08:20

nginx配置文件详解带实例(高并发nginx,需要注意哪些配置)

nginx配置文件详解带实例(高并发nginx,需要注意哪些配置)

本文目录高并发nginx,需要注意哪些配置如何 解析 nginx 配置文件如何正确配置 Nginx 和 PHPnginx惯用配置项详解怎么解决nginx配置文件下面这段话是什么意思nginx 查看调用了哪些配置文件高并发nginx,需要注意

2025年2月17日 22:40

svn客户端安装步骤详细(如何安装SVN,配置服务自启,以及在Eclipse中使用SVN)

svn客户端安装步骤详细(如何安装SVN,配置服务自启,以及在Eclipse中使用SVN)

本文目录如何安装SVN,配置服务自启,以及在Eclipse中使用SVNsvn在window下怎么安装WIN10下怎么进行TortoiseSVN 的安装,SVN客户端window怎么安装svn服务器win7系统怎么安装svn客户端mac 怎么

2025年2月9日 20:50

prince什么意思中文(PrInce什么意思)

prince什么意思中文(PrInce什么意思)

本文目录PrInce什么意思“prince”是什么意思请问prince是什么意思prince中文是什么意思prince中文事什么意思Prince在英语里是什么意思prince什么意思PrInce什么意思1、“prince”的意思是王子、亲王

2025年2月28日 19:00

head读音发音(head英语怎么发音)

head读音发音(head英语怎么发音)

本文目录head英语怎么发音“head”怎么读head是怎么读head英语怎么发音head /hɛd/ 也标作 /hed/ 元音 即汉语拼音 ai“head”怎么读head的音标是英 ,句中作为名词、形容词

2025年2月11日 04:50

windows查看端口占用命令(Windows下如何查看某个端口被谁占用)

windows查看端口占用命令(Windows下如何查看某个端口被谁占用)

本文目录Windows下如何查看某个端口被谁占用win7系统怎么使用cmd查看端口占用情况Windows下如何查看某个端口被谁占用1、 开始—-》运行—-》cmd,或者是window+R组合键,调出命令窗口;2、输入命令:netstat -

2025年3月5日 22:40

在线客服系统网站(请问哪一款在线客服系统的功能比较齐全呀)

在线客服系统网站(请问哪一款在线客服系统的功能比较齐全呀)

本文目录请问哪一款在线客服系统的功能比较齐全呀在线客服系统主要是谁在用请问哪一款在线客服系统的功能比较齐全呀莫邻主要功能:智能工单系统,在线洽谈、访客邀请、多网站管理、智能分配访客、多客户接待,客户身份识别、访客提问预知、客服转接、文件传输

2025年3月13日 10:30

微信支付php源码(PHP版本,微信扫码支付native模式二,扫码支付成功,页面静止不动,怎么可以支付回调URL)

微信支付php源码(PHP版本,微信扫码支付native模式二,扫码支付成功,页面静止不动,怎么可以支付回调URL)

本文目录PHP版本,微信扫码支付native模式二,扫码支付成功,页面静止不动,怎么可以支付回调URL微信支付接口php版 notify_url.php 异步通知页面未成功执行如何用PHP实现微信支付,求教新手!说明详细点PHP实现微信扫码

2025年3月11日 03:20

cdr排版教程视频教程(如何用CDR对字体进行排版)

cdr排版教程视频教程(如何用CDR对字体进行排版)

本文目录如何用CDR对字体进行排版cdr里面怎么排版CDR教程 如何制作立体效果视频怎么学cdr设计图如何用CDR对字体进行排版以下答案来源于 CorelDRAW中文网站,如果还有什么不清楚的话,可以到他们的网站查找详细的图文教程。文字的

2025年2月16日 17:00

downloading文件怎么打开(downloading文件用什么软件打开)

downloading文件怎么打开(downloading文件用什么软件打开)

本文目录downloading文件用什么软件打开downloading文件是什么类型的文件如何打开下载保存的文件中有downloading文件怎么打开downloading文件用什么软件打开downloading文件是无法用软件打开的dow

2025年2月10日 20:30

RAID是什么?raid是什么意思啊

RAID是什么?raid是什么意思啊

本文目录RAID是什么raid是什么意思啊怎么理解raid服务器上的raid1 raid5,什么意思啊!RAID是什么RAID(独立磁盘冗余阵列)是一种数据存储虚拟化技术,将多个物理磁盘驱动器组件组合到一个或多个逻辑单元中,以实现数据冗余和

2025年3月24日 21:00

redol是什么牌子(手机vivo是什么牌子)

redol是什么牌子(手机vivo是什么牌子)

本文目录手机vivo是什么牌子vivo是什么牌子手机redolbook是什么电脑手机vivo是什么牌子就是vivo这个牌子,前身是步步高公司的,跟OPPO一个公司,后来分开了。VIVO是一个独立的手机品牌,不是其他公司旗下的子品牌。vivo

2025年2月28日 10:10

传智播客高校平台(电商培训机构有哪些哪家比较好)

传智播客高校平台(电商培训机构有哪些哪家比较好)

本文目录电商培训机构有哪些哪家比较好想在广州培训机构学习 达内 传智播客 粤嵌这三个培训机构哪个比较好电商培训机构有哪些哪家比较好电商培训机构比较专业的有:企赢电商培训机构、传智播客电商培训机构、产品手记电商培训机构、传一电商培训机构、黑马

2025年3月16日 10:00

assort(sort,asort,和 ksort 有什么分别它们分别在什么情况下使用)

assort(sort,asort,和 ksort 有什么分别它们分别在什么情况下使用)

本文目录sort,asort,和 ksort 有什么分别它们分别在什么情况下使用服装外贸装箱单中assort是什么意思sort,asort,和 ksort 有什么分别它们分别在什么情况下使用sort(),根据数组中元素的值,以英文字母顺序排

2025年3月24日 11:20

tomorrowland(tomorrowland有中国dj吗)

tomorrowland(tomorrowland有中国dj吗)

本文目录tomorrowland有中国dj吗tomorrowland是什么意思tomorrowland有中国dj吗2017年chace登上了tomorrowland主舞台。Chace(朱一涵),生于1998年11月5日,中国江苏盐城人,现居

2025年2月19日 02:50

java试题及答案(求一些JAVA数据结构的试题及答案解析)

java试题及答案(求一些JAVA数据结构的试题及答案解析)

本文目录求一些JAVA数据结构的试题及答案解析java内部类部分的选择题习题及答案 注意是选择题java详解试题及答案JAVA第一阶段测试题及答案求一些JAVA数据结构的试题及答案解析1 下列数据结构中,能用二分法进行查找的是__A____

2025年3月7日 10:30

近期文章

million billion(million,billion和thousand之间应该怎么转化 要举例的那种 谢谢)
2025-04-05 17:30:01
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索