Salve gente

Nel codice che sto cercando di sviluppare devo inserire dei dati da terminali e successivamente salvarli in una struct. Prima di fare ciò però devo controllare che tali dati non siano più lunghi di 15 caratteri. Se superano i 15 caratteri l'input viene nuovamente richiesto a loop.
Ho buttato giù questo codice, che non si comporta a dovere. Basta compilare ed avviare provando a scrivere dati più lunghi di 15 caratteri per rendersene facilmente conto

codice:
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>

#define MAX_SIZE 1024
#define SIZE 15

typedef 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 scanf\n");
                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 scanf\n");
                    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;
}
Cosa sbaglio? Grazie