google-site-verification: google61fe8ba583a51912.html
C String Functions

What are String Functions?

C provides a rich set of built-in string functions in the <string.h> header file to perform common string operations like copying, concatenating, comparing, searching, and more.

Include Header

#include <string.h>

Complete String Functions Reference

1. strlen() - String Length

Syntax: size_t strlen(const char *str);

Returns the number of characters in a string (excluding null terminator).

#include <stdio.h> #include <string.h> int main() { char str1[] = "Hello"; char str2[] = "Cloud Computing"; char str3[] = ""; printf("Length of '%s': %lu\n", str1, strlen(str1)); // 5 printf("Length of '%s': %lu\n", str2, strlen(str2)); // 15 printf("Length of empty: %lu\n", strlen(str3)); // 0 // Manual implementation int len = 0; while(str1[len] != '\0') len++; printf("Manual length: %d\n", len); // 5 return 0; }

2. strcpy() - String Copy

Syntax: char *strcpy(char *dest, const char *src);

Copies string from source to destination (including null terminator).

#include <stdio.h> #include <string.h> int main() { char source[] = "Cloud Computing"; char dest[50]; strcpy(dest, source); printf("Source: %s\n", source); // Cloud Computing printf("Destination: %s\n", dest); // Cloud Computing // Chaining char dest2[50]; strcpy(dest2, strcpy(dest, "Hello")); printf("Chained: %s, %s\n", dest, dest2); // Hello, Hello return 0; }

3. strncpy() - Safe String Copy

Syntax: char *strncpy(char *dest, const char *src, size_t n);

Copies at most n characters from source to destination.

#include <stdio.h> #include <string.h> int main() { char source[] = "CloudComputing"; char dest[10]; strncpy(dest, source, 5); dest[5] = '\0'; // MUST add null terminator printf("First 5 chars: %s\n", dest); // Cloud // Without manual null termination char dest2[5]; strncpy(dest2, source, 5); // dest2[5] = '\0'; // If omitted, prints garbage printf("Without null: %s\n", dest2); // Undefined behavior return 0; }

4. strcat() - String Concatenation

Syntax: char *strcat(char *dest, const char *src);

Appends source string to the end of destination string.

#include <stdio.h> #include <string.h> int main() { char str1[50] = "Hello "; char str2[] = "World"; strcat(str1, str2); printf("%s\n", str1); // Hello World // Multiple concatenations char str3[100] = "C"; strcat(str3, " Programming"); strcat(str3, " Language"); printf("%s\n", str3); // C Programming Language return 0; }

5. strncat() - Safe Concatenation

Syntax: char *strncat(char *dest, const char *src, size_t n);

Appends at most n characters from source to destination.

#include <stdio.h> #include <string.h> int main() { char str1[50] = "Hello "; char str2[] = "Beautiful World"; strncat(str1, str2, 9); // Append only 9 chars printf("%s\n", str1); // Hello Beautiful // Automatically adds null terminator char dest[20] = "Hi "; strncat(dest, "there everyone", 5); printf("%s\n", dest); // Hi there return 0; }

6. strcmp() - String Compare

Syntax: int strcmp(const char *str1, const char *str2);

Compares two strings lexicographically.

Return Values:

  • 0 → strings are equal
  • <0 → str1 < str2
  • >0 → str1 > str2
#include <stdio.h> #include <string.h> int main() { char str1[] = "Apple"; char str2[] = "Apple"; char str3[] = "Banana"; char str4[] = "Apple pie"; printf("str1 vs str2: %d\n", strcmp(str1, str2)); // 0 (equal) printf("str1 vs str3: %d\n", strcmp(str1, str3)); // Negative printf("str3 vs str1: %d\n", strcmp(str3, str1)); // Positive printf("str1 vs str4: %d\n", strcmp(str1, str4)); // Negative (space < null) // Practical use char input[20]; printf("Enter 'quit' to exit: "); scanf("%s", input); if(strcmp(input, "quit") == 0) { printf("Exiting...\n"); } else { printf("You entered: %s\n", input); } return 0; }

7. strncmp() - Compare First n Characters

Syntax: int strncmp(const char *str1, const char *str2, size_t n);

Compares only first n characters.

#include <stdio.h> #include <string.h> int main() { char str1[] = "Computer"; char str2[] = "Computing"; // Compare first 4 characters if(strncmp(str1, str2, 4) == 0) { printf("First 4 chars are same: 'Comp'\n"); } // Compare first 7 characters printf("First 7 chars: %d\n", strncmp(str1, str2, 7)); // Different // Check file extension char filename[] = "document.txt"; if(strncmp(filename + 8, "txt", 3) == 0) { // filename+8 points to "txt" printf("It's a text file\n"); } return 0; }

8. strchr() - Find Character in String

Syntax: char *strchr(const char *str, int c);

Returns pointer to first occurrence of character c in string.

#include <stdio.h> #include <string.h> int main() { char str[] = "Cloud Computing"; char *ptr = strchr(str, 'C'); if(ptr != NULL) { printf("First 'C' found at position: %ld\n", ptr - str); // 0 printf("From 'C' onwards: %s\n", ptr); // Cloud Computing } // Find second occurrence ptr = strchr(ptr + 1, 'C'); if(ptr != NULL) { printf("Second 'C' at position: %ld\n", ptr - str); // 6 printf("From second 'C': %s\n", ptr); // Computing } // Character not found ptr = strchr(str, 'z'); if(ptr == NULL) { printf("Character 'z' not found\n"); } return 0; }

9. strrchr() - Find Last Occurrence

Syntax: char *strrchr(const char *str, int c);

Returns pointer to last occurrence of character.

#include <stdio.h> #include <string.h> int main() { char str[] = "C programming is powerful"; char *ptr = strrchr(str, 'p'); if(ptr != NULL) { printf("Last 'p' at position: %ld\n", ptr - str); printf("From last 'p': %s\n", ptr); // powerful } // Extract file extension char filename[] = "archive.tar.gz"; char *dot = strrchr(filename, '.'); if(dot != NULL) { printf("Extension: %s\n", dot + 1); // gz } return 0; }

10. strstr() - Find Substring

Syntax: char *strstr(const char *haystack, const char *needle);

Returns pointer to first occurrence of substring.

#include <stdio.h> #include <string.h> int main() { char text[] = "The cloud computing is the future of computing"; char *found = strstr(text, "cloud"); if(found != NULL) { printf("Found 'cloud' at position: %ld\n", found - text); // 4 printf("Remaining: %s\n", found); // cloud computing... } // Count occurrences char search[] = "computing"; int count = 0; char *ptr = text; while((ptr = strstr(ptr, search)) != NULL) { count++; ptr++; // Move to next character } printf("'%s' appears %d times\n", search, count); // 2 times return 0; }

11. strtok() - Tokenize String

Syntax: char *strtok(char *str, const char *delim);

Breaks string into tokens based on delimiters.

#include <stdio.h> #include <string.h> int main() { char str[] = "Apple,Banana,Orange,Grape"; char str2[] = "Hello World | Cloud Computing | C Programming"; // First call with string char *token = strtok(str, ","); // Subsequent calls with NULL while(token != NULL) { printf("%s\n", token); token = strtok(NULL, ","); } printf("\n"); // Multiple delimiters char *token2 = strtok(str2, " |"); while(token2 != NULL) { printf("%s\n", token2); token2 = strtok(NULL, " |"); } return 0; } /* Output: Apple Banana Orange Grape Hello World Cloud Computing C Programming */

12. memset() - Fill Memory with Value

Syntax: void *memset(void *ptr, int value, size_t num);

Fills block of memory with specified value.

#include <stdio.h> #include <string.h> int main() { char str[50] = "Hello World"; printf("Before: %s\n", str); // Hello World // Fill first 5 characters with '*' memset(str, '*', 5); printf("After: %s\n", str); // ***** World // Clear entire array char buffer[20]; memset(buffer, 0, sizeof(buffer)); // Initialize to zeros printf("Buffer cleared\n"); // Fill with specific character char stars[20]; memset(stars, '*', 19); stars[19] = '\0'; printf("%s\n", stars); // ******************* return 0; }

13. memcpy() - Copy Memory Block

Syntax: void *memcpy(void *dest, const void *src, size_t n);

Copies n bytes from source to destination (no null termination check).

#include <stdio.h> #include <string.h> int main() { char src[] = "Cloud Computing"; char dest[20]; memcpy(dest, src, strlen(src) + 1); // Copy including null printf("Copied: %s\n", dest); // Cloud Computing // Copy only part char partial[10]; memcpy(partial, src, 5); partial[5] = '\0'; printf("Partial: %s\n", partial); // Cloud // Arrays int numbers[] = {1, 2, 3, 4, 5}; int copy[5]; memcpy(copy, numbers, sizeof(numbers)); for(int i = 0; i < 5; i++) { printf("%d ", copy[i]); // 1 2 3 4 5 } return 0; }

14. memmove() - Overlapping Memory Copy

Syntax: void *memmove(void *dest, const void *src, size_t n);

Same as memcpy() but handles overlapping memory regions safely.

#include <stdio.h> #include <string.h> int main() { char str[] = "1234567890"; // Overlapping regions (memcpy might fail here) memmove(str + 2, str, 5); printf("After memmove: %s\n", str); // 1212345890 // Shift right char shift[] = "Hello"; memmove(shift + 1, shift, 5); printf("Shifted: %s\n", shift); // HHello // memcpy with overlapping = undefined behavior // memcpy(str + 2, str, 5); // DON'T DO THIS return 0; }

15. memcmp() - Compare Memory Blocks

Syntax: int memcmp(const void *ptr1, const void *ptr2, size_t n);

Compares two blocks of memory.

#include <stdio.h> #include <string.h> int main() { char str1[] = "Hello"; char str2[] = "Hello"; char str3[] = "World"; int result = memcmp(str1, str2, 5); printf("str1 vs str2: %d\n", result); // 0 (equal) result = memcmp(str1, str3, 5); printf("str1 vs str3: %d\n", result); // Non-zero // Compare integers int arr1[] = {1, 2, 3}; int arr2[] = {1, 2, 3}; if(memcmp(arr1, arr2, sizeof(arr1)) == 0) { printf("Arrays are identical\n"); } return 0; }

String Conversion Functions (<stdlib.h>)

atoi() - String to Integer

#include <stdio.h> #include <stdlib.h> int main() { char num1[] = "123"; char num2[] = "45.67"; char invalid[] = "abc"; int a = atoi(num1); int b = atoi(num2); // Stops at decimal int c = atoi(invalid); // Returns 0 printf("atoi('123'): %d\n", a); // 123 printf("atoi('45.67'): %d\n", b); // 45 printf("atoi('abc'): %d\n", c); // 0 return 0; }

atof() - String to Float/Double

#include <stdio.h> #include <stdlib.h> int main() { char str[] = "3.14159"; double pi = atof(str); printf("atof: %f\n", pi); // 3.141590 return 0; }

itoa() - Integer to String (Non-standard)

#include <stdio.h> #include <stdlib.h> int main() { int num = 12345; char str[20]; sprintf(str, "%d", num); // Standard way printf("Converted: %s\n", str); // 12345 return 0; }

Complete Example: Practical String Manipulation

#include <stdio.h> #include <string.h> #include <ctype.h> int main() { char sentence[200] = " Hello World from C Programming! "; // Remove leading/trailing spaces char *start = sentence; while(isspace(*start)) start++; char *end = sentence + strlen(sentence) - 1; while(end > start && isspace(*end)) end--; end[1] = '\0'; // Copy trimmed string char trimmed[200]; strcpy(trimmed, start); printf("Original: '%s'\n", sentence); printf("Trimmed: '%s'\n", trimmed); // Convert to uppercase for(int i = 0; trimmed[i]; i++) { trimmed[i] = toupper(trimmed[i]); } printf("Uppercase: %s\n", trimmed); // Tokenize printf("\nTokens:\n"); char *token = strtok(trimmed, " "); while(token != NULL) { printf("- %s\n", token); token = strtok(NULL, " "); } // Check if contains "WORLD" if(strstr(trimmed, "WORLD")) { printf("\nFound 'WORLD' in string\n"); } return 0; }

Quick Reference Table

FunctionPurposeReturn Value
strlen(s)Length of sNumber of chars
strcpy(d,s)Copy s to dPointer to d
strncpy(d,s,n)Copy n charsPointer to d
strcat(d,s)Append s to dPointer to d
strncat(d,s,n)Append n charsPointer to d
strcmp(s1,s2)Compare strings0, <0, >0
strncmp(s1,s2,n)Compare n chars0, <0, >0
strchr(s,c)Find char cPointer or NULL
strrchr(s,c)Find last cPointer or NULL
strstr(s1,s2)Find substringPointer or NULL
strtok(s,d)TokenizeToken or NULL
memset(p,v,n)Fill memoryPointer to p
memcpy(d,s,n)Copy memoryPointer to d
memmove(d,s,n)Copy (overlap)Pointer to d
memcmp(p1,p2,n)Compare memory0, <0, >0

Key Points

  1. Always include <string.h> for string functions
  2. Destination arrays must be large enough to hold result
  3. strncpy() does NOT automatically add null terminator
  4. strtok() modifies original string (use copy if needed)
  5. strtok() is not thread-safe (consider strtok_r())
  6. String literals are read-only when using pointers
  7. Use fgets() instead of gets() for input safety
  8. memcpy() and memmove() work with any data type

Complete C Programming Guide + Compilers Collection


1. C srand() Function – Understanding Seed Initialization

https://macronepal.com/understanding-the-c-srand-function
Explains how srand() initializes the pseudo-random number generator in C by setting a seed value. Using the same seed produces the same sequence, while time(NULL) gives different results each run.


2. C rand() Function Mechanics and Limitations

https://macronepal.com/c-rand-function-mechanics-and-limitations
Explains how rand() generates pseudo-random numbers between 0 and RAND_MAX, its deterministic nature, and limitations for security use cases.


3. C log() Function

https://macronepal.com/c-log-function-2
Covers natural logarithm calculation using <math.h> and its applications.


4. Mastering Date and Time in C

https://macronepal.com/mastering-date-and-time-in-c
Explains <time.h> functions like time(), clock(), difftime(), and struct tm.


5. Mastering time_t Type in C

https://macronepal.com/mastering-the-c-time_t-type-for-time-management
Explains time representation as seconds since Unix epoch and conversion functions.


6. C exp() Function

https://macronepal.com/c-exp-function-mechanics-and-implementation
Explains exponential function exp(x) and its scientific applications.


7. C log() Function (Alternate Guide)

https://macronepal.com/c-log-function
Comparison of log() and log10() with usage examples.


8. C log10() Function

https://macronepal.com/mastering-the-log10-function-in-c
Explains base-10 logarithm for engineering and scientific applications.


9. C tan() Function

https://macronepal.com/understanding-the-c-tan-function
Explains tangent function and radian-based calculations.


10. Random Numbers in C (Secure vs Predictable)

https://macronepal.com/mastering-c-random-numbers-for-secure-and-predictable-applications
Explains difference between rand() and secure randomness methods.


11. Free Online C Compiler

https://macronepal.com/free-online-c-code-compiler-2
Browser-based compiler for testing C programs instantly.


C Functions, Arguments, Parameters & Flow

Mastering Functions in C – Complete Guide

https://macronepal.com/c/mastering-functions-in-c-a-complete-guide/
Covers function structure, modular programming, and real-world usage.


Function Arguments in C

https://macronepal.com/c-function-arguments/
Explains how arguments are passed and used in function calls.


Function Parameters in C

https://macronepal.com/c-function-parameters/
Explains defining inputs for functions and matching them with arguments.


Function Declarations in C

https://macronepal.com/c-function-declarations-syntax-rules-and-best-practices/
Covers prototypes, syntax rules, and best practices.


Function Calls in C

https://macronepal.com/understanding-function-calls-in-c-syntax-mechanics-and-best-practices/
Explains execution flow and parameter handling during function calls.


Void Functions in C

https://macronepal.com/understanding-void-functions-in-c-syntax-patterns-and-best-practices/
Explains functions that do not return values.


Return Values in C

https://macronepal.com/c-return-values-mechanics-types-and-best-practices/
Explains different return types and how functions return results.


Pass-by-Value in C

https://macronepal.com/aws/understanding-pass-by-value-in-c-mechanics-implications-and-best-practices/
Explains how copies of variables are passed into functions.


Pass-by-Reference in C

https://macronepal.com/c/understanding-pass-by-reference-in-c-pointers-semantics-and-safe-practices/
Explains using pointers to modify original variables.


C strstr() Function

https://macronepal.com/aws/c-strstr-function/
Explains substring search inside strings in C.


C Preprocessor & Macros

https://macronepal.com/mastering-c-variadic-macros-for-flexible-debugging/
https://macronepal.com/mastering-the-stdc-macro-in-c/
https://macronepal.com/c-time-macro-mechanics-and-usage/
https://macronepal.com/understanding-the-c-date-macro/
https://macronepal.com/c-file-type/
https://macronepal.com/mastering-c-line-macro-for-debugging-and-diagnostics/
https://macronepal.com/mastering-predefined-macros-in-c/
https://macronepal.com/c-error-directive-mechanics-and-usage/
https://macronepal.com/understanding-the-c-pragma-directive/
https://macronepal.com/c-include-directive/


C Structures, Memory, Scope & Linkage

https://macronepal.com/mastering-structures-in-c/
https://macronepal.com/c-structure-declaration-mechanics-and-usage/
https://macronepal.com/c-structure-initialization-mechanics-and-best-practices/
https://macronepal.com/mastering-c-structure-member-access-for-reliable-data-handling/
https://macronepal.com/c-nested-structures/
https://macronepal.com/mastering-arrays-of-structures-in-c/
https://macronepal.com/c-structure-pointers-mechanics-and-implementation/
https://macronepal.com/understanding-c-structure-parameter-passing-mechanics/
https://macronepal.com/mastering-c-returning-structures-for-efficient-data-flow/
https://macronepal.com/c-self-referential-structures/
https://macronepal.com/mastering-structure-alignment-in-c/
https://macronepal.com/c-structure-padding-mechanics-and-optimization/
https://macronepal.com/understanding-c-flexible-array-members-mechanics-and-usage/
https://macronepal.com/mastering-c-anonymous-structures-for-flattened-data-layouts/
https://macronepal.com/c-unions/
https://macronepal.com/mastering-c-name-mangling-and-symbol-decoration/
https://macronepal.com/c-no-linkage-mechanics-and-scope-isolation/
https://macronepal.com/understanding-c-internal-linkage-mechanics-and-architecture/


C Scope, Storage Classes & Typedef

https://macronepal.com/mastering-function-prototype-scope-in-c/
https://macronepal.com/c-function-scope-mechanics-and-visibility/
https://macronepal.com/understanding-c-file-scope-mechanics-and-architecture/
https://macronepal.com/mastering-c-scope-rules-for-predictable-name-resolution/
https://macronepal.com/c-scope-rules/
https://macronepal.com/mastering-c-register-storage-class-for-historical-context-and-modern-alternatives/
https://macronepal.com/mastering-_thread_local-in-c/
https://macronepal.com/c-extern-storage-class-mechanics-and-usage/
https://macronepal.com/understanding-the-c-static-storage-class-mechanics-and-usage/
https://macronepal.com/c-auto-storage-class/
https://macronepal.com/c-typedef-with-pointers/


Extra Articles

https://macronepal.com/13757-2/
https://macronepal.com/13748-2/
https://macronepal.com/13747-2/
https://macronepal.com/13746-2/
https://macronepal.com/13745-2/
https://macronepal.com/13708-2/
https://macronepal.com/13707-2/
https://macronepal.com/13702-2/


Online Compilers

https://macronepal.com/free-html-online-code-compiler/
https://macronepal.com/free-online-python-code-compiler/
https://macronepal.com/free-online-python2-code-compiler/
https://macronepal.com/free-online-java-code-compiler/
https://macronepal.com/free-online-javascript-code-compiler/
https://macronepal.com/free-online-node-js-code-compiler/
https://macronepal.com/free-online-c-code-compiler/
https://macronepal.com/free-online-c-code-compiler-2/
https://macronepal.com/free-online-c-code-compiler-3/
https://macronepal.com/free-online-php-code-compiler/
https://macronepal.com/free-online-ruby-code-compiler/
https://macronepal.com/free-online-perl-code-compiler/
https://macronepal.com/free-online-lua-code-compiler/
https://macronepal.com/free-online-tcl-code-compiler/
https://macronepal.com/free-online-groovy-code-compiler/
https://macronepal.com/free-online-j-shell-code-compiler/
https://macronepal.com/free-online-haskell-code-compiler/
https://macronepal.com/free-online-scala-code-compiler/
https://macronepal.com/free-online-common-lisp-code-compiler/
https://macronepal.com/free-online-d-code-compiler/
https://macronepal.com/free-online-ada-code-compiler/
https://macronepal.com/free-erlang-code-compiler/
https://macronepal.com/free-online-assembly-code-compiler/

Complete Guide to Core & Advanced C Programming Concepts (Functions, Strings, Arrays, Loops, I/O, Control Flow)

https://macronepal.com/bash/building-blocks-of-c-a-complete-guide-to-functions/
Explains how functions in C work as reusable blocks of code, including declaration, definition, parameters, return values, and modular programming structure.

https://macronepal.com/bash/the-heart-of-text-processing-a-complete-guide-to-strings-in-c-2/
Explains how strings are handled in C using character arrays, string manipulation techniques, and common library functions for text processing.

https://macronepal.com/bash/the-cornerstone-of-data-organization-a-complete-guide-to-arrays-in-c/
Explains arrays in C as structured memory storage for multiple values, including indexing, initialization, and efficient data organization.

https://macronepal.com/bash/guaranteed-execution-a-complete-guide-to-the-do-while-loop-in-c/
Explains the do-while loop in C, where the loop body executes at least once before checking the condition.

https://macronepal.com/bash/mastering-iteration-a-complete-guide-to-the-for-loop-in-c/
Explains the for loop in C, including initialization, condition checking, and increment/decrement for controlled iteration.

https://macronepal.com/bash/mastering-iteration-a-complete-guide-to-while-loops-in-c/
Explains the while loop in C, focusing on condition-based repetition and proper loop control mechanisms.

https://macronepal.com/bash/beyond-if-else-a-complete-guide-to-switch-case-in-c/
Explains switch-case statements in C, enabling multi-branch decision-making based on variable values.

https://macronepal.com/bash/mastering-conditional-logic-a-complete-guide-to-if-else-statements-in-c/
Explains if-else statements in C for decision-making and controlling program flow based on conditions.

https://macronepal.com/bash/mastering-the-fundamentals-a-complete-guide-to-arithmetic-operations-in-c/
Explains arithmetic operations in C such as addition, subtraction, multiplication, division, and operator precedence.

https://macronepal.com/bash/foundation-of-c-programming-a-complete-guide-to-basic-input-output/
Explains basic input and output in C using scanf and printf for interacting with users and displaying results.

Online C Code Compiler
https://macronepal.com/free-online-c-code-compiler-2/

Leave a Reply

Your email address will not be published. Required fields are marked *


Macro Nepal Helper