ポインタによるchar配列の比較に問題があります。私は文字列ライブラリとiostreamの両方を使わずに作業しています。そのようにしたいと思います。C/C++でのポインタ(char配列)の比較
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になります。
提案?
ローカル変数へのポインタを安全に返すことはできません。 –
ヒント:これらの2つの*ポインタ*は決して同じではありません...プレーンな 'char *'文字列のライブラリ 'string'構文を使用しています。 – usr2564301
あなたはどの言語を使用しているかを明確にすることができますか?** CまたはC++ **?あなたのタイトルとタグはどちらも言えませんが、これは不可能です(これは恐らくタグ "C++"が編集された理由です)。しかし、「文字列ライブラリとiostreamを使用しない」*というステートメントは、C++を推奨しています。 – usr2564301