从文件中读取一个数字,然后在C中读取一个数组
如何从文件中读取一个数字和一个数组后的数字。我的意思是我的文件看起来像: 3. 7. 8. 九,从文件中读取一个数字,然后在C中读取一个数组,c,C,如何从文件中读取一个数字和一个数组后的数字。我的意思是我的文件看起来像: 3. 7. 8. 九, 3是组件的数量,7,8 9阵列的其他组件,arr[1],arr[2],arr[3]。执行所需功能的一种方法是: 首先,打开文件进行读取: FILE *fp = fopen( "filename.txt" ); 然后检查对fopen()的调用是否成功,并处理任何错误: if( ! fp ) { perror( "fopen to read filename.txt failed" );
3是组件的数量,7,8 9阵列的其他组件,arr[1],arr[2],arr[3]。执行所需功能的一种方法是: 首先,打开文件进行读取:
FILE *fp = fopen( "filename.txt" );
然后检查对fopen()
的调用是否成功,并处理任何错误:
if( ! fp )
{
perror( "fopen to read filename.txt failed" );
exit( EXIT_FAILURE );
}
注意:peror()
输出错误消息和系统认为错误发生在stderr
的文本原因。这就是应该输出错误消息的地方
保留一个变量以保存以下值的计数:
int maxLoops;
然后读取第一个数字并使用该数字作为循环的最大迭代次数,当然,检查错误
if( fscanf( fp, "%d", &maxLoops ) != 1 )
{
fprintf( stderr, "fscanf to read loop count failed\n" );
exit( EXIT_FAILURE );
}
if( fscanf( fp, "%d", &dataArray[i] ) != 1 )
{
fprintf( stderr, "fscanf for data value failed\n" );
exit( EXIT_FAILURE );
}
} // end the loop
注意:当某些输入格式说明符
(在本例中为%d
)失败时,scanf()
函数系列不会设置errno
,因此需要使用类似fprinf()
的方法输出错误消息
注意:scanf()
函数系列返回成功的输入格式转换次数(或EOF)
注意:exit()
和exit\u故障
通过以下方式公开:
#include <stdlib.h>
现在,设置将读取其余数据的循环
for( int i = 0; i < maxLoops; i++ )
{
然后,在执行任何其他操作之前进行清理:
fclose( fp );
如何处理这些数据取决于您自己。您可能希望使用循环打印每个数据值,类似于:
for( int i = 0; i < maxLoops; i++ )
{
printf( "entry %d = %d\n", i, dataArray[i] );
}
for(int i=0;i
注意:调用printf()
时,无需获取变量的地址(除非这是您要打印的)。但是,当输入变量时,如调用fscanf()
时,需要变量的地址。请先阅读man 3 fscanf
,是否有链接?如果您在*nix计算机上,只需在终端中键入man 3 fscanf即可。否则您可以查看它。您的意思是,在C中,索引从0开始,而不是从1开始。所以fopen
,一个循环执行fscanf
,然后执行fclose
,另一个循环执行printf
,检查结果如何?@ANA在发布前只需谷歌一下,基本上,您可以读取相同大小的第一个数字create array create for循环,以保持读取所有数字并将其添加到数组中。请确保在工作完成后关闭文件。
for( int i = 0; i < maxLoops; i++ )
{
printf( "entry %d = %d\n", i, dataArray[i] );
}