希望這很容易做到。我正在編寫一個需要在Windows和Linux上運行的程序。在Linux上它工作的很好,但在Windows上(通過Cygwin),它因爲環境變量在路徑中具有反斜槓而不是斜線而被擰緊。有沒有辦法來取代這些?我嘗試了以下內容,但它沒有改變任何東西,可能是因爲它認爲反斜槓正在逃避下一個字符,顯然不是這種情況。以下是我的嘗試:替換反斜槓C
char* fixPath(char *env)
{
char *val[100];
strcpy(val, getenv(env));
int index = 0;
while(val[index])
{
if(val[index] == '\\')
val[index] = '/';
else
index++;
}
printf("\n***%s",val);
return val;
};
int main(int argc, char *argv[])
{
char *test1;
test1 = fixPath("SERVER1");
printf("\n*****%s",test1);
...
}
什麼是正確的方法來做到這一點?
爲什麼不按原樣使用路徑? – dirkgently
反斜槓是轉義字符,當它們出現在源代碼中的字符串文字中時。內存中的字符串中的反斜槓不能用作轉義字符,而用另一個字符替換它們可能無法解決您的問題。 –
也許試試Perl正則表達式? perl -pi -e's/\ // \\/g' 這將直接編輯該文件,因此您可能需要首先對其進行測試。 – squiguy