C:搜索第一次出现的结束索引
C: Search vor endindex of first occurence
如何编写以下程序:
• 在第二个字符串和 returns 第一次出现的结束索引中搜索字符串的函数
• 包含第一个字符串在第二个字符串中所有出现的函数,第二个字符串将被第三个字符串替换
• 扫描三个字符串并将字符串放入替换项中的主函数
不允许使用超过 stdio.h , stdlib.h 和 string.h
我只能从这样的代码开始,如你所见,我无法解决这三个问题中的任何一个。我希望你能帮助我。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int endIdx(char *string1, char *string2, char *occu)
{
for (int i = 0; i < strlen(string1); i++)
{
for (int j = 0; j < strlen(string1); j++)
{
if (string1[i] == string2[j])
{
printf("occurence string1[%d] is in string2[%d]\n", i, j);
occu[j] = string1[i];
}
}
}
return 0;
}
int main()
{
char string1[20];
char string2[20];
char occu[20];
printf("Type in the first string: ");
scanf("%s", string1);
printf("Type in the second string: ");
scanf("%s", string2);
endIdx(string1, string2, occu);
printf("%s\n", occu);
}
以下程序使用 strstr
来实现您的 endIdx
问题。
strstr
return 指向 searchTeram
在 str
或 NULL
中第一次出现的指针,如果它没有出现。
在第一种情况下,我们通过取occurrence - str
得到起始索引,即第一次出现的内存地址减去str
开始的内存地址。然后添加 searchTerm
的长度给出结束索引。
在第二种情况下,我们只需return-1
:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
long endIdx(const char *str, const char *searchTerm) {
long result = -1;
const char* occurrence = strstr(str,searchTerm);
if (occurrence != NULL) {
result = (occurrence - str) + strlen(searchTerm);
}
return result;
}
int main(void)
{
// ----------------012345678901234
const char* str = "Hello world! world is beautiful!";
const char* searchTerm = "world";
long endidx = endIdx(str, searchTerm);
printf("endidx (should be 11): %ld\n", endidx);
endidx = endIdx(str, "not to be contained");
printf("endidx (should be -1): %ld\n", endidx);
return 0;
}
如何编写以下程序:
• 在第二个字符串和 returns 第一次出现的结束索引中搜索字符串的函数
• 包含第一个字符串在第二个字符串中所有出现的函数,第二个字符串将被第三个字符串替换
• 扫描三个字符串并将字符串放入替换项中的主函数
不允许使用超过 stdio.h , stdlib.h 和 string.h
我只能从这样的代码开始,如你所见,我无法解决这三个问题中的任何一个。我希望你能帮助我。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int endIdx(char *string1, char *string2, char *occu)
{
for (int i = 0; i < strlen(string1); i++)
{
for (int j = 0; j < strlen(string1); j++)
{
if (string1[i] == string2[j])
{
printf("occurence string1[%d] is in string2[%d]\n", i, j);
occu[j] = string1[i];
}
}
}
return 0;
}
int main()
{
char string1[20];
char string2[20];
char occu[20];
printf("Type in the first string: ");
scanf("%s", string1);
printf("Type in the second string: ");
scanf("%s", string2);
endIdx(string1, string2, occu);
printf("%s\n", occu);
}
以下程序使用 strstr
来实现您的 endIdx
问题。
strstr
return 指向 searchTeram
在 str
或 NULL
中第一次出现的指针,如果它没有出现。
在第一种情况下,我们通过取occurrence - str
得到起始索引,即第一次出现的内存地址减去str
开始的内存地址。然后添加 searchTerm
的长度给出结束索引。
在第二种情况下,我们只需return-1
:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
long endIdx(const char *str, const char *searchTerm) {
long result = -1;
const char* occurrence = strstr(str,searchTerm);
if (occurrence != NULL) {
result = (occurrence - str) + strlen(searchTerm);
}
return result;
}
int main(void)
{
// ----------------012345678901234
const char* str = "Hello world! world is beautiful!";
const char* searchTerm = "world";
long endidx = endIdx(str, searchTerm);
printf("endidx (should be 11): %ld\n", endidx);
endidx = endIdx(str, "not to be contained");
printf("endidx (should be -1): %ld\n", endidx);
return 0;
}