代码希望删除字符串中的数字和空格。但是得到的结果是,空格之后的值删除就会出问题,直到遇到非空格之后可以正常删除,再遇到空格就重复之前问题。想请问是什么原因,以及如何解决。
/*删除字符串中的数字和空格。*/
#include
/*求字符串长度*/
int len_s(char s[]) {
int len = 0;
while (s[len]) {
len++;
}
return len;
}
/*求数组长度*/
int len_i(int s[]) {
int len = 0;
while (s[len]) {
len++;
}
return len;
}
/*后一位元素补至前一位*/
void complement(char s[],int n) {
int i;
for (i = n; i < len_s(s); i++) {
s[i] = s[i + 1];
}
}
/*删除数字和空格*/
void del_digit(char s[]) {
int i;
int j;
int de_num[] = { '0','1','2','3','4','5','6','7','8','9',' '};
for (i = 0; i < len_s(s); i++) {
for (j = 0; j < len_i(de_num); j++) {
if (s[i] == de_num[j]) complement(s, i);
}
}
}
int main(void) {
char str[] = "ABC12DE 3 4F";
printf("%s\n", str);
del_digit(str);
printf("%s\n", str);
return 0;
}
int len_i(int s[]) {
int len = 0;
while (s[len]) {
len++;
}
return len;
}
这代码不能求出数组长度