Я делаю простой код для моделирования Cypher Цезаря, и у меня возникает странная ошибка, хотя строка вывода fraseout[]
сформирована правильно и будет правильно печататься на самом последнем принте, которое она получает последним персонаж обрезанный. Почему это происходит?printf not printing last character
#include <stdio.h>
#include <string.h>
#include <math.h>
int main (void)
{
printf("Insira a frase:\n");
char frase [256];
scanf("%s", frase);
int size = (int)strlen(frase);
printf("Insira o tamanho da divergência: \n");
int diff = 0;
scanf("%i", &diff);
char fraseout [size];
int i = 0;
for (i = 0; i<=size-1; i++)
{
int val = (int)frase[i];
if (val + diff > 126)
{
val = 31+diff-(126-val);
}
else if (val +diff < 32)
{
val = 127 + diff+(val-32);
}
else
{
val +=diff;
}
fraseout [i] = (char)val;
}
printf("\"%s\" -> \"%s\"\n", frase, fraseout);
return 0;
}
Что говорит вам ваш отладчик? –
Используйте 'int size = (int) strlen (frase) + 1;' – ouah
'char fraseout [size];' -> 'char fraseout [size + 1];' и вы не закончили 'fraseout'. –