我定义了自己的数据结构:
struct Data
{
int partNumber;
char nameOfTool[ 30 ];
int numInStock;
double pricePer;
};
我有这个功能给我带来了问题:
void inputOrUpdate(fstream &toolsFile)
{
int accountToModify;
char nameOfTool[ 30 ];
int numInStock;
double pricePer;
printf( "Enter record number ( 1 to 100, 0 to return to main menu )" );
scanf( "%d", &accountToModify );
if ( accountToModify > 0 && accountToModify <= 100 )
{
printf( "Enter tool name, quantity, cost" );
scanf( "%29s %d %d", nameOfTool, numInStock, pricePer );
Data toolToWrite = { accountToModify, nameOfTool[ 30 ], numInStock, pricePer };
toolsFile.seekg((accountToModify - 1) * sizeof(toolsFile));
toolsFile.write((char *)&toolToWrite, sizeof(toolsFile));
}
else
{
printf( "Invalid record number provided." );
}
printf( "\n\n" );
}
具体来说,这一行:
Data toolToWrite = { accountToModify, nameOfTool[ 30 ], numInStock, pricePer };
出现此错误:
[Warning] converting to `char' from `double'
但这对我没有任何意义; &#34;数据&#34;应该是int,一个字符串,int,double,而scanf行应该捕获一串字符,一个int和一个double,以及我汇编toolToWrite应该期待的行和整数,一个字符串,一个整数和一个双...如果我在scanf行中指定%29s,我不明白它认为我将double转换为char的位置;只是%s也失败了。
我觉得我错过了一些非常基本的东西,这让我疯狂。有什么想法吗?
答案 0 :(得分:4)
如何更改此行:
Data toolToWrite = { accountToModify, nameOfTool[ 30 ], numInStock, pricePer };
到
Data toolToWrite = { accountToModify, *nameOfTool, numInStock, pricePer };