将函数中的数组换成指针
一、修改str_connect函数
二、修改str_replace函数
三、修改str_find函数
四、修改str_delete函数
五、指针与数组下标的时间测试
一、修改str_connect函数
void str_connect(char *str_a, char *str_b)
{
char *str_ab = str_a;//将a的地址赋给*str_ab
while(*str_ab!='\0')
{
str_ab++;
}
while(*str_b!='\0')
{
*str_ab++=*str_b++;
}
*str_ab='\0';
}
void str_replace(char *s, char a, char b)
{
int i;
for(i = 0; *(s+i) != '\0';i++)
{
if(*(s+i) == a)
{
*(s+i) = b;
}
}
}
所犯错误:for的语句二写成*s!='\0',造成死循环。
三、修改str_find函数
void str_find(char *s, char *str_save, int *counter)
{
char *counted=NULL;
char counted_char = '#';
int i ,j ,k = 0;
int count;
counted = (char *) malloc ( MAX_STRLEN);
for(i = 0;*(s+i) != '\0';i++)
{
if(*(counted + i) != counted_char)
{
count = 0;
for(j = 0; *(s + j) != '\0'; j++)
{
if(*(s + i) == *(s + j) && *(counted + j) != counted_char)
{
count++;
*(counted + j) = counted_char;
}
}
*(str_save + k) = *(s + i);
*(counter + k) = count;
k++;
}
}
*(str_save + k)='\0';
free(counted);
}
所犯错误:
1、for语句二写成*s!='\0',造成死循环;
2、第二个if语句的第一个条件写成了(s + i) == (s + j);
3、*(str_save + k)='\0'写成了*str_save='\0',出现内存空间占用错误。
1、for语句二写成*s!='\0',造成死循环;
2、第二个if语句的第一个条件写成了(s + i) == (s + j);
3、*(str_save + k)='\0'写成了*str_save='\0',出现内存空间占用错误。
void str_delete(char *str_old, char *str_new)
{
int i,k = 0;
int count = 1; //ns长度
int b = 0; //标记
*str_new = *str_old;
for(i = 0; *(str_old+i) != '\0'; i++)
{
for(k = 0; k < count; k++)
{
if(*(str_new+k) == *(str_old+i)) //s[j]与ns中全部字符比较
{
b = 1;
}
}
if(b == 0)
{
*(str_new+count) = *(str_old+i);
count++;
}
b = 0;
*(str_new+count) = '\0';//防止ns输出溢出
}
}
五、指针与数组下标的时间测试
以str_replace函数为例进行测试
结论:指针更加快捷。