首页 > 代码库 > C语言遇到的错误和解决方案~~~持续更新,记录成长的过程

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:\test2\test2.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>

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