Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 = <r[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
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 = <r[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....
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.");
}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...
o código q te passei, funciona pelo menos sei, pq eu testei.
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.
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 = <r[0]?