求解一个关于指针的有关问题,请各位大侠不吝赐教
求解一个关于指针的问题,请各位大侠不吝赐教!
[color=#00FF00][color=#00FF00]
今天本人写了一个字符串处理函数,从原字符串中找到某些符合要求的子字符串 然后有个特定的字符串替换该子字符串。所有的功能模块运行良好 但是 在 void replace(int& i,int& len,int& len1,int& len2);这个函数中 遇到了一个问题 始终没解决,就是replace函数处理字符串之前传递进去的字符串居然输出是乱码 不知道是怎么回事 我在程序相应的地方已经标注 求大侠指教!
我输入的是:strSrc = abcabc strFind = a strReplace = bh
#include <stdio.h>
#include <stdlib.h>
//函数声明
void menu(void);
void StrReplace(void);
void get_len(int& len,int& len1,int& len2);
void replace(int& i,int& len,int& len1,int& len2);
char* strSrc;//三个待处理的字符串
char* strFind;
char* strReplace;
//主函数
int main(void)
{
//先申请空间
strSrc = (char*)malloc(sizeof(char));
strFind = (char*)malloc(sizeof(char));
strReplace = (char*)malloc(sizeof(char));
//输入函数
menu();
//替换函数
StrReplace();
return 0;
}
void menu(void)
{
printf("请输入原字符串:");//在标准输入流中的表现空格和字符串的结尾相同
scanf("%s",strSrc);
printf("您输入的字符串是:%s\n",strSrc);
printf("请输入查找子字符串:");
scanf("%s",strFind);
printf("您输入的字符串是:%s\n",strFind);
printf("请输入替换字符串:");
scanf("%s",strReplace);
printf("您输入的字符串是:%s\n",strReplace);
}
void StrReplace(void)
{
//三个字符串的长度
int len=0;
int len1=0;
int len2=0;
int count=0;//计数
int count1=0;
//得到长度
get_len(len,len1,len2);
printf("三个长度:%d %d %d\n",len,len1,len2);
//先判断长度
if(len<len1)
{
printf("数据错误!\n");
return;
}
if(len1==len2)
{
for(int m=0;m<len1;m++)
{
if(*(strFind+m) != *(strReplace+m))
break;
else count++;
}
if(count == len1)
{
printf("输入的字串相同\n");
return;
}
}
count=0;
//寻找符合要求的字串
for(int i=0;i<len;i++)
{
if(*strFind == *(strSrc+i))//向后遍历比较
{
if((i+len1)>len)
break;
for(int j=i;j<i+len1;j++)
[color=#00FF00][color=#00FF00]
今天本人写了一个字符串处理函数,从原字符串中找到某些符合要求的子字符串 然后有个特定的字符串替换该子字符串。所有的功能模块运行良好 但是 在 void replace(int& i,int& len,int& len1,int& len2);这个函数中 遇到了一个问题 始终没解决,就是replace函数处理字符串之前传递进去的字符串居然输出是乱码 不知道是怎么回事 我在程序相应的地方已经标注 求大侠指教!
我输入的是:strSrc = abcabc strFind = a strReplace = bh
#include <stdio.h>
#include <stdlib.h>
//函数声明
void menu(void);
void StrReplace(void);
void get_len(int& len,int& len1,int& len2);
void replace(int& i,int& len,int& len1,int& len2);
char* strSrc;//三个待处理的字符串
char* strFind;
char* strReplace;
//主函数
int main(void)
{
//先申请空间
strSrc = (char*)malloc(sizeof(char));
strFind = (char*)malloc(sizeof(char));
strReplace = (char*)malloc(sizeof(char));
//输入函数
menu();
//替换函数
StrReplace();
return 0;
}
void menu(void)
{
printf("请输入原字符串:");//在标准输入流中的表现空格和字符串的结尾相同
scanf("%s",strSrc);
printf("您输入的字符串是:%s\n",strSrc);
printf("请输入查找子字符串:");
scanf("%s",strFind);
printf("您输入的字符串是:%s\n",strFind);
printf("请输入替换字符串:");
scanf("%s",strReplace);
printf("您输入的字符串是:%s\n",strReplace);
}
void StrReplace(void)
{
//三个字符串的长度
int len=0;
int len1=0;
int len2=0;
int count=0;//计数
int count1=0;
//得到长度
get_len(len,len1,len2);
printf("三个长度:%d %d %d\n",len,len1,len2);
//先判断长度
if(len<len1)
{
printf("数据错误!\n");
return;
}
if(len1==len2)
{
for(int m=0;m<len1;m++)
{
if(*(strFind+m) != *(strReplace+m))
break;
else count++;
}
if(count == len1)
{
printf("输入的字串相同\n");
return;
}
}
count=0;
//寻找符合要求的字串
for(int i=0;i<len;i++)
{
if(*strFind == *(strSrc+i))//向后遍历比较
{
if((i+len1)>len)
break;
for(int j=i;j<i+len1;j++)