Eliminazione carattere stringa in c!!

di Drex_Simo1 il
8 risposte
Buongiorno, sono nuovo del forum.
Voglio chiedere a tutti voi un aiuto su un esercizio che mi è stato assegnato dal mio prof universitario.
La consegna è questa: si sviluppi una funzione che date due stringhe s e t elimini da stutti i caratteri presenti in t e ritorni la stringa risultato dell’eliminazione.
Posto pure il codice che ho fatto io ma che a quanto pare ha qualche problema perchè non va...
Grazie in anticipo per le risposte. Buona giornata e buone feste!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *elimina(char *s,char *t) {
    for(int i=0;*s;i++){
        for(int j=0;*t;j++){
            if(*(s+i)==*(t+j)){
                *(s+i)=' ';
            }
        }
    }
    return s;
}
void main() {
    char* string=(char*)malloc(100*sizeof(char));
    char* string1=(char*)malloc(100*sizeof(char));
    gets(string);
    gets(string1);
    printf("%s",elimina(string,string1));
}

8 Risposte

  • Nei due cicli i valori

    *s
    *t

    quando dovrebbero far fermare le for?
  • Dopo aver risolto, avvisa anche il prof che gets() è stata buttata fuori dallo standard C11 (9 anni fa)...
  • oregon ha scritto:


    Nei due cicli i valori

    *s
    *t

    quando dovrebbero far fermare le for?
    ho risolto mettendo *(t+j) e *(s+i), grazie per avermi fatto accorgere dell'errore!!
  • Weierstrass ha scritto:


    Dopo aver risolto, avvisa anche il prof che gets() è stata buttata fuori dallo standard C11 (9 anni fa)...
    Dovrei usare getchar()?
  • No fgets
  • oregon ha scritto:


    No fgets
    Da tre mesi che faccio c e il prof non mi ha mai parlato di fgets()... BOOO
  • Non mi sorprende: c'è gente ancora ferma a 20/30 anni fa, figuriamoci a 9

    Comunque fgets()
    https://www.cplusplus.com/reference/cstdio/fgets
    la puoi usare anche mettendo stdin come terzo argomento (terminale)

    gets() non c'è più dal C11 perché non sicura. Si deve usare fgets() oppure gets_s() (che però è opzionale e quindi potrebbe non essere disponibile per qualche compilatore)
    https://en.cppreference.com/w/c/io/get
  • Weierstrass ha scritto:


    Non mi sorprende: c'è gente ancora ferma a 20/30 anni fa, figuriamoci a 9

    Comunque fgets()
    https://www.cplusplus.com/reference/cstdio/fgets
    la puoi usare anche mettendo stdin come terzo argomento (terminale)

    gets() non c'è più dal C11 perché non sicura. Si deve usare fgets() oppure gets_s() (che però è opzionale e quindi potrebbe non essere disponibile per qualche compilatore)
    https://en.cppreference.com/w/c/io/get
    Grazie mille, non capisco però come possa un professore di università essere indietro di così tanto tempo, assurdo...
Devi accedere o registrarti per scrivere nel forum
8 risposte