Hey guys I am working on implementing a simple cryptography program called Caesar. I got this program to work perfectly when I was writing a function to handle the cryptography and just declaring the string that I wanted to encrypt and the integer I wanted to move the letters by to encrypt it. maybe you can help me out and tell me what I am doing wrong here. I am just trying to get the user to enter the key into main and then be prompted for the string to encrypt.

I ended up with a segmentation fault.. I have absolutely no idea what I am looking at but when I ran GDP I get this

#0 0x001bd283 in ____strtol_l_internal (nptr=0x0, endptr=0x0, base=10, group=0,
loc=0x3123a0) at strtol_l.c:298..


Anyways here is my code..

Code:
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>


int main (int argc, char *argv[])
{

    // turn string k into int k
    int k = atoi(argv[1]);
    k = k % 26;
    
    int i = 0;
    
    // prompt user for string
    string word = GetString();
    
    // below here all works fine when I had it as a stand alone function that I 
    // passed arguments to from main.. should encrypt by "k" letters
    while (word[i] != '\0')
    {
       if (word[i] >= 'a' && word[i] <= 'z')
       {
           word[i] = (word[i] + k - 97) % 26 + 97; 
           i++;
       }
       
      else  if (word[i] >= 'A' && word[i] <= 'Z')
        {
            word[i] = (word[i] + k - 65) % 26 + 65;
            i++;
        }
        else
            i++;
    }
    word[i] = '\0';
    
    printf("%s\n", word); 
        
}