Ir ao conteúdo
  • Cadastre-se

Modificar valor de um vetor?? Urgente!


dantepw

Posts recomendados

Olá amigos! Eu estou fazendo um programa para a faculdade o qual necessitará de um "bloqueador de caracteres", que tem a função de não permitir que o usuário digite mais do que o valor do vetor. Por exemplo, se o vetor pode armazenar apenas 10 letras, quando ele tentar digitar mais de 10 letras o cursor não se move.

Eu estou com o código pronto, porém tenho um pequeno problema. O vetor inicial da variável que faz tudo isso é [1], só que ao longo do programa ela precisa mudar, e eu não consigo mudar. Alguém por favor pode me ajudar? Muito obrigado!

#include <stdio.h>

#include <windows.h> //usando com o gotoxy

int auxiliar;// = variável para auxiliar no bloqueio de caracteres

int contador = 0;// = o contador usado

int variavel[1] = {0};// = variável a qual será usada [e substituida pela qual terá seu caractere bloqueado

int block; // = o X aonde o caractere será bloqueado na tela

int x, y; //usando para o gotoxy

void bloqueia_caractere(); //função para bloquear os caracteres

void gotoxy();

int main (){

x = 16; y = 3;

variavel[1];

block = 46;

bloqueia_caractere();

getch();

return 0;

}

void gotoxy(x, y){

HANDLE k = GetStdHandle (STD_OUTPUT_HANDLE); //Pede para o Kernal do Windows o objeto do STD_OUTPUT_HANDLE

COORD position = {x, y}; //Cria uma coordenada

SetConsoleCursorPosition (k, position); //Coloca o cursor na coordenada indicada

}

void bloqueia_caractere(){

gotoxy(x, y);

while ((auxiliar = getch()) && auxiliar != '\r' ){

//caso o usuário aperte a tecla "backspace", para apagar

if (auxiliar == '\b' && contador > 0){

//cor1(); cor = 31;

printf("\b \b"); //tira da tela o caractere apagado

contador--; //exclui do registro o caractere apagado

}

//caso não aperte o backspace, ele vem para esse IF.

else if (auxiliar != '\b') {

//cor = nova_cor; cor1();

putchar(auxiliar); //Simplesmente imprime na tela o que ele digitou

variavel[contador++] = (char)auxiliar; //converte para char

//caso ele ultrapasse o limite do vetor:

if(contador > sizeof(variavel)){

gotoxy(block,y);

// cor = 28; cor1();

contador--; //exclui do registro novamente

//enquanto ele não apertar a tecla enter,

if(contador != 13) //13 = ENTER na tabela ASCII

gotoxy(block,y); //ele repete a mensagem de erro

printf(" \b"); //apaga o último digito da tela

}

}

} //fim do while

variavel[contador] = '\0'; //impede que armazene algo q foi apagado

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...