есть массив
char az [] = "123456789-"
мне нужно сделать срез этого массива .для этого я написал функцию
char* get_slice(char *input,size_t input_len,int a, int b ){
if ( a >= input_len || b >= input_len) { return NULL;}
int j,i,out_leng = (0);
char *out = malloc(sizeof(char)*out_leng);
for (j= 0,i = a; i <= b; i++,j++) {
out[j] = input[i];
}
printf("leng = %d\n",j);
return out;
}
она как бы работает, но я указал размер массива out равным 0 и почему то в него можно копировать данные .
вот полный пример
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char* get_slice(char *input,size_t input_len,int a, int b );
char* get_slice(char *input,size_t input_len,int a, int b ){
if ( a >= input_len || b >= input_len) { return NULL;}
int j,i,out_leng = (0); // out_leng = b -a;
char *out = malloc(sizeof(char)*out_leng);
for (j= 0,i = a; i <= b; i++,j++) {
out[j] = input[i];
}
printf("leng = %d\n",j);
return out;
}
int main(int argc, char const *argv[])
{
char az [10] = "123456789-";
int l = 7;
// новый массив должен иметь данные от 2 до 5 индекса массива az
char *z = get_slice(az,sizeof(az),2,5);
if (z == NULL) {
puts("ERR");
}else
{
printf("%s",z);
}
return 0;
}