扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
改成这样就行了
创新互联于2013年成立,是专业互联网技术服务公司,拥有项目网站建设、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元龙陵做网站,已为上家服务,为龙陵各地企业和个人服务,联系电话:18982081108
#includestdio.h
int replace(char a[]);
int main()
{
char a[20];
int n;
scanf("%s", a);
n = replace(a);
printf("%s 替换字符的个数:%d\n", a, n);
return 0;
}
int replace(char a[])
{
int n=0;
int i;
for (i = 0; a[i] != '\0'; i++)
{
if(a[i]=='t')
{
n=n+1;
a[i]='e';
}
else if(a[i]=='T')
{
n=n+1;
a[i]='E';
}
}
return n;
#include "stdafx.h"
#include stdio.h
#include string.h
void replaceChar(char *string, char oldChar, char newChar){
int len = strlen(string);
int i;
for (i = 0; i len; i++){
if (string[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;
}
主函数的名字错了。字母顺序反了。
字符串是用数组存储的。你的str变量定义错了,应该是char str[100];
函数调用的写法也是错的。调用函数只写函数名和参数名。而且要写在最后一个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[100];
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;
}
替换函数主要有strtr(),str_repalce()这两个函数。
首先针对strtr函数第一种方式:
我们看看下面的举例:
?php
echo strtr("I Love you","Lo","lO");
?
得到的结果是:
I lOve yOu
这个结果提醒我们:
1.strtr它是区分大小写的
2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。
再举一个特殊例子,说明这个php的sttr函数的怪异
?php
echo strtr("I Love you","Love","");
?
结果是:
I Love you
什么也不会改变,所以strtr需要注意的是:
3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。
再次举例strtr函数的另一种情况:
?php
echo strtr("I Loves you","Love","lOvEA");
?
结果是:
I lOvEs yOu
注意看第三个参数的A,在结果中并没有出现。
4.我不建议用strtr以少换多。
ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。
5.能用strtr函数的时候一定要用。
第二种情况:
strtr(string,array)
6.strtr符合意愿的使用方法
?php
$table_change = array('you'='her sister');
echo strtr("I Love you",$table_change);
?
结果为:
I Love her sister
7.小技巧:你想到替换什么你就往数组加什么
比如:
?php
$table_change = array('you'='her sister');
$table_change += array('Love' = 'hate');
echo strtr("I Love you",$table_change);
?
结果是:
I hate her sister
再次提醒那个Love 写成love 是行不通的哦。
字符串取代。
语法: string str_replace(string needle, string str, string haystack);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。
下例将 %body% 以 black 取代
?php
$bodytag = str_replace("%body%", "black", "body text=%body%");
echo $bodytag;
?
格式:
[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]
实例:
多对一替换:想把内容字段里所有的p/p标签清除掉,替换成空 [@str_replace(array('p','/p'), '', $Content)]
一对一替换:想把内容字段里所有的br标签换成p [@str_replace('br', 'p', $Content)]
多对多替换:想把内容字段里的br换成br /, 同时p换hr,把/p全清除 [@str_replace(array('br', 'p','/p'), array('br /','hr',''), $Content)]
/*功能:将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=0;ilt;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*类型的。
标准头文件lt;cstringgt;包含操作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串操作。
当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回const char*类型(可读不可改)的指向字符数组的指针。例:
#includelt;iostreamgt;
//#includelt;cstringgt;
#includelt;stringgt;//使用头文件string,否则最后coutlt;lt;无法输出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[strlen(cfirst)+strlen(csecond)+1];
strcpy(copy,cfirst);
strcat(copy,csecond);
add_to=copy;
coutlt;lt;"copy:"lt;lt;copylt;lt;endl;
delete[]copy;
coutlt;lt;"add_to:"lt;lt;add_tolt;lt;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
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流