2016-10-13 2 views
1

У меня есть следующий код:зсап не работает при чтении поплавка

#include <stdio.h> 

float a;   //Initialize variables 
char b; 
int c; 
char d; 

int main(void) 
{ 
    printf("Enter float: "); 
    scanf("%4.2f", &a); 

    printf("%4.2f", a); 

    //printf("Enter character:\n"); 

    //printf("Enter 4-digit integer: \n"); 

    //printf("Enter character:\n"); 

    return 0; 
} 

Однако я получаю следующие ошибки при компиляции:

1.) scanf: «» Неизвестного поля типа символа в формате спецификатор

2.) scanf: слишком много аргументов, переданных в строке формата

Может кто-нибудь объяснить, что проблема в моем коде?

Спасибо!

+0

Он по-прежнему кажется, строить ошибки, когда я пытаюсь скомпилировать. Hmmm .... – Froobyflake

+0

Я разместил две ошибки выше. Проблема, безусловно, имеет какое-то отношение к функции scanf. – Froobyflake

+0

Это именно тот код, который у меня есть. Что может заставить его не работать на моем конце? Я использую Visual Studio 2015 – Froobyflake

ответ

3

scanf("%f",&a) не принимает спецификатор формата.

Как упоминалось в комментариях, Visual Studio рассматривает это предупреждение как ошибку. Так что либо использовать

scanf_s("%f",&a); 

или перейти в настройки и отключить это предупреждение, как указано в этом сообщении Why does Visual Studio 2013 error on C4996?

2

Вы не должны форматировать ввод. Так просто использовать %f в качестве первого аргумента scanf

scanf("%f", &a); 
Смежные вопросы