从 C 中的文本文件复制所需的字符串
Copying a desired string from a text file in C
我已经读取了所需文件中的所有文本,它现在存储在 buff
中。我只想复制标识符字符串后的字符串内容,例如 'Title'.
示例文件如下:
"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()
returns 是指向搜索字符串位置的指针,我添加了 7
以仅获取搜索字符串之后的文本,这部分工作正常.问题是 strcpy()
将 buff
字符数组的其余部分复制到 graph1.title
中。
如何指示 strcpy()
只复制与 substring
指针在同一行的文本?也许使用 strtok()
?
一次读取并处理一行。
for( ; fgets(line,...); ) {
do stuff on line
}
您可以使用另一个 strstr
来获取行尾的 位置 ,然后使用 strncpy
类似于 strcpy
,但接受第三个参数,要复制的字符数 输入。
我同意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)
。
我已经读取了所需文件中的所有文本,它现在存储在 buff
中。我只想复制标识符字符串后的字符串内容,例如 'Title'.
示例文件如下:
"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()
returns 是指向搜索字符串位置的指针,我添加了 7
以仅获取搜索字符串之后的文本,这部分工作正常.问题是 strcpy()
将 buff
字符数组的其余部分复制到 graph1.title
中。
如何指示 strcpy()
只复制与 substring
指针在同一行的文本?也许使用 strtok()
?
一次读取并处理一行。
for( ; fgets(line,...); ) {
do stuff on line
}
您可以使用另一个 strstr
来获取行尾的 位置 ,然后使用 strncpy
类似于 strcpy
,但接受第三个参数,要复制的字符数 输入。
我同意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)
。