C ++ [警告]转换为' char'来自' double' ...但我不是......?

时间:2015-04-28 01:19:26

标签: c++ compiler-errors warnings

我定义了自己的数据结构:

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也失败了。

我觉得我错过了一些非常基本的东西,这让我疯狂。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

如何更改此行:

Data toolToWrite = { accountToModify, nameOfTool[ 30 ], numInStock, pricePer };

Data toolToWrite = { accountToModify, *nameOfTool, numInStock, pricePer };