输入一个字符串,删除首尾数字字符

从键盘输入一个字符串,删除该字符串的所有首部和尾部数字字符,输出修改后的字符串以及该字符串的长度(限定在一个数组内进行)

可以使用循环遍历实现.

代码如下:

参考链接:


https://www.runoob.com/cprogramming/c-function-isdigit.html


#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(void){
    
    char str[100];
    printf("请输入一个字符串:");
    scanf("%s",str);
    

    int j;
    int i=0; // 从字符串第一个字符开始判断 
    // https://blog.csdn.net/st66688/article/details/106609066/
    // https://www.runoob.com/cprogramming/c-function-isdigit.html
    // 删除首部的数字字符 
    while(isdigit(str[i])!=0){  //如果第一个字符是数字字符,则将后面的字符往前移动一个位置 
        
        for(j=i;j<strlen(str)-1;j++){  // 后面的字符往前移动一个位置 
            char ch = str[j];
            str[j]=str[j+1];
            str[j+1] = ch;
        }
        str[j]='\0';  // 移动字符串后,尾部添加一个字符串结尾的空字符'\0'         
    }
    
//    for(int i=0;i<=strlen(str);i++){
//        printf("str[%d]=%c,%d\n",i,str[i],str[i]);
//    } 
    
//    printf("delete start ,str=%s\n",str);
    // 删除字符串尾部的数字字符 
    i=strlen(str)-1;  // 从字符串最后一个字符开始判断 
    while(i>=0&&isdigit(str[i])!=0){  // 如果当前字符是数字字符,则将此位置赋值为空字符,以删除它 
        
        str[i]='\0';
        i--;  // 判断下一个字符位置    
    }
    str[i+1]='\0';  // 字符串结尾添加一个空字符 
    //printf("delete end ,str=%s\n",str);
    printf("修改后的字符串为:%s,它的长度是:%d\n",str,strlen(str));
    
//    for(int i=0;i<=strlen(str);i++){
//        printf("str[%d]=%c,%d\n",i,str[i],str[i]);
//    } 

    return 0;
    
} 

img