gpt4 book ai didi

C Linux fscanf 没有读取所有行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:26 25 4
gpt4 key购买 nike

我正在使用其他人编写的一些代码来扫描配置文件中的键值字符串对。代码是:

void readProfile(char * profileName) {
FILE *f;
int i=0;
f = fopen(profileName, "r");
if (NULL != f) {
while (fscanf(f, "%s%s", &pvtProperties[i].key[0],
&pvtProperties[i].value[0]) == 2) {
i++;
}
fclose(f);
}
numberOfProperties = i;
setCurrentProfileName(profileName);
}

然而,当阅读下面这个明文配置文件时,第 4 行有问题:值被截断为“https://dev.xxxx.com:58443/services/PvtTransferSer”。配置文件的每一行以\r\n分隔。从那时起,读取文件的其余部分就乱七八糟,值变成键等。为什么会这样?键和值是每个 80 个字符的字符数组。

配置文件:

PASSWORD xxxxREMOTE_UPDATES_ENABLE 1REMOTE_DIAGNOSTICS_ENABLE 1PVT_TRANSFER_WS_ADDRESS https://www.xxxx.com:58443/services/PvtTransferServicePVT_DIAGNOSTIC_WS_ADDRESS https://www.xxxx.com:58443/services/PvtDiagnosticServicePVT_UPDATE_WS_ADDRESS https://www.xxxx.com:58443/services/PvtUpdateServicePVT_ADJUSTMENT_WS_ADDRESS https://www.xxxx.com:58443/services/PvtAdjustmentServiceDAILY_RESTART_ENABLE  1HOUR_PAST_MIDNIGHT_FOR_RESTART 7MAX_RESTART_RANDOMIZATION_SECONDS 30MINIMUM_UPTIME_SECONDS_BETWEEN_RESTARTS 7200CLEAR_CACHE_ON_RESTART_ENABLE 0MINIMUM_SECONDS_BETWEEN_REMOTE_UPDATE_CHECKS 3600SECONDS_BETWEEN_CONTROLLER_CONFIGURATION_CHECKS 300CONNECTIVITY_LOSS_DETECTION_ENABLE 1SMART_COMM_ENABLE 1TIME_SYNC_ENABLE 1FACTORY_RESET_ENABLE 1CM_POLL_PROTOCOL http

最佳答案

您可以通过使用 fgets 从文件中一次拉入一行来解决相位问题;然后 sscanf 为每条记录解析该行缓冲区。

关于C Linux fscanf 没有读取所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887663/

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