-
模块化写代码
项目创建从三方面入手:
1.界面 2.数据结构 3.交互
写完一块要测试,且测试不要放在负载的环境中,否则给改bugs带来不便。 -
分文件写时的错误
两个cpp中如果要包含同一个头文件,头文件中不能有定义,只能有声明,否者即使有#program once,也会出现重定义
-
结构体的声明应放在函数声明前
养成这个习惯,否者可能出现下面图片的问题或是typedef重定义问题或出现函数返回类型是还未声明的结构体 -
结构体变量运算符的使用
结构体变量不能使用直接使用赋值,这一点新手常会犯错,c++可以通过过写运算符重载函数,c中还是剥洋葱,一个一个成员赋值吧。
与此类似的是字符数组也不能直接赋值、比较,可以使用strcpy、strcmp等实现
注意使用strcmp,如果相等,返回0 -
格式化输出对齐问题
如:%-16.16s
意思是以16位的宽度,最多输出s的前16个字符,超出部分不会输出。
共输出16位宽度(包括字符串和之间的空格)。
注意:这是在输出时使用,在scanf中不行
也可以这么用:printf("%*.*s\n",m,n,ch);
这种方法可以实现在语句之外对参数m和n赋值,从而动态地控制输出格式。 -
switch case语句中变量的作用域问题
各个case 都在同一个作用域,因此case 2可以调用case 1的变量
比如下面定义了两个good data;程序报错
//这是部分代码
case 1://录入数据
good data=input();
insert(headnode, data);
printf("...录入完成\n");
break;
case 5://修改数据
printf("请输入要修改商品信息的商品名字:");
scanf("%s", posdata.name);
printf("请输入要修改成商品信息:\n");
good data = input();
fix(headnode, posdata, data);
break;
- scanf不能用
当错误窗口中提示用什么替代时,这是版本的问题,有两种解决方法:
方法一:右击项目名称,属性,找到c/c++预处理器,将错误窗口中use后面的_CRT_SECURE_NO_WARNINGS打上去。
方法二:用宏定义#define _CRT_SECURE_NO_WARNINGS