zoukankan      html  css  js  c++  java
  • 相关疑惑及个人解析

    相关疑惑及个人解析

    p147

    fprintf("error
    ");
    

    由于fprintf函数会把格式字符串当作一个文件结构来处理,这种情况下很有可能出现内核转储的后果.
    疑问:内核转储是什么意思?为什么会造成这种后果?

     在UNIX系统中,常将“主内存”(main memory)称为核心(core),因为在使用半导体作为内存材料之前,便是使用核心(core)。而核心映像(core image)就是“进程”执行当时的内存内容。当进程发生错误或收到“信号”而终止执行时,系统会将核心映像写入一个文件,以作为调试之用,这就是所谓的核心转储(core dump)。
    

    头文件:#include <stdio.h>

    定义函数:int fprintf(FILE * stream, const char * format, ...);

    函数说明:fprintf()会根据参数format 字符串来转换并格式化数据, 然后将结果输出到参数stream 指定的文件中, 直到出现字符串结束('')为止。

    返回值:关于参数format 字符串的格式请参考printf(). 成功则返回实际输出的字符数, 失败则返回-1, 错误原因存于errno 中.

    范例

    #include <stdio.h>
    main()
    {
    int i = 150;
    int j = -100;
    double k = 3.14159;
    fprintf(stdout, "%d %f %x 
    ", j, k, i);
    fprintf(stdout, "%2d %*d
    ", i, 2, i);
    }
    

    执行:

    -100 3.141590 96
    150 150
    

    解析:由于sprintf函数将格式字符串当作一个文件结构来处理,导致进程出现错误,进而可能是出现内核转储的后果.sprintf函数的第一个参数必须为一个文件结构.

    p157
    printf("%*% ",n);
    上式将在宽度为n个字符的域内以右端对齐的方式打印一个%符号,先打印n-1个空白字符,后面再跟一个%字符,当n的值为负数时,符号-当作左端对齐的标识符来处理,此时,上述结果应该为一个%符号,后面再跟-n-1个空格.

    问题:
    上面这个例子在Code::Blocks上运行的结果都为一个%符号,跟上述结果不同.

  • 相关阅读:
    js笔记一:在HTML中使用javascript
    opencv排错总结
    《学习openCV》例程解析 ex_8_2 (轮廓)
    《学习openCV》例程解析 ex_9_3(codeBook模型实现背景减除)
    《学习openCV》例程解析 ex_9_1 (像素片段)
    《学习openCV》例程解析 ex_9_2(背景减除)
    《学习openCV》例程解析 ex_8_3 (轮廓)
    JavaScript鼠标事件
    sumlime text2 快捷键
    HTML字符实体(转)
  • 原文地址:https://www.cnblogs.com/luyoujun/p/4841890.html
Copyright © 2011-2022 走看看