我对编码界还很陌生,所以我似乎无法理解这个错误。我正在创建一个产品管理程序,在该程序中,您可以输入产品详细信息并将数据放在文件中,然后通过cmd从文件中查看,但每当我使用fprintf
或fputs
时,就会不断出现此错误。
我的代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
struct product{
string Id,Name,Brand;
int type, price, quan;
product *next;
};
int main(){
product *a,*b,*c,*d,*e,*f;
a = new product;
b = new product;
c = new product;
d = new product;
e = new product;
f = new product;
FILE *productRecord;
productRecord = fopen("Product Record","r");
int choice;
cout << "nProduct Recordn1)Add Productn2)Update Product Detailsn3)Delete Productn4)View Product By Brand or Typen5)ExitnnEnter Choice: ";
cin >> choice;
if(choice == 1){
char tempId[11],tempName[60],tempBrand[60];
int temp_type, temp_price, temp_quan;
productRecord = fopen("Product Record","a");
cout << "Enter Product ID No.(Maximum of 10 Digits): ";
cin >> tempId;
a -> Id = tempId;
a -> next = b;
cout << "Enter Product Name(No Special Character): ";
cin >> tempName;
b -> Name = tempName;
b -> next = c;
cout << "Types:Canned(1),Frozen(2),Drinks(3),Produce(4),Meat/Seafood(5),Cleaning(6)nEnter Product Type(1-6): ";
cin >> temp_type;
c -> type = temp_type;
c -> next = d;
cout << "Enter Product Brand(No spaces): ";
cin >> tempBrand;
d -> Brand = tempBrand;
d -> next = e;
cout << "Enter Product Price: ";
cin >> temp_price;
e -> price = temp_price;
e -> next = f;
cout << "Enter Product Quantity: ";
cin >> temp_quan;
f -> quan = temp_quan;
f -> next = NULL;
fprintf(productRecord, "%s", a -> Id); //this is the error
fclose(productRecord);
}
else if(choice == 2){
}
else if(choice == 3){
}
else if(choice == 4){
}
else if(choice == 5){
}
return 0;
}
错误消息非常清楚。不能将string
与fprintf
一起使用。
fprintf(productRecord, "%s", a -> Id);
需要更改为
fprintf(productRecord, "%s", a->Id.c_str());
或者,更好的是,不要混合使用C和C++,而是使用ofstream