c语言将文件内容读入数组中

c语言将文件内容读入数组中,第1张

#include <stdio.h>

int main(int ac, char *pav[])

{

if (ac!=2){

printf("程序名 要读取的文件名\n")

printf("test.exe 1.txt\n")

return 0

}

FILE *fp = fopen(pav[1],"r+")

if(fp == 0)

{

printf("fail to open the file1 !\n")

return 0

}

char buf[256] = {0}

while(!feof(fp))//判断文件是否已结束 

{

fgets(buf,256,fp)

}

printf(buf)

return 0

}

先打开文件。

自己写过getline函数,取文本的一行保存到一个字符串中。

用malloc函数给line分配空间。

对于第一行,取特定的字符串line取代替它,如果第二行是空行也这么做

在建立一个字符串数组,用strdup将他们放入字符串数组strline[i]中。

构造一个结构数组,将得到的字符串line用strtok(line,"

")函数分开依次放入结构数组中的字符串成员中,记得不能用字符串数组的字符串,strtok函数会改变字符串的,而line就无所谓了。

知道用getline函数返回一个负数(一般我用负数标记文档读写完毕)。结束读 *** 作。

现将前面的名字以及空行写入new的文本中,用putline函数(将字符串写入文档中)。

再从字符串数组逆序写入new的文本中。

如果结构数组不用了,就释放strdup分配的空间,并且以及line的空间,前面两行无所谓,反正占的空间不大。所有用数组,还是动态分配都没什么大的关系。

#include<stdio.h>

#include<string.h>

#define M 100//最大行数

int main()

{

  FILE *fp=NULL

  int nums[M],age[M],i=0,n1,n2,len=0

  char name[M][10],str[10]

  fp=fopen("c:\\test.data","r")

  while(fscanf(fp,"%d%s%d",&n1,str,&n2)!=-1)

  {

      nums[i]=n1

      strcpy(name[i],str)

      age[i]=n2

      i++

      len++

  }

  for(i=0i<leni++)

      printf("%d %s %d\n",nums[i],name[i],age[i])

  return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8003975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存