怎么把字符串的里的空格君都给替换了呢?我之前没用C语言写过,今天尝试了下,小编太笨了,写写改改,到这会儿终于弄好了。
先谈谈思路,既然要将空格替换,我就要现将空格标示出来,此处借助的是字符数组的下标i来实现。用一个中间字符串变量tmp来表示替换的结果,给tmp分配适当的空间。当一开始有空格的时候就要先将要替换的字符串接入,有几个空格就重复strcat几次一直到开始的空格全部被替换,然后将原字符串从首个非空格处接入tmp。i向后移动直到下一个空格处(标示tmp的下标要同步往后移动)再次执行上一步操作直到循环不满足条件。
<span style="font-size: 24px; font-family: Arial, Helvetica, sans-serif;">//替换字符串中的所有空格为%20</span>
<span style="font-size: 24px;">#include<stdio.h> #include<string.h> #include<malloc.h> void replace(char *str,char *ss)//str原字符串,ss是要替换的字符串 { int i = 0; int j = -1; //j下标从-1开始,因为数组从0 开始计数 int n1 = strlen(str); int n2 = strlen(ss); char *tmp = (char*)malloc(sizeof(char) * n1 * 2); // 为tmp分配合适的空间 while(i < n1 && str[i] == ' ')//循环替换开头的所有空格 { tmp = strcat(tmp,ss); i++; j+=n2; } tmp = strcat(tmp,&(str[i]));//从首个非空字符接入 while(i < n1 ) { if(str[i] == ' ') { tmp[j+1] = '\0';//在空格处接入ss while(i < n1 && str[i] == ' ') { tmp = strcat(tmp,ss); i++; j+= n2; } tmp = strcat(tmp,&(str[i])); } else { i ++; j ++; } } printf("%s\n",tmp); } int main() { char *str = " hello sandy nice to meet to you"; char *ss ="%20"; printf("替换之前str = %s\n",str); printf("替换之后str = "); replace(str,ss); return 0; }</span>
<span style="font-size: 24px; font-family: Arial, Helvetica, sans-serif;">//替换字符串中的所有空格为%20</span>
<span style="font-size: 24px;">#include<stdio.h> #include<string.h> #include<malloc.h> void replace(char *str,char *ss) { int i = 0; int j = -1; int n1 = strlen(str); int n2 = strlen(ss); char *tmp = (char*)malloc(sizeof(char) * n1 * 2); while(i < n1 && str[i] == ' ') { tmp = strcat(tmp,ss); i++; j+=n2; } tmp = strcat(tmp,&(str[i])); while(i < n1 ) { if(str[i] == ' ') { tmp[j+1] = '\0'; while(i < n1 && str[i] == ' ') { tmp = strcat(tmp,ss); i++; j+= n2; } tmp = strcat(tmp,&(str[i])); } else { i ++; j ++; } } printf("%s\n",tmp); } int main() { char *str = " hello sandy nice to meet to you"; char *ss ="%20"; printf("替换之前str = %s\n",str); printf("替换之后str = "); replace(str,ss); return 0; } </span>