1.拼接多个字符串
/* argc: the number of strings*/
#include <strings.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <stdlib.h>
char * strcat2(int argc, const char *str1, const char *str2, ...)
{
int tmp = 0;
char *dest = NULL;
char *cur = NULL;
va_list va_ptr;
size_t len = strlen(str1) + strlen(str2);
argc -= 2;
tmp = argc;
va_start(va_ptr, str2);
while(argc-- && (cur = va_arg(va_ptr,char *))) {
len += strlen(cur);
}
va_end(va_ptr);
dest = (char *)malloc(len+1);
dest[0] = '\0';
strcat(dest, str1);
strcat(dest, str2);
argc = tmp;
va_start(va_ptr, str2);
while(argc-- && (cur = va_arg(va_ptr,char *))) {
strcat(dest, cur);
}
va_end(va_ptr);
return dest;
}
函数调用:
char *str;
str = strcat2(2, "abc", "xyz");
cout << str;
if (str != NULL)
{
free(str); //注意需要释放内存
}
2.去除字符串两端的空格
char * strim(char *str)
{
char *end, *sp, *ep;
size_t len;
sp = str;
end = ep = str + strlen(str) - 1;
while (sp <= end && isspace(*sp)) sp++;
while (ep >= sp && isspace(*ep)) ep--;
len = (ep < sp) ? 0 : (ep - sp) + 1;
sp[len] = '\0';
return sp;
}
函数调用:
char *p = NULL;
char str[] = " hello ";
p = strim(str);
cout << p << endl;