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

  • 相关阅读:
    进程间通信的方式——信号、管道、消息队列、共享内存
    exit()与_exit()的区别(转)
    [Google Codejam] Round 1A 2016
    使用shell脚本自定义实现选择登录ssh
    PHP的反射机制【转载】
    PHP set_error_handler()函数的使用【转载】
    PHP错误异常处理详解【转载】
    php的memcache和memcached扩展区别【转载】
    .htaccess重写URL讲解
    PHP数据库扩展mysqli的函数试题
  • 原文地址:https://www.cnblogs.com/silentteen/p/7565439.html
Copyright © 2011-2022 走看看