Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucasseribeiro

"error: invalid types ‘char[int]’ for array subscript"

Recommended Posts

Oi pessoal,

 

eu tenho um código aqui que tem um(ns) erro(s)... Eu tenho um certa idéia de que erros são; mas gostaria que alguém(ns) me desse(m) um luz nesse caso...

for(a = 0; pltr[a] != '\0'; a++){
	for(d = 0; pltr[d] != '\0'; d++){
		printf("\t%s\n",&pltr[a][d]);
	}
}

A ponteiro

char *pltr = &ltr[0][0]; // No código eu inicializei os índices com zeros e o GCC não reclamou...

aponta para a matriz char, nos dois loops, co apenas um único índice ao invés dos dois declarados... Mas eu não entendo porque o GCC fica dizendo que:

error: invalid types ‘char[int]’ for array subscript

Tá meio confusa a coisa e isso é uma bela duma pedra no meu sapato apertado... Eu só quero imprimir uma matriz e o GCC fica me cutucando!

 

Alguém?? Hein?

 

Agradecido

Lucas Ribeiro

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pltr é um array bidimensional, cuja 'primeira posição' contém um endereço de memória e vc está comparando como um char?

Tentou char *pltr = &ltr[0]?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Isis,

 

é que eu tô tentando criar uma função que armazene as palavras de uma frase em uma matriz (bi) de caracteres. Se eu usar o loop for em um vetor de caracteres, não vou armazenar apenas a última palavra da frase??

 

E "parece" que eu consegui a matriz bidimiensional. Meu objetivo nesse loop é apenas imprimir a matriz para ver se deu certo.

void ler(char string[0]) {

	int a = 0;
	int b = 0;
	int c[0];
	int d = 0;

	char ltr[0][0];
	char *pstring = &string[0];
	char *pltr = &ltr[0][0];

	printf("\n\t %s\n\n", string);

	printf("eita!");

	for (a = 0; pstring[a] != '\0'; a++) {
		if (string[a] == ' ') {
			c[b] = a;                  // Até aqui eu confirmei que deu certo
		} else {
			ltr[a][d] = pstring[a];    // Essa matriz que é o caroço do abacate
			d++;
		}
	}

	for(a = 0; pltr[a] != '\0'; a++){          // Aqui a coisa mudou
		for(d = 0; pltr[d] != '\0'; d++){
			printf("\t%s\n",&pltr[a][d]);
		}
	}
}

No cabeçalho eu fiz

void ler(char string[]);

Já na main()...

ler("O um esta no todo e o todo esta no um.");

E o GCC:

error: invalid types ‘char[int]’ for array subscript

Aé, eu vou mudar o tipo de retorno da função quando tiver pronta....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se é isto que você deseja !

 void ler(char *string ) {

	 
	 int c[100];
	 int numero_palavras = 0;
	 char palavra[100];
	 char Palavras[100][100];
	 char *pstring = &string[0];
	  

	 printf("\n\t %s\n\n", string);

	 printf("eita nóis!\n\n\n\n");
	 int count_cr=0;
	 for ( ;*pstring!='\0';  ) 
	 {
		 palavra[count_cr++]=*pstring;//Vai adicionando nesta palavra temporaria

		 if (*pstring == ' ') 
		 {
			 palavra[count_cr++]='\0';//seta o null
			 strcpy(Palavras[numero_palavras],palavra);//copia a palavra para o  array bidiomensional
			 numero_palavras++;//incrementa o contador de palavras adicionadas
			 count_cr=0;//reseta o contador
		 } 
	     pstring++;//incrementa o ponteiros
	 }

	 for (int k=0;k<numero_palavras;k++)
	 {
		 printf("%s\n",&Palavras[k]);//imprime
	 }


 }


 void main()
 {
	 ler("O um esta no todo e o todo esta no um.");
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem razão, Isis (é com acento?),

 

tô trabalhando com C/C++ e PHP ao mesmo tempo,

me embaralhei tudo aqui, kkk.

Mas não dá pra fazer isso só com 'stdio.h'?


Ixi! Desculpe, Isis não... Edsoncury!! Foi mal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim! Eu também testei, funciona sim. E lhe agradeço!

Inclusive é jeito mais certo de se fazer isso.

 

É só uma pergunta mesmo... É queu tô treinando por biblioteca em pequenos projetos. Se der certo posso montar uma API individual, né. Eu gostaria porque teria mais domínio sobre o código.

 

Valeu


E me desculpe pela desatenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.