C语言课程项目PETS SPA:手机号与宠物名输入及收据显示问题求助
解决PETS SPA项目中手机号与宠物名显示异常问题
输入读取的常见坑点
- 若用
scanf("%s", phone)读取手机号,需确保数组长度足够(比如char phone[12];,预留一位存字符串结束符\0)。另外,若之前的输入操作留下了缓冲区的换行符,会干扰后续scanf读取,可在读取前用getchar()清空缓冲区。 - 读取宠物名时,
scanf("%s", petName)会在空格处停止读取,要是宠物名包含空格(比如"Puppy Max"),只能获取到第一个单词。这种情况建议改用fgets(petName, sizeof(petName), stdin),但记得手动去除fgets读取到的末尾换行符(比如petName[strcspn(petName, "\n")] = '\0';)。
- 若用
变量作用域检查
- 确认存储手机号和宠物名的变量是否在输入模块和收据模块的有效作用域内。如果是某函数内的局部变量,函数执行完毕后内存会被释放,收据模块调用时就会出现乱码或空值。可将变量设为全局变量,或者通过函数参数传递给收据打印函数。
打印格式匹配问题
- 打印时的格式符必须和变量类型对应:如果手机号存在
char数组中,要用%s打印;若存在long long类型变量中,需用%lld。格式符不匹配会导致显示异常数值或乱码。
- 打印时的格式符必须和变量类型对应:如果手机号存在
请提供你的输入读取代码片段和收据打印代码片段,以便精准定位问题。
内容的提问来源于stack exchange,提问作者Maya Ramos
相关产品推荐
相关产品推荐

