c语言字符串替换(C语言如何实现字符之间的替换(打出一列顺序,输出按此顺序输出))
本文目录
- C语言如何实现字符之间的替换(打出一列顺序,输出按此顺序输出)
- C语言初学,字符替换
- C语言中如何替换一个字符串中的字符
- c语言:如何将字符串中指定的字符替换为另一个指定字符
- C语言字符串替换
- 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函数读来读取方便的多,限制也会更小。
更多文章:

external device boot(惠普如何进入bios)
2025年2月12日 05:50

suggestions翻译(suggestionanswerbulter的drama和翻译)
2025年2月26日 07:20

table array(在Excel中vlookup函数中table_array问题)
2025年2月25日 08:20

nginx配置文件详解带实例(高并发nginx,需要注意哪些配置)
2025年2月17日 22:40

svn客户端安装步骤详细(如何安装SVN,配置服务自启,以及在Eclipse中使用SVN)
2025年2月9日 20:50

windows查看端口占用命令(Windows下如何查看某个端口被谁占用)
2025年3月5日 22:40

微信支付php源码(PHP版本,微信扫码支付native模式二,扫码支付成功,页面静止不动,怎么可以支付回调URL)
2025年3月11日 03:20

downloading文件怎么打开(downloading文件用什么软件打开)
2025年2月10日 20:30

assort(sort,asort,和 ksort 有什么分别它们分别在什么情况下使用)
2025年3月24日 11:20

tomorrowland(tomorrowland有中国dj吗)
2025年2月19日 02:50

java试题及答案(求一些JAVA数据结构的试题及答案解析)
2025年3月7日 10:30