Skip to main content

Array of characters - Strings

String is a sequence of characters terminated by null character.  Character array can be used to store strings.  Below is the general form of character array declaration.

char array_name[size];

Consider the following declaration,char str[100];

Here, str is a character array which has the capacity to store 100 characters or string of length 100 character(99 char + 1 null char).

Let us see how to initialize character array.  Basically, character array can be initialized in either of the following ways.

char str[6] = {'I', 'N', 'D', 'I', 'A', '\0'};
char str[6] = "INDIA";
char str[]  = {'I', 'N', 'D', 'I', 'A', '\0'};
char str[]  = "INDIA";

Here, all the above statement gives same meaning.  The string "INDIA" is stored inside the array str.

When a string is stored in an array in the form of comma delimited characters, then user has to explicitly include null character at the end as shown below.
char str[6] = {'I', 'N', 'D', 'I', 'A', '\0'};

For strings within double codes, null character would be added implicitly.
char str[] = "INDIA";

  #include <stdio.h> 
int main() {
int i;
char str[6] = "INDIA";
for (i = 0; i < 6; i++) {
printf("character: %c\tASCII: %d\n", str[i], str[i]);
}
return 0;
}

  Output:
  jp@jp-VirtualBox:~/$ ./a.out
  character: I ASCII: 73
  character: N ASCII: 78
  character: D ASCII: 68
  character: I ASCII: 73
  character: A ASCII: 65
  character: ASCII: 0


Note: ASCII of null character is 0 and null character won't be displayed on the output screen.

From the above output, we could see that the null character is added implicitly at the end of string literal.

String literal can be assigned to character array only during the time of declaration or initialization. Assigning string literal to character array after initialization or declaration would result in below error.

  #include <stdio.h> 
int main() {
char str[100] = "INDIA"; // allowed
// assign string literal after declaration
str = "string"; // not allowed
return 0;
}

  Output:
  jp@jp-VirtualBox:~/$ gcc ex71.c 
  pgm.c: In function ‘main’:
  pgm.c:5: error: incompatible types when assigning to type ‘char[100]’ from type ‘char *’


But, user is allowed to change the contents of the character array which is initialized to string literal as shown below.
char str[] = "INDIA";
str[0] = 'E';
str[1] = 'L';
Here, we are altering the string contents character by character.

What happens when we assign a string literal with length greater than the size of the array?
Consider the following,
char str[4] = "INDIA";
Here, the size of the array is 4 bytes(1 character = 1 byte).  So, str array can hold 4 characters.  But, we have assigned a string literal(6 characters - including null character) with length greater than the original size of the array.  During compilation, we won't get any error message.  But still, we will end in memory corruption. Because, we are writing data in a memory block which is not allocated for us.

Comments

Popular posts from this blog

scanf() and printf() functions

Scanf() function: It is used to read input from the keyboard. int scanf(const char *format, ...); For better understanding, lets rewrite the above as follows. scanf("format specifiers", &v1, &v2, &v3); v1, v2 and v3 are the input variables whose value needs to read from the keyboard.  We need to pass address of the variable as argument to store the input values from keyboard. Here, ampersand(&) represents address. &v1 - address of variable v1 Input value for v1 will be stored at address of variable v1 Format specifier can be any of the following %u  - unsigned int %d  - int %x  - hexadecimal %o  - octal %f  - float %lf - double %c  - char %s  - string scanf("%d", &v1); - inputs integer value scanf("%x", &v2); - inputs hexadecimal value scanf("%f", &v3); - inputs float value printf() function: It prints the given data on the output screen. printf("format specifiers", v1, v2,..vn); Here, format specifier ...

How to install JDK and setting environment variables for java

In this tutorial, we are going to see the following. How to install JDK How to run java program without setting java path How to set temporary java path in windows How to set permanent java path in windows How to install JDK? Check whether JDK is installed on your PC.  If it is not installed, please go to the below link and download JDK under Java SE(Java Standard Edition) in oracle website . Install the downloaded JDK in your PC. Once JDK is installed, you can run your java program using any method shown below. Having your java source code under jdk/bin, compile the source code and run the program from same directory Setting temporary path for java, compiling the source code and running the program from any location using command prompt Updating the java path in system or user variable(in system properties), compiling the source code and running the program anywhere using command prompt Let us see how to run java program without setting environmental variables.  Once java is ...

Multidimensional arrays in C

Multidimensional array is also known as array of arrays.  C allows user to write arrays with one or more dimensions.  An array with more than one dimension is a multi-dimensional array.  Two dimensional array is a simplest form of multidimensional array.  Below is the general form of multidimensional array. data_type  array_name[size1][size2][size3]..[sizeN]; Consider the following example int arr[2][2][2] = {   { {1, 1}, {1, 1} },                                   { {1, 1}, {1, 1} }                               } ;   The above statement shows the declaration and initialization of multidimensional array(3d array).  Total number of elements in an array can be obtained by multiplying the size value in each dimension. int arr[2][2][2]; 2 X 2 X 2 = 8 elements in the array arr And multidim...