• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

n_digo

Duvidas num codigo e na funçao trim implementada

5 mensagens neste tópico

Hi, alguem me consegue explicar para que serve a funçao trim aqui implementada ??

#include <stdio.h>
#include <string.h>
#include <ctype.h>

void trim(char* name) {

  char* p = name ;

  size_t n ;

  while (isspace(*p))

    ++p ;

  if ((n = strlen(p)) > 0)

    while (isspace(p[n-1]))

      --n ;

  ((char*)memmove(name, p, n))[n] = '0' ;

}

int main(){
char * s;
gets (s);
trim(s);
}

e como imprimo a saida de s ?? ja exprimentei com um printf mas dame erro... thx

:bye2: ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função trim está a remover todos os espaços em branco existentes no início e no fim do vector de caracteres.

Um printf seria suficiente, mas que erro teu deu?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No inicio e no fim só ? no meio nao ?

qual é a diferença ? para este ??

void remove_espacos (char *s){

int i;

int j = 0;

char *aux;

aux = (char *)malloc(strlen(s));

for (i = 0; i<strlen(s); i++){

	if ((s[i] != ' ') && (s[i] != '\n') && (s[i] != '\r')){

		aux[j] = s[i];

		j++;

	}

}

aux[j] = '\0';

strcpy(s,aux);

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O primeiro código não remove espaços no meio, aliás, a função "trim" não deve remover espaços no meio.

No que toca a diferenças, o segundo código não remove todos os "espaços em branco", a função isspace identifica espaço em branco definidos por várias situações, como por exemplo um \t que falta no segundo caso. Além disso, o segundo código usa um vector auxiliar para ir colocando os caracteres que não são espaços (' '), mudanças de linha (\n) ou "carriage return" (\r).

Um exemplo, se tivermos a frase: "    existem espaços antes e no meio destas palavras. Adicionei 5 espaços no fim da frase.    ", o resultado do primeiro código será algo do género: "existem espaços antes e no meio destas palavras. Adicionei 5 espaços no fim da frase.". Ao passo que o resultado do segundo código será "existemespaçosantesenomeiodestaspalavras.Adicionei5espaçosnofimdafrase."

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora