C程序在从用户输入之前退出

时间:2017-10-26 03:20:11

标签: c

为什么我的程序在获取k的输入然后显示之前关闭。

我正在为基于菜单的程序编写代码,所以我需要在输入信息后从用户那里获取输入,这样我才能拥有1.Print名称2.Exit 在这样做时,我意识到我的程序没有接受输入,只是跳过了应该从用户获取l值的部分。所以试图调试它我删除了东西并归结为这个简单的程序,并意识到它仍然不会有任何想法为什么?

#include <stdio.h>

struct student
{
    char name[50];
    char lname[50];
    float marks;
} s[15];

int main ()
{
    int i, j,k;

    printf("Please enter the number of students:\n");
    scanf ("%d", &j);

    printf ("Please enter the information for students as asked.\n");

    for (i = 0; i < j; i++)
    {
        scanf ("%s %s %f\n", s[i].name, s[i].lname, &s[i].marks);
    }

    printf("Please enter a number\n");
    scanf ("%d", &k);

    printf("your number was %d", k);

    return 0; 
}

2 个答案:

答案 0 :(得分:1)

scanf ("%s %s %f\n", s[i].name, s[i].lname, &s[i].marks);

应该是

scanf ("%s %s %f", s[i].name, s[i].lname, &s[i].marks);

scanf中的\n只占用换行符。它将继续使用换行符,直到找到非换行符,然后将其放回到stdin以进行下一个IO操作

答案 1 :(得分:0)

试用此代码

#include<stdio.h>
typedef struct student
{
char name[50];
char lname[50];
int mark;
}S;

int main ()
{
int i, j,k;

printf("Please enter the number of students:\n");
scanf ("%d", &j);

S record[j];

for (i = 0; i < j; i++)    {
   printf ("Please enter the information for %d student as asked.\n",i+1);

  scanf ("%s %s %f",record[i].name, record[i].lname, &record[i].mark);
}

printf("Please enter a number\n");
scanf ("%d", &k);

printf("your number was %d \n", k);

return 0;
}

你在结构声明本身中声明了结构学生数组。你必须在main函数中声明数组。