【发布时间】:2017-01-27 17:07:14
【问题描述】:
我有一个编程课程(初级)的评估,我唯一不能做对的事情(至少根据老师的说法)是其中一个函数如何处理错误的输入。自动取款机看起来是这样的:
void Modify(int id[], char str[100][30], int kredit[], int count)
{
system("cls");
int Search_value;
bool flag = false;
printf("Enter ID to be modified (1-100):: ");
scanf("%d", &Search_value);
for (int i = 0; i < count; i++)
{
if (id[i] == Search_value)
{
printf("Old record\n");
printf("ID :: %d \n", id[i]);
printf("Name :: %s \n", str[i]);
printf("Kredit :: %d\n", kredit[i]);
printf("New record\n");
printf("Name :: ");
scanf("%s",str[i]);
printf("Kredit :: ");
scanf("%d", &kredit[i]);
printf("New data saved\n");
flag = true;
}
}
if (flag == false)
{
printf("ID not found\n");
}
system("pause");
描述如何进行修改的部分任务:
c) 修改数据
- 根据b点做搜索和显示(不同的功能-> 搜索值)
- 如果找到记录,请求新数据
- 无法修改ID!
- 将修改后的记录保存到数组中,覆盖旧记录
编译和运行没有任何问题。或者至少我没有注意到。当然,如果需要,我可以添加更多代码。
【问题讨论】:
-
有什么问题吗?你的老师说的正确答案是什么?你认为正确的答案是什么?
-
与问题没有太大关系,但这都很麻烦,你应该看看how to use struct s in C。
-
你没有检查
scanf的结果。如果失败(用户没有输入数字),那么Search_value将是未定义的。 (你也不初始化它。) -
因为
count索引str,所以不能大于100。 -
在
scanf("%s",str[i]);中,您无法处理读取的字符串可能不超过 29 个字符(加上\0)。