I am checking if a function returns true, it prints out valid strings according some other function I got. At the moment, it's printing it out correctly but it is also printing empty lines which seem to correspond to the invalid strings.
How can I make these empty lines go away?
Here is my code:
int main()
{
int i, count = 0;
char input[10];
char validStr[10][60] = {""};
for (i = 0; i < 60; ++i){
if(fgets(input,10, stdin) == NULL){
break;
}
input[strcspn(input,"\n")] = '\0';
if(checkIfValid(input)){
memcpy(validStr[i],input,sizeof(input));
count++;
}
}
printf("%d\n",count);
for (int j = 0 ; j < count; ++j){
printf("%s\n",validStr[j]);
}
}
The count indicates it is printing only the valid strings but as you can tell by the pic it prints white lines.
Note: For various reasons the program needs to follow the current order so the output is printed after the first for loop.
Thanks in advance!

10chars is too short by 1 for a 10-character string (no room for'\0'). Don't skimp on input buffer size.char input[1024];is fine (reduce accordingly on embedded devices) Note how you allows60chars for each string inchar validStr[10][60] = {""};Instead ofmemcpy(validStr[i],input,sizeof(input));usestrcpy (validStr[i],input);[10][60]to begin with -- just swap the bounds around:)