Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言,文件加载到2D数组中_C - Fatal编程技术网

C语言,文件加载到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

我被困在从文本文件加载字母到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 < 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”注意这里\或者使用可以将其写成
    “c:/documents/filename.txt”
  • char match[i][j]
    这会导致编译错误,无法使用常量定义数组
  • scanf(“%d%d%s”,&i,&j,&filename)
    此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要
    &
  • 键入文件名时,请确保键入完整的地址,如下所示:“c:\\documents\\filename.txt”注意这里\或者使用可以将其写成
    “c:/documents/filename.txt”
  • char match[i][j]
    这会导致编译错误,无法使用常量定义数组
  • scanf(“%d%d%s”,&i,&j,&filename)
    此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要
    &
  • 键入文件名时,请确保键入完整的地址,如下所示:“c:\\documents\\filename.txt”注意这里\或者使用可以将其写成
    “c:/documents/filename.txt”
  • char match[i][j]
    这会导致编译错误,无法使用常量定义数组
  • scanf(“%d%d%s”,&i,&j,&filename)
    此处代替&filename写入文件名,因为数组名是数组的地址,所以不需要
    &
  • 键入文件名时,请确保键入完整的地址,如下所示:“c:\\documents\\filename.txt”注意这里\或者使用可以将其写成
    “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