我有一个看起来像这样的文本文件:
coordinate size average Intensity
========== ==== =================
(187,18) 31 217.8
(58,29) 34 212.1
(124,71) 47 216.1
(245,71) 32 197.8
(96,113) 30 191.6
(244,135) 33 199.6
我试图仅接收变量的“大小”但由于某种原因我无法这样做。这是我试过的代码:
FILE * textofGags;
int xx;
fopen_s(&textOfGags,"dust.txt","rt");
fseek(textOfGags,0L,SEEK_SET);
fscanf_s(textOfGags,"%*[^\n]\n,",NULL);
fscanf_s(textOfGags,"%*[^\n]\n,",NULL);
while(fscanf_s(textOfGags,"%d",&xx)==1){
printf("%d",xx);
fscanf_s(textOfGags,"%*[^\n]\n,",NULL);
}
现在我只想尝试打印以查看问题所在,但似乎我甚至无法收到该号码。有人可以指出我的错误吗?
答案 0 :(得分:2)
我想你有一些错误标记的downvotes :-) 无论如何,我认为我们应该互相帮助。
代码看起来有点复杂,而且 - 即使使用调试器 - 也很难找出fscanf("%*[^\n]\n," ...
是否将文件位置实际移动到正确的位置;
我建议逐行读取文件,然后根据它的具体内容分析每一行,并读入大小。例如,可以使用size-value是结束')'
之后的第一个整数值的事实,并且可以忽略没有')'
的行。
希望它有所帮助: - )
int main() {
FILE * textofGags;
int xx;
textofGags = fopen("dust.txt","rt");
if (textofGags) {
char line[1000];
while (fgets(line,1000,textofGags)) {
char *closingBrace = strchr(line, ')');
if (!closingBrace)
continue;
closingBrace++; // first char after the ')'
if (sscanf(closingBrace,"%d",&xx) == 1) {
printf("size: %d \n", xx);
}
}
}
}