【问题标题】:Comparing an inputted C-string to a file read C-string将输入的 C 字符串与文件读取的 C 字符串进行比较
【发布时间】:2014-04-12 08:14:20
【问题描述】:

我一生都无法弄清楚为什么这不起作用。这是我的问题函数代码:

int searchDisplay()
{
vector<Client> store;
char nameSearch[SIZE];
string input;
Client foo;
int i = 0;
int k = 0;
bool flag = false;

fstream customer("customer.dat", ios::in | ios::out | ios::binary);


if (!customer)
{
    cout << "Error opening file. Program aborting." << endl;
    return 0;
}

while (!customer.eof())
{
    store.push_back(foo);

    customer.read(reinterpret_cast<char *>(&store[i]),
                sizeof (store[i]));
    i++;
}

cin.ignore();
cout << "User, please enter the full name of the client you wish to search for:        
             ";
getline(cin, input);

strcpy(nameSearch, input.c_str());

if (strcmp(nameSearch, store[0].name))
{
    cout << "FINALLY!" << endl << endl;
}

customer.close();

return 1;
enter code here
}

我的问题是

if (strcmp(nameSearch, store[0].name)) { cout << "FINALLY!" << endl << endl; }

它不会将nameSearchstore[0].name 中的名称进行比较。 我正在使用这种方法,但请注意if (nameSearch == store[0].name) 也不起作用。

如果“Frank Palmasani”通过用户输入存储在nameSearch,而“Frank Palmasani”通过从文件中读取存储在store[0].name,它仍然不会作为=值返回。

我曾尝试使用cin 来获取nameSearch 的输入,但这也很不走运。我似乎无法让它发挥作用。我不确定它是否与二进制有关,因为我使用二进制作为我的读写方法。

我对 c-strings 的练习很少,所以我想知道我是否在这个程序中遗漏了一些重要的东西?

如果您能提供帮助,谢谢!从字面上看,这是唯一阻碍我继续这个项目的事情。

【问题讨论】:

    标签: c++ char compare cstring


    【解决方案1】:

    好的!知道了!好像我错过了 strcmp() 返回 0 如果为真,1 如果为假。所以为了解决这个问题,我这样比较:

    end = strcmp(nameSearch, store[0].name);
    if (end == 0)
    {
        cout << "They are equivalent." << endl;
    }
    

    希望这对遇到类似问题的人有所帮助!

    【讨论】: