使用空格分隔符将文件读入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
从行
提取数字。