Member 14050287 Ответов: 2

Получить ввод strinng из командной строки innterface


Всем привет,
Я пытаюсь получить входную строку с клавиатуры, а затем сохранить эти данные, чтобы я мог использовать их в другой функции, которую я не могу.не могли бы вы указать, что я делаю неправильно?
Спасибо

Что я уже пробовал:

static char get_input(_CLI *const PtrCLI)
{
    char input[1024];
    
    /* get string */
    printf("Enter input data of size less than 1024 bytes and write end to end the data: ");
    fgets(input,1024,stdin);
    
    /* create buffer and copy */
    InData = (char *)malloc( strlen(input) + 1);
    strlcpy(InData, input, 1024);
    return InData;
    
}

2 Ответов

Рейтинг:
2

Manish K. Agarwal

Что же это за тип InData ?
Предполагая, что это так char *

Ваша функция должна быть чем-то вроде (не самое лучшее решение, но с минимальными изменениями в вашем коде):

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

static char* get_input()
{
   char input[1024];

   /* get string */
   printf("Enter input data of size less than 1024 bytes and write end to end the data: ");
   fgets(input, 1024, stdin);

   /* create buffer and copy */
   char * InData = (char *)malloc(strlen(input) + 1);
   strncpy_s(InData, 1024, input, 1024);
   return InData;
}


Рейтинг:
0

CPallini

Я бы подражал этому C время выполнения API (то есть обработка памяти-это ответственность вызывающего абонента):

char * get_input(char * buffer, size_t buffer_size)
{
   /* get string */
   printf("Enter input data of size less than %u bytes and write end to end the data: ", buffer_size);
   return fgets(buffer, buffer_size, stdin);
}