Вот код моей функции:
char * increment_b_string(char * b_string)
{
char * ret_string = (char *) malloc(7);
ret_string = "001aaa";
if (*(b_string + 2) == '9')
{
*(ret_string +2) == '0';
if (*(b_string + 1) == '9')
{
*(ret_string +1) = '0';
*(ret_string) = *(b_string) + 1;
} else {
*(ret_string + 1) = *(b_string + 1) + 1;
}
} else {
*(ret_string + 2) = *(b_string + 2) + 1;
}
return ret_string;
}
Есть какие-нибудь мысли о том, почему это может не сработать?
Общая идея заключается в том, что b_string будет содержать значение типа "123aaa". Часть «ааа» не имеет значения и никогда не изменится. Только первые 3 числа будут. Их нужно увеличивать, как если бы они были целыми числами. Ведущие нули должны быть сохранены в начале. Таким образом, если вход «004aaa», выход должен быть «005aaa». Это только нужно подняться до "300aaa", поэтому я не рассматриваю ничего более этого. Это школьное задание по программированию, отсюда и очень надуманный характер проблемы.
Спасибо.
Редактировать: я изменил свою функцию. Вот что это сейчас.
void increment_b_string(char * b_string)
{
if (b_string[2] == '9')
{
b_string[2] == '0';
if (b_string[1] == '9')
{
b_string[1] = '0';
b_string[0] += 1;
} else {
b_string[1] += 1;
}
} else {
b_string[2] += 1;
}
}
Предполагая, что b_string изначально заполнена ...
strcpy (b_string, "001aaa");
... это было бы правильно? Моя программа все еще демонстрирует то же поведение, но это может быть ошибка где-то еще в коде.