diff --git a/C/main.c b/C/main.c
index 4e2abc6e83b5ce7ce7ecdde088a48e3e3b74dc6f..8e2ffad33cf77fb9f337cec6d9c99b76936313fc 100644
--- a/C/main.c
+++ b/C/main.c
@@ -38,7 +38,7 @@ int shared_counter; // Shared counter for threads to modify. Used to test that l
  */
 int main(int argc, char* argv[]) {
     // Declare variables.
-    char* user_input = calloc(2, sizeof(char));
+    char* user_input = calloc(50, sizeof(char));
 
     printf("Initializing program.\n");
 
@@ -46,13 +46,27 @@ int main(int argc, char* argv[]) {
     printf("Choose an option:\n");
     printf("   1) Unsafe Threading.\n");
     printf("   2) Safe Threading.\n");
-    fgets(user_input, 2, stdin);
+    fgets(user_input, 50, stdin);
 
     // Check user input.
     if (user_input[0] == '1') {
         run_unsafe_threads();
     } else if (user_input[0] == '2') {
-        run_safe_threads();
+        printf("Run safe threading on loop?\n");
+        free(user_input);
+        user_input = calloc(50, sizeof(char));
+        fgets(user_input, 50, stdin);
+
+        if (user_input[0] == 'Y' || user_input[0] == 'y') {
+            // Run on loop until user cancels.
+            printf("\n\nProgram will loop until cancelled with ctrl+c.\n\n");
+            while (1) {
+                run_safe_threads();
+            }
+        } else{
+            run_safe_threads();
+        }
+
     } else {
         printf("Unknown input \"%s\".\n", user_input);
     }
@@ -77,6 +91,7 @@ void run_unsafe_threads() {
     int thread_b_result;
 
     printf("Starting threads...\n\n");
+    shared_counter = 0;
 
     // Create threads and threading values.
     thread_pool = calloc(2, sizeof(pthread_t));
@@ -108,6 +123,7 @@ void run_safe_threads() {
     int thread_b_result;
 
     printf("Starting threads...\n\n");
+    shared_counter = 0;
 
     // Create threads and threading values.
     thread_pool = calloc(2, sizeof(pthread_t));
diff --git a/documents/c_references.md b/documents/c_references.md
index 5d5cce457d37afab827a52468584f135e80e36b0..8e326234c7d981c1b6a0218e0f054c4fbbd2ace7 100644
--- a/documents/c_references.md
+++ b/documents/c_references.md
@@ -22,5 +22,6 @@ All references to external logic. Includes anything from stack overflow links to
 * <https://stackoverflow.com/questions/17846212/generate-a-random-number-between-1-and-10-in-c>
 
 ### Getting User Input in C
-* <https://stackoverflow.com/questions/22065675/get-text-from-user-input-using-c>
-* <https://stackoverflow.com/a/10575525>
+* General Input Info - <https://stackoverflow.com/questions/22065675/get-text-from-user-input-using-c>
+* Info on fgets - <https://stackoverflow.com/a/10575525>
+* Fgets seeming inconsistent - <https://stackoverflow.com/a/38768067>