寫該方法用以下標準意想不到輸出..掌握錯誤
INPUT:aabbb OUTPUT:A2B3
INPUT:AB輸出:AB(因爲它比A1B1短)
INPUT: a23輸出:錯誤(不讀取數字)
這是我目前使用的方法。
void encrypt(char* crypt, const char* source) {
while (1) {
char tmp = *source;
if (!tmp) {
*crypt = 0;
printf("error\n");
return;
}
size_t count = 1;
while (*(++source) == tmp){
if(isdigit(tmp)){
printf("error\n");
return;
}
++count;
}
*(crypt++) = tmp;
crypt += sprintf(crypt, "%zu", count);
}
}
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "error\n");
return 1;
}
const char* source = argv[1];
char* crypt = malloc(strlen(source)*2+1);
encrypt(crypt, source);
printf("%s\n", crypt);
// free(crypt);
return 0;
}
非常奇怪的是,每次我跑這個時候,我得到的輸出:
./prog abbbb
error
a1b4
./prog a23r
error
a1
爲什麼這個錯誤出現?我怎樣才能讓第一個錯誤信息停止出現,以及爲什麼當輸入字符串中間有數字時程序不會中斷?
該程序非常適合調試器。 –
老實說,非常令人尷尬的是不知道如何正確使用調試器,並且通過ssh和vim使用遠程機器 – sgerbhctim
您需要一個當字符串結束時正常結束的路徑。 – BLUEPIXY