【发布时间】:2020-12-12 13:46:40
【问题描述】:
我是 C 编程语言的新手,在练习使用 struct 时,我无法使用 if 语句在函数内打印 struct 值,它会打印内存地址(我认为)。但是当我尝试在没有 if 语句的情况下调用该函数时,它工作得很好。 这是使用 if 语句的代码
#include <stdio.h>
typedef struct{
int age[10];
int input;
}data;
int inputData(){
data inputData;
int i;
printf("Total Data :");
scanf("%d", &inputData.input);
for(i=1;i<=inputData.input;i++){
printf("Input your age :");
scanf("%d", &inputData.age[i]);
}
return main();
}
void viewData(){
data viewData;
int i;
for(i=1;i<=viewData.input;i++){
printf("%d", viewData.age[i]);
}
}
int main(){
int menu;
printf("Input menu :");
scanf("%d", &menu);
if(menu==1){
inputData();
}else if(menu==2){
viewData();
}
}
这是输出
Input menu :1
Total Data :2
Input your age :21
Input your age :31
Input menu :2
0853839645327661046072584004611648742404199977042107010648742008541535363276664803040725840046264875200419984104210701064874800854153536327666480368002131327661046
但是,当我删除 inputData 函数中的 return main() 并将 int main 更改为:
int main(){
inputData();
viewData();
}
它工作得很好。输出:
Total Data :2
Input your age :21
Input your age :31
2131
请帮助我找到使 if 语句代码有效的方法。任何帮助将不胜感激,谢谢。
【问题讨论】:
-
数组从零开始:
for(i=1;i<=inputData.input;i++){-->for(i=0;i<inputData.input;i++){.
标签: c if-statement struct