函数以2d数组存储消息(在C编程中)

时间:2014-10-26 17:47:42

标签: c arrays string function multidimensional-array

我想要实现的是一个C程序,每次用户输入如下名称时都会存储名称:

FUNC1: 阅读:约翰

FUNC2 打印约翰

FUNC1: 阅读:michael

FUNC2 打印:约翰 打印:michael

我想知道如何在2个函数中执行此操作而不是单个函数。

  • 我有2个功能。
  • 功能1    - 读取用户输入的消息。(最多5条消息)

void read(void)
{
    int i;

    char read[100];
    // char * msg = (char *) malloc(sizeof(msg));

    //i want to read 5 messages from user
    for (i=0;i<5;i++)
    {
        scanf("%s",&read); 
        //i want to copy the message read into a variable msg, 
        //i dont know why i am doing this
        //strcpy(msg,read);
        //i want to call the store funcion 
        store(read);
    }
}
  • 功能2
    • 在function1&#39的循环中调用它来读取5个mesaages
    • 接收消息并将其传递给参数
    • 将消息存储在二维数组中
    • 打印整个2d数组

int store(char *stock)
{
    printf("saving.....stored\n");
    char share[5][10]; //this is my 2d array to hold 5 
                       //messages/names of 10 chars long
    int i=0;

    char * savedmsg = (char *) malloc(sizeof(savedmsg));
    strcpy(share[i],stock); 

    printf("%s\n",share[i]);
    i++; 
    printf("%s\n", share[1]);
}

我本周开始学习C,但我认为我得到的错误是func2不断重新初始化i=0;我希望它增加i++;所以func2会在2d内覆盖第一个索引阵列。

感谢您将来的帮助。

1 个答案:

答案 0 :(得分:0)

而不是使用

int i=0;

将此声明为static

static int i=0;

在函数调用期间保存i的值。