2012-11-03 47 views
1

請在下面找到我所得到的代碼和輸出。如何清除C語言中getmac程序中的錯誤?

我的C代碼是在c:/turboc3/bin目錄 和我的輸出macid.txt是在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包裝到bat文件中,進行重定向。

+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 /所有命令也無濟於事。每次我得到輸出作爲非法命令。ipconfig/all命令在命令提示符下工作正常,即使getmac也會在命令提示符窗口中給出適當的結果......朋友請幫忙。我被卡住了。當我給完整路徑顯示非法命令cwindowssystem32getmac.exe(請注意在輸出中沒有正斜槓或反斜槓) – friend

+0

@friend我可以看到一個演示 - 你的代碼視頻和執行輸出嗎?我可能能夠幫你然後 –

+0

我不知道如何拍攝屏幕的視頻。我會在網上搜索它然後會讓你知道。我真正想要實現的是我想查找MAC地址並將其寫入文本文件,然後從該文本文件中讀取並在Windows平臺的屏幕上打印。如果你能幫我編碼,我將非常感激。網上列出了幾種方法,但由於我的知識有限,我無法在編程中應用這些概念。 – friend