Jump to content

[Dúvida] Percorrer array 2D


Recommended Posts

Posted (edited)

Boa tarde,

[edit]

Estou com um problema, se alguém tiver uma ideia...

Como posso copiar partes de um array para outro array, com o memcpy ou strcpy consigo copiar partes de um array para outro?

Obrigado pela atenção,

alves077

Edited by alves077
Posted

O strcpy(), pela sua propria natureza, copia parte dum array para outra. A parte que ele copia é a parte que vai desde o principio do array original até (inclusive) ao primeiro elemento com valor zero.

Com o memcpy() podes especificar um determinado numero de elementos.

Mas o meu conselho é fazeres um (ou dois (ou tres -- nao mais que isso)) ciclo para seleccionar e copiar o que pretendes.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

Sim hmiguel...

Tenho um ciclo que percorre as linhas e queria copiar a linha, só que as vezes posso copiar metade da linha, o problema e que tenho uma linha inteira com uma string, isto é, fecho com \0, uma linha, e não estou conseguir copiar todo bem, fica pela 1ª linha bem copiada. Estou a usar o memcpy, digo o array destino, o array origem e o tamanho que é igual á metade do array. Mas não está-me a dar bem.. alguma ajuda?

Obrigado pela atenção,

alves077

Posted

... Estou a usar o memcpy, digo o array destino, o array origem e o tamanho que é igual á metade do array ...

Não te esqueças de incluir o elemento de valor zero na cópia.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

O código é algo do genero:

for(pos=0;pos<rows;pos++)
{
   memcpy(&tab[pos_iniclal][pos+pos_fim],temp[pos], strlen(temp[pos]));
}
tab[pos_inicial][pos+pos_fim+1]='\0';

A ideia e em cada linha da matriz temp que tem metade das colunas da matriz tab, copiar uma linha inteira como string, porque na matriz temp cada linha acaba com o \0, directamente para o tab com o memcpy. sem ter que percorrer caracter a caracter.

Obrigado pela atenção,

alves077

Posted

O que é que tens contra o strcpy()? ???!?!?!?!#%@$@!??

for(pos=0;pos<rows;pos++)
{
   strcpy(&tab[pos_iniclal][pos+pos_fim], temp[pos]);
}

Se queres usar a tua versao passa a atribuicao do '\0' para dentro do ciclo

for(pos=0;pos<rows;pos++)
{
   memcpy(&tab[pos_iniclal][pos+pos_fim],temp[pos], strlen(temp[pos]));
tab[pos_inicial][pos+pos_fim+1]='\0';
}

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.