ProDeveloperTutorial.com

Tutorials and Programming Solutions
Menu
  • Shell Scripting
  • System Design
  • Linux System Programming
  • 4g LTE
  • Coding questions
  • C
  • C++
  • DSA
  • GIT
  • 450 DSA Cracker
  • 5G NR
  • O-RAN

Advanced C Pointer Programming chapter 6: Pointers and Strings.

prodevelopertutorial August 3, 2020

There is no separate data type in C to hold strings.

In C, strings are character array. They should always end with NULL “\0” character.

While allocating memory for strings, space should be allocated for NULL character also.

C allows us to create a static strings or dynamic strings using pointers.

We usually send C strings to other functions with the help of char pointer.

 

How many different ways to initialize strings in C?

There are 3 different ways to initialize C strings.

1. Statically allocate memory
2. Dynamically allocate memory
3. Allocation in read only segment.

1. Creating string in stack memory

This is very simple way to create a string.

You will create a char array to hold the string value. It should be terminated by NUL character ‘\0’. THe space should also be allocated for NUL character.

Example:

#include<stdio.h>  
#include<stdlib.h>  

  
int main() 
{ 

    char arr[] = "Hello";
    char arr_1[30] = "ProDeveloperTutorial";
    char arr_2 [10] = {'a', 'b', 'c', 'd', 'e', '\0'};

    printf("arr = %s \n", arr);
    printf("arr_1 = %s \n", arr_1);
    printf("arr_2 = %s \n", arr_2);

    return 0; 
} 

 

Output:

arr = Hello
arr_1 = ProDeveloperTutorial
arr_2 = abcde

2. Creating string in heap memory

You can also allocate memory dynamically my using malloc or calloc.

To copy the value into dynamically allocated string, you need to use “strcpy” function.

Example:

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  

  
int main() 
{ 

    char *char_ptr = (char*) malloc(100);


    strcpy(char_ptr, "www.ProDeveloperTutorial.com");

    printf("String is  = %s \n", char_ptr);

    return 0; 
} 

 

Output:

String is = www.ProDeveloperTutorial.com

 

3. Creating string in read only memory

If you create a string as shown below. The string will be a read-only and will be created in read only segment. That address will be given to char_ptr.

Trying to modify the value pointed by char_ptr will result in undefined behavior.

    char *char_ptr = "www.ProDeveloperTutorial.com";

Example:

#include<stdio.h>  
#include<stdlib.h>  

  
int main() 
{ 

    char *char_ptr = "www.ProDeveloperTutorial.com";

    printf("char_ptr = %s \n", char_ptr);


    return 0; 
} 

Output:

char_ptr = www.ProDeveloperTutorial.com

 

Consider below example, why we don’t derefer string while printing it?

#include<stdio.h>  
#include<stdlib.h>  

  
int main() 
{ 

    char *char_ptr = "www.ProDeveloperTutorial.com";

    printf("String is  = %s \n", char_ptr);
    printf("Char is = %c \n", *char_ptr);


    return 0; 
} 

 

Output:

String is = www.ProDeveloperTutorial.com
Char is = w

Why we dont derefer for “%s” but we derefer for “%c” ?

“%s” expects a pointer type argument.

“%c” expects a character.

 

How to pass a simple string to a function in C?

 

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  

void display_string(char *ptr)
{
    printf("The string is = %s\n", ptr);
}
  
int main() 
{ 

    char *char_ptr =  "www.ProDeveloperTutorial.com";

    display_string(char_ptr);

    return 0; 
} 

Output:

The string is = www.ProDeveloperTutorial.com

 

How to return a simple string to a function in C?

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  

char* get_string()
{
    char *char_ptr = (char*) malloc(100);


    strcpy(char_ptr, "www.ProDeveloperTutorial.com");

    return char_ptr;

}
  
int main() 
{ 

    char *char_ptr =  get_string();

    printf("String is  = %s \n", char_ptr);

    return 0; 
} 

 

Output:

String is  = www.ProDeveloperTutorial.com

 

Share
Email
Tweet
Linkedin
Reddit
Stumble
Pinterest
Prev Article
Next Article

About The Author

prodevelopertutorial

Follow this blog to learn more about C, C++, Linux, Competitive Programming concepts, Data Structures.

ProDeveloperTutorial.com

Tutorials and Programming Solutions
Copyright © 2022 ProDeveloperTutorial.com