如何在数组中进行类型转换来分离数据?

时间:2019-01-03 13:24:10

标签: c pointers types casting

我想在大小为100x4的同一数组中添加2种不同的类型。在第一栏中,我想添加食物的名称(使用指针),在第二栏中和第三栏中,添加一些数字,例如卡路里和进食时间(通过类型转换)。

我已经尝试了很多天,但是找不到任何解决方案。有没有办法通过类型转换解决此问题?

#include <stdio.h>
int main(){
    char *table[100][4];
    int n=0;
    int j;
    for (j=0;j<4;j++){
        if (j==0){
            printf ("Add your food:\n");
            scanf("%c",&table[n][j]);
        }else if (j==1){

            printf ("Add calories:\n");
            (float) *table[n][j];
            scanf("%d",&table[n][j]);

        }else if (j==2){
            (float) *table[n][j];
            printf ("Add the time you ate:\n");
            scanf("%.2f",&table[n][j]);
        }else if (j==3){
            printf ("Kati\n");
        }
    }
    for (j=0;j<4;j++){
        if (j==0){
            printf ("food:%c",&table[n][j]);
        }else if (j==1){
                        (float) *table[n][j];

            printf ("calories:%f",*table[n][j]);
        }else if (j==2){
                        (float) *table[n][j];

            printf ("time you ate:%f",*table[n][j]);
        }else if (j==3){
            printf ("Kati\n");
        }
    }
}

1 个答案:

答案 0 :(得分:2)

当您有多个不同的数据要作为一个单元对待时,应为此使用struct并具有一个结构数组。

您可以将结构定义为:

struct food {
    char name[50];
    int calories;
    float time;
};

并像这样使用它:

struct food table[100];
int n=0;

for (n=0; n<100; n++) {
    printf ("Add your food:\n");
    scanf("%49s",table[n].name);

    printf ("Add calories:\n");
    scanf("%d",&table[n].calories);

    printf ("Add the time you ate:\n");
    scanf("%f",&table[n].time);
}

for (n=0; n<100; n++) {
    printf("food:\n");
    printf("  name: %s\n", table[n].name);
    printf("  calories: %d\n", table[n].calories);
    printf("  time: %.2f\n", table[n].time);
}