0
我做了一個小程序來搜索另一個字符串中的一個字符串,並通過使其反轉,但我在運行時出現分段錯誤,將該子字符串放在主字符串中。請有人幫助我爲什麼我得到這個。指向c中的字符串的指針
#include<stdio.h>
#include<string.h>
int main()
{
char *str = "this is my new text";
char *sstring = "is";
int len = strlen(str);
int slen = strlen(sstring);
char *tstring;
tstring = str;
int flag = 0;
while (len)
{
if(*tstring == *sstring){
int i;
for(i =0;i < slen; i++){
if(*(tstring+i) == *(sstring + i))
{
flag = 1;
}
else
{
flag = 0;
break;
}
}
}
if(flag)
{
int tlen = slen;
while(slen-- && (* tstring++ = *sstring + (slen - 1)))
;
tstring = tstring + tlen;
len = len - tlen;
}
len --;
tstring++;
}
printf("%s",str);
return 0;
}
在波紋線得到錯誤
while(slen-- && (* tstring++ = *sstring + (slen - 1)))
請別人幫
感謝 拉比
'tstring'和'sstring'都指向通常存儲在只讀存儲器中的字符串文字。您需要將字符串放在可寫入的緩衝區中。如果字符串的大小沒有改變,你可以選擇'char str [] =「這是我的新文本」;' – 2014-11-09 00:20:42
對不起,我的壞。 – saruftw 2014-11-09 00:26:59
嗨,感謝您的回覆,並在我的理解char * str,char * tstring和「這是我的新文本」將執行堆棧內存位置,但它們如何爲堆棧中的只讀內存和可寫內存分配內存可讓您我知道或任何提及它都會有很大的幫助。 – 2014-11-10 05:08:54