ICS103 Programming in C
1 / 23

ICS103 Programming in C Lecture 15: Strings - PowerPoint PPT Presentation

  • Uploaded on

ICS103 Programming in C Lecture 15: Strings. Outline. What is a String? The NULL Character ‘\0’ in Strings Input/Output with printf and scanf Input/Output with gets and puts String functions in the standard Library strcat, strcpy, strcmp, strlen, strchr, strstr, strtok Character functions

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' ICS103 Programming in C Lecture 15: Strings' - sidone

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

ICS103 Programming in CLecture 15: Strings


  • What is a String?

  • The NULL Character ‘\0’ in Strings

  • Input/Output with printf and scanf

  • Input/Output with gets and puts

  • String functions in the standard Library

    • strcat, strcpy, strcmp, strlen, strchr, strstr, strtok

  • Character functions

    • isalpha, isdigit, islower, isupper, toupper, tolower, …

What is a string
What is a String?

  • A string is any sequence of characters enclosed in double quotes -- “Hello World".

  • A string is represented in C as an array of type char.

  • We can declare and initialize a string variable using any of the following:

  • Examples:

    char str1[20] = {‘H',‘e','l',‘l',‘o',' ',‘W',‘o',‘r',‘l',‘d',’\0’}; //as an arrays

    char str2[20] = "Hello World"; //with size

    char str3[]= "Hello World"; //without size

    char *str4= "Hello World"; // as a pointer (arrays are pointers)

Null character 0
NULL character ‘\0’?

  • To avoid the need for size, when we initialize a string, C automatically appends the special NULL character, ‘\0’, to the end of the string to help identify the actual end of the string.

  • For example, the declaration:

    char str[20] = "Hello World";

    is actually represented in the memory as shown below:

Input output with printf and scanf
Input/Output with printf and scanf …

  • printf can handle string arguments as long as the placeholder %s is used in the format string:

    char s[] = “Hello World”;

    printf(”%s\n”, s);

  • scanf reads a string as follows:

    • skips leading whitespace characters such as blanks, newlines, and tabs.

    • reads the characters until it comes across a whitespace character, then scanning stops, and scanf places the null character at the end of the string in its array argument.

      char s[10];

      scanf(“%9s”, s);

  • Notice that there is no &, this is because strings are arrays, and arrays are already pointers.


#include <stdio.h>

#define SIZE 10

int main(void) {

char dept[SIZE];

int course;

char days[SIZE];

int time;

printf("Enter department code, course number, days and time like this: ICS 103 SUMT 0810\n");

printf("> ");

scanf("%s%d%s%d", dept, &course, days, &time);

printf("%s %d meets %s at %d\n", dept, course, days, time);


return 0;


Input output with gets and puts
Input/Output with gets and puts

  • A problem with scanf when reading a string is that it stops scanning the moment it encounters a white space.

  • An alternative is the function gets that continue to scan for characters until it encounters the new line character – until the user types the enter key.

    char school[SIZE];


  • Similar to the function gets, the function puts can be used to print a string.


  • Note: puts automatically prints ‘\n’ at the end of the output.


#include <stdio.h>

#define SIZE 81

int main(void) {

char school[SIZE];

printf("Enter the name of your University : ");


puts("You typed: ");



return (0);


Input output with fgets and fputs
Input/Output with fgets and fputs

  • For Input/Output with data files, the standard library also has fgets and fputs. The general form is:

    fputs (s, f);

    fgets(s, n, f);


    s – a string

    f – a file name

    n - the maximum number of chars to scan

  • fgets stops scanning when it encounters end of line or when it reads n-1 characters. Why n-1 and not n? - the remaining location is used to store the NULL character.


#include <stdio.h>

#include <string.h>

#define SIZE 81

int main(void) {

char line[SIZE], *status;

FILE *infile, *outfile;

infile = fopen("scores.txt", "r");

outfile = fopen("copy_of_scores.txt", "w");

status = fgets(line, SIZE, infile);

while (status != NULL) {

fputs(line, outfile);

fputs(line, stdout);

status = fgets(line, SIZE, infile);





return 0;


String processing functions
String Processing Functions

  • The full list of string processing functions are listed in appendix B. Make sure to put the following at the top of the program to use these functions.

    #include <string.h>

  • We can use the assignment symbol in a declaration of a string variable with initialization.

    char s[] = “hello”;

  • Or use the string copy (strcpy) function. Function strcpy copies its second string argument into its first argument.

    strcpy(s, ”Test String”);


#include <stdio.h>


int main() {

char string1 [81], string2 []= "Hello World" ;

strcpy (string1, string2 ) ;

puts(string1) ;


return 0;


String length strlen
String Length (strlen)

  • Strlen function counts the number of characters before the null terminator.

  • If the null terminator is the first character (empty string), it returns 0.

#include <stdio.h>


int main() {

char string1 [80] ;

char string2 [ ]= "Kfupm Dhahran" ;


printf ("%d %d", strlen ( string1 ), strlen ( string2 ) ) ;


return 0;


String comparison strcmp
String Comparison (strcmp)

  • Strcmp compares two strings lexicographically (based on ASCII code).

    • Returns 0 if they are same

    • Returns negative if s1< s2

    • Returns positive if s1> s2

  • Example: Compare and swap two strings:

#include <stdio.h>


int main() {

char s1 [ ]= "ICS";

char s2 [ ]= "KFUPM" ;

printf ("%d \n", strcmp(s1, s2)) ;


return 0;


String concatenation strcat
String Concatenation (strcat)

  • strcat takes two strings and appends the second to the end of the first.



int main(void) {

char first[20], last[20];

printf("Plz Enter your first name :");


printf("Plz Enter your last name :");


strcat(first, last);

printf("\nYour full name is : ");



return 0;


String tokenization strtok
String Tokenization (strtok)

  • Tokenization means splitting a string into parts called tokens based on a specified set of delimiters.

    strtok( str, delims);

  • The strtok function returns a pointer to the next "token" in str, where delims contains the delimiters that determine the token. It returns NULL if tokens are exhausted.

  • In order to convert a string to tokens, the first call to strtok should have str point to the string to be tokenized. All calls after this should have str to be NULL.


#include <stdio.h>

#include <string.h>

int main(void) {

char str[] = "now # is the time for all # ics 103 students # to start preparing # for the final";

char delims[] = "#";

char *token;

token = strtok( str, delims );

while ( token != NULL ) {

printf( "next token is: %s\n", token);

token = strtok( NULL, delims );



return 0;


First time

Subsequent times

Searching a string strchr and strstr
Searching a string (strchr and strstr)

  • Two functions for searching a string arestrchr and strstr.

    strchr(str, chr);

    strstr(str1, str2);

  • strchr returns a pointer to the first occurrence of the chr in str, or NULL if target is not found.

  • strstr returns a pointer to the first occurrence of str2 in str1, or NULL if no match is found.




int main(void) {

char s[81], target[81], *result;

printf("Enter your sentence: ");


printf("Enter a string to search: ");


result = strstr(s, target);

if (result != NULL)

printf("the target string, %s, was found in %s\n", target, s);


printf("the target string, %s, was not found in %s\n", target, s);


return 0;


Character related functions
Character Related functions

  • In addition to the string processing functions, C also provides the following character-related functions.

  • Make sure to put the following at the top of the program to use these functions.#include <ctype.h>





int main(void) {

char s[]="ICS 103 : Computer Programming in C (Term 081)";

intlen=strlen(s), i;

for ( i=0 ; i< len ; i++)

s[i]= toupper(s[i]);


printf("The digits in the string are: ");

for ( i=0 ; i< len ; i++)


printf("%c", s[i]);



return 0;


Example1 : Counts digits, spaces, letters (capital and lower cases), control, and punctuation characters.

#include <stdio.h>

#include <ctype.h>

#include <string.h>

int main(void) {

int i=0,up=0,low=0, space=0,digit=0,punc=0,control=0;

char str[80] = " ICS 103 Programming in C !!";

printf("The string= %s of length= %d\n", str,strlen(str));

while(str[i] !='\0') {

if (ispunct(str[i]))


if (iscntrl(str[i]))











printf("The number of digits = %d\n",digit);

printf("The number of spaces = %d\n",space);

printf("Upper case letters = %d\n", up);

printf("Lower case letters = %d\n", low);

printf("Punctuation characters = %d\n",punc);

printf("Total control characters = %d\n", control);


return 0;}

Example 2 : Counts the number of vowels and prints the string with the first letter capitalized and the remaining in lower case.

#include <stdio.h>

#include <string.h>

#include <ctype.h>

int isvowel(char ch);

int main( ) {

char str[81];

int len, i, nvowel=0, nupper=0, nlower=0;

printf("Enter your string >");



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

if (isvowel(str[i]))




for (i=1; i<len; i++)


printf("Number of vowels = %d\n", nvowel);

printf("Capitalised string = %s\n", str);


return 0;


int isvowel(char ch){

int vowel;

char lower=tolower(ch);


return vowel;