- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
你好,我正在尝试创建自己的 strstr()
函数,但我无法弄清楚为什么它会返回段错误。我正在尝试在另一个字符串中搜索一个字符串,然后返回指向第一个“相同”字母的指针。任何帮助,将不胜感激。这是我的代码:
char* ms_search(char *Str1,char* Str2){
char* p = NULL;
int i,k=0,j = 0;
for(i = 0;i < ms_length(Str1); i++){
if(Str1[i] == Str2[k]){
if(k == 0){
p = &Str1[i];
j= i;
}
if(k == ms_length(Str2)){
break;
}
k++;
}
else{
if(Str1[i] == Str2[0]){
p = &Str1[i];
k=1;
j= i;
}
else{
j=0;
k = 0;
p = NULL;
}
}
}
if(p != NULL){
Str1[ms_length(Str2)+1] = '\0';
}
return &Str1[j];
}
int main(){
int i;
char* p2;
char* p="lolaaa";
char* p1= "aaa";
//char ar2[] = "aaa4";
//ms_copy(p,p1);
//printf("%s",p);
//ms_nconcat(p,p1,3);
//if(ms_ncompare(p,p1,3) == 1) printf("einai idia");
p2 = ms_search(p,p1);
printf("%s",p2);
return 0;
}
最佳答案
Hello i am trying to make my own strstr()
首先你必须遵循C标准。
C89/C99原型(prototype)是:
char *strstr(const char *s1, const char *s2);
标准 strstr()
函数不会改变传递的缓冲区。
功能描述如下:
strstr()
函数在 s1
指向的字符串中定位字符序列(不包括终止空字符)在指向的字符串中的第一次出现s2.
strstr
函数返回指向所定位字符串的指针,如果未找到该字符串,则返回空指针。如果 s2
指向长度为零的字符串,则该函数返回 s1
。
在标准 C 中,这可以实现为:
#include <string.h> /* size_t memcmp() strlen() */
char *strstr(const char *s1, const char *s2)
{
size_t n = strlen(s2);
while(*s1)
if(!memcmp(s1++,s2,n))
return (char *) (s1-1);
return 0;
}
独立实现如下:
#include <stdio.h>
char *strstr1(const char *str, const char *substring)
{
const char *a;
const char *b;
b = substring;
if (*b == 0) {
return (char *) str;
}
for ( ; *str != 0; str += 1) {
if (*str != *b) {
continue;
}
a = str;
while (1) {
if (*b == 0) {
return (char *) str;
}
if (*a++ != *b++) {
break;
}
}
b = substring;
}
return NULL;
}
int main (void)
{
char string[64] ="This is a test string for testing strstr";
char *p;
p = strstr1 (string,"test");
if(p)
{
printf("String found:\n" );
printf ("First occurrence of string \"test\" in \"%s\" is:\n%s", string, p);
}
else
{
printf("String not found!\n" );
}
return 0;
}
输出:
String found:
First occurrence of string "test" in "This is a test string for testing strstr" is:
test string for testing strstr
关于c - 重新创建 strstr() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131175/
题目地址:https://leetcode.com/problems/implement-strstr/description/ 题目描述 Implement strStr(). Return
这里是 C 的初学者。 我知道 strstr() 可用于查找字符串是否包含某个子字符串并且 printf() 可以显示彩色输出(如此处解释:stdlib and colored output in C
我有一个二进制数据文件,其中散布着各种字符串。我正在尝试编写 C 代码来查找文件中第一次出现的用户指定字符串。 (我知道这可以用 bash 完成,但出于其他原因我需要一个 C 代码。)目前的代码是:
我制作了 strstr() 函数,但程序没有给出任何输出,只是一个空白屏幕。请查看代码。 #include #include const char* mystrstr(const char *
你能找出这段代码中的错误吗,即使我传递了有效的参数来查找,它也无法打印歌曲 #include #include char tracks[][80] = { "I left my heart
我正在尝试匹配整个字符串,而不仅仅是其中的一部分。例如,如果 needle 是 2,我只想匹配 string 2 而不是 20、02 或 22 或任何相关内容。 我正在使用 strstr 作为: #i
在 OpenGL superbible 4th ed 中,第 70 页上的示例读取 //returns space-delimited names of all extensions supporte
你能找出这段代码中的错误吗,即使我传递了有效的参数来查找,它也无法打印歌曲 #include #include char tracks[][80] = { "I left my heart
这里的目标是将整个文本文件转储到缓冲区中,然后使用 strcasestr() 函数查找我在缓冲区中查找的单词的指针。它不断地给我段错误错误。起初,我认为可能是尺寸问题,所以我尝试使用较小的尺寸,但也不
我试图通过 strstr() 函数检查子字符串(“DATA”)是否(以及在哪里)位于大字符串(位于缓冲区 - LinearBuffer 中),但它似乎不起作用,并且我不知道为什么即使我的源字符串(位于
这是我到目前为止编写的代码,但我想用 int myStrStr 而不是 char myStrStr 但是当我用 int 代替时的 char ,它给了我一个错误。请帮忙。 int my_strlen(c
如果进程名称是“System”,则不进行 DbgPrint。如果是任何其他进程,现在 DbgPrint 都可以,但由于某种原因,它没有像预期的那样工作。 我尝试过:if( strstr( ImageN
我正在尝试使用 strstr 使用子字符串搜索任何匹配项并将其与文本行进行比较,但到目前为止尚未成功获得匹配项。我正在使用 popen 打开并读取文件,同时尝试仅使用 ipv4 地址进行搜索以查找匹配
我现在编写的程序遇到了一些问题。 strstr 仅当子字符串位于字符串末尾时才输出 此后它还会输出一些垃圾字符 我在使用“const char *haystack”然后向其中添加输入时遇到了问题,因此
我正在从头开始学习 C,我尝试制作一个小程序,在二维数组中搜索用户输入。 但是我的代码没有按预期工作并且总是返回 false。 我的代码: #include #include char songs[]
我正在从头开始学习 C,我尝试制作一个小程序,在二维数组中搜索用户输入。 但是我的代码没有按预期工作并且总是返回 false。 我的代码: #include #include char songs[]
由于 strstr 函数,我在该方法内有一个无限循环。是因为我将结构类型与字符类型相匹配吗? car* find(char* type){ car* stringCurr = list_hea
我的目标是在名为 myStrStr 的 C 函数中重新创建 strstr,如果在 haystack 中找到子字符串并且返回 1,则返回 1 0 如果不是,则将匹配的子字符串复制到缓冲区中。 我尝试编写
所以我尝试制作自己的 strstr 函数,并实现以下功能: char *mystrstr(char *haystack, char *needle); // find the first oc
我正在阅读 String searching algorithm维基百科文章,它让我想知道什么算法 strstr在 Visual Studio 中使用?我应该尝试使用其他实现方式,还是 strstr
我是一名优秀的程序员,十分优秀!