gpt4 book ai didi

C 从 FILE* 中读取带空格的格式化行

转载 作者:行者123 更新时间:2023-11-30 21:10:18 24 4
gpt4 key购买 nike

假设我们有 FILE* 类型的流,并且它包含一些 xml 数据。我需要的是解析标签值,但问题是有些值包含空格,例如日期。因此,xml 日期值表示为“ value ”,我需要提取单个字符串或两个单独字符串中的值 - 并不重要。

FILE* stream = readXML();//some generic method that returns FILE*
if(stream!=NULL){
char line[64];
while((fgets(line, sizeof(line), stream))!=NULL){
char date[22];
if(sscanf(line,"<Date>%[^\n]</Date>", date)){
// perform some actions
}else{
printf("Parse failed");
}
}
}

上述代码的问题在于,我获取的值采用以下形式:
2015-05-10 19:20:21.0
 假设 xml 行如下所示: <日期>2015-05-10 19:20:21.0

sscanf 方法格式有什么问题?
谢谢。

最佳答案

您不需要的第一个字符是左尖括号,因此请将其添加到排除列表中[^...]:

if (sscanf(line, "<Date>%[^<]</Date>", date) == 1) ...

最好通过在 % 格式说明符中指定最大宽度,仅允许适合字符缓冲区 date 的日期:

if (sscanf(line, "<Date>%21[^<]</Date>", date) == 1) ...

关于C 从 FILE* 中读取带空格的格式化行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153758/

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