title: CS50 PSET2 CAESAR clang: error: linker command failed with exit code 1
body: <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;cs50.h&gt;
  #include &lt;string.h&gt;
  #include &lt;ctype.h&gt;
  
  int main (int argc, string argv[])
  {
  if (argc != 2)
  {
      printf ("Usage: ./caesar k\n");
      return 1;
  }
  int k = atoi (argv[1]);
  
  printf ("plaintext: ");
  string p = get_string ();
  
  printf ("ciphertext: ");
  
  for (int i = 0, n = strlen (p); i &lt; n; i++)
  {
      if (isupper (p[i]))
      {
          int alpha = p[i];
          alpha = alpha - 65;
          alpha = (alpha + k) % 26;
  
          char cipher = alpha + 65 ;
  
          printf ("%c", cipher);
      }  
      else if (islower (p[i]))
      {
          int alpha = p[i];
          alpha = alpha - 97;
          alpha = (alpha + k) % 26;
  
          char cipher = alpha + 97 ;
  
          printf ("%c", cipher);
      }
      else
      {
          printf ("%c", p[i]);
      }
  }
  printf ("\n");
  return 0;
  }
  </code></pre>
  
  <p>The program works perfectly without 'return 0' at the end but the cs50 pset 
  specifically states that the program should exit by returning 0 from main. What 
  have I done wrong?</p>