C Standard Library Tutorial
C Standard Library Tutorial
C is the most widely used computer language that keeps fluctuating at number
one scale of popularity along with Java programming language which is also
equally popular and most widely used among modern software programmers.
The C Standard Library is a set of C built-in functions, constants and header files
like <assert.h>, <ctype.h>, etc. This library will work as a reference manual for C
programmers.
Audience
The C Standard Library is a reference for C programmers to help them in their
projects related to system programming. All the C functions have been explained
in a user-friendly way and they can be copied and pasted in your C projects.
Prerequisites
A basic understanding of the C Programming language will help you in
understanding the C built-in functions covered in this library.
All the content and graphics published in this e-book are the property of
Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain,
copy, distribute or republish any contents or a part of contents of this e-book in
any manner without written consent of the publisher.
We strive to update the contents of our website and tutorials as timely and as
precisely as possible, however, the contents may contain inaccuracies or errors.
Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy,
timeliness or completeness of our website or its contents including this tutorial.
If you discover any errors on our website or in this tutorial, please notify us at
contact@tutorialspoint.com
i
Table of Contents
The C Standard Library Reference .............................................................................................................. i
Audience .................................................................................................................................................... i
Prerequisites .............................................................................................................................................. i
1. <ASSERT.H> ............................................................................................................................. 1
Introduction .............................................................................................................................................. 1
2. <CTYPE.H>............................................................................................................................... 3
Introduction .............................................................................................................................................. 3
3. <ERRNO.H> ........................................................................................................................... 27
Introduction ............................................................................................................................................ 27
4. <FLOAT.H> ............................................................................................................................ 33
ii
Introduction ............................................................................................................................................ 33
5. <LIMITS.H> ............................................................................................................................ 36
Introduction ............................................................................................................................................ 36
6. <LOCALE.H> .......................................................................................................................... 39
Introduction ............................................................................................................................................ 39
7. <MATH.H>............................................................................................................................. 48
Introduction ............................................................................................................................................ 48
iii
8. <SETJMP.H> .......................................................................................................................... 73
Introduction ............................................................................................................................................ 73
9. <SIGNAL.H> ........................................................................................................................... 77
Introduction ............................................................................................................................................ 77
10. <STDARG.H>........................................................................................................................ 84
Introduction ............................................................................................................................................ 84
Introduction ............................................................................................................................................ 90
Introduction ............................................................................................................................................ 95
iv
Library Macros ........................................................................................................................................ 95
vii
C Standard Library
1. <ASSERT.H>
Introduction
The assert.h header file of the C Standard Library provides a macro
called assert which can be used to verify assumptions made by the program and
print a diagnostic message if this assumption is false.
The defined macro assert refers to another macro NDEBUG which is not a part
of <assert.h>. If NDEBUG is defined as a macro name in the source file, at the
point where <assert.h> is included, the assert macro is defined as follows:
Library Macros
Following is the only function defined in the header assert.h:
This is actually a macro and not a function, which can be used to add
diagnostics in your C program.
Declaration
Following is the declaration for assert() Macro.
Parameters
expression -- This can be a variable or any C expression.
If expression evaluates to TRUE, assert() does nothing.
If expression evaluates to FALSE, assert() displays an error message on
1
C Standard Library
Return Value
This macro does not return any value.
Example
The following example shows the usage of assert() macro:
#include <assert.h>
#include <stdio.h>
int main()
{
int a;
char str[50];
return(0);
}
Let us compile and run the above program in the interactive mode as shown
below:
2
C Standard Library
2. <CTYPE.H>
Introduction
The ctype.h header file of the C Standard Library declares several functions that
are useful for testing and mapping characters.
All the functions accepts int as a parameter, whose value must be EOF or
representable as an unsigned char.
All the functions return non-zero (true) if the argument c satisfies the condition
described, and zero (false) if not.
Library Functions
Following are the functions defined in the header ctype.h:
1 int isalnum(int c)
2 int isalpha(int c)
3 int iscntrl(int c)
4 int isdigit(int c)
5 int isgraph(int c)
6 int islower(int c)
3
C Standard Library
7 int isprint(int c)
8 int ispunct(int c)
9 int isspace(int c)
10 int isupper(int c)
11 int isxdigit(int c)
int isalnum(int c)
Description
The C library function void isalnum(int c) checks if the passed character is
alphanumeric.
Declaration
Following is the declaration for isalnum() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns non-zero value if c is a digit or a letter, else it returns 0.
Example
The following example shows the usage of isalnum() function.
#include <stdio.h>
#include <ctype.h>
4
C Standard Library
int main()
{
int var1 = 'd';
int var2 = '2';
int var3 = '\t';
int var4 = ' ';
if( isalnum(var1) )
{
printf("var1 = |%c| is alphanumeric\n", var1 );
}
else
{
printf("var1 = |%c| is not alphanumeric\n", var1 );
}
if( isalnum(var2) )
{
printf("var2 = |%c| is alphanumeric\n", var2 );
}
else
{
printf("var2 = |%c| is not alphanumeric\n", var2 );
}
if( isalnum(var3) )
{
printf("var3 = |%c| is alphanumeric\n", var3 );
}
else
{
printf("var3 = |%c| is not alphanumeric\n", var3 );
}
if( isalnum(var4) )
{
printf("var4 = |%c| is alphanumeric\n", var4 );
}
5
C Standard Library
else
{
printf("var4 = |%c| is not alphanumeric\n", var4 );
}
return(0);
}
Let us compile and run the above program to produce the following result:
int isalpha(int c)
Description
The C library function void isalpha(int c) checks if the passed character is
alphabetic.
Declaration
Following is the declaration for isalpha() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns non-zero value if c is an alphabet, else it returns 0.
Example
The following example shows the usage of isalpha() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
int var1 = 'd';
6
C Standard Library
if( isalpha(var1) )
{
printf("var1 = |%c| is an alphabet\n", var1 );
}
else
{
printf("var1 = |%c| is not an alphabet\n", var1 );
}
if( isalpha(var2) )
{
printf("var2 = |%c| is an alphabet\n", var2 );
}
else
{
printf("var2 = |%c| is not an alphabet\n", var2 );
}
if( isalpha(var3) )
{
printf("var3 = |%c| is an alphabet\n", var3 );
}
else
{
printf("var3 = |%c| is not an alphabet\n", var3 );
}
if( isalpha(var4) )
{
printf("var4 = |%c| is an alphabet\n", var4 );
}
else
{
printf("var4 = |%c| is not an alphabet\n", var4 );
7
C Standard Library
return(0);
}
Let us compile and run the above program to produce the following result:
int iscntrl(int c)
Description
The C library function void iscntrl(int c) checks if the passed character is a
control character.
According to standard ASCII character set, control characters are between ASCII
codes 0x00 (NUL), 0x1f (US), and 0x7f (DEL). Specific compiler implementations
for certain platforms may define additional control characters in the extended
character set (above 0x7f).
Declaration
Following is the declaration for iscntrl() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns non-zero value if c is a control character, else it returns 0.
Example
The following example shows the usage of iscntrl() function.
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i = 0, j = 0;
8
C Standard Library
return(0);
}
Let us compile and run the above program to produce the following result:
all tutorials
int isdigit(int c)
Description
The C library function void isdigit(int c) checks if the passed character is a
decimal digit character.
Declaration
Following is the declaration for isdigit() function.
Parameters
c -- This is the character to be checked.
9
C Standard Library
Return Value
This function returns non-zero value if c is a digit, else it returns 0.
Example
The following example shows the usage of isdigit() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
int var1 = 'h';
int var2 = '2';
if( isdigit(var1) )
{
printf("var1 = |%c| is a digit\n", var1 );
}
else
{
printf("var1 = |%c| is not a digit\n", var1 );
}
if( isdigit(var2) )
{
printf("var2 = |%c| is a digit\n", var2 );
}
else
{
printf("var2 = |%c| is not a digit\n", var2 );
}
return(0);
}
Let us compile and run the above program to produce the following result:
10
C Standard Library
int isgraph(int c)
Description
The C library function void isgraph(int c) checks if the character has graphical
representation.
The characters with graphical representations are all those characters that can
be printed except for whitespace characters (like ' '), which is not considered as
isgraph characters.
Declaration
Following is the declaration for isgraph() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns non-zero value if c has a graphical representation as
character, else it returns 0.
Example
The following example shows the usage of isgraph() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
int var1 = '3';
int var2 = 'm';
int var3 = ' ';
if( isgraph(var1) )
{
printf("var1 = |%c| can be printed\n", var1 );
}
else
{
11
C Standard Library
return(0);
}
Let us compile and run the above program to produce the following result:
int islower(int c)
Description
The C library function int islower(int c) checks whether the passed character is
a lowercase letter.
Declaration
Following is the declaration for islower() function.
12
C Standard Library
Parameters
c -- This is the character to be checked.
Return Value
This function returns a non-zero value(true) if c is a lowercase alphabetic letter
else, zero (false).
Example
The following example shows the usage of islower() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
int var1 = 'Q';
int var2 = 'q';
int var3 = '3';
if( islower(var1) )
{
printf("var1 = |%c| is lowercase character\n", var1 );
}
else
{
printf("var1 = |%c| is not lowercase character\n", var1 );
}
if( islower(var2) )
{
printf("var2 = |%c| is lowercase character\n", var2 );
}
else
{
printf("var2 = |%c| is not lowercase character\n", var2 );
}
if( islower(var3) )
{
13
C Standard Library
return(0);
}
Let us compile and run the above program to produce the following result:
int isprint(int c)
Description
The C library function int isprint(int c) checks whether the passed character is
printable. A printable character is a character that is not a control character.
Declaration
Following is the declaration for isprint() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns a non-zero value(true) if c is a printable character else,
zero (false).
Example
The following example shows the usage of isprint() function.
#include <stdio.h>
#include <ctype.h>
int main()
14
C Standard Library
{
int var1 = 'k';
int var2 = '8';
int var3 = '\t';
int var4 = ' ';
if( isprint(var1) )
{
printf("var1 = |%c| can be printed\n", var1 );
}
else
{
printf("var1 = |%c| can't be printed\n", var1 );
}
if( isprint(var2) )
{
printf("var2 = |%c| can be printed\n", var2 );
}
else
{
printf("var2 = |%c| can't be printed\n", var2 );
}
if( isprint(var3) )
{
printf("var3 = |%c| can be printed\n", var3 );
}
else
{
printf("var3 = |%c| can't be printed\n", var3 );
}
if( isprint(var4) )
{
printf("var4 = |%c| can be printed\n", var4 );
}
else
15
C Standard Library
{
printf("var4 = |%c| can't be printed\n", var4 );
}
return(0);
}
Let us compile and run the above program to produce the following result:
int ispunct(int c)
Description
The C library function int ispunct(int c) checks whether the passed character is
a punctuation character. A punctuation character is any graphic character (as in
isgraph) that is not alphanumeric (as in isalnum).
Declaration
Following is the declaration for ispunct() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns a non-zero value(true) if c is a punctuation character else,
zero (false).
Example
The following example shows the usage of ispunct() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
int var1 = 't';
16
C Standard Library
if( ispunct(var1) )
{
printf("var1 = |%c| is a punctuation character\n", var1 );
}
else
{
printf("var1 = |%c| is not a punctuation character\n", var1 );
}
if( ispunct(var2) )
{
printf("var2 = |%c| is a punctuation character\n", var2 );
}
else
{
printf("var2 = |%c| is not a punctuation character\n", var2 );
}
if( ispunct(var3) )
{
printf("var3 = |%c| is a punctuation character\n", var3 );
}
else
{
printf("var3 = |%c| is not a punctuation character\n", var3 );
}
if( ispunct(var4) )
{
printf("var4 = |%c| is a punctuation character\n", var4 );
}
else
{
printf("var4 = |%c| is not a punctuation character\n", var4 );
17
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
int isspace(int c)
Description
The C library function int isspace(int c) checks whether the passed character is
white-space.
Declaration
Following is the declaration for isspace() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns a non-zero value(true) if c is a white-space character else,
zero (false).
Example
The following example shows the usage of isspace() function.
#include <stdio.h>
18
C Standard Library
#include <ctype.h>
int main()
{
int var1 = 't';
int var2 = '1';
int var3 = ' ';
if( isspace(var1) )
{
printf("var1 = |%c| is a white-space character\n", var1 );
}
else
{
printf("var1 = |%c| is not a white-space character\n", var1 );
}
if( isspace(var2) )
{
printf("var2 = |%c| is a white-space character\n", var2 );
}
else
{
printf("var2 = |%c| is not a white-space character\n", var2 );
}
if( isspace(var3) )
{
printf("var3 = |%c| is a white-space character\n", var3 );
}
else
{
printf("var3 = |%c| is not a white-space character\n", var3 );
}
return(0);
19
C Standard Library
Let us compile and run the above program that will produce the following result:
int isupper(int c)
Description
The C library function int isupper(int c) checks whether the passed character is
uppercase letter.
Declaration
Following is the declaration for isupper() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns a non-zero value(true) if c is an uppercase alphabetic letter
else, zero (false).
Example
The following example shows the usage of isupper() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
int var1 = 'M';
int var2 = 'm';
int var3 = '3';
if( isupper(var1) )
{
printf("var1 = |%c| is uppercase character\n", var1 );
20
C Standard Library
}
else
{
printf("var1 = |%c| is not uppercase character\n", var1 );
}
if( isupper(var2) )
{
printf("var2 = |%c| is uppercase character\n", var2 );
}
else
{
printf("var2 = |%c| is not uppercase character\n", var2 );
}
if( isupper(var3) )
{
printf("var3 = |%c| is uppercase character\n", var3 );
}
else
{
printf("var3 = |%c| is not uppercase character\n", var3 );
}
return(0);
}
Let us compile and run the above program that will produce the following result:
int isxdigit(int c)
Description
The C library function int isxdigit(int c) checks whether the passed character is
a hexadecimal digit.
21
C Standard Library
Declaration
Following is the declaration for isxdigit() function.
Parameters
c -- This is the character to be checked.
Return Value
This function returns a non-zero value(true) if c is a hexadecimal digit else, zero
(false).
Example
The following example shows the usage of isxdigit() function.
#include <stdio.h>
#include <ctype.h>
int main()
{
char var1[] = "tuts";
char var2[] = "0xE";
if( isxdigit(var1[0]) )
{
printf("var1 = |%s| is hexadecimal character\n", var1 );
}
else
{
printf("var1 = |%s| is not hexadecimal character\n", var1 );
}
if( isxdigit(var2[0] ))
{
printf("var2 = |%s| is hexadecimal character\n", var2 );
}
else
{
printf("var2 = |%s| is not hexadecimal character\n", var2 );
22
C Standard Library
return(0);
}
Let us compile and run the above program to produce the following result:
The library also contains two conversion functions that accepts and returns an
"int".
1 int tolower(int c)
2 int toupper(int c)
int tolower(int c)
Description
The C library function int tolower(int c) converts a given letter to lowercase.
Declaration
Following is the declaration for tolower() function.
Parameters
c -- This is the letter to be converted to lowercase.
Return Value
This function returns lowercase equivalent to c, if such value exists, else c
remains unchanged. The value is returned as an int value that can be implicitly
casted to char.
Example
The following example shows the usage of tolower() function.
#include <stdio.h>
23
C Standard Library
#include <ctype.h>
int main()
{
int i = 0;
char c;
char str[] = "TUTORIALS POINT";
while( str[i] )
{
putchar(tolower(str[i]));
i++;
}
return(0);
}
Let us compile and run the above program to produce the following result:
tutorials point
int toupper(int c)
Description
The C library function int toupper(int c) converts lowercase letter to
uppercase.
Declaration
Following is the declaration for toupper() function.
Parameters
c -- This is the letter to be converted to uppercase.
Return Value
This function returns uppercase equivalent to c, if such value exists, else c
remains unchanged. The value is returned as an int value that can be implicitly
casted to char.
Example
24
C Standard Library
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char c;
char str[] = "Tutorials Point";
while(str[i])
{
putchar (toupper(str[i]));
i++;
}
return(0);
}
Let us compile and run the above program to produce the following result:
TUTORIALS POINT
Character Classes
S.N. Character Class & Description
1 Digits
2 Hexadecimal digits
3 Lowercase letters
25
C Standard Library
4 Uppercase letters
5 Letters
6 Alphanumeric characters
7 Punctuation characters
8 Graphical characters
9 Space characters
This is a set of tab, newline, vertical tab, form feed, carriage return, and
space.
10 Printable characters
11 Control characters
In ASCII, these characters have octal codes 000 through 037, and 177
(DEL).
12 Blank characters
13 Alphabetic characters
26
C Standard Library
3. <ERRNO.H>
Introduction
The errno.h header file of the C Standard Library defines the integer
variable errno, which is set by system calls and some library functions in the
event of an error to indicate what went wrong. This macro expands to a
modifiable lvalue of type int, therefore it can be both read and modified by a
program.
The errno is set to zero at program startup. Certain functions of the standard C
library modify its value to other than zero to signal some types of error. You can
also modify its value or reset to zero at your convenience.
The errno.h header file also defines a list of macros indicating different error
codes, which will expand to integer constant expressions with type int.
Library Macros
Following are the macros defined in the header errno.h:
This is the macro set by system calls and some library functions in the
event of an error to indicate what went wrong.
27
C Standard Library
Declaration
Following is the declaration for errno macro.
Parameters
NA
Return Value
NA
Example
The following example shows the usage of errno Macro.
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main ()
{
FILE *fp;
fp = fopen("file.txt", "r");
if( fp == NULL )
{
fprintf(stderr, "Value of errno: %d\n", errno);
fprintf(stderr, "Error opening file: %s\n", strerror(errno));
}
else
{
fclose(fp);
}
28
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result
in case file file.txt does not exist:
Value of errno: 2
Error opening file: No such file or directory
Declaration
Following is the declaration for EDOM Macro.
Parameters
NA
Return Value
NA
Example
The following example shows the usage of EDOM Macro.
#include <stdio.h>
#include <errno.h>
#include <math.h>
int main()
{
double val;
errno = 0;
val = sqrt(-10);
if(errno == EDOM)
29
C Standard Library
{
printf("Invalid value \n");
}
else
{
printf("Valid value\n");
}
errno = 0;
val = sqrt(10);
if(errno == EDOM)
{
printf("Invalid value\n");
}
else
{
printf("Valid value\n");
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Invalid value
Valid value
Declaration
Following is the declaration for ERANGE Macro.
30
C Standard Library
Parameters
NA
Return Value
NA
Example
The following example shows the usage of ERANGE Macro.
#include <stdio.h>
#include <errno.h>
#include <math.h>
int main()
{
double x;
double value;
x = 1.000000;
value = log(x);
if( errno == ERANGE )
{
printf("Log(%f) is out of range\n", x);
}
else
{
printf("Log(%f) = %f\n", x, value);
}
x = 0.000000;
value = log(x);
if( errno == ERANGE )
{
printf("Log(%f) is out of range\n" x);
}
else
{
31
C Standard Library
return 0;
}
Let us compile and run the above program that will produce the following result:
Log(1.000000) = 1.609438
Log(0.000000) is out of range
32
C Standard Library
4. <FLOAT.H>
Introduction
The float.h header file of the C Standard Library contains a set of various
platform-dependent constants related to floating point values. These constants
are proposed by ANSI C. They allow making more portable programs. Before
checking all the constants, it is good to understand that floating-point number is
composed of following four elements:
S sign ( +/- )
Based on the above 4 components, a floating point will have its value as follows:
floating-point = ( S ) p x be
or
Library Macros
The following values are implementation-specific and defined with the #define
directive, but these values may not be any lower than what is given here. Note
that in all instances FLT refers to type float, DBL refers to double, and LDBL
refers to long double.
Macro Description
33
C Standard Library
-1 - indeterminable
0 - towards zero
1 - to nearest
LDBL_MANT_DIG
LDBL_MIN_EXP
LDBL_MIN_10_EXP -37
LDBL_MAX_EXP
FLT_MAX_10_EXP +37 These macros define the maximum integer value for
an exponent in base 10.
DBL_MAX_10_EXP +37
34
C Standard Library
LDBL_MAX_10_EXP +37
LDBL_MAX 1E+37
LDBL_EPSILON 1E-9
LDBL_MIN 1E-37
Example
The following example shows the usage of few of the constants defined in float.h
file.
#include <stdio.h>
#include <float.h>
int main()
{
printf("The maximum value of float = %.10e\n", FLT_MAX);
printf("The minimum value of float = %.10e\n", FLT_MIN);
Let us compile and run the above program that will produce the following result:
35
C Standard Library
5. <LIMITS.H>
Introduction
The limits.h header determines various properties of the various variable types.
The macros defined in this header, limits the values of various variable types like
char, int and long.
These limits specify that a variable cannot store any value beyond these limits,
for example an unsigned character can store up to a maximum value of 255.
Library Macros
The following values are implementation-specific and defined with the #define
directive, but these values may not be any lower than what is given here.
CHAR_MAX 127 Defines the value for type char and its
value will be equal to SCHAR_MAX if
char represents negative values,
otherwise UCHAR_MAX.
36
C Standard Library
Example
The following example shows the usage of few of the constants defined in limit.h
file.
#include <stdio.h>
#include <limits.h>
int main()
{
return(0);
}
Let us compile and run the above program that will produce the following result:
38
C Standard Library
6. <LOCALE.H>
Introduction
The locale.h header defines the location specific settings, such as date formats
and currency symbols. You will find several macros defined along with an
important structure struct lconv and two important functions listed below.
Library Macros
Following are the macros defined in the header and these macros will be used in
two functions listed below:
1 LC_ALL
Sets everything.
2 LC_COLLATE
3 LC_CTYPE
4 LC_MONETARY
5 LC_NUMERIC
6 LC_TIME
Library Functions
Following are the functions defined in the header locale.h:
39
C Standard Library
Declaration
Following is the declaration for setlocale() function.
Parameters
category -- This is a named constant specifying the category of the
functions affected by the locale setting.
locale -- If locale is NULL or the empty string "", the locale names will be
set from the values of environment variables with the same names as the
above categories.
Return Value
A successful call to setlocale() returns an opaque string that corresponds to the
locale set. The return value is NULL if the request cannot be honored.
Example
40
C Standard Library
#include <locale.h>
#include <stdio.h>
#include <time.h>
int main ()
{
time_t currtime;
struct tm *timer;
char buffer[80];
time( &currtime );
timer = localtime( &currtime );
return(0);
}
Let us compile and run the above program that will produce the following result:
41
C Standard Library
Declaration
Following is the declaration for localeconv() function.
Parameters
NA
Return Value
This function returns a pointer to a struct lconv for the current locale, which
has the following structure:
typedef struct {
char *decimal_point;
char *thousands_sep;
char *grouping;
char *int_curr_symbol;
char *currency_symbol;
char *mon_decimal_point;
char *mon_thousands_sep;
char *mon_grouping;
char *positive_sign;
char *negative_sign;
char int_frac_digits;
char frac_digits;
char p_cs_precedes;
char p_sep_by_space;
char n_cs_precedes;
char n_sep_by_space;
char p_sign_posn;
char n_sign_posn;
} lconv
Example
The following example shows the usage of localeconv() function.
42
C Standard Library
#include <locale.h>
#include <stdio.h>
int main ()
{
struct lconv * lc;
setlocale(LC_MONETARY, "it_IT");
lc = localeconv();
printf("Local Currency Symbol: %s\n",lc->currency_symbol);
printf("International Currency Symbol: %s\n",lc->int_curr_symbol);
setlocale(LC_MONETARY, "en_US");
lc = localeconv();
printf("Local Currency Symbol: %s\n",lc->currency_symbol);
printf("International Currency Symbol: %s\n",lc->int_curr_symbol);
setlocale(LC_MONETARY, "en_GB");
lc = localeconv();
printf ("Local Currency Symbol: %s\n",lc->currency_symbol);
printf ("International Currency Symbol: %s\n",lc->int_curr_symbol);
return 0;
}
Let us compile and run the above program that will produce the following result:
43
C Standard Library
Decimal Point = .
Library Structure
typedef struct {
char *decimal_point;
char *thousands_sep;
char *grouping;
char *int_curr_symbol;
char *currency_symbol;
char *mon_decimal_point;
char *mon_thousands_sep;
char *mon_grouping;
char *positive_sign;
char *negative_sign;
char int_frac_digits;
char frac_digits;
char p_cs_precedes;
char p_sep_by_space;
char n_cs_precedes;
char n_sep_by_space;
char p_sign_posn;
char n_sign_posn;
} lconv
1 decimal_point
2 thousands_sep
3 grouping
44
C Standard Library
4 int_curr_symbol
5 currency_symbol
6 mon_decimal_point
7 mon_thousands_sep
8 mon_grouping
9 positive_sign
10 negative_sign
11 int_frac_digits
12 frac_digits
45
C Standard Library
13 p_cs_precedes
14 p_sep_by_space
15 n_cs_precedes
16 n_sep_by_space
17 p_sign_posn
18 n_sign_posn
Value Description
46
C Standard Library
47
C Standard Library
7. <MATH.H>
Introduction
The math.h header defines various mathematical functions and one macro. All
the functions available in this library take double as an argument and
return double as the result.
Library Macros
There is only one macro defined in this library:
1 HUGE_VAL
Library Functions
Following are the functions defined in the header math.h:
1 double acos(double x)
2 double asin(double x)
3 double atan(double x)
48
C Standard Library
Returns the arc tangent in radians of y/x based on the signs of both
values to determine the correct quadrant.
5 double cos(double x)
6 double cosh(double x)
7 double sin(double x)
8 double sinh(double x)
9 double tanh(double x)
10 double exp(double x)
13 double log(double x)
14 double log10(double x)
49
C Standard Library
The returned value is the fraction component (part after the decimal),
and sets integer to the integer component.
17 double sqrt(double x)
18 double ceil(double x)
19 double fabs(double x)
20 double floor(double x)
double acos(double x)
Description
The C library function double acos(double x) returns the arc cosine of x in
radians.
Declaration
Following is the declaration for acos() function.
double acos(double x)
Parameters
x -- This is the floating point value in the interval [-1, +1].
Return Value
This function returns principal arc cosine of x, in the interval [0, pi] radians.
50
C Standard Library
Example
The following example shows the usage of acos() function.
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double x, ret, val;
x = 0.9;
val = 180.0 / PI;
return(0);
}
Let us compile and run the above program that will produce the following result:
double asin(double x)
Description
The C library function double asin(double x) returns the arc sine of x in
radians.
Declaration
Following is the declaration for asin() function.
double asin(double x)
Parameters
x -- This is the floating point value in the interval [-1,+1].
Return Value
This function returns the arc sine of x, in the interval [-pi/2,+pi/2] radians.
51
C Standard Library
Example
The following example shows the usage of asin() function.
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double x, ret, val;
x = 0.9;
val = 180.0 / PI;
return(0);
}
Let us compile and run the above program that will produce the following result:
double atan(double x)
Description
The C library function double atan(double x) returns the arc tangent of x in
radians.
Declaration
Following is the declaration for atan() function.
double atan(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns the principal arc tangent of x, in the interval [-pi/2,+pi/2]
radians.
52
C Standard Library
Example
The following example shows the usage of atan() function.
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double x, ret, val;
x = 1.0;
val = 180.0 / PI;
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for atan2() function.
Parameters
x -- This is the floating point value representing an x-coordinate.
Return Value
53
C Standard Library
This function returns the principal arc tangent of y/x, in the interval [-pi,+pi]
radians.
Example
The following example shows the usage of atan2() function.
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double x, y, ret, val;
x = -7.0;
y = 7.0;
val = 180.0 / PI;
return(0);
}
Let us compile and run the above program that will produce the following result:
double cos(double x)
Description
The C library function double cos(double x) returns the cosine of a radian
angle x.
Declaration
Following is the declaration for cos() function.
double cos(double x)
54
C Standard Library
Parameters
x -- This is the floating point value representing an angle expressed in
radians.
Return Value
This function returns the cosine of x.
Example
The following example shows the usage of cos() function.
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double x, ret, val;
x = 60.0;
val = PI / 180.0;
ret = cos( x*val );
printf("The cosine of %lf is %lf degrees\n", x, ret);
x = 90.0;
val = PI / 180.0;
ret = cos( x*val );
printf("The cosine of %lf is %lf degrees\n", x, ret);
return(0);
}
Let us compile and run the above program that will produce the following result:
55
C Standard Library
double cosh(double x)
Description
The C library function double cosh(double x) returns the hyperbolic cosine
of x.
Declaration
Following is the declaration for cosh() function.
double cosh(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns hyperbolic cosine of x.
Example
The following example shows the usage of cosh() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x;
x = 0.5;
printf("The hyperbolic cosine of %lf is %lf\n", x, cosh(x));
x = 1.0;
printf("The hyperbolic cosine of %lf is %lf\n", x, cosh(x));
x = 1.5;
printf("The hyperbolic cosine of %lf is %lf\n", x, cosh(x));
return(0);
}
Let us compile and run the above program to produce the following result:
56
C Standard Library
double sin(double x)
Description
The C library function double sin(double x) returns the sine of a radian
angle x.
Declaration
Following is the declaration for sin() function.
double sin(double x)
Parameters
x -- This is the floating point value representing an angle expressed in
radians.
Return Value
This function returns sine of x.
Example
The following example shows the usage of sin() function.
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double x, ret, val;
x = 45.0;
val = PI / 180;
ret = sin(x*val);
printf("The sine of %lf is %lf degrees", x, ret);
return(0);
57
C Standard Library
Let us compile and run the above program to produce the following result:
double sinh(double x)
Description
The C library function double sinh(double x) returns the hyperbolic sine of x.
Declaration
Following is the declaration for sinh() function.
double sinh(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns hyperbolic sine of x.
Example
The following example shows the usage of sinh() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x, ret;
x = 0.5;
ret = sinh(x);
printf("The hyperbolic sine of %lf is %lf degrees", x, ret);
return(0);
}
Let us compile and run the above program, this will produce the following result:
58
C Standard Library
double tanh(double x)
Description
The C library function double tanh(double x) returns the hyperbolic tangent
of x.
Declaration
Following is the declaration for tanh() function.
double tanh(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns hyperbolic tangent of x.
Example
The following example shows the usage of tanh() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x, ret;
x = 0.5;
ret = tanh(x);
printf("The hyperbolic tangent of %lf is %lf degrees", x, ret);
return(0);
}
Let us compile and run the above program that will produce the following result:
double exp(double x)
Description
59
C Standard Library
Declaration
Following is the declaration for exp() function.
double exp(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns the exponential value of x.
Example
The following example shows the usage of exp() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x = 0;
return(0);
}
Let us compile and run the above program that will produce the following result:
60
C Standard Library
Declaration
Following is the declaration for frexp() function.
Parameters
x -- This is the floating point value to be computed.
exponent -- This is the pointer to an int object where the value of the
exponent is to be stored.
Return Value
This function returns the normalized fraction. If the argument x is not zero, the
normalized fraction is x times a power of two, and its absolute value is always in
the range 1/2 (inclusive) to 1 (exclusive). If x is zero, then the normalized
fraction is zero and zero is stored in exp.
Example
The following example shows the usage of frexp() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x = 1024, fraction;
int e;
return(0);
}
Let us compile and run the above program to produce the following result:
61
C Standard Library
Declaration
Following is the declaration for ldexp() function.
Parameters
x -- This is the floating point value representing the significand.
Return Value
This function returns x * 2 exp
Example
The following example shows the usage of ldexp() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x, ret;
int n;
x = 0.65;
n = 3;
ret = ldexp(x ,n);
printf("%f * 2^%d = %f\n", x, n, ret);
return(0);
}
Let us compile and run the above program that will produce the following result:
62
C Standard Library
double log(double x)
Description
The C library function double log(double x) returns the natural logarithm
(base-e logarithm) of x.
Declaration
Following is the declaration for log() function.
double log(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns natural logarithm of x.
Example
The following example shows the usage of log() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x, ret;
x = 2.7;
/* finding log(2.7) */
ret = log(x);
printf("log(%lf) = %lf", x, ret);
return(0);
}
Let us compile and run the above program that will produce the following result:
log(2.700000) = 0.993252
double log10(double x)
Description
63
C Standard Library
Declaration
Following is the declaration for log10() function.
double log10(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns the common logarithm of x, for values of x greater than
zero.
Example
The following example shows the usage of log10() function.
#include <stdio.h>
#include <math.h>
int main ()
{
double x, ret;
x = 10000;
return(0);
}
Let us compile and run the above program that will produce the following result:
log10(10000.000000) = 4.000000
64
C Standard Library
Declaration
Following is the declaration for modf() function.
Parameters
x -- This is the floating point value.
Return Value
This function returns the fractional part of x, with the same sign.
Example
The following example shows the usage of modf() function.
#include<stdio.h>
#include<math.h>
int main ()
{
double x, fractpart, intpart;
x = 8.123456;
fractpart = modf(x, &intpart);
return(0);
}
Let us compile and run the above program that will produce the following result:
65
C Standard Library
Declaration
Following is the declaration for pow() function.
Parameters
x -- This is the floating point base value.
Return Value
This function returns the result of raising x to the power y.
Example
The following example shows the usage of pow() function.
#include <stdio.h>
#include <math.h>
int main ()
{
printf("Value 8.0 ^ 3 = %lf\n", pow(8.0, 3));
return(0);
}
Let us compile and run the above program that will produce the following result:
double sqrt(double x)
Description
The C library function double sqrt(double x) returns the square root of x.
66
C Standard Library
Declaration
Following is the declaration for sqrt() function.
double sqrt(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns the square root of x.
Example
The following example shows the usage of sqrt() function.
#include <stdio.h>
#include <math.h>
int main ()
{
return(0);
}
Let us compile and run the above program that will produce the following result:
double ceil(double x)
Description
The C library function double ceil(double x) returns the smallest integer value
greater than or equal to x.
Declaration
Following is the declaration for ceil() function.
double ceil(double x)
67
C Standard Library
Parameters
x -- This is the floating point value.
Return Value
This function returns the smallest integral value not less than x.
Example
The following example shows the usage of ceil() function.
#include <stdio.h>
#include <math.h>
int main ()
{
float val1, val2, val3, val4;
val1 = 1.6;
val2 = 1.2;
val3 = 2.8;
val4 = 2.3;
return(0);
}
Let us compile and run the above program that will produce the following result:
value1 = 2.0
value2 = 2.0
value3 = 3.0
value4 = 3.0
double fabs(double x)
Description
68
C Standard Library
Declaration
Following is the declaration for fabs() function.
double fabs(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns the absolute value of x.
Example
The following example shows the usage of fabs() function.
#include <stdio.h>
#include <math.h>
int main ()
{
int a, b;
a = 1234;
b = -344;
return(0);
}
Let us compile and run the above program that will produce the following result:
double floor(double x)
Description
The C library function double floor(double x) returns the largest integer value
less than or equal to x.
69
C Standard Library
Declaration
Following is the declaration for floor() function.
double floor(double x)
Parameters
x -- This is the floating point value.
Return Value
This function returns the largest integral value not greater than x.
Example
The following example shows the usage of floor() function.
#include <stdio.h>
#include <math.h>
int main ()
{
float val1, val2, val3, val4;
val1 = 1.6;
val2 = 1.2;
val3 = 2.8;
val4 = 2.3;
return(0);
}
Let us compile and run the above program that will produce the following result:
Value1 = 1.0
Value2 = 1.0
Value3 = 2.0
70
C Standard Library
Value4 = 2.0
Declaration
Following is the declaration for fmod() function.
Parameters
x -- This is the floating point value with the division numerator i.e. x.
y -- This is the floating point value with the division denominator i.e. y.
Return Value
This function returns the remainder of dividing x/y.
Example
The following example shows the usage of fmod() function.
#include <stdio.h>
#include <math.h>
int main ()
{
float a, b;
int c;
a = 9.2;
b = 3.7;
c = 2;
printf("Remainder of %f / %d is %lf\n", a, c, fmod(a,c));
printf("Remainder of %f / %f is %lf\n", a, b, fmod(a,b));
return(0);
}
Let us compile and run the above program that will produce the following result:
71
C Standard Library
72
C Standard Library
8. <SETJMP.H>
Introduction
The setjmp.h header defines the macro setjmp(), one function longjmp(), and
one variable type jmp_buf, for bypassing the normal function call and return
discipline.
Library Variables
Following is the variable type defined in the header setjmp.h:
1 jmp_buf
Library Macros
There is only one macro defined in this library:
73
C Standard Library
returns zero but if it returns from a longjmp() function call, then it returns the
value passed to longjmp as a second argument.
Declaration
Following is the declaration for setjmp() macro.
Parameters
environment -- This is the object of type jmp_buf where the
environment information is stored.
Return Value
This macro may return more than once. First time, on its direct invocation, it
always returns zero. When longjmp is called with the information set to the
environment, the macro returns again; now it returns the value passed to
longjmp as second argument.
Example
The following example shows the usage of setjmp() macro.
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
int main()
{
int val;
jmp_buf env_buffer;
return(0);
74
C Standard Library
Let us compile and run the above program, this will produce the following result:
Library Functions
Following is the only one function defined in the header setjmp.h:
This function restores the environment saved by the most recent call
to setjmp() macro in the same invocation of the program with the
corresponding jmp_buf argument.
Declaration
Following is the declaration for longjmp() function.
Parameters
environment -- This is the object of type jmp_buf containing information
to restore the environment at the setjmp's calling point.
Return Value
75
C Standard Library
Example
The following example shows the usage of longjmp() function.
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
int main()
{
int val;
jmp_buf env_buffer;
return(0);
}
Let us compile and run the above program that will produce the following result:
76
C Standard Library
9. <SIGNAL.H>
Introduction
The signal.h header defines a variable type sig_atomic_t, two function calls,
and several macros to handle different signals reported during a program's
execution.
Library Variables
Following is the variable type defined in the header signal.h:
1 sig_atomic_t
Library Macros
Following are the macros defined in the header signal.h and these macros will be
used in two functions listed below. The SIG_ macros are used with the signal
function to define signal functions.
1 SIG_DFL
2 SIG_ERR
3 SIG_IGN
Signal ignore.
The SIG macros are used to represent a signal number in the following
conditions:
77
C Standard Library
1 SIGABRT
2 SIGFPE
3 SIGILL
Illegal operation.
4 SIGINT
5 SIGSEGV
6 SIGTERM
Termination request.
Library Functions
Following are the functions defined in the header signal.h:
Declaration
Following is the declaration for signal() function.
Parameters
sig -- This is the signal number to which a handling function is set. The
following are few important standard signal numbers:
macro signal
SIG_DFL Default handling: The signal is handled by the default action for that
particular signal.
Return Value
79
C Standard Library
This function returns the previous value of the signal handler, or SIG_ERR on
error.
Example
The following example shows the usage of signal() function.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
void sighandler(int);
int main()
{
signal(SIGINT, sighandler);
while(1)
{
printf("Going to sleep for a second...\n");
sleep(1);
}
return(0);
}
Let us compile and run the above program that will produce the following result
and program will go in infinite loop. To come out of the program we used CTRL
+ C keys.
80
C Standard Library
Declaration
Following is the declaration for signal() function.
Parameters
sig -- This is the signal number to send. Following are few important
standard signal constants:
macro signal
81
C Standard Library
Return Value
This function returns zero if successful, and non-zero otherwise.
Example
The following example shows the usage of signal() function.
#include <signal.h>
#include <stdio.h>
void signal_catchfunc(int);
int main()
{
int ret;
printf("Exiting...\n");
return(0);
}
82
C Standard Library
Let us compile and run the above program to produce the following result:
83
C Standard Library
10. <STDARG.H>
Introduction
The stdarg.h header defines a variable type va_list and three macros which can
be used to get the arguments in a function when the number of arguments are
not known i.e. variable number of arguments.
A function of variable arguments is defined with the ellipsis (,...) at the end of
the parameter list.
Library Variables
Following is the variable type defined in the header stdarg.h:
1 va_list
Library Macros
Following are the macros defined in the header stdarg.h:
This macro retrieves the next argument in the parameter list of the
function with type type.
84
C Standard Library
Declaration
Following is the declaration for va_start() macro.
Parameters
ap -- This is the object of va_list and it will hold the information needed
to retrieve the additional arguments with va_arg.
last_arg -- This is the last known fixed argument being passed to the
function.
Return Value
NA
Example
The following example shows the usage of va_start() macro.
#include<stdarg.h>
#include<stdio.h>
int main(void)
{
printf("Sum of 10, 20 and 30 = %d\n", sum(3, 10, 20, 30) );
printf("Sum of 4, 20, 25 and 30 = %d\n", sum(4, 4, 20, 25, 30) );
return 0;
}
85
C Standard Library
va_start(ap, num_args);
for(i = 0; i < num_args; i++)
{
val += va_arg(ap, int);
}
va_end(ap);
return val;
}
Let us compile and run the above program to produce the following result:
Declaration
Following is the declaration for va_arg() macro.
Parameters
ap -- This is the object of type va_list with information about the
additional arguments and their retrieval state. This object should be
initialized by an initial call to va_start before the first call to va_arg.
86
C Standard Library
type -- This is a type name. This type name is used as the type of the
expression, this macro expands to.
Return Value
This macro returns the next additional argument as an expression of type type.
Example
The following example shows the usage of va_arg() macro.
#include <stdarg.h>
#include <stdio.h>
int main()
{
printf("Sum of 15 and 56 = %d\n", sum(2, 15, 56) );
return 0;
}
va_start(ap, num_args);
for(i = 0; i < num_args; i++)
{
val += va_arg(ap, int);
}
va_end(ap);
return val;
}
Let us compile and run the above program to produce the following result:
87
C Standard Library
Sum of 15 and 56 = 71
Declaration
Following is the declaration for va_end() macro.
Parameters
ap -- This is the va_list object previously initialized by va_start in the
same function.
Return Value
This macro does not return any value.
Example
The following example shows the usage of va_end() macro.
#include <stdarg.h>
#include <stdio.h>
int main()
{
printf("15 * 12 = %d\n", mul(2, 15, 12) );
return 0;
}
88
C Standard Library
int i;
va_start(ap, num_args);
for(i = 0; i < num_args; i++)
{
val *= va_arg(ap, int);
}
va_end(ap);
return val;
}
Let us compile and run the above program to produce the following result:
15 * 12 = 180
89
C Standard Library
11. <STDDEF.H>
Introduction
The stddef.h header defines various variable types and macros. Many of these
definitions also appear in other headers.
Library Variables
Following are the variable types defined in the header stddef.h:
1 ptrdiff_t
This is the signed integral type and is the result of subtracting two
pointers.
2 size_t
3 wchar_t
Library Macros
Following are the macros defined in the header stddef.h:
1 NULL
2 offsetof(type, member-designator)
90
C Standard Library
NULL
Description
The C library Macro NULL is the value of a null pointer constant. It may be
defined as ((void*)0), 0 or 0L depending on the compiler vendor.
Declaration
Following may be the declaration for NULL Macro depending on the compiler.
or
#define NULL 0L
or
#define NULL 0
Parameters
NA
Return Value
NA
Example
The following example shows the usage of NULL Macro.
#include <stddef.h>
#include <stdio.h>
int main ()
{
FILE *fp;
fp = fopen("file.txt", "r");
if( fp != NULL )
91
C Standard Library
{
printf("Opend file file.txt successfully\n");
fclose(fp);
}
fp = fopen("nofile.txt", "r");
if( fp == NULL )
{
printf("Could not open file nofile.txt\n");
}
return(0);
}
Assuming we have an existing file file.txt but nofile.txt does not exist. Let us
compile and run the above program that will produce the following result:
offsetof(type, member-designator)
Description
The C library macro offsetof(type, member-designator) results in a constant
integer of type size_t which is the offset in bytes of a structure member from
the beginning of the structure. The member is given by member-designator, and
the name of the structure is given in type.
Declaration
Following is the declaration for offsetof() Macro.
offsetof(type, member-designator)
Parameters
type -- This is the class type in which member-designator is a valid
member designator.
Return Value
This macro returns the value of type size_t which is the offset value of member
in type.
92
C Standard Library
Example
The following example shows the usage of offsetof() Macro.
#include <stddef.h>
#include <stdio.h>
struct address {
char name[50];
char street[50];
int phone;
};
int main()
{
printf("name offset = %d byte in address structure.\n",
offsetof(struct address, name));
return(0);
}
Let us compile and run the above program, this will produce the following result:
93
C Standard Library
94
C Standard Library
12. <STDIO.H>
Introduction
The stdio.h header defines three variable types, several macros, and various
functions for performing input and output.
Library Variables
Following are the variable types defined in the header stdio.h:
1 size_t
2 FILE
This is an object type suitable for storing information for a file stream.
3 fpos_t
Library Macros
Following are the macros defined in the header stdio.h:
1 NULL
95
C Standard Library
3 BUFSIZ
This macro is an integer, which represents the size of the buffer used
by the setbuf function.
4 EOFM
5 FOPEN_MAX
6 FILENAME_MAX
7 L_tmpnam
9 TMP_MAX
Library Functions
Following are the functions defined in the header stdio.h:
96
C Standard Library
Follow the same sequence of functions for better understanding and to make use
of Try it (online compiler) option, because file created in the first function will be
used in subsequent functions.
Clears the end-of-file and error indicators for the given stream.
Gets the current file position of the stream and writes it to pos.
Reads data from the given stream into the array pointed to by ptr.
Associates a new filename with the given open stream and same time
closing the old file in stream.
Sets the file position of the stream to the given offset. The
argument offset signifies the number of bytes to seek from the
97
C Standard Library
Sets the file position of the given stream to the given position. The
argument pos is a position given by the function fgetpos.
13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
Writes data from the array pointed to by ptr to the given stream.
Sets the file position to the beginning of the file of the given stream.
19 FILE *tmpfile(void)
98
C Standard Library
Gets the next character (an unsigned char) from the specified stream
and advances the position indicator for the stream.
Reads a line from the specified stream and stores it into the string
pointed to by str. It stops when either (n-1) characters are read, the
newline character is read, or the end-of-file is reached, whichever
comes first.
99
C Standard Library
Writes a string to the specified stream up to but not including the null
character.
Gets the next character (an unsigned char) from the specified stream
and advances the position indicator for the stream.
35 int getchar(void)
Reads a line from stdin and stores it into the string pointed to, by str.
It stops when either the newline character is read or when the end-of-
file is reached, whichever comes first.
Pushes the character char (an unsigned char) onto the specified
stream so that the next character is read.
100
C Standard Library
Declaration
Following is the declaration for fclose() function.
Parameters
stream -- This is the pointer to a FILE object that specifies the stream to
be closed.
Return Value
This method returns zero if the stream is successfully closed. On failure, EOF is
returned.
Example
The following example shows the usage of fclose() function.
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("file.txt", "w");
return(0);
}
101
C Standard Library
Let us compile and run the above program that will create a file file.txt, and
then it will write following text line and finally it will close the file
using fclose() function.
This is tutorialspoint.com
Declaration
Following is the declaration for clearerr() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
This should not fail and do not set the external variable errno but in case it
detects that its argument is not a valid stream, it must return -1 and set errno
to EBADF.
Example
The following example shows the usage of clearerr() function.
#include <stdio.h>
int main()
{
FILE *fp;
char c;
fp = fopen("file.txt", "w");
c = fgetc(fp);
if( ferror(fp) )
{
printf("Error in reading from file : file.txt\n");
}
102
C Standard Library
clearerr(fp);
if( ferror(fp) )
{
printf("Error in reading from file : file.txt\n");
}
fclose(fp);
return(0);
}
Assuming we have a text file file.txt, which is an empty file, let us compile and
run the above program, this will produce the following result because we try to
read a file which we opened in write only mode.
Declaration
Following is the declaration for feof() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
This function returns a non-zero value when End-of-File indicator associated with
the stream is set, else zero is returned.
Example
The following example shows the usage of feof() function.
#include <stdio.h>
int main ()
{
FILE *fp;
103
C Standard Library
int c;
fp = fopen("file.txt","r");
if(fp == NULL)
{
perror("Error in opening file");
return(-1);
}
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Assuming we have a text file file.txt, which has the following content. This file
will be used as an input for our example program:
This is tutorialspoint.com
Let us compile and run the above program, this will produce the following result:
This is tutorialspoint.com
Declaration
Following is the declaration for ferror() function.
104
C Standard Library
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
If the error indicator associated with the stream was set, the function returns a
non-zero value else, it returns a zero value.
Example
The following example shows the usage of ferror() function.
#include <stdio.h>
int main()
{
FILE *fp;
char c;
fp = fopen("file.txt", "w");
c = fgetc(fp);
if( ferror(fp) )
{
printf("Error in reading from file : file.txt\n");
}
clearerr(fp);
if( ferror(fp) )
{
printf("Error in reading from file : file.txt\n");
}
fclose(fp);
return(0);
}
Assuming we have a text file file.txt, which is an empty file. Let us compile and
run the above program that will produce the following result because we try to
read a file which we opened in write only mode.
105
C Standard Library
Declaration
Following is the declaration for fflush() function.
Parameters
stream -- This is the pointer to a FILE object that specifies a buffered
stream.
Return Value
This function returns a zero value on success. If an error occurs, EOF is returned
and the error indicator is set (i.e. feof).
Example
The following example shows the usage of fflush() function.
#include <stdio.h>
#include <string.h>
int main()
{
char buff[1024];
106
C Standard Library
sleep(5);
return(0);
}
Let us compile and run the above program that will produce the following result.
Here program keeps buffering the output into buff until it faces first call
to fflush(), after which it again starts buffering the output and finally sleeps for
5 seconds. It sends remaining output to the STDOUT before program comes out.
Declaration
Following is the declaration for fgetpos() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
This function returns zero on success, else non-zero value in case of an error.
Example
The following example shows the usage of fgetpos() function.
#include <stdio.h>
107
C Standard Library
int main ()
{
FILE *fp;
fpos_t position;
fp = fopen("file.txt","w+");
fgetpos(fp, &position);
fputs("Hello, World!", fp);
fsetpos(fp, &position);
fputs("This is going to override previous content", fp);
fclose(fp);
return(0);
}
Let us compile and run the above program to create a file file.txt which will
have the following content. First of all we get the initial position of the file
using fgetpos() function and then we write Hello, World! in the file, but later we
have used fsetpos() function to reset the write pointer at the beginning of the
file and then over-write the file with the following content:
Now let us see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
int n = 0;
fp = fopen("file.txt","r");
while(1)
{
108
C Standard Library
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for fopen() function.
Parameters
filename -- This is the C string containing the name of the file to be
opened.
mode Description
"w" Creates an empty file for writing. If a file with the same name already
exists, its content is erased and the file is considered as a new empty
file.
"a" Appends to a file. Writing operations, append data at the end of the
file. The file is created if it does not exist.
109
C Standard Library
"r+" Opens a file to update both reading and writing. The file must exist.
Return Value
This function returns a FILE pointer. Otherwise, NULL is returned and the global
variable errno is set to indicate the error.
Example
The following example shows the usage of fopen() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * fp;
fclose(fp);
return(0);
}
Let us compile and run the above program that will create a file file.txt with the
following content:
We are in 2012
Now let us see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
110
C Standard Library
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for fread() function.
Parameters
ptr -- This is the pointer to a block of memory with a minimum size
of size*nmemb bytes.
nmemb -- This is the number of elements, each one with a size of size
bytes.
Return Value
111
C Standard Library
The total number of elements successfully read are returned as a size_t object,
which is an integral data type. If this number differs from the nmemb
parameter, then either an error had occurred or the End Of File was reached.
Example
The following example shows the usage of fread() function.
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char c[] = "this is tutorialspoint";
char buffer[20];
return(0);
}
Let us compile and run the above program that will create a file file.txt and
write a content this is tutorialspoint. After that, we use fseek() function to reset
writing pointer to the beginning of the file and prepare the file content which is
as follows:
this is tutorialspoint
112
C Standard Library
Declaration
Following is the declaration for freopen() function.
Parameters
filename -- This is the C string containing the name of the file to be
opened.
mode Description
"w" Creates an empty file for writing. If a file with the same name already
exists then its content is erased and the file is considered as a new
empty file.
"a" Appends to a file. Writing operations appends data at the end of the
file. The file is created if it does not exist.
"r+" Opens a file to update both reading and writing. The file must exist.
stream -- This is the pointer to a FILE object that identifies the stream to
be re-opened.
Return Value
If the file was re-opened successfully, the function returns a pointer to an object
identifying the stream or else, null pointer is returned.
Example
The following example shows the usage of freopen() function.
113
C Standard Library
#include <stdio.h>
int main ()
{
FILE *fp;
fclose(fp);
return(0);
}
Let us compile and run the above program that will send the following line at
STDOUT because initially we did not open stdout:
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
114
C Standard Library
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for fseek() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Constant Description
115
C Standard Library
Example
The following example shows the usage of fseek() function.
#include <stdio.h>
int main ()
{
FILE *fp;
fp = fopen("file.txt","w+");
fputs("This is tutorialspoint.com", fp);
return(0);
}
Let us compile and run the above program that will create a file file.txt with the
following content. Initially program creates the file and writes This is
tutorialspoint.com, but later we had reset the write pointer at 7th position from
the beginning and used puts() statement which over-write the file with the
following content:
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
116
C Standard Library
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for fsetpos() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
This function returns zero value if successful, or else it returns a non-zero value
and sets the global variable errno to a positive value, which can be interpreted
with perror.
Example
The following example shows the usage of fsetpos() function.
#include <stdio.h>
int main ()
{
FILE *fp;
117
C Standard Library
fpos_t position;
fp = fopen("file.txt","w+");
fgetpos(fp, &position);
fputs("Hello, World!", fp);
fsetpos(fp, &position);
fputs("This is going to override previous content", fp);
fclose(fp);
return(0);
}
Let us compile and run the above program to create a file file.txt which will
have the following content. First of all we get the initial position of the file
using fgetpos() function, and then we write Hello, World! in the file but later we
used fsetpos() function to reset the write pointer at the beginning of the file
and then over-write the file with the following content:
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
118
C Standard Library
tab).
For each format specifier in the format string that retrieves data, an
additional argument should be specified. If you want to store the result of
a sscanf operation on a regular variable you should precede its identifier
with the reference operator, i.e. an ampersand sign (&), like: int n; sscanf
(str,"%d",&n);
Return Value
On success, the function returns the number of variables filled. In the case of an
input failure before any data could be successfully read, EOF is returned.
Example
The following example shows the usage of sscanf() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int day, year;
char weekday[20], month[20], dtm[100];
return(0);
}
Let us compile and run the above program that will produce the following result:
163
C Standard Library
Declaration
Following is the declaration for fgetc() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream on
which the operation is to be performed.
Return Value
This function returns the character read as an unsigned char cast to an int or
EOF on end of file or error.
Example
The following example shows the usage of fgetc() function.
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
int n = 0;
fp = fopen("file.txt","r");
if(fp == NULL)
{
perror("Error in opening file");
return(-1);
}
do
{
164
C Standard Library
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}while(1);
fclose(fp);
return(0);
}
Let us assume, we have a text file file.txt, which has the following content. This
file will be used as an input for our example program:
We are in 2012
Now, let us compile and run the above program that will produce the following
result:
We are in 2012
Declaration
Following is the declaration for fgets() function.
Parameters
str -- This is the pointer to an array of chars where the string read is
stored.
stream -- This is the pointer to a FILE object that identifies the stream
where characters are read from.
165
C Standard Library
Return Value
On success, the function returns the same str parameter. If the End-of-File is
encountered and no characters have been read, the contents of str remain
unchanged and a null pointer is returned.
Example
The following example shows the usage of fgets() function.
#include <stdio.h>
int main()
{
FILE *fp;
char str[60];
return(0);
}
Let us assume, we have a text file file.txt, which has the following content. This
file will be used as an input for our example program:
We are in 2012
Now, let us compile and run the above program that will produce the following
result:
166
C Standard Library
We are in 2012
Declaration
Following is the declaration for fputc() function.
Parameters
char -- This is the character to be written. This is passed as its int
promotion.
stream -- This is the pointer to a FILE object that identifies the stream
where the character is to be written.
Return Value
If there are no errors, the same character that has been written is returned. If
an error occurs, EOF is returned and the error indicator is set.
Example
The following example shows the usage of fputc() function.
#include <stdio.h>
int main ()
{
FILE *fp;
int ch;
fp = fopen("file.txt", "w+");
for( ch = 33 ; ch <= 100; ch++ )
{
fputc(ch, fp);
}
fclose(fp);
167
C Standard Library
return(0);
}
Let us compile and run the above program that will create a file file.txt in the
current directory, which will have following content:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for fputs() function.
168
C Standard Library
Parameters
str -- This is an array containing the null-terminated sequence of
characters to be written.
stream -- This is the pointer to a FILE object that identifies the stream
where the string is to be written.
Return Value
This function returns a non-negative value, or else on error it returns EOF.
Example
The following example shows the usage of fputs() function.
#include <stdio.h>
int main ()
{
FILE *fp;
fp = fopen("file.txt", "w+");
fclose(fp);
return(0);
}
Let us compile and run the above program, this will create a file file.txt with the
following content:
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
169
C Standard Library
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for getc() function.
Parameters
stream -- This is the pointer to a FILE object that identifies the stream on
which the operation is to be performed.
Return Value
This function returns the character read as an unsigned char cast to an int or
EOF on end of file or error.
Example
The following example shows the usage of getc() function.
#include<stdio.h>
170
C Standard Library
int main()
{
char c;
return(0);
}
Let us compile and run the above program that will produce the following result:
Enter character: a
Character entered: a
int getchar(void)
Description
The C library function int getchar(void) gets a character (an unsigned char)
from stdin. This is equivalent to getc with stdin as its argument.
Declaration
Following is the declaration for getchar() function.
int getchar(void)
Parameters
NA
Return Value
This function returns the character read as an unsigned char cast to an int or
EOF on end of file or error.
Example
The following example shows the usage of getchar() function.
#include <stdio.h>
171
C Standard Library
int main ()
{
char c;
return(0);
}
Let us compile and run the above program that will produce the following result:
Enter character: a
Character entered: a
Declaration
Following is the declaration for gets() function.
Parameters
str -- This is the pointer to an array of chars where the C string is stored.
Return Value
This function returns str on success, and NULL on error or when end of file
occurs, while no characters have been read.
Example
The following example shows the usage of gets() function.
#include <stdio.h>
172
C Standard Library
int main()
{
char str[50];
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for putc() function.
Parameters
char -- This is the character to be written. The character is passed as its
int promotion.
stream -- This is the pointer to a FILE object that identifies the stream
where the character is to be written.
Return Value
This function returns the character written as an unsigned char cast to an int or
EOF on error.
Example
The following example shows the usage of putc() function.
173
C Standard Library
#include <stdio.h>
int main ()
{
FILE *fp;
int ch;
fp = fopen("file.txt", "w");
for( ch = 33 ; ch <= 100; ch++ )
{
putc(ch, fp);
}
fclose(fp);
return(0);
}
Let us compile and run the above program that will create a file file.txt in the
current directory which will have following content:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1)
{
c = fgetc(fp);
if( feof(fp) )
{
174
C Standard Library
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for putchar() function.
Parameters
char -- This is the character to be written. This is passed as its int
promotion.
Return Value
This function returns the character written as an unsigned char cast to an int or
EOF on error.
Example
The following example shows the usage of putchar() function.
#include <stdio.h>
int main ()
{
char ch;
175
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Declaration
Following is the declaration for puts() function.
Parameters
str -- This is the C string to be written.
Return Value
If successful, non-negative value is returned. On error, the function returns EOF.
Example
The following example shows the usage of puts() function.
#include <stdio.h>
#include <string.h>
int main()
{
char str1[15];
char str2[15];
strcpy(str1, "tutorialspoint");
strcpy(str2, "compileonline");
puts(str1);
puts(str2);
176
C Standard Library
return(0);
}
Let us compile and run the above program to produce the following result:
tutorialspoint
compileonline
Declaration
Following is the declaration for ungetc() function.
Parameters
char -- This is the character to be put back. This is passed as its int
promotion.
Return Value
If successful, it returns the character that was pushed back otherwise, EOF is
returned and the stream remains unchanged.
Example
The following example shows the usage of ungetc() function.
#include <stdio.h>
int main ()
{
FILE *fp;
int c;
char buffer [256];
177
C Standard Library
fp = fopen("file.txt", "r");
if( fp == NULL )
{
perror("Error in opening file");
return(-1);
}
while(!feof(fp))
{
c = getc (fp);
/* replace ! with + */
if( c == '!' )
{
ungetc ('+', fp);
}
else
{
ungetc(c, fp);
}
fgets(buffer, 255, fp);
fputs(buffer, stdout);
}
return(0);
}
Let us assume, we have a text file file.txt, which contains the following data.
This file will be used as an input for our example program:
Now let us compile and run the above program that will produce the following
result:
178
C Standard Library
Declaration
Following is the declaration for perror() function.
Parameters
str -- This is the C string containing a custom message to be printed
before the error message itself.
Return Value
This function does not return any value.
Example
The following example shows the usage of perror() function.
#include <stdio.h>
int main ()
{
FILE *fp;
return(0);
179
C Standard Library
Let us compile and run the above program that will produce the following result
because we are trying to open a file which does not exist:
180
C Standard Library
13. <STDLIB.H>
Introduction
The stdlib.h header defines four variable types, several macros, and various
functions for performing general functions.
Library Variables
Following are the variable types defined in the header stdlib.h:
1 size_t
2 wchar_t
3 div_t
4 ldiv_t
Library Macros
Following are the macros defined in the header stdlib.h:
1 NULL
2 EXIT_FAILURE
181
C Standard Library
This is the value for the exit function to return in case of failure.
3 EXIT_SUCCESS
This is the value for the exit function to return in case of success.
4 RAND_MAX
5 MB_CUR_MAX
Library Functions
Following are the functions defined in the header stdio.h:
Converts the string pointed to, by the argument str to an integer (type
int).
Converts the string pointed to, by the argument str to a long integer
(type long int).
Converts the string pointed to, by the argument str to a long integer
(type long int).
182
C Standard Library
6 unsigned long int strtoul(const char *str, char **endptr, int base)
11 void abort(void)
183
C Standard Library
16 void *bsearch(const void *key, const void *base, size_t nitems, size_t
size, int (*compar)(const void *, const void *))
Sorts an array.
18 int abs(int x)
22 int rand(void)
184
C Standard Library
Declaration
Following is the declaration for atof() function.
Parameters
str -- This is the string having the representation of a floating-point
number.
Return Value
This function returns the converted floating point number as a double value. If
no valid conversion could be performed, it returns zero (0.0).
Example
The following example shows the usage of atof() function.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
float val;
char str[20];
185
C Standard Library
strcpy(str, "98993489");
val = atof(str);
printf("String value = %s, Float value = %f\n", str, val);
strcpy(str, "tutorialspoint.com");
val = atof(str);
printf("String value = %s, Float value = %f\n", str, val);
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for atoi() function.
Parameters
str -- This is the string representation of an integral number.
Return Value
This function returns the converted integral number as an int value. If no valid
conversion could be performed, it returns zero.
Example
The following example shows the usage of atoi() function.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
186
C Standard Library
int main()
{
int val;
char str[20];
strcpy(str, "98993489");
val = atoi(str);
printf("String value = %s, Int value = %d\n", str, val);
strcpy(str, "tutorialspoint.com");
val = atoi(str);
printf("String value = %s, Int value = %d\n", str, val);
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for atol() function.
Parameters
str -- This is the string containing the representation of an integral
number.
Return Value
This function returns the converted integral number as a long int. If no valid
conversion could be performed, it returns zero.
Example
187
C Standard Library
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
long val;
char str[20];
strcpy(str, "98993489");
val = atol(str);
printf("String value = %s, Long value = %ld\n", str, val);
strcpy(str, "tutorialspoint.com");
val = atol(str);
printf("String value = %s, Long value = %ld\n", str, val);
return(0);
}
Let us compile and run the above program, this will produce the following result:
Declaration
Following is the declaration for strtod() function.
188
C Standard Library
Parameters
str -- This is the value to be converted to a string.
Return Value
This function returns the converted floating point number as a double value, else
zero value (0.0) is returned.
Example
The following example shows the usage of strtod() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = "20.30300 This is test";
char *ptr;
double ret;
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strtol() function.
Parameters
str -- This is the string containing the representation of an integral
number.
Return Value
This function returns the converted integral number as a long int value, else zero
value is returned.
Example
The following example shows the usage of strtol() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = "2030300 This is test";
char *ptr;
long ret;
return(0);
}
Let us compile and run the above program that will produce the following result:
190
C Standard Library
unsigned long int strtoul(const char *str, char **endptr, int base)
Description
The C library function unsigned long int strtoul(const char *str, char
**endptr, int base) function converts the initial part of the string in str to an
unsigned long int value according to the given base, which must be between 2
and 36 inclusive, or be the special value 0.
Declaration
Following is the declaration for strtoul() function.
unsigned long int strtoul(const char *str, char **endptr, int base)
Parameters
str -- This is the string containing the representation of an unsigned
integral number.
Return Value
This function returns the converted integral number as a long int value. If no
valid conversion could be performed, a zero value is returned.
Example
The following example shows the usage of strtoul() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = "2030300 This is test";
char *ptr;
long ret;
return(0);
191
C Standard Library
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for calloc() function.
Parameters
nitems -- This is the number of elements to be allocated.
Return Value
This function returns a pointer to the allocated memory, or NULL if the request
fails.
Example
The following example shows the usage of calloc() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n;
int *a;
192
C Standard Library
a = (int*)calloc(n, sizeof(int));
printf("Enter %d numbers:\n",n);
for( i=0 ; i < n ; i++ )
{
scanf("%d",&a[i]);
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for free() function.
Parameters
ptr -- This is the pointer to a memory block previously allocated with
malloc, calloc or realloc to be deallocated. If a null pointer is passed as
argument, no action occurs.
193
C Standard Library
Return Value
This function does not return any value.
Example
The following example shows the usage of free() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str;
/* Reallocating memory */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s, Address = %u\n", str, str);
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for malloc() function.
Parameters
size -- This is the size of the memory block, in bytes.
Return Value
This function returns a pointer to the allocated memory, or NULL if the request
fails.
Example
The following example shows the usage of malloc() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str;
/* Reallocating memory */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s, Address = %u\n", str, str);
free(str);
return(0);
}
195
C Standard Library
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for realloc() function.
Parameters
ptr -- This is the pointer to a memory block previously allocated with
malloc, calloc or realloc to be reallocated. If this is NULL, a new block is
allocated and a pointer to it is returned by the function.
size -- This is the new size for the memory block, in bytes. If it is 0 and
ptr points to an existing block of memory, the memory block pointed by
ptr is deallocated and a NULL pointer is returned.
Return Value
This function returns a pointer to the newly allocated memory, or NULL if the
request fails.
Example
The following example shows the usage of realloc() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str;
196
C Standard Library
/* Reallocating memory */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s, Address = %u\n", str, str);
free(str);
return(0);
}
Let us compile and run the above program that will produce the following result:
void abort(void)
Description
The C library function void abort(void) aborts the program execution and
comes out directly from the place of the call.
Declaration
Following is the declaration for abort() function.
void abort(void)
Parameters
NA
Return Value
This function does not return any value.
Example
The following example shows the usage of abort() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
197
C Standard Library
{
FILE *fp;
return(0);
}
Let us compile and run the above program that will produce the following result
when it tries to open nofile.txt file, which does not exist:
Declaration
Following is the declaration for atexit() function.
Parameters
func -- This is the function to be called at the termination of the program.
Return Value
198
C Standard Library
Example
The following example shows the usage of atexit() function.
#include <stdio.h>
#include <stdlib.h>
void functionA ()
{
printf("This is functionA\n");
}
int main ()
{
/* register the termination function */
atexit(functionA );
return(0);
}
Let us compile and run the above program that will produce the following result:
199
C Standard Library
Declaration
Following is the declaration for exit() function.
Parameters
status -- This is the status value returned to the parent process.
Return Value
This function does not return any value.
Example
The following example shows the usage of exit() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf("Start of the program....\n");
return(0);
}
Let us compile and run the above program that will produce the following result:
200
C Standard Library
Declaration
Following is the declaration for getenv() function.
Parameters
name -- This is the C string containing the name of the requested
variable.
Return Value
This function returns a null-terminated string with the value of the requested
environment variable, or NULL if that environment variable does not exist.
Example
The following example shows the usage of getenv() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf("PATH : %s\n", getenv("PATH"));
printf("HOME : %s\n", getenv("HOME"));
printf("ROOT : %s\n", getenv("ROOT"));
return(0);
}
Let us compile and run the above program that will produce the following result:
PATH : /sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
HOME : /
ROOT : (null)
201
C Standard Library
Declaration
Following is the declaration for system() function.
Parameters
command -- This is the C string containing the name of the requested
variable.
Return Value
The value returned is -1 on error, and the return status of the command
otherwise.
Example
The following example shows the usage of system() function to list down all the
files and directories in the current directory under unix machine.
#include <stdio.h>
#include <string.h>
int main ()
{
char command[50];
return(0);
}
Let us compile and run the above program that will produce the following result
on my unix machine:
202
C Standard Library
The following example shows the usage of system() function to list down all the
files and directories in the current directory under windows machine.
#include <stdio.h>
#include <string.h>
int main ()
{
char command[50];
return(0);
}
Let us compile and run the above program that will produce the following result
on my windows machine:
a.txt
amit.doc
sachin
saurav
file.c
void *bsearch(const void *key, const void *base, size_t nitems, size_t
size, int (*compar)(const void *, const void *))
Description
The C library function void *bsearch(const void *key, const void *base, size_t
nitems, size_t size, int (*compar)(const void *, const void *)) function searches
an array of nitems objects, the initial member of which is pointed to by base, for
a member that matches the object pointed to, by key. The size of each member
of the array is specified by size.
The contents of the array should be in ascending sorted order according to the
comparison function referenced by compar.
Declaration
Following is the declaration for bsearch() function.
203
C Standard Library
void *bsearch(const void *key, const void *base, size_t nitems, size_t
size, int (*compar)(const void *, const void *))
Parameters
key -- This is the pointer to the object that serves as key for the search,
type-casted as a void*.
base -- This is the pointer to the first object of the array where the search
is performed, type-casted as a void*.
Return Value
This function returns a pointer to an entry in the array that matches the search
key. If key is not found, a NULL pointer is returned.
Example
The following example shows the usage of bsearch() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int *item;
int key = 32;
204
C Standard Library
{
printf("Found item = %d\n", *item);
}
else
{
printf("Item = %d could not be found\n", *item);
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Found item = 32
Declaration
Following is the declaration for qsort() function.
Parameters
base -- This is the pointer to the first element of the array to be sorted.
Return Value
This function does not return any value.
Example
The following example shows the usage of qsort() function.
#include <stdio.h>
205
C Standard Library
#include <stdlib.h>
int main()
{
int n;
return(0);
}
Let us compile and run the above program that will produce the following result:
206
C Standard Library
int abs(int x)
Description
The C library function int abs(int x) returns the absolute value of int x.
Declaration
Following is the declaration for abs() function.
int abs(int x)
Parameters
x -- This is the integral value.
Return Value
This function returns the absolute value of x.
Example
The following example shows the usage of abs() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int a, b;
a = abs(5);
printf("value of a = %d\n", a);
b = abs(-10);
printf("value of b = %d\n", b);
return(0);
}
Let us compile and run the above program, this will produce the following result:
value of a = 5
value of b = 10
207
C Standard Library
Declaration
Following is the declaration for div() function.
Parameters
numer -- This is the numerator.
Return Value
This function returns the value in a structure defined in <cstdlib>, which has two
members. For div_t: int quot; int rem;
Example
The following example shows the usage of div() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
div_t output;
return(0);
}
Let us compile and run the above program that will produce the following result:
208
C Standard Library
Declaration
Following is the declaration for labs() function.
Parameters
x -- This is the integral value.
Return Value
This function returns the absolute value of x.
Example
The following example shows the usage of labs() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
long int a,b;
a = labs(65987L);
printf("Value of a = %ld\n", a);
b = labs(-1005090L);
printf("Value of b = %ld\n", b);
return(0);
}
209
C Standard Library
Let us compile and run the above program that will produce the following result:
Value of a = 65987
Value of b = 1005090
Declaration
Following is the declaration for ldiv() function.
Parameters
numer -- This is the numerator.
Return Value
This function returns the value in a structure defined in <cstdlib>, which has two
members. For ldiv_t: long quot; long rem;
Example
The following example shows the usage of ldiv() function.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
ldiv_t output;
return(0);
210
C Standard Library
Let us compile and run the above program that will produce the following result:
Quotient = 3
Remainder = 10000
int rand(void)
Description
The C library function int rand(void) returns a pseudo-random number in the
range of 0 to RAND_MAX.
Declaration
Following is the declaration for rand() function.
int rand(void)
Parameters
NA
Return Value
This function returns an integer value between 0 and RAND_MAX.
Example
The following example shows the usage of rand() function.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n;
time_t t;
n = 5;
211
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
38
45
29
29
47
Declaration
Following is the declaration for srand() function.
Parameters
seed -- This is an integer value to be used as seed by the pseudo-random
number generator algorithm.
Return Value
This function does not return any value.
Example
The following example shows the usage of srand() function.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
212
C Standard Library
int main()
{
int i, n;
time_t t;
n = 5;
return(0);
}
Let us compile and run the above program that will produce the following result:
38
45
29
29
47
Declaration
Following is the declaration for mblen() function.
Parameters
213
C Standard Library
Return Value
The mblen() function returns the number of bytes passed from the multi-byte
sequence starting at str, if a non-null wide character was recognized. It returns
0, if a null wide character was recognized. It returns -1, if an invalid multi-byte
sequence was encountered or if it could not parse a complete multi-byte
character.
Example
The following example shows the usage of mblen() function.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int len;
char *pmbnull = NULL;
char *pmb = (char *)malloc( MB_CUR_MAX );
wchar_t *pwc = L"Hi";
wchar_t *pwcs = (wchar_t *)malloc( sizeof( wchar_t ));
pmb = NULL;
214
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for mbstowcs() function.
Parameters
pwcs -- This is the pointer to an array of wchar_t elements that is long
enough to store a wide string max characters long.
Return Value
This function returns the number of characters translated, excluding the ending
null-character. If an invalid multi-byte character is encountered, a -1 value is
returned.
Example
The following example shows the usage of mbstowcs() function.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
215
C Standard Library
int main()
{
int len;
char *pmbnull = NULL;
char *pmb = (char *)malloc( MB_CUR_MAX );
wchar_t *pwc = L"Hi";
wchar_t *pwcs = (wchar_t *)malloc( sizeof( wchar_t ));
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for mbtowc() function.
216
C Standard Library
Parameters
pwc -- This is the pointer to an object of type wchar_t.
Return Value
If str is not NULL, the mbtowc() function returns the number of consumed
bytes starting at str, or 0 if s points to a null byte, or -1 upon failure.
If str is NULL, the mbtowc() function returns non-zero if the encoding has
non-trivial shift state, or zero if the encoding is stateless.
Example
The following example shows the usage of mbtowc() function.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *str = "This is tutorialspoint.com";
wchar_t mb[100];
int len;
wprintf(L"%ls \n", mb );
return(0);
}
Let us compile and run the above program that will produce the following result
which will be in multi-byte, a kind of binary output.
217
C Standard Library
???
Declaration
Following is the declaration for wcstombs() function.
Parameters
str -- This is the pointer to an array of char elements at least n bytes
long.
Return Value
This function returns the number of bytes (not characters) converted and written
to str, excluding the ending null-character. If an invalid multibyte character is
encountered, -1 value is returned.
Example
The following example shows the usage of wcstombs() function.
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 50
int main()
{
size_t ret;
char *MB = (char *)malloc( BUFFER_SIZE );
wchar_t *WC = L"http://www.tutorialspoint.com";
return(0);
}
Let us compile and run the above program that will produce the following result:
Characters converted = 29
Multibyte character = http://www.tutorialspoint.com
Declaration
Following is the declaration for wctomb() function.
Parameters
str -- This is the pointer to an array large enough to hold a multibyte
character,
Return Value
If str is not NULL, the wctomb() function returns the number of bytes that
have been written to the byte array at str. If wchar cannot be represented
as a multibyte sequence, -1 is returned.
If str is NULL, the wctomb() function returns non-zero if the encoding has
non-trivial shift state, or zero if the encoding is stateless.
Example
The following example shows the usage of wctomb() function.
#include <stdio.h>
#include <stdlib.h>
219
C Standard Library
int main()
{
int i;
wchar_t wc = L'a';
char *pmbnull = NULL;
char *pmb = (char *)malloc(sizeof( char ));
return(0);
}
Let us compile and run the above program that will produce the following result:
220
C Standard Library
14. <STRING.H>
Introduction
The string.h header defines one variable type, one macro, and various functions
for manipulating arrays of characters.
Library Variables
Following is the variable type defined in the header string.h:
1 size_t
Library Macros
Following is the macro defined in the header string.h:
1 NULL
Library Functions
Following are the functions defined in the header string.h:
Searches for the first occurrence of the character c (an unsigned char)
in the first n bytes of the string pointed to, by the argument str.
221
C Standard Library
Appends the string pointed to, by src to the end of the string pointed
to by dest.
Appends the string pointed to, by src to the end of the string pointed
to, by destup to n characters long.
Searches for the first occurrence of the character c (an unsigned char)
in the string pointed to, by the argument str.
Compares the string pointed to, by str1 to the string pointed to by str2.
222
C Standard Library
Searches an internal array for the error number errnum and returns a
pointer to an error message string.
Computes the length of the string str up to but not including the
terminating null character.
Finds the first character in the string str1 that matches any character
specified in str2.
Searches for the last occurrence of the character c (an unsigned char)
in the string pointed to by the argument str.
Finds the first occurrence of the entire string needle (not including the
terminating null character) which appears in the string haystack.
Transforms the first n characters of the string src into corrent locale
and places them in the string dest.
223
C Standard Library
Declaration
Following is the declaration for memchr() function.
Parameters
str -- This is the pointer to the block of memory where the search is
performed.
Return Value
This function returns a pointer to the matching byte or NULL if the character
does not occur in the given memory area.
Example
The following example shows the usage of memchr() function.
#include <stdio.h>
#include <string.h>
int main ()
{
const char str[] = "http://www.tutorialspoint.com";
const char ch = '.';
char *ret;
return(0);
}
224
C Standard Library
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for memcmp() function.
Parameters
str1 -- This is the pointer to a block of memory.
Return Value
if Return value is < 0 then it indicates str1 is less than str2.
Example
The following example shows the usage of memcmp() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
225
C Standard Library
if(ret > 0)
{
printf("str2 is less than str1");
}
else if(ret < 0)
{
printf("str1 is less than str2");
}
else
{
printf("str1 is equal to str2");
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Description
The C library function void *memcpy(void *str1, const void *str2, size_t
n) copies n characters from memory area str2 to memory area str1.
Declaration
Following is the declaration for memcpy() function.
Parameters
str1 -- This is pointer to the destination array where the content is to be
copied, type-casted to a pointer of type void*.
226
C Standard Library
Return Value
This function returns a pointer to destination, which is str1.
Example
The following example shows the usage of memcpy() function.
#include <stdio.h>
#include <string.h>
int main ()
{
const char src[50] = "http://www.tutorialspoint.com";
char dest[50];
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for memmove() function.
Parameters
str1 -- This is a pointer to the destination array where the content is to be
copied, type-casted to a pointer of type void*.
227
C Standard Library
Return Value
This function returns a pointer to the destination, which is str1.
Example
The following example shows the usage of memmove() function.
#include <stdio.h>
#include <string.h>
int main ()
{
const char dest[] = "oldstring";
const char src[] = "newstring";
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for memset() function.
228
C Standard Library
Parameters
str -- This is a pointer to the block of memory to fill.
c -- This is the value to be set. The value is passed as an int, but the
function fills the block of memory using the unsigned char conversion of
this value.
Return Value
This function returns a pointer to the memory area str.
Example
The following example shows the usage of memset() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
memset(str,'$',7);
puts(str);
return(0);
}
Let us compile and run the above program that will produce the following result:
229
C Standard Library
Declaration
Following is the declaration for strcat() function.
Parameters
dest -- This is pointer to the destination array, which should contain a C
string, and should be large enough to contain the concatenated resulting
string.
src -- This is the string to be appended. This should not overlap the
destination.
Return Value
This function returns a pointer to the resulting string dest.
Example
The following example shows the usage of strcat() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50], dest[50];
strcat(dest, src);
return(0);
}
Let us compile and run the above program that will produce the following result:
230
C Standard Library
Declaration
Following is the declaration for strncat() function.
Parameters
dest -- This is pointer to the destination array, which should contain a C
string, and should be large enough to contain the concatenated resulting
string which includes the additional null-character.
Return Value
This function returns a pointer to the resulting string dest.
Example
The following example shows the usage of strncat() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50], dest[50];
return(0);
231
C Standard Library
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strchr() function.
Parameters
str -- This is the C string to be scanned.
Return Value
This returns a pointer to the first occurrence of the character c in the string str,
or NULL if the character is not found.
Example
The following example shows the usage of strchr() function.
#include <stdio.h>
#include <string.h>
int main ()
{
const char str[] = "http://www.tutorialspoint.com";
const char ch = '.';
char *ret;
232
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strcmp() function.
Parameters
str1 -- This is the first string to be compared.
Return Value
This function return values that are as follows:
Example
The following example shows the usage of strncmp() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
233
C Standard Library
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
if(ret < 0)
{
printf("str1 is less than str2");
}
else if(ret > 0)
{
printf("str2 is less than str1");
}
else
{
printf("str1 is equal to str2");
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strncmp() function.
Parameters
str1 -- This is the first string to be compared.
Return Value
This function return values that are as follows:
Example
The following example shows the usage of strncmp() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
if(ret < 0)
{
printf("str1 is less than str2");
}
else if(ret > 0)
{
printf("str2 is less than str1");
}
else
{
printf("str1 is equal to str2");
235
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strcoll() function.
Parameters
str1 -- This is the first string to be compared.
Return Value
This function return values that are as follows:
Example
The following example shows the usage of strcoll() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
236
C Standard Library
int ret;
strcpy(str1, "abc");
strcpy(str2, "ABC");
if(ret > 0)
{
printf("str1 is less than str2");
}
else if(ret < 0)
{
printf("str2 is less than str1");
}
else
{
printf("str1 is equal to str2");
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strcpy() function.
237
C Standard Library
Parameters
dest -- This is the pointer to the destination array where the content is to
be copied.
Return Value
This returns a pointer to the destination string dest.
Example
The following example shows the usage of strcpy() function.
#include <stdio.h>
#include <string.h>
int main()
{
char src[40];
char dest[100];
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
238
C Standard Library
Parameters
dest -- This is the pointer to the destination array where the content is to
be copied.
Return Value
This function returns the final copy of the copied string.
Example
The following example shows the usage of strncpy() function. Here we have
used function memset() to clear the memory location.
#include <stdio.h>
#include <string.h>
int main()
{
char src[40];
char dest[12];
return(0);
}
Let us compile and run the above program that will produce the following result:
239
C Standard Library
Declaration
Following is the declaration for strcspn() function.
Parameters
str1 -- This is the main C string to be scanned.
Return Value
This function returns the number of characters in the initial segment of string
str1, which are not in the string str2.
Example
The following example shows the usage of strcspn() function.
#include <stdio.h>
#include <string.h>
int main ()
{
int len;
const char str1[] = "ABCDEF4960910";
const char str2[] = "013";
return(0);
}
Let us compile and run the above program that will produce the following result:
240
C Standard Library
Declaration
Following is the declaration for strerror() function.
Parameters
errnum -- This is the error number, usually errno.
Return Value
This function returns a pointer to the error string describing error errnum.
Example
The following example shows the usage of strerror() function.
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main ()
{
FILE *fp;
fp = fopen("file.txt","r");
if( fp == NULL )
{
printf("Error: %s\n", strerror(errno));
}
return(0);
}
241
C Standard Library
Let us compile and run the above program that will produce the following result
because we are trying to open a file which does not exist:
Declaration
Following is the declaration for strlen() function.
Parameters
str -- This is the string whose length is to be found.
Return Value
This function returns the length of string.
Example
The following example shows the usage of strlen() function.
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
int len;
len = strlen(str);
printf("Length of |%s| is |%d|\n", str, len);
return(0);
}
Let us compile and run the above program that will produce the following result:
242
C Standard Library
Declaration
Following is the declaration for strpbrk() function.
Parameters
str1 -- This is the C string to be scanned.
Return Value
This function returns a pointer to the character in str1 that matches one of the
characters in str2, or NULL if no such character is found.
Example
The following example shows the usage of strpbrk() function.
#include <stdio.h>
#include <string.h>
int main ()
{
const char str1[] = "abcde2fghi3jk4l";
const char str2[] = "34";
char *ret;
243
C Standard Library
{
printf("Character not found");
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strrchr() function.
Parameters
str -- This is the C string.
Return Value
This function returns a pointer to the last occurrence of character in str. If the
value is not found, the function returns a null pointer.
Example
The following example shows the usage of strrchr() function.
#include <stdio.h>
#include <string.h>
int main ()
{
int len;
const char str[] = "http://www.tutorialspoint.com";
244
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strspn() function.
Parameters
str1 -- This is the main C string to be scanned.
str2 -- This is the string containing the list of characters to match in str1.
Return Value
This function returns the number of characters in the initial segment of str1
which consist only of characters from str2.
Example
The following example shows the usage of strspn() function.
#include <stdio.h>
#include <string.h>
int main ()
{
245
C Standard Library
int len;
const char str1[] = "ABCDEFG019874";
const char str2[] = "ABCD";
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strstr() function.
Parameters
haystack -- This is the main C string to be scanned.
Return Value
This function returns a pointer to the first occurrence in haystack of any of the
entire sequence of characters specified in needle, or a null pointer if the
sequence is not present in haystack.
Example
The following example shows the usage of strstr() function.
#include <stdio.h>
#include <string.h>
246
C Standard Library
int main()
{
const char haystack[20] = "TutorialsPoint";
const char needle[10] = "Point";
char *ret;
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strtok() function.
Parameters
str -- The contents of this string are modified and broken into smaller
strings (tokens).
delim -- This is the C string containing the delimiters. These may vary
from one call to another.
Return Value
This function returns a pointer to the last token found in the string. A null
pointer is returned if there are no tokens left to retrieve.
Example
The following example shows the usage of strtok() function.
247
C Standard Library
#include <string.h>
#include <stdio.h>
int main()
{
const char str[80] = "This is - www.tutorialspoint.com - website";
const char s[2] = "-";
char *token;
return(0);
}
Let us compile and run the above program that will produce the following result:
This is
www.tutorialspoint.com
website
Declaration
Following is the declaration for strxfrm() function.
248
C Standard Library
Parameters
dest -- This is the pointer to the destination array where the content is to
be copied. It can be a null pointer if the argument for n is zero.
Return Value
This function returns the length of the transformed string, not including the
terminating null-character.
Example
The following example shows the usage of strxfrm() function.
#include <stdio.h>
#include <string.h>
int main()
{
char dest[20];
char src[20];
int len;
return(0);
}
Let us compile and run the above program that will produce the following result:
249
C Standard Library
15. <TIME.H>
Introduction
The time.h header defines four variable types, two macro and various functions
for manipulating date and time.
Library Variables
Following are the variable types defined in the header time.h:
1 size_t
2 clock_t
3 time_t is
4 struct tm
struct tm {
int tm_sec; /* seconds, range 0 to 59 */
int tm_min; /* minutes, range 0 to 59 */
int tm_hour; /* hours, range 0 to 23 */
int tm_mday; /* day of the month, range 1 to 31 */
int tm_mon; /* month, range 0 to 11 */
int tm_year; /* The number of years since 1900 */
int tm_wday; /* day of the week, range 0 to 6 */
int tm_yday; /* day in the year, range 0 to 365 */
250
C Standard Library
Library Macros
Following are the macros defined in the header time.h:
1 NULL
2 CLOCKS_PER_SEC
Library Functions
Following are the functions defined in the header time.h:
clock_t clock(void)
2 Returns the processor clock time used since the beginning of an
implementation defined era (normally the beginning of the program).
Time (GMT).
Declaration
Following is the declaration for asctime() function.
Parameters
The timeptr is a pointer to tm structure that contains a calendar time broken
down into its components as shown below:
struct tm {
int tm_sec; /* seconds, range 0 to 59 */
int tm_min; /* minutes, range 0 to 59 */
int tm_hour; /* hours, range 0 to 23 */
int tm_mday; /* day of the month, range 1 to 31 */
int tm_mon; /* month, range 0 to 11 */
int tm_year; /* The number of years since 1900 */
252
C Standard Library
Return Value
This function returns a C string containing the date and time information in a
human-readable format Www Mmm dd hh:mm:ss yyyy, where Www is the
weekday, Mmm the month in letters, dd the day of the month, hh:mm:ss the
time, and yyyy the year.
Example
The following example shows the usage of asctime() function.
#include <stdio.h>
#include <string.h>
#include <time.h>
int main()
{
struct tm t;
t.tm_sec = 10;
t.tm_min = 10;
t.tm_hour = 6;
t.tm_mday = 25;
t.tm_mon = 2;
t.tm_year = 89;
t.tm_wday = 6;
puts(asctime(&t));
return(0);
}
Let us compile and run the above program that will produce the following result:
253
C Standard Library
clock_t clock(void)
Description
The C library function clock_t clock(void) returns the number of clock ticks
elapsed since the program was launched. To get the number of seconds used by
the CPU, you will need to divide by CLOCKS_PER_SEC.
Declaration
Following is the declaration for clock() function.
clock_t clock(void)
Parameters
NA
Return Value
This function returns the number of clock ticks elapsed since the start of the
program. On failure, the function returns a value of -1.
Example
The following example shows the usage of clock() function.
#include <time.h>
#include <stdio.h>
int main()
{
clock_t start_t, end_t, total_t;
int i;
start_t = clock();
printf("Starting of the program, start_t = %ld\n", start_t);
254
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
The returned string has the following format: Www Mmm dd hh:mm:ss
yyyy,where Www is the weekday, Mmm the month in letters, dd the day of the
month, hh:mm:ss the time, and yyyy the year.
Declaration
Following is the declaration for ctime() function.
Parameters
timer -- This is the pointer to a time_t object that contains a calendar
time.
Return Value
This function returns a C string containing the date and time information in a
human-readable format.
Example
The following example shows the usage of ctime() function.
#include <stdio.h>
255
C Standard Library
#include <time.h>
int main ()
{
time_t curtime;
time(&curtime);
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for difftime() function.
Parameters
time1 -- This is the time_t object for end time.
Return Value
This function returns the difference of two times (time2 - time1) as a double
value.
Example
The following example shows the usage of difftime() function.
256
C Standard Library
#include <stdio.h>
#include <time.h>
int main ()
{
time_t start_t, end_t;
double diff_t;
time(&end_t);
diff_t = difftime(end_t, start_t);
return(0);
}
Let us compile and run the above program that will produce the following result:
257
C Standard Library
Declaration
Following is the declaration for gmtime() function.
Parameters
timeptr -- This is the pointer to a time_t value representing a calendar
time.
Return Value
This function returns pointer to a tm structure with the time information filled in.
Below is the detail of timeptr structure:
struct tm {
int tm_sec; /* seconds, range 0 to 59 */
int tm_min; /* minutes, range 0 to 59 */
int tm_hour; /* hours, range 0 to 23 */
int tm_mday; /* day of the month, range 1 to 31 */
int tm_mon; /* month, range 0 to 11 */
int tm_year; /* The number of years since 1900 */
int tm_wday; /* day of the week, range 0 to 6 */
int tm_yday; /* day in the year, range 0 to 365 */
int tm_isdst; /* daylight saving time */
};
Example
The following example shows the usage of gmtime() function.
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm *info;
258
C Standard Library
time(&rawtime);
/* Get GMT time */
info = gmtime(&rawtime );
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for localtime() function.
Parameters
timer -- This is the pointer to a time_t value representing a calendar
time.
Return Value
This function returns a pointer to a tm structure with the time information filled
in. Following is the tm structure information:
struct tm {
int tm_sec; /* seconds, range 0 to 59 */
259
C Standard Library
Example
The following example shows the usage of localtime() function.
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm *info;
char buffer[80];
time( &rawtime );
return(0);
}
Let us compile and run the above program that will produce the following result:
260
C Standard Library
Declaration
Following is the declaration for mktime() function.
Parameters
timeptr -- This is the pointer to a time_t value representing a calendar
time, broken down into its components. Below is the detail of timeptr
structure
struct tm {
int tm_sec; /* seconds, range 0 to 59 */
int tm_min; /* minutes, range 0 to 59 */
int tm_hour; /* hours, range 0 to 23 */
int tm_mday; /* day of the month, range 1 to 31 */
int tm_mon; /* month, range 0 to 11 */
int tm_year; /* The number of years since 1900 */
int tm_wday; /* day of the week, range 0 to 6 */
int tm_yday; /* day in the year, range 0 to 365 */
int tm_isdst; /* daylight saving time */
};
Return Value
This function returns a time_t value corresponding to the calendar time passed
as argument. On error, a -1 value is returned.
Example
The following example shows the usage of mktime() function.
#include <stdio.h>
#include <time.h>
int main ()
{
int ret;
struct tm info;
char buffer[80];
261
C Standard Library
ret = mktime(&info);
if( ret == -1 )
{
printf("Error: unable to make time using mktime\n");
}
else
{
strftime(buffer, sizeof(buffer), "%c", &info );
printf(buffer);
}
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for strftime() function.
262
C Standard Library
Parameters
str -- This is the pointer to the destination array where the resulting C
string is copied.
%M Minute (00-59) 55
%p AM or PM designation PM
263
C Standard Library
%S Second (00-61) 02
%Y Year 2012
%% A % sign %
struct tm {
int tm_sec; /* seconds, range 0 to 59 */
int tm_min; /* minutes, range 0 to 59 */
int tm_hour; /* hours, range 0 to 23 */
int tm_mday; /* day of the month, range 1 to 31 */
int tm_mon; /* month, range 0 to 11 */
int tm_year; /* The number of years since 1900 */
int tm_wday; /* day of the week, range 0 to 6 */
int tm_yday; /* day in the year, range 0 to 365 */
int tm_isdst; /* daylight saving time */
};
Return Value
264
C Standard Library
If the resulting C string fits in less than size characters (which includes the
terminating null-character), the total number of characters copied to str (not
including the terminating null-character) is returned otherwise, it returns zero.
Example
The following example shows the usage of strftime() function.
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm *info;
char buffer[80];
time( &rawtime );
return(0);
}
Let us compile and run the above program that will produce the following result:
Declaration
Following is the declaration for time() function.
265
C Standard Library
Parameters
seconds -- This is the pointer to an object of type time_t, where the
seconds value will be stored.
Return Value
The current calendar time as a time_t object.
Example
The following example shows the usage of time() function.
#include <stdio.h>
#include <time.h>
int main ()
{
time_t seconds;
seconds = time(NULL);
printf("Hours since January 1, 1970 = %ld\n", seconds/3600);
return(0);
}
Let us compile and run the above program that will produce the following result:
266