2012-11-03 26 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