• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jpedro7

Vectores Bidimensionais

2 mensagens neste tópico

Quando estou a inserir as linhas no array bidimensional o printf vem correcto mas quando acabo e vou listar o conteúdo da tabela não está correcto.

Exemplo:

Inserir nome do texto

Flores

Inserir Linhas

primeira 

Inserir Linhas

segunda

Inserir Linhas

terceira

Inserir Linhas

end

Linhas...pstend

Linhas...stend

Linhas...tend

Linhas...nd

Linhas...d

Linhas...

Linhas...ira

Linhas...ra

Linhas...a

Como podem vêr a listagem "Linhas..." está errado.

Como posso resolver ?

Estou a utilizar o Microsoft Visual Studio 2005( full instalation) para compilar e linkeditar.

Obrigado pela ajuda.

O código fonte:

#include <stdio.h>
#include <string.h>

#define MAX_LN 25    /*   Máximo 26 Linhas    última linha é = END */
#define MAX_TEXTOS 9 /*   Máximo 10 Textos     */

int resultado;
int ind_titulo;
int tot_ln=0;
int tot_textos=0;
char texto_t[MAX_TEXTOS]="";
char texto_l[MAX_TEXTOS][MAX_LN];

int menu (void);
void inserir_textos (void);
void seleccionar_textos (void);

int main()
{
int opcao, nrTextos=0, nrLinhas=0; 

/* inicializacao do duplo array a NULL */
for (nrTextos=0;nrTextos<9;nrTextos++)
{
	for(nrLinhas=0;nrLinhas<25;nrLinhas++)
	{
		texto_l[nrTextos][nrLinhas]='\0';
	}
}

for(;
{
	do
	{

		opcao = menu();
		switch(opcao)
		{
			case 1:
				inserir_textos();
				break;
			case 2:
				seleccionar_textos(); 
				break;
			case 3:
				return 0;
		}

	}while (resultado!='1' && resultado!='2' && resultado!='3');
}
}
int menu (void)
{
int opc;
printf("\n\n1 new...end \n");
printf("2 select\n");
printf("3 exit\n");
scanf ("%d", &opc);
return opc; 
}
void inserir_textos()
{
int i, z;
char texto[80];

printf("Inserir o Nome do Texto \n");
//fgets(&texto_t[tot_textos],80,stdin);
scanf("%s", &texto_t[tot_ln]);
printf("Titulo..Tabela..%s \n", &texto_t[0]);
for (i=0;i<26;i++)
{
	printf("Inserir linhas de Texto \n");
	scanf("%s", &texto_l[tot_ln][i]);
	//fgets(&texto_l[tot_ln][i],80,stdin);
	if (strcmp(&texto_l[tot_ln][i], "end") == 0)
	{
		for(z=0;z<=25;z++)
		{
			if (strcmp(&texto_l[tot_ln][z], "end") != 0)
			{
				printf("Linhas...%s \n", &texto_l[tot_ln][z]);
			}
		}

		break;
	}
	printf("Linha...%s \n", &texto_l[tot_ln][i]);
}

tot_ln++;
tot_textos++;
}
void seleccionar_textos()
{

int i;
char texto[80];

printf("Digitar o Nome do Texto \n");
scanf("%s", &texto);
//fgets(texto,80,stdin);
for(i=0;i<=9;i++)
{
	if (strcmp(&texto_t[i], texto) == 0)
	{
		printf("Texto...%s \n", &texto_t[i]);
		ind_titulo = i;
		break;
	}
}

for(i=0;i<=25;i++)
{
	if (strcmp(&texto_l[ind_titulo][i], "end") != 0)
	{
		printf("Linhas...%s \n", &texto_l[ind_titulo][i]);
	}
}
}

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Convidado
Este tópico está fechado a novas respostas.