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

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

  2. 分文件写时的错误
      两个cpp中如果要包含同一个头文件,头文件中不能有定义,只能有声明,否者即使有#program once,也会出现重定义
    在容器.h中写了menu函数的实现,就会报错

  3. 结构体的声明应放在函数声明前
      养成这个习惯,否者可能出现下面图片的问题或是typedef重定义问题或出现函数返回类型是还未声明的结构体在结构体声明前声明可能要用到结构体变量的函数

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

  5. 格式化输出对齐问题
    这是测试时的截图,图中用数字试验的,每个数字应和上面信息名称对齐
    如:%-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不能用

scanf不能用
    当错误窗口中提示用什么替代时,这是版本的问题,有两种解决方法:
方法一:右击项目名称,属性,找到c/c++预处理器,将错误窗口中use后面的_CRT_SECURE_NO_WARNINGS打上去。
1在这里插入图片描述方法二:用宏定义#define _CRT_SECURE_NO_WARNINGS

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值