C 不理解为什么这个接受二维数组的函数不起作用

C 不理解为什么这个接受二维数组的函数不起作用,c,arrays,C,Arrays,好的-我成功地创建了一个函数,输入一个由5个项目组成的二维数组,您可以从中选择,打印项目,然后询问您想要的项目,然后将您选择的项目放入Receipt,这是我在main中全局定义的另一个2d数组。这是一个MCVE: char receipt[20][200]; void choose(char arr[5][200]){ int i; for(i=0;i<=4;i++){ printf("%s\n",arr[i]); } printf("Enter in you

好的-我成功地创建了一个函数,输入一个由5个项目组成的二维数组,您可以从中选择,打印项目,然后询问您想要的项目,然后将您选择的项目放入Receipt,这是我在main中全局定义的另一个2d数组。这是一个MCVE:

char receipt[20][200];

void choose(char arr[5][200]){
  int i;

  for(i=0;i<=4;i++){
    printf("%s\n",arr[i]);
  }

  printf("Enter in your choice");
  int choice;
  scanf("%d",&choice);

  printf("Choice test code:%s\n",arr[choice-1]);

  strcpy(receipt[0],arr[choice-1]);  

  printf("receipt[0]:%s\n",receipt[0]);

}
char收据[20][200];
无效选择(字符arr[5][200]){
int i;

对于(i=0;i注释线程太长了,让我恶心。此代码加上choose函数的未编辑版本似乎适合我。已检查,也没有错误,因此我不知道您的设置有什么问题

#include <stdio.h>
#include <string.h>
int arrnum = 0;            // <------- did you do this? seems obvious...

void printreceipt() {
  for(int i = 0 ; i < arrnum; i++)
    printf("receipt[%d]: '%s'\n",i,receipt[i]);
}

int main(){
    char strings[5][200]=    {"string1","string2","string3","string4","string5"};
    while(arrnum<5) {
      choose(strings);
    }
    return 0;

}
#包括
#包括

int arrnum=0;//您为
choice
输入了什么?为什么先递增后递减
choice
?什么是
arrnum
?我编辑了这个问题来回答这些评论,我如何回复评论lol@enp虽然不能将数组直接传递给C函数,但OP使用的符号是n没有一个有效的符号,相当于
char(*)[200]
,它是指向200
char
数组的指针。但是,您的声明并不等效,使用时会产生警告。我尝试过使用void choose(char(*arr)[200])但我也有同样的问题。我明白你的意思,但不明白我将如何在**arr中实现维度
#include <stdio.h>
#include <string.h>
int arrnum = 0;            // <------- did you do this? seems obvious...

void printreceipt() {
  for(int i = 0 ; i < arrnum; i++)
    printf("receipt[%d]: '%s'\n",i,receipt[i]);
}

int main(){
    char strings[5][200]=    {"string1","string2","string3","string4","string5"};
    while(arrnum<5) {
      choose(strings);
    }
    return 0;

}