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>
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\n", 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:\Windows\System32\KernelBase.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\n",sum);打印为0;
试试
float res;
res=sum(a,x,n);
printf("结果为:%f\n",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后面的;是多余的,去掉重新编译就好了
再出现类似错误也可能是全角和半角的问题,或者{误写成了(之类的
C语言遇到的错误和解决方案~~~持续更新,记录成长的过程的更多相关文章
- Python语言上机题实现方法(持续更新...)
Python语言上机题实现方法(持续更新...) 1.[字符串循环左移]给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a'.'b' ...
- Python:常见错误集锦(持续更新ing)
初学Python,很容易与各种错误不断的遭遇.通过集锦,可以快速的找到错误的原因和解决方法. 1.IndentationError:expected an indented block 说明此处需要缩 ...
- 学习go语言一篇就够了(持续更新)
前言:写博客也写了差不多一年了,我更多的时候是记录自己学习的情况,有时也有自己工作上遇到的bug,自己有时候也比较迷茫,不知道怎么去写博文,我也很想别人跟我提提建议,但是有时候觉得写写博客还是很有成就 ...
- IE兼容BUG汇总及解决方案(持续更新)
本篇为总结开发过程当中遇到的各种IE兼容性的小问题,比较复杂的会单开一篇文章来讲解. 另:我手头目前只有原生IE8,原生IE9,原生IE11,以及IE11模拟的IE5,7,8,9,10.因IE6太过古 ...
- C++语言入门知识点(详细版)【持续更新每周三更】,小舒舒戳这里!!!
时间过得好快啊,LITTLESUN已经在这块新地图摸打滚爬了一个多月了.前一段时间出了点小意外一直没能更新博客,昨天被小舒舒催更了(惭愧惭愧)便准备着手来一篇回忆录回首一下这一个月走过的风风雨雨,也希 ...
- Github-Q&A 常见错误排查(持续更新)
Q1:提交Git时出现"remote origin already exists"提示? 关联本地与网上仓库的时候,可能会出现此错误,这是因为已经存在已关联的仓库.通过如下方法 ...
- ABP core2.2错误笔记,持续更新
注:以下问题全部基于版本 © 2019 MLCDZ. Version 4.3.0.0 [20190830] .net core 的版本为2.2 1.System.InvalidOperationEx ...
- Pandas 错误笔记(持续更新)
更新至2018.5.1 字典生成DataFrame 今天一个字典生成一个DataFrame,采用了以下形式,每一个value都是一个数(不是vector) df = pd.DataFrame({ 'i ...
- 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2019-12-12)
说明: 争取做更多的实战性应用,分享更多的嵌入式技术,希望能在实际项目中帮到大家. (1)V7将大力加强对初学者的支持力度,已经更新至63章,下载链接,后37章和一批视频教程将加紧制作. (2)事隔五 ...
随机推荐
- VBA删除表格最后一行
Sub 删除最后一行() If MsgBox("要为所有表格添加列吗?", vbYesNo + vbQuestion) = vbYes Then To ActiveDocument ...
- linux中sudoers别名规则
/etc/sudoers 配置文档中别名规则 别名规则定义格式如下: Alias_Type NAME = item1, item2, ... 或 Alias_Type NAME = item1, it ...
- jQuery控制TR的显示隐藏
网上有很多,这里介绍三种: 第一种方法,就是使用id,这个方法可以在生成html的时候动态设置tr的id,也是用得最多最简单的一种,如下: <table> <tr><td ...
- habse的CopyTable
需求:对hbase的一张表进行拷贝 一.table1的内容如下 hbase(main)::> scan 'table1' ROW COLUMN+CELL column=f1:age, times ...
- js日期格式化方法 dateFormatFn
var dateFormatFn=function(val,fmt){ var _this = new Date(val); console.log(_this,_this.getFullYear() ...
- C++判断对称三位数素数
题目内容:判断一个数是否为对称三位数素数.所谓“对称”是指一个数,倒过来还是该数.例如,375不是对称数,因为倒过来变成了573. 输入描述:输入数据含有不多于50个的正整数(0<n<23 ...
- Struts2中的namespace使用
namespace一般在项目比较复杂的情况下使用较好. 在struts2的项目中,namespace主要在以下环境中常使用: 1. 在配置文件中(struts.xml)以及被它包含的XX.xml文件中 ...
- android 利用TrafficStats类获取本应用的流量
public void getData() { // PackageManager 包管理类 PackageManager packageManager = BrownserActivity.this ...
- python实现决策树
1.决策树的简介 http://www.cnblogs.com/lufangtao/archive/2013/05/30/3103588.html 2.决策是实现的伪代码 “读入训练数据” “找出每个 ...
- 实战Django:简易博客Part1
舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...