Tutorials Logic, IN +91 8092939553 info@tutorialslogic.com
FAQs Support
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Interview Questions Website Development
Compiler Tutorials

C Strings

What is a String in C?

In C, a string is an array of characters terminated by a null character '\0'. There is no built-in string type — strings are always char arrays.

// String declaration and initialization
char name[10] = "Alice";    // stored as: A l i c e \0 _ _ _ _
char name[] = "Alice";      // size inferred: 6 bytes (5 chars + \0)
char name[] = {'A','l','i','c','e','\0'};  // explicit null terminator

// String literal (read-only pointer)
char *msg = "Hello";        // pointer to string literal

string.h Functions

The <string.h> header provides many useful string manipulation functions:

FunctionDescriptionExample
strlen(s)Returns length of string (excluding \0)strlen("hello") → 5
strcpy(dest, src)Copies src into deststrcpy(a, "hi")
strncpy(dest, src, n)Copies at most n charactersSafer version of strcpy
strcat(dest, src)Appends src to end of deststrcat(a, " world")
strncat(dest, src, n)Appends at most n charactersSafer version of strcat
strcmp(s1, s2)Compares two strings; 0 if equalstrcmp("abc","abc") → 0
strncmp(s1, s2, n)Compares first n charactersSafer version of strcmp
strchr(s, c)Finds first occurrence of char cstrchr("hello",'l')
strstr(s, sub)Finds first occurrence of substringstrstr("hello","ell")
strtok(s, delim)Splits string by delimiterstrtok(s, ",")
sprintf(buf, fmt, ...)Writes formatted string to buffersprintf(buf, "%d", 42)
sscanf(s, fmt, ...)Reads formatted data from stringsscanf("42", "%d", &n)
String Basics — Null Terminator and fgets
#include <stdio.h>
#include <string.h>

int main() {
    char name[] = "Alice";

    // Print string
    printf("Name: %s\n", name);
    printf("Length: %zu\n", strlen(name));  // 5

    // Access individual characters
    printf("Characters: ");
    for (int i = 0; name[i] != '\0'; i++) {
        printf("%c ", name[i]);
    }
    printf("\n");

    // Null terminator
    printf("name[5] = %d (null char)\n", name[5]);  // 0

    // Reading string with fgets (safer than scanf or gets)
    char input[100];
    printf("Enter your name: ");
    fgets(input, sizeof(input), stdin);

    // Remove trailing newline that fgets includes
    input[strcspn(input, "\n")] = '\0';
    printf("Hello, %s!\n", input);

    return 0;
}
string.h Functions — strlen, strcpy, strcat, strcmp
#include <stdio.h>
#include <string.h>

int main() {
    char s1[50] = "Hello";
    char s2[] = "World";
    char s3[50];

    // strlen
    printf("strlen(\"%s\") = %zu\n", s1, strlen(s1));  // 5

    // strcpy
    strcpy(s3, s1);
    printf("strcpy: s3 = \"%s\"\n", s3);  // Hello

    // strcat
    strcat(s1, " ");
    strcat(s1, s2);
    printf("strcat: s1 = \"%s\"\n", s1);  // Hello World

    // strcmp
    int cmp = strcmp("apple", "banana");
    printf("strcmp(\"apple\",\"banana\") = %d\n", cmp);  // negative (a < b)
    printf("strcmp(\"abc\",\"abc\")     = %d\n", strcmp("abc","abc"));  // 0

    // strchr — find first occurrence of character
    char *pos = strchr("Hello World", 'W');
    if (pos) printf("strchr found 'W' at: \"%s\"\n", pos);  // World

    // strstr — find substring
    char *sub = strstr("Hello World", "World");
    if (sub) printf("strstr found: \"%s\"\n", sub);  // World

    return 0;
}
String Operations — Reverse and Palindrome Check
#include <stdio.h>
#include <string.h>

void reverseString(char str[]) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = temp;
    }
}

int isPalindrome(char str[]) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - 1 - i]) return 0;
    }
    return 1;
}

int main() {
    char s1[] = "Hello";
    reverseString(s1);
    printf("Reversed: %s\n", s1);  // olleH

    char words[][20] = {"racecar", "hello", "madam", "world"};
    for (int i = 0; i < 4; i++) {
        printf("\"%s\" is %s\n", words[i],
               isPalindrome(words[i]) ? "a palindrome" : "not a palindrome");
    }

    return 0;
}

/*
Reversed: olleH
"racecar" is a palindrome
"hello" is not a palindrome
"madam" is a palindrome
"world" is not a palindrome
*/

Ready to Level Up Your Skills?

Explore 500+ free tutorials across 20+ languages and frameworks.