Не могу понять - 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;
}Решение задачи: «Не могу понять»
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);
Объяснение кода листинга программы
- Функция
rmtпринимает целочисленный аргументaи возвращает указатель на массив символов, выделенный динамически с помощьюcalloc. fgetsиспользуется для чтения строки символов из стандартного ввода (stdin) в выделенный массив символовb.scanfиспользуется для считывания целочисленного значенияaиз стандартного ввода (stdin) в переменнуюa.- В основной программе вызывается функция
rmtс аргументомa, и результат присваивается переменнойch. - Функция
putsиспользуется для вывода строки символов, на которую указываетch, на стандартный вывод (stdout). - В конце программы вызывается функция
freeдля освобождения выделенной памяти, на которую указываетch.