gpt4 book ai didi

c - 如何从文本文件中读取二进制数据并将其存储在 C 中的二维数组中

转载 作者:行者123 更新时间:2023-11-30 15:05:04 30 4
gpt4 key购买 nike

我有一个文本文件 (H.txt),如下所示:

1 0 1 1 0 1
0 0 1 1 0 0
0 0 0 1 0 0
1 1 1 0 0 0

我需要将此文本文件读入名为 H 的二维数组。文本文件的大小可以在长度和宽度上发生变化(即,可以有比上面示例更多的行和更多的二进制数据列) .

这是我到目前为止所拥有的:

#import <stdio.h>

int main()
{

int m = 4;
int n = 6;
int H[m][n];

FILE *ptr_file;
char buf[1000];

ptr_file = fopen("H.txt", "r");
if (!ptr_file)
return 1;

fscanf(ptr_file,"%d",H);

fclose(ptr_file);
return 0;
}

如有任何帮助,我们将不胜感激。

最佳答案

像这样

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int getRows(FILE *fp){
int ch, rows = 0, notTop = 0;
while((ch = getc(fp))!= EOF){
if(ch == '\n'){
++rows;
notTop = 0;
} else
notTop = 1;
}
if(notTop)
++rows;
rewind(fp);
return rows;
}

int getCols(FILE *fp){
int ch, cols = 0, preSpace = 1;
while((ch = getc(fp))!= EOF && ch != '\n'){
if(isspace(ch)){
preSpace = 1;
} else {
if(preSpace)
++cols;
preSpace = 0;
}
}
rewind(fp);
return cols;
}

int main(void){
int rows, cols;
FILE *fp = fopen("H.txt", "r");
if (!fp){
perror("can't open H.txt\n");
return EXIT_FAILURE;
}
rows = getRows(fp);
cols = getCols(fp);
int (*H)[cols] = malloc(sizeof(int[rows][cols]));
if(!H){
perror("fail malloc\n");
exit(EXIT_FAILURE);
}
for(int r = 0; r < rows; ++r){
for(int c = 0; c < cols; ++c){
if(EOF==fscanf(fp, "%d", &H[r][c])){
fprintf(stderr, "The data is insufficient.\n");
free(H);
exit(EXIT_FAILURE);
}
}
}
fclose(fp);
//test print
for(int r = 0; r < rows; ++r){
for(int c = 0; c < cols; ++c){
printf("%d ", H[r][c]);
}
puts("");
}

free(H);
return 0;
}

关于c - 如何从文本文件中读取二进制数据并将其存储在 C 中的二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40024356/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com