我的小 C 程序有问题。也许你可以帮助我。
char* shiftujVzorku(char* text, char* pattern, int offset){
char* pom = text;
int size = 0;
int index = 0;
while(*(text + size) != '\0'){
size++;
}
while(*(pom + index) != '\0'){
if(overVzorku(pom + index, pattern)){
while(*pattern != '\0'){
//vyment *pom s *pom + offset
if(pom + index + offset < text + size){
char x = *(pom + index + offset);
char y = *(pom + index);
int adresa = *(pom + index + offset);
*(pom + index + offset) = y; // SEGMENTATION FAULT
*(pom + index) = x;
//*pom = *pom - *(pom + offset);
//*(pom + offset) = *(pom + offset) + *pom;
//*pom = *(pom + offset) - *pom;
}
else{
*pom = *pom - *(pom + offset - size);
*(pom + offset - size) = *(pom + offset - size) + *pom;
*pom = *(pom + offset - size) - *pom;
}
pattern++;
}
break;
}
index++;
}
return text;
}
程序在做什么并不重要。也许有很多错误。但是,为什么我会在这一行出现 SEGMENTATION FAULT(对于目标,请参见代码)?我正在尝试在地址“pom + offset + index”的帮助下将一些 char 值写入内存空间。感谢您提供的一切帮助。 :)
最佳答案
您是否有机会像这样调用代码:
shiftujVzorku( "foobar", "xx", 0 );
如果是这样,您的代码将尝试写入字 rune 字,这在 C 语言中是非法的。您应该这样做:
char buf[] = "foobar";
shiftujVzorku( buf, "xx", 0 );
关于c++ - 将 char 写入 char * 地址时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3044386/