Erro ao utilizar uma matriz de strings em C [RESOLVIDO]

1. Erro ao utilizar uma matriz de strings em C [RESOLVIDO]

Newton Teixeira
NewtonJr.

(usa CentOS)

Enviado em 14/08/2009 - 10:58h

Caros da comunidade, peço ajuda nesse trecho de código. Ele compila normalmente, porém o resultado do mesmo é apenas lixo da memória. Como posso utilizar uma matriz de strings em C da melhor forma possivel?

Agradeço desde já e fico no aguardo on-line. Att.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define N_LIGACOES 14

int main(void) {

char Ligacoes_Scada[N_LIGACOES][8];
*Ligacoes_Scada[0] = "PF_LSC ";
*Ligacoes_Scada[1] = "AC_LSC ";
*Ligacoes_Scada[2] = "BSB_LSC";
*Ligacoes_Scada[3] = "CH_LSC ";
*Ligacoes_Scada[4] = "EMS_LSC";
*Ligacoes_Scada[5] = "IZ_LSC ";
*Ligacoes_Scada[6] = "LD_LSC ";
*Ligacoes_Scada[7] = "LI_LSC ";
*Ligacoes_Scada[8] = "MD_LSC ";
*Ligacoes_Scada[9] = "MR_LSC ";
*Ligacoes_Scada[10] = "PD_LSC ";
*Ligacoes_Scada[11] = "PR_LSC ";
*Ligacoes_Scada[12] = "SLI_LSC";
*Ligacoes_Scada[13] = "TO_LSC ";

int i=0;
for(i=0; i < N_LIGACOES; i++) {
printf("S = %s\n",Ligacoes_Scada[i]);
}
getch();
return 0;
}


  


2. Re: Erro ao utilizar uma matriz de strings em C [RESOLVIDO]

Estevão Ferreira Maia
_eXagon

(usa OpenSuSE)

Enviado em 14/08/2009 - 11:34h

limpa a memoria antes ... depende de sua estrutura :

pode usar ...

memset(path, 0x000, sizeof(path)); (N_LIGACOES, 0x000, sizeof(N_LIGACOES))

ou um for para a struct em NULL;

Abraço


3. Re: Erro ao utilizar uma matriz de strings em C [RESOLVIDO]

Newton Teixeira
NewtonJr.

(usa CentOS)

Enviado em 14/08/2009 - 11:45h

Amigo, eu inicializei o vetor bidimensional Ligacoes_SCADA logo depois de declará-lo.
O que acho o problema é: ou não é a maneira certa de criar uma matriz de strings (de tamanho variado pra cada uma) ou não estou acessando de maneira adequada essa matriz que criei.

Fico no aguardo. Att.


4. Consegui Resolver

Newton Teixeira
NewtonJr.

(usa CentOS)

Enviado em 14/08/2009 - 16:59h

Estava lendo o livro C Completo Total e consegui encontrar uma solução. Eis a mesma:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define N_LIGACOES 14

int main(void) {

/*static char *Ligacoes_Scada[N_LIGACOES];
Ligacoes_Scada[0] = "PF_LSC{TEXTO}";
Ligacoes_Scada[1] = "AC_LSC";
Ligacoes_Scada[2] = "BSB_LSC";
Ligacoes_Scada[3] = "CH_LSC";
Ligacoes_Scada[4] = "EMS_LSC";
Ligacoes_Scada[5] = "IZ_LSC";
Ligacoes_Scada[6] = "LD_LSC";
Ligacoes_Scada[7] = "LI_LSC";
Ligacoes_Scada[8] = "MD_LSC";
Ligacoes_Scada[9] = "MR_LSC";
Ligacoes_Scada[10] = "PD_LSC";
Ligacoes_Scada[11] = "PR_LSC";
Ligacoes_Scada[12] = "SLI_LSC";
Ligacoes_Scada[13] = "TO_LSC"; // Eu poderia fazer dessa maneira */

static char *Ligacoes_Scada[N_LIGACOES] = {"PF_LSC","AC_LSC","BSB_LSC",
"CH_LSC","EMS_LSC","IZ_LSC","LD_LSC","LI_LSC","MD_LSC","MR_LSC","PD_LSC",
"PR_LSC","SLI_LSC","TO_LSC"}; // Ou fazer dessa, a qual, com certeza é mais elegante

int i=0;
for(i=0; i < N_LIGACOES; i++) {
printf("S = %s\tDim - %d\n",Ligacoes_Scada[i],strlen(Ligacoes_Scada[i]));
}
getch();

return 0;
}

a solução foi declarar uma matriz de ponteiros para char. Dessa forma, cada elemento do vetor Ligacoes_Scada será um ponteiro para um outro vetor inicializado com as strings constantes na declaração.

Grande abraço a todos. Att.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts