Я хотел бы понять, почему некоторые символы исчезают и после них находятся , объединенных в исходную строку. См., c = *sibl
принимает первый символ , *sibl = *inout
получает содержимое *inout
, но символ, хранящийся в c
, не больше в *inout
. И, *inout = c
не меняет содержание *inout
, он составляет c
, будет конкатенироваться с содержанием *inout
. Я не понимаю, почему это происходит!Проблемы с пониманием операций с указателями на языке C
Мой код:
void Cripto (char *inout, int i) {
char *sibl, c;
while (*inout) {
sibl = inout+1;
if (!sibl)
break;
if (*inout >= 'A' && *inout <= 'Z'){
*inout += i;
}
c = *sibl;
printf("val c %c\n",c);
printf("val inout after c %s\n",inout);
printf("val sibl after c %s\n",sibl);
*sibl = *inout;
printf("val sibl after att %s\n",sibl);
*inout = c;
printf("val inout after att %s\n",inout);
inout = sibl+1;
}
}
int main() {
char str[30];
int i;
scanf("%s %d", str, &i);
Cripto(str, i);
printf("%s\n", str);
return 0;
}
результаты для "Тест" 3:
val c: e
val inout after c: teste
val sibl after c: este
val sibl after att: tste
val inout after att: etste
val c: t
val inout after c: ste
val sibl after c: te
val sibl after att: se
val inout after att: tse
val c:
val inout after c: e
val sibl after c:
val sibl after att: e
val inout after att:
Можете ли вы сузить это до определенной вещи, которую вы не понимаете? Эта программа многое делает, и неясно, с чем вы столкнулись. – interjay