Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

c

What is wcsstr in C?

Amaaz Ahmad

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

The wcsstr function looks for the first occurrence of a wide string in another wide string. It is defined in the <wchar.h> header file.

Parameters

wchar_t* wcsstr(wchar_t* haystack, wchar_t* needle);

In the above snippet of code, both haystack and needle are pointers to two separate wide strings. When we call the function, the first occurrence of needle is searched in haystack.

Return value

If needle is found in haystack, a pointer to its first occurrence is returned. Else, NULL is returned.

If needle is empty, a pointer to the beginning of haystack is returned.

As shown in the figure above, the pointer returned from the function points to the beginning of first occurrence of needle in haystack. The code for the above drawn figure is written below:

Example 1

#include<stdio.h>
#include<wchar.h>
void main() {
// declaring and initializing strings of wide characters
wchar_t haystack[] = L"HELLOWORLD!";
wchar_t needle[] = L"LLO";
// calling the function and storing the returned value in a pointer
wchar_t* returnedPtr = wcsstr(haystack, needle);
// checking if the substring was found
if(returnedPtr == NULL) {
printf("SUBSTRING NOT FOUND \n");
}
else {
// printing the returned string/pointer
wprintf(L"%ls", returnedPtr);
}
}

In the above snippet of code, we are searching for the substring LLO in the string HELLOWORLD. The returnedPtr pointer points to the first L in the string haystack. Due to this, when we call the wprintf function on the returned pointer, it prints from the first L till the end of haystack.

Note that we used L prefix while declaring and initializing wide strings and wprintf function to print a wide string.

Example 2

#include<stdio.h>
#include<wchar.h>
void main() {
// declaring and initializing strings of wide characters
wchar_t haystack[] = L"HELLOWORLD!";
wchar_t needle[] = L"";
// calling the function and storing the returned value in a pointer
wchar_t* returnedPtr = wcsstr(haystack, needle);
// checking if the substring was found
if(returnedPtr == NULL) {
printf("SUBSTRING NOT FOUND \n");
}
else {
// printing the returned string/pointer
wprintf(L"%ls", returnedPtr);
}
}

As shown in the above code snippet, the wcsstr function returns a pointer to the beginning of haystack if needle is empty.

RELATED TAGS

c

CONTRIBUTOR

Amaaz Ahmad
Copyright ©2022 Educative, Inc. All rights reserved

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring