免责声明:我是一个苦苦挣扎的初学者
我的任务是从输入txt文件中读取整数到2D数组中。当我使用printf的调试/测试我的fscanf没有从文件中读取正确的值。我不明白为什么。
我的代码如下:
void makeArray(int scores[][COLS], FILE *ifp){
int i=0, j=0, num, numrows = 7, numcols = 14;
for(i = 0; i < numrows; ++i){
for(j = 0; j < numcols; ++j){
fscanf(ifp, "%d", &num);
num = scores[i][j];
}
}
}
int main(){
int scoreArray[ROWS][COLS];
int i=0, j=0;
FILE *ifp;
ifp = fopen("scores.txt", "r");
makeArray(scoreArray, ifp);
system("pause");
return 0;
}
您正在将num
(从文件中读取的内容)赋值到数组scores[i][j]
的值中,该数组向后执行。下面的代码将在每个数字之间读取任意数量的空格,直到到达文件末尾。
void makeArray(int scores[][COLS], FILE *ifp) {
int i=0, j=0, num, numrows = 7, numcols = 14, ch;
for (i=0; i < numrows; ++i) {
for (j=0; j < numcols; ++j) {
while (((ch = getc(ifp)) != EOF) && (ch == ' ')) // eat all spaces
if (ch == EOF) break; // end of file -> break
ungetc(ch, ifp);
if (fscanf("%d", &num) != 1) break;
scores[i][j] = num; // store the number
}
}
}
这篇Stack Overflow文章详细介绍了这个问题。
到目前为止,这就是我得到的,但我不太确定接下来该怎么办。我(认为)这里发生的是,它到达数组的第一个位置,在0,0处,并生成一个数字。然后转到1,1和2,2,依此类推。我不确定该从那里开始,我相信有一种更有效的方法可以一次填充整行或整列。 此外,我的编译器不允许我像平时一样使用cout或endl?它坚持我使用std::cout,我只是想知道为什么。
我正在编写一个计算和绘制抛物线的小程序。但我在程序中有一小部分需要计算valuetable。 二次函数如下:
二维数组 #include <stdio.h> #include <stdlib.h> //01.二维数组: // 1.二维数组的内存存储原理: // 所有数组,无论一维数组,二维数组,多维数组,在内存当中的 // 存储实质都是采取的连续存储方式 // 2.二维数组的规律赋值方式: // 先进行行遍历,在进行列遍历,再逐个进行逐个数组元素的具体赋值操作 //
主要内容:创建二维数组,初始化二维数组,获取单个元素,获取全部元素,获取整行元素,获取整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是
对于我的类分配,我们需要编写一个名为Matrix的类,其中包含一个名为“矩阵”的私有二维int数组,最多可以是10行乘10列。我们需要使用两个常量MAXROWS=10和MAXCOLS=10来构造“矩阵”。Matrix类还需要以下属性: 行和列将包含小于等于MAXROWS和MAXCOLS的值。编写一个默认的matrix类构造函数,用以下值构造“Matrix”数组: 构造函数还必须设置行和列变量以匹配
我正在尝试使用fscanf加载一些结构数组的默认值,这看起来像 数据按如下方式存储在文本文件中(使用不同的值重复多次): 我用fscanf/fscanf_s(尝试两者)读取的值如下: 然而,VS2012在最后抛出了一个异常,称列表已损坏。调试显示,在阅读了上述示例文本的前四行后,结构的“map”部分包含以下内容 其中X是未初始化的值。 似乎fscanf正在试图“null terminate”我的整