您好我正在尝试使用日期信息创建一个独立的char数组,因此我可以稍后使用其他变量对其进行排序。数量和销售工作的数组按需要,但我在第66行收到以下错误(item_date [i] = date;):错误:来自' char *'的无效转换到了' char'。有谁知道我怎么解决这个问题?感谢
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <iomanip>
using namespace std;
#define output_bit 1
struct soldItems{
char date[10];
int idNum;
double quantity;
double sold;
};
int main(int argc, char** argv) {
const int n=1369;
soldItems aItem[n];
char filename[100] = "project.txt";
double *item_quantity=new double[n];
double *item_sold=new double[n];
char *item_date=new char[n];
FILE *fp;
char header[100];
double quantity, sold;
int idNum;
char date[10];
char date_s[10],idNum_s[10], quantity_s[10], sold_s[10];
int i=0;
fp=fopen(filename, "r");
if(!fp)
perror("Double-check your input file");
if(!feof(fp))
{
fscanf(fp, "%s %s %s %s\n", date_s, idNum_s,
quantity_s, sold_s);
}
while(!feof(fp))
{
fscanf(fp, "%s %10d %lf %lf\n",
date, &idNum, &quantity, &sold);
strcpy(aItem[i].date, date);
aItem[i].idNum = idNum;
aItem[i].quantity = quantity;
aItem[i].sold = sold;
item_quantity[i]=quantity;
item_sold[i]=sold;
item_date[i]=date;
i++;
}
fclose(fp);
if (output_bit)
{
cout<<"The item information is written in a structure array: \n"<<endl;
}
return 0;
}
答案 0 :(得分:1)
您的问题是date
的类型为char*
,而item_date[i]
的类型为char
。您正在尝试将字符串加载到字符中,这就是您的错误所在。但是,如果要将item_date
声明为字符串数组,则应将其声明为:
char **item_date = new char*[n];
这将创建一个n
个字符串数组,每个长度为10.如果您需要不同的长度,请将10替换为其他字符串。
另外,由于你是用C ++编程的,我建议你使用C ++字符串,而不是C风格的字符串(字符数组)。
答案 1 :(得分:0)
因此,如果您想保存字符串,则无法执行此操作
item_date[i]=date;
因为在这里你要为char(一个符号,如&#39; a&#39;)分配一个字符串(或char数组)。
您必须将item_date
定义更改为:
char **item_date = new char*[n];
然后在while循环中:
item_date[i] = new char[size]; //size for you is 10
并循环复制从date到item_date [i]
的每个值for(int j = 0; j< size; ++j){
item_date[i][j] = date[j];
}
一切都应该有效。