Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用structs的c数据库程序 我在C中用一个结构来显示一个数据库,我有一个新的编程,我知道C++,我也为C++做程序,但是在这两个程序中都有问题。我将只发布c代码。所以程序运行良好,直到我看到它没有打印我输入的值,而是打印随机值(我猜是垃圾内存)。我不知道为什么这会起作用看看: #include <stdio.h> #include <stdlib.h> #include <conio.h> typedef struct database{ char dataname[32],date[32]; int number_employers; float profit; double salary; }database; void new_company(database x); void show_company(database x); int main() { database Tarom,Wizzair; new_company(Tarom); system("cls"); new_company(Wizzair); system("cls"); show_company(Tarom); show_company(Wizzair); return 0; } void new_company(database x){ printf("Enter company name: "); scanf("%s",&x.dataname); printf("\nEnter company date: "); scanf("%s",&x.date); printf("\nEnter number of employers:"); scanf("%d",&x.number_employers); printf("\nEnter the average salary of employers:"); scanf("%f",&x.salary); printf("\nEnter the company profit(in proccent):"); scanf("%f",&x.profit); } void show_company(database y){ printf("Company name:%s\n",y.dataname); printf("Company date:%s\n",y.date); printf("Number of employers:%d\n",y.number_employers); printf("Average salary of employers:%f\n",y.salary); printf("Company profit:%f\n***************************\n",y.profit); } #包括 #包括 #包括 typedef结构数据库{ 字符数据名[32],日期[32]; 国际数字单位雇主; 浮动利润; 双薪; }数据库; 作废新公司(数据库x); 无效显示公司(数据库x); int main() { 数据库Tarom,Wizzair; 新奥公司(塔罗姆); 系统(“cls”); 新奥公司(Wizzair); 系统(“cls”); 秀秀公司(塔罗姆); show_公司(Wizzair); 返回0; } 作废新公司(数据库x){ printf(“输入公司名称:”); scanf(“%s”和&x.dataname); printf(“\n输入公司日期:”); scanf(“%s”和x.date); printf(“\n输入雇主人数:”); scanf(“%d”和x.number\u雇主); printf(“\n输入雇主的平均工资:”); scanf(“%f”和x.salary); printf(“\n输入公司利润(以人民币计):”; scanf(“%f”和x.利润); } 无效显示公司(数据库y){ printf(“公司名称:%s\n”,y.dataname); printf(“公司日期:%s\n”,y.date); printf(“雇主数量:%d\n”,y.Number\u雇主); printf(“雇主的平均工资:%f\n”,y.工资); printf(“公司利润:%f\n***************************\n”,y.利润); }_C_Database_Struct - Fatal编程技术网

使用structs的c数据库程序 我在C中用一个结构来显示一个数据库,我有一个新的编程,我知道C++,我也为C++做程序,但是在这两个程序中都有问题。我将只发布c代码。所以程序运行良好,直到我看到它没有打印我输入的值,而是打印随机值(我猜是垃圾内存)。我不知道为什么这会起作用看看: #include <stdio.h> #include <stdlib.h> #include <conio.h> typedef struct database{ char dataname[32],date[32]; int number_employers; float profit; double salary; }database; void new_company(database x); void show_company(database x); int main() { database Tarom,Wizzair; new_company(Tarom); system("cls"); new_company(Wizzair); system("cls"); show_company(Tarom); show_company(Wizzair); return 0; } void new_company(database x){ printf("Enter company name: "); scanf("%s",&x.dataname); printf("\nEnter company date: "); scanf("%s",&x.date); printf("\nEnter number of employers:"); scanf("%d",&x.number_employers); printf("\nEnter the average salary of employers:"); scanf("%f",&x.salary); printf("\nEnter the company profit(in proccent):"); scanf("%f",&x.profit); } void show_company(database y){ printf("Company name:%s\n",y.dataname); printf("Company date:%s\n",y.date); printf("Number of employers:%d\n",y.number_employers); printf("Average salary of employers:%f\n",y.salary); printf("Company profit:%f\n***************************\n",y.profit); } #包括 #包括 #包括 typedef结构数据库{ 字符数据名[32],日期[32]; 国际数字单位雇主; 浮动利润; 双薪; }数据库; 作废新公司(数据库x); 无效显示公司(数据库x); int main() { 数据库Tarom,Wizzair; 新奥公司(塔罗姆); 系统(“cls”); 新奥公司(Wizzair); 系统(“cls”); 秀秀公司(塔罗姆); show_公司(Wizzair); 返回0; } 作废新公司(数据库x){ printf(“输入公司名称:”); scanf(“%s”和&x.dataname); printf(“\n输入公司日期:”); scanf(“%s”和x.date); printf(“\n输入雇主人数:”); scanf(“%d”和x.number\u雇主); printf(“\n输入雇主的平均工资:”); scanf(“%f”和x.salary); printf(“\n输入公司利润(以人民币计):”; scanf(“%f”和x.利润); } 无效显示公司(数据库y){ printf(“公司名称:%s\n”,y.dataname); printf(“公司日期:%s\n”,y.date); printf(“雇主数量:%d\n”,y.Number\u雇主); printf(“雇主的平均工资:%f\n”,y.工资); printf(“公司利润:%f\n***************************\n”,y.利润); }

使用structs的c数据库程序 我在C中用一个结构来显示一个数据库,我有一个新的编程,我知道C++,我也为C++做程序,但是在这两个程序中都有问题。我将只发布c代码。所以程序运行良好,直到我看到它没有打印我输入的值,而是打印随机值(我猜是垃圾内存)。我不知道为什么这会起作用看看: #include <stdio.h> #include <stdlib.h> #include <conio.h> typedef struct database{ char dataname[32],date[32]; int number_employers; float profit; double salary; }database; void new_company(database x); void show_company(database x); int main() { database Tarom,Wizzair; new_company(Tarom); system("cls"); new_company(Wizzair); system("cls"); show_company(Tarom); show_company(Wizzair); return 0; } void new_company(database x){ printf("Enter company name: "); scanf("%s",&x.dataname); printf("\nEnter company date: "); scanf("%s",&x.date); printf("\nEnter number of employers:"); scanf("%d",&x.number_employers); printf("\nEnter the average salary of employers:"); scanf("%f",&x.salary); printf("\nEnter the company profit(in proccent):"); scanf("%f",&x.profit); } void show_company(database y){ printf("Company name:%s\n",y.dataname); printf("Company date:%s\n",y.date); printf("Number of employers:%d\n",y.number_employers); printf("Average salary of employers:%f\n",y.salary); printf("Company profit:%f\n***************************\n",y.profit); } #包括 #包括 #包括 typedef结构数据库{ 字符数据名[32],日期[32]; 国际数字单位雇主; 浮动利润; 双薪; }数据库; 作废新公司(数据库x); 无效显示公司(数据库x); int main() { 数据库Tarom,Wizzair; 新奥公司(塔罗姆); 系统(“cls”); 新奥公司(Wizzair); 系统(“cls”); 秀秀公司(塔罗姆); show_公司(Wizzair); 返回0; } 作废新公司(数据库x){ printf(“输入公司名称:”); scanf(“%s”和&x.dataname); printf(“\n输入公司日期:”); scanf(“%s”和x.date); printf(“\n输入雇主人数:”); scanf(“%d”和x.number\u雇主); printf(“\n输入雇主的平均工资:”); scanf(“%f”和x.salary); printf(“\n输入公司利润(以人民币计):”; scanf(“%f”和x.利润); } 无效显示公司(数据库y){ printf(“公司名称:%s\n”,y.dataname); printf(“公司日期:%s\n”,y.date); printf(“雇主数量:%d\n”,y.Number\u雇主); printf(“雇主的平均工资:%f\n”,y.工资); printf(“公司利润:%f\n***************************\n”,y.利润); },c,database,struct,C,Database,Struct,void new_company(数据库x){ 您通过值传递了对象,因此函数将获得本地副本。在函数内对对象所做的任何更改都只影响本地副本,而不影响原始副本。这就是您的问题 在C++中,对该问题的修正更简单,只需将函数的签名更改为 void new_company(database& x){ 在C语言中,更改更为困难。您需要在调用者将其传递给函数的对象名称前面添加&,在函数签名的名称前面添加*,并且您需要将用于访问函数内对象成员的所有更改为->,因为y您正在按值传递数据库对象,因此正在传

void new_company(数据库x){

您通过值传递了对象,因此函数将获得本地副本。在函数内对对象所做的任何更改都只影响本地副本,而不影响原始副本。这就是您的问题

在C++中,对该问题的修正更简单,只需将函数的签名更改为

void new_company(database& x){

在C语言中,更改更为困难。您需要在调用者将其传递给函数的对象名称前面添加
&
,在函数签名的名称前面添加
*
,并且您需要将用于访问函数内对象成员的所有
更改为
->
,因为y您正在按值传递数据库对象,因此正在传入(未初始化)字典对象的副本,新公司正在更新此副本

new_company(&Tarom);
并更改新的公司定义以获取指向数据库的指针,如:

void new_company(database* x){

欢迎使用StackOverflow。只问“请调试我的代码”不是这方面的工作方式(请看“如何问”)“你尝试了什么,得到了什么?”FuZXXL,原来的问题看起来像是一个完全公平的请求,它对C和C++中的同一问题都有同样的要求。问题的重要部分在C和C++中是相同的,但是最好的答案是C和C++之间的不同。因此,这两个问题都是一个好主意。Y通常在正确的时候对C和C++标签都使用的初学者进行回击。但是这个帖子不值得专家劫持。@ JSF在C和C++之间有细微的差别,即使在重叠部分。初学者也不应该认为C代码可以像C++那样编译。一个问题最多只能指定一种编程语言来解决这个问题,除非这个问题是关于多种编程语言的交互。否决这些答案的人愿意分享一个原因吗?谢谢mate,它工作了,我改变了所有函数,正如你说的,但它给我一个程序崩溃当我在控制台中键入这一行时:scanf(“%d”,x->number\u);我设法修复了它,在x前面引入了一个&front,但是这一行没有&front:scanf(“%s”,x->dataname);和scanf(“%s”,x->date);那么,为什么没有崩溃,最好使用或保持原样呢?在大多数情况下,数组的名称,如
x->dataname
表示数组第一个元素的地址。标量的名称,如
x->number\u
表示值。
scanf
需要一个存储r的地址因此,它需要
&
使
x->number\u
成为地址,而
x->dataname
已经是地址。