c语言,删除数组中的小写字母

img

img


如图,想不通为什么倒数第二行n变成--n才能完美输出



// 去除数组中的小写字母 
#include
int main()
{    char s[10]={97,97,97,97,97,65,65,65,65,65};
    puts(s);
    int i,n=0;
    /*for(i=0;i<10;i++)
    scanf("%d",&s[i]);*/
    for(i=0;s[i]!='\0';i++)
    if(s[i]<'a'||s[i]>'z')
    s[n++]=s[i];
    s[--n]='\0';
    puts(s);
}

你的代码本身就有问题,char数组并没有字符串结束符,所以用puts是不对的
改成:

// 去除数组中的小写字母 
#include<stdio.h>
int main()
{    char s[11]={97,97,97,97,97,65,65,65,65,65}; //数组保留一个字符串结束符的空间
    puts(s);
    int i,n=0;
    /*for(i=0;i<10;i++)
    scanf("%d",&s[i]);*/
    for(i=0;s[i]!='\0';i++)
    if(s[i]<'a'||s[i]>'z')
    s[n++]=s[i];
    s[n]='\0';
    puts(s);
}