Resposta de
code0 em 18/05/2007 - 19:25h:
* code0 usa Slackware
* code0 tem conceito: 7.8




No exemplo "viva o linux" o delimitador de partes utilizado e o espaco.
Escaneie a string de entrada transferindo para a variavel q vc quer ate encontrar o espaco...
// assumindo str[] contendo "viva o linux"
char *tmp;
char var1[32], var2[32], var3[32];
tmp=str;
while(*tmp!=' ') {
var1[tmp-str]=*tmp;
tmp++;
}
var1[tmp-str]='{RESPOSTA}';
printf("Parte 1 -> %s\n",var1);
Ao final do loop var1 deve conter "viva"
Resposta de
removido em 19/05/2007 - 01:37h:
* removido usa Nenhuma
* removido tem conceito: nenhum voto.
pequisei por funções que façam isso automaticamente e não encontrei então fiz um codigo de exemplo o que você deve fazer é ler o texto de stdin e depois interpreta-lo caractere a caractere utilizando como quebra os separadores fiz um exemplo para voce entender melhor:
http://www.0xnerd.com/separador.c
se tiver alguma duvida pode mandar um email!
Resposta de
aazevedo1984 em 24/05/2007 - 11:11h:
* aazevedo1984 usa Slackware
* aazevedo1984 tem conceito: nenhum voto.
Obrigado pelas dicas, foram de grande ajuda, mas depois q fiz o trabalho achei uma funcao chamada sscanf q deixa eu passar uma string e dividi-las pelo espaco, por exemplo
char frase[20] = "viva o linux";
char s1[10],s2[10],s3[10];
sscanf(frase,"%s%s%s",s1,s2,s3);
Aq funcionou, mas ainda estou quebrado cabeca com novos problemas, procurei livros do tipo "biblia", mas nao achei, so encontrei livros basicos e falando muito pouco, nao ha nada mais completo em livros? se tiver vcs sabem o nome e onde encontra-los?
Resposta de
paulopugin em 30/10/2008 - 21:34h:
* paulopugin usa Debian
* paulopugin tem conceito: nenhum voto.
estou com o mesmo problema,
você conseguiu resolver??
Resposta de
code0 em 31/10/2008 - 11:48h:
* code0 usa Slackware
* code0 tem conceito: 7.8




Vejamos.....
#include <stdio.h>
#define STR "VIVA O LINUX{RESPOSTA}" // 13 chars
char * my_instr(char *from,char *to,char delim);
int main(void) {
char var[32];
char v1[32];
char v2[32];
char v3[32];
char * ptr;
sprintf(var,"%s", STR);
ptr=my_instr(var,v1,' ');
ptr=my_instr(ptr,v2,' ');
ptr=my_instr(ptr,v3,' ');
fprintf(stdout,"String %s\n",STR);
fprintf(stdout,"Parte 1 %s\n",v1);
fprintf(stdout,"Parte 2 %s\n",v2);
fprintf(stdout,"Parte 3 %s\n",v3);
}
// char * my_instr(char *from,char *to,char delim)
// Copia string de from para to ate encontrar delim
// Nao copia delim
// Retorna endereco em from, proximo byte apos delim
char * my_instr(char *from,char *to,char delim) {
while(*from!=delim && !from!='{RESPOSTA}') {
*to=*from
from++; to++;
}
return from+1;
}
Eu nao testei, provavelmente deve ser necessario efetuar algum ajuste. Mas basicamente e isto.
Resposta de
removido em 08/02/2009 - 20:39h:
* removido usa Nenhuma
* removido tem conceito: nenhum voto.
nossa senhora, cada um fez um malabarismo diferente
int main(int argc,char *argv[]) {
int x;
for (x=1;x<argc;x++) {
printf("string %i -> %s\n",argc,argv[x]);
}
}
$ ./c viva o linux
string 1 -> viva
string 2 -> o
string 3 -> linux
c já é difícil pra que complicar mais?