该程序从用户产品名称、产品类别和产品系列中获取输入,然后将其存储到一个文件中。但是在提供输入并按下回车键后,程序崩溃并提示 product.exe 已停止工作。
这是代码-
#include <stdio.h>
#include <conio.h>
void add_new_product(void);
struct product
{
char P_name;
char P_class;
char P_family;
}P[100];
FILE *fp;
void add_new_product()
{
char ch;
int i=0;
fp=fopen("product.txt","w+");
do
{
clrscr();
printf("\t\t\t Add New Product");
printf("\n User:");
printf("\n\n\n \t\t\t 1.Product Name :");
printf("\n\n \t\t\t 2.Product Class :");
printf("\n\n \t\t\t 3.Product Family :");
gotoxy(44,5);
scanf("%s",&P[i].P_name);
gotoxy(44,7);
scanf("%s",&P[i].P_class);
gotoxy(44,9);
scanf("%s",&P[i].P_family);
fprintf(fp,"%s %s %s %s %s %s",P[i].P_family,"|",P[i].P_class,"|",P [i].P_name,";");
printf("\n \t\t Do you want to add another product?(Y/N) :");
scanf("%s",&ch);
i++;
}while((ch=='Y')||(ch=='y'));
fclose(fp);
}
int main()
{
add_new_product();
getch();
return 0;
}
}
最佳答案
当您从 scanf
读取 string 时,您需要修改您的 structure
如下:
#define MAX_LENGTH 100
struct product
{
char P_name[MAX_LENGTH];
char P_class[MAX_LENGTH];
char P_family[MAX_LENGTH];
}P[100];
关于C程序在最后一次输入后立即崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738785/