gpt4 book ai didi

c - 使用txt文件将值输入到指针数组中

转载 作者:行者123 更新时间:2023-11-30 17:20:29 25 4
gpt4 key购买 nike

我正在尝试将输入数据从 txt 文件获取到指针数组中。然后将数组显示(打印)为二维整数方形数组。下面是 tst 文件。第一个数字 9 是 N(即 nxn),用于设置二维数组的大小。我可以使用 fgetc 获取它并将其设置为我的 int 值 N。接下来我想获取文本文件中的 9x9array 并将这些值放入指针数组中,这就是我遇到麻烦的地方。关于我可以采取的方法的任何建议。

9
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0


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

int main(int argc, char *argv[]){
int **A;
FILE *file;
char ch;
int i;
int j;
int N;
int t;

if ( argc != 2 ) /* argc should be 1 for correct execution */
{
printf( "you need to input one argument\n");
}
else {
file = fopen(argv[1], "r"); //opens file name
if(file == 0)
printf("File couldnt me opened\n");
else {
if((ch=fgetc(file))!=1){
N = ch - '0' ;
}

A = malloc(N * sizeof(int *));

for (i = 0; i < N; i++)
A[i] = malloc(N * sizeof(int));

while((ch=fgetc(file)) != EOF){
i=4;
//for (i=1;i<N;i++)
// for (j=1;j<N;j++)
if(i<N)
A[i][i]= ch2 - '0' ;

}
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", A[i][j]);
printf("\n");
}
fclose( file );
}
}
}

最佳答案

需要解决的问题:

  1. 正在阅读N

     if((ch=fgetc(file))!=1){
    N = ch - '0' ;
    }

    如果文件的第一个字符不是数字之一,这会给你错误的N。另外,如果 N 大于 9,您将不再使用错误的值。将其更改为

     if ( fscanf(file, "%d", &N) != 1 ){
    // Problem.
    // Do something about it.
    }
  2. 用于读取矩阵数据的行根本没有意义。

     while((ch=fgetc(file)) != EOF){
    i=4; // Why is i set to 4 here?
    if(i<N) // This will always be true when N >= 4
    A[i][i]= ch2 - '0' ;

    此外,您无法使用 fgetc 读取数字,因为 fgetc 不会跳过空格。您的代码可以更简单。

    for (j = 0; j < N; j++)
    {
    if ( fscanf(file, "%d", &A[i][j]) != 1 )
    {
    // Problem.
    // Do something about it.
    }
    }

关于c - 使用txt文件将值输入到指针数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28574793/

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