我想读取一个文件,找到字符串“myprop”,并在“myprop”后面会出现一个“=”号然后是一个数字。我需要将这个数字打印成一个字符串,摆脱空白和评论。我能找到“myprop”字符串,然后我相信我应该使用fscanf,但我遇到了麻烦。如何打印特定字符串后的值
const char *get_filename_property()
{
const char *filename = "myfile.properties";
const char *propkey = "myprop";
char buffer[100], *buffPtr, lastChar, value[50];
int line_num=1, i=0;
FILE *fp;
fp=fopen("myfile.properties", "r");
if (fp == NULL)
perror("Error opening file\n\n");
while(fgets(buffer, 100, fp) != NULL)
{
if((strstr(buffer, propkey)) != NULL)
{
printf("Myprop found on line: %d\n", line_num);
printf("\n%s\n", buffer);
}
line_num++;
}
if (fp)
fclose(fp);
}
int main(int argc, char *argv[])
{
get_filename_property();
system("pause");
return(0);
}
如果什么添加它位于第一装载缓冲和它的其余部分位于第二加载propkey'的'某些部分缓冲?在这种情况下,您无法在文件中找到“propkey”。 – deepmax
您是否需要在程序的任何位置实际使用该值,还是只是将其打印出来?如果你所需要做的只是打印它,我不会费心转换 - 只需找到'='符号(使用'strstr()'的返回值和''myprop''的已知长度来计算到哪里开始扫描),然后直接复制后面的字符进行输出,直到您点击行或空格的末尾或另一个不属于该值的字符。如果你需要这个值,而不是'sscanf()',找到这个值的开始,并使用合适的'strto?()'函数进行转换。 – twalberg
除了随机值位于主CPU寄存器之外,您可能还想考虑从'get_filename_property()'返回一些东西。 – WhozCraig