Verificar se existe Tabulaçao em C

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:
Estás a usar plicas no \t. Tens de usar aspas, porque plicas delimitam caracteres, enquanto que aspas delimitam strings.

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:
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.
 
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.


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
 
hmm... metes tudo a andar X casas para a direita?

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..
 
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
 
Back
Topo