Confusion over scanf and getchar()

Well I was solving Buy1-Get1 from the practice problems(easy) and came across something strange

My code would get accepted if i took the string input as follows and then did the neccessary operations:

scanf("%s",str);

for(i=0;str[i]!=’\0’;i++)

         arr[(int)str[i]]++;           // arr is just another array

But instead i was trying to take the input as follows and was doing the necessary operations:

----->NOTE:In the prob the user enters \n after giving number of testcases and i took the input as scanf("d*c",&t) so as to account for the ‘\n’ entered <-----

while((c=getchar())!=’\n’)

            arr[(int)c]++;

My code wouldn’t get accepted and gave WA for the below version.(the remaining code didn’t change for the two versions…)

Can someone please tell me whats wrong?

Thanks for the help!!! :slight_smile:

@hitesh96db: There are two errors in ur code.

     i) when reading t use \n to denote the newliine character after the integer.

    ii) when checking (c=getchar()!='\n') add the condition  (c!=EOF) because there is no '\n' character after the last testcase.
    http://www.codechef.com/viewsolution/3079778 to the working solution.
    hope this helps u :)
1 Like