gpt4 book ai didi

c - 如何将文件每一行的第二个单词保存到一个字符中?

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:19 26 4
gpt4 key购买 nike

我有一个名为“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

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

谢谢

最佳答案

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

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

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

关于c - 如何将文件每一行的第二个单词保存到一个字符中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36360133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com