제목이 내 문제를 올바르게 해결하는지 알 수 없습니다. 그래서 나는 그걸로 갈 것입니다. 여기에 문제가 있습니다. 예를 들어 많은 백 슬래시가 포함 된 파일 경로 (Windows)의 char 배열을 입력해야합니다. "C : \ myfile.txt"를 반환하고 C 스타일 파일 경로의 부호없는 char 배열을 반환합니다. "C : \ myfile.txt".백 슬래시 문자를 이스케이프하지 않게 만드는 방법
나는 함수를 작성하려고 시도했다. 나는이 발생하고 (나를 위해)
unsigned char* parse_file_path(char *path);
{
unsigned char p[60];
int i,j;
int len = strlen(path);
for(i=0,j=0; i<len; i++, j++)
{
char ch = path[i];
if(ch==27)
{
p[j++]='\\';
p[j]='\\';
}
else
p[j] = path[i];
}
p[j]='\0';
return p;
}
이상한 것은 여기에 경로가 하나의 백 슬래시를 포함입니다 '\'. 하나의 백 슬래시를 얻으려면 경로에 '\'를 써야합니다. 이것은 불가능합니다. 경로에 '\'을 포함 할 수 없습니다. 이것을 parse_file_path("t\es\t \it)
과 같이 호출하면 t←s it
을 반환합니다. 그러나 parse_file_path("t\\es\\t \\it")
은 t\es\t \it
을 반환합니다.
내 작업을 어떻게 수행 할 수 있습니까? 미리 감사드립니다.
C 언어 사양에서는 리터럴 문자열에서 단일 백 슬래시를 얻으려면 이스케이프 처리해야한다고 명시합니다. –
실제 이스케이프 (ASCII 27)로 이스케이프 처리되는 입력의 백 슬래시가 예상되는 것처럼 보입니다. – unwind
@JoachimPileborg 문자열에 이미 이스케이프 처리 된 백 슬래시가 있습니다. 각각의 백 슬래시를 두 번 어떻게 만들 수 있습니까? – muntasir2000