You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言fscanf读取TXT文档时多词字段被拆分为两行的异常问题

问题解决方案

根本原因

C标准库中fscanf的%s格式化符默认匹配规则为遇到任意空白字符(空格、换行、制表符等)就终止读取。你的代码中用%s匹配最后一个国家字段,当国家名带空格(如North Korea)时,只会将空格前的部分读入drzava字段,空格后的剩余内容会留在文件缓冲区,被下一轮循环读取匹配到第一个字段,最终导致输出错位、内容拆分换行。

修复方案

将Ucitavanje函数中fscanf的最后一个%s替换为%[^\n]即可,%[^\n]的匹配规则是读取所有字符直到遇到换行符为止,可以完整读取行末带空格的国家名字段。
修改后的读取代码行如下:

while (fscanf(sport_medals," %[^|]| %d %s %[^\n]", s.ime_sporta, &s.godina, s.osvojena_medalja, s.drzava) == 4) {

注意事项

请确保结构体中drzava数组的MAXSIZE定义足够大,能够容纳最长的国家名字符串,避免出现缓冲区溢出问题。

内容的提问来源于stack exchange,提问作者Nenad Stakić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:39:02