我需要创建一个函数,该函数将删除部分字符串。我只能使用stdio.h和stdlib.h。
例如:我有以下字符串:“ Dad and mom /* and sister */ are at home
”。我需要删除以/*
开头和以*/
结尾的部分。因此结果将是“ Dad and mom are at home
”。
答案 0 :(得分:0)
您可以使用strstr
(https://www.tutorialspoint.com/c_standard_library/c_function_strstr.htm)查找起始定界符,然后再次使用终止定界符。
然后,您可以使用memmove
(http://www.cplusplus.com/reference/cstring/memmove/)移动字符串的其余部分。
如果要删除多个部分,则可以循环进行。
尝试首先在纸上做它,还要尝试调试程序以查看它是否达到了您的期望。
答案 1 :(得分:0)
C确实没有“字符串”作为您可以使用的类型。相反,C“字符串”是一个概念-内存中的字符序列,以NUL字符终止。因此,要对字符串进行任何操作,都需要了解内存管理。
通常,刚开始的程序员(和示例)使用固定大小的数组以及静态(恒定)字符串和固定大小的数组(假定适合)中的字符串(应该经常检查)混合来做事情。
因此,在您的情况下,您只是说“有一个字符串”,而不是说“如何”拥有它。如果您将其放在足以容纳它的内存缓冲区中,则可以就地修改缓冲区以包含(较短的)所需字符串。或者,您可以将其复制到另一个足以容纳修改后的字符串的缓冲区。那将是两个非常不同的C函数,这两个函数都可以描述为“删除字符串的一部分”
答案 2 :(得分:0)
str
必须是可修改的
#include <stdio.h>
#include <string.h>
char *RemoveComment(char *str)
{
char *start;
char *end;
do
{
start = strstr(str, "/*");
end = strstr(str, "*/");
if(start && end && end > start)
{
memmove(start, end + 2, strlen(end + 2) + 1);
}
}while (start && end);
return str;
}
int main()
{
char text[] = "D/*ad a*/nd mom /* and sister */ ar/*e at*/ ho/*me*/";
printf("%s\n", RemoveComment(text));
return 0;
}