C++ C+中的strcmp+;不起作用

C++ C+中的strcmp+;不起作用,c++,strcmp,C++,Strcmp,为什么strcmp()函数在以下代码摘录中不起作用 (程序从另一个文件读取数据) #包括 #包括 #包括 #包括 使用名称空间std; 肖科拉德结构 { 字符名[20]; 国际gewicht; int zutat_id[5]; int menge_in_prozent[5]; }; 结构zutat { 字符名[20]; 浮点数为100克; }; int main() { 字符数据[20]; schokolade-schokosorten[3]; 祖塔祖塔坦[7]; 流鳍; 财务公开(“schok

为什么strcmp()函数在以下代码摘录中不起作用 (程序从另一个文件读取数据)

#包括
#包括
#包括
#包括
使用名称空间std;
肖科拉德结构
{
字符名[20];
国际gewicht;
int zutat_id[5];
int menge_in_prozent[5];
};
结构zutat
{
字符名[20];
浮点数为100克;
};
int main()
{
字符数据[20];
schokolade-schokosorten[3];
祖塔祖塔坦[7];
流鳍;
财务公开(“schoki.txt”);
//检查错误:
if(fin.fail()){

是否有错误?请提供输出使用调试器逐步检查代码并查看
数据
的值。我打赌它不是vollmilch_mandel。@在比较之前/之后绘制或至少打印出数据内容。在缓冲区中留出空终止符的空间,我的意思是将其声明为数据,而不是char数据[20][21]。我现在不知道这是否是问题的原因。输入行可能包含前导空格或尾随空格。请尝试打印长度。
#include <iostream>
#include <fstream>
#include <cstring>
#include <iomanip>

using namespace std;

struct schokolade
{
    char name[20];
    int gewicht;
    int zutat_id[5];
    int menge_in_prozent[5];
};

struct zutat
{
    char name[20];
    float preis_pro_100gramm;
};


int main()
{
    char data[20];
    schokolade schokosorten[3];
    zutat zutaten[7];

    ifstream fin;
    fin.open("schoki.txt");
    //Check for error:
    if(fin.fail()){
        cout << "Datei schoki.txt konnte nicht geöffnet werden." << endl;
        return 0;
    }

    int anzahl;
    char name_zutat[20];
    int anteil;

    while(fin.getline(data,20)){

        if(strcmp(data, "vollmilch_mandel")==0){ //DOES NOT WORK!
            strcpy(schokosorten[0].name, data); 
            ...