>  기사  >  백엔드 개발  >  C \의 `system()` 함수를 사용할 때 매개변수의 공백을 처리하는 방법은 무엇입니까?

C \의 `system()` 함수를 사용할 때 매개변수의 공백을 처리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 15:27:26686검색

How to Handle Spaces in Parameters When Using C  's `system()` Function?

C system() 매개변수에 공백이 있는 함수 오류

문제 설명

C에서 system() 함수를 사용하여 실행 파일을 실행할 때 매개변수로 전달된 파일의 경로와 실행파일 경로에 모두 공백이 있으면 오류가 발생합니다. 오류 메시지는 다음과 같습니다.

The filename, directory name, or volume label syntax is incorrect.

설명

system() 함수는 시스템 명령을 Windows 명령 프로세서(cmd)에 전달하여 실행합니다. 명령에 공백이 포함되어 있으면 명령 프로세서는 첫 번째와 마지막 큰따옴표 사이의 모든 내용을 단일 인수로 해석합니다. 그러나 이 경우 실행 파일 경로 주변의 큰따옴표와 매개변수 파일 경로 주변의 큰따옴표로 인해 충돌이 발생합니다.

해결책

이 문제를 해결하려면 이중 인용부호 세트를 추가로 사용하세요. 전체 명령을 묶으려면 따옴표를 추가해야 합니다. 이런 방식으로 명령 프로세서는 공백 및 기타 큰따옴표가 포함되어 있어도 가장 바깥쪽 큰따옴표 내의 모든 내용을 단일 인수로 처리합니다.

<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>

추가 참고 사항

  • cmd /S /C 플래그를 system() 함수 호출에 추가하면 문자열이 항상 큰따옴표가 인수의 일부로 처리되는 사례 2 시나리오로 구문 분석되도록 할 수 있습니다.
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</code>
  • 이 인용 메커니즘을 사용하면 실행 파일과 매개변수 경로 모두의 공백으로 인해 발생하는 오류를 극복할 수 있습니다.

위 내용은 C \의 `system()` 함수를 사용할 때 매개변수의 공백을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.