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