zoukankan      html  css  js  c++  java
  • scanf简单使用

    scanf简单使用

    简单示例:输入一个m行n列的整数数组

    2 5
    1 9 3 6 5
    5 3 7 10 2
    

    scanf输入:

    int m=0,n=0;                                    //(a)
    int **array = NULL;                             //(b)
    scanf("%d %d", &m,&n);                          //(c)
    //cin >> m >> n;
    array = new int*[m];
    for(int i(0); i<m; i++)
    {
        array[i] = new int[n];
        for(int j(0); j<n; j++)
        {
            scanf("%d", &array[i][j]);              //(d)
            //cin >> array[i][j];
        }
    }
    //输出
    for (int i(0); i<m; i++)
    {
    	for (int j(0); j<n; j++)
    	{
    		printf("%d ", array[i][j]);             //(e)             
    		//cout << array[i][j];
    	}
    	printf("
    ");
    	//cout << endl;
    }
    

    注意:
        (1) scanf中参数必须初始化,如语句(1)(2);
        (2) scanf中参数前必须加引用符号'&';,如语句(c)(d);
        (3) printf中参数前不加“&”,如语句(e);
        
    问题:
        (1) 报错“error c4097”
          原因:安全性问题,scanf不检查越界问题,故现在编译器会报错;
          解决方法:(I) 改用scanf_s,会检查是否越界,第三个参数为输入长度,对于字符串的输入可以很好的避免scanf的越界问题;不过对于上面示例中的单量输入并没有什么优势(但是编译器不会报错,这点很重要)。
               (II) 在文件前面添加#pragma warning(disable:4996) ;
               (III) 取消勾选“SDL检查”:项目属性 —— C/C++ —— 常规 ——SDL检查,选择“否”;
          注:有些地方说在文件前面添加#define _CRT_SECURE_NO_DEPRECATE或者#define _CRT_SECURE_NO_WARNINGS,但是在我的电脑上并不能解决问题。
          
        (2) 没有报错,但是输入时会停止运行
          原因:scanf中第二的参量前没有'&';
          
    比较:如上面的程序中cin也可以完成输入,但是效率比scanf低太多,同样cout也比printf效率低太多,故在输入输出较复杂时用scanf与printf较好。

  • 相关阅读:
    FilterLog代码分析
    Session
    关于XML的技术详情----XML定义 用途 工作原理及未来
    javaee思维导图
    互联网应用与企业级应用的区别
    javaee课程目标
    Recycle -- 项目总结
    python3.6学习笔记2基础语法
    python3.6学习笔记1认识python
    CentOS6.5下Virtualenv搭建Python3开发环境
  • 原文地址:https://www.cnblogs.com/silentteen/p/7565439.html
Copyright © 2011-2022 走看看