作为家庭作业的一部分,我需要使用以下格式加载包含数据的文件:
<xsl:for-each-group select="ApplicationItem[contains(@LayoutPath,'Attachments.Package.Attachment')]" group-by="substring-before(substring-after(@LayoutPath, 'Attachments.Package.Attachment['), ']')">
<Attachment>
<xsl:for-each select="current-group()">
<xsl:attribute name="UniqueID" select="current-grouping-key()"/>
<xsl:attribute name="Filename" select=".[contains(@LayoutPath,'Filename')]/@Value"/>
<xsl:attribute name="URI" select=".[contains(@LayoutPath,'URI')]/@Value"/>
</xsl:for-each>
<Attachment>
</xsl:for-each-group>
为此,我使用fgets将字符串存储在临时字符串中,之后使用sscanf格式化字符串,同时逐行遍历文件。
<Package>
<Attachment UniqueID="bfd0b74d-2888-49d9-a986-df807f08ad8a"
Filename=""
URI="https/.test.pdf"/>
<Attachment UniqueID="bfd0b74d-2888-49d9-a986-df807f08ad8b"
Filename=""
URI="google.com"/>
<Package>
当前输出为:
R1 Fre 17/07/2015 18.00 FCN - SDR 0 - 2 3.211
R1 Lor 18/07/2015 16.00 FCM - VFF 2 - 0 7.232
预期输出为:
while(fgets(temp, MAX_LINE_SIZE, input_file)!= NULL) {
sscanf(temp,
" %*s %3s %d / %d / %d %s %3s - %3s %d - %d %6s",
round[i].match[j].weekday,
&round[i].match[j].day,
..... And so on ....
j++;
}
sscanf中带有%s占位符的字符串似乎出于某种原因将它们组合在一起。
所有帮助都非常赞赏。
答案 0 :(得分:1)
您确定要将Fre
之类的字符串存储在4字节字符数组中吗?
%3s
实际读取4个字节。 F
,r
,e
和\0
。如果你使用的数组太小,那么你会覆盖\0
,导致字符串包含内存中的下一个内容(在这种情况下,更多的字符串)。