从 C 中的文本文件复制所需的字符串

标签 c string text strstr

我已经读取了所需文件中的所有文本,它现在存储在 buff 中。我只想复制标识符字符串(例如“标题”)之后的字符串内容。

示例文件如下:

"Title: I$_D$-V$_{DS}$ Characteristic Curves (Device 1)
MDate: 2016-03-01
XLabel: Drain voltage V$_{DS}$
YLabel: Drain current I$_D$
CLabel: V$_{GS}$
XUnit: V
... "

for(;;) {
    size_t n = fread(buff, 1 , DATAHOLD, inFile);

    subString = strstr( buff, "Title");

        if( subString != NULL) {   
            strcpy(graph1.title , (subString + 7));
            subString = NULL;
        }

       ....more if statements....

        if( n < DATAHOLD) {
            break;
        }
}

我知道 strstr() 返回一个指向搜索字符串位置的指针,我添加了 7 以获取搜索字符串和这部分之后的文本工作正常。问题是 strcpy() 将剩余的 buff 字符数组复制到 graph1.title 中。 如何指示strcpy() 只复制与substring 指针在同一行的文本?也许使用 strtok()

最佳答案

我同意 ChuckCottrill , 如果一次读取和处理一行会更好。

此外,由于您正在处理的文件是文本文件,因此您可以在文本模式下打开它。

FILE *fin = fopen("filename", "r");

fgets()读取一行到字符串str。需要注意的是,fgets() 会将尾部的\n' 带到str

fgets(str, sizeof(str), fin);

char *substring;
if( (substring = strstr(str, "Title: ")) != NULL )
{
    strcpy(graph1.title, substring+strlen("Title: "));
}

此时,graph1.title 中将包含I$_D$-V$_{DS}$ Characteristic Curves (Device 1)

关于从 C 中的文本文件复制所需的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646752/

相关文章:

c - Malloc之前的指针

c - malloc 和 free 具有动态变化的结构

swift - 将 0x 格式字符串快速解析为字节

c++ - 将文本文件读入 vector ( double 、 double 、字符串)? C++

Python 检查列表项是否在文本文件中

c - 删除C中链表中的头或唯一节点

C:二叉树,内存分配

c# - 使用基本字符串操作的字符串模式匹配

java - 切割字符串java

css - 如何在 CSS 中添加文本高度