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

时间:2017-12-02 15:13:51

标签: c arrays file-io multiple-files

因此,我尝试将多个[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

我使用http://jsfiddle.net/6khr8e2b/语句确保通过打印数组值来读取文件。

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

1 个答案:

答案 0 :(得分:0)

如果数组足够大以捕获最长的行,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;
        }
    }
}