if语句体中的赋值不生效

if语句体中的赋值不生效
在while循环的第二个if中,我想达到的效果是将输入的!替换为!!,但是测试下来赋值不会生效,但是将.替换为!的语句可以生效

#include
int main()
{
    char ch;  //读取输入
    char cs[255];  //储存输入 
    int n=-1; 
    int l=0;     //记录.替换次数 
    int m=0;     //记录!替换次数 
    while((ch=getchar())!='#')
    {
        n++;
        if(ch=='.')
        {
            ch='!';
            l++;
            cs[n]=ch;
            continue;
        }
        if(ch=='!')
        {
            ch='!!';
            m++;
            cs[n]=ch;
            continue;
        }
        cs[n]=ch;
    }
    for(int j=0;j<=n;j++)
    {
        printf("%c",cs[j]);
    }
    printf("\n一共替换了%d次",l+m);
    
}

!!是两个字符,所以'!!'是不合法的,第二个if可以改为

    if (ch == '!') {
        m++;
        cs[n]  = ch;
        cs[++n] = ch;
        continue;
    }

img

字符和字符串 直接赋值就不对

https://blog.csdn.net/m0_57882370/article/details/121871849?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166210834016782417028765%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166210834016782417028765&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-121871849-null-null.article_score_rank_blog&utm_term=%E6%9B%BF%E6%8D%A2&spm=1018.2226.3001.4450

异曲同工你可以看看