我如何将char
复制到int
以使用此程序在C中进行数学计算。
我已经写了一个包含字段name
,sname
和age
的文件。
档案示例:
Antonio Giannini 14
Mimmo Cava 22
Luck Santo 33
代码:
struct contact {
char name[20];
char sname[20];
char age[20];
};
struct contact users[MAX];
/**
* Read the file.
*/
void read() {
FILE *f;
i = 0;
f = fopen("file.txt", "r");
if (fopen == NULL) {
printf("The file does not exist");
} else {
system("cls");
while (!feof(f)) {
fscanf(f,"%s", users[i].name);
fscanf(f,"%s", users[i].sname);
fscanf(f,"%s", users[i].age);
i++;
}
fclose(f);
}
}
/**
* Prints the content.
*/
void stamp() {
system("cls");
printf("%-10s%-10s%-10s\n\n", "name", "sname", "age");
for (j=0; j < i-1; j++) {
printf("%-10s%-10s%-10s\n\n", users[j].name, users[j].sname, users[j].age);
}
}
代码到现在为止,但是,现在我如何才能只使用age
进行数学计算,如总数或平均值,或者最老和最年轻的数学计算?
答案 0 :(得分:0)
很简单 - int total_age = atoi(user [0] .age)+ atoi(user [1] .age)等等,直到最后一条记录。
如果你想这样做,你可以使用itoa()将整数转换为字符串。 请使用以下read()函数。
void read() {
FILE *f;
int total_age = 0;
int i = 0;
f = fopen("file.txt", "r");
if (f == NULL) {
printf("The file does not exist");
} else {
system("cls");
while (!feof(f)) {
fscanf(f,"%s %s %d", users[i].name,users[i].sname,users[i].age);
total_age = total_age + (users[i].age);
i++;
}
printf("Total age is %d",total_age);
fclose(f);
}
}
并按如下方式更改结构 -
struct contact {
char name[20];
char sname[20];
int age;
};