c语言拆分化学元素的程序

想问一下,要求是可以吧复合化学元素拆分成一个一个的print出来的c语言程序,写了很久不会写,求指教

例如吧:H2So4
拆分成:H2,So4

遍历串。
1遇到首字母大写 下一个字母也大写的 直接输出指针位置字母
2遇到首字符是字母 下一个字母是数字的,直接输出字母,指针跳到下一个字符判断
遇到首字母大写,下一个字母小写的 直到遇到数字或大写,输出这些指针位

关键点:从样例数据分析,是不是每个化学元素的首字母是大写

知识点:大写字符、小写字符的 ASCII 码区间是不是不同?

流程:按照字符一个一个判断,每次打印的时候,判断下一个字符是不是大写,如果下一个字符是大写,除了打印当前字符,再打印一个逗号

供参考:

#include <stdio.h>
#include <ctype.h>
int main()
{
    int i = 0,s = 0;
    char str[16]="H2So4Na3K",c;
    while (1){
         c = str[i];
         if(c == '\n' || c == '\0') break;
         switch(s){
             case 0:if(isupper(c)) {putchar(c);s = 1;} break;
             case 1:if(islower(c) || isdigit(c)){putchar(c);}
                    else{putchar(','); s = 0; i--;}    break;
         }
         i++;
    }
    return 0;
}