gpt4 book ai didi

将文本文件内容复制到 C 中的二维数组中

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:18 24 4
gpt4 key购买 nike

我想将包含 10 x 10 字符数组的文件内容复制到二维数组。我验证了,但编译器给了我一个空白屏幕。该文件正在打开,因为程序没有打印:“打开文件时出错”,如果您能帮助我,我将不胜感激。这是我的代码:

#include<stdio.h>
#include<string.h>

int main()
{
char puzzle[10][10], line[10];
int i,j, rows=0;
FILE *fp;
fp=fopen("arr.txt", "r");
if (fp== NULL) {
printf("Error in opening file\n");
return 1;
}

while(!EOF)
{
if(fgets(line, 10, fp) != NULL){
for(i=0; i<(strlen(line)-1); i++)
puzzle[rows][i] = line[i];
}
rows++;
}
for(i=0; i<10; i++)
for(j=0; j<10; j++)
printf("%c", puzzle[i][j]);
}

谢谢

最佳答案

您的阅读循环条件将始终为假,因此您永远不会阅读任何内容。当您打印出未初始化的 puzzle 矩阵时,这将导致未定义的行为

EOF 被定义为 -1,在 C 中,任何非零值都是真的,因为你通过 否定了这个“真”值! 运算符你的条件将为假。

新手常用的方法是使用

while (!feof(fp)) { ... }

but that's the wrong solution (在大多数情况下)。

改为做

while (fgets(line, sizeof line, fp) != NULL) { ... }

顺便说一句,如果您阅读的行少于 9 个字符,您可能仍然未定义的行为,因为不是所有的谜题 矩阵将被初始化。你可能想先初始化它,这可以在你定义它时完成:

char puzzle[10][10] = { 0 };

另请注意,如果您读取的行恰好为 9 个字符或更长,则 fgets 调用将不会在字符串中包含换行符。

关于将文本文件内容复制到 C 中的二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110943/

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