Lo del return no lo sabía engel lex, ¿me podrías explicar por qué se usa?
las funciones de c/c++ deben tener obligatoriamente return para que estén "bien armadas" el return es el valor de retorno de la funcion, a demás 0 en el main le indica al sistema operativo que todo fue bien
sobre el while
while ((vaciarmem = getchar()) != '\n' && vaciarmem != EOF);
esto es para limpiar la memoria de entrada de valores, es decir, el scanf o getchar pueden leer sin avisar al usuario... es decir, si mandaste una cadena más larga de lo esperada con espacios, o cualquier cosa rara, el scanf o getchar solo leeran lo indicado por el programador yel resto quedará en el buffer de entrada (stdin)
así que cuando hagas otro getchar, scanf o fgets simplemente tomará esos datos directamente sin preguntarle al usuario (ya que así funcionan)...
en este caso lees todo hasta que consigas "\n" (salto de linea) o EOF (end of file, fin de archivo o stream de datos) y te aseguras que eso no pase
pd: cuando haces enter en la consola se agrega un "\n" que muchas veces no se lee, eso tambien puede hacer que getchar se salte