精华内容
下载资源
问答
  • #include <stdio.h> int main() { int ch; int count; FILE *fp = freopen("in.txt","r",stdin);... /* 跳过一行 */ fgets(buf, sizeof(buf), fp); ...
    #include <stdio.h>
    
    int main()
    {
        int ch;
        int count;
        FILE *fp = freopen("in.txt","r",stdin);
        char buf[1024];
    
        fp = stdin;
        /* 跳过第一行 */
        fgets(buf, sizeof(buf), fp);
        count = 1;
        while (fgets(buf, sizeof(buf), fp)) {
            /*  检测最后一行 */
            if (EOF != (ch = fgetc(fp))) {
                ungetc(ch, fp);
                printf("%6d\t%s", ++count, buf);
            } else {
                break;
            }
        }
        return 0;
    }
    

     

    展开全文
  • 由于.csv格式的文件是如下的格式,所以我们知道它是以逗号作为分隔符的,一行的结束符就是\n 2018/10/24 16:28,橙子,水果 2018/10/21 10:16,啤酒,饮料 2018/10/22 10:16,水杯,玻璃瓶 2018/10/23 09:19,硫酸,腐蚀品 ...
  • C语言 一行一行读取文件txt

    万次阅读 多人点赞 2019-11-01 10:58:44
    参考:怎么用c语言实现读取个txt文件里的数据 要按行读出来 打开文件 fopen(“需要打开的路径”) 然后使用fgets函数读取行 #include <stdio.h> #include <stdlib.h> #include <string.h> #...

    参考:怎么用c语言实现读取一个txt文件里的数据 要按行读出来

    打开文件 fopen(“需要打开的路径”)
    然后使用fgets函数读取行

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX_LINE 1024
    int main()
    {
     char buf[MAX_LINE];  /*缓冲区*/
     FILE *fp;            /*文件指针*/
     int len;             /*行字符个数*/
     if((fp = fopen("test.txt","r")) == NULL)
     {
     perror("fail to read");
     exit (1) ;
     }
     while(fgets(buf,MAX_LINE,fp) != NULL)
     {
     len = strlen(buf);
     buf[len-1] = '\0';  /*去掉换行符*/
     printf("%s %d \n",buf,len - 1);
     }
      return 0;
    }
    

    参考:c语言一行一行的读取txt文件
    工作中做的项目,经常需要读取一些脚本,就是一些txt文件,用python读取很简单,但是我们很多工具也是用c/c++语言写的,用c的话读取文件我一般是按照如下的方式:

    while(fscanf(pFile,"%[^\n]",CmdLine)!=EOF)
    { 
    fgetc(pFile);
    ...
    }
    

    其中,pFile是调用fopen函数返回的文件句柄,cmdline是定义的char型数组,用来存储一行的内容。此code运用了fscanf的方式,一行一行的读取txt文件,在while中做处理。其中的%[^\n]属于正则表达式,代表不遇到换行符就一直读下去,直到遇到换行符\n,fscanf函数就退出。退出后进入while,执行fgetc函数,读取一个字符,文件句柄向后移动一个字符,相当于跳过了\n换行符,下一次就从下一行开始读了。

    参考:fscanf()函数详解
    fscanf()函数(有点像正则表达式):

    功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。

    用 法:int fscanf(FILE *stream, char *format,[argument…]);

    int fscanf(文件指针,格式字符串,输入列表);

    for example:

    FILE*fp;

    chara[10];

    intb;

    doublec;

    fscanf(fp,"%s%d%lf",a,&b,&c)

    返回值:整型,数值等于[argument…]的个数

    首先我有一个data。txt的文件里面的数据格式如下:
    
    2,50,41,w,20.585828
    
    4,52,51,r,52.012547
    
    .........................
    
     许多条类似的记录,都是以,来分隔的
    
    .......................
    
    
    
    我实现的功能就是把上面文件中的数据的五个字段赋值给相应的五个变量,并且输出这些变量的值。实现的程序如下:
    
    #include<stdio.h>
    #include<stdlib.h>
    
    
    int main()
    {
      int fd;
      long dev;
      long offset;
      long length;
      char ch;
      double ts=0.000000;
      if((fd=fopen("/home/haixian/ceshi/data.txt","r"))<0)
       {
         printf("open the file is error!\n");
         exit(0);
       }
      lseek(fd,0,SEEK_SET);
      
      
      while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts))
      {在这里就是第二个参数指定分隔参数的格式,在这里使用的是,来分隔。这样就很容易的获取了记录的各个字段的值并不需要自己编写函数来进行解析什么的。
         printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts);
      }
    close(fd);
    return 0;
    }
    
    展开全文
  • 按行读取文件,分别获得文件中的每一行。2.读取文件中的每一个字符并写入字符串数组。 1.按行读取文件,分别获得文件中的每一行。 char Buffer[100]; fp = fopen (“filename”, “r”); while(fgets(Buffer,sizeof...

    1.按行读取文件,分别获得文件中的每一行。

    char Buffer[100];
    fp = fopen (“filename”, “r”);
    while(fgets(Buffer,sizeof(Buffer)-1,fp))
    {
    printf("%s\n",Buffer);
    }
    //每一次循环得到新的一行并写入Buffer

    2.读取文件中的每一个字符并写入字符串数组。

    char Buffer[100];
    int i = 0;
    while(fscanf(fp,"%c",&Buffer[i] )
    {
    i++;
    }
    //每一次循环得到新的一个字母并写入Buffer
    //如果需要一次得到若干字符,下一轮再一次得到若干字符:
    fscanf(fp,"%c%c%c%c%c",&Buffer[0],&Buffer[1],&Buffer[2],&Buffer[3],&Buffer[4]);
    //如果文件中是用空格分隔的数字,也可以用这个得到数字,会自动跳过空格与换行。

    注意:

    读文件时,每次将文件fclose()然后再fopen()后,将从第一行开始重新读。
    写文件时,如果是用a+打开,会删除之前文件的内容,用a打开才是接着前面的写在最后

    展开全文
  • 例:编写个程序,以个字符和任意文件名作为命令行参数。然后输入字符所在的整行内容。(此题目是我为了讲解而自己想的,若有不足之处请多指教) 代码如下: #include <stdio.h> #include <stdlib.h>...

    让我们从一道例题来分析,分析我都写在注释里面了。
    例:编写一个程序,以一个字符和任意文件名作为命令行参数。然后输出字符所在行内容。(此题目是我为了讲解而自己想的,若有不足之处请多指教)
    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    //这个函数的返回值用来作为主函数中if语句是否输出
    int has_ch(char ch, const char *line);
    int main(int argc, char *argv[])
    {
    	FILE *fp;//文件指针
    	char a;
    	char b[256];//用来存储从文件中读取的内容,因为一行最大为能容纳256字符
    
    	a = argv[1][0];//读取给定的字符
    	//这个if语句用来判断文件是否已经打开,这条语句请不要缺少。
    	//我们现在是以打开一个文件来做例子,文件请自行设置
    	if ((fp = fopen(argv[2], "r")) == NULL){
    		printf("文件没有被打开\n");
    		exit(EXIT_FAILURE);//这条语句是退出程序的意思
    	}
    	//while循环条件的意思是从fp这个文件指针中最大能读取256个字符给b这个数组,
    	//当然如果你文件中一行不够256个字符的话,fgets函数会因为读取到换行符
    	//而结束,当读到文件结尾时fgets函数返回的NULL会退出循环。
    	while (fgets(b,256,fp))
    	{
    //if语句通过has_ch函数的返回值来判断是否打印读取的字符,也就是通过这个函数
    //来判断是否满足题目条件而打印字符。
    		if (has_ch(a, b))
    		//条件成立就打印读取到的一整行,不成立就开始下一行的判断
    			fputs(b, stdout);
    	}
    	fclose(fp);//程序完成后也不要忘关闭文件哦,养成一个良好的习惯。
    	return 0; 
    }
    int has_ch(char ch, const char *line)
    {
    //这个while循环通过指针的形式来遍历查到是否有特定的字符ch,有的话就返回1使
    //if语句进行从而打印有特定字符的一行,而这一行没有特定字符就返回0跳过主函数
    //的jf语句(ch是特定字符,line指针是主函数传过来的一行字符串)
    	while (*line)
    	if (ch == *line++)
    		return 1;
    	return 0;
    }
    

    因为每个人的需求不一样,所以这个例子希望能够给你们一些启发,觉得还不错的话,麻烦给点个赞吧。

    展开全文
  • C++读取文本文件跳过注释和空行

    万次阅读 多人点赞 2018-08-26 16:00:18
    例如用文本文件存储空间点的坐标,设定文件的每一行有三个数,分别表示x y z,比如 0 0 0 1 2 3 2 3 3 表示(0, 0, 0), (1, 2, 3), (2, 3, 3)三个点。 由于文件里面的数据组织格式是自己定义的,别人不一定能看得...
  • 按照要求写了个读文件的程序,但是出了一点我不能理解的bug 希望老师指点指点 程序: ``` int main () { char comet[6]; char group[6]; FILE *input; input=fopen ("ride.in", "r"); ...
  • c语言一行一行的读取txt文件

    万次阅读 多人点赞 2017-02-28 16:11:18
    工作中做的项目,经常需要读取一些脚本,就是一些txt文件,用python读取很简单,但是我们很多工具也是用c/c++语言写的... ...}其中,fFile是调用fopen函数返回的文件句柄,cmdline是定义的char型数组,用来存储一行的内
  • 第1章 声明和初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型...7.6 我使用fgets将文件的所有行读入一个数组,为什么读入的每一行都是...
  • CSV跳过一行读取文件内容

    千次阅读 2019-10-16 17:13:36
    读取csv或tsv格式的文件时,经常需要读取跳过文件头,直接读取文件内容,假定我们要读取的文件格式如下: data.tsv id score review 1 5.0 This is a good product 2 3.0 No...
  • C语言文本文件实现局部修改

    万次阅读 多人点赞 2018-06-17 13:23:59
    前言:以往进行文件操作时,都是以链表(变量)作为用户所见数据与文件数据之间的...但是在控制台程序中,没有C语言做不到的事,只有C语言不擅长的事。下面介绍一下文本文件的局部修改(覆盖写入)。当然,不进行覆盖...
  • // 将文件加载到内存中 txt_tmp = (char *)malloc(txt_size); fread(txt_tmp, txt_size, 1, fp); // handle printf("txt:\r\n%s",txt_tmp); // 从内存中释放文件 free(txt_tmp); fclose(fp); return 0; }
  • C语言 txt文件的读写

    万次阅读 多人点赞 2019-03-07 13:32:47
    C语言txt文件的读写 创建个txt文本文件并写入数据: void file_write(char *stuid,char *name,float score) { //写数据 int i; FILE *outfile; outfile = fopen(&quot;scores.txt&quot;,&...
  • C语言之输入输出

    万次阅读 多人点赞 2019-04-30 00:03:47
    C语言中,有三个函数可以用来在显示器上输出数据,它们分别是: puts():只能输出字符串,并且输出结束后会自动换行。 putchar():只能输出单个字符。 printf():可以输出各种类型的数据,在前面的很多章节中都...
  • 如图三列数据,我只想第三列数据(https://img-ask.csdn.net/upload/201705/02/1493708233_7575.png)
  • 今天遇到C语言文件操作问题,花费了很长时间,发现自己的C语言文件操作学的不怎么样,特此记录。 题目要求: 个多行文件里面,需要删除多余的空白 将<<<和...开头的放入a.txt文件中 将包含...
  • C语言——文件操作(读取文件保存到结构体)

    万次阅读 多人点赞 2019-03-09 16:25:02
    之前写过一篇文章实现了文件操作的任意读写,今天来实现文件操作,读取txt文件,将数据保存到结构体中。 C语言——文件操作(实现带空格字符串任意读写) 先介绍C语言中一个功能强大的函数——sscanf(),它是C语言...
  • C语言——文件操作(实现带空格字符串任意读写)

    万次阅读 多人点赞 2019-03-03 11:29:21
    本文主要是记录自己在实现带有空格字符串任意读写时所遇到的问题与解决...fgetc ()从文件中读取个字符 函数原型:int fgetc(FILE *fp);功能说明 :从fp所指文件中读取个字符。参数说明 :fp文件指针,它指向...
  • C语言 文件操作专项练习

    千次阅读 多人点赞 2018-11-12 11:20:56
    1.文件中存储的学生信息按照班级编号升序排列,每个班级的人数可以不同,要求读取文件中所有学生的成绩,计算每个班级的平均成绩,将班级编号和平均成绩输出。 存储格式:  145811 fuxin 100  145811 ...
  • C语言常用文件操作,增删改查文件

    千次阅读 2020-06-16 13:46:23
    //mode可以是"r","w"写,“a”附加等等 if((fp=fopen(path,mode)==NULL)){ printf("文件创建失败"); } fclose 操作完文件调用该函数释放资源。 fclose(FILE* fp); access 可以用于测试某个文件是否存在。 ...
  • #include <stdio.h> #include <stdlib.h> #include <string.h> #define path "C:/Users/ZS/Desktop/test.ini" ...//实现读取配置文件一行,当行的开头为#时则跳过这行 void re...
  • C语言:在文件的指定位置实现局部修改,而无需重写文件的其他部分前言(可跳过)具体需求解决思路解决代码实验结果反思与总结(可跳过)其他需求的实现 前言(可跳过) 在进行大型文件的读写操作时,若采用打开...
  • c语言文件中读取输出二维数组

    千次阅读 2021-03-14 11:02:09
    文件中读取输出二维数组 #include <stdio.h> int main(int argc,char** argv) { float a[3][3]; int i,j; FILE* fp=fopen("a.txt","r"); //打开文件 if(fp==NULL) { printf("无文件"); return -1; }
  • c语言如何从文件中读取信息到链表——文件操作

    千次阅读 多人点赞 2021-01-02 12:15:56
    写这篇博客原因: ...但是发现,文件操作这方面很少有简单易懂实用的博客。我作为大一新生,把自己学到的点点功能分享一下。希望可以加快学者们的步伐。 进入正题: 先看效果 是不是你们想要的。 ...
  • 读取文件时,不跳过空格和换行

    千次阅读 2020-01-03 09:03:58
    读取文件时,如何读出里面的空格和换符 加入noskipws算子,这样可以不跳过空格和换行 例如char Miweninfile >> noskipws >> Miwen;
  • C语言文件读取并写入链表

    万次阅读 多人点赞 2018-09-24 17:11:06
    C语言没啥要逼逼的,直接上代码,用心体会 #include "stdio.h" #include "stdlib.h" /***************************** 链表节点结构体 ****************************/ typedef struct link_node { int ID; ...
  • 去掉csv文件的第一行

    万次阅读 2016-04-20 19:42:13
    在用MR或Spark处理较大的csv文件时,经常会遇到这么一个问题,csv文件的第一行往往是列名,怎么办呢? guo@guo:~$ sed 1d dual.txt > noheader.txt 用sed 1d就可以把dual.txt文件的第一行去掉,>是指将前面的命令的...
  • C语言读取文件(二)——fscanf 详谈

    万次阅读 多人点赞 2019-06-13 21:58:20
    原创: hxj7 ...第部分:问题和结论 fscanf 函数的原型是: int fscanf(FILE* stream, const char* format, [argument...]); fscanf 函数与 scanf 函数用法类似,只不过前者用于读取文件流的数据而已。...
  • 使用c语言实现INI文件的读写

    千次阅读 2019-04-06 15:27:14
    INI文件是Windows上独有的种存储结构,这只是Windows下发明的存储结构,也有很多类似的,比如xml! 就说一下TXT文本 是按读取,这就是它的格式! 而xml是类似二叉树的带层次结构的存储方式 INI则是以键值的...
  • Python十大装B语法

    万次阅读 多人点赞 2019-11-01 14:29:21
    Python 是种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,060
精华内容 12,024
关键字:

c语言读文件跳过一行

c语言 订阅