c - 将文件中的数字扫描到二维数组中
问题描述
我是编程新手,所以如果我搞砸了任何事情,我深表歉意。
所以我试图用多行数字扫描一个文件并将它们放入一个二维数组中。我已经尝试查看与此相关的其他问题,但到目前为止没有任何效果。
所以我尝试使用嵌套循环来扫描数组并将数字放入其中,但似乎没有任何反应。里面的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 只是在输入数组中的数字时读回数字。由于代码是编译但什么也不做。
解决方案
试试这个方法。我认为使用 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();
}
此外,如果要将其输出到文件中,可以在 main 函数中执行以下操作:
int main(void)
{
freopen("out.txt","w",stdout);
barcodeArray();
}
推荐阅读
- python - 字典不适用于 txt 文件中的 DNA 字符串
- spring-boot - 我可以从我的 Gradle 平台定义中提取 Gradle org.springframework.boot 插件的版本吗
- c++ - 确定实例是子类还是基类
- asp.net-core-2.0 - 有没有办法在.net核心的OnModelCreating中的表中使用order by子句
- ruby-on-rails - Rails Google Oauth - Works for some users and not others
- python - 比较组内的行,熊猫
- google-docs-api - 无效的 ReplaceNamedRangeContent 请求
- bash - :- 在 Bash 中的冗余使用?
- python - 有没有一种pythonic方法可以从列表或numpy数组中采样N个连续元素
- linux - bash: ./shelllab2.sh: 没有这样的文件或目录