Jump to content
AprendizZ

Inserir caracter em qualquer posição de um array!

Recommended Posts

AprendizZ

Estou tentando criar uma função que insere cada letra do alfabeto em cada posição de um array, de forma consecutiva.

Por exemplo:

rui

arui

brui

crui

drui

...

raui

rbui

rcui

...

ruiv

ruix

ruiz

Só que não estou a conseguir fazer com que ela insira a letra na última posição, terminando na string com z na penúltima posição.

Eis a base da função:

char *funcao_inserir (char *a, int na, char l, int p)
{
int i;
for (i = na ;i >= p ;i--)
	a[i+1] = a[i];
a[p] = l;
return a;
}

toda a ajudinha é agradecida.

Share this post


Link to post
Share on other sites
Localhost

Não precisas de retornar o valor da variável a pois esta já foi passada por referência.

Quanto ao problema, tens que fazer um ciclo de 0 até ao final da string (até encontrar o '\0') e chamar a função nesse ciclo.


here since 2009

Share this post


Link to post
Share on other sites
AprendizZ

Basicamente o que preciso é de uma função que me coloque uma nova letra, numa determinada posição, fazendo-me aumentar o array em 1.

O problema é que se o array tiver 4 de tamanho, a nova letra é inserida na posição mas o array não aumenta, e caso eu aumente o valor do tamanho no ciclo aparece-me lixo no final da cada array (quando impresso no ecrã).

Acho que o problema reside na situação da posição em que coincide com o tamanho do array.

Sinceramente já estou baralhado.  :wallbash:

Share this post


Link to post
Share on other sites
Localhost

Assim é diferente. Repara que no código que deste não postaste a parte em que declaras a string. Para fazeres o que queres tens que utilizar memória dinâmica, ou então declarar uma grande string (a primeira hipótese é melhor). Recebes a string e depois utilizas a função realloc para a aumentar em uma unidade (1 byte).


here since 2009

Share this post


Link to post
Share on other sites
AprendizZ

Como aprendiz, posso pedir-te que sejas um pouco mais explicito, obrigado. ;)

Share this post


Link to post
Share on other sites
Localhost

Sabes utilizar memória dinâmica? Primeiro declaravas um ponteiro do tipo char* que ia receber o retorno da função malloc que é um endereço para o início da string (alocavas N bytes onde N é o tamanho da string que vais receber). Em seguida chamavas a função e alocavas (com a função realloc) mais um byte para inserires sempre um novo caracter. Óbvio que podias alocar logo N + 1 bytes com a malloc.

char *my_string = NULL;

my_string = (char *) malloc ((sizeof (char) * N) + 1);


here since 2009

Share this post


Link to post
Share on other sites

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.