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较好。

  • 相关阅读:
    docker
    C语言课程设计:校车管理系统(附源码)
    【DW打卡-计算机视觉基础】06 边缘检测
    【DW打卡-计算机视觉基础】05 图像分割/二值化
    【DW打卡-计算机视觉基础】04_图像滤波
    【DW打卡-计算机视觉基础】03_彩色空间互转
    【DW打卡-计算机视觉基础】02_OpenCV的几何变换--旋转和平移
    【DW打卡-计算机视觉基础】01_OpenCV框架与图像插值算法
    机器学习01-入门
    [js]网页中添加水印
  • 原文地址:https://www.cnblogs.com/silentteen/p/7565439.html
Copyright © 2011-2022 走看看