gpt4 book ai didi

c - 将文本文件读入二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:35 26 4
gpt4 key购买 nike

所以目前我有一个工作代码能够读取包含一个 9x9 板的文本文件,二维数组中的每个插槽都是 1-9 之间的数字;但是,有些插槽随机混入了“-”字符。我发现我可以成功读取所有行然后打印它们的唯一方法是使用 char sudoku[9][9] 但这极大地影响了我当前作业的其他部分。

文件应该只有 9 行,如下所示:

123-56-89
4561-3--9

等...

谁能告诉我如何成功地将文本文件内容扫描到 INTEGER 二维数组而不是 char 数组中?

int main(){
int i, j;
char sudoku[9][9];
char filename[100];

printf("Please enter file name (W/O .txt): ");
scanf("%s", filename);

FILE *file1 = fopen(filename, "r");

for(i=0;i<9;i++){
for(j=0;j<9;j++){
fscanf(file1,"%c\t", &sudoku[i][j]);
}
}

for(i=0;i<9;i++){
for(j=0;j<9;j++){
printf("%2c", sudoku[i][j]);
}
printf("\n");
}

fclose(file1);
}

最佳答案

int suduku[9][9];

for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
char c;
if (fscanf(file1, " %c", &c) != 1)
…report read failure and exit…
else if (isdigit((unsigned char)c))
sudoku[i][j] = c - '0';
else
sudoku[i][j] = 0;
}
}

将字符读入字符,然后转换为合适的整数。请注意,代码不会关心矩阵中的每个字符是否由十几个空行与下一个字符分隔并且字符前有 20 个空格,或者整个输入是否是单行上的 81 个字符,或任何其他变体.只要文件中至少有 81 个非空白字符就可以。

关于c - 将文本文件读入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577785/

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