我想做一個程序,做RLE壓縮輸入字符串,給用戶,但是當我嘗試運行它時,我帶有分段faut錯誤,但我不知道我的錯誤在哪裏...RLE壓縮在c
這裏是我的代碼:
#include <stdio.h>
#include <string.h>
char * rle_convert(char str[500]);
char str_out[500];
int main(void) {
char str[500];
printf("give a string : ");
fgets (str, 500, stdin);
strcpy(str,rle_convert(str));
printf("%s",str);
}
char * rle_convert(char str[500]) {
int i,j,k=0,sum;
for (i=0; i<(strlen(str)-1); i+sum) {
sum=1;
for (j=i; str[j]==str[j++]; j++) sum++;
if (sum>1) {
str_out[k]=sum+48;
str_out[k++]=str[i];
}
else str_out[k]=str[i];
k++;
}
return str_out;
}
在2個或更多語句中重寫'for(j = i; str [j] == str [j ++]; j ++)sum ++;'。 – pmg
爲什麼不在程序中的某些戰略點處使用printf(),以瞭解哪些代碼部分運行以及哪些部分不運行?通過這種方式,您可以更好地瞭解將調試工作集中在哪裏。 – mcvz
另一個字符串終止錯誤。 –