如何将保存在 .txt 文件中的过程值保存到 c 中的 4 个不同数组
How do I save process values saved in a .txt file to 4 different arrays in c
给定 processes.txt 以下信息
0 4 96 30
3 2 32 40
5 1 100 20
20 3 4 30
如何在 c 中将文件的每一行保存为 4 个不同数组的元素?
即
int arr1 = [0,4,96,30]
int arr2 = [3,2,32,40]
int arr3 = [5,1,100,20]
int arr[4] = [20,3,4,30]
这是我的代码,我在其中加载了 .txt 文件,但不知道如何将值存储在整数数组中。我的代码产生垃圾值。
如何编写程序?
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp;
char *filename;
char ch;
// Check if a filename has been specified in the command
if (argc < 2)
{
printf("Missing Filename\n");
return(1);
}
else
{
filename = argv[1];
printf("Filename : %s\n", filename);
}
// Open file in read-only mode
fp = fopen(filename,"r");
// If file opened successfully, then print the contents
if ( fp )
{
printf("File contents:\n");
while ( (ch = fgetc(fp)) != EOF )
{
printf("%c",ch);
}
}
else
{
printf("Failed to open the file\n");
}
// Saving the contents of the file in a Number Array
int numberArray[16];
int i;
for (i = 0; i < 16; i++)
{
fscanf(fp, "%d", &numberArray[i]);
}
for (i = 0; i < 16; i++)
{
printf("Number is: %d\n\n", numberArray[i]);
}
return(0);
}
您必须将指针 fp
重置为文件开头。因为 while
循环:while ( (ch = fgetc(fp)) != EOF )
,指针 fp
在文件末尾。
int numberArray[16];
int i;
fseek(fp, 0, SEEK_SET);
fscanf
的 for
循环应替换为 while
循环:
int numberArray[16];
int i = 0;
fseek(fp, 0, SEEK_SET);
while(fscanf(fp, "%d", &numberArray[i]) == 1 && i < 16)
{
i++;
}
// Then when you print the value from 0 to i
for (int j = 0; j < i; j++)
{
printf("Number is: %d\n\n", numberArray[j]);
}
不用的时候不要忘记关闭文件:
fclose(fp);
现在,如果要将 numberArray
分隔为 4 个数组 arr1
、arr2
、arr3
和 arr4
。您可以将 numberArray
的前 4 个元素(从 0
到 3
)分配给 arr1
,然后将接下来的 4 个元素(从 4
到 7
) 到 arr2
等等。
给定 processes.txt 以下信息
0 4 96 30
3 2 32 40
5 1 100 20
20 3 4 30
如何在 c 中将文件的每一行保存为 4 个不同数组的元素? 即
int arr1 = [0,4,96,30]
int arr2 = [3,2,32,40]
int arr3 = [5,1,100,20]
int arr[4] = [20,3,4,30]
这是我的代码,我在其中加载了 .txt 文件,但不知道如何将值存储在整数数组中。我的代码产生垃圾值。
如何编写程序?
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp;
char *filename;
char ch;
// Check if a filename has been specified in the command
if (argc < 2)
{
printf("Missing Filename\n");
return(1);
}
else
{
filename = argv[1];
printf("Filename : %s\n", filename);
}
// Open file in read-only mode
fp = fopen(filename,"r");
// If file opened successfully, then print the contents
if ( fp )
{
printf("File contents:\n");
while ( (ch = fgetc(fp)) != EOF )
{
printf("%c",ch);
}
}
else
{
printf("Failed to open the file\n");
}
// Saving the contents of the file in a Number Array
int numberArray[16];
int i;
for (i = 0; i < 16; i++)
{
fscanf(fp, "%d", &numberArray[i]);
}
for (i = 0; i < 16; i++)
{
printf("Number is: %d\n\n", numberArray[i]);
}
return(0);
}
您必须将指针 fp
重置为文件开头。因为 while
循环:while ( (ch = fgetc(fp)) != EOF )
,指针 fp
在文件末尾。
int numberArray[16];
int i;
fseek(fp, 0, SEEK_SET);
fscanf
的 for
循环应替换为 while
循环:
int numberArray[16];
int i = 0;
fseek(fp, 0, SEEK_SET);
while(fscanf(fp, "%d", &numberArray[i]) == 1 && i < 16)
{
i++;
}
// Then when you print the value from 0 to i
for (int j = 0; j < i; j++)
{
printf("Number is: %d\n\n", numberArray[j]);
}
不用的时候不要忘记关闭文件:
fclose(fp);
现在,如果要将 numberArray
分隔为 4 个数组 arr1
、arr2
、arr3
和 arr4
。您可以将 numberArray
的前 4 个元素(从 0
到 3
)分配给 arr1
,然后将接下来的 4 个元素(从 4
到 7
) 到 arr2
等等。