void removeNumArr(char *p) {
int firstNumIndex = 0, endNumIndex = 0, lengthOfNum = 0, i = 0, lastSumChar = 0;
char *temp = p;//使temp指向首地址
while (*temp != '\0') {
if (*temp >= '0' && *temp <= '9') {
endNumIndex = i;//5(3) 计算最后的数字下标endNumIndex
lengthOfNum++;//3 数字总个数lengthOfNum
firstNumIndex = endNumIndex - lengthOfNum + 1;//3(1) 第一个数字下标firstNumIndex
}
i++;//最后i = 10
temp++;
lastSumChar = i - endNumIndex - 1;//数字之后的字母总个数
}
temp = p;//使temp重新指向首地址
i = 0;
while (i <= endNumIndex) {
if (*temp >= '0' && *temp <= '9') {
*temp = *(temp + lengthOfNum);
}
i++;
temp++;
}
//若数字个数 = 数字之后的字母个数(正好拷完, 但是有两遍,(如vaerclyrcly), 需要下面的代码处理); 若数字个数 < 数字之后的字母个数(如vae123rcly --> vaerclrcly, y没有拷贝进去 需要下面的代码处理); 若数字个数 > 数字之后的字母个数(例如:vae12345rcly 将最后的\0拷贝进去,此时不用处理,即不走下面的代码)
if (lengthOfNum <= lastSumChar) {
i = 0;
while (i < (lastSumChar - lengthOfNum)) {
*temp = *(temp + lengthOfNum);
temp++;
i++;
}
}
int firstNumIndex = 0, endNumIndex = 0, lengthOfNum = 0, i = 0, lastSumChar = 0;
char *temp = p;//使temp指向首地址
while (*temp != '\0') {
if (*temp >= '0' && *temp <= '9') {
endNumIndex = i;//5(3) 计算最后的数字下标endNumIndex
lengthOfNum++;//3 数字总个数lengthOfNum
firstNumIndex = endNumIndex - lengthOfNum + 1;//3(1) 第一个数字下标firstNumIndex
}
i++;//最后i = 10
temp++;
lastSumChar = i - endNumIndex - 1;//数字之后的字母总个数
}
temp = p;//使temp重新指向首地址
i = 0;
while (i <= endNumIndex) {
if (*temp >= '0' && *temp <= '9') {
*temp = *(temp + lengthOfNum);
}
i++;
temp++;
}
//若数字个数 = 数字之后的字母个数(正好拷完, 但是有两遍,(如vaerclyrcly), 需要下面的代码处理); 若数字个数 < 数字之后的字母个数(如vae123rcly --> vaerclrcly, y没有拷贝进去 需要下面的代码处理); 若数字个数 > 数字之后的字母个数(例如:vae12345rcly 将最后的\0拷贝进去,此时不用处理,即不走下面的代码)
if (lengthOfNum <= lastSumChar) {
i = 0;
while (i < (lastSumChar - lengthOfNum)) {
*temp = *(temp + lengthOfNum);
temp++;
i++;
}
}
*temp = '\0';//用\0将后面的字母截断
char str[20] = "vae123rcly";
printf("原字符串为:%s\n", str);
removeNumArr(str);
printf("去除数字之后的字符串为:%s\n", str);
本文介绍了一个C语言函数,该函数用于从输入的字符数组中移除所有的数字字符,并详细解释了其实现原理与步骤。通过示例演示了如何使用此函数来处理包含数字的字符串。

被折叠的 条评论
为什么被折叠?



