lfgyg 发表于 2014-4-21 00:08:03

关于scanf_s 的一个问题,求高手帮忙,拜谢

本人刚开始学习c 语言,作业完成了闰年的检验。
编好后自己想做个年份输入循环,可是在确认(y/n)时,scanf_s语句总是不能执行,
后来改成getche()函数,问题解决,可是就是不明白为啥scanf_s不能执行。

请高手指点啊。系统visual studio 2012
现在学习真的不好选系统,windows 也升级了,编程软件也不好配套了,实在不想回到
原来的xp 环境下了,见笑。


/************************************
*给一个年份,看是不是闰年
***********************************/
#include <stdio.h>
#include <stdafx.h>
#include <stdlib.h>
#include <conio.h>

void main()
{
        int a,b;
        char c='y';//要给字符变量c赋初值
        while (c == 'y'||c=='Y')
        {
                printf("please input year:\n");
                scanf_s("%d", &a);
                if (a % 4 == 0)//先判断能不能被4整除
                {
                        if (a % 100 != 0)
                        {
                                printf("it is a 小闰年.\n");//再看能不能被100整除
                        }
                        else
                        {
                                if (a % 400 == 0)//能被100整除的,必须能被400整除的才是闰年
                                {
                                        printf("it is a 大闰年.\n");
                                }
                        }
                }
                else
                {
                        printf("it isn't a 闰年.\n");

                }
               
        printf("是否还要判断(y/n):%c",c);
        //c = _getche();
        //printf("\n");
        scanf_s("%c", &c,1);        //不知道为什么这个语句给c赋值就不行?

        printf("输出c的值:%c", c);
        }
        system("pause");
}

lfgyg 发表于 2014-4-21 08:38:44

没有高手帮忙啊,感谢了。
程序可直接复制,调试运行可发现问题。

sidfate 发表于 2014-4-21 10:48:16

_s是是什么意思

sidfate 发表于 2014-4-21 10:50:13

改成这样试试看      scanf_s("%c", &c);      

415418014 发表于 2014-4-21 12:39:18

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main()
{
      int a,b;
      char c='y';//要给字符变量c赋初值
      while (c == 'y'||c=='Y')
      {
                printf("please input year:\n");
                scanf_s("%d", &a);
                if (a % 4 == 0)//先判断能不能被4整除
                {
                        if (a % 100 != 0)
                        {
                              printf("it is a 小闰年.\n");//再看能不能被100整除
                        }
                        else
                        {
                              if (a % 400 == 0)//能被100整除的,必须能被400整除的才是闰年
                              {
                                        printf("it is a 大闰年.\n");
                              }
                        }
                }
                else
                {
                        printf("it isn't a 闰年.\n");

                }
                printf("是否还要判断(y/n)?");
                fflush(stdin);//清空缓冲区
                scanf("%c", &c);      //用scanf
      }
      system("pause");
}

喜欢散步 发表于 2014-4-21 22:02:12

用fflush(stdio);清空缓冲看看。

lfgyg 发表于 2014-4-21 22:24:06

坐等答案,万分感谢啊

lfgyg 发表于 2014-4-26 23:23:10

谢谢各位老师热心帮忙,已解决!
参考小甲鱼C语言教程 第30篇的数组 课程!
页: [1]
查看完整版本: 关于scanf_s 的一个问题,求高手帮忙,拜谢