2016-09-13 14 views
0

Когда я пишу следующий код. Шпатлевка печатает текст, но я не могу что-нибудь ниже типа ..Функция fgets не работает

Например:

Сначала он делает printf -> кто ты?

Тогда я делаю fgets, где обычно обычно что-то типа, что не работает.

Наконец он делает еще printf, где он говорит; рад познакомиться с вами ...

int main(void) 
{  
    /* USER CODE END 1 */ 

    /* MCU Configuration----------------------------------------------------------*/ 

    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ 
    HAL_Init(); 

    /* Configure the system clock */ 
    SystemClock_Config(); 

    /* Initialize all configured peripherals */ 
    MX_GPIO_Init(); 
    MX_I2C1_Init(); 
    MX_USART2_UART_Init(); 

    /* USER CODE BEGIN 2 */ 

    char name[10]; 
    printf("Who are you? \n"); 
    fgets(name,10,stdin); 
    printf("Good to meet you, %s.\n",name); 
    return(0); 
} 

Может ли кто-нибудь мне помочь? спасибо!

+0

Вы используете 'fgets' (не' fgetc', как подсказывает название) –

+0

Есть ли у вас какие-либо другие инструкции ввода перед этим fgets? – Karthick

+2

Какая платформа, какой компилятор, какая стандартная библиотека? –

ответ

0

В исходном коде вы перезаписали код fputs. Поэтому вашему компоновщику не нужно искать реализацию библиотеки этой функции. С вашей реализацией fputc вы подключили stdio-output-path к вашему передатчику UART.

Вам необходимо определить соответствующий входной путь. Это можно сделать, реализовав функцию fgetc. В этом случае функция библиотеки fgets может вызвать вашу функцию, опросив UART-приемник.

Стандартная реализация stdio во встроенной среде зависит от поставщика. Он может быть подключен к

  • JTAG отладчик
  • Микроконтроллер конкретные отладки/консольных портов
  • ничего.

Поэтому вы несете ответственность за правильное внедрение этого соединения. Это может быть более полно, чем реализация fputc, потому что вы должны проверить, есть ли данные, полученные в UART во время разговора.

+0

Я теперь не понимаю, что вы имеете в виду. Что мне нужно в моем коде? – metalgastje