• C语言遇到的错误和解决方案~~~持续更新,记录成长的过程


    1.error C2296: '&' : illegal, left operand has type 'char [3]'
    scanf("%d" &x);
    少了一个逗号
    scanf("%d", &x);

    2.char数组,没有定义数组长度的时候,运行会崩溃

    解决方法:char型数组记得一定要定义一个长度

    3.char数组定义长度后,但是赋值的时候并没有赋值那么长,控制台打印出现“烫烫烫..............”,
    那是因为你没有赋值完,程序会将后面的默认赋值为CC h,打印出来就成了烫字
    比如,你定义的数组是char a[10],最后你从控制台输入的字符数组为“lisi”,这个“lisi”的长度为5,所以后面的存储空间就默认为cccccch了,打印出来的就是烫字

    4,如何定义变长的char数组
    //(1).动态分配啊~每次都分配,每增加一个字符,就动态分配一个char字符空间给他
    //char * p =(char*)malloc(sizeof(char)*1)等等
    (2).没办法定义 ”变长数组“
    char array[x];

    x的值 在定义(分配空间时)必须指明 或者程序能得到x的值。

    变长数组 基本实现思路是
    申请一块内存 可存放x个元素 当元素的个数大于x后增加x/n个元素空间(可以使用内存复制)
    数组对长度要求是静态的。全局数组在系统初始化时在数据段为其分配空间,如果数组大小不明确,数据段无法为其分配空间,因为还有别的数据需要在数据段分配空间;局部变量数组在创建函数调用栈时也要求数组指定大小,因为局部变量是在栈底分配空间的,如果数组大小不明,栈的后续增长就不知道从哪里开始了。

    一般对于这种需求,都是临时根据需要申请动态内存来用。

    5.fatal error C1010: unexpected end of file while looking for precompiled header directive
    在vc6.0下面出现这个错误,一般是没有加头文件StdAfx.h
    在cpp文件前面加上#include "stdafx.h",重新编译即可

    6.D: est2 est2.cpp(15) : error C2106: '=' : left operand must be l-value
    ;
    error C2106: '=' : left operand must be l-value
    是说: '='左边必须是变量,不能是常量或者表达式
    比如,下面的几个例子,都是同样的错误:
    5=3;
    (i+j)=3;

    7.strlen(ch),这里的ch为char *型
    要字符数组的长度,则sizeof(ch)

    8.头文件中有.h和没有.h的区别
    有.h是c语言的头文件
    没有.h是C++的头文件
    以<string>和<string.h>为例:
    在c++中,这样用:
    #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件

    using  std::string;

    using  std::wstring;

    using namespace std;

    在C语言中是
    #include <string.h>

    9,C语言中,定义字符数组,然后从键盘输入字符串赋值给整形数组
    char stu1[i].name[];
    scanf("%s",stu1[i].name);
    和gets(stu1[i].name);
    这两者有却别的就是
    scanf以空格为结束
    gets以 换行符作为结束

    10.c语言文件读写函数
    fwrite
    fputs
    fprintf都是可以写的,但是呢,fwrite写入的数据是二进制,打开看肯定是乱码
    fputs是读入字符串,记事本打开可以看见
    fprintf,是读入整形浮点型数据,记事本打开可以看见
    fprintf(fp, "%d, %f, %f ", x, y, z);
    这三种写的文件都是可以读取的

    11.c语言.chm 文档要好好看,找函数原型了解
    百度,函数原型了解各种参数的含义
    基础知识是很重要的

    12.浮点型数组的定义:float f[100];
    13.atoi函数,把字符串转换成整形
    14.把一个10以内整数转行成字符
    int 9
    char s
    s=9+'0';//s=9+48;
    printf("%s",s);
    输出为9;即s='9'

    ostream_iterator<string> output(cout," : ");
    //ostream_iterator<srting> output=(cout,","); 拼写错误啦!string,而不是srting

    2015-2-3

    9.getchar()和gets()的区别

    C:WindowsSystem32KernelBase.dll', no matching symbolic information found.
    表示调用dll时传入的参数有错误,
    这个参数可以是printf,scanf等系统函数的格式,多注意逗号,一般新手会出现这样的编译错误
    这个参数可以是函数传参的格式,类型等等
    这个参数也可能是else if中的参数
    这里有个技巧就是。用else的时候一定带上if,养成习惯
    调试到出现错误的地方,在这附近的凡是出现参数的地方都检查一下

    const和define的区别

    尽可能将全局变量定义都在执行语句的最前面,要么可能会出错


    如果printf里面传入一个函数,打印出来的是0,那么先定义一个变量。给这个变量赋值为函数的返回值
    然后在printf里面打印这个变量

    有一个函数:float sum(float num[],int x,int n)
    printf("结果为:%f ",sum);打印为0;

    试试
    float res;
    res=sum(a,x,n);
    printf("结果为:%f ",res);


    c下面strlen(str1)
    c++下面 str1.length();


    -858993460
    最近使用VC++6.0时发现以下情况:
    1.当一个未初始化赋值的时候,他在内存就默认保存为-858993460;
    2.如果变量的数据类型由于你的运算的溢出了,在内存中系统就自动改为-858993460。
    注:一般的书上都会说如果一个变量未付值,系统会给他一个随机值。但实际测试VC++6.0 里实际上是-858993460。TC上的数值是随机,每次都不一样。

    int result;
    printf("%d",result);


    友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。

    isdigit函数
    ctype.h

    2015-2-16
    1.vc 6 ide 不能打开了,一直停留在打开页面,一般是插件出了问题,可能是损坏,可能是过期了之类的,总之尝试着把插件卸载~就可以打开vc 6了

    2.unsigned char Prior[8][8] =
    { // 运算符优先级表
    ////// '+' '-' '*' '/' '(' ')' '#' '^'
    /*'+'*/'>','>','<','<','<','>','>','<',
    /*'-'*/'>','>','<','<','<','>','>','<',
    /*'*'*/'>','>','>','>','<','>','>','<',
    /*'/'*/'>','>','>','>','<','>','>','<',
    /*'('*/'<','<','<','<','<','=',' ','<',
    /*')'*/'>','>','>','>',' ','>','>','>',
    /*'#'*/'<','<','<','<','<',' ','=','<',
    /*'^'*/'>','>','>','>','<','>','>','>'
    };
    3,。VC6.0装了visual assist x补全代码具体怎么用?
    输入字母后会像输入法那样出现一个菜单
    但是怎么选择菜单里面的内容呢?
    什么 回车 上下左右 按了都不是。、。。。
    鼠标双击可以 但是太麻烦。。。
    主要是不知道怎么选择
    就是上下选中不了。。。按上下 就到 上一行或者下一行代码去了。。。
    不会自动补齐的。。。只会显示。。。如果不选还是要自己打出完整的代码!!

    安装一个高版本的visual assist x

    4.overloaded function as left operand
    因为你的left operand不知道是函数还是变量。。
    如果是头文件中的函数名或者关键字,就不能定义成变量
    5.illegal use of this type as an expression
    格式错误,将这个变量定义在这个函数的第一行,养成良好的习惯~

    2015-2-27
    In function ‘void* client_thread2(void*)’:
    multi_client_test_demo.cpp:167: 错误:expected ‘)’ before ‘;’ token
    multi_client_test_demo.cpp:167: 错误:expected primary-expression before ‘)’ token
    ulti_client_test_demo.cpp:167: 错误:expected ‘;’ before ‘)’ token
    multi_client_test_demo.cpp:340: 错误:expected ‘}’ at end of input

    这个错误是定义错误
    返回代码查看167是while(j < REPEAT_TIME),然后找REPEAT_TIME的定义发现是“#define REPEAT_TIME 2000;”这里细心一点会发现2000后面的;是多余的,去掉重新编译就好了
    再出现类似错误也可能是全角和半角的问题,或者{误写成了(之类的

  • 相关阅读:
    [学习记录]Prometheus简单上手
    [学习记录]从triggerflow源码中学到的简单思想
    42 | 实战:大型全球化电商的测试基础架构设计
    41 | 从小工到专家:聊聊测试执行环境的架构设计(下)
    40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
    39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?
    python之jsonpath
    38 | 测试数据的“银弹”- 统一测试数据平台(下)
    Python replace()方法
    37 | 测试数据的“银弹”- 统一测试数据平台(上)
  • 原文地址:https://www.cnblogs.com/hhddcpp/p/4261247.html
Copyright © 2020-2023  润新知