写该方法用以下标准意想不到输出..掌握错误
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