C++ C+中的strcmp+;不起作用
为什么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
#包括
#包括
#包括
#包括
使用名称空间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);
...