Jump to content
Amoguai

[Ajuda] Conversão de string para array dá dimensões erradas

Recommended Posts

Amoguai

Boa tarde a todos!

Eu tenho aqui um pequeno excerto de código que faz algo que me escapa completamente!

for(int k = 0; k < 4; k++){
     char word[4];
     for(int j = 0; j < 4; j++)
          word[j] = 'a';
     cout << strlen(word) << " " << word << endl;
}

À partida este código parece ser estúpido, mas eu apenas o reduzi ao propósito desta pergunta. Basicamente, quero "depositar" o char 'a' em cada posição do array de chars "word", 4 vezes.

Se word=aaaa como é que strlen(word)=7? :O

Share this post


Link to post
Share on other sites
Andrepereira9

Não percebo muito De C#, mas se tirares o 1º for, não funciona bem?

char word[4];
     for(int j = 0; j < 4; j++)
          word[j] = 'a';
     cout << strlen(word) << " " << word << endl;
}


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Amoguai

Também não ajudou. O array de chars "word" continua maior do que é suposto e com caracteres esquisitos...  :wallbash:

Share this post


Link to post
Share on other sites
Localhost

Isso é porque ela só tem 4 posições.

Imagina a string "pato": tem 4 posições.

|P| |A| |T| |O| -> Falta o \0 que fica na 5ª posição, ou seja, já não existe espaço. Então tens que declarar assim: char word[5].


here since 2009

Share this post


Link to post
Share on other sites
Amoguai

Isso é porque ela só tem 4 posições.

Imagina a string "pato": tem 4 posições.

|P| |A| |T| |O| -> Falta o \0 que fica na 5ª posição, ou seja, já não existe espaço. Então tens que declarar assim: char word[5].

Cheguei a essa conclusão à tarde, enquanto experimentava com arrays de chars... lol

Andei nesta porcaria 2 semanas!

Estou feliz que finalmente resolvi este problema e acabei o meu programa  :cheesygrin:

Share this post


Link to post
Share on other sites
Localhost

No entanto tens de colocar esta linha de código no final do segundo ciclo na mesma:

word[j] = '\0';


here since 2009

Share this post


Link to post
Share on other sites
Amoguai

No meu caso específico não é necessário porque o array é escrito de novo de cada vez que o 1º for é percorrido, escrevendo por cima do que já lá estáva.

Obrigado pela ajuda  :P

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.