输入一字符串,将数字字符移动到非数字字符后

/*
输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数
字字符输入时的顺序。例如,输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。
*/

#include <stdio.h>

int main(){
    char s[50];
    int i,j,len;
    char ch;
    
    gets(s);
    len = strlen(s);
  /*去除结尾连续数字*/
    for(i = len -1; s[i] <= '9' && s[i] >= '0'; i--) ;
    len = i;
  /*若碰到数字,移到结尾,然后数组长度减1*/
    for(i = len; i >= 0; i--){
        if(s[i] <= '9' && s[i] >= '0'){
            ch = s[i];
            for(j = i; j < len; j++)
                s[j] = s[j+1];
            s[len] = ch;
            i++;
            len--;
        }
    }

    printf("atfer:%s\n",s
/*网上的查到的,效率较高 */

#include <stdio.h>
void main()
{
    char buf[256];
    char *p=buf;
    char *q=buf;
    char ch;
    printf("Please input a string:");
    scanf("%s", buf);
    while(*p)
    {
        while(*p<'0'||*p>'9')p++;        /*找到第一个数字*/
        q=p;
        while(*q>='0' && *q<='9')q++;     /*找到数字后面的第一个不是数字的字符*/
        if(*q == '\0') break;                /*后面都是数字,退出*/
        ch=*q;
        while(q>p)
        {
            *q=*(q-1);
            q--;
        }
        *q=ch;
    }
    printf("Output string: %s\n",buf);
    printf("Press any key to exit.\n");
    getch();
}
原文地址:https://www.cnblogs.com/wannianma/p/2999123.html