Ir ao conteúdo
  • Cadastre-se
eclipsecg

Caracteres especiais em C

Recommended Posts

Tenho duas dúvidas enquanto aos caracteres especiais em C.

 

1º DÚVIDA:

 

O caractere '\t' pelo que eu vi ele significa tabulação, mas, o que seria exatamente isso ? Ele representa alguma tecla do taclado? 

 

Qual diferença do '\t' para o cactere ' ' ( espaço)? Uma tabulação tem quantos espaços? Dar para alterar isso ou é padrão?

2º DÚVIDA:

Qual diferença do \n para o \r ?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, eclipsecg disse:

O caractere '\t' pelo que eu vi ele significa tabulação, mas, o que seria exatamente isso ? Ele representa alguma tecla do taclado? 

Tabulação é um conjunto de X espaços. Alguns programas permitem você estipular esse valor X de espaços. No meu IDE um tabulador equivale a 4 espaços em branco. Não é o caso do tabulador em C, realmente nem sei se é possível alterar isso no compilador, mas perfeitamente podemos ver que o programa salta de 8 em 8 espaços:
printf("1234567890\n\tx");

Existem formas mais efetivas de tabular um texto como:

#include<stdio.h>
#define SEPARADOR1 10
#define SEPARADOR2 -10

int main (){
    printf("[%*s]", SEPARADOR1, "campo1");
    printf("[%*s]", SEPARADOR2, "campo2");
    return 0;
}


Um exemplo algo mais elaborado pode ser:

#include <stdio.h>
#include <stdlib.h>
#define MAXLETRAS 10
typedef struct {
    char nome[MAXLETRAS];
    float nota[4];
}Dados;

int main (){
    int i,j;
    Dados lista[3] ={
        {{"Lucas"  }, {10  , 9.5, 7.4, 8.9} },
        {{"Leandro"}, { 9  , 9.5, 7.8, 8.7} },
        {{"José"   }, { 8.5, 9.2, 7.9, 8.8} }    
    };
    printf("%*s%8s%8s%8s%8s\n", -MAXLETRAS, "Aluno", "Nota1", "Nota2", "Nota3", "Média");
    // printf("%*s\n", MAXLETRAS,"Hola mundo");
    for (i=0;i<3;i++) {
        printf("%*s", -MAXLETRAS, lista[i].nome); 
        for (j=0;j<4;j++) { 
            printf("%8.1f", lista[i].nota[j]);
        }
        printf("\n");
   }
    
    getchar();
    return 0;
}


E a coisa não para aí...

#include<stdio.h>

int main (){
    
    char str[] = "Ola Mundo";
    printf("[%s]", str);
    printf("\n");
    printf("[%20s]", str);
    printf("\n");
    printf("[%-20s]", str);
    printf("\n");        
    printf("[%20.3s]", str);
    printf("\n");    
    printf("[%-20.5s]", str);
    printf("\n");     

    return 0;
}

Como podemos ver printf é uma função com bastantes recursos para dar formato a textos.
 

 

2 horas atrás, eclipsecg disse:

Qual diferença do '\t' para o cactere ' ' ( espaço)? Uma tabulação tem quantos espaços? Dar para alterar isso ou é padrão?

Acho que com printf("1234567890\n\tx"); respondo a pergunta sobre quantos espaços tem.
Sobre se diferenças eu acho que sim tem, pois na tabela asc2 \t é um caractere diferente de ' ', mas a ideia é que seria como uns 8 espaços mais ou menos. Como falei não sei se é possível modificar isso, porém como vimos temos mecanismos muito potentes para controlar os espaços... uu posso criar um(ou vários) separadores(defines) e mudar a distancia de todos com somente modificar o define. E como vimos também o operador %s tem muitos truques para alinhar o texto também.


 

2 horas atrás, eclipsecg disse:

2º DÚVIDA:

Qual diferença do \n para o \r ?

O '\n' é new line (nova linha)
char str[] = "Ola Mundo";
printf("%s\n", str);

O \r retorna ao principio da linha
printf("%s", "Ola Mundo");
printf("\r");//volta ao inicio da linha
printf("%s", "Bye"); //Escreve em cima de Ola

O '\b' retorna uma só letra:
printf("%s", "Ola Mundo");
printf("\b");
printf("%s", "inho");

Algo más? >_<

  • 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

×