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.

Leave a Reply Cancel Reply

You must be logged in to post a comment.

ProDeveloperTutorial.com

Tutorials and Programming Solutions
Copyright © 2023 ProDeveloperTutorial.com
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Do not sell my personal information.
Cookie SettingsAccept
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT