2012-11-03 1 views
1

아래 코드와 내가 얻는 결과를 찾으십시오.getmac 프로그램에서 C 언어로 오류를 제거하는 방법은 무엇입니까?

내 C 코드는 c:/turboc3/bin 디렉토리 이고 출력은 은 c:/turboc3/disk입니다. 여기

내가 컴파일하고있는 코드입니다

#include <stdio.h> 
#include <conio.h> 
#include <string.h> 

int main() 
{ 
    //char mac[200]; 
    FILE *fp; 
    clrscr(); 
    // fp=fopen("c:\macid.txt","w"); 
    system("GETMAC>c:/macid.txt"); 
    fp=fopen("c:/macid.txt","r"); 
    if(fp!=NULL) 
    { 
     char line[128]; 
     while(fgets(line,sizeof line,fp)!=NULL) 
     { 
      char *nwln=strchr(line,'\n'); 
      char *ptr; 
      if(nwln!=NULL) 
       *nwln='\0'; 
      ptr=strstr(line,"Physical Address"); 
      if(ptr!=NULL) 
      { 
       printf("%s\n",ptr); 
       break; 
      } 
     } 
    } 
    getch(); 
    return 0; 
} 

출력은 다음과 같습니다

Illegal command: GETMAC. 

는 사람이를 통해 나를 인도 할 수 있습니까?

+2

프로그램이'GETMAC.EXE'이라는 것을 촉구했습니다. 그 이름의 실행 파일이 있습니까? –

+0

합법적 인 명령을 사용 하시겠습니까? 당신이 무엇을하려고하는지 잘 모르겠다. – WhozCraig

+0

사람들이 구조를 볼 수 있도록 코드를 정렬해야한다. 당신의 코드는 @WhozCraig가 당신과 우리를 위해 그것을 고칠 때까지는 그렇습니다. 그러나 정렬되어있어서 구조를 숨 깁니다. –

답변

0

잘못된 명령 : GETMAC은 실행을 시도하지만 실행할 수 없음을 의미합니다.

먼저 해결해야 할 사항 : 문자열 내부에서 이스케이프해야 함을 기억하십시오. /를 경로 구분 기호로 사용하지 마십시오.

다음은 시도 할 항목 대략적인 순서 : GETMAC의 전체 경로를 사용해보십시오. 리디렉션없이 시도하십시오. 다른 프로그램을 사용해보십시오. 리디렉션을 수행하는 박쥐 파일에 GETMAC을 묶습니다.

+0

경로 구분 기호로 /를 사용하지 않는 이유는 무엇입니까? –

+0

글쎄, 운영 체제에 따라 다르지만 Windows에서 system() 기능을 사용하면 거의 작동하지 않을 것이라고 확신합니다. Windows/DOS 경로 구분 기호는 \입니다. – hyde

+0

Windows의 API 레벨에서,'/'와''\''는 파일명을 서로 바꿀 수 있습니다. 'system()'에 의해 사용되는 인터프리터가'CMD.EXE'이라면, 그것은 옵션의 시작을 나타 내기 위해'/'를 사용하고 파일 이름에''\''만을 허용합니다. –

0

어떻게 파일 macid.txt가 c:/turboc3/disk에 있는지 잘 모르겠습니다.하지만 system() 함수 호출에 대한 전체 경로를 제공하여이 문제를 해결할 수 있다고 생각합니다. 이 같은

:

system("c:/windows/system32/getmac.exe > macid.txt");

+0

무엇이 문제인지 모르시겠습니까 ?? 나는 가능한 모든 명령으로 시도했다. 나는/슬래시뿐만 아니라 forwared 슬래시로 시도했다. 나는 ipconfig/all 명령으로 시도했지만 avail.every 때까지 출력을 얻지 못한다.ipconfig/all 명령은 명령 프롬프트에서 제대로 작동합니다. getmac도 명령 프롬프트 창에서 적절한 결과를 제공합니다. 친구가 도와주세요. 나는 붙어있다. 내가 전체 경로를 제공하면 잘못된 명령 인 cwindowssystem32getmac.exe가 표시됩니다 (출력에 슬래시 또는 백 슬래시가 없습니다). – friend

+0

@friend은 데모를 볼 수 있습니까? 코드 및 실행 결과의 비디오? 나는 너를 도울 수 있을지도 모른다 –

+0

나는 스크린의 영상을 찍는 방법을 모른다. 나는 그물에 그 때 너를 알릴 것이다 그것을 찾을 것이다. 내가 실제로 달성하고자하는 것은 내가 맥 주소를 찾고 그것을 텍스트 파일에 쓰고 그 텍스트 파일에서 읽고 윈도우 플랫폼의 화면에 그것을 인쇄하고 싶다는 것이다. 이 코딩을 도와 주시면 매우 감사하겠습니다. 몇몇 방법이 온라인으로 목록으로 만들어지다 그러나 나의 한정된 지식 때문에 나는 나의 프로그램에서 그 개념을 적용 할 수 없었다. – friend

관련 문제