salve a tutti sto scrivendo un programma che data in input una data 17/08/2017 la converta in 17 agosto 2017.
Il problema è che per i mesi di lunghezza 8(febbraio, noevmbre, dicembre) alla fine aggiunge un '. ES:
Inserire la data nel formato gg/mm/aaaa
11/12/2017
11 dicembre 2017`
L'altro problema è che rimangono nella stringa carattere vecchi. ES:
Inserire la data nel formato gg/mm/aaaa
jhhjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
La data deve essere nel formato gg/mm/aaaa
Inserire la data nel formato gg/mm/aaaa
11/09/2017
11 settembre 2017jjjjjjjjjjjjjjjjjjjjjjjjj
Potrei aver già postato questa domanda e mi scuso perchè sono nuovo. spero di non aver infranto qualche regola, il codice è il seguente:
#include <stdlib.h> #include <stdio.h> #include <string.h> #define DIM 30 #define FALSE 0 #define TRUE 1 void inputDato(char*); void conversione(char*, int); int main() { char data[DIM+1]; inputDato(data); conversione(data, DIM); system("pause"); return 0; } void inputDato(char*stringa){ int i=0, j=TRUE, l=FALSE; do { printf("Inserire la data nel formato gg/mm/aaaa\n"); gets(stringa); for (i=0; i<strlen(stringa); i++) { if (stringa[i] != '0' && stringa[i] != '1' && stringa[i] != '2' && stringa[i] != '3' && stringa[i] != '4' && stringa[i] != '5' && stringa[i] != '6' && stringa[i] != '7' && stringa[i] != '8' && stringa[i] != '9' && i != 2 && i != 5 && i != 3) { printf("La data deve essere nel formato gg/mm/aaaa\n"); j = TRUE; break; } // controllo / else if ((i == 2 || i == 5) && stringa[i] == '/') j = FALSE; // controllo mese else if (i == 3) { if (stringa[i] == '0') j = FALSE; else if (stringa[i] == '1' && (stringa[4] == '1' || stringa[4] == '2' || stringa[4] == '0')) j = FALSE; else { j = TRUE; printf("Mese inserito non valido\n"); break; } } //controllo giorno else if (i ==0){ if (stringa[i] == '1' || stringa[i] == '2') j = FALSE; else if (stringa[i] == '3' && stringa[i+1] < '2') j = FALSE; else{ j = TRUE; printf("Giorno inserito non valido\n"); break; } } else j = FALSE; } } while(j); } void conversione(char*stringa, int dim){ int i; char mese[11]; stringa[2]= ' '; stringa[5]= ' '; if (stringa[3] == '0' && stringa[4] == '1') strcpy(mese, "gennaio"); else if (stringa[3] == '0' && stringa[4] == '2') strcpy(mese, "febbraio"); else if (stringa[3] == '0' && stringa[4] == '3') strcpy(mese, "marzo"); else if (stringa[3] == '0' && stringa[4] == '4') strcpy(mese, "aprile"); else if (stringa[3] == '0' && stringa[4] == '5') strcpy(mese, "maggio"); else if (stringa[3] == '0' && stringa[4] == '6') strcpy(mese, "giugno"); else if (stringa[3] == '0' && stringa[4] == '7') strcpy(mese, "luglio"); else if (stringa[3] == '0' && stringa[4] == '8') strcpy(mese, "agosto"); else if (stringa[3] == '0' && stringa[4] == '9') strcpy(mese, "settembre"); else if (stringa[3] == '1' && stringa[4] == '0') strcpy(mese, "ottobre"); else if (stringa[3] == '1' && stringa[4] == '1') strcpy(mese, "novembre"); else if (stringa[3] == '1' && stringa[4] == '2') strcpy(mese, "dicembre"); for (i=0; i<5; i++) stringa[strlen(mese)+7-i] = stringa[9-i]; for (i=0; i<strlen(mese); i++) stringa[3+i] = mese[i]; printf("%s\n", stringa); }