如何将文件每行的第二个单词保存到char中?

时间:2016-04-01 15:25:59

标签: c

我有一个名为" server.cfg"的文件。有了这个内容:

NAME SRV-01
MAC 000543D3F4D8

我想保存" SRV-01"和" 000543D3F4D8"到2 char *。 我做了这样的事情:

FILE *fileS;
char *name;
char *mac;
char *p;

fileS=fopen("server.cfg","r");
while(fgets(line,1000,fileS)!=NULL){
    if(line[0]=="N"){
        p=strtok(line," ");
        p=strtok(NULL," ");
        name=p;
        printf("Name: %s\n",name);
    }
    if(line[0]=="M"){
        p=strtok(line," ");
        p=strtok(NULL," ");
        mac=p;
        printf("Name: %s Mac: %s\n",name,mac);
    }

输出结果为:

Name: SRV-01
Name: 000543D3F4D8 Mac: 000543D3F4D8

但我想要这个输出:

Name: SRV-01
Name: SRV-01 Mac: 000543D3F4D8

我知道这个问题与指针有关,但我不知道如何解决它。有什么建议吗?

由于

1 个答案:

答案 0 :(得分:1)

您必须使用内存管理; strtok()返回一个指向输入字符串(line)的指针,当然将被每个连续的fgets()替换。

如果你拥有它,你可以使用strdup()复制字符串并存储它,或者只使用数组而不是指针和strcpy()文本。

此外,由于您可以确定您的专线不会以 'n''m'开头,因此第二个if应为{ {1}}。你对大/小写的处理似乎也很可疑(else if'不等于'n)。