0% found this document useful (0 votes)
12 views26 pages

BPC1UNIT4

The document provides an overview of arrays in C programming, including how to declare, initialize, and access array elements, as well as examples of using one-dimensional and multi-dimensional arrays. It also covers string handling in C, explaining how to declare and initialize strings, and how to read user input. Key points include the importance of array bounds and the use of functions like scanf and strcpy for input and string manipulation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views26 pages

BPC1UNIT4

The document provides an overview of arrays in C programming, including how to declare, initialize, and access array elements, as well as examples of using one-dimensional and multi-dimensional arrays. It also covers string handling in C, explaining how to declare and initialize strings, and how to read user input. Key points include the importance of array bounds and the use of functions like scanf and strcpy for input and string manipulation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

C Arrays

Arrays in C
An array is a variable that can store multiple values. For example, if you want
to store 100 integers, you can create an array for it.

int data[100];

How to declare an array?


dataType arrayName[arraySize];

For example,

float mark[5];
Here, we declared an array, mark, of floating-point type. And its size is 5.
Meaning, it can hold 5 floating-point values.

It's important to note that the size and type of an array cannot be changed
once it is declared.

Access Array Elements


You can access elements of an array by indices.

Suppose you declared an array mark as above. The first element is mark[0],
the second element is mark[1] and so on.

Declare an Array
Few keynotes:

● Arrays have 0 as the first index, not 1. In this example, mark[0] is the
first element.
● If the size of an array is n, to access the last element, the n-1 index is
used. In this example, mark[4]
● Suppose the starting address of mark[0] is 2120d. Then, the address of
the mark[1] will be 2124d. Similarly, the address of mark[2] will be 2128d
and so on.
This is because the size of a float is 4 bytes.
How to initialize an array?
It is possible to initialize an array during declaration. For example,

int mark[5] = {19, 10, 8, 17, 9};

You can also initialize an array like this.

int mark[] = {19, 10, 8, 17, 9};

Here, we haven't specified the size. However, the compiler knows its size is 5
as we are initializing it with 5 elements.

Initialize an Array
Here,

mark[0] is equal to 19
mark[1] is equal to 10
mark[2] is equal to 8
mark[3] is equal to 17
mark[4] is equal to 9

Change Value of Array elements


int mark[5] = {19, 10, 8, 17, 9}

// make the value of the third element to -1


mark[2] = -1;

// make the value of the fifth element to 0


mark[4] = 0;
Input and Output Array Elements
Here's how you can take input from the user and store it in an array element.

// take input and store it in the 3rd element


​scanf("%d", &mark[2]);

// take input and store it in the ith element


scanf("%d", &mark[i-1]);

Here's how you can print an individual element of an array.

// print the first element of the array


printf("%d", mark[0]);

// print the third element of the array


printf("%d", mark[2]);

// print ith element of the array


printf("%d", mark[i-1]);

Example 1: Array Input/Output


// Program to take 5 values from the user and store them in an array
// Print the elements stored in the array

#include <stdio.h>

int main() {

int values[5];

printf("Enter 5 integers: ");

// taking input and storing it in an array


for(int i = 0; i < 5; ++i) {
scanf("%d", &values[i]);
}
printf("Displaying integers: ");

// printing elements of an array


for(int i = 0; i < 5; ++i) {
printf("%d\n", values[i]);
}
return 0;
}

Run Code

Output

Enter 5 integers: 1
-3
34
0
3
Displaying integers: 1
-3
34
0
3

Here, we have used a for loop to take 5 inputs from the user and store them
in an array. Then, using another for loop, these elements are displayed on the
screen.

Example 2: Calculate Average


// Program to find the average of n numbers using arrays

#include <stdio.h>

int main() {

int marks[10], i, n, sum = 0;


double average;

printf("Enter number of elements: ");


scanf("%d", &n);

for(i=0; i < n; ++i) {


printf("Enter number%d: ",i+1);
scanf("%d", &marks[i]);

// adding integers entered by the user to the sum variable


sum += marks[i];
}

// explicitly convert sum to double


// then calculate average
average = (double) sum / n;

printf("Average = %.2lf", average);

return 0;
}

Run Code

Output

Enter number of elements: 5


Enter number1: 45
Enter number2: 35
Enter number3: 38
Enter number4: 31
Enter number5: 49
Average = 39.60

Here, we have computed the average of n numbers entered by the user.

Access elements out of its bound!

Suppose you declared an array of 10 elements. Let's say,


int testArray[10];

You can access the array elements from testArray[0] to testArray[9].

Now let's say if you try to access testArray[12]. The element is not available.
This may cause unexpected output (undefined behavior). Sometimes you
might get an error and some other time your program may run correctly.

Hence, you should never access elements of an array outside of its bound.

C Multidimensional Arrays
In C programming, you can create an array of arrays. These arrays are known
as multidimensional arrays. For example,

float x[3][4];

Here, x is a two-dimensional (2d) array. The array can hold 12 elements. You
can think the array as a table with 3 rows and each row has 4 columns.

Two dimensional Array


Similarly, you can declare a three-dimensional (3d) array. For example,

float y[2][4][3];
Here, the array y can hold 24 elements.

Initializing a multidimensional array


Here is how you can initialize two-dimensional and three-dimensional arrays:

Initialization of a 2d array
// Different ways to initialize two-dimensional array

int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};

int c[][3] = {{1, 3, 0}, {-1, 5, 9}};

int c[2][3] = {1, 3, 0, -1, 5, 9};

Initialization of a 3d array

You can initialize a three-dimensional array in a similar way to a


two-dimensional array. Here's an example,

int test[2][3][4] = {
{{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
{{13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9}}};

Example 1: Two-dimensional array to store and print values


// C program to store temperature of two cities of a week and display it.
#include <stdio.h>
const int CITY = 2;
const int WEEK = 7;
int main()
{
int temperature[CITY][WEEK];
// Using nested loop to store values in a 2d array
for (int i = 0; i < CITY; ++i)
{
for (int j = 0; j < WEEK; ++j)
{
printf("City %d, Day %d: ", i + 1, j + 1);
scanf("%d", &temperature[i][j]);
}
}
printf("\nDisplaying values: \n\n");

// Using nested loop to display vlues of a 2d array


for (int i = 0; i < CITY; ++i)
{
for (int j = 0; j < WEEK; ++j)
{
printf("City %d, Day %d = %d\n", i + 1, j + 1, temperature[i][j]);
}
}
return 0;
}

Run Code

Output

City 1, Day 1: 33
City 1, Day 2: 34
City 1, Day 3: 35
City 1, Day 4: 33
City 1, Day 5: 32
City 1, Day 6: 31
City 1, Day 7: 30
City 2, Day 1: 23
City 2, Day 2: 22
City 2, Day 3: 21
City 2, Day 4: 24
City 2, Day 5: 22
City 2, Day 6: 25
City 2, Day 7: 26

Displaying values:
City 1, Day 1 = 33
City 1, Day 2 = 34
City 1, Day 3 = 35
City 1, Day 4 = 33
City 1, Day 5 = 32
City 1, Day 6 = 31
City 1, Day 7 = 30
City 2, Day 1 = 23
City 2, Day 2 = 22
City 2, Day 3 = 21
City 2, Day 4 = 24
City 2, Day 5 = 22
City 2, Day 6 = 25
City 2, Day 7 = 26

Example 2: Sum of two matrices


// C program to find the sum of two matrices of order 2*2

#include <stdio.h>
int main()
{
float a[2][2], b[2][2], result[2][2];

// Taking input using nested for loop


printf("Enter elements of 1st matrix\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("Enter a%d%d: ", i + 1, j + 1);
scanf("%f", &a[i][j]);
}

// Taking input using nested for loop


printf("Enter elements of 2nd matrix\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
printf("Enter b%d%d: ", i + 1, j + 1);
scanf("%f", &b[i][j]);
}

// adding corresponding elements of two arrays


for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
{
result[i][j] = a[i][j] + b[i][j];
}

// Displaying the sum


printf("\nSum Of Matrix:");

for (int i = 0; i < 2; ++i)


for (int j = 0; j < 2; ++j)
{
printf("%.1f\t", result[i][j]);

if (j == 1)
printf("\n");
}
return 0;
}

Run Code

Output

Enter elements of 1st matrix


Enter a11: 2;
Enter a12: 0.5;
Enter a21: -1.1;
Enter a22: 2;
Enter elements of 2nd matrix
Enter b11: 0.2;
Enter b12: 0;
Enter b21: 0.23;
Enter b22: 23;

Sum Of Matrix:
2.2 0.5
-0.9 25.0

Example 3: Three-dimensional array


// C Program to store and print 12 values entered by the user

#include <stdio.h>
int main()
{
int test[2][3][2];

printf("Enter 12 values: \n");

for (int i = 0; i < 2; ++i)


{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
scanf("%d", &test[i][j][k]);
}
}
}

// Printing values with the proper index.

printf("\nDisplaying values:\n");
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
printf("test[%d][%d][%d] = %d\n", i, j, k, test[i][j][k]);
}
}
}

return 0;
}

Run Code

Output

Enter 12 values:
1
2
3
4
5
6
7
8
9
10
11
12

Displaying Values:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12

C Programming Strings
In C programming, a string is a sequence of characters terminated with a null
character \0. For example:

char c[] = "c string";

When the compiler encounters a sequence of characters enclosed in the


double quotation marks, it appends a null character \0 at the end by default.

Memory Diagram

How to declare a string?


Here's how you can declare strings:

char s[5];

String Declaration in C
Here, we have declared a string of 5 characters.

How to initialize strings?


You can initialize strings in a number of ways.

char c[] = "abcd";

char c[50] = "abcd";

char c[] = {'a', 'b', 'c', 'd', '\0'};

char c[5] = {'a', 'b', 'c', 'd', '\0'};

String Initialization in C
Let's take another example:

char c[5] = "abcde";

Here, we are trying to assign 6 characters (the last character is '\0') to a char
array having 5 characters. This is bad and you should never do this.

Assigning Values to Strings


Arrays and strings are second-class citizens in C; they do not support the
assignment operator once it is declared. For example,

char c[100];
c = "C programming"; // Error! array type is not assignable.

Note: Use the strcpy() function to copy the string instead.

Read String from the user


You can use the scanf() function to read a string.

The scanf() function reads the sequence of characters until it encounters


whitespace (space, newline, tab, etc.).

Example 1: scanf() to read a string


#include <stdio.h>
int main()
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
printf("Your name is %s.", name);
return 0;
}

Output

Enter name: Dennis Ritchie


Your name is Dennis.
Even though Dennis Ritchie was entered in the above program, only "Dennis"
was stored in the name string. It's because there was a space after Dennis.

Also notice that we have used the code name instead of &name with scanf().

scanf("%s", name);

This is because name is a char array, and we know that array names decay to
pointers in C.

Thus, the name in scanf() already points to the address of the first element in
the string, which is why we don't need to use &.

How to read a line of text?

You can use the gets() function to read a line of string. And, you can use
puts() to display the string.

Example 2: fgets() and puts()


#include <stdio.h>
int main()
{
char name[30];
printf("Enter name: ");
fgets(name); read string
printf("Name: ");
puts(name); // display string
return 0;
}

Output

Enter name: Tom Hanks


Name: Tom Hanks

Here, we have used gets() function to read a string from the user.

fgets(name); // read string

To print the string, we have used puts(name);.

Note: The gets() function can also be to take input from the user. However, it
is removed from the C standard.

It's because gets() allows you to input any length of characters. Hence, there
might be a buffer overflow.

Commonly Used String Functions

● strlen() - calculates the length of a string


● strcpy() - copies a string to another
● strcmp() - compares two strings
● strcat() - concatenates two strings

● C strlen()
● The strlen() function takes a string as an argument and returns its
length. The returned value is of type size_t (an unsigned integer type).
● It is defined in the <string.h> header file.

● Example: C strlen() function
● #include <stdio.h>

● #include <string.h>

● int main()

● {

● char a[20]="Program";

● char b[20]={'P','r','o','g','r','a','m','\0'};


● // using the %zu format specifier to print size_t

● printf("Length of string a = %zu \n",strlen(a));

● printf("Length of string b = %zu \n",strlen(b));


● return 0;

● }

● Run Code

● Output
● Length of string a = 7

● Length of string b = 7


● Note that the strlen() function doesn't count the null character \0 while
calculating the length.

C strcat()
The function definition of strcat() is:
char *strcat(char *destination, const char *source)

It is defined in the string.h header file.

strcat() arguments
As you can see, the strcat() function takes two arguments:

destination - destination string


source - source string

The strcat() function concatenates the destination string and the source
string, and the result is stored in the destination string.

Example: C strcat() function


#include <stdio.h>

#include <string.h>

int main() {

char str1[100] = "This is ", str2[] = "programiz.com";


// concatenates str1 and str2

// the resultant string is stored in str1.

strcat(str1, str2);

puts(str1);

puts(str2);

return 0;

Output

This is programiz.com

programiz.com

Note: When we use strcat(), the size of the destination string should be large
enough to store the resultant string. If not, we will get the segmentation fault
error.
C strcmp()
The strcmp() compares two strings character by character. If the strings are
equal, the function returns 0.

C strcmp() Prototype
The function prototype of strcmp() is:

int strcmp (const char* str1, const char* str2);

strcmp() Parameters
The function takes two parameters:

● str1 - a string
● str2 - a string

Return Value from strcmp()

Return Remarks
Value

0 if strings are equal


>0 if the first non-matching character in str1 is greater (in ASCII)

than that of str2.

<0 if the first non-matching character in str1 is lower (in ASCII) than

that of str2.

The strcmp() function is defined in the string.h header file.

Example: C strcmp() function


#include <stdio.h>

#include <string.h>

int main() {

char str1[] = "abcd", str2[] = "abCd", str3[] = "abcd";

int result;

// comparing strings str1 and str2


result = strcmp(str1, str2);

printf("strcmp(str1, str2) = %d\n", result);

// comparing strings str1 and str3

result = strcmp(str1, str3);

printf("strcmp(str1, str3) = %d\n", result);

return 0;

Output

strcmp(str1, str2) = 1

strcmp(str1, str3) = 0

In the program,

● strings str1 and str2 are not equal. Hence, the result is a non-zero
integer.
● strings str1 and str3 are equal. Hence, the result is 0.

C strcpy()
C strcpy()
The function prototype of strcpy() is:

char* strcpy(char* destination, const char* source);

● The strcpy() function copies the string pointed by source (including the
null character) to the destination.
● The strcpy() function also returns the copied string.

The strcpy() function is defined in the string.h header file.

Example: C strcpy()
#include <stdio.h>

#include <string.h>

int main() {

char str1[20] = "C programming";


char str2[20];

// copying str1 to str2

strcpy(str2, str1);

puts(str2); // C programming

return 0;

Run Code

Output

C programming

Note: When you use strcpy(), the size of the destination string should be
large enough to store the copied string. Otherwise, it may result in undefined
behavior.

You might also like