Имея некоторые проблемы, сравнивающие массивы символов через указатели. Я работаю без библиотеки строк и iostream, хотел бы сохранить ее таким образом.Сравнение указателей (массив символов) в C/C++
char *GetCurrentPath()
{
char buffer[MAX_PATH];
if (!GetModuleFileNameA(NULL, buffer, MAX_PATH)) {
printf("GetModuleFileNameA failed, error: %d\n", GetLastError());
}
return (buffer);
}
char *GetInstallPath()
{
char buffer[MAX_PATH];
if (!SHGetSpecialFolderPathA(NULL, buffer, CSIDL_APPDATA, FALSE)) {
printf("SHGetSpecialFolderPathA failed, error: %d\n", GetLastError());
}
strcat(buffer, "\\service.exe");
return (buffer);
}
char *InstallPath = GetInstallPath();
char *CurrentPath = GetCurrentPath();
if (InstallPath == CurrentPath)......
Оператор if вызывает мгновенный сбой, то же самое относится к strcomp.
Предложения?
Вы не можете безопасно возвращать указатели на локальные переменные. –
Подсказка: эти два указателя * никогда не будут одинаковыми ... Вы используете синтаксис 'string' библиотеки для простых строк' char * '. – usr2564301
Можете ли вы уточнить, на каком языке вы используете - ** либо C, либо C++ **? В вашем заголовке и тегах упоминаются обе, что невозможно (вероятно, поэтому отредактирован тег «C++»). Однако утверждение «без строковой библиотеки и iostream» * сильно * предлагает C++. – usr2564301