I am writing a program to count the occurrence of '2' followed by '1' in a sting. I dynamically allocated string
Code is:
#include <stdio.h>
#include<stdlib.h>
    int penalty_shoot(char* s){
        int count=0,i=0;
        while(s[i]!='\0'){
           if(s[i]=='2')
                if(s[i+1]=='1')
                    count++;
        i++;
        }
        return count;
    }
    int main() {
        int t;
        int i=0;
        scanf("%d",&t);           //t is for number of test cases.
        while(t--){
            char *str, c;
            str = (char*)malloc(1*sizeof(char));
            while(c = getc(stdin),c!='\n')
            {
                str[i] = c;
                i++;
                str=realloc(str,i*sizeof(char));
            }
            str[i] ='\0';
            printf("%s\n",str);
            printf("%d\n",penalty_shoot(str));
            free(str);
            str=NULL;
            i=0;
        }
        return 0;
    }
Input is :
3
101201212110
10101
2120
I am facing 2 problems:
1) I feel the dynamic allocation is not working fine.I wrote the code for dynamic allocation seeing various codes on stackoverflow . (Can anyone suggest some changes.)
2) The code isn't reading '2120' as the 3rd input. (why is it so ?)
 
     
    