Questo programma (corretto e funzionante) prende una frase (preimpostata) e restituisce in output la frase senza le s.
Codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * cancella(char *str, char c)
{
int i, j=0;
char *app;
app=(char*) malloc(strlen(str)+1);
for (i=0; i<= strlen(str); ++i)
if (str[i]!=c)
app[j++]=str[i];
str=(char*) malloc(strlen(app)+1);
strcpy(str, app);
free(app);
return str;
}
main()
{
char *s="sschissa se ss s sfunzionassssss";
printf("La frase da esaminare è: %s\n", s);
printf("%s\n", cancella(s, 's'));
}
Qui ho provato a cambiare il main per permettere di personalizzare la frase prendendola in input da tastiera, ma non riesco a trovare il bandolo della matassa perchè va sempre in segmentation fault. Dove sbaglio?
Codice:
main()
{
char x[2], y[100];
char *a="s", *b="n";
char *s="sschissa se ss s sfunzionassssss";
printf("La frase da esaminare è: %s\n", s);
printf("Vuoi cambiare la frase? s/n\n");
scanf("%s", x);
if (strcmp(x, b)==0)
printf("%s\n", cancella(s, 's'));
else if (strcmp(x, a)==0)
{
printf("Scrivi la nuova frase:\n");
gets(y);
printf("%s\n", cancella(y, 's'));
}
else
printf("Opzione non valida\n");
}
EDIT:
ho corretto un errore, ma continua a non funzionare...