Chapter 4
Chapter 4
void main()
{
int studMark1, studMark2, studMark3, studMark4,
…, …, studMark998, stuMark999, studMark1000;
…
…
}
ARRAYS
By using an array, we just declare like this,
int studMark[1000];
This will reserve 1000 contiguous memory locations for storing the
students’ marks.
Graphically, this can be depicted as in the following figure.
ARRAYS
www.tenouk.com, ©
One Dimensional Array: Declaration
• For example, to declare an array of 30 integers, that
construct the marks of 30 students of a class, we could
declare,
• int marks[30]; 80 marks[0]
• Which can be depicted as follows, 77 marks[1]
79 marks[2]
• 66 marks[3]
In this statement, the array can store up to 30
integers with the first integer value occupying … …
location marks[0] and the last value occupying … …
marks[29]. 80 marks[29]
• Note that the index runs from 0 to 29. In C, an
index always starts from 0 and ends with array's
(size-1).
• So, take note the difference between the array
size and subscript/index terms.
One Dimensional Array: Declaration
Examples of the one-dimensional array declarations,
int xNum[20], yNum[50];
float fPrice[10], fYield;
char chLetter[70];
The first example declares two arrays named xNum and yNum of type
int. Array xNum can store up to 20 integer numbers while yNum can
store up to 50 numbers.
The second line declares the array fPrice of type float. It can
store up to 10 floating-point values.
fYield is basic variable which shows array type can be declared
together with basic type provided the type is similar.
The third line declares the array chLetter of type char. It can store a
string up to 69 characters.
Why 69 instead of 70? Remember, a string has a null terminating
character (\0) at the end, so we must reserve for it.
Array Initialization
An array may be initialized at the time of declaration.
Giving initial values to an array.
Initialization of an array may take the following form,
type array_name[size] = {a_list_of_value};
For example:
int idNum[7] = {1, 2, 3, 4, 5, 6, 7};
float fFloatNum[5] = {5.6, 5.7, 5.8, 5.9, 6.1};
char chVowel[6] = {'a', 'e', 'i', 'o', 'u', '\0'};
The first line declares an integer array idNum and it immediately
assigns the values 1, 2, 3, ..., 7 to idNum[0], idNum[1],
idNum[2],..., idNum[6] respectively.
The second line assigns the values 5.6 to fFloatNum[0], 5.7 to
fFloatNum[1], and so on.
Similarly the third line assigns the characters 'a' to chVowel[0], 'e' to
chVowel[1], and so on. Note again, for characters we must use the
single apostrophe/quote (') to enclose them.
Also, the last character in chVowel is NULL character ('\0').
Array Initialization
• Initialization of an array of type char for holding strings may take the following
form,
• For example, the array chVowel in the previous example could have been
written more compactly as follows,
• C compiler automatically creates an array which is big enough to hold all the
initializer.
Program Examples
Arrays allow programmers to group related items of the same
data type in one variable.
However, when referring to an array, one has to specify not only
the array or variable name but also the index number of interest.
Program example 1: Sum of array’s element.
Notice the array's element which is not initialized is set to 0
automatically.
Program Examples
• Program example 2: Searching the smallest value.
• Finding the smallest element in the array named fSmallest.
• First, it assumes that the smallest value is in fSmallest[0] and
assigns it to the variable nSmall.
• Then it compares nSmall with the rest of the values in fSmallest,
one at a time.
• When an element is smaller than the current value contained in
nSmall, it is assigned to nSmall. The process finally places the
smallest array element in nSmall.
Program Examples
• Program example 3: Searching the biggest valu
e
. By modifying the previous example we can
search the biggest value.
Program Examples
• Program example 4: Searching the location for th
e given value in an array
Program Examples
• Program example 5: Storing and reading a string
Program Examples
• Program example 6: Storing and reading array
content and its index
Two Dimensional/2D Arrays
• A two dimensional array has two subscripts/indexes.
• The first subscript refers to the row, and the second, to the column.
• Its declaration has the following form,
• data_type array_name[1st dimension size][2nd dimension
size];
• For examples,
• int xInteger[3][4];
• float matrixNum[20][25];
• The first line declares xInteger as an integer array with 3 rows and
4 columns.
• Second line declares a matrixNum as a floating-point array with 20
rows and 25 columns.
Two Dimensional/2D Arrays
• If we assign initial string values for the 2D array it will look
something like the following,
• array_name[x][y];
• ThreeDimArray[2][4][7] = 2 x 4 x 7 = 56.
• And if you want to illustrate the 3D array, it could be a cube with wide, long
and height dimensions.
Program Example: 2D Array
• Program example 7: Storing and reading
array content and its index
Program Example: 2D Array
• Program example 8: Swapping iIndex (
iRow) with jIndex (iColumn
) in the previous program example
Program Example: 2D Array
1. Program example 9: Strings are read in by the rows.
2. Each row will have one string. Enter the following data:
“you”, “are”, “cat” for the following example.
3. Remember that after each string, a null character is
added.
4. We are reading in strings but printing out only characters.
ARRAYS
• The contents of the array in memory after the three
strings are read in the array.
[0] [13]
I n i t i a l v a l u e \0 ? ? …
Arrays of Strings
• An array of strings is a two-dimensional array of
characters in which each row is one string.
– char names[People][Length];
– char month[5][10] = {“January”, “February”,
“March”, “April”, “May”};
Input/Output of a String
• The placeholder %s is used to represent
string arguments in printf and scanf.
– printf(“Topic: %s\n”, string_var);
• The string can be right-justified by placing a
positive number in the placeholder.
– printf(“%8s”, str);
• The string can be left-justified by placing a
negative number in the placeholder.
– Printf(“%-8s”, str);
Right and Left Justification of Strings
9-33
Execution of scanf ("%s", dept);
• Whenever encountering a white space, the scanning stops and scanf
places the null character at the end of the string.
• e.g., if the user types “MATH 1234 TR 1800,” the string “MATH” along
with ‘0’ is stored into dept.
9-34
String Library Functions
• The string can not be copied by the assignment operator
‘=’.
– e..g, “str = “Test String”” is not valid.
• C provides string manipulating functions in the “string.h”
library.
– The complete list of these functions can be found in Appendix B
of the textbook.
Some String Functions from String.h
Function Purpose Example
strcpy Makes a copy of a strcpy(s1, “Hi”);
string
strcat Appends a string to the strcat(s1, “more”);
end of another string
strcmp Compare two strings strcmp(s1, “Hu”);
alphabetically
strlen Returns the number of strlen(“Hi”)
characters in a string returns 2.
strtok Breaks a string into strtok(“Hi, Chao”,
tokens by delimiters. “ ,”);
Functions strcpy and strncpy
• Function strcpy copies the string in the second
argument into the first argument.
– e.g., strcpy(dest, “test string”);
– The null character is appended at the end
automatically.
– If source string is longer than the destination string, the
overflow characters may occupy the memory space
used by other variables.
• Function strncpy copies the string by specifying
the number of characters to copy.
– You have to place the null character manually.
– e.g., strncpy(dest, “test string”, 6); dest[6] = ‘\0’;
– If source string is longer than the destination string, the
overflow characters are discarded automatically.
9-37
Extracting Substring of a String (1/2)
• We can use strncpy to extract substring of one string.
– e.g., strncpy(result, s1, 9);
9-38
Extracting Substring of a String (2/2)
• e.g., strncpy(result, &s1[5], 2);
9-39
Functions strcat and strlen
• Functions strcat and strncat
concatenate the fist string argument with the
second string argument.
– strcat(dest, “more..”);
– strncat(dest, “more..”, 3);
• Function strlen is often used to check the
length of a string (i.e., the number of
characters before the fist null character).
– e.g., dest[6] = “Hello”;
strncat(dest, “more”, 5-strlen(dest));
dest[5] = ‘\0’;
Distinction Between Characters and Strings
Q Q \0
Functions Description
isalpha Check if the argument is a letter