c语言程序 从数据文件中读入数据到数组

如题所述

先打开文件。
自己写过getline函数,取文本的一行保存到一个字符串中。
用malloc函数给line分配空间。
对于第一行,取特定的字符串line取代替它,如果第二行是空行也这么做
在建立一个字符串数组,用strdup将他们放入字符串数组strline[i]中。
构造一个结构数组,将得到的字符串line用strtok(line,"
")函数分开依次放入结构数组中的字符串成员中,记得不能用字符串数组的字符串,strtok函数会改变字符串的,而line就无所谓了。
知道用getline函数返回一个负数(一般我用负数标记文档读写完毕)。结束读操作。
现将前面的名字以及空行写入new的文本中,用putline函数(将字符串写入文档中)。
再从字符串数组逆序写入new的文本中。
如果结构数组不用了,就释放strdup分配的空间,并且以及line的空间,前面两行无所谓,反正占的空间不大。所有用数组,还是动态分配都没什么大的关系。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-11
//你的这个程序是错的,做如下修改,
///fscanf()读取出来的都是字符串,因此不能直接给int类型,不然数据就出现不是你写入txt//中的数据,要把字符串变成数字才行,一下就是数字字符串变成数字atoi()
//用法如下:a="4560"
//int b=atoi(a)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
int read(int arr[])
{
int i=0,n;
char name[100];
FILE *fp;//定义文件指针
if((fp=fopen("data.txt","r"))==NULL)//如果文件名不存在
{printf("cantfind the file!");}//则输出没有找到文件
while(!feof(fp))//判断文件是否结束
{
fscanf(fp,"%s",name);//逐个将文件中的数据放入字符串中
arr[i++]=atoi(name);//把字符串转变成数字(int)类型
printf("%d\n",arr[i-1]);
}
n=i;//n为数组中数据个数
fclose(fp);//关闭文件
return n;//返回n即数据个数的值
}
void main()
{
int arr[100];
read(arr);
}
相似回答