- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,该程序使用指向字符串 str[] 的指针数组。它接收两个字符串 str1 和 str2 并检查 str1 是否嵌入到 str[] 中的任何字符串中。如果找到 str1,则替换与 str2 一起使用。例如:如果str1包含“mountain”并且str2包含“car”,那么str中的第二个字符串应该更改为“Move a car”。当我尝试执行这个程序时,在gcc中它崩溃了,当我尝试时在线编译它会出现段错误,我无法理解该程序出错的地方以及需要进行哪些更正。
#include<stdio.h>
#include<string.h>
char* xstrstr(char* ,char* );
int main()
{
char *str[]={
"We will teach you how to...",
"Move a mountain",
"Level a building",
"Erase the past",
"Make a million",
"...all through C!"
};
char* p, *temp, *cpy;
int len,i,j;
char str1[28];
char str2[10];
printf("Enter string1\n");
scanf("%s",str1);
printf("Enter string 2\n");
scanf("%s",str2);
printf("After modifying the saved strings\n\n");
for(i=0;i<6;i++)
{
p=xstrstr(str[i],str1);
if(p)
{
/*Copy the remaining string*/
temp=p+strlen(str1);
strcpy(cpy,temp);
/*Replace the old string*/
strcpy(p,str2);
/*Finally append the remaining part*/
strcat(p,cpy);
break;
}
}
if(p==NULL)
{
printf("No string match found\n");
return 1;
}
for(i=0;i<6;i++)
{
printf("%s\n",str[i]);
}
return 0;
}
char* xstrstr(char *string1,char* string2)
{
while(*string1)
{
char* begin=string1;
char* find=string2;
while((*string1)&&(*find)&&(*string1==*find))
{
string1++;
find++;
}
if(!(*find))
{
return begin;
}
string1=begin+1;
}
return NULL;
}
最佳答案
两个主要问题cpy 未初始化
strcpy(cpy,temp);
p 指向只读字符串文字,您可以对其进行写入。
strcpy(p,str2);
关于c - 使用自制的 strstr() 函数检查其他字符串中嵌入的字符串,然后将其替换为其他字符串(由用户输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729382/
题目地址: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
我是一名优秀的程序员,十分优秀!