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

本文介绍模块化编程的三个核心方面:界面设计、数据结构及交互处理,并分享了实用的编程建议,例如如何避免重定义结构体及正确使用结构体变量等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模块化写代码

项目创建从三方面入手:

1.界面 2.数据结构 3.交互

写完一块要测试,且测试不要放在负载的环境中,否则给改bugs带来不便。

分文件写时的错误

两个cpp中如果要包含同一个头文件,头文件中不能有定义,只能有声明,否者即使有#program once,也会出现重定义

20236aab9a8230e38267fdf59a93f23c.png

结构体的声明应放在函数声明前

养成这个习惯,否者可能出现下面图片的问题或是typedef重定义问题或出现函数返回类型是还未声明的结构体

a4e4388704d33ad1979dab3da5369c24.png

结构体变量运算符的使用

结构体变量不能使用直接使用赋值,这一点新手常会犯错,c++可以通过过写运算符重载函数,c中还是剥洋葱,一个一个成员赋值吧。

与此类似的是字符数组也不能直接赋值、比较,可以使用strcpy、strcmp等实现

注意使用strcmp,如果相等,返回0

格式化输出对齐问题

967bba085941468604efaccc8a1eeebf.png

如:%-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;

e91797c72cf36c5afc39ea70fe999533.png

scanf不能用

b0c2cc400f69cd376c32bb7246f6c265.png

当错误窗口中提示用什么替代时,这是版本的问题,有两种解决方法:

方法一:右击项目名称,属性,找到c/c++预处理器,将错误窗口中use后面的_CRT_SECURE_NO_WARNINGS打上去。

e03adea9b959aee99764415d375a361f.png

af7144c6dc28f84005a6ecb2f6ec4d3c.png方法二:用宏定义#define _CRT_SECURE_NO_WARNINGS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值