PDA

Visualizza la versione completa : C - chi mi sa dire perche sbagliato?


f.domenella
09-12-2003, 15:56
ho scritto questo codice con la funzione, chi mi sa dire perche non va?

main
----------------------

#include <stdio.h>
#include <stdlib.h>
extern char *inverti(char *);

void main()
{
char stringa[30];
printf("\n\nIMMETTI UNA STRINGA: ");
scanf("%s", stringa);
*stringa = inverti(stringa);
printf("stringa invertita --> %s ");
getchar();
}
funzione
-----------------------------
char *inverti(char *str)
{
int i;
char *str_out;
int len, len_2;
len = strlen(str);
len_2= len;
str_out=(char*)malloc(len+1);
for(i=0; i<len; i++, len_2--)
str_out[i] = str[len_2];
str_out[i] = '\0';
return str_out;

}

vi prego help me

iguana13
09-12-2003, 16:45
Forse ho capito... praticamente copia all'inizio della stringa invertita il '\0' finale della stringa originale.

1 minuto e ti posto il codice ;)

iguana13
09-12-2003, 16:55
Ecco il codice corretto, tabulato e commentato.

L'unica differenza che non ho usato un file esterno, e quindi ho usato un prototipo per la funzione.



#include <stdio.h>
#include <stdlib.h>
//Ti ho messo anche <string.h> per strlen()
#include <string.h>
//extern char *inverti(char *);

//prototipo
char *inverti(char *str);

void main()
{
//Contiene la stringa originale
char stringa[30];

//Richiede di immettere una stringa
printf("\n\nIMMETTI UNA STRINGA: ");
//Input della stringa
scanf("%s", stringa);

//Altro errore:
//Io lo ho corretto usando strcpy()
strcpy(stringa,inverti(stringa));

//Output della stringa
//Altro errore: ti sei dimenticata l'argomento della stringa
printf("stringa invertita --> %s ", stringa);
getchar();
}


char *inverti(char *str)
{
//contatore
int i;
//puntatore al risultato della funzione
char *str_out;
int len, len_2;

//Imposta len sulla lunghezza della stringa
len = strlen(str);
//Imposta len_2 su len -1, perch gli array partono da [0]
//...il tuo errore ;)
len_2= len - 1;
//Alloca uno spazio sufficente per contenere la stringa invertita
// + 1 per comprendere il '\0' finale
str_out=(char*)malloc(len+1);

//Ciclo di inversione
for(i=0; i<len; i++, len_2--)
str_out[i] = str[len_2];
//Termina la stringa con uno '\0'
str_out[i] = '\0';
//restituisce la stringa invertita
return str_out;

}



:ciauz: ;) :)

Loading