Задача: брать из ввода символы до символа перевода строки, после этого переворачивать слово
Код приведенный ниже, наверняка неверен, но в любом случае не понятно как он работает, выделяется 0 байт нетепизированной памяти из кучи и присваивается указателю на char, но почему-то не получаю ошибку при str[i].
Правильно ли я понимаю, что в str находится начало выделянно памяти на 0 байт типа char, а дальше идет запись символов в память, которая для нас не предназначалась?
#include <stdio.h>
#include <stdlib.h>
void print_reverse_array(const char *str, int N)
{
int i;
for(i = N - 1; i >= 0; i--){
printf("%c", str[i]);
}
printf("\n");
}
int main()
{
int c;
char *str = malloc(0);
int i = 0;
while( (c = getchar()) != EOF ){
if(c == '\n'){
print_reverse_array(str, i);
i = 0;
continue;
}
str[i] = c;
i++;
}
free(str);
str = NULL;
return 0;
}