Esercizio stringhe

di
Anonimizzato16393
il
5 risposte

Esercizio stringhe

Premetto che l'esercizio risulterà molto facile per voi ma a me non riesce comunque ahaha
Devo inserire da tastiera una stringa e avere come output una altra stringa che sia la prima scritta al contrario.
Io ho scritto questo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	char s[40],n;
	int i,j;
	scanf("%[^\n]",s);
	int l=strlen(s);
	char *r;
	r=(char*)malloc(l*sizeof(char));
	j=l-1;
	for (i=0;i<l;i++){
		r[j]=s[i];
		j--;
	}
	printf("%s",r);
	return 0;
}
la cosa strana è che in output dopo aver inserito la stringa mia dia la stringa al contrario più altri simboli o lettere strane tipo:
ciao mondo
odnom oaic&%&%/()

qualcuno mi sa spiegare dove sbaglio e perchè??

5 Risposte

  • Re: Esercizio stringhe

    La cosa strana è che dici che quel codice visualizzi qualcosa ma in realtà non visualizza nulla.
  • Re: Esercizio stringhe

    Eh si scusa sono fuso ahahah era l'es precedente il codice che avevo messo ora l'ho modificato....
    Mi sai rispondere?
  • Re: Esercizio stringhe

    maffo95 ha scritto:


    Mi sai rispondere?
    Ci provo ...

    Non tieni conto che le stringhe sono terminate dal carattere NULL e che devi aggiungerlo alla stringa finale. Quindi, nel tuo codice devi correggere la linea dell'allocazione

    r=(char*)malloc(l*sizeof(char)+1);

    per considerare il carattere in più e dopo il ciclo, prima dell'ultima printf devi aggiungere il terminatore alla fine della stringa, con

    r[l]='\0';
  • Re: Esercizio stringhe

    Grande funziona )))
    grazie mille
  • Re: Esercizio stringhe

    Hai capito dove hai sbagliato? Starai attento ai terminatori delle stringhe?
Devi accedere o registrarti per scrivere nel forum
5 risposte