【发布时间】:2018-03-19 16:14:32
【问题描述】:
这只是我程序中的一个函数,它应该搜索用户在结构数组中输入的字符串或整数。我想要做的是添加一条错误消息,并且当在结构数组中找不到输入的字符串或整数时重试的能力。如果您输入正确的字符串或整数,它会搜索得很好,但如果您不输入,则不会发生任何事情。我正在尝试改变它,但找不到解决方案。
我已经在我的 switch 语句中尝试了一段时间,但我需要为所有这三种情况都这样做。但到目前为止,我只尝试过案例 3。
search(struct items aItems[], int *num_items)
{
int choice_of_search, b=0, found_word=0, search_num, i=0, j=0, k=0;
char search_phrase[20]; struct items search[MAX];
printf("Choose what to search for? (1) Item number, (2) Name and (3) Balance. ");
scanf("%d", &choice_of_search);
while(choice_of_search < 1 || choice_of_search > 3)
{
printf("Wrong choice!\n");
printf("Choose what to search for? (1) Item number, (2) Name and (3) Balance. ");
scanf("%d", &choice_of_search);
}
switch(choice_of_search)
{
case 1:
printf("Item number?\n");
scanf("%d", &search_num);
for(i = 0; i < *num_items; i++)
{
if(search_num == aItems[i].itemnumber)
{
printf("Item number found!\n");
search[found_word]=aItems[i];
found_word+=1;
}
}
break;
case 2:
printf("Name?\n");
scanf("%s", search_phrase);
for(i = 0; i < *num_items; i++)
{
if(strstr(aItems[i].name, search_phrase))
{
printf("Name found!\n");
search[found_word]=aItems[i];
found_word+=1;
}
}
break;
case 3:
printf("Balance?\n");
scanf("%d", &search_num);
for(i = 0; i < *num_items; i++)
{
if(search_num == aItems[i].balance)
{
printf("Balance found!\n");
search[found_word]=aItems[i];
found_word+=1;
}
else
{
printf("Balance not found! Try again.\n");
printf("Balance?\n");
scanf("%d", &search_num);
}
}
break;
}
while(b < found_word)
{
printf("Item number: %d Name: %s Balance: %d\n", search[b].itemnumber, search[b].name, search[b].balance);
b++;
}
}
【问题讨论】:
-
search缺少返回类型。 -
@melpomene 感谢您的提醒。我遇到的问题是我的案例,你知道我应该怎么做吗?提示或提示或其他任何东西。
-
为了便于阅读和理解:1) 遵循公理:每行只有一个语句,并且(最多)每个语句一个变量声明。 2) 单独的代码块 ( for, if, else, while, do...while, switch, case, default) 通过一个空行。
-
为了让我们正确调试您发布的代码,我们必须“发明”数据定义和
main()函数。这不是我们在这里要做的。请发布“简短”的代码可以干净地编译,但仍然会出现问题。