如何将数组项传递给函数?

时间:2017-11-02 11:34:49

标签: c

我正在尝试调用两个函数,第一个函数将接收数据,第二个函数将显示数据。但是我的第二个功能与第一个功能相同,所以它没有做我想做的事情。有什么建议吗?

  struct Operador
{

    char nome[32];
    char telefone[15];
    char idade[3];
};

struct Operador* fun( ) {
    struct Operador* pItems = malloc( 3 * sizeof(struct Operador));
    int n;
    for(n=0;n<1;n++){
        printf(" name: "); gets(pItems[n].nome);
        printf(" telefone: "); gets(pItems[n].telefone);
        printf(" age: "); gets(pItems[n].idade);
    }
    return pItems;
}


//*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*fim_operador
void lo()
{
        struct Operador* pItems =fun();
    int j;
    printf("\n\n");
        for(j=0;j<1;j++){

    printf(pItems[j].nome);
    printf(pItems[j].telefone);
    printf(pItems[j].idade);
    printf("\n\n");
    }
free(pItems);
}







 main()           
{


    fun();
    lo();/ i want this function to simply display data

1 个答案:

答案 0 :(得分:0)

代码中的一些更改:

  • 在函数fun()而不是获取可能最好使用scanf。
  • 在函数fun()和lo()中,您可以使用“。”访问指向结构的指针。运营商。 你应该使用' - &gt;'而不是运营商。
  • 我不明白为什么你使用for循环来获取和打印值,而你只有一个值,但我想你有你的理由(可能在未来的实现中添加更多的结构。

下面我建议您使用的代码:

#include <stdio.h>
#include <stdlib.h>


struct Operador
{
  char nome[32];
  char telefone[15];
  char idade[3];
};

struct Operador* fun() {
  struct Operador* pItems = malloc(3 * sizeof(struct Operador));
  //int n;
  //for (n = 0; n<1; n++){
     printf(" give nome: ");
     scanf("%s", pItems->nome);
     printf(" give telefone: ");
     scanf("%s", pItems->telefone);
     printf(" give age: ");
     scanf("%s", pItems->idade);
 //}
return pItems;  
}


//*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-

void lo(void)
{
   struct Operador* pItems = fun();
  //    int j;
 printf("\n\n");
 // for (j = 0; j<1; j++){      //no need for "for"?

    printf("Name is: %s \n", pItems->nome);
    printf("telefone is: %s \n", pItems->telefone);
    printf("age is: %s \n", pItems->idade);
    printf("\n\n");
//  }

    free(pItems);
    return; 
}




main()
{
  //fun(); //no need to call, is called in lo()
  lo();
}

输出是:

give nome: jim
give telefone: 2673673
give age: 32


Name is: jim
telefone is: 2673673
age is: 32


Press any key to continue . . .