C Standard Library PDF
C Standard Library PDF
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.
Table of Contents
The C Standard Library Reference .............................................................................................................. i
Audience .................................................................................................................................................... i
Prerequisites .............................................................................................................................................. i
Copyright & Disclaimer .............................................................................................................................. i
Table of Contents ...................................................................................................................................... ii
1. <ASSERT.H> ............................................................................................................................. 1
Introduction .............................................................................................................................................. 1
Library Macros .......................................................................................................................................... 1
void assert(int expression) ......................................................................................................................... 1
2. <CTYPE.H>............................................................................................................................... 3
Introduction .............................................................................................................................................. 3
Library Functions ...................................................................................................................................... 3
int isalnum(int c) ........................................................................................................................................ 4
int isalpha(int c).......................................................................................................................................... 6
int iscntrl(int c) ........................................................................................................................................... 8
int isdigit(int c) ........................................................................................................................................... 9
int isgraph(int c) ....................................................................................................................................... 11
int islower(int c) ....................................................................................................................................... 12
int isprint(int c) ......................................................................................................................................... 14
int ispunct(int c) ....................................................................................................................................... 16
int isspace(int c) ....................................................................................................................................... 18
int isupper(int c) ....................................................................................................................................... 20
int isxdigit(int c) ........................................................................................................................................ 21
int tolower(int c) ...................................................................................................................................... 23
int toupper(int c) ...................................................................................................................................... 24
Character Classes .................................................................................................................................... 25
3. <ERRNO.H> ........................................................................................................................... 27
Introduction ............................................................................................................................................ 27
Library Macros ........................................................................................................................................ 27
extern int errno ........................................................................................................................................ 28
EDOM Domain Error ................................................................................................................................ 29
ERANGE Range Error ................................................................................................................................ 30
4. <FLOAT.H> ............................................................................................................................ 33
ii
Introduction ............................................................................................................................................ 33
Library Macros ........................................................................................................................................ 33
5. <LIMITS.H> ............................................................................................................................ 36
Introduction ............................................................................................................................................ 36
Library Macros ........................................................................................................................................ 36
6. <LOCALE.H> .......................................................................................................................... 39
Introduction ............................................................................................................................................ 39
Library Macros ........................................................................................................................................ 39
Library Functions .................................................................................................................................... 39
char *setlocale(int category, const char *locale) ..................................................................................... 40
struct lconv *localeconv(void) ................................................................................................................. 41
Library Structure ..................................................................................................................................... 44
7. <MATH.H>............................................................................................................................. 48
Introduction ............................................................................................................................................ 48
Library Macros ........................................................................................................................................ 48
Library Functions .................................................................................................................................... 48
double acos(double x) .............................................................................................................................. 50
double asin(double x) ............................................................................................................................... 51
double atan(double x) .............................................................................................................................. 52
double atan2(doubly y, double x) ............................................................................................................ 53
double cos(double x) ................................................................................................................................ 54
double cosh(double x) .............................................................................................................................. 56
double sin(double x) ................................................................................................................................ 57
double sinh(double x) .............................................................................................................................. 58
double tanh(double x) .............................................................................................................................. 59
double exp(double x) ............................................................................................................................... 59
double frexp(double x, int *exponent) .................................................................................................... 60
double ldexp(double x, int exponent) ...................................................................................................... 62
double log(double x) ................................................................................................................................ 63
double log10(double x) ............................................................................................................................ 63
double modf(double x, double *integer) ................................................................................................. 64
double pow(double x, double y) .............................................................................................................. 66
double sqrt(double x) ............................................................................................................................... 66
double ceil(double x) ................................................................................................................................ 67
double fabs(double x) .............................................................................................................................. 68
double floor(double x) ............................................................................................................................. 69
double fmod(double x, double y) ............................................................................................................. 71
iii
8. <SETJMP.H> .......................................................................................................................... 73
Introduction ............................................................................................................................................ 73
Library Variables ..................................................................................................................................... 73
Library Macros ........................................................................................................................................ 73
int setjmp(jmp_buf environment) ........................................................................................................... 73
Library Functions .................................................................................................................................... 75
void longjmp(jmp_buf environment, int value) ....................................................................................... 75
9. <SIGNAL.H> ........................................................................................................................... 77
Introduction ............................................................................................................................................ 77
Library Variables ..................................................................................................................................... 77
Library Macros ........................................................................................................................................ 77
Library Functions .................................................................................................................................... 78
void (*signal(int sig, void (*func)(int)))(int) ............................................................................................. 78
int raise(int sig)......................................................................................................................................... 81
10. <STDARG.H>........................................................................................................................ 84
Introduction ............................................................................................................................................ 84
Library Variables ..................................................................................................................................... 84
Library Macros ........................................................................................................................................ 84
void va_start(va_list ap, last_arg) ............................................................................................................ 85
type va_arg(va_list ap, type) .................................................................................................................... 86
void va_end(va_list ap) ............................................................................................................................ 88
iv
vi
vii
1. <ASSERT.H>
C Standard Library
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:
#define assert(ignore) ((void)0)
Library Macros
Following is the only function defined in the header assert.h:
S.N.
Declaration
Following is the declaration for assert() Macro.
void assert(int expression);
Parameters
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:
Enter an integer value: 11
Integer entered is 11
Enter string: tutorialspoint
String entered is: tutorialspoint
2. <CTYPE.H>
C Standard Library
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:
S.N.
int isalnum(int c)
This function checks whether the passed character is alphanumeric.
int isalpha(int c)
This function checks whether the passed character is alphabetic.
int iscntrl(int c)
This function checks whether the passed character is control character.
int isdigit(int c)
This function checks whether the passed character is decimal digit.
int isgraph(int c)
This function checks whether the passed character has graphical
representation using locale.
int islower(int c)
This function checks whether the passed character is lowercase letter.
C Standard Library
int isprint(int c)
This function checks whether the passed character is printable.
int ispunct(int c)
This function checks whether the passed character is a punctuation
character.
int isspace(int c)
This function checks whether the passed character is white-space.
10
int isupper(int c)
This function checks whether the passed character is an uppercase
letter.
11
int isxdigit(int c)
This function checks whether the passed character is a hexadecimal
digit.
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.
int isalnum(int c);
Parameters
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:
var1 = |d| is alphanumeric
var2 = |2| is alphanumeric
var3 = | | is not alphanumeric
var4 = | | is not alphanumeric
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.
int isalpha(int c);
Parameters
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:
var1 = |d| is an alphabet
var2 = |2| is not an alphabet
var3 = | | is not an alphabet
var4 = | | is not an alphabet
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.
int iscntrl(int c);
Parameters
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.
Decimal digits are (numbers): 0 1 2 3 4 5 6 7 8 9.
Declaration
Following is the declaration for isdigit() function.
int isdigit(int c);
Parameters
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:
var1 = |h| is not a digit
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.
int isgraph(int c);
Parameters
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:
var1 = |3| can be printed
var2 = |m| can be printed
var3 = | | can't be printed
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.
int islower(int c);
12
C Standard Library
Parameters
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:
var1 = |Q| is not lowercase character
var2 = |q| is lowercase character
var3 = |3| is not lowercase character
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.
int isprint(int c);
Parameters
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:
var1 = |k| can be printed
var2 = |8| can be printed
var3 = |
| can't be printed
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.
int ispunct(int c);
Parameters
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:
var1 = |t| is not a punctuation character
var2 = |1| is not a punctuation character
var3 = |/| is a punctuation character
var4 = | | is not a punctuation character
int isspace(int c)
Description
The C library function int isspace(int c) checks whether the passed character is
white-space.
Standard white-space characters are:
' '
(0x20)
space (SPC)
'\t' (0x09)
'\n' (0x0a)
newline (LF)
'\v' (0x0b)
'\f' (0x0c)
feed (FF)
'\r' (0x0d)
Declaration
Following is the declaration for isspace() function.
int isspace(int c);
Parameters
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:
var1 = |t| is not a white-space character
var2 = |1| is not a white-space character
var3 = | | is a white-space character
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.
int isupper(int c);
Parameters
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:
var1 = |M| is uppercase character
var2 = |m| is not uppercase character
var3 = |3| is not uppercase character
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.
int isxdigit(int c);
Parameters
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:
var1 = |tuts| is not hexadecimal character
var2 = |0xE| is hexadecimal character
The library also contains two conversion functions that accepts and returns an
"int".
S.N.
int tolower(int c)
This function converts uppercase letters to lowercase.
int toupper(int c)
This function converts lowercase letters to uppercase.
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.
int tolower(int c);
Parameters
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
uppercase.
function int
toupper(int
c) converts
lowercase
letter
to
Declaration
Following is the declaration for toupper() function.
int toupper(int c);
Parameters
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
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.
Digits
This is a set of whole numbers { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }.
Hexadecimal digits
This is the set of - { 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f }.
Lowercase letters
This is a set of lowercase letters { a b c d e f g h i j k l m n o p q r s t u
v w x y z }.
25
C Standard Library
Uppercase letters
This is a set of uppercase letters {A B C D E F G H I J K L M N O P Q R S
T U V W X Y Z }.
Letters
This is a set of lowercase and uppercase letters.
Alphanumeric characters
This is a set of Digits, Lowercase letters and Uppercase letters.
Punctuation characters
This is a set of ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | }
~
Graphical characters
This is a set of Alphanumeric characters and Punctuation characters.
Space characters
This is a set of tab, newline, vertical tab, form feed, carriage return, and
space.
10
Printable characters
This is a set of Alphanumeric characters, Punctuation characters and
Space characters.
11
Control characters
In ASCII, these characters have octal codes 000 through 037, and 177
(DEL).
12
Blank characters
These are spaces and tabs.
13
Alphabetic characters
This is a set of Lowercase letters and Uppercase letters.
26
3. <ERRNO.H>
C Standard Library
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:
S.N.
27
C Standard Library
Declaration
Following is the declaration for errno macro.
extern int errno
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.
#define EDOM some_value
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.
#define ERANGE some_value
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
4. <FLOAT.H>
C Standard Library
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:
Component Component Description
S
sign ( +/- )
exponent, an
maximum emax.
integer
between
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
FLT_ROUNDS
FLT_RADIX 2
FLT_MANT_DIG
DBL_MANT_DIG
LDBL_MANT_DIG
FLT_DIG 6
DBL_DIG 10
LDBL_DIG 10
FLT_MIN_EXP
DBL_MIN_EXP
LDBL_MIN_EXP
FLT_MIN_10_EXP -37
DBL_MIN_10_EXP -37
LDBL_MIN_10_EXP -37
FLT_MAX_EXP
DBL_MAX_EXP
LDBL_MAX_EXP
FLT_MAX_10_EXP +37
DBL_MAX_10_EXP +37
34
C Standard Library
LDBL_MAX_10_EXP +37
FLT_MAX 1E+37
DBL_MAX 1E+37
LDBL_MAX 1E+37
FLT_EPSILON 1E-5
DBL_EPSILON 1E-9
LDBL_EPSILON 1E-9
FLT_MIN 1E-37
DBL_MIN 1E-37
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);
35
5. <LIMITS.H>
C Standard Library
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.
Macro
Value
Description
CHAR_BIT
SCHAR_MIN
-128
SCHAR_MAX
127
UCHAR_MAX
255
CHAR_MIN
CHAR_MAX
127
MB_LEN_MAX
Defines
the
maximum
number
of
36
C Standard Library
-32768
SHRT_MAX
+32767
USHRT_MAX
65535
INT_MIN
-32768
INT_MAX
+32767
UINT_MAX
65535
LONG_MIN
-2147483648
LONG_MAX
+2147483647
ULONG_MAX
4294967295
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()
{
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
The number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -32768
The maximum value of INT = 32767
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -2147483648
The maximum value of LONG = 2147483647
38
6. <LOCALE.H>
C Standard Library
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:
S.N.
LC_ALL
Sets everything.
LC_COLLATE
Affects strcoll and strxfrm functions.
LC_CTYPE
Affects all character functions.
LC_MONETARY
Affects the monetary information provided by localeconv function.
LC_NUMERIC
Affects decimal-point formatting and the information provided by
localeconv function.
LC_TIME
Affects the strftime function.
Library Functions
Following are the functions defined in the header locale.h:
39
C Standard Library
S.N.
Declaration
Following is the declaration for setlocale() function.
char *setlocale(int category, const char *locale)
Parameters
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
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:
Locale is: en_GB
Date is: Thu 23 Aug 2012 06:39:32 MST
Locale is: de_DE
Date is: Do 23 Aug 2012 06:39:32 MST
C Standard Library
Declaration
Following is the declaration for localeconv() function.
struct lconv *localeconv(void)
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:
Local Currency Symbol: EUR
International Currency Symbol: EUR
Local Currency Symbol: $
International Currency Symbol: USD
Local Currency Symbol:
International Currency Symbol: GBP
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
Following is the description of each of the fields:
S.N.
decimal_point
Decimal point character used for non-monetary values.
thousands_sep
Thousands place separator character used for non-monetary values.
grouping
44
C Standard Library
int_curr_symbol
It is a string of the international currency symbols used. The first three
characters are those specified by ISO 4217:1987 and the fourth is the
character, which separates the currency symbol from the monetary
quantity.
currency_symbol
The local symbol used for currency.
mon_decimal_point
The decimal point character used for monetary values.
mon_thousands_sep
The thousands place grouping character used for monetary values.
mon_grouping
A string whose elements defines the size of the grouping of digits in
monetary values. Each character represents an integer value which
designates the number of digits in the current group. A value of 0
means that the previous value is to be used for the rest of the groups.
positive_sign
The character used for positive monetary values.
10
negative_sign
The character used for negative monetary values.
11
int_frac_digits
Number of digits to show after the decimal point in international
monetary values.
12
frac_digits
45
C Standard Library
p_cs_precedes
If equals to 1, then the currency_symbol appears before a positive
monetary value. If equals to 0, then the currency_symbol appears
after a positive monetary value.
14
p_sep_by_space
If equals to 1, then the currency_symbol is separated by a space from
a positive monetary value. If equals to 0, then there is no space
between the currency_symbol and a positive monetary value.
15
n_cs_precedes
If equals to 1, then the currency_symbol precedes a negative
monetary value. If equals to 0, then the currency_symbol succeeds a
negative monetary value.
16
n_sep_by_space
If equals to 1, then the currency_symbol is separated by a space from
a negative monetary value. If equals to 0, then there is no space
between the currency_symbol and a negative monetary value.
17
p_sign_posn
Represents the position of the positive_sign in a positive monetary
value.
18
n_sign_posn
Represents the position of the negative_sign in a negative monetary
value.
Description
46
C Standard Library
47
7. <MATH.H>
C Standard Library
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:
S.N.
HUGE_VAL
This macro is used when the result of a function may not be
representable as a floating point number. If magnitude of the correct
result is too large to be represented, the function sets errno to
ERANGE to indicate a range error, and returns a particular, very large
value named by the macro HUGE_VAL or its negation (- HUGE_VAL).
If the magnitude of the result is too small, a value of zero is returned
instead. In this case, errno might or might not be set to ERANGE.
Library Functions
Following are the functions defined in the header math.h:
S.N.
double acos(double x)
Returns the arc cosine of x in radians.
double asin(double x)
Returns the arc sine of x in radians.
double atan(double x)
Returns the arc tangent of x in radians.
48
C Standard Library
double cos(double x)
Returns the cosine of a radian angle x.
double cosh(double x)
Returns the hyperbolic cosine of x.
double sin(double x)
Returns the sine of a radian angle x.
double sinh(double x)
Returns the hyperbolic sine of x.
double tanh(double x)
Returns the hyperbolic tangent of x.
10
double exp(double x)
Returns the value of e raised to the xth power.
11
12
13
double log(double x)
Returns the natural logarithm (base-e logarithm) of x.
14
double log10(double x)
Returns the common logarithm (base-10 logarithm) of x.
49
C Standard Library
15
16
17
double sqrt(double x)
Returns the square root of x.
18
double ceil(double x)
Returns the smallest integer value greater than or equal to x.
19
double fabs(double x)
Returns the absolute value of x.
20
double floor(double x)
Returns the largest integer value less than or equal to x.
21
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
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:
The arc cosine of 0.900000 is 25.855040 degrees
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
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:
The arc sine of 0.900000 is 64.190609 degrees
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
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:
The arc tangent of 1.000000 is 45.000000 degrees
Declaration
Following is the declaration for atan2() function.
double atan2(doubly y, double x)
Parameters
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:
The arc tangent of x = -7.000000, y = 7.000000 is 135.000000 degrees
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
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:
The cosine of 60.000000 is 0.500000 degrees
The cosine of 90.000000 is 0.000000 degrees
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
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
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:
The sine of 45.000000 is 0.707107 degrees
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
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:
The hyperbolic sine of 0.500000 is 0.521095 degrees
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
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:
The hyperbolic tangent of 0.500000 is 0.462117 degrees
double exp(double x)
Description
59
C Standard Library
Declaration
Following is the declaration for exp() function.
double exp(double x)
Parameters
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:
The exponential value of 0.000000 is 1.000000
The exponential value of 1.000000 is 2.718282
The exponential value of 2.000000 is 7.389056
60
C Standard Library
Declaration
Following is the declaration for frexp() function.
double frexp(double x, int *exponent)
Parameters
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:
x = 1024.00 = 0.50 * 2^11
61
C Standard Library
int
Declaration
Following is the declaration for ldexp() function.
double ldexp(double x, int exponent)
Parameters
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:
0.650000 * 2^3 = 5.200000
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
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
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.
double modf(double x, double *integer)
Parameters
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:
Integral part = 8.000000
Fraction Part = 0.123456
65
C Standard Library
Declaration
Following is the declaration for pow() function.
double pow(double x, double y)
Parameters
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:
Value 8.0 ^ 3 = 512.000000
Value 3.05 ^ 1.98 = 9.097324
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
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:
Square root of 4.000000 is 2.000000
Square root of 5.000000 is 2.236068
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
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
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:
The absolute value of 1234 is 1234.000000
The absolute value of -344 is 344.000000
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
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.
double fmod(double x, double y)
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
8. <SETJMP.H>
C Standard Library
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:
S.N.
jmp_buf
This is an array type used for
macro setjmp() and function longjmp().
holding
information
for
Library Macros
There is only one macro defined in this library:
S.N.
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.
int setjmp(jmp_buf environment)
Parameters
of
type
jmp_buf
where
the
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
Library Functions
Following is the only one function defined in the header setjmp.h:
S.N.
int
call
the
Declaration
Following is the declaration for longjmp() function.
void longjmp(jmp_buf environment, int value)
Parameters
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);
}
76
9. <SIGNAL.H>
C Standard Library
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:
S.N.
sig_atomic_t
This is of int type and is used as a variable in a signal handler. This is
an integral type of an object that can be accessed as an atomic entity,
even in the presence of asynchronous signals.
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.
S.N.
SIG_DFL
Default signal handler.
SIG_ERR
Represents a signal error.
SIG_IGN
Signal ignore.
The SIG macros are used to represent a signal number in the following
conditions:
77
C Standard Library
S.N.
SIGABRT
Abnormal program termination.
SIGFPE
Floating-point error like division by zero.
SIGILL
Illegal operation.
SIGINT
Interrupt signal such as ctrl-C.
SIGSEGV
Invalid access to storage like segment violation.
SIGTERM
Termination request.
Library Functions
Following are the functions defined in the header signal.h:
S.N.
C Standard Library
Declaration
Following is the declaration for signal() function.
void (*signal(int sig, void (*func)(int)))(int)
Parameters
sig -- This is the signal number to which a handling function is set. The
following are few important standard signal numbers:
macro
signal
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
SIG_DFL
Default handling: The signal is handled by the default action for that
particular signal.
SIG_IGN
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);
}
C Standard Library
Declaration
Following is the declaration for signal() function.
int raise(int sig)
Parameters
sig -- This is the signal number to send. Following are few important
standard signal constants:
macro
signal
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
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);
}
C Standard Library
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:
S.N.
va_list
This is a type suitable for holding information needed by the three
macros va_start(), va_arg() and va_end().
Library Macros
Following are the macros defined in the header stdarg.h:
S.N.
C Standard Library
Declaration
Following is the declaration for va_start() macro.
void va_start(va_list ap, last_arg);
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",
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:
Sum of 10, 20 and 30 = 60
Sum of 4, 20, 25 and 30 = 79
Declaration
Following is the declaration for va_arg() macro.
type va_arg(va_list ap, type)
Parameters
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",
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.
void va_end(va_list ap)
Parameters
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",
return 0;
}
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
11. <STDDEF.H>
C Standard Library
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:
S.N.
ptrdiff_t
This is the signed integral type and is the result of subtracting two
pointers.
size_t
This is the unsigned
the sizeof keyword.
integral
type
and
is
the
result
of
wchar_t
This is an integral type of the size of a wide character constant.
Library Macros
Following are the macros defined in the header stddef.h:
S.N.
NULL
This macro is the value of a null pointer constant.
offsetof(type, member-designator)
This 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
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.
#define NULL ((char *)0)
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:
Opend file file.txt successfully
Could not open file nofile.txt
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
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:
name offset = 0 byte in address structure.
street offset = 50 byte in address structure.
phone offset = 100 byte in address structure.
93
C Standard Library
94
12. <STDIO.H>
C Standard Library
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:
S.N.
size_t
This is the unsigned
the sizeof keyword.
integral
type
and
is
the
result
of
FILE
This is an object type suitable for storing information for a file stream.
fpos_t
This is an object type suitable for storing any position in a file.
Library Macros
Following are the macros defined in the header stdio.h:
S.N.
NULL
This macro is the value of a null pointer constant.
95
C Standard Library
BUFSIZ
This macro is an integer, which represents the size of the buffer used
by the setbuf function.
EOFM
This macro is a negative integer, which indicates that the end-of-file
has been reached.
FOPEN_MAX
This macro is an integer, which represents the maximum number of
files that the system can guarantee to be opened simultaneously.
FILENAME_MAX
This macro is an integer, which represents the longest length of a char
array suitable for holding the longest possible filename. If the
implementation imposes no limit, then this value should be the
recommended maximum value.
L_tmpnam
This macro is an integer, which represents the longest length of a char
array suitable for holding the longest possible temporary filename
created by the tmpnam function.
TMP_MAX
This macro is the maximum number of unique filenames that the
function tmpnam can generate.
10
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.
S.N.
10
C Standard Library
12
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.
14
15
16
17
18
19
FILE *tmpfile(void)
Creates a temporary file in binary update mode (wb+).
20
21
C Standard Library
23
24
25
26
27
28
29
30
31
99
C Standard Library
32
33
34
35
int getchar(void)
Gets a character (an unsigned char) from stdin.
36
37
38
39
40
100
C Standard Library
41
Declaration
Following is the declaration for fclose() function.
int fclose(FILE *stream)
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.
void clearerr(FILE *stream)
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.
Error reading from file "file.txt"
Declaration
Following is the declaration for feof() function.
int feof(FILE *stream)
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.
int fflush(FILE *stream)
Parameters
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];
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.
Going to set full buffering on
This is tutorialspoint.com
This output will go into buff
and this will appear when programm
will come after sleeping 5 seconds
Declaration
Following is the declaration for fgetpos() function.
int fgetpos(FILE *stream, fpos_t *pos)
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:
This is going to override previous 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.
FILE *fopen(const char *filename, const char *mode)
Parameters
mode
Description
"r"
"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"
109
C Standard Library
"r+"
Opens a file to update both reading and writing. The file must exist.
"w+"
"a+"
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.
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
Parameters
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.
FILE *freopen(const char *filename, const char *mode, FILE *stream)
Parameters
mode
Description
"r"
"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"
"r+"
Opens a file to update both reading and writing. The file must exist.
"w+"
"a+"
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:
This text is redirected to stdout
After a call to freopen(), it associates STDOUT to file file.txt, so whatever we
write at STDOUT, goes inside file.txt. So, the file file.txt will have the following
content.
This text is redirected to file.txt
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);
}
offset,
int
Declaration
Following is the declaration for fseek() function.
int fseek(FILE *stream, long int offset, int whence)
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Constant
Description
SEEK_SET
Beginning of file
SEEK_CUR
SEEK_END
End of file
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:
This is C Programming Langauge
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.
int fsetpos(FILE *stream, const fpos_t *pos)
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:
This is going to override previous 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) )
{
break ;
}
118
C Standard Library
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for ftell() function.
long int ftell(FILE *stream)
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
This function returns the current value of the position indicator. If an error
occurs, -1L is returned, and the global variable errno is set to a positive value.
Example
The following example shows the usage of ftell() function.
#include <stdio.h>
int main ()
{
FILE *fp;
int len;
fp = fopen("file.txt", "r");
if( fp == NULL )
{
perror ("Error opening file");
return(-1);
}
119
C Standard Library
fseek(fp, 0, SEEK_END);
len = ftell(fp);
fclose(fp);
return(0);
}
Let us assume we have a text file file.txt, which has the following content:
This is tutorialspoint.com
Now let us compile and run the above program that will produce the following
result if file has above mentioned content otherwise it will give different result
based on the file content:
Total size of file.txt = 27 bytes
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
Description
The C library function 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.
Declaration
Following is the declaration for fwrite() function.
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
Parameters
nmemb -- This is the number of elements, each one with a size of size
bytes.
Return Value
120
C Standard Library
Example
The following example shows the usage of fwrite() function.
#include<stdio.h>
int main ()
{
FILE *fp;
char str[] = "This is tutorialspoint.com";
fclose(fp);
return(0);
}
Let us compile and run the above program that will create a file file.txt which
will have following content:
This is tutorialspoint.com
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);
121
C Standard Library
if( feof(fp) )
{
break ;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
*filename) deletes
the
Declaration
Following is the declaration for remove() function.
int remove(const char *filename)
Parameters
Return Value
On success, zero is returned. On error, -1 is returned, and errno is set
appropriately.
Example
The following example shows the usage of remove() function.
#include <stdio.h>
#include <string.h>
int main ()
{
int ret;
FILE *fp;
char filename[] = "file.txt";
122
C Standard Library
fp = fopen(filename, "w");
ret = remove(filename);
if(ret == 0)
{
printf("File deleted successfully");
}
else
{
printf("Error: unable to delete the file");
}
return(0);
}
Let us assume we have a text file file.txt having some content. So we are going
to delete this file, using the above program. Let us compile and run the above
program to produce the following message and the file will be deleted
permanently.
File deleted successfully
Declaration
Following is the declaration for rename() function.
int rename(const char *old_filename, const char *new_filename)
Parameters
123
C Standard Library
new_filename -- This is the C string containing the new name for the
file.
Return Value
On success, zero is returned. On error, -1 is returned, and errno is set
appropriately.
Example
The following example shows the usage of rename() function.
#include <stdio.h>
int main ()
{
int ret;
char oldname[] = "file.txt";
char newname[] = "newfile.txt";
if(ret == 0)
{
printf("File renamed successfully");
}
else
{
printf("Error: unable to rename the file");
}
return(0);
}
Let us assume we have a text file file.txt, having some content. So, we are
going to rename this file, using the above program. Let us compile and run the
above program to produce the following message and the file will be renamed
to newfile.txt file.
File renamed successfully
124
C Standard Library
Declaration
Following is the declaration for rewind() function.
void rewind(FILE *stream)
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
Return Value
This function does not return any value.
Example
The following example shows the usage of rewind() function.
#include <stdio.h>
int main()
{
char str[] = "This is tutorialspoint.com";
FILE *fp;
int ch;
C Standard Library
}
printf("%c", ch);
}
rewind(fp);
printf("\n");
while(1)
{
ch = fgetc(fp);
if( feof(fp) )
{
break ;
}
printf("%c", ch);
}
fclose(fp);
return(0);
}
Let us assume we have a text file file.txt that have the following content:
This is tutorialspoint.com
Now let us compile and run the above program to produce the following result:
This is tutorialspoint.com
This is tutorialspoint.com
Declaration
Following is the declaration for setbuf() function.
126
C Standard Library
Parameters
buffer -- This is the user allocated buffer. This should have a length of at
least BUFSIZ bytes, which is a macro constant to be used as the length of
this array.
Return Value
This function does not return any value.
Example
The following example shows the usage of setbuf() function.
#include <stdio.h>
int main()
{
char buf[BUFSIZ];
setbuf(stdout, buf);
puts("This is tutorialspoint");
fflush(stdout);
return(0);
}
Let us compile and run the above program to produce the following result. Here
program sends output to the STDOUT just before it comes out, otherwise it
keeps buffering the output. You can also use fflush() function to flush the
output.
This is tutorialspoint
Declaration
127
C Standard Library
Parameters
buffer -- This is the user allocated buffer. If set to NULL, the function
automatically allocates a buffer of the specified size.
mode
Description
_IOFBF
_IOLBF
_IONBF
Return Value
This function returns zero on success else, non-zero value is returned.
Example
The following example shows the usage of setvbuf() function.
#include <stdio.h>
int main()
{
char buff[1024];
128
C Standard Library
sleep(5);
return(0);
}
Let us compile and run the above program to 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 the program comes out.
Going to set full buffering on
This is tutorialspoint.com
This output will go into buff
and this will appear when programm
will come after sleeping 5 seconds
FILE *tmpfile(void)
Description
The C library function FILE *tmpfile(void) creates a temporary file in binary
update mode (wb+). The temporary file created is automatically deleted when
the stream is closed (fclose) or when the program terminates.
Declaration
Following is the declaration for tmpfile() function.
FILE *tmpfile(void)
Parameters
NA
129
C Standard Library
Return Value
If successful, the function returns a stream pointer to the temporary file created.
If the file cannot be created, then NULL is returned.
Example
The following example shows the usage of tmpfile() function.
#include <stdio.h>
int main ()
{
FILE *fp;
fp = tmpfile();
printf("Temporary file created\n");
fclose(fp);
return(0);
}
Let us compile and run the above program to create a temporary file in /tmp
folder but once your program is out, it will be deleted automatically and the
program will produce the following result:
Temporary file created
Declaration
Following is the declaration for tmpnam() function.
char *tmpnam(char *str)
130
C Standard Library
Parameters
str -- This is the pointer to an array of chars where the proposed temp
name will be stored as a C string.
Return Value
Return value is a pointer to the C string containing the proposed name for
a temporary file. If str was a null pointer, this points to an internal buffer
that will be overwritten the next time this function is called.
If str was not a null pointer, str is returned. If the function fails to create a
suitable filename, it returns a null pointer.
Example
The following example shows the usage of tmpnam() function.
#include <stdio.h>
int main()
{
char buffer[L_tmpnam];
char *ptr;
tmpnam(buffer);
printf("Temporary name 1: %s\n", buffer);
ptr = tmpnam(NULL);
printf("Temporary name 2: %s\n", ptr);
return(0);
}
Let us compile and run the above program to produce the following result:
Temporary name 1: /tmp/filebaalTb
Temporary name 2: /tmp/filedCIbb0
C Standard Library
Declaration
Following is the declaration for fprintf() function.
int fprintf(FILE *stream, const char *format, ...)
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
format -- This is the C string that contains the text to be written to the
stream. It can optionally contain embedded format tags that are replaced
by the values specified in subsequent additional arguments and formatted
as
requested.
Format
tags
prototype
is %[flags][width][.precision][length]specifier, which is explained
below:
specifier
Output
Character
d or i
Signed octal
String of characters
132
C Standard Library
Pointer address
Nothing printed
Character
flags
Description
(space)
width
Description
(number)
133
C Standard Library
.precision
Description
.number
.*
length
Description
Return Value
If successful, the total number of characters written is returned otherwise, a
negative number is returned.
Example
The following example shows the usage of fprintf() function.
134
C Standard Library
#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'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 ;
}
135
C Standard Library
printf("%c", c);
}
fclose(fp);
return(0);
}
Declaration
Following is the declaration for printf() function.
int printf(const char *format, ...)
Parameters
format -- This is the string that contains the text to be written to stdout.
It can optionally contain embedded format tags that are replaced by the
values specified in subsequent additional arguments and formatted as
requested.
Format
tags
prototype
is %[flags][width][.precision][length]specifier, which is explained
below:
specifier
Output
Character
d or i
136
C Standard Library
Signed octal
String of characters
Pointer address
Nothing printed
Character
flags
Description
(space)
width
0x or 0X
and f, it
no digits
point is
or E but
Description
137
C Standard Library
(number)
.precision
Description
.number
.*
length
Description
C Standard Library
parameter (if any). There should be the same number of these arguments
as the number of %-tags that expect a value.
Return Value
If successful, the total number of characters written is returned. On failure, a
negative number is returned.
Example
The following example shows the usage of printf() function.
#include <stdio.h>
int main ()
{
int ch;
return(0);
}
Let us compile and run the above program to produce the following result:
ASCII value = 75, Character = K
ASCII value = 76, Character = L
ASCII value = 77, Character = M
ASCII value = 78, Character = N
ASCII value = 79, Character = O
ASCII value = 80, Character = P
ASCII value = 81, Character = Q
ASCII value = 82, Character = R
ASCII value = 83, Character = S
ASCII value = 84, Character = T
ASCII value = 85, Character = U
ASCII value = 86, Character = V
ASCII value = 87, Character = W
ASCII value = 88, Character = X
139
C Standard Library
Declaration
Following is the declaration for sprintf() function.
int sprintf(char *str, const char *format, ...)
Parameters
str -- This is the pointer to an array of char elements where the resulting
C string is stored.
format -- This is the String that contains the text to be written to buffer.
It can optionally contain embedded format tags that are replaced by the
values specified in subsequent additional arguments and formatted as
requested.
Format
tags
prototype: %[flags][width][.precision][length]specifier,
as
explained below:
specifier
Output
Character
d or i
140
C Standard Library
Signed octal
String of characters
Pointer address
Nothing printed
Character
flags
Description
(space)
C Standard Library
width
Description
(number)
.precision
Description
.number
.*
length
Description
142
C Standard Library
Return Value
If successful, the total number of characters written is returned excluding the
null-character appended at the end of the string, otherwise a negative number is
returned in case of failure.
Example
The following example shows the usage of sprintf() function.
#include <stdio.h>
#include <math.h>
int main()
{
char str[80];
return(0);
}
Let us compile and run the above program, this will produce the following result:
Value of Pi = 3.141593
143
C Standard Library
Declaration
Following is the declaration for vfprintf() function.
int vfprintf(FILE *stream, const char *format, va_list arg)
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
format -- This is the C string that contains the text to be written to the
stream. It can optionally contain embedded format tags that are replaced
by the values specified in subsequent additional arguments and formatted
as
requested.
Format
tags
prototype: %[flags][width][.precision][length]specifier,
as
explained below:
specifier
Output
Character
d or i
Signed octal
String of characters
C Standard Library
Pointer address
Nothing printed
Character
flags
Description
(space)
width
Description
(number)
C Standard Library
formatted.
.precision
Description
.number
.*
length
Description
Return Value
If successful, the total number of characters written is returned otherwise, a
negative number is returned.
Example
The following example shows the usage of vfprintf() function.
146
C Standard Library
#include <stdio.h>
#include <stdarg.h>
va_start(args, format);
vfprintf(stream, format, args);
va_end(args);
}
int main ()
{
FILE *fp;
fp = fopen("file.txt","w");
fclose(fp);
return(0);
}
Let us compile and run the above program that will open a file file.txt for writing
in the current directory and will write the following content:
This is just one argument 10
Now let's see the content of the above file using the following program:
#include <stdio.h>
int main ()
{
FILE *fp;
147
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 vprintf() function.
int vprintf(const char *format, va_list arg)
Parameters
format -- This is the String that contains the text to be written to buffer.
It can optionally contain embedded format tags that are replaced by the
values specified in subsequent additional arguments and formatted as
requested.
Format
tags
prototype
would
be: %[flags][width][.precision][length]specifier,
as
explained
below:
specifier
Output
Character
148
C Standard Library
d or i
Signed octal
String of characters
Pointer address
Nothing printed
Character
flags
Description
(space)
C Standard Library
width
Description
(number)
.precision
Description
.number
.*
length
Description
150
C Standard Library
Return Value
If successful, the total number of characters written is returned otherwise a
negative number is returned.
Example
The following example shows the usage of vprintf() function.
#include <stdio.h>
#include <stdarg.h>
va_start(args, format);
vprintf(format, args);
va_end(args);
}
int main ()
{
WriteFrmtd("%d variable argument\n", 1);
WriteFrmtd("%d variable %s\n", 2, "arguments");
return(0);
}
151
C Standard Library
Let us compile and run the above program that will produce the following result:
1 variable argument
2 variable arguments
Declaration
Following is the declaration for vsprintf() function.
int vsprintf(char *str, const char *format, va_list arg)
Parameters
str -- This is the array of char elements where the resulting string is to be
stored.
format -- This is the C string that contains the text to be written to the
str. It can optionally contain embedded format tags that are replaced by
the values specified in subsequent additional arguments and are
formatted
as
requested.
Format
tags
prototype: %[flags][width][.precision][length]specifier,
as
explained below:
specifier
Output
Character
d or i
152
C Standard Library
Signed octal
String of characters
Pointer address
Nothing printed
Character
flags
Description
(space)
width
Description
153
C Standard Library
(number)
.precision
Description
.number
.*
length
Description
C Standard Library
Return Value
If successful, the total number of characters written is returned, otherwise a
negative number is returned.
Example
The following example shows the usage of vsprintf() function.
#include <stdio.h>
#include <stdarg.h>
char buffer[80];
int vspfunc(char *format, ...)
{
va_list aptr;
int ret;
va_start(aptr, format);
ret = vsprintf(buffer, format, aptr);
va_end(aptr);
return(ret);
}
int main()
{
int i = 5;
float f = 27.0;
char str[50] = "tutoriaspoint.com";
return(0);
}
Let us compile and run the above program, this will produce the following result:
155
C Standard Library
5 27.000000 tutoriaspoint.com
Declaration
Following is the declaration for fscanf() function.
int fscanf(FILE *stream, const char *format, ...)
Parameters
stream -- This is the pointer to a FILE object that identifies the stream.
format -- This is the C string that contains one or more of the following
items: Whitespace character, Non-whitespace character and Format
specifiers.
A
format
specifier
will
be
as [=%[*][width][modifiers]type=], which is explained below:
argument
Description
width
modifiers
Specifies a size different from int (in the case of d, i and n),
unsigned int (in the case of o, u and x) or float (in the case of e, f
and g) for the data pointed by the corresponding additional
argument: h : short int (for d, i and n), or unsigned short int (for
o, u and x) l : long int (for d, i and n), or unsigned long int (for o,
u and x), or double (for e, f and g) L : long double (for e, f and g)
type
Qualifying Input
Type
of
argument
156
C Standard Library
char *
int *
e, E, f, g, G
float *
Octal Integer:
int *
char *
unsigned
int *
x, X
Hexadecimal Integer
int *
Return Value
This function returns the number of input items successfully matched and
assigned, which can be fewer than provided for, or even zero in the event of an
early matching failure.
Example
The following example shows the usage of fscanf() function.
#include <stdio.h>
#include <stdlib.h>
157
C Standard Library
int main()
{
char str1[10], str2[10], str3[10];
int year;
FILE * fp;
rewind(fp);
fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
fclose(fp);
return(0);
}
Let us compile and run the above program that will produce the following result:
Read String1 |We|
Read String2 |are|
Read String3 |in|
Read Integer |2012|
158
C Standard Library
Declaration
Following is the declaration for scanf() function.
int scanf(const char *format, ...)
Parameters
format -- This is the C string that contains one or more of the following
items:
Whitespace character, Non-whitespace character and Format specifiers. A
format specifier will be like [=%[*][width][modifiers]type=] as
explained below:
argument
Description
width
modifiers
Specifies a size different from int (in the case of d, i and n),
unsigned int (in the case of o, u and x) or float (in the case of e, f
and g) for the data pointed by the corresponding additional
argument: h : short int (for d, i and n), or unsigned short int (for
o, u and x) l : long int (for d, i and n), or unsigned long int (for o,
u and x), or double (for e, f and g) L : long double (for e, f and g)
type
Qualifying Input
Type
of
argument
char *
159
C Standard Library
int *
e, E, f, g, G
float *
Octal Integer:
int *
char *
unsigned
int *
x, X
Hexadecimal Integer
int *
Return Value
If successful, the total number of characters written is returned, otherwise a
negative number is returned.
Example
The following example shows the usage of scanf() function.
#include <stdio.h>
int main()
{
char str1[20], str2[30];
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result
in interactive mode:
Enter name: admin
Enter your website name: www.tutorialspoint.com
Declaration
Following is the declaration for sscanf() function.
int sscanf(const char *str, const char *format, ...)
Parameters
str -- This is the C string that the function processes as its source to
retrieve the data.
format -- This is the C string that contains one or more of the following
items: Whitespace character, Non-whitespace character and Format
specifiers
A format specifier follows this prototype: [=%[*][width][modifiers]type=]
argument
Description
161
C Standard Library
width
modifiers
Specifies a size different from int (in the case of d, i and n),
unsigned int (in the case of o, u and x) or float (in the case of e, f
and g) for the data pointed by the corresponding additional
argument: h : short int (for d, i and n), or unsigned short int (for
o, u and x) l : long int (for d, i and n), or unsigned long int (for o,
u and x), or double (for e, f and g) L : long double (for e, f and g)
type
Qualifying Input
Type
of
argument
char *
int *
e, E, f, g, G
float *
Octal Integer:
int *
char *
162
C Standard Library
tab).
u
unsigned
int *
x, X
Hexadecimal Integer
int *
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.
int fgetc(FILE *stream)
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.
char *fgets(char *str, int n, FILE *stream)
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.
If an error occurs, 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.
int fputc(int char, FILE *stream)
Parameters
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
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:
This is c programming.This is a system programming language.
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.
int getc(FILE *stream)
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.
char *gets(char *str)
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:
Enter a string : tutorialspoint.com
You entered: tutorialspoint.com
Declaration
Following is the declaration for putc() function.
int putc(int char, FILE *stream)
Parameters
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.
int putchar(int char)
Parameters
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.
int puts(const char *str)
Parameters
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.
int ungetc(int char, FILE *stream)
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:
this is tutorials point
!c standard library
!library functions and macros
Now let us compile and run the above program that will produce the following
result:
this is tutorials point
+c standard library
+library functions and macros
178
C Standard Library
Declaration
Following is the declaration for perror() function.
void perror(const char *str)
Parameters
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:
Error: : No such file or directory
180
13. <STDLIB.H>
C Standard Library
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:
S.N.
size_t
This is the unsigned
the sizeof keyword.
integral
type
and
is
the
result
of
wchar_t
This is an integer type of the size of a wide character constant.
div_t
This is the structure returned by the div function.
ldiv_t
This is the structure returned by the ldiv function.
Library Macros
Following are the macros defined in the header stdlib.h:
S.N.
NULL
This macro is the value of a null pointer constant.
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.
RAND_MAX
This macro is the maximum value returned by the rand function.
MB_CUR_MAX
This macro is the maximum number of bytes in a multi-byte character
set which cannot be larger than MB_LEN_MAX.
Library Functions
Following are the functions defined in the header stdio.h:
S.N.
C Standard Library
unsigned long int strtoul(const char *str, char **endptr, int base)
Converts the string pointed to, by the argument str to an unsigned
long integer (type unsigned long int).
10
11
void abort(void)
Causes an abnormal program termination.
12
13
14
15
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 *))
Performs a binary search.
17
18
int abs(int x)
Returns the absolute value of x.
19
20
21
22
int rand(void)
Returns a pseudo-random number in the range of 0 to RAND_MAX.
23
24
25
26
184
C Standard Library
28
Declaration
Following is the declaration for atof() function.
double atof(const char *str)
Parameters
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:
String value = 98993489, Float value = 98993488.000000
String value = tutorialspoint.com, Float value = 0.000000
char
*str) converts
the
string
Declaration
Following is the declaration for atoi() function.
int atoi(const char *str)
Parameters
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:
String value = 98993489, Int value = 98993489
String value = tutorialspoint.com, Int value = 0
Declaration
Following is the declaration for atol() function.
long int atol(const char *str)
Parameters
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
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:
String value = 98993489, Long value = 98993489
String value = tutorialspoint.com, Long value = 0
Declaration
Following is the declaration for strtod() function.
double strtod(const char *str, char **endptr)
188
C Standard Library
Parameters
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:
The number(double) is 20.303000
String part is | This is test|
C Standard Library
Declaration
Following is the declaration for strtol() function.
long int strtol(const char *str, char **endptr, int base)
Parameters
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:
The number(unsigned long integer) is 2030300
String part is | This is test|
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
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:
The number(unsigned long integer) is 2030300
String part is | This is test|
Declaration
Following is the declaration for calloc() function.
void *calloc(size_t nitems, size_t size)
Parameters
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:
Number of elements to be entered:3
Enter 3 numbers:
22
55
14
The numbers entered are: 22 55 14
Declaration
Following is the declaration for free() function.
void free(void *ptr)
Parameters
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,
return(0);
}
Let us compile and run the above program that will produce the following result:
String = tutorialspoint, Address = 355090448
String = tutorialspoint.com, Address = 355090448
C Standard Library
Declaration
Following is the declaration for malloc() function.
void *malloc(size_t size)
Parameters
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,
free(str);
return(0);
}
195
C Standard Library
Let us compile and run the above program that will produce the following result:
String = tutorialspoint, Address = 355090448
String = tutorialspoint.com, Address = 355090448
Declaration
Following is the declaration for realloc() function.
void *realloc(void *ptr, size_t size)
Parameters
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;
C Standard Library
printf("String = %s,
/* Reallocating memory */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s,
free(str);
return(0);
}
Let us compile and run the above program that will produce the following result:
String = tutorialspoint, Address = 355090448
String = tutorialspoint.com, Address = 355090448
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:
Going to open nofile.txt
Going to abort the program
Aborted (core dumped)
Declaration
Following is the declaration for atexit() function.
int atexit(void (*func)(void))
Parameters
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 );
printf("Starting
main program...\n");
return(0);
}
Let us compile and run the above program that will produce the following result:
Starting main program...
Exiting main program...
This is functionA
C Standard Library
Declaration
Following is the declaration for exit() function.
void exit(int status)
Parameters
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:
Start of the program....
Exiting the program....
200
C Standard Library
Declaration
Following is the declaration for getenv() function.
char *getenv(const char *name)
Parameters
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)
C Standard Library
Declaration
Following is the declaration for system() function.
int system(const char *command)
Parameters
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:
drwxr-xr-x 2 apache apache 4096 Aug 22 07:25 hsperfdata_apache
drwxr-xr-x 2 railo railo 4096 Aug 21 18:48 hsperfdata_railo
rw------ 1 apache apache 8 Aug 21 18:48 mod_mono_dashboard_XXGLOBAL_1
rw------ 1 apache apache 8 Aug 21 18:48 mod_mono_dashboard_asp_2
srwx---- 1 apache apache 0 Aug 22 05:28 mod_mono_server_asp
rw------ 1 apache apache 0 Aug 22 05:28 mod_mono_server_asp_1280495620
srwx---- 1 apache apache 0 Aug 21 18:48 mod_mono_server_global
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;
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.
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const
void *, const void*))
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:
Before sorting the list is:
88 56 100 2 25
After sorting the list is:
2 25 56 88 100
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
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
numer,
int
Declaration
Following is the declaration for div() function.
div_t div(int numer, int denom)
Parameters
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.
long int labs(long int x)
Parameters
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.
div_t div(long int numer, long int denom)
Parameters
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.
RAND_MAX is a constant whose default value
implementations but it is granted to be at least 32767.
may
vary
between
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;
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.
void srand(unsigned int seed)
Parameters
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.
int mblen(const char *str, size_t n)
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;
pmb = NULL;
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
Converting to multibyte string
Characters converted 1
Hex value of first multibyte character: 0x168c6010
Length in bytes of multibyte character 168c6010: 1
Length in bytes of multibyte character 0: 0
Declaration
Following is the declaration for mbstowcs() function.
size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)
Parameters
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;
return(0);
}
Let us compile and run the above program that will produce the following result:
Converting to multibyte string
Characters converted 1
Hex value of first multibyte character: 0x19a60010
Converting back to Wide-Character string
Characters converted 1
Hex value of first wide character 0x19a60030
Declaration
Following is the declaration for mbtowc() function.
216
C Standard Library
Parameters
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.
size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)
Parameters
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";
C Standard Library
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.
int wctomb(char *str, wchar_t wchar)
Parameters
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:
Converting wide character:
Characters converted: 1
Multibyte character: a
Trying to convert when target is NULL:
Characters converted: 0
Multibyte character:
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:
S.N.
size_t
This is the unsigned
the sizeof keyword.
integral
type
and
is
the
result
of
Library Macros
Following is the macro defined in the header string.h:
S.N.
NULL
This macro is the value of a null pointer constant.
Library Functions
Following are the functions defined in the header string.h:
S.N.
221
C Standard Library
10
11
12
result
is
dependent
on
the
222
C Standard Library
13
14
15
16
17
18
19
20
21
22
C Standard Library
Declaration
Following is the declaration for memchr() function.
void *memchr(const void *str, int c, size_t n)
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:
String after |.| is - |.tutorialspoint.com|
Declaration
Following is the declaration for memcmp() function.
int memcmp(const void *str1, const void *str2, size_t n)
Parameters
Return Value
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;
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:
str2 is less than str1
Declaration
Following is the declaration for memcpy() function.
void *memcpy(void *str1, const void *str2, size_t n)
Parameters
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:
Before memcpy dest =
After memcpy dest = http://www.tutorialspoint.com
Declaration
Following is the declaration for memmove() function.
void *memmove(void *str1, const void *str2, size_t n)
Parameters
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:
Before memmove dest = oldstring, src = newstring
After memmove dest = newstring, src = newstring
Declaration
Following is the declaration for memset() function.
void *memset(void *str, int c, size_t n)
228
C Standard Library
Parameters
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:
This is string.h library function
$$$$$$$ string.h library function
C Standard Library
Declaration
Following is the declaration for strcat() function.
char *strcat(char *dest, const char *src)
Parameters
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];
strcpy(src,
"This is source");
strcat(dest, src);
return(0);
}
Let us compile and run the above program that will produce the following result:
Final destination string : |This is destinationThis is source|
230
C Standard Library
Declaration
Following is the declaration for strncat() function.
char *strncat(char *dest, const char *src, size_t n)
Parameters
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];
strcpy(src,
"This is source");
return(0);
231
C Standard Library
}
Let us compile and run the above program that will produce the following result:
Final destination string : |This is destinationThis is source|
Declaration
Following is the declaration for strchr() function.
char *strchr(const char *str, int c)
Parameters
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;
C Standard Library
return(0);
}
Let us compile and run the above program that will produce the following result:
String after |.| is - |.tutorialspoint.com|
Declaration
Following is the declaration for strcmp() function.
int strcmp(const char *str1, const char *str2)
Parameters
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:
str2 is less than str1
Declaration
Following is the declaration for strncmp() function.
int strncmp(const char *str1, const char *str2, size_t n)
Parameters
C Standard Library
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:
str2 is less than str1
Declaration
Following is the declaration for strcoll() function.
int strcoll(const char *str1, const char *str2)
Parameters
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:
str1 is less than str2
Declaration
Following is the declaration for strcpy() function.
char *strcpy(char *dest, const char *src)
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:
Final copied string : This is tutorialspoint.com
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:
Final copied string : This is tu
239
C Standard Library
Declaration
Following is the declaration for strcspn() function.
size_t strcspn(const char *str1, const char *str2)
Parameters
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.
char *strerror(int errnum)
Parameters
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:
Error: No such file or directory
Declaration
Following is the declaration for strlen() function.
size_t strlen(const char *str)
Parameters
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.
char *strpbrk(const char *str1, const char *str2)
Parameters
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;
C Standard Library
{
printf("Character not found");
}
return(0);
}
Let us compile and run the above program that will produce the following result:
First matching character: 3
Declaration
Following is the declaration for strrchr() function.
char *strrchr(const char *str, int c)
Parameters
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:
String after |.| is - |.com|
Declaration
Following is the declaration for strspn() function.
size_t strspn(const char *str1, const char *str2)
Parameters
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:
Length of initial segment matching 4
Declaration
Following is the declaration for strstr() function.
char *strstr(const char *haystack, const char *needle)
Parameters
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:
The substring is: Point
Declaration
Following is the declaration for strtok() function.
char *strtok(char *str, const char *delim)
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:
Length of string |Tutorials Point| is: |15|
249
15. <TIME.H>
C Standard Library
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:
S.N.
size_t
This is the unsigned
the sizeof keyword.
integral
type
and
is
the
result
of
clock_t
This is a type suitable for storing the processor time.
time_t is
This is a type suitable for storing the calendar time.
struct tm
This is a structure used to hold the time and date.
/* seconds,
range 0 to 59
*/
int tm_min;
/* minutes, range 0 to 59
*/
int tm_hour;
/* hours, range 0 to 23
*/
int tm_mday;
*/
int tm_mon;
/* month, range 0 to 11
*/
int tm_year;
*/
int tm_wday;
*/
int tm_yday;
*/
250
C Standard Library
int tm_isdst;
*/
};
Library Macros
Following are the macros defined in the header time.h:
S.N.
NULL
This macro is the value of a null pointer constant.
CLOCKS_PER_SEC
This macro represents the number of processor clocks per second.
Library Functions
Following are the functions defined in the header time.h:
S.N.
Returns a pointer to a string which represents the day and time of the
structure timeptr.
clock_t clock(void)
C Standard Library
Time (GMT).
struct tm *localtime(const time_t *timer)
6
Declaration
Following is the declaration for asctime() function.
char *asctime(const struct tm *timeptr)
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;
*/
int tm_mon;
/* month, range 0 to 11
*/
int tm_year;
*/
252
C Standard Library
int tm_wday;
*/
int tm_yday;
*/
int tm_isdst;
*/
};
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:
Sat Mar 25 06:10:10 1989
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.
On a 32 bit system where CLOCKS_PER_SEC equals 1000000 this function will
return the same value approximately every 72 minutes.
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);
C Standard Library
);
return(0);
}
Let us compile and run the above program that will produce the following result:
Starting of the program, start_t = 0
Going to scan a big loop, start_t = 0
End of the big loop, end_t = 20000
Total time taken by CPU: 0.000000
Exiting of the program...
Declaration
Following is the declaration for ctime() function.
char *ctime(const time_t *timer)
Parameters
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:
Current time = Mon Aug 13 08:23:14 2012
Declaration
Following is the declaration for difftime() function.
double difftime(time_t time1, time_t time2)
Parameters
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:
Starting of the program...
Sleeping for 5 seconds...
Execution time = 5.000000
Exiting of the program...
C Standard Library
Declaration
Following is the declaration for gmtime() function.
struct tm *gmtime(const time_t *timer)
Parameters
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;
*/
int tm_mon;
/* month, range 0 to 11
*/
int tm_year;
*/
int tm_wday;
*/
int tm_yday;
*/
int tm_isdst;
*/
};
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:
Current world clock:
London : 14:10
China : 21:10
Declaration
Following is the declaration for localtime() function.
struct tm *localtime(const time_t *timer)
Parameters
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
int tm_min;
/* minutes, range 0 to 59
*/
int tm_hour;
/* hours, range 0 to 23
*/
int tm_mday;
*/
int tm_mon;
/* month, range 0 to 11
*/
int tm_year;
*/
int tm_wday;
*/
int tm_yday;
*/
int tm_isdst;
*/
};
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:
Current local time and date: Thu Aug 23 09:12:05 2012
C Standard Library
Declaration
Following is the declaration for mktime() function.
time_t mktime(struct tm *timeptr)
Parameters
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;
*/
int tm_mon;
/* month, range 0 to 11
*/
int tm_year;
*/
int tm_wday;
*/
int tm_yday;
*/
int tm_isdst;
*/
};
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:
Wed Jul 4 00:00:01 2001
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.
Specifier
Replaced By
Example
%a
Sun
%A
Sunday
%b
Mar
%B
March
%c
Sun
Aug
19
02:56:02 2012
%d
19
%H
14
%I
05
%j
231
%m
08
%M
Minute (00-59)
55
%p
AM or PM designation
PM
263
C Standard Library
%S
Second (00-61)
02
%U
33
%w
%W
34
%x
Date representation
08/19/12
%X
Time representation
02:50:06
%y
01
%Y
Year
2012
%Z
CDT
%%
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;
*/
int tm_mon;
/* month, range 0 to 11
*/
int tm_year;
*/
int tm_wday;
*/
int tm_yday;
*/
int tm_isdst;
*/
};
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:
Formatted date & time : |08/23/12 - 12:40AM|
Declaration
Following is the declaration for time() function.
265
C Standard Library
Parameters
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:
Hours since January 1, 1970 = 393923
266