Не могу понять - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
 
char * rmt(char * b, int a);
 
int main(int argc, char** argv) {
 
     int a = 0;
     char * ch;
     ch = (char *) calloc(1, sizeof(char));
 
     printf("Введите размер текста:");
     scanf("%d", &a);
     rmt(ch, a);
     printf("%s", rmt(ch, a));
     puts(ch);
     free(ch);
    return 0;
}
 
char * rmt(char * b, int a)
{
   b = (char *) calloc(a, sizeof(char));
 
   fgets(b, a, stdin);
 
   return b + 0;
}
Почему puts ничего не выводит на экран?

Решение задачи: «Не могу понять»

textual
Листинг программы
char * rmt(int a)
{
    char *b = (char *) calloc(a, sizeof(char));
    fgets(b, a, stdin);
    return b;
}
int a;
char *ch;
scanf("%d", &a);
ch = rmt(a);
puts(ch);
free(ch);

Объяснение кода листинга программы

  1. Функция rmt принимает целочисленный аргумент a и возвращает указатель на массив символов, выделенный динамически с помощью calloc.
  2. fgets используется для чтения строки символов из стандартного ввода (stdin) в выделенный массив символов b.
  3. scanf используется для считывания целочисленного значения a из стандартного ввода (stdin) в переменную a.
  4. В основной программе вызывается функция rmt с аргументом a, и результат присваивается переменной ch.
  5. Функция puts используется для вывода строки символов, на которую указывает ch, на стандартный вывод (stdout).
  6. В конце программы вызывается функция free для освобождения выделенной памяти, на которую указывает ch.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы