1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Verificar se existe Tabulaçao em C

Discussão em 'Programação' iniciada por Tiagans, 30 de Março de 2009. (Respostas: 8; Visualizações: 1441)

  1. Tiagans

    Tiagans Power Member

    Boas,

    Estou aqui com uma pequena dúvida.

    Estou a fazer um programa em C que verifica se existe TAB em ficheiros, um pouco como faz o cat -T do unix.

    O que tava a usar era o strcmp desta maneira:

    Código:
    while(!feof(f)) {
    fgets(linha, 256, f);
    linha[strlen(linha)-1] = '\0';
    if(strcmp(linha, '\t') == 0) {
    printf("Tabulacao\n");
    }
    }
    
    Alguem pode ajudar-me?

    Cumps
     
    Última edição pelo moderador: 31 de Março de 2009
  2. Baderous

    Baderous Banido

    Estás a usar plicas no \t. Tens de usar aspas, porque plicas delimitam caracteres, enquanto que aspas delimitam strings.
     
  3. Tiagans

    Tiagans Power Member

    yah yah..tens razao. ele nem compila assim.. foi um lapso. mas mm assim ele nao faz. eu nao sei se quando carrego na tecla tab num ficheiro ele "escreve" o \t...

    o que eu queria era q ele chegasse ao sitio onde ta o tab ele escrevesse tabulaçao.. como faz o -T...

    pq antes do final do ciclo ele tem um printf("%s", linha");

    esqueci-me de mencionar...
     
    Última edição: 30 de Março de 2009
  4. Mach4_PT

    Mach4_PT Power Member

    Estás a comparar a linha toda com o \t...
    Ele só iria "apitar" quando tivesses apenas uma linha com uma tabulação.
    Tenta o seguinte:

    Código:
    while(!feof(f)) {
        fgets(linha, 256, f);
        linha[strlen(linha)-1] = '\0';
        if(linha[0] == '\t') {
              printf("Tabulacao\n");
        }
    }
    
    edit:
    Isto só funciona para tabs no inicio da linha.
    
     
  5. Tiagans

    Tiagans Power Member


    Yah.. Entretanto antes do if utilizei um for... ou seja:

    Código:
    
    for (i = 0; i < strlen(linha); i++) {
         if(linha[i] == '\t') {
                linha[i] = ... 
         }
    }
    
    
    O problema reside dentro do if... ou seja quando ele encontra o \t que so ocupa um caracter no array da string, como é que posso por varios caracteres?


    cumps
     
  6. Mach4_PT

    Mach4_PT Power Member

    hmm... metes tudo a andar X casas para a direita?
     
  7. Tiagans

    Tiagans Power Member

    O que era suposto era ele ir ao \t e substituir por Tabulacao..

    ou seja se tivesse \t\t Ola

    ele ia por TabulacaoTabulacao Ola

    So que nao sei como substituir o \t por mais q um caracter.. pq se nao ele apaga o resto da string..
     
  8. Mach4_PT

    Mach4_PT Power Member

    Não sei se já há funções para isso nem sei se esta é maneira mais simples mas podes fazer o seguinte:
    Pegas na string até encontrares o \t e copias para uma string diferente. Pegas no que falta e metes em outra string.
    Depois usas o strcat para juntares o "tabulacao" ao final da primeira string e usas novamente para meter o que faltava.

    Isto deve funcionar no entanto não sei até que ponto é pratico.
    Cumps
     
  9. AragTey

    AragTey Power Member

Partilhar esta Página