0

使用以下输入运行代码后,会发生运行时错误:

id : 123
name : stackoverflow
quantity : 123
price : 123

我需要帮助来解决这个问题。

以前,我将 & 符号 /& 放在:

fprintf(fp, "%d %s %d %d\n\n", a.id, a.name, a.quantity, a.price);

一个有趣的数字出来了:

2686724 stackoverflow 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);
}
4

3 回答 3

1

这是因为 & 指向变量的引用。请尝试打印 a.id。

fprintf (fp, "%d%s %d %d\n\n", a.id, a.name, a.quantity, a.price)
于 2016-08-14T03:44:31.873 回答
0

有一个简单的错误。在这里,主要问题是整数和浮点数之间的冲突。您可以将 'id' & 'price' 从 'float' 更改为 'int' ,它会解决问题!此外,当您为价格和 id 进行浮点输入和输出时,您可以使用 %f 修改 %d。我不知道你为什么将 'id' 声明为 'float':|

于 2016-08-15T17:16:00.960 回答
0

您已将 id,price 声明为浮点数据类型。在 scanf 语句中使用 %f 而不是 %d。

于 2016-08-14T03:52:17.267 回答