title: Caesar Cipher C++ (using char pointer and shift as arguments)
body: <p>I'm looking to make a method like so (which encrypts a message using Caesar Cipher, entered by the user and displays it):</p>
  
  <pre><code>void encrypt(char *message, int shift);
  </code></pre>
  
  <p>My code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;conio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  #include &lt;ctype.h&gt;
  #include &lt;string.h&gt;
  
  char num(char c)
  {
      const char upper_alph[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
      const char lower_alph[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  
      if(isupper(c)) {
          for(int i = 0; i &lt; 26; i++)
              if(upper_alph[i] == c)
                  return i;
      } else {
          for(int i = 0; i &lt; 26; i++)
              if(lower_alph[i] == c)
                  return i;
      }
      return 0;
  }
  
  void encrypt(char *message, int shift)
  {
      int i = 0;
      const char upper_alph[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
      const char lower_alph[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
      while(message[i] != NULL)
      {
          if(isalpha(message[i]))
          {
              if(isupper(message[i])) {
                  printf("%c", upper_alph[(num(message[i])+shift)%26]);
              } else {
                  printf("%c", lower_alph[(num(message[i])+shift)%26]);
              }
          } else {
              printf("%c", message[i]);
          }
              i++;
      }
  }
  
  #define OK       0
  #define NO_INPUT 1
  #define TOO_LONG 2
  
  static int getLine (char *prmpt, char *buff, size_t sz) {
      int ch, extra;
  
      // Get line with buffer overrun protection.
      if (prmpt != NULL) {
          printf ("%s", prmpt);
          fflush (stdout);
      }
      if (fgets (buff, sz, stdin) == NULL)
          return NO_INPUT;
  
      // If it was too long, there'll be no newline. In that case, we flush
      // to end of line so that excess doesn't affect the next call.
      if (buff[strlen(buff)-1] != '\n') {
          extra = 0;
          while (((ch = getchar()) != '\n') &amp;&amp; (ch != EOF))
              extra = 1;
          return (extra == 1) ? TOO_LONG : OK;
      }
  
      // Otherwise remove newline and give string back to caller.
      buff[strlen(buff)-1] = '\0';
      return OK;
  }
  
  int main()
  {
      //reverse();
      //printf("\n\n");
      int rc;
      char mes[1024];
      int sh = 0;
      rc = getLine ("Enter message to be encrypted: ", mes, sizeof(mes));
      if (rc == NO_INPUT) {
          // Extra NL since my system doesn't output that on EOF.
          printf ("\nNo input\n");
          return 1;
      }
      if (rc == TOO_LONG) {
          printf ("Input too long [%s]\n", mes);
          return 1;
      }
      encrypt(mes, 1);
      fflush(stdin);
      getchar();
      return 0;
  }
  </code></pre>
  
  <p>Thank you to anyone who helps or tries to help.</p>
  
  <p>:)</p>
  
  <p>EDIT: Made many corrections.  Still not working :/</p>
  
  <p>EDIT2: Made a lot more corrections.  Getting an access violation @ "while(*message != '\0')"</p>
  
  <p>EDIT3: Updated the code above to the working code.  Thank you everyone for your help!</p>