Q:

C programming beginner - Please explain this error

I'm just starting off with C and was trying out a few examples from Ritchie's book. I wrote a small program to understand character arrays, but stumbled on some errors, and was hoping for some insight on what I've understood wrong:
#include <stdio.h>
#define ARRAYSIZE 50
#include <string.h>

main () {
  int c,i;
  char letter[ARRAYSIZE];
  i=0;
  while ((c=getchar()) != EOF )
  {    
    letter[i]=c;
    i++;
  }
  letter[i]='\0';
  printf("You entered %d characters\n",i);
  printf("The word is ");

  printf("%s\n",letter);
  printf("The length of string is %d",strlen(letter));
  printf("Splitting the string into chars..\n");
  int j=0;
  for (j=0;j++;(j<=strlen(letter)))
    printf("The letter is %d\n",letter[j]);
}

The output is:
$ ./a.out 
hello how are youYou entered 17 characters
The word is hello how are you
The length of string is 17Splitting the string into chars..

What is happening? Why isn't the for loop giving any output?

A:

The syntax should be;
for (j=0; j<strlen(letter); j++)

Since strlen is costy operation, and you don't modify the string inside the loop, it's better to write like:
const int len = strlen(letter);
for (j=0; j<=len; j++)

Besides, it's strongly recommanded to always check for buffer overflow when working with C-strings and user-input:
while ((c=getchar()) != EOF && i < ARRAYSIZE - 1)

A:

The error is in the for, simply swap the ending condition and the increment like this:
for (j = 0; j <= strlen(letter); j++)

Question:  what's that last character?

A:

for (j=0;j++;(j<=strlen(letter))) it's not correct.
It should be for (j=0; j<=strlen(letter); j++) - increment at the third position.

