我有一个名为"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'
)。