LINUX.ORG.RU

История изменений

Исправление bormant, (текущая версия) :

Как ты будешь возвращать из функции строку, созданную в рантайме?

Передавайте буфер (и его длину) внутрь функции, возвращайте адрес этого буфера.


#define AS(x) (sizeof(x)/sizeof(x[0]))
char *df( char *buf, size_t size ) {
    ...
    return buf;
}
int main() {
  char buf[10];
  printf("%s\n", df(buf, AS(buf)));
  return 0;
}

Исправление bormant, :

Как ты будешь возвращать из функции строку, созданную в рантайме?

Передавайте буфер (и его длину) внутрь функции, возвращайте адрес этого буфера.


#define AS(x) (sizeof(x)/sizeof((x)[0]))
char *df( char *buf, size_t size ) {
    ...
    return buf;
}
int main() {
  char buf[10];
  printf("%s\n", df(buf, AS(buf)));
  return 0;
}

Исправление bormant, :

Как ты будешь возвращать из функции строку, созданную в рантайме?

Передавайте буфер (и его длину) внутрь функции, возвращайте адрес этого буфера.


#define AS(x) (sizeof(x)/sizeof(x)[0])
char *df( char *buf, size_t size ) {
    ...
    return buf;
}
int main() {
  char buf[10];
  printf("%s\n", df(buf, AS(buf)));
  return 0;
}

Исходная версия bormant, :

Как ты будешь возвращать из функции строку, созданную в рантайме?

Передавайте буфер (и его длину) внутрь функции, возвращайте адрес этого буфера.