Problems generalized in C [closed]

-5
#include <stdio.h>
#include <string.h>

#define Nome "nome"
#define TAM_STRING 12

void main(void)
{
    char * str;

    str = (char*) malloc(TAM_STRING);

    if(str == NULL)
    {
        printf("Não já espaço para alocar");
    }
    else { (str,Nome);
    printf("Nome=[%s] tem [%d] caracters",str, strlen(Nome));
    int i = 0;
    for( i=0;i<strlen(Nome);i++)
    {
        printf("\nCaracter[%d] = [%c]\n", i , *(str+i));
        if(((*(str+i)=='a')|| (*(str+i)=='e'))|| (*(str+i)=='i')||(*(str+i)=='o')||(*(str+i)=='u')) printf("Vogal");
    }
}
free(str);
}
    
asked by anonymous 16.04.2015 / 14:29

1 answer

5

The code has some errors:

#include <stdio.h>
#include <string.h>
#include <stdlib.h> // <=========== faltava este include

#define Nome "nome"
#define TAM_STRING 12

int main(void) { // <========== o retorno aqui precisa ser um int
    char * str = malloc(TAM_STRING); // <======= a declaração pode e deve ser mais simples

    if (str == NULL)    {
        printf("Não já espaço para alocar");
    } else { 
        strcpy(str, Nome); // <======= acredito que queria usar esta função, não tinha o nome dela
        printf("Nome=[%s] tem [%d] caracters",str, strlen(Nome));
        for (int i = 0; i < strlen(Nome); i++) {
            printf("\nCaracter[%d] = [%c]\n", i , *(str+i));
            if (((*(str+i) == 'a')|| (*(str+i) == 'e')) || (*(str+i) == 'i') || (*(str+i )== 'o') || (*(str+i) == 'u')) printf("Vogal");
        }
        free(str);
    }
}

See running on ideone .

Part of the problem is that the code was poorly formatted, so it is difficult to find errors like this. I would change a few more things, even though this is something just to test and it does nothing useful and production quality.

    
16.04.2015 / 14:49