#include
//计算字母和数字的个数并打印
void char_count(char* input, int size) {
int i = 0, j = 0;
for (char* p = input; p < input + size; ++p) {
if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) {
++i;
} else if (*p >= '0' && *p <= '9') {
++j;
}
}
printf("%.*s : letter=%d, number=%d\n", size, input, i, j);
}
//将数组左移一位并抛弃第一位的元素
void array_move(char* input, int count) {
for (char* p = input + 1; p < input + count; ++p) {
*(p - 1) = *p;
}
}
//删除数组中指定的值并返回数组长度
int array_delete(char* input, int size, char ch) {
int i = size;
for (char *p = input; p < input + size; ++p, --i) {
if (*p == ch) {
int len = array_delete(p + 1, --i, ch);
array_move(p, len + 1);
return size - i - 1 + len;
}
}
return size;
}
//主函数
int main(int argc, char *args[]) {
char buf[] = "1ab123cdefg81hij1klm812nopq7461";
char_count(buf, sizeof(buf) - 1);
int count = array_delete(buf, sizeof(buf) - 1, '1');
printf("%.*s\n", count, buf);
return 0;
}