• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Upper

Problemas com arrays duplos

10 mensagens neste tópico

Boas tenho o seguinte codigo

void ler_palavras (int num, char chave[][MAX_WORD_LENGTH], char colocar[][MAX_WORD_LENGTH]) {
    int i=0,j=0, ind, k;
    while(i <= num)
    { 
      printf("%d palavra a substituir: ", (num+1));
      while(gets(chave[][MAX_WORD_LENGHT)!=1){
         printf("Erro na leitura\n");
         printf("%d palavra a substituir: ", (num+1));}
      printf("%d palavra a colocar: ", (num+1));
      while(gets(colocar[][MAX_WORD_LENGTH])!=1){
         printf("Erro na leitura\n");
         printf("%d palavra a colocar: ", (num+1));}
       i++;
    }
}

Quando compilo aparece.me erro nos dois ultimos whiles...alguem me pode dizer o que devo fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estás a indicar a posição do array onde é suposto colocares o valor lido. Adicionalmente, chave[][MAX_WORD_LENGHT] é do tipo char, quando a função gets está à espera de um array, ou seja, devias ter chave[...] apenas.

Por último, usa a função fgets em vez da gets, e para a próxima coloca aqui o erro que obtinhas, pois pode ser útil para saber qual o problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void ler_palavras (int num, char chave[][MAX_WORD_LENGTH], char colocar[][MAX_WORD_LENGTH]) {
    int i=0,j=0, ind, k;
    while(i <= num)
    { 
      printf("%d palavra a substituir: ", (num+1));
      while(gets(chave[][MAX_WORD_LENGHT)!=1){
         printf("Erro na leitura\n");
         printf("%d palavra a substituir: ", (num+1));}
      printf("%d palavra a colocar: ", (num+1));
      while(gets(colocar[][MAX_WORD_LENGTH])!=1){
         printf("Erro na leitura\n");
         printf("%d palavra a colocar: ", (num+1));}
       i++;
    }
}

Ja corrigi o codigo, mas tenho que usar gets. Os erros sao falta algo antes dos pareteses rectos a fechar tanto do colocar como do chave e erro antes do primeiro fechar {

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void ler_palavras (int num, char chave[][MAX_WORD_LENGTH], char colocar[][MAX_WORD_LENGTH]) {
   int i=0,j=0;
   for(i=0; i <= num; i++)
   { 
      printf("%d palavra a substituir: ", (num+1));
      while(gets(chave[])!=1){
         printf("Erro na leitura\n");
         printf("%d palavra a substituir: ", (num+1));}
   
     printf("%d palavra a colocar: ", (num+1));
      while(gets(colocar[])!=1){
         printf("Erro na leitura\n");
         printf("%d palavra a colocar: ", (num+1));}
    }
}

Este e que e o codigo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já indiquei o problema anteriormente.

Não estás a indicar a posição do array onde é suposto colocares o valor lido.

Coloca chave[0] ou chave[ i], por exemplo (tens que ver qual o valor que deves colocar em função do teu objectivo).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

chave -> apontador para apontador de caracter (mais facilmente - matriz)

chave[a] -> string

chave[a][c] -> caracter

A função gets guarda o conteúdo lido numa string, logo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acabei de te dizer que não.

chave[a][c] é o caracter que está na linha 'a', coluna 'c'.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E que quem me deu este enunciado disse que

char chave[MAX_WORD][MAX_WORD_LENGTH];

em k o primeiro[] e coluna e deve ser sempre tratado como 0(neste caso so pode existir um espaço) o segundo [] e o comprimento do texto

por isso e que perguntei

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora