繁体   English   中英

从.txt文件读取到C中的数组

[英]Reading from .txt files into an array in C

因此,我试图将多个.txt文件中的数据读取到单个数组中,但是即使使用单个文件也无法使程序正常工作。 输入文件的格式为[int tabspace int tabspace string] ,例如

004 78 inmW (tabspace between the entries)

006 89 inmW

我希望能够读取两个数字,每个数字成一个单独的数组,并忽略最后的字符串。 到目前为止,我正在使用以下代码对第一个文件执行此操作,但即使第一个条目也无法正确读取。 我还无法找到有关如何处理每个条目中不希望出现的字符串的任何信息。

int main()
{
    int i=0;
    int HR[50];
    int BPD[50];
    int BPS[50];
    float BT[50];
    int HR_Time[50];
    int BT_Time[50];
    int BP_Time[50];
    char buffer[100];
    char temp[10]; 

    FILE *HRfile;
    HRfile=fopen("HR_1.txt","r");

    if(HRfile == NULL)
    {
        printf("Failed to open patient info file.\n");
        exit(1);
    }

    while(fscanf(HRfile,"%d  %d", &HR_Time[i], &HR[i])!=EOF)
    {
        i++;
    }



      fclose(HRfile);

    HRfile=fopen("HR_2.txt","r");
    if(HRfile == NULL)
    {
        printf("Failed to open patient info file.\n");
        exit(1);
    }

    while(fscanf(HRfile,"%d  %d", &HR_Time[i], &HR[i])!=EOF)
    {
        i++;
    }

    fclose(HRfile);

    printf("%d %d", HR[2],HR_Time[2]);

    return 0;
}

我正在使用printf语句通过打印数组的值来确保已读取文件。

但是,我的结果只是一个空白的命令提示符,绝对没有任何内容。

当数组足够大以捕获最长的行时, fgets将读取直到换行为fgets每一行。 while将在文件末尾终止。
使用sscanf从行的开头读取两个整数。
检查i是否不超过整数数组的存储量。

char line[100] = "";
while(fgets ( line, sizeof line, HRfile))
{
    if ( 2 == sscanf(line,"%d  %d", &HR_Time[i], &HR[i]))
    {
        i++;
        if ( i >= 50) {
            break;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM