【发布时间】:2017-10-22 05:00:19
【问题描述】:
我有选择 2 需要修复。例如,如果我有一个名字 Marcus,并且用户在“arc”中键入应该显示所有包含“arc”的名字,而不仅仅是 Marcus。如果我只输入全名并且无论如何只显示一行(注册),我的代码就可以工作。 然后我有选择 3 lagersaldo(代表数量)。如果用户注册了 3 件东西,例如数量为 20,当搜索所有数量为 20 的项目时,应该显示。该代码仅显示其中之一。任何人都可以帮助解决这个问题?
struct varor{
int varunummer;
char namn[WORDLENGTH];
int lagersaldo;
};
if(choice=='2'){
int i, namn;
printf("Ange namn: ");
scanf("%d", &namn);
i = ifNamnExists(namn, reg, nrOfGoods);
if(i>0){
printf("\nVarunummer \t Namn \t\t\t Lagersaldo\n");
printf(" %d \t\t %s \t\t\t %d\n",reg[i].varunummer,reg[i].namn,reg[i].lagersaldo);
}else printf("\nNamn finns inte!\n");
}
if(choice=='3'){
int i, lagersaldo;
printf("Ange lagersaldo: ");
scanf("%d", &lagersaldo);
i = ifLagersaldoExist(lagersaldo, reg, nrOfGoods);
if(i>0){
printf("\nVarunummer \t Namn \t\t\t Lagersaldo\n");
printf(" %d \t\t %s \t\t\t %d\n",reg[i].varunummer,reg[i].namn,reg[i].lagersaldo);
}else printf("\nLagersaldo för det nr. finns inte!\n");
}
if(choice=='4') run=0;
}
int ifNamnExists(char namn, const struct varor reg[], int nrOfGoods){
int i;
for(i=0; i < nrOfGoods; i++){
if(strcmp(&namn, reg[i].namn)==0){
return i;
}
}
return -1;
}
int ifVarunummerExist(int varunummer, const struct varor reg[], int nrOfGoods){
int i;
for(i=0; i<nrOfGoods; i++)
if(reg[i].varunummer == varunummer)
return i;
return -1;
}
【问题讨论】:
-
向我们展示函数:ifNamnExists() 和 ifLagersaldoExist() 并向我们展示结构。如果可能,请向我们展示完整的代码。
-
@MukulKumar 现已更新。整个代码有 300 行,我希望这就够了
-
int i, namn;-->int i; char namn[WORDLENGTH];,scanf("%d", &namn);-->scanf("%s", namn);,if(i>0){-->if(i>=0){,int ifNamnExists(char namn,-->int ifNamnExists(char namn[], -
对于部分名称匹配,使用
strstr而不是strcmp。