我是编程新手,所以如果遇到任何麻烦,我深表歉意。
因此,我尝试扫描具有多行数字的文件并将它们放入二维数组中。我尝试查看与此相关的其他问题,但到目前为止没有任何效果。
因此,我尝试使用嵌套循环来扫描数组并将数字放入其中,但似乎什么也没有发生。 txt文件中的内容如下:
0 7 9 4 0 0 8 0 4 5 0 1 0 2 4 0 0 0 1 6 2 8 6 0 0 1 1 1 1 0 8 5 6 8 0 7 0 5 1 0 0 0 1 3 8 1 0 1每12个数字是一个新行。
#include <stdio.h>
#define BUF_SIZE 12
#define ROW 4
#define COL 12
void
barcodeArray(int barcode[ROW][COL])
{
char buffer[BUF_SIZE];
FILE* f = fopen("q5_input.txt","r");
if(f == NULL)
{
printf("no such file.");
}
for(int k = 0; k < ROW; k++)
{
for(int j = 0; j < COL; j++)
{
fscanf(f, "%1d", &barcode[k][j]);
printf("%ls", &barcode[k][j]);
}
}
fclose(f);
}
int
main(void)
{
int barcode[ROW][COL];
barcodeArray;
}
for循环内的printf只是读回数字,因为它在数组中输入了数字。就像代码一样,它可以编译,但是什么也不做。
答案 0 :(得分:1)
您必须使用参数barcodeArray(barcode);
调用函数
Edit:如果不确定数组的大小,可以看看动态分配的变量。这是C编程的重要组成部分
答案 1 :(得分:1)
尝试这种方式。我认为使用freopen()会更容易且无麻烦。它使您可以使用与控制台I / O操作相同的I / O功能。
#include <stdio.h>
#define BUF_SIZE 12
#define ROW 4
#define COL 12
void barcodeArray()
{
int barcode[ROW][COL];//This can be declared inside the function.
char buffer[BUF_SIZE];
FILE* f=freopen("q5_input.txt","r",stdin);
if(f == NULL)
{
printf("no such file.\n");
return;
}
for(int k = 0; k < ROW; k++)
{
for(int j = 0; j < COL; j++)
{
scanf("%d",&barcode[k][j]);
printf("%d ",barcode[k][j]);
}
printf("\n");
}
fclose(f);
}
int main(void)
{
barcodeArray();
}
另外,如果要将其输出到文件中,则可以在主要功能中执行以下操作:
int main(void)
{
freopen("out.txt","w",stdout);
barcodeArray();
}