ciao a tutti... vi mostro prima il programma e poi vi dico i problemi:
__________________________________________________ ________________________________
/* Il programma prende in imput da tastiera un testo e lo comprime con sostituzioni come "nn", "xke"
* invece di "non", "perche".. ecc */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * Replace(char *origin, char *old, char *new){
char *ris = (char*)malloc(sizeof(char)*strlen(origin));
char *tmp = (char*)malloc(sizeof(char)*strlen(origin));
ris = strcpy(ris, origin);
char *pos;
while((pos = strstr(ris, old)) != NULL) {
memset(tmp, 0, strlen(tmp));
tmp = strncpy(tmp,ris, pos - ris);
tmp = strcat(tmp, new);
tmp = strcat(tmp, pos + strlen(old));
ris = strcpy(ris, tmp);
}
ris = (char*)realloc(ris, sizeof(char)*strlen(ris));
free(tmp);
free(origin);
return ris;
}
int main(int *argc, char ** argv)
{
printf("\nIl programma comincia qui. Per uscire premere ctrl + c\n \n");
printf("Inserire il testo da convertire e premere invio:\n");
do{
scanf("%s", str);
char *mystring = (char*)malloc(sizeof(char) * strlen(str));
mystring = strcpy(mystring,str);
char *ris = Replace(mystring, "ch", "k");
ris = Replace(ris, "per", "x");
ris = Replace(ris, "come", "cm");
ris = Replace(ris, "questo", "qst");
ris = Replace(ris, "niente", "nnt");
ris = Replace(ris, "non", "nn");
ris = Replace(ris, "oggi", "gg");
ris = Replace(ris, "uno", "1");
ris = Replace(ris, "sono", "sn");
ris = Replace(ris, "tutto", "tt");
ris = Replace(ris, "tutta", "tt");
ris = Replace(ris, "cosa", "cs");
ris = Replace(ris, "una", "1");
ris = Replace(ris, "comunque", "cmq");
ris = Replace(ris, "bene", "bn");
ris = Replace(ris, "sei", "6");
ris = Replace(ris, "destra", "dx");
ris = Replace(ris, "sinistra", "sx");
ris = Replace(ris, "messaggio", "msg");
ris = Replace(ris, "numero", "num");
ris = Replace(ris, "dopo", "dp");
ris = Replace(ris, "rispondi", "risp");
ris = Replace(ris, "risponde", "risp");
printf("%s ",ris);
}while(str != "\n");
return 0;
}
__________________________________________________ ___________________________________
--il programma converte un testo inserito da tastiera in "linguaggio compresso" .. ora devo prendere il testo, salvarlo su file e poi rileggerlo ed usarlo nel programma (lo sò, è abbastanza inutile visto che si può fare ammeno di salvarlo... ma sono abbastanza pignoli su questo ... <.<)
comunque, il problema stà nel leggere il testo, la %s mi legge solamente una parola, anche nella versione di sopra ho dovuto usare un ciclo per stamparlo tutto...
come posso fare a prendere in considerazione l'intero testo e non parola per parola?
è quasi un mese che ci sbatto la testa.... help