diff --git a/assign1/c-programs/employee.c b/assign1/c-programs/employee.c new file mode 100644 index 0000000..70c3465 --- /dev/null +++ b/assign1/c-programs/employee.c @@ -0,0 +1,34 @@ +#include +#include + +int main() { + // Character array to store name + // In C, strings are arrays of characters ending with '\0' + char name[50]; + int employee_id; + float hours_worked; + + printf("OwlTech Employee Registration\n"); + printf("=============================\n"); + + printf("Enter your name: "); + // fgets reads a line including spaces + // stdin means "standard input" (keyboard) + fgets(name, sizeof(name), stdin); + + // Remove newline that fgets includes + name[strcspn(name, "\n")] = '\0'; + + printf("Enter your employee ID: "); + // & means "address of" - scanf needs to know where to store the value + scanf("%d", &employee_id); + printf("Hours worked this week: "); + scanf("%f", &hours_worked); + + printf("\nEmployee Summary:\n"); + printf("Name: %s\n", name); // %s for string + printf("ID: %d\n", employee_id); // %d for integer + printf("Hours: %.2f\n", hours_worked); // %.2f for float with 2 decimals + + return 0; +} diff --git a/assign1/default.nix b/assign1/default.nix index e9e368b..f1cd2ca 100644 --- a/assign1/default.nix +++ b/assign1/default.nix @@ -1,12 +1,21 @@ -{ - assign1-hello = { stdenv }: +let + basic-c = name: { stdenv }: stdenv.mkDerivation { - name = "hello"; + inherit name; src = ./.; - buildPhase = "gcc c-programs/hello.c -o hello"; + buildPhase = '' + runHook preBuild + gcc c-programs/${name}.c -o ${name} + runHook postBuild + ''; installPhase = '' + runHook preInstall mkdir -p $out/bin - install hello $out/bin/hello + install ${name} $out/bin/ + runHook postInstall ''; }; +in { + assign1-hello = basic-c "hello"; + assign1-employee = basic-c "employee"; }