gpt4 book ai didi

c - 在 C 中打开文件 - 为什么它不加载所有矩阵或删除\n?

转载 作者:行者123 更新时间:2023-11-30 20:14:49 27 4
gpt4 key购买 nike

我正在尝试构建一个简单的程序,在其中输入我想要的矩阵的尺寸,然后我将该尺寸从 txt 文件读取到二维数组。

所以我有以下字母,在一个名为 soup.txt 的 txt 文件中

ORCA
RAIO
ATNS

我希望将这个 3x4 矩阵加载到数组中。这是我拥有的结构和函数:

typedef struct dicionario{
char matrix[200][200];
}*DICIONARIO;

//Function to load the matrix
void abresopa(FILE *fs, char *s,DICIONARIO sopa,int dimy,int dimx){
int i;

fs=fopen (s,"r");
for (i=0;i<dimy;i++)
fgets(sopa->matrix[i],dimx,fs);
limpabn(sopa->matrix[i]);
}

//Clears \n at the end of a string
void limpabn (char *s){
int i;
for (i=0;s[i]!='\n';i++); if (s[i]=='\n') s[i]='\0';
}

我的主要看起来像这样。我正在打开文件并打印矩阵:

int main(){
struct dicionario sopa;
DICIONARIO y=&sopa;

int dimy=3, dimx=4;
FILE *fs;

abresopa(fs,"soup.txt",y,dimy,dimx);

for (i=0;i<dimy;i++) printf("%s",y->matrix[i]);

return 0;}

我希望打印这个:

ORCARAIOATNS

但是我得到了这个

ORCA
RAI

我做错了什么?

问候

最佳答案

for (i=0;i<dimy;i++)
fgets(sopa->matrix[i],dimx,fs);//<-- dimx is small size for read (XXXX\n\0)
limpabn(sopa->matrix[i]);//<- outside for-loop

应该是

for (i=0;i<dimy;i++){
fgets(sopa->matrix[i],dimx+2,fs);
limpabn(sopa->matrix[i]);
}

关于c - 在 C 中打开文件 - 为什么它不加载所有矩阵或删除\n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920738/

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