
C语言获得一行的数据还是比较麻烦的,这里讲一下几种曾经用过的方法。第一种,是最笨的方法,就是一个一个
字符的读取,也是最容易想到的方法。具体实现如下:void read_line(char line[]){FILE *fpchar cCharint ifp=fopen("read.txt","r")i=0cChar=fgetc(fp)while(cChar!='\n' &&!feof(fp)){line[i]=cChari++cChar=fgetc(fp)}line[i]='\0'return}但是,这种方法效率比较低。第二种,就是使用Linux环境下,有一个函数getline,说明如下:#define _GNU_SOURCE#include <stdio.h#include <stdlib.hint main(void){FILE * fpchar * line = NULLsize_t len = 0ssize_t readfp = fopen("/etc/motd", "r")if (fp == NULL)exit(EXIT_FAILURE)while ((read = getline(&line, &len, fp)) != 1) {printf("Retrieved line of length %zu :\n", read)printf("%s", line)}if (line)free(line)return EXIT_SUCCESS}第三种,如果使用C++的话,有一个方法比较简单ifstream in("read.txt")string line没测试过,不过问题应该是fgetc这里
fgetc获取到第一个字符,比如第一行的'#'号,然后fgets获取到后面的字符,打印当然就没有第一个字符了,解决方式要么只用fgets,要么把fgetc获取的字符也打印出来
实话是,使用C如此 *** 作是比较复杂的,步骤如下:
1、自我实现
首先需要将所有的文件读取到内存中,之后进行适当的处理,可以定义一个函数,函数的形参是四个三维数组,或者一个4*3的二维数组,之后的 *** 作相当于矩阵的转矩3 * 4。
2、借助三方包
上面说了这其实就是一个矩阵的转矩,那么可以使用第三方的实现矩阵相关运算的库文件。
评论列表(0条)