请使用c语言里面的fun函数将s所指字符串中所有数字移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的顺序
时间: 2024-11-09 13:17:45 浏览: 49
C语言编程-编写函数fun求一个字符串的长度,在main函数中输入字符串,并输出其长度;
5星 · 资源好评率100%
在C语言中,你可以通过遍历字符串并检查每个字符是否为数字来实现这个功能。下面是一个简单的fun函数,它会将数字移动到非数字字符后面:
```c
#include <stdio.h>
#include <ctype.h> // 包含isdigit函数
void move_numbers(char *s) {
int i = 0, j = 0; // i用于跟踪非数字字符,j用于跟踪数字字符
for (; s[i] != '\0'; i++) { // 遍历整个字符串
if (!isdigit(s[i])) { // 如果不是数字字符
s[j++] = s[i]; // 将其复制到非数字部分
} else { // 如果是数字字符
while (isdigit(s[j])) { // 找到下一个非数字字符
j++;
}
s[j++] = s[i]; // 将数字放在找到的非数字字符之后
}
}
s[j] = '\0'; // 确保字符串结尾处有'\0'
// 如果数字字符串在原字符串前面,交换它们
if (i < j) {
char temp[50];
strncpy(temp, s, i); // 移动到临时数组
strncpy(s, temp + j - i, j - i); // 将数字字符串移回原位置
strncpy(s + j - i); // 更新剩余部分
}
}
int main() {
char str[] = "abc123def456";
move_numbers(str);
printf("移动数字后的字符串: %s\n", str);
return 0;
}
```
这个函数首先把非数字字符逐个移到新位置,然后当遇到数字时,寻找下一个非数字字符将其插入。注意,为了防止数字字符串覆盖到后面的非数字字符,我们还需要检查并调整字符串的拼接。
阅读全文