精华内容
下载资源
问答
  • C语言编程对文件中数据进行处理
    2021-05-20 18:42:12

    《C语言编程对文件中数据进行处理》由会员分享,可在线阅读,更多相关《C语言编程对文件中数据进行处理(2页珍藏版)》请在人人文库网上搜索。

    1、C语言编程,对文件中数据进行处理对N个数据进行排序,去重,并计算出去重后的极差(最大值-最小值),去重后的平均数输入:使用文件输入,输入文件为:data.txt共两行:第一行为数据个数N(1void main()FILE *f;int num;int data50;int i=0,j=0;int max,min;int tmp;f=fopen(data.txt,r+);fscanf(f,%d,&num);for(i=0;idataj)tmp=datai;datai=dataj;dataj=tmp;max=data0;tmp=0;for(i=0;datai!=0;i+)tmp+=datai;min=datai;num=i;rewind(f);fprintf(f,%dn,num);for(i=0;datai!=0;i+)fprintf(f,%d ,datai);fputc(n,f);fprintf(f,%d %f,max-min,(float)tmp)/(float)num);/fputc(EOF,f);fclose(f);。

    更多相关内容
  • 下面小编就为大家带来一篇c语言实现把文件中数据读取并存到数组。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 是一个十分可靠的程序,这个程序的查错能力非常强悍。程序包含了文件操作,归并排序和字符串输入等多种技术。对大家学习C语言很有帮助,有需要的一起来看看。
  • 下面小编就为大家带来一篇C语言从txt文件中逐行读入数据存到数组的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 作为一个新手学习C语言读写数据,我整合了一下自己查找的一些资料,用C语言实现将一个文件读入内存,里面有运行工具,和一个word文档代码。
  • 程序由一个主函数和两个子函数构成;子函数为getData()和check()。getData用来读取数据,将数据存入内存,将内存地址返回给主函数。check负责检查数据传递是否正确。
  • C语言getpw()函数:取得指定用户的密码文件数据 头文件: #include <pwd> #include 定义函数: int getpw(uid_t uid, char *buf); 函数说明:getpw()会从/etc/passwd查找符合参数uid所指定的用户账号数据, 找...
  • 功能描述:程序自动生成.txt文件,内部存放生成的数据,其中第一行存储数据的条数n,从第...条数参数n和文件名称参数FileName通过cmd的命令行参数传入,两参数顺序不定,缺少参数时,条数n随机生成,文件名可以指定。
  • c语言中文件使用方法一.文件指针的定义FILE *fp//注意FILE的大写二.文件的打开fp=fopen("(路径)文件名.文件格式后缀","文件使用方法")//注意路径下为//而不是/三.文件使用方法1.“r” 模式:1.1 打开文件进行...

    c语言中文件的使用方法

    一.文件指针的定义

    FILE *fp//注意FILE的大写

    二.文件的打开

    fp=fopen("(路径)文件名.文件格式后缀","文件的使用方法")//注意路径下为//而不是/

    三.文件的使用方法

    26e7abdb6727c84de735e997583498b5.png

    1.“r” 模式:

    1.1 打开文件进行只读操作,即只能从文件读取内容。

    1.2 若欲操作的文件不存在,则打开失败。

    1.3 成功打开文件时,文件指针位于文件开头。

    1.4 打开文件后,不会清空文件内原有内容。

    1.5 可从文件中任意位置读取内容。

    2."w" 模式:

    2.1 打开文件进行“只写”操作,即只能向文件写入内容。

    2.2 若欲操作的文件不存在,则新建文件。

    2.3 成功打开文件时,文件指针位于文件开头。

    2.4 打开文件后,会清空文件内原有的内容。

    2.5 可向文件中任意位置写入内容,且进行写入操作时,会覆盖原有位置的内容。

    3."a" 模式:

    3.1 打开文件进行“追加”操作,即只能向文件写入内容。

    3.2 若欲操作的文件不存在,则新建文件。

    3.3 成功打开文件时,文件指针位于文件结尾。

    3.4 打开文件后,不会清空文件内原有内容。

    3.5 只能向文件末尾追加(写)内容。

    4."r+"模式:

    4.1 打开文件进行“读写”操作,即既可读取,又可写入。

    4.2 若欲操作的文件不存在,则打开失败。

    4.3 成功打开文件时,文件指针位于文件开头。

    4.4 打开文件后,不会清空文件内原有内容。

    4.5 无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容。

    5."w+"模式:

    5.1 打开文件进行“读写”操作,即既可读取,又可写入。

    5.2 若欲操作的文件不存在,则新建文件。

    5.3 成功打开文件时,文件指针位于文件开头。

    5.4 打开文件后,会清空文件内原有的内容。

    5.5 无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容。

    6."a+"模式:

    6.1 打开文件进行“读写”操作,即既可读取,又可写入。

    6.2 若欲操作的文件不存在,则新建文件。

    6.3 成功打开文件时,文件指针位于文件结尾。

    6.4 打开文件后,不会清空文件内原有内容。

    6.5 读取内容时,可以在任意位置进行,但写入内容时,只会追加在文件尾部。

    43272b6b3c59ccb4bff605cf6393f379.png

    三.文件处理函数

    A.fgetc\fputc(字符)

    fgetc意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。

    fgetc格式:

    ch=fgetc(FILE *stream)

    fputc意为将字符ch写到文件指针fp所指向的文件的当前写指针的位置。

    fputc格式:

    fputc(char c, FILE *fp)

    B.fgets\fputs(字符串)

    fgets函数功能为从指定的流中读取数据,每次读取一行。从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

    fgets格式:

    fgetc(char *str, int n, FILE *stream)

    fputs是一个函数,具有的功能是向指定的文件写入一个字符串(不自动写入字符串结束标记符‘\0’)。成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为非负整数;否则返回EOF(符号常量,其值为-1)。

    fputs格式:

    fputs(const char *str, FILE *stream)

    返回值:该函数返回一个非负值,如果发生错误则返回 EOF(-1)。

    (1)str:这是一个数组,包含了要写入的以空字符终止的字符序列。

    (2)stream:指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流

    C.数据块的读写

    fread\fwrite

    fread从给定输入流stream读取最多count个对象到数组buffer中(相当于以对每个对象调用count次fgetc),把buffer当作unsigned char数组并顺序保存结果。流的文件位置指示器前进读取的字节数。

    若出现错误,则流的文件位置指示器的位置不确定。若没有完整地读入最后一个元素,则其值不确定。

    fread格式:

    fread( void *buffer, size_t size, size_t count, FILE *stream )

    fwrite() 是 C 语言标准库中的一个文件处理函数,功能是向指定的文件中写入若干数据块,如成功执行则返回实际写入的数据块数目。该函数以二进制形式对文件进行操作,不局限于文本文件。

    fwrite格式:

    fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

    返回值:返回实际写入的数据块数目

    (1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;

    (2)size:要写入内容的单字节数;

    (3)count:要进行写入size字节的数据项的个数;

    (4)stream:目标文件指针;

    (5)返回实际写入的数据项个数count。

    D.fscanf\fprintf

    fscanf 其功能为根据数据格式(format),从输入流(stream)中读入数据,存储到argument中,遇到空格和换行时结束。

    fscanf格式:

    fscanf(FILE * stream, const char * format, [argument...])

    fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。

    fprintf格式:

    fprintf (FILE* stream, const char*format, [argument])

    stream-- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。

    format-- 这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。

    format 标签属性是%[flags][width][.precision][length]specifier

    [argument]:附加参数列表

    注意在格式中有读取长度的n时,系统会预留一个给’\0’,如果欲读取10个,则n在定义时,应该定义为10+1.

    每一次文件引用结束后都要记得关闭打开了的文件

    fclose(fp)//fp为定义的文件指针

    展开全文
  • 最近工作遇到需要将程序数据存到文件中,等下次开机可以读出来,我想到最好是可以结构化的存储,最好可以支持键值查询和匹配。本来想xml实现这个功能。可是我的交叉编译工具不支持xml解析器的交叉编译。...

    最近在工作中遇到需要将程序中的数据存到文件中,等下次开机可以读出来,我想到最好是可以结构化的存储,最好可以支持键值查询和匹配。本来想用xml实现这个功能。可是我用的交叉编译工具不支持xml解析器的交叉编译。于是我就只好自己利用周末的时间研究了一波。

    现在在以经实现了基本的存储和读取功能,主要用的是文件流相关的操作函数实现的,像

    fopen

    fprintf

    fwrite

    flseek

    fscanf

    fread

    fclose

    我的想法是之间利用fwrite存结构体的方式,在结构体之间利用'$'符和‘>’符分割开方便监测,当然你存储的结构体元素不能包含指针,因为指针存到文件中是没有意义的。我的实现中数据结构体中必须包含名为name的字符数组,这有利于后期键值匹配的实现。

    废话少说,下面是我的实现:

    fwsStruct.c#include 

    #include 

    #include "fwsStruct.h"

    Head *creat_head(void)

    {

    Head *head = (Head *)malloc(sizeof(Head));

    head->next = NULL;

    return head;

    }

    Node *creat_node(void)

    {

    return (Node *)malloc(sizeof(Node));

    }

    void list_append(Head *head,Node *node)

    {

    Node *temp;

    if(head->next == NULL)

    {

    head->next = node;

    node->next = NULL;

    return;

    }

    else

    temp = head->next;

    while(temp->next != NULL)

    {

    temp = temp->next;

    }

    temp->next = node;

    node->next = NULL;

    }

    void list_insert(Node *p,Node *node)

    {

    node->next = p->next;

    p->next = node;

    }

    void list_delete(Node *p)

    {

    Node *temp = p->next;

    p->next = p->next->next;

    free(temp);

    }

    Head *fwsStruct_perser(const char *path, const char *mode, void *data, size_t size)

    {

    FILE *fp;

    char ch;

    Node *node;

    Head *head = creat_head();

    if(head == NULL)

    return NULL;

    if((fp = fopen(path,mode)) == NULL)

    {

    return NULL;

    }

    while((ch = fgetc(fp)) >= 0)

    {

    if(ch == '$')

    {

    node = creat_node();

    data = malloc(size);

    if((node != NULL)&&(data != NULL))

    {

    if(fwsStruct_read(fp,data,size) == 1)

    {

    node->data = data;

    list_append(head,node);

    }

    else

    conTInue;

    }

    }

    }

    fclose(fp);

    return head;

    }

    int fwsStruct_write(FILE *fp, void *data,size_t size)

    {

    fprintf(fp,"$\n");

    if((fwrite(data,size, 1, fp) 

    return 0;

    fprintf(fp,">\n");

    return 1;

    }

    size_t fwsStruct_read(FILE *fp, void *data, size_t size)

    {

    fscanf(fp,"\n");

    return fread(data,size, 1, fp);

    }

    size_t fwsStruct_append(FILE *fp, void *data, size_t size)

    {

    if(fseek(fp,SEEK_END,0) 

    return -1;

    return fwsStruct_write(fp,data,size);

    }

    fwsStruct.h

    #ifndef FWSSTRUCT_H_

    #define FWSSTRUCT_H_

    #include 

    #include 

    typedef struct node

    {

    struct node *next;

    void        *data;

    }Node;

    typedef struct

    {

    Node *next;

    }Head;

    Head *creat_head(void);

    Node *creat_node(void);

    void list_append(Head *head,Node *node);

    void list_insert(Node *p,Node *node);

    void list_delete(Node *p);

    Head *fwsStruct_perser(const char *path, const char *mode, void *data, size_t size);

    int fwsStruct_write(FILE *fp, void *data, size_t size);

    size_t fwsStruct_read(FILE *fp, void *data, size_t size);

    size_t fwsStruct_append(FILE *fp, void *data, size_t size);

    #endif

    写入结构体的测试代码:

    #include 

    #include 

    #include 

    #include "fwsStruct.h"

    struct work

    {

    char name[10];

    char msg[100];

    int id;

    };

    int main()

    {

    struct work wk;

    FILE *fp;

    int i;

    strcpy(wk.name,"wang");

    strcpy(wk.msg,"hello world!");

    wk.id = 10;

    if((fp = fopen("./batt.struct","w+")) == NULL)

    {

    printf("The file %s can not be opened or not exit.\n","batt");

    return 0;

    }

    for(i = 0; i 

    {

    fwsStruct_write(fp,&wk,sizeof(struct work));

    }

    fclose(fp);

    return 0;

    }

    读出结构体的测试代码:

    #include 

    #include 

    #include "fwsStruct.h"

    struct work

    {

    char name[10];

    char msg[100];

    int id;

    };

    int main()

    {

    struct work *wk;

    Node *node;

    Head *head = creat_head();

    head = fwsStruct_perser("./batt.struct","r",wk,sizeof(struct work));

    node = creat_node();

    node = head->next;

    while(node != NULL)

    {

    wk = (struct work *)node->data;

    printf("%s\n%s\n%d\n",wk->name,wk->msg,wk->id);

    node = node->next;

    }

    return 0;

    }

    由于时间比较紧,没有时间写注释。另外键值匹配还没有实现。

    展开全文
  • 匿名用户1级2012-05-21 回答你的描述不清晰,B1和B2两个结构数组,到底要删除哪个?B[2]是肯定不对的,这两个数组的长度都是2,下标只能是0和1,即B1[0], B1[1], B2[0], B2[1]。你还是先把问题说清楚了,这...数据在...

    匿名用户

    1级

    2012-05-21 回答

    你的描述不清晰,B1和B2两个结构数组,到底要删除哪个?B[2]是肯定不对的,这两个数组的长度都是2,下标只能是0和1,即B1[0], B1[1], B2[0], B2[1]。

    你还是先把问题说清楚了,这个程序不难写。

    追问:

    不好意思漏掉了! 是要删除B2[1].name 和 B2[1].point

    麻烦大侠指教!

    追答:

    还不是很清楚,文件里存了哪几条数据?数据在B1和B2里是如何存放的。以B2为例,B2[0]或B2[1],每个里存放一条数据还是用链表串起来的多条数据?

    我按如下的假设实现:

    文件中vip的数据以文本方式存储(假设文件名为vip.txt),每一条数据存一个会员姓名和会员积分信息,用空格分给,每条记录结束是一个回车符。数据读取出来之后放入B2[1]为头的链表中,然后将B2[1]代表的数据删除(即第一条记录),把其余部分的数据重新写入到文件中。

    前面的定义略

    main()

    {

    FILE *fp;

    struct vip *ptr, buf;

    fp = fopen("vip.txt", "r");

    if(fp == NULL) {

    printf("Can not open file vip.txt\n");

    exit(-1);

    }

    ptr = NULL;

    /* 读取vip.txt中的数据,存放在B2[1]为头的链表中 */

    while(fscanf(fp, "%s %d", buf.name, &buf.point) != EOF) {

    if(ptr = NULL)

    ptr = &B2[1];

    else {

    ptr->next = (struct vip *)malloc(sizeof(struct vip));

    ptr = ptr->next;

    }

    strcpy(ptr->name, buf.name);

    ptr->point= buf.point;

    ptr->next = NULL;

    }

    fclose(fp);

    /* 将文件中的内容显示在屏幕上 */

    ptr = &B2[1];

    while(ptr) {

    printf("%s %d\n", ptr->name, ptr->point);

    ptr = ptr->next;

    }

    /* 删除B2[1]的内容 */

    fp = fopen("vip.txt", "w"));

    if(fp == NULL) {

    printf("Can not write file vip.txt\n");

    /* 释放列表中分配的内存空间,很简单,实现略 */

    exit(-2);

    }

    /* 删除第一条记录,用第二条记录的值代替第一条 */

    ptr = B2[1]->next;

    if(ptr != NULL) {

    strcpy(B2[1].name, ptr->name);

    B2[1].point = ptr->point;

    B2[1].next = ptr->next;

    free(ptr);

    }

    /* 将新的链表保存到文件中 */

    ptr = &B2[1];

    while(ptr) {

    fprintf(fp, "%s %d\n", ptr->name, ptr->point);

    ptr = ptr->next;

    }

    fclose(fp);

    /* 释放分配的内存,实现略 */

    }

    展开全文
  • 本篇文章里小编给大家整理的是关于c语言如何读取txt文件内容,需要的朋友们可以参考下。
  • 信捷PLC C语言
  • 用C语言从txt文件中读取数据可以使用C标准库文件自带的文件接口函数进行操作。 一、打开文件: FILE *fopen(const char *filename, const char *mode); 因为txt文件为文本文件, 所以打开时选择的mode应为"r"或者...
  • 实现用C语言在文件user.txt输入几个用户的数据(包括姓名,年龄等)代码如下#includeint main(void){FILE*file1;int age;char name[25];char k;file1=fopen("user.txt","w");if(file1=NULL){printf("error opening")...
  • 匿名用户1级2016-07-02 回答哥哥我想出的办法是这样的:因为兄弟文件格式是一行一行的, 且每行开头是一个关键字,然后后面是相应数据, 所以哥哥是这么想的, 比如要读"AB2345"这个关键字对应行的内容, 那首先变量或者...
  • 帮数学系出C语言测试题,评测用到了Cena,但是Cena需要使用文件输入/输出,而他们不会,所以我就写了一份说明给他们,顺便发到博客上...C语言文件操作参数很多,我就不一一列举了,我只把做题时要用到的几个函数...
  • C语言进行GPS数据解析

    2020-02-24 21:26:15
    GPS数据是一条条报文,如何把报文里面的经度、纬度、UTC时间,速度,卫星数,水平精度因子等信息提取出来呢?本文C实现了对GPS数据的解析,包括GPGGA,GPRMC等的解析,用户可以根据具体需求来使用
  • 用C语言输出文件内所有数据

    千次阅读 2021-05-24 05:28:26
    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include "string.h... } 我先write函数输入两个同学的数据后,read函数只显示第一个同学的数据,为什么?要怎么改函数才能 输出所有同学的数据
  • C语言中文件操作读写数据函数的应用.pdf
  • if(fp == NULL) { printf("文件读取无效.\n"); return -1; } for(i = 0; !feof(fp); i++) fscanf(fp, "%d", &a[i]); fclose(fp); for(i=0; i ; i++) printf("%d ", a[i]); printf("\n"); return 0; } int readfile...
  • 怎样用C语言从txt文件中读入数据

    千次阅读 2021-06-03 04:37:56
    有一点要注意如果你的是TC之类的编译器,它是DOS下工作的不支持8个字符以上的长文件名,所以要短名如:stud_r~1.txt#include "stdio.h"void main(){FILE *pf;char str[100];int i;for(i=0;i<100;i++) str[i.....
  • w 这种方式打开的文件句柄,只能写,如果文件存在则将长度清零,否则新建文件,这种句柄通过seek之后,seek位置之前的文件数据全部变成0x00 w+ 同w选项,只不过多了一个可读功能 a 这种方式打开的文件,可以写,但是...
  • 方法1:fgets和fputs#include #includeint main(int argc, char const *... //1.txt 文件名和路径 当运行 .c 文件和目标文件 1.txt同一目录时可直接写文件名//"a+" 表示1.txt 可读写,写的时候在文件末尾开始写i...
  • C语言中文件的存取方式是什么

    千次阅读 2021-05-21 08:54:14
    2011-05-27 回答首先,你的理解有点偏差,文件的存取方式不是由开发语言决定的,而是由文件系统决定的,linux是用c语言开发的,其文件系统的存取方式有三种 1. 顺序存取 顺序存取是按照文件的逻辑地址顺序存取。 ø ...
  • C语言之利用文件保存数据

    千次阅读 2021-12-24 14:00:45
    1.从键盘输入一个字符串,将其中的小写字母全部转化成大写字母,然后输出到一个磁盘文件test保存.输入的字符以"!"结束 需要代码规定的地方新建一个文件,我这里是桌面新建的 test.txt #define _CRT_SECURE_NO...
  • C语言新建文件写入数据

    千次阅读 2021-05-27 14:33:33
    C语言提供了fwrite()函数,用于往一个打开的文件指针写入数据。函数的定义如下: size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); 函数说明:函数往stream文件指针指向的文件...
  • 本文实例为大家分享了C语言按行读写文件的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_WARNINGS #include #include #include void my_fputs(char* path) { FILE* fp = NULL; //"w+",读写方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 355,737
精华内容 142,294
关键字:

在c语言中文件的数据可以用