2 u011210271 u011210271 于 2013.06.26 11:42 提问

这个程序错在哪里了?
#include <stdio.h>
#include <string.h>
#define N 100

int num;

struct informaion
{   
    char name[100];
    int sex;
    int season_1;
    int season_2;
    int season_3;
    int season_4;
} Num_worker[N];

/*新建文件函数*/



int main (void)
{
    char c;
    int i,j,k;
    int num=0;
    int Number_Choice1;
/*主菜单*/   
    printf ("|");
    for (i = 0;i < 50;i ++)
        printf ("-");
    printf ("|\n");
    printf ("|            ");
    printf ("欢迎使用本员工业绩管理程序");
    printf ("            |\n");
    printf ("|");
    for (i = 0;i < 50;i ++)
        printf ("-");
    printf ("|\n\n\n");

    printf ("|");
    for (i = 0;i < 40;i ++)
        printf ("-");
    printf ("|\n");
    printf ("|               ");
    printf ("0-新建文件");
    printf ("               |\n");
    printf ("|               1-修改员工业绩           |\n");
    printf ("|               2-显示员工业绩           |\n");
    printf ("|               3-查询员工业绩           |\n");
    printf ("|               4-删除员工业绩           |\n");
    printf ("|               5-对员工信息进行排序     |\n");
    printf ("|               6-保存文件               |\n");
    printf ("|               7-读取信息               |\n");
    printf ("|               8-增加记录               |\n");
    printf ("|               9-结束运行               |\n");
    printf ("|----------------------------------------|\n\n");
    printf ("左边数字对应功能选择,请选0-9\n");
    scanf ("%d",&Number_Choice1);

    switch (Number_Choice1)
        {
            case 0:
                            do
                            {
                                printf ("您将要添加一组信息,确定吗?");
                                c=getchar();
                                if (c == 'Y')
                                    {
                                        printf ("请输入姓名:");
                                        scanf ("%s",Num_worker[num].name);

                                        printf ("请输入性别<0为女,1为男>:");
                                        scanf ("%i",&Num_worker[num].sex);

                                        printf ("\n请输入第一季度业绩:");
                                        scanf ("%i",Num_worker[num].season_1);

                                        printf ("\n请输入第二季度业绩:");
                                        scanf ("%i",Num_worker[num].season_2);

                                        printf ("\n请输入第三季度业绩:");
                                        scanf ("%i",Num_worker[num].season_3);

                                        printf ("\n请输入第四季度业绩:");
                                        scanf ("%i",Num_worker[num].season_4);

                                        ++ num;
                                    }
                            }
                            while   (c == 'Y');



                break;
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 5:
                break;
            case 6:
                break;
            case 7:
                break;
            case 8:
                break;
            case 9:
                break;
            default:
                printf ("左边数字对应功能选择,请选0-9");
                break;
        }






    return 0;
}

为什么不能执行到printf ("您将要添加一组信息,确定吗?");
c=getchar();
这里。请大虾们答疑解惑!

3个回答

haolong8986
haolong8986   2013.06.26 21:19

getchar();从缓冲去读取字符,上一步输入了数字后缓冲区还会存在一个回车符,因此c='\0x10'.
其实只要在调getchar()前显式的清空缓存区就行了。

printf ("您将要添加一组信息,确定吗?");
fflush(stdin); // 清空缓存区
c=getchar();

u012421456
u012421456   Rxr 2015.01.02 09:11

楼主的“不能执行到"是什么意思,目测也是缓冲区问题,接受字符时,最好先清除缓冲区字符

u012421456
u012421456   Rxr 2015.01.02 09:11

楼主的“不能执行到"是什么意思,目测也是缓冲区问题,接受字符时,最好先清除缓冲区字符

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!