【问题标题】:How to call a function using if statement and then print the value inside the function如何使用 if 语句调用函数,然后打印函数内的值
【发布时间】: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&lt;=inputData.input;i++){ --> for(i=0;i&lt;inputData.input;i++){.

标签: c if-statement struct


【解决方案1】:

这段代码可以帮助你

注意:在C语言中,循环从0开始到数组长度-1

#include <stdio.h>

typedef struct data
{
    int age[10];
    int input;
}data;

void inputData()
{
    data inputData;
    printf("Total Data :");
    scanf("%d",&inputData.input);

    for(int i=0;i<inputData.input;i++)
    {
         printf("Input your age :");
         scanf("%d", &inputData.age[i]);
    }
}

void viewData()
{
    data viewData;
    printf("\n");

    for(int i=0;i<viewData.input;i++)
    {
        printf("%d", viewData.age[i]);
    }
    printf("\n");
}

int main()
{
    int menu;
    do
    {
         printf("Input menu :");
         scanf("%d",&menu);
    }while(menu!=1);

    switch(menu)
    {
        case 1:
        {
            inputData();
        }
        case 2:
        {
            viewData();
        }break;

    }
}

【讨论】:

    【解决方案2】:

    你应该只做return;,函数声明应该是

    void inputData( void )
    

    通过执行return main();,您正在创建一个递归循环,其中main 调用inputDatainputData 调用main

    【讨论】:

      猜你喜欢
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多