Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将文件每行的第二个字保存到一个字符中?_C - Fatal编程技术网

C 如何将文件每行的第二个字保存到一个字符中?

C 如何将文件每行的第二个字保存到一个字符中?,c,C,我有一个名为“server.cfg”的文件,其中包含以下内容: NAME SRV-01 MAC 000543D3F4D8 我想将“SRV-01”和“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"){

我有一个名为“server.cfg”的文件,其中包含以下内容:

NAME SRV-01
MAC 000543D3F4D8
我想将“SRV-01”和“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: %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
我知道问题与指针有关,但我不知道如何解决它。有什么建议吗


谢谢

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

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

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