码迷,mamicode.com
首页 > 编程语言 > 详细

c语言中fscanf和fprintf

时间:2017-08-26 18:42:25      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:errno   格式   typedef   nbsp   空格   new   定位   http   ring   

很多时候我们需要写入数据到文件中时都觉得很困扰,因为格式乱七八槽的,可读性太差了,
于是我们就想有没有什么函数可以格式化的从文件中输入和输出呢,还真有。下面我将讲解
一下fscanf和fprintf的强大之处。

 

1、fscanf(可以从一个文件流中格式化读出数据,遇到空格或回车就停止)
原型: int fscanf(FILE *stream, const char *format, ...); //fscanf(文件流指针,格式字符串,输出表列);
参数:
FILE *stream :文件流指针
const char *format, ... :字符串的格式
例子 :

fscanf(fp,"%s %s %d",new1->number,new1->staddress,&new1->price);(这样写的话数据输入到文件中时每个数据中间就会有一个空格)

或者写成:
fscanf(fp,"%s,%s,%d",new1->number,new1->staddress,&new1->price);(这样写的话数据输入到文件中时每个数据中间就会有一个‘,’)



2、fprintf(可以从一个文件流中格式化写入数据)
原型: int fprintf(FILE *stream, const char *format, ...); //fprintf(文件流指针,格式字符串,输出表列);
参数:
a、FILE *stream :文件流指针
b、const char *format, ... :字符串的格式

例子 :
fprintf(fp,"%s %s %d\n",new->number,new->staddress,new->price);    //同上

或者写成:
fprintf(fp,"%s,%s,%d\n",new->number,new->staddress,new->price);  //同上

 

 

下面是代码:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

#define LENGTH 100 //数组的大小

typedef struct 
{
    char number[LENGTH];
    char staddress[LENGTH];
    int price;
}*node,Node;

int main(int argc,char *argv[])
{
    FILE *fp;
    fp = fopen("test.txt","a+"); //以读写的权限打开文件(如果文件不存在则创建)
    if(fp == NULL)
    {
        perror("fopen");
        exit(1);
    }
    
    node new,new1; //new用来存放写入到文件中的数据,new1用来存放从文件中读出的数据
    
    //为两个结构体指针分配空间
    new = (node)malloc(sizeof(Node));
    new1 = (node)malloc(sizeof(Node));
    
    //清空
    memset(new,0,sizeof(node));
    memset(new1,0,sizeof(node));
    
     
    strcpy(new->number,"20170816");
    strcpy(new->staddress,"南宁");
    new->price = 100;
    
    fprintf(fp,"%s %s %d\n",new->number,new->staddress,new->price); //格式化写入数据到文件中
fseek(fp, 0, SEEK_SET); //文件指针重置,因为上面把数据写入文件的时候已经把文件流指针定位到文件尾了,所以要重新定位到文件头 fscanf(fp,"%s %s %d",new1->number,new1->staddress,&new1->price);//格式化从文件中读出数据 printf("%s %s %d\n",new1->number,new1->staddress,new1->price); //释放两个结构体指针 free(new); free(new1); fclose(fp); //关闭文件 return 0; }

 

这是我在ubuntu上运行的结果:

屏幕上的输出:

技术分享

 

打开test.txt文件中的内容:

技术分享

c语言中fscanf和fprintf

标签:errno   格式   typedef   nbsp   空格   new   定位   http   ring   

原文地址:http://www.cnblogs.com/wurenzhong/p/7435846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!