C 从文件中获取数字并将其放入数组时需要的建议
我正在编写一个程序,从一个txt文件中获取数字,并将它们放入两个不同的数组中 文本文件如下所示:C 从文件中获取数字并将其放入数组时需要的建议,c,C,我正在编写一个程序,从一个txt文件中获取数字,并将它们放入两个不同的数组中 文本文件如下所示: 50 40 250 140 5 6 500 50 300 200 我需要将第一列中的所有数字放入一个数组,第二列放入另一个数组 这是我目前的代码: #include <stdio.h> #include <stdlib.h> #include <string.h> int main()
50 40
250 140
5 6
500 50
300 200
我需要将第一列中的所有数字放入一个数组,第二列放入另一个数组
这是我目前的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE * ifp = fopen("input2.txt","r"); //Open the input file
int cars = 5, i , j; // Initialized cars and counters i and j
char VIEW[20], BID[20], CLOSE[20];
int CAR[10], START_BID[10], MIN_INCREASE[10];
int *b; // Temp pointer to current bid
int *m; // Temp pointer to current array of the minimum increase
strcpy(VIEW, "VIEW");
strcpy(BID, "BID");
strcpy(CLOSE, "CLOSE");
for (i = 0; i < cars; i++) {
b = &START_BID[i]; // Get pointer to current START_BID
m = &MIN_INCREASE[i]; // Get pointer to array of current MIN_INCREASE
fscanf(ifp, "%d", &b[i]);
for (j = 0; j < cars; j++) {
fscanf(ifp, "%d", &m[i]);
}
}
printf("%d\n", START_BID);
printf("%d\n", MIN_INCREASE);
fclose(ifp);
return 0;
}
关于如何将数字放入正确的数组,有什么想法吗?这里有一个解决方案:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE * ifp = fopen("file.txt","r"); //Open the input file
int cars = 5, i , j; // Initialized cars and counters i and j
char *view="VIEW", *bid="BID", *CLOSE="CLOSE";
int CAR[10], START_BID[10], MIN_INCREASE[10];
for (i = 0; i < cars; i++)
{
fscanf(ifp, "%d %d", &START_BID[i],&MIN_INCREASE[i]);
}
for (i = 0; i < cars; i++)
{
printf("%d %d\n", START_BID[i], MIN_INCREASE[i]);
}
fclose(ifp);
return 0;
}
根据您的问题,要读取数据,必须对第一个循环进行如下修改
for (i = 0; i < cars; i++) {
fscanf(ifp, "%d", &START_BID[i]);
fscanf(ifp, "%d", &MIN_INCREASE[i]);
}
@德里克。。从代码中,您正在读取cars*cars,即m[i]的25个值,而该文件只有10个值。你能确认一下逻辑吗?此外,fscanfifp、%d、&b[i];读入b[i],相当于START_BID[i][i]。运行此程序时您是否遇到任何访问冲突?@Ganesh我没有遇到任何访问冲突。@Drieke。。我明白你为什么没有得到访问权限。在你的公式中,j=0;j
for (i = 0; i < cars; i++) {
fscanf(ifp, "%d", &START_BID[i]);
fscanf(ifp, "%d", &MIN_INCREASE[i]);
}
printf("\nStarting Bids:\t");
for (i = 0; i < cars; i++) {
printf("%d\t", START_BID[i]);
}
printf("\nMinimum Increase:\t");
for (i = 0; i < cars; i++) {
printf("%d\t", MIN_INCREASE[i]);
}
printf("\n");
Starting Bids: 50 250 5 500 300
Minimum Increase: 40 140 6 50 200