1
void vazio(void)
{
char *str = NULL, c;//apontando para null
int i = 0, j = 1;
//alocação de memória para str
str = (char *) malloc (sizeof(char));
printf("Informe a string: ");
//ler a string
while (c != '\n')
{
c = getc(stdin);//ler a entrada padrão do teclado
str = (char *) realloc (str, j*sizeof(char));//realocação de memória
str[i] = c;//ler o caracter, fazendo apontar para c
++i;
++j;
}
str[i] = '\0';//marcar final da string com caracter nulo
//gets(str);//usando gets, o escopo if é executado
if((strlen(str) == 0) || (strcmp(str,"0") == 0))
{
printf("\7\aErro!\n");
exit(EXIT_FAILURE);
}
//isto é executado, mas não imprime nada, ignorando o if acima
printf("String: %s", str);
free(str);//libera memória
str = NULL;//evita o dangling pointers
}
Make error to be issued as gets() works.
– malves
If the user leaves the field blank, that is to say enter, the program will send a beep, printing error and consequently will close using Exit(EXIT_FAILURE);
– malves