Ir ao conteúdo
  • Cadastre-se

Caracteres especiais em C


eclipsecg

Posts recomendados

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 ?

 

 

 

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...