I\'m writing a piece of code in C that iterates T times and each time takes as input the text of a little song on which it will perform some counting operation (counting the len
There's a \n left in the input buffer. One solution is:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SONG_SIZE 501
int main(void){
int t;
scanf("%d", &t);
getchar();
char song[MAX_SONG_SIZE];
while(t--){
fgets(song, MAX_SONG_SIZE * sizeof(char), stdin);
printf("foo\n");
}
return 0;
}
See also: How to clear input buffer in C?
There's a \n
left in the input buffer, see http://c-faq.com/stdio/scanfinterlace.html
A quote from the link:
As a general rule, you shouldn't try to interlace calls to scanf with calls to gets() (or any other input routines); scanf's peculiar treatment of newlines almost always leads to trouble. Either use scanf to read everything or nothing.