C语言,文件加载到2D数组中
我被困在从文本文件加载字母到2D数组中 我的代码如下C语言,文件加载到2D数组中,c,C,我被困在从文本文件加载字母到2D数组中 我的代码如下 #include <stdio.h> int main() { int i, j, a, b; char c; char f, filename[100]; char match[i][j]; FILE *fp; fp = fopen(filename, "r"); for (a = 0; a < i; a++) { for (b = 0; b &l
#include <stdio.h>
int main() {
int i, j, a, b;
char c;
char f, filename[100];
char match[i][j];
FILE *fp;
fp = fopen(filename, "r");
for (a = 0; a < i; a++) {
for (b = 0; b < j; b++) {
match[i][j] = '.';
}
}
while ((c = fgetc(fp)) != EOF) {
for (a = 0; a < i; a++) {
for (b = 0; b < j; b++)
if ((c != '\n') && (c != '\r'))
match[a][b] = c;
}
}
for (a = 0; a < i; a++) {
for (b = 0; b < j; b++)
printf("%c", match[a][b]);
printf("\n");
}
return 0;
}
#包括
int main(){
int i,j,a,b;
字符c;
字符f,文件名[100];
字符匹配[i][j];
文件*fp;
fp=fopen(文件名,“r”);
对于(a=0;a
文本文件包含如下字母:AAAAA\nBBBBB\ncccc\nDDDDD\neeef\n
我想将文本文件加载到完全相同的程序中,但它只显示结果
比如:
FFFFF\nFFFFF\nFFFFF\nFFFFF\nFFFFF\nFFFFF\n
你能告诉我哪里出了问题吗
char match[i][j]
这会导致编译错误,无法使用常量定义数组scanf(“%d%d%s”,&i,&j,&filename)
此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要&
“c:/documents/filename.txt”
char match[i][j]
这会导致编译错误,无法使用常量定义数组scanf(“%d%d%s”,&i,&j,&filename)
此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要&
“c:/documents/filename.txt”
char match[i][j]
这会导致编译错误,无法使用常量定义数组scanf(“%d%d%s”,&i,&j,&filename)
此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要&
“c:/documents/filename.txt”
char match[i][j]
这会导致编译错误,无法使用常量定义数组scanf(“%d%d%s”,&i,&j,&filename)
此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要&
“c:/documents/filename.txt”
正如Ahmed所说,在显示的代码中,您永远不会初始化i、j和文件名 假设您这样做(使用您的输入,我假设I=5,j=5),您首先将所有
匹配数组初始化为
:确定
然后逐个字符读取文件,控制它是否与“\n”和\r
不同。让我们看看最后一个单词的最后一个字符发生了什么,这是一个F
。在完整数组上循环(a在[0;i[,b在[0;j[),如果字符既不是\r
,也不是\n
(它不是)则影响它匹配[i,j]
for (a = 0; a < i; a++) {
for (b = 0; b < j; b++)
if ((c != '\n') && (c != '\r'))
match[a][b] = c;
}
这应该足以修复当前的错误,但无论如何,一般的程序组织是不好的。如果您是初学者,请以伪代码的形式编写编码之前应该发生的事情。在算法和结构良好之前,代码将是不好的…正如Ahmed所说,您永远不会在显示的代码中初始化i、j和文件名
假设您这样做(使用您的输入,我假设I=5,j=5),您首先将所有匹配数组初始化为
:确定
然后逐个字符读取文件,控制它与“\n”和\r
不同。让我们看看最后一个单词的最后一个字符发生了什么,这是F
。您在完整数组上循环(a在[0;i[,b在[0;j[),如果字符既不是\r
,也不是\n
(不是这样)您影响它以匹配[i,j]
for (a = 0; a < i; a++) {
for (b = 0; b < j; b++)
if ((c != '\n') && (c != '\r'))
match[a][b] = c;
}
这应该足以修复当前的错误,但无论如何,一般的程序组织是不好的。如果您是初学者,请以伪代码的形式编写编码之前应该发生的事情。在算法和结构良好之前,代码将是不好的…正如Ahmed所说,您永远不会在显示的代码中初始化i、j和文件名
假设您这样做(使用您的输入,我假设I=5,j=5),您首先将所有匹配数组初始化为
:确定
然后逐个字符读取文件,控制它与“\n”和\r
不同。让我们看看最后一个单词的最后一个字符发生了什么,这是F
。您在完整数组上循环(a在[0;i[,b在[0;j[),如果字符既不是\r
,也不是\n
(不是这样)您影响它以匹配[i,j]
for (a = 0; a < i; a++) {
for (b = 0; b < j; b++)
if ((c != '\n') && (c != '\r'))
match[a][b] = c;
}
这应该足以修复当前的错误,但无论如何,一般的程序组织是不好的。如果您是初学者,请以伪代码的形式编写编码之前应该发生的事情。在算法和结构良好之前,代码将是不好的…正如Ahmed所说,您永远不会在显示的代码中初始化i、j和文件名
假设您这样做(使用您的输入,我假设I=5,j=5),您首先将所有匹配数组初始化为
:确定
然后逐个字符读取文件,并控制它是否与“\n”和\r
不同。让我们看看最后一个单词的最后一个字符发生了什么,这是F
。您循环整个数组(a在[0;i[,b在[0;j[),如果字符不在\r
或\n