lo ideal es que tus funciones que realicen un proceso X retornen códigos de error para que funciones madres por ejemplo main sepa que hacer ante mas de 1 o 2 situaciones. se puede usar de una manera pero seria con fprintf() en conjunto a Standard error stream (stderr) solamente para debugear y mostrar los errores, pero que solo una persona especializada (en este caso tu) sepas que a ocurrido y el usuario normal solo se preocupe en su funcionamiento y no en codigo o errores que a final de cuentas a el no le interesan... un ejemplo:
#include <stdlib.h>
#include <stdio.h> //<stdio.h>
#include <string.h>
char* readInput(FILE* FileSrc)
// Retorna un puntero a una cadena ansi que debera ser liberada con free();
{
char c = 0;
char *szRet = NULL;
size_t size = 0;
while(++size)
{
szRet
= (char*)realloc(szRet
, size
); fread(&c
, 1, 1, FileSrc
); if (c == '\n')
break; // exit while(1)
szRet[size - 1] = c;
}
return szRet;
}
long int getActionFromString(const char *szStr)
// Verifica la existencia de vocales dentro de una cadena dada.
{
long int lFlags = 0;
if (szStr)
{
do
{
switch(*szStr) // <-- en luigar de poner los printf usamos flags para saber que hacer en un proceso que nos llamo...
{
case 'A':case 'a': lFlags |= 0x1;
break;
case 'E':case 'e': lFlags |= 0x2;
break;
case 'I':case 'i': lFlags |= 0x4;
break;
case 'O':case 'o': lFlags |= 0x8;
break;
case 'U':case 'u': lFlags |= 0x10;
break;
}
} while (*(++szStr) != '\0');
}
return lFlags;
}
int main()
{
// claro evita poner mucho codigo tambien en el main()... evita esto que hice.
char* szTmp = NULL;
long int lFlags = 0;
puts("ingresa una cadena:"); szTmp = readInput(stdin);
lFlags = getActionFromString(szTmp);
if (lFlags == 0x0)
{
fprintf(stdout
, "Cadena limpia de vocales\n"); } else {
fprintf(stdout
, "Error cadena con vocales\n"); if (lFlags & 0x1)
fprintf(stderr
, "Error Contiene la vocal \"a\" code: %d\n", lFlags
); if (lFlags & 0x2)
fprintf(stderr
, "Error Contiene la vocal \"e\" code: %d\n", lFlags
); if (lFlags & 0x4)
fprintf(stderr
, "Error Contiene la vocal \"i\" code: %d\n", lFlags
); if (lFlags & 0x8)
fprintf(stderr
, "Error Contiene la vocal \"o\" code: %d\n", lFlags
); if (lFlags & 0x10)
fprintf(stderr
, "Error Contiene la vocal \"u\" code: %d\n", lFlags
); }
return EXIT_SUCCESS;
}
Dulces Lunas!¡.