【发布时间】:2014-03-07 23:40:31
【问题描述】:
提前感谢您的帮助。我在使用 sscanf 扫描 txt 中的某些值时遇到问题,在这里找不到类似的内容。这就是我正在阅读的 txt 的样子:
1 NAME 211.505 42.63
2 NAME 335.475 42.63
3 NAME 449.645 42.63
4 NAME 512.435 42.63
这是导致问题的部分:
double contacts[N-1][1];
i = 0;
while(fgets(cLine,100,inFile) != NULL) {
sscanf(cLine,"%d %s %lf %lf",
&cNum[i],
cVarName[i],
&contacts[i][0],
&contacts[i][1]);
i++;
}
每一步都运行良好,但似乎在 i 处,sscanf 替换了 i-1 值。
这可能是我没有注意到的愚蠢的事情,如果是这样的话,对不起。
感谢您的帮助。
【问题讨论】:
-
i是如何初始化的?这些变量的类型是什么?当文件有更多行时,如何防止代码索引数组的末尾?为什么cVarName也没有被i索引? -
我初始化为 0,只有联系人数组很重要,我通过自己设置 txt 文件并确切知道行数来防止这种情况(但我还添加了一个 if 和 break 在某一点,即不是问题)。
-
您知道 C 和 C++ 中的数组是从 0..n-1 开始索引的,而不是 1..n,对吧?第 1 行将进入数组 [0]。如果 sscanf “替换 i-1 值”并且它被初始化为 0,你是说第一行被读入 -1 索引??
-
我愿意,谢谢您的回答。关键是在第 i 步,它加载第 i 个值,但也更改了 i-1 先前定义的 values.d。我删除了我用来保存数组的 fprintfs,这让我可以推断出来。
-
第 1 行进入 array[0],同时 array[-1] 得到 0。第 2 行进入 array[1],同时 array[2][0]进入array[1][1]等。(按这个顺序,不知道为什么)。
标签: c arrays multidimensional-array scanf