#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
#define TEXT_SIZE 100
#define SUBSTR_SIZE 40
wchar_t *wstr_towupper(wchar_t *wstr, size_t size); // Wide string to uppercase
int main(void)
{
wchar_t text[TEXT_SIZE]; // Input buffer for string to be searched
wchar_t substr[SUBSTR_SIZE]; // Input buffer for string sought
wprintf(LEnter the string to be searched (less than %d characters):\n, TEXT_SIZE);
fgetws(text, TEXT_SIZE, stdin);
wprintf(L\nEnter the string sought (less than %d characters):\n, SUBSTR_SIZE);
fgetws(substr, SUBSTR_SIZE, stdin);
// Overwrite the newline character in each string
int textlen = wcsnlen(text, sizeof(text)/sizeof(wchar_t));
int substrlen = wcsnlen(substr, sizeof(substr)/sizeof(wchar_t));
text[--textlen] = L'\0';
substr[--substrlen] = L'\0';
fwprintf(stdout, L\nFirst string entered:\n%ls\n, text);
fwprintf(stdout, LSecond string entered:\n%ls\n, substr);
// Convert both strings to uppercase
wstr_towupper(text, sizeof(text)/sizeof(wchar_t));
wstr_towupper(substr, sizeof(substr)/sizeof(wchar_t));
// Count the appearances of substr in text
wchar_t *pwstr = text;
int count = 0;
while((pwstr < text + textlen - substrlen) && (pwstr = wcsstr(pwstr, substr))){
++count;
pwstr += substrlen;
}
wprintf(LThe second string %ls found in the first%ls, count ? Lwas : Lwas not, count ? L : L.\n);
if(count)
wprintf(L%d times.\n,count);
return 0;
}
// Convert a wide string to uppercase
wchar_t *wstr_towupper(wchar_t *wstr, size_t size){
for(size_t i = 0 ; i < wcsnlen(wstr, size) ; ++i)
wstr[i] = towupper(wstr[i]);
return wstr;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。