Ir ao conteúdo
  • Cadastre-se
Celestino Alona

C Apagar linha determinada linha da tela

Recommended Posts

Bom dia, gostaria de tirar uma dúvida que me veio agora. Teria como dar algum comando em C para que if(alguma coisa  aconteça) o programa limpa a última linha escrita? Eu tô com esse pequeno problema, pois tô fazendo um código onde eu quero que caso o usuário digite algo não permitido, haja uma limpeza naquilo que ele escreveu, porém sem apagar tudo o que foi escrito anteriormente na tela.

 

Por exemplo, eu coloco um printf("Insira seu nome : ",x); e o usuário coloca apenas números ou caracteres especiais. Quero que haja uma limpeza nesse printf e automaticamente ele reapareça, porém sem o nome inserido pelo usuário, para que ele o escreva novamente. Eu sei que tem o "goto" porém eu não quero que fique um monte de "Insira seu nome : " na tela, caso ele digite algo errado várias e várias vezes. Teria alguma função system("cls); que fosse apenas para a parte do código que você escolher ?

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Celestino Alona     você pode usar uma função para posicionar o cursor no inicio da linha que você quer deletar, e assim imprima uma linha contendo 80 caracteres espaço , com isso o conteúdo da linha será apagada e em seguida posicione o cursor novamente no inicio da linha , mas para cada printf precisa posicionar o cursor e para isso precisa de um contador de linhas para saber em qual linha da tela está e então voltar uma linha acima , e essa função precisa ser criada para a linguagem  c  .   No pascal ela já existe e se chama gotoxy , mas não posso te dar o código pronto pois é contra as regras do fórum , então faça seu código e poste aqui para vermos como está e em que podemos ajudar   .

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Olá. Vê se é essa função:

#include <stdio.h>
#include <windows.h>

void gotoxy(int x, int y) {
    COORD c = {x, y};
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE), c);
}

int main() {

    gotoxy(20, 5);
    printf("Teste");

    gotoxy(20, 8);

    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@giu_d    essa mesmo ,  mas precisa organizar o código para que ele saiba em qual linha está e caso precise deletar a linha digitada então ele saiba para qual linha voltar e apaga-la .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Essa função bem usada me parece q pode funcionar. 

Mas é como você falou: "Precisa organizar o código..." 

Talvez com um do/while resolva

adicionado 38 minutos depois

Um pequeno exemplo:

int main() {

    char ch;

    printf("\n=========Exemplo==========");

    gotoxy(0, 5);
    printf("Ditite: ");
    scanf("%c", &ch);
    scanf("%c", &ch);

    Sleep(1000);

    gotoxy(0, 5);
    printf("                        ");

    gotoxy(0, 5);
    printf("Ditite novamente: ");
    scanf("%c", &ch);
    scanf("%c", &ch);

    return 0;
}

Algo assim

Obs: Tô com dois dedos enfaixados e não tá fácil digitar rs...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×