此代码读取文件中的字符并计算字符长度。我如何从第二行读取而忽略从第一行读取?

这是我的代码的一部分:

    int lenA = 0;
    FILE * fileA;
    char holder;
    char *seqA=NULL;
    char *temp=NULL;

    fileA=fopen("d:\\str1.fa", "r");
    if(fileA == NULL) {
    perror ("Error opening 'str1.fa'\n");
    exit(EXIT_FAILURE);
    }

    while((holder=fgetc(fileA)) != EOF) {
    lenA++;
    temp=(char*)realloc(seqA,lenA*sizeof(char));
    if (temp!=NULL) {
        seqA=temp;
        seqA[lenA-1]=holder;
    }
    else {
        free (seqA);
        puts ("Error (re)allocating memory");
        exit (1);
    }
}
cout<<"Length seqA is: "<<lenA<<endl;
fclose(fileA);

最佳答案

记下您看到了多少个\n,以及从第二行读取==1的时间。

    int line=0;
    while((holder=fgetc(fileA)) != EOF) {
     if(holder == '\n') line++;
     if(holder == 1) break; /* 1 because count start from 0,you know */
    }
    if(holder == EOF) {
     //error:there's no a 2nd
    }
   while((holder=fgetc(fileA)) != EOF) {
    // holder is contents begging from 2nd line
   }

您可以使用 fgets() 使其更简单:

进行一次 call 并忽略它(不丢弃结果值,以进行错误检查);

拨打第二个电话,并恳求阅读。

注意:我在这里考虑使用C语言。

09-11 19:22
查看更多