I'm trying to make a simple function that counts diamonds, each diamond is given by a pair of '<' and '>'. But I'm trying to do pointers, but it's not giving me the correct result. I followed the "Simple didactics for pointers" , and according to it I think I'm doing it right. Where is my mistake? Instead of displaying the result, the number of diamonds, it always prints the same memory address.
Here are the relevant functions:
int main(int argc, char** argv) {
int casos; // número de casos de teste
int n;
int *diamantes; // aponta para número de diamantes
char vetor[1000]; //variável para armazenar a entrada
scanf("%d", &casos);
for (n = 0; n < casos; n++) {
limparBuffer();
ler(vetor);
contador(vetor, diamantes);
printf("%d\n", diamantes);
}
return (EXIT_SUCCESS);
}
int contador(char vetor[], int *d) {
int i, contEsq = 0, contDir = 0;
int n = 1;
for (i = 0; vetor[i] != 'int main(int argc, char** argv) {
int casos; // número de casos de teste
int n;
int *diamantes; // aponta para número de diamantes
char vetor[1000]; //variável para armazenar a entrada
scanf("%d", &casos);
for (n = 0; n < casos; n++) {
limparBuffer();
ler(vetor);
contador(vetor, diamantes);
printf("%d\n", diamantes);
}
return (EXIT_SUCCESS);
}
int contador(char vetor[], int *d) {
int i, contEsq = 0, contDir = 0;
int n = 1;
for (i = 0; vetor[i] != '%pre%'; i++) {
if (vetor[i] == '<')
contEsq++;
else if (vetor[i] == '>')
contDir++;
}
if (contEsq > contDir)
d = &contDir;
else
d = &contEsq;
}
'; i++) {
if (vetor[i] == '<')
contEsq++;
else if (vetor[i] == '>')
contDir++;
}
if (contEsq > contDir)
d = &contDir;
else
d = &contEsq;
}