Programma codifica stringa

di il
3 risposte

Programma codifica stringa

Ciao a tutti.. Sto facendo questo esercizio... Il programma viene compilato ma poi si blocca all'esecuzione.. qualcuno riesce a dirmi perchè??

Scrivere una funzione che, presi come parametri una
stringa (sotto forma di arraydi caratteri) ed un intero d,
restituisca la stringa opportunamente codificata.
La codifica è ottenuta sostituendo ciascun carattere con
il carattere che ha codice pari al codice del carattere da
sostituire incrementato di d.
Esempio
"ciao" con d=3diventerà "fldr"

#include <stdio.h>
#include <string.h>

int codifica(const char *str, int d) {
char *strRis;
char c;
int ci;
int N= strlen(str);
int i;
for (i = 0; i < N; i++)
strRis = d+ str;
strRis[N]='\0'; // terminatore di stringa
printf("La stringa codificato è %s", strRis);
}

int main () {
int N;
char risultato;
char str[N];
int d;
printf("Inserisci una parola:\n");
scanf("%s", str);
printf("Inserisci il numero intero");
scanf("%d", &d);
printf("Sto codificando...\n");
codifica(str, d);
}

3 Risposte

  • Re: Programma codifica stringa

    Salve
    Questo si chiama cifrario a sostituzione (precisamente il tuo è un cifrario di Cesare) . Intanto prima di poter utilizzare strRis devi inizializzarla con la funzione malloc, puoi anche eliminare le variabili c e ci visto che tanto non le utilizzi e poi alla fine della funzione codifica (e nel main) non ritorni nessun valore.
  • Re: Programma codifica stringa

    Innanzi tutto hai fatto un errore gravissimo, ovvero non hai dato una dimensione a str nel main, quell'N non è definito e avrai poi degli errori in fase di compilazione o a runtime.
    devi quindi o dare un valore ad N (per esempio facendo int N = 50;), oppure dare una dimensione tu alla stringa (per esempio facendo char str[50];).
    oppure, una cosa ancora migliore, sarebbe fare una define che contiene la dimensione della stringa.
    dopo gli include, inserisci #define size 50 (senza inserire il punto e virgola alla fine, mi raccomando), dopodiché dichiari nel main char str[size];.

    nella seconda funzione, se non sai cosa sia la malloc citata da Wolt, potresti dichiarare char strRis[strlen(str)] per risolvere il problema.
  • Re: Programma codifica stringa

    Grazie mille. I vostri consigli mi sono stati molto utili! Fantastico questo forum!
Devi accedere o registrarti per scrivere nel forum
3 risposte