C strchr() Function

The strchr() function in C is a standard library function that locates the first occurrence of a specified character in a string. It is part of the C standard library (string.h). This function is useful for finding the position of a character within a string.

Table of Contents

  1. Introduction
  2. strchr() Function Syntax
  3. Understanding strchr() Function
  4. Examples
    • Locating a Character in a String
    • Using strchr() with User Input
  5. Real-World Use Case
  6. Conclusion

Introduction

The strchr() function searches for the first occurrence of a specified character in a null-terminated string. It returns a pointer to the first occurrence of the character, or NULL if the character is not found.

strchr() Function Syntax

The syntax for the strchr() function is as follows:

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

Parameters:

  • str: A pointer to the null-terminated string to be searched.
  • c: The character to be located, passed as an int, but it is internally converted to a char.

Returns:

  • The function returns a pointer to the first occurrence of the character c in the string str. If the character is not found, the function returns NULL.

Understanding strchr() Function

The strchr() function performs a linear search for the specified character in the given string. It stops searching as soon as it finds the character or reaches the end of the string. The search includes the null terminator (\0), so if c is \0, the function will return a pointer to the null terminator of the string.

Examples

Locating a Character in a String

To demonstrate how to use strchr() to locate a character in a string, we will write a simple program.

Example

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

int main() {
    char str[] = "Hello, World!";
    char target = 'W';

    // Locate the character using strchr
    char *result = strchr(str, target);

    // Print the result
    if (result != NULL) {
        printf("Found '%c' at position %ld\n", target, result - str);
    } else {
        printf("Character not found\n");
    }

    return 0;
}

Output:

Found 'W' at position 7

Using strchr() with User Input

This example shows how to use strchr() to locate a character in a user-provided string.

Example

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

int main() {
    char str[100];
    char target;

    // Get user input
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);

    // Remove the newline character if present
    str[strcspn(str, "\n")] = '\0';

    // Get the target character
    printf("Enter a character to find: ");
    target = getchar();

    // Locate the character using strchr
    char *result = strchr(str, target);

    // Print the result
    if (result != NULL) {
        printf("Found '%c' at position %ld\n", target, result - str);
    } else {
        printf("Character not found\n");
    }

    return 0;
}

Output (example user input "Hello, Ramesh!" and target 'R'):

Enter a string: Hello, Ramesh!
Enter a character to find: R
Found 'R' at position 7

Real-World Use Case

Parsing Command-Line Arguments

In real-world applications, the strchr() function can be used to parse command-line arguments, such as checking for options that start with a specific character (e.g., - for flags).

Example: Parsing Command-Line Arguments

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

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        if (strchr(argv[i], '-') == argv[i]) {
            printf("Option found: %s\n", argv[i]);
        } else {
            printf("Argument: %s\n", argv[i]);
        }
    }

    return 0;
}

Output (example command-line arguments -a file.txt -b):

Option found: -a
Argument: file.txt
Option found: -b

Conclusion

The strchr() function is used for locating the first occurrence of a character in a string in C. By understanding and using this function correctly, you can efficiently search for characters within strings and handle various parsing tasks in your programs. This is particularly helpful in applications that involve string manipulation, searching, and parsing operations.

Comments