c语言:将字符串中所有数字字符移动到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序不变。
时间: 2023-06-12 11:05:05 浏览: 237
将字符串中数字字符移到非数字字符之后
可以使用双指针的方法实现,一个指针指向数字字符,另一个指针指向非数字字符。遍历字符串,将数字字符移动到非数字字符之后,直到两个指针相遇为止。
代码如下:
```c
#include <stdio.h>
#include <ctype.h> // 包含 isdigit 函数
void moveNumbers(char *str) {
char *p1 = str, *p2 = str;
while (*p2 != '\0') {
if (isdigit(*p2)) {
// 当前字符是数字字符,将它移动到非数字字符后面
while (*p2 != '\0' && isdigit(*p2)) {
p2++;
}
// 将数字字符移到非数字字符后面
while (*p2 != '\0' && !isdigit(*p2)) {
*p1++ = *p2++;
}
} else {
// 当前字符是非数字字符,直接移动指针到下一个字符
p1++;
p2++;
}
}
// 将字符串末尾置为结束符
*p1 = '\0';
}
int main() {
char str[] = "abc123def456";
printf("原字符串:%s\n", str);
moveNumbers(str);
printf("移动数字后:%s\n", str);
return 0;
}
```
输出结果为:
```
原字符串:abc123def456
移动数字后:abcdef123456
```
阅读全文