Área y perímetro de triangulo con struct en C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct Tpunto {
 float x;
 float y;
};

struct Ttriangulo {
 struct Tpunto p1;
 struct Tpunto p2;
 struct Tpunto p3;
 float area;
 float perimetro;
};


int main(int argc, char* argv[]){
 
 struct Ttriangulo triangulo;
 float lado1, lado2, lado3, s;
 
 printf("Introduzca las coordenadas del punto 1:\n");
 scanf("%f %f",&triangulo.p1.x,&triangulo.p1.y);
 printf("Introduzca las coordenadas del punto 2:\n");
 scanf("%f %f",&triangulo.p2.x,&triangulo.p2.y);
 printf("Introduzca las coordenadas del punto 3:\n");
 scanf("%f %f",&triangulo.p3.x,&triangulo.p3.y);
 
 lado1 = sqrt(pow(triangulo.p1.x-triangulo.p2.x,2)+pow(triangulo.p1.y-triangulo.p2.y,2));
 lado2 = sqrt(pow(triangulo.p1.x-triangulo.p3.x,2)+pow(triangulo.p1.y-triangulo.p3.y,2));
 lado3 = sqrt(pow(triangulo.p3.x-triangulo.p2.x,2)+pow(triangulo.p3.y-triangulo.p2.y,2));
 triangulo.perimetro = lado1 + lado2 + lado3;
 s = 1.0/2.0 * triangulo.perimetro;
 triangulo.area = sqrt(s*(s-lado1)*(s-lado2)*(s-lado3));
 
 printf("El perímetro del triángulo es: %f\n",triangulo.perimetro);
 printf("El área del triángulo es: %f\n",triangulo.area);
 return 0;

}