C 逐字符读取文件会导致最后一行截断
我正在创建一个用于练习的简单程序,我想逐字符读取文本文件,并将从文件中读取的每个字符保存在2D字符数组中。例如,如果文本文件包含以下内容:C 逐字符读取文件会导致最后一行截断,c,arrays,C,Arrays,我正在创建一个用于练习的简单程序,我想逐字符读取文本文件,并将从文件中读取的每个字符保存在2D字符数组中。例如,如果文本文件包含以下内容: ****** ****** ****** ****** ****** ****** 我需要创建一个6x6char数组来保存文件的内容。这是我读取文件并保存到阵列的代码: // malloc the 2d array here i=0; j=0; clearMap(map,x,y); // set all elements of th
******
******
******
******
******
******
我需要创建一个6x6char
数组来保存文件的内容。这是我读取文件并保存到阵列的代码:
// malloc the 2d array here
i=0;
j=0;
clearMap(map,x,y); // set all elements of the array to 0
while ((ch=fgetc(fp)) != EOF ) // start reading file here
{
if (j == y) // end of line
{
j=0;
i++;
}
if (i == x) // end of map
{
break;
}
map[i][j]=ch; // assign to array
j++;
}
printMap(map,x,y);
当我打印阵列时,最后一行被部分截断,我在控制台上得到以下输出:
******
******
******
******
******
*
有什么建议吗?请注意,新行也算作
char
(需要并且将被读取),至少在阅读文本文件时是这样。您可能希望阅读以下内容:最后一行短5个字符(前面的行数)。除此之外,代码不完整,但您应该将ch
定义为int
type。@WeatherVane感谢您提供有关行数和'\n'数的提示。我发现我的数组确实将换行符存储为数据,因此短了5个字符。编辑:使用换行检查修复了我的问题。感谢alk和天气风向标。感谢@alk提请您注意这个问题。