从不同位置读取文件并在C中放入一个数组

时间:2016-01-25 23:35:08

标签: c arrays

我想读一个看起来像这样的文件:

Name=José, Age=21  
Name=Antonio, Age=26  
Name=Maria, Age=24

我的问题是如何从不同的位置和不同的行读取名称和年龄,并在names[size]数组ages[size]和年龄#include <stdio.h> #define size 100 int main() { char ch = 0; int i = 0; char names[size]; char ages[size]; FILE *fp1; fp1 = fopen("data.txt", "r"); if(fp1 == NULL) { printf("Error!"); return 1; } while((ch=fgetc(fp1)) != '='); while((ch=fgetc(fp1)) != ',') { fscanf(fp1, "%s", names); i++; } fclose(fp1); printf("Names = %s", names); return 0; } 中添加相同的内容。

我现在有这个:

from_date

任何人都可以解释一下这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

你需要2D阵列。 E.g names[number of record][max length size + 1]
像这样的样本

#include <stdio.h>

#define size 100

int main(void){
    int i = 0;
    char names[size][128];
    char ages[size][4];

    FILE *fp1;

    fp1 = fopen("data.txt", "r");
    if(fp1 == NULL){
        printf("Error!\n");
        return 1;
    }
    while(i < size && 2 == fscanf(fp1, "Name=%127[^,], Age=%3[0-9]\n", names[i], ages[i])){
        i++;
    }
    fclose(fp1);

    int n = i;
    for(i = 0; i < n; ++i)
        printf("Names = %s, Ages = %s\n", names[i], ages[i]);

    return 0;
}