struct数组的C编程FILE输出
C programming FILE output of struct array
在 运行 具有以下输入的代码之后,发生运行时错误:
id : 123
name : Whosebug
quantity : 123
price : 123
我需要帮助来解决这个问题。
之前,我将和号/& 放在:
fprintf(fp, "%d %s %d %d\n\n", a.id, a.name, a.quantity, a.price);
然后一个有趣的数字出来了:
2686724 Whosebug 2686688 2686720
代码:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <ctype.h>
#include <conio.h>
struct product
{
int quantity, reorder, i;
char name[20];
float price, id;
};
int main()
{
FILE * fp;
int i=0;
struct product a;
system("cls");
char checker;
int counter;
do
{
fp = fopen("addproduct.txt","a+t");
system("cls");
printf("Enter product ID : ");
scanf(" %d", &a.id);
printf("Enter product name : ");
scanf(" %s", a.name);
printf("Enter product quantity : ");
scanf(" %d", &a.quantity);
printf("Enter product price : ");
scanf(" %d", &a.price);
fprintf(fp, "%d %s %d %d\n\n", a.id, a.name, a.quantity, a.price);
printf("Record saved!\n\n");
fclose(fp);
printf("Do you want to enter new product? Y / N : ");
scanf(" %c", &checker);
checker = toupper(checker);
i++;
system("cls");
}
while(checker=='Y');
return(0);
}
因为&指向变量的引用。相反,请尝试打印 a.id.
fprintf (fp, "%d%s %d %d\n\n", a.id, a.name, a.quantity, a.price)
您已将 id,price 声明为 float 数据类型。
在 scanf 语句中使用 %f 而不是 %d。
有一个简单的错误。在这里,主要问题是整数和浮点数之间的冲突。您可以将 'id' & 'price' 从 'float' 更改为 'int',这将解决问题!此外,当您为价格和 ID 采用浮点输入和输出时,您可以使用 %f 修改 %d。 我不知道你为什么将 'id' 声明为 'float' :|
在 运行 具有以下输入的代码之后,发生运行时错误:
id : 123
name : Whosebug
quantity : 123
price : 123
我需要帮助来解决这个问题。
之前,我将和号/& 放在:
fprintf(fp, "%d %s %d %d\n\n", a.id, a.name, a.quantity, a.price);
然后一个有趣的数字出来了:
2686724 Whosebug 2686688 2686720
代码:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <ctype.h>
#include <conio.h>
struct product
{
int quantity, reorder, i;
char name[20];
float price, id;
};
int main()
{
FILE * fp;
int i=0;
struct product a;
system("cls");
char checker;
int counter;
do
{
fp = fopen("addproduct.txt","a+t");
system("cls");
printf("Enter product ID : ");
scanf(" %d", &a.id);
printf("Enter product name : ");
scanf(" %s", a.name);
printf("Enter product quantity : ");
scanf(" %d", &a.quantity);
printf("Enter product price : ");
scanf(" %d", &a.price);
fprintf(fp, "%d %s %d %d\n\n", a.id, a.name, a.quantity, a.price);
printf("Record saved!\n\n");
fclose(fp);
printf("Do you want to enter new product? Y / N : ");
scanf(" %c", &checker);
checker = toupper(checker);
i++;
system("cls");
}
while(checker=='Y');
return(0);
}
因为&指向变量的引用。相反,请尝试打印 a.id.
fprintf (fp, "%d%s %d %d\n\n", a.id, a.name, a.quantity, a.price)
您已将 id,price 声明为 float 数据类型。 在 scanf 语句中使用 %f 而不是 %d。
有一个简单的错误。在这里,主要问题是整数和浮点数之间的冲突。您可以将 'id' & 'price' 从 'float' 更改为 'int',这将解决问题!此外,当您为价格和 ID 采用浮点输入和输出时,您可以使用 %f 修改 %d。 我不知道你为什么将 'id' 声明为 'float' :|