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?
The syntax should be;
Since
strlenis costy operation, and you don’t modify the string inside the loop, it’s better to write like:Besides, it’s strongly recommanded to always check for buffer overflow when working with C-strings and user-input: