嵌入式技术论坛
直播中

石玉兰

7年用户 1440经验值
私信 关注
[问答]

如何读取RT-Thread文件系统.txt文本中指定行的数据?

文件系统中,存放的.txt文本文档,怎么读取指定行的一行数据。存储的数据,每行数据长度不一样长。如图所示的数据,怎么读取指定的一行数据。谢谢

回帖(2)

siyugege

2022-4-19 09:52:53
没有直接读取某一行的,但是有读取一行的,所以就可以按照行来读,要读取第n行,必须找到第n-1行 => 则必须找到n-2行 … 必须找到第1行。所以例如读取第10行的字符串,只能一行一行找。

参考下面的代码,按照下面代码的流程一行一行读就行了,一直等读到你需要的行。

#include

//读取filename文件(路径)、第 whichLine+1 行文本。

char * ReadSpeacialLine(char *filename, int whichLine)

{

    FILE *fp;      

    int currentLine = 0; //当前读取的行

    char strLine[1024];        //每行最大读取的字符数,可根据实际情况扩大

    if ((fp = fopen(filename, "r")) == NULL) //判断文件是否存在及可读

    {

        printf("error!");

        return NULL;

    }

    while (!feof(fp)) // 检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0

    {

        if (currentLine == whichLine)

        {

            fgets(strLine, 1024, fp);  //读取一行

            //printf("%s", strLine); //输出

            return strLine;

        }

        fgets(strLine, 1024, fp);  //读取一行,并定位到下一行

        currentLine++;

    }

    fclose(fp);                     //关闭文件

    return NULL;

}

int main() {

    char txtFile[] = "test.txt";

    int i = 11;

    printf("第%d行n%s", i+1

        , ReadSpeacialLine(txtFile, i));  //ReadSpeacialLine返回的字符串里自带换行

    getchar();  //防止结束闪退

    return 0;

}
举报

张宇

2022-4-19 09:53:06
没有指定行的操作,需要自己按换行分割,数出需要的行来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分