Field-level form validation with error pointers in C
C
#include <string.h>
typedef struct { const char *name, *email; int age; } Form;
typedef struct { const char *name, *email, *age; } FieldErrors;
int validate_form(const Form *f, FieldErrors *e) {
int errors = 0;
e->name = e->email = e->age = NULL;
if (!f->name || !*f->name) { e->name = "name is required"; errors++; }
else if (strlen(f->name) > 60) { e->name = "name is too long"; errors++; }
if (!f->email || !strchr(f->email, '@')) { e->email = "invalid email"; errors++; }
if (f->age < 18 || f->age > 130) { e->age = "age must be 18..130"; errors++; }
return errors;
}