- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的函数 AddItemToClient 似乎不起作用 我不确定是因为 find 函数还是因为 AddItemToClient 函数,但输出很奇怪。当我尝试将项目添加到另一个客户而不是第一个客户时,它不起作用,但仅适用于第一个客户,但也会向每个现有客户添加相同的项目,有人可以解释为什么吗?
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
struct date
{
int day;
int month;
int year;
struct date* next;
};
struct item
{
char item_name[30];
char item_state[30];
double item_price;
char item_status[30];
double item_price_if_not;
struct date *issue_date;
struct item *next;
};
struct client
{
char client_name[30];
char client_last_name[30];
struct item *item_data;
struct client *next;
};
//ADD CLIENT//
void AddClient(struct client **head, char name[30], char last_name[30])
{
if((*head) == NULL)
{
*head = malloc(sizeof(struct client));
strcpy((*head)->client_name,name);
strcpy((*head)->client_last_name,last_name);
(*head)->next = NULL;
(*head)->item_data = NULL;
}
else
{
struct client *temp;
temp = (*head);
// //
while(temp->next)
temp=temp->next;
// //
(temp->next) = malloc(sizeof(struct client));
strcpy(temp->next->client_name,name);
strcpy(temp->next->client_last_name,last_name);
temp->next->next = NULL;
temp->next->item_data = NULL;
}
}
//ADD CLIENT END//
//////////////////
//FIND TO ADD//
struct client *FindToAdd(struct client *head, char named[30],char last_name[30])
{
struct client *current = head;
while(current != NULL)
{
if((strcmp(current->client_name,named) == 0 )&& (strcmp(current->client_last_name,last_name) == 0))
{
printf("Client found :%s %s\n",current->client_name,current->client_last_name);
return current;
}
current = current->next;
}
return (NULL);
}
//FIND TO ADD END//
///////////////////
//ADD ITEM TO CLIENT//
void AddItemToClient(struct client *head, char item_name[30], char item_state[30], double price, char status[30], double price_if_not, int day, int month, int year)
{
struct item* it = malloc(sizeof(struct item));
strcpy(it->item_name, item_name);
strcpy(it->item_state, item_state);
strcpy(it->item_status, status);
it->item_price = price;
it->item_price_if_not = price_if_not;
it->issue_date = malloc(sizeof(struct date));
it->issue_date->day = day;
it->issue_date->month = month;
it->issue_date->year = year;
it->next = NULL;
it->issue_date->next = NULL;
if (head->item_data == NULL)
{
head->item_data = it;
}
else
{
struct item* node = head->item_data;
while (node->next != NULL) node = node->next;
node->next = it;
}
}
//ADD ITEM TO CLIENT END//
//////////////////////////
// DISPLAY//
void Display(struct client *head)
{int i=1,b=1;
struct client *current;
current = head;
while(current != NULL)
{
printf("[%d] Client name:%s %s \n",i, current->client_name, current->client_last_name);
struct item *CurrentItem = head->item_data;
while(CurrentItem != NULL)
{
printf("-----------------------------------------------\n");
printf("[%d] \n",b);
printf("Item name: %s\n",CurrentItem->item_name);
printf("Item state: %s\n",CurrentItem->item_state);
printf("Item status: %s\n",CurrentItem->item_status);
printf("Item price: %lf\n",CurrentItem->item_price);
printf("Item price if debt wasnt paid: %lf\n",CurrentItem->item_price_if_not);
printf("Issue date: %d/%d/%d\n",CurrentItem->issue_date->day,CurrentItem->issue_date->month,CurrentItem->issue_date->year);
printf("-----------------------------------------------\n");
CurrentItem = CurrentItem->next;
b++;
}
current=current->next;
i++;
}
}
//DISPLAY END//
///////////////
int main()
{
struct client* List = NULL;
int choice;
char name[30];
char client_name[30];
char client_named[30];
char client_last_named[30];
char client_last_name[30];
char item_name[30];
char item_state[30];
char to_find_name[30];
char to_find_last_name[30];
double price;
char status[30];
double price_if_not;
int day,month,year;
scanf( "%d", &choice );
while( choice != 6)
{
printf("Option 1: New person:\nOption 2: Display\nOption 3: Add item to person\n");
switch( choice )
{
case 1:
printf( "New person: \n" );
printf("Provide client name\n");
scanf("%s",client_name);
printf("Provide client last name\n");
scanf("%s",client_last_name);
AddClient(&List,client_name,client_last_name);
break;
case 2:
printf("Display\n");
Display(List);
break;
case 3:
printf("Add item to person: \n");
struct client *temporal = NULL;
printf("Name of desired person\n");
scanf("%s",client_named);
printf("Last name of desired person\n");
scanf("%s",client_last_named);
temporal = FindToAdd(List,client_named,client_last_named);
printf("Item name\n");
scanf("%s",item_name);
printf("Item state\n");
scanf("%s",item_state);
printf("Item price\n");
scanf("%lf",&price);
printf("Item status\n");
scanf("%s",status);
printf("Item price if debt wasnt paid\n");
scanf("%lf",&price_if_not);
printf("Issue date: day\n");
scanf("%d",&day);
printf("Issue date: month\n");
scanf("%d",&month);
printf("Issue date: year\n");
scanf("%d",&year);
AddItemToClient(temporal,item_name,item_state,price,status,price_if_not,day,month,year);
break;
case 4:
printf("Name of desired person\n");
scanf("%s",to_find_name);
printf("Last name of desired person\n");
scanf("%s",to_find_last_name);
FindToAdd(List,to_find_name,to_find_last_name);
break;
default:
printf( "Invalid choice.\n\n" );
break;
}
printf( "? " );
scanf( "%d", &choice );
}
}
最佳答案
问题在这里:
struct item *CurrentItem = head->item_data;
应该是
struct item *CurrentItem = current->item_data;
关于c - c中的嵌套链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207375/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!