Array de char em C

4 respostas
M

Olá pessoal estava realizando um exercicio com c e ocorreu o seguinte problema:

int main ()
{
	//Tamanho da matriz.	
	int i = 4;
	int j = 4;
	int size = i*j;

	//loop
	int k = 0;

	char matrix[size];
	
	//Preenchendo matrix com : para ajudar na lógica.
	for(k=0; k==size; k++)
	{
		matrix[k] =":";
	}
	
	for(k=0; k<size; k++)
	{
		printf("%c", matrix[k]);	
	}
	
	return(0);
}

è muito simples ele pegaria o tamanho da multiplização da linha*coluna após isso faria um loop preenchendo e outro loop mostrando, sei que poderia fazer as duas coisas ao mesmo tempo, mas eu queria fazer assim por que o objetivo do exericio é um pouco complicado, mas por fim gostaria de saber por que ele está imprimindo isso:

M�}0�

4 Respostas

V
int main (int argc, char* argv[])
{
	//Tamanho da matriz.	
	int i = 4;
	int j = 4;
	int size = i*j;

	//loop
	int k = 0;

	char matrix[size];
	
	//Preenchendo matrix com : para ajudar na lógica.
	for(k=0; k &lt; size; ++k)
	{
		matrix[k] =':';
	}
	
	for(k=0; k&lt;size; ++k)
	{
		printf("%c", matrix[k]);	
	}
	
	return 0;
}
>
M

Siim já tentei dos dois jeitos, já faz algum tempo que estou tentando fazer isso mesmo sendo mt simples em java e a sintaxe de c não ser tão complicada não estou conseguindo, se coloco > ai ele não imprime nada. Sou novato em C confesso que estou tendo algumas dificuldades como simplesmente saber por que tive que declarar a variavel K para poder executar o loop, e fiz aqui um segundo loop for com uma variavel i e não precisei declara-lá.

//loop
	int k = 0;

	char matrix[size];
	
	//Preenchendo matrix com : para ajudar na lógica.
	for(k=0; k>size; k++)
	{
		matrix[k] =":";
	}
	
	for(i=0; i>size; i++)
	{
		printf("%d", matrix[i]);	
	}
V

Você tentou usar o código que postei?

Notou que estou usando aspas simples, e não duplas?

As duplas geram o tipo char* e não char. Seu array é de char e não strings (char*).

Esse código que você postou no post anterior está completamente errado. O teste é mesmo < size, não == size e nem > size.

M

Hmm, nem passo pela minha cabeça o fato de aspas simples e duplas fazerem tanta diferença, agora posso colocar “%c” antes se eu estivesse utilizando aspas duplas ele dava um erro, muito obrigado.

Criado 25 de janeiro de 2013
Ultima resposta 25 de jan. de 2013
Respostas 4
Participantes 2