C++ strcmp比较错误
所以我运行这段代码来打开一个文件,并将本地字符与文件中存储的值进行比较,但出于某种奇怪的原因,strcmp告诉我“15”等于“17”。。有什么想法吗?这很奇怪,因为问题只发生在第17行。。以下是相关代码:C++ strcmp比较错误,c++,strcmp,C++,Strcmp,所以我运行这段代码来打开一个文件,并将本地字符与文件中存储的值进行比较,但出于某种奇怪的原因,strcmp告诉我“15”等于“17”。。有什么想法吗?这很奇怪,因为问题只发生在第17行。。以下是相关代码: ... string line; size_t found; size_t nextFound; char ID[11]; char storage_ID[11] = "15"; //Open the file ifstream file(FILE); if (file.is_open(
...
string line;
size_t found;
size_t nextFound;
char ID[11];
char storage_ID[11] = "15";
//Open the file
ifstream file(FILE);
if (file.is_open())
{
for (int count = 0; count < 25; count++)
{
getline(file,line);
if (file.eof())
{
return;
}
//store object ID
found = line.find(":");
strcpy(ID[count],line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found
if(strcmp(storage_ID,ID[count])==0)
{
foundID = true;
}
else
{
foundID = false;
}
谢谢你的帮助 代码中有错误,您正在声明
charid[11]代码>一个11个字符的数组,在循环中,count从0到25分配给ID[count](当count为12时,您从文件中读取12个ID,您将写入无效的内存ID[12-?])
代码应为:
char ID[11];
...
strcpy(ID,line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found
假设代码中没有大小大于11的ID,将字符串与单个字符进行比较。与上面行中的strcpy
调用相同。您还可以将strcpy
转换为char
。是不是代码是字符串数组?为什么在C++程序中使用C样式字符串,在这里你已经使用C++的代码> STD::String 类,用于一些变量?@ JoaHixIbRiBrg:这不仅仅是未定义的行为。code>strcmp
需要两个char*
参数;正在传递的第二个参数,ID[count]
的类型为char
。这甚至不应该编译——任何符合条件的编译器都必须至少对此发出警告。您“忘记提到”了ID
是2D数组吗?您发布的代码具有charid[11]代码>。始终复制并粘贴您实际编译的代码:谢谢@NetVipeC-我输入了有关ID数组的错误信息,但您抓住了要点。谢谢
char ID[11];
...
strcpy(ID,line.substr(0,found).c_str()); //stores ID from the start of a line until a ":" is found