我想在大小为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");
}
}
}
答案 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);
}