古いアプリケーションを更新する必要があります。ここで、 "Type"は2番目から4番目の文字に基づいて動的に設定する必要があります。ファイル名:Windows上で完璧に動作しますが、Cygwinのでセグメンテーションフォールトを与えるコード以下 私はすぐにハッキング:strcat 3 charからcharへのchar *はWindows上で動作しますが、Cygwinではセグメンテーションフォールトを返します
INT32 Engine::Run(...)
{
Type = new char[4];
strcpy(Type,"");
char FileName[50];
char *pscL;
char Unit[4];
strcpy(Unit,"");
pscL=strrchr(File1,'\\');
char *ps = pscL;
ps++;
ps++;
memcpy(Unit,ps,3);
Unit[3]=0;
if (strcmp(Unit, "AAA") == 0)
{
strcpy(Unit,"AAA");
}
else if (strcmp(Unit, "BBB") == 0)
{
strcpy(Unit,"CCC");
}
else
{
strcpy(Unit,"BBB");
}
strcat(Type,Unit);
printf("Type: %s \n",Type);
...
//furtherdown Type is used in eg.:
if (strcmp(Type, "HCU") == 0)
...
if (!GetFile(calRet,Anal,pC,fcN,Type)) return -1;
...
: は、「タイプ」の第一は、コード
private:
CHAR* Type;
としてXHに定義されていますFile1は、 "D:\ tmp \ testing \ yada \ XBBBYYYY123YYY.ZZZ "
strcat(タイプ、ユニット);セグメンテーション違反が発生します。私は「タイプ」のタイプを変更したくないのですが、これは場所のいたるところで使用されているため、触れたくないコードです。 私はcygwinのインストール(終了時に実行する必要がある)でデバッグすることができないので、Windows上で動作するのは難しいです。
パスはcygwinとWindowsで同じスラッシュを使用していますか? –
std :: stringを使用し、str *関数を使用しないでください。 –
このコードは非常に壊れやすく見えます。 –