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

Hipnoted

[C] Separar as palavras duma string por vírgula

7 mensagens neste tópico

Há uns dias atrás um utilizador (Format_C) pediu-nos ajuda de como pôr todas as palavras duma string separadas por uma vírgula. Como houve mudança de server, esse tópico perdeu-se mas eu vou voltar a pôr aqui o código:

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

int main()
{
    char *token;
    char linha[100];
    char buffer[100];
    int len;

    strcpy(buffer,"");
    printf("\n\nIntroduza a linha: ");
    fgets(linha, 100, stdin);

    token = strtok(linha, " ");

    while(token != NULL)
    {
        strcat(buffer,token);
        strcat(buffer,",");
        token = strtok(NULL, " ");
    }
    len = strlen(buffer);
    buffer[len-1] = '\0';
    printf("%s\n\n",buffer);
    return 0;
}

Assim, inserimos numa linha algumas palavras separadas por um espaço cada uma. O resultado do programa é essas mesmas palavras mas agora separadas por uma vírgula.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

int main() {
char s[1000];
int i;
fgets(s,1000,stdin);
for (i=0;s[i];i++) if (s[i]==' ') s[i]=',';
printf("%s",s);
return 0;
}

Não será mais simples?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será mais simples?

se não me engano o objectivo do problema original era criar uma lista com as palavras. o código do Hipnoted pode ser facilmente alterado para fazer isso. já o teu não terá tanta utilidade (deste ponto de vista).

PS: já deixavam de usar o 'strtok'...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será mais simples?

Talvez, mas tudo depende do que queiras fazer... :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será mais simples?

se não me engano o objectivo do problema original era criar uma lista com as palavras. o código do Hipnoted pode ser facilmente alterado para fazer isso. já o teu não terá tanta utilidade (deste ponto de vista).

PS: já deixavam de usar o 'strtok'...

Não sei o que era pedido, mas o meu código faz exactamente o mesmo que o dele. Transforma todos os espaços de uma string em vírgulas. Se queres argumentar que o dele é mais facilmente alterável, no meu tens que alterar um caracter e no dele dois.

Mas não quero entrar numa discussão. Encontrei o tópico por acaso e lembrei-me de postar isso (porque achei o método demasiado rabuscado para o final obtido)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o código do Hipnoted ensina a usar a função 'strtok', o que faz com que seja útil em muitas situações. o teu adapta-se a um conjunto muito restrito de casos.

é obvio que o teu é mais simples, mais "seguro" e mais eficiente, mas parece-me que o outro vai ser útil a mais pessoas (parece-me que esta sala existe para colocar código que seja útil em várias situações e não que resolva um problema em particular), como tal embora o código do Hipnoted não seja tão simples quanto podia ser, há motivos para justificar esta opção.

e já agora, o teu código não faz exactamente o mesmo que o dele!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exactamente, o teu é menos extenso e mais simples para quem já sabe algo de programação.

O código que eu postei ajuda a perceber passo a passo a resolução do problema, pois para um iniciante (na altura quem pediu isto era um iniciante em C) convém perceber como é feito. E também fica a aprender a usar outras funções...

Mas não leves a mal estes comentários Warrior... Eu se tivesse de usar código deste para alguma coisa optaria pelo teu... :cheesygrin:

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