c语言课程设计项目遇到的问题总结

  1. 模块化写代码
    项目创建从三方面入手:
    1.界面 2.数据结构 3.交互
      写完一块要测试,且测试不要放在负载的环境中,否则给改bugs带来不便。

  2. 分文件写时的错误
      两个cpp中如果要包含同一个头文件,头文件中不能有定义,只能有声明,否者即使有#program once,也会出现重定义
    c语言课程设计项目遇到的问题总结_第1张图片

  3. 结构体的声明应放在函数声明前
      养成这个习惯,否者可能出现下面图片的问题或是typedef重定义问题或出现函数返回类型是还未声明的结构体c语言课程设计项目遇到的问题总结_第2张图片

  4. 结构体变量运算符的使用
      结构体变量不能使用直接使用赋值,这一点新手常会犯错,c++可以通过过写运算符重载函数,c中还是剥洋葱,一个一个成员赋值吧。
    与此类似的是字符数组也不能直接赋值、比较,可以使用strcpy、strcmp等实现
    注意使用strcmp,如果相等,返回0

  5. 格式化输出对齐问题
    c语言课程设计项目遇到的问题总结_第3张图片
    如:%-16.16s
      意思是以16位的宽度,最多输出s的前16个字符,超出部分不会输出。
    共输出16位宽度(包括字符串和之间的空格)。
    注意:这是在输出时使用,在scanf中不行
    也可以这么用:printf("%*.*s\n",m,n,ch);
    这种方法可以实现在语句之外对参数m和n赋值,从而动态地控制输出格式。

  6. 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;

这里就会出现重定义的错误

  1. scanf不能用

c语言课程设计项目遇到的问题总结_第4张图片
    当错误窗口中提示用什么替代时,这是版本的问题,有两种解决方法:
方法一:右击项目名称,属性,找到c/c++预处理器,将错误窗口中use后面的_CRT_SECURE_NO_WARNINGS打上去。
c语言课程设计项目遇到的问题总结_第5张图片c语言课程设计项目遇到的问题总结_第6张图片方法二:用宏定义#define _CRT_SECURE_NO_WARNINGS

你可能感兴趣的:(c/c++)