#include <stdio.h>
#include <string.h>
void increase(char **tab)
{
int i=strlen(*tab);
int o=i;
while((*tab)[i]!='5' && i>=0)
{
i--;
}
if(i>=0)
{
int tt;
char array[o+1];
for(tt=0;tt<o;tt++)
{
if(tt!=i)
array[tt]=(*tab)[tt];
else
array[tt]='6';
}
array[o]='\0';
*tab=array;
// printf("\n%s",*tab);
}
else
{
char array[o+2];
int tt;
for(tt=0;tt<=o;tt++)
{
array[tt]='5';
}
array[o+1]='\0';
*tab=array;
// printf("\n%s",*tab);
}
}
int main()
{
int n;
char *test;
test="555";
increase(&test);
printf("\n%s",test);
return 0;
}
Хорошо, так что increment () предназначен для замены числа в тесте следующим числом, содержащим только 5 и 6.
То, что я хотел сделать, это изменить значение теста напрямую, используя указатель на символ *. Кажется, все работает нормально, пока не появится отображение измененного значения - оно просто не будет отображаться, если не будет предложено сделать это внутри
функция увеличения (). Как только я добавлю
printf("\n%s",*tab);
внутри любого из условий (с комментариями) все работает просто отлично (исключая показ двойного результата).
В чем здесь проблема?
555 - это просто тестовое значение, фактически любое число из 5 или 6 будет работать.