博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读写文件中字符串的函数
阅读量:4211 次
发布时间:2019-05-26

本文共 2062 字,大约阅读时间需要 6 分钟。

char *fgets(char *string,int n,FILE *stream);

char *gets(char *s);

int fprintf(FILE *stream,char *format,variable-list);

int fputs(char *string,FILE *stream);

int fscanf(FILE *stream,char *format,variable-list);

其中fgets()函数将把由流指针指定的文件中n-1个字符,读到由指针stream指向的字符数组中去,例如:

              fgets(buffer,9,fp);

将把fp指向的文件中的8个字符读到buffer内存区,buffer可以是定义的字符数组,也可以是动态分配的内存区。

注意,fgets()函数读到'\n'就停止,而不管是否达到数目要求。同时在读取字符串的最后加上'\0'。

fgets()函数执行完以后,返回一个指向该串的指针。如果读到文件尾或出错,则均返回一个空指针NULL,所以长用feof()函数来测定是否到了文件尾或者是ferror()函数来测试是否出错,例如下面的程序用fgets()函数读test.txt文件中的第一行并显示出来:

         

#include "stdio.h"

main()

{

FILE *fp;

char str[128];

if((fp=fopen("test.txt","r"))==NULL)

{

printf("cannot open file\n");

exit(1);

}

while(!feof(fp))

{

if(fgets(str,128,fp)!=NULL) printf("%s",str);

}

fclose(fp);

}

 

gets()函数执行时,只要未遇到换行符或文件结束标志,将一直读下去。因此读到什么时候为止,需要用户进行控制,否则可能造成存储区的溢出。

fputs()函数想指定文件写入一个由string指向的字符串,'\0'不写入文件。               

fprintf()和fscanf()同printf()和scanf()函数类似,不同之处就是printf()函数是想显示器输出,fprintf()则是向流指针指向的文件输出;fscanf()是从文件输入。

 

下面程序是向文件test.dat里输入一些字符:

 

#include<stdio.h>

main()

 {

     char *s="That's good news";

     int i=617;

     FILE *fp;

     fp=fopne("test.dat", "w");  

     fputs("Your score of TOEFLis",fp);  

     fputc(':', fp);                     

     fprintf(fp, "%d\n", i);             

     fprintf(fp, "%s", s);               

     fclose(fp);

 }

 用DOS的TYPE命令显示TEST.DAT的内容如下所示:

 屏幕显示

     Your score of TOEFL is: 617

     That's good news

 

下面的程序是把上面的文件test.dat里的内容在屏幕上显示出来:

#include<stdio.h>

main()

{

    char *s, m[20];

    int i;

    FILE    *fp;

    fp=fopen("test.dat", "r");   

    fgets(s, 24, fp);            

    printf("%s", s);

    fscanf(fp, "%d", &i);         

    printf("%d", i);

    putchar(fgetc(fp));          

    fgets(m, 17, fp);            

    puts(m);                     

    fclose(fp);

    getch();

}

  运行后屏幕显示:

  Your score of TOEFL is: 617

That's good news。

 

示例代码如下:

#define  _CRT_SECURE_NO_WARNINGS #include 
#include
#include
void main21_fputs(){ int i = 0; FILE *fp = NULL; //char *filename = "c:\\1.txt"; char *filename2 = "c:/22.txt"; // 统一的用45度 char a[27]= "abcdefghijklmn"; //fp = fopen(filename2, "r+"); //读写的方式 打开文件 如果文件不存在 则报错 fp = fopen(filename2, "w+"); //读写的方式 打开文件 如果文件不存在 则报错 if (fp == NULL) { printf("func fopen() err:%d \n"); return; } printf("打开成功\n"); /* for (i=0; i

 

转载地址:http://jqzmi.baihongyu.com/

你可能感兴趣的文章
Oracle 11g 新特性 -- Database Replay (重演) 说明
查看>>
Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
查看>>
Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明
查看>>
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
/dev/sdxx is apparently in use by the system; will not make a filesystem here! 解决方法
查看>>
RMAN-01009: syntax error: found "dot" 解决方法
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
SQL SERVER中判断某个字段是否包含大写字母
查看>>
修改master库文件路径
查看>>
拷贝增量文件
查看>>
mysql中的 skip-name-resolve 问题
查看>>
删除最后一次的备份文件vbs
查看>>
vbs 实现压缩文件夹为zip文件
查看>>
在VBS中,SET的用法
查看>>
组策略合理限制VBS文件
查看>>