Strstr no funciona

¿Por qué esta pieza de código en particular devuelve falso en strstr () si ingreso “prueba”?

char input[100]; int main() { fgets(input, 100, stdin); printf("%s", input); if(strstr("test message", input)) { printf("strstr true"); } } 

Pensé que strstr buscó el primer param para las instancias del segundo param? Funciona cuando reemplazo la entrada con texto o simplemente le asigno algo directamente, pero parece que no funciona con fgets.

Es porque Fgets almacena el carácter de nueva línea así que cuando strstr hace una comparación, falla.

Desde la página man:

fgets () lee a lo sumo uno menos de caracteres de tamaño de la secuencia y los almacena en el búfer al que apunta s. La lectura se detiene después de un EOF o una nueva línea. Si se lee una nueva línea, se almacena en el búfer. A ‘\ 0’ se almacena después del último carácter en el búfer.

Agregar input[strlen(input) - 1] = '\0'; después de los fgets . fgets lee en la nueva línea char ( '\n' ). No hay '\n' en "test message" por lo que la input nunca estará contenida en él.

Debería comprobar realmente si la nueva línea está al final del búfer después de llamar a los fgets para saber si toda la línea pudo encajar realmente en ella, y también para eliminarla.