我需要在'='符号之后找到文本文件行中的字符数,直到行的末尾或'#'符号。然后我需要向后工作直到我到达第一个非空白空间并使用memcpy
打印出字符串。
示例:如果该行说:myprop=this is a sentence #value
,我需要打印出来:“这是一个句子”。这是我打开文件和malloc之后的代码。
while(fgets(buffer, 1024, fp) != NULL)
{
if((strstr(buffer, propkey)) != NULL)
{
for (
//need help here
memcpy(value, buffer + 7, 7); //the 7 represents the # of characters till the equal sign
printf("\nvalue is '%s'\n", value);
}
}
答案 0 :(得分:1)
您可以通过'='
找到strchr()
。
从那里循环,直到您点击'\0'
或'#'
。计算循环。在循环内部,检查第一个非空白空间(isspace()
),并记住(即变量)你找到它。
在循环之后,您将获得所需的所有信息:复制(从第一个非空白的记忆位置开始)一些字节相等(循环次数 - 第一次非空白的位置)。
这就是说,一旦你在21天的国家/地区退出教程/ C,你应该真的使用现成的库来做这样的事情..
答案 1 :(得分:0)
您可以使用sscanf
这样获得它:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf[] = "myprop= this is a sentence #comment";
char value[100];
void get_value(char *buf, char *value)
{
int len;
sscanf(buf,"%*[^=]= %[^#]",value);
len = strlen(value);
while((--len) && value[len]==' ')
value[len] = '\0';
}
int main()
{
get_value(buf, value);
printf ("The value is __%s__\n",value);
}
sscanf(buf,"%*[^=]= %[^#]",value);
:这将使字符串从=
开始直到#
,并且开头的空格字符不会加盖,但最后的空格字符将被加上
为了删除带帽字符串末尾的空格字符,我使用了以下代码:
len = strlen(value);
while((--len) && value[len]==' ')
value[len] = '\0';