从文件中读取一个数字,然后在C中读取一个数组

从文件中读取一个数字,然后在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. 九,


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] );
}