C中的子字符串复制函数导致seg
我的函数subStr将字符串(src)的“part”th部分复制到另一个(out)上。尽管一切看起来都很好,但在使用该函数时,我遇到了一个分段错误。。。有人能帮忙吗?我曾尝试使用valgrind解决这个问题,但它不够具体,我无法找到解决方案 从注释中提供的链接粘贴的代码 while(*(src+i++)!=''{}//循环通过src的字节 //您需要检查您是否退出*src; 通过(…&&iC中的子字符串复制函数导致seg,c,string,fault,C,String,Fault,我的函数subStr将字符串(src)的“part”th部分复制到另一个(out)上。尽管一切看起来都很好,但在使用该函数时,我遇到了一个分段错误。。。有人能帮忙吗?我曾尝试使用valgrind解决这个问题,但它不够具体,我无法找到解决方案 从注释中提供的链接粘贴的代码 while(*(src+i++)!=''{}//循环通过src的字节 //您需要检查您是否退出*src; 通过(…&&i
void subStr(char*src,char*out,int-part){
int i=0,j=0;
而(部分>1){
而(*(src+i++)!=''&*(src+i)!='\0'{}
第四部分;
}
j=i;
而((*(src+i)!=''和(*(src+i)!='\0'))
*(out+j++)=*(src+i++);
*(out+j)='\0';
}
int main(int argc,常量字符**argv){
char s[]=“我喜欢馅饼”;
chart[]=“我喜欢蛋糕”;
coutvoid subStr(char*src、char*out、int部分){
int i=0,j=0;
而(部分>1){
而(*(src+i++)!=''&*(src+i)!='\0'{}
第四部分;
}
j=i;
而((*(src+i)!=''和(*(src+i)!='\0'))
*(out+j++)=*(src+i++);
*(out+j)='\0';
}
int main(int argc,常量字符**argv){
char s[]=“我喜欢馅饼”;
chart[]=“我喜欢蛋糕”;
cout问题解决了..只需要&&而不是|问题解决了..只需要&&而不是|这是函数,你能告诉我你给src和输出分配了多少内存吗?但是你能用main向我们展示整个代码吗?不管来自main的输入如何,它都不起作用。尽管你可以使用我的main:int main(){char test[999];subStr(“try number one”,test,2);printf(“%s\n”,test);return 0;}这是一个函数,你能告诉我你给src和output分配了多少内存吗?但是你能用main向我们展示整个代码吗?不管main的输入是什么,它都不起作用。尽管你可以用我的main:int main(){char test[999];subStr(“试试第一个”,test,2);printf(“%s\n”,test);return 0;}在main中,我想s和t char[]是这样声明的:“char*s=“…”和t相同?c++11不允许这样的文字转换,clang会警告您,这会导致segfault。ps:我假设您希望“替换”该部件。因此,添加了j=i。删除它,它将只输出“pie”,而不是“我喜欢pie”。我不确定您的主要目的是什么,我想s和t字符[]是这样声明的:“char*s=“。。。c++11不允许这样的文字转换,clang会警告你,这会导致segfault。ps:我假设你想“替换”这个部件。因此添加了j=i。去掉它,它只输出“pie”而不是“i like pie”。我不确定你到底要做什么
void subStr(char *src, char *out, int part) { /* subStr is a function that copies the "part"
substring of src to out and returns out's
address -- "parts" are strings seperated by spaces */
int i = 0, j = 0;
while(part > 1) {
while(*(src + i++) != ' ') {} // cycle through bytes of src
part--; // decrease "part" by one for every space found
} // here we have reached the string we want to copy
while((*(src + i) != ' ') || (*(src + i) != '\0')) // copy till next space or end of string
*(out + j++) = *(src + i++);
*(out + j) = '\0';
}
void subStr(char *src, char *out, int part) {
int i = 0, j = 0;
while(part > 1) {
while(*(src + i++) != ' ' && *(src + i) != '\0' ) { }
part--;
}
j = i;
while((*(src + i) != ' ') && (*(src + i) != '\0'))
*(out + j++) = *(src + i++);
*(out + j) = '\0';
}
int main(int argc, const char** argv) {
char s[] = "i like pie";
char t[] = "i like cake";
cout << s << endl << t << endl;
subStr(s, t, 3);
cout << s << endl << t << endl;
return 0;
}