如何将文件每行的第二个单词保存为字符



我有一个名为"server.cfg"的文件,内容如下:

NAME SRV-01
MAC 000543D3F4D8

我想将"SRV-01"one_answers"000543D3F4D8"保存为2个字符*。我做了这样的事:

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: %sn",name);
    }
    if(line[0]=="M"){
        p=strtok(line," ");
        p=strtok(NULL," ");
        mac=p;
        printf("Name: %s Mac: %sn",name,mac);
    }

输出为:

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

但我想要这个输出:

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

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

感谢

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

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

此外,由于您可以非常确定您的行不会同时以'n''m'开头,因此第二个if应该是else if。你对大写/小写的处理似乎也很可疑('n'不等于'N')。

相关内容

最新更新