Salve a tutti.
Sto facendo un esercizio che data un stringa s, restituisca una nuova stringa costituita dagli ultimi 2 caratteri di s e se la stringa abbia lunghezza inferiore a 2 deve restituire NULL.
Questa è la mia soluzione, ma non funzione correttamente.
Se la stringa è inferiore a 2 mi stampa NULL, quindi la prima parte funziona, mentre se la stringa contiene più di un caratteri mi da dei problemi.
Entra nel ciclo for e anche negli if, in quanto ho fatto una prova inserendoci dei printf.
Ma mi stampa un sempre uno stesso carattere senza senso.
Chi sa darmi una mano?
#include<stdio.h>
#include<string.h>
char* ultime_due (char* s);
int main() {
char* s = "ciao";
char* s1 = ultime_due(s);
if (s1 == NULL)
printf("NULL");
else
printf("%c" , s1);
return 0;
}
char* ultime_due (char* s) {
int i;
char* s1;
int n = strlen (s);
if (n < 2)
return NULL;
for (i = 0; i<n; i++) {
if (i == n-2){
s1[0] = s[i];
}
if (i == n-1) {
s1[1] = s[i];
}
return s1;
}