用C語言壓縮字串
阿新 • • 發佈:2018-12-10
#include <stdio.h> // 壓縮字串 // 例如aaaabbbbcdefffffghhhh // a4b4cdef4gh4 void fun(char *pStr) { // 引數檢測 if (pStr == NULL) return; char *p1 = pStr; char *p2 = pStr; while(*p2 != '\0') { char count = '1'; if(*p2== *(p2+1)) { while(*p2== *(p2+1)) { count=count+1; p2=p2+1; } p1=p1+1;//指標向後移一位 *p1=count;//使字元後的位置是出現次數 p1=p1+1;//指標向後移一位 p2=p2+1;//使p2指向新字元的第一位 *p1=*p2;//將新字元賦給數字後的那一位 } else { p1=p1+1; p2=p2+1; *p1=*p2; } } p1=p1+1; *p1='\0'; } int main() { char str[]="aaaabbbbcdefffffghhhh"; fun(str); printf("%s\n",str); return 0; }
指標有點煩但做出來覺得開心呀
有點小bug,因為count設定的時候等於‘1’,所以數字只能顯示1-9,再之後就是ASCII碼了。
歡迎大佬們指點