gpt4 book ai didi

使用 Xcode 控制到达非 void 函数 C 编程的末尾

转载 作者:行者123 更新时间:2023-11-30 20:20:15 24 4
gpt4 key购买 nike

库存2.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "inventory2.h"

item_t *inventory[30];
int next=0;

int getNextId() {
static int id=0;
return id++;
}

void printItem(item_t *p){
printf("\n\tpart name: %s", p->name);
printf("\n\tpart number: %s", p->partNo);
printf("n\tpart quantity: %d", p->quantity);
printf("\n\tpart price: %f", p->price);
printf("n\t\tpart cost: %f", p->cost);

}
printInventory() {
register int i;
for(i=0; i<next; i++) {
printItem(inventory[i]);

}

} <-THIS IS WHERE THE ERROR OCCURS

int createItem() {
item_t *p;
char buf[50];
buf[0] = '\0';

p = (item_t*) malloc(sizeof(item_t));
if(!p) {

printf("ERROR: no memory for createItem()\n");
return FALSE;
}

p->id=getNextId();
printf("\n\tEnter part name: ");
fgets(p->name, 50, stdin);
p->name[strlen(p->name)-1] = '\0';

printf("\n\tEnter part number ");
fgets(p->partNo, 30, stdin);
p->partNo[strlen(p->partNo)-1] = '0';

printf("\n\tEnter part quantity: ");
fgets(buf, 50, stdin);
buf[strlen(buf)-1] = '\0';
p->quantity = atoi(buf);

printf("n\tEnter part price: ");
fgets(buf, 50, stdin);
buf[strlen(buf)-1] = '\0';
p->price = (float) atof(buf);

printf("n\tEnter part cost: ");
fgets(buf, 50, stdin);
buf[strlen(buf)-1] = '\0';
p->cost = (float) atof(buf);

inventory[next++] = p;
return TRUE;
}

int writeInventory() {
FILE *fp;
int num, i;
item_t*p;

fp = fopen("inventory.db", "rb");
for(i=0; i<next; i++){
p = (item_t*) malloc(sizeof(item_t));
if(!p) {
printf("ERROR: no memory for createItem()\n");
return FALSE;
}
inventory[i] = p;
num = fread(inventory[i], sizeof(item_t), 1, fp);
if(num == 0) {
return -1;
}

next ++;

}
fclose(fp);
return 0;
}

主要2.c

#include <stdio.h>
#include <string.h>
#include "inventory2.h"

int mainMenu (){

char buf[50], *p;
buf[0] = '\0';

printf("\n\tSelect from the following commandsL (L)ist, (A)dd, (R)emove, (I)mport, (E)xport, or (Q)uit: ");
fgets(buf, 50, stdin);
buf[strlen(buf) -1] = '\0';
p = _strupr(buf);
switch(*p) {
case 'L':
printInventory();
break;
case 'A':
createItem();
break;
case 'R':
case 'I':
readInventory();
break;
case 'E':
case 'Q':
writeInventory();
return FALSE;
default:
printf("\n\t\tERROR: invalid option selected!\n");
}
return TRUE;
}

int main (void) {

item_t *i;
int loop = TRUE;

while (loop) {
loop= mainMenu();
}

return 0;
}

库存2.h

#define TRUE 1
#define FALSE 0

typedef struct {
int id;
char name[50];
char partNo[30];
float price;
float cost;
int quantity;
} item_t;

int createItem();
int writeInventory();
item_t *readInventory();
int printInventory(void);

创建一个名为 ICP.exe 的库存控制程序。该程序将为用户提供控制库存的操作菜单,其中包括:列出库存、创建商品、添加库存、删除库存、删除商品、导入和导出数据库。

库存商品具有:唯一 ID、零件编号、名称、数量、销售价格和单价。

加载包含以下项目的数据库:

  1. SNK809a 精工自动男士 watch ,10 block ,75 美元,70 美元。

  2. SR400 雅马哈 400cc 摩托车,3 辆,5,999 美元,4,000 美元。

  3. Soundlink-Coral Bose 珊瑚红蓝牙扬声器,20 件,129 美元,89 美元。

演示加载/创建库存数据库、创建新商品、添加到库存、从库存中删除以及保存数据库。

使用截图工具捕获输出。

菜单可能如下所示,但学生可以自由创建不同的界面(如果更直观的话)。

c:\users\dbs0011\icp.exe

欢迎使用库存控制计划!

从以下选项中选择 (L)ist、(C)reate、(A)dd、(R)emove、(I)mport 或 (E)xport:> I

输入要导入的数据库名称:>first.db

导入了first.db。

从以下选项中选择 (L)ist、(C)reate、(A)dd、(R)emove、(I)mport 或 (E)xport:> I

最后构建导入和导出函数,因为我们直到本项目结束之前才会介绍文件。使用动态内存分配来记录。每个接口(interface)选项应该是一个单独的函数。使用结构来定义您的库存项目。使用单独的 C 文件来封装您的用户界面、数据存储和测试功能。

最佳答案

printInventory() {
register int i;
for(i=0; i<next; i++) {
printItem(inventory[i]);

}

} <-THIS IS WHERE THE ERROR OCCURS

在老式 C 语言中。如果您没有指定函数的返回类型,则默认为 int。在上述情况下,printInventory 没有返回类型,因此编译器期望返回 int

函数中没有 return 语句作为最后一个语句,因此编译器不知道要返回什么值。

修复方法:

  1. 设置显式返回类型 void。
  2. 添加 return 0; 作为函数的最后一条语句。

我认为这在现代 C 中已得到解决。但我不知道 XCode 如何调用编译器。

关于使用 Xcode 控制到达非 void 函数 C 编程的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47020759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com