为什么我无法使用此程序通过scanf获得输入?

时间:2017-02-01 18:56:20

标签: c

为什么这个程序不接受任何输入? 显然,ir正在跳过所有scanf行。

#include<stdio.h>

struct student{  
    int rollno;    
    char name[10];    
    float marks;    
};

struct student s;

void main()
{   
    scanf("\n enter roll no \t %d",&s.rollno);    
    printf("enter name");    
    scanf("\n name is  \t %s",s.name);    
    printf("enter marks");   
    scanf("\n  marks are \t %f",&s.marks);   
    printf("\n s  actually  are %d \t %s \t %d",s.rollno, s.name , s.marks);   
    getch();
}

4 个答案:

答案 0 :(得分:1)

您误解了scanfprintf的功能。尽管两个调用看起来相似,但两个函数之间存在显着差异。

printf写出输出

scanf读取输入

为了提示用户输入他的名字,请先使用printf功能。 然后相应地使用scanf来读取此输入。

为了读取浮点数,您只需使用;

scanf("%f" , &marks)

我建议您通过scanf and printf basics阅读,以帮助您入门。

答案 1 :(得分:0)

你以错误的方式使用scanf。 要获得您想要的结果,请尝试:

int main(){
    printf("Enter name: \t");
    scanf("%s", s.name);
    printf("The name is ", s.name)

}

答案 2 :(得分:0)

scanf通常用于使用其参数中指定的格式从标准输入读取用户输入。您没有在method参数中指定实际的消息提示;您指定您期望从stdin输入的格式。对于消息提示,printf是更好的选择。请参阅main函数中的以下修订版。

void main()
{     
   printf("\nenter roll no \t");
   scanf("%d",&s.rollno);    
   printf("\nenter name");    
   scanf("%s",s.name);    
   printf("enter marks");   
   scanf("%f",&s.marks);   
   printf("\n s  actually  are %d \t %s \t %f",s.rollno, s.name , s.marks); 
}

答案 3 :(得分:0)

您使用printfscanf的方式是错误的

printf 提示用户输入

scanf 以阅读用户输入

然后使用 printf

以所需格式打印结果
printf("enter roll number ");
scanf("%d",&s.rollno);    
printf("enter name ");    
scanf("%s",s.name);    
printf("enter mark ");   
scanf("%f",&s.marks);   
printf("\n  roll number is: %d\n",s.rollno);
printf("  name is: %s\n",s.name);
printf("  mark is: %.2f\n", s.marks);