Amoguai 0 Posted March 4, 2011 Report Share Posted March 4, 2011 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 Link to post Share on other sites
Andrepereira9 4 Posted March 4, 2011 Report Share Posted March 4, 2011 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. Link to post Share on other sites
Amoguai 0 Posted March 4, 2011 Author Report Share Posted March 4, 2011 Não. Sem o 1º for fica com tamanho = 5 :wallbash: Link to post Share on other sites
Localhost 3 Posted March 4, 2011 Report Share Posted March 4, 2011 No final do segundo ciclo mete: word[j] = '\0'; here since 2009 Link to post Share on other sites
Amoguai 0 Posted March 6, 2011 Author Report Share Posted March 6, 2011 Também não ajudou. O array de chars "word" continua maior do que é suposto e com caracteres esquisitos... :wallbash: Link to post Share on other sites
Localhost 3 Posted March 6, 2011 Report Share Posted March 6, 2011 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 Link to post Share on other sites
Amoguai 0 Posted March 7, 2011 Author Report Share Posted March 7, 2011 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 Link to post Share on other sites
Localhost 3 Posted March 7, 2011 Report Share Posted March 7, 2011 No entanto tens de colocar esta linha de código no final do segundo ciclo na mesma: word[j] = '\0'; here since 2009 Link to post Share on other sites
Amoguai 0 Posted March 7, 2011 Author Report Share Posted March 7, 2011 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 Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now