使用空格分隔符将文件读入C数组

使用空格分隔符将文件读入C数组,c,arrays,file,C,Arrays,File,我当前正在尝试读取一个由空格分隔的文件。我已经能够让它逐行读取,但是现在我需要用空格分隔它,这样我就可以把它放入一个数组中。如何将其分离到阵列中 #include <stdio.h> int main ( void ) { int data_array[3]; int num1; int num2; int num3; static const char data[] = "data.txt"; FILE *file = fopen

我当前正在尝试读取一个由空格分隔的文件。我已经能够让它逐行读取,但是现在我需要用空格分隔它,这样我就可以把它放入一个数组中。如何将其分离到阵列中

#include <stdio.h>
int main ( void )
{
    int data_array[3];
    int num1;
    int num2;
    int num3;

    static const char data[] = "data.txt";
    FILE *file = fopen ( data, "r" );
    if ( file == NULL )
    {
        printf("An error occured reading the file. Check to make sure file is not locked.");
    }
    else
    {
        char line [ 1024 ]; // hopefully each line does not exceed 1024 chars
        while ( fgets ( line, sizeof line, file ) != NULL ) // reads each line
        {
            // reads each number into an array
            scanf("%d %d %d", num1, num2, num3);
            data_array[0] = num1;
            data_array[1] = num2;
            data_array[2] = num3;
        }
        fclose ( file ); // closes file
    }
    return 0;
}
#包括
内部主(空)
{
int数据_数组[3];
int num1;
int num2;
int num3;
静态常量字符数据[]=“data.txt”;
FILE*FILE=fopen(数据,“r”);
if(file==NULL)
{
printf(“读取文件时出错。请检查以确保文件未锁定。”);
}
其他的
{
字符行[1024];//希望每行不超过1024个字符
while(fgets(line,sizeof line,file)!=NULL)//读取每一行
{
//将每个数字读入数组
scanf(“%d%d%d”,num1、num2、num3);
数据_数组[0]=num1;
数据_数组[1]=num2;
数据_数组[2]=num3;
}
fclose(文件);//关闭文件
}
返回0;
}
由于您已经将字符从文件中读取到
,因此应该将其更改为
sscanf()
类似

sscanf(line, "%d %d %d", &num1, &num2, &num3);
由于您已经将字符从文件中读取到
,因此应该将其更改为
sscanf()
类似

sscanf(line, "%d %d %d", &num1, &num2, &num3);

对不起,我不明白你想做什么。是否要将数据存储在另一个数组中?我的文件有这样一行:
3 5 12
,我想将这些数字中的每一个都读取到数组数据数组中。我猜您忘记粘贴该行了。在将变量传递到scanf之前,您忘了添加&。类似于:scanf(“%d%d%d”、&num1、&num2、&num3);根据您要执行的操作,您可以将
fgets
调用替换为直接在
文件上运行的
fscanf
调用,或者如果您需要保留
,您可以使用
sscanf
提取数字。对不起,但我不明白你想做什么。是否要将数据存储在另一个数组中?我的文件有这样一行:
3 5 12
,我想将这些数字中的每一个都读取到数组数据数组中。我猜您忘记粘贴该行了。在将变量传递到scanf之前,您忘了添加&。类似于:scanf(“%d%d%d”、&num1、&num2、&num3);根据您要执行的操作,您可以将
fgets
调用替换为直接在
文件上运行的
fscanf
调用,或者如果您还需要保留
,您可以使用
sscanf
提取数字。