Я пытаюсь понять, почему у меня странный характер после того, как мой printf()
C: Printf символ * вернуть странный последний символ
char* extract_word()
{
char* sentences = "hi! i'm a banana!";
int starts = 4;
int ends = 12;
int count;
int nb_char = ends-starts+1;
char* word = malloc(nb_char);
printf("\n\n%d\n",ends-starts);
for(count = starts; count < ends;count++)
{
word[count-starts] = sentences[count];
printf("%c == \n",sentences[count]);
}
word[count-starts+1] = '\0';
printf("\n\n%s",word);
return word;
}
The printf
возвращений:
8 i == ' == m == == a == == b == a == i'm a bau
Если убрать '\0'
, то я получу что-то вроде:
'm a ba¨Á£´
Другие варианты включают слово [count-starts] = '\ 0'; '(для меня это более естественно, чем' nb_char-1', используя переменные в коде) или используя 'calloc' вместо 'malloc' –
@MM Я взял ссылку на' malloc (nb_char); ', но в любом случае это просто мнение. главное - держаться в пределах. –
Да. ты прав. I Вычисляет, чтобы не перезаписывать последнее назначение символа в моем цикле, я посчитал неправильным и. Спасибо за вашу помощь. –