title: Segmentation fault at a printf
body: <p>I'm currently learning C and I'm working on a program that reverses the order of words in a sentence using 1D arrays.</p>
  
  <p>The way it is supposed to function is as follows:</p>
  
  <p>Input: this is a program</p>
  
  <p>Output: program a is this</p>
  
  <p>But when I try to run it I get an error saying "Segmentation fault" which I assume means the program is trying to access memory that it shouldn't.</p>
  
  <p>GDB told me the problem was at the printf in my loop</p>
  
  <p>Here's my code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #define N 99
  
  //initialize i at 1 to leave space in beginning
  int i=1;
  
  //j is for counting charachters of individual words
  int j=0;
  
  //initailize char array with spaces
  char array[N]={' '};
  
  
  int main(void)
  {
  
  
  printf("Enter a sentence ended by a [. or ! or ?]: ");
  
  
  //enter sentence charachter by charachter into an array. end at terminator.
  for (i=1 ; ; i++ )
  {
      array[i]=getchar();
      if (array[i]=='.' || array[i]=='!' || array[i]=='?')
      {
          break;
      }
  
  }
  
  
  //begin loop.
  for ( ; array[i] != array[0] ; )
  {
  //note current position of i into j. j is end marker.
      j=i;
  
  //search backward from j for the beginning of last word (after a space).
      for (i=j ; array[i]!= ' ' ; i--)
      {
  
      }
      i++; //move to beginning of word
  
  //print word to end counting places moved. stop at j.
      for ( ; i!=j ; i++)
      {
          printf("%c", array[i]);
          j++; //increment j to determine number of charachters.
      }
  
  
  //move back the same amount of places moved.
      for ( ; j!=0 ; j--)
      {
          i--;
      }
      //i--; //move back once more
  
  //update j to new position.
  
  //start loop again.
  }
  
  
  return 0;
  }
  </code></pre>