从文本文件读取一个数组数组到C中的数组
问题描述:
这是写入文本文件前的内容。 “123.txt”:从文本文件读取一个数组数组到C中的数组
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
如何将这些数字拉入数组?
我的想法:
打开文件(当然)
使用某种形式的fscanf
广场,一个循环之下FSCANF和编号分配到新阵列循环进展
关闭文件
任何想法如何做到这一点非常感谢。感谢您的时间。
编辑1:
注意我分解出的效率问题,对这个问题进行严格的学习目的。此外,错误检测隐含,但不包括在内。
int* load(const char* filename) {
int i;
len = 100; // How to find len of array?
array[len];
FILE* fp = fopen(filename, "r")
while(!feof(fp)) {
fscanf(fp,"%d, ",&array[i]);
i++;
}
fclose(f1);
return array;
我的代码在循环不会结束。
答
scanf函数一般很慢。我会用fread和strtok。 strtok的对man页面链接
stat file get size
allocate buffer
fread to buffer
while not end of buffer
strtok
array[index] = strtoul(buf, 0, 10)
loop
答
只是一个普遍的方式。你可以根据你的需要改变它。
FILE *file = fopen("filename.txt", "r");
int integers[100];
int i=0;
int num;
while(fscanf(file, "%d", &num) > 0) {
integers[i] = num;
i++;
}
fclose(file);
答
试图与文件重定向到标准输入。一个弱码,仍然有效。:
#include<stdio.h>
main()
{
freopen("fileName","r",stdin);
char arr[200];
int result[10],i=0;
do
{
scanf("%s",arr);
if(arr[0]!='[' && arr[0]!=']')
result[i++]=atoi(arr);
}while(arr[0]!=']');
}
+0
downvoter,请解释您对代码的关注。这是不是在你的机器上工作? –
你很漂亮,在你的步骤击中它。现在你所需要的就是代码。总是赞赏错误和边界检查,顺便说一句。 – WhozCraig
向我们展示您的努力.. –
我已添加代码请大家看看。 – chickenninja565