那个for语句的循环太复杂,没必要,而且如果不是数字字符根本不用动,
字符串是以'\0'结尾的,如果写成s[j]='\0'则将后面的字符全部截断了,可以将空面的字符覆盖前面的字符。#include<stdio.h> #include<string.h> main() {char s[80]; int i,j,k; gets(s); for(i=0;s[i]!='\0';i++) {if(s[i]>'0'&&s[i]<'9') {for(k=i;s[k+1]!='\0';k++) s[k]=s[k+1]; i--; s[k]='\0'; } } s[k]='\0'; puts(s); getch(); }