Lesson 19 - Learning Goals

19.1 Learn the rules for Mixed Arithmetic Expressions

19.2 Learn the C String functions

19.3 Learn the C vector functions

Results of Mixed Arithmetic Expressions

float f_value ;

double d_value ;

char c_value ;

short int s_value ;

long int l_value ;

int i_value ;

 Expression Type c_value * i_value int f_value - 7.3 double d_value + c_value double c_value - s_value int s_value - l_value long int s_value + 7 int s_value - 7.0 double 7 + 7.0 double

Example Use of Casts

double ratio, q, r ;

q = 7.0 ;

r = 2.0 ;

ratio = (int) q / (int) r ;

String Functions

 Functions Arguments Description strcpy( ) char *s1, char *s2 copies s2 to s1 ; returns s1 strncpy( ) char *s1, char *s2, int n copies at most n characters of s2 to s1 ; returns s1 strcat( ) char *s1, char *s2 concatenates s2 to end of s1 ; returns s1 strncat( ) char *s1, char *s2, int n concatenates first n characters of s2 to end of s1 ; returns s1 strcmp( ) char *s1, char *s2 compares s1 to s2 ; returns < 0 if s1 < s2, 0 if s1 == s2 or > 0 if s1 > s2 strlen( ) char *s1 returns length of s1 ( not including `\0` )

Program Using String Functions

```/* test various functions in string library */
#include <stdio.h>
#include <string.h>

main ( )
{

char string1[ ] = ''document'' ; /* first test string */
char string2[ ] = ''disk'' ; /* second test string */
char s3[20], s4 [20], s5[20] ;

/* test string length */
printf(''Length of string 1 is %d\n'', strlen(string1)) ;

/* test string copy functions */
strcpy(s3, string2) ;
strncpy(s4, string2, 3) ;
printf(''Two copied strings are %s and %s \n'', s3, s4) ;

/* test string concatenation functions */
strcat(s3, string1) ;
strncat(s4, string1, 3) ;
printf(''Two concatenated strings are %s and %s \n'', s3, s4) ;

/* test string comparison */
if(strcmp(s3, s4)) printf(''Strings are different \n'') ;
else
printf(''Strings are identical \n'') ;
}

```

OUTPUT :

```Length of string1 is 8
Two copied strings are disk and dis
Two concatenated strings are disk document and disdoc
Strings are different

```

Function to Compute Length of a Vector

```/* function to compute the length of a vector */

#include <math.h>
double length( double v[ ], int n)
{
double total = 0.0 ;
int i ;
for( i=0 ; i<n ; i++ ) total += v[i] * v[i] ;
return(sqrt(total)) ;
}

```

Function to Compute Inner Product of Two Vectors

```/* function to compute an inner product */

double inner_product( double v[ ], double w[ ], int n )
{
double total = 0.0 ;
int i ;
for ( i=0 ; i<n ; i++ ) total += v[i] * w[i] ;
return(total) ;
}

```