で予期しない出力を取得する。..は、以下の基準でこのメソッドを書くエラー
INPUT:aabbb OUTPUT:a2b3
INPUT:AB OUTPUT:AB(A1B1よりもそのが短いため)
INPUT: a23 OUTPUT:エラー(数字を読み取らない)
ここに私がこれを持っている方法があります。
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
なぜこのエラーoccuringはありますか?どうすれば最初のエラーメッセージが表示されなくなり、入力された文字列の途中に数字がある場合にプログラムが中断しないのですか?
このプログラムは、デバッガに最適です。 –
正直なところ、デバッガを正しく使う方法がわからず、sshとvimを使ってリモートマシンを使用しています – sgerbhctim
文字列が終了すると通常通り終了するパスが必要です。 – BLUEPIXY