/** title: Processamento de Strings em C: splitting (aula TP1) ficheiro: ex12.c autor: (TP1) versao de: 2001.05.08 .representação de strings como pointer para caracter .passagem de argumentos na invocao do programa (argc, argv) .armazenamento das strings numa Tabela que e um Array de Pointers .impressao das palavras ordenadas alfabeticamente **/ #include #define true 1 #define false 0 typedef int bool; typedef char str[50]; char *tab2[100]; int split(char *frase, char c) { int conta=0,i; str palavra; while (*frase) /*enquanto nao atingir o fim de frase*/ { i=0; while(*frase!=c) { palavra[i++]=*(frase++); } palavra[i]='\0'; // tab2[conta]=(char *)malloc(strlen(palavra)+1); // strcpy(tab2[conta++],palavra); tab2[conta++]=(char *) strdup(palavra); frase++; } return(conta); } /*----- programa principal -----*/ int main( int argc, char *argv[]) { int i,j,k; str aux; if (argc<3) { printf("Erro, numero de argumentos: %d\n",argc-1); } else { i=split(argv[1],*argv[2]); printf("Foram separadas %d palavras.\n",i); for(j=0;j0){ strcpy(aux,tab2[j]); strcpy(tab2[j],tab2[k]); strcpy(tab2[k],aux);} } } for(j=0;j