Finales de flujo
Una de las cosas que me suele preguntar la gente, y que hace tiempo me preguntaba yo mismo, es porqué cuando haces algo como:
int main() {
printf("Hola Mundo!");
}
a veces, no sale nada en pantalla.
La respuesta que he dado siempre, y es cierta, no se asuste nadie, que es necesario acabar los flujos de entrada con un fin de línea, para que salgan por pantalla. Esto se extiende a muchas otras situaciones y lenguajes (lo mismo pasa en C++ e incluso lo he visto en python).
Hoy por casualidad, encontré en comp.lang.c una explicación a este comportamiento, en vista de un código similar al anterior:
(..) The program given has a portability problem: the output to stdout does not finish with a \n. Implementations are permitted to drop any terminal partial line on text streams. (..)
Lo que viene a decir: Que salga por pantalla o no una cadena sin fin de línea, depende de la implementación del compilador: Algunos lo hacen, otros no.
Solución sencilla: Acaba siempre con un \n todas tus cadenas ;)