我已经读取了所需文件中的所有文本,它现在存储在 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/