无法从文本文件中扫描整数

时间:2017-06-15 21:17:56

标签: c

我有一个看起来像这样的文本文件:

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);
}

现在我只想尝试打印以查看问题所在,但似乎我甚至无法收到该号码。有人可以指出我的错误吗?

1 个答案:

答案 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);
            }
        }
    }
}