前段时间有小伙伴在弄字符串合并出了问题。写一段代码来解决这个问题
#include <stdio.h>
#include <string.h>
int ChangeString(char *inStr, char *outStr, int n)
{
int i = 0, j = 0;
if (inStr == NULL && outStr == NULL)
{
return -1;
}
int flag = 0;
char asc = 0xff;
int len = strlen(inStr);
if (len == 0)
*outStr = '\0';
while(inStr[i] != '\0')
{
if (asc == inStr[i])
flag++;
else {
if (flag >= (n - 1) && j > 1) {
j -= flag;
}
flag = 0;
}
asc = inStr[i];
outStr[j++] = inStr[i++];
}
if (flag >= (n - 1) && j > 1)
j -= flag;
outStr[j] = '\0';
return 0;
}
int main(int argc, char **argv)
{
char out[300] = {0};
printf("you input:%s\n", argv[1]);
if (!argv[1] || strlen(argv[1]) <= 0)
{
printf("you input is null!!!");
return 0;
}
int n = 3;
ChangeString(argv[1], out, n);
printf("out string = %s\n", out);
return 0;
}
n为有多少个相同的字符时合并。
执行:./test aaabbbb44rrrrddddfffffffffffffffff
执行结果:out string = ab44rdf