精华内容
下载资源
问答
  • 统计文件中字符个

    万次阅读 2015-09-02 09:49:22
    * 编写统计文件的字符的程序,主要学习文件的概念 * 和文件操作等内容。 */ int main() { /** 保存字符个 **/ int count = 0 ; /** 保存文件名 **/ char fname[ 80 ]; /** 文件指针 **/ ...

    所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称
    叫做文件名。文件通常是驻留在外部介质上的,在使用的时候才调
    入内存中。

    就文件的分类,有很多种分类方式,在这里我们看一下文件编码方式。
    根据文件的编码方式,文件可以分为ASCII码文件和二进制文件。
    ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个
    字节,用于存放对应的ASCII码。例如,数字5678的存储形式为:
    ASCII码: 00110101 00110110 00110111 00111000
    十进制码: 5 6 7 8
    共占用4个字节。ASCII码文件可在屏幕上按照字符显示。

    二进制文件是按照二进制的编码方式来存放文件的。例如,数字5678的
    存储形式为00010110 00101110,只占两个字节,二进制文件虽然可以在屏幕上显示,但是其内容无法读懂。C语言处理这些文件的时候,并不区分类型,都看成是字符流,按字节进行处理。

    文件指针在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对他所指的文件进行各种操作。定义文件指针的一般形式为”FILE “指针变量标识符。其中FILE应为大写,他实际上是由系统定义的一个结构,该结构中含有文件名,文件状态和文件当前位置等信息。在编写源程序的时候,不必关心FILE结构的细节。例如”FILE fp”表示fp是指向FILE结构的指针变量,通过fp即可找到存放某个文件信息的结构变量,然后按照结构变量提供的信息找到该文件,实施对文件的操作。

    在C语言中,文件操作都是由库函数来完成的。文件操作主要有打开,读写和关闭等。

    1:文件打开函数fopen

    fopen函数用来打开一个文件,其调用的一般形式为:
    文件指针名 = fopen(文件名,使用文件方式)
    其中,“文件指针名”必须被说明为FILE类型的指针变量,“文件名”是被打开文件的文件名。
    “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
    例如:
    FILE fp;
    fp = fopen(“file.a”,”r”);
    //他的意思是在当前目录下打开文件file.a,只允许进行“读”操作,并且使得fp指向该文件
    使用文件的方式一共有12种。

    这里写图片描述

    对于文件使用方式有以下几点说明:

    文件使用方式由r,w,a,t,b,+共6个字符组合成,各个字符的含义是:r(read)读,w(write)写,
    a(append)追加,t(text)文本文件,可省略不写;b(binary)二进制文件;”+”读和写
    用r打开一个文件的时候,该文件必须已经存在,且只能从该文件读出
    用w打开的文件只能向文件中写入,若打开的文件不存在,则以指定的文件名建立
    该文件,如打开的文件已经存在,则将该文件删去,从新建立一个文件
    若要向一个已经存在的文件追加新的信息,只能用a方式打开文件。但此时该文件必须是
    存在的,否则将会出错。

    在打开一个文件的时候,如果出错,fopen将会返回一个空指针值NULL。在程序中可以
    用这一信息来判别是否完成打开文件的工作,并做相应的处理。举个例子:

    if((fp=fopen(“file.a”,”rb”)) == NULL)
    {
    printf(“\nerror no open file.a!”);
    getch();
    exit(1);
    }

    2:关闭文件

    调用的一般形式是:
    fclose(文件指针);
    正常完成关闭文件操作的时候,fclose函数返回值为0,如返回非零值则表示有错误发生

    3:文件读写函数

    在C语言中提供了很多文件读写的函数。字符读写函数fgetc和fputc;字符串读写函数fgets和
    fputs;数据块读写函数fread和fwrite;格式化读写函数fscanf和fprintf;这些函数
    都包含在stdio.h头文件中。

    (1):读字符函数fgetc

    fgetc函数的功能是从指定的文件中读取一个字符,函数的调用形式为:
    字符变量 = fgetc(文件指针);
    注意文件指针和文件内部的位置指针是不同的。文件指针是指向整个文件的,
    需要在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的
    位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,
    他不需要在程序中定义说明,而是由系统自动设置的。

    (2):写字符函数fputc

    fputc函数的功能是把一个字符写入指定的文件中,函数的调用形式为:
    fputc(字符,文件指针);
    fputc函数有一个返回值,如果写入成功,则返回写入的字符,否则返回EOF

    (3):字符串读写函数fgets和fputs

    读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,
    函数的调用形式为:
    fgets(字符数组名,n,文件指针);
    其中n是一个正整数,表示从文件中读出的字符串不超过n-1个字符,在读入的最后
    一个字符加上串结束标识’\0’。对fgets函数有两点说明:在读出n-1个字符之前,如果
    遇到了换行符或者是EOF,则结束操作。fgets函数也有返回值,其返回值是字符数组的首
    地址。
    写字符串函数调用形式:
    fputs(字符串,文件指针);

    (4):块数据读写函数fread和fwrite

    调用形式:
    fread(buffer,size,count,fp);
    fwrite(buffer,size,count,fp);
    buffer是一个指针,在fread中,他表示存放输入数据的首地址。在fwrite中,
    他表示存放输出数据的首地址。size表示数据块的字节数,count表示要读写的
    数据块的块数。

    (5)格式化读写函数fcanf和fprintf

    调用形式:
    fcanf(文件指针,格式字符串,输入表列);
    fprintf(文件指针,格式字符串,输出表列);

    下面就是我们这个实例的要求:

    编写统计文件的字符数的程序,主要学习文件的概念
    和文件操作等内容。
    

    下面是我的代码实现:

    #include <stdio.h>
    #include <stdlib.h>
    
    /**
     * 编写统计文件的字符数的程序,主要学习文件的概念
     * 和文件操作等内容。
     */
    int main()
    {
        /** 保存字符个数 **/
        int count = 0;
    
        /** 保存文件名 **/
        char fname[80];
    
        /** 文件指针 **/
        FILE *fp;
    
        printf("Please enter the file name:");
        scanf("%s",fname);
    
        if((fp = fopen(fname,"r")) == NULL){
            printf("Open file failed!!\n");
            exit(1);
        }
    
        count = 0;
        while(fgetc(fp) != EOF)
            count++;
    
        fclose(fp);
    
        printf("There are %d characters in file %s.\n",count,fname);
    
        return 0;
    }
    

    下面是我的测试用例(名称为test.txt):

    cnuidocncn  cwncviow 
    wedcvnwicvmnw 
    dcvnwidcvn 
    
    cvwiovm 
     wvcewoivm 
    w
    evcovw 
    vcmweiocvmw
    
    mvciomvw 
    nvi] v
    wevmovjov
    wvjkvnivpvm
    wvciwmvw
    'nvoikvv
    nvwvmje
    
    ewevvvv
    wvwkvnpowiehf]ewnveiowv

    好了,最后看一下我的运行过程:

    这里写图片描述

    除此之外,我们还可以对文件进行随机读写。在C中提供了一些文件定位的函数,我们常用的有两个:rewind和fseek。

    这两个函数的调用形式分别为:

    rewind(文件指针)。

    他的功能是把文件内部的位置指针移到文件首。

    fseek(文件指针,位移量,起始点);

    将文件内部位置指针移动到我们想要的位置。

    展开全文
  • GCOV+LCOV 代码调试和覆盖率统计工具

    万次阅读 2017-10-27 20:03:15
    GitHub GCOV+LCOV 代码调试和覆盖率统计工具 AderXCoding/system/tools/gdb/gcov 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作因本人技术水平和知识面...
    CSDN GitHub
    GCOV+LCOV 代码调试和覆盖率统计工具 AderXCoding/system/tools/gdb/gcov


    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作

    因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大家提供一些其他好的调试工具以供收录, 鄙人在此谢谢啦


    1 GCOV介绍


    2 GCOV使用方法


    gcovLinuxGCC 自带的一个 C/C++ 代码覆盖率分析工具.

    gcov 常用参数 :

    参数 描述
    -a 输出每个基本块的运行计数, 此选项可用于统计在同一行中的若干语句的各自运行次数
    -b 输出分支语句频率信息到输出文件, 以及概要信息到标准输出, 但不显示无条件分支
    -c 以数字而不是百分比显示分支频率
    -n 不创建输出文件
    -l 创建的输出文件名中包含头文件名, 这对于头文件中包含代码并被多个源文件使用时有用
    -p .gocv 文件名中加入完整的路径信息, 此时路径中的 ‘/’ 用 ‘#’ 表示, ‘..’ 用 ‘^’ 表示
    -f 输出每个函数的概要信息

    .gcov 文件的基本格式是 :

    执行次数(- 表示该行没代码, ##### 表示该行从未执行过):行号:该行代码

    交叉 profiling :

    gcov 要求运行时在目标系统中有相同的编译时的绝对目录路径, 为了支持交叉编译, 可使用下面两个
    环境变量重定位数据文件 :

    环境变量 描述
    GCOV PREFIX 指定加入到目标文件中的绝对路径前缀, 默认没有前缀
    GCOV PREFIX STRIP 指示要跳过的目录层次

    比如编译后目标文件在 /user/build/foo.o, 编译后的程序执行时会创建 /user/build/foo.gcda 文件. 但若把程序拷贝到目标系统中运行时, 可能并没有这个目录, 此时设置环境变量.

    ‘GCOV_PREFIX=/target/run’

    ‘GCOV_PREFIX_STRIP=1’

    这样, 运行时将输出到 /target/run/build/foo.gcda 文件. 然后可把生成的所有. gcda 文件拷贝到本机编译时的代码目录中使用 gcov 工具.

    • 编译程序

    使用方法 : 在 gcc 或者 g++ 后面添加参数 -fprofile-arcs -ftest-coverage

    注意 :

    -fprofile-arcs -ftest-coverage

    必须同时在编译器和链接器上设置, Makefile 里面可以加在 CFLAGSLDFLAGS 上, 如果连接的时候出现 undefined reference to '__gcov_init' 错误, 则还要加上 -lgocv

    • 运行程序生成 gcda 数据文件

    编译成功后运行编译好的程序, 然后退出程序. 程序会在当前目录下生成 *.gcda 文件.

    • 使用 gcov 生成 .gcov 代码覆盖数据

    然后使用 gcov *.c 或者 gcov *.cpp 生成代码覆盖信息, 这个时候需要将原始代码文件 *.cpp 或者 *.c 放在 *.gcda 文件一个目录中.

    完成后会生成 *.c.gcov 或者 *.cpp.gcov 文件, 里面包含了代码覆盖信息.

    • lcov 生成 info 图形化数据

    由于 *.gcov 是文字模式的, linux 还自带了一个 lcov 工具, 可以帮助我们把文字的信息转换成更直观的图形表格模式.

    lcov -d . -t '表格名称' -o '文件名称.info' -b . -c
    • gethtml 生成 html 图形文件

    此时还没完, 这个指令只是输出了一个 info 的中间文件, 要变成 html 格式的图形文件.

    还要下面的指令 :

    genhtml -o 输出目录名 文件名.info

    这样才会在输出目录中生成完整的 html 图形文件, 用浏览器在文件目录中打开 index 文件就能看到了.

    3 示例


    3.1 示例程序


    我们的程序由两个文件 test.cmain.c 组成.

    想要用 gcov 收集代码覆盖信息, 需要在 gcc 编译代码的时候加上这 2 个选项 -fprofile-arcs -ftest-coverage.

    // test.c
    #include <stdio.h>
    
    void test(int count)
    {
        int i;
        for (i = 1; i < count; i++)
        {
            if (i % 3 == 0)
                printf ("%d is divisible by 3\n", i);
            if (i % 11 == 0)
                printf ("%d is divisible by 11\n", i);
            if (i % 13 == 0)
                printf ("%d is divisible by 13\n", i);
        }
    }
    // main.c
    #include <stdio.h>
    #include <stdlib.h>
    
    void test(int vount);
    
    int main(int argc, char *argv[])
    {
        int i = 0;
        if(argc == 2)
            i = atoi(argv[1]);
        else
            i = 10;
    
        printf("arg is %d\n", i);
    
        test(i);
    
        return EXIT_SUCCESS;
    }
    // Makefile
    GCOV_FLAGS=-fprofile-arcs -ftest-coverage
    CFLAGS+=$(GCOV_FLAGS)
    LDFLAGS+=-lpthread $(GCOV_FLAGS)
    
    target=main
    
    
    all:$(target)
    
    
    main : test.o main.o
        $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
        @echo "gdb-gcov测试程序覆盖率..."
    
    
    %.o : %.c
        $(CC) -g -c $^ -o $@  $(CFLAGS) $(DEFINES)
    
    .PHONY : clean
    clean :
        rm -rf *.o
        rm -rf $(target)
        rm -rf  *.gcov *.gcda *.gcno

    3.2 编译程序


    编译后会得到一个可执行文件 main, 然后每个 C 文件都对应一个 *.gcno 文件

    当用 gcc 编译文件的时候, 如果带有 "-ftest-coverage" 参数, 就会生成这个 *.gcno 文件, 它包含了程序块和行号等信息.

    编译程序

    3.3 运行程序


    接下来可以运行这个 main 的程序

    ./main

    运行结束以后会生成一个 main.gcda 文件, 如果一个可执行文件带有 "-fprofile-arcs" 参数编译出来, 并且运行过至少一次, 就会生成. 这个文件包含了程序基本块跳转的信息.

    运行程序

    3.4 GCOV 生成代码覆盖数据


    接下来可以用 gcov 生成代码覆盖信息

    gcov main.c
    gcov test.c

    运行结束以后会生成2个文件hello.c.gcov和myfunc.c.gcov。打开看里面的信息:

    生成 <code>gcov</code> 数据

    被标记为 ##### 的代码行就是没有被执行过的, 代码覆盖的信息是正确的, 但是让人去读这些文字, 实在是一个杯具. 不用担心, 有另外一个工具叫 lcov, 可以用程序解析这些晦涩的字符, 最终输出成 html格式的报告.

    3.5 lcov生成 info 数据


    指定 lcov 在当前目录 “.” 去找代码覆盖的信息, 输出为 main_test.info, 这个 main_test.info 是一个中间结果, 需要把它用 1genhtml 来处理一下, genhtmllcov里面的一个工具。

    lcov生成info数据

    3.6 生成 html 数据


    genhtml -o result main_test.info

    指定输出目录是 result. 一个完整的 html 报告就生成了, 做一个连接, 把这个目录连到随便一个 web server 的目录下, 就可以看报告了.

    生成 <code>html</code>

    生成的信息

    整体数据

    显示 <code>main</code> 的信息

    显示 <code>test</code> 的信息

    4 参考


    Gcov 详解 + 内核函数覆盖率测试方法详述及产生错误解决办法

    代码覆盖率——gcov lcov的使用

    GCOV 使用用例

    gcov lcov覆盖率统计工具

    代码覆盖率分析(gcov)

    gcov分析代码覆盖率/gcov输出文件路径问题

    GCOV 用法

    试用内核gcov

    gcov-kernel - a gcov infrastructure for the Linux kernel

    Gcov单元测试覆盖率 ( by quqi99 )

    GCC Coverage代码分析-.gcda/.gcno文件及其格式分析


    展开全文
  • 1、统计代码行数 使用场景是项目年终统计行数。 实现:在需要统计得文件夹右键“在文件夹中查找“,后输入筛选得正则表达式 ^b*[^:b#/]+.*$ (注意右边小图标都点亮) 这里顺便将自己使用vscode进行前端开发...

    1、统计代码行数

    使用场景是项目年终统计行数。

    实现:在需要统计得文件夹右键“在文件夹中查找“ ,后输入筛选得正则表达式 ^b*[^:b#/]+.*$

    (注意右边小图标都点亮)

     

    这里顺便将自己使用vscode进行前端开发环境配置归纳一下,便于自己以后快速搭建

    vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscode重新定义(redefined)了代码编辑器。当前市面上常用的轻型代码编辑器主要是:sublime,notepad++,editplus,atom这几种。比起notepad++、editplus,vscode集成了许多IDE才具有的功能,比起它们更像一个代码编辑器;比起sublime,vscode颜值更高,安装配置插件更为方便;比起atom,vscode启动速度更快,打开各种大文件不卡。可以说,vscode既拥有高自由度、又拥有高性能和高颜值,最关键的是,vscode还是一款免费并且有团队持续快速更新的代码编辑器。可以说,vscode是代码编辑器的首选。个人推荐编写前端代码时,代码编辑器选择vscode,IDE选择WebStorm。

    根据个人爱好和习惯选择代码编辑器。

    个人现在基本选择notepad++/editplus进行代码临时查看,用vscode编码;

     

    2、安装vscode

    百度网盘下载:https://pan.baidu.com/s/1ovLRROX0g-6Nm4pOQgRDGQ

     

    3、安装插件

     

    vscode开发需要安装常用的插件,提供编码或调试辅助,下图是我选择安装的插件(扩展)

     

    Auto Close Tag     -> > 自动闭合HTML/XML标签

    Auto Rename Tag     -> > 自动完成另一侧标签的同步修改

    Beautify     -> > 格式化代码,F1快捷键选择格式化CSS/ html / js

    Bracket Pair Colorizer     -> > 给括号加上不同的颜色,便于区分不同的区块,使用者可以定义不同括号类型和不同颜色

    Debugger for Chrome    -> > 映射vscode上的断点到chrome上,方便调试

    HTML CSS Support     -> > 智能提示CSS类名以及id

    HTML Snippets     -> > 智能提示HTML标签,以及标签含义,类似有JavaScript(ES6) code snippets、还有jQuery、vue、react等语言或框架的代码智能提示

    open in browser     -> > 而该插件支持快捷键与鼠标右键快速在浏览器中打开html文件,支持自定义打开指定的浏览器,包括:Firefox,Chrome,Opera,IE以及Safari

    Path Intellisense     -> > 自动提示文件路径,支持各种快速引入文件

    Vetur     -> > Vue多功能集成插件,包括:语法高亮,智能提示,emmet,错误提示,格式化,自动补全,debugger。vscode官方钦定Vue插件,Vue开发者必备。

    filesize     -> > 在底部状态栏显示当前文件大小,点击后还可以看到详细创建、修改时间

    vscode-icon     -> > 让 vscode 资源树目录加

    quokka     -> > 一个调试工具插件,能够根据你正在编写的代码提供实时反馈。它易于配置,并能够预览变量的函数和计算值结果。另外,在使用 JSX 或 TypeScript 项目中,它能够开箱即用

    CSS Peek     -> > 以追踪至样式表中 CSS 类和 ids 定义的地方。当你在 HTML 文件中右键单击选择器时,选择“ Go to Definition 和 Peek definition ”选项,它便会给你发送样式设置的 CSS 代码

    HTML Boilerplate     -> > 让 vscode 资源树目录加

    Icon Fonts     -> > 这是一个能够在项目中添加图标字体的插件。该插件支持超过 20 个热门的图标集,包括了 Font Awesome、Ionicons、Glyphicons 和 Material Design Icons

    Prettier   -> > 是目前 Web 开发中最受欢迎的代码格式化程序。安装了这个插件,它就能够自动应用Prettier,并将整个 JS 和 CSS 文档快速格式化为统一的代码样式。

    Color Info     -> > 提供你在 CSS中使用颜色的相关信息。你只需在颜色上悬停光标,就可以预览色块中色彩模型的(HEX、 RGB、HSL 和 CMYK)相关信息了。

    Minify     -> > 这是一款用于压缩合并 JavaScript 和 CSS 文件的应用程序。它提供了大量自定义的设置,以及自动压缩保存并导出为.min文件的选项。它能够分别通过 uglify-js、clean-css 和 html-minifier,与 JavaScript、CSS 和 HTML 协同工作。使用F1 运行文件缩小器Minify

    Element-Helper     -> > 支持element-ui 标签

    svg-viewer     -> > 支持svg预览

     

     

    4、自定义配置

    可以在“文件->首选项->设置”的“用户设置”里添加;

    也可以,通过 “Ctrl+Shift+P” 打开命令面板输入settings,选择进行用户自定义设置;

    配置文件

    {
        // tab长度
      "editor.tabSize": 2,
    
      // 启用后,将在保存文件时剪裁尾随空格。
      "files.trimTrailingWhitespace": true,
    
      // Git 可执行文件路径
      "git.path": " C:/Program Files (x86)/Git/bin/git.exe",
      "workbench.iconTheme": "vscode-icons",
    
        // 以像素为单位控制字号。
        "editor.fontSize": 19,
    
        //文件切换到别的页面时候自动保存
        "files.autoSave": "onFocusChange",
    
        "editor.wordWrap": "on",
         // 在 "editor.wordWrap" 为 "wordWrapColumn" 或 "bounded" 时控制编辑器列的换行。
      "editor.wordWrapColumn": 0,
      "emmet.syntaxProfiles": {
        "vue-html": "html",
        "vue": "html"
    },
    "editor.quickSuggestions": {
      "strings": true
    }
    }


     

    5、快捷键使用

     

    主命令框

    F1 或 Ctrl+Shift+P: 打开命令面板。在打开的输入框内,可以输入任何命令,例如:

    • 按一下 Backspace 会进入到 Ctrl+P 模式
    • 在 Ctrl+P 下输入 > 可以进入 Ctrl+Shift+P 模式

    在 Ctrl+P 窗口下还可以:

    • 直接输入文件名,跳转到文件
    • ? 列出当前可执行的动作
    • ! 显示 Errors或 Warnings,也可以 Ctrl+Shift+M
    • : 跳转到行数,也可以 Ctrl+G 直接进入
    • @ 跳转到 symbol(搜索变量或者函数),也可以 Ctrl+Shift+O 直接进入
    • @ 根据分类跳转 symbol,查找属性或函数,也可以 Ctrl+Shift+O 后输入:进入
    • # 根据名字查找 symbol,也可以 Ctrl+T

     

    编辑器与窗口管理

    1. 打开一个新窗口: Ctrl+Shift+N
    2. 关闭窗口: Ctrl+Shift+W
    3. 同时打开多个编辑器(查看多个文件)
    4. 新建文件 Ctrl+N
    5. 文件之间切换 Ctrl+Tab
    6. 切出一个新的编辑器(最多 3 个) Ctrl+\,也可以按住 Ctrl 鼠标点击 Explorer 里的文件名
    7. 左中右 3 个编辑器的快捷键 Ctrl+1 Ctrl+2 Ctrl+3
    8. 3 个编辑器之间循环切换 Ctrl+
    9. 编辑器换位置, Ctrl+k然后按 Left或 Right

     

    代码编辑

    1. 代码行缩进 Ctrl+[ 、 Ctrl+]
    2. Ctrl+C 、 Ctrl+V 复制或剪切当前行/当前选中内容
    3. 代码格式化: Shift+Alt+F,或 Ctrl+Shift+P 后输入 format code
    4. 上下移动一行: Alt+Up 或 Alt+Down
    5. 向上向下复制一行: Shift+Alt+Up 或 Shift+Alt+Down
    6. 在当前行下边插入一行 Ctrl+Enter
    7. 在当前行上方插入一行 Ctrl+Shift+Enter

    光标相关

    1. 移动到行首: Home
    2. 移动到行尾: End
    3. 移动到文件结尾: Ctrl+End
    4. 移动到文件开头: Ctrl+Home
    5. 移动到定义处: F12
    6. 定义处缩略图:只看一眼而不跳转过去 Alt+F12
    7. 移动到后半个括号: Ctrl+Shift+]
    8. 选择从光标到行尾: Shift+End
    9. 选择从行首到光标处: Shift+Home
    10. 删除光标右侧的所有字: Ctrl+Delete
    11. 扩展/缩小选取范围: Shift+Alt+Left 和 Shift+Alt+Right
    12. 多行编辑(列编辑):Alt+Shift+鼠标左键Ctrl+Alt+Down/Up
    13. 同时选中所有匹配: Ctrl+Shift+L
    14. Ctrl+D 下一个匹配的也被选中 (在 sublime 中是删除当前行,后面自定义快键键中,设置与 Ctrl+Shift+K 互换了)
    15. 回退上一个光标操作: Ctrl+U

    重构代码

    1. 找到所有的引用: Shift+F12
    2. 同时修改本文件中所有匹配的: Ctrl+F12
    3. 重命名:比如要修改一个方法名,可以选中后按 F2,输入新的名字,回车,会发现所有的文件都修改了
    4. 跳转到下一个 Error 或 Warning:当有多个错误时可以按 F8 逐个跳转
    5. 查看 diff: 在 explorer 里选择文件右键 Set file to compare,然后需要对比的文件上右键选择 Compare with file_name_you_chose

    查找替换

    1. 查找 Ctrl+F
    2. 查找替换 Ctrl+H
    3. 整个文件夹中查找 Ctrl+Shift+F

    显示相关

    1. 全屏:F11
    2. zoomIn/zoomOut:Ctrl +/-
    3. 侧边栏显/隐:Ctrl+B
    4. 显示资源管理器 Ctrl+Shift+E
    5. 显示搜索 Ctrl+Shift+F
    6. 显示 Git Ctrl+Shift+G
    7. 显示 Debug Ctrl+Shift+D
    8. 显示 Output Ctrl+Shift+U

    其他

    • 自动保存:File -> AutoSave ,或者 Ctrl+Shift+P,输入 auto

     

    修改默认快捷键

    打开默认键盘快捷方式设置:
    File -> Preferences -> Keyboard Shortcuts,或者:Alt+F -> p -> k

    修改 keybindings.json

    // Place your key bindings in this file to overwrite the defaults
    [
        // ctrl+space 被切换输入法快捷键占用
        {
            "key": "ctrl+alt+space",
            "command": "editor.action.triggerSuggest",
            "when": "editorTextFocus"
        },
        // ctrl+d 删除一行
        {
            "key": "ctrl+d",
            "command": "editor.action.deleteLines",
            "when": "editorTextFocus"
        },
        // 与删除一行的快捷键互换
        {
            "key": "ctrl+shift+k",
            "command": "editor.action.addSelectionToNextFindMatch",
            "when": "editorFocus"
        },
        // ctrl+shift+/多行注释
        {
            "key":"ctrl+shift+/",
            "command": "editor.action.blockComment",
            "when": "editorTextFocus"
        },
        // 定制与 sublime 相同的大小写转换快捷键,需安装 TextTransform 插件
        {
            "key": "ctrl+k ctrl+u",
            "command": "uppercase",
            "when": "editorTextFocus"
        },
        {
            "key": "ctrl+k ctrl+l",
            "command": "lowercase",
            "when": "editorTextFocus"
        }
    ]

     

    参考学习:

    https://lzw.me/a/vscode-visual-studio-code-shortcut.html

     

    展开全文
  • 最近一直在学习python,在此之间,我无时无刻不在感受着python这个语言的强大魅力。比起C语言,他简单易懂、易学... 先写一个刚学会的题目: 题目: 给一个字符串,统计其中的数字、字母和其他类型字符的个数; 比

      最近一直在学习python,在此之间,我无时无刻不在感受着python这个语言的强大魅力。比起C语言,他简单易懂、易学。其语法的简单便捷让我对他产生了不浓厚的兴趣,所以,现在在工作之余,我都会练习python语句,这对于做软件测试的我来说,应该帮助会很大。

      现在,我将自己学到的东西在此处做一总结整理。

      先写一个刚学会的题目:

     题目: 给一个字符串,统计其中的数字、字母和其他类型字符的个数;
    比如输入“124mid-=”,输出:数字=3,字母=3,其他=2。

    首先来看两个函数,

        s=input("please inupt string") 
        print(s.isdigit()) #用isdigit函数判断是否数字 
        print(s.isalpha()) #isalpha判断是否字母 
        print(not (s.isalpha() or s.isdigit()) and s.isalnum()) #isalnum判断是否数字和字母的组合

    所以,这个题目用一个 for 语句,遍历该字符串的每个元素,并判断其类型,然后统计个数即可,看代码:

    # -*- coding: UTF-8 -*-
    
    intCount = 0  #用来记录列表中的int元素个数
    strCount = 0 #记录str元素个数
    otherCount = 0
    a = raw_input("plz input a string:")
    # 使用for循环遍历字符串,每次循环判断当前获取的元素的类型,并给对应计数器计数
    for i in a:   
        if i.isdigit(): #判断i是不是int
            intCount += 1
        elif i.isalpha(): #判断i是不是str
            strCount += 1
        else:
            otherCount += 1
    print "数字=%d,字母=%d,其他=%d" % (intCount,strCount,otherCount)

    看一下我的执行结果:

    plz input a string:253dsdsd3=-/
    数字=4,字母=5,其他=3

    OK,其他的下次在写吧!

    展开全文
  • 增加棋子个数统计、胜负判断功能,游戏结束后可选择继续游戏。 示例代码 package main import ( "fmt" "os" "strconv" "unsafe" "github....
  • 机器学习之概率论与数理统计基础知识-(2)随机变量和数字特征
  • 课程首页地址:...用们用惯了集成开发环境,例如VC++6.0,它帮我们处理源程序,实际上就是处理由代码行构成的字符串。本项目的几个问题作为引子,请同学们初步体会相关问题的处理办
  • smartforms控制分页,统计合计

    千次阅读 2009-06-05 09:45:00
    所以求合计的时候都再新建一个变量,用它来统计合计。 4.小技巧 4.1 smartforms在word2007里有时没显示格式,要按Ctr+Shift+Alt+S.就会出现格式的选择。 4.2 上边距 + window.高度 纸张.高度 4.3 有时...
  • 项目源码地址:... 功能实现: wc.exe -c file.c //返回文件 file.c 的字符 wc.exe -w file.c //返回文件 file.c 的单词总数 wc.exe -l file.c //返回文件 file.c 的总行 wc.exe -o outputFile.txt...
  • 统计小写字母个,按序输出星花 【问题描述】: 编写程序从标准输入中读取一行英文,统计其中小写字母的出现次数,并按照从小到大的顺序以条状图的形式显示其出现次数,出现次数为0的不输出。 【输入形式】: 在...
  • HDFS nnTop统计功能

    千次阅读 2016-09-19 18:54:55
    前言 在HDFS的使用过程中,有的时候集群维护者可能想要知道哪些用户使用他们集群的资源比较多,以此...没错,这的确也是一个可选指标,但是显然它们不易收集以及统计,相比于请求而言。那么问题又来了,是否我们有
  • 顺序统计

    千次阅读 2016-07-28 21:50:32
    从现在开始,一起写代码的同学越来越多,在验证自己程序正确性的同时,还要不断提高自己程序的运行速度,总不希望自己的程序比同学的要慢,快还是好的。今天总结顺序统计量的相关问题,以及程序的优化。
  • 让Word统计文本种文字出现的次数 1:单击Word菜单[工具]→[宏]→[宏],输入宏的名称“FindText” ,然后单击[创建]按钮。 2:在弹出的VisualBasic编辑器的代码窗口中完成以下内容 :Sub FindText() Text = ...
  • 前文分享了传统的恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑...
  • 编写可读性代码的艺术

    千次阅读 2016-07-16 10:30:42
    感谢O'Reilly团队无限的耐心和支持,他们是Mary Treseler(编辑)、Teresa Elsey(产品编辑)、Nancy Kotary(文字编辑)、Rob Romano(插图画家)、Jessica Hosman(工具)以及Abby Fox(工具)。还有我们的漫画家...
  • 2、输入VA代码 Sub 查找相同字符个() Text = InputBox("请输入您要查找到字符:", "信息提示") With ActiveDocument.Content.Find Do While .Execute(FindText:=Text) = True tim = tim + 1 Loop End With
  • 代码轮子

    千次阅读 2019-03-06 14:36:14
    PPRows for Mac- 在Mac上优雅的计算你写了多少行代码。open-source-ios-apps- iOS开源App集合,分:swift与Objective-C--国外人整理。NewsBlur作者独自一个人 Samuel Clay 做出来的一款名为 NewsBlur 的新闻阅读器, ...
  • Python代码练习

    万次阅读 多人点赞 2020-10-16 15:29:38
    文章目录0. 写在前面的话1....虽然将答案附在最后以供参考,但希望一定要自己亲手练习,然后比较自己的代码和我的代码之间的差异之处,差异之处也就是需要提高之处。比如编程规范、算法、压力测试等。(注:此篇
  • 友盟统计

    千次阅读 2015-09-28 16:38:49
    友盟统计作为移动应用的统计工具,是移动开发者需要了解的基本工具之一. 目前的社交移动工具基本上会用其承担起公司的统计数据工具. 作为数据的统计工具,他所完成的工作主要包含移动应用统计分析以及细分行业的移动...
  • Android统计图表MPAndroidChart

    千次阅读 2015-12-04 10:06:16
    MPAndroidChart是在Android平台上开源的第三方统计图表库,可以绘制样式复杂、丰富的各种统计图表,如一般常见的折线图、饼状图、柱状图、散点图、金融股票中使用的的“蜡烛”图、“泡泡”统计图、雷达状统计饼状图...
  • 友盟添加网站统计步骤

    千次阅读 2019-11-04 11:26:58
    前一阵要用到H5页面的埋点统计,还是用友盟,挺久没用,突然不太会操作...然后回到我的站点页面,点击右侧统计代码,选个统计代码方式(我用的文字方式)。放到你要统计页面的</body>前。 最好用个隐藏。 ...
  • (一)Trie的简介 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树...一个节点的所有子孙都有相同的前缀(prefix),从根节点到当前结点的
  • JAVA 代码

    千次阅读 2015-01-27 18:02:39
    这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 ...
  • 什么叫代码覆盖率

    千次阅读 2013-03-30 19:46:31
    什么叫代码覆盖率 什麼叫代碼覆蓋率?它的作用是什麼?在測試流程過程中,它什麼時候做?另外,有什麼工具可以實現該功能?它與開發代碼中的代碼覆蓋率有什麼區別沒? 在測試中的代碼覆蓋率是指,你运行测试用例后,...
  • C语言经典源代码

    万次阅读 2018-12-22 10:50:15
    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去  掉不满足条件的排列。 2.程序源代码: #...
  • javascript实现记录文本框内文字

    千次阅读 2010-08-03 09:36:00
    javascript实现记录文本框内文字
  • 代码覆盖率工具---Emma

    千次阅读 2016-05-18 14:21:58
    基于tomcat | emma的代码覆盖率检查工具 EMMA 介绍 EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表...
  • VS错误代码列表

    千次阅读 2017-07-28 16:38:55
    71-已达到计算机的连接最大值,无法再同此远程计算机连接。  72-已暂停指定的打印机或磁盘设备。  80-文件存在。  82-无法创建目录或文件。  83-INT 24 上的故障。  84-无法取得处理此请求的存储...
  • Android友盟统计和埋点

    千次阅读 2018-03-29 14:32:21
    通过在工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化基础库和统计SDK。 在Gradle依赖中添加: dependencies { compile 'com.umeng.sdk:common:latest.integration' compile '...
  • python核心编程题代码实现.py │ Python模拟实现单链表源码示例.py │ python正则过滤文件指定邮箱地址的方法.py │ Python统计代码行数的快捷方法.py │ Python获取局域网IP和它所对应的MAC地址.py │ python获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,797
精华内容 23,118
关键字:

统计当前文字数代码