[C] Separar as palavras duma string por vírgula - Snippets / Armazém de Código - Portugal-a-Programar
[C] Separar as palavras duma string por vírgula
Por Hipnoted, 25 de Setembro de 2006 em Snippets / Armazém de Código
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:
strcpy(buffer,"");
printf("\n\nIntroduza a linha: ");
fgets(linha, 100, stdin);
token = strtok(linha, " ");
strcat(buffer,token);
strcat(buffer,",");
printf("%s\n\n",buffer);
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.
fgets(s,1000,stdin);
for (i=0;s[i];i++) if (s[i]==' ') s[i]=',';
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'...
Talvez, mas tudo depende do que queiras fazer...
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)
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!!
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...