#include
#include
#include
#include
#include
#include
#define MAX_SIZE 1024#define SIZE 15typedef struct ElencoTelefonico{char name[SIZE];
char surname[SIZE];
char numeroTelefono[SIZE];
}ElencoTelefonico;void verificaInput(ElencoTelefonico record, int flag);
int main(int argc, char**argv) {
ElencoTelefonico record;
verificaInput(record,1);
verificaInput(record,2);
verificaInput(record,3);
printf("Nome: %s",record.name);
printf("Cognome: %s",record.surname);
printf("Numero: %s", record.numeroTelefono);
return 1;}void verificaInput(ElencoTelefonico record, int flag) {
char temp[MAX_SIZE];
memset(temp,0,MAX_SIZE);
int testscanf;
if(flag == 1) {
printf("nInserisci il nome: ");
}if(flag == 2) {
printf("nInserisci il cognome: ");
}if(flag == 3) {
printf("nInserisci il numero di telefono: ");
} do {testscanf = scanf("%s", temp);
while(testscanf == -1) {
if(errno != EINTR) {
printf("nErrore scanfn");
exit(0);
} else {memset(temp,0,MAX_SIZE);
testscanf = scanf("%s", temp);
} }if(testscanf == 0 || strlen(temp) > 15){
while(scanf("%*[^n]") == -1){
if(errno != EINTR){
printf("nErrore scanfn");
exit(0);
} }memset(temp,0,MAX_SIZE);
printf("nErrore, lunghezza massima pari a 15 caratteri!n");
if(flag == 1) {
printf("nInserisci il nome: ");
}if(flag == 2) {
printf("nInserisci il cognome: ");
}if(flag == 3) {
printf("nInserisci il numero di telefono: ");
} }}while(testscanf == 0 || strlen(temp) > 15);
if(flag == 1) {
strcpy(record.name,temp);
}if(flag == 2) {
strcpy(record.surname,temp);
}if(flag == 3) {
strcpy(record.numeroTelefono,temp);
}return;
}#include < unistd.h >
#include < string.h >
#include < stdio.h >
#include < stdlib.h >
#include < errno.h >
#include < fcntl.h >
#define SIZE 15typedef struct ElencoTelefonico{char name[SIZE+1];
char surname[SIZE+1];
char numeroTelefono[SIZE+1];
}ElencoTelefonico;void verificaInput(ElencoTelefonico record);
int main(int argc, char**argv) {
ElencoTelefonico record;
verificaInput(record);
printf("Nome: %s",record.name);
printf("Cognome: %s",record.surname);
printf("Numero: %s",record.numeroTelefono);
return 1;}void verificaInput(ElencoTelefonico record) {
char name_temp[SIZE+1];
char surname_temp[SIZE+1];
char numero_temp[SIZE+1];
//int testscanf;
do {printf("nInserisci il nome: ");
scanf("%s", name_temp);
printf("nInserisci il cognome: ");
scanf("%s",surname_temp);
printf("nInserisci il numero di telefono: ");
scanf("%s",numero_temp);
if(strlen(name_temp) > SIZE) {
printf("nNome troppo lungo!n");
}if(strlen(surname_temp) > SIZE) {
printf("nCognome troppo lungo!n");
}if(strlen(numero_temp) > SIZE) {
printf("nNumero troppo lungo!n");
}}while((strlen(name_temp) > SIZE) || (strlen(surname_temp) > SIZE) || (strlen(numero_temp) > SIZE));
strcpy(record.name,name_temp);
strcpy(record.surname,surname_temp);
strcpy(record.numeroTelefono,numero_temp);
return;
}#include <stdio.h>#include <string.h>#define SIZE 15#define TRUE 1#define FALSE 0typedef struct ElencoTelefonico {
char name[SIZE+1];
char surname[SIZE+1];
char numeroTelefono[SIZE+1];
} ElencoTelefonico;
int main()
{ ElencoTelefonico record;int inputAccettato = FALSE;
do {printf("\nInserisci il nome: ");
inputAccettato = verificaInput(record.name);
} while (!inputAccettato);
inputAccettato = FALSE;
do {printf("\nInserisci il cognome: ");
inputAccettato = verificaInput(record.surname);
} while (!inputAccettato);
inputAccettato = FALSE;
do {printf("\nInserisci il numero di telefono: ");
inputAccettato = verificaInput(record.numeroTelefono);
} while (!inputAccettato);
printf("\nNome: %s", record.name);
printf("\nCognome: %s",record.surname);
printf("\nNumero: %s",record.numeroTelefono);
}
int verificaInput(char * input)
{int i = 0;
while (TRUE)
{char c = getchar();
if (c == '\n')
{input[i++] = '\0';
return TRUE;
}if (i >= SIZE)
{printf("\nErrore, lunghezza massima pari a %d caratteri!", SIZE);
while (getchar() != '\n'); // consuma i rimanenti caratteri nello stdin ("flush")
return FALSE;
}input[i++] = c;
}}int verificaInput(char * input)
{char temp[SIZE+2];
scanf("%16s", temp);
if(strlen(temp) > SIZE)
{printf("\nErrore, lunghezza massima pari a %d caratteri!", SIZE);
scanf("%*[^\n]s"); // consuma i rimanenti caratteri nello stdin ("flush")
return FALSE;
}strcpy(input, temp);
return TRUE;
}char format[5];
sprintf(format, "%%%ds", SIZE + 1);
scanf(format, temp);
char format[5];
sprintf(format, "%%%ds", SIZE + 1);
scanf(format, temp);
char format[5];
sprintf(format, "%%%ds", SIZE + 1);
scanf(format, temp);
ElencoTelefonico* record = (ElencoTelefonico*)malloc(sizeof(ElencoTelefonico));
int inputAccettato = FALSE;
do {printf("nInserisci il nome: ");
inputAccettato = verificaInput(record->name);
}while(!inputAccettato);
inputAccettato = FALSE;
do {printf("nInserisci il cognome: ");
inputAccettato = verificaInput(record->surname);
}while(!inputAccettato);
inputAccettato = FALSE;
do {printf("nInserisci il numero di telefono: ");
inputAccettato = verificaInput(record->numeroTelefono);
}while(!inputAccettato);
int verificaInput(char* input) {
int i = 0;while(TRUE) {
char c = getchar();
if(c == 'n') {
input[i++] = '';
return TRUE;
}if(i >= SIZE) {
printf("nErrore, lunghezza massima pari a %d caratteri", SIZE);
while(getchar() != 'n'); //consuma i rimanenti caratteri nello stdin ("flush")
return FALSE;
}input[i++] = c;
}}ElencoTelefonico* record = (ElencoTelefonico*)malloc(sizeof(ElencoTelefonico));
int inputAccettato = FALSE;
do {printf("nInserisci il nome: ");
inputAccettato = verificaInput(record->name);
}while(!inputAccettato);
inputAccettato = FALSE;
do {printf("nInserisci il cognome: ");
inputAccettato = verificaInput(record->surname);
}while(!inputAccettato);
inputAccettato = FALSE;
do {printf("nInserisci il numero di telefono: ");
inputAccettato = verificaInput(record->numeroTelefono);
}while(!inputAccettato);
int verificaInput(char* input) {
int i = 0;while(TRUE) {
char c = getchar();
if(c == 'n') {
input[i++] = '�';
return TRUE;
}if(i >= SIZE) {
printf("nErrore, lunghezza massima pari a %d caratteri", SIZE);
while(getchar() != 'n'); //consuma i rimanenti caratteri nello stdin ("flush")
return FALSE;
}input[i++] = c;
}}
