Как считать одним scanf сразу и символ и число? - C (СИ)

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

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

Как мне заставить scanf принять одно число (типо float), и символ(char).
scanf("%f %c",numerial,FirstChoiceTemp);
Число я отправляю в функцию, причем в какую функцию зависит от символа.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

void Kelvin(float degreeKelvin) {
    char SecondChoiceTemp = 'o';
    float farenheit = 0;
    float celsii = 0;

    printf("Enter the new unit type (F, C, or K): \n" );
    scanf("%c",&SecondChoiceTemp);
    if (SecondChoiceTemp == 'K') {
        printf("%f is %f", degreeKelvin,degreeKelvin);
    }
    else if (SecondChoiceTemp == 'F') {
        farenheit = (degreeKelvin - 273.15) * 1.8 + 32;
        printf("%f is %f", degreeKelvin,farenheit);
    }
    else if (SecondChoiceTemp == 'C') {
        celsii = degreeKelvin - 273.15;
        printf("%f is %f", degreeKelvin,celsii);
    }
    
} 
void Celsii(float degreeCelsii) {
    char SecondChoiceTemp = 'o';
    float farenheit = 0;
    float kelvin = 0;
    
    printf("Enter the new unit type (F, C, or K): \n" );
    scanf("%c",&SecondChoiceTemp);
    if (SecondChoiceTemp == 'C') {
        printf("%f is %f", degreeCelsii,degreeCelsii);
    }
    else if (SecondChoiceTemp == 'F') {
        farenheit = (degreeCelsii * 1.8) + 32;
        printf("%f is %f", degreeCelsii,farenheit);
    }
    else if (SecondChoiceTemp == 'K') {
        kelvin = degreeCelsii + 273.15;
        printf("%f is %f", degreeCelsii,kelvin);
    }
    
} 
 
void Farenheit(float degreeFarenheit) {
    
    char SecondChoiceTemp = 'o';
    float celsii = 0;
    float kelvin = 0;
    
    printf("Enter the new unit type (F, C, or K): \n" );
    scanf("%c",&SecondChoiceTemp);
    if (SecondChoiceTemp == 'F') {
        printf("%f is %f", degreeFarenheit,degreeFarenheit);
    }
    else if (SecondChoiceTemp == 'C') {
        celsii = (degreeFarenheit - 32) * 1.8;
        printf("%f is %f", degreeFarenheit,celsii);
    }
    else if (SecondChoiceTemp == 'K') {
        kelvin = (degreeFarenheit-32) * 1.8 + 273.15;
        printf("%f is %f", degreeFarenheit,kelvin);
    }
    
}
 
void temperature() {
    float numerial = 0;
    char FirstChoiceTemp = 'o';
    
    printf("Enter the temperature followed by its suffix (F, C, or K): ");
    scanf("%f  %c",&numerial,&FirstChoiceTemp);
    
    if( (FirstChoiceTemp == 'K') || (FirstChoiceTemp == 'k') ){
        Kelvin(numerial);
    }
    else if( (FirstChoiceTemp == 'C') || (FirstChoiceTemp == 'c') ){
        Celsii(numerial);
    }
    else if( (FirstChoiceTemp == 'F') || (FirstChoiceTemp == 'f') ){
        Farenheit(numerial);
    }
    
}

int main(void) {
    char Degree = 'o';
    
    printf("T or t for temperature");
    printf("D or d for temperature");
    scanf("%c", &Degree);
    if( (Degree == 'T') || (Degree == 't') ){
    temperature();
    }
        
    return 0;
}
C двумя int получалось
scanf("%d i +%d",&FirstComplexImag,&FirstComplexReal);
а здесь никак... Пробовал эксперементировать типо + поставить или еще что, не получается

Решение задачи: «Как считать одним scanf сразу и символ и число?»

textual
Листинг программы
scanf("%f  %c",&numerial,&FirstChoiceTemp);

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


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

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

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